Thread (200 messages) 200 messages, 9 authors, 2013-02-12
STALE4860d

[PATCH v2 19/27] pci: PCIe driver for Marvell Armada 370/XP systems

From: arnd@arndb.de (Arnd Bergmann)
Date: 2013-02-01 17:45:29
Also in: linux-pci

On Friday 01 February 2013, Russell King - ARM Linux wrote:
On Fri, Feb 01, 2013 at 04:07:49PM +0000, Arnd Bergmann wrote:
quoted
On Friday 01 February 2013, Thomas Petazzoni wrote:
quoted
So there is really a range of I/O addresses associated to it, even
though the device will apparently not use it. Would it be possible to
detect that the I/O range is not used by the device, and therefore
avoid the allocation of an address decoding window for this I/O range?
I suspect it just gets disabled because the port number 0xc0010000 is
larger than IO_PORT_LIMIT and we cannot access that offset inside
of the virtual memory window we use for PIO.
You're running into that trap again which you fall into on other
architectures.

If you arrange for your PCI IO space to start at 0 rather than the
physical address that it appears on your CPU, then you shouldn't
end up with it extending up to something at 0xcXXXXXXX.

Remember that we should be ensuring that inb(0) hits the first address
of the cross-subarch PCI IO area - this alway requires that any sub-arch
taking part in a multiplatform kernel must start its IO space addresses
at 0 and not the physical address on the local CPU.
Yes, that was my point. I think in this case, the bug is in the new
of_pci_process_ranges functions, which returns a 'struct resource'
translated into IORESOURCE_MEM space, but with the type set
to IORESOURCE_IO. This resource then gets passed to 
pci_add_resource_offset().

	Arnd
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help