On Tue, 14 Jun 2022 10:52:52 +0200 Gerd Hoffmann <kra...@redhat.com> wrote:
> On Mon, Jun 13, 2022 at 03:47:04PM +0200, Laszlo Ersek wrote: > > On 06/12/22 19:32, Kevin Locke wrote: > > > PCI Express devices which use legacy VGA compatibility should be placed > > > on the Root Complex. This simplifies ioport access to VGA registers, > > > which requires use of a special exception bit to work across PCI(e) > > > bridges. It is also necessary for ioport access to VESA BIOS Extension > > > (VBE) registers, which is not forwarded over PCI(e) bridges, even with > > > the special exception bit for VGA register access.[1] > > > > > > Update the PCI Express Guidelines to add these to the list of devices > > > which can be placed directly on the Root Complex. > > > > > > Note that the only PCI Express display devices currently supported > > > (bochs-display and virtio-gpu-pci) do not offer VGA compatibility. > > > Legacy PCI devices (e.g. vga, qxl-vga, virtio-vga) are already > > > documented as allowed on the Root Complex by the first item in the list. > > > However, this item documents an additional consideration for placing > > > devices which was not previously mentioned, and may be relevant for PCIe > > > devices offering VGA compatibility in the future. > > Well, the *key* problem is emulated VGA devices with VBE registers in > io address space, because those are not forwarded over bridges. > > For normal VGA registers this isn't much of a problem (in theory, not > fully sure whenever that holds in practice, Alex?). The linux kernel > knows how to use the bridge control register to manage access to VGA > registers. Yes, AUIU the issue is entirely with the extended VBE requirements, the VGA ranges are fully routable through the VGA control registers on the bridge. The only bare metal issue I'm aware of with VGA routing is that we cannot route around Intel IGD. IIRC, this latter quirk is the only reason that enabling VGA routing for a vfio-pci device is considered experimental, but it very much does work when there's no host device silently consuming those ranges. We've also historically had issues with AMD graphics drivers assuming an express link which can lead to driver segfaults if those devices are placed on the root complex. OTOH, I'm not aware of any specific issues with placing assigned VGA class GPUs in configurations with a root port. I'd therefore expect any configuration guidelines we're proposing to be very specific to devices that make use of VBE, not just VGA devices in general. Thanks, Alex