|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2 08/21] xen/arm: Initialize the virtual GIC later
Hi Julien,
If I need to use 1 to 1 IRQ mapping in domU, I got an error in the
following code:
> diff --git a/tools/libxl/libxl_arm.c b/tools/libxl/libxl_arm.c
> index e19e2f4..b0491c3 100644
> --- a/tools/libxl/libxl_arm.c
> +++ b/tools/libxl/libxl_arm.c
> @@ -23,6 +23,25 @@
> #define DT_IRQ_TYPE_LEVEL_HIGH 0x00000004
> #define DT_IRQ_TYPE_LEVEL_LOW 0x00000008
>
> +int libxl__arch_domain_create_pre(libxl__gc *gc, libxl_domain_config
> *d_config,
> + libxl__domain_build_state *state,
> + uint32_t domid)
> +{
> + uint32_t nr_spis = 0;
> +
> + nr_spis += d_config->b_info.num_irqs;
I have 4 IRQS for domU, they numbers are 53, 173, 174. With this
change there will be 3 SPIs for domU, and below code will configure
vgic for 32 lines.
> diff --git a/xen/arch/arm/vgic.c b/xen/arch/arm/vgic.c
> index 17cde7a..a037ecc 100644
> --- a/xen/arch/arm/vgic.c
> +++ b/xen/arch/arm/vgic.c
> @@ -60,16 +60,16 @@ static void vgic_init_pending_irq(struct pending_irq *p,
> unsigned virq)
> p->irq = virq;
> }
>
> -int domain_vgic_init(struct domain *d)
> +int domain_vgic_init(struct domain *d, unsigned int nr_spis)
> {
> int i;
>
> d->arch.vgic.ctlr = 0;
>
> - if ( is_hardware_domain(d) )
> - d->arch.vgic.nr_spis = gic_number_lines() - 32;
> - else
> - d->arch.vgic.nr_spis = 0; /* We don't need SPIs for the guest */
> + /* The number of SPIs as to be aligned to 32 see
> + * GICD_TYPER.ITLinesNumber definition
> + */
> + d->arch.vgic.nr_spis = ROUNDUP(nr_spis, 32);
Here I got 32 lines for 3 SPIs
And this will break checking for IRQ validity in
xen/arch/arm/irq.c:route_irq_to_guest() call. I will not be able to
use IRQ with number greater than 63.
Can this be handled somehow? Or maybe it is already handled and I
missed something ?
Regards,
Andrii
--
Andrii Tseglytskyi | Embedded Dev
GlobalLogic
www.globallogic.com
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |