[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH RFC] ARM/IRQ-Crossbar: Make Xen aware of devices being statically mapped in the IRQ crossbar.
On Wed, 2015-07-29 at 16:53 -0400, Brandon Perez wrote: > In general, Xen needs to own very few interrupts to run. Most of these are > timer > PPIs, which do not involve the crossbar. The notable exception to this is the > serial device, which is an SPI. On the DRA7 chips, this involves going through > the interrupt crossbar. > > As the device tree entry will contain the crossbar input number, and not the > IRQ line, Xen must be given the SPI input line number. This is achieved with > the "default-mapping" property, which contains the SPI number that the device > will correspond to in the mapping setup by the bootloader. Is the default-mapping property defined by a generic standard? I don't find it in ePAPR for example. If it isn't a generic part of device tree then it shouldn't be handled in device_tree.c, it would need to be handled in a device specific place which has matched on the compatible string (probably the one for your cross-bar) to determine the semantics of the properties. I also don't any such property for any device in the device-tree bindings docs[0], which we would want to see before committing to using an interface . Thanks, Ian. [0] in linux.git as Documentation/devicetree/bindings or separately in http s://git.kernel.org/cgit/linux/kernel/git/devicetree/devicetree -rebasing.git/ > > Signed-off-by: Brandon Perez <bperez-1@xxxxxx> > --- > xen/common/device_tree.c | 11 +++++++---- > 1 file changed, 7 insertions(+), 4 deletions(-) > > diff --git a/xen/common/device_tree.c b/xen/common/device_tree.c > index 31f169b..fc82eb4 100644 > --- a/xen/common/device_tree.c > +++ b/xen/common/device_tree.c > @@ -1036,10 +1036,13 @@ int dt_device_get_raw_irq(const struct > dt_device_node *device, > dt_dprintk("dt_device_get_raw_irq: dev=%s, index=%u\n", > device->full_name, index); > > - /* Get the interrupts property */ > - intspec = dt_get_property(device, "interrupts", &intlen); > - if ( intspec == NULL ) > - return -EINVAL; > + /* Get the appropiate interrupts property */ > + intspec = dt_get_property(device, "default-mapping", &intlen); > + if (intspec == NULL) { > + intspec = dt_get_property(device, "interrupts", &intlen); > + if (intspec == NULL) > + return -EINVAL; > + } > intlen /= sizeof(*intspec); > > dt_dprintk(" intspec=%d intlen=%d\n", be32_to_cpup(intspec), > intlen); > -- > 1.7.9.5 > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |