[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20230820202715.29006-1-decui@microsoft.com>
Date: Sun, 20 Aug 2023 13:27:06 -0700
From: Dexuan Cui <decui@...rosoft.com>
To: ak@...ux.intel.com, arnd@...db.de, bp@...en8.de,
brijesh.singh@....com, dan.j.williams@...el.com,
dave.hansen@...el.com, dave.hansen@...ux.intel.com,
haiyangz@...rosoft.com, hpa@...or.com, jane.chu@...cle.com,
kirill.shutemov@...ux.intel.com, kys@...rosoft.com,
linux-hyperv@...r.kernel.org, luto@...nel.org, mingo@...hat.com,
peterz@...radead.org, rostedt@...dmis.org,
sathyanarayanan.kuppuswamy@...ux.intel.com, seanjc@...gle.com,
tglx@...utronix.de, tony.luck@...el.com, wei.liu@...nel.org,
Jason@...c4.com, nik.borisov@...e.com, mikelley@...rosoft.com
Cc: x86@...nel.org, linux-kernel@...r.kernel.org,
linux-arch@...r.kernel.org, Tianyu.Lan@...rosoft.com,
rick.p.edgecombe@...el.com, andavis@...hat.com, mheslin@...hat.com,
vkuznets@...hat.com, xiaoyao.li@...el.com,
Dexuan Cui <decui@...rosoft.com>
Subject: [PATCH v2 0/9] Support TDX guests on Hyper-V (the Hyper-V specific part)
Hyper-V provides two modes for running Intel TDX VMs:
1) TD Partitioning mode with a paravisor (see [1]).
2) In "fully enlightened" mode with normal TDX shared bit control
over page encryption, and no paravisor
The first mode is similar to AMD SEV-SNP's vTOM mode (see [2]).
The second is similar to AMD SEV-SNP's C-bit mode(see [2]).
For #2, the v6 patchset was [3], which is later split into 2 parts:
the generic TDX part (see [4][5]), and the Hyper-V specific part, i.e.
the first 5 patches of this patchset. For the second part, I rebased
the patches to Tianyu's fully enlighted SNP v7 patchset [2]. Since this
is a straightforward rebasing, I keep the existing Acked-by and
Reviewed-by in the v6 patchset [3].
The next 3 patches of this patchset add the support for #1.
The last patch (the 9th patch) just makes some cleanup.
Please review all the 9 patches, which are also on my github
branch [6].
I tested the patches for a regular VM, a VBS VM, a SNP VM
with the paravisor, and a TDX VM with the paravisor and a TDX
VM without the paravisor, and an ARM64 VM. All the VMs worked
as expected.
If the patches all look good, I expect that Tianyu's patches [2]
are merged into the Hyper-V tree's hyperv-next branch first, then
these 9 patches can be merged afterwards.
Compared with v1, the difference is trivial: the v2 is mainly a rebase
to Tianyu's v7.
Thanks,
Dexuan
References:
[1] Intel TDX Module v1.5 TD Partitioning Architecture Specification
[2] https://lwn.net/ml/linux-kernel/20230818102919.1318039-1-ltykernel@gmail.com/
[3] https://lwn.net/ml/linux-kernel/20230504225351.10765-1-decui@microsoft.com/
[4] https://lwn.net/ml/linux-kernel/20230811214826.9609-1-decui%40microsoft.com/
[5] https://github.com/dcui/tdx/commits/decui/mainline/x86/tdx/v10
[6] https://github.com/dcui/tdx/commits/decui/mainline/x86/hyperv/tdx-v2
Dexuan Cui (9):
x86/hyperv: Add hv_isolation_type_tdx() to detect TDX guests
x86/hyperv: Support hypercalls for fully enlightened TDX guests
Drivers: hv: vmbus: Support fully enlightened TDX guests
x86/hyperv: Fix serial console interrupts for fully enlightened TDX
guests
Drivers: hv: vmbus: Support >64 VPs for a fully enlightened TDX/SNP VM
x86/hyperv: Introduce a global variable hyperv_paravisor_present
Drivers: hv: vmbus: Bring the post_msg_page back for TDX VMs with the
paravisor
x86/hyperv: Use TDX GHCI to access some MSRs in a TDX VM with the
paravisor
x86/hyperv: Remove hv_isolation_type_en_snp
arch/x86/hyperv/hv_apic.c | 15 +++-
arch/x86/hyperv/hv_init.c | 59 +++++++++++---
arch/x86/hyperv/ivm.c | 120 ++++++++++++++++++++++++++---
arch/x86/include/asm/hyperv-tlfs.h | 3 +-
arch/x86/include/asm/mshyperv.h | 42 +++++++---
arch/x86/kernel/cpu/mshyperv.c | 75 +++++++++++++++---
drivers/hv/connection.c | 2 +-
drivers/hv/hv.c | 88 +++++++++++++++++----
drivers/hv/hv_common.c | 46 ++++++++---
drivers/hv/hyperv_vmbus.h | 11 +++
include/asm-generic/mshyperv.h | 6 +-
11 files changed, 391 insertions(+), 76 deletions(-)
--
2.25.1
Powered by blists - more mailing lists