Commit 6a3b2f17 authored by Zhu Lingshan's avatar Zhu Lingshan Committed by Michael S. Tsirkin

vDPA/ifcvf: manage ifcvf_hw in the mgmt_dev

This commit allocates the hw structure in the
management device structure. So the hardware
can be initialized once the management device
is allocated in probe.
Signed-off-by: default avatarZhu Lingshan <lingshan.zhu@intel.com>
Cc: stable@vger.kernel.org
Message-Id: <20221125145724.1129962-10-lingshan.zhu@intel.com>
Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
parent 7cfd36b7
...@@ -39,7 +39,7 @@ ...@@ -39,7 +39,7 @@
#define IFCVF_INFO(pdev, fmt, ...) dev_info(&pdev->dev, fmt, ##__VA_ARGS__) #define IFCVF_INFO(pdev, fmt, ...) dev_info(&pdev->dev, fmt, ##__VA_ARGS__)
#define ifcvf_private_to_vf(adapter) \ #define ifcvf_private_to_vf(adapter) \
(&((struct ifcvf_adapter *)adapter)->vf) (((struct ifcvf_adapter *)adapter)->vf)
/* all vqs and config interrupt has its own vector */ /* all vqs and config interrupt has its own vector */
#define MSIX_VECTOR_PER_VQ_AND_CONFIG 1 #define MSIX_VECTOR_PER_VQ_AND_CONFIG 1
...@@ -95,7 +95,7 @@ struct ifcvf_hw { ...@@ -95,7 +95,7 @@ struct ifcvf_hw {
struct ifcvf_adapter { struct ifcvf_adapter {
struct vdpa_device vdpa; struct vdpa_device vdpa;
struct pci_dev *pdev; struct pci_dev *pdev;
struct ifcvf_hw vf; struct ifcvf_hw *vf;
}; };
struct ifcvf_vring_lm_cfg { struct ifcvf_vring_lm_cfg {
...@@ -110,6 +110,7 @@ struct ifcvf_lm_cfg { ...@@ -110,6 +110,7 @@ struct ifcvf_lm_cfg {
struct ifcvf_vdpa_mgmt_dev { struct ifcvf_vdpa_mgmt_dev {
struct vdpa_mgmt_dev mdev; struct vdpa_mgmt_dev mdev;
struct ifcvf_hw vf;
struct ifcvf_adapter *adapter; struct ifcvf_adapter *adapter;
struct pci_dev *pdev; struct pci_dev *pdev;
}; };
......
...@@ -402,7 +402,7 @@ static struct ifcvf_hw *vdpa_to_vf(struct vdpa_device *vdpa_dev) ...@@ -402,7 +402,7 @@ static struct ifcvf_hw *vdpa_to_vf(struct vdpa_device *vdpa_dev)
{ {
struct ifcvf_adapter *adapter = vdpa_to_adapter(vdpa_dev); struct ifcvf_adapter *adapter = vdpa_to_adapter(vdpa_dev);
return &adapter->vf; return adapter->vf;
} }
static u64 ifcvf_vdpa_get_device_features(struct vdpa_device *vdpa_dev) static u64 ifcvf_vdpa_get_device_features(struct vdpa_device *vdpa_dev)
...@@ -750,7 +750,7 @@ static int ifcvf_vdpa_dev_add(struct vdpa_mgmt_dev *mdev, const char *name, ...@@ -750,7 +750,7 @@ static int ifcvf_vdpa_dev_add(struct vdpa_mgmt_dev *mdev, const char *name,
return -EOPNOTSUPP; return -EOPNOTSUPP;
adapter = ifcvf_mgmt_dev->adapter; adapter = ifcvf_mgmt_dev->adapter;
vf = &adapter->vf; vf = adapter->vf;
pdev = adapter->pdev; pdev = adapter->pdev;
vdpa_dev = &adapter->vdpa; vdpa_dev = &adapter->vdpa;
...@@ -838,10 +838,11 @@ static int ifcvf_probe(struct pci_dev *pdev, const struct pci_device_id *id) ...@@ -838,10 +838,11 @@ static int ifcvf_probe(struct pci_dev *pdev, const struct pci_device_id *id)
adapter->vdpa.mdev = &ifcvf_mgmt_dev->mdev; adapter->vdpa.mdev = &ifcvf_mgmt_dev->mdev;
ifcvf_mgmt_dev->adapter = adapter; ifcvf_mgmt_dev->adapter = adapter;
vf = &adapter->vf; vf = &ifcvf_mgmt_dev->vf;
vf->dev_type = get_dev_type(pdev); vf->dev_type = get_dev_type(pdev);
vf->base = pcim_iomap_table(pdev); vf->base = pcim_iomap_table(pdev);
vf->pdev = pdev; vf->pdev = pdev;
adapter->vf = vf;
ret = ifcvf_init_hw(vf, pdev); ret = ifcvf_init_hw(vf, pdev);
if (ret) { if (ret) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment