> +---------->IS_PCI_VGA (Pci):
> | "Found PCI VGA device"
> > + k->class_id = PCI_CLASS_DISPLAY_OTHER;
>
> and from qemu's "include/hw/pci/pci_ids.h":
>
> > #define PCI_CLASS_DISPLAY_VGA 0x0300
> > #define PCI_CLASS_DISPLAY_OTHER 0x0380
>
> I think this is the cause of the mismatch.
Yes, it is. First byte (0x03) of the class says what it is, second byte
of class (0x00 / 0x80) specifies the programming interface.
So, it is a display adapter, but it isn't vga compatible, therefore
specifying PCI_CLASS_DISPLAY_VGA would be asking for trouble as trying
to program it using the standard vga io ports isn't going to work ...
[ same picture with virtio-gpu btw: The variant with the vga compat
bits declares itself as PCI_CLASS_DISPLAY_VGA whereas the variant
without is PCI_CLASS_DISPLAY_OTHER ]
> Does the following OVMF patch help?
>
> > - if (IS_PCI_VGA (Pci)) {
> > + if (IS_PCI_DISPLAY (Pci)) {
Yes.
thanks,
Gerd