[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