From: "Michael S. Tsirkin" <mst@redhat.com>
To: Arnd Bergmann <arnd@arndb.de>
Cc: Kevin Cernekee <cernekee@gmail.com>,
Ralf Baechle <ralf@linux-mips.org>,
Paul Mundt <lethal@linux-sh.org>,
Jesse Barnes <jbarnes@virtuousgeek.org>,
Myron Stowe <myron.stowe@redhat.com>,
Paul Gortmaker <paul.gortmaker@windriver.com>,
Lucas De Marchi <lucas.demarchi@profusion.mobi>,
Dmitry Kasatkin <dmitry.kasatkin@intel.com>,
James Morris <jmorris@namei.org>,
"John W. Linville" <linville@tuxdriver.com>,
Michael Witten <mfwitten@gmail.com>,
linux-mips@linux-mips.org, linux-kernel@vger.kernel.org,
linux-sh@vger.kernel.org, linux-arch@vger.kernel.org
Subject: Re: [PATCH 1/3] lib: add NO_GENERIC_PCI_IOPORT_MAP
Date: Tue, 31 Jan 2012 02:22:05 +0200 [thread overview]
Message-ID: <20120131002203.GA14344@redhat.com> (raw)
In-Reply-To: <201201302004.33083.arnd@arndb.de>
On Mon, Jan 30, 2012 at 08:04:32PM +0000, Arnd Bergmann wrote:
> On Monday 30 January 2012, Michael S. Tsirkin wrote:
> > >
> > > +/*
> > > + * 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.
>
> Adding extra dependencies is not good here, I agree.
> Maybe a better solution is to use a macro instead of an inline
> function then:
>
> #define __pci_ioport_map(dev, port, nr) ioport_map(port, nr)
>
> In general, macros should be avoided, but I think it's the
> best tradeoff in this case.
>
> Arnd
I have an idea: we can make the generic one inline
if we keep it in the .c file. So something like
the below on top of my patch will probably work.
Ack?
diff --git a/include/asm-generic/pci_iomap.h b/include/asm-generic/pci_iomap.h
index 2aff58e..2ec1bdb 100644
--- a/include/asm-generic/pci_iomap.h
+++ b/include/asm-generic/pci_iomap.h
@@ -15,11 +15,6 @@ 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)
{
@@ -27,4 +22,12 @@ static inline void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned lon
}
#endif
+#ifdef CONFIG_NO_GENERIC_PCI_IOPORT_MAP
+/* 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);
+#endif
+
#endif /* __ASM_GENERIC_IO_H */
diff --git a/lib/pci_iomap.c b/lib/pci_iomap.c
index 1dfda29..8102f28 100644
--- a/lib/pci_iomap.c
+++ b/lib/pci_iomap.c
@@ -12,9 +12,9 @@
#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)
+static inline void __iomem *__pci_ioport_map(struct pci_dev *dev,
+ unsigned long port,
+ unsigned int nr)
{
return ioport_map(port, nr);
}
WARNING: multiple messages have this Message-ID (diff)
From: "Michael S. Tsirkin" <mst@redhat.com>
To: Arnd Bergmann <arnd@arndb.de>
Cc: Kevin Cernekee <cernekee@gmail.com>,
Ralf Baechle <ralf@linux-mips.org>,
Paul Mundt <lethal@linux-sh.org>,
Jesse Barnes <jbarnes@virtuousgeek.org>,
Myron Stowe <myron.stowe@redhat.com>,
Paul Gortmaker <paul.gortmaker@windriver.com>,
Lucas De Marchi <lucas.demarchi@profusion.mobi>,
Dmitry Kasatkin <dmitry.kasatkin@intel.com>,
James Morris <jmorris@namei.org>,
"John W. Linville" <linville@tuxdriver.com>,
Michael Witten <mfwitten@gmail.com>,
linux-mips@linux-mips.org, linux-kernel@vger.kernel.org,
linux-sh@vger.kernel.org, linux-arch@vger.kernel.org
Subject: Re: [PATCH 1/3] lib: add NO_GENERIC_PCI_IOPORT_MAP
Date: Tue, 31 Jan 2012 00:22:05 +0000 [thread overview]
Message-ID: <20120131002203.GA14344@redhat.com> (raw)
In-Reply-To: <201201302004.33083.arnd@arndb.de>
On Mon, Jan 30, 2012 at 08:04:32PM +0000, Arnd Bergmann wrote:
> On Monday 30 January 2012, Michael S. Tsirkin wrote:
> > >
> > > +/*
> > > + * 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.
>
> Adding extra dependencies is not good here, I agree.
> Maybe a better solution is to use a macro instead of an inline
> function then:
>
> #define __pci_ioport_map(dev, port, nr) ioport_map(port, nr)
>
> In general, macros should be avoided, but I think it's the
> best tradeoff in this case.
>
> Arnd
I have an idea: we can make the generic one inline
if we keep it in the .c file. So something like
the below on top of my patch will probably work.
Ack?
diff --git a/include/asm-generic/pci_iomap.h b/include/asm-generic/pci_iomap.h
index 2aff58e..2ec1bdb 100644
--- a/include/asm-generic/pci_iomap.h
+++ b/include/asm-generic/pci_iomap.h
@@ -15,11 +15,6 @@ 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)
{
@@ -27,4 +22,12 @@ static inline void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned lon
}
#endif
+#ifdef CONFIG_NO_GENERIC_PCI_IOPORT_MAP
+/* 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);
+#endif
+
#endif /* __ASM_GENERIC_IO_H */
diff --git a/lib/pci_iomap.c b/lib/pci_iomap.c
index 1dfda29..8102f28 100644
--- a/lib/pci_iomap.c
+++ b/lib/pci_iomap.c
@@ -12,9 +12,9 @@
#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)
+static inline void __iomem *__pci_ioport_map(struct pci_dev *dev,
+ unsigned long port,
+ unsigned int nr)
{
return ioport_map(port, nr);
}
next prev parent reply other threads:[~2012-01-31 0:22 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-01-30 12:18 [PATCH 0/3] arch: fix ioport mapping on mips,sh Michael S. Tsirkin
2012-01-30 12:18 ` Michael S. Tsirkin
2012-01-30 12:18 ` [PATCH 1/3] lib: add NO_GENERIC_PCI_IOPORT_MAP Michael S. Tsirkin
2012-01-30 12:18 ` Michael S. Tsirkin
2012-01-30 14:19 ` Shane McDonald
2012-01-30 14:19 ` Shane McDonald
2012-01-30 14:25 ` Michael S. Tsirkin
2012-01-30 14:25 ` Michael S. Tsirkin
2012-01-30 15:51 ` Arnd Bergmann
2012-01-30 16:18 ` Michael S. Tsirkin
2012-01-30 16:18 ` Michael S. Tsirkin
2012-01-30 20:04 ` Arnd Bergmann
2012-01-31 0:22 ` Michael S. Tsirkin [this message]
2012-01-31 0:22 ` Michael S. Tsirkin
2012-01-31 15:59 ` Arnd Bergmann
2012-01-31 21:18 ` Michael S. Tsirkin
2012-01-31 21:18 ` Michael S. Tsirkin
2012-01-30 12:18 ` [PATCH 2/3] mips: use the the PCI controller's io_map_base Michael S. Tsirkin
2012-01-30 12:18 ` Michael S. Tsirkin
2012-01-30 16:52 ` Sergei Shtylyov
2012-01-30 17:49 ` Sergei Shtylyov
2012-01-30 12:19 ` [PATCH 3/3] sh: use the the PCI channels's io_map_base Michael S. Tsirkin
2012-01-30 12:19 ` Michael S. Tsirkin
2012-01-30 16:54 ` Sergei Shtylyov
2012-01-30 17:50 ` Sergei Shtylyov
2012-01-30 16:09 ` [PATCH 0/3] arch: fix ioport mapping on mips,sh Arnd Bergmann
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20120131002203.GA14344@redhat.com \
--to=mst@redhat.com \
--cc=arnd@arndb.de \
--cc=cernekee@gmail.com \
--cc=dmitry.kasatkin@intel.com \
--cc=jbarnes@virtuousgeek.org \
--cc=jmorris@namei.org \
--cc=lethal@linux-sh.org \
--cc=linux-arch@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mips@linux-mips.org \
--cc=linux-sh@vger.kernel.org \
--cc=linville@tuxdriver.com \
--cc=lucas.demarchi@profusion.mobi \
--cc=mfwitten@gmail.com \
--cc=myron.stowe@redhat.com \
--cc=paul.gortmaker@windriver.com \
--cc=ralf@linux-mips.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.