From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (NAM10-MW2-obe.outbound.protection.outlook.com [40.107.94.42]) by mx.groups.io with SMTP id smtpd.web08.10541.1631629314455614229 for ; Tue, 14 Sep 2021 07:21:54 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@amd.com header.s=selector1 header.b=MGmIJGM/; spf=permerror, err=parse error for token &{10 18 %{i}._ip.%{h}._ehlo.%{d}._spf.vali.email}: invalid domain name (domain: amd.com, ip: 40.107.94.42, mailfrom: brijesh.singh@amd.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=edIGsRTjGD8spxk7FwpFTIPJfb57G0PdA3JXC9khslpEgnyBFu7HcB58K79rkaJJV0ehYlNH46yf5LnaX/7tAe9/XQPuM7ipb14FDkNiN1YTy7zW2xVNOI0hhvnHhI7xeLdoj51Uugq3mJTjD+OiRvYmzJBXKJiCAndVgkbf7lZ9+MDPsVOiQ5K+jeK0Ub+bNtbaZrOAyMPzoKMaZypvle1vbURSOde2367RmMTq+TAqzgzj2Fp0K9dG0NSYmFAAB6n00n7T4/JR4Gu8R2MfFPJ5H/I4vEr2kwKApZGTIMNpAtUFtAQWTI9E/figKPZjH94mEgIqn04D2aikAgVhAQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=ztH07kbVQ5OH+BoEgPu40rBC2fHjARXHaZQZkTgEJa4=; b=bjyFR+vIcDWgKasZmewcoWm+ntPbtrLDw8hfsw9zBm0EUoPidXyhaVbjojBpy2FrYKXRutIu3iowq2U16JhlRsvisYinH45N9679lRFWutAGSO3z6YptLi6gxLQ9O0lRfeTTyKoDVQ2QE+sEoRPUgs8+81bWhRAGdEjGpCcRztsSTtMekcfb+Ai9NOcDXukhua8aSBj9USXWkkw1WyrQbsnUBot8Eq92NcojRR4I3Wo9LuP66pdNkEZ4NCHPBmKbKAprWG51ZbZgCPIk4N4tmLFTnaDnY+dRwe0G9cUXBgz5200JPaf7FpV/EPenfBBVD/Ts2PHoYyGIK9jVrrgwlA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ztH07kbVQ5OH+BoEgPu40rBC2fHjARXHaZQZkTgEJa4=; b=MGmIJGM/IJP3E8Bb+0nXESoG/2sblYFSlSDgRkLkCYQMDKb3ZZ9h63WJFZO0aUM7df5MJV//9u+C/1dHGghZAK4K8/IKSknJv+R28OcCgNgki0XcNOJBQH4ERMPHgg5SKWFNlLq1nIWlem91RshBLVQAgQg3j8DLQ/iiKXUnUgY= Authentication-Results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=amd.com; Received: from SN6PR12MB2718.namprd12.prod.outlook.com (2603:10b6:805:6f::22) by SA0PR12MB4430.namprd12.prod.outlook.com (2603:10b6:806:70::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4500.18; Tue, 14 Sep 2021 14:21:52 +0000 Received: from SN6PR12MB2718.namprd12.prod.outlook.com ([fe80::78b7:7336:d363:9be3]) by SN6PR12MB2718.namprd12.prod.outlook.com ([fe80::78b7:7336:d363:9be3%6]) with mapi id 15.20.4500.019; Tue, 14 Sep 2021 14:21:52 +0000 Subject: Re: [edk2-devel] [PATCH v7 25/31] UefiCpuPkg/MpLib: add support to register GHCB GPA when SEV-SNP is enabled To: devel@edk2.groups.io, ray.ni@intel.com Cc: James Bottomley , "Xu, Min M" , "Yao, Jiewen" , Tom Lendacky , "Justen, Jordan L" , Ard Biesheuvel , Erdem Aktas , Michael Roth , Gerd Hoffmann , "Dong, Eric" , "Kumar, Rahul1" References: <20210913181941.23405-1-brijesh.singh@amd.com> <20210913181941.23405-26-brijesh.singh@amd.com> From: "Brijesh Singh" Message-ID: Date: Tue, 14 Sep 2021 09:21:50 -0500 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:78.0) Gecko/20100101 Thunderbird/78.14.0 In-Reply-To: X-ClientProxiedBy: SA0PR13CA0029.namprd13.prod.outlook.com (2603:10b6:806:130::34) To SN6PR12MB2718.namprd12.prod.outlook.com (2603:10b6:805:6f::22) Return-Path: brijesh.singh@amd.com MIME-Version: 1.0 Received: from Brijeshs-MacBook-Pro.local (70.112.153.56) by SA0PR13CA0029.namprd13.prod.outlook.com (2603:10b6:806:130::34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4500.14 via Frontend Transport; Tue, 14 Sep 2021 14:21:51 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: dfcfc037-0ecb-449b-8868-08d9778aff62 X-MS-TrafficTypeDiagnostic: SA0PR12MB4430: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:10000; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 49ZADRgiJzeiVhsb3kODKR0i3AmAYi7v+CXzogeSdX/+FwOzlGxnIoCfwp3hmhf3JhACD8DSa0kJ1Aow7LYqlmF5Klr6W/9Cng8RNT6TqrotmZhS4CNVxZo5Qwc2YXxrdm9Rol/M+LJUz5UjWSTzP8ckDwz4hbFRBgu/v63tRcHm7D5KBCAorkdVi5WTt+LsvzusoykjfEXnMBnX3ulVXUBO4rk61W1S22T8/LeNP686Y48BKLeKnCy30Q77k3vibKv/Mc0/L7Ts/A15SrvXGqn2Dg5l/HCHpEh/B6PyLqhdBRiIn9dplkilDGi3677ulBk6+nK7obTIu5f7Pgex4zIyl/MevVqAPNGoPc8pn8sCUGPqgIHqYcTSpMQzZmrBJIsaDQry3a84IqxWGR1+XX6n6R2LFBD27S9lqkPszWpOjDY7D0r+Sf2hqwd0Ct55t4nxC8A8r8RAsMunG+fJJRV+Lo/S/eVWCmrC+o9ZI5fB3c2cgwceamLUI4AO1lOORS2bv/3zAZty/f70JNllK5LUaWgYwpEC2q9QBo8M19VuoVRcqwDD3NiLg2vWTO5Y8vRZCM5BozANuhEu9u9NjbTekqk7Ii2mHzW7pjASNvUCRkt5yQ/nda7lBlad9Dp57seoI5SH34ExS3PI3F/Ib++ThAbHjCG0UwOGgNduArTjYzgOLuBq8tbXKoFq59uIjhkNC+ZltgoFCqHQsHlrXGIl9kfL9mVnC699Ftxc/9Fr9bNkJ5N6R5XGZUVkNSPRLmVJzjT4zmngGRPeslAA0PeEPuuSderphw0xy4nYQiUCjd7icizLxHNIeJTIWQ0d/6hN8DK5vprtOMp28hGz03bZHWP5WtZ4yo5kZiL60PA= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN6PR12MB2718.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(6029001)(4636009)(136003)(346002)(366004)(39860400002)(396003)(376002)(19627235002)(2906002)(86362001)(38100700002)(38350700002)(66946007)(66476007)(7416002)(83380400001)(36756003)(6506007)(54906003)(316002)(66556008)(44832011)(186003)(956004)(6486002)(45080400002)(53546011)(31686004)(5660300002)(4326008)(6512007)(966005)(478600001)(31696002)(26005)(2616005)(8936002)(52116002)(8676002)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?dUtadkFWeGU4M1ZXeEt6c3NCY1VaRWp6ckwrVVRhTW10VktGMVJONW5YTjMr?= =?utf-8?B?a2RTK0M4MUxBSUVWQmFuOUxTZDN5LzR5bUJkSnhKQTNVSlNnU1pnNTJHaG5X?= =?utf-8?B?SWoxNDBPUnlNWGRvYnhEdmh2VjR0blN6N3ArVm9PSVU5dHU4UHMyc0hLcDYr?= =?utf-8?B?ZEc5WW91NFhHbHZDUW95K3ZMSzI3anBFRmZRb2ZWYXBITWVudzEzS2pqSFBy?= =?utf-8?B?b3FNM1grb3NveVg0bDQwaUIxbm1BS3ljKy9ZL0hCR2NuYTgrVTgvUVZiMWF6?= =?utf-8?B?cUxmNjNDZGdXNHcrUENEeXFrTjRKM2VsREZ3N3BxV1B5UUZsaVRHWVNOOGlT?= =?utf-8?B?bExuYWtEb04xR3dBL0lqanA3N0dyRmZLdkh6VHdUUkJZR2NxbjA0YjN2VmJ0?= =?utf-8?B?Rk9JbGJnOXp6VW85TUIxSytyNEtNR1ZKLzBPNmlBZDlyUzBQSXFwam1oVlp3?= =?utf-8?B?V0ljNFhkUHM2bUFsRFgycmN0ZmJMRXo1Q3J2UkQ4K2xvRUtCUjFWVU9vaFNp?= =?utf-8?B?cjhRazFuVU4wLzVRVC80WmgvS0pZYkZqMFVXN29ITGhIRWlUY01abkpvdHI0?= =?utf-8?B?TGVSK2RBNWtxNmlTSkdQaGlobytDZHRoRXpXWFFjZitGNk5OdkZ5UWtFNDZT?= =?utf-8?B?cmhsU2NnSm5sMkZJTSs1UHdJQmVnK2dNQ0ZxenBNSmlxQjQ5TkVXMk9wMXk4?= =?utf-8?B?aDd3OVMweVdpemJCRFVTc0hsZklZWGVuWmhqTUV6TWwrVE5ybmtMT1VNanBs?= =?utf-8?B?WkNJLzBxYTJSd1UyRGVlM0syNVNTV0ttWEtiakloWXlLUzQ0Vi9PRHVBNXd1?= =?utf-8?B?N2ZDVlNldGtndGIxSytCdzRkc1ZDZFE3YlNrZlp5bkJaa0lvM3NtczZSc3dk?= =?utf-8?B?clE0OTRvcmhWN2VVdUs0cXR1Nk9OdHhDeDVybzlNVW1NT214UWRoaE1HRk1i?= =?utf-8?B?STlhejV4QmR1Y1Qvd2pycjZnS1lXc1NyYmFzb3hJaTRzVUVVRDk4S0MyRG80?= =?utf-8?B?cTZLOE1EOU9ueXlpR24zQTQ0Q2hVbDduVkJ5cGdqOFByRDQ0aTdGWUhLZ0Y4?= =?utf-8?B?a1U5QStlMkRuWDZ1NDErNGgvckc1NEpka1FWMWg3aHJwd2ZhTjVNUTBoQlRT?= =?utf-8?B?NHBrMndabnRuSjh5SHhzbk1NMjNJR29ENjRjTGZ3RktWTXZXSlRKYTUvSHNw?= =?utf-8?B?ZnJ5WVdHMFQvdW9iVU1kTmh4MHVjSlJRM241bi8vSFYxbzFkVUU0alFReUhu?= =?utf-8?B?Z3lXMWNMSkVaUXRtS2l4N2hUSWQ4aHBlbFpXZWdrU3dFNldXYWVuMFBWODEw?= =?utf-8?B?UGcyaGhwK2ZnVkhUbTZzMGR6TStxVXY2ckcvbTBPbjMzYzdGRTFyelhyTW11?= =?utf-8?B?T3dLVjBBVFpkUXRTTlluZFVuRmNoY3BWNVhQVFVLTEExZlMrcjgwN0NmSkRI?= =?utf-8?B?MzFWbG4xck02NWc1Rmd6MG15UEtSSWxUME1MVU5CbFFMS1BEQjRWWFB0WXF4?= =?utf-8?B?RVFZZzAwcHIycE1MaVc1ZGxxQ3IrSkxtWTdqdGl3bFR2cG1NNVBSWFZjWmtk?= =?utf-8?B?SXk1dXhrc3lNMEF1RzhWamFXSWU3bjNkQkxUMEpjMTZxb3hpdXhWM1grb3Q1?= =?utf-8?B?SWh5Z3ViY2Npc3N3TFp2RTVUbUtibGhvdTVRdDRsRjllcDExZDVITXhkNWYw?= =?utf-8?B?eFBCUmttYXVlbWhzNHkvYThqZno3aHU4YlgyTkxlY0ZUTHpoRUcvMFdhWXFE?= =?utf-8?Q?yQ1ZMiAdsVS8z3D3feFu3cIncQjaa4iyLnXrlog?= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: dfcfc037-0ecb-449b-8868-08d9778aff62 X-MS-Exchange-CrossTenant-AuthSource: SN6PR12MB2718.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Sep 2021 14:21:52.6303 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: rL9tPtKBQwAHf/N6dk0rkb+HM2NTJ0cSaKeCfn41fuKStn5V8x9JMDAmKmEsrcLCvfSyxEWqEIff9J8E/KI9XA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA0PR12MB4430 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Content-Language: en-US Hi Ray, I was hoping that refactor can be done later but sounds like we want to do it before the SNP. Let me look into it. thanks On 9/13/21 9:25 PM, Ni, Ray via groups.io wrote: > The comments don't apply to this patch only. > To be clear, it would be great that you can do a cleanup of existing code to try best separating the SEV flow from the common flow. > > -----Original Message----- > From: Ni, Ray > Sent: Tuesday, September 14, 2021 10:24 AM > To: Brijesh Singh ; devel@edk2.groups.io > Cc: James Bottomley ; Xu, Min M ; Yao, Jiewen ; Tom Lendacky ; Justen, Jordan L ; Ard Biesheuvel ; Erdem Aktas ; Michael Roth ; Gerd Hoffmann ; Michael Roth ; Dong, Eric ; Kumar, Rahul1 > Subject: RE: [PATCH v7 25/31] UefiCpuPkg/MpLib: add support to register GHCB GPA when SEV-SNP is enabled > > Hi Brijesh, > Can you please separate the SEV logic in separate functions in separate files? > These are not x86 common logics. With more and more SEV specific logics added, I want to keep the common flow clean. > > Thanks, > Ray > > -----Original Message----- > From: Brijesh Singh > Sent: Tuesday, September 14, 2021 2:20 AM > To: devel@edk2.groups.io > Cc: James Bottomley ; Xu, Min M ; Yao, Jiewen ; Tom Lendacky ; Justen, Jordan L ; Ard Biesheuvel ; Erdem Aktas ; Michael Roth ; Gerd Hoffmann ; Brijesh Singh ; Michael Roth ; Dong, Eric ; Ni, Ray ; Kumar, Rahul1 > Subject: [PATCH v7 25/31] UefiCpuPkg/MpLib: add support to register GHCB GPA when SEV-SNP is enabled > > BZ: https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fbugzilla.tianocore.org%2Fshow_bug.cgi%3Fid%3D3275&data=04%7C01%7Cbrijesh.singh%40amd.com%7C339dc1ddc21a4db5861108d97726e870%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637671831285377986%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=yKhaiNG%2FHHXatk%2FnJe7A6e%2BlDGRMt56BGUM1f1QUraI%3D&reserved=0 > > An SEV-SNP guest requires that the physical address of the GHCB must be registered with the hypervisor before using it. See the GHCB specification section 2.3.2 for more details. > > Cc: Michael Roth > Cc: Eric Dong > Cc: Ray Ni > Cc: Rahul Kumar > Cc: James Bottomley > Cc: Min Xu > Cc: Jiewen Yao > Cc: Tom Lendacky > Cc: Jordan Justen > Cc: Ard Biesheuvel > Cc: Erdem Aktas > Cc: Gerd Hoffmann > Signed-off-by: Brijesh Singh > --- > UefiCpuPkg/Library/MpInitLib/MpLib.h | 2 + > UefiCpuPkg/Library/MpInitLib/MpLib.c | 2 + > UefiCpuPkg/Library/MpInitLib/MpEqu.inc | 1 + > UefiCpuPkg/Library/MpInitLib/X64/MpFuncs.nasm | 53 +++++++++++++++++++ > 4 files changed, 58 insertions(+) > > diff --git a/UefiCpuPkg/Library/MpInitLib/MpLib.h b/UefiCpuPkg/Library/MpInitLib/MpLib.h > index 388ebef7b0dc..56d6d703d8b0 100644 > --- a/UefiCpuPkg/Library/MpInitLib/MpLib.h > +++ b/UefiCpuPkg/Library/MpInitLib/MpLib.h > @@ -219,6 +219,7 @@ typedef struct { > // > BOOLEAN Enable5LevelPaging; > BOOLEAN SevEsIsEnabled; > + BOOLEAN SevSnpIsEnabled; > UINTN GhcbBase; > } MP_CPU_EXCHANGE_INFO; > > @@ -288,6 +289,7 @@ struct _CPU_MP_DATA { > BOOLEAN WakeUpByInitSipiSipi; > > BOOLEAN SevEsIsEnabled; > + BOOLEAN SevSnpIsEnabled; > UINTN SevEsAPBuffer; > UINTN SevEsAPResetStackStart; > CPU_MP_DATA *NewCpuMpData; > diff --git a/UefiCpuPkg/Library/MpInitLib/MpLib.c b/UefiCpuPkg/Library/MpInitLib/MpLib.c > index bfef1237f452..365c0ff24ebe 100644 > --- a/UefiCpuPkg/Library/MpInitLib/MpLib.c > +++ b/UefiCpuPkg/Library/MpInitLib/MpLib.c > @@ -1040,6 +1040,7 @@ FillExchangeInfoData ( > DEBUG ((DEBUG_INFO, "%a: 5-Level Paging = %d\n", gEfiCallerBaseName, ExchangeInfo->Enable5LevelPaging)); > > ExchangeInfo->SevEsIsEnabled = CpuMpData->SevEsIsEnabled; > + ExchangeInfo->SevSnpIsEnabled = CpuMpData->SevSnpIsEnabled; > ExchangeInfo->GhcbBase = (UINTN) CpuMpData->GhcbBase; > > // > @@ -2033,6 +2034,7 @@ MpInitLibInitialize ( > CpuMpData->CpuInfoInHob = (UINT64) (UINTN) (CpuMpData->CpuData + MaxLogicalProcessorNumber); > InitializeSpinLock(&CpuMpData->MpLock); > CpuMpData->SevEsIsEnabled = ConfidentialComputingGuestHas (CCAttrAmdSevEs); > + CpuMpData->SevSnpIsEnabled = ConfidentialComputingGuestHas > + (CCAttrAmdSevSnp); > CpuMpData->SevEsAPBuffer = (UINTN) -1; > CpuMpData->GhcbBase = PcdGet64 (PcdGhcbBase); > > diff --git a/UefiCpuPkg/Library/MpInitLib/MpEqu.inc b/UefiCpuPkg/Library/MpInitLib/MpEqu.inc > index 2e9368a374a4..01668638f245 100644 > --- a/UefiCpuPkg/Library/MpInitLib/MpEqu.inc > +++ b/UefiCpuPkg/Library/MpInitLib/MpEqu.inc > @@ -92,6 +92,7 @@ struc MP_CPU_EXCHANGE_INFO > .ModeHighSegment: CTYPE_UINT16 1 > .Enable5LevelPaging: CTYPE_BOOLEAN 1 > .SevEsIsEnabled: CTYPE_BOOLEAN 1 > + .SevSnpIsEnabled CTYPE_BOOLEAN 1 > .GhcbBase: CTYPE_UINTN 1 > endstruc > > diff --git a/UefiCpuPkg/Library/MpInitLib/X64/MpFuncs.nasm b/UefiCpuPkg/Library/MpInitLib/X64/MpFuncs.nasm > index 50df802d1fca..018ebe74bf5f 100644 > --- a/UefiCpuPkg/Library/MpInitLib/X64/MpFuncs.nasm > +++ b/UefiCpuPkg/Library/MpInitLib/X64/MpFuncs.nasm > @@ -194,6 +194,59 @@ LongModeStart: > mov rdx, rax > shr rdx, 32 > mov rcx, 0xc0010130 > + > + ; > + ; If its an SEV-SNP guest then register the GHCB GPA > + ; > +RegisterGhcbGpa: > + ; > + ; Register GHCB GPA when SEV-SNP is enabled > + ; > + lea edi, [esi + MP_CPU_EXCHANGE_INFO_FIELD (SevSnpIsEnabled)] > + cmp byte [edi], 1 ; SevSnpIsEnabled > + jne RegisterGhcbGpaDone > + > + ; Save the rdi and rsi to used for later comparison > + push rdi > + push rsi > + mov edi, eax > + mov esi, edx > + or eax, 18 ; Ghcb registration request > + wrmsr > + rep vmmcall > + rdmsr > + mov r12, rax > + and r12, 0fffh > + cmp r12, 19 ; Ghcb registration response > + jne GhcbGpaRegisterFailure > + > + ; Verify that GPA is not changed > + and eax, 0fffff000h > + cmp edi, eax > + jne GhcbGpaRegisterFailure > + cmp esi, edx > + jne GhcbGpaRegisterFailure > + pop rsi > + pop rdi > + jmp RegisterGhcbGpaDone > + > + ; > + ; Request the guest termination > + ; > +GhcbGpaRegisterFailure: > + xor edx, edx > + mov eax, 256 ; GHCB terminate > + wrmsr > + rep vmmcall > + > + ; We should not return from the above terminate request, but if we do > + ; then enter into the hlt loop. > +DoHltLoop: > + cli > + hlt > + jmp DoHltLoop > + > +RegisterGhcbGpaDone: > wrmsr > jmp CProcedureInvoke > > -- > 2.17.1 > > > > > >