/* we use the subsystem vendor/device id as the virtio vendor/device
* id. this allows us to use the same PCI vendor/device id for all
* virtio devices and to identify the particular virtio driver by
* the subsytem ids */
vp_dev->vdev.id.vendor = pci_dev->subsystem_vendor;
vp_dev->vdev.id.device = pci_dev->subsystem_device;
it looks like only the device ID is used right now:
# grep virtio modules.alias
alias virtio:d00000001v* virtio_net
alias virtio:d00000002v* virtio_blk
alias virtio:d00000003v* virtio_console
alias virtio:d00000004v* virtio-rng
alias virtio:d00000005v* virtio_balloon
alias pci:v00001AF4d*sv*sd*bc*sc*i* virtio_pci
alias virtio:d00000009v* 9pnet_virtio
so setting the subsystem vendor id to something != zero shouldn't cause
trouble.
Signed-off-by: Mark McLoughlin <address@hidden>
---
hw/virtio-balloon.c | 3 ++-
hw/virtio-blk.c | 3 ++-
hw/virtio-console.c | 3 ++-
hw/virtio-net.c | 3 ++-
4 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/hw/virtio-balloon.c b/hw/virtio-balloon.c
index 0765516..696a108 100644
--- a/hw/virtio-balloon.c
+++ b/hw/virtio-balloon.c
@@ -174,7 +174,8 @@ void *virtio_balloon_init(PCIBus *bus)
s = (VirtIOBalloon *)virtio_init_pci(bus, "virtio-balloon",
PCI_VENDOR_ID_REDHAT_QUMRANET,
PCI_DEVICE_ID_VIRTIO_BALLOON,
- 0, VIRTIO_ID_BALLOON,
+ PCI_VENDOR_ID_REDHAT_QUMRANET,
+ VIRTIO_ID_BALLOON,
0x05, 0x00, 0x00,
8, sizeof(VirtIOBalloon));
if (s == NULL)
diff --git a/hw/virtio-blk.c b/hw/virtio-blk.c
index e654cc5..847e221 100644
--- a/hw/virtio-blk.c
+++ b/hw/virtio-blk.c
@@ -227,7 +227,8 @@ void *virtio_blk_init(PCIBus *bus, BlockDriverState *bs)
s = (VirtIOBlock *)virtio_init_pci(bus, "virtio-blk",
PCI_VENDOR_ID_REDHAT_QUMRANET,
PCI_DEVICE_ID_VIRTIO_BLOCK,
- 0, VIRTIO_ID_BLOCK,
+ PCI_VENDOR_ID_REDHAT_QUMRANET,
+ VIRTIO_ID_BLOCK,
0x01, 0x80, 0x00,
sizeof(struct virtio_blk_config),
sizeof(VirtIOBlock));
if (!s)
diff --git a/hw/virtio-console.c b/hw/virtio-console.c
index ce20c91..333ffb1 100644
--- a/hw/virtio-console.c
+++ b/hw/virtio-console.c
@@ -128,7 +128,8 @@ void *virtio_console_init(PCIBus *bus, CharDriverState *chr)
s = (VirtIOConsole *)virtio_init_pci(bus, "virtio-console",
PCI_VENDOR_ID_REDHAT_QUMRANET,
PCI_DEVICE_ID_VIRTIO_CONSOLE,
- 0, VIRTIO_ID_CONSOLE,
+ PCI_VENDOR_ID_REDHAT_QUMRANET,
+ VIRTIO_ID_CONSOLE,
0x03, 0x80, 0x00,
0, sizeof(VirtIOConsole));
if (s == NULL)
diff --git a/hw/virtio-net.c b/hw/virtio-net.c
index b13914a..28f9280 100644
--- a/hw/virtio-net.c
+++ b/hw/virtio-net.c
@@ -323,7 +323,8 @@ void virtio_net_init(PCIBus *bus, NICInfo *nd, int devfn)
n = (VirtIONet *)virtio_init_pci(bus, "virtio-net",
PCI_VENDOR_ID_REDHAT_QUMRANET,
PCI_DEVICE_ID_VIRTIO_NET,
- 0, VIRTIO_ID_NET,
+ PCI_VENDOR_ID_REDHAT_QUMRANET,
+ VIRTIO_ID_NET,
0x02, 0x00, 0x00,
sizeof(struct virtio_net_config),
sizeof(VirtIONet));