[SLOF] [PATCH] pci-phb: Set pci-max-mem64 to the correct value

Nikunj A Dadhania nikunj at linux.vnet.ibm.com
Fri Apr 28 15:04:19 AEST 2017


Thomas Huth <thuth at redhat.com> writes:

> When running QEMU with a virtio device attached to a PCI bridge,
> SLOF currently fails to initialize the device correctly. For example,
> with the following command line:
>
>  qemu-system-ppc64 -nographic -nodefaults -serial mon:stdio \
>                -device pci-bridge,bus=pci.0,id=b1,chassis_nr=1 \
>                -device virtio-net-pci,netdev=n1,bus=b1 -netdev user,id=n1
>
> SLOF prints this error message during its PCI scan:
>
>  Device does not support virtio 1.0 0
>  virtio-net-open failedexiting
>
> This happens because the virtio driver code can not access the
> memory region of the device, because the bridge is configured
> in the wrong way. The problem is that SLOF currently sets the
> pci-max-mem64 variable to the size of the 64-bit PCI address space,
> but it should be set to the end address of the 64-bit space instead.
> The pci-max-mem64 is used for the memory limit register of the PCI
> bridge (see pci-bridge-set-mem-base) during PCI scan, and using
> a wrong value here blocks all memory accesses to the devices behind
> the bridge.
> So fix this issue by calculating the pci-max-mem64 value correctly.
>
> Signed-off-by: Thomas Huth <thuth at redhat.com>

Reviewed-by: Nikunj A Dadhania <nikunj at linux.vnet.ibm.com>

> ---
>  board-qemu/slof/pci-phb.fs | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/board-qemu/slof/pci-phb.fs b/board-qemu/slof/pci-phb.fs
> index fc2341c..6dfb2e6 100644
> --- a/board-qemu/slof/pci-phb.fs
> +++ b/board-qemu/slof/pci-phb.fs
> @@ -261,9 +261,9 @@ setup-puid
>              r> + pci-max-mmio !                 \ calc max MMIO address
>           ENDOF
>           3000000 OF                             \ 64-bit memory space?
> -	    decode-64 pci-next-mem64 !
> -	    decode-64 drop                      \ Forget the parent address
> -	    decode-64 pci-max-mem64 !
> +            decode-64 dup >r pci-next-mem64 !
> +            decode-64 drop                      \ Forget the parent address
> +            decode-64 r> + pci-max-mem64 !
>           ENDOF
>        ENDCASE
>     REPEAT
> -- 
> 1.8.3.1



More information about the SLOF mailing list