Thread (25 messages) 25 messages, 7 authors, 2014-03-08

[PATCH v2 1/4] pci: OF: Fix the conversion of IO ranges into IO resources.

From: Liviu Dudau <hidden>
Date: 2014-02-27 19:14:16
Also in: linux-devicetree, linux-pci, lkml

On Thu, Feb 27, 2014 at 11:19:51AM -0700, Jason Gunthorpe wrote:
On Thu, Feb 27, 2014 at 01:06:39PM +0000, Liviu Dudau wrote:
quoted
+	if (res->flags & IORESOURCE_IO) {
+		unsigned long port;
+		port = pci_address_to_pio(range->pci_addr);
This looks very suspicious, pci_addr is not unique across all domains,
so there is no way to convert from a pci_addr to the virtual IO
address without knowing the domain number as well.

I would like to see it be:
  port = pci_address_to_pio(range->cpu_addr);

cpu_addr is unique across all domains.
Jason,

First thanks for reviewing the updated series.

We have agreed early on that indeed using range->cpu_addr is the correct aproach
and me taking the lazy shortcut of using range->pci_addr because of the broken
default implementation of pci_address_to_pio is wrong. I will fix this for v3.

The outstanding issue is how to fix pci_address_to_pio() as it will not
for for range->cpu_addr > IO_SPACE_LIMIT (16MB in my case).

Best regards,
Liviu
Looking at the microblaze and PPC versions I think the above version
is actually correct (assuming io_base_phys is the CPU address of the
IO window)

Jason
--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to majordomo at vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help