pci: add support for MMIO config space
authorBarret Rhoden <brho@cs.berkeley.edu>
Wed, 14 Aug 2019 15:30:15 +0000 (11:30 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Wed, 14 Aug 2019 15:36:10 +0000 (11:36 -0400)
commita4989aa87fda0432514692e30cffebba660ce546
tree99f4debab0f1916b1d7c0f40f0edba50d3151de6
parent39fcde41f1bc655fac366738a2480213c3bcef35
pci: add support for MMIO config space

MMIO config space has two benefits: it does not require the global PCI
lock, and it easily works with extended PCI config space (i.e. above 255).

For whatever reason, I had an old note that said you could use PIO for
the extended config space.  I probably got that from looking at Linux or
something.  It might have worked on some older machines for me; I don't
recall.  But it certainly does not work with all machines.  Maybe it was
an AMD/Intel thing.

I left support for PIO in case we run into a weird machine that doesn't
have the ACPI MCFG table or for debugging.  Though even my QEMU has an
MCFG.  We can remove it if it is a pain - maybe when we make PCI more
architecture-independent.  Right now it is x86-specific, both in PIO and
MMIO ops.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
kern/arch/x86/pci.c
kern/arch/x86/pci.h