Commit 77128322 authored by Zhu Lingshan's avatar Zhu Lingshan Committed by Michael S. Tsirkin
Browse files

vDPA/ifcvf: dynamic allocate vq data stores



This commit dynamically allocates the data
stores for the virtqueues based on
virtio_pci_common_cfg.num_queues.

Signed-off-by: default avatarZhu Lingshan <lingshan.zhu@intel.com>
Message-Id: <20230612151420.1019504-2-lingshan.zhu@intel.com>
Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
parent bc9a2b3e
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -134,6 +134,9 @@ int ifcvf_init_hw(struct ifcvf_hw *hw, struct pci_dev *pdev)
	}

	hw->nr_vring = vp_ioread16(&hw->common_cfg->num_queues);
	hw->vring = kzalloc(sizeof(struct vring_info) * hw->nr_vring, GFP_KERNEL);
	if (!hw->vring)
		return -ENOMEM;

	for (i = 0; i < hw->nr_vring; i++) {
		vp_iowrite16(i, &hw->common_cfg->queue_select);
+1 −1
Original line number Diff line number Diff line
@@ -74,7 +74,7 @@ struct ifcvf_hw {
	u64 dev_features;
	struct virtio_pci_common_cfg __iomem *common_cfg;
	void __iomem *dev_cfg;
	struct vring_info vring[IFCVF_MAX_QUEUES];
	struct vring_info *vring;
	void __iomem * const *base;
	char config_msix_name[256];
	struct vdpa_callback config_cb;
+2 −0
Original line number Diff line number Diff line
@@ -830,6 +830,7 @@ static int ifcvf_probe(struct pci_dev *pdev, const struct pci_device_id *id)
	return 0;

err:
	kfree(ifcvf_mgmt_dev->vf.vring);
	kfree(ifcvf_mgmt_dev);
	return ret;
}
@@ -840,6 +841,7 @@ static void ifcvf_remove(struct pci_dev *pdev)

	ifcvf_mgmt_dev = pci_get_drvdata(pdev);
	vdpa_mgmtdev_unregister(&ifcvf_mgmt_dev->mdev);
	kfree(ifcvf_mgmt_dev->vf.vring);
	kfree(ifcvf_mgmt_dev);
}