On Wed, 2016-12-14 at 20:26 +0200, Marcel Apfelbaum wrote:
> > The Root complex includes the PCI bus, some configuration
> > registers if
> > needed, provides access to the configuration space, translates
> > relevant CPU
> > reads/writes to PCI(e) transactions...
>
> Do those configuration registers appear within PCI space, or
> outside
> it (e.g. raw MMIO or PIO registers)?
>
Root Complexes use MMIO to expose the PCI configuration space,
they call it ECAM (enhanced configuration access mechanism) or
MMConfig.
Not all of them do. There are plenty of PCIe RCs out there that
do config space using different mechanisms such as the good old
indirect address/data method, such as ours. IE. Even in real "bare
metal" powernv, where the root port is visible to Linux, we still
go through firmware for config space to get through to those
registers (among other things).
My PHB3 implementation (not upstream yet and a bit bitrotted by now)
exposed PCIe that way including extended config space and that was
working fine.
Cheers,
Ben.