mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 16:54:27 +00:00
x86/sgx: Add encls_faulted() helper
Add a helper to extract the fault indicator from an encoded ENCLS return value. SGX virtualization will also need to detect ENCLS faults. Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com> Signed-off-by: Kai Huang <kai.huang@intel.com> Signed-off-by: Borislav Petkov <bp@suse.de> Acked-by: Jarkko Sakkinen <jarkko@kernel.org> Acked-by: Dave Hansen <dave.hansen@intel.com> Link: https://lkml.kernel.org/r/c1f955898110de2f669da536fc6cf62e003dff88.1616136308.git.kai.huang@intel.com
This commit is contained in:
parent
32ddda8e44
commit
a67136b458
2 changed files with 15 additions and 2 deletions
|
@ -40,6 +40,19 @@
|
|||
} while (0); \
|
||||
}
|
||||
|
||||
/*
|
||||
* encls_faulted() - Check if an ENCLS leaf faulted given an error code
|
||||
* @ret: the return value of an ENCLS leaf function call
|
||||
*
|
||||
* Return:
|
||||
* - true: ENCLS leaf faulted.
|
||||
* - false: Otherwise.
|
||||
*/
|
||||
static inline bool encls_faulted(int ret)
|
||||
{
|
||||
return ret & ENCLS_FAULT_FLAG;
|
||||
}
|
||||
|
||||
/**
|
||||
* encls_failed() - Check if an ENCLS function failed
|
||||
* @ret: the return value of an ENCLS function call
|
||||
|
@ -50,7 +63,7 @@
|
|||
*/
|
||||
static inline bool encls_failed(int ret)
|
||||
{
|
||||
if (ret & ENCLS_FAULT_FLAG)
|
||||
if (encls_faulted(ret))
|
||||
return ENCLS_TRAPNR(ret) != X86_TRAP_PF;
|
||||
|
||||
return !!ret;
|
||||
|
|
|
@ -568,7 +568,7 @@ static int sgx_encl_init(struct sgx_encl *encl, struct sgx_sigstruct *sigstruct,
|
|||
}
|
||||
}
|
||||
|
||||
if (ret & ENCLS_FAULT_FLAG) {
|
||||
if (encls_faulted(ret)) {
|
||||
if (encls_failed(ret))
|
||||
ENCLS_WARN(ret, "EINIT");
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue