x86/sev: Use CC_ATTR attribute to generalize string I/O unroll
INS/OUTS are not supported in TDX guests and cause #UD. Kernel has to avoid them when running in TDX guest. To support existing usage, string I/O operations are unrolled using IN/OUT instructions. AMD SEV platform implements this support by adding unroll logic in ins#bwl()/outs#bwl() macros with SEV-specific checks. Since TDX VM guests will also need similar support, use CC_ATTR_GUEST_UNROLL_STRING_IO and generic cc_platform_has() API to implement it. String I/O helpers were the last users of sev_key_active() interface and sev_enable_key static key. Remove them. [ bp: Move comment too and do not delete it. ] Suggested-by:Tom Lendacky <thomas.lendacky@amd.com> Signed-off-by:
Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com> Signed-off-by:
Kirill A. Shutemov <kirill.shutemov@linux.intel.com> Signed-off-by:
Borislav Petkov <bp@suse.de> Reviewed-by:
Tony Luck <tony.luck@intel.com> Reviewed-by:
Tom Lendacky <thomas.lendacky@amd.com> Tested-by:
Tom Lendacky <thomas.lendacky@amd.com> Link: https://lkml.kernel.org/r/20211206135505.75045-2-kirill.shutemov@linux.intel.com
Showing
- arch/x86/include/asm/io.h 3 additions, 17 deletionsarch/x86/include/asm/io.h
- arch/x86/kernel/cc_platform.c 8 additions, 0 deletionsarch/x86/kernel/cc_platform.c
- arch/x86/mm/mem_encrypt.c 0 additions, 10 deletionsarch/x86/mm/mem_encrypt.c
- include/linux/cc_platform.h 11 additions, 0 deletionsinclude/linux/cc_platform.h
Loading
Please register or sign in to comment