From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932486AbcAKJ5v (ORCPT ); Mon, 11 Jan 2016 04:57:51 -0500 Received: from foss.arm.com ([217.140.101.70]:53840 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932358AbcAKJ5t (ORCPT ); Mon, 11 Jan 2016 04:57:49 -0500 Date: Mon, 11 Jan 2016 09:59:25 +0000 From: Lorenzo Pieralisi To: Zhaoyang Huang Cc: zhaoyang.huang@spreadtrum.com, catalin.marinas@arm.com, will.deacon@arm.com, linux-kernel@vger.kernel.org, hanjun.guo@linaro.org, suzuki.poulose@arm.com Subject: Re: [RFC PATCH] Add IPI entry for CPU UP Message-ID: <20160111095925.GA17852@red-moon> References: <1452496240-21060-1-git-send-email-zhaoyang.huang@spreadtrum.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1452496240-21060-1-git-send-email-zhaoyang.huang@spreadtrum.com> 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 On Mon, Jan 11, 2016 at 03:10:40PM +0800, Zhaoyang Huang wrote: > In some ARM SOCs, IPI interrupt is used for hotplug in one cpu, that is, > sending a IPI to the core in WFI and powerdown status. So Add a IPI > entry for handle this kind of cpu up interrupt On arm64 SOCs, with a mainline kernel, you can only hotplug CPUs out and back in by using the PSCI firmware interface, which does not require an IPI to boot a CPU, therefore this patch is useless. Lorenzo > Signed-off-by: Zhaoyang Huang > --- > arch/arm64/kernel/smp.c | 10 ++++++++++ > 1 file changed, 10 insertions(+) > > diff --git a/arch/arm64/kernel/smp.c b/arch/arm64/kernel/smp.c > index b1adc51..20e63c9 100644 > --- a/arch/arm64/kernel/smp.c > +++ b/arch/arm64/kernel/smp.c > @@ -70,6 +70,7 @@ enum ipi_msg_type { > IPI_CPU_STOP, > IPI_TIMER, > IPI_IRQ_WORK, > + IPI_CPU_UP, > }; > > /* > @@ -627,6 +628,7 @@ static const char *ipi_types[NR_IPI] __tracepoint_string = { > S(IPI_CPU_STOP, "CPU stop interrupts"), > S(IPI_TIMER, "Timer broadcast interrupts"), > S(IPI_IRQ_WORK, "IRQ work interrupts"), > + S(IPI_CPU_UP, "Hotplug cpu up by ipi"), > }; > > static void smp_cross_call(const struct cpumask *target, unsigned int ipinr) > @@ -746,6 +748,8 @@ void handle_IPI(int ipinr, struct pt_regs *regs) > irq_exit(); > break; > #endif > + case IPI_CPU_UP: > + break; > > default: > pr_crit("CPU%u: Unknown IPI message 0x%x\n", cpu, ipinr); > @@ -798,3 +802,9 @@ int setup_profiling_timer(unsigned int multiplier) > { > return -EINVAL; > } > + > +void smp_send_cpuup(int cpu) > +{ > + smp_cross_call(cpumask_of(cpu), IPI_CPU_UP); > +} > + > -- > 1.7.9.5 >