From: Ian Campbell <ian.campbell@citrix.com>
To: Julien Grall <julien.grall@linaro.org>
Cc: xen-devel@lists.xenproject.org, tim@xen.org,
Ian Jackson <ian.jackson@eu.citrix.com>,
stefano.stabellini@citrix.com, Wei Liu <wei.liu2@citrix.com>
Subject: Re: [PATCH v4 29/33] tools/(lib)xl: Add partial device tree support for ARM
Date: Tue, 31 Mar 2015 14:19:28 +0100 [thread overview]
Message-ID: <1427807968.2115.126.camel@citrix.com> (raw)
In-Reply-To: <551A9938.1070002@linaro.org>
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@linaro.org>
> >> Cc: Ian Jackson <ian.jackson@eu.citrix.com>
> >> Cc: Wei Liu <wei.liu2@citrix.com>
> >>
> >> ---
> >> 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,
>
next prev parent reply other threads:[~2015-03-31 13:19 UTC|newest]
Thread overview: 103+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-03-19 19:29 [PATCH v4 00/33] xen/arm: Add support for non-PCI passthrough Julien Grall
2015-03-19 19:29 ` [PATCH v4 01/33] xen/arm: Divide GIC initialization in 2 parts Julien Grall
2015-03-31 11:44 ` Ian Campbell
2015-03-19 19:29 ` [PATCH v4 02/33] xen/dts: Allow only IRQ translation that are mapped to main GIC Julien Grall
2015-03-19 19:29 ` [PATCH v4 03/33] xen/dts: Use unsigned int for MMIO and IRQ index Julien Grall
2015-03-19 19:29 ` [PATCH v4 04/33] xen/arm: vgic: Introduce a function to initialize pending_irq Julien Grall
2015-03-19 19:29 ` [PATCH v4 05/33] xen/arm: Map disabled device in DOM0 Julien Grall
2015-03-19 19:29 ` [PATCH v4 06/33] xen/arm: Introduce xen, passthrough property Julien Grall
2015-03-31 10:25 ` Ian Campbell
2015-03-19 19:29 ` [PATCH v4 07/33] xen: guestcopy: Provide an helper to safely copy string from guest Julien Grall
2015-03-31 13:24 ` Andrew Cooper
2015-03-31 13:30 ` Julien Grall
2015-03-31 13:49 ` Andrew Cooper
2015-03-31 14:00 ` Julien Grall
2015-03-19 19:29 ` [PATCH v4 08/33] MAINTAINERS: move drivers/passthrough/device_tree.c in "DEVICE TREE" Julien Grall
2015-03-31 10:26 ` Ian Campbell
2015-03-19 19:29 ` [PATCH v4 09/33] xen: Extend DOMCTL createdomain to support arch configuration Julien Grall
2015-03-31 10:39 ` Ian Campbell
2015-03-19 19:29 ` [PATCH v4 10/33] xen/arm: Allow virq != irq Julien Grall
2015-03-31 10:41 ` Ian Campbell
2015-03-19 19:29 ` [PATCH v4 11/33] xen/arm: route_irq_to_guest: Check validity of the IRQ Julien Grall
2015-03-20 11:36 ` Stefano Stabellini
2015-03-31 10:43 ` Ian Campbell
2015-03-19 19:29 ` [PATCH v4 12/33] xen/arm: gic: Add sanity checks gic_route_irq_to_guest Julien Grall
2015-03-31 10:44 ` Ian Campbell
2015-03-19 19:29 ` [PATCH v4 13/33] xen/arm: gic_route_irq_to_guest: Honor the priority given in parameter Julien Grall
2015-03-20 11:51 ` Stefano Stabellini
2015-03-31 10:45 ` Ian Campbell
2015-03-19 19:29 ` [PATCH v4 14/33] xen/arm: vgic: Correctly calculate GICD_TYPER.ITLinesNumber Julien Grall
2015-03-31 10:46 ` Ian Campbell
2015-03-31 11:28 ` Julien Grall
2015-03-19 19:29 ` [PATCH v4 15/33] xen/arm: gic: GICv2 & GICv3 only supports 1020 physical interrupts Julien Grall
2015-03-31 10:47 ` Ian Campbell
2015-03-19 19:29 ` [PATCH v4 16/33] xen/arm: Let the toolstack configure the number of SPIs Julien Grall
2015-03-31 10:54 ` Ian Campbell
2015-03-31 11:44 ` Julien Grall
2015-03-31 11:59 ` Ian Campbell
2015-03-31 12:07 ` Julien Grall
2015-03-19 19:29 ` [PATCH v4 17/33] xen/arm: vgic: Add spi_to_pending Julien Grall
2015-03-31 10:55 ` Ian Campbell
2015-03-31 11:58 ` Julien Grall
2015-03-19 19:29 ` [PATCH v4 18/33] xen/arm: Release IRQ routed to a domain when it's destroying Julien Grall
2015-03-31 10:58 ` Ian Campbell
2015-03-19 19:29 ` [PATCH v4 19/33] xen/arm: Implement hypercall DOMCTL_{, un}bind_pt_pirq Julien Grall
2015-03-31 11:11 ` Ian Campbell
2015-03-31 12:23 ` Julien Grall
2015-03-31 12:31 ` Ian Campbell
2015-03-19 19:29 ` [PATCH v4 20/33] xen/dts: Provide an helper to get a DT node from a path provided by a guest Julien Grall
2015-03-31 11:12 ` Ian Campbell
2015-03-19 19:29 ` [PATCH v4 21/33] xen/passthrough: Introduce iommu_construct Julien Grall
2015-03-20 10:53 ` Jan Beulich
2015-03-31 11:13 ` Ian Campbell
2015-03-19 19:29 ` [PATCH v4 22/33] xen/passthrough: arm: release the DT devices assigned to a guest earlier Julien Grall
2015-03-31 11:16 ` Ian Campbell
2015-03-19 19:29 ` [PATCH v4 23/33] xen/passthrough: iommu_deassign_device_dt: By default reassign device to nobody Julien Grall
2015-03-31 11:16 ` Ian Campbell
2015-03-19 19:29 ` [PATCH v4 24/33] xen/iommu: arm: Wire iommu DOMCTL for ARM Julien Grall
2015-03-19 19:29 ` [PATCH v4 25/33] xen/xsm: Add helpers to check permission for device tree passthrough Julien Grall
2015-03-31 11:17 ` Ian Campbell
2015-03-31 17:12 ` Daniel De Graaf
2015-03-31 17:14 ` Julien Grall
2015-03-19 19:29 ` [PATCH v4 26/33] xen/passthrough: Extend XEN_DOMCTL_*assign_device to support DT device Julien Grall
2015-03-20 11:01 ` Jan Beulich
2015-03-31 11:24 ` Ian Campbell
2015-03-31 12:30 ` Julien Grall
2015-03-31 13:16 ` Ian Campbell
2015-03-19 19:29 ` [PATCH v4 27/33] tools/libxl: Create a per-arch function to map IRQ to a domain Julien Grall
2015-03-31 11:26 ` Ian Campbell
2015-03-31 12:33 ` Julien Grall
2015-03-19 19:29 ` [PATCH v4 28/33] tools/libxl: Check if fdt_{first, next}_subnode are present in libfdt Julien Grall
2015-03-19 19:42 ` Julien Grall
2015-03-31 11:35 ` Ian Campbell
2015-03-31 12:46 ` Julien Grall
2015-03-31 13:18 ` Ian Campbell
2015-04-07 17:15 ` Julien Grall
2015-04-09 12:16 ` Ian Jackson
2015-04-09 13:59 ` Julien Grall
2015-04-14 11:40 ` Ian Campbell
2015-04-14 13:34 ` Julien Grall
2015-03-19 19:29 ` [PATCH v4 29/33] tools/(lib)xl: Add partial device tree support for ARM Julien Grall
2015-03-31 11:41 ` Ian Campbell
2015-03-31 12:55 ` Julien Grall
2015-03-31 13:19 ` Ian Campbell [this message]
2015-03-19 19:29 ` [PATCH v4 30/33] tools/libxl: arm: Use an higher value for the GIC phandle Julien Grall
2015-03-31 11:43 ` Ian Campbell
2015-04-09 12:36 ` Julien Grall
2015-03-19 19:29 ` [PATCH v4 31/33] libxl: Add support for non-PCI passthrough Julien Grall
2015-03-31 11:49 ` Ian Campbell
2015-03-31 13:00 ` Julien Grall
2015-03-31 13:20 ` Ian Campbell
2015-03-19 19:29 ` [PATCH v4 32/33] xl: Add new option dtdev Julien Grall
2015-03-31 11:50 ` Ian Campbell
2015-03-19 19:29 ` [PATCH v4 33/33] docs/misc: arm: Add documentation about non-PCI passthrough Julien Grall
2015-03-31 11:55 ` Ian Campbell
2015-03-31 13:03 ` Julien Grall
2015-03-31 13:21 ` Ian Campbell
2015-04-09 13:36 ` Julien Grall
2015-03-20 1:22 ` [PATCH v4 00/33] xen/arm: Add support for " Edgar E. Iglesias
2015-03-20 17:34 ` Julien Grall
2015-03-31 11:57 ` Ian Campbell
2015-03-31 13:07 ` Julien Grall
2015-03-31 13:22 ` Ian Campbell
2015-04-01 14:21 ` Julien Grall
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1427807968.2115.126.camel@citrix.com \
--to=ian.campbell@citrix.com \
--cc=ian.jackson@eu.citrix.com \
--cc=julien.grall@linaro.org \
--cc=stefano.stabellini@citrix.com \
--cc=tim@xen.org \
--cc=wei.liu2@citrix.com \
--cc=xen-devel@lists.xenproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.