x86/tdx: Relax SEPT_VE_DISABLE check for debug TD
authorKirill A. Shutemov <kirill.shutemov@linux.intel.com>
Thu, 26 Jan 2023 22:11:58 +0000 (01:11 +0300)
committerDave Hansen <dave.hansen@linux.intel.com>
Fri, 27 Jan 2023 17:46:05 +0000 (09:46 -0800)
commit47e67cf317ed6ad22a3df9762daae75dfcba76a8
treea831dc87a17df450e2f4cb902c9d123f91db3735
parent71acdcd7cd0abee7698c2d5e5a8a66602a00b12c
x86/tdx: Relax SEPT_VE_DISABLE check for debug TD

A "SEPT #VE" occurs when a TDX guest touches memory that is not properly
mapped into the "secure EPT".  This can be the result of hypervisor
attacks or bugs, *OR* guest bugs.  Most notably, buggy guests might
touch unaccepted memory for lots of different memory safety bugs like
buffer overflows.

TDX guests do not want to continue in the face of hypervisor attacks or
hypervisor bugs.  They want to terminate as fast and safely as possible.
SEPT_VE_DISABLE ensures that TDX guests *can't* continue in the face of
these kinds of issues.

But, that causes a problem.  TDX guests that can't continue can't spit
out oopses or other debugging info.  In essence SEPT_VE_DISABLE=1 guests
are not debuggable.

Relax the SEPT_VE_DISABLE check to warning on debug TD and panic() in
the #VE handler on EPT-violation on private memory. It will produce
useful backtrace.

Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com>
Link: https://lore.kernel.org/all/20230126221159.8635-7-kirill.shutemov%40linux.intel.com
arch/x86/coco/tdx/tdx.c