public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Yao, Jiewen" <jiewen.yao@intel.com>
To: "devel@edk2.groups.io" <devel@edk2.groups.io>,
	"ashish.kalra@amd.com" <ashish.kalra@amd.com>
Cc: "dovmurik@linux.vnet.ibm.com" <dovmurik@linux.vnet.ibm.com>,
	"brijesh.singh@amd.com" <brijesh.singh@amd.com>,
	"tobin@ibm.com" <tobin@ibm.com>,
	"Thomas.Lendacky@amd.com" <Thomas.Lendacky@amd.com>,
	"jejb@linux.ibm.com" <jejb@linux.ibm.com>,
	"Justen, Jordan L" <jordan.l.justen@intel.com>,
	"ard.biesheuvel@arm.com" <ard.biesheuvel@arm.com>,
	"erdemaktas@google.com" <erdemaktas@google.com>,
	"Xu, Min M" <min.m.xu@intel.com>
Subject: Re: [edk2-devel] [PATCH v6 0/6] SEV Live Migration support for OVMF.
Date: Thu, 5 Aug 2021 05:17:15 +0000	[thread overview]
Message-ID: <PH0PR11MB4885EF1D15AF5FC078F9885A8CF29@PH0PR11MB4885.namprd11.prod.outlook.com> (raw)
In-Reply-To: <cover.1627900864.git.ashish.kalra@amd.com>

Hi
I have some questions:

1) May I know what is the usage of this UEFI variable - SevLiveMigrationEnabled? 
I only see it is created, but I do not see how it is consumed.

2) Is this a full live migration patch, or is this just a startup and there will be more on the way?

Thank you
Yao Jiewen


> -----Original Message-----
> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Ashish Kalra
> via groups.io
> Sent: Monday, August 2, 2021 8:31 PM
> To: devel@edk2.groups.io
> Cc: dovmurik@linux.vnet.ibm.com; brijesh.singh@amd.com; tobin@ibm.com;
> Thomas.Lendacky@amd.com; jejb@linux.ibm.com; Justen, Jordan L
> <jordan.l.justen@intel.com>; ard.biesheuvel@arm.com;
> erdemaktas@google.com; Yao, Jiewen <jiewen.yao@intel.com>; Xu, Min M
> <min.m.xu@intel.com>
> Subject: [edk2-devel] [PATCH v6 0/6] SEV Live Migration support for OVMF.
> 
> From: Ashish Kalra <ashish.kalra@amd.com>
> 
> BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3467
> 
> By default all the SEV guest memory regions are considered encrypted,
> if a guest changes the encryption attribute of the page (e.g mark a
> page as decrypted) then notify hypervisor. Hypervisor will need to
> track the unencrypted pages. The information will be used during
> guest live migration, guest page migration and guest debugging.
> 
> The patch-set detects if it is running under KVM hypervisor and then
> checks for SEV live migration feature support via KVM_FEATURE_CPUID,
> if detected setup a new UEFI enviroment variable to indicate OVMF
> support for SEV live migration.
> 
> A branch containing these patches is available here:
> https://github.com/ashkalra/edk2-1/tree/sev_live_migration_v5_10
> 
> Changes since v5:
>  - Split first patch into three components, one patch for the
>    MemEncryptSevLiveMigrationIsEnabled() API, one patch for the
>    SetMemoryEncDecHypercall3() API, one patch to make use of the
>    SetMemoryEncDecHypercall3() API.
>  - Fix patch subject, in code and patch comments and
>    additionally add relevant comments.
>  - Replace SetMemoryEncDecHypercall3() API's Status argument
>    with a boolean IsEncrypted argument and corresponding fixes
>    to users of this API call.
>  - Fix AsciiStrCmp() usage in KVM hypervisor detection code.
> 
> Changes since v4:
>  - Remove MemEncryptHypercallLib Library and add support to issue
>    hypercall in the BaseMemEncryptSevLib library itself.
>  - For SEV-ES, make the VC handler hypercall aware by comparing
>    the hypercall number and add the additional register values
>    in the GHCB.
>  - Fix comments in the hypercall API interface.
>  - The encryption bit is set/clear on the smallest page size, hence
>    use the 4k page size in MAP_GPA_RANGE hypercall.
>  - Make the hypercall expect the guest physical address to be
>    page-aligned.
>  - Add KVM live migration feature flag check in BaseMemEncryptSevLib
>    library similar to how BaseMemEncryptSevLib does for the
>    MemEncryptSevIsEnabled() and check it before invoking HC. Also
>    export the MemEncryptSevLiveMigrationIsEnabled() function as
>    part of the library.
>  - Add error handling on hypercall return, on failure, return error
>    code to caller which potentially will cause an assert() and
>    terminate the boot.
> 
> Changes since v3:
>  - Fix all DSC files under OvmfPkg except X64 to add support for
>    BaseMemEncryptLib and add NULL instance of BaseMemEncryptLib
>    for 32 bit platforms.
>  - Add the MemEncryptHypercallLib-related files to Maintainers.txt,
>    in section "OvmfPkg: Confidential Computing".
>  - Add support for the new KVM_HC_MAP_GPA_RANGE hypercall interface.
>  - Add patch for SEV live migration support.
> 
> Changes since v2:
>  - GHCB_BASE setup during reset-vector as decrypted is marked explicitly
>    in the hypervisor page encryption bitmap after setting the
>    PcdSevEsIsEnabled PCD.
> 
> Changes since v1:
>  - Mark GHCB_BASE setup during reset-vector as decrypted explicitly in
>    the hypervisor page encryption bitmap.
>  - Resending the series with correct shallow threading.
> 
> Ashish Kalra (6):
>   OvmfPkg/BaseMemEncryptLib: Detect SEV live migration feature.
>   OvmfPkg/BaseMemEncryptLib: Hypercall API for page encryption state
>     change
>   OvmfPkg/BaseMemEncryptLib: Invoke page encryption state change
>     hypercall
>   OvmfPkg/VmgExitLib: Encryption state change hypercall support in VC
>     handler
>   OvmfPkg/PlatformPei: Mark SEC GHCB page as unencrypted via hypercall
>   OvmfPkg/AmdSevDxe: Add support for SEV live migration.
> 
>  OvmfPkg/AmdSevDxe/AmdSevDxe.c                 | 64 +++++++++++++++++
>  OvmfPkg/AmdSevDxe/AmdSevDxe.inf               |  4 ++
>  OvmfPkg/Include/Guid/AmdSevMemEncryptLib.h    | 20 ++++++
>  OvmfPkg/Include/Library/MemEncryptSevLib.h    | 70 +++++++++++++++++++
>  .../DxeMemEncryptSevLib.inf                   |  1 +
>  .../DxeMemEncryptSevLibInternal.c             | 39 +++++++++++
>  .../Ia32/MemEncryptSevLib.c                   | 27 +++++++
>  .../PeiDxeMemEncryptSevLibInternal.c          | 52 ++++++++++++++
>  .../PeiMemEncryptSevLib.inf                   |  1 +
>  .../PeiMemEncryptSevLibInternal.c             | 39 +++++++++++
>  .../SecMemEncryptSevLibInternal.c             | 38 ++++++++++
>  .../X64/AsmHelperStub.nasm                    | 33 +++++++++
>  .../X64/MemEncryptSevLib.c                    | 62 ++++++++++++++++
>  .../X64/PeiDxeVirtualMemory.c                 | 20 ++++++
>  OvmfPkg/Library/VmgExitLib/VmgExitVcHandler.c | 13 ++++
>  OvmfPkg/OvmfPkg.dec                           |  1 +
>  OvmfPkg/PlatformPei/AmdSev.c                  | 11 +++
>  17 files changed, 495 insertions(+)
>  create mode 100644 OvmfPkg/Include/Guid/AmdSevMemEncryptLib.h
>  create mode 100644
> OvmfPkg/Library/BaseMemEncryptSevLib/X64/AsmHelperStub.nasm
> 
> --
> 2.17.1
> 
> 
> 
> 
> 


  reply	other threads:[~2021-08-05  5:17 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-08-02 12:31 [PATCH v6 0/6] SEV Live Migration support for OVMF Ashish Kalra
2021-08-05  5:17 ` Yao, Jiewen [this message]
2021-08-05 10:36   ` [edk2-devel] " Ashish Kalra

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-list 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=PH0PR11MB4885EF1D15AF5FC078F9885A8CF29@PH0PR11MB4885.namprd11.prod.outlook.com \
    --to=devel@edk2.groups.io \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox