(This is a guest post by Antoni Sawicki aka Tenox)
Project Monterey was an attempt to unify the fragmented Unix market of the 90s in to a single, cross vendor Unix OS that would run on the upcoming Intel Itanium (and others) CPU. The main collaborators were: IBM, who brought its AIX, SCO brought UnixWare, HP was supposed to bring parts of HP-UX and Sequent DYNIX/ptx. Ironically the project shared fate of the Itanium CPU—it totally failed. In the end Linux took spot of the “single Unix OS”. IBM donated AIX pieces to Linux instead and the main legacy of Project Monterey was the famous SCO vs IBM lawsuit.
IBM did however produce AIX version for the Itanium architecture! According to Wikipedia, some 30+ licenses were sold in 2001-2002. For years a dedicated group of individuals was trying to locate a copy of the legendary OS. It seemed that the OS was lost forever…
…until some 21 years later friends of NCommander checked in with a set of AIX5L IA64 CDROMS! The CDs have now been dumped and you can download them here. Unfortunately downloading will not get you much closer to actually running this. As of today no publictly available virtualization or emulation platform can run this. Yes we tried Simics, looked at QEMU IA64 and XEN/KVM for IA64, etc. The OS will not boot on modern Itanium 2 (McKinley) CPUs, only the early “pre-release” Itanium 1 aka Merced. Allegedly the only emulator ever capable of running it was the super elusive unobtanium called Intel SoftSDV.
It’s currently speculated that AIX5L IA64 will work on and only on so called “Intel Software Development Vehicle (SDV)” sometimes referred to as “Intel Engineering Sample”. It was an Intel made machine, later sold in several OEM branded version: IBM IntelliStation Z Pro 6894, HP i2000 Workstation, SGI 750, Dell Precision Workstation 730 and Fujitsu-Siemens Celsius 880.
…yes, they all look alike because all of them were in fact produced by Intel with custom case badges and paints.
Luckily I was able to score a working HP i2000. AIX booted up and installed on a first try:
Initially I was not able to get the onboard NIC working. Upon short investigation AIX5L IA64 supports only two network cards:
devices.pci.23100020.rte - IBM PCI 10/100 Ethernet Adapter Software
devices.pci.ae120100.rte - Gigabit Ethernet PCI Adapter Software
The AIX Itanium Early Adopters Release Notes mentions a few other cards but I do not see drivers for these in the OS. The doc mentions “Extended Hardware Drivers CD” which we don’t have.
Luckily again I was able to find a working NIC on eBay!
The system comes with X11 and CDE but so far I was not able to get any GPU working beyond basic text mode. I tried many different video cards from that era but there simply doesn’t appear to be any driver in the OS except for basic VGA / LFT mode. I think the key to getting video works is the previously mentioned extended hardware drivers cd.
Update: Thanks to efforts of TRN we now have a working GCC and ports of lots of apps!
Finally, if you want to read more I have found some interesting pieces on ibmfiles and various mirrors here and here.
If you’ve got a working network connection I suppose you could always point the X display at a remote server…
Is there some effort to find out why qemu can’t run these images as well?
I’m sad that neozeed blog imploded š
Could it be possible than the problem is not with the Itanium 2 itself, but with the platform? Merced platform used the Intel 460GX Chipset, and I recall peeking its datasheet out of curiosity and found that it was an ugly mess of both new Itanium features plus a full set of legacy PC platform stuff (Like support for 8259A DMAC), as the original plan was that Itanium could also be used to natively run x86 Software, and to do that you needed not only the CPU compatibility, but also the platform.
IntelĀ® 460GX Chipset Datasheet (248703-001): https://peertje.daanberg.net/drivers/intel/download.intel.com/design/archives/itanium/downloads/24870301.pdf
IntelĀ® 460GX Chipset System
Software Developerās Manual (248704-001): https://www.ia64-linux.org/doc/24870401.pdf
Meanwhile, Itanium 2 used the E8870 Chipset. The datasheet does NOT mention 8259A compatibility, whereas 460GX did, so I would not be surprised if they got rid of the compatibility layer:
IntelĀ® E8870 Scalable Node Controller
(SNC) Datasheet (251112-001): https://pccomponents.com/datasheets/INTEL-251112.PDF
Bonus: https://www.informit.com/articles/article.aspx?p=482339&seqNum=6
I would speculate than the reason why it works specifically on Merced and not on Itanium 2 nor any “pure” IA64 emulator is because it may be reliant on either x86 bootstrapping code and/or something 460GX specific.
According to early news articles, the original Merced should be able to run unmodified x86 Software in such a way that you could natively run Windows 9x or DOS if you wanted to (At a performance cost due to the x86-to-IA64 Hardware translation layer, of course). I don’t know if this capability was demoed and actually works on actual Hardware besides what those news articles claimed, but the 460GX Chipset seems to support your standard set of PC/AT support chips as if native PC compatibility was part of the plan. This was later dropped on Itanium 2 platforms.
If comparing the 460GX and E8870 Datasheets, these are the sections of importance:
460GX:
4.1.1.1 DOS Region
The DOS Region is the lowest 640 KB, in the address range 0h to 9_FFFFh. DOS applications execute here. The lower 512K of this region is always mapped to main memory, and is accessible by the processors and by any PCI bus. The upper 128K of this region can be mapped to either PCI or main memory, and is mapped using one of the MAR registers. The range defaults to memory.
E8870:
4.1.1.1 DOS Region
DOS applications execute in the lowest 640 KB, in the address range 0h to 9_FFFFh. This range is always mapped to main memory. Note that older chipsets allowed the range from 8_0000h to 9_FFFFh to be mapped to the compatibility bus. The E8870 chipset does not support this legacy feature.
460GX:
15.1 PCI Interface
The IFB incorporates a fully PCI Bus compatible master and slave interface. As a PCI master, the IFB runs cycles on behalf of DMA, Bus Master IDE, and USB. The IFB implements an internal arbiter to request the PCI bus IDE and USB for these master Functions.
All memory cycles run by the IFB master interface target system DRAM.
As a PCI slave, the IFB responds to memory cycles destined for the firmware and I/O cycles to the integrated legacy Functions (8237, 8254, 8259), the integrated IDE controller, and the relocate-able I/O spaces for ACPI, IDE, USB, and SM Bus.
E8870:
No counterpart. 8237 PIC, 8254 PIT and 8259 DMAC are nowhere mentioned.
Bonus: The E8870 Datasheet has the 4.1.1.3 MDA Memory Range section, where it talks about memory mapping for the memory range used by the original IBM MDA card. The 460GX Datasheet does NOT have this section. So, how on earth can such a 1981 feature that was missing in Itanium be mentioned for Itanium 2 if they were getting rid of most legacy stuff anyways??
Merced’s X86 did work and was the only thing that could be tested in the earliest Itanium benchmarks. It was slow; roughly matching a Pentium-100 in most of the benchmarks. Not quite the performance expected. The emulator done for Itanium 2 was much more competitive managing to match the Pentium IV clock for clock. Still not a good thing given the low clocks Itanium achieved.
I found benchmarks like those you described, like in this review: https://tweakers.net/reviews/204/7/intel-itanium-sneak-preview-testing-the-itanium.html
Pentium 100 MHz performance on x86 Software – at least the few that actually worked. They couldn’t benchmark IA64 performance cause in early 2001 there was no Software. However, notice than these were run on a Beta version (build 2296) from Windows Server 2003 for IA64, as if its x86 support was a sort of Virtual 8086 Mode/WoW64 or something.
I have yet to see Merced actually running standard x86 DOS or Win9x, which is what prerelease news from 1998/99 claimed that it could do. Wouldn’t mind a “can it play Doom?” using MS-DOS 6.22 with original binaries. It makes you think than a Merced emulator would be quite complex thing giving how much of a hybrid the platform was.
I wouldn’t be surprised if early IA64 Software targeting Merced has some cross dependency on x86 or PC platform features, which is why I suggested such a thing. I would compare that to Windows 7 booting in UEFI Mode, which forces you to have CSM enabled for BIOS compatibility since it uses some INT 10h calls for graphics which are unavailable in pure UEFI environments and stops booting if not found (Unless you use modded boot loaders or VGA Driver).
Very interesting that i was interested in IA64 rencently too,but there were some software BT solution for IA64,but most of them working only for a specific goals,hope someone could improve these gadgets into full system emulation
Thinking about the mention of the MDA memory region: maybe the idea was that if you only need a basic text mode on boot, it’s simpler to do it by emulating an MDA (4k text framebuffer only) than VGA (text and graphics modes, 4 planes of video, all sorts of accelerated writes, DAC…). On an x86 PC it’s necessary to have VGA compatibility at boot since it’s needed for things like the Windows 9x startup screen, but perhaps the hope with Itanium was that they wouldn’t need all that.
Certainly late-1990s Intel chipsets like the 440BX and 440LX still supported booting when the only video card in the system was an MDA.
Wouldn’t be surprised if this was mostly for legacy option ROMs where MDA was good enough.
AlphaBIOS had a built in 8086 emulator solely to run VGA option ROMs on PCI cards to increase hardware compatibility, at least in a pre-boot environment. Wonder if Intel was trying that with Merced even after they dropped the rather ridiculous “it can boot DOS and Win9x” idea. Thing is, EFI had its own video option ROM standard, UGA.
photo of the same system from Intel
https://photos.app.goo.gl/9xt3gjZrgdaheuPQ8