From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S968840AbdDSRz3 (ORCPT ); Wed, 19 Apr 2017 13:55:29 -0400 Received: from foss.arm.com ([217.140.101.70]:45734 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S968825AbdDSRz1 (ORCPT ); Wed, 19 Apr 2017 13:55:27 -0400 Date: Wed, 19 Apr 2017 18:54:55 +0100 From: Mark Rutland To: Thomas Gleixner Cc: LKML , Peter Zijlstra , Ingo Molnar , Steven Rostedt , Sebastian Siewior , Will Deacon , Russell King , linux-arm-kernel@lists.infradead.org Subject: Re: [patch V2 11/24] ARM/hw_breakpoint: Use cpuhp_setup_state_cpuslocked() Message-ID: <20170419175454.GM27829@leverpostej> References: <20170418170442.665445272@linutronix.de> <20170418170553.274229815@linutronix.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20170418170553.274229815@linutronix.de> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, On Tue, Apr 18, 2017 at 07:04:53PM +0200, Thomas Gleixner wrote: > From: Sebastian Andrzej Siewior > > arch_hw_breakpoint_init() holds get_online_cpus() while registerring the > hotplug callbacks. > > cpuhp_setup_state() invokes get_online_cpus() as well. This is correct, but > prevents the conversion of the hotplug locking to a percpu rwsem. > > Use cpuhp_setup_state_cpuslocked() to avoid the nested call. > > Signed-off-by: Sebastian Andrzej Siewior > Signed-off-by: Thomas Gleixner > Cc: Will Deacon > Cc: Mark Rutland > Cc: Russell King > Cc: linux-arm-kernel@lists.infradead.org > > --- > arch/arm/kernel/hw_breakpoint.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > --- a/arch/arm/kernel/hw_breakpoint.c > +++ b/arch/arm/kernel/hw_breakpoint.c > @@ -1098,8 +1098,9 @@ static int __init arch_hw_breakpoint_ini > * assume that a halting debugger will leave the world in a nice state > * for us. > */ > - ret = cpuhp_setup_state(CPUHP_AP_ONLINE_DYN, "arm/hw_breakpoint:online", > - dbg_reset_online, NULL); > + ret = cpuhp_setup_state_cpuslocked(CPUHP_AP_ONLINE_DYN, > + "arm/hw_breakpoint:online", > + dbg_reset_online, NULL); Given the callsite, this particular change looks ok to me. So FWIW: Acked-by: Mark Rutland However, as a more general note, the changes make the API feel odd. per their current names, {get,put}_online_cpus() sound/feel like refcounting ops, which should be able to nest. Is there any chance these could get a better name, e.g. {lock,unlock}_online_cpus(), so as to align with _cpuslocked? Thanks, Mark.