[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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.