linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [linus:master] [x86/cpu]  f388f60ca9: BUG:soft_lockup-CPU##stuck_for#s![swapper:#]
@ 2025-04-21  8:12 kernel test robot
  2025-04-22 10:16 ` Arnd Bergmann
  0 siblings, 1 reply; 47+ messages in thread
From: kernel test robot @ 2025-04-21  8:12 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: oe-lkp, lkp, linux-kernel, Ingo Molnar, Linus Torvalds,
	oliver.sang



Hello,


by this commit, we notice big config diff [1]

then in this rcutorture tests, parent runs quite clean, f388f60ca9 shows
various random issues.

=========================================================================================
tbox_group/testcase/rootfs/kconfig/compiler/runtime/test/torture_type:
  vm-snb/rcutorture/debian-11.1-i386-20220923.cgz/i386-randconfig-r071-20250410/gcc-12/300s/default/tasks-tracing

fc2d5cbe541032e7 f388f60ca9041a95c9b3f157d31
---------------- ---------------------------
       fail:runs  %reproduction    fail:runs
           |             |             |
           :500         30%         149:500   last_state.booting
           :500          7%          35:500   dmesg.BUG:kernel_hang_in_boot_stage
           :500          9%          45:500   dmesg.BUG:soft_lockup-CPU##stuck_for#s![swapper:#]
           :500         10%          51:500   dmesg.BUG:workqueue_lockup-pool
           :500          0%           1:500   dmesg.EIP:__timer_delete_sync
           :500          1%           5:500   dmesg.EIP:_raw_spin_unlock_irq
           :500          0%           2:500   dmesg.EIP:_raw_spin_unlock_irqrestore
           :500          0%           1:500   dmesg.EIP:console_emit_next_record
           :500          0%           1:500   dmesg.EIP:handle_softirqs
           :500          1%           3:500   dmesg.EIP:lock_acquire
           :500          0%           2:500   dmesg.EIP:lock_release
           :500          0%           1:500   dmesg.EIP:queue_delayed_work_on
           :500          9%          45:500   dmesg.EIP:timekeeping_notify
           :500          3%          14:500   dmesg.INFO:rcu_preempt_detected_stalls_on_CPUs/tasks
           :500          6%          32:500   dmesg.INFO:task_blocked_for_more_than#seconds
           :500          1%           3:500   dmesg.IP-Config:Auto-configuration_of_network_failed
           :500          9%          45:500   dmesg.Kernel_panic-not_syncing:softlockup:hung_tasks
           :500         29%         146:500   dmesg.boot_failures

we don't have enough knowledge to dig deep these issues. so just make this
report to consult with you if these issues are related with config diff.
and if so, is this config diff reasonable by this commit?

below our normal report just FYI.


kernel test robot noticed "BUG:soft_lockup-CPU##stuck_for#s![swapper:#]" on:

commit: f388f60ca9041a95c9b3f157d316ed7c8f297e44 ("x86/cpu: Drop configuration options for early 64-bit CPUs")
https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git master

[test failed on linus/master      e618ee89561b6b0fdc69f79e6fd0c33375d3e6b4]
[test failed on linux-next/master 01c6df60d5d4ae00cd5c1648818744838bba7763]

in testcase: rcutorture
version: 
with following parameters:

	runtime: 300s
	test: default
	torture_type: tasks-tracing



config: i386-randconfig-r071-20250410
compiler: gcc-12
test machine: qemu-system-x86_64 -enable-kvm -cpu SandyBridge -smp 2 -m 16G

(please refer to attached dmesg/kmsg for entire log/backtrace)



If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <oliver.sang@intel.com>
| Closes: https://lore.kernel.org/oe-lkp/202504211553.3ba9400-lkp@intel.com


[  721.016745][    C0] watchdog: BUG: soft lockup - CPU#0 stuck for 626s! [swapper:1]
[  721.016779][    C0] CPU#0 Utilization every 96s during lockup:
[  721.016779][    C0] 	#1:  39% system,	  0% softirq,	  0% hardirq,	  0% idle
[  721.016779][    C0] 	#2:  42% system,	  0% softirq,	  0% hardirq,	  0% idle
[  721.016779][    C0] 	#3:  47% system,	  0% softirq,	  0% hardirq,	  0% idle
[  721.016779][    C0] 	#4:  34% system,	  0% softirq,	  0% hardirq,	  0% idle
[  721.016779][    C0] 	#5:  32% system,	  0% softirq,	  0% hardirq,	  0% idle
[  721.016779][    C0] Modules linked in:
[  721.016779][    C0] irq event stamp: 159506
[ 721.016779][ C0] hardirqs last enabled at (159505): timekeeping_notify (arch/x86/include/asm/irqflags.h:42 arch/x86/include/asm/irqflags.h:97 arch/x86/include/asm/irqflags.h:155 include/linux/stop_machine.h:154 include/linux/stop_machine.h:161 kernel/time/timekeeping.c:1521) 
[ 721.016779][ C0] hardirqs last disabled at (159506): sysvec_apic_timer_interrupt (arch/x86/kernel/apic/apic.c:1049) 
[ 721.016779][ C0] softirqs last enabled at (159174): handle_softirqs (kernel/softirq.c:408 kernel/softirq.c:589) 
[ 721.016779][ C0] softirqs last disabled at (159159): __do_softirq (kernel/softirq.c:596) 
[  721.016779][    C0] CPU: 0 UID: 0 PID: 1 Comm: swapper Not tainted 6.14.0-rc3-00037-gf388f60ca904 #1
[  721.016779][    C0] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.2-debian-1.16.2-1 04/01/2014
[ 721.016779][ C0] EIP: timekeeping_notify (kernel/time/timekeeping.c:1522) 
[ 721.016779][ C0] Code: 5f e9 ff ff 8d 45 e8 e8 57 d4 ff ff 85 ff 74 16 8b 57 5c 85 d2 74 04 89 f8 ff d2 8b 87 88 00 00 00 e8 d5 3e ff ff 85 f6 75 9b <e8> 7f b9 00 00 31 c0 39 1d a4 70 14 84 0f 95 c0 f7 d8 8b 55 f0 2b
All code
========
   0:	5f                   	pop    %rdi
   1:	e9 ff ff 8d 45       	jmp    0x458e0005
   6:	e8 e8 57 d4 ff       	call   0xffffffffffd457f3
   b:	ff 85 ff 74 16 8b    	incl   -0x74e98b01(%rbp)
  11:	57                   	push   %rdi
  12:	5c                   	pop    %rsp
  13:	85 d2                	test   %edx,%edx
  15:	74 04                	je     0x1b
  17:	89 f8                	mov    %edi,%eax
  19:	ff d2                	call   *%rdx
  1b:	8b 87 88 00 00 00    	mov    0x88(%rdi),%eax
  21:	e8 d5 3e ff ff       	call   0xffffffffffff3efb
  26:	85 f6                	test   %esi,%esi
  28:	75 9b                	jne    0xffffffffffffffc5
  2a:*	e8 7f b9 00 00       	call   0xb9ae		<-- trapping instruction
  2f:	31 c0                	xor    %eax,%eax
  31:	39 1d a4 70 14 84    	cmp    %ebx,-0x7beb8f5c(%rip)        # 0xffffffff841470db
  37:	0f 95 c0             	setne  %al
  3a:	f7 d8                	neg    %eax
  3c:	8b 55 f0             	mov    -0x10(%rbp),%edx
  3f:	2b                   	.byte 0x2b

Code starting with the faulting instruction
===========================================
   0:	e8 7f b9 00 00       	call   0xb984
   5:	31 c0                	xor    %eax,%eax
   7:	39 1d a4 70 14 84    	cmp    %ebx,-0x7beb8f5c(%rip)        # 0xffffffff841470b1
   d:	0f 95 c0             	setne  %al
  10:	f7 d8                	neg    %eax
  12:	8b 55 f0             	mov    -0x10(%rbp),%edx
  15:	2b                   	.byte 0x2b
[  721.016779][    C0] EAX: 00026f11 EBX: 8316b7e0 ECX: 00000006 EDX: 7e26f13f
[  721.016779][    C0] ESI: 00000200 EDI: 835e7220 EBP: 86d15ed8 ESP: 86d15ec0
[  721.016779][    C0] DS: 007b ES: 007b FS: 0000 GS: 0000 SS: 0068 EFLAGS: 00000206
[  721.016779][    C0] CR0: 80050033 CR2: ffdaa000 CR3: 03a16000 CR4: 000406d0
[  721.016779][    C0] DR0: 00000000 DR1: 00000000 DR2: 00000000 DR3: 00000000
[  721.016779][    C0] DR6: fffe0ff0 DR7: 00000400
[  721.016779][    C0] Call Trace:
[ 721.016779][ C0] ? show_regs (arch/x86/kernel/dumpstack.c:478) 
[ 721.016779][ C0] ? watchdog_timer_fn (kernel/watchdog.c:767) 
[ 721.016779][ C0] ? schedule_work (drivers/usb/core/hub.c:919) 
[ 721.016779][ C0] ? __hrtimer_run_queues+0x12f/0x1cf 
[ 721.016779][ C0] ? hrtimer_run_queues (kernel/time/hrtimer.c:2023) 
[ 721.016779][ C0] ? update_process_times (kernel/time/timer.c:2458 kernel/time/timer.c:2514) 
[ 721.016779][ C0] ? tick_periodic (kernel/time/tick-common.c:103) 
[ 721.016779][ C0] ? tick_handle_periodic (kernel/time/tick-common.c:144) 
[ 721.016779][ C0] ? vmware_sched_clock (arch/x86/kernel/apic/apic.c:1049) 
[ 721.016779][ C0] ? __sysvec_apic_timer_interrupt (arch/x86/include/asm/trace/irq_vectors.h:41 arch/x86/include/asm/trace/irq_vectors.h:41 arch/x86/kernel/apic/apic.c:1056) 
[ 721.016779][ C0] ? sysvec_apic_timer_interrupt (arch/x86/kernel/apic/apic.c:1049 arch/x86/kernel/apic/apic.c:1049) 
[ 721.016779][ C0] ? handle_exception (arch/x86/entry/entry_32.S:1055) 
[ 721.016779][ C0] ? vmware_sched_clock (arch/x86/kernel/apic/apic.c:1049) 
[ 721.016779][ C0] ? timekeeping_notify (kernel/time/timekeeping.c:1522) 
[ 721.016779][ C0] ? vmware_sched_clock (arch/x86/kernel/apic/apic.c:1049) 
[ 721.016779][ C0] ? timekeeping_notify (kernel/time/timekeeping.c:1522) 
[ 721.016779][ C0] __clocksource_select (kernel/time/clocksource.c:1077 (discriminator 1)) 
[ 721.016779][ C0] ? boot_override_clock (kernel/time/clocksource.c:1109) 
[ 721.016779][ C0] clocksource_select (kernel/time/clocksource.c:1094) 
[ 721.016779][ C0] clocksource_done_booting (kernel/time/clocksource.c:1118) 
[ 721.016779][ C0] do_one_initcall (init/main.c:1257) 
[ 721.016779][ C0] ? rdinit_setup (init/main.c:1305) 
[ 721.016779][ C0] do_initcalls (init/main.c:1318 init/main.c:1335) 
[ 721.016779][ C0] ? rest_init (init/main.c:1449) 
[ 721.016779][ C0] kernel_init_freeable (init/main.c:1572) 
[ 721.016779][ C0] kernel_init (init/main.c:1459) 
[ 721.016779][ C0] ret_from_fork (arch/x86/kernel/process.c:154) 
[ 721.016779][ C0] ? rest_init (init/main.c:1449) 
[ 721.016779][ C0] ret_from_fork_asm (arch/x86/entry/entry_32.S:737) 
[ 721.016779][ C0] entry_INT80_32 (arch/x86/entry/entry_32.S:945) 
[  721.016779][    C0] Kernel panic - not syncing: softlockup: hung tasks
[  721.016779][    C0] CPU: 0 UID: 0 PID: 1 Comm: swapper Tainted: G             L     6.14.0-rc3-00037-gf388f60ca904 #1
[  721.016779][    C0] Tainted: [L]=SOFTLOCKUP
[  721.016779][    C0] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.2-debian-1.16.2-1 04/01/2014
[  721.016779][    C0] Call Trace:
[ 721.016779][ C0] dump_stack_lvl (lib/dump_stack.c:124) 
[ 721.016779][ C0] dump_stack (lib/dump_stack.c:130) 
[ 721.016779][ C0] panic (kernel/panic.c:258 kernel/panic.c:375) 
[ 721.016779][ C0] watchdog_timer_fn (kernel/watchdog.c:740) 
[ 721.016779][ C0] ? schedule_work (drivers/usb/core/hub.c:919) 
[ 721.016779][ C0] __hrtimer_run_queues+0x12f/0x1cf 
[ 721.016779][ C0] hrtimer_run_queues (kernel/time/hrtimer.c:2023) 
[ 721.016779][ C0] update_process_times (kernel/time/timer.c:2458 kernel/time/timer.c:2514) 
[ 721.016779][ C0] tick_periodic (kernel/time/tick-common.c:103) 
[ 721.016779][ C0] tick_handle_periodic (kernel/time/tick-common.c:144) 
[ 721.016779][ C0] ? vmware_sched_clock (arch/x86/kernel/apic/apic.c:1049) 
[ 721.016779][ C0] __sysvec_apic_timer_interrupt (arch/x86/include/asm/trace/irq_vectors.h:41 arch/x86/include/asm/trace/irq_vectors.h:41 arch/x86/kernel/apic/apic.c:1056) 
[ 721.016779][ C0] sysvec_apic_timer_interrupt (arch/x86/kernel/apic/apic.c:1049 arch/x86/kernel/apic/apic.c:1049) 
[ 721.016779][ C0] handle_exception (arch/x86/entry/entry_32.S:1055) 
[ 721.016779][ C0] EIP: timekeeping_notify (kernel/time/timekeeping.c:1522) 
[ 721.016779][ C0] Code: 5f e9 ff ff 8d 45 e8 e8 57 d4 ff ff 85 ff 74 16 8b 57 5c 85 d2 74 04 89 f8 ff d2 8b 87 88 00 00 00 e8 d5 3e ff ff 85 f6 75 9b <e8> 7f b9 00 00 31 c0 39 1d a4 70 14 84 0f 95 c0 f7 d8 8b 55 f0 2b
All code
========
   0:	5f                   	pop    %rdi
   1:	e9 ff ff 8d 45       	jmp    0x458e0005
   6:	e8 e8 57 d4 ff       	call   0xffffffffffd457f3
   b:	ff 85 ff 74 16 8b    	incl   -0x74e98b01(%rbp)
  11:	57                   	push   %rdi
  12:	5c                   	pop    %rsp
  13:	85 d2                	test   %edx,%edx
  15:	74 04                	je     0x1b
  17:	89 f8                	mov    %edi,%eax
  19:	ff d2                	call   *%rdx
  1b:	8b 87 88 00 00 00    	mov    0x88(%rdi),%eax
  21:	e8 d5 3e ff ff       	call   0xffffffffffff3efb
  26:	85 f6                	test   %esi,%esi
  28:	75 9b                	jne    0xffffffffffffffc5
  2a:*	e8 7f b9 00 00       	call   0xb9ae		<-- trapping instruction
  2f:	31 c0                	xor    %eax,%eax
  31:	39 1d a4 70 14 84    	cmp    %ebx,-0x7beb8f5c(%rip)        # 0xffffffff841470db
  37:	0f 95 c0             	setne  %al
  3a:	f7 d8                	neg    %eax
  3c:	8b 55 f0             	mov    -0x10(%rbp),%edx
  3f:	2b                   	.byte 0x2b

Code starting with the faulting instruction
===========================================
   0:	e8 7f b9 00 00       	call   0xb984
   5:	31 c0                	xor    %eax,%eax
   7:	39 1d a4 70 14 84    	cmp    %ebx,-0x7beb8f5c(%rip)        # 0xffffffff841470b1
   d:	0f 95 c0             	setne  %al
  10:	f7 d8                	neg    %eax
  12:	8b 55 f0             	mov    -0x10(%rbp),%edx
  15:	2b                   	.byte 0x2b


The kernel config and materials to reproduce are available at:
https://download.01.org/0day-ci/archive/20250421/202504211553.3ba9400-lkp@intel.com



[1]
--- /pkg/linux/i386-randconfig-r071-20250410/gcc-12/fc2d5cbe541032e74a66599ba843803cebbfed0e/.config    2025-04-15 15:41:11.316836213 +0800
+++ /pkg/linux/i386-randconfig-r071-20250410/gcc-12/f388f60ca9041a95c9b3f157d316ed7c8f297e44/.config    2025-04-15 15:41:17.009901645 +0800
@@ -321,7 +321,7 @@ CONFIG_ARCH_CPUIDLE_HALTPOLL=y
 # CONFIG_PVH is not set
 # CONFIG_PARAVIRT_TIME_ACCOUNTING is not set
 CONFIG_PARAVIRT_CLOCK=y
-# CONFIG_M486SX is not set
+CONFIG_M486SX=y
 # CONFIG_M486 is not set
 # CONFIG_M586 is not set
 # CONFIG_M586TSC is not set
@@ -333,7 +333,6 @@ CONFIG_PARAVIRT_CLOCK=y
 # CONFIG_MPENTIUM4 is not set
 # CONFIG_MK6 is not set
 # CONFIG_MK7 is not set
-CONFIG_MK8=y
 # CONFIG_MCRUSOE is not set
 # CONFIG_MEFFICEON is not set
 # CONFIG_MWINCHIPC6 is not set
@@ -344,26 +343,24 @@ CONFIG_MK8=y
 # CONFIG_MCYRIXIII is not set
 # CONFIG_MVIAC3_2 is not set
 # CONFIG_MVIAC7 is not set
-# CONFIG_MCORE2 is not set
 # CONFIG_MATOM is not set
 CONFIG_X86_GENERIC=y
 CONFIG_X86_INTERNODE_CACHE_SHIFT=6
 CONFIG_X86_L1_CACHE_SHIFT=6
+CONFIG_X86_F00F_BUG=y
+CONFIG_X86_INVD_BUG=y
+CONFIG_X86_ALIGNMENT_16=y
 CONFIG_X86_INTEL_USERCOPY=y
-CONFIG_X86_USE_PPRO_CHECKSUM=y
-CONFIG_X86_TSC=y
-CONFIG_X86_HAVE_PAE=y
-CONFIG_X86_CMPXCHG64=y
-CONFIG_X86_CMOV=y
-CONFIG_X86_MINIMUM_CPU_FAMILY=6
-CONFIG_X86_DEBUGCTLMSR=y
+CONFIG_X86_MINIMUM_CPU_FAMILY=4
 CONFIG_IA32_FEAT_CTL=y
 CONFIG_X86_VMX_FEATURE_NAMES=y
 CONFIG_CPU_SUP_INTEL=y
+CONFIG_CPU_SUP_CYRIX_32=y
 CONFIG_CPU_SUP_AMD=y
 CONFIG_CPU_SUP_HYGON=y
 CONFIG_CPU_SUP_CENTAUR=y
 CONFIG_CPU_SUP_TRANSMETA_32=y
+CONFIG_CPU_SUP_UMC_32=y
 CONFIG_CPU_SUP_ZHAOXIN=y
 CONFIG_CPU_SUP_VORTEX_32=y
 CONFIG_HPET_TIMER=y
@@ -410,7 +407,6 @@ CONFIG_X86_MSR=y
 # CONFIG_X86_CPUID is not set
 # CONFIG_NOHIGHMEM is not set
 CONFIG_HIGHMEM4G=y
-# CONFIG_HIGHMEM64G is not set
 # CONFIG_VMSPLIT_3G is not set
 # CONFIG_VMSPLIT_3G_OPT is not set
 CONFIG_VMSPLIT_2G=y
@@ -418,7 +414,6 @@ CONFIG_VMSPLIT_2G=y
 # CONFIG_VMSPLIT_1G is not set
 CONFIG_PAGE_OFFSET=0x80000000
 CONFIG_HIGHMEM=y
-# CONFIG_X86_PAE is not set
 # CONFIG_X86_CPA_STATISTICS is not set
 CONFIG_ARCH_FLATMEM_ENABLE=y
 CONFIG_ARCH_SPARSEMEM_ENABLE=y
@@ -427,6 +422,7 @@ CONFIG_ILLEGAL_POINTER_VALUE=0
 # CONFIG_HIGHPTE is not set
 CONFIG_X86_CHECK_BIOS_CORRUPTION=y
 CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y
+# CONFIG_MATH_EMULATION is not set
 CONFIG_MTRR=y
 CONFIG_MTRR_SANITIZER=y
 CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=0
@@ -472,8 +468,8 @@ CONFIG_USE_X86_SEG_SUPPORT=y
 CONFIG_CC_HAS_SLS=y
 CONFIG_CC_HAS_RETURN_THUNK=y
 CONFIG_CC_HAS_ENTRY_PADDING=y
-CONFIG_FUNCTION_PADDING_CFI=0
-CONFIG_FUNCTION_PADDING_BYTES=4
+CONFIG_FUNCTION_PADDING_CFI=11
+CONFIG_FUNCTION_PADDING_BYTES=16
 CONFIG_CPU_MITIGATIONS=y
 # CONFIG_MITIGATION_RETPOLINE is not set
 # CONFIG_MITIGATION_GDS is not set
@@ -741,7 +737,8 @@ CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y
 CONFIG_HAVE_GCC_PLUGINS=y
 # CONFIG_GCC_PLUGINS is not set
 CONFIG_FUNCTION_ALIGNMENT_4B=y
-CONFIG_FUNCTION_ALIGNMENT=4
+CONFIG_FUNCTION_ALIGNMENT_16B=y
+CONFIG_FUNCTION_ALIGNMENT=16
 # end of General architecture-dependent options

 CONFIG_RT_MUTEXES=y
@@ -1114,7 +1111,6 @@ CONFIG_NFC_SHDLC=y
 #
 # Near Field Communication (NFC) devices
 #
-# CONFIG_NFC_MEI_PHY is not set
 # CONFIG_NFC_SIM is not set
 # CONFIG_NFC_PORT100 is not set
 # CONFIG_NFC_PN544_I2C is not set
@@ -1607,9 +1603,7 @@ CONFIG_EEPROM_IDT_89HPESX=y
 # CONFIG_CB710_CORE is not set
 CONFIG_SENSORS_LIS3_I2C=y
 CONFIG_ALTERA_STAPL=y
-CONFIG_INTEL_MEI=y
-CONFIG_INTEL_MEI_ME=y
-# CONFIG_INTEL_MEI_TXE is not set
+# CONFIG_INTEL_MEI is not set
 # CONFIG_VMWARE_VMCI is not set
 CONFIG_ECHO=y
 # CONFIG_MISC_ALCOR_PCI is not set
@@ -3412,7 +3406,6 @@ CONFIG_TQMX86_WDT=y
 CONFIG_W83977F_WDT=y
 CONFIG_MACHZ_WDT=y
 CONFIG_SBC_EPX_C3_WATCHDOG=y
-# CONFIG_INTEL_MEI_WDT is not set
 CONFIG_NI903X_WDT=y
 # CONFIG_NIC7018_WDT is not set
 # CONFIG_MEN_A21_WDT is not set
@@ -5752,7 +5745,6 @@ CONFIG_GENERIC_NET_UTILS=y
 # CONFIG_PRIME_NUMBERS is not set
 CONFIG_RATIONAL=y
 CONFIG_GENERIC_IOMAP=y
-CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y
 CONFIG_ARCH_HAS_FAST_MULTIPLIER=y
 CONFIG_ARCH_USE_SYM_ANNOTATIONS=y

@@ -6186,7 +6178,6 @@ CONFIG_SAMPLE_VFIO_MDEV_MDPY=y
 CONFIG_SAMPLE_VFIO_MDEV_MBOCHS=y
 CONFIG_SAMPLE_ANDROID_BINDERFS=y
 CONFIG_SAMPLE_VFS=y
-# CONFIG_SAMPLE_INTEL_MEI is not set
 # CONFIG_SAMPLE_TPS6594_PFSM is not set
 CONFIG_SAMPLE_WATCHDOG=y
 CONFIG_SAMPLE_WATCH_QUEUE=y



-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki


^ permalink raw reply	[flat|nested] 47+ messages in thread
* [RFC PATCH 0/15] x86: Remove support for TSC-less and CX8-less CPUs
@ 2025-04-25  8:41 Ingo Molnar
  2025-04-25 11:13 ` Arnd Bergmann
                   ` (2 more replies)
  0 siblings, 3 replies; 47+ messages in thread
From: Ingo Molnar @ 2025-04-25  8:41 UTC (permalink / raw)
  To: linux-kernel
  Cc: Ingo Molnar, Ahmed S . Darwish, Andrew Cooper, Ard Biesheuvel,
	Arnd Bergmann, Borislav Petkov, Dave Hansen, H . Peter Anvin,
	John Ogness, Linus Torvalds, Peter Zijlstra, Thomas Gleixner

In the x86 architecture we have various complicated hardware emulation
facilities on x86-32 to support ancient 32-bit CPUs that very very few
people are using with modern kernels. This compatibility glue is sometimes
even causing problems that people spend time to resolve, which time could
be spent on other things.

As Linus recently remarked:

 > I really get the feeling that it's time to leave i486 support behind.
 > There's zero real reason for anybody to waste one second of
 > development effort on this kind of issue.

This series increases minimum kernel support features to include TSC and
CX8 (CMPXCHG8B) hardware support, which removes 486 (and derivatives) support
and early-586 (and derivatives) support.

Doing this allows the removal of a fair amount of code:

 80 files changed, 38 insertions(+), 14104 deletions(-)

Much of which is the math-emu/ library - but even without math-emu,
the simplification is substantial:

 33 files changed, 38 insertions(+), 1081 deletions(-)

This series has 5 main parts:

1) Removal of the main CPU options and their dependencies in the Kconfig space:

     x86/cpu: Remove M486/M486SX/ELAN support
     x86/cpu: Remove CONFIG_MWINCHIP3D/MWINCHIPC6
     x86/cpu: Remove CPU_SUP_UMC_32 support
     x86/cpu: Remove TSC-less CONFIG_M586 support

2) Remove platform support for chips that weren't carried forward
   after these CPUs:

     x86/cpu, x86/platform, watchdog: Remove CONFIG_X86_RDC321X support
     x86/cpu: Remove the CONFIG_X86_INVD_BUG quirk
     x86/cpu, cpufreq: Remove AMD ELAN support

3) Remove math-emu/ support:

     x86/fpu: Remove MATH_EMULATION and related glue code
     x86/fpu: Remove the 'no387' boot option
     x86/fpu: Remove the math-emu/ FPU emulation library

4) Make CONFIG_X86_TSC unconditional and simplify the build-time TSC variances:

     x86/cpu: Make CONFIG_X86_TSC unconditional
     x86: Remove !CONFIG_X86_TSC code

   Note that runtime TSC disabling is still kept in its various forms.

   Also note that I kept CONFIG_X86_TSC itself, which is a proxy for
   a few drivers for 'sane x86', and which might be used in changes
   still in-flight. There's very little cost to keep this Kconfig option
   going forward, even though it's always-enabled.

5) Make CONFIG_X86_CX8 unconditional and remove build-time complications:

     x86/cpu: Make CONFIG_X86_CX8 unconditional
     x86/percpu: Remove !CONFIG_X86_CX8 methods
     x86/atomics: Remove !CONFIG_X86_CX8 methods

   Note that CONFIG_X86_CX8 is still kept, but not used by anything
   anymore. We can probably remove it entirely and there's no expectation
   of pending/outside code having dependency on this.

Note that there's still some stray references to removed platforms in
the main x86 Kconfig and Kconfig.x86, and the entire vector of CPU
options is probably overly complicated and should probably be replaced
with a single option - I'll clean that all up once there's rough
agreement about the scope of this RFC series.

The tree can also be found in my tree:

   git://git.kernel.org/pub/scm/linux/kernel/git/mingo/tip.git WIP.x86/cpu

Lightly tested.

Thanks,

    Ingo

================>
Ingo Molnar (15):
  x86/cpu: Remove M486/M486SX/ELAN support
  x86/cpu: Remove CONFIG_MWINCHIP3D/MWINCHIPC6
  x86/cpu: Remove CPU_SUP_UMC_32 support
  x86/cpu: Remove TSC-less CONFIG_M586 support
  x86/cpu, x86/platform, watchdog: Remove CONFIG_X86_RDC321X support
  x86/cpu: Remove the CONFIG_X86_INVD_BUG quirk
  x86/cpu, cpufreq: Remove AMD ELAN support
  x86/fpu: Remove MATH_EMULATION and related glue code
  x86/fpu: Remove the 'no387' boot option
  x86/fpu: Remove the math-emu/ FPU emulation library
  x86/cpu: Make CONFIG_X86_TSC unconditional
  x86: Remove !CONFIG_X86_TSC code
  x86/cpu: Make CONFIG_X86_CX8 unconditional
  x86/percpu: Remove !CONFIG_X86_CX8 methods
  x86/atomics: Remove !CONFIG_X86_CX8 methods

 Documentation/admin-guide/kernel-parameters.txt |    4 -
 arch/x86/Kconfig                                |   71 +-
 arch/x86/Kconfig.cpu                            |   95 +-
 arch/x86/Kconfig.cpufeatures                    |    2 -
 arch/x86/Makefile                               |    1 -
 arch/x86/Makefile_32.cpu                        |    8 -
 arch/x86/include/asm/asm-prototypes.h           |    4 -
 arch/x86/include/asm/atomic64_32.h              |   17 +-
 arch/x86/include/asm/cmpxchg_32.h               |   86 +-
 arch/x86/include/asm/fpu/api.h                  |    6 -
 arch/x86/include/asm/percpu.h                   |    6 +-
 arch/x86/include/asm/timex.h                    |    3 +-
 arch/x86/include/asm/trace_clock.h              |    8 -
 arch/x86/include/asm/tsc.h                      |   13 +-
 arch/x86/include/asm/vermagic.h                 |   12 -
 arch/x86/kernel/Makefile                        |    4 +-
 arch/x86/kernel/cpu/common.c                    |    7 -
 arch/x86/kernel/cpu/umc.c                       |   26 -
 arch/x86/kernel/fpu/core.c                      |    5 -
 arch/x86/kernel/fpu/init.c                      |    9 +-
 arch/x86/kernel/i8253.c                         |    2 +-
 arch/x86/kernel/traps.c                         |   21 -
 arch/x86/kernel/tsc.c                           |   13 -
 arch/x86/lib/Makefile                           |    4 -
 arch/x86/lib/atomic64_386_32.S                  |  195 ---
 arch/x86/lib/cmpxchg8b_emu.S                    |   97 --
 arch/x86/math-emu/Makefile                      |   30 -
 arch/x86/math-emu/README                        |  427 ------
 arch/x86/math-emu/control_w.h                   |   46 -
 arch/x86/math-emu/div_Xsig.S                    |  367 -----
 arch/x86/math-emu/div_small.S                   |   48 -
 arch/x86/math-emu/errors.c                      |  686 ----------
 arch/x86/math-emu/exception.h                   |   51 -
 arch/x86/math-emu/fpu_arith.c                   |  153 ---
 arch/x86/math-emu/fpu_asm.h                     |   32 -
 arch/x86/math-emu/fpu_aux.c                     |  267 ----
 arch/x86/math-emu/fpu_emu.h                     |  218 ---
 arch/x86/math-emu/fpu_entry.c                   |  718 ----------
 arch/x86/math-emu/fpu_etc.c                     |  136 --
 arch/x86/math-emu/fpu_proto.h                   |  157 ---
 arch/x86/math-emu/fpu_system.h                  |  130 --
 arch/x86/math-emu/fpu_tags.c                    |  116 --
 arch/x86/math-emu/fpu_trig.c                    | 1649 -----------------------
 arch/x86/math-emu/get_address.c                 |  401 ------
 arch/x86/math-emu/load_store.c                  |  322 -----
 arch/x86/math-emu/mul_Xsig.S                    |  179 ---
 arch/x86/math-emu/poly.h                        |  115 --
 arch/x86/math-emu/poly_2xm1.c                   |  146 --
 arch/x86/math-emu/poly_atan.c                   |  209 ---
 arch/x86/math-emu/poly_l2.c                     |  245 ----
 arch/x86/math-emu/poly_sin.c                    |  379 ------
 arch/x86/math-emu/poly_tan.c                    |  213 ---
 arch/x86/math-emu/polynom_Xsig.S                |  137 --
 arch/x86/math-emu/reg_add_sub.c                 |  334 -----
 arch/x86/math-emu/reg_compare.c                 |  479 -------
 arch/x86/math-emu/reg_constant.c                |  123 --
 arch/x86/math-emu/reg_constant.h                |   26 -
 arch/x86/math-emu/reg_convert.c                 |   47 -
 arch/x86/math-emu/reg_divide.c                  |  183 ---
 arch/x86/math-emu/reg_ld_str.c                  | 1220 -----------------
 arch/x86/math-emu/reg_mul.c                     |  116 --
 arch/x86/math-emu/reg_norm.S                    |  150 ---
 arch/x86/math-emu/reg_round.S                   |  711 ----------
 arch/x86/math-emu/reg_u_add.S                   |  169 ---
 arch/x86/math-emu/reg_u_div.S                   |  474 -------
 arch/x86/math-emu/reg_u_mul.S                   |  150 ---
 arch/x86/math-emu/reg_u_sub.S                   |  274 ----
 arch/x86/math-emu/round_Xsig.S                  |  142 --
 arch/x86/math-emu/shr_Xsig.S                    |   89 --
 arch/x86/math-emu/status_w.h                    |   68 -
 arch/x86/math-emu/version.h                     |   12 -
 arch/x86/math-emu/wm_shrx.S                     |  207 ---
 arch/x86/math-emu/wm_sqrt.S                     |  472 -------
 arch/x86/xen/Kconfig                            |    2 +-
 drivers/cpufreq/Kconfig.x86                     |   26 -
 drivers/cpufreq/Makefile                        |    2 -
 drivers/cpufreq/elanfreq.c                      |  227 ----
 drivers/cpufreq/sc520_freq.c                    |  137 --
 drivers/watchdog/Kconfig                        |    2 +-
 lib/atomic64_test.c                             |    4 +-
 80 files changed, 38 insertions(+), 14104 deletions(-)
 delete mode 100644 arch/x86/kernel/cpu/umc.c
 delete mode 100644 arch/x86/lib/atomic64_386_32.S
 delete mode 100644 arch/x86/lib/cmpxchg8b_emu.S
 delete mode 100644 arch/x86/math-emu/Makefile
 delete mode 100644 arch/x86/math-emu/README
 delete mode 100644 arch/x86/math-emu/control_w.h
 delete mode 100644 arch/x86/math-emu/div_Xsig.S
 delete mode 100644 arch/x86/math-emu/div_small.S
 delete mode 100644 arch/x86/math-emu/errors.c
 delete mode 100644 arch/x86/math-emu/exception.h
 delete mode 100644 arch/x86/math-emu/fpu_arith.c
 delete mode 100644 arch/x86/math-emu/fpu_asm.h
 delete mode 100644 arch/x86/math-emu/fpu_aux.c
 delete mode 100644 arch/x86/math-emu/fpu_emu.h
 delete mode 100644 arch/x86/math-emu/fpu_entry.c
 delete mode 100644 arch/x86/math-emu/fpu_etc.c
 delete mode 100644 arch/x86/math-emu/fpu_proto.h
 delete mode 100644 arch/x86/math-emu/fpu_system.h
 delete mode 100644 arch/x86/math-emu/fpu_tags.c
 delete mode 100644 arch/x86/math-emu/fpu_trig.c
 delete mode 100644 arch/x86/math-emu/get_address.c
 delete mode 100644 arch/x86/math-emu/load_store.c
 delete mode 100644 arch/x86/math-emu/mul_Xsig.S
 delete mode 100644 arch/x86/math-emu/poly.h
 delete mode 100644 arch/x86/math-emu/poly_2xm1.c
 delete mode 100644 arch/x86/math-emu/poly_atan.c
 delete mode 100644 arch/x86/math-emu/poly_l2.c
 delete mode 100644 arch/x86/math-emu/poly_sin.c
 delete mode 100644 arch/x86/math-emu/poly_tan.c
 delete mode 100644 arch/x86/math-emu/polynom_Xsig.S
 delete mode 100644 arch/x86/math-emu/reg_add_sub.c
 delete mode 100644 arch/x86/math-emu/reg_compare.c
 delete mode 100644 arch/x86/math-emu/reg_constant.c
 delete mode 100644 arch/x86/math-emu/reg_constant.h
 delete mode 100644 arch/x86/math-emu/reg_convert.c
 delete mode 100644 arch/x86/math-emu/reg_divide.c
 delete mode 100644 arch/x86/math-emu/reg_ld_str.c
 delete mode 100644 arch/x86/math-emu/reg_mul.c
 delete mode 100644 arch/x86/math-emu/reg_norm.S
 delete mode 100644 arch/x86/math-emu/reg_round.S
 delete mode 100644 arch/x86/math-emu/reg_u_add.S
 delete mode 100644 arch/x86/math-emu/reg_u_div.S
 delete mode 100644 arch/x86/math-emu/reg_u_mul.S
 delete mode 100644 arch/x86/math-emu/reg_u_sub.S
 delete mode 100644 arch/x86/math-emu/round_Xsig.S
 delete mode 100644 arch/x86/math-emu/shr_Xsig.S
 delete mode 100644 arch/x86/math-emu/status_w.h
 delete mode 100644 arch/x86/math-emu/version.h
 delete mode 100644 arch/x86/math-emu/wm_shrx.S
 delete mode 100644 arch/x86/math-emu/wm_sqrt.S
 delete mode 100644 drivers/cpufreq/elanfreq.c
 delete mode 100644 drivers/cpufreq/sc520_freq.c

-- 
2.45.2


^ permalink raw reply	[flat|nested] 47+ messages in thread

end of thread, other threads:[~2025-05-15 16:32 UTC | newest]

Thread overview: 47+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-04-21  8:12 [linus:master] [x86/cpu] f388f60ca9: BUG:soft_lockup-CPU##stuck_for#s![swapper:#] kernel test robot
2025-04-22 10:16 ` Arnd Bergmann
2025-04-24  2:12   ` Oliver Sang
2025-04-24  7:59     ` Arnd Bergmann
2025-04-24 16:07       ` Linus Torvalds
2025-04-24 17:54         ` [RFC PATCH 0/15] x86: Remove support for TSC-less and CX8-less CPUs Ingo Molnar
2025-04-24 18:01           ` Ingo Molnar
2025-04-24 21:27           ` Arnd Bergmann
2025-04-25  7:40             ` Ingo Molnar
2025-04-25  9:30               ` Arnd Bergmann
2025-04-26  4:06         ` [linus:master] [x86/cpu] f388f60ca9: BUG:soft_lockup-CPU##stuck_for#s![swapper:#] H. Peter Anvin
2025-04-27  5:48       ` Oliver Sang
2025-04-27 12:07         ` Arnd Bergmann
2025-04-27 16:39         ` Linus Torvalds
2025-04-27 21:19           ` H. Peter Anvin
  -- strict thread matches above, loose matches on Subject: below --
2025-04-25  8:41 [RFC PATCH 0/15] x86: Remove support for TSC-less and CX8-less CPUs Ingo Molnar
2025-04-25 11:13 ` Arnd Bergmann
2025-04-26  8:26 ` Pavel Machek
2025-05-05  8:53 ` Maciej W. Rozycki
2025-05-05 12:48   ` H. Peter Anvin
2025-05-05 13:04     ` Maciej W. Rozycki
2025-05-05 19:57       ` H. Peter Anvin
2025-05-05 20:54         ` Borislav Petkov
2025-05-06 13:51           ` Maciej W. Rozycki
2025-05-06 14:16             ` Borislav Petkov
2025-05-08 14:51               ` Maciej W. Rozycki
2025-05-08 20:11                 ` Borislav Petkov
2025-05-12 12:55                   ` Maciej W. Rozycki
2025-05-12 13:48                     ` Borislav Petkov
2025-05-12 17:29                       ` Maciej W. Rozycki
2025-05-13  2:00                         ` Linus Torvalds
2025-05-13  3:48                           ` H. Peter Anvin
2025-05-13  5:43                           ` John Paul Adrian Glaubitz
2025-05-13 21:55                             ` Maciej W. Rozycki
2025-05-13 22:02                               ` Linus Torvalds
2025-05-13 22:06                                 ` H. Peter Anvin
2025-05-15 16:32                                 ` Maciej W. Rozycki
2025-05-06 13:48         ` Maciej W. Rozycki
2025-05-06 13:54           ` John Paul Adrian Glaubitz
2025-05-05 15:59   ` Linus Torvalds
2025-05-06 13:53     ` Maciej W. Rozycki
2025-05-06 16:44       ` H. Peter Anvin
2025-05-06 17:11         ` Linus Torvalds
2025-05-06 17:51           ` H. Peter Anvin
2025-05-08 14:54             ` Maciej W. Rozycki
2025-05-08 14:53           ` Maciej W. Rozycki
2025-05-08 14:51         ` Maciej W. Rozycki

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).