public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Dong, Eric" <eric.dong@intel.com>
To: Tom Lendacky <thomas.lendacky@amd.com>,
	"devel@edk2.groups.io" <devel@edk2.groups.io>
Cc: "Justen, Jordan L" <jordan.l.justen@intel.com>,
	Laszlo Ersek <lersek@redhat.com>,
	Ard Biesheuvel <ard.biesheuvel@linaro.org>,
	"Kinney, Michael D" <michael.d.kinney@intel.com>,
	"Gao, Liming" <liming.gao@intel.com>,
	"Ni, Ray" <ray.ni@intel.com>,
	Brijesh Singh <brijesh.singh@amd.com>
Subject: Re: [PATCH v8 42/46] UefiCpuPkg: Allow AP booting under SEV-ES
Date: Fri, 5 Jun 2020 06:13:19 +0000	[thread overview]
Message-ID: <DM6PR11MB3274589D3EBB38764010D369FE860@DM6PR11MB3274.namprd11.prod.outlook.com> (raw)
In-Reply-To: <220c9b8f-19ee-7aa9-f364-bae85c33e4fa@amd.com>

Hi Tom,

> >> +        //
> >> +        // Program the Segment/Rip based on the SIPI vector (always at
> least
> >> +        // 16-byte aligned, so Rip is set to 0).
> >> +        //
> >> +        JmpFar->Rip = 0;
> >> +        JmpFar->Segment = (UINT16) (ExchangeInfo->BufferStart >> 4);
> >> +      }
> >
> > For this wake-up process, current code just handles the broadcast type. I
> think it also needs to handle wake-up specific AP case. Right?
> 
> Yes, it should be. I never encountered a non-broadcast call under OVMF, but
> it should be supported for error cases, etc. and for any future changes in
> support.
> 
> I'll add it and make the above code a function so as not to duplicate it.
> 

Yes, that will be good.

Thanks,
Eric

> Thanks,
> Tom
> 
> >
> > Thanks,
> > Eric
> >>        //
> >>        // Wakeup all APs
> >>        //
> >> @@ -1669,7 +1956,7 @@ MpInitLibInitialize (
> >>    ASSERT (MaxLogicalProcessorNumber != 0);
> >>
> >>    AsmGetAddressMap (&AddressMap);
> >> -  ApResetVectorSize = AddressMap.RendezvousFunnelSize + sizeof
> >> (MP_CPU_EXCHANGE_INFO);
> >> +  ApResetVectorSize = GetApResetVectorSize (&AddressMap);
> >>    ApStackSize = PcdGet32(PcdCpuApStackSize);
> >>    ApLoopMode  = GetApLoopMode (&MonitorFilterSize);
> >>
> >> @@ -1728,6 +2015,8 @@ MpInitLibInitialize (
> >>    CpuMpData->CpuInfoInHob     = (UINT64) (UINTN) (CpuMpData-
> >CpuData
> >> + MaxLogicalProcessorNumber);
> >>    InitializeSpinLock(&CpuMpData->MpLock);
> >>    CpuMpData->SevEsIsEnabled = PcdGetBool (PcdSevEsIsEnabled);
> >> +  CpuMpData->SevEsAPBuffer  = (UINTN) -1;
> >> +  CpuMpData->GhcbBase       = PcdGet64 (PcdGhcbBase);
> >>
> >>    //
> >>    // Make sure no memory usage outside of the allocated buffer.
> >> @@ -1786,6 +2075,7 @@ MpInitLibInitialize (
> >>      // APs have been wakeup before, just get the CPU Information
> >>      // from HOB
> >>      //
> >> +    OldCpuMpData->NewCpuMpData = CpuMpData;
> >>      CpuMpData->CpuCount  = OldCpuMpData->CpuCount;
> >>      CpuMpData->BspNumber = OldCpuMpData->BspNumber;
> >>      CpuMpData->CpuInfoInHob = OldCpuMpData->CpuInfoInHob; diff --git
> >> a/UefiCpuPkg/Library/MpInitLib/PeiMpLib.c
> >> b/UefiCpuPkg/Library/MpInitLib/PeiMpLib.c
> >> index a548fed23fa7..e17a351e5cfd 100644
> >> --- a/UefiCpuPkg/Library/MpInitLib/PeiMpLib.c
> >> +++ b/UefiCpuPkg/Library/MpInitLib/PeiMpLib.c
> >> @@ -280,6 +280,25 @@ GetModeTransitionBuffer (
> >>    return 0;
> >>  }
> >>
> >> +/**
> >> +  Return the address of the SEV-ES AP jump table.
> >> +
> >> +  This buffer is required in order for an SEV-ES guest to transition
> >> + from  UEFI into an OS.
> >> +
> >> +  @retval other   Return SEV-ES AP jump table buffer
> >> +**/
> >> +UINTN
> >> +GetSevEsAPMemory (
> >> +  VOID
> >> +  )
> >> +{
> >> +  //
> >> +  // PEI phase doesn't need to do such transition. So simply return 0.
> >> +  //
> >> +  return 0;
> >> +}
> >> +
> >>  /**
> >>    Checks APs status and updates APs status if needed.
> >>
> >> diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmmFuncsArch.c
> >> b/UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmmFuncsArch.c
> >> index 6298571e29b2..28f8e8e133e5 100644
> >> --- a/UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmmFuncsArch.c
> >> +++ b/UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmmFuncsArch.c
> >> @@ -121,7 +121,7 @@ GetProtectedModeCS (
> >>    GdtEntry = (IA32_SEGMENT_DESCRIPTOR *) GdtrDesc.Base;
> >>    for (Index = 0; Index < GdtEntryCount; Index++) {
> >>      if (GdtEntry->Bits.L == 0) {
> >> -      if (GdtEntry->Bits.Type > 8 && GdtEntry->Bits.L == 0) {
> >> +      if (GdtEntry->Bits.Type > 8 && GdtEntry->Bits.DB == 1) {
> >>          break;
> >>        }
> >>      }
> >> diff --git a/UefiCpuPkg/Library/MpInitLib/Ia32/MpEqu.inc
> >> b/UefiCpuPkg/Library/MpInitLib/Ia32/MpEqu.inc
> >> index efb1bc2bf7cb..4f5a7c859a56 100644
> >> --- a/UefiCpuPkg/Library/MpInitLib/Ia32/MpEqu.inc
> >> +++ b/UefiCpuPkg/Library/MpInitLib/Ia32/MpEqu.inc
> >> @@ -19,7 +19,7 @@ CPU_SWITCH_STATE_IDLE         equ        0
> >>  CPU_SWITCH_STATE_STORED       equ        1
> >>  CPU_SWITCH_STATE_LOADED       equ        2
> >>
> >> -LockLocation                  equ        (RendezvousFunnelProcEnd -
> >> RendezvousFunnelProcStart)
> >> +LockLocation                  equ        (SwitchToRealProcEnd -
> >> RendezvousFunnelProcStart)
> >>  StackStartAddressLocation     equ        LockLocation + 04h
> >>  StackSizeLocation             equ        LockLocation + 08h
> >>  ApProcedureLocation           equ        LockLocation + 0Ch
> >> diff --git a/UefiCpuPkg/Library/MpInitLib/Ia32/MpFuncs.nasm
> >> b/UefiCpuPkg/Library/MpInitLib/Ia32/MpFuncs.nasm
> >> index b74046b76af3..309d53bf3b37 100644
> >> --- a/UefiCpuPkg/Library/MpInitLib/Ia32/MpFuncs.nasm
> >> +++ b/UefiCpuPkg/Library/MpInitLib/Ia32/MpFuncs.nasm
> >> @@ -215,6 +215,16 @@ CProcedureInvoke:
> >>      jmp        $                 ; Never reach here
> >>  RendezvousFunnelProcEnd:
> >>
> >> +;-------------------------------------------------------------------
> >> +---
> >> +---------------
> >> +;SwitchToRealProc procedure follows.
> >> +;NOT USED IN 32 BIT MODE.
> >> +;-------------------------------------------------------------------
> >> +---
> >> +---------------
> >> +global ASM_PFX(SwitchToRealProc)
> >> +ASM_PFX(SwitchToRealProc):
> >> +SwitchToRealProcStart:
> >> +    jmp        $                 ; Never reach here
> >> +SwitchToRealProcEnd:
> >> +
> >>
> >> ;--------------------------------------------------------------------
> >> -----------------  ;  AsmRelocateApLoop (MwaitSupport,
> >> ApTargetCState, PmCodeSegment, TopOfApStack, CountTofinish);
> >>
> >> ;--------------------------------------------------------------------
> >> ----------------- @@ -263,6 +273,11 @@ ASM_PFX(AsmGetAddressMap):
> >>      mov        dword [ebx + 0Ch], AsmRelocateApLoopStart
> >>      mov        dword [ebx + 10h], AsmRelocateApLoopEnd -
> >> AsmRelocateApLoopStart
> >>      mov        dword [ebx + 14h], Flat32Start - RendezvousFunnelProcStart
> >> +    mov        dword [ebx + 18h], SwitchToRealProcEnd -
> >> SwitchToRealProcStart       ; SwitchToRealSize
> >> +    mov        dword [ebx + 1Ch], SwitchToRealProcStart -
> >> RendezvousFunnelProcStart ; SwitchToRealOffset
> >> +    mov        dword [ebx + 20h], SwitchToRealProcStart - Flat32Start               ;
> >> SwitchToRealNoNxOffset
> >> +    mov        dword [ebx + 24h], 0                                                 ;
> >> SwitchToRealPM16ModeOffset
> >> +    mov        dword [ebx + 28h], 0                                                 ;
> >> SwitchToRealPM16ModeSize
> >>
> >>      popad
> >>      ret
> >> diff --git a/UefiCpuPkg/Library/MpInitLib/X64/MpEqu.inc
> >> b/UefiCpuPkg/Library/MpInitLib/X64/MpEqu.inc
> >> index 58ef369342a7..c92daaaffd6b 100644
> >> --- a/UefiCpuPkg/Library/MpInitLib/X64/MpEqu.inc
> >> +++ b/UefiCpuPkg/Library/MpInitLib/X64/MpEqu.inc
> >> @@ -19,7 +19,7 @@ CPU_SWITCH_STATE_IDLE         equ        0
> >>  CPU_SWITCH_STATE_STORED       equ        1
> >>  CPU_SWITCH_STATE_LOADED       equ        2
> >>
> >> -LockLocation                  equ        (RendezvousFunnelProcEnd -
> >> RendezvousFunnelProcStart)
> >> +LockLocation                  equ        (SwitchToRealProcEnd -
> >> RendezvousFunnelProcStart)
> >>  StackStartAddressLocation     equ        LockLocation + 08h
> >>  StackSizeLocation             equ        LockLocation + 10h
> >>  ApProcedureLocation           equ        LockLocation + 18h
> >> @@ -41,3 +41,5 @@ ModeTransitionSegmentLocation       equ
> LockLocation +
> >> 98h
> >>  ModeHighMemoryLocation              equ  LockLocation + 9Ah
> >>  ModeHighSegmentLocation             equ  LockLocation + 9Eh
> >>  Enable5LevelPagingLocation          equ  LockLocation + 0A0h
> >> +SevEsIsEnabledLocation              equ  LockLocation + 0A1h
> >> +GhcbBaseLocation                    equ  LockLocation + 0A2h
> >> diff --git a/UefiCpuPkg/Library/MpInitLib/X64/MpFuncs.nasm
> >> b/UefiCpuPkg/Library/MpInitLib/X64/MpFuncs.nasm
> >> index 87f2523e856f..6956b408d004 100644
> >> --- a/UefiCpuPkg/Library/MpInitLib/X64/MpFuncs.nasm
> >> +++ b/UefiCpuPkg/Library/MpInitLib/X64/MpFuncs.nasm
> >> @@ -184,9 +184,97 @@ Releaselock:
> >>      add        edi, StackStartAddressLocation
> >>      add        rax, qword [edi]
> >>      mov        rsp, rax
> >> +
> >> +    lea        edi, [esi + SevEsIsEnabledLocation]
> >> +    cmp        byte [edi], 1        ; SevEsIsEnabled
> >> +    jne        CProcedureInvoke
> >> +
> >> +    ;
> >> +    ; program GHCB
> >> +    ;   Each page after the GHCB is a per-CPU page, so the calculation
> >> programs
> >> +    ;   a GHCB to be every 8KB.
> >> +    ;
> >> +    mov        eax, SIZE_4KB
> >> +    shl        eax, 1                            ; EAX = SIZE_4K * 2
> >> +    mov        ecx, ebx
> >> +    mul        ecx                               ; EAX = SIZE_4K * 2 * CpuNumber
> >> +    mov        edi, esi
> >> +    add        edi, GhcbBaseLocation
> >> +    add        rax, qword [edi]
> >> +    mov        rdx, rax
> >> +    shr        rdx, 32
> >> +    mov        rcx, 0xc0010130
> >> +    wrmsr
> >>      jmp        CProcedureInvoke
> >>
> >>  GetApicId:
> >> +    lea        edi, [esi + SevEsIsEnabledLocation]
> >> +    cmp        byte [edi], 1        ; SevEsIsEnabled
> >> +    jne        DoCpuid
> >> +
> >> +    ;
> >> +    ; Since we don't have a stack yet, we can't take a #VC
> >> +    ; exception. Use the GHCB protocol to perform the CPUID
> >> +    ; calls.
> >> +    ;
> >> +    mov        rcx, 0xc0010130
> >> +    rdmsr
> >> +    shl        rdx, 32
> >> +    or         rax, rdx
> >> +    mov        rdi, rax             ; RDI now holds the original GHCB GPA
> >> +
> >> +    mov        rdx, 0               ; CPUID function 0
> >> +    mov        rax, 0               ; RAX register requested
> >> +    or         rax, 4
> >> +    wrmsr
> >> +    rep vmmcall
> >> +    rdmsr
> >> +    cmp        edx, 0bh
> >> +    jb         NoX2ApicSevEs        ; CPUID level below
> >> CPUID_EXTENDED_TOPOLOGY
> >> +
> >> +    mov        rdx, 0bh             ; CPUID function 0x0b
> >> +    mov        rax, 040000000h      ; RBX register requested
> >> +    or         rax, 4
> >> +    wrmsr
> >> +    rep vmmcall
> >> +    rdmsr
> >> +    test       edx, 0ffffh
> >> +    jz         NoX2ApicSevEs        ; CPUID.0BH:EBX[15:0] is zero
> >> +
> >> +    mov        rdx, 0bh             ; CPUID function 0x0b
> >> +    mov        rax, 0c0000000h      ; RDX register requested
> >> +    or         rax, 4
> >> +    wrmsr
> >> +    rep vmmcall
> >> +    rdmsr
> >> +
> >> +    ; Processor is x2APIC capable; 32-bit x2APIC ID is now in EDX
> >> +    jmp        RestoreGhcb
> >> +
> >> +NoX2ApicSevEs:
> >> +    ; Processor is not x2APIC capable, so get 8-bit APIC ID
> >> +    mov        rdx, 1               ; CPUID function 1
> >> +    mov        rax, 040000000h      ; RBX register requested
> >> +    or         rax, 4
> >> +    wrmsr
> >> +    rep vmmcall
> >> +    rdmsr
> >> +    shr        edx, 24
> >> +
> >> +RestoreGhcb:
> >> +    mov        rbx, rdx             ; Save x2APIC/APIC ID
> >> +
> >> +    mov        rdx, rdi             ; RDI holds the saved GHCB GPA
> >> +    shr        rdx, 32
> >> +    mov        eax, edi
> >> +    wrmsr
> >> +
> >> +    mov        rdx, rbx
> >> +
> >> +    ; x2APIC ID or APIC ID is in EDX
> >> +    jmp        GetProcessorNumber
> >> +
> >> +DoCpuid:
> >>      mov        eax, 0
> >>      cpuid
> >>      cmp        eax, 0bh
> >> @@ -253,12 +341,158 @@ CProcedureInvoke:
> >>
> >>  RendezvousFunnelProcEnd:
> >>
> >> +;-------------------------------------------------------------------
> >> +---
> >> +---------------
> >> +;SwitchToRealProc procedure follows.
> >> +;ALSO THIS PROCEDURE IS EXECUTED BY APs TRANSITIONING TO 16 BIT
> >> MODE.
> >> +HENCE THIS PROC ;IS IN MACHINE CODE.
> >> +;  SwitchToRealProc (UINTN BufferStart, UINT16 Code16, UINT16
> >> +Code32, UINTN StackStart) ;  rcx - Buffer Start ;  rdx - Code16
> >> +Selector Offset ;  r8  - Code32 Selector Offset ;  r9  - Stack Start
> >> +;-------------------------------------------------------------------
> >> +---
> >> +---------------
> >> +global ASM_PFX(SwitchToRealProc)
> >> +ASM_PFX(SwitchToRealProc):
> >> +SwitchToRealProcStart:
> >> +BITS 64
> >> +    cli
> >> +
> >> +    ;
> >> +    ; Get RDX reset value before changing stacks since the
> >> +    ; new stack won't be able to accomodate a #VC exception.
> >> +    ;
> >> +    push       rax
> >> +    push       rbx
> >> +    push       rcx
> >> +    push       rdx
> >> +
> >> +    mov        rax, 1
> >> +    cpuid
> >> +    mov        rsi, rax                    ; Save off the reset value for RDX
> >> +
> >> +    pop        rdx
> >> +    pop        rcx
> >> +    pop        rbx
> >> +    pop        rax
> >> +
> >> +    ;
> >> +    ; Establish stack below 1MB
> >> +    ;
> >> +    mov        rsp, r9
> >> +
> >> +    ;
> >> +    ; Push ultimate Reset Vector onto the stack
> >> +    ;
> >> +    mov        rax, rcx
> >> +    shr        rax, 4
> >> +    push       word 0x0002                 ; RFLAGS
> >> +    push       ax                          ; CS
> >> +    push       word 0x0000                 ; RIP
> >> +    push       word 0x0000                 ; For alignment, will be discarded
> >> +
> >> +    ;
> >> +    ; Get address of "16-bit operand size" label
> >> +    ;
> >> +    lea        rbx, [PM16Mode]
> >> +
> >> +    ;
> >> +    ; Push addresses used to change to compatibility mode
> >> +    ;
> >> +    lea        rax, [CompatMode]
> >> +    push       r8
> >> +    push       rax
> >> +
> >> +    ;
> >> +    ; Clear R8 - R15, for reset, before going into 32-bit mode
> >> +    ;
> >> +    xor        r8, r8
> >> +    xor        r9, r9
> >> +    xor        r10, r10
> >> +    xor        r11, r11
> >> +    xor        r12, r12
> >> +    xor        r13, r13
> >> +    xor        r14, r14
> >> +    xor        r15, r15
> >> +
> >> +    ;
> >> +    ; Far return into 32-bit mode
> >> +    ;
> >> +o64 retf
> >> +
> >> +BITS 32
> >> +CompatMode:
> >> +    ;
> >> +    ; Set up stack to prepare for exiting protected mode
> >> +    ;
> >> +    push       edx                         ; Code16 CS
> >> +    push       ebx                         ; PM16Mode label address
> >> +
> >> +    ;
> >> +    ; Disable paging
> >> +    ;
> >> +    mov        eax, cr0                    ; Read CR0
> >> +    btr        eax, 31                     ; Set PG=0
> >> +    mov        cr0, eax                    ; Write CR0
> >> +
> >> +    ;
> >> +    ; Disable long mode
> >> +    ;
> >> +    mov        ecx, 0c0000080h             ; EFER MSR number
> >> +    rdmsr                                  ; Read EFER
> >> +    btr        eax, 8                      ; Set LME=0
> >> +    wrmsr                                  ; Write EFER
> >> +
> >> +    ;
> >> +    ; Disable PAE
> >> +    ;
> >> +    mov        eax, cr4                    ; Read CR4
> >> +    btr        eax, 5                      ; Set PAE=0
> >> +    mov        cr4, eax                    ; Write CR4
> >> +
> >> +    mov        edx, esi                    ; Restore RDX reset value
> >> +
> >> +    ;
> >> +    ; Switch to 16-bit operand size
> >> +    ;
> >> +    retf
> >> +
> >> +BITS 16
> >> +    ;
> >> +    ; At entry to this label
> >> +    ;   - RDX will have its reset value
> >> +    ;   - On the top of the stack
> >> +    ;     - Alignment data (two bytes) to be discarded
> >> +    ;     - IP for Real Mode (two bytes)
> >> +    ;     - CS for Real Mode (two bytes)
> >> +    ;
> >> +PM16Mode:
> >> +    mov        eax, cr0                    ; Read CR0
> >> +    btr        eax, 0                      ; Set PE=0
> >> +    mov        cr0, eax                    ; Write CR0
> >> +
> >> +    pop        ax                          ; Discard alignment data
> >> +
> >> +    ;
> >> +    ; Clear registers (except RDX and RSP) before going into 16-bit mode
> >> +    ;
> >> +    xor        eax, eax
> >> +    xor        ebx, ebx
> >> +    xor        ecx, ecx
> >> +    xor        esi, esi
> >> +    xor        edi, edi
> >> +    xor        ebp, ebp
> >> +
> >> +    iret
> >> +
> >> +SwitchToRealProcEnd:
> >> +
> >>
> >> ;--------------------------------------------------------------------
> >> -----------------  ;  AsmRelocateApLoop (MwaitSupport,
> >> ApTargetCState, PmCodeSegment, TopOfApStack, CountTofinish);
> >>
> >> ;--------------------------------------------------------------------
> >> -----------------
> >>  global ASM_PFX(AsmRelocateApLoop)
> >>  ASM_PFX(AsmRelocateApLoop):
> >>  AsmRelocateApLoopStart:
> >> +BITS 64
> >>      cli                          ; Disable interrupt before switching to 32-bit mode
> >>      mov        rax, [rsp + 40]   ; CountTofinish
> >>      lock dec   dword [rax]       ; (*CountTofinish)--
> >> @@ -324,6 +558,11 @@ ASM_PFX(AsmGetAddressMap):
> >>      mov        qword [rcx + 18h], rax
> >>      mov        qword [rcx + 20h], AsmRelocateApLoopEnd -
> >> AsmRelocateApLoopStart
> >>      mov        qword [rcx + 28h], Flat32Start - RendezvousFunnelProcStart
> >> +    mov        qword [rcx + 30h], SwitchToRealProcEnd -
> >> SwitchToRealProcStart          ; SwitchToRealSize
> >> +    mov        qword [rcx + 38h], SwitchToRealProcStart -
> >> RendezvousFunnelProcStart    ; SwitchToRealOffset
> >> +    mov        qword [rcx + 40h], SwitchToRealProcStart -
> Flat32Start                  ;
> >> SwitchToRealNoNxOffset
> >> +    mov        qword [rcx + 48h], PM16Mode -
> >> RendezvousFunnelProcStart                 ; SwitchToRealPM16ModeOffset
> >> +    mov        qword [rcx + 50h], SwitchToRealProcEnd -
> PM16Mode                       ;
> >> SwitchToRealPM16ModeSize
> >>      ret
> >>
> >>
> >> ;--------------------------------------------------------------------
> >> -----------------
> >> --
> >> 2.17.1
> >

  reply	other threads:[~2020-06-05  6:13 UTC|newest]

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

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=DM6PR11MB3274589D3EBB38764010D369FE860@DM6PR11MB3274.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