Reading Dr. Colin Percival's blog post on running FreeBSD on AWS Firecracker makes me wish someone would port FreeBSD to the zSeries architecture.
In the first decade of the 2000s, a company called Sine Nomine Associates was working on porting OpenSolaris to the zSeries, and had gotten as far as releasing a public demo. Then Oracle bought Sun Microsystems and killed off OpenSolaris, and the project was cancelled.
The FreeBSD modifications for Firecracker reminded me of the that project, because just as FreeBSD does I/O using simplified virtio devices, the Sine Nomine port did I/O using DIAGNOSE instructions that talked to the underlying zVM.
The DIAGNOSE instruction was originally an undocumented instruction used by the MVS operating system to do model-specific things like reconfiguring the hardware. In the IBM zArchitecture Principles of Operation, which documents the zSeries architecture, it says "The CPU performs built-in diagnostic functions, or other model-dependent functions. The purpose of the diagnostic functions is to verify proper functioning of equipment and to locate faulty components. Other model-dependent functions may include disabling of failing buffers, reconfiguration of CPUs, storage, and channel paths, and modification of control storage". However, zVM repurposed the DIAGNOSE instruction as a way to talk to the hypervisor. Normally, programs use a Supervisor Call (SVC) instruction to context switch into the kernel, but using DIAGNOSE to talk to the hypervisor doesn't interfere with the guest operating system's use of the SVC instruction.
The Sine Nomine port used DIAGNOSE instructions for block I/O, network I/O, I/O discovery, and memory discovery. This greatly reduces the porting effort.
I really wish someone who likes FreeBSD and has money to spare would hire Sine Nomine Associates to resurrect the work they did on the OpenSolaris port and do a FreeBSD port. (Hey, it makes more sense than paying to send a car to Mars, at least to me.)
One can only hope.
In the first decade of the 2000s, a company called Sine Nomine Associates was working on porting OpenSolaris to the zSeries, and had gotten as far as releasing a public demo. Then Oracle bought Sun Microsystems and killed off OpenSolaris, and the project was cancelled.
The FreeBSD modifications for Firecracker reminded me of the that project, because just as FreeBSD does I/O using simplified virtio devices, the Sine Nomine port did I/O using DIAGNOSE instructions that talked to the underlying zVM.
The DIAGNOSE instruction was originally an undocumented instruction used by the MVS operating system to do model-specific things like reconfiguring the hardware. In the IBM zArchitecture Principles of Operation, which documents the zSeries architecture, it says "The CPU performs built-in diagnostic functions, or other model-dependent functions. The purpose of the diagnostic functions is to verify proper functioning of equipment and to locate faulty components. Other model-dependent functions may include disabling of failing buffers, reconfiguration of CPUs, storage, and channel paths, and modification of control storage". However, zVM repurposed the DIAGNOSE instruction as a way to talk to the hypervisor. Normally, programs use a Supervisor Call (SVC) instruction to context switch into the kernel, but using DIAGNOSE to talk to the hypervisor doesn't interfere with the guest operating system's use of the SVC instruction.
The Sine Nomine port used DIAGNOSE instructions for block I/O, network I/O, I/O discovery, and memory discovery. This greatly reduces the porting effort.
I really wish someone who likes FreeBSD and has money to spare would hire Sine Nomine Associates to resurrect the work they did on the OpenSolaris port and do a FreeBSD port. (Hey, it makes more sense than paying to send a car to Mars, at least to me.)
One can only hope.