[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 30/63] hw/pci: Fix SR-IOV VF number calculation
From: |
Michael S. Tsirkin |
Subject: |
[PULL 30/63] hw/pci: Fix SR-IOV VF number calculation |
Date: |
Sun, 21 Jul 2024 20:17:52 -0400 |
From: Akihiko Odaki <akihiko.odaki@daynix.com>
pci_config_get_bar_addr() had a division by vf_stride. vf_stride needs
to be non-zero when there are multiple VFs, but the specification does
not prohibit to make it zero when there is only one VF.
Do not perform the division for the first VF to avoid division by zero.
Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
Message-Id: <20240715-sriov-v5-2-3f5539093ffc@daynix.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
hw/pci/pci.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/hw/pci/pci.c b/hw/pci/pci.c
index bd956637bc..dbd954f1fe 100644
--- a/hw/pci/pci.c
+++ b/hw/pci/pci.c
@@ -1437,7 +1437,11 @@ static pcibus_t pci_config_get_bar_addr(PCIDevice *d,
int reg,
pci_get_word(pf->config + sriov_cap + PCI_SRIOV_VF_OFFSET);
uint16_t vf_stride =
pci_get_word(pf->config + sriov_cap + PCI_SRIOV_VF_STRIDE);
- uint32_t vf_num = (d->devfn - (pf->devfn + vf_offset)) / vf_stride;
+ uint32_t vf_num = d->devfn - (pf->devfn + vf_offset);
+
+ if (vf_num) {
+ vf_num /= vf_stride;
+ }
if (type & PCI_BASE_ADDRESS_MEM_TYPE_64) {
new_addr = pci_get_quad(pf->config + bar);
--
MST
- [PULL 21/63] intel_iommu: make type match, (continued)
- [PULL 21/63] intel_iommu: make type match, Michael S. Tsirkin, 2024/07/21
- [PULL 22/63] virtio: Add bool to VirtQueueElement, Michael S. Tsirkin, 2024/07/21
- [PULL 25/63] virtio: virtqueue_ordered_flush - VIRTIO_F_IN_ORDER support, Michael S. Tsirkin, 2024/07/21
- [PULL 24/63] virtio: virtqueue_ordered_fill - VIRTIO_F_IN_ORDER support, Michael S. Tsirkin, 2024/07/21
- [PULL 23/63] virtio: virtqueue_pop - VIRTIO_F_IN_ORDER support, Michael S. Tsirkin, 2024/07/21
- [PULL 27/63] virtio: Add VIRTIO_F_IN_ORDER property definition, Michael S. Tsirkin, 2024/07/21
- [PULL 29/63] hw/pci: Do not add ROM BAR for SR-IOV VF, Michael S. Tsirkin, 2024/07/21
- [PULL 28/63] contrib/vhost-user-blk: fix overflowing expression, Michael S. Tsirkin, 2024/07/21
- [PULL 26/63] vhost,vhost-user: Add VIRTIO_F_IN_ORDER to vhost feature bits, Michael S. Tsirkin, 2024/07/21
- [PULL 31/63] pcie_sriov: Ensure PF and VF are mutually exclusive, Michael S. Tsirkin, 2024/07/21
- [PULL 30/63] hw/pci: Fix SR-IOV VF number calculation,
Michael S. Tsirkin <=
- [PULL 32/63] pcie_sriov: Check PCI Express for SR-IOV PF, Michael S. Tsirkin, 2024/07/21
- [PULL 34/63] virtio-pci: Implement SR-IOV PF, Michael S. Tsirkin, 2024/07/21
- [PULL 33/63] pcie_sriov: Allow user to create SR-IOV device, Michael S. Tsirkin, 2024/07/21
- [PULL 35/63] virtio-net: Implement SR-IOV VF, Michael S. Tsirkin, 2024/07/21
- [PULL 36/63] docs: Document composable SR-IOV device, Michael S. Tsirkin, 2024/07/21
- [PULL 37/63] smbios: make memory device size configurable per Machine, Michael S. Tsirkin, 2024/07/21
- [PULL 38/63] accel/kvm: Extract common KVM vCPU {creation,parking} code, Michael S. Tsirkin, 2024/07/21
- [PULL 39/63] hw/acpi: Move CPU ctrl-dev MMIO region len macro to common header file, Michael S. Tsirkin, 2024/07/21
- [PULL 40/63] hw/acpi: Update ACPI GED framework to support vCPU Hotplug, Michael S. Tsirkin, 2024/07/21
- [PULL 50/63] virtio-iommu: Add trace point on virtio_iommu_detach_endpoint_from_domain, Michael S. Tsirkin, 2024/07/21