« Previous | Next » 

Revision ae0a5466

IDae0a54664c76f1d2a2a7a268266d47b4e8c12a4c

Added by Avi Kivity over 12 years ago

440fx: fix PAM, PCI holes

The current implementation of PAM and the PCI holes is broken in several
ways:

- PCI BARs are not restricted to the PCI hole (a BAR may hide memory)
- PCI devices do not respect PAM (if a PCI device maps a region while
PAM maps the region to RAM, the request will be honored)

This patch fixes things by introducing a pci address space, and using
memory region aliases to represent PAM regions, SMRAM, and PCI holes.

The memory hierarchy looks something like

system_memory |
+--- low memory alias (0-0xe0000000) | | | +-- ram@0 |
+--- high memory alias (0x100000000-EOM) | | | +-- ram@0xe0000000 |
+--- pci hole alias (end of low memory-0x100000000) | | | +-- pci@end-of-low-memory | |
+--- pam[n] (0xc0000-0xc3fff etc) (when set to pci, priority 1) | | | +-- pci@0xc4000 etc |
+--- smram (0xa0000-0xbffff) (when set to pci/vga, priority 1) |
+-- pci@0xa0000 etc

ram (simple ram region)

pci |
+--- BARn |
+--- VGA 0xa0000-0xbffff |
+--- ROMs

Signed-off-by: Avi Kivity <>
Signed-off-by: Anthony Liguori <>

Files

  • added
  • modified
  • copied
  • renamed
  • deleted

View differences