When sched_cache is enabled, fully scanning all online
CPUs to find the hottest one is very costly. As a first
step, limit the scan to only the CPUs within the task's
preferred node. If the node containing the task's preferred
LLC is not in the CPU scan mask, add it. Additionally, if
the node where the current task is running is not in the
scan mask, add it too.
Suggested-by: Jianyong Wu <jianyong.wu@outlook.com>
Suggested-by: Shrikanth Hegde <sshegde@linux.ibm.com>
Co-developed-by: Tim Chen <tim.c.chen@linux.intel.com>
Signed-off-by: Tim Chen <tim.c.chen@linux.intel.com>
Signed-off-by: Chen Yu <yu.c.chen@intel.com>
---
kernel/sched/fair.c | 36 +++++++++++++++++++++++++++++++++---
1 file changed, 33 insertions(+), 3 deletions(-)
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index 64f757ad39fc..420d3a080990 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -1390,13 +1390,36 @@ static void task_tick_cache(struct rq *rq, struct task_struct *p)
}
}
+static void get_scan_cpumasks(cpumask_var_t cpus, int cache_cpu,
+ int pref_nid, int curr_cpu)
+{
+#ifdef CONFIG_NUMA_BALANCING
+ /* first honor the task's preferred node */
+ if (pref_nid != NUMA_NO_NODE)
+ cpumask_or(cpus, cpus, cpumask_of_node(pref_nid));
+#endif
+
+ /* secondly honor the task's cache CPU if it is not included */
+ if (cache_cpu != -1 && !cpumask_test_cpu(cache_cpu, cpus))
+ cpumask_or(cpus, cpus,
+ cpumask_of_node(cpu_to_node(cache_cpu)));
+
+ /*
+ * Thirdly honor the task's current running node
+ * as the last resort.
+ */
+ if (!cpumask_test_cpu(curr_cpu, cpus))
+ cpumask_or(cpus, cpus, cpumask_of_node(cpu_to_node(curr_cpu)));
+}
+
static void __no_profile task_cache_work(struct callback_head *work)
{
struct task_struct *p = current;
struct mm_struct *mm = p->mm;
unsigned long m_a_occ = 0;
unsigned long last_m_a_occ = 0;
- int cpu, m_a_cpu = -1;
+ int cpu, m_a_cpu = -1, cache_cpu,
+ pref_nid = NUMA_NO_NODE, curr_cpu = smp_processor_id();
cpumask_var_t cpus;
WARN_ON_ONCE(work != &p->cache_work);
@@ -1406,11 +1429,18 @@ static void __no_profile task_cache_work(struct callback_head *work)
if (p->flags & PF_EXITING)
return;
- if (!alloc_cpumask_var(&cpus, GFP_KERNEL))
+ if (!zalloc_cpumask_var(&cpus, GFP_KERNEL))
return;
+ cache_cpu = mm->mm_sched_cpu;
+#ifdef CONFIG_NUMA_BALANCING
+ if (static_branch_likely(&sched_numa_balancing))
+ pref_nid = p->numa_preferred_nid;
+#endif
+
scoped_guard (cpus_read_lock) {
- cpumask_copy(cpus, cpu_online_mask);
+ get_scan_cpumasks(cpus, cache_cpu,
+ pref_nid, curr_cpu);
for_each_cpu(cpu, cpus) {
/* XXX sched_cluster_active */
--
2.25.1
Hello, kernel test robot noticed "BUG:using_smp_processor_id()in_preemptible" on: commit: ff797757d658ecda432e4c33c0cfc2b704af2b06 ("[RFC PATCH v4 23/28] sched: Scan a task's preferred node for preferred LLC") url: https://github.com/intel-lab-lkp/linux/commits/Chen-Yu/sched-Cache-aware-load-balancing/20250809-131716 base: v6.16 patch link: https://lore.kernel.org/all/178bf43d7cbc9b2c9aea408dd56b87391067df37.1754712565.git.tim.c.chen@linux.intel.com/ patch subject: [RFC PATCH v4 23/28] sched: Scan a task's preferred node for preferred LLC in testcase: boot config: x86_64-randconfig-103-20250810 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) +------------------------------------------------------+------------+------------+ | | 552a2db758 | ff797757d6 | +------------------------------------------------------+------------+------------+ | BUG:using_smp_processor_id()in_preemptible | 0 | 11 | +------------------------------------------------------+------------+------------+ 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/202508120315.19f6266a-lkp@intel.com [ 19.177186][ T64] BUG: using smp_processor_id() in preemptible [00000000] code: modprobe/64 [ 19.179622][ T64] caller is debug_smp_processor_id (lib/smp_processor_id.c:61) [ 19.181347][ T64] CPU: 0 UID: 0 PID: 64 Comm: modprobe Not tainted 6.16.0-00023-gff797757d658 #1 PREEMPT(none) [ 19.181372][ T64] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.2-debian-1.16.2-1 04/01/2014 [ 19.181385][ T64] Call Trace: [ 19.181391][ T64] <TASK> [ 19.181401][ T64] dump_stack_lvl (lib/dump_stack.c:123) [ 19.181440][ T64] dump_stack (lib/dump_stack.c:130) [ 19.181465][ T64] check_preemption_disabled (arch/x86/include/asm/preempt.h:85 lib/smp_processor_id.c:53) [ 19.181494][ T64] debug_smp_processor_id (lib/smp_processor_id.c:61) [ 19.181514][ T64] task_cache_work (kernel/sched/fair.c:1422) [ 19.181531][ T64] ? __this_cpu_preempt_check (lib/smp_processor_id.c:67) [ 19.181569][ T64] ? lock_is_held (include/linux/lockdep.h:249) [ 19.181594][ T64] ? _raw_spin_unlock_irq (arch/x86/include/asm/paravirt.h:671 include/linux/spinlock_api_smp.h:159 kernel/locking/spinlock.c:202) [ 19.181626][ T64] ? __pfx_task_cache_work (kernel/sched/fair.c:1416) [ 19.181642][ T64] ? __this_cpu_preempt_check (lib/smp_processor_id.c:67) [ 19.181663][ T64] ? lockdep_hardirqs_on (kernel/locking/lockdep.c:4475) [ 19.181697][ T64] task_work_run (kernel/task_work.c:228 (discriminator 1)) [ 19.181724][ T64] ? __pfx_task_work_run (kernel/task_work.c:195) [ 19.181747][ T64] ? preempt_latency_start (include/linux/ftrace.h:1091 kernel/sched/core.c:5866) [ 19.181782][ T64] resume_user_mode_work (arch/x86/include/asm/current.h:25 include/linux/resume_user_mode.h:53) [ 19.181817][ T64] irqentry_exit_to_user_mode (kernel/entry/common.c:124 include/linux/entry-common.h:330 kernel/entry/common.c:184) [ 19.181843][ T64] irqentry_exit (kernel/entry/common.c:287) [ 19.181862][ T64] exc_page_fault (arch/x86/mm/fault.c:1536) [ 19.181898][ T64] asm_exc_page_fault (arch/x86/include/asm/idtentry.h:623) [ 19.181916][ T64] RIP: 0023:0xf7ee9067 [ 19.181933][ T64] Code: fe ff ff 8b 00 85 c0 0f 84 96 00 00 00 8b 8d 60 fe ff ff 8b 51 30 85 d2 74 03 01 42 04 8b 8d 60 fe ff ff 8b 51 2c 85 d2 74 03 <01> 42 04 8b bd 60 fe ff ff 8b 57 34 85 d2 74 03 01 42 04 8b 8d 60 All code ======== 0: fe (bad) 1: ff (bad) 2: ff 8b 00 85 c0 0f decl 0xfc08500(%rbx) 8: 84 96 00 00 00 8b test %dl,-0x75000000(%rsi) e: 8d 60 fe lea -0x2(%rax),%esp 11: ff (bad) 12: ff 8b 51 30 85 d2 decl -0x2d7acfaf(%rbx) 18: 74 03 je 0x1d 1a: 01 42 04 add %eax,0x4(%rdx) 1d: 8b 8d 60 fe ff ff mov -0x1a0(%rbp),%ecx 23: 8b 51 2c mov 0x2c(%rcx),%edx 26: 85 d2 test %edx,%edx 28: 74 03 je 0x2d 2a:* 01 42 04 add %eax,0x4(%rdx) <-- trapping instruction 2d: 8b bd 60 fe ff ff mov -0x1a0(%rbp),%edi 33: 8b 57 34 mov 0x34(%rdi),%edx 36: 85 d2 test %edx,%edx 38: 74 03 je 0x3d 3a: 01 42 04 add %eax,0x4(%rdx) 3d: 8b .byte 0x8b 3e: 8d .byte 0x8d 3f: 60 (bad) Code starting with the faulting instruction =========================================== 0: 01 42 04 add %eax,0x4(%rdx) 3: 8b bd 60 fe ff ff mov -0x1a0(%rbp),%edi 9: 8b 57 34 mov 0x34(%rdi),%edx c: 85 d2 test %edx,%edx e: 74 03 je 0x13 10: 01 42 04 add %eax,0x4(%rdx) 13: 8b .byte 0x8b 14: 8d .byte 0x8d 15: 60 (bad) [ 19.181949][ T64] RSP: 002b:00000000fffd59c0 EFLAGS: 00010206 [ 19.181966][ T64] RAX: 00000000565ad000 RBX: 0000000000000001 RCX: 00000000f7f11980 [ 19.181978][ T64] RDX: 00000000565dbd44 RSI: 00000000effffef5 RDI: 000000006fffffff [ 19.181990][ T64] RBP: 00000000fffd5bb8 R08: 0000000000000000 R09: 0000000000000000 [ 19.182001][ T64] R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000 [ 19.182013][ T64] R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000 [ 19.182063][ T64] </TASK> [ 19.230078][ T64] BUG: using smp_processor_id() in preemptible [00000000] code: modprobe/64 [ 19.230948][ T64] caller is debug_smp_processor_id (lib/smp_processor_id.c:61) [ 19.231549][ T64] CPU: 0 UID: 0 PID: 64 Comm: modprobe Not tainted 6.16.0-00023-gff797757d658 #1 PREEMPT(none) [ 19.231557][ T64] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.2-debian-1.16.2-1 04/01/2014 [ 19.231561][ T64] Call Trace: [ 19.231564][ T64] <TASK> [ 19.231567][ T64] dump_stack_lvl (lib/dump_stack.c:123) [ 19.231580][ T64] dump_stack (lib/dump_stack.c:130) [ 19.231588][ T64] check_preemption_disabled (arch/x86/include/asm/preempt.h:85 lib/smp_processor_id.c:53) [ 19.231598][ T64] debug_smp_processor_id (lib/smp_processor_id.c:61) [ 19.231604][ T64] task_cache_work (kernel/sched/fair.c:1422) [ 19.231615][ T64] ? find_held_lock (kernel/locking/lockdep.c:5353) [ 19.231627][ T64] ? _raw_spin_unlock_irq (arch/x86/include/asm/paravirt.h:671 include/linux/spinlock_api_smp.h:159 kernel/locking/spinlock.c:202) [ 19.231637][ T64] ? __pfx_task_cache_work (kernel/sched/fair.c:1416) [ 19.231643][ T64] ? __this_cpu_preempt_check (lib/smp_processor_id.c:67) [ 19.231649][ T64] ? lockdep_hardirqs_on (kernel/locking/lockdep.c:4475) [ 19.231659][ T64] task_work_run (kernel/task_work.c:228 (discriminator 1)) [ 19.231668][ T64] ? __pfx_task_work_run (kernel/task_work.c:195) [ 19.231680][ T64] resume_user_mode_work (arch/x86/include/asm/current.h:25 include/linux/resume_user_mode.h:53) [ 19.231691][ T64] irqentry_exit_to_user_mode (kernel/entry/common.c:124 include/linux/entry-common.h:330 kernel/entry/common.c:184) [ 19.231699][ T64] irqentry_exit (kernel/entry/common.c:287) [ 19.231705][ T64] exc_page_fault (arch/x86/mm/fault.c:1536) [ 19.231717][ T64] asm_exc_page_fault (arch/x86/include/asm/idtentry.h:623) [ 19.231723][ T64] RIP: 0023:0xf7f03797 [ 19.231729][ T64] Code: 24 0c e3 2c 89 d7 83 e2 03 74 11 7a 04 aa 49 74 1f aa 49 74 1b 83 f2 01 75 02 aa 49 89 ca c1 e9 02 83 e2 03 69 c0 01 01 01 01 <f3> ab 89 d1 f3 aa 8b 44 24 08 5f c3 66 90 66 90 66 90 66 90 66 90 All code ======== 0: 24 0c and $0xc,%al 2: e3 2c jrcxz 0x30 4: 89 d7 mov %edx,%edi 6: 83 e2 03 and $0x3,%edx 9: 74 11 je 0x1c b: 7a 04 jp 0x11 d: aa stos %al,%es:(%rdi) e: 49 74 1f rex.WB je 0x30 11: aa stos %al,%es:(%rdi) 12: 49 74 1b rex.WB je 0x30 15: 83 f2 01 xor $0x1,%edx 18: 75 02 jne 0x1c 1a: aa stos %al,%es:(%rdi) 1b: 49 89 ca mov %rcx,%r10 1e: c1 e9 02 shr $0x2,%ecx 21: 83 e2 03 and $0x3,%edx 24: 69 c0 01 01 01 01 imul $0x1010101,%eax,%eax 2a:* f3 ab rep stos %eax,%es:(%rdi) <-- trapping instruction 2c: 89 d1 mov %edx,%ecx 2e: f3 aa rep stos %al,%es:(%rdi) 30: 8b 44 24 08 mov 0x8(%rsp),%eax 34: 5f pop %rdi 35: c3 ret 36: 66 90 xchg %ax,%ax 38: 66 90 xchg %ax,%ax 3a: 66 90 xchg %ax,%ax 3c: 66 90 xchg %ax,%ax 3e: 66 90 xchg %ax,%ax Code starting with the faulting instruction =========================================== 0: f3 ab rep stos %eax,%es:(%rdi) 2: 89 d1 mov %edx,%ecx 4: f3 aa rep stos %al,%es:(%rdi) 6: 8b 44 24 08 mov 0x8(%rsp),%eax a: 5f pop %rdi b: c3 ret c: 66 90 xchg %ax,%ax e: 66 90 xchg %ax,%ax 10: 66 90 xchg %ax,%ax 12: 66 90 xchg %ax,%ax 14: 66 90 xchg %ax,%ax [ 19.231735][ T64] RSP: 002b:00000000fffd4f58 EFLAGS: 00010206 [ 19.231741][ T64] RAX: 0000000000000000 RBX: 00000000f7f11000 RCX: 0000000000000001 [ 19.231745][ T64] RDX: 0000000000000000 RSI: 00000000f7edf148 RDI: 00000000f7edf144 [ 19.231749][ T64] RBP: 00000000fffd5138 R08: 0000000000000000 R09: 0000000000000000 [ 19.231753][ T64] R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000 [ 19.231756][ T64] R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000 [ 19.231771][ T64] </TASK> [ 19.251371][ T64] BUG: using smp_processor_id() in preemptible [00000000] code: modprobe/64 [ 19.252249][ T64] caller is debug_smp_processor_id (lib/smp_processor_id.c:61) [ 19.252877][ T64] CPU: 0 UID: 0 PID: 64 Comm: modprobe Not tainted 6.16.0-00023-gff797757d658 #1 PREEMPT(none) [ 19.252886][ T64] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.2-debian-1.16.2-1 04/01/2014 [ 19.252890][ T64] Call Trace: [ 19.252892][ T64] <TASK> [ 19.252895][ T64] dump_stack_lvl (lib/dump_stack.c:123) [ 19.252907][ T64] dump_stack (lib/dump_stack.c:130) [ 19.252916][ T64] check_preemption_disabled (arch/x86/include/asm/preempt.h:85 lib/smp_processor_id.c:53) [ 19.252925][ T64] debug_smp_processor_id (lib/smp_processor_id.c:61) [ 19.252931][ T64] task_cache_work (kernel/sched/fair.c:1422) [ 19.252941][ T64] ? find_held_lock (kernel/locking/lockdep.c:5353) [ 19.252953][ T64] ? _raw_spin_unlock_irq (arch/x86/include/asm/paravirt.h:671 include/linux/spinlock_api_smp.h:159 kernel/locking/spinlock.c:202) [ 19.252963][ T64] ? __pfx_task_cache_work (kernel/sched/fair.c:1416) [ 19.252969][ T64] ? __this_cpu_preempt_check (lib/smp_processor_id.c:67) [ 19.252976][ T64] ? lockdep_hardirqs_on (kernel/locking/lockdep.c:4475) [ 19.252985][ T64] task_work_run (kernel/task_work.c:228 (discriminator 1)) [ 19.252994][ T64] ? __pfx_task_work_run (kernel/task_work.c:195) [ 19.253006][ T64] resume_user_mode_work (arch/x86/include/asm/current.h:25 include/linux/resume_user_mode.h:53) [ 19.253018][ T64] exit_to_user_mode_loop (kernel/entry/common.c:124) [ 19.253025][ T64] do_int80_emulation (include/linux/entry-common.h:332 include/linux/entry-common.h:414 include/linux/entry-common.h:449 arch/x86/entry/syscall_32.c:175) [ 19.253035][ T64] ? find_held_lock (kernel/locking/lockdep.c:5353) [ 19.253044][ T64] ? preempt_latency_start (include/linux/ftrace.h:1091 kernel/sched/core.c:5866) [ 19.253055][ T64] ? __up_write (arch/x86/include/asm/preempt.h:104 kernel/locking/rwsem.c:1375) [ 19.253061][ T64] ? __this_cpu_preempt_check (lib/smp_processor_id.c:67) [ 19.253070][ T64] ? validate_chain (kernel/locking/lockdep.c:3826 kernel/locking/lockdep.c:3879) [ 19.253081][ T64] ? __lock_acquire (kernel/locking/lockdep.c:5240) [ 19.253093][ T64] ? find_held_lock (kernel/locking/lockdep.c:5353) [ 19.253106][ T64] ? validate_chain (kernel/locking/lockdep.c:3826 kernel/locking/lockdep.c:3879) [ 19.253117][ T64] ? __lock_acquire (kernel/locking/lockdep.c:5240) [ 19.253128][ T64] ? find_held_lock (kernel/locking/lockdep.c:5353) [ 19.253138][ T64] ? vtime_user_exit (kernel/sched/cputime.c:737) [ 19.253149][ T64] ? vtime_user_exit (kernel/sched/cputime.c:737) [ 19.253159][ T64] ? __this_cpu_preempt_check (lib/smp_processor_id.c:67) [ 19.253170][ T64] ? debug_smp_processor_id (lib/smp_processor_id.c:61) [ 19.253177][ T64] ? rcu_is_watching (include/linux/context_tracking.h:128 kernel/rcu/tree.c:745) [ 19.253185][ T64] ? trace_irq_disable (include/trace/events/preemptirq.h:36 (discriminator 21)) [ 19.253195][ T64] ? trace_hardirqs_off_finish (kernel/trace/trace_preemptirq.c:98) [ 19.253203][ T64] ? do_int80_emulation (arch/x86/include/asm/jump_label.h:36 arch/x86/entry/syscall_32.c:148) [ 19.253212][ T64] asm_int80_emulation (arch/x86/include/asm/idtentry.h:626) [ 19.253218][ T64] RIP: 0023:0xf7f02cb0 [ 19.253223][ T64] Code: 4c 24 34 89 44 24 0c 8b 44 24 44 8b 54 24 38 8b 74 24 3c 8b 7c 24 40 a9 ff 0f 00 00 75 1c c1 e8 0c 89 c5 b8 c0 00 00 00 cd 80 <3d> 00 f0 ff ff 77 21 83 c4 1c 5b 5e 5f 5d c3 90 83 c4 1c b8 ea ff All code ======== 0: 4c 24 34 rex.WR and $0x34,%al 3: 89 44 24 0c mov %eax,0xc(%rsp) 7: 8b 44 24 44 mov 0x44(%rsp),%eax b: 8b 54 24 38 mov 0x38(%rsp),%edx f: 8b 74 24 3c mov 0x3c(%rsp),%esi 13: 8b 7c 24 40 mov 0x40(%rsp),%edi 17: a9 ff 0f 00 00 test $0xfff,%eax 1c: 75 1c jne 0x3a 1e: c1 e8 0c shr $0xc,%eax 21: 89 c5 mov %eax,%ebp 23: b8 c0 00 00 00 mov $0xc0,%eax 28: cd 80 int $0x80 2a:* 3d 00 f0 ff ff cmp $0xfffff000,%eax <-- trapping instruction 2f: 77 21 ja 0x52 31: 83 c4 1c add $0x1c,%esp 34: 5b pop %rbx 35: 5e pop %rsi 36: 5f pop %rdi 37: 5d pop %rbp 38: c3 ret 39: 90 nop 3a: 83 c4 1c add $0x1c,%esp 3d: b8 .byte 0xb8 3e: ea (bad) 3f: ff .byte 0xff Code starting with the faulting instruction =========================================== 0: 3d 00 f0 ff ff cmp $0xfffff000,%eax 5: 77 21 ja 0x28 7: 83 c4 1c add $0x1c,%esp a: 5b pop %rbx b: 5e pop %rsi c: 5f pop %rdi d: 5d pop %rbp e: c3 ret f: 90 nop 10: 83 c4 1c add $0x1c,%esp 13: b8 .byte 0xb8 14: ea (bad) 15: ff .byte 0xff [ 19.253229][ T64] RSP: 002b:00000000fffd4f00 EFLAGS: 00000202 ORIG_RAX: 00000000000000c0 [ 19.253236][ T64] RAX: 00000000f7db9000 RBX: 00000000f7db9000 RCX: 00000000000da000 [ 19.253240][ T64] RDX: 0000000000000001 RSI: 0000000000000812 RDI: 0000000000000000 [ 19.253244][ T64] RBP: 00000000000001ce R08: 0000000000000000 R09: 0000000000000000 [ 19.253248][ T64] R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000 [ 19.253251][ T64] R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000 [ 19.253266][ T64] </TASK> [ 19.256786][ T64] BUG: using smp_processor_id() in preemptible [00000000] code: modprobe/64 [ 19.304780][ T64] caller is debug_smp_processor_id (lib/smp_processor_id.c:61) [ 19.305760][ T64] CPU: 1 UID: 0 PID: 64 Comm: modprobe Not tainted 6.16.0-00023-gff797757d658 #1 PREEMPT(none) [ 19.305774][ T64] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.2-debian-1.16.2-1 04/01/2014 [ 19.305782][ T64] Call Trace: [ 19.305787][ T64] <TASK> [ 19.305795][ T64] dump_stack_lvl (lib/dump_stack.c:123) [ 19.305817][ T64] dump_stack (lib/dump_stack.c:130) [ 19.305832][ T64] check_preemption_disabled (arch/x86/include/asm/preempt.h:85 lib/smp_processor_id.c:53) [ 19.305849][ T64] debug_smp_processor_id (lib/smp_processor_id.c:61) [ 19.305862][ T64] task_cache_work (kernel/sched/fair.c:1422) [ 19.305881][ T64] ? find_held_lock (kernel/locking/lockdep.c:5353) [ 19.305903][ T64] ? _raw_spin_unlock_irq (arch/x86/include/asm/paravirt.h:671 include/linux/spinlock_api_smp.h:159 kernel/locking/spinlock.c:202) [ 19.305921][ T64] ? __pfx_task_cache_work (kernel/sched/fair.c:1416) [ 19.305931][ T64] ? __this_cpu_preempt_check (lib/smp_processor_id.c:67) [ 19.305944][ T64] ? lockdep_hardirqs_on (kernel/locking/lockdep.c:4475) [ 19.305962][ T64] task_work_run (kernel/task_work.c:228 (discriminator 1)) [ 19.305980][ T64] ? __pfx_task_work_run (kernel/task_work.c:195) [ 19.306002][ T64] resume_user_mode_work (arch/x86/include/asm/current.h:25 include/linux/resume_user_mode.h:53) [ 19.306023][ T64] irqentry_exit_to_user_mode (kernel/entry/common.c:124 include/linux/entry-common.h:330 kernel/entry/common.c:184) [ 19.306039][ T64] irqentry_exit (kernel/entry/common.c:287) [ 19.306050][ T64] exc_page_fault (arch/x86/mm/fault.c:1536) [ 19.306072][ T64] asm_exc_page_fault (arch/x86/include/asm/idtentry.h:623) [ 19.306083][ T64] RIP: 0023:0xf7db80cb [ 19.306094][ T64] Code: 01 00 00 00 83 c4 08 5b c3 66 90 66 90 66 90 55 53 56 57 31 d2 9c 58 89 c1 35 00 00 20 00 50 9d 9c 58 31 c1 31 c0 8b 74 24 14 <89> 46 08 0f ba e1 15 0f 83 6b 01 00 00 0f a2 89 c7 31 c0 81 fb 47 All code ======== 0: 01 00 add %eax,(%rax) 2: 00 00 add %al,(%rax) 4: 83 c4 08 add $0x8,%esp 7: 5b pop %rbx 8: c3 ret 9: 66 90 xchg %ax,%ax b: 66 90 xchg %ax,%ax d: 66 90 xchg %ax,%ax f: 55 push %rbp 10: 53 push %rbx 11: 56 push %rsi 12: 57 push %rdi 13: 31 d2 xor %edx,%edx 15: 9c pushf 16: 58 pop %rax 17: 89 c1 mov %eax,%ecx 19: 35 00 00 20 00 xor $0x200000,%eax 1e: 50 push %rax 1f: 9d popf 20: 9c pushf 21: 58 pop %rax 22: 31 c1 xor %eax,%ecx 24: 31 c0 xor %eax,%eax 26: 8b 74 24 14 mov 0x14(%rsp),%esi 2a:* 89 46 08 mov %eax,0x8(%rsi) <-- trapping instruction 2d: 0f ba e1 15 bt $0x15,%ecx 31: 0f 83 6b 01 00 00 jae 0x1a2 37: 0f a2 cpuid 39: 89 c7 mov %eax,%edi 3b: 31 c0 xor %eax,%eax 3d: 81 .byte 0x81 3e: fb sti 3f: 47 rex.RXB Code starting with the faulting instruction =========================================== 0: 89 46 08 mov %eax,0x8(%rsi) 3: 0f ba e1 15 bt $0x15,%ecx 7: 0f 83 6b 01 00 00 jae 0x178 d: 0f a2 cpuid f: 89 c7 mov %eax,%edi 11: 31 c0 xor %eax,%eax 13: 81 .byte 0x81 14: fb sti 15: 47 rex.RXB [ 19.306104][ T64] RSP: 002b:00000000fffd5bd8 EFLAGS: 00210246 [ 19.306115][ T64] RAX: 0000000000000000 RBX: 00000000f7eac684 RCX: 0000000000200000 [ 19.306123][ T64] RDX: 0000000000000000 RSI: 00000000f7eb3ad0 RDI: 00000000f7eb3ad0 [ 19.306131][ T64] RBP: 00000000f7eac684 R08: 0000000000000000 R09: 0000000000000000 [ 19.306138][ T64] R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000 [ 19.306145][ T64] R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000 [ 19.306175][ T64] </TASK> [ 19.328981][ T64] BUG: using smp_processor_id() in preemptible [00000000] code: modprobe/64 [ 19.329865][ T64] caller is debug_smp_processor_id (lib/smp_processor_id.c:61) [ 19.330477][ T64] CPU: 1 UID: 0 PID: 64 Comm: modprobe Not tainted 6.16.0-00023-gff797757d658 #1 PREEMPT(none) [ 19.330486][ T64] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.2-debian-1.16.2-1 04/01/2014 [ 19.330490][ T64] Call Trace: [ 19.330492][ T64] <TASK> [ 19.330495][ T64] dump_stack_lvl (lib/dump_stack.c:123) [ 19.330508][ T64] dump_stack (lib/dump_stack.c:130) [ 19.330516][ T64] check_preemption_disabled (arch/x86/include/asm/preempt.h:85 lib/smp_processor_id.c:53) [ 19.330525][ T64] debug_smp_processor_id (lib/smp_processor_id.c:61) [ 19.330531][ T64] task_cache_work (kernel/sched/fair.c:1422) [ 19.330541][ T64] ? find_held_lock (kernel/locking/lockdep.c:5353) [ 19.330553][ T64] ? _raw_spin_unlock_irq (arch/x86/include/asm/paravirt.h:671 include/linux/spinlock_api_smp.h:159 kernel/locking/spinlock.c:202) [ 19.330564][ T64] ? __pfx_task_cache_work (kernel/sched/fair.c:1416) [ 19.330569][ T64] ? __this_cpu_preempt_check (lib/smp_processor_id.c:67) [ 19.330576][ T64] ? lockdep_hardirqs_on (kernel/locking/lockdep.c:4475) [ 19.330586][ T64] task_work_run (kernel/task_work.c:228 (discriminator 1)) [ 19.330595][ T64] ? __pfx_task_work_run (kernel/task_work.c:195) [ 19.330606][ T64] resume_user_mode_work (arch/x86/include/asm/current.h:25 include/linux/resume_user_mode.h:53) [ 19.330618][ T64] irqentry_exit_to_user_mode (kernel/entry/common.c:124 include/linux/entry-common.h:330 kernel/entry/common.c:184) [ 19.330626][ T64] irqentry_exit (kernel/entry/common.c:287) [ 19.330632][ T64] exc_page_fault (arch/x86/mm/fault.c:1536) [ 19.330644][ T64] asm_exc_page_fault (arch/x86/include/asm/idtentry.h:623) [ 19.330650][ T64] RIP: 0023:0xf7a9f4c0 [ 19.330656][ T64] Code: 57 8d 1c 06 e8 21 0d 00 00 83 c4 0c c6 04 03 00 50 57 53 89 eb e8 70 15 00 00 83 c4 1c 89 f0 5b 5e 5f 5d c3 66 90 66 90 66 90 <57> 8b 4c 24 08 66 0f 6e 4c 24 0c 66 0f ef d2 89 cf 66 0f 60 c9 66 All code ======== 0: 57 push %rdi 1: 8d 1c 06 lea (%rsi,%rax,1),%ebx 4: e8 21 0d 00 00 call 0xd2a 9: 83 c4 0c add $0xc,%esp c: c6 04 03 00 movb $0x0,(%rbx,%rax,1) 10: 50 push %rax 11: 57 push %rdi 12: 53 push %rbx 13: 89 eb mov %ebp,%ebx 15: e8 70 15 00 00 call 0x158a 1a: 83 c4 1c add $0x1c,%esp 1d: 89 f0 mov %esi,%eax 1f: 5b pop %rbx 20: 5e pop %rsi 21: 5f pop %rdi 22: 5d pop %rbp 23: c3 ret 24: 66 90 xchg %ax,%ax 26: 66 90 xchg %ax,%ax 28: 66 90 xchg %ax,%ax 2a:* 57 push %rdi <-- trapping instruction 2b: 8b 4c 24 08 mov 0x8(%rsp),%ecx 2f: 66 0f 6e 4c 24 0c movd 0xc(%rsp),%xmm1 35: 66 0f ef d2 pxor %xmm2,%xmm2 39: 89 cf mov %ecx,%edi 3b: 66 0f 60 c9 punpcklbw %xmm1,%xmm1 3f: 66 data16 Code starting with the faulting instruction =========================================== 0: 57 push %rdi 1: 8b 4c 24 08 mov 0x8(%rsp),%ecx 5: 66 0f 6e 4c 24 0c movd 0xc(%rsp),%xmm1 b: 66 0f ef d2 pxor %xmm2,%xmm2 f: 89 cf mov %ecx,%edi 11: 66 0f 60 c9 punpcklbw %xmm1,%xmm1 15: 66 data16 [ 19.330662][ T64] RSP: 002b:00000000fffd38cc EFLAGS: 00210246 [ 19.330667][ T64] RAX: 0000000000000000 RBX: 00000000565dbdd4 RCX: 00000000fffd49a8 [ 19.330671][ T64] RDX: 0000000000000000 RSI: 00000000fffd394c RDI: 000000005799e1f0 [ 19.330675][ T64] RBP: 0000000000000000 R08: 0000000000000000 R09: 0000000000000000 [ 19.330679][ T64] R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000 [ 19.330682][ T64] R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000 [ 19.330697][ T64] </TASK> [ 19.332542][ T64] modprobe (64) used greatest stack depth: 25120 bytes left [ 19.344814][ T65] BUG: using smp_processor_id() in preemptible [00000000] code: modprobe/65 [ 19.360113][ T65] caller is debug_smp_processor_id (lib/smp_processor_id.c:61) [ 19.361051][ T65] CPU: 0 UID: 0 PID: 65 Comm: modprobe Not tainted 6.16.0-00023-gff797757d658 #1 PREEMPT(none) [ 19.361065][ T65] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.2-debian-1.16.2-1 04/01/2014 [ 19.361071][ T65] Call Trace: [ 19.361074][ T65] <TASK> [ 19.361079][ T65] dump_stack_lvl (lib/dump_stack.c:123) [ 19.361099][ T65] dump_stack (lib/dump_stack.c:130) [ 19.361111][ T65] check_preemption_disabled (arch/x86/include/asm/preempt.h:85 lib/smp_processor_id.c:53) [ 19.361125][ T65] debug_smp_processor_id (lib/smp_processor_id.c:61) [ 19.361136][ T65] task_cache_work (kernel/sched/fair.c:1422) [ 19.361144][ T65] ? __this_cpu_preempt_check (lib/smp_processor_id.c:67) [ 19.361162][ T65] ? lock_is_held (include/linux/lockdep.h:249) [ 19.361175][ T65] ? _raw_spin_unlock_irq (arch/x86/include/asm/paravirt.h:671 include/linux/spinlock_api_smp.h:159 kernel/locking/spinlock.c:202) [ 19.361191][ T65] ? __pfx_task_cache_work (kernel/sched/fair.c:1416) [ 19.361199][ T65] ? __this_cpu_preempt_check (lib/smp_processor_id.c:67) [ 19.361210][ T65] ? lockdep_hardirqs_on (kernel/locking/lockdep.c:4475) [ 19.361225][ T65] task_work_run (kernel/task_work.c:228 (discriminator 1)) [ 19.361238][ T65] ? __pfx_task_work_run (kernel/task_work.c:195) [ 19.361256][ T65] resume_user_mode_work (arch/x86/include/asm/current.h:25 include/linux/resume_user_mode.h:53) [ 19.361273][ T65] irqentry_exit_to_user_mode (kernel/entry/common.c:124 include/linux/entry-common.h:330 kernel/entry/common.c:184) [ 19.361286][ T65] irqentry_exit (kernel/entry/common.c:287) [ 19.361295][ T65] exc_page_fault (arch/x86/mm/fault.c:1536) [ 19.361313][ T65] asm_exc_page_fault (arch/x86/include/asm/idtentry.h:623) [ 19.361322][ T65] RIP: 0023:0xf7f7b148 [ 19.361330][ T65] Code: bb 41 ff ff 6f 29 d3 89 04 99 e9 f1 fe ff ff 8b b5 74 ff ff ff 85 f6 74 60 8b 47 30 85 c0 74 03 01 70 04 8b 47 2c 85 c0 74 03 <01> 70 04 8b 47 34 85 c0 74 03 01 70 04 8b 47 38 85 c0 74 03 01 70 All code ======== 0: bb 41 ff ff 6f mov $0x6fffff41,%ebx 5: 29 d3 sub %edx,%ebx 7: 89 04 99 mov %eax,(%rcx,%rbx,4) a: e9 f1 fe ff ff jmp 0xffffffffffffff00 f: 8b b5 74 ff ff ff mov -0x8c(%rbp),%esi 15: 85 f6 test %esi,%esi 17: 74 60 je 0x79 19: 8b 47 30 mov 0x30(%rdi),%eax 1c: 85 c0 test %eax,%eax 1e: 74 03 je 0x23 20: 01 70 04 add %esi,0x4(%rax) 23: 8b 47 2c mov 0x2c(%rdi),%eax 26: 85 c0 test %eax,%eax 28: 74 03 je 0x2d 2a:* 01 70 04 add %esi,0x4(%rax) <-- trapping instruction 2d: 8b 47 34 mov 0x34(%rdi),%eax 30: 85 c0 test %eax,%eax 32: 74 03 je 0x37 34: 01 70 04 add %esi,0x4(%rax) 37: 8b 47 38 mov 0x38(%rdi),%eax 3a: 85 c0 test %eax,%eax 3c: 74 03 je 0x41 3e: 01 .byte 0x1 3f: 70 .byte 0x70 Code starting with the faulting instruction =========================================== 0: 01 70 04 add %esi,0x4(%rax) 3: 8b 47 34 mov 0x34(%rdi),%eax 6: 85 c0 test %eax,%eax 8: 74 03 je 0xd a: 01 70 04 add %esi,0x4(%rax) d: 8b 47 38 mov 0x38(%rdi),%eax 10: 85 c0 test %eax,%eax 12: 74 03 je 0x17 14: 01 .byte 0x1 15: 70 .byte 0x70 [ 19.361339][ T65] RSP: 002b:00000000ffdeddc0 EFLAGS: 00010286 [ 19.361348][ T65] RAX: 00000000f7f395e4 RBX: 0000000000000028 RCX: 00000000f7f6d310 [ 19.361355][ T65] RDX: 0000000000000000 RSI: 00000000f7c78000 RDI: 00000000f7f6d2f0 [ 19.361361][ T65] RBP: 00000000ffdedea8 R08: 0000000000000000 R09: 0000000000000000 [ 19.361367][ T65] R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000 [ 19.361372][ T65] R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000 [ 19.361395][ T65] </TASK> [ 19.405251][ T65] BUG: using smp_processor_id() in preemptible [00000000] code: modprobe/65 [ 19.406850][ T65] caller is debug_smp_processor_id (lib/smp_processor_id.c:61) [ 19.407947][ T65] CPU: 0 UID: 0 PID: 65 Comm: modprobe Not tainted 6.16.0-00023-gff797757d658 #1 PREEMPT(none) [ 19.407964][ T65] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.2-debian-1.16.2-1 04/01/2014 [ 19.407972][ T65] Call Trace: [ 19.407977][ T65] <TASK> [ 19.407984][ T65] dump_stack_lvl (lib/dump_stack.c:123) [ 19.408010][ T65] dump_stack (lib/dump_stack.c:130) [ 19.408027][ T65] check_preemption_disabled (arch/x86/include/asm/preempt.h:85 lib/smp_processor_id.c:53) [ 19.408048][ T65] debug_smp_processor_id (lib/smp_processor_id.c:61) [ 19.408062][ T65] task_cache_work (kernel/sched/fair.c:1422) [ 19.408083][ T65] ? find_held_lock (kernel/locking/lockdep.c:5353) [ 19.408108][ T65] ? _raw_spin_unlock_irq (arch/x86/include/asm/paravirt.h:671 include/linux/spinlock_api_smp.h:159 kernel/locking/spinlock.c:202) [ 19.408130][ T65] ? __pfx_task_cache_work (kernel/sched/fair.c:1416) [ 19.408141][ T65] ? __this_cpu_preempt_check (lib/smp_processor_id.c:67) [ 19.408155][ T65] ? lockdep_hardirqs_on (kernel/locking/lockdep.c:4475) [ 19.408182][ T65] task_work_run (kernel/task_work.c:228 (discriminator 1)) [ 19.408198][ T65] ? __pfx_task_work_run (kernel/task_work.c:195) [ 19.408211][ T65] resume_user_mode_work (arch/x86/include/asm/current.h:25 include/linux/resume_user_mode.h:53) [ 19.408225][ T65] irqentry_exit_to_user_mode (kernel/entry/common.c:124 include/linux/entry-common.h:330 kernel/entry/common.c:184) [ 19.408235][ T65] irqentry_exit (kernel/entry/common.c:287) [ 19.408242][ T65] exc_page_fault (arch/x86/mm/fault.c:1536) [ 19.408256][ T65] asm_exc_page_fault (arch/x86/include/asm/idtentry.h:623) [ 19.408264][ T65] RIP: 0023:0xf7b9cca0 [ 19.408271][ T65] Code: 04 00 00 00 c7 44 24 2c 03 00 00 00 e9 3a fe ff ff e8 a4 1e 00 00 66 90 66 90 c3 66 90 66 90 66 90 66 90 66 90 66 90 66 90 90 <e8> 14 01 03 00 05 5b 73 0d 00 53 8b 88 f4 fe ff ff 8d 90 e0 38 f6 All code ======== 0: 04 00 add $0x0,%al 2: 00 00 add %al,(%rax) 4: c7 44 24 2c 03 00 00 movl $0x3,0x2c(%rsp) b: 00 c: e9 3a fe ff ff jmp 0xfffffffffffffe4b 11: e8 a4 1e 00 00 call 0x1eba 16: 66 90 xchg %ax,%ax 18: 66 90 xchg %ax,%ax 1a: c3 ret 1b: 66 90 xchg %ax,%ax 1d: 66 90 xchg %ax,%ax 1f: 66 90 xchg %ax,%ax 21: 66 90 xchg %ax,%ax 23: 66 90 xchg %ax,%ax 25: 66 90 xchg %ax,%ax 27: 66 90 xchg %ax,%ax 29: 90 nop 2a:* e8 14 01 03 00 call 0x30143 <-- trapping instruction 2f: 05 5b 73 0d 00 add $0xd735b,%eax 34: 53 push %rbx 35: 8b 88 f4 fe ff ff mov -0x10c(%rax),%ecx 3b: 8d .byte 0x8d 3c: 90 nop 3d: e0 38 loopne 0x77 3f: f6 .byte 0xf6 Code starting with the faulting instruction =========================================== 0: e8 14 01 03 00 call 0x30119 5: 05 5b 73 0d 00 add $0xd735b,%eax a: 53 push %rbx b: 8b 88 f4 fe ff ff mov -0x10c(%rax),%ecx 11: 8d .byte 0x8d 12: 90 nop 13: e0 38 loopne 0x4d 15: f6 .byte 0xf6 [ 19.408277][ T65] RSP: 002b:00000000ffdee69c EFLAGS: 00010202 [ 19.408285][ T65] RAX: 0000000000000000 RBX: 0000000000000007 RCX: 00000000f7f6d5d0 [ 19.408289][ T65] RDX: 0000000000000015 RSI: 00000000f7c81904 RDI: 00000000f7b9cca0 [ 19.408294][ T65] RBP: 00000000ffdee738 R08: 0000000000000000 R09: 0000000000000000 [ 19.408299][ T65] R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000 [ 19.408303][ T65] R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000 [ 19.408320][ T65] </TASK> [ 19.430721][ T65] BUG: using smp_processor_id() in preemptible [00000000] code: modprobe/65 [ 19.431596][ T65] caller is debug_smp_processor_id (lib/smp_processor_id.c:61) [ 19.432219][ T65] CPU: 0 UID: 0 PID: 65 Comm: modprobe Not tainted 6.16.0-00023-gff797757d658 #1 PREEMPT(none) [ 19.432227][ T65] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.2-debian-1.16.2-1 04/01/2014 [ 19.432232][ T65] Call Trace: [ 19.432234][ T65] <TASK> [ 19.432237][ T65] dump_stack_lvl (lib/dump_stack.c:123) [ 19.432250][ T65] dump_stack (lib/dump_stack.c:130) [ 19.432258][ T65] check_preemption_disabled (arch/x86/include/asm/preempt.h:85 lib/smp_processor_id.c:53) [ 19.432267][ T65] debug_smp_processor_id (lib/smp_processor_id.c:61) [ 19.432274][ T65] task_cache_work (kernel/sched/fair.c:1422) [ 19.432283][ T65] ? find_held_lock (kernel/locking/lockdep.c:5353) [ 19.432295][ T65] ? _raw_spin_unlock_irq (arch/x86/include/asm/paravirt.h:671 include/linux/spinlock_api_smp.h:159 kernel/locking/spinlock.c:202) [ 19.432306][ T65] ? __pfx_task_cache_work (kernel/sched/fair.c:1416) [ 19.432311][ T65] ? __this_cpu_preempt_check (lib/smp_processor_id.c:67) [ 19.432318][ T65] ? lockdep_hardirqs_on (kernel/locking/lockdep.c:4475) [ 19.432327][ T65] task_work_run (kernel/task_work.c:228 (discriminator 1)) [ 19.432336][ T65] ? __pfx_task_work_run (kernel/task_work.c:195) [ 19.432348][ T65] resume_user_mode_work (arch/x86/include/asm/current.h:25 include/linux/resume_user_mode.h:53) [ 19.432359][ T65] exit_to_user_mode_loop (kernel/entry/common.c:124) [ 19.432367][ T65] do_int80_emulation (include/linux/entry-common.h:332 include/linux/entry-common.h:414 include/linux/entry-common.h:449 arch/x86/entry/syscall_32.c:175) [ 19.432375][ T65] ? rcu_read_unlock (include/linux/rcupdate.h:874 (discriminator 9)) [ 19.432381][ T65] ? do_read_fault (mm/memory.c:5600) [ 19.432394][ T65] ? do_pte_missing (mm/memory.c:4252) [ 19.432401][ T65] ? handle_pte_fault (mm/memory.c:6069) [ 19.432412][ T65] ? handle_pte_fault (mm/memory.c:6026) [ 19.432421][ T65] ? __pfx_handle_pte_fault (mm/memory.c:6026) [ 19.432430][ T65] ? validate_chain (kernel/locking/lockdep.c:3826 kernel/locking/lockdep.c:3879) [ 19.432439][ T65] ? validate_chain (kernel/locking/lockdep.c:3826 kernel/locking/lockdep.c:3879) [ 19.432449][ T65] ? __lock_acquire (kernel/locking/lockdep.c:5240) [ 19.432461][ T65] ? find_held_lock (kernel/locking/lockdep.c:5353) [ 19.432471][ T65] ? vtime_user_exit (kernel/sched/cputime.c:737) [ 19.432482][ T65] ? vtime_user_exit (kernel/sched/cputime.c:737) [ 19.432492][ T65] ? __this_cpu_preempt_check (lib/smp_processor_id.c:67) [ 19.432504][ T65] ? debug_smp_processor_id (lib/smp_processor_id.c:61) [ 19.432510][ T65] ? rcu_is_watching (include/linux/context_tracking.h:128 kernel/rcu/tree.c:745) [ 19.432519][ T65] ? trace_irq_disable (include/trace/events/preemptirq.h:36 (discriminator 21)) [ 19.432529][ T65] ? trace_hardirqs_off_finish (kernel/trace/trace_preemptirq.c:98) [ 19.432537][ T65] ? do_int80_emulation (arch/x86/include/asm/jump_label.h:36 arch/x86/entry/syscall_32.c:148) [ 19.432546][ T65] asm_int80_emulation (arch/x86/include/asm/idtentry.h:626) [ 19.432552][ T65] RIP: 0023:0xf7f8fd24 [ 19.432558][ T65] Code: b8 5b 00 00 00 cd 80 89 d3 3d 01 f0 ff ff 0f 83 b2 ef ff ff c3 90 53 8b 54 24 10 8b 4c 24 0c 8b 5c 24 08 b8 7d 00 00 00 cd 80 <5b> 3d 01 f0 ff ff 0f 83 90 ef ff ff c3 66 90 66 90 66 90 66 90 66 All code ======== 0: b8 5b 00 00 00 mov $0x5b,%eax 5: cd 80 int $0x80 7: 89 d3 mov %edx,%ebx 9: 3d 01 f0 ff ff cmp $0xfffff001,%eax e: 0f 83 b2 ef ff ff jae 0xffffffffffffefc6 14: c3 ret 15: 90 nop 16: 53 push %rbx 17: 8b 54 24 10 mov 0x10(%rsp),%edx 1b: 8b 4c 24 0c mov 0xc(%rsp),%ecx 1f: 8b 5c 24 08 mov 0x8(%rsp),%ebx 23: b8 7d 00 00 00 mov $0x7d,%eax 28: cd 80 int $0x80 2a:* 5b pop %rbx <-- trapping instruction 2b: 3d 01 f0 ff ff cmp $0xfffff001,%eax 30: 0f 83 90 ef ff ff jae 0xffffffffffffefc6 36: c3 ret 37: 66 90 xchg %ax,%ax 39: 66 90 xchg %ax,%ax 3b: 66 90 xchg %ax,%ax 3d: 66 90 xchg %ax,%ax 3f: 66 data16 Code starting with the faulting instruction =========================================== 0: 5b pop %rbx 1: 3d 01 f0 ff ff cmp $0xfffff001,%eax 6: 0f 83 90 ef ff ff jae 0xffffffffffffef9c c: c3 ret d: 66 90 xchg %ax,%ax f: 66 90 xchg %ax,%ax 11: 66 90 xchg %ax,%ax 13: 66 90 xchg %ax,%ax 15: 66 data16 [ 19.432564][ T65] RSP: 002b:00000000ffdee668 EFLAGS: 00000206 ORIG_RAX: 000000000000007d [ 19.432571][ T65] RAX: 0000000000000000 RBX: 00000000f7f21000 RCX: 000000000001b000 [ 19.432575][ T65] RDX: 0000000000000001 RSI: 00000000f7f9e000 RDI: 00000000f7f6d2f0 [ 19.432579][ T65] RBP: 00000000ffdee738 R08: 0000000000000000 R09: 0000000000000000 [ 19.432583][ T65] R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000 [ 19.432586][ T65] R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000 [ 19.432601][ T65] </TASK> [ 19.477057][ T66] BUG: using smp_processor_id() in preemptible [00000000] code: modprobe/66 [ 19.481747][ T66] caller is debug_smp_processor_id (lib/smp_processor_id.c:61) [ 19.484904][ T66] CPU: 1 UID: 0 PID: 66 Comm: modprobe Not tainted 6.16.0-00023-gff797757d658 #1 PREEMPT(none) [ 19.484945][ T66] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.2-debian-1.16.2-1 04/01/2014 [ 19.484963][ T66] Call Trace: [ 19.484975][ T66] <TASK> [ 19.484991][ T66] dump_stack_lvl (lib/dump_stack.c:123) [ 19.485052][ T66] dump_stack (lib/dump_stack.c:130) [ 19.485092][ T66] check_preemption_disabled (arch/x86/include/asm/preempt.h:85 lib/smp_processor_id.c:53) [ 19.485139][ T66] debug_smp_processor_id (lib/smp_processor_id.c:61) [ 19.485176][ T66] task_cache_work (kernel/sched/fair.c:1422) [ 19.485202][ T66] ? __this_cpu_preempt_check (lib/smp_processor_id.c:67) [ 19.485264][ T66] ? lock_is_held (include/linux/lockdep.h:249) [ 19.485307][ T66] ? _raw_spin_unlock_irq (arch/x86/include/asm/paravirt.h:671 include/linux/spinlock_api_smp.h:159 kernel/locking/spinlock.c:202) [ 19.485357][ T66] ? __pfx_task_cache_work (kernel/sched/fair.c:1416) [ 19.485384][ T66] ? __this_cpu_preempt_check (lib/smp_processor_id.c:67) [ 19.485418][ T66] ? lockdep_hardirqs_on (kernel/locking/lockdep.c:4475) [ 19.485468][ T66] task_work_run (kernel/task_work.c:228 (discriminator 1)) [ 19.485513][ T66] ? __pfx_task_work_run (kernel/task_work.c:195) [ 19.485550][ T66] ? preempt_latency_start (include/linux/ftrace.h:1091 kernel/sched/core.c:5866) [ 19.485607][ T66] resume_user_mode_work (arch/x86/include/asm/current.h:25 include/linux/resume_user_mode.h:53) [ 19.485660][ T66] exit_to_user_mode_loop (kernel/entry/common.c:124) [ 19.485700][ T66] do_int80_emulation (include/linux/entry-common.h:332 include/linux/entry-common.h:414 include/linux/entry-common.h:449 arch/x86/entry/syscall_32.c:175) [ 19.485758][ T66] ? __lock_acquire (kernel/locking/lockdep.c:5240) [ 19.485821][ T66] ? find_held_lock (kernel/locking/lockdep.c:5353) [ 19.485871][ T66] ? vtime_user_exit (kernel/sched/cputime.c:737) [ 19.485924][ T66] ? vtime_user_exit (kernel/sched/cputime.c:737) [ 19.485976][ T66] ? __this_cpu_preempt_check (lib/smp_processor_id.c:67) [ 19.486035][ T66] ? debug_smp_processor_id (lib/smp_processor_id.c:61) [ 19.486070][ T66] ? rcu_is_watching (include/linux/context_tracking.h:128 kernel/rcu/tree.c:745) [ 19.486111][ T66] ? trace_irq_disable (include/trace/events/preemptirq.h:36 (discriminator 21)) [ 19.486159][ T66] ? trace_hardirqs_off_finish (kernel/trace/trace_preemptirq.c:98) [ 19.486198][ T66] ? do_int80_emulation (arch/x86/include/asm/jump_label.h:36 arch/x86/entry/syscall_32.c:148) [ 19.486244][ T66] asm_int80_emulation (arch/x86/include/asm/idtentry.h:626) [ 19.486274][ T66] RIP: 0023:0xf7f82cb0 [ 19.486300][ T66] Code: 4c 24 34 89 44 24 0c 8b 44 24 44 8b 54 24 38 8b 74 24 3c 8b 7c 24 40 a9 ff 0f 00 00 75 1c c1 e8 0c 89 c5 b8 c0 00 00 00 cd 80 <3d> 00 f0 ff ff 77 21 83 c4 1c 5b 5e 5f 5d c3 90 83 c4 1c b8 ea ff All code ======== 0: 4c 24 34 rex.WR and $0x34,%al 3: 89 44 24 0c mov %eax,0xc(%rsp) 7: 8b 44 24 44 mov 0x44(%rsp),%eax b: 8b 54 24 38 mov 0x38(%rsp),%edx f: 8b 74 24 3c mov 0x3c(%rsp),%esi 13: 8b 7c 24 40 mov 0x40(%rsp),%edi 17: a9 ff 0f 00 00 test $0xfff,%eax 1c: 75 1c jne 0x3a 1e: c1 e8 0c shr $0xc,%eax 21: 89 c5 mov %eax,%ebp 23: b8 c0 00 00 00 mov $0xc0,%eax 28: cd 80 int $0x80 2a:* 3d 00 f0 ff ff cmp $0xfffff000,%eax <-- trapping instruction 2f: 77 21 ja 0x52 31: 83 c4 1c add $0x1c,%esp 34: 5b pop %rbx 35: 5e pop %rsi 36: 5f pop %rdi 37: 5d pop %rbp 38: c3 ret 39: 90 nop 3a: 83 c4 1c add $0x1c,%esp 3d: b8 .byte 0xb8 3e: ea (bad) 3f: ff .byte 0xff Code starting with the faulting instruction =========================================== 0: 3d 00 f0 ff ff cmp $0xfffff000,%eax 5: 77 21 ja 0x28 7: 83 c4 1c add $0x1c,%esp a: 5b pop %rbx b: 5e pop %rsi c: 5f pop %rdi d: 5d pop %rbp e: c3 ret f: 90 nop 10: 83 c4 1c add $0x1c,%esp 13: b8 .byte 0xb8 14: ea (bad) 15: ff .byte 0xff [ 19.486327][ T66] RSP: 002b:00000000ff907830 EFLAGS: 00000246 ORIG_RAX: 00000000000000c0 [ 19.486359][ T66] RAX: 00000000f7f34000 RBX: 0000000000000000 RCX: 000000000002b148 [ 19.486380][ T66] RDX: 0000000000000001 RSI: 0000000000000802 RDI: 0000000000000000 [ 19.486399][ T66] RBP: 0000000000000000 R08: 0000000000000000 R09: 0000000000000000 [ 19.486418][ T66] R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000 [ 19.486437][ T66] R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000 [ 19.486519][ T66] </TASK> [ 19.544246][ T66] BUG: using smp_processor_id() in preemptible [00000000] code: modprobe/66 [ 19.545273][ T66] caller is debug_smp_processor_id (lib/smp_processor_id.c:61) [ 19.545971][ T66] CPU: 1 UID: 0 PID: 66 Comm: modprobe Not tainted 6.16.0-00023-gff797757d658 #1 PREEMPT(none) [ 19.545981][ T66] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.2-debian-1.16.2-1 04/01/2014 [ 19.545985][ T66] Call Trace: [ 19.545988][ T66] <TASK> [ 19.545992][ T66] dump_stack_lvl (lib/dump_stack.c:123) [ 19.546007][ T66] dump_stack (lib/dump_stack.c:130) [ 19.546016][ T66] check_preemption_disabled (arch/x86/include/asm/preempt.h:85 lib/smp_processor_id.c:53) [ 19.546027][ T66] debug_smp_processor_id (lib/smp_processor_id.c:61) [ 19.546035][ T66] task_cache_work (kernel/sched/fair.c:1422) [ 19.546046][ T66] ? find_held_lock (kernel/locking/lockdep.c:5353) [ 19.546060][ T66] ? _raw_spin_unlock_irq (arch/x86/include/asm/paravirt.h:671 include/linux/spinlock_api_smp.h:159 kernel/locking/spinlock.c:202) [ 19.546072][ T66] ? __pfx_task_cache_work (kernel/sched/fair.c:1416) [ 19.546078][ T66] ? __this_cpu_preempt_check (lib/smp_processor_id.c:67) [ 19.546086][ T66] ? lockdep_hardirqs_on (kernel/locking/lockdep.c:4475) [ 19.546098][ T66] task_work_run (kernel/task_work.c:228 (discriminator 1)) [ 19.546108][ T66] ? __pfx_task_work_run (kernel/task_work.c:195) [ 19.546122][ T66] resume_user_mode_work (arch/x86/include/asm/current.h:25 include/linux/resume_user_mode.h:53) [ 19.546135][ T66] exit_to_user_mode_loop (kernel/entry/common.c:124) [ 19.546144][ T66] do_int80_emulation (include/linux/entry-common.h:332 include/linux/entry-common.h:414 include/linux/entry-common.h:449 arch/x86/entry/syscall_32.c:175) [ 19.546155][ T66] ? debug_smp_processor_id (lib/smp_processor_id.c:61) [ 19.546163][ T66] ? rcu_is_watching (include/linux/context_tracking.h:128 kernel/rcu/tree.c:745) [ 19.546173][ T66] ? trace_irq_disable (include/trace/events/preemptirq.h:36 (discriminator 21)) [ 19.546184][ T66] ? trace_hardirqs_off_finish (kernel/trace/trace_preemptirq.c:98) [ 19.546193][ T66] ? do_int80_emulation (arch/x86/include/asm/jump_label.h:36 arch/x86/entry/syscall_32.c:148) [ 19.546203][ T66] asm_int80_emulation (arch/x86/include/asm/idtentry.h:626) [ 19.546211][ T66] RIP: 0023:0xf7f82cb0 [ 19.546218][ T66] Code: 4c 24 34 89 44 24 0c 8b 44 24 44 8b 54 24 38 8b 74 24 3c 8b 7c 24 40 a9 ff 0f 00 00 75 1c c1 e8 0c 89 c5 b8 c0 00 00 00 cd 80 <3d> 00 f0 ff ff 77 21 83 c4 1c 5b 5e 5f 5d c3 90 83 c4 1c b8 ea ff All code ======== 0: 4c 24 34 rex.WR and $0x34,%al 3: 89 44 24 0c mov %eax,0xc(%rsp) 7: 8b 44 24 44 mov 0x44(%rsp),%eax b: 8b 54 24 38 mov 0x38(%rsp),%edx f: 8b 74 24 3c mov 0x3c(%rsp),%esi 13: 8b 7c 24 40 mov 0x40(%rsp),%edi 17: a9 ff 0f 00 00 test $0xfff,%eax 1c: 75 1c jne 0x3a 1e: c1 e8 0c shr $0xc,%eax 21: 89 c5 mov %eax,%ebp 23: b8 c0 00 00 00 mov $0xc0,%eax 28: cd 80 int $0x80 2a:* 3d 00 f0 ff ff cmp $0xfffff000,%eax <-- trapping instruction 2f: 77 21 ja 0x52 31: 83 c4 1c add $0x1c,%esp 34: 5b pop %rbx 35: 5e pop %rsi 36: 5f pop %rdi 37: 5d pop %rbp 38: c3 ret 39: 90 nop 3a: 83 c4 1c add $0x1c,%esp 3d: b8 .byte 0xb8 3e: ea (bad) 3f: ff .byte 0xff Code starting with the faulting instruction =========================================== 0: 3d 00 f0 ff ff cmp $0xfffff000,%eax 5: 77 21 ja 0x28 7: 83 c4 1c add $0x1c,%esp a: 5b pop %rbx b: 5e pop %rsi c: 5f pop %rdi d: 5d pop %rbp e: c3 ret f: 90 nop 10: 83 c4 1c add $0x1c,%esp 13: b8 .byte 0xb8 14: ea (bad) 15: ff .byte 0xff [ 19.546225][ T66] RSP: 002b:00000000ff907810 EFLAGS: 00000246 ORIG_RAX: 00000000000000c0 [ 19.546233][ T66] RAX: 00000000f7c6b000 RBX: 0000000000000000 RCX: 00000000002c8ae0 [ 19.546238][ T66] RDX: 0000000000000001 RSI: 0000000000000802 RDI: 0000000000000000 [ 19.546243][ T66] RBP: 0000000000000000 R08: 0000000000000000 R09: 0000000000000000 [ 19.546247][ T66] R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000 [ 19.546252][ T66] R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000 [ 19.546269][ T66] </TASK> The kernel config and materials to reproduce are available at: https://download.01.org/0day-ci/archive/20250812/202508120315.19f6266a-lkp@intel.com -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki
On 8/12/2025 9:59 AM, kernel test robot wrote: > > > [ 19.177186][ T64] BUG: using smp_processor_id() in preemptible [00000000] code: modprobe/64 > [ 19.179622][ T64] caller is debug_smp_processor_id (lib/smp_processor_id.c:61) > [ 19.181347][ T64] CPU: 0 UID: 0 PID: 64 Comm: modprobe Not tainted 6.16.0-00023-gff797757d658 #1 PREEMPT(none) > [ 19.181372][ T64] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.2-debian-1.16.2-1 04/01/2014 > [ 19.181385][ T64] Call Trace: > [ 19.181391][ T64] <TASK> > [ 19.181401][ T64] dump_stack_lvl (lib/dump_stack.c:123) > [ 19.181440][ T64] dump_stack (lib/dump_stack.c:130) > [ 19.181465][ T64] check_preemption_disabled (arch/x86/include/asm/preempt.h:85 lib/smp_processor_id.c:53) > [ 19.181494][ T64] debug_smp_processor_id (lib/smp_processor_id.c:61) > [ 19.181514][ T64] task_cache_work (kernel/sched/fair.c:1422) Thanks for the report, will use get_cpu() in next version. thanks, Chenyu
© 2016 - 2025 Red Hat, Inc.