Skip to contentSkip to conversation

PCI IRQ issue since 4.2 kernel

DISCUSSION Rob Groner 2 participants 6 messages Mar 31, 2016 PCI

lore
Share & tools
lore

Rob Groner

author Acked-by Thomas Gleixner
#0 lore raw

Greetings,

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
----------------------------------------------------------------

#1 lore raw

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 +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
----------------------------------------------------------------

--
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

author
#2 lore raw
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:
Implement pcibios_alloc_irq() and pcibios_free_irq()").

Quoted 7 lines

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

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 +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
----------------------------------------------------------------

--
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

author
#3 lore raw
In reply to Bjorn Helgaas
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:
Implement pcibios_alloc_irq() and pcibios_free_irq()").

Quoted 7 lines

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

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

#4 lore raw
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:
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.

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

author
#5 lore raw
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:
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.

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