public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Myron Stowe <myron.stowe@redhat.com>
To: jbarnes@virtuousgeek.org
Cc: linux-pci@vger.kernel.org, linux@arm.linux.org.uk,
	vapier@gentoo.org, dhowells@redhat.com,
	ysato@users.sourceforge.jp, tony.luck@intel.com,
	fenghua.yu@intel.com, monstr@monstr.eu, ralf@linux-mips.org,
	benh@kernel.crashing.org, paulus@samba.org, lethal@linux-sh.org,
	davem@davemloft.net, cmetcalf@tilera.com, gxt@mprc.pku.edu.cn,
	tglx@linutronix.de, mingo@redhat.com, chris@zankel.net,
	linux-kernel@vger.kernel.org
Subject: [PATCH -v2 00/16] PCI: Re-factor PCI's 'latency timer' setup
Date: Fri, 28 Oct 2011 15:47:26 -0600	[thread overview]
Message-ID: <20111028214726.20088.30551.stgit@amt.stowe> (raw)

The 'latency timer' of PCI devices, both Type 0 and Type 1,
is setup in architecture-specific code [see: pcibios_set_master()].
There are two approaches being taken by all the architectures - check
if the 'latency timer' is currently set between 16 and 255 and if not
bring it within bounds, or, do nothing (and then there is the
gratuitously different parisc implementation).

There is nothing architecture-specific about PCI's 'latency timer' so
this patch pulls the setup functionality up into the PCI core by
creating a generic 'pcibios_set_master()' function using the '__weak'
attribute which can be used by all architectures as a default which,
if necessary, can then be over-ridden by architecture-specific code.


The series starts out by converting architecture-specific inlined
versions of 'pcibios_set_master()' - all of which are no-ops - into
non-inlined equivalents.  This is necessary to allow a subsequent
patch to create a generic version using the '__weak' attribute and is
done for the following architectures: arm, blackfin*, h8300*, ia64,
microblaze, powerpc, sparc, tile, unicore32, and xtensa.

Without the conversions, the compiler sees the architecture-
specific version, defined as a static inline function typically in
<asm/pci.h>, and will have no knowledge about the __weak version
once it is introduced, which leads to compile failures as in:
  drivers/pci/pci.c: 2605: error: redefinition of 'pcibios_set_master'
  arch/powerpc/include/asm/pci.h: 49: note: previous definition of
    'pcibios_set_master' was here

Next the generic 'pcibios_set_master()' function is introduced in
PCI's core.  With the generic 'pcibios_set_master()' function in place
the series removes the now redundant function from the following
architectures: frv, mips, mn10300, sh, and x86.

It would be nice to have all architectures follow suit and end up
using only the single, generic, 'pcibios_set_master()' function.

-v2:
 - In the original series I tried to not touch any of the architectures
   that were not going to end up using the generic 'pcibios_set_master()'
   function but this just created compile problems for those so I had to
   generate a number of pre-cursor patches to the series as noted above.
 - * blackfin and h8300 architectures do not seem to support PCI (no
   root bus scanning etc. exists within them) but they do have PCI header
   files.  I removed the inline definitions for each of these within
   the patch that introduces the generic 'pcibios_set_master()' function
   so that the __weak version would satisfy any necessary references.

I have only tested x86 although I was able to compile test powerpc in
addition this time.
---

Myron Stowe (16):
      PCI: latency timer doesn't apply to PCIe
      PCI: x86: use generic pcibios_set_master()
      PCI: sh: use generic pcibios_set_master()
      PCI: mn10300: use generic pcibios_set_master()
      PCI: MIPS: use generic pcibios_set_master()
      PCI: frv: use generic pcibios_set_master()
      PCI: Pull PCI 'latency timer' setup up into the core
      PCI: Xtensa: convert pcibios_set_master() to a non-inlined function
      PCI: UniCore: convert pcibios_set_master() to a non-inlined function
      PCI: TILE: convert pcibios_set_master() to a non-inlined function
      PCI: SPARC: convert pcibios_set_master() to a non-inlined function
      PCI: PowerPC: convert pcibios_set_master() to a non-inlined function
      PCI: MicroBlaze: convert pcibios_set_master() to a non-inlined function
      PCI: IA64: convert pcibios_set_master() to a non-inlined function
      PCI: ARM: convert pcibios_set_master() to a non-inlined function
      PCI: add declaration for pcibios_set_master() to pci core


 arch/arm/common/it8152.c                |    3 +++
 arch/arm/include/asm/pci.h              |   12 -----------
 arch/arm/kernel/bios32.c                |    7 +++++++
 arch/blackfin/include/asm/pci.h         |    4 ----
 arch/frv/mb93090-mb00/pci-frv.c         |   20 -------------------
 arch/frv/mb93090-mb00/pci-frv.h         |    2 --
 arch/h8300/include/asm/pci.h            |    5 -----
 arch/ia64/include/asm/pci.h             |    6 ------
 arch/ia64/pci/pci.c                     |    5 +++++
 arch/microblaze/include/asm/pci.h       |    5 -----
 arch/microblaze/pci/pci-common.c        |    5 +++++
 arch/mips/pci/pci.c                     |   21 --------------------
 arch/mn10300/unit-asb2305/pci-asb2305.c |   22 ---------------------
 arch/mn10300/unit-asb2305/pci-asb2305.h |    2 --
 arch/powerpc/include/asm/pci.h          |    5 -----
 arch/powerpc/kernel/pci-common.c        |    5 +++++
 arch/sh/drivers/pci/pci.c               |   21 --------------------
 arch/sparc/include/asm/pci_32.h         |    5 -----
 arch/sparc/include/asm/pci_64.h         |    5 -----
 arch/sparc/kernel/pci.c                 |    5 +++++
 arch/tile/include/asm/pci.h             |    7 -------
 arch/tile/kernel/pci.c                  |    5 +++++
 arch/unicore32/include/asm/pci.h        |    5 -----
 arch/unicore32/kernel/pci.c             |    5 +++++
 arch/x86/include/asm/pci_x86.h          |    2 --
 arch/x86/pci/i386.c                     |   20 -------------------
 arch/xtensa/include/asm/pci.h           |    5 -----
 arch/xtensa/kernel/pci.c                |    5 +++++
 drivers/pci/pci.c                       |   33 +++++++++++++++++++++++++++++++
 include/linux/pci.h                     |    5 +++++
 30 files changed, 83 insertions(+), 174 deletions(-)

-- 

             reply	other threads:[~2011-10-28 21:48 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-10-28 21:47 Myron Stowe [this message]
2011-10-28 21:47 ` [PATCH -v2 01/16] PCI: add declaration for pcibios_set_master() to pci core Myron Stowe
2011-12-05 19:06   ` Jesse Barnes
2011-12-05 20:32     ` Benjamin Herrenschmidt
2011-10-28 21:47 ` [PATCH -v2 02/16] PCI: ARM: convert pcibios_set_master() to a non-inlined function Myron Stowe
2011-10-28 21:47 ` [PATCH -v2 03/16] PCI: IA64: " Myron Stowe
2011-10-28 21:47 ` [PATCH -v2 04/16] PCI: MicroBlaze: " Myron Stowe
2011-10-28 21:48 ` [PATCH -v2 05/16] PCI: PowerPC: " Myron Stowe
2011-10-28 21:48 ` [PATCH -v2 06/16] PCI: SPARC: " Myron Stowe
2011-10-28 21:48 ` [PATCH -v2 07/16] PCI: TILE: " Myron Stowe
2011-10-31 15:27   ` Chris Metcalf
2011-10-28 21:48 ` [PATCH -v2 08/16] PCI: UniCore: " Myron Stowe
2011-10-28 21:48 ` [PATCH -v2 09/16] PCI: Xtensa: " Myron Stowe
2011-10-28 21:48 ` [PATCH -v2 10/16] PCI: Pull PCI 'latency timer' setup up into the core Myron Stowe
2011-10-28 21:48 ` [PATCH -v2 11/16] PCI: frv: use generic pcibios_set_master() Myron Stowe
2011-10-28 21:48 ` [PATCH -v2 12/16] PCI: MIPS: " Myron Stowe
2011-10-28 21:48 ` [PATCH -v2 13/16] PCI: mn10300: " Myron Stowe
2011-10-28 21:49 ` [PATCH -v2 14/16] PCI: sh: " Myron Stowe
2011-10-28 21:49 ` [PATCH -v2 15/16] PCI: x86: " Myron Stowe
2011-10-28 21:49 ` [PATCH -v2 16/16] PCI: latency timer doesn't apply to PCIe Myron Stowe
2011-10-29  0:46 ` [PATCH -v2 00/16] PCI: Re-factor PCI's 'latency timer' setup Mike Frysinger
2011-10-31 16:08   ` Myron Stowe
2011-10-31 23:14   ` Myron Stowe
2011-11-11 17:59 ` Jesse Barnes
2011-11-15 22:43   ` Benjamin Herrenschmidt

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=20111028214726.20088.30551.stgit@amt.stowe \
    --to=myron.stowe@redhat.com \
    --cc=benh@kernel.crashing.org \
    --cc=chris@zankel.net \
    --cc=cmetcalf@tilera.com \
    --cc=davem@davemloft.net \
    --cc=dhowells@redhat.com \
    --cc=fenghua.yu@intel.com \
    --cc=gxt@mprc.pku.edu.cn \
    --cc=jbarnes@virtuousgeek.org \
    --cc=lethal@linux-sh.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=linux@arm.linux.org.uk \
    --cc=mingo@redhat.com \
    --cc=monstr@monstr.eu \
    --cc=paulus@samba.org \
    --cc=ralf@linux-mips.org \
    --cc=tglx@linutronix.de \
    --cc=tony.luck@intel.com \
    --cc=vapier@gentoo.org \
    --cc=ysato@users.sourceforge.jp \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox