Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp568675ybz; Wed, 22 Apr 2020 03:55:24 -0700 (PDT) X-Google-Smtp-Source: APiQypJ2O92rC4ykAx4GUgnawGDDLrYJHOUS37z0aj9isopMlXDMwxPY/kgwQbSXGoG6bk9VHxj+ X-Received: by 2002:a17:906:131b:: with SMTP id w27mr25358311ejb.230.1587552924553; Wed, 22 Apr 2020 03:55:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1587552924; cv=none; d=google.com; s=arc-20160816; b=IZGloC0y4nz0OT9WmR+8E16Giy9C1DOFebkIt1yhUw3TDlShgNXUwf/sbB3T56uWBl B+161S9QEPFyj65OrXRO5DfaqCovMfNHVdvmZGbBbX7DNU4eDJQpHIltuVFJWCyBRaRU TEkDDquAfHcBf8asmuLUhQTvY/uKNuiO32o2hROFhIkhZwJLM9NwREHdLppldiscFQSr ZHBaxpWLqsYz+ZsbSv2wODIs4mj4TGcN/fLiPHdpZgu0H4c9cgze9JwN05g3Eqjme3hC EHexpmExuvK2Ykeg35tELRS0tm7HpMvax+DNXHOJ0X/renP3QeedhfgL/6ekSPpERxD6 RJMQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=9yichmNt4065bQlNziedwxppIb0LimiBPuEcTfJ0AvM=; b=BpC0pRvEc3pb9O8egeu63eUGXd9M4bISn321CFZ98l6IFkEhMWJa075c7xpBn9nhcb pXpDb2otA92EjeHeygzzA5BPsicvZLAX3SRK97Qu/a0XatDSVu1GSPPkXz0zL1TnE5t6 5N6f5vlSiIkrSOFdKFkZ21gBMu3uJfHwVlWDv0AwyJORI2DU9xVhpLUpfqNaNMkYHq2M uGBQUGHYzJ1o65GzvzgPf6NYtGHSCo/R/+F6bbdne+PKeC3IuuUCZPeV9fdjbk4rtv0D +WC9jk1Yxbg3rfSgs/ZkWUG40GH1iiXB2cPwHLcEyhdr4A3mI6D5Vfk+3a8OZlN/cvAW aN2Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=2TbnEjv6; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id dg8si1957918edb.548.2020.04.22.03.55.01; Wed, 22 Apr 2020 03:55:24 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=2TbnEjv6; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726554AbgDVKvA (ORCPT + 99 others); Wed, 22 Apr 2020 06:51:00 -0400 Received: from mail.kernel.org ([198.145.29.99]:43762 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728702AbgDVKLf (ORCPT ); Wed, 22 Apr 2020 06:11:35 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id A444D20575; Wed, 22 Apr 2020 10:11:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1587550295; bh=zyPS6kOD0ZGSj23nfYcTdMdRa2bkl3iBr+TWjFANl3I=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=2TbnEjv69cOTdcld8eo9CI2+97gcILFIuMn68YC221pyzBX3+jaaE1ZcWYt7gMqKl x8Ev4a1aujBEynqv+Gf2JrzQ6QNQUSfL+gEOi6s5ySpbi1nwLqUTuwFK98zJJ9ajBY fzLXiaE45uwHX34PONRpeH0gwR45Fb4YAs9DrDJk= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Michael Ellerman , Andrew Donnellan Subject: [PATCH 4.14 087/199] powerpc/powernv/idle: Restore AMR/UAMOR/AMOR after idle Date: Wed, 22 Apr 2020 11:56:53 +0200 Message-Id: <20200422095106.805295217@linuxfoundation.org> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200422095057.806111593@linuxfoundation.org> References: <20200422095057.806111593@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Michael Ellerman commit 53a712bae5dd919521a58d7bad773b949358add0 upstream. In order to implement KUAP (Kernel Userspace Access Protection) on Power9 we will be using the AMR, and therefore indirectly the UAMOR/AMOR. So save/restore these regs in the idle code. Signed-off-by: Michael Ellerman [ajd: Backport to 4.14 tree, CVE-2020-11669] Signed-off-by: Andrew Donnellan Signed-off-by: Greg Kroah-Hartman --- arch/powerpc/kernel/idle_book3s.S | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) --- a/arch/powerpc/kernel/idle_book3s.S +++ b/arch/powerpc/kernel/idle_book3s.S @@ -163,8 +163,11 @@ core_idle_lock_held: bne- core_idle_lock_held blr -/* Reuse an unused pt_regs slot for IAMR */ +/* Reuse some unused pt_regs slots for AMR/IAMR/UAMOR/UAMOR */ +#define PNV_POWERSAVE_AMR _TRAP #define PNV_POWERSAVE_IAMR _DAR +#define PNV_POWERSAVE_UAMOR _DSISR +#define PNV_POWERSAVE_AMOR RESULT /* * Pass requested state in r3: @@ -198,8 +201,16 @@ pnv_powersave_common: SAVE_NVGPRS(r1) BEGIN_FTR_SECTION + mfspr r4, SPRN_AMR mfspr r5, SPRN_IAMR + mfspr r6, SPRN_UAMOR + std r4, PNV_POWERSAVE_AMR(r1) std r5, PNV_POWERSAVE_IAMR(r1) + std r6, PNV_POWERSAVE_UAMOR(r1) +BEGIN_FTR_SECTION_NESTED(42) + mfspr r7, SPRN_AMOR + std r7, PNV_POWERSAVE_AMOR(r1) +END_FTR_SECTION_NESTED_IFSET(CPU_FTR_HVMODE, 42) END_FTR_SECTION_IFSET(CPU_FTR_ARCH_207S) mfcr r5 @@ -951,12 +962,20 @@ END_FTR_SECTION_IFSET(CPU_FTR_HVMODE) REST_GPR(2, r1) BEGIN_FTR_SECTION - /* IAMR was saved in pnv_powersave_common() */ + /* These regs were saved in pnv_powersave_common() */ + ld r4, PNV_POWERSAVE_AMR(r1) ld r5, PNV_POWERSAVE_IAMR(r1) + ld r6, PNV_POWERSAVE_UAMOR(r1) + mtspr SPRN_AMR, r4 mtspr SPRN_IAMR, r5 + mtspr SPRN_UAMOR, r6 +BEGIN_FTR_SECTION_NESTED(42) + ld r7, PNV_POWERSAVE_AMOR(r1) + mtspr SPRN_AMOR, r7 +END_FTR_SECTION_NESTED_IFSET(CPU_FTR_HVMODE, 42) /* - * We don't need an isync here because the upcoming mtmsrd is - * execution synchronizing. + * We don't need an isync here after restoring IAMR because the upcoming + * mtmsrd is execution synchronizing. */ END_FTR_SECTION_IFSET(CPU_FTR_ARCH_207S)