For various historical reasons the initialisation of the isapc machine is closely
intertwined with the initialisation of the pc machine, which is preventing some
future improvements to the pc machine initialisation logic.
Since the consensus [1] was that the isapc is still useful for testing and running
older OSs, this series splits the isapc machine and its main initialisation
routine pc_init_isa() into a separate isapc.c file to reduce the maintenance
burden on pc machine developers.
Signed-off-by: Mark Cave-Ayland <mark.caveayland@nutanix.com>
[1] https://lists.gnu.org/archive/html/qemu-devel/2024-03/msg06137.html
(Patches still needing review: 2, 7)
v7:
- Rebase onto master
- Add R-B tags from Xiaoyao
- Squash patch 13 into patch 5
- Add new patch 2 specifying a hard 3.5G RAM limit for the isapc machine and
adjust max_ram_below_4g accordingly to provide consistent behaviour between
TCG and KVM accelerators
- Add new patch 7 to remove igvm support from isapc (it is not supported according
to our own docs)
- Add assert(pcmc->pci_enabled) in pc_init1() and remove incorrect #ifdef change
from patch 15
- Add warning if -cpu host is passed to the isapc machine similar to if -cpu max
is specified (these are both effectively invalid but are added in case of
tooling that may generate incorrect command lines)
v6:
- Rebase onto master
- Add R-B/S-o-B tags from Phil
- Specify isapc max_ram_below_4g as 4GB as suggested by Phil
v5:
- Add warn_report() to patch 1 as requested by Phil
- Add patch 3 to inline pc_xen_hvm_init_pci() as suggested by Phil
- Add R-B tags from Phil
v4:
- Rebase onto master
- Add patch 2 to remove unused loader.h header as suggested by Bernhard
- Add patches 16-18 to tidy up the pc_piix headers and the pc_piix/isapc
rom_memory variable after the isapc split also suggested by Bernhard
v3:
- Rebase onto master
- Add patch 1 to restrict isapc machine to 32-bit x86 CPUs as suggested by
Philippe
- Include logic in patch 1 to handle the case if an isapc machine is
launched with -cpu max as suggested by Daniel
- Add patch 13 to tidy-up pc_init1() for the i440fx-pc machine in the same
way as patch 11 does for the isapc machine as suggested by Bernhard
v2:
- Rebase onto master to account for the fix in commit 0b006153b7
("hw/i386/pc_piix: Fix RTC ISA IRQ wiring of isapc machine")
- Replace verbatim MIT licence text with SPDX identifier as discussed
with Daniel
Mark Cave-Ayland (19):
hw/i386/pc_piix.c: restrict isapc machine to 32-bit CPUs
hw/i386/pc_piix.c: restrict isapc machine to 3.5G memory
hw/i386/pc_piix.c: remove include for loader.h
hw/i386/pc_piix.c: inline pc_xen_hvm_init_pci() into pc_xen_hvm_init()
hw/i386/pc_piix.c: duplicate pc_init1() into pc_isa_init()
hw/i386/pc_piix.c: remove pcmc->pci_enabled dependent initialisation
from pc_init_isa()
hw/i386/pc_piix.c: remove igvm initialisation from pc_init_isa()
hw/i386/pc_piix.c: remove SMI and piix4_pm initialisation from
pc_init_isa()
hw/i386/pc_piix.c: remove SGX initialisation from pc_init_isa()
hw/i386/pc_piix.c: remove nvdimm initialisation from pc_init_isa()
hw/i386/pc_piix.c: simplify RAM size logic in pc_init_isa()
hw/i386/pc_piix.c: hardcode hole64_size to 0 in pc_init_isa()
hw/i386/pc_piix.c: remove pc_system_flash_cleanup_unused() from
pc_init_isa()
hw/i386/pc_piix.c: always initialise ISA IDE drives in pc_init_isa()
hw/i386/pc_piix.c: assume pcmc->pci_enabled is always true in
pc_init1()
hw/i386: move isapc machine to separate isapc.c file
hw/i386/pc_piix.c: remove unused headers after isapc machine split
hw/i386/pc_piix.c: replace rom_memory with pci_memory
hw/i386/isapc.c: replace rom_memory with system_memory
hw/i386/Kconfig | 3 -
hw/i386/isapc.c | 189 +++++++++++++++++++++++++++++++++
hw/i386/meson.build | 1 +
hw/i386/pc_piix.c | 252 ++++++++++++++------------------------------
4 files changed, 272 insertions(+), 173 deletions(-)
create mode 100644 hw/i386/isapc.c
--
2.43.0