Message ID | 20221004112100.301935-6-kraxel@redhat.com |
---|---|
State | New |
Headers | show |
Series | pci-ids: virtio cleanup | expand |
Hi Gerd, On 10/4/22 13:21, Gerd Hoffmann wrote: > While being at it add a #define for the magic 0x1040 number. > > Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Reviewed-by: Eric Auger <eric.auger@redhat.com> Thanks Eric > --- > include/hw/pci/pci.h | 10 ++++++++++ > hw/virtio/virtio-pci.c | 2 +- > 2 files changed, 11 insertions(+), 1 deletion(-) > > diff --git a/include/hw/pci/pci.h b/include/hw/pci/pci.h > index 42c83cb5ed00..d1ac308574f1 100644 > --- a/include/hw/pci/pci.h > +++ b/include/hw/pci/pci.h > @@ -76,6 +76,7 @@ extern bool pci_available; > #define PCI_SUBVENDOR_ID_REDHAT_QUMRANET 0x1af4 > #define PCI_SUBDEVICE_ID_QEMU 0x1100 > > +/* legacy virtio-pci devices */ > #define PCI_DEVICE_ID_VIRTIO_NET 0x1000 > #define PCI_DEVICE_ID_VIRTIO_BLOCK 0x1001 > #define PCI_DEVICE_ID_VIRTIO_BALLOON 0x1002 > @@ -85,6 +86,15 @@ extern bool pci_available; > #define PCI_DEVICE_ID_VIRTIO_9P 0x1009 > #define PCI_DEVICE_ID_VIRTIO_VSOCK 0x1012 > > +/* > + * modern virtio-pci devices get their id assigned automatically, > + * there is no need to add #defines here. It gets calculated as > + * > + * PCI_DEVICE_ID = PCI_DEVICE_ID_VIRTIO_10_BASE + > + * virtio_bus_get_vdev_id(bus) > + */ > +#define PCI_DEVICE_ID_VIRTIO_10_BASE 0x1040 > + > #define PCI_VENDOR_ID_REDHAT 0x1b36 > #define PCI_DEVICE_ID_REDHAT_BRIDGE 0x0001 > #define PCI_DEVICE_ID_REDHAT_SERIAL 0x0002 > diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c > index a50c5a57d7e5..e7d80242b73f 100644 > --- a/hw/virtio/virtio-pci.c > +++ b/hw/virtio/virtio-pci.c > @@ -1688,7 +1688,7 @@ static void virtio_pci_device_plugged(DeviceState *d, Error **errp) > pci_set_word(config + PCI_VENDOR_ID, > PCI_VENDOR_ID_REDHAT_QUMRANET); > pci_set_word(config + PCI_DEVICE_ID, > - 0x1040 + virtio_bus_get_vdev_id(bus)); > + PCI_DEVICE_ID_VIRTIO_10_BASE + virtio_bus_get_vdev_id(bus)); > pci_config_set_revision(config, 1); > } > config[PCI_INTERRUPT_PIN] = 1;
diff --git a/include/hw/pci/pci.h b/include/hw/pci/pci.h index 42c83cb5ed00..d1ac308574f1 100644 --- a/include/hw/pci/pci.h +++ b/include/hw/pci/pci.h @@ -76,6 +76,7 @@ extern bool pci_available; #define PCI_SUBVENDOR_ID_REDHAT_QUMRANET 0x1af4 #define PCI_SUBDEVICE_ID_QEMU 0x1100 +/* legacy virtio-pci devices */ #define PCI_DEVICE_ID_VIRTIO_NET 0x1000 #define PCI_DEVICE_ID_VIRTIO_BLOCK 0x1001 #define PCI_DEVICE_ID_VIRTIO_BALLOON 0x1002 @@ -85,6 +86,15 @@ extern bool pci_available; #define PCI_DEVICE_ID_VIRTIO_9P 0x1009 #define PCI_DEVICE_ID_VIRTIO_VSOCK 0x1012 +/* + * modern virtio-pci devices get their id assigned automatically, + * there is no need to add #defines here. It gets calculated as + * + * PCI_DEVICE_ID = PCI_DEVICE_ID_VIRTIO_10_BASE + + * virtio_bus_get_vdev_id(bus) + */ +#define PCI_DEVICE_ID_VIRTIO_10_BASE 0x1040 + #define PCI_VENDOR_ID_REDHAT 0x1b36 #define PCI_DEVICE_ID_REDHAT_BRIDGE 0x0001 #define PCI_DEVICE_ID_REDHAT_SERIAL 0x0002 diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c index a50c5a57d7e5..e7d80242b73f 100644 --- a/hw/virtio/virtio-pci.c +++ b/hw/virtio/virtio-pci.c @@ -1688,7 +1688,7 @@ static void virtio_pci_device_plugged(DeviceState *d, Error **errp) pci_set_word(config + PCI_VENDOR_ID, PCI_VENDOR_ID_REDHAT_QUMRANET); pci_set_word(config + PCI_DEVICE_ID, - 0x1040 + virtio_bus_get_vdev_id(bus)); + PCI_DEVICE_ID_VIRTIO_10_BASE + virtio_bus_get_vdev_id(bus)); pci_config_set_revision(config, 1); } config[PCI_INTERRUPT_PIN] = 1;
While being at it add a #define for the magic 0x1040 number. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> --- include/hw/pci/pci.h | 10 ++++++++++ hw/virtio/virtio-pci.c | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-)