[SPLAT 2/3] irqchip/gic-v3-its: Sleeping spinlocks down gic_reserve_range()

Valentin Schneider
2021-08-10T13:42:56Z

[ 0.134518] BUG: sleeping function called from invalid context at kernel/locking/spinlock_rt.c:35
[ 0.134520] in_atomic(): 1, irqs_disabled(): 128, non_block: 0, pid: 0, name: swapper/1
[ 0.134522] 1 lock held by swapper/1/0:
[ 0.134523] #0: ffff008f3624f728 ((lock).lock){+.+.}-{2:2}, at: get_page_from_freelist (mm/page_alloc.c:3673 mm/page_alloc.c:3704 mm/page_alloc.c:4166)
[ 0.134533] irq event stamp: 0
[ 0.134534] hardirqs last enabled at (0): 0x0
[ 0.134538] hardirqs last disabled at (0): copy_process (./include/linux/lockdep.h:195 ./include/linux/lockdep.h:202 ./include/linux/lockdep.h:208 ./include/linux/seqlock.h:78 kernel/fork.c:2084)
[ 0.134542] softirqs last enabled at (0): copy_process (./include/linux/lockdep.h:195 ./include/linux/lockdep.h:202 ./include/linux/lockdep.h:208 ./include/linux/seqlock.h:78 kernel/fork.c:2084)
[ 0.134545] softirqs last disabled at (0): 0x0
[ 0.134547] Preemption disabled at:
[ 0.134547] rt_mutex_slowunlock (kernel/locking/rtmutex.c:1223)
[ 0.134552] CPU: 1 PID: 0 Comm: swapper/1 Not tainted 5.14.0-rc4-rt6-torture+ #56
[ 0.134555] Call trace:
[ 0.134556] dump_backtrace (arch/arm64/kernel/stacktrace.c:151)
[ 0.134558] show_stack (arch/arm64/kernel/stacktrace.c:217)
[ 0.134559] dump_stack_lvl (lib/dump_stack.c:106)
[ 0.134563] dump_stack (lib/dump_stack.c:113)
[ 0.134565] ___might_sleep (kernel/sched/core.c:9306)
[ 0.134567] rt_spin_lock (kernel/locking/rtmutex.c:1641 (discriminator 4) kernel/locking/spinlock_rt.c:30 (discriminator 4) kernel/locking/spinlock_rt.c:36 (discriminator 4) kernel/locking/spinlock_rt.c:44 (discriminator 4))
[ 0.134569] get_page_from_freelist (mm/page_alloc.c:3673 mm/page_alloc.c:3704 mm/page_alloc.c:4166)
[ 0.134571] __alloc_pages (mm/page_alloc.c:5391)
[ 0.134573] alloc_page_interleave (mm/mempolicy.c:2119)
[ 0.134576] alloc_pages (mm/mempolicy.c:2249)
[ 0.134577] new_slab (mm/slub.c:1740 mm/slub.c:1877 mm/slub.c:1940)
[ 0.134580] ___slab_alloc (mm/slub.c:2951)
[ 0.134582] __slab_alloc.isra.0 (mm/slub.c:3038)
[ 0.134584] kmem_cache_alloc_trace (mm/slub.c:3129 mm/slub.c:3171 mm/slub.c:3188)
[ 0.134587] efi_mem_reserve_iomem (drivers/firmware/efi/efi.c:905)
[ 0.134590] efi_mem_reserve_persistent (drivers/firmware/efi/efi.c:952)
[ 0.134593] its_cpu_init (drivers/irqchip/irq-gic-v3-its.c:3074 drivers/irqchip/irq-gic-v3-its.c:5196)
[ 0.134596] gic_starting_cpu (drivers/irqchip/irq-gic.c:798)
[ 0.134599] cpuhp_invoke_callback (kernel/cpu.c:180)
[ 0.134601] cpuhp_invoke_callback_range (kernel/cpu.c:656)
[ 0.134603] notify_cpu_starting (kernel/cpu.c:1270)
[ 0.134605] secondary_start_kernel (arch/arm64/kernel/smp.c:243)
[ 0.134608] __secondary_switched (arch/arm64/kernel/head.S:661)