RE: [PATCH 2/9] x86/hyperv: Support hypercalls for fully enlightened TDX guests
From: Dexuan Cui <decui@microsoft.com>
Date: 2023-08-23 17:40:23
Also in:
linux-arch, lkml
From: Dexuan Cui <decui@microsoft.com>
Date: 2023-08-23 17:40:23
Also in:
linux-arch, lkml
From: Tianyu Lan <redacted> Sent: Wednesday, August 23, 2023 12:06 AM To: Dexuan Cui <decui@microsoft.com>; ak@linux.intel.com; [...] On 8/12/2023 6:18 AM, Dexuan Cui wrote:quoted
A fully enlightened TDX guest on Hyper-V (i.e. without the paravisor) only uses the GHCI call rather than hv_hypercall_pg. In hv_do_hypercall(), Hyper-V requires that the input/output addresses must have the cc_mask.
I'll remove the above sentence, since this is no longer true on generally available Hyper-V: cc_mask still works, but it's not required.
quoted
[...]Reviewed-by: Tianyu Lan <redacted>
Thanks!
quoted
--- a/arch/x86/hyperv/hv_init.c +++ b/arch/x86/hyperv/hv_init.c@@ -481,6 +481,10 @@ void __init hyperv_init(void) /* Hyper-V requires to write guest os id via ghcb in SNP IVM. */ hv_ghcb_msr_write(HV_X64_MSR_GUEST_OS_ID, guest_id); + /* A TDX guest uses the GHCI call rather than hv_hypercall_pg. */ + if (hv_isolation_type_tdx()) + goto skip_hypercall_pg_init; +Nitpick: Put hypercal page initialization code into a sepearate function and skip the function in the tdx guest instead of adding the label.
This is doable. The intention here is to minimize the changes. In the future, we'll introduce a hypercall function structure. We can do code refactoring at that time.