On 20/10/2022 14:30, Evgeniy Baskov wrote: > On 2022-10-19 10:57, Andrew Cooper wrote: >> On 06/09/2022 11:41, Evgeniy Baskov wrote: >>> diff --git a/arch/x86/boot/compressed/head_64.S >>> b/arch/x86/boot/compressed/head_64.S >>> index 5273367283b7..889ca7176aa7 100644 >>> --- a/arch/x86/boot/compressed/head_64.S >>> +++ b/arch/x86/boot/compressed/head_64.S >>> @@ -602,6 +603,28 @@ SYM_FUNC_START_LOCAL_NOALIGN(.Lrelocated) >>> jmp *%rax >>> SYM_FUNC_END(.Lrelocated) >>> >>> +SYM_FUNC_START_LOCAL_NOALIGN(startup32_enable_nx_if_supported) >>> + pushq %rbx >>> + >>> + leaq has_nx(%rip), %rcx >>> + >>> + mov $0x80000001, %eax >>> + cpuid >>> + btl $20, %edx >> >> btl $(X86_FEATURE_NX & 31), %edx >> >> But also need to check for the availability of the extended leaf in the >> first place. > > Yes, thank you for suggestion, that looks more readable. I will > also add the leaf node check. Is there any processor though that > supports long mode and does not support 0x80000001 leaf node? No, good point. The Long Mode feature bit is in this leaf too. ~Andrew