VM_WARN_ON in switch_mm_irqs_off() when offlining a CPU
Nobody has claimed this yet.
- Dominant language
- No language data
- Stars
- 14
- Forks
- 0
- PR merge metrics
- No merged PRs in 30d
Description
The `VM_WARN_ON()` in `switch_mm_irqs_off()` added by commit torvalds/linux@177255afb40548fdf504384b361d18d6cbe35d1e
some times fires when offling a CPU:
```
# echo 0 > /sys/devices/system/cpu/cpu1/online^Mecho 0 > /sys/devices/system/cpu/cpu1/online
[ 3.278821][ T0] ------------[ cut here ]------------
[ 3.278823][ T0] WARNING: CPU: 1 PID: 0 at arch/powerpc/mm/mmu_context.c:106 switch_mm_irqs_off+0x120/0x150
[ 3.278834][ T0] Modules linked in:
[ 3.278837][ T0] CPU: 1 PID: 0 Comm: swapper/1 Not tainted 6.6.0-rc2 #410
[ 3.278841][ T0] Hardware name: IBM pSeries (emulated by qemu) POWER9 (raw) 0x4e1202 0xf000004 of:SLOF,HEAD hv:linux,kvm pSeries
[ 3.278844][ T0] NIP: c00000000008c6d0 LR: c00000000008c6b8 CTR: 0000000000000000
[ 3.278847][ T0] REGS: c0000000049bfb50 TRAP: 0700 Not tainted (6.6.0-rc2)
[ 3.278850][ T0] MSR: 8000000002823033 CR: 2800020a XER: 00000000
[ 3.278866][ T0] CFAR: c00000000008c690 IRQMASK: 3
[ 3.278866][ T0] GPR00: c00000000008c6b8 c0000000049bfdf0 c000000001578a00 c0000000fffff408
[ 3.278866][ T0] GPR04: c000000002a10b22 000000000000000a 0000000000000000 0000000000000000
[ 3.278866][ T0] GPR08: 0000000000000000 0000000000000000 0000000000000003 0000000000000000
[ 3.278866][ T0] GPR12: c0000000000fbed0 c0000000fffff300 0000000000000000 0000000000000000
[ 3.278866][ T0] GPR16: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
[ 3.278866][ T0] GPR20: 0000000000000000 0000000000000000 0000000000000000 0000000000000001
[ 3.278866][ T0] GPR24: 0000000000000001 0000000000000000 0000000000000000 c0000000029a13f4
[ 3.278866][ T0] GPR28: 0000000000000001 0000000000000000 0000000000000001 c000000006fb6e00
[ 3.278920][ T0] NIP [c00000000008c6d0] switch_mm_irqs_off+0x120/0x150
[ 3.278926][ T0] LR [c00000000008c6b8] switch_mm_irqs_off+0x108/0x150
[ 3.278931][ T0] Call Trace:
[ 3.278932][ T0] [c0000000049bfdf0] [c00000000008c6b8] switch_mm_irqs_off+0x108/0x150 (unreliable)
[ 3.278939][ T0] [c0000000049bfe30] [c0000000001a7dc0] idle_task_exit+0x90/0xc0
[ 3.278946][ T0] [c0000000049bfe60] [c0000000000fbf00] pseries_cpu_offline_self+0x30/0xf0
[ 3.278952][ T0] [c0000000049bfed0] [c00000000005c7b4] arch_cpu_idle_dead+0x44/0x50
[ 3.278958][ T0] [c0000000049bfef0] [c0000000001cb114] do_idle+0x284/0x390
[ 3.278963][ T0] [c0000000049bff60] [c0000000001cb4c0] cpu_startup_entry+0x40/0x50
[ 3.278969][ T0] [c0000000049bff90] [c00000000005c21c] start_secondary+0x29c/0x2b0
[ 3.278975][ T0] [c0000000049bffe0] [c00000000000e258] start_secondary_prolog+0x10/0x14
[ 3.278980][ T0] Code: eba1ffe8 ebc1fff0 ebe1fff8 4e800020 7ca32b78 48009425 60000000 4bffffc4 0fe00000 4bffff44 60000000 60420000 <0fe00000> e8010050 7c0803a6 4bffffc0
[ 3.279001][ T0] ---[ end trace 0000000000000000 ]---
```
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start in arch/powerpc/mm/mmu_context.c at switch_mm_irqs_off(), then trace the idle_task_exit and pseries_cpu_offline_self path shown in the report. Reproduce CPU offlining with the provided /sys/devices/system/cpu/cpu1/online command and investigate why the VM_WARN_ON fires; done means offlining no longer emits this warning.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- c, linux
- Domain
- operating-systems
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100