Received: by 2002:a05:6a10:413:0:0:0:0 with SMTP id 19csp584147pxp; Wed, 9 Mar 2022 08:35:33 -0800 (PST) X-Google-Smtp-Source: ABdhPJxeRBWKVQE8df2lJM4Zv3rDvgi6UtxTgubYNIaCYVdIZriODHvzqWNEQ1hzRFjUngpsUvBH X-Received: by 2002:a17:906:3104:b0:6ce:6b85:ecc9 with SMTP id 4-20020a170906310400b006ce6b85ecc9mr525162ejx.339.1646843733012; Wed, 09 Mar 2022 08:35:33 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1646843733; cv=none; d=google.com; s=arc-20160816; b=C/yctkwBDOnl0MaKuUQK7mCIEzpz4fIFnTSVcjvGLETguGRuRBZ43KaIvlBOQ/hR2R j80yS97b7nVC+O7FxIwU3IllXdzD1JGxAfvQ4u18xWRik7Tvlc/lhUt9Q3Y2WP8vXop3 mFcFw2s5pU5cPFQo7sQ8mhnCeTiNVn7EinfHvD7B5V6mK3Bs5lOrdXN/WAGXQnM3jWhj tCeUY8EJ09hDgKWeoS+uolpixb8EBvczqXtt1lQgwNMUHKAMJI4GIJ25LPmQjtXHjjTP RjPVwm4oMiGnRF7artbq6p4PlSef1Z3cQQogQkV4KsMjlV1rwMUquAqKb6nV+tTD6Hu2 skaA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=XZtQw73rYPyTBiDfv32ucPiESgALMMd5gDwjVZX6gpU=; b=vR/EgcVL2Xoay5AViODCrvysVgftSkYzdyEOwtxALOnzNWLhBuTnw9gieArGaPQ12L LBG9DsKqiLRBb2HBAdGdi/aEc4otJ5FZXgF+OYPh1MrcZfa4CBGfRkFKjN272qxBQqqh /iwWJWg8N/QU4kj6WWUFFKPWyi+E/K3aciVUNOSdD7bbmAyaWrLB6ikWenwUJhYu766a 0IiJGv1Ywn373+n/ZelLfn8B6RL2ptVsihkR12aKiLRJ/r5yQbkmEKgiSdkAZ00x8nvx j8TSg7WJglrc7DN8keEgPhX0dm1z6zR+fgd9Uk7c7H0NcBUzDEczo31IC+VGNxV+678w qAGQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=TNrjtzcK; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id o13-20020a170906974d00b006db2bfdb11dsi1680680ejy.823.2022.03.09.08.35.10; Wed, 09 Mar 2022 08:35:32 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=TNrjtzcK; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235439AbiCIQNn (ORCPT + 99 others); Wed, 9 Mar 2022 11:13:43 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46468 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235297AbiCIQIg (ORCPT ); Wed, 9 Mar 2022 11:08:36 -0500 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1B98618DAA8; Wed, 9 Mar 2022 08:05:38 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 9618261798; Wed, 9 Mar 2022 16:05:34 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9D440C340E8; Wed, 9 Mar 2022 16:05:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1646841934; bh=A6oXWWdywzHZKFb4f9k7sQK6E39VRSRYq5LVYyv73hs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=TNrjtzcKJnPujBOVHx8hAFRRsKrbn3ZU2hYpLYThJSnHdVqD9IaL7+lAXuMUJIOyQ StSTtwirTVVqyIcIIvhhG8L8EFvtJ+7HGovJqRpBCHK0ufRlvUn3AzW1ps4EMBhkLk a81WU88/DXjSpp3cQSxvva0jMxdBMcBasaX64dv4= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, "Russell King (Oracle)" , Catalin Marinas , James Morse Subject: [PATCH 5.10 26/43] arm64: entry: Free up another register on kptis tramp_exit path Date: Wed, 9 Mar 2022 16:59:59 +0100 Message-Id: <20220309155859.999209132@linuxfoundation.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220309155859.239810747@linuxfoundation.org> References: <20220309155859.239810747@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-7.6 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: James Morse commit 03aff3a77a58b5b52a77e00537a42090ad57b80b upstream. Kpti stashes x30 in far_el1 while it uses x30 for all its work. Making the vectors a per-cpu data structure will require a second register. Allow tramp_exit two registers before it unmaps the kernel, by leaving x30 on the stack, and stashing x29 in far_el1. Reviewed-by: Russell King (Oracle) Reviewed-by: Catalin Marinas Signed-off-by: James Morse Signed-off-by: Greg Kroah-Hartman --- arch/arm64/kernel/entry.S | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) --- a/arch/arm64/kernel/entry.S +++ b/arch/arm64/kernel/entry.S @@ -357,14 +357,16 @@ alternative_else_nop_endif ldp x24, x25, [sp, #16 * 12] ldp x26, x27, [sp, #16 * 13] ldp x28, x29, [sp, #16 * 14] - ldr lr, [sp, #S_LR] - add sp, sp, #S_FRAME_SIZE // restore sp .if \el == 0 -alternative_insn eret, nop, ARM64_UNMAP_KERNEL_AT_EL0 +alternative_if_not ARM64_UNMAP_KERNEL_AT_EL0 + ldr lr, [sp, #S_LR] + add sp, sp, #S_FRAME_SIZE // restore sp + eret +alternative_else_nop_endif #ifdef CONFIG_UNMAP_KERNEL_AT_EL0 bne 4f - msr far_el1, x30 + msr far_el1, x29 tramp_alias x30, tramp_exit_native br x30 4: @@ -372,6 +374,9 @@ alternative_insn eret, nop, ARM64_UNMAP_ br x30 #endif .else + ldr lr, [sp, #S_LR] + add sp, sp, #S_FRAME_SIZE // restore sp + /* Ensure any device/NC reads complete */ alternative_insn nop, "dmb sy", ARM64_WORKAROUND_1508412 @@ -844,10 +849,12 @@ alternative_else_nop_endif .macro tramp_exit, regsize = 64 adr x30, tramp_vectors msr vbar_el1, x30 - tramp_unmap_kernel x30 + ldr lr, [sp, #S_LR] + tramp_unmap_kernel x29 .if \regsize == 64 - mrs x30, far_el1 + mrs x29, far_el1 .endif + add sp, sp, #S_FRAME_SIZE // restore sp eret sb .endm