This property is needed for WHQL/inboxing of Windows drivers. We do need to get drivers to be separated by the hypervisor vendors and that should be done as PCI subvendor ID.
This patch adds PCI subsystem vendor ID to QXL device to match that convention. The original version of this code has been written by Denis Plotnikov while he has been working in Virtuozzo. Signed-off-by: Denis V. Lunev <d...@openvz.org> CC: Denis Plotnikov <den-plotni...@yandex-team.ru> CC: Yan Vugenfirer <yvuge...@redhat.com> CC: Gerd Hoffmann <kra...@redhat.com> --- hw/display/qxl.c | 4 ++++ hw/display/qxl.h | 1 + 2 files changed, 5 insertions(+) diff --git a/hw/display/qxl.c b/hw/display/qxl.c index 5b10f697f1..ec117aa90f 100644 --- a/hw/display/qxl.c +++ b/hw/display/qxl.c @@ -2204,6 +2204,8 @@ static void qxl_realize_common(PCIQXLDevice *qxl, Error **errp) qxl->update_area_bh = qemu_bh_new(qxl_render_update_area_bh, qxl); qxl->ssd.cursor_bh = qemu_bh_new(qemu_spice_cursor_refresh_bh, &qxl->ssd); + + pci_set_word(&config[PCI_SUBSYSTEM_VENDOR_ID], qxl->subsystem_vendor_id); } static void qxl_realize_primary(PCIDevice *dev, Error **errp) @@ -2469,6 +2471,8 @@ static Property qxl_properties[] = { DEFINE_PROP_UINT32("xres", PCIQXLDevice, xres, 0), DEFINE_PROP_UINT32("yres", PCIQXLDevice, yres, 0), DEFINE_PROP_BOOL("global-vmstate", PCIQXLDevice, vga.global_vmstate, false), + DEFINE_PROP_UINT16("subsystem-vendor-id", PCIQXLDevice, + subsystem_vendor_id, PCI_VENDOR_ID_REDHAT_QUMRANET), DEFINE_PROP_END_OF_LIST(), }; diff --git a/hw/display/qxl.h b/hw/display/qxl.h index e74de9579d..111edbf0dc 100644 --- a/hw/display/qxl.h +++ b/hw/display/qxl.h @@ -126,6 +126,7 @@ struct PCIQXLDevice { int num_dirty_rects; QXLRect dirty[QXL_NUM_DIRTY_RECTS]; QEMUBH *update_area_bh; + uint16_t subsystem_vendor_id; }; #define TYPE_PCI_QXL "pci-qxl" -- 2.34.1