Re: [PATCH] PCI: limit pci_get_bus_and_slot to domain 0

2007-06-28 Thread H. Peter Anvin

Randy Dunlap wrote:


Is this what you mean?


Yup.

Acked-by: H. Peter Anvin <[EMAIL PROTECTED]>
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH] PCI: limit pci_get_bus_and_slot to domain 0

2007-06-28 Thread Randy Dunlap
On Wed, 27 Jun 2007 14:34:03 -0400 H. Peter Anvin wrote:

> Alan Cox wrote:
> > On Wed, 27 Jun 2007 10:54:30 -0600
> > Matthew Wilcox <[EMAIL PROTECTED]> wrote:
> > 
> >> On Wed, Jun 27, 2007 at 12:41:41PM -0400, H. Peter Anvin wrote:
> >>> Note that EDD has no way of referencing anything but the zero domain 
> >>> (which is presumably the one which is addressed by I/O ports CF8/CFC on 
> >>> the BSP.)  So in this particular case I would say pci_get_bus_and_slot() 
> >>> is fine.
> >> Except that you're not guaranteed to get the bus that's in domain zero.
> > 
> > Which is trivial to fix
> 
> Yes, and that's probably the only sane definition of that API.

Is this what you mean?
---

From: Randy Dunlap <[EMAIL PROTECTED]>

Limit pci_get_bus_and_slot() to domain (segment) 0 since domain is not
specified in the function call and defaulting to domain 0 is the only
reasonable thing to do (rather than returning a device from some other
unknown domain).

Signed-off-by: Randy Dunlap <[EMAIL PROTECTED]>
---
 drivers/pci/search.c |7 +--
 1 file changed, 5 insertions(+), 2 deletions(-)

--- linux-2622-rc6mm1.orig/drivers/pci/search.c
+++ linux-2622-rc6mm1/drivers/pci/search.c
@@ -173,12 +173,14 @@ struct pci_dev * pci_get_slot(struct pci
 }
 
 /**
- * pci_get_bus_and_slot - locate PCI device from a given PCI slot
+ * pci_get_bus_and_slot - locate PCI device from a given PCI bus & slot
  * @bus: number of PCI bus on which desired PCI device resides
  * @devfn: encodes number of PCI slot in which the desired PCI
  * device resides and the logical device number within that slot
  * in case of multi-function devices.
  *
+ * Note: the bus/slot search is limited to PCI domain (segment) 0.
+ *
  * Given a PCI bus and slot/function number, the desired PCI device
  * is located in system global list of PCI devices.  If the device
  * is found, a pointer to its data structure is returned.  If no
@@ -191,7 +193,8 @@ struct pci_dev * pci_get_bus_and_slot(un
struct pci_dev *dev = NULL;
 
while ((dev = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, dev)) != NULL) {
-   if (dev->bus->number == bus && dev->devfn == devfn)
+   if (pci_domain_nr(dev->bus) == 0 &&
+  (dev->bus->number == bus && dev->devfn == devfn))
return dev;
}
return NULL;
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH] PCI: limit pci_get_bus_and_slot to domain 0

2007-06-28 Thread Randy Dunlap
On Wed, 27 Jun 2007 14:34:03 -0400 H. Peter Anvin wrote:

 Alan Cox wrote:
  On Wed, 27 Jun 2007 10:54:30 -0600
  Matthew Wilcox [EMAIL PROTECTED] wrote:
  
  On Wed, Jun 27, 2007 at 12:41:41PM -0400, H. Peter Anvin wrote:
  Note that EDD has no way of referencing anything but the zero domain 
  (which is presumably the one which is addressed by I/O ports CF8/CFC on 
  the BSP.)  So in this particular case I would say pci_get_bus_and_slot() 
  is fine.
  Except that you're not guaranteed to get the bus that's in domain zero.
  
  Which is trivial to fix
 
 Yes, and that's probably the only sane definition of that API.

Is this what you mean?
---

From: Randy Dunlap [EMAIL PROTECTED]

Limit pci_get_bus_and_slot() to domain (segment) 0 since domain is not
specified in the function call and defaulting to domain 0 is the only
reasonable thing to do (rather than returning a device from some other
unknown domain).

Signed-off-by: Randy Dunlap [EMAIL PROTECTED]
---
 drivers/pci/search.c |7 +--
 1 file changed, 5 insertions(+), 2 deletions(-)

--- linux-2622-rc6mm1.orig/drivers/pci/search.c
+++ linux-2622-rc6mm1/drivers/pci/search.c
@@ -173,12 +173,14 @@ struct pci_dev * pci_get_slot(struct pci
 }
 
 /**
- * pci_get_bus_and_slot - locate PCI device from a given PCI slot
+ * pci_get_bus_and_slot - locate PCI device from a given PCI bus  slot
  * @bus: number of PCI bus on which desired PCI device resides
  * @devfn: encodes number of PCI slot in which the desired PCI
  * device resides and the logical device number within that slot
  * in case of multi-function devices.
  *
+ * Note: the bus/slot search is limited to PCI domain (segment) 0.
+ *
  * Given a PCI bus and slot/function number, the desired PCI device
  * is located in system global list of PCI devices.  If the device
  * is found, a pointer to its data structure is returned.  If no
@@ -191,7 +193,8 @@ struct pci_dev * pci_get_bus_and_slot(un
struct pci_dev *dev = NULL;
 
while ((dev = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, dev)) != NULL) {
-   if (dev-bus-number == bus  dev-devfn == devfn)
+   if (pci_domain_nr(dev-bus) == 0 
+  (dev-bus-number == bus  dev-devfn == devfn))
return dev;
}
return NULL;
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] PCI: limit pci_get_bus_and_slot to domain 0

2007-06-28 Thread H. Peter Anvin

Randy Dunlap wrote:


Is this what you mean?


Yup.

Acked-by: H. Peter Anvin [EMAIL PROTECTED]
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/