All of lore.kernel.org
 help / color / mirror / Atom feed
From: Liviu Dudau <Liviu.Dudau@arm.com>
To: "linaro-kernel@lists.linaro.org" <linaro-kernel@lists.linaro.org>,
	linux-pci <linux-pci@vger.kernel.org>,
	LKML <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v2 1/4] pci: OF: Fix the conversion of IO ranges into IO resources.
Date: Thu, 27 Feb 2014 14:30:59 +0000	[thread overview]
Message-ID: <20140227143059.GN1692@e106497-lin.cambridge.arm.com> (raw)
In-Reply-To: <7049275.SxVd47MEQ4@wuerfel>

On Thu, Feb 27, 2014 at 02:08:44PM +0000, Arnd Bergmann wrote:
> On Thursday 27 February 2014 13:56:16 Liviu Dudau wrote:
> > On Thu, Feb 27, 2014 at 01:22:19PM +0000, Andrew Murray wrote:
> > > On 27 February 2014 13:06, Liviu Dudau <Liviu.Dudau@arm.com> wrote:
> > > >
> > > > +/**
> > > > + * of_pci_range_to_resource - Create a resource from an of_pci_range
> > > > + * @range:     the PCI range that describes the resource
> > > > + * @np:                device node where the range belongs to
> > > > + * @res:       pointer to a valid resource that will be updated to
> > > > + *              reflect the values contained in the range.
> > > > + * Note that if the range is an IO range, the resource will be converted
> > > > + * using pci_address_to_pio() which can fail if it is called to early or
> > > > + * if the range cannot be matched to any host bridge IO space.
> > > > + */
> > > > +void of_pci_range_to_resource(struct of_pci_range *range,
> > > > +       struct device_node *np, struct resource *res)
> > > > +{
> > > > +       res->flags = range->flags;
> > > > +       if (res->flags & IORESOURCE_IO) {
> > > > +               unsigned long port;
> > > > +               port = pci_address_to_pio(range->pci_addr);
> > > 
> > > Is this likely to break existing users of of_pci_range_to_resource?
> > 
> > I've tested the change with a tegra2 based device (trimslice) and I've
> > got a functional board.
> 
> Did you have any devices using I/O ports though? They are fairly rare
> these days.

# cat /proc/ioports 
00001000-0000ffff : PCI0 I/O
  00001000-00001fff : PCI Bus 0000:01
    00001000-000010ff : 0000:01:00.0
      00001000-000010ff : r8169

Looks like it does.

Liviu

> 
> > > I have no idea if I/O previously worked for mips, but this patch seems
> > > to change that behavior. It may be a similar story for microblaze and
> > > powerpc.
> > 
> > Both microblaze and powerpc share an identical implementation and it is
> > expecting that the physical address passed as parameter fits between
> > io_base_phys and io_base_phys + pcibios_io_size(hose). So yes, the
> > correct way is to use cpu_addr and fix the weak implementation? But we
> > don't have enough information for the weak implementation to work, as
> > we don't know where the physical IO base start (we are just about to
> > find out from DT).
> 
> I think using pci_address_to_pio() at that point is just wrong
> in either way. Before the host is fully registered, you can't actually
> look up the port number -- you are only trying to assign one at this time.
> 
> The implementation that Will wrote for ARM would work here: find the
> next available virtual I/O range, call pci_ioremap_io on range->pci_addr
> and then return the virtual address. Unfortunately that code is not
> architecture independent at this time, and we will first have to come
> up with something that can be made to work for powerpc, microblaze,
> mips and arm.
> 
> 	Arnd
> 
> 

-- 
====================
| I would like to |
| fix the world,  |
| but they're not |
| giving me the   |
 \ source code!  /
  ---------------
    ¯\_(ツ)_/¯


  parent reply	other threads:[~2014-02-27 14:31 UTC|newest]

Thread overview: 74+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-02-27 13:06 [PATCH v2 0/4] [RFC] Support for creating generic host_bridge from device tree Liviu Dudau
2014-02-27 13:06 ` Liviu Dudau
     [not found] ` < 1393506402-11474-5-git-send-email-Liviu.Dudau@arm.com>
2014-02-27 13:06 ` [PATCH v2 1/4] pci: OF: Fix the conversion of IO ranges into IO resources Liviu Dudau
2014-02-27 13:06   ` Liviu Dudau
2014-02-27 13:20   ` Arnd Bergmann
2014-02-27 13:20     ` Arnd Bergmann
2014-02-27 13:20     ` Arnd Bergmann
2014-02-27 13:45     ` Liviu Dudau
2014-02-27 13:22   ` Andrew Murray
2014-02-27 13:22     ` Andrew Murray
2014-02-27 13:56     ` Liviu Dudau
2014-02-27 14:08       ` Arnd Bergmann
2014-02-27 14:21         ` Liviu Dudau
2014-02-27 16:00           ` Arnd Bergmann
2014-02-27 14:30         ` Liviu Dudau [this message]
2014-02-27 13:58     ` Arnd Bergmann
2014-02-27 13:58       ` Arnd Bergmann
2014-02-27 18:19   ` Jason Gunthorpe
2014-02-27 18:19     ` Jason Gunthorpe
2014-02-27 19:12     ` Liviu Dudau
2014-02-27 19:12       ` Liviu Dudau
2014-02-27 19:12       ` Liviu Dudau
2014-02-27 19:36       ` Jason Gunthorpe
2014-02-27 19:36         ` Jason Gunthorpe
2014-02-27 19:36         ` Jason Gunthorpe
2014-02-27 19:48         ` Arnd Bergmann
2014-02-27 19:48           ` Arnd Bergmann
2014-02-27 20:07           ` Jason Gunthorpe
2014-02-27 20:07             ` Jason Gunthorpe
2014-02-27 20:22             ` Arnd Bergmann
2014-02-27 20:22               ` Arnd Bergmann
2014-02-27 20:22               ` Arnd Bergmann
2014-02-28 12:50               ` Liviu Dudau
2014-02-28 12:50                 ` Liviu Dudau
2014-02-28 12:50                 ` Liviu Dudau
2014-02-27 13:06 ` [PATCH v2 2/4] pci: Create pci_host_bridge before its associated bus in pci_create_root_bus Liviu Dudau
2014-02-27 13:06   ` Liviu Dudau
2014-02-27 13:06   ` Liviu Dudau
2014-02-27 13:22   ` Arnd Bergmann
2014-02-27 13:22     ` Arnd Bergmann
2014-02-27 13:06 ` [PATCH v2 3/4] pci: Introduce a domain number for pci_host_bridge Liviu Dudau
2014-02-27 13:06   ` Liviu Dudau
2014-02-27 13:06   ` Liviu Dudau
2014-02-27 13:22   ` Arnd Bergmann
2014-02-27 13:22     ` Arnd Bergmann
2014-02-27 13:06 ` [PATCH v2 4/4] pci: Add support for creating a generic host_bridge from device tree Liviu Dudau
2014-02-27 13:06   ` Liviu Dudau
2014-02-27 13:06   ` Liviu Dudau
2014-02-27 13:38   ` Arnd Bergmann
2014-02-27 13:38     ` Arnd Bergmann
2014-02-27 13:48     ` Arnd Bergmann
2014-02-27 13:48       ` Arnd Bergmann
2014-02-27 13:48       ` Arnd Bergmann
2014-02-27 14:13     ` Liviu Dudau
2014-02-27 15:58       ` Arnd Bergmann
2014-02-27 16:20         ` Liviu Dudau
2014-02-27 16:45           ` Arnd Bergmann
2014-02-27 16:54             ` Liviu Dudau
2014-02-27 18:42               ` Arnd Bergmann
2014-02-27 23:32     ` Benjamin Herrenschmidt
2014-02-27 23:32       ` Benjamin Herrenschmidt
2014-02-27 23:32       ` Benjamin Herrenschmidt
2014-02-28  8:46       ` Arnd Bergmann
2014-02-28  8:46         ` Arnd Bergmann
2014-02-28  9:55       ` Liviu Dudau
2014-02-28  9:55         ` Liviu Dudau
2014-03-02  1:23         ` Benjamin Herrenschmidt
2014-03-02  1:23           ` Benjamin Herrenschmidt
2014-03-02  1:23           ` Benjamin Herrenschmidt
2014-03-02  1:25           ` Benjamin Herrenschmidt
2014-03-02  1:25             ` Benjamin Herrenschmidt
2014-03-07 18:58     ` Grant Likely
2014-03-07 18:58       ` Grant Likely
2014-03-07 18:58       ` Grant Likely

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=20140227143059.GN1692@e106497-lin.cambridge.arm.com \
    --to=liviu.dudau@arm.com \
    --cc=linaro-kernel@lists.linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.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.