PCI IRQ issue since 4.2 kernel
Rob Groner
Acked-by Thomas GleixnerGreetings,
We became aware of an issue with our Linux drivers when used with a 4.4 kernel. These drivers had worked previously from 2.6.35 to 4.2 kernels. The symptoms were that, even though the request_irq() call was successful, we did not receive any IRQs. IRQs did arrive on a different IRQ line, however, and the kernel disabled that line because there was no handler.
I can elaborate on this more if you'd like.
With Greg K-H's help, I found the commit where this issue first appears. He told me to email the people listed in the commit and the pci mailing list.
Is there something different I need to be doing when I request an IRQ for my PCI device driver? I checked the 4.2, 4.3, and 4.4 kernel change logs and did not see anything obvious about the IRQ request process changing.
Please let me know how to proceed next.
Thank you,
Rob
-----------------------------------------------------------------------
rtd@kernel-dev:~/git/kernels/linux$ git bisect good 991de2e59090e55c65a7f59a049142e3c480f7bd is the first bad commit commit 991de2e59090e55c65a7f59a049142e3c480f7bd Author: Jiang Liu <[email protected]> Date: Wed Jun 10 16:54:59 2015 +0800
PCI, x86: Implement pcibios_alloc_irq() and pcibios_free_irq()
To support IOAPIC hotplug, we need to allocate PCI IRQ resources on
demand
and free them when not used anymore.
Implement pcibios_alloc_irq() and pcibios_free_irq() to dynamically allocate and free PCI IRQs.
Remove mp_should_keep_irq(), which is no longer used.
:040000 040000 765e2d5232d53247ec260b34b51589c3bccb36ae
f680234a27685e94b1a35ae2a7218f8eafa9071a M arch
:040000 040000 d55a682bcde72682e883365e88ad1df6186fd54d
f82c470a04a6845fcf5e0aa934512c75628f798d M drivers
----------------------------------------------------------------
Hi Rob,
Quoted 6 lines · Rob Groner
We became aware of an issue with our Linux drivers when used with a 4.4 kernel. These drivers had worked previously from 2.6.35 to 4.2 kernels. The symptoms were that, even though the
request_irq()call was successful, we did not receive any IRQs. IRQs did arrive on a different IRQ line, however, and the kernel disabled that line because there was no handler.
Others have seen similar issues, so we reverted 991de2e59090 ("PCI, x86:
Implement pcibios_alloc_irq() and pcibios_free_irq()").
The revert, 6c777e8799a9 ("Revert "PCI, x86: Implement pcibios_alloc_irq() and pcibios_free_irq()""), appeared in v4.5-rc6, so if you try that or a later kernel (including v4.5), it should work.
Let us know if you still see problems.
Bjorn
Quoted 33 lines
-----------------------------------------------------------------------
rtd@kernel-dev:~/git/kernels/linux$ git bisect good 991de2e59090e55c65a7f59a049142e3c480f7bd is the first bad commit commit 991de2e59090e55c65a7f59a049142e3c480f7bd Author: Jiang Liu <[email protected]> Date: Wed Jun 10 16:54:59 2015 +0800PCI, x86: Implement
pcibios_alloc_irq()andpcibios_free_irq()To support IOAPIC hotplug, we need to allocate PCI IRQ resources on
demand
and free them when not used anymore.Implement
pcibios_alloc_irq()andpcibios_free_irq()to dynamically allocate and free PCI IRQs.Remove
mp_should_keep_irq(), which is no longer used.[bhelgaas: changelog]Signed-off-by Jiang Liu <[email protected]>Signed-off-by Bjorn Helgaas <[email protected]>Acked-by Thomas Gleixner <[email protected]>:040000 040000
765e2d5232d53247ec260b34b51589c3bccb36ae
f680234a27685e94b1a35ae2a7218f8eafa9071aM arch
:040000 040000d55a682bcde72682e883365e88ad1df6186fd54d
f82c470a04a6845fcf5e0aa934512c75628f798dM drivers
------------------------------------------------------------------
To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Quoted 13 lines · Bjorn Helgaas
Hi Rob,
Quoted 6 lines · Rob Groner
We became aware of an issue with our Linux drivers when used with a 4.4 kernel. These drivers had worked previously from 2.6.35 to 4.2 kernels. The symptoms were that, even though the
request_irq()call was successful, we did not receive any IRQs. IRQs did arrive on a different IRQ line, however, and the kernel disabled that line because there was no handler.Others have seen similar issues, so we reverted
991de2e59090("PCI, x86:
Implementpcibios_alloc_irq()andpcibios_free_irq()").
Quoted 7 lines
The revert,
6c777e8799a9("Revert "PCI, x86: Implementpcibios_alloc_irq()andpcibios_free_irq()""), appeared in v4.5-rc6, so if you try that or a later kernel (including v4.5), it should work.Let us know if you still see problems.
Bjorn
Thank you! I will try the 4.5 kernel from kernel.org today.
Rob
Quoted 33 lines
Quoted 33 lines
-----------------------------------------------------------------------
rtd@kernel-dev:~/git/kernels/linux$ git bisect good 991de2e59090e55c65a7f59a049142e3c480f7bd is the first bad commit commit 991de2e59090e55c65a7f59a049142e3c480f7bd Author: Jiang Liu <[email protected]> Date: Wed Jun 10 16:54:59 2015 +0800PCI, x86: Implement
pcibios_alloc_irq()andpcibios_free_irq()To support IOAPIC hotplug, we need to allocate PCI IRQ resources on
demand
and free them when not used anymore.Implement
pcibios_alloc_irq()andpcibios_free_irq()to dynamically allocate and free PCI IRQs.Remove
mp_should_keep_irq(), which is no longer used.[bhelgaas: changelog]Signed-off-by Jiang Liu <[email protected]>Signed-off-by Bjorn Helgaas <[email protected]>Acked-by Thomas Gleixner <[email protected]>:040000 040000
765e2d5232d53247ec260b34b51589c3bccb36ae
f680234a27685e94b1a35ae2a7218f8eafa9071aM arch
:040000 040000d55a682bcde72682e883365e88ad1df6186fd54d
f82c470a04a6845fcf5e0aa934512c75628f798dM drivers
------------------------------------------------------------------
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to [email protected]
More majordomo info at https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2fvger.kernel.org%2fmajordomo-info.html&data=01%7c01%7crgroner%40rtd.com%7c4e5022d941bc4c056cfe08d35969f836%7c16f82b7977b8423dbafdd6c19032e267%7c1&sdata=4iqUGR6coY75Peouz%2buK6NUAk9pQFAHsGemGwzFXlc0%3d
Quoted 13 lines · Bjorn Helgaas
Hi Rob,
Quoted 6 lines · Rob Groner
We became aware of an issue with our Linux drivers when used with a 4.4 kernel. These drivers had worked previously from 2.6.35 to 4.2 kernels. The symptoms were that, even though the
request_irq()call was successful, we did not receive any IRQs. IRQs did arrive on a different IRQ line, however, and the kernel disabled that line because there was no handler.Others have seen similar issues, so we reverted
991de2e59090("PCI, x86:
Implementpcibios_alloc_irq()andpcibios_free_irq()").
Quoted 7 lines
The revert,
6c777e8799a9("Revert "PCI, x86: Implementpcibios_alloc_irq()andpcibios_free_irq()""), appeared in v4.5-rc6, so if you try that or a later kernel (including v4.5), it should work.Let us know if you still see problems.
Bjorn
I installed the 4.5 kernel from kernel.org and my issue has been resolved. Thank you very much!
Will this revert possibly make it into 4.3 and 4.4, or will I have to tell people to avoid those versions?
Thanks!
Rob
Quoted 20 lines · Rob Groner
Quoted 19 lines · Bjorn Helgaas
Hi Rob,
Quoted 6 lines · Rob Groner
We became aware of an issue with our Linux drivers when used with a 4.4 kernel. These drivers had worked previously from 2.6.35 to 4.2 kernels. The symptoms were that, even though the
request_irq()call was successful, we did not receive any IRQs. IRQs did arrive on a different IRQ line, however, and the kernel disabled that line because there was no handler.Others have seen similar issues, so we reverted
991de2e59090("PCI, x86:
Implementpcibios_alloc_irq()andpcibios_free_irq()").The revert,
6c777e8799a9("Revert "PCI, x86: Implementpcibios_alloc_irq()andpcibios_free_irq()""), appeared in v4.5-rc6, so if you try that or a later kernel (including v4.5), it should work.Let us know if you still see problems.
Quoted 7 lines
Quoted 1 line
Bjorn
I installed the 4.5 kernel from kernel.org and my issue has been resolved. Thank you very much!
Will this revert possibly make it into 4.3 and 4.4, or will I have to tell people to avoid those versions?
Shoot, I forgot to mark that revert for stable. I'll see if I can figure out how to do that after the fact. Of course, you'll still have to tell people to use the latest 4.3.x or 4.4.x stable kernels, not the original 4.3 and 4.5.
Bjorn
Quoted 29 lines · Bjorn Helgaas
Quoted 20 lines · Rob Groner
Quoted 19 lines · Bjorn Helgaas
Hi Rob,
Quoted 6 lines · Rob Groner
We became aware of an issue with our Linux drivers when used with a 4.4 kernel. These drivers had worked previously from 2.6.35 to 4.2 kernels. The symptoms were that, even though the
request_irq()call was successful, we did not receive any IRQs. IRQs did arrive on a different IRQ line, however, and the kernel disabled that line because there was no handler.Others have seen similar issues, so we reverted
991de2e59090("PCI, x86:
Implementpcibios_alloc_irq()andpcibios_free_irq()").The revert,
6c777e8799a9("Revert "PCI, x86: Implementpcibios_alloc_irq()andpcibios_free_irq()""), appeared in v4.5-rc6, so if you try that or a later kernel (including v4.5), it should work.Let us know if you still see problems.
Quoted 7 lines
Quoted 1 line
Bjorn
I installed the 4.5 kernel from https://na01.safelinks.protection.outlook.com/?url=kernel.org&data=01%7c01%7crgroner%40rtd.com%7c008e1e58aa0c4690a8b208d359771c14%7c16f82b7977b8423dbafdd6c19032e267%7c1&sdata=rZhvAmnOFRBM9kCk97hFxVJ4Q%2fharqu1CpSfPhyawyY%3d and my issue has been resolved. Thank you very much!
Will this revert possibly make it into 4.3 and 4.4, or will I have to tell people to avoid those versions?
Quoted 6 lines
Shoot, I forgot to mark that revert for stable. I'll see if I can figure out how to do that after the fact. Of course, you'll still have to tell people to use the latest 4.3.x or 4.4.x stable kernels, not the original 4.3 and 4.5.
Bjorn
Ok, will do. Thanks!
Rob