[PATCH] PPC: PCI: Fix pcibios_io_space_offset() so it works for 32-bit ptr/64-bit rsrcs
Scott Wood
scottwood at freescale.com
Thu Jun 7 10:37:08 EST 2012
On 06/06/2012 05:21 PM, Benjamin Herrenschmidt wrote:
> Now that means that we can end up with funky arithmetic in a couple of
> cases:
>
> - If the bus address of the IO space is larger than the virtual address
> returned by ioremap (it's a bit silly to use large IO addresses but it's
> technically possible, normally IO windows start at 0 bus-side though).
> In fact I wouldn't be surprised if we have various other bugs if IO
> windows don't start at 0 (you may want to double check your dts setup
> here).
The dts does show the I/O beginning at bus address zero:
ranges = <0x2000000 0x0 0xc0000000 0xc0000000 0x0
0x20000000
0x1000000 0x0 0x0 0xe1000000 0x0 0x10000>;
> - If the ioremap'ed address of the IO space of another domain is lower
> than the ioremap'ed address of the first domain, in which case the
> calculation:
>
> host->io_base_virt - _IO_BASE
>
> results in a negative offset.
There should have been only one PCI domain in the QEMU case.
-Scott
More information about the Linuxppc-dev
mailing list