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:21:03 +0000 [thread overview]
Message-ID: <20140227142103.GM1692@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.
>
> > > 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.
No, no, no... we cannot use the virtual address as the start of the resource
as this will later be used when doing pcibios_resource_to_bus(). What
we need here is a portable way of converting from PCI range that uses physical
CPU addresses to a IORESOURCE_IO type resource that uses logical IO
addresses. Using logical IO values works, as Bjorn's code treats it as
physical address.
The alternative is to introduce a thorough revision of the pci_host_bridge
calls that understand that IORESOURCE_IO and IORESOURCE_MEM are different
beasts. That is what caught Will and others a number of times.
Best regards,
Liviu
>
> Arnd
>
>
--
====================
| I would like to |
| fix the world, |
| but they're not |
| giving me the |
\ source code! /
---------------
¯\_(ツ)_/¯
next prev parent reply other threads:[~2014-02-27 14:21 UTC|newest]
Thread overview: 37+ 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
[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:20 ` Arnd Bergmann
2014-02-27 13:45 ` Liviu Dudau
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 [this message]
2014-02-27 16:00 ` Arnd Bergmann
2014-02-27 14:30 ` Liviu Dudau
2014-02-27 13:58 ` Arnd Bergmann
2014-02-27 18:19 ` Jason Gunthorpe
2014-02-27 19:12 ` Liviu Dudau
2014-02-27 19:36 ` Jason Gunthorpe
2014-02-27 19:48 ` Arnd Bergmann
2014-02-27 20:07 ` Jason Gunthorpe
2014-02-27 20:22 ` Arnd Bergmann
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: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: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:38 ` 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-28 8:46 ` Arnd Bergmann
2014-02-28 9:55 ` Liviu Dudau
2014-03-02 1:23 ` Benjamin Herrenschmidt
2014-03-02 1:25 ` Benjamin Herrenschmidt
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=20140227142103.GM1692@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®