vDPA/ifcvf: decouple config IRQ releaser from the adapter
commit 23dac55cec
upstream.
This commit decouples config IRQ releaser from the adapter,
so that it could be invoked once probe or in err handlers.
ifcvf_free_irq() works on ifcvf_hw in this commit
Signed-off-by: Zhu Lingshan <lingshan.zhu@intel.com>
Cc: stable@vger.kernel.org
Message-Id: <20221125145724.1129962-6-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
62fb450c4d
commit
c0fca7704f
|
@ -101,10 +101,9 @@ static void ifcvf_free_vq_irq(struct ifcvf_hw *vf)
|
|||
ifcvf_free_vqs_reused_irq(vf);
|
||||
}
|
||||
|
||||
static void ifcvf_free_config_irq(struct ifcvf_adapter *adapter)
|
||||
static void ifcvf_free_config_irq(struct ifcvf_hw *vf)
|
||||
{
|
||||
struct pci_dev *pdev = adapter->pdev;
|
||||
struct ifcvf_hw *vf = &adapter->vf;
|
||||
struct pci_dev *pdev = vf->pdev;
|
||||
|
||||
if (vf->config_irq == -EINVAL)
|
||||
return;
|
||||
|
@ -119,13 +118,12 @@ static void ifcvf_free_config_irq(struct ifcvf_adapter *adapter)
|
|||
}
|
||||
}
|
||||
|
||||
static void ifcvf_free_irq(struct ifcvf_adapter *adapter)
|
||||
static void ifcvf_free_irq(struct ifcvf_hw *vf)
|
||||
{
|
||||
struct pci_dev *pdev = adapter->pdev;
|
||||
struct ifcvf_hw *vf = &adapter->vf;
|
||||
struct pci_dev *pdev = vf->pdev;
|
||||
|
||||
ifcvf_free_vq_irq(vf);
|
||||
ifcvf_free_config_irq(adapter);
|
||||
ifcvf_free_config_irq(vf);
|
||||
ifcvf_free_irq_vectors(pdev);
|
||||
}
|
||||
|
||||
|
@ -187,7 +185,7 @@ static int ifcvf_request_per_vq_irq(struct ifcvf_adapter *adapter)
|
|||
|
||||
return 0;
|
||||
err:
|
||||
ifcvf_free_irq(adapter);
|
||||
ifcvf_free_irq(vf);
|
||||
|
||||
return -EFAULT;
|
||||
}
|
||||
|
@ -221,7 +219,7 @@ static int ifcvf_request_vqs_reused_irq(struct ifcvf_adapter *adapter)
|
|||
|
||||
return 0;
|
||||
err:
|
||||
ifcvf_free_irq(adapter);
|
||||
ifcvf_free_irq(vf);
|
||||
|
||||
return -EFAULT;
|
||||
}
|
||||
|
@ -262,7 +260,7 @@ static int ifcvf_request_dev_irq(struct ifcvf_adapter *adapter)
|
|||
|
||||
return 0;
|
||||
err:
|
||||
ifcvf_free_irq(adapter);
|
||||
ifcvf_free_irq(vf);
|
||||
|
||||
return -EFAULT;
|
||||
|
||||
|
@ -317,7 +315,7 @@ static int ifcvf_request_config_irq(struct ifcvf_adapter *adapter)
|
|||
|
||||
return 0;
|
||||
err:
|
||||
ifcvf_free_irq(adapter);
|
||||
ifcvf_free_irq(vf);
|
||||
|
||||
return -EFAULT;
|
||||
}
|
||||
|
@ -508,7 +506,7 @@ static int ifcvf_vdpa_reset(struct vdpa_device *vdpa_dev)
|
|||
|
||||
if (status_old & VIRTIO_CONFIG_S_DRIVER_OK) {
|
||||
ifcvf_stop_datapath(adapter);
|
||||
ifcvf_free_irq(adapter);
|
||||
ifcvf_free_irq(vf);
|
||||
}
|
||||
|
||||
ifcvf_reset_vring(adapter);
|
||||
|
|
Loading…
Reference in New Issue