Re: [PATCH v3 1/3] xen/pciback: simplify pcistub device handling

2016-09-22 Thread Boris Ostrovsky
On 09/22/2016 04:45 AM, Juergen Gross wrote:
> The Xen pciback driver maintains a list of all its seized devices.
> There are two functions searching the list for a specific device with
> basically the same semantics just returning different structures in
> case of a match.
>
> Split out the search function.
>
> Signed-off-by: Juergen Gross 

Reviewed-by: Boris Ostrovsky 




Re: [PATCH v3 1/3] xen/pciback: simplify pcistub device handling

2016-09-22 Thread Boris Ostrovsky
On 09/22/2016 04:45 AM, Juergen Gross wrote:
> The Xen pciback driver maintains a list of all its seized devices.
> There are two functions searching the list for a specific device with
> basically the same semantics just returning different structures in
> case of a match.
>
> Split out the search function.
>
> Signed-off-by: Juergen Gross 

Reviewed-by: Boris Ostrovsky 




[PATCH v3 1/3] xen/pciback: simplify pcistub device handling

2016-09-22 Thread Juergen Gross
The Xen pciback driver maintains a list of all its seized devices.
There are two functions searching the list for a specific device with
basically the same semantics just returning different structures in
case of a match.

Split out the search function.

Signed-off-by: Juergen Gross 
---
 drivers/xen/xen-pciback/pci_stub.c | 50 +++---
 1 file changed, 25 insertions(+), 25 deletions(-)

diff --git a/drivers/xen/xen-pciback/pci_stub.c 
b/drivers/xen/xen-pciback/pci_stub.c
index 258b7c3..79a9e4d 100644
--- a/drivers/xen/xen-pciback/pci_stub.c
+++ b/drivers/xen/xen-pciback/pci_stub.c
@@ -149,29 +149,36 @@ static inline void pcistub_device_put(struct 
pcistub_device *psdev)
kref_put(>kref, pcistub_device_release);
 }
 
+static struct pcistub_device *pcistub_device_find_locked(int domain, int bus,
+int slot, int func)
+{
+   struct pcistub_device *psdev;
+
+   list_for_each_entry(psdev, _devices, dev_list) {
+   if (psdev->dev != NULL
+   && domain == pci_domain_nr(psdev->dev->bus)
+   && bus == psdev->dev->bus->number
+   && slot == PCI_SLOT(psdev->dev->devfn)
+   && func == PCI_FUNC(psdev->dev->devfn)) {
+   return psdev;
+   }
+   }
+
+   return NULL;
+}
+
 static struct pcistub_device *pcistub_device_find(int domain, int bus,
  int slot, int func)
 {
-   struct pcistub_device *psdev = NULL;
+   struct pcistub_device *psdev;
unsigned long flags;
 
spin_lock_irqsave(_devices_lock, flags);
 
-   list_for_each_entry(psdev, _devices, dev_list) {
-   if (psdev->dev != NULL
-   && domain == pci_domain_nr(psdev->dev->bus)
-   && bus == psdev->dev->bus->number
-   && slot == PCI_SLOT(psdev->dev->devfn)
-   && func == PCI_FUNC(psdev->dev->devfn)) {
-   pcistub_device_get(psdev);
-   goto out;
-   }
-   }
+   psdev = pcistub_device_find_locked(domain, bus, slot, func);
+   if (psdev)
+   pcistub_device_get(psdev);
 
-   /* didn't find it */
-   psdev = NULL;
-
-out:
spin_unlock_irqrestore(_devices_lock, flags);
return psdev;
 }
@@ -207,16 +214,9 @@ struct pci_dev *pcistub_get_pci_dev_by_slot(struct 
xen_pcibk_device *pdev,
 
spin_lock_irqsave(_devices_lock, flags);
 
-   list_for_each_entry(psdev, _devices, dev_list) {
-   if (psdev->dev != NULL
-   && domain == pci_domain_nr(psdev->dev->bus)
-   && bus == psdev->dev->bus->number
-   && slot == PCI_SLOT(psdev->dev->devfn)
-   && func == PCI_FUNC(psdev->dev->devfn)) {
-   found_dev = pcistub_device_get_pci_dev(pdev, psdev);
-   break;
-   }
-   }
+   psdev = pcistub_device_find_locked(domain, bus, slot, func);
+   if (psdev)
+   found_dev = pcistub_device_get_pci_dev(pdev, psdev);
 
spin_unlock_irqrestore(_devices_lock, flags);
return found_dev;
-- 
2.6.6



[PATCH v3 1/3] xen/pciback: simplify pcistub device handling

2016-09-22 Thread Juergen Gross
The Xen pciback driver maintains a list of all its seized devices.
There are two functions searching the list for a specific device with
basically the same semantics just returning different structures in
case of a match.

Split out the search function.

Signed-off-by: Juergen Gross 
---
 drivers/xen/xen-pciback/pci_stub.c | 50 +++---
 1 file changed, 25 insertions(+), 25 deletions(-)

diff --git a/drivers/xen/xen-pciback/pci_stub.c 
b/drivers/xen/xen-pciback/pci_stub.c
index 258b7c3..79a9e4d 100644
--- a/drivers/xen/xen-pciback/pci_stub.c
+++ b/drivers/xen/xen-pciback/pci_stub.c
@@ -149,29 +149,36 @@ static inline void pcistub_device_put(struct 
pcistub_device *psdev)
kref_put(>kref, pcistub_device_release);
 }
 
+static struct pcistub_device *pcistub_device_find_locked(int domain, int bus,
+int slot, int func)
+{
+   struct pcistub_device *psdev;
+
+   list_for_each_entry(psdev, _devices, dev_list) {
+   if (psdev->dev != NULL
+   && domain == pci_domain_nr(psdev->dev->bus)
+   && bus == psdev->dev->bus->number
+   && slot == PCI_SLOT(psdev->dev->devfn)
+   && func == PCI_FUNC(psdev->dev->devfn)) {
+   return psdev;
+   }
+   }
+
+   return NULL;
+}
+
 static struct pcistub_device *pcistub_device_find(int domain, int bus,
  int slot, int func)
 {
-   struct pcistub_device *psdev = NULL;
+   struct pcistub_device *psdev;
unsigned long flags;
 
spin_lock_irqsave(_devices_lock, flags);
 
-   list_for_each_entry(psdev, _devices, dev_list) {
-   if (psdev->dev != NULL
-   && domain == pci_domain_nr(psdev->dev->bus)
-   && bus == psdev->dev->bus->number
-   && slot == PCI_SLOT(psdev->dev->devfn)
-   && func == PCI_FUNC(psdev->dev->devfn)) {
-   pcistub_device_get(psdev);
-   goto out;
-   }
-   }
+   psdev = pcistub_device_find_locked(domain, bus, slot, func);
+   if (psdev)
+   pcistub_device_get(psdev);
 
-   /* didn't find it */
-   psdev = NULL;
-
-out:
spin_unlock_irqrestore(_devices_lock, flags);
return psdev;
 }
@@ -207,16 +214,9 @@ struct pci_dev *pcistub_get_pci_dev_by_slot(struct 
xen_pcibk_device *pdev,
 
spin_lock_irqsave(_devices_lock, flags);
 
-   list_for_each_entry(psdev, _devices, dev_list) {
-   if (psdev->dev != NULL
-   && domain == pci_domain_nr(psdev->dev->bus)
-   && bus == psdev->dev->bus->number
-   && slot == PCI_SLOT(psdev->dev->devfn)
-   && func == PCI_FUNC(psdev->dev->devfn)) {
-   found_dev = pcistub_device_get_pci_dev(pdev, psdev);
-   break;
-   }
-   }
+   psdev = pcistub_device_find_locked(domain, bus, slot, func);
+   if (psdev)
+   found_dev = pcistub_device_get_pci_dev(pdev, psdev);
 
spin_unlock_irqrestore(_devices_lock, flags);
return found_dev;
-- 
2.6.6