Hi Liming,

So I'm not sure what the next step is then... Since the ECC checker isn't
merged yet, are you saying that I should submit the series again with the
changes and that you won't be running the stand-alone tool again? Or will
you run the tool again and submit more issues to resolve if the tool finds
any? If it's the latter, I would really like to be able to run this tool
stand-alone, as you have done, so that I don't have to keep re-submitting
the series (because it looks like the tool doesn't catch everything and
fixing one thing may then expose another).

Thanks,
Tom

On 8/12/20 9:34 AM, Gao, Liming wrote:
> Tom:
> 
> -----Original Message-----
> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Lendacky, 
> Thomas
> Sent: 2020年8月12日 0:18
> To: Laszlo Ersek <ler...@redhat.com>; Gao, Liming <liming....@intel.com>; 
> devel@edk2.groups.io
> Cc: Brijesh Singh <brijesh.si...@amd.com>; Ard Biesheuvel 
> <ard.biesheu...@arm.com>; Dong, Eric <eric.d...@intel.com>; Justen, Jordan L 
> <jordan.l.jus...@intel.com>; Kinney, Michael D <michael.d.kin...@intel.com>; 
> Ni, Ray <ray...@intel.com>; Andrew Fish <af...@apple.com>; Anthony Perard 
> <anthony.per...@citrix.com>; You, Benjamin <benjamin....@intel.com>; Bi, 
> Dandan <dandan...@intel.com>; Dong, Guo <guo.d...@intel.com>; Wu, Hao A 
> <hao.a...@intel.com>; Wang, Jian J <jian.j.w...@intel.com>; Julien Grall 
> <jul...@xen.org>; Leif Lindholm <l...@nuviainc.com>; Ma, Maurice 
> <maurice...@intel.com>
> Subject: Re: [edk2-devel] [PATCH v14 00/46] SEV-ES guest support
> 
> On 8/11/20 9:49 AM, Laszlo Ersek wrote:
>> On 08/11/20 03:12, Gao, Liming wrote:
>>> Tom:
>>>   I run ECC plugin 
>>> (https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fedk2.groups.io%2Fg%2Fdevel%2Fmessage%2F63271&amp;data=02%7C01%7Cthomas.lendacky%40amd.com%7C4285f946d86342630a4708d83ecccf27%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637328396655798086&amp;sdata=27ydFZdocl9RV7MbrLRKw0L2GiOGtWLlpsuaw9wj2fo%3D&amp;reserved=0)
>>>  in my local machine. It reports below issues. Can you help update the 
>>> patches to fix them?
>>>   I use the standalone EccCheck from 
>>> https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fshenglei10%2Fedk2%2Ftree%2Fecc_script&amp;data=02%7C01%7Cthomas.lendacky%40amd.com%7C4285f946d86342630a4708d83ecccf27%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637328396655798086&amp;sdata=b8VUf6uNw%2FzNBZCKU0IUUakDLJPmVsK4ghJirmQwCwY%3D&amp;reserved=0.
>>>  
>>>
>>> EFI coding style error
>>>   *Error code: 8005
>>>   *Variable name does not follow the rules: 1. First character should be 
>>> upper case 2. Must contain lower case characters 3. No white space 
>>> characters 4. Global variable name must start with a 'g'
>>>   *file: D:\AllPkg\edk2\OvmfPkg\Sec\SecMain.c
>>>   *Line number: 867
>>>   *The variable name [*Ds] does not follow the rules
>>
>> I don't understand this report; with this series applied, line 867 is 
>> the following:
>>
>>     867     UINT8  *Src, *Dst;
>>
>> coming from patch v14 37/46, "OvmfPkg/Sec: Add #VC exception handling 
>> for Sec phase".
>>
>> Perhaps ECC is confused because we have two declarations on the same 
>> line; I'm not sure.
>>
>> In general I too like to keep declarations on separate lines, but 
>> there are exceptions. Declaring *Src and *Dst on the same line is 
>> pretty reasonable, and trivial.
>>
>> I think it's time for us to put the ECC exception list to use, under 
>> OvmfPkg.
>>
>> Tom, please try to reproduce this error locally, and then modify 
>> "OvmfPkg/OvmfPkg.ci.yaml", adding an exception under the EccCheck block.
>>
>> ... Oh wait, we haven't even merged Shenglei's series for that! The 
>> latest posting is:
>>
>>   [edk2-devel] [PATCH v9 00/16]
>>   Add a plugin to check Ecc issues for edk2 on open ci
>>
>> and it's still under review.
>>
>> Indeed, Liming says above that he used the "standalone EccCheck".
>>
>> OK. In this case, I state that some of these ECC reports for OvmfPkg 
>> should be waived.
>>
>> I'm in general of the opinion that ECC is too strict, and package 
>> maintainers should have power to selectively enforce or override ECC 
>> reports. That's why I agreed to the ECC CI plugin in the first place 
>> -- becase we have exception lists that are controllable under specific 
>> package directories (in the *.ci.yaml files).
>>
>> In the present case, running the standalone ECC check has worse 
>> granularity than the upcoming ECC CI plugin. So, because I can't ask 
>> Tom to add a new exception to "OvmfPkg/OvmfPkg.ci.yaml" right now 
>> (before we merge this series), I'm replacing that with a waiver in this 
>> email.
>>
>> Of course, if maintainers of other packages want the ECC reports 
>> issued under their packages addressed, that's their call. I can only 
>> waive ECC reports under OvmfPkg.
>>
>>> EFI coding style error
>>>   *Error code: 9003
>>>   *The first line of text in a comment block should be a brief description 
>>> of the element being documented and the brief description must end with a 
>>> period.
>>>   *file: 
>>> D:\AllPkg\edk2\OvmfPkg\Library\BaseMemEncryptSevLib\MemEncryptSevLibInternal.c
>>>   *Line number: 72
>>>   *Comment description should end with period '.' 
>>
>> Disagree; sometimes people use well-formed full English sentences, 
>> sometimes only thought fragments.
>>
>>> EFI coding style error
>>>   *Error code: 3002
>>>   *Non-Boolean comparisons should use a compare operator (==, !=, >, < >=, 
>>> <=)
>>>   *file: D:\AllPkg\edk2\OvmfPkg\Library\VmgExitLib\VmgExitVcHandler.c
>>>   *Line number: 1280
>>>   *Predicate Expression: OpCount
>>
>> On the other hand, this report *is* worth fixing.
>>
>>    1280     while (OpCount) {
>>
>> I've myself asked Tom for observing this rule at several locations, 
>> but we both missed the one reported above. It comes from patch #14
>> ("OvmfPkg/VmgExitLib: Support string IO for IOIO_PROT NAE events").
>>
>>> EFI coding style error
>>>   *Error code: 5007
>>>   *There should be no initialization of a variable as part of its 
>>> declaration
>>>   *file: D:\AllPkg\edk2\OvmfPkg\Library\VmgExitLib\VmgExitVcHandler.c
>>>   *Line number: 845
>>>   *Variable Name: Data
>>
>> Agree this should be fixed; I should have noticed it during review. My 
>> apologies.
>>
>>     845       UINT8 *Data = (UINT8 *) Ghcb->SharedBuffer;
>>
>> Comes from patch #17 ("OvmfPkg/VmgExitLib: Add support for NPF NAE 
>> events (MMIO)").
>>
>>> EFI coding style error
>>>   *Error code: 5007
>>>   *There should be no initialization of a variable as part of its 
>>> declaration
>>>   *file: D:\AllPkg\edk2\OvmfPkg\Library\VmgExitLib\VmgExitVcHandler.c
>>>   *Line number: 849
>>>   *Variable Name: Data
>>
>> Yes, this should be fixed too:
>>
>>     849       UINT16 *Data = (UINT16 *) Ghcb->SharedBuffer;
>>
>> Again, I should have noticed it; I'm sorry.
>>
>> It comes from patch #17 ("OvmfPkg/VmgExitLib: Add support for NPF NAE 
>> events (MMIO)") again.
>>
>> Tom: given that a new iteration seems justified after all (I'm really 
>> sorry about that -- with Shenglei's series hopefully soon merged, such 
>> issues will be reported earlier!), if you'd like, you could address 
>> the two ECC reports too that I said were too strict and should be ignored.
>> (That means breaking the "*Dst" declaration to a new line, and adding 
>> a period to the comment.) Up to you; I certainly don't insist on those.
> 
> No worries, easy enough to do if I'm already updating the others.
> 
> I would like to be able to run this tool on my system, though, to see if 
> anything else gets flagged after fixing the above mentioned issues. But the 
> tool fails for me as I described in another post. The reason I say that is, 
> for example, the issue about the comment description ending with a period was 
> actually in multiple spots of the commit, even though the tool only flagged 
> one. I'd hate to think I've fixed everything only to have the tool find more 
> issues after I've submitted another series, all because I couldn't run the 
> tool.
> 
> Thanks,
> Tom
> 
> [Liming] ECC checker will be merged in open CI to check the patch and report 
> the issues. Then, you don't need to run it in your local machine. I use this 
> patch set as test case to verify ECC checker functionality. And, it reports 
> those issues. I think they are valuable for this patch set, so I raise them. 
> Sorry for the late notice.
> 
> Thanks
> Liming
>>
>> Thanks!
>> Laszlo
>>
>>>
>>> Thanks
>>> Liming
>>> -----Original Message-----
>>> From: Laszlo Ersek <ler...@redhat.com>
>>> Sent: 2020年8月11日 3:36
>>> To: devel@edk2.groups.io; thomas.lenda...@amd.com
>>> Cc: Brijesh Singh <brijesh.si...@amd.com>; Ard Biesheuvel 
>>> <ard.biesheu...@arm.com>; Dong, Eric <eric.d...@intel.com>; Justen, 
>>> Jordan L <jordan.l.jus...@intel.com>; Gao, Liming 
>>> <liming....@intel.com>; Kinney, Michael D 
>>> <michael.d.kin...@intel.com>; Ni, Ray <ray...@intel.com>; Andrew Fish 
>>> <af...@apple.com>; Anthony Perard <anthony.per...@citrix.com>; You, 
>>> Benjamin <benjamin....@intel.com>; Bi, Dandan <dandan...@intel.com>; 
>>> Dong, Guo <guo.d...@intel.com>; Wu, Hao A <hao.a...@intel.com>; Wang, 
>>> Jian J <jian.j.w...@intel.com>; Julien Grall <jul...@xen.org>; Leif 
>>> Lindholm <l...@nuviainc.com>; Ma, Maurice <maurice...@intel.com>
>>> Subject: Re: [edk2-devel] [PATCH v14 00/46] SEV-ES guest support
>>>
>>> On 08/07/20 21:38, Lendacky, Thomas wrote:
>>>> From: Tom Lendacky <thomas.lenda...@amd.com>
>>>>
>>>> This patch series provides support for running EDK2/OVMF under SEV-ES.
>>>>
>>>> Secure Encrypted Virtualization - Encrypted State (SEV-ES) expands 
>>>> on the SEV support to protect the guest register state from the 
>>>> hypervisor. See
>>>> "AMD64 Architecture Programmer's Manual Volume 2: System 
>>>> Programming", section "15.35 Encrypted State (SEV-ES)" [1].
>>>>
>>>> In order to allow a hypervisor to perform functions on behalf of a 
>>>> guest, there is architectural support for notifying a guest's 
>>>> operating system when certain types of VMEXITs are about to occur.
>>>> This allows the guest to selectively share information with the 
>>>> hypervisor to satisfy the requested function. The notification is 
>>>> performed using a new exception, the VMM Communication exception 
>>>> (#VC). The information is shared through the Guest-Hypervisor 
>>>> Communication Block (GHCB) using the VMGEXIT instruction.
>>>> The GHCB format and the protocol for using it is documented in 
>>>> "SEV-ES Guest-Hypervisor Communication Block Standardization" [2].
>>>>
>>>> The main areas of the EDK2 code that are updated to support SEV-ES 
>>>> are around the exception handling support and the AP boot support.
>>>>
>>>> Exception support is required starting in Sec, continuing through 
>>>> Pei and into Dxe in order to handle #VC exceptions that are generated.
>>>> Each AP requires it's own GHCB page as well as a page to hold values 
>>>> specific to that AP.
>>>>
>>>> AP booting poses some interesting challenges. The INIT-SIPI-SIPI 
>>>> sequence is typically used to boot the APs. However, the hypervisor 
>>>> is not allowed to update the guest registers. The GHCB document [2] 
>>>> talks about how SMP booting under SEV-ES is performed.
>>>>
>>>> Since the GHCB page must be a shared (unencrypted) page, the 
>>>> processor must be running in long mode in order for the guest and 
>>>> hypervisor to communicate with each other. As a result, SEV-ES is 
>>>> only supported under the X64 architecture.
>>>>
>>>> This series adds a new library requirement for the VmgExitLib 
>>>> library against the UefiCpuPkg CpuExceptionHandlerLib library and 
>>>> the UefiCpuPkg MpInitLib library. The edk2-platforms repo requires 
>>>> updates/patches to add the new library requirement. To accomodate 
>>>> that, this series could be split between:
>>>>
>>>> patch number 10:
>>>>   UefiPayloadPkg: Prepare UefiPayloadPkg to use the VmgExitLib 
>>>> library
>>>>
>>>> and patch number 11:
>>>>   UefiCpuPkg/CpuExceptionHandler: Add base support for the #VC 
>>>> exception
>>>>
>>>> The updates to edk2-platforms can be applied at the split.
>>>>
>>>> [1] 
>>>> https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fww
>>>> w.amd.com%2Fsystem%2Ffiles%2FTechDocs%2F24593.pdf&amp;data=02%7C01%7
>>>> Cthomas.lendacky%40amd.com%7C9c0fb2b16af248090fdb08d83e05c821%7C3dd8
>>>> 961fe4884e608e11a82d994e183d%7C0%7C0%7C637327542159394484&amp;sdata=
>>>> zusPC5xFZWfLxt6T5Psxb1%2Fw4mrVWnkrrECkuKSsxLk%3D&amp;reserved=0
>>>> [2] 
>>>> https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fde
>>>> veloper.amd.com%2Fwp-content%2Fresources%2F56421.pdf&amp;data=02%7C0
>>>> 1%7Cthomas.lendacky%40amd.com%7C9c0fb2b16af248090fdb08d83e05c821%7C3
>>>> dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637327542159394484&amp;sda
>>>> ta=yk7o8h1lajI449tZfXGbPumnkvRjswKp1FRmSUdewh4%3D&amp;reserved=0
>>>>
>>>> ---
>>>>
>>>> These patches are based on commit:
>>>> 9565ab67c209 ("ShellPkg: smbiosview - Change some type 17 field 
>>>> values
>>>> format")
>>>>
>>>> A version of the tree can be found at:
>>>> https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgi
>>>> thub.com%2FAMDESE%2Fovmf%2Ftree%2Fsev-es-v22&amp;data=02%7C01%7Cthom
>>>> as.lendacky%40amd.com%7C9c0fb2b16af248090fdb08d83e05c821%7C3dd8961fe
>>>> 4884e608e11a82d994e183d%7C0%7C0%7C637327542159404476&amp;sdata=6b9Eq
>>>> EVAy1VK38oMSuAPJhOourJpPXUnRIgMcSWRMQc%3D&amp;reserved=0
>>>>
>>>> Cc: Andrew Fish <af...@apple.com>
>>>> Cc: Anthony Perard <anthony.per...@citrix.com>
>>>> Cc: Ard Biesheuvel <ard.biesheu...@arm.com>
>>>> Cc: Benjamin You <benjamin....@intel.com>
>>>> Cc: Dandan Bi <dandan...@intel.com>
>>>> Cc: Eric Dong <eric.d...@intel.com>
>>>> Cc: Guo Dong <guo.d...@intel.com>
>>>> Cc: Hao A Wu <hao.a...@intel.com>
>>>> Cc: Jian J Wang <jian.j.w...@intel.com>
>>>> Cc: Jordan Justen <jordan.l.jus...@intel.com>
>>>> Cc: Julien Grall <jul...@xen.org>
>>>> Cc: Laszlo Ersek <ler...@redhat.com>
>>>> Cc: Leif Lindholm <l...@nuviainc.com>
>>>> Cc: Liming Gao <liming....@intel.com>
>>>> Cc: Maurice Ma <maurice...@intel.com>
>>>> Cc: Michael D Kinney <michael.d.kin...@intel.com>
>>>> Cc: Ray Ni <ray...@intel.com>
>>>>
>>>> Changes since v13:
>>>> - Fixup the AsmRelocateApLoop() call site so IA32 successfully boots APs.
>>>>   Do this by appending the three new parameters without altering the
>>>>   original parameter passing order.
>>>> - Minor updates to description text and help text to expand the GHCB
>>>>   acronym.
>>>>
>>>> Changes since v12:
>>>> - Change IA32 VMGEXIT .nasm file to issue an int 3. Depending on the
>>>>   version of NASM, the "BITS 64" trick to get NASM to recognize the
>>>>   VMMCALL instruction (VMGEXIT is a REP VMMCALL) caused an error. Since
>>>>   SEV-ES is X64 only, VMGEXIT should never be called in IA32.
>>>>
>>>> Changes since v11:
>>>> - Make the XGETBV and VMGEXIT .nasm files buildable for all environments
>>>>   and remove the updates that add these instructions to GccInline.c
>>>>
>>>> Changes since v10:
>>>> - Fix conflicts around GccInline.c file after moving to latest 
>>>> commit
>>>> - Fix conflicts with OVMF PCD values after moving to latest commit
>>>>
>>>> Changes since v9:
>>>> - Fixed bit field declarations in the GHCB structure to use UINT32
>>>>   and not UINT64.
>>>> - Fixed a warning produced by VS2019 in the instruction parsing code
>>>>   by expliciting casting a bit shift to an INT64.
>>>> - Sorted section entries in the OVMF VmgExitLib INF file.
>>>> - Moved the new Maintainers.txt entry so entries remain sorted.
>>>> - Documentation style fixes for return values.
>>>> - Miscellaneous code style fixes.
>>>>
>>>> Changes since v8:
>>>> - Move IOIO exit info definitions into Ghcb.h file
>>>>   - Add a macro for calculating IO instruction bytes 
>>>> (IOIO_DATA_BYTES)
>>>> - Exception handler support for debug registers
>>>>   - Moved the DRx register saving changes into the UefiCpuPkg patch for
>>>>     base #VC support in CpuExceptionHandlerLib.
>>>> - OvmfPkg VmgExitLib
>>>>   - Remove the .uni file
>>>>   - Update .inf file:
>>>>     - New file location for VmgExitVcHandler.c
>>>>     - Add additional Packages and LibraryClasses
>>>> - Introduce a header file to hold the #VC instruction parsing related
>>>>   definitions
>>>>   - Include additional #defines for instruction decoding to replace
>>>>     hard coded values for things like instruction prefixes and escapes.
>>>> - Replace hardcoded CPUID values with values from existing header files
>>>>   and use existing CR4 definition for accessing CR4 data.
>>>> - Change the type used for obtaining data addresses in the instruction
>>>>   parsing
>>>>   - Switch from INTN to UINT64 and use compiler conversions and casting
>>>>     to perform the correct address calculation
>>>> - ResetVector code:
>>>>   - Revert some inadvertant changes introduced in v7 for reserving the
>>>>     SEV-ES work area memory and for checking the status of SEV-ES.
>>>> - AP Booting
>>>>   - Provide support for non-broadcast INIT-SIPI-SIPI AP boot (minimize
>>>>     code duplication by creating a function to set the AP jump table
>>>>     vector address).
>>>> - Fix file/directory entry in maintainer changes.
>>>> - Various coding style fixes
>>>>   - Commenting, if statements, etc.
>>>> - Various documentation style fixes
>>>>
>>>> Changes since v7:
>>>> - Reserve the SEV-ES workarea when S3 is enabled
>>>> - Fix warnings issued by the Visual Studio compiler
>>>> - Create a NULL VmgExitLib instance that is used for VMGEXIT
>>>>   related operations as well as #VC handling. Then create the full
>>>>   VmgExitLib support only in OvmfPkg - where it will be used. This
>>>>   removes a bunch of implementation code from platforms that will
>>>>   not be using the functionality.
>>>> - Remove single use interfaces from the VmgExitLib (VmgMmioWrite
>>>>   and VmgSetApJumpTable)
>>>>
>>>> Changes since v6:
>>>> - Add function comments to all functions, including local functions
>>>> - Add function parameter direction to all functions (in/out)
>>>> - Add support for MMIO MOVZX/MOVSX instructions
>>>> - Ensure the per-CPU variable page remains encrypted
>>>> - Coding-style fixes as identified by Ecc
>>>>
>>>> Changes since v5:
>>>> - Remove extraneous VmgExitLib usage
>>>> - Miscellaneous changes to address feedback (coding style, etc.)
>>>>
>>>> Changes since v4:
>>>> - Move the SEV-ES protocol negotiation out of the SEC exception handler
>>>>   and into the SecMain.c file. As a result:
>>>>   - Move the SecGhcb related PCDs out of UefiCpuPkg and into OvmfPkg
>>>>   - Combine SecAMDSevVcHandler.c and PeiDxeAMDSevVcHandler.c into a
>>>>     single AMDSevVcHandler.c
>>>> - Consolidate VmgExitLib usage into common LibraryClasses sections
>>>> - Add documentation comments to the VmgExitLib functions
>>>>
>>>> Changes since v3:
>>>> - Remove the need for the MP library finalization routine. The AP
>>>>   jump table address will be held by the hypervisor rather than
>>>>   communicated via the GHCB MSR. This removes some fragility around
>>>>   the UEFI to OS transition.
>>>> - Rename the SEV-ES RIP reset area to SEV-ES workarea and use it to
>>>>   communicate the SEV-ES status, so that SEC CPU exception handling is
>>>>   only established for an SEV-ES guest.
>>>> - Fix SMM build breakageAdd around QemuFlashPtrWrite().
>>>> - Fix SMM build breakage by adding VC exception support the SMM CPU
>>>>   exception handling.
>>>> - Add memory fencing around the invocation of AsmVmgExit().
>>>> - Clarify comments around the SEV-ES AP reset RIP values and usage.
>>>> - Move some PCD definitions from MdeModulePkg to UefiCpuPkg.
>>>> - Remove the 16-bit code selector definition from MdeModulePkg
>>>>
>>>> Changes since v2:
>>>> - Added a way to locate the SEV-ES fixed AP RIP address for starting
>>>>   AP's to avoid updating the actual flash image (build time location
>>>>   that is identified with a GUID value).
>>>> - Create a VmgExit library to replace static inline functions.
>>>> - Move some PCDs to the appropriate packages
>>>> - Add support for writing to QEMU flash under SEV-ES
>>>> - Add additional MMIO opcode support
>>>> - Cleaned up the GHCB MSR CPUID protocol support
>>>>
>>>> Changes since v1:
>>>> - Patches reworked to be more specific to the component/area being updated
>>>>   and order of definition/usage
>>>> - Created a library for VMGEXIT-related functions to replace use of inline
>>>>   functions
>>>> - Allocation method for GDT changed from AllocatePool to 
>>>> AllocatePages
>>>> - Early caching only enabled for SEV-ES guests
>>>> - Ensure AP loop mode set to halt loop mode for SEV-ES guests
>>>> - Reserved SEC GHCB-related memory areas when S3 is enabled
>>>>
>>>> Tom Lendacky (46):
>>>>   MdeModulePkg: Create PCDs to be used in support of SEV-ES
>>>>   UefiCpuPkg: Create PCD to be used in support of SEV-ES
>>>>   MdePkg: Add the MSR definition for the GHCB register
>>>>   MdePkg: Add a structure definition for the GHCB
>>>>   MdeModulePkg/DxeIplPeim: Support GHCB pages when creating page tables
>>>>   MdePkg/BaseLib: Add support for the XGETBV instruction
>>>>   MdePkg/BaseLib: Add support for the VMGEXIT instruction
>>>>   UefiCpuPkg: Implement library support for VMGEXIT
>>>>   OvmfPkg: Prepare OvmfPkg to use the VmgExitLib library
>>>>   UefiPayloadPkg: Prepare UefiPayloadPkg to use the VmgExitLib library
>>>>   UefiCpuPkg/CpuExceptionHandler: Add base support for the #VC exception
>>>>   OvmfPkg/VmgExitLib: Implement library support for VmgExitLib in OVMF
>>>>   OvmfPkg/VmgExitLib: Add support for IOIO_PROT NAE events
>>>>   OvmfPkg/VmgExitLib: Support string IO for IOIO_PROT NAE events
>>>>   OvmfPkg/VmgExitLib: Add support for CPUID NAE events
>>>>   OvmfPkg/VmgExitLib: Add support for MSR_PROT NAE events
>>>>   OvmfPkg/VmgExitLib: Add support for NPF NAE events (MMIO)
>>>>   OvmfPkg/VmgExitLib: Add support for WBINVD NAE events
>>>>   OvmfPkg/VmgExitLib: Add support for RDTSC NAE events
>>>>   OvmfPkg/VmgExitLib: Add support for RDPMC NAE events
>>>>   OvmfPkg/VmgExitLib: Add support for INVD NAE events
>>>>   OvmfPkg/VmgExitLib: Add support for VMMCALL NAE events
>>>>   OvmfPkg/VmgExitLib: Add support for RDTSCP NAE events
>>>>   OvmfPkg/VmgExitLib: Add support for MONITOR/MONITORX NAE events
>>>>   OvmfPkg/VmgExitLib: Add support for MWAIT/MWAITX NAE events
>>>>   OvmfPkg/VmgExitLib: Add support for DR7 Read/Write NAE events
>>>>   OvmfPkg/MemEncryptSevLib: Add an SEV-ES guest indicator function
>>>>   OvmfPkg: Add support to perform SEV-ES initialization
>>>>   OvmfPkg: Create a GHCB page for use during Sec phase
>>>>   OvmfPkg/PlatformPei: Reserve GHCB-related areas if S3 is supported
>>>>   OvmfPkg: Create GHCB pages for use during Pei and Dxe phase
>>>>   OvmfPkg/PlatformPei: Move early GDT into ram when SEV-ES is enabled
>>>>   UefiCpuPkg: Create an SEV-ES workarea PCD
>>>>   OvmfPkg: Reserve a page in memory for the SEV-ES usage
>>>>   OvmfPkg/PlatformPei: Reserve SEV-ES work area if S3 is supported
>>>>   OvmfPkg/ResetVector: Add support for a 32-bit SEV check
>>>>   OvmfPkg/Sec: Add #VC exception handling for Sec phase
>>>>   OvmfPkg/Sec: Enable cache early to speed up booting
>>>>   OvmfPkg/QemuFlashFvbServicesRuntimeDxe: Bypass flash detection with
>>>>     SEV-ES
>>>>   UefiCpuPkg: Add a 16-bit protected mode code segment descriptor
>>>>   UefiCpuPkg/MpInitLib: Add CPU MP data flag to indicate if SEV-ES is
>>>>     enabled
>>>>   UefiCpuPkg: Allow AP booting under SEV-ES
>>>>   OvmfPkg: Use the SEV-ES work area for the SEV-ES AP reset vector
>>>>   OvmfPkg: Move the GHCB allocations into reserved memory
>>>>   UefiCpuPkg/MpInitLib: Prepare SEV-ES guest APs for OS use
>>>>   Maintainers.txt: Add reviewers for the OvmfPkg SEV-related files
>>>>
>>>>  MdeModulePkg/MdeModulePkg.dec                 |    9 +
>>>>  OvmfPkg/OvmfPkg.dec                           |    9 +
>>>>  UefiCpuPkg/UefiCpuPkg.dec                     |   17 +
>>>>  OvmfPkg/OvmfPkgIa32.dsc                       |    6 +
>>>>  OvmfPkg/OvmfPkgIa32X64.dsc                    |    6 +
>>>>  OvmfPkg/OvmfPkgX64.dsc                        |    6 +
>>>>  OvmfPkg/OvmfXen.dsc                           |    1 +
>>>>  UefiCpuPkg/UefiCpuPkg.dsc                     |    2 +
>>>>  UefiPayloadPkg/UefiPayloadPkgIa32.dsc         |    2 +
>>>>  UefiPayloadPkg/UefiPayloadPkgIa32X64.dsc      |    2 +
>>>>  OvmfPkg/OvmfPkgX64.fdf                        |    9 +
>>>>  MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf       |    2 +
>>>>  MdePkg/Library/BaseLib/BaseLib.inf            |    4 +
>>>>  OvmfPkg/Library/VmgExitLib/VmgExitLib.inf     |   36 +
>>>>  OvmfPkg/PlatformPei/PlatformPei.inf           |    9 +
>>>>  .../FvbServicesRuntimeDxe.inf                 |    2 +
>>>>  OvmfPkg/ResetVector/ResetVector.inf           |    8 +
>>>>  OvmfPkg/Sec/SecMain.inf                       |    4 +
>>>>  .../DxeCpuExceptionHandlerLib.inf             |    1 +
>>>>  .../PeiCpuExceptionHandlerLib.inf             |    1 +
>>>>  .../SecPeiCpuExceptionHandlerLib.inf          |    1 +
>>>>  .../SmmCpuExceptionHandlerLib.inf             |    1 +
>>>>  .../Xcode5SecPeiCpuExceptionHandlerLib.inf    |    1 +
>>>>  UefiCpuPkg/Library/MpInitLib/DxeMpInitLib.inf |    4 +
>>>>  UefiCpuPkg/Library/MpInitLib/PeiMpInitLib.inf |    4 +
>>>>  .../Library/VmgExitLibNull/VmgExitLibNull.inf |   27 +
>>>>  .../Core/DxeIplPeim/X64/VirtualMemory.h       |   12 +-
>>>>  MdePkg/Include/Library/BaseLib.h              |   31 +
>>>>  MdePkg/Include/Register/Amd/Fam17Msr.h        |   46 +
>>>>  MdePkg/Include/Register/Amd/Ghcb.h            |  166 ++
>>>>  .../IndustryStandard/InstructionParsing.h     |   83 +
>>>>  OvmfPkg/Include/Library/MemEncryptSevLib.h    |   12 +
>>>>  .../QemuFlash.h                               |   13 +
>>>>  UefiCpuPkg/CpuDxe/CpuGdt.h                    |    4 +-
>>>>  UefiCpuPkg/Include/Library/VmgExitLib.h       |  103 +
>>>>  UefiCpuPkg/Library/MpInitLib/MpLib.h          |   68 +-
>>>>  .../Core/DxeIplPeim/Ia32/DxeLoadFunc.c        |    4 +-
>>>>  .../Core/DxeIplPeim/X64/DxeLoadFunc.c         |   11 +-
>>>>  .../Core/DxeIplPeim/X64/VirtualMemory.c       |   57 +-
>>>>  .../MemEncryptSevLibInternal.c                |   75 +-
>>>>  OvmfPkg/Library/VmgExitLib/VmgExitLib.c       |  159 ++
>>>>  OvmfPkg/Library/VmgExitLib/VmgExitVcHandler.c | 1716 +++++++++++++++++
>>>>  OvmfPkg/PlatformPei/AmdSev.c                  |   89 +
>>>>  OvmfPkg/PlatformPei/MemDetect.c               |   43 +
>>>>  .../QemuFlash.c                               |   23 +-
>>>>  .../QemuFlashDxe.c                            |   40 +
>>>>  .../QemuFlashSmm.c                            |   16 +
>>>>  OvmfPkg/Sec/SecMain.c                         |  188 +-
>>>>  UefiCpuPkg/CpuDxe/CpuGdt.c                    |    8 +-
>>>>  .../CpuExceptionCommon.c                      |   10 +-
>>>>  .../PeiDxeSmmCpuException.c                   |   20 +-
>>>>  .../SecPeiCpuException.c                      |   19 +
>>>>  UefiCpuPkg/Library/MpInitLib/DxeMpLib.c       |  120 +-
>>>>  UefiCpuPkg/Library/MpInitLib/MpLib.c          |  337 +++-
>>>>  UefiCpuPkg/Library/MpInitLib/PeiMpLib.c       |   19 +
>>>>  .../Library/VmgExitLibNull/VmgExitLibNull.c   |  121 ++
>>>>  UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmmFuncsArch.c  |    2 +-
>>>>  Maintainers.txt                               |   10 +
>>>>  MdeModulePkg/MdeModulePkg.uni                 |    8 +
>>>>  MdePkg/Library/BaseLib/Ia32/VmgExit.nasm      |   38 +
>>>>  MdePkg/Library/BaseLib/Ia32/XGetBv.nasm       |   31 +
>>>>  MdePkg/Library/BaseLib/X64/VmgExit.nasm       |   32 +
>>>>  MdePkg/Library/BaseLib/X64/XGetBv.nasm        |   34 +
>>>>  OvmfPkg/ResetVector/Ia16/ResetVectorVtf0.asm  |  100 +
>>>>  OvmfPkg/ResetVector/Ia32/PageTables64.asm     |  351 +++-
>>>>  OvmfPkg/ResetVector/ResetVector.nasmb         |   20 +
>>>>  .../X64/ExceptionHandlerAsm.nasm              |   17 +
>>>>  .../X64/Xcode5ExceptionHandlerAsm.nasm        |   17 +
>>>>  UefiCpuPkg/Library/MpInitLib/Ia32/MpEqu.inc   |    2 +-
>>>>  .../Library/MpInitLib/Ia32/MpFuncs.nasm       |   20 +-
>>>>  UefiCpuPkg/Library/MpInitLib/X64/MpEqu.inc    |    4 +-
>>>>  UefiCpuPkg/Library/MpInitLib/X64/MpFuncs.nasm |  369 +++-
>>>>  .../Library/VmgExitLibNull/VmgExitLibNull.uni |   15 +
>>>>  .../ResetVector/Vtf0/Ia16/Real16ToFlat32.asm  |    9 +
>>>>  UefiCpuPkg/UefiCpuPkg.uni                     |   11 +
>>>>  75 files changed, 4777 insertions(+), 100 deletions(-)  create mode
>>>> 100644 OvmfPkg/Library/VmgExitLib/VmgExitLib.inf
>>>>  create mode 100644
>>>> UefiCpuPkg/Library/VmgExitLibNull/VmgExitLibNull.inf
>>>>  create mode 100644 MdePkg/Include/Register/Amd/Ghcb.h
>>>>  create mode 100644
>>>> OvmfPkg/Include/IndustryStandard/InstructionParsing.h
>>>>  create mode 100644 UefiCpuPkg/Include/Library/VmgExitLib.h
>>>>  create mode 100644 OvmfPkg/Library/VmgExitLib/VmgExitLib.c
>>>>  create mode 100644 OvmfPkg/Library/VmgExitLib/VmgExitVcHandler.c
>>>>  create mode 100644 
>>>> UefiCpuPkg/Library/VmgExitLibNull/VmgExitLibNull.c
>>>>  create mode 100644 MdePkg/Library/BaseLib/Ia32/VmgExit.nasm
>>>>  create mode 100644 MdePkg/Library/BaseLib/Ia32/XGetBv.nasm
>>>>  create mode 100644 MdePkg/Library/BaseLib/X64/VmgExit.nasm
>>>>  create mode 100644 MdePkg/Library/BaseLib/X64/XGetBv.nasm
>>>>  create mode 100644 OvmfPkg/ResetVector/Ia16/ResetVectorVtf0.asm
>>>>  create mode 100644
>>>> UefiCpuPkg/Library/VmgExitLibNull/VmgExitLibNull.uni
>>>>
>>>
>>> For all patches except #10 ("UefiPayloadPkg: Prepare UefiPayloadPkg to use 
>>> the VmgExitLib library") and #46 ("Maintainers.txt: Add reviewers for the 
>>> OvmfPkg SEV-related files"):
>>>
>>> Regression-tested-by: Laszlo Ersek <ler...@redhat.com>
>>>
>>> Thanks
>>> Laszlo
>>>
>>
> 
> 
> 

-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#64077): https://edk2.groups.io/g/devel/message/64077
Mute This Topic: https://groups.io/mt/76056465/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to