From patchwork Wed Apr 19 13:05:51 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicholas Piggin X-Patchwork-Id: 752283 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from lists.ozlabs.org (lists.ozlabs.org [103.22.144.68]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3w7NNj6MlVz9ryk for ; Wed, 19 Apr 2017 23:37:57 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="OmsuJMtj"; dkim-atps=neutral Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) by lists.ozlabs.org (Postfix) with ESMTP id 3w7NNj5KRQzDqx2 for ; Wed, 19 Apr 2017 23:37:57 +1000 (AEST) Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="OmsuJMtj"; dkim-atps=neutral X-Original-To: linuxppc-dev@lists.ozlabs.org Delivered-To: linuxppc-dev@lists.ozlabs.org Received: from mail-it0-x242.google.com (mail-it0-x242.google.com [IPv6:2607:f8b0:4001:c0b::242]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 3w7MhQ665kzDqm6 for ; Wed, 19 Apr 2017 23:06:30 +1000 (AEST) Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="OmsuJMtj"; dkim-atps=neutral Received: by mail-it0-x242.google.com with SMTP id e132so2677488ite.2 for ; Wed, 19 Apr 2017 06:06:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=pIKYpvX2hXLG6tjNh63nK4twvNMGOgHAepXQ5GfCOl0=; b=OmsuJMtj3Aq2UMgbKRjns2ZQln2AEx8ZW4kdJtDYeSTI3N2PbJ+s8qExmWKp8Jl7Xt y/ncODWUhBJjj+scbu8NcqCelQMvheSLHhftvZR3TUMJbjBpcP2FiGQDQnOLj1cLMNN+ fUv61BqMOSzn2GBDeqb8/SA6tD6rVVtHsS5+U476oQt6OtLIrS9YvaPM/dn6SPiKKgXL j3fSV80fBE83GwMM264GzFi5RtZJyKRR0gnmf5uNOcjJYIsp7IBwfZUYyOtj45hKQyqW Qs/1QEFj7jLfJxOl6SZdhPpYfTJwBSBE3EtwOxYfwV/Mv4m/9Gmtktvt1WApH+CkrVsh 4Tng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=pIKYpvX2hXLG6tjNh63nK4twvNMGOgHAepXQ5GfCOl0=; b=Z8XJNmjdsVDjlf8O+F1bbFH7t+9Pqqb0tWLZmqSLhpXMnGhL5f6bg9fRlngxISDrDb DcsXMxF3ZYbC75H1cgddvqiPTHynWqSNP+joCUntQwm17GeNauxxMFnc4g2cJVQhYOwB l/ZduON/Z9cBmFF0DjQoWGuT+pi9FIVZSsUughMarUW28f51v6BvyMQVWkjYht9ZRdyI SKhwZesDhd5V9TPfrxCMpL0R4HwwMAtP6WsSHVMAw15Ghe8Psqjz5jlM/t1GGiwokCKm t45R/OjJBQr3ls0rwyxLdgDf8cN8t0OhcukECs+xHaGPDk4k/aSLi+JiwGGxc8UZxcOV n7OA== X-Gm-Message-State: AN3rC/5wCyUe9ptfX4zIGDv40rhknPR+zyXxLF089DCe11lr2r+531pd 8egVoBA6D5JZO9mO X-Received: by 10.84.215.143 with SMTP id l15mr3929533pli.31.1492607188786; Wed, 19 Apr 2017 06:06:28 -0700 (PDT) Received: from roar.au.ibm.com (14-202-189-126.tpgi.com.au. [14.202.189.126]) by smtp.gmail.com with ESMTPSA id i15sm4728860pfj.51.2017.04.19.06.06.25 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 19 Apr 2017 06:06:27 -0700 (PDT) From: Nicholas Piggin To: linuxppc-dev@lists.ozlabs.org Subject: [PATCH 9/9] powerpc/64s: Simplify POWER9 DD1 idle workaround code Date: Wed, 19 Apr 2017 23:05:51 +1000 Message-Id: <20170419130551.32378-10-npiggin@gmail.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20170419130551.32378-1-npiggin@gmail.com> References: <20170419130551.32378-1-npiggin@gmail.com> X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Nicholas Piggin Errors-To: linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@lists.ozlabs.org Sender: "Linuxppc-dev" The idle workaround does not need to load PACATOC, and it does not need to be called within a nested function that requires LR to be saved. Load the PACATOC at entry to the idle wakeup. It does not matter which PACA this comes from, so it's okay to call before the workaround. Then apply the workaround to get the right PACA. Signed-off-by: Nicholas Piggin --- arch/powerpc/include/asm/feature-fixups.h | 3 +++ arch/powerpc/kernel/idle_book3s.S | 16 +++++----------- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/arch/powerpc/include/asm/feature-fixups.h b/arch/powerpc/include/asm/feature-fixups.h index ddf54f5bbdd1..2de2319b99e2 100644 --- a/arch/powerpc/include/asm/feature-fixups.h +++ b/arch/powerpc/include/asm/feature-fixups.h @@ -66,6 +66,9 @@ label##5: \ #define END_FTR_SECTION(msk, val) \ END_FTR_SECTION_NESTED(msk, val, 97) +#define END_FTR_SECTION_NESTED_IFSET(msk, label) \ + END_FTR_SECTION_NESTED((msk), (msk), label) + #define END_FTR_SECTION_IFSET(msk) END_FTR_SECTION((msk), (msk)) #define END_FTR_SECTION_IFCLR(msk) END_FTR_SECTION((msk), 0) diff --git a/arch/powerpc/kernel/idle_book3s.S b/arch/powerpc/kernel/idle_book3s.S index 97c014de0ca3..a4c058f99164 100644 --- a/arch/powerpc/kernel/idle_book3s.S +++ b/arch/powerpc/kernel/idle_book3s.S @@ -411,7 +411,6 @@ power9_dd1_recover_paca: /* Load paca->thread_sibling_pacas[i] into r13 */ ldx r13, r4, r5 SET_PACA(r13) - ld r2, PACATOC(r13) /* * Indicate that we have lost NVGPR state * which needs to be restored from the stack. @@ -451,7 +450,12 @@ pnv_powersave_wakeup_mce: */ .global pnv_powersave_wakeup pnv_powersave_wakeup: + ld r2, PACATOC(r13) + BEGIN_FTR_SECTION +BEGIN_FTR_SECTION_NESTED(70) + bl power9_dd1_recover_paca +END_FTR_SECTION_NESTED_IFSET(CPU_FTR_POWER9_DD1, 70) bl pnv_restore_hyp_resource_arch300 FTR_SECTION_ELSE bl pnv_restore_hyp_resource_arch207 @@ -488,14 +492,6 @@ pnv_restore_hyp_resource_arch300: * POWER ISA 3. Use PSSCR to determine if we * are waking up from deep idle state */ -BEGIN_FTR_SECTION - mflr r6 - bl power9_dd1_recover_paca - mtlr r6 -FTR_SECTION_ELSE - ld r2, PACATOC(r13) -ALT_FTR_SECTION_END_IFSET(CPU_FTR_POWER9_DD1) - LOAD_REG_ADDRBASE(r5,pnv_first_deep_stop_state) ld r4,ADDROFF(pnv_first_deep_stop_state)(r5) @@ -516,8 +512,6 @@ pnv_restore_hyp_resource_arch207: * POWER ISA 2.07 or less. * Check if we slept with sleep or winkle. */ - ld r2,PACATOC(r13); - lbz r4,PACA_THREAD_IDLE_STATE(r13) cmpwi cr2,r4,PNV_THREAD_NAP bgt cr2,pnv_wakeup_tb_loss /* Either sleep or Winkle */