From: Jiang Liu <jiang.liu@linux.intel.com>
To: Alex Deucher <alexdeucher@gmail.com>
Cc: Thomas Gleixner <tglx@linutronix.de>,
Alexander Holler <holler@ahsoftware.de>,
Mark Rustad <mark.d.rustad@intel.com>,
Ingo Molnar <mingo@redhat.com>, "H. Peter Anvin" <hpa@zytor.com>,
x86@kernel.org, Tony Luck <tony.luck@intel.com>,
LKML <linux-kernel@vger.kernel.org>
Subject: Re: [Bugfix] x86, irq: Fix a regression caused by commit b5dc8e6c21e7
Date: Tue, 11 Aug 2015 09:06:45 +0800 [thread overview]
Message-ID: <55C94AA5.8090904@linux.intel.com> (raw)
In-Reply-To: <CADnq5_PrSYap3UedW4Ni_=Y04s0MyaN9AZSNvRk6cO8wNt-WmQ@mail.gmail.com>
On 2015/8/10 23:00, Alex Deucher wrote:
> On Sun, Aug 9, 2015 at 4:15 AM, Jiang Liu <jiang.liu@linux.intel.com> wrote:
>> Alex Deucher, Mark Rustad and Alexander Holler reported a regression
>> with the latest v4.2-rc4 kernel, which breaks some SATA controllers.
>> With multi-MSI capable SATA controllers, only the first port works,
>> all other ports times out when executing SATA commands. This regression
>> bisects to 52f518a3a7c2 ("x86/MSI: Use hierarchical irqdomains to manage
>> MSI interrupts"), but it's not the root cause, it just triggers a bug
>> caused by b5dc8e6c21e7 ("x86/irq: Use hierarchical irqdomain to manage
>> CPU interrupt vectors").
>>
>> With this patch applied, the affected SATA controllers work as expected.
>
> Yes, this fixes the SATA regression:
> Tested-by: Alex Deucher <alexander.deucher@amd.com>
>
> I'm not sure if it's related to this patch or not (I haven't bisected
> it independently yet), but MSIs don't seem to work on GPUs. See the
> line for amdgpu. This is just after loading the driver.
Hi Alex,
This patch only affects multiple-MSI, and it seems that your
gpu only uses one MSI interrupt, so it may not be related to this patch.
And this seems like a sort of interrupt storm.
> 52: 16579895 16579562 16580988 16583443 IR-PCI-MSI
> 524288-edge amdgpu
Does it make any change by disable interrupt remapping?
Does it make any change by disable MSI?
Thanks!
Gerry
>
> $ cat /proc/interrupts
> CPU0 CPU1 CPU2 CPU3
> 0: 138 0 0 0 IR-IO-APIC
> 2-edge timer
> 1: 2 2 1 4 IR-IO-APIC
> 1-edge i8042
> 7: 1 0 0 0 IR-IO-APIC 7-edge
> 8: 0 0 1 0 IR-IO-APIC
> 8-edge rtc0
> 9: 0 0 0 0 IR-IO-APIC
> 9-fasteoi acpi
> 14: 0 0 0 0 IR-IO-APIC
> 14-edge pata_atiixp
> 15: 0 0 0 0 IR-IO-APIC
> 15-edge pata_atiixp
> 16: 302 303 301 314 IR-IO-APIC
> 16-fasteoi snd_hda_intel
> 17: 0 0 0 0 IR-IO-APIC
> 17-fasteoi ehci_hcd:usb7, ehci_hcd:usb8
> 18: 0 0 0 0 IR-IO-APIC
> 18-fasteoi ohci_hcd:usb9, ohci_hcd:usb10, ohci_hcd:usb11
> 24: 0 0 0 1 PCI-MSI 4096-edge
> AMD-Vi
> 26: 0 0 0 0 IR-PCI-MSI
> 34816-edge PCIe PME
> 27: 0 0 0 0 IR-PCI-MSI
> 344064-edge PCIe PME
> 28: 0 0 0 0 IR-PCI-MSI
> 348160-edge PCIe PME
> 29: 0 0 0 0 IR-PCI-MSI
> 350208-edge PCIe PME
> 30: 247 255 1381 4617 IR-PCI-MSI
> 278528-edge ahci0
> 31: 162 163 164 181 IR-PCI-MSI
> 278529-edge ahci1
> 34: 2 1 2 17 IR-PCI-MSI
> 262144-edge xhci_hcd
> 35: 0 0 0 0 IR-PCI-MSI
> 262145-edge xhci_hcd
> 36: 0 0 0 0 IR-PCI-MSI
> 262146-edge xhci_hcd
> 37: 0 0 0 0 IR-PCI-MSI
> 262147-edge xhci_hcd
> 38: 0 0 0 0 IR-PCI-MSI
> 262148-edge xhci_hcd
> 39: 0 0 0 0 IR-PCI-MSI
> 264192-edge xhci_hcd
> 40: 0 0 0 0 IR-PCI-MSI
> 264193-edge xhci_hcd
> 41: 0 0 0 0 IR-PCI-MSI
> 264194-edge xhci_hcd
> 42: 0 0 0 0 IR-PCI-MSI
> 264195-edge xhci_hcd
> 43: 0 0 0 0 IR-PCI-MSI
> 264196-edge xhci_hcd
> 44: 0 0 0 0 IR-PCI-MSI
> 2097152-edge xhci_hcd
> 45: 0 0 0 0 IR-PCI-MSI
> 2097153-edge xhci_hcd
> 46: 0 0 0 0 IR-PCI-MSI
> 2097154-edge xhci_hcd
> 47: 0 0 0 0 IR-PCI-MSI
> 2097155-edge xhci_hcd
> 48: 0 0 0 0 IR-PCI-MSI
> 2097156-edge xhci_hcd
> 50: 40 41 41 40 IR-PCI-MSI
> 526336-edge snd_hda_intel
> 51: 14 15 21 1105 IR-PCI-MSI
> 2621440-edge em1
> 52: 16579895 16579562 16580988 16583443 IR-PCI-MSI
> 524288-edge amdgpu
> NMI: 4 3 4 3 Non-maskable interrupts
> LOC: 15020 10425 8933 8584 Local timer interrupts
> SPU: 0 0 0 0 Spurious interrupts
> PMI: 4 3 4 3 Performance
> monitoring interrupts
> IWI: 1 1 1 1 IRQ work interrupts
> RTR: 0 0 0 0 APIC ICR read retries
> RES: 7203 5501 10621 5077 Rescheduling interrupts
> CAL: 498 559 614 591 Function call interrupts
> TLB: 58 149 104 95 TLB shootdowns
> TRM: 0 0 0 0 Thermal event interrupts
> THR: 0 0 0 0 Threshold APIC interrupts
> DFR: 0 0 0 0 Deferred Error
> APIC interrupts
> MCE: 0 0 0 0 Machine check exceptions
> MCP: 1 1 1 1 Machine check polls
> HYP: 0 0 0 0 Hypervisor
> callback interrupts
> ERR: 1
> MIS: 0
> PIN: 0 0 0 0 Posted-interrupt
> notification event
> PIW: 0 0 0 0 Posted-interrupt
> wakeup event
>
> This worked fine on 4.1. Any ideas?
>
> Thanks,
>
> Alex
>
>
>>
>> Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
>> Reported-by: Alex Deucher <alexdeucher@gmail.com>
>> Reported-by: Mark Rustad <mrustad@gmail.com>
>> Reported-by: Alexander Holler <holler@ahsoftware.de>
>> ---
>> Hi Alex, Mark and Alexandler,
>> Sorry for the long delay to root cause this regression, it's
>> really annoying. Could you please help test this patch against the
>> latest v4.2-rcx?
>> Thanks!
>> Gerry
>> ---
>> arch/x86/kernel/apic/vector.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/arch/x86/kernel/apic/vector.c b/arch/x86/kernel/apic/vector.c
>> index f813261d9740..2683f36e4e0a 100644
>> --- a/arch/x86/kernel/apic/vector.c
>> +++ b/arch/x86/kernel/apic/vector.c
>> @@ -322,7 +322,7 @@ static int x86_vector_alloc_irqs(struct irq_domain *domain, unsigned int virq,
>> irq_data->chip = &lapic_controller;
>> irq_data->chip_data = data;
>> irq_data->hwirq = virq + i;
>> - err = assign_irq_vector_policy(virq, irq_data->node, data,
>> + err = assign_irq_vector_policy(virq + i, irq_data->node, data,
>> info);
>> if (err)
>> goto error;
>> --
>> 1.7.10.4
>>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
>
next prev parent reply other threads:[~2015-08-11 1:06 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-08-09 8:15 [Bugfix] x86, irq: Fix a regression caused by commit b5dc8e6c21e7 Jiang Liu
2015-08-09 10:14 ` Alexander Holler
2015-08-09 14:11 ` Jiang Liu
2015-08-10 15:00 ` Alex Deucher
2015-08-11 1:06 ` Jiang Liu [this message]
2015-08-13 19:46 ` Alex Deucher
2015-08-13 20:15 ` Alex Deucher
2015-08-13 22:13 ` Alex Deucher
2015-08-25 4:03 ` Alex Deucher
2015-08-25 4:46 ` Jiang Liu
2015-08-10 16:47 ` Rustad, Mark D
2015-08-17 21:02 ` Alex Deucher
2015-08-18 12:53 ` Thomas Gleixner
2015-08-17 21:11 ` Thomas Gleixner
2015-08-18 15:20 ` [Bugfix] x86, irq: Fix an error in building CPU vector to IRQ number mapping for MSI Jiang Liu
2015-08-18 16:21 ` [tip:x86/urgent] x86/irq: Build correct vector mapping for multiple MSI interrupts tip-bot for Jiang Liu
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=55C94AA5.8090904@linux.intel.com \
--to=jiang.liu@linux.intel.com \
--cc=alexdeucher@gmail.com \
--cc=holler@ahsoftware.de \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mark.d.rustad@intel.com \
--cc=mingo@redhat.com \
--cc=tglx@linutronix.de \
--cc=tony.luck@intel.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.