public inbox for linux-arm-kernel@lists.infradead.org 
 help / color / mirror / Atom feed
From: bhelgaas@google•com (Bjorn Helgaas)
To: linux-arm-kernel@lists•infradead.org
Subject: [PATCH v7 1/6] pci: Introduce pci_register_io_range() helper function.
Date: Fri, 4 Apr 2014 18:19:53 -0600	[thread overview]
Message-ID: <20140405001953.GE15806@google.com> (raw)
In-Reply-To: <1394811272-1547-2-git-send-email-Liviu.Dudau@arm.com>

On Fri, Mar 14, 2014 at 03:34:27PM +0000, Liviu Dudau wrote:
> Some architectures do not share x86 simple view of the PCI I/O space
> and instead use a range of addresses that map to bus addresses. For
> some architectures these ranges will be expressed by OF bindings
> in a device tree file.

It's true that the current Linux "x86 view of PCI I/O space" is pretty
simple and limited.  But I don't think that's a fundamental x86 limitation
(other than the fact that the actual INB/OUTB/etc. CPU instructions
themselves are limited to a single 64K I/O port space).

Host bridges on x86 could have MMIO apertures that turn CPU memory accesses
into PCI port accesses.  We could implement any number of I/O port spaces
this way, by making the kernel inb()/outb()/etc. interfaces smart enough to
use the memory-mapped space instead of (or in addition to) the
INB/OUTB/etc. instructions.

ia64 does this (see arch/ia64/include/asm/io.h for a little description)
and I think maybe one or two other arches have something similar.

> 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.

> Signed-off-by: Liviu Dudau <Liviu.Dudau@arm•com>
> Acked-by: Grant Likely <grant.likely@linaro•org>
> Tested-by: Tanmay Inamdar <tinamdar@apm•com>
> ---
>  drivers/of/address.c       | 9 +++++++++
>  include/linux/of_address.h | 1 +
>  2 files changed, 10 insertions(+)
> 
> diff --git a/drivers/of/address.c b/drivers/of/address.c
> index 1a54f1f..be958ed 100644
> --- a/drivers/of/address.c
> +++ b/drivers/of/address.c
> @@ -619,6 +619,15 @@ const __be32 *of_get_address(struct device_node *dev, int index, u64 *size,
>  }
>  EXPORT_SYMBOL(of_get_address);
>  
> +int __weak pci_register_io_range(phys_addr_t addr, resource_size_t size)
> +{
> +#ifndef PCI_IOBASE
> +	return -EINVAL;
> +#else
> +	return 0;
> +#endif
> +}
> +
>  unsigned long __weak pci_address_to_pio(phys_addr_t address)
>  {
>  	if (address > IO_SPACE_LIMIT)
> diff --git a/include/linux/of_address.h b/include/linux/of_address.h
> index 5f6ed6b..40c418d 100644
> --- a/include/linux/of_address.h
> +++ b/include/linux/of_address.h
> @@ -56,6 +56,7 @@ extern void __iomem *of_iomap(struct device_node *device, int index);
>  extern const __be32 *of_get_address(struct device_node *dev, int index,
>  			   u64 *size, unsigned int *flags);
>  
> +extern int pci_register_io_range(phys_addr_t addr, resource_size_t size);
>  extern unsigned long pci_address_to_pio(phys_addr_t addr);
>  
>  extern int of_pci_range_parser_init(struct of_pci_range_parser *parser,
> -- 
> 1.9.0
> 

  reply	other threads:[~2014-04-05  0:19 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
2014-04-05  0:19   ` Bjorn Helgaas [this message]
2014-04-06  9:49     ` Benjamin Herrenschmidt
2014-04-07  8:35       ` Liviu Dudau
2014-04-07  9:13         ` Benjamin Herrenschmidt
2014-04-07 11:16           ` Arnd Bergmann
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
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
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
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
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
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
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=20140405001953.GE15806@google.com \
    --to=bhelgaas@google$(echo .)com \
    --cc=linux-arm-kernel@lists$(echo .)infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html
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