x86/mm: Decouple dynamic __PHYSICAL_MASK from AMD SME
authorKirill A. Shutemov <kirill.shutemov@linux.intel.com>
Fri, 18 May 2018 11:30:28 +0000 (14:30 +0300)
committerThomas Gleixner <tglx@linutronix.de>
Wed, 6 Jun 2018 11:38:01 +0000 (13:38 +0200)
commit94d49eb30e854c84d1319095b5dd0405a7da9362
tree0c2c2a712fae357f64de8e330c4956bda1215255
parent046c0dbec0238c25b7526c26c9a9687664229ce2
x86/mm: Decouple dynamic __PHYSICAL_MASK from AMD SME

AMD SME claims one bit from physical address to indicate whether the
page is encrypted or not. To achieve that we clear out the bit from
__PHYSICAL_MASK.

The capability to adjust __PHYSICAL_MASK is required beyond AMD SME.
For instance for upcoming Intel Multi-Key Total Memory Encryption.

Factor it out into a separate feature with own Kconfig handle.

It also helps with overhead of AMD SME. It saves more than 3k in .text
on defconfig + AMD_MEM_ENCRYPT:

add/remove: 3/2 grow/shrink: 5/110 up/down: 189/-3753 (-3564)

We would need to return to this once we have infrastructure to patch
constants in code. That's good candidate for it.

Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Tom Lendacky <thomas.lendacky@amd.com>
Cc: linux-mm@kvack.org
Cc: "H. Peter Anvin" <hpa@zytor.com>
Link: https://lkml.kernel.org/r/20180518113028.79825-1-kirill.shutemov@linux.intel.com
arch/x86/Kconfig
arch/x86/boot/compressed/kaslr_64.c
arch/x86/include/asm/page_types.h
arch/x86/mm/mem_encrypt_identity.c
arch/x86/mm/pgtable.c