diff options
author | Alex Williamson <alex.williamson@redhat.com> | 2015-09-23 13:04:49 -0600 |
---|---|---|
committer | Alex Williamson <alex.williamson@redhat.com> | 2015-09-23 13:04:49 -0600 |
commit | 89dcccc5931cc8afc2ccc7cd378695165768148b (patch) | |
tree | f1afa6e8095cc92c4cf19166135b85aa8989958f /hw/vfio/pci.h | |
parent | ff635e3775447b7e797f1bad8cf33403199faba1 (diff) |
vfio/pci: Add emulated PCI IDs
Specifying an emulated PCI vendor/device ID can be useful for testing
various quirk paths, even though the behavior and functionality of
the device with bogus IDs is fully unsupportable. We need to use a
uint32_t for the vendor/device IDs, even though the registers
themselves are only 16-bit in order to be able to determine whether
the value is valid and user set.
The same support is added for subsystem vendor/device ID, though these
have the possibility of being useful and supported for more than a
testing tool. An emulated platform might want to impose their own
subsystem IDs or at least hide the physical subsystem ID. Windows
guests will often reinstall drivers due to a change in subsystem IDs,
something that VM users may want to avoid. Of course careful
attention would be required to ensure that guest drivers do not rely
on the subsystem ID as a basis for device driver quirks.
All of these options are added using the standard experimental option
prefix and should not be considered stable.
Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
Diffstat (limited to 'hw/vfio/pci.h')
-rw-r--r-- | hw/vfio/pci.h | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/hw/vfio/pci.h b/hw/vfio/pci.h index 797e083ca3..f004d52b69 100644 --- a/hw/vfio/pci.h +++ b/hw/vfio/pci.h @@ -20,6 +20,8 @@ #include "qemu/queue.h" #include "qemu/timer.h" +#define PCI_ANY_ID (~0) + struct VFIOPCIDevice; typedef struct VFIOQuirk { @@ -116,8 +118,10 @@ typedef struct VFIOPCIDevice { EventNotifier err_notifier; EventNotifier req_notifier; int (*resetfn)(struct VFIOPCIDevice *); - uint16_t vendor_id; - uint16_t device_id; + uint32_t vendor_id; + uint32_t device_id; + uint32_t sub_vendor_id; + uint32_t sub_device_id; uint32_t features; #define VFIO_FEATURE_ENABLE_VGA_BIT 0 #define VFIO_FEATURE_ENABLE_VGA (1 << VFIO_FEATURE_ENABLE_VGA_BIT) |