]> git.baikalelectronics.ru Git - kernel.git/commitdiff
vDPA/ifcvf: decouple config/dev IRQ requester and vectors allocator from the adapter
authorZhu Lingshan <lingshan.zhu@intel.com>
Fri, 25 Nov 2022 14:57:19 +0000 (22:57 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 11 Mar 2023 12:55:42 +0000 (13:55 +0100)
commit 842b2f141fd9f1fec226a0b5b2bc888277364141 upstream.

This commit decouples the config irq requester, the device
shared irq requester and the MSI vectors allocator from
the adapter. So they can be safely invoked since probe
before the adapter is allocated.

Signed-off-by: Zhu Lingshan <lingshan.zhu@intel.com>
Cc: stable@vger.kernel.org
Message-Id: <20221125145724.1129962-8-lingshan.zhu@intel.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/vdpa/ifcvf/ifcvf_main.c

index 8573804e344088c4400dc5873af85e038776d634..6fcc412b46de419bfd52c8677139fc0e5fc34e08 100644 (file)
@@ -132,10 +132,9 @@ static void ifcvf_free_irq(struct ifcvf_hw *vf)
  * It returns the number of allocated vectors, negative
  * return value when fails.
  */
-static int ifcvf_alloc_vectors(struct ifcvf_adapter *adapter)
+static int ifcvf_alloc_vectors(struct ifcvf_hw *vf)
 {
-       struct pci_dev *pdev = adapter->pdev;
-       struct ifcvf_hw *vf = &adapter->vf;
+       struct pci_dev *pdev = vf->pdev;
        int max_intr, ret;
 
        /* all queues and config interrupt  */
@@ -222,10 +221,9 @@ err:
        return -EFAULT;
 }
 
-static int ifcvf_request_dev_irq(struct ifcvf_adapter *adapter)
+static int ifcvf_request_dev_irq(struct ifcvf_hw *vf)
 {
-       struct pci_dev *pdev = adapter->pdev;
-       struct ifcvf_hw *vf = &adapter->vf;
+       struct pci_dev *pdev = vf->pdev;
        int i, vector, ret, irq;
 
        vector = 0;
@@ -276,10 +274,9 @@ static int ifcvf_request_vq_irq(struct ifcvf_hw *vf)
        return ret;
 }
 
-static int ifcvf_request_config_irq(struct ifcvf_adapter *adapter)
+static int ifcvf_request_config_irq(struct ifcvf_hw *vf)
 {
-       struct pci_dev *pdev = adapter->pdev;
-       struct ifcvf_hw *vf = &adapter->vf;
+       struct pci_dev *pdev = vf->pdev;
        int config_vector, ret;
 
        if (vf->msix_vector_status == MSIX_VECTOR_PER_VQ_AND_CONFIG)
@@ -322,7 +319,7 @@ static int ifcvf_request_irq(struct ifcvf_adapter *adapter)
        struct ifcvf_hw *vf = &adapter->vf;
        int nvectors, ret, max_intr;
 
-       nvectors = ifcvf_alloc_vectors(adapter);
+       nvectors = ifcvf_alloc_vectors(vf);
        if (nvectors <= 0)
                return -EFAULT;
 
@@ -333,7 +330,7 @@ static int ifcvf_request_irq(struct ifcvf_adapter *adapter)
 
        if (nvectors == 1) {
                vf->msix_vector_status = MSIX_VECTOR_DEV_SHARED;
-               ret = ifcvf_request_dev_irq(adapter);
+               ret = ifcvf_request_dev_irq(vf);
 
                return ret;
        }
@@ -342,7 +339,7 @@ static int ifcvf_request_irq(struct ifcvf_adapter *adapter)
        if (ret)
                return ret;
 
-       ret = ifcvf_request_config_irq(adapter);
+       ret = ifcvf_request_config_irq(vf);
 
        if (ret)
                return ret;