public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Lendacky, Thomas" <thomas.lendacky@amd.com>
To: Laszlo Ersek <lersek@redhat.com>, devel@edk2.groups.io
Cc: Jordan Justen <jordan.l.justen@intel.com>,
	Ard Biesheuvel <ard.biesheuvel@linaro.org>,
	Michael D Kinney <michael.d.kinney@intel.com>,
	Liming Gao <liming.gao@intel.com>,
	Eric Dong <eric.dong@intel.com>, Ray Ni <ray.ni@intel.com>,
	Brijesh Singh <brijesh.singh@amd.com>,
	Maurice Ma <maurice.ma@intel.com>, Guo Dong <guo.dong@intel.com>,
	Benjamin You <benjamin.you@intel.com>
Subject: Re: [edk2-devel] [PATCH v4 08/40] UefiCpuPkg/CpuExceptionHandler: Add base support for the #VC exception
Date: Fri, 7 Feb 2020 09:07:26 -0600	[thread overview]
Message-ID: <fcbb7239-8539-dcbd-2bfc-0b14eca90524@amd.com> (raw)
In-Reply-To: <1ba2f5d9-5c50-cc2f-938a-27c1035f74d9@redhat.com>

On 2/6/20 2:03 AM, Laszlo Ersek wrote:
> Hi Tom,
> 
> On 02/05/20 00:01, Lendacky, Thomas wrote:
>> BZ: https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fbugzilla.tianocore.org%2Fshow_bug.cgi%3Fid%3D2198&amp;data=02%7C01%7Cthomas.lendacky%40amd.com%7C92474104c034464629d108d7aadb1215%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637165730207240579&amp;sdata=UFoI4ubid3023HHuo2uoYiP1Dfoa%2BC7uKVMakr72LM4%3D&amp;reserved=0
>>
>> Add base support to handle #VC exceptions.  This includes a stub routine
>> to invoke when a #VC exception occurs and special checks in the common
>> exception handlers to invoke the #VC exception handler routine.
>>
>> Cc: Eric Dong <eric.dong@intel.com>
>> Cc: Ray Ni <ray.ni@intel.com>
>> Cc: Laszlo Ersek <lersek@redhat.com>
>> Cc: Jordan Justen <jordan.l.justen@intel.com>
>> Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
>> Cc: Maurice Ma <maurice.ma@intel.com>
>> Cc: Guo Dong <guo.dong@intel.com>
>> Cc: Benjamin You <benjamin.you@intel.com>
>> Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com>
>> ---
>>  OvmfPkg/OvmfPkgIa32.dsc                       |  5 ++
>>  OvmfPkg/OvmfPkgIa32X64.dsc                    |  5 ++
>>  OvmfPkg/OvmfPkgX64.dsc                        |  5 ++
> 
>> diff --git a/OvmfPkg/OvmfPkgIa32.dsc b/OvmfPkg/OvmfPkgIa32.dsc
>> index 4568b78cadf1..41ec761e3f17 100644
>> --- a/OvmfPkg/OvmfPkgIa32.dsc
>> +++ b/OvmfPkg/OvmfPkgIa32.dsc
>> @@ -236,6 +236,7 @@ [LibraryClasses.common.SEC]
>>    PeiServicesTablePointerLib|MdePkg/Library/PeiServicesTablePointerLibIdt/PeiServicesTablePointerLibIdt.inf
>>    MemoryAllocationLib|MdePkg/Library/PeiMemoryAllocationLib/PeiMemoryAllocationLib.inf
>>    CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/SecPeiCpuExceptionHandlerLib.inf
>> +  VmgExitLib|UefiCpuPkg/Library/VmgExitLib/VmgExitLib.inf
>>  
>>  [LibraryClasses.common.PEI_CORE]
>>    HobLib|MdePkg/Library/PeiHobLib/PeiHobLib.inf
>> @@ -274,6 +275,7 @@ [LibraryClasses.common.PEIM]
>>    DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/SecPeiDebugAgentLib.inf
>>  !endif
>>    CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/PeiCpuExceptionHandlerLib.inf
>> +  VmgExitLib|UefiCpuPkg/Library/VmgExitLib/VmgExitLib.inf
>>    MpInitLib|UefiCpuPkg/Library/MpInitLib/PeiMpInitLib.inf
>>    QemuFwCfgS3Lib|OvmfPkg/Library/QemuFwCfgS3Lib/PeiQemuFwCfgS3LibFwCfg.inf
>>    PcdLib|MdePkg/Library/PeiPcdLib/PeiPcdLib.inf
>> @@ -299,6 +301,7 @@ [LibraryClasses.common.DXE_CORE]
>>    DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/DxeDebugAgentLib.inf
>>  !endif
>>    CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeCpuExceptionHandlerLib.inf
>> +  VmgExitLib|UefiCpuPkg/Library/VmgExitLib/VmgExitLib.inf
>>    PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
>>  
>>  [LibraryClasses.common.DXE_RUNTIME_DRIVER]
>> @@ -349,6 +352,7 @@ [LibraryClasses.common.DXE_DRIVER]
>>    PlatformBmPrintScLib|OvmfPkg/Library/PlatformBmPrintScLib/PlatformBmPrintScLib.inf
>>    QemuBootOrderLib|OvmfPkg/Library/QemuBootOrderLib/QemuBootOrderLib.inf
>>    CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeCpuExceptionHandlerLib.inf
>> +  VmgExitLib|UefiCpuPkg/Library/VmgExitLib/VmgExitLib.inf
>>  !if $(SMM_REQUIRE) == TRUE
>>    LockBoxLib|MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxDxeLib.inf
>>  !else
>> @@ -392,6 +396,7 @@ [LibraryClasses.common.DXE_SMM_DRIVER]
>>    DebugLib|OvmfPkg/Library/PlatformDebugLibIoPort/PlatformDebugLibIoPort.inf
>>  !endif
>>    CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/SmmCpuExceptionHandlerLib.inf
>> +  VmgExitLib|UefiCpuPkg/Library/VmgExitLib/VmgExitLib.inf
>>  !if $(SOURCE_DEBUG_ENABLE) == TRUE
>>    DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/SmmDebugAgentLib.inf
>>  !endif
>> diff --git a/OvmfPkg/OvmfPkgIa32X64.dsc b/OvmfPkg/OvmfPkgIa32X64.dsc
>> index 152b5d067116..41cc3eec3757 100644
>> --- a/OvmfPkg/OvmfPkgIa32X64.dsc
>> +++ b/OvmfPkg/OvmfPkgIa32X64.dsc
>> @@ -241,6 +241,7 @@ [LibraryClasses.common.SEC]
>>    PeiServicesTablePointerLib|MdePkg/Library/PeiServicesTablePointerLibIdt/PeiServicesTablePointerLibIdt.inf
>>    MemoryAllocationLib|MdePkg/Library/PeiMemoryAllocationLib/PeiMemoryAllocationLib.inf
>>    CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/SecPeiCpuExceptionHandlerLib.inf
>> +  VmgExitLib|UefiCpuPkg/Library/VmgExitLib/VmgExitLib.inf
>>  
>>  [LibraryClasses.common.PEI_CORE]
>>    HobLib|MdePkg/Library/PeiHobLib/PeiHobLib.inf
>> @@ -279,6 +280,7 @@ [LibraryClasses.common.PEIM]
>>    DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/SecPeiDebugAgentLib.inf
>>  !endif
>>    CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/PeiCpuExceptionHandlerLib.inf
>> +  VmgExitLib|UefiCpuPkg/Library/VmgExitLib/VmgExitLib.inf
>>    MpInitLib|UefiCpuPkg/Library/MpInitLib/PeiMpInitLib.inf
>>    QemuFwCfgS3Lib|OvmfPkg/Library/QemuFwCfgS3Lib/PeiQemuFwCfgS3LibFwCfg.inf
>>    PcdLib|MdePkg/Library/PeiPcdLib/PeiPcdLib.inf
>> @@ -304,6 +306,7 @@ [LibraryClasses.common.DXE_CORE]
>>    DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/DxeDebugAgentLib.inf
>>  !endif
>>    CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeCpuExceptionHandlerLib.inf
>> +  VmgExitLib|UefiCpuPkg/Library/VmgExitLib/VmgExitLib.inf
>>    PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
>>  
>>  [LibraryClasses.common.DXE_RUNTIME_DRIVER]
>> @@ -354,6 +357,7 @@ [LibraryClasses.common.DXE_DRIVER]
>>    PlatformBmPrintScLib|OvmfPkg/Library/PlatformBmPrintScLib/PlatformBmPrintScLib.inf
>>    QemuBootOrderLib|OvmfPkg/Library/QemuBootOrderLib/QemuBootOrderLib.inf
>>    CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeCpuExceptionHandlerLib.inf
>> +  VmgExitLib|UefiCpuPkg/Library/VmgExitLib/VmgExitLib.inf
>>  !if $(SMM_REQUIRE) == TRUE
>>    LockBoxLib|MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxDxeLib.inf
>>  !else
>> @@ -397,6 +401,7 @@ [LibraryClasses.common.DXE_SMM_DRIVER]
>>    DebugLib|OvmfPkg/Library/PlatformDebugLibIoPort/PlatformDebugLibIoPort.inf
>>  !endif
>>    CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/SmmCpuExceptionHandlerLib.inf
>> +  VmgExitLib|UefiCpuPkg/Library/VmgExitLib/VmgExitLib.inf
>>  !if $(SOURCE_DEBUG_ENABLE) == TRUE
>>    DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/SmmDebugAgentLib.inf
>>  !endif
>> diff --git a/OvmfPkg/OvmfPkgX64.dsc b/OvmfPkg/OvmfPkgX64.dsc
>> index 4bfad441bd9f..46a679a0073e 100644
>> --- a/OvmfPkg/OvmfPkgX64.dsc
>> +++ b/OvmfPkg/OvmfPkgX64.dsc
>> @@ -241,6 +241,7 @@ [LibraryClasses.common.SEC]
>>    PeiServicesTablePointerLib|MdePkg/Library/PeiServicesTablePointerLibIdt/PeiServicesTablePointerLibIdt.inf
>>    MemoryAllocationLib|MdePkg/Library/PeiMemoryAllocationLib/PeiMemoryAllocationLib.inf
>>    CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/SecPeiCpuExceptionHandlerLib.inf
>> +  VmgExitLib|UefiCpuPkg/Library/VmgExitLib/VmgExitLib.inf
>>  
>>  [LibraryClasses.common.PEI_CORE]
>>    HobLib|MdePkg/Library/PeiHobLib/PeiHobLib.inf
>> @@ -279,6 +280,7 @@ [LibraryClasses.common.PEIM]
>>    DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/SecPeiDebugAgentLib.inf
>>  !endif
>>    CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/PeiCpuExceptionHandlerLib.inf
>> +  VmgExitLib|UefiCpuPkg/Library/VmgExitLib/VmgExitLib.inf
>>    MpInitLib|UefiCpuPkg/Library/MpInitLib/PeiMpInitLib.inf
>>    QemuFwCfgS3Lib|OvmfPkg/Library/QemuFwCfgS3Lib/PeiQemuFwCfgS3LibFwCfg.inf
>>    PcdLib|MdePkg/Library/PeiPcdLib/PeiPcdLib.inf
>> @@ -304,6 +306,7 @@ [LibraryClasses.common.DXE_CORE]
>>    DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/DxeDebugAgentLib.inf
>>  !endif
>>    CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeCpuExceptionHandlerLib.inf
>> +  VmgExitLib|UefiCpuPkg/Library/VmgExitLib/VmgExitLib.inf
>>    PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
>>  
>>  [LibraryClasses.common.DXE_RUNTIME_DRIVER]
>> @@ -354,6 +357,7 @@ [LibraryClasses.common.DXE_DRIVER]
>>    PlatformBmPrintScLib|OvmfPkg/Library/PlatformBmPrintScLib/PlatformBmPrintScLib.inf
>>    QemuBootOrderLib|OvmfPkg/Library/QemuBootOrderLib/QemuBootOrderLib.inf
>>    CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeCpuExceptionHandlerLib.inf
>> +  VmgExitLib|UefiCpuPkg/Library/VmgExitLib/VmgExitLib.inf
>>  !if $(SMM_REQUIRE) == TRUE
>>    LockBoxLib|MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxDxeLib.inf
>>  !else
>> @@ -397,6 +401,7 @@ [LibraryClasses.common.DXE_SMM_DRIVER]
>>    DebugLib|OvmfPkg/Library/PlatformDebugLibIoPort/PlatformDebugLibIoPort.inf
>>  !endif
>>    CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/SmmCpuExceptionHandlerLib.inf
>> +  VmgExitLib|UefiCpuPkg/Library/VmgExitLib/VmgExitLib.inf
>>  !if $(SOURCE_DEBUG_ENABLE) == TRUE
>>    DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/SmmDebugAgentLib.inf
>>  !endif
> 
> The three OvmfPkg DSC files should be updated in a different patch; most
> likely in the first OvmfPkg patch that relies on #VC exception handling.

I did that because the build will fail at this stage without the Ovmf
changes:

build.py...
/root/kernels/ovmf-build-X64/OvmfPkg/OvmfPkgX64.dsc(...): error 4000: Instance of library class [VmgExitLib] is not found
        in [/root/kernels/ovmf-build-X64/UefiCpuPkg/Library/CpuExceptionHandlerLib/PeiCpuExceptionHandlerLib.inf] [X64]
        consumed by module [/root/kernels/ovmf-build-X64/UefiCpuPkg/CpuMpPei/CpuMpPei.inf]

- Failed -

Is there a way that we can avoid updating the Ovmf DSC files entirely when
a DSC file specifies one of the exception libraries? Otherwise, I guess I
would have to update the Ovmf DSC files before this patch? Or I could make
the changes to use the VmgExitLib all at once, which would be a single
patch that adds the VmgExitLib and corresponding AMD exception handling
source files at once across UefiCpuPkg and Ovmf?

(Which triggers that I need to check other DSC files that include these
exception libraries to be sure I don't break anything).

> 
> Furthermore, seeing how the same lib instance is used for resolving the
> VmgExitLib class for all (necessary) module types, I think you could add
> a single common resolution per DSC file, in the [LibraryClasses] section.

Yup, makes sense, will do.

Thanks,
Tom

> 
> Thanks
> Laszlo
> 

  reply	other threads:[~2020-02-07 15:07 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-02-04 23:01 [PATCH v4 00/40] SEV-ES guest support Lendacky, Thomas
2020-02-04 23:01 ` [PATCH v4 01/40] MdePkg: Create PCDs to be used in support of SEV-ES Lendacky, Thomas
2020-02-04 23:01 ` [PATCH v4 02/40] MdePkg: Add the MSR definition for the GHCB register Lendacky, Thomas
2020-02-04 23:01 ` [PATCH v4 03/40] MdePkg: Add a structure definition for the GHCB Lendacky, Thomas
2020-02-04 23:01 ` [PATCH v4 04/40] MdeModulePkg/DxeIplPeim: Support GHCB pages when creating page tables Lendacky, Thomas
2020-02-04 23:01 ` [PATCH v4 05/40] MdePkg/BaseLib: Add support for the XGETBV instruction Lendacky, Thomas
2020-02-04 23:01 ` [PATCH v4 06/40] MdePkg/BaseLib: Add support for the VMGEXIT instruction Lendacky, Thomas
2020-02-04 23:01 ` [PATCH v4 07/40] UefiCpuPkg: Implement library support for VMGEXIT Lendacky, Thomas
2020-02-14  0:42   ` [edk2-devel] " Dong, Eric
2020-02-14 17:56     ` Lendacky, Thomas
2020-02-04 23:01 ` [PATCH v4 08/40] UefiCpuPkg/CpuExceptionHandler: Add base support for the #VC exception Lendacky, Thomas
2020-02-06  8:03   ` [edk2-devel] " Laszlo Ersek
2020-02-07 15:07     ` Lendacky, Thomas [this message]
2020-02-10 14:09       ` Laszlo Ersek
2020-02-10 18:13         ` Lendacky, Thomas
2020-02-04 23:01 ` [PATCH v4 09/40] UefiCpuPkg/CpuExceptionHandler: Add support for IOIO_PROT NAE events Lendacky, Thomas
2020-02-04 23:01 ` [PATCH v4 10/40] UefiCpuPkg/CpuExceptionHandler: Support string IO " Lendacky, Thomas
2020-02-04 23:01 ` [PATCH v4 11/40] UefiCpuPkg/CpuExceptionHandler: Add support for CPUID " Lendacky, Thomas
2020-02-04 23:01 ` [PATCH v4 12/40] UefiCpuPkg/CpuExceptionHandler: Add support for MSR_PROT " Lendacky, Thomas
2020-02-04 23:01 ` [PATCH v4 13/40] UefiCpuPkg/CpuExceptionHandler: Add support for NPF NAE events (MMIO) Lendacky, Thomas
2020-02-04 23:01 ` [PATCH v4 14/40] UefiCpuPkg/CpuExceptionHandler: Add support for WBINVD NAE events Lendacky, Thomas
2020-02-04 23:01 ` [PATCH v4 15/40] UefiCpuPkg/CpuExceptionHandler: Add support for RDTSC " Lendacky, Thomas
2020-02-04 23:01 ` [PATCH v4 16/40] UefiCpuPkg/CpuExceptionHandler: Add support for RDPMC " Lendacky, Thomas
2020-02-04 23:01 ` [PATCH v4 17/40] UefiCpuPkg/CpuExceptionHandler: Add support for INVD " Lendacky, Thomas
2020-02-04 23:01 ` [PATCH v4 18/40] UefiCpuPkg/CpuExceptionHandler: Add support for VMMCALL " Lendacky, Thomas
2020-02-04 23:01 ` [PATCH v4 19/40] UefiCpuPkg/CpuExceptionHandler: Add support for RDTSCP " Lendacky, Thomas
2020-02-04 23:01 ` [PATCH v4 20/40] UefiCpuPkg/CpuExceptionHandler: Add support for MONITOR/MONITORX " Lendacky, Thomas
2020-02-04 23:01 ` [PATCH v4 21/40] UefiCpuPkg/CpuExceptionHandler: Add support for MWAIT/MWAITX " Lendacky, Thomas
2020-02-04 23:01 ` [PATCH v4 22/40] UefiCpuPkg/CpuExceptionHandler: Add support for DR7 Read/Write " Lendacky, Thomas
2020-02-04 23:01 ` [PATCH v4 23/40] OvmfPkg/MemEncryptSevLib: Add an SEV-ES guest indicator function Lendacky, Thomas
2020-02-06  8:21   ` [edk2-devel] " Laszlo Ersek
2020-02-07 15:29     ` Lendacky, Thomas
2020-02-04 23:01 ` [PATCH v4 24/40] OvmfPkg: Add support to perform SEV-ES initialization Lendacky, Thomas
2020-02-04 23:01 ` [PATCH v4 25/40] OvmfPkg: Create a GHCB page for use during Sec phase Lendacky, Thomas
2020-02-04 23:01 ` [PATCH v4 26/40] OvmfPkg/PlatformPei: Reserve GHCB-related areas if S3 is supported Lendacky, Thomas
2020-02-04 23:01 ` [PATCH v4 27/40] OvmfPkg: Create GHCB pages for use during Pei and Dxe phase Lendacky, Thomas
2020-02-04 23:01 ` [PATCH v4 28/40] OvmfPkg/PlatformPei: Move early GDT into ram when SEV-ES is enabled Lendacky, Thomas
2020-02-04 23:01 ` [PATCH v4 29/40] UefiCpuPkg: Create an SEV-ES workarea PCD Lendacky, Thomas
2020-02-04 23:01 ` [PATCH v4 30/40] OvmfPkg: Reserve a page in memory for the SEV-ES usage Lendacky, Thomas
2020-02-06  8:43   ` [edk2-devel] " Laszlo Ersek
2020-02-04 23:01 ` [PATCH v4 31/40] OvmfPkg/ResetVector: Add support for a 32-bit SEV check Lendacky, Thomas
2020-02-06  8:51   ` [edk2-devel] " Laszlo Ersek
2020-02-04 23:01 ` [PATCH v4 32/40] OvmfPkg/Sec: Add #VC exception handling for Sec phase Lendacky, Thomas
2020-02-06  9:03   ` [edk2-devel] " Laszlo Ersek
2020-02-04 23:01 ` [PATCH v4 33/40] OvmfPkg/Sec: Enable cache early to speed up booting Lendacky, Thomas
2020-02-04 23:01 ` [PATCH v4 34/40] OvmfPkg/QemuFlashFvbServicesRuntimeDxe: Bypass flash detection with SEV-ES is enabled Lendacky, Thomas
2020-02-06  9:16   ` [edk2-devel] " Laszlo Ersek
2020-02-04 23:01 ` [PATCH v4 35/40] UefiCpuPkg: Add a 16-bit protected mode code segment descriptor Lendacky, Thomas
2020-02-04 23:01 ` [PATCH v4 36/40] UefiCpuPkg/MpInitLib: Add a CPU MP data flag to indicate if SEV-ES is enabled Lendacky, Thomas
2020-02-04 23:01 ` [PATCH v4 37/40] UefiCpuPkg: Allow AP booting under SEV-ES Lendacky, Thomas
2020-02-06  9:35   ` [edk2-devel] " Laszlo Ersek
2020-02-07 15:51     ` Lendacky, Thomas
2020-02-04 23:01 ` [PATCH v4 38/40] OvmfPkg: Use the SEV-ES work area for the SEV-ES AP reset vector Lendacky, Thomas
2020-02-06  9:29   ` [edk2-devel] " Laszlo Ersek
2020-02-04 23:01 ` [PATCH v4 39/40] OvmfPkg: Move the GHCB allocations into reserved memory Lendacky, Thomas
2020-02-05 13:56 ` [PATCH v4 40/40] UefiCpuPkg/MpInitLib: Prepare SEV-ES guest APs for OS use Lendacky, Thomas

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=fcbb7239-8539-dcbd-2bfc-0b14eca90524@amd.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