From: Boris Ostrovsky <boris.ostrovsky@oracle.com>
To: Stefano Stabellini <sstabellini@kernel.org>
Cc: Vitaly Kuznetsov <vkuznets@redhat.com>,
x86@kernel.org, Thomas Gleixner <tglx@linutronix.de>,
Ingo Molnar <mingo@redhat.com>, "H. Peter Anvin" <hpa@zytor.com>,
Jiang Liu <jiang.liu@linux.intel.com>,
"K. Y. Srinivasan" <kys@microsoft.com>,
linux-kernel@vger.kernel.org, konrad.wilk@oracle.com,
david.vrabel@citrix.com, jgross@suse.com
Subject: Re: Xen regression, Was: [PATCH] x86/irq: Probe for PIC presence before allocating descs for legacy IRQs
Date: Tue, 12 Apr 2016 15:02:29 -0400 [thread overview]
Message-ID: <570D4645.20004@oracle.com> (raw)
In-Reply-To: <alpine.DEB.2.10.1604121039540.23347@sstabellini-ThinkPad-X260>
On 04/12/2016 02:06 PM, Stefano Stabellini wrote:
> On Tue, 12 Apr 2016, Boris Ostrovsky wrote:
>> On 04/11/2016 10:08 PM, Stefano Stabellini wrote:
>>> Hi all,
>>>
>>> Unfortunately this patch (now commit
>>> 8c058b0b9c34d8c8d7912880956543769323e2d8) causes a regression on Xen
>>> when running on top of QEMU: the number of PIT irqs get set to 0 by
>>> probe_8259A but actually there are 16.
>>>
>>> Any suggestions on how to fix this?
>>>
>>> 1) we could revert 8c058b0b9c34d8c8d7912880956543769323e2d8
>>> 2) we could introduce an 'if (!xen_domain())' in probe_8259A
>>> 3) suggestions welcome
>> Stefano, do you have b4ff8389ed14b849354b59ce9b360bdefcdbf99c ?
>>
>> It was supposed to fix this problem for Xen. However, I just noticed that
>> arch/arm64/include/asm/irq.h makes nr_legacy_irqs() return 0 (unlike
>> arch/arm/include/asm/irq.h). Could that be the problem?
> I have b4ff8389ed14b849354b59ce9b360bdefcdbf99c but it doesn't fix the
> issue for me.
>
> Is the idea of your patch that xen_allocate_irq_gsi will allocate the
> descriptor dynamically instead?
Right.
> If so, it doesn't work because it
> doesn't get called for irq 14:
So how has it worked until now then?
>
> piix_init_one -> ata_pci_sff_activate_host -> devm_request_irq ->
> devm_request_threaded_irq-> request_threaded_irq -> irq_to_desc(14) ->
> -EVAIL
>
> If you look at pci_xen_initial_domain, the loop:
>
> for (irq = 0; irq < nr_legacy_irqs(); irq++) {
>
> won't work anymore because by the time is called, nr_legacy_irqs()
> already returns 0, because it has been changed by probe_8259A().
>
> We also need the following patch:
>
> ---
>
> xen/x86: actually allocate legacy interrupts on PV guests
>
> b4ff8389ed14 is incomplete: relies on nr_legacy_irqs() to get the number
> of legacy interrupts when actually nr_legacy_irqs() returns 0 after
> probe_8259A(). Use NR_IRQS_LEGACY instead.
>
> Signed-off-by: Stefano Stabellini <sstabellini@kernel.org>
>
> diff --git a/arch/x86/pci/xen.c b/arch/x86/pci/xen.c
> index beac4df..6db0060 100644
> --- a/arch/x86/pci/xen.c
> +++ b/arch/x86/pci/xen.c
> @@ -492,7 +492,7 @@ int __init pci_xen_initial_domain(void)
> __acpi_register_gsi = acpi_register_gsi_xen;
> __acpi_unregister_gsi = NULL;
> /* Pre-allocate legacy irqs */
> - for (irq = 0; irq < nr_legacy_irqs(); irq++) {
> + for (irq = 0; irq < NR_IRQS_LEGACY; irq++) {
> int trigger, polarity;
>
> if (acpi_get_override_irq(irq, &trigger, &polarity) == -1)
Won't we need the same change in the 'if (0 == nr_ioapics)' clause?
-boris
next prev parent reply other threads:[~2016-04-12 19:03 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-11-02 13:24 [PATCH] x86/irq: Probe for PIC presence before allocating descs for legacy IRQs Vitaly Kuznetsov
2015-11-02 19:09 ` Thomas Gleixner
2016-04-12 2:08 ` Xen regression, Was: " Stefano Stabellini
2016-04-12 8:37 ` Vitaly Kuznetsov
2016-04-12 13:22 ` Boris Ostrovsky
2016-04-12 18:06 ` Stefano Stabellini
2016-04-12 19:02 ` Boris Ostrovsky [this message]
2016-04-12 21:14 ` Stefano Stabellini
2016-04-12 21:34 ` Boris Ostrovsky
2016-04-12 21:56 ` Stefano Stabellini
2016-04-12 22:33 ` Boris Ostrovsky
2016-04-12 23:15 ` Stefano Stabellini
2016-04-13 1:27 ` Boris Ostrovsky
2016-04-13 17:36 ` Boris Ostrovsky
2016-04-13 19:10 ` Boris Ostrovsky
2016-04-13 22:28 ` Luis R. Rodriguez
2016-04-13 22:38 ` Stefano Stabellini
2016-04-14 12:45 ` Boris Ostrovsky
2016-04-14 13:45 ` David Vrabel
2016-04-14 14:46 ` Boris Ostrovsky
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=570D4645.20004@oracle.com \
--to=boris.ostrovsky@oracle.com \
--cc=david.vrabel@citrix.com \
--cc=hpa@zytor.com \
--cc=jgross@suse.com \
--cc=jiang.liu@linux.intel.com \
--cc=konrad.wilk@oracle.com \
--cc=kys@microsoft.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=sstabellini@kernel.org \
--cc=tglx@linutronix.de \
--cc=vkuznets@redhat.com \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.