Skip to content

Commit ce9084b

Browse files
Ard BiesheuvelIngo Molnar
authored andcommitted
x86: Make ARCH_USE_MEMREMAP_PROT a generic Kconfig symbol
Turn ARCH_USE_MEMREMAP_PROT into a generic Kconfig symbol, and fix the dependency expression to reflect that AMD_MEM_ENCRYPT depends on it, instead of the other way around. This will permit ARCH_USE_MEMREMAP_PROT to be selected by other architectures. Note that the encryption related early memremap routines in arch/x86/mm/ioremap.c cannot be built for 32-bit x86 without triggering the following warning: arch/x86//mm/ioremap.c: In function 'early_memremap_encrypted': >> arch/x86/include/asm/pgtable_types.h:193:27: warning: conversion from 'long long unsigned int' to 'long unsigned int' changes value from '9223372036854776163' to '355' [-Woverflow] #define __PAGE_KERNEL_ENC (__PAGE_KERNEL | _PAGE_ENC) ^~~~~~~~~~~~~~~~~~~~~~~~~~~ arch/x86//mm/ioremap.c:713:46: note: in expansion of macro '__PAGE_KERNEL_ENC' return early_memremap_prot(phys_addr, size, __PAGE_KERNEL_ENC); which essentially means they are 64-bit only anyway. However, we cannot make them dependent on CONFIG_ARCH_HAS_MEM_ENCRYPT, since that is always defined, even for i386 (and changing that results in a slew of build errors) So instead, build those routines only if CONFIG_AMD_MEM_ENCRYPT is defined. Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Cc: AKASHI Takahiro <takahiro.akashi@linaro.org> Cc: Alexander Graf <agraf@suse.de> Cc: Bjorn Andersson <bjorn.andersson@linaro.org> Cc: Borislav Petkov <bp@alien8.de> Cc: Heinrich Schuchardt <xypron.glpk@gmx.de> Cc: Jeffrey Hugo <jhugo@codeaurora.org> Cc: Lee Jones <lee.jones@linaro.org> Cc: Leif Lindholm <leif.lindholm@linaro.org> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Matt Fleming <matt@codeblueprint.co.uk> Cc: Peter Jones <pjones@redhat.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Sai Praneeth Prakhya <sai.praneeth.prakhya@intel.com> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: linux-efi@vger.kernel.org Link: http://lkml.kernel.org/r/20190202094119.13230-9-ard.biesheuvel@linaro.org Signed-off-by: Ingo Molnar <mingo@kernel.org>
1 parent 4e46c2a commit ce9084b

File tree

3 files changed

+6
-6
lines changed

3 files changed

+6
-6
lines changed

arch/Kconfig

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -885,6 +885,9 @@ config HAVE_ARCH_PREL32_RELOCATIONS
885885
architectures, and don't require runtime relocation on relocatable
886886
kernels.
887887

888+
config ARCH_USE_MEMREMAP_PROT
889+
bool
890+
888891
source "kernel/gcov/Kconfig"
889892

890893
source "scripts/gcc-plugins/Kconfig"

arch/x86/Kconfig

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1510,6 +1510,7 @@ config AMD_MEM_ENCRYPT
15101510
bool "AMD Secure Memory Encryption (SME) support"
15111511
depends on X86_64 && CPU_SUP_AMD
15121512
select DYNAMIC_PHYSICAL_MASK
1513+
select ARCH_USE_MEMREMAP_PROT
15131514
---help---
15141515
Say yes to enable support for the encryption of system memory.
15151516
This requires an AMD processor that supports Secure Memory
@@ -1529,10 +1530,6 @@ config AMD_MEM_ENCRYPT_ACTIVE_BY_DEFAULT
15291530
If set to N, then the encryption of system memory can be
15301531
activated with the mem_encrypt=on command line option.
15311532

1532-
config ARCH_USE_MEMREMAP_PROT
1533-
def_bool y
1534-
depends on AMD_MEM_ENCRYPT
1535-
15361533
# Common NUMA Features
15371534
config NUMA
15381535
bool "Numa Memory Allocation and Scheduler Support"

arch/x86/mm/ioremap.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -705,7 +705,7 @@ bool phys_mem_access_encrypted(unsigned long phys_addr, unsigned long size)
705705
return arch_memremap_can_ram_remap(phys_addr, size, 0);
706706
}
707707

708-
#ifdef CONFIG_ARCH_USE_MEMREMAP_PROT
708+
#ifdef CONFIG_AMD_MEM_ENCRYPT
709709
/* Remap memory with encryption */
710710
void __init *early_memremap_encrypted(resource_size_t phys_addr,
711711
unsigned long size)
@@ -747,7 +747,7 @@ void __init *early_memremap_decrypted_wp(resource_size_t phys_addr,
747747

748748
return early_memremap_prot(phys_addr, size, __PAGE_KERNEL_NOENC_WP);
749749
}
750-
#endif /* CONFIG_ARCH_USE_MEMREMAP_PROT */
750+
#endif /* CONFIG_AMD_MEM_ENCRYPT */
751751

752752
static pte_t bm_pte[PAGE_SIZE/sizeof(pte_t)] __page_aligned_bss;
753753

0 commit comments

Comments
 (0)