Re: [RFC PATCH V6 01/14] x86/sev: Add a #HV exception handler

From: Tom Lendacky
Date: Wed Jun 07 2023 - 14:20:30 EST


On 5/31/23 04:14, Peter Zijlstra wrote:
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

Hi Peter,

I talked with the hardware team about this and, unfortunately, it is not practical to implement. The main concerns are that there are already two generations of hardware out there with the current support and, given limited patch space, in addition to the ucode support to track and perform the latch support, additional ucode support would be required to save/restore the latch information when handling a VMEXIT during #HV processing.

Thanks,
Tom