On Tue, May 30, 2023 at 08:52:32PM +0200, Peter Zijlstra wrote:
That should really say that a nested #HV should never be raised by the
hypervisor, but if it is, then the guest should detect that and
self-terminate knowing that the hypervisor is possibly being malicious.
I've yet to see code that can do that reliably.
Tom; could you please investigate if this can be enforced in ucode?
Ideally #HV would have an internal latch such that a recursive #HV will
terminate the guest (much like double #MC and tripple-fault).
But unlike the #MC trainwreck, can we please not leave a glaring hole in
this latch and use a spare bit in the IRET frame please?
So have #HV delivery:
- check internal latch; if set, terminate machine
- set latch
- write IRET frame with magic bit set
have IRET:
- check magic bit and reset #HV latch