OSDN Git Service

x86/mm: Don't attempt to encrypt initrd under SEV
authorTom Lendacky <thomas.lendacky@amd.com>
Fri, 20 Oct 2017 14:30:45 +0000 (09:30 -0500)
committerThomas Gleixner <tglx@linutronix.de>
Tue, 7 Nov 2017 14:35:55 +0000 (15:35 +0100)
When SEV is active the initrd/initramfs will already have already been
placed in memory encrypted so do not try to encrypt it.

Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com>
Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Borislav Petkov <bp@suse.de>
Tested-by: Borislav Petkov <bp@suse.de>
Cc: kvm@vger.kernel.org
Cc: Borislav Petkov <bp@alien8.de>
Cc: Andy Lutomirski <luto@kernel.org>
Link: https://lkml.kernel.org/r/20171020143059.3291-4-brijesh.singh@amd.com
arch/x86/kernel/setup.c

index 0957dd7..507100a 100644 (file)
@@ -380,9 +380,11 @@ static void __init reserve_initrd(void)
         * If SME is active, this memory will be marked encrypted by the
         * kernel when it is accessed (including relocation). However, the
         * ramdisk image was loaded decrypted by the bootloader, so make
-        * sure that it is encrypted before accessing it.
+        * sure that it is encrypted before accessing it. For SEV the
+        * ramdisk will already be encrypted, so only do this for SME.
         */
-       sme_early_encrypt(ramdisk_image, ramdisk_end - ramdisk_image);
+       if (sme_active())
+               sme_early_encrypt(ramdisk_image, ramdisk_end - ramdisk_image);
 
        initrd_start = 0;