2009-07-24 09:41:21

by Andi Kleen

[permalink] [raw]
Subject: [PATCH] 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.

Signed-off-by: Andi Kleen <[email protected]>

---
drivers/pci/Makefile | 3 +++
drivers/pci/legacy.c | 34 ++++++++++++++++++++++++++++++++++
drivers/pci/search.c | 31 -------------------------------
3 files changed, 37 insertions(+), 31 deletions(-)

Index: linux-2.6.31-rc3-ak/drivers/pci/Makefile
===================================================================
--- linux-2.6.31-rc3-ak.orig/drivers/pci/Makefile
+++ 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/

Index: linux-2.6.31-rc3-ak/drivers/pci/legacy.c
===================================================================
--- /dev/null
+++ 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);
Index: linux-2.6.31-rc3-ak/drivers/pci/search.c
===================================================================
--- linux-2.6.31-rc3-ak.orig/drivers/pci/search.c
+++ 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


2009-07-28 16:55:57

by Jesse Barnes

[permalink] [raw]
Subject: Re: [PATCH] Shut off pci_find_device warnings when the deprecated pci functions are enabled.

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.
>
> 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.
>
> Signed-off-by: Andi Kleen <[email protected]>

Applied to linux-next, thanks.

--
Jesse Barnes, Intel Open Source Technology Center

2009-07-29 00:16:15

by Alex Chiang

[permalink] [raw]
Subject: Re: [PATCH] Shut off pci_find_device warnings when the deprecated pci functions are enabled.

* Jesse Barnes <[email protected]>:
> 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.
> >
> > 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.
> >
> > Signed-off-by: Andi Kleen <[email protected]>
>
> 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

2009-07-29 00:28:07

by Andi Kleen

[permalink] [raw]
Subject: Re: [PATCH] Shut off pci_find_device warnings when the deprecated pci functions are enabled.

> 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

--
[email protected] -- Speaking for myself only.

2009-07-29 00:32:09

by Alex Chiang

[permalink] [raw]
Subject: Re: [PATCH] Shut off pci_find_device warnings when the deprecated pci functions are enabled.

* Andi Kleen <[email protected]>:
> > 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