Re: [PATCH] perf: arm_pmu_acpi: Fix armpmu_alloc call from invalid context

From: Mark Rutland
Date: Mon Feb 26 2018 - 08:05:50 EST


On Thu, Feb 08, 2018 at 12:58:20PM -0500, Mark Salter wrote:
> On Thu, 2018-02-08 at 17:54 +0000, Mark Rutland wrote:
> > Hi Mark,
> >
> > On Thu, Feb 08, 2018 at 12:45:04PM -0500, Mark Salter wrote:
> > > When booting an arm64 debug kernel with ACPI, I see:
> > >
> > > BUG: sleeping function called from invalid context at mm/slab.h:420
> > > in_atomic(): 0, irqs_disabled(): 128, pid: 12, name: cpuhp/0
> > > 1 lock held by cpuhp/0/12:
> > > #0: (cpuhp_state-up){+.+.}, at: [<0000000057aa0dae>] cpuhp_thread_fun+0x13c/0x258
> > > irq event stamp: 28
> > > hardirqs last enabled at (27): [<000000000b861658>] _raw_spin_unlock_irq+0x38/0x58
> > > hardirqs last disabled at (28): [<000000006231cfb1>] cpuhp_thread_fun+0xd0/0x258
> > > softirqs last enabled at (0): [<0000000054d9737a>] copy_process.isra.32.part.33+0x450/0x1480
> > > softirqs last disabled at (0): [< (null)>] (null)
> > > CPU: 0 PID: 12 Comm: cpuhp/0 Not tainted 4.15.0+ #18
> > > Hardware name: AppliedMicro X-Gene Mustang Board/X-Gene Mustang Board, BIOS 3.06.25 Oct 17 2016
> > > Call trace:
> > > dump_backtrace+0x0/0x188
> > > show_stack+0x24/0x2c
> > > dump_stack+0xa4/0xe0
> > > ___might_sleep+0x208/0x234
> > > __might_sleep+0x58/0x8c
> > > kmem_cache_alloc_trace+0x248/0x3e0
> > > armpmu_alloc+0x38/0x1a8
> > > arm_pmu_acpi_cpu_starting+0x11c/0x15c
> > > cpuhp_invoke_callback+0x120/0x100c
> > > cpuhp_thread_fun+0xe8/0x258
> > > smpboot_thread_fn+0x170/0x268
> > > kthread+0x110/0x13c
> > > ret_from_fork+0x10/0x18
> >
> > I have patches to address this:
> >
> > http://lists.infradead.org/pipermail/linux-arm-kernel/2018-February/557838.html
> > https://git.kernel.org/pub/scm/linux/kernel/git/mark/linux.git/log/?h=arm64/acpi-pmu-lockdep
>
> Awesome, I completely missed that. Thanks.

As a heads-up, these were merged in v4.16-rc3.

Mark.