[SeaBIOS] [PATCH V2] pci: fixes to allow booting from extra root pci buses.

Marcel Apfelbaum marcel at redhat.com
Thu Jun 11 16:36:06 CEST 2015

On 06/11/2015 05:24 PM, Kevin O'Connor wrote:
> On Thu, Jun 11, 2015 at 05:12:33PM +0300, Marcel Apfelbaum wrote:
>> On 06/11/2015 04:58 PM, Kevin O'Connor wrote:
>>> On Thu, Jun 11, 2015 at 04:37:08PM +0300, Marcel Apfelbaum wrote:
>>>> The fixes solves the following issue:
>>>> The PXB device exposes a new  pci root bridge with the
>>>> fw path:  /pci-root at 4/..., in which 4 is the root bus number.
>>>> Before this patch the fw path was wrongly computed:
>>>>      /pci-root at 1/pci at i0cf8/...
>>>> Fix the above issues: Correct the bus number and remove the
>>>> extra host bridge description.
>>> Why is that wrong?  The previous path looks correct to me.
>> The prev path includes both the extra root bridge and *then* the usual host bridge.
>>   /pci-root at 1/pci at i0cf8/   ...
>>      ^ new       ^ regular  ^ devices
>> Since the new pci root bridge (and bus) is on "paralel" with the regular one.
>> it is not correct to add it to the path.
>> The architecture is:
>>   /<host bridge>/devices...
>>   /extra root bridge/devices...
>>   /extra root bridge/devices...
>> And not
>> /extra root bridge//<host bridge>/devices
> Your patch changed both the "/extra root bridge/devices..." part and
> the "@1" part.  The change of the "@1" in "/pci-root at 1/" is not
> correct IMO.
Why? @1 should be the unit address which is the text representation
of the physical address, in our case the slot. Since the bus number
in our case is 4, I think /pci-root at 4/ is the 'correct' address.
> Does open-firmware have any examples for PCI paths and in particular
> PCI paths when there are multiple root-buses?
Maybe Laszlo can say more, but we both agreed that this would be the
berst representation of extra root buses on both OVMF and Seabios.
> It's possible to replace the "pci at i0cf8" with "pci-root at 1" but that
> seems odd as the extra root bus is accessible via io accesses to
> 0x0cf8.
While this is true, /pci-root@[...]/ may represent also other kind of host
bridges not only PXBs. But we can change this of course, as long as OVMF can also
work with it.

> Another option would be to place the pci-root at 1 behind the pci at i0cf8
> as in "/pci at i0cf8/pci-root at 1/...".  Or, the root bus could be appended
> to the host bridge as in "/pci at i0cf8,1/...".
The latest representation makes sense to me,  but "/pci at i0cf8,4/...", after comma
the bus number.

Laszlo, will this work for OVMF?


> -Kevin

More information about the SeaBIOS mailing list