All of lore.kernel.org
 help / color / mirror / Atom feed
From: Zhi Wang <zhi.wang.linux@gmail.com>
To: Tianyu Lan <ltykernel@gmail.com>
Cc: luto@kernel.org, tglx@linutronix.de, mingo@redhat.com,
	bp@alien8.de, dave.hansen@linux.intel.com, x86@kernel.org,
	hpa@zytor.com, seanjc@google.com, pbonzini@redhat.com,
	jgross@suse.com, tiala@microsoft.com, kirill@shutemov.name,
	jiangshan.ljs@antgroup.com, peterz@infradead.org,
	ashish.kalra@amd.com, srutherford@google.com,
	akpm@linux-foundation.org, anshuman.khandual@arm.com,
	pawan.kumar.gupta@linux.intel.com, adrian.hunter@intel.com,
	daniel.sneddon@linux.intel.com,
	alexander.shishkin@linux.intel.com, sandipan.das@amd.com,
	ray.huang@amd.com, brijesh.singh@amd.com, michael.roth@amd.com,
	thomas.lendacky@amd.com, venu.busireddy@oracle.com,
	sterritt@google.com, tony.luck@intel.com,
	samitolvanen@google.com, fenghua.yu@intel.com,
	linux-kernel@vger.kernel.org, kvm@vger.kernel.org,
	linux-hyperv@vger.kernel.org, linux-arch@vger.kernel.org
Subject: Re: [RFC PATCH V3 00/16] x86/hyperv/sev: Add AMD sev-snp enlightened guest support on hyperv
Date: Fri, 3 Feb 2023 01:00:56 +0200	[thread overview]
Message-ID: <20230203010056.000021af@gmail.com> (raw)
In-Reply-To: <20230122024607.788454-1-ltykernel@gmail.com>

On Sat, 21 Jan 2023 21:45:50 -0500
Tianyu Lan <ltykernel@gmail.com> wrote:

1) I am thinking if it is a good time to organize a common code path for
enlightened VM on hyper-v.

Wouldn't it be better to have a common flag for enlightened VM? 
Like bool hv_isolation_type_enlightened()

Many of the decryption of the post msg page... are also required
in the enlightened TDX guest, they are not AMD-specific. 

Then in the "TDX guest on hyper-V" patch set, Dexuan can save some LOCs instead
of ending up with if (hv_isolation_type_en_snp() ||
hv_isolation_type_en_tdx())...

2) It seems the AMD SEV-SNP enlightened guest on hyper-V is implemented as
CC_VENDOR_AMD, while TDX enlightened guest is still implemented as
CC_VENDOR_HYPERV. I am curious about the reason.

> From: Tianyu Lan <tiala@microsoft.com>
> 
> This patchset is to add AMD sev-snp enlightened guest
> support on hyperv. Hyperv uses Linux direct boot mode
> to boot up Linux kernel and so it needs to pvalidate
> system memory by itself.
> 
> In hyperv case, there is no boot loader and so cc blob
> is prepared by hypervisor. In this series, hypervisor
> set the cc blob address directly into boot parameter
> of Linux kernel. If the magic number on cc blob address
> is valid, kernel will read cc blob.
> 
> Shared memory between guests and hypervisor should be
> decrypted and zero memory after decrypt memory. The data
> in the target address. It maybe smearedto avoid smearing
> data.
> 
> Introduce #HV exception support in AMD sev snp code and
> #HV handler.
> 
> Change since v2:
>        - Remove validate kernel memory code at boot stage
>        - Split #HV page patch into two parts
>        - Remove HV-APIC change due to enable x2apic from
>        	 host side
>        - Rework vmbus code to handle error of decrypt page
>        - Spilt memory and cpu initialization patch. 
> 
> Change since v1:
>        - Remove boot param changes for cc blob address and
>        use setup head to pass cc blob info
>        - Remove unnessary WARN and BUG check
>        - Add system vector table map in the #HV exception
>        - Fix interrupt exit issue when use #HV exception
> 
> Ashish Kalra (2):
>   x86/sev: optimize system vector processing invoked from #HV exception
>   x86/sev: Fix interrupt exit code paths from #HV exception
> 
> Tianyu Lan (14):
>   x86/hyperv: Add sev-snp enlightened guest specific config
>   x86/hyperv: Decrypt hv vp assist page in sev-snp enlightened guest
>   x86/hyperv: Set Virtual Trust Level in vmbus init message
>   x86/hyperv: Use vmmcall to implement Hyper-V hypercall in sev-snp
>     enlightened guest
>   clocksource/drivers/hyper-v: decrypt hyperv tsc page in sev-snp
>     enlightened guest
>   x86/hyperv: decrypt vmbus pages for sev-snp enlightened guest
>   drivers: hv: Decrypt percpu hvcall input arg page in sev-snp
>     enlightened guest
>   x86/hyperv: Initialize cpu and memory for sev-snp enlightened guest
>   x86/hyperv: SEV-SNP enlightened guest don't support legacy rtc
>   x86/hyperv: Add smp support for sev-snp guest
>   x86/hyperv: Add hyperv-specific hadling for VMMCALL under SEV-ES
>   x86/sev: Add a #HV exception handler
>   x86/sev: Add Check of #HV event in path
>   x86/sev: Initialize #HV doorbell and handle interrupt requests
> 
>  arch/x86/entry/entry_64.S             |  82 ++++++
>  arch/x86/hyperv/hv_init.c             |  43 +++
>  arch/x86/hyperv/ivm.c                 |  10 +
>  arch/x86/include/asm/cpu_entry_area.h |   6 +
>  arch/x86/include/asm/hyperv-tlfs.h    |   4 +
>  arch/x86/include/asm/idtentry.h       | 105 ++++++-
>  arch/x86/include/asm/irqflags.h       |  10 +
>  arch/x86/include/asm/mem_encrypt.h    |   2 +
>  arch/x86/include/asm/mshyperv.h       |  56 +++-
>  arch/x86/include/asm/msr-index.h      |   6 +
>  arch/x86/include/asm/page_64_types.h  |   1 +
>  arch/x86/include/asm/sev.h            |  13 +
>  arch/x86/include/asm/svm.h            |  59 +++-
>  arch/x86/include/asm/trapnr.h         |   1 +
>  arch/x86/include/asm/traps.h          |   1 +
>  arch/x86/include/asm/x86_init.h       |   2 +
>  arch/x86/include/uapi/asm/svm.h       |   4 +
>  arch/x86/kernel/cpu/common.c          |   1 +
>  arch/x86/kernel/cpu/mshyperv.c        | 228 ++++++++++++++-
>  arch/x86/kernel/dumpstack_64.c        |   9 +-
>  arch/x86/kernel/idt.c                 |   1 +
>  arch/x86/kernel/sev.c                 | 395 ++++++++++++++++++++++----
>  arch/x86/kernel/traps.c               |  42 +++
>  arch/x86/kernel/vmlinux.lds.S         |   7 +
>  arch/x86/kernel/x86_init.c            |   4 +-
>  arch/x86/mm/cpu_entry_area.c          |   2 +
>  drivers/clocksource/hyperv_timer.c    |   2 +-
>  drivers/hv/connection.c               |   1 +
>  drivers/hv/hv.c                       |  33 ++-
>  drivers/hv/hv_common.c                |  26 +-
>  include/asm-generic/hyperv-tlfs.h     |  19 ++
>  include/asm-generic/mshyperv.h        |   2 +
>  include/linux/hyperv.h                |   4 +-
>  33 files changed, 1102 insertions(+), 79 deletions(-)
> 


  parent reply	other threads:[~2023-02-02 23:01 UTC|newest]

Thread overview: 60+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-01-22  2:45 [RFC PATCH V3 00/16] x86/hyperv/sev: Add AMD sev-snp enlightened guest support on hyperv Tianyu Lan
2023-01-22  2:45 ` [RFC PATCH V3 01/16] x86/hyperv: Add sev-snp enlightened guest specific config Tianyu Lan
2023-01-31 17:34   ` Michael Kelley (LINUX)
2023-02-02  4:01     ` Tianyu Lan
2023-01-22  2:45 ` [RFC PATCH V3 02/16] x86/hyperv: Decrypt hv vp assist page in sev-snp enlightened guest Tianyu Lan
2023-01-22  2:45 ` [RFC PATCH V3 03/16] x86/hyperv: Set Virtual Trust Level in vmbus init message Tianyu Lan
2023-01-31 17:55   ` Michael Kelley (LINUX)
2023-02-03  3:32     ` Tianyu Lan
2023-01-22  2:45 ` [RFC PATCH V3 04/16] x86/hyperv: Use vmmcall to implement Hyper-V hypercall in sev-snp enlightened guest Tianyu Lan
2023-01-22  2:45 ` [RFC PATCH V3 05/16] clocksource/drivers/hyper-v: decrypt hyperv tsc page " Tianyu Lan
2023-01-22  2:45 ` [RFC PATCH V3 06/16] x86/hyperv: decrypt vmbus pages for " Tianyu Lan
2023-01-31 17:58   ` Michael Kelley (LINUX)
2023-02-03  4:11     ` Tianyu Lan
2023-01-22  2:45 ` [RFC PATCH V3 07/16] drivers: hv: Decrypt percpu hvcall input arg page in " Tianyu Lan
2023-01-31 18:02   ` Michael Kelley (LINUX)
2023-02-03  5:23     ` Tianyu Lan
2023-01-22  2:45 ` [RFC PATCH V3 08/16] x86/hyperv: Initialize cpu and memory for " Tianyu Lan
2023-01-31 18:20   ` Michael Kelley (LINUX)
2023-02-03  5:58     ` Tianyu Lan
2023-01-22  2:45 ` [RFC PATCH V3 09/16] x86/hyperv: SEV-SNP enlightened guest don't support legacy rtc Tianyu Lan
2023-01-31 14:03   ` Wei Liu
2023-02-02  3:43     ` Tianyu Lan
2023-01-22  2:46 ` [RFC PATCH V3 10/16] x86/hyperv: Add smp support for sev-snp guest Tianyu Lan
2023-01-23 15:30   ` Tom Lendacky
2023-02-03  7:00     ` Tianyu Lan
2023-02-06 20:11       ` Borislav Petkov
2023-02-07 13:49         ` Tianyu Lan
2023-01-31 18:34   ` Michael Kelley (LINUX)
2023-02-03  6:10     ` Tianyu Lan
2023-01-22  2:46 ` [RFC PATCH V3 11/16] x86/hyperv: Add hyperv-specific hadling for VMMCALL under SEV-ES Tianyu Lan
2023-01-22  2:46 ` [RFC PATCH V3 12/16] x86/sev: Add a #HV exception handler Tianyu Lan
2023-01-23  7:33   ` Gupta, Pankaj
2023-02-03  7:27     ` Tianyu Lan
2023-02-16 13:50       ` Gupta, Pankaj
2023-03-09 11:48   ` Gupta, Pankaj
2023-03-10 15:48     ` Tianyu Lan
2023-03-31 15:57   ` Borislav Petkov
2023-04-03 18:09     ` Tianyu Lan
2023-01-22  2:46 ` [RFC PATCH V3 13/16] x86/sev: Add Check of #HV event in path Tianyu Lan
2023-03-01 11:11   ` Gupta, Pankaj
2023-03-08 16:18     ` Gupta, Pankaj
2023-03-10 15:59       ` Tianyu Lan
2023-01-22  2:46 ` [RFC PATCH V3 14/16] x86/sev: Initialize #HV doorbell and handle interrupt requests Tianyu Lan
2023-02-16 14:46   ` Gupta, Pankaj
2023-02-17 12:45   ` Gupta, Pankaj
2023-03-01 19:34   ` Gupta, Pankaj
2023-01-22  2:46 ` [RFC PATCH V3 15/16] x86/sev: optimize system vector processing invoked from #HV exception Tianyu Lan
2023-01-22  2:46 ` [RFC PATCH V3 16/16] x86/sev: Fix interrupt exit code paths " Tianyu Lan
2023-02-02 23:20   ` Zhi Wang
2023-02-08 23:53     ` Kalra, Ashish
2023-02-21 16:44   ` Gupta, Pankaj
2023-03-10 16:02     ` Tianyu Lan
2023-02-02 23:00 ` Zhi Wang [this message]
2023-02-03  4:04   ` [RFC PATCH V3 00/16] x86/hyperv/sev: Add AMD sev-snp enlightened guest support on hyperv Michael Kelley (LINUX)
2023-02-09 11:36 ` Gupta, Pankaj
2023-02-17 12:47   ` Gupta, Pankaj
2023-02-18  7:15     ` Tianyu Lan
2023-03-10 15:35     ` Gupta, Pankaj
2023-03-10 16:19       ` Tianyu Lan
2023-03-15  6:40         ` Gupta, Pankaj

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230203010056.000021af@gmail.com \
    --to=zhi.wang.linux@gmail.com \
    --cc=adrian.hunter@intel.com \
    --cc=akpm@linux-foundation.org \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=anshuman.khandual@arm.com \
    --cc=ashish.kalra@amd.com \
    --cc=bp@alien8.de \
    --cc=brijesh.singh@amd.com \
    --cc=daniel.sneddon@linux.intel.com \
    --cc=dave.hansen@linux.intel.com \
    --cc=fenghua.yu@intel.com \
    --cc=hpa@zytor.com \
    --cc=jgross@suse.com \
    --cc=jiangshan.ljs@antgroup.com \
    --cc=kirill@shutemov.name \
    --cc=kvm@vger.kernel.org \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-hyperv@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=ltykernel@gmail.com \
    --cc=luto@kernel.org \
    --cc=michael.roth@amd.com \
    --cc=mingo@redhat.com \
    --cc=pawan.kumar.gupta@linux.intel.com \
    --cc=pbonzini@redhat.com \
    --cc=peterz@infradead.org \
    --cc=ray.huang@amd.com \
    --cc=samitolvanen@google.com \
    --cc=sandipan.das@amd.com \
    --cc=seanjc@google.com \
    --cc=srutherford@google.com \
    --cc=sterritt@google.com \
    --cc=tglx@linutronix.de \
    --cc=thomas.lendacky@amd.com \
    --cc=tiala@microsoft.com \
    --cc=tony.luck@intel.com \
    --cc=venu.busireddy@oracle.com \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.