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;