[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 2/3] Change default PCI class of virtio-console to P
From: |
Mark McLoughlin |
Subject: |
[Qemu-devel] [PATCH 2/3] Change default PCI class of virtio-console to PCI_CLASS_SERIAL_OTHER |
Date: |
Tue, 07 Jul 2009 12:09:58 +0100 |
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: Adam Jackson <address@hidden>
Signed-off-by: Mark McLoughlin <address@hidden>
---
hw/pci_ids.h | 3 +++
hw/virtio-pci.c | 18 +++++++++++++++---
2 files changed, 18 insertions(+), 3 deletions(-)
diff --git a/hw/pci_ids.h b/hw/pci_ids.h
index 3afe674..2fe60ee 100644
--- a/hw/pci_ids.h
+++ b/hw/pci_ids.h
@@ -35,6 +35,9 @@
#define PCI_CLASS_BRIDGE_PCI 0x0604
#define PCI_CLASS_BRIDGE_OTHER 0x0680
+#define PCI_CLASS_SERIAL_OTHER 0x0780
+
+#define PCI_CLASS_PROCESSOR_CO 0x0b40
#define PCI_CLASS_COMMUNICATION_OTHER 0x0780
#define PCI_CLASS_PROCESSOR_CO 0x0b40
diff --git a/hw/virtio-pci.c b/hw/virtio-pci.c
index 93ee5e1..6d3420d 100644
--- a/hw/virtio-pci.c
+++ b/hw/virtio-pci.c
@@ -437,7 +437,8 @@ static void virtio_blk_init_pci_0_10(PCIDevice *pci_dev)
virtio_blk_init_pci_with_class(pci_dev, PCI_CLASS_STORAGE_OTHER);
}
-static void virtio_console_init_pci(PCIDevice *pci_dev)
+static void virtio_console_init_pci_with_class(PCIDevice *pci_dev,
+ uint16_t class_code)
{
VirtIOPCIProxy *proxy = DO_UPCAST(VirtIOPCIProxy, pci_dev, pci_dev);
VirtIODevice *vdev;
@@ -446,8 +447,17 @@ static void virtio_console_init_pci(PCIDevice *pci_dev)
virtio_init_pci(proxy, vdev,
PCI_VENDOR_ID_REDHAT_QUMRANET,
PCI_DEVICE_ID_VIRTIO_CONSOLE,
- PCI_CLASS_DISPLAY_OTHER,
- 0x00);
+ class_code, 0x00);
+}
+
+static void virtio_console_init_pci(PCIDevice *pci_dev)
+{
+ virtio_console_init_pci_with_class(pci_dev, PCI_CLASS_SERIAL_OTHER);
+}
+
+static void virtio_console_init_pci_0_10(PCIDevice *pci_dev)
+{
+ virtio_console_init_pci_with_class(pci_dev, PCI_CLASS_DISPLAY_OTHER);
}
static void virtio_net_init_pci(PCIDevice *pci_dev)
@@ -490,6 +500,8 @@ static void virtio_pci_register_devices(void)
/* For compatibility with 0.10 */
pci_qdev_register("virtio-blk-pci-0-10", sizeof(VirtIOPCIProxy),
virtio_blk_init_pci_0_10);
+ pci_qdev_register("virtio-console-pci-0-10", sizeof(VirtIOPCIProxy),
+ virtio_console_init_pci_0_10);
}
device_init(virtio_pci_register_devices)
--
1.6.2.5
- [Qemu-devel] [PATCH 0/3] Change virtio blk/console PCI classes and introduce compat machine type [was Re: Configuration vs. compat hints], Mark McLoughlin, 2009/07/07
- [Qemu-devel] [PATCH 1/3] Change default PCI class of virtio-blk to PCI_CLASS_STORAGE_SCSI, Mark McLoughlin, 2009/07/07
- [Qemu-devel] [PATCH 2/3] Change default PCI class of virtio-console to PCI_CLASS_SERIAL_OTHER,
Mark McLoughlin <=
- [Qemu-devel] [PATCH 3/3] Add a pc-0-10 machine type for compatibility with 0.10.x, Mark McLoughlin, 2009/07/07
- Re: [Qemu-devel] [PATCH 3/3] Add a pc-0-10 machine type for compatibility with 0.10.x, Avi Kivity, 2009/07/07
- Re: [Qemu-devel] [PATCH 3/3] Add a pc-0-10 machine type for compatibility with 0.10.x, Mark McLoughlin, 2009/07/08
- [Qemu-devel] [PATCH 3/3 v2] Add a pc-0-10 machine type for compatibility with 0.10.x, Mark McLoughlin, 2009/07/08
- Re: [Qemu-devel] [PATCH 3/3 v2] Add a pc-0-10 machine type for compatibility with 0.10.x, Gerd Hoffmann, 2009/07/08
- Re: [Qemu-devel] [PATCH 3/3 v2] Add a pc-0-10 machine type for compatibility with 0.10.x, Anthony Liguori, 2009/07/08
- Re: [Qemu-devel] [PATCH 3/3 v2] Add a pc-0-10 machine type for compatibility with 0.10.x, Gerd Hoffmann, 2009/07/08
- Re: [Qemu-devel] [PATCH 3/3 v2] Add a pc-0-10 machine type for compatibility with 0.10.x, Mark McLoughlin, 2009/07/08
- Re: [Qemu-devel] [PATCH 3/3 v2] Add a pc-0-10 machine type for compatibility with 0.10.x, Gerd Hoffmann, 2009/07/08
- Re: [Qemu-devel] [PATCH 3/3 v2] Add a pc-0-10 machine type for compatibility with 0.10.x, Anthony Liguori, 2009/07/08