Most of what's happening here is pretty standard that's-how-a-minimal-hypervisor-works. The Outlook-data-migration part is interestingly janky, but not technically complex.
Most of what's happening here is pretty standard that's-how-a-minimal-hypervisor-works. The Outlook-data-migration part is interestingly janky, but not technically complex.
It's a ROM module with the strings "IBM V86" and "Secure OS boot support ROM", neither of which search engines seem to find any results for (perhaps deliberately?); neither now nor the roughly a decade and a half ago that I attempted to research it. This might now be the only reference to such a thing on the increasingly forgetful Internet.
This is the future, after AI breaks down and nobody know how their fancy contraptions work anymore.
tf-a boots a "trusted environment" (a secure OS, e.g. op-tee), which defers back to tf-a after initial setup. tf-a then boots the main OS (e.g. linux). apps can be loaded into the TE at runtime, the main OS can defer execution to the TE, and the main OS's scheduler can coordinate with the TE to allow pseudo-preemption. coupled with hardware modules (an SPU, TZC, and GIC) in the fabric, specific interrupts, memory regions, and hardware peripherals can be marked as "secure" (i.e. accessible only by the TE) or "non-secure" (i.e. accessible by the main OS).
what's unique (i think? i may be misunderstanding.) in this case is that the TE is an OS without its own scheduler. it depends on the main OS's scheduler to defer control whenever the main OS deems appropriate. each OS has directly registered their own interrupts, so the firmware is really only handling one interrupt: when the main OS defers to the TE.
Generalizing massively, a simple hypervisor runs a small amount of code at boot to setup its own state somewhere, and injects its interrupt handlers into various places in the system, and finally chain boots the real OS. When the real OS tries to communicate with the underlying hardware, the hypervisor interrupt is triggered and it does it's stuff.
With modern virtualization acceleration, the hypervisor can enable and handle interrupts for an even wider range of events that it might need in order to efficiently interpose the OS.
A more full-featured hypervisor may start to look like a mini-OS with its own scheduler, etc. But a simple hypervisor is basically like an old DOS Terminate-and-Stay-Resident executable.