Message ID | 1473325558-469-3-git-send-email-thuth@redhat.com |
---|---|
State | Accepted |
Headers | show |
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 )
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(-)