Skip to contentSkip to conversation

Shut off pci_find_device warnings when the deprecated pci functions are enabled.

PATCH Applied Andi Kleen 3 participants 5 messages Jul 24, 2009 – Jul 29, 2009

Subsystems (2)
lore
Share & tools
lore

Andi Kleen

author
#0 lore raw

PATCH 1/1 Shut off pci_find_device warnings when the deprecated pci functions are enabled.

Shut off pci_find_device warnings when the deprecated pci functions are enabled.

Shut off the long standing

linux/drivers/pci/search.c:144: warning: 'pci_find_device' is deprecated (declared at linux/drivers/pci/search.c:136) linux/drivers/pci/search.c:144: warning: 'pci_find_device' is deprecated (declared at linux/drivers/pci/search.c:136)

warnings that appear on every build when CONFIG_PCI_LEGACY is enabled.

gcc warns for the use in EXPORT_SYMBOL

I moved these to a separate file and disabled the warning in the Makefile for that file.

---
 drivers/pci/Makefile |    3 +++
 drivers/pci/legacy.c |   34 ++++++++++++++++++++++++++++++++++
 drivers/pci/search.c |   31 -------------------------------
 3 files changed, 37 insertions(+), 31 deletions(-)
drivers/pci/Makefile +3 -0
Index: linux-2.6.31-rc3-ak/drivers/pci/Makefile
===================================================================
@@ -8,6 +8,9 @@ obj-y		+= access.o bus.o probe.o remove.
 obj-$(CONFIG_PROC_FS) += proc.o
 obj-$(CONFIG_SYSFS) += slot.o
 
+obj-$(CONFIG_PCI_LEGACY) += legacy.o
+CFLAGS_legacy.o += -Wno-deprecated-declarations
+
 # Build PCI Express stuff if needed
 obj-$(CONFIG_PCIEPORTBUS) += pcie/
 
drivers/pci/legacy.c new file +34 -0
Index: linux-2.6.31-rc3-ak/drivers/pci/legacy.c
===================================================================
@@ -0,0 +1,34 @@
+#include <linux/init.h>
+#include <linux/pci.h>
+#include <linux/module.h>
+#include <linux/interrupt.h>
+#include "pci.h"
+
+/**
+ * pci_find_device - begin or continue searching for a PCI device by vendor/device id
+ * @vendor: PCI vendor id to match, or %PCI_ANY_ID to match all vendor ids
+ * @device: PCI device id to match, or %PCI_ANY_ID to match all device ids
+ * @from: Previous PCI device found in search, or %NULL for new search.
+ *
+ * Iterates through the list of known PCI devices.  If a PCI device is found
+ * with a matching @vendor and @device, a pointer to its device structure is
+ * returned.  Otherwise, %NULL is returned.
+ * A new search is initiated by passing %NULL as the @from argument.
+ * Otherwise if @from is not %NULL, searches continue from next device
+ * on the global list.
+ *
+ * NOTE: Do not use this function any more; use pci_get_device() instead, as
+ * the PCI device returned by this function can disappear at any moment in
+ * time.
+ */
+struct pci_dev *pci_find_device(unsigned int vendor, unsigned int device,
+				struct pci_dev *from)
+{
+	struct pci_dev *pdev;
+
+	pci_dev_get(from);
+	pdev = pci_get_subsys(vendor, device, PCI_ANY_ID, PCI_ANY_ID, from);
+	pci_dev_put(pdev);
+	return pdev;
+}
+EXPORT_SYMBOL(pci_find_device);
drivers/pci/search.c +0 -31
Index: linux-2.6.31-rc3-ak/drivers/pci/search.c
===================================================================
@@ -113,37 +113,6 @@ pci_find_next_bus(const struct pci_bus *
 	return b;
 }
 
-#ifdef CONFIG_PCI_LEGACY
-/**
- * pci_find_device - begin or continue searching for a PCI device by vendor/device id
- * @vendor: PCI vendor id to match, or %PCI_ANY_ID to match all vendor ids
- * @device: PCI device id to match, or %PCI_ANY_ID to match all device ids
- * @from: Previous PCI device found in search, or %NULL for new search.
- *
- * Iterates through the list of known PCI devices.  If a PCI device is found
- * with a matching @vendor and @device, a pointer to its device structure is
- * returned.  Otherwise, %NULL is returned.
- * A new search is initiated by passing %NULL as the @from argument.
- * Otherwise if @from is not %NULL, searches continue from next device
- * on the global list.
- *
- * NOTE: Do not use this function any more; use pci_get_device() instead, as
- * the PCI device returned by this function can disappear at any moment in
- * time.
- */
-struct pci_dev *pci_find_device(unsigned int vendor, unsigned int device,
-				struct pci_dev *from)
-{
-	struct pci_dev *pdev;
-
-	pci_dev_get(from);
-	pdev = pci_get_subsys(vendor, device, PCI_ANY_ID, PCI_ANY_ID, from);
-	pci_dev_put(pdev);
-	return pdev;
-}
-EXPORT_SYMBOL(pci_find_device);
-#endif /* CONFIG_PCI_LEGACY */
-
 /**
  * pci_get_slot - locate PCI device for a given PCI slot
  * @bus: PCI bus on which desired PCI device resides
Applied
#1 lore raw
Quoted 10 lines · On Fri, 24 Jul 2009 11:41:15 +0200 Andi Kleen <[email protected]> wrote:

Shut off pci_find_device warnings when the deprecated pci functions are enabled.

Shut off the long standing

linux/drivers/pci/search.c:144: warning: 'pci_find_device' is deprecated (declared at linux/drivers/pci/search.c:136) linux/drivers/pci/search.c:144: warning: 'pci_find_device' is deprecated (declared at linux/drivers/pci/search.c:136)

Quoted 8 lines

warnings that appear on every build when CONFIG_PCI_LEGACY is enabled.

gcc warns for the use in EXPORT_SYMBOL

I moved these to a separate file and disabled the warning in the Makefile for that file.

Applied to linux-next, thanks.

Signature · 1 line
Jesse Barnes, Intel Open Source Technology Center
#2 lore raw

* Jesse Barnes <[email protected]>:

Quoted 15 lines
Quoted 12 lines · On Fri, 24 Jul 2009 11:41:15 +0200 Andi Kleen <[email protected]> wrote:

Shut off pci_find_device warnings when the deprecated pci functions are enabled.

Shut off the long standing

linux/drivers/pci/search.c:144: warning: 'pci_find_device' is deprecated (declared at linux/drivers/pci/search.c:136) linux/drivers/pci/search.c:144: warning: 'pci_find_device' is deprecated (declared at linux/drivers/pci/search.c:136)

warnings that appear on every build when CONFIG_PCI_LEGACY is enabled.

Quoted 8 lines
Quoted 6 lines

gcc warns for the use in EXPORT_SYMBOL

I moved these to a separate file and disabled the warning in the Makefile for that file.

Applied to linux-next, thanks.

Maybe it's too late now, but I thought those warnings were supposed to motivate people to convert old, buggy drivers to get off the deprecated interface.

That's what finally motivated me to get rid of pci_find_slot() earlier...

By the way, this would also be a perfect kernelnewbies/kernel janitor cleanup, as it would require actually digging into drivers and making real, substantial changes as opposed to whitespace/checkpatch/typo patches.

Just a thought.

/ac

author
#3 lore raw
Quoted 3 lines

Maybe it's too late now, but I thought those warnings were supposed to motivate people to convert old, buggy drivers to get off the deprecated interface.

Yes they are, but this warning instance was not for a old driver, but for the EXPORT_SYMBOL defining the legacy function.

If any driver uses it it'll still warn.

-Andi

Signature · 1 line
[email protected] -- Speaking for myself only.
#4 lore raw

* Andi Kleen <[email protected]>:

Quoted 8 lines
Quoted 3 lines

Maybe it's too late now, but I thought those warnings were supposed to motivate people to convert old, buggy drivers to get off the deprecated interface.

Yes they are, but this warning instance was not for a old driver, but for the EXPORT_SYMBOL defining the legacy function.

If any driver uses it it'll still warn.

Ok, I've been corrected. :)

I still think it would be a good learning project for someone to audit the tree and see if they can eliminate the usages of pci_find_device().

Thanks,

/ac