[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2 13/21] xen/dts: Add hypercalls to retrieve device node information
Hi Jan, On 08/01/2014 09:50 AM, Jan Beulich wrote: >>>> On 31.07.14 at 17:00, <julien.grall@xxxxxxxxxx> wrote: >> --- a/xen/common/domctl.c >> +++ b/xen/common/domctl.c >> @@ -315,6 +315,7 @@ long do_domctl(XEN_GUEST_HANDLE_PARAM(xen_domctl_t) >> u_domctl) >> case XEN_DOMCTL_createdomain: >> case XEN_DOMCTL_getdomaininfo: >> case XEN_DOMCTL_test_assign_device: >> + case XEN_DOMCTL_dtdev_op: >> d = NULL; >> break; >> default: >> @@ -1017,6 +1018,15 @@ long do_domctl(XEN_GUEST_HANDLE_PARAM(xen_domctl_t) >> u_domctl) >> } >> break; >> >> +#ifdef HAS_DEVICE_TREE >> + case XEN_DOMCTL_dtdev_op: >> + { >> + ret = dt_do_domctl(op); >> + copyback = 1; >> + } >> + break; >> +#endif > > No pointless braces please. Will drop it. >> --- a/xen/include/public/domctl.h >> +++ b/xen/include/public/domctl.h >> @@ -946,6 +946,44 @@ typedef struct xen_domctl_vcpu_msrs >> xen_domctl_vcpu_msrs_t; >> DEFINE_XEN_GUEST_HANDLE(xen_domctl_vcpu_msrs_t); >> #endif >> >> +/* Device Tree: Retrieve informations about a device node */ >> +struct xen_domctl_dtdev_op { >> + /* IN */ >> + uint32_t plen; /* Length of the path */ >> + XEN_GUEST_HANDLE(char) path; /* Path to the device tree node */ > > XEN_GUEST_HANDLE_64? Right. I never know when I should use XEN_GUEST_HANDLE_64 or XEN_GUEST_HANDLE. FYI, it's exactly the same on ARM. > And padding between the two above > members, or fields re-ordered? I can reorder the field. >> +#define DOMCTL_DTDEV_GET_INFO 0 >> +#define DOMCTL_DTDEV_GET_IRQ 1 >> +#define DOMCTL_DTDEV_GET_MMIO 2 >> +#define DOMCTL_DTDEV_GET_COMPAT 3 >> + uint8_t op; >> + uint32_t pad0:24; > > uint8_t pad0[3]. Ok. >> + uint32_t index; /* Index for the IRQ/MMIO to retrieve */ >> + /* OUT */ >> + union { >> + struct { >> + uint32_t num_irqs; /* Number of IRQs */ >> + uint32_t num_mmios; /* Number of MMIOs */ >> + uint32_t compat_len; /* Length of the compatible string */ >> + } info; >> + struct { >> + /* TODO: Do we need to handle MSI-X? */ >> + uint32_t irq; /* IRQ number */ >> + /* TODO: Describe with defines the IRQ type */ > > ??? For now we are using the DT_IRQ_TYPE_* provided by the device tree (see include/xen/device_tree.h). I haven't yet introduced specific IRQ type here. > Also, are you planning to address these two TODOs before this gets > ready to be committed? I plan to handle the latter TODO (i.e IRQ type), for the MSI I don't know how they will be described in the device tree. So I will drop the TODO. It will be fine because it's a DOMCTL so it's possible to change the interface easily. >> + uint32_t type; /* IRQ type (i.e edge, level...) */ > > #define-s to specify what values here mean? See my answer a bit above. >> + } irq; >> + struct { >> + xen_pfn_t mfn; >> + xen_pfn_t nr_mfn; >> + } mmio; >> + struct { >> + uint32_t len; /* IN: Size of buffer. OUT: Size copied >> */ >> + XEN_GUEST_HANDLE_64(char) compat; > > Padding again? I will invert the 2 fields. Regards, -- Julien Grall _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |