diff -r b2bea92dffd4 sys/src/9/pc/mp.c --- a/sys/src/9/pc/mp.c Sat Feb 20 21:02:07 2021 -0800 +++ b/sys/src/9/pc/mp.c Sun Feb 28 15:33:34 2021 +0000 @@ -351,13 +351,20 @@ if(bus == nil){ /* - * if the PCI device is behind a PCI-PCI bridge thats not described - * by the MP or ACPI tables then walk up the bus translating interrupt - * pin to parent bus. + * if the PCI device is behind a bridge thats not described + * by the MP or ACPI tables then walk up the bus translating + * interrupt pin to parent bus. */ + if(pci->ccrb == 6 && pci->ccru == 7){ + /* Cardbus bridge, use controllers interrupt pin */ + pin = pcicfgr8(pci, PciINTP); + } if(pci != nil && pci->parent != nil && pin > 0){ - pin = ((dno+(pin-1))%4)+1; pci = pci->parent; + if(pci->ccrb != 6 && pci->ccru != 7) { + /* PCI-PCI bridge */ + pin = ((dno+(pin-1))%4)+1; + } bno = BUSBNO(pci->tbdf); dno = BUSDNO(pci->tbdf); goto Findbus;