All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mike Galbraith <efault@gmx.de>
To: Sebastian Andrzej Siewior <bigeasy@linutronix.de>,
	Thomas Gleixner <tglx@linutronix.de>
Cc: LKML <linux-kernel@vger.kernel.org>,
	linux-rt-users <linux-rt-users@vger.kernel.org>,
	Steven Rostedt <rostedt@goodmis.org>
Subject: [rt-patch 1/3] arm64/acpi/perf: move pmu allocation to an early CPU up hook
Date: Sat, 28 Jul 2018 11:13:55 +0200	[thread overview]
Message-ID: <1532769235.5926.0.camel@gmx.de> (raw)
In-Reply-To: <1532768831.9882.71.camel@gmx.de>


RT cannot allocate while irqs are disabled.

  BUG: sleeping function called from invalid context at kernel/locking/rtmutex.c:974
  in_atomic(): 0, irqs_disabled(): 128, pid: 25, name: cpuhp/0
  CPU: 0 PID: 25 Comm: cpuhp/0 Not tainted 4.16.18-rt10-rt #2
  Hardware name: Huawei TaiShan 2280 /BC11SPCD, BIOS 1.32 08/22/2017
  Call trace:
   dump_backtrace+0x0/0x188
   show_stack+0x24/0x30
   dump_stack+0x9c/0xd0
   ___might_sleep+0x124/0x188
   rt_spin_lock+0x40/0x80
   pcpu_alloc+0x104/0x7a0
   __alloc_percpu_gfp+0x38/0x48
   __armpmu_alloc+0x44/0x168
   armpmu_alloc_atomic+0x1c/0x28
   arm_pmu_acpi_cpu_starting+0x1cc/0x210
   cpuhp_invoke_callback+0xb8/0x820
   cpuhp_thread_fun+0xc0/0x1e0
   smpboot_thread_fn+0x1ac/0x2c8
   kthread+0x134/0x138
   ret_from_fork+0x10/0x18

Move the allocation to CPUHP_BP_PREPARE_DYN, where we'll be preemptible,
thus no longer needing GFP_ATOMIC.

Signed-off-by: Mike Galbraith <efault@gmx.de>
---
 drivers/perf/arm_pmu_acpi.c |    6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

--- a/drivers/perf/arm_pmu_acpi.c
+++ b/drivers/perf/arm_pmu_acpi.c
@@ -135,10 +135,10 @@ static struct arm_pmu *arm_pmu_acpi_find
 		return pmu;
 	}
 
-	pmu = armpmu_alloc_atomic();
+	pmu = armpmu_alloc();
 	if (!pmu) {
 		pr_warn("Unable to allocate PMU for CPU%d\n",
-			smp_processor_id());
+			raw_smp_processor_id());
 		return NULL;
 	}
 
@@ -283,7 +283,7 @@ static int arm_pmu_acpi_init(void)
 	if (ret)
 		return ret;
 
-	ret = cpuhp_setup_state(CPUHP_AP_PERF_ARM_ACPI_STARTING,
+	ret = cpuhp_setup_state(CPUHP_BP_PREPARE_DYN,
 				"perf/arm/pmu_acpi:starting",
 				arm_pmu_acpi_cpu_starting, NULL);
 

  reply	other threads:[~2018-07-28  9:13 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-07-27 21:57 [ANNOUNCE] v4.16.18-rt11 Sebastian Andrzej Siewior
2018-07-28  9:07 ` candidates for @devel-rt localversion-rt++ Mike Galbraith
2018-07-28  9:13   ` Mike Galbraith [this message]
2018-08-02 13:45     ` [rt-patch 1/3 v2] arm64/acpi/perf: move pmu allocation to an early CPU up hook Mike Galbraith
2018-07-29  6:55   ` candidates for @devel-rt localversion-rt++ Mike Galbraith
2018-07-29 11:47     ` Mike Galbraith
2018-07-30 16:24       ` Mike Galbraith
2018-07-31 18:28         ` bisected - arm64 kvm unit test failures Mike Galbraith
2018-08-01  5:35           ` Marc Zyngier
2018-08-01  6:02             ` Mike Galbraith
2018-08-01  7:22               ` Marc Zyngier
2018-08-01  7:48                 ` Mike Galbraith
2018-08-01  9:20                 ` Mike Galbraith
2018-08-21 15:34           ` Marc Zyngier
2018-08-22 13:38             ` Mike Galbraith
2018-08-22 13:50               ` Marc Zyngier
2018-08-22 13:57                 ` Mike Galbraith
     [not found] ` <1532764179.9882.14.camel@gmx.de>
2018-07-28  9:07   ` [rt-patch 2/3] sched: Introduce raw_cond_resched_lock() Mike Galbraith
2018-07-28  9:07   ` [rt-patch 3/3] arm, KVM: convert vgic_irq.irq_lock to raw_spinlock_t Mike Galbraith
2018-07-30  9:27     ` Peter Zijlstra
2018-07-30 13:34       ` Mike Galbraith
2018-08-02  6:56     ` [rt-patch 4/3] arm,KVM: Move phys_timer handling to hard irq context Mike Galbraith
2018-08-02 16:31       ` Steven Rostedt
2018-08-02 16:50         ` Mike Galbraith
2018-08-02 17:43           ` Mike Galbraith
2018-08-04 12:25             ` Mike Galbraith
2018-08-05  4:52               ` Mike Galbraith
2018-08-07 14:46                 ` Sebastian Andrzej Siewior

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1532769235.5926.0.camel@gmx.de \
    --to=efault@gmx.de \
    --cc=bigeasy@linutronix.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-rt-users@vger.kernel.org \
    --cc=rostedt@goodmis.org \
    --cc=tglx@linutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.