[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 06/45] vmw_pvscsi: Set device subsystem and revision
From: |
Paolo Bonzini |
Subject: |
[Qemu-devel] [PULL 06/45] vmw_pvscsi: Set device subsystem and revision |
Date: |
Thu, 17 Dec 2015 18:46:02 +0100 |
From: Shmulik Ladkani <address@hidden>
To be VMware PVSCSI SCSI Controller, rev 02.
As reported by the VMware virtual hardware.
Signed-off-by: Shmulik Ladkani <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>
---
hw/scsi/vmw_pvscsi.c | 23 ++++++++++++++++++++---
1 file changed, 20 insertions(+), 3 deletions(-)
diff --git a/hw/scsi/vmw_pvscsi.c b/hw/scsi/vmw_pvscsi.c
index 9c71f31..ce099f9 100644
--- a/hw/scsi/vmw_pvscsi.c
+++ b/hw/scsi/vmw_pvscsi.c
@@ -52,6 +52,14 @@
#define TYPE_PVSCSI "pvscsi"
#define PVSCSI(obj) OBJECT_CHECK(PVSCSIState, (obj), TYPE_PVSCSI)
+/* Compatability flags for migration */
+#define PVSCSI_COMPAT_OLD_PCI_CONFIGURATION_BIT 0
+#define PVSCSI_COMPAT_OLD_PCI_CONFIGURATION \
+ (1 << PVSCSI_COMPAT_OLD_PCI_CONFIGURATION_BIT)
+
+#define PVSCSI_USE_OLD_PCI_CONFIGURATION(s) \
+ ((s)->compat_flags & PVSCSI_COMPAT_OLD_PCI_CONFIGURATION)
+
typedef struct PVSCSIRingInfo {
uint64_t rs_pa;
uint32_t txr_len_mask;
@@ -100,6 +108,8 @@ typedef struct {
PVSCSIRingInfo rings; /* Data transfer rings manager */
uint32_t resetting; /* Reset in progress */
+
+ uint32_t compat_flags;
} PVSCSIState;
typedef struct PVSCSIRequest {
@@ -1069,9 +1079,16 @@ pvscsi_init(PCIDevice *pci_dev)
trace_pvscsi_state("init");
- /* PCI subsystem ID */
- pci_dev->config[PCI_SUBSYSTEM_ID] = 0x00;
- pci_dev->config[PCI_SUBSYSTEM_ID + 1] = 0x10;
+ /* PCI subsystem ID, subsystem vendor ID, revision */
+ if (PVSCSI_USE_OLD_PCI_CONFIGURATION(s)) {
+ pci_set_word(pci_dev->config + PCI_SUBSYSTEM_ID, 0x1000);
+ } else {
+ pci_set_word(pci_dev->config + PCI_SUBSYSTEM_VENDOR_ID,
+ PCI_VENDOR_ID_VMWARE);
+ pci_set_word(pci_dev->config + PCI_SUBSYSTEM_ID,
+ PCI_DEVICE_ID_VMWARE_PVSCSI);
+ pci_config_set_revision(pci_dev->config, 0x2);
+ }
/* PCI latency timer = 255 */
pci_dev->config[PCI_LATENCY_TIMER] = 0xff;
--
2.5.0
- [Qemu-devel] [PULL 00/45] KVM, memory, SCSI, qemu_log, Coverity patches for 2015-12-17, Paolo Bonzini, 2015/12/17
- [Qemu-devel] [PULL 02/45] memory: Eliminate memory_region_destructor_ram_from_ptr(), Paolo Bonzini, 2015/12/17
- [Qemu-devel] [PULL 01/45] exec: Eliminate qemu_ram_free_from_ptr(), Paolo Bonzini, 2015/12/17
- [Qemu-devel] [PULL 04/45] kvm-all: PAGE_SIZE should be real host page size, Paolo Bonzini, 2015/12/17
- [Qemu-devel] [PULL 05/45] memory: emulate ioeventfd, Paolo Bonzini, 2015/12/17
- [Qemu-devel] [PULL 03/45] exec: Remove unnecessary RAM_FILE flag, Paolo Bonzini, 2015/12/17
- [Qemu-devel] [PULL 08/45] vmw_pvscsi: Introduce 'x-old-pci-configuration' backword compatability property, Paolo Bonzini, 2015/12/17
- [Qemu-devel] [PULL 06/45] vmw_pvscsi: Set device subsystem and revision,
Paolo Bonzini <=
- [Qemu-devel] [PULL 09/45] vmw_pvscsi: coding: Introduce PVSCSIClass, Paolo Bonzini, 2015/12/17
- [Qemu-devel] [PULL 07/45] vmw_pvscsi: Change offset of msi pci capability, Paolo Bonzini, 2015/12/17
- [Qemu-devel] [PULL 10/45] vmw_pvscsi: The pvscsi device is a PCIE endpoint, Paolo Bonzini, 2015/12/17
- [Qemu-devel] [PULL 11/45] vmw_pvscsi: Introduce 'x-disable-pcie' backword compatability property, Paolo Bonzini, 2015/12/17
- [Qemu-devel] [PULL 14/45] kvm: Hyper-V SynIC irq routing support, Paolo Bonzini, 2015/12/17
- [Qemu-devel] [PULL 13/45] target-i386/kvm: Hyper-V SynIC MSR's support, Paolo Bonzini, 2015/12/17
- [Qemu-devel] [PULL 15/45] target-i386/hyperv: Hyper-V SynIC SINT routing and vcpu exit, Paolo Bonzini, 2015/12/17
- [Qemu-devel] [PULL 12/45] linux-headers: update from kvm/next, Paolo Bonzini, 2015/12/17
- [Qemu-devel] [PULL 16/45] hw/misc: Hyper-V test device 'hyperv-testdev', Paolo Bonzini, 2015/12/17