Message ID | 1388707565-16535-17-git-send-email-yinghai@kernel.org (mailing list archive) |
---|---|
State | Not Applicable, archived |
Headers | show |
On Thu, 2 Jan 2014, Yinghai Lu wrote: > To make x86 irq allocation to be same with booting path and ioapic > hot add path, We will pre-reserve irq for all gsi at first. > We have to use alloc_reserved here, otherwise irq_alloc_desc_at will fail > because bit is already get marked for pre-reserved in irq bitmaps. > > Signed-off-by: Yinghai Lu <yinghai@kernel.org> > Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> > Cc: xen-devel@lists.xensource.com > --- > drivers/xen/events.c | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-) > > diff --git a/drivers/xen/events.c b/drivers/xen/events.c > index 4035e83..020cd77 100644 > --- a/drivers/xen/events.c > +++ b/drivers/xen/events.c > @@ -508,8 +508,12 @@ static int __must_check xen_allocate_irq_gsi(unsigned gsi) > /* Legacy IRQ descriptors are already allocated by the arch. */ > if (gsi < NR_IRQS_LEGACY) > irq = gsi; > - else > - irq = irq_alloc_desc_at(gsi, -1); > + else { > + /* for x86, irq already get reserved for gsi */ > + irq = irq_alloc_reserved_desc_at(gsi, -1); > + if (irq < 0) > + irq = irq_alloc_desc_at(gsi, -1); > + } This is common code. On ARM I get: drivers/xen/events.c: In function 'xen_allocate_irq_gsi': drivers/xen/events.c:513:3: error: implicit declaration of function 'irq_alloc_reserved_desc_at' [-Werror=implicit-function-declaration] irq = irq_alloc_reserved_desc_at(gsi, -1); ^ cc1: some warnings being treated as errors -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Fri, Jan 3, 2014 at 9:50 AM, Stefano Stabellini <stefano.stabellini@eu.citrix.com> wrote: >> drivers/xen/events.c | 8 ++++++-- >> 1 file changed, 6 insertions(+), 2 deletions(-) >> >> diff --git a/drivers/xen/events.c b/drivers/xen/events.c >> index 4035e83..020cd77 100644 >> --- a/drivers/xen/events.c >> +++ b/drivers/xen/events.c >> @@ -508,8 +508,12 @@ static int __must_check xen_allocate_irq_gsi(unsigned gsi) >> /* Legacy IRQ descriptors are already allocated by the arch. */ >> if (gsi < NR_IRQS_LEGACY) >> irq = gsi; >> - else >> - irq = irq_alloc_desc_at(gsi, -1); >> + else { >> + /* for x86, irq already get reserved for gsi */ >> + irq = irq_alloc_reserved_desc_at(gsi, -1); >> + if (irq < 0) >> + irq = irq_alloc_desc_at(gsi, -1); >> + } > > This is common code. On ARM I get: > > drivers/xen/events.c: In function 'xen_allocate_irq_gsi': > drivers/xen/events.c:513:3: error: implicit declaration of function 'irq_alloc_reserved_desc_at' [-Werror=implicit-function-declaration] > irq = irq_alloc_reserved_desc_at(gsi, -1); > ^ > cc1: some warnings being treated as errors It's strange. that is defined with irq_alloc_desc_at in parallel in include/linux/irq.h and kernel/irq/irqdesc.c. Did you try the whole tree, or just this patch? Thanks Yinghai -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Mon, 6 Jan 2014, Yinghai Lu wrote: > On Fri, Jan 3, 2014 at 9:50 AM, Stefano Stabellini > <stefano.stabellini@eu.citrix.com> wrote: > > >> drivers/xen/events.c | 8 ++++++-- > >> 1 file changed, 6 insertions(+), 2 deletions(-) > >> > >> diff --git a/drivers/xen/events.c b/drivers/xen/events.c > >> index 4035e83..020cd77 100644 > >> --- a/drivers/xen/events.c > >> +++ b/drivers/xen/events.c > >> @@ -508,8 +508,12 @@ static int __must_check xen_allocate_irq_gsi(unsigned gsi) > >> /* Legacy IRQ descriptors are already allocated by the arch. */ > >> if (gsi < NR_IRQS_LEGACY) > >> irq = gsi; > >> - else > >> - irq = irq_alloc_desc_at(gsi, -1); > >> + else { > >> + /* for x86, irq already get reserved for gsi */ > >> + irq = irq_alloc_reserved_desc_at(gsi, -1); > >> + if (irq < 0) > >> + irq = irq_alloc_desc_at(gsi, -1); > >> + } > > > > This is common code. On ARM I get: > > > > drivers/xen/events.c: In function 'xen_allocate_irq_gsi': > > drivers/xen/events.c:513:3: error: implicit declaration of function 'irq_alloc_reserved_desc_at' [-Werror=implicit-function-declaration] > > irq = irq_alloc_reserved_desc_at(gsi, -1); > > ^ > > cc1: some warnings being treated as errors > > It's strange. > > that is defined with irq_alloc_desc_at in parallel in > include/linux/irq.h and kernel/irq/irqdesc.c. > > Did you try the whole tree, or just this patch? Just this patch. The whole tree (yinghai/for-x86-irq-3.14) builds just fine. Thanks! - Stefano -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/xen/events.c b/drivers/xen/events.c index 4035e83..020cd77 100644 --- a/drivers/xen/events.c +++ b/drivers/xen/events.c @@ -508,8 +508,12 @@ static int __must_check xen_allocate_irq_gsi(unsigned gsi) /* Legacy IRQ descriptors are already allocated by the arch. */ if (gsi < NR_IRQS_LEGACY) irq = gsi; - else - irq = irq_alloc_desc_at(gsi, -1); + else { + /* for x86, irq already get reserved for gsi */ + irq = irq_alloc_reserved_desc_at(gsi, -1); + if (irq < 0) + irq = irq_alloc_desc_at(gsi, -1); + } xen_irq_init(irq);
To make x86 irq allocation to be same with booting path and ioapic hot add path, We will pre-reserve irq for all gsi at first. We have to use alloc_reserved here, otherwise irq_alloc_desc_at will fail because bit is already get marked for pre-reserved in irq bitmaps. Signed-off-by: Yinghai Lu <yinghai@kernel.org> Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> Cc: xen-devel@lists.xensource.com --- drivers/xen/events.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-)