Merced guest support on QEMU

From DisNCord Community Wiki
Jump to navigation Jump to search

To date, the only way to run OSes like the 2002 variant of Windows XP 64-Bit Edition and/or AIX on Itanium has been to try to get a hold of increasingly scarce and expensive systems based on Intel's SDV with the "Merced" revision of the Intel Itanium processor, such as the HP Workstation i2000. Given the relative scarcity of these systems, it's fairly difficult to preserve software such as AIX on Itanium if very few people are actually able to install the OS in the first place.


Recently, an old version (3.0.31) of Simics was discovered to have support for simulating the Merced CPU, however it has a few downsides.

  • It doesn't have enough of the CPU implemented to be able to run either the 2002 IA-64 build of Windows, or AIX.
  • The firmware needed to bootstrap AIX on Itanium is not present and hasn't resurfaced.
  • The emulator somewhat by design is primarily intended for bootstrapping Linux
  • The emulator's old and closed source, it won't be able to be adapted to newer OSes or receive performance/emulation optimizations.


Given these downsides, it's evident that relying on Simics or physical hardware to preserve these old relics of history simply isn't going to be viable. Furthermore, in general QEMU to date does not have full system Itanium guest support in any capacity. This initiative aims to fix both problems and help people who either can't afford expensive Itanium hardware or don't have the space for it experience the quirks of this cursed architecture.

Objectives

Objective: add full system guest support for emulating a "Merced" Itanium CPU (with the reference system being an HP Workstation i2000, based on Intel's SDV) that is able to boot any operating system that Merced machines were able to boot, including the 2002 IA-64 build of Windows XP and AIX on Itanium.

Side note: I do want to have the x86 translation be offloaded to the host CPU if running on an x86/x64 platform but this is a side goal for now (to increase the speed of this)

Current status

Just started. Working on figuring out how one adds a new architecture or target to QEMU, working on building out a model of the processor, looking to ski or possibly reverse engineering simics to get an idea but otherwise relying a lot on the Itanium documentation from 2000-2002 era (intentionally avoiding 2006+ era documentation at the moment due to keeping the project strictly for Merced for the time being (McKinley support will be considered only after Merced is said and done).


Things I need

PAL, SAL, and EFI dump from a HP i2000 or some other Intel SDV based Merced platform. (Update as of 12/25/2022 - this is being worked on! Thanks to tenox, et al. for helping take this on)