[tip: x86/irq] x86/PCI: Include function number in $PIR table dump

From: tip-bot2 for Maciej W. Rozycki
Date: Sun Apr 10 2022 - 06:56:02 EST


The following commit has been merged into the x86/irq branch of tip:

Commit-ID: dc0e64087213768a6232af980076a517aaaa4adb
Gitweb: https://git.kernel.org/tip/dc0e64087213768a6232af980076a517aaaa4adb
Author: Maciej W. Rozycki <macro@xxxxxxxxxxx>
AuthorDate: Thu, 31 Mar 2022 08:10:17 +01:00
Committer: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
CommitterDate: Sun, 10 Apr 2022 12:48:14 +02:00

x86/PCI: Include function number in $PIR table dump

Contrary to the PCI BIOS specification[1] some systems include the PCI
function number for motherboard devices in their $PIR table, e.g. this
is what the Tyan Tomcat IV S1564D board reports:

00:14 slot=01
0:60/deb8
1:61/deb8
2:62/deb8
3:63/deb8

00:13 slot=02
0:61/deb8
1:62/deb8
2:63/deb8
3:60/deb8

00:12 slot=03
0:62/deb8
1:63/deb8
2:60/deb8
3:61/deb8

00:11 slot=04
0:63/deb8
1:60/deb8
2:61/deb8
3:62/deb8

00:07 slot=00
0:00/deb8
1:00/deb8
2:00/deb8
3:00/deb8

00:07 slot=00
0:00/deb8
1:00/deb8
2:00/deb8
3:63/deb8

Print the function number then in the debug $PIR table dump:

00:14.0 slot=01
0:60/deb8
1:61/deb8
2:62/deb8
3:63/deb8

00:13.0 slot=02
0:61/deb8
1:62/deb8
2:63/deb8
3:60/deb8

00:12.0 slot=03
0:62/deb8
1:63/deb8
2:60/deb8
3:61/deb8

00:11.0 slot=04
0:63/deb8
1:60/deb8
2:61/deb8
3:62/deb8

00:07.1 slot=00
0:00/deb8
1:00/deb8
2:00/deb8
3:00/deb8

00:07.2 slot=00
0:00/deb8
1:00/deb8
2:00/deb8
3:63/deb8

References:

[1] "PCI BIOS Specification", Revision 2.1, PCI Special Interest Group,
August 26, 1994, Table 4-1 "Layout of IRQ routing table entry.", p.
12

Signed-off-by: Maciej W. Rozycki <macro@xxxxxxxxxxx>
Signed-off-by: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
Link: https://lore.kernel.org/r/alpine.DEB.2.21.2203301534440.22465@xxxxxxxxxxxxxxxxx

---
arch/x86/pci/irq.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/arch/x86/pci/irq.c b/arch/x86/pci/irq.c
index a33fe9c..b6b9853 100644
--- a/arch/x86/pci/irq.c
+++ b/arch/x86/pci/irq.c
@@ -135,7 +135,8 @@ static void __init pirq_peer_trick(void)
#ifdef DEBUG
{
int j;
- DBG(KERN_DEBUG "%02x:%02x slot=%02x", e->bus, e->devfn/8, e->slot);
+ DBG(KERN_DEBUG "%02x:%02x.%x slot=%02x",
+ e->bus, e->devfn / 8, e->devfn % 8, e->slot);
for (j = 0; j < 4; j++)
DBG(" %d:%02x/%04x", j, e->irq[j].link, e->irq[j].bitmap);
DBG("\n");