The attached adds a PCI subsystem vendor ID of 0x514D (QM ascii->hex)
for the Cirrus emulation so that you can tell that the system is running
under qemu.  This will make it so that, eg, we can detect that in X and
know that resolutions > 800x600 won't blow up a monitor.

Downside is that it's not an officially registered vendor ID as it looks
like that requires joining the PCI-SIG.  Also, if this is interesting,
it's probably also worth doing for other emulated PCI devices as well.

Jeremy
Index: hw/cirrus_vga.c
===================================================================
RCS file: /sources/qemu/qemu/hw/cirrus_vga.c,v
retrieving revision 1.26
diff -u -u -r1.26 cirrus_vga.c
--- hw/cirrus_vga.c	31 Jul 2007 23:26:00 -0000	1.26
+++ hw/cirrus_vga.c	9 Aug 2007 19:27:03 -0000
@@ -3247,6 +3247,11 @@
     pci_conf[0x0a] = PCI_CLASS_SUB_VGA;
     pci_conf[0x0b] = PCI_CLASS_BASE_DISPLAY;
     pci_conf[0x0e] = PCI_CLASS_HEADERTYPE_00h;
+#define SUBSYSTEM_VENDOR_QEMU 0x514D
+    pci_conf[0x2c] = (uint8_t) (SUBSYSTEM_VENDOR_QEMU & 0xff);
+    pci_conf[0x2d] = (uint8_t) (SUBSYSTEM_VENDOR_QEMU >> 8);
+    pci_conf[0x2e] = (uint8_t) (device_id & 0xff);
+    pci_conf[0x2f] = (uint8_t) (device_id >> 8);
 
     /* setup VGA */
     s = &d->cirrus_vga;

Reply via email to