Re: [PATCH] x86/cpufeatures: SGX: Adjust the error message when BIOS does not support SGX

From: Huang, Kai
Date: Tue Jul 30 2024 - 07:57:51 EST


On Tue, 2024-07-30 at 10:49 +0800, WangYuli wrote:
> When SGX is not supported by the BIOS, we still output the error
> 'SGX disabled by BIOS', which can be confusing since there might not be
> an SGX-related option in the BIOS settings.

+linux-sgx list, Jarkko, Haitao.

This message is only printed when SGX is reported in CPUID but is not
enabled in the FEAT_CTL MSR. I can only recall this can happen when the
BIOS actually provides an option for the user to turn on/off SGX, in
which case the current message is correct.

I could be wrong, but I don't recall I have met any machine that doesn't
have any SGX option in the BIOS but still reports SGX in the CPUID. Can
you confirm this is the case?  

I don't see this is mentioned in the github link below which reports this
issue. In fact, it says:

非bug,主板bios关闭了SGX,正常内核提醒

.. which is

Not bug, the motherboard BIOS disabled SGX, normal kernel
message

And the link also shows this issue is "closed".

Please clarify.

>
> As a kernel, it's difficult for us to distinguish between the BIOS not
> supporting SGX and the BIOS supporting SGX but it's disabled.
>
> Therefore, we should update the error message to
> 'SGX disabled or unsupported by BIOS' to make it easier for those reading
> kernel logs to understand what's happening.
>
> Reported-by: Bo Wu <wubo@xxxxxxxxxxxxx>
> Link: https://github.com/linuxdeepin/developer-center/issues/10032
> Signed-off-by: Zelong Xiang <xiangzelong@xxxxxxxxxxxxx>
> Signed-off-by: WangYuli <wangyuli@xxxxxxxxxxxxx>
> ---
> arch/x86/kernel/cpu/feat_ctl.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/arch/x86/kernel/cpu/feat_ctl.c b/arch/x86/kernel/cpu/feat_ctl.c
> index 1640ae76548f..4a4118784c13 100644
> --- a/arch/x86/kernel/cpu/feat_ctl.c
> +++ b/arch/x86/kernel/cpu/feat_ctl.c
> @@ -188,7 +188,7 @@ void init_ia32_feat_ctl(struct cpuinfo_x86 *c)
> update_sgx:
> if (!(msr & FEAT_CTL_SGX_ENABLED)) {
> if (enable_sgx_kvm || enable_sgx_driver)
> - pr_err_once("SGX disabled by BIOS.\n");
> + pr_err_once("SGX disabled or unsupported by BIOS.\n");
> clear_cpu_cap(c, X86_FEATURE_SGX);
> return;
> }