Turn encls_failed() as an inline function. As far as the tracing goes we issue warning consistently in the call sites, which is enough to catch the potential issues. Cc: Sean Christopherson <sean.j.christopherson@xxxxxxxxx> Cc: Shay Katz-zamir <shay.katz-zamir@xxxxxxxxx> Cc: Serge Ayoun <serge.ayoun@xxxxxxxxx> Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@xxxxxxxxxxxxxxx> --- arch/x86/kernel/cpu/sgx/Makefile | 2 +- arch/x86/kernel/cpu/sgx/encls.c | 24 ------------------------ arch/x86/kernel/cpu/sgx/encls.h | 18 +++++++++++++++++- 3 files changed, 18 insertions(+), 26 deletions(-) delete mode 100644 arch/x86/kernel/cpu/sgx/encls.c diff --git a/arch/x86/kernel/cpu/sgx/Makefile b/arch/x86/kernel/cpu/sgx/Makefile index 379e9c52848e..cfd29c42264b 100644 --- a/arch/x86/kernel/cpu/sgx/Makefile +++ b/arch/x86/kernel/cpu/sgx/Makefile @@ -1,5 +1,5 @@ # core -obj-y += encl.o encls.o main.o reclaim.o +obj-y += encl.o main.o reclaim.o # driver obj-y += driver.o ioctl.o diff --git a/arch/x86/kernel/cpu/sgx/encls.c b/arch/x86/kernel/cpu/sgx/encls.c deleted file mode 100644 index 1b492c15a2b8..000000000000 --- a/arch/x86/kernel/cpu/sgx/encls.c +++ /dev/null @@ -1,24 +0,0 @@ -// SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause) -// Copyright(c) 2016-19 Intel Corporation. - -#include <asm/cpufeature.h> -#include <asm/traps.h> -#include "encls.h" -#include "sgx.h" - -/** - * encls_failed() - Check if an ENCLS leaf function failed - * @ret: the return value of an ENCLS leaf function call - * - * Check if an ENCLS leaf function failed. This is a condition where the leaf - * function causes a fault that is not caused by an EPCM conflict. - * - * Return: true if there was a fault other than an EPCM conflict - */ -bool encls_failed(int ret) -{ - int epcm_trapnr = boot_cpu_has(X86_FEATURE_SGX2) ? - X86_TRAP_PF : X86_TRAP_GP; - - return encls_faulted(ret) && ENCLS_TRAPNR(ret) != epcm_trapnr; -} diff --git a/arch/x86/kernel/cpu/sgx/encls.h b/arch/x86/kernel/cpu/sgx/encls.h index 6631afbf2f64..b7e6462e58b8 100644 --- a/arch/x86/kernel/cpu/sgx/encls.h +++ b/arch/x86/kernel/cpu/sgx/encls.h @@ -8,6 +8,7 @@ #include <linux/rwsem.h> #include <linux/types.h> #include <asm/asm.h> +#include <asm/traps.h> #include "sgx.h" /** @@ -66,7 +67,22 @@ static inline bool encls_returned_code(int ret) return !encls_faulted(ret) && ret; } -bool encls_failed(int ret); +/** + * encls_failed() - Check if an ENCLS leaf function failed + * @ret: the return value of an ENCLS leaf function call + * + * Check if an ENCLS leaf function failed. This is a condition where the leaf + * function causes a fault that is not caused by an EPCM conflict. + * + * Return: true if there was a fault other than an EPCM conflict + */ +static inline bool encls_failed(int ret) +{ + int epcm_trapnr = boot_cpu_has(X86_FEATURE_SGX2) ? + X86_TRAP_PF : X86_TRAP_GP; + + return encls_faulted(ret) && ENCLS_TRAPNR(ret) != epcm_trapnr; +} /** * __encls_ret_N - encode an ENCLS leaf that returns an error code in EAX -- 2.20.1