[SLOF] [PATCH 2/3] Allow PCI devices in PCI bridge slots greater than 4

Thomas Huth thuth at redhat.com
Thu Sep 8 19:05:57 AEST 2016


PCI bridges can have up to 31 slots. If we limit the value
from pci-addr2dev with "modulo 4", all devices in slots 4
and  higher won't work correctly since the interrupt-map
property then contains wrong values in this case. For
example, when QEMU is started with the following command
line, Linux is not able to use the balloon device:

 qemu-system-ppc64 ... \
    -device pci-bridge,bus=pci.0,id=bridge1,chassis_nr=1,addr=0x6 \
    -device virtio-balloon-pci,id=balloon0,bus=bridge1,addr=5

To fix this issue, simply remove the bogus "4 mod" calculation.

Buglink: https://bugzilla.redhat.com/show_bug.cgi?id=1366953
Signed-off-by: Thomas Huth <thuth at redhat.com>
---
 board-qemu/slof/pci-interrupts.fs | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/board-qemu/slof/pci-interrupts.fs b/board-qemu/slof/pci-interrupts.fs
index aec1106..7c8ecbd 100644
--- a/board-qemu/slof/pci-interrupts.fs
+++ b/board-qemu/slof/pci-interrupts.fs
@@ -24,7 +24,7 @@
 ;
 
 : pci-gen-irq-entry ( prop-addr prop-len config-addr -- prop-addr prop-len )
-        pci-addr2dev 4 mod          ( prop-addr prop-len slot )
+        pci-addr2dev                ( prop-addr prop-len slot )
         -rot                        ( slot prop-addr prop-len )
         5 1 DO
                 2 pick i            ( slot prop-addr prop-len slot pin )
-- 
1.8.3.1



More information about the SLOF mailing list