Skip to content
  • Mark McLoughlin's avatar
    Change default PCI class of virtio-console to PCI_CLASS_SERIAL_OTHER · 21d58b57
    Mark McLoughlin authored
    
    
    We're using PCI_CLASS_DISPLAY_OTHER now, but qemu-kvm.git is using
    PCI_CLASS_OTHERS because:
    
      "As a PCI_CLASS_DISPLAY_OTHER, it reduces primary display somehow on
       Windows XP (possibly Windows disables acceleration since it fails
       to find a driver)."
    
    While this is valid, many versions of X will get confused by it.
    Class major number of 0 gets treated as a possibly prehistoric VGA
    device, and then the autoconfig logic gets confused trying to figure
    out whether the virtio console or the pv vga device are the real VGA.
    
    We should really set a proper class ID. 0x0780 (serial / other) seems
    most appropriate. This shouldn't require any kernel changes, the
    modalias for virtio looks like:
    
      alias:          pci:v00001AF4d*sv*sd*bc*sc*i*
    
    so won't care what the base class or subclass are.
    
    It shows up in the guest as:
    
      00:05.0 Communication controller: Qumranet, Inc. Virtio console
    
    A new qdev type is introduced to allow devices using the old class
    to be created for compatibility with qemu-0.10.x.
    
    Reported-by: default avatarAdam Jackson <ajax@redhat.com>
    Signed-off-by: default avatarMark McLoughlin <markmc@redhat.com>
    Signed-off-by: default avatarAnthony Liguori <aliguori@us.ibm.com>
    21d58b57