Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752431AbdIFI7c (ORCPT ); Wed, 6 Sep 2017 04:59:32 -0400 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]:50067 "EHLO mx0a-001b2d01.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752256AbdIFI72 (ORCPT ); Wed, 6 Sep 2017 04:59:28 -0400 MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII; format=flowed Content-Transfer-Encoding: 7bit Date: Wed, 06 Sep 2017 14:32:14 +0530 From: pavrampu To: "Gautham R. Shenoy" Cc: Michael Ellerman , Nicholas Piggin , Vaidyanathan Srinivasan , Shilpasri G Bhat , Akshay Adiga , Pavithra Prakash , linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] powerpc/powernv: Clear LPCR[PECE1] via stop-api only for deep state offline In-Reply-To: <1504180061-32345-1-git-send-email-ego@linux.vnet.ibm.com> References: <1504180061-32345-1-git-send-email-ego@linux.vnet.ibm.com> User-Agent: Roundcube Webmail/1.0.1 X-TM-AS-GCONF: 00 x-cbid: 17090608-0008-0000-0000-0000027A0BF4 X-IBM-SpamModules-Scores: X-IBM-SpamModules-Versions: BY=3.00007676; HX=3.00000241; KW=3.00000007; PH=3.00000004; SC=3.00000226; SDB=6.00912997; UDB=6.00458189; IPR=6.00693259; BA=6.00005573; NDR=6.00000001; ZLA=6.00000005; ZF=6.00000009; ZB=6.00000000; ZP=6.00000000; ZH=6.00000000; ZU=6.00000002; MB=3.00017028; XFM=3.00000015; UTC=2017-09-06 08:59:11 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 17090608-0009-0000-0000-0000369ACDD6 Message-Id: <40a9c8f5d12d3885c1e54b9e4835eb25@linux.vnet.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2017-09-06_03:,, signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=0 malwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1707230000 definitions=main-1709060123 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2081 Lines: 55 On 2017-08-31 17:17, Gautham R. Shenoy wrote: > From: "Gautham R. Shenoy" > > commit 24be85a23d1f ("powerpc/powernv: Clear PECE1 in LPCR via > stop-api only on Hotplug") clears the PECE1 bit of the LPCR via > stop-api during CPU-Hotplug to prevent wakeup due to a decrementer on > an offlined CPU which is in a deep stop state. > > In the case where the stop-api support is found to be lacking, the > commit 785a12afdb4a ("powerpc/powernv/idle: Disable LOSE_FULL_CONTEXT > states when stop-api fails") disables deep states that lose hypervisor > context. Thus in this case, the offlined CPU will be put to some > shallow idle state. > > However, we currently unconditionally clear the PECE1 in LPCR via > stop-api during CPU-Hotplug even when deep states are disabled due to > stop-api failure. > > Fix this by clearing PECE1 of LPCR via stop-api during CPU-Hotplug > *only* when the offlined CPU will be put to a deep state that loses > hypervisor context. > > Fixes: commit 24be85a23d1f ("powerpc/powernv: Clear PECE1 in LPCR via > stop-api only on Hotplug") > > Reported-by: Pavithra Prakash > Signed-off-by: Gautham R. Shenoy Tested-by: Pavithra Prakash > --- > arch/powerpc/platforms/powernv/idle.c | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/arch/powerpc/platforms/powernv/idle.c > b/arch/powerpc/platforms/powernv/idle.c > index 9f59041..23f8fba 100644 > --- a/arch/powerpc/platforms/powernv/idle.c > +++ b/arch/powerpc/platforms/powernv/idle.c > @@ -393,7 +393,13 @@ static void pnv_program_cpu_hotplug_lpcr(unsigned > int cpu, u64 lpcr_val) > u64 pir = get_hard_smp_processor_id(cpu); > > mtspr(SPRN_LPCR, lpcr_val); > - opal_slw_set_reg(pir, SPRN_LPCR, lpcr_val); > + > + /* > + * Program the LPCR via stop-api only for deepest stop state > + * can lose hypervisor context. > + */ > + if (supported_cpuidle_states & OPAL_PM_LOSE_FULL_CONTEXT) > + opal_slw_set_reg(pir, SPRN_LPCR, lpcr_val); > } > > /*