Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755127AbdCTP4I (ORCPT ); Mon, 20 Mar 2017 11:56:08 -0400 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]:39512 "EHLO mx0a-001b2d01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753296AbdCTPzZ (ORCPT ); Mon, 20 Mar 2017 11:55:25 -0400 From: "Gautham R. Shenoy" To: Michael Ellerman , Michael Neuling , Benjamin Herrenschmidt , "Shreyas B. Prabhu" , Shilpasri G Bhat , Vaidyanathan Srinivasan , Anton Blanchard , Balbir Singh , Akshay Adiga , Nicholas Piggin Cc: linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org, "Gautham R. Shenoy" Subject: [v2 PATCH 0/4] powernv:idle: Fixes for CPU-Hotplug on POWER DD1.0 Date: Mon, 20 Mar 2017 21:24:14 +0530 X-Mailer: git-send-email 1.8.3.1 X-TM-AS-GCONF: 00 x-cbid: 17032015-0044-0000-0000-000002DFCC9E X-IBM-SpamModules-Scores: X-IBM-SpamModules-Versions: BY=3.00006817; HX=3.00000240; KW=3.00000007; PH=3.00000004; SC=3.00000206; SDB=6.00836408; UDB=6.00411075; IPR=6.00614177; BA=6.00005224; NDR=6.00000001; ZLA=6.00000005; ZF=6.00000009; ZB=6.00000000; ZP=6.00000000; ZH=6.00000000; ZU=6.00000002; MB=3.00014729; XFM=3.00000013; UTC=2017-03-20 15:54:37 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 17032015-0045-0000-0000-0000070DCD36 Message-Id: X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2017-03-20_12:,, 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-1702020001 definitions=main-1703200137 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2691 Lines: 66 From: "Gautham R. Shenoy" Hi, This is the second version of the patchset containing the fixes to make CPU-Hotplug working on correctly on POWER9 DD1 systems. The earlier version of this patchset can be found here: https://lkml.org/lkml/2017/3/13/46 This patch addresses the feedback provided by Nicholas Piggin. The key changes from the earlier version are: - Move the piece of code in powernv/smp.c::pnv_smp_cpu_kill_self() which transitions the CPU to the deepest available platform idle state to a new function named pnv_cpu_offline() in powernv/idle.c. The rationale behind this code movement is that the data required to determine the deepest available platform state resides in powernv/idle.c. - Adds a more descriptive warning describing the consequences of no suitable default/deepest stop states being available. - Update the commit log for "powernv:Recover correct PACA on wakeup from a stop on P9 DD1" describing the problem that it is trying to solve. Also ensure that on P9 DD1, NVGPRs are restored from the stack on the way out by setting the NAPSTATELOST in paca. I have retained Nicholas Piggin's Reviewed-by tag for the second patch in this series (was first patch in the previous series) even though the file containing the code is different. There are four patches in the series. - The first patch moves the platform-idle code invoked when a CPU offlined from powernv/smp.c to powernv/idle.c - The second adds a fallback mechanism for CPU-Hotplug when no platform idle state is available. - The third patch ensures that the kernel doesn't use any stop state that is not exposed by the firmware. - The fourth patch adds a recovery framework for correctly recovering paca pointer of the thread waking up from a stop. These patches are based on v4.11-rc3. The patches have been tested with stop1 (ESL=EC=1) as the deepest-state entered into during CPU-Hotplug. Gautham R. Shenoy (4): powernv: Move CPU-Offline idle state invocation from smp.c to idle.c powernv:smp: Add busy-wait loop as fall back for CPU-Hotplug powernv:idle: Don't override default/deepest directly in kernel powernv: Recover correct PACA on wakeup from a stop on P9 DD1 arch/powerpc/include/asm/cpuidle.h | 1 + arch/powerpc/include/asm/paca.h | 5 ++ arch/powerpc/kernel/asm-offsets.c | 1 + arch/powerpc/kernel/idle_book3s.S | 49 +++++++++++++++++- arch/powerpc/platforms/powernv/idle.c | 88 ++++++++++++++++++++++++++------ arch/powerpc/platforms/powernv/powernv.h | 2 - arch/powerpc/platforms/powernv/smp.c | 18 +------ 7 files changed, 129 insertions(+), 35 deletions(-) -- 1.9.4