All of lore.kernel.org
 help / color / mirror / Atom feed
From: arnd@arndb.de (Arnd Bergmann)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 0/3] [ARM] tegra: PCI Express support
Date: Sun, 19 Sep 2010 18:34:44 +0200	[thread overview]
Message-ID: <201009191834.44928.arnd@arndb.de> (raw)
In-Reply-To: <20100919150242.GD9098@n2100.arm.linux.org.uk>

On Sunday 19 September 2010 17:02:43 Russell King - ARM Linux wrote:
> Eg, on DC21285 (footbridge) systems, the PCI IO window is at 0x7c000000
> physical, mapped into 0xff000000 virtual.  So __io(0x3f8) translates to
> 0xff0003f8 virtual, which hits 0x7c0003f8 physical, and 0x3f8 as an IO
> access on the PCI bus.
> 
> Things become a little more complicated when you have PCMCIA cards with
> separate IO regions, as on SA11x0 and PXA systems.  These don't tend to
> have PCI, so we adopted there to have __io() do a 1:1 translation, and
> arrange for the "bus IO" address to be the actual virtual address.

Such a mapping sounds dangerous when you have device drivers trying
to access legacy ISA ports. Most of them are disabled on ARM, but
some drivers are hard to disable.

More importantly, having PCI I/O port numbers above 65536 will confuse
code like /dev/ioport, which then causes NULL pointer accesses
when accessed by a user application. Also, I would guess that it breaks
if you have PCI or PCMCIA cards that decode more than 16 bits of I/O port
addresses, because then the PCI I/O BAR gets set to a high number that
is not actually accessible inside the I/O space window.

The way we solved this on powerpc was to define a range of the virtual
address space as the I/O port window and map each bus's physical
I/O port window into a section of the virtual window.

	Arnd

  reply	other threads:[~2010-09-19 16:34 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-09-16 16:53 [PATCH 0/3] [ARM] tegra: PCI Express support Mike Rapoport
2010-09-16 16:53 ` [PATCH 1/3] [ARM] tegra: add PCI Express clocks Mike Rapoport
2010-09-16 21:27   ` Colin Cross
2010-09-16 22:27     ` Mike Rapoport
2010-09-17  0:14       ` Gary King
2010-09-19  7:54         ` Mike Rapoport
2010-09-16 23:53   ` Mogambo Park
2010-09-19  7:52     ` Mike Rapoport
2010-09-16 16:53 ` [PATCH 2/3] [ARM] tegra: add PCI Express support Mike Rapoport
2010-09-16 21:42   ` Colin Cross
2010-09-16 22:16     ` Mike Rapoport
2010-09-16 16:53 ` [PATCH 3/3] [ARM] tegra: harmony: enable PCI Express Mike Rapoport
2010-09-16 21:44   ` Colin Cross
2010-09-16 21:57     ` Mike Rapoport
2010-09-16 17:12 ` [PATCH 0/3] [ARM] tegra: PCI Express support Arnd Bergmann
2010-09-19 14:07   ` Mike Rapoport
2010-09-19 14:39     ` Arnd Bergmann
2010-09-19 15:02       ` Russell King - ARM Linux
2010-09-19 16:34         ` Arnd Bergmann [this message]
2010-09-19 16:40           ` Russell King - ARM Linux
2010-09-19 17:09             ` Arnd Bergmann
2010-09-19 15:36       ` Mike Rapoport
2010-09-19 16:01         ` Russell King - ARM Linux
2010-09-20  7:15           ` Mike Rapoport
2010-09-20  9:13             ` Arnd Bergmann
2010-09-20  9:58             ` Russell King - ARM Linux

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=201009191834.44928.arnd@arndb.de \
    --to=arnd@arndb.de \
    --cc=linux-arm-kernel@lists.infradead.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.