On Wed, Sep 26, 2018 at 10:47:42AM +0200, Laszlo Ersek wrote:
On 09/26/18 06:44, Gerd Hoffmann wrote:
Hi,
Second, the v5 RFC doesn't actually address the alleged bus number shortage. IIUC, it supports a low number of ECAM ranges under 4GB, but those are (individually) limited in the bus number ranges they can accommodate (due to 32-bit address space shortage). So more or less the current approach just fragments the bus number space we already have, to multiple domains.
Havn't looked at the qemu side too close yet, but as I understand things the firmware programs the ECAM location (simliar to the q35 mmconf bar), and this is just a limitation of the current seabios patch.
So, no, *that* part wouldn't be messy in ovmf, you can simply place the ECAMs where you want.
Figuring out "wherever I want" is the problem. It's not simple. The 64-bit MMIO aperture (for BAR allocation) can also be placed mostly "wherever the firmware wants", and that wasn't simple either. All these things end up depending on each other.
Agree. Due to the very dynamic nature virtual hardware in qemu ovmf has to adapt to *alot* more stuff at runtime than physical hardware platforms, where you for the most part know what hardware is there and can handle alot of things at compile time (without nasty initialization order issues).
Physical address space bits not being reliable is rather bad too. It makes address space management harder, because we squeeze everything below 64G if possible. Just in case, we might have 36 physbits only.
It's the reason we need need stuff like address space reservation for memory hotplug in the first place, instead of simply reserving 1/4 or 1/8 of the physical address space at the topmost location for the 64bit mmio aperture.
Oh, and after the rant back to the original topic: I just wanted point out that you don't have to be worryed about all the 32bit address space issues described in the v5 cover letter. That is how the seabios patch handles things. OVMF can handle things differently. For example totally ignore pxb-pcie in 32bit builds, and place the ECAMs above 4G (take away some room from the 64-bit MMIO aperture) unconditionally in 64bit builds.
cheers, Gerd