Re: PCI IO range limitation
From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Date: 2007-06-28 17:44:00
On Thu, 2007-06-28 at 12:20 +0200, Marian Balakowicz wrote:
Hi, Trying to change PCI IO window base for 52xx target I found that we are pretty much limited to a "0" offset only. pci_process_bridge_OF_ranges() will not process any IO range that has addresses set to anything else. 956: case 1: /* I/O space */ 957: if (ranges[2] != 0) 958: break; When this range[2] checking is removed from pci_process_bridge_OF_ranges() kernel boots ok with the non-zero PCI IO base, but the PCI device I am using (e100) will not work. I guess that with the above dropping of non-zero based PCI IO ranges this is not supposed to be working. But does anyone know why?
We just fixed that for 64 bits but 32 bits still has the limitation. Note that it's not a very good idea to have your IO range at !0 if you're going to use anything ISA-like, such as a VGA video card or other legacy devices behind a PCI southbridge or SuperIO. Ben.