vDPA/ifcvf: manage ifcvf_hw in the mgmt_dev
commit 6a3b2f179b
upstream.
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: Zhu Lingshan <lingshan.zhu@intel.com>
Cc: stable@vger.kernel.org
Message-Id: <20221125145724.1129962-10-lingshan.zhu@intel.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
6ddb3b8058
commit
dd5d2d8821
|
@ -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 {
|
||||||
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 {
|
||||||
|
|
||||||
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)
|
||||||
{
|
{
|
||||||
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,
|
||||||
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)
|
||||||
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) {
|
||||||
|
|
Loading…
Reference in New Issue