devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
To: Bjorn Helgaas <bhelgaas@google.com>
Cc: "devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
	linaro-kernel <linaro-kernel@lists.linaro.org>,
	Arnd Bergmann <arnd@arndb.de>,
	linux-pci <linux-pci@vger.kernel.org>,
	Liviu Dudau <Liviu.Dudau@arm.com>,
	LKML <linux-kernel@vger.kernel.org>,
	Will Deacon <Will.Deacon@arm.com>,
	Grant Likely <grant.likely@secretlab.ca>,
	Tanmay Inamdar <tinamdar@apm.com>,
	Catalin Marinas <Catalin.Marinas@arm.com>,
	LAKML <linux-arm-kernel@lists.infradead.org>
Subject: Re: [PATCH v7 1/6] pci: Introduce pci_register_io_range() helper function.
Date: Sun, 06 Apr 2014 19:49:53 +1000	[thread overview]
Message-ID: <1396777793.3671.15.camel@pasglop> (raw)
In-Reply-To: <20140405001953.GE15806@google.com>

On Fri, 2014-04-04 at 18:19 -0600, Bjorn Helgaas wrote:
> > Introduce a pci_register_io_range() helper function that can be used
> > by the architecture code to keep track of the I/O ranges described by the
> > PCI bindings. If the PCI_IOBASE macro is not defined that signals
> > lack of support for PCI and we return an error.
> 
> I don't quite see how you intend to use this, because this series doesn't
> include any non-stub implementation of pci_register_io_range().
> 
> Is this anything like the ia64 strategy I mentioned above?  If so, it would
> be really nice to unify some of this stuff.

We also use two different strategies on ppc32 and ppc64

 - On ppc32, inb/outb turn into an MMIO access to _IO_BASE + port

That _IO_BASE is a variable which is initialized to the ioremapped address
of the IO space MMIO aperture of the first bridge we discover. Then port
numbers are "fixed up" on all other bridges so that the addition _IO_BASE + port
fits the ioremapped address of the IO space on that bridge. A bit messy... and breaks
whenever drivers copy port numbers into variables of the wrong type such as shorts.

 - On ppc64, we have more virtual space, so instead we reserve a range
of address space (fixed) for IO space, it's always the same. Bridges IO spaces
are then mapped into that range, so we always have a positive offset from _IO_BASE
which makes things a bit more robust and less "surprising" than ppc32. Additionally,
the first 64k are reserved. They are only mapped if we see an ISA bridge (which some
older machines have). Otherwise it's left unmapped, so crappy drivers trying to
hard code x86 IO ports will blow up immediately which I deem better than silently
whacking the wrong hardware. In addition, we have a mechanism we use on powernv to
re-route accesses to that first 64k to the power8 built-in LPC bus which can
have some legacy IOs on it such as a UART or a RTC.

Cheers,
Ben.

  reply	other threads:[~2014-04-06  9:49 UTC|newest]

Thread overview: 76+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-03-14 15:34 [PATCH v7 0/6] Support for creating generic host_bridge from device tree Liviu Dudau
2014-03-14 15:34 ` [PATCH v7 1/6] pci: Introduce pci_register_io_range() helper function Liviu Dudau
     [not found]   ` <1394811272-1547-2-git-send-email-Liviu.Dudau-5wv7dgnIgG8@public.gmane.org>
2014-04-05  0:19     ` Bjorn Helgaas
2014-04-06  9:49       ` Benjamin Herrenschmidt [this message]
2014-04-07  8:35         ` Liviu Dudau
2014-04-07  9:13           ` Benjamin Herrenschmidt
2014-04-07 11:16             ` Arnd Bergmann
     [not found]       ` <20140405001953.GE15806-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2014-04-07  8:31         ` Liviu Dudau
2014-04-07 11:36           ` Arnd Bergmann
2014-04-07 13:42             ` Liviu Dudau
2014-04-07 17:58             ` Bjorn Helgaas
2014-04-08  9:50               ` Liviu Dudau
2014-04-08 10:22                 ` Arnd Bergmann
2014-04-08 16:54                   ` Bjorn Helgaas
2014-06-26  8:59               ` Catalin Marinas
2014-06-26  9:30                 ` Liviu Dudau
     [not found]                   ` <20140626093029.GB12812-2JSQmVVBSi7ZROr8t4l/smS4ubULX0JqMm0uRHvK7Nw@public.gmane.org>
2014-06-26 14:11                     ` Catalin Marinas
2014-06-26 14:14                       ` Will Deacon
2014-06-27  0:44                 ` Rob Herring
2014-06-27 11:03                   ` Arnd Bergmann
2014-06-27 12:49                     ` Will Deacon
2014-06-27 13:16                       ` Arnd Bergmann
2014-06-27 13:38                         ` Catalin Marinas
2014-06-27 16:15                       ` Rob Herring
2014-06-30 10:17                         ` Will Deacon
     [not found]                   ` <CAL_JsqKCHf6VXR3FFcBSu1xuhP54dYsAJCZwT-X9p5iTZAOJfQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-06-27 14:14                     ` Catalin Marinas
2014-06-27 14:55                       ` Bjorn Helgaas
2014-06-27 15:18                         ` Liviu Dudau
2014-04-07 23:21   ` Bjorn Helgaas
2014-04-08  7:12     ` Arnd Bergmann
2014-04-08  9:49     ` Liviu Dudau
2014-04-08 10:11       ` Arnd Bergmann
2014-04-08 16:48         ` Bjorn Helgaas
2014-03-14 15:34 ` [PATCH v7 2/6] pci: OF: Fix the conversion of IO ranges into IO resources Liviu Dudau
2014-03-14 17:05   ` Arnd Bergmann
2014-03-14 17:19     ` Liviu Dudau
2014-03-14 18:46       ` Arnd Bergmann
2014-03-14 19:00         ` Liviu Dudau
     [not found]           ` <20140314190017.GA6457-2JSQmVVBSi7ZROr8t4l/smS4ubULX0JqMm0uRHvK7Nw@public.gmane.org>
2014-03-14 19:16             ` Arnd Bergmann
2014-03-17 13:41               ` Liviu Dudau
2014-03-14 15:34 ` [PATCH v7 3/6] pci: Create pci_host_bridge before its associated bus in pci_create_root_bus Liviu Dudau
2014-03-14 15:34 ` [PATCH v7 4/6] pci: Introduce a domain number for pci_host_bridge Liviu Dudau
2014-04-05  0:00   ` Bjorn Helgaas
2014-04-07  8:46     ` Liviu Dudau
2014-04-07  9:14       ` Benjamin Herrenschmidt
2014-04-07 10:07         ` Liviu Dudau
2014-04-07 22:44           ` Bjorn Helgaas
2014-04-08 10:20             ` Liviu Dudau
     [not found]               ` <20140408102043.GV17163-2JSQmVVBSi7ZROr8t4l/smS4ubULX0JqMm0uRHvK7Nw@public.gmane.org>
2014-04-08 16:28                 ` Bjorn Helgaas
2014-04-09 12:07                   ` Liviu Dudau
2014-04-09 14:02                     ` Bjorn Helgaas
2014-04-09 14:08                       ` Arnd Bergmann
2014-04-09 23:49                       ` Benjamin Herrenschmidt
     [not found]                       ` <CAErSpo4BmoYzf6GxOPRni=q563zhON57s7=5Hz=2Cf-X2ft-1A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-04-10  1:27                         ` Liviu Dudau
2014-04-10  3:48                           ` Bjorn Helgaas
2014-04-10  8:00                             ` Arnd Bergmann
2014-04-10 13:50                               ` Bjorn Helgaas
     [not found]                                 ` <CAErSpo6u7kr+QdnhAXBo20izg-DNHR4zHT+kRvq34whp68RJCQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-04-10 14:07                                   ` Arnd Bergmann
2014-04-10 14:53                                     ` Liviu Dudau
2014-04-10 20:46                                       ` Arnd Bergmann
2014-04-11  5:01                                         ` Benjamin Herrenschmidt
2014-04-11  8:36                                           ` Arnd Bergmann
2014-04-11  9:16                                             ` Benjamin Herrenschmidt
2014-04-11  9:22                                         ` Liviu Dudau
2014-04-11 13:51                                           ` Arnd Bergmann
2014-07-01 16:37             ` Liviu Dudau
2014-07-04 14:57             ` Liviu Dudau
2014-07-08  1:11               ` Bjorn Helgaas
2014-07-08 10:21                 ` Liviu Dudau
2014-03-14 15:34 ` [PATCH v7 5/6] pci: Export find_pci_host_bridge() function Liviu Dudau
2014-04-04 23:39   ` Bjorn Helgaas
2014-04-07 14:20     ` Liviu Dudau
2014-04-07 14:38       ` One Thousand Gnomes
2014-03-14 15:34 ` [PATCH v7 6/6] pci: Add support for creating a generic host_bridge from device tree Liviu Dudau
2014-04-08 12:57   ` Hanjun Guo
2014-04-08 13:09     ` Liviu Dudau

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=1396777793.3671.15.camel@pasglop \
    --to=benh@kernel.crashing.org \
    --cc=Catalin.Marinas@arm.com \
    --cc=Liviu.Dudau@arm.com \
    --cc=Will.Deacon@arm.com \
    --cc=arnd@arndb.de \
    --cc=bhelgaas@google.com \
    --cc=devicetree@vger.kernel.org \
    --cc=grant.likely@secretlab.ca \
    --cc=linaro-kernel@lists.linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=tinamdar@apm.com \
    /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;
as well as URLs for NNTP newsgroup(s).