Re: [PATCH v2 2/3] x86/cpu/intel: Simplify F00F bug notice using pr_notice_once()

From: Maciej W. Rozycki

Date: Fri May 22 2026 - 16:27:41 EST


Hi Christian,

Long time, no hear!

> >> The most likely thing is: there are a few dozen Pentiums (if that) out
> >> there running mainline kernels. I'm not sure they even have more than a
> >> couple of distros they can run. Nobody is going to notice this message
> >> going away.
>
> And not just any Pentium, but a dual Pentium system!

Yep, 30+ years on and I'm still alive and kicking along with my toys!

This actually continues getting serious use, most recently for glibc ISO
C formatted input/output test coverage improvement and the x87 FP formats.

And there is actually an unrelated test there that reproducibly triggers
a crash, which I yet have to chase, and which is somewhat tricky as all
the test cases are run indirectly via the dynamic loader, so there's no
useful program name reported. So I'll have to run the testsuite parts by
hand to narrow this down. Maybe alongside the i486 support restoration
project, which I hope to get at this coming July.

For the record:

------------[ cut here ]------------
Bad FPU state detected at restore_fpregs_from_fpstate+0x4b/0x50, reinitializing FPU registers.
WARNING: CPU: 1 PID: 21035 at fixup_exception+0x296/0x2b0
CPU: 1 UID: 500 PID: 21035 Comm: ld-linux.so.2 Tainted: G W 6.13.0-dirty #2
Tainted: [W]=WARN
Hardware name: [...]
EIP: fixup_exception+0x296/0x2b0
Code: 04 89 7e 30 e9 43 fe ff ff 0f 0b 90 0f 0b ba 4c 8a 9c c0 e9 7d fe ff ff c6 05 1a d9 92 c0 01 50 68 ac e6 82 c0 e8 ca b9 00 00 <0f> 0b 5e 5f e9 90 fe ff ff 90 0f 0b ba 4c 8a 9c c0 e9 df fd ff ff
EAX: 0000005e EBX: c089b190 ECX: dfbf2e24 EDX: 00000000
ESI: d312bf0c EDI: 00000010 EBP: d312bedc ESP: d312be60
DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068 EFLAGS: 00010092
CR0: 80050033 CR2: b7f46988 CR3: 130fe000 CR4: 00000050
Call Trace:
? show_regs.cold+0x14/0x22
? __warn.cold+0x3a/0x95
? fixup_exception+0x296/0x2b0
? report_bug+0x10e/0x140
? fixup_exception+0x297/0x2b0
? exc_overflow+0x40/0x40
? handle_bug+0x3e/0x70
? exc_invalid_op+0x24/0x60
? handle_exception+0x14d/0x14d
? exc_overflow+0x40/0x40
? fixup_exception+0x296/0x2b0
? exc_overflow+0x40/0x40
? fixup_exception+0x296/0x2b0
? restore_fpregs_from_fpstate+0x4b/0x50
? exc_page_fault+0x123/0x430
? doublefault_shim+0x120/0x120
? handle_exception+0x14d/0x14d
? clear_user+0x2b/0x40
math_error+0x45/0x110
? exc_debug+0x40/0x40
exc_coprocessor_error+0x1a/0x30
handle_exception+0x14d/0x14d
EIP: restore_fpregs_from_fpstate+0x4b/0x50
Code: 8b 0d 08 52 89 c0 21 fa 21 c8 8d 7b 40 0f ae 2f 5b 5f 5d c3 8d 76 00 eb 0e cc cc cc 0f ae 4b 40 5b 5f 5d c3 8d 76 00 dd 63 40 <5b> 5f 5d c3 90 55 89 e5 57 56 53 64 8b 1d 80 30 9b c0 64 8b 3d 88
EAX: 00000cff EBX: d47cbb40 ECX: 00000000 EDX: 00000000
ESI: d47cbb00 EDI: 00000001 EBP: d312bf70 ESP: d312bf68
DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068 EFLAGS: 00010046
? exc_debug+0x40/0x40
? exc_debug+0x40/0x40
? restore_fpregs_from_fpstate+0x48/0x50
switch_fpu_return+0x3f/0x70
syscall_exit_to_user_mode+0x10e/0x150
do_int80_syscall_32+0x44/0x90
entry_INT80_32+0x10d/0x10d
EIP: 0xb7d1061e
Code: 00 89 44 24 18 8d 6c 24 24 55 e8 bd 5e f7 ff 65 a1 08 00 00 00 8d 78 68 b8 78 00 00 00 bb 11 00 20 01 31 c9 31 d2 31 f6 cd 80 <89> c6 83 c4 10 3d 00 f0 ff ff 77 3e 85 c0 74 16 83 ec 0c 55 e8 f9
EAX: 0000522c EBX: 01200011 ECX: 00000000 EDX: 00000000
ESI: 00000000 EDI: b7f46a68 EBP: bfc10908 ESP: bfc108e0
DS: 007b ES: 007b FS: 0000 GS: 0033 SS: 007b EFLAGS: 00000246
---[ end trace 0000000000000000 ]---
traps: PANIC: double fault, error_code: 0x0
Oops: double fault: 0000 [#1] SMP
CPU: 1 UID: 500 PID: 21035 Comm: ld-linux.so.2 Tainted: G W 6.13.0-dirty #2
Tainted: [W]=WARN
Hardware name: [...]
EIP: search_extable+0x16/0x30
Code: 00 e8 7e 54 d4 ff 8b 5d fc 58 5a 89 ec 5d c3 2e 8d 74 26 00 55 89 e5 53 53 8d 5d f8 89 4d f8 68 c0 ab 6e c0 89 d1 89 c2 89 d8 <6a> 0c e8 73 d3 d4 ff 8b 5d fc 89 ec 5d c3 cc cc cc cc cc cc cc cc
EAX: d3000004 EBX: d3000004 ECX: 000002d5 EDX: c089a4d0
ESI: d30000c4 EDI: 00000010 EBP: d300000c ESP: d3000000
DS: 007b ES: 007b FS: 00d8 GS: 0000 SS: 0068 EFLAGS: 00010086
CR0: 80050033 CR2: d2fffffc CR3: 009be000 CR4: 00000050
Call Trace:
<#DF>
? show_regs.cold+0x14/0x22
? __die+0x18/0x4b
? die+0x21/0x40
? exc_double_fault+0x55/0x60
? doublefault_shim+0x115/0x120
? search_extable+0x16/0x30
? asm_exc_double_fault+0xa/0x10
</#DF>
---[ end trace 0000000000000000 ]---
EIP: search_extable+0x16/0x30
Code: 00 e8 7e 54 d4 ff 8b 5d fc 58 5a 89 ec 5d c3 2e 8d 74 26 00 55 89 e5 53 53 8d 5d f8 89 4d f8 68 c0 ab 6e c0 89 d1 89 c2 89 d8 <6a> 0c e8 73 d3 d4 ff 8b 5d fc 89 ec 5d c3 cc cc cc cc cc cc cc cc
EAX: d3000004 EBX: d3000004 ECX: 000002d5 EDX: c089a4d0
ESI: d30000c4 EDI: 00000010 EBP: d300000c ESP: d3000000
DS: 007b ES: 007b FS: 00d8 GS: 0000 SS: 0068 EFLAGS: 00010086
CR0: 80050033 CR2: d2fffffc CR3: 009be000 CR4: 00000050
Kernel panic - not syncing: Fatal exception in interrupt
Kernel Offset: disabled

(now that I've looked at it again, I can see it's 6.13.0 as it's been a
while, so maybe it's gone now in 7.x, hmm... will have to check.)

Maciej