Re: [PATCH 1/3] lib: add NO_GENERIC_PCI_IOPORT_MAP
From: "Michael S. Tsirkin" <mst@redhat.com>
Date: 2012-01-30 16:16:29
Also in:
linux-arch, linux-sh, lkml
On Mon, Jan 30, 2012 at 03:51:46PM +0000, Arnd Bergmann wrote:
On Monday 30 January 2012, Michael S. Tsirkin wrote:quoted
--- a/include/asm-generic/pci_iomap.h +++ b/include/asm-generic/pci_iomap.h@@ -15,6 +15,11 @@ struct pci_dev; #ifdef CONFIG_PCI /* Create a virtual mapping cookie for a PCI BAR (memory or IO) */ extern void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned long max); +/* Create a virtual mapping cookie for a port on a given PCI device. + * Do not call this directly, it exists to make it easier for architectures + * to override. */ +extern void __iomem *__pci_ioport_map(struct pci_dev *dev, unsigned long port, + unsigned int nr); #else static inline void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned long max) {index 4b0fdc2..1dfda29 100644 --- a/lib/pci_iomap.c +++ b/lib/pci_iomap.c@@ -9,6 +9,16 @@ #include <linux/export.h> #ifdef CONFIG_PCI +#ifndef CONFIG_NO_GENERIC_PCI_IOPORT_MAP +/* Architectures can override ioport mapping while + * still using the rest of the generic infrastructure. */ +void __iomem *__pci_ioport_map(struct pci_dev *dev, + unsigned long port, + unsigned int nr) +{ + return ioport_map(port, nr); +} +#endif /** * pci_iomap - create a virtual mapping cookie for a PCI BAR * @dev: PCI device that owns the BARThis looks correct, but it would be nicer to express this with an inline function and keeping the new #ifdef to the header file, like +/* + * Create a virtual mapping cookie for a port on a given PCI device. + * Do not call this directly, it exists to make it easier for architectures + * to override. + */ +#ifdef CONFIG_NO_GENERIC_PCI_IOPORT_MAP +extern void __iomem *__pci_ioport_map(struct pci_dev *dev, unsigned long port, + unsigned int nr); +#else +static inline void __iomem *__pci_ioport_map(struct pci_dev *dev, + unsigned long port, unsigned int nr) +{ + return ioport_map(port, nr); +} +#endif Arnd
It would be nicer in that it would make the kernel a bit smaller for generic architectures but this would need to go into a separate header: it depends on io.h and io.h depends on pci_iomap.h. Worth it? -- MST