On Thu, 2007-05-03 at 21:42 +0200, Arnd Bergmann wrote:
We had a problem on a system with only dynamically allocated
PCI buses (using of_pci_phb_driver) in combination with libata.
It turns out that pci_setup_phb_io_dynamic does a simple ioremap
instead of an __ioremap_explicit into the reserved I/O space
region, which causes pcim_iomap->pci_iomap->ioport_map to fail
a sanity check for the virtual address of the I/O port.
Also, our setup ended up having no "primary" phb, which means
that pci_io_base never got initialized. This caused the same
bug independently.
This patch fixes both problems.
Hrm... dynamically added PHBs shouldn't use the reserved region.
We need to fix ioport_map instead I think. I'll have a look.
Ben.