aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71-e3000/0042-Documentation-x86-Add-AMD-Secure-Encrypted-Virtualiz.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71-e3000/0042-Documentation-x86-Add-AMD-Secure-Encrypted-Virtualiz.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71-e3000/0042-Documentation-x86-Add-AMD-Secure-Encrypted-Virtualiz.patch92
1 files changed, 92 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71-e3000/0042-Documentation-x86-Add-AMD-Secure-Encrypted-Virtualiz.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71-e3000/0042-Documentation-x86-Add-AMD-Secure-Encrypted-Virtualiz.patch
new file mode 100644
index 00000000..619087b4
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71-e3000/0042-Documentation-x86-Add-AMD-Secure-Encrypted-Virtualiz.patch
@@ -0,0 +1,92 @@
+From 73e22bb33ff668812fefcfb4b4faa003666bb790 Mon Sep 17 00:00:00 2001
+From: Brijesh Singh <brijesh.singh@amd.com>
+Date: Fri, 20 Oct 2017 09:30:43 -0500
+Subject: [PATCH 42/95] Documentation/x86: Add AMD Secure Encrypted
+ Virtualization (SEV) description
+
+Update the AMD memory encryption document describing the Secure Encrypted
+Virtualization (SEV) feature.
+
+Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
+Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
+Reviewed-by: Borislav Petkov <bp@suse.de>
+Cc: Tom Lendacky <thomas.lendacky@amd.com>
+Cc: kvm@vger.kernel.org
+Cc: Jonathan Corbet <corbet@lwn.net>
+Cc: Borislav Petkov <bp@alien8.de>
+Link: https://lkml.kernel.org/r/20171020143059.3291-2-brijesh.singh@amd.com
+Signed-off-by: Sudheesh Mavila <sudheesh.mavila@amd.com>
+---
+ Documentation/x86/amd-memory-encryption.txt | 30 +++++++++++++++++++++++++----
+ 1 file changed, 26 insertions(+), 4 deletions(-)
+
+diff --git a/Documentation/x86/amd-memory-encryption.txt b/Documentation/x86/amd-memory-encryption.txt
+index f512ab7..afc41f5 100644
+--- a/Documentation/x86/amd-memory-encryption.txt
++++ b/Documentation/x86/amd-memory-encryption.txt
+@@ -1,4 +1,5 @@
+-Secure Memory Encryption (SME) is a feature found on AMD processors.
++Secure Memory Encryption (SME) and Secure Encrypted Virtualization (SEV) are
++features found on AMD processors.
+
+ SME provides the ability to mark individual pages of memory as encrypted using
+ the standard x86 page tables. A page that is marked encrypted will be
+@@ -6,24 +7,38 @@ automatically decrypted when read from DRAM and encrypted when written to
+ DRAM. SME can therefore be used to protect the contents of DRAM from physical
+ attacks on the system.
+
++SEV enables running encrypted virtual machines (VMs) in which the code and data
++of the guest VM are secured so that a decrypted version is available only
++within the VM itself. SEV guest VMs have the concept of private and shared
++memory. Private memory is encrypted with the guest-specific key, while shared
++memory may be encrypted with hypervisor key. When SME is enabled, the hypervisor
++key is the same key which is used in SME.
++
+ A page is encrypted when a page table entry has the encryption bit set (see
+ below on how to determine its position). The encryption bit can also be
+ specified in the cr3 register, allowing the PGD table to be encrypted. Each
+ successive level of page tables can also be encrypted by setting the encryption
+ bit in the page table entry that points to the next table. This allows the full
+ page table hierarchy to be encrypted. Note, this means that just because the
+-encryption bit is set in cr3, doesn't imply the full hierarchy is encyrpted.
++encryption bit is set in cr3, doesn't imply the full hierarchy is encrypted.
+ Each page table entry in the hierarchy needs to have the encryption bit set to
+ achieve that. So, theoretically, you could have the encryption bit set in cr3
+ so that the PGD is encrypted, but not set the encryption bit in the PGD entry
+ for a PUD which results in the PUD pointed to by that entry to not be
+ encrypted.
+
+-Support for SME can be determined through the CPUID instruction. The CPUID
+-function 0x8000001f reports information related to SME:
++When SEV is enabled, instruction pages and guest page tables are always treated
++as private. All the DMA operations inside the guest must be performed on shared
++memory. Since the memory encryption bit is controlled by the guest OS when it
++is operating in 64-bit or 32-bit PAE mode, in all other modes the SEV hardware
++forces the memory encryption bit to 1.
++
++Support for SME and SEV can be determined through the CPUID instruction. The
++CPUID function 0x8000001f reports information related to SME:
+
+ 0x8000001f[eax]:
+ Bit[0] indicates support for SME
++ Bit[1] indicates support for SEV
+ 0x8000001f[ebx]:
+ Bits[5:0] pagetable bit number used to activate memory
+ encryption
+@@ -39,6 +54,13 @@ determine if SME is enabled and/or to enable memory encryption:
+ Bit[23] 0 = memory encryption features are disabled
+ 1 = memory encryption features are enabled
+
++If SEV is supported, MSR 0xc0010131 (MSR_AMD64_SEV) can be used to determine if
++SEV is active:
++
++ 0xc0010131:
++ Bit[0] 0 = memory encryption is not active
++ 1 = memory encryption is active
++
+ Linux relies on BIOS to set this bit if BIOS has determined that the reduction
+ in the physical address space as a result of enabling memory encryption (see
+ CPUID information above) will not conflict with the address space resource
+--
+2.7.4
+