[SLOF] [PATCH] pci: walk through the PCI DT in reverse order

Thomas Huth thuth at redhat.com
Fri Nov 27 06:26:50 AEDT 2015


On 26/11/15 17:34, Greg Kurz wrote:
> With the same set of devices, if QEMU does not do the PCI Enumeration (old
> QEMU that doesn't set the qemu,phb-enumerated property), we get:
> 
> Populating /pci at 800000020000000
>  Adapters on 0800000020000000
>                      00 0800 (D) : 1af4 1000    virtio [ net ]
>                      00 1000 (D) : 106b 003f    serial bus [ usb-ohci ]
>                      00 1800 (D) : 1af4 1003    communication-controller*
>                      00 2000 (D) : 1af4 1001    virtio [ block ]
>                      00 2800 (D) : 1af4 1001    virtio [ block ]
>                      00 3000 (D) : 1af4 1001    virtio [ block ]
>                      00 3800 (D) : 1af4 1002    unknown-legacy-device*
> 
> but in the case of a newer QEMU, when SLOF walks through the DT, we get:
> 
> Populating /pci at 800000020000000
>                      00 3800 (D) : 1af4 1002    unknown-legacy-device*
>                      00 3000 (D) : 1af4 1001    virtio [ block ]
>                      00 2800 (D) : 1af4 1001    virtio [ block ]
>                      00 2000 (D) : 1af4 1001    virtio [ block ]
>                      00 1800 (D) : 1af4 1003    communication-controller*
>                      00 1000 (D) : 106b 003f    serial bus [ usb-ohci ]
>                      00 0800 (D) : 1af4 1000    virtio [ net ]
> 
> This is a confusing behaviour change for users. This patch fixes that: we
> push all the child nodes to the stack and configure them in reverse order.

With your patch, the output during boot is in the right order, but the
nodes in the device tree are still ordered wrong (type "dev /" and then
"ls" at the SLOF prompt).
Where does the wrong order come from? Is it QEMU who's doing this wrong
already? Then it should maybe be rather fixed there?

 Thomas



More information about the SLOF mailing list