diff mbox

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

Message ID 1473325558-469-3-git-send-email-thuth@redhat.com
State Accepted
Headers show

Commit Message

Thomas Huth Sept. 8, 2016, 9:05 a.m. UTC
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@redhat.com>
---
 board-qemu/slof/pci-interrupts.fs | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff mbox

Patch

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 )