|
|
|
|
|
by marcan_42
1752 days ago
|
|
> interprets, rather than executes, the non-supported instructions. If only ARM virtualization could do that - it would've made my life much easier when writing the m1n1 hypervisor. There is no facility for intercepting and trapping unsupported instructions in EL0/1 into EL2. The undefined instruction exception goes straight to the guest. I had to hijack this for early bringup debugging and ended up patching the guest's exception table, but needless to say that isn't terribly nice... ARM macOS requires a GPU (WindowServer won't run without one), which means supporting Metal. So not only do you need to write a GPU driver, you need to write a GPU driver that supports Metal. Apple support paravirtualized GPUs... by passing through Metal, as I understand it. That's only easy if your host OS is macOS. |
|
> That said, we know at least the VMkernel is likely to work on other ARMs, though userspace might not like it if you don't have things like AMX in your CPU, or the SPRR stuff
Open-source XNU doesn't support Apple's CPU extensions, but macOS still runs just fine on it. (but no Rosetta of course)
> by passing through Metal, as I understand it
See ParavirtualizedGraphics.framework, which uses MetalSerializer.framework under the hood.