Re: [PATCH] x86/Kconfig: Fix dependency for X86_DEBUG_FPU

From: Shuah Khan
Date: Wed Apr 09 2025 - 17:42:02 EST


On 4/9/25 15:34, Ingo Molnar wrote:

* Shuah Khan <skhan@xxxxxxxxxxxxxxxxxxx> wrote:

On 4/8/25 00:54, Ingo Molnar wrote:

* Shuah Khan <skhan@xxxxxxxxxxxxxxxxxxx> wrote:

Compile fails when X86_DEBUG_FPU is enabled and X86_REQUIRED_FEATURE_FPU is
disabled. Add explicit dependency on X86_REQUIRED_FEATURE_FPU to fix it.

../arch/x86/kernel/fpu/regset.c:411:(.text+0x4cf2f): undefined reference to `fpregs_soft_get'
ld: vmlinux.o: in function `fpregs_set':
../arch/x86/kernel/fpu/regset.c:445:(.text+0x4d0da): undefined reference to `fpregs_soft_set'
ld: vmlinux.o: in function `copy_fpstate_to_sigframe':
../arch/x86/kernel/fpu/signal.c:197:(.text+0x4da98): undefined reference to `fpregs_soft_get'


So I cannot reproduce this build failure on either v6.14 or v6.15-rc1:

starship:~/tip> git describe
v6.15-rc1

starship:~/tip> grep -E 'X86_32=|M486SX=|X86_REQUIRED_FEATURE|X86_DEBUG_FPU' .config
CONFIG_X86_32=y
CONFIG_M486SX=y
CONFIG_X86_REQUIRED_FEATURE_ALWAYS=y
CONFIG_X86_DEBUG_FPU=y

starship:~/tip> make -j128 ARCH=i386 bzImage modules

...
Kernel: arch/x86/boot/bzImage is ready (#5)

Signed-off-by: Shuah Khan <skhan@xxxxxxxxxxxxxxxxxxx>
---
6.14 compile worked without X86_REQUIRED_FEATURE_FPU enabled. Might be a
new dependency. Enabling X86_REQUIRED_FEATURE_FPU fixed it for me on my
test system.

Right. That is what I meant by new dependency


So vanilla v6.14 does not have X86_REQUIRED_FEATURE Kconfig flags, at
all:

starship:~/tip> grep FPU .config
CONFIG_ARCH_HAS_KERNEL_FPU_SUPPORT=y
CONFIG_X86_DEBUG_FPU=y
# CONFIG_TEST_FPU is not set

Because X86_REQUIRED_FEATURE_FPU is a new v6.15-rc1 feature, introduced
via:

3d37d9396eb3 ("x86/cpufeatures: Add {REQUIRED,DISABLED} feature configs")

I have no doubt you are seeing this build failure - but I think there
might be some other .config detail required to reproduce it, not
mentioned in your changelog. Could you please send the config you used?


Config attached.

grep _FPU /boot/config-6.14.0+
CONFIG_ARCH_HAS_KERNEL_FPU_SUPPORT=y
CONFIG_X86_DEBUG_FPU=y
# CONFIG_TEST_FPU is not set

I noticed you are building ARCH=i386 - can you reproduce this
with x86_64? That is what I am building.

thanks,
-- Shuah

#
# Automatically generated file; DO NOT EDIT.
# Linux/x86 6.14.0 Kernel Configuration
#
CONFIG_CC_VERSION_TEXT="gcc (Debian 14.2.0-17) 14.2.0"

Is this a vanilla v6.14 kernel? Because on upstream v6.14 'make
oldconfig' gives me:

Generate BTF type information (DEBUG_INFO_BTF) [N/y/?] (NEW)

Maybe different build environment?

... and after answering that with 'N' the build succeeds:

LD arch/x86/boot/setup.elf
OBJCOPY arch/x86/boot/setup.bin
BUILD arch/x86/boot/bzImage
Kernel: arch/x86/boot/bzImage is ready (#3)

Yes it is vanilla


More importantly, X86_REQUIRED_FEATURE_FPU *does not exist* in the
vanilla v6.14 kernel, it's a new v6.15 feature. So this part of your
changelog totally doesn't apply to a v6.14 kernel:

I started with vanilla 6.14 kernel running oldconfig on it.
In this case if X86_DEBUG_FPU is enabled in the oldconfig,
should the config generated for 6.15 add X86_REQUIRED_FEATURE_FPU.

It appears there is a dependency between X86_DEBUG_FPU and
the newly added X86_REQUIRED_FEATURE_FPU

thanks,
-- Shuah