From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 845D48042A for ; Thu, 23 Mar 2017 02:19:36 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id DD7AAF6251; Thu, 23 Mar 2017 09:19:36 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com DD7AAF6251 Authentication-Results: ext-mx02.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx02.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=lersek@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com DD7AAF6251 Received: from lacos-laptop-7.usersys.redhat.com (ovpn-116-84.phx2.redhat.com [10.3.116.84]) by smtp.corp.redhat.com (Postfix) with ESMTP id A176D6031C; Thu, 23 Mar 2017 09:19:34 +0000 (UTC) To: "Fan, Jeff" , Brijesh Singh , "Kinney, Michael D" , "Justen, Jordan L" , "edk2-devel@ml01.01.org" , "Gao, Liming" References: <149013076154.27235.10725020825643505862.stgit@brijesh-build-machine> <149013076888.27235.3173588515291478806.stgit@brijesh-build-machine> <542CF652F8836A4AB8DBFAAD40ED192A4C569A29@shsmsx102.ccr.corp.intel.com> Cc: "leo.duran@amd.com" , "brijesh.singh@amd.com" , "Thomas.Lendacky@amd.com" From: Laszlo Ersek Message-ID: Date: Thu, 23 Mar 2017 10:19:32 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0 MIME-Version: 1.0 In-Reply-To: <542CF652F8836A4AB8DBFAAD40ED192A4C569A29@shsmsx102.ccr.corp.intel.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.26]); Thu, 23 Mar 2017 09:19:37 +0000 (UTC) Subject: Re: [RFC PATCH v2 01/10] OvmfPkg/Include: Define SEV specific CPUID and MSR X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 Mar 2017 09:19:36 -0000 Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit On 03/23/17 08:42, Fan, Jeff wrote: > Laszlo, > > UefiCpuPkg/Include/Register/Cpuid.h defined the CPUID only described in IA32 SDM. > UefiCpuPkg/Include/Register/ArchitecturalMsr.h defined the IA32 Architectural MSRs in IA32 SDM > UefiCpuPkg/Include/Register/Msr/xxxxMsr.h defined the IA32 Model-specific MSRs in IA32 SDM. > > I am not sure if Brijesh/Leo has some idea to place SEV specific CPUID/MSRs definitions. > I think one new file or new folder is better. I agree, both would work for me. My main point is that this feature depends on physical processor attributes, not on emulated (virtual) hardware or on various hypervisors, plus it is defined in a public industry spec, so it seems to belong under UefiCpuPkg, not OvmfPkg. How about UefiCpuPkg/Include/AmdRegister/Cpuid.h UefiCpuPkg/Include/AmdRegister/ArchitecturalMsr.h UefiCpuPkg/Include/AmdRegister/Msr/xxxxMsr.h or else: UefiCpuPkg/Include/Register/Amd/Cpuid.h UefiCpuPkg/Include/Register/Amd/ArchitecturalMsr.h UefiCpuPkg/Include/Register/Amd/Msr/xxxxMsr.h (as appropriate -- I'm not saying that this patch should create all of these files / subdirectories at once). Thanks Laszlo > > -----Original Message----- > From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of Laszlo Ersek > Sent: Thursday, March 23, 2017 12:04 AM > To: Brijesh Singh; Kinney, Michael D; Justen, Jordan L; edk2-devel@ml01.01.org; Gao, Liming; Fan, Jeff > Cc: leo.duran@amd.com; brijesh.singh@amd.com; Thomas.Lendacky@amd.com > Subject: Re: [edk2] [RFC PATCH v2 01/10] OvmfPkg/Include: Define SEV specific CPUID and MSR > > Adding Jeff > > On 03/21/17 22:12, Brijesh Singh wrote: >> The patch defines AMD's Memory Encryption Information CPUID leaf (0x8000_001F). >> The complete description for this CPUID leaf is available in APM >> volume 2 [1] Section 15.34 (Secure Encrypted Virtualization). >> >> [1] http://support.amd.com/TechDocs/24593.pdf >> >> Signed-off-by: Brijesh Singh >> --- >> OvmfPkg/Include/Register/AmdSevMap.h | 133 >> ++++++++++++++++++++++++++++++++++ >> 1 file changed, 133 insertions(+) >> create mode 100644 OvmfPkg/Include/Register/AmdSevMap.h >> >> diff --git a/OvmfPkg/Include/Register/AmdSevMap.h >> b/OvmfPkg/Include/Register/AmdSevMap.h >> new file mode 100644 >> index 0000000..de80f39 >> --- /dev/null >> +++ b/OvmfPkg/Include/Register/AmdSevMap.h >> @@ -0,0 +1,133 @@ >> +/** @file >> + >> +AMD Secure Encrypted Virtualization (SEV) specific CPUID and MSR >> +definitions >> + >> +The complete description for this CPUID leaf is available in APM >> +volume 2 (Section 15.34) http://support.amd.com/TechDocs/24593.pdf >> + >> +Copyright (c) 2017, Advanced Micro Devices. All rights reserved.
>> + >> +This program and the accompanying materials are licensed and made >> +available under the terms and conditions of the BSD License which >> +accompanies this distribution. The full text of the license may be >> +found at http://opensource.org/licenses/bsd-license.php >> + >> +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, >> +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. >> + >> +**/ >> + >> +#ifndef __AMD_SEV_MAP_H__ >> +#define __AMD_SEV_MAP_H__ >> + >> +#pragma pack (1) >> + >> +#define CPUID_MEMORY_ENCRYPTION_INFO 0x8000001F >> + >> +/** >> + CPUID Memory Encryption support information EAX for CPUID leaf >> + #CPUID_MEMORY_ENCRYPTION_INFO. >> +**/ >> +typedef union { >> + /// >> + /// Individual bit fields >> + /// >> + struct { >> + /// >> + /// [Bit 0] Secure Memory Encryption (Sme) Support >> + /// >> + UINT32 SmeBit:1; >> + >> + /// >> + /// [Bit 1] Secure Encrypted Virtualization (Sev) Support >> + /// >> + UINT32 SevBit:1; >> + >> + /// >> + /// [Bit 2] Page flush MSR support >> + /// >> + UINT32 PageFlushMsrBit:1; >> + >> + /// >> + /// [Bit 3] Encrypted state support >> + /// >> + UINT32 SevEsBit:1; >> + >> + /// >> + /// [Bit 4:31] Reserved >> + /// >> + UINT32 ReservedBits:28; >> + } Bits; >> + /// >> + /// All bit fields as a 32-bit value >> + /// >> + UINT32 Uint32; >> +} CPUID_MEMORY_ENCRYPTION_INFO_EAX; >> + >> +/** >> + CPUID Memory Encryption support information EBX for CPUID leaf >> + #CPUID_MEMORY_ENCRYPTION_INFO. >> +**/ >> +typedef union { >> + /// >> + /// Individual bit fields >> + /// >> + struct { >> + /// >> + /// [Bit 0:5] Page table bit number used to enable memory encryption >> + /// >> + UINT32 PtePosBits:6; >> + >> + /// >> + /// [Bit 6:11] Reduction of system physical address space bits when memory encryption is enabled >> + /// >> + UINT32 ReducedPhysBits:5; >> + >> + /// >> + /// [Bit 12:31] Reserved >> + /// >> + UINT32 ReservedBits:21; >> + } Bits; >> + /// >> + /// All bit fields as a 32-bit value >> + /// >> + UINT32 Uint32; >> +} CPUID_MEMORY_ENCRYPTION_INFO_EBX; >> + >> +/** >> + Secure Encrypted Virtualization (SEV) status register >> + >> +**/ >> +#define MSR_SEV_STATUS 0xc0010131 >> + >> +/** >> + MSR information returned for #MSR_SEV_STATUS **/ typedef union { >> + /// >> + /// Individual bit fields >> + /// >> + struct { >> + /// >> + /// [Bit 0] Secure Encrypted Virtualization (Sev) is enabled >> + /// >> + UINT32 SevBit:1; >> + >> + /// >> + /// [Bit 1] Secure Encrypted Virtualization Encrypted State (SevEs) is enabled >> + /// >> + UINT32 SevEsBit:1; >> + >> + UINT32 Reserved:30; >> + } Bits; >> + /// >> + /// All bit fields as a 32-bit value >> + /// >> + UINT32 Uint32; >> + /// >> + /// All bit fields as a 64-bit value >> + /// >> + UINT64 Uint64; >> +} MSR_SEV_STATUS_REGISTER; >> + >> +#endif >> >> _______________________________________________ >> edk2-devel mailing list >> edk2-devel@lists.01.org >> https://lists.01.org/mailman/listinfo/edk2-devel >> > > I feel that these definitions should be added to "UefiCpuPkg/Include/Register/Cpuid.h", or else to another (new) header file in that directory. > > Jeff, what do you think? > > Thanks! > Laszlo > _______________________________________________ > edk2-devel mailing list > edk2-devel@lists.01.org > https://lists.01.org/mailman/listinfo/edk2-devel >