|
[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 |