[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v4 29/33] tools/(lib)xl: Add partial device tree support for ARM
On Tue, 2015-03-31 at 13:55 +0100, Julien Grall wrote: > Hi Ian, > > On 31/03/15 12:41, Ian Campbell wrote: > > On Thu, 2015-03-19 at 19:29 +0000, Julien Grall wrote: > >> Let the user to pass additional nodes to the guest device tree. For > >> this purpose, everything in the node /passthrough from the partial > >> device tree will be copied into the guest device tree. > >> > >> The node /aliases will be also copied to allow the user to define > >> aliases which can be used by the guest kernel. > >> > >> A simple partial device tree will look like: > >> > >> /dts-v1/; > >> > >> / { > >> #address-cells = <2>; > >> #size-cells = <2>; > >> > >> passthrough { > >> compatible = "simple-bus"; > >> ranges; > >> #address-cells = <2>; > >> #size-cells = <2>; > >> > >> /* List of your nodes */ > >> } > >> }; > >> > >> Note that: > >> * The interrupt-parent property will be added by the toolstack in > >> the root node > >> * The properties compatible, ranges, #address-cells and #size-cells > >> in /passthrough are mandatory. > >> > >> The helpers provided by the libfdt don't perform all the necessary > >> security check on a given device tree. Therefore, only trusted device > >> tree should be used. > >> > >> Signed-off-by: Julien Grall <julien.grall@xxxxxxxxxx> > >> Cc: Ian Jackson <ian.jackson@xxxxxxxxxxxxx> > >> Cc: Wei Liu <wei.liu2@xxxxxxxxxx> > >> > >> --- > >> An example of the partial device tree, as long as how to passthrough > >> a non-pci device will be added to the tree in a follow-up patch. > >> > >> A new LIBXL_HAVE_* will be added in the patch which add support for > >> non-PCI passthrough as both are tight. > >> > >> Changes in v4: > >> - Mark the option as unsafe > >> - The _fdt_* helpers has been moved in a separate patch/file. > >> Only the prototype is declared > >> - The partial DT is considered valid. Remove some security check > >> which make the code cleaner > >> - Typoes > >> > >> Changes in v3: > >> - Patch added > >> --- > >> docs/man/xl.cfg.pod.5 | 10 +++ > >> tools/libxl/libxl_arm.c | 171 > >> ++++++++++++++++++++++++++++++++++++++++++++ > >> tools/libxl/libxl_types.idl | 1 + > >> tools/libxl/xl_cmdimpl.c | 1 + > > > > Needs a #define LIBXL_HAVE in libxl.h for 3rd party users of the > > library. > > As said below the commit message: Oops, I couldn't remember v3 so I didn't read the changelog and missed this, sorry. > >> 4 files changed, 183 insertions(+) > >> > >> diff --git a/docs/man/xl.cfg.pod.5 b/docs/man/xl.cfg.pod.5 > >> index 93cd7d2..bcbc277 100644 > >> --- a/docs/man/xl.cfg.pod.5 > >> +++ b/docs/man/xl.cfg.pod.5 > >> @@ -453,6 +453,16 @@ not emulated. > >> Specify that this domain is a driver domain. This enables certain > >> features needed in order to run a driver domain. > >> > >> +=item B<device_tree=PATH> > >> + > >> +Specify a partial device tree (compiled via the Device Tree Compiler). > >> +Everything under the node "/passthrough" will be copied into the guest > >> +device tree. For convenience, the node "/aliases" is also copied to allow > >> +the user to defined aliases which can be used by the guest kernel. > >> + > >> +Given the complexity of verifying the validity of a device tree, this > >> +option should only be used with trusted device tree. > > > > This warning should be in the libxl API docs (i.e. the header or IDL) > > somewhere too, so that 3rd party toolstacks know about it. In that > > context it should perhaps be a lot more prominent and scarier sounding > > too. > > I will add it to the IDL. Should I keep there too for the xl documentation? I think it should be in both, libxl/IDL for developers and xl docs for users. > > > >> + return (propoff != -FDT_ERR_NOTFOUND)? propoff : 0; > >> +} > >> + > >> +/* > >> + * These functions are defined by libfdt or libxl_fdt.c if it's not > >> + * present on the former. > >> + */ > >> +int fdt_next_subnode(const void *fdt, int offset); > >> +int fdt_first_subnode(const void *fdt, int offset); > > > > Better to use the prototype from the libfdt header if it is present, > > i.e. wrap these in the associated ifdef-s. > > The prototype may be defined in the libfdt header but the function not > exported. > > I didn't wrap them into ifdef in order to make sure that the compiler > will complain if the 2 prototypes are different. OK. > > > > > I'm in two minds about suggesting putting all that into > > libxl_libfdt_compat.h, up to you. > > I didn't want to bother adding a new header file. > > Regards, > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |