Qemu creates 13 enabled memory regions and 39 disabled memory regions for pam. in normal setup, more than half of all memory regions in system root region are memory regions for pam. Which slow down all memory region related operations.
This patch makes pam configurable, by default it is enabled. it keeps the old behavior by default. you can disable pam by appending pam=off to -machine. If pam is disabled, all memory regions for pam are gone, and some memory region operations are gone since these memory regions are gone, and memory region operations is fast because there are much less memory regions. This patch works on both seabios and qboot, it reduces Qemu heap size from ~12MB to ~9MB if pam is disabled, pc.rom is useless, so it is disabled as well. when pam is disabled, pc.bios and isa.bios are writeable memory region, and isa.bios is put under system memory region, otherwise isa.bios is acctually disabled because it is under pci memory region which has lower priority than pc.ram region. Anthony Xu (4): pam: refactor PAM related code pam: Make PAM configurable pam: disable pc.rom when pam is disabled pam: setup pc.bios hw/i386/pc.c | 33 ++++++++++++++++++++++------ hw/i386/pc_sysfw.c | 30 +++++++++++++++++-------- hw/pci-host/piix.c | 62 ++++++++++++++++++++++++++++++++++++++-------------- hw/pci-host/q35.c | 43 ++++++++++++++++++++++-------------- include/hw/i386/pc.h | 6 ++++- 5 files changed, 123 insertions(+), 51 deletions(-) -- 1.8.3.1