>     +---------->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



Reply via email to