From patchwork Fri Jun 1 11:24:33 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mark Rutland X-Patchwork-Id: 137521 Delivered-To: patch@linaro.org Received: by 2002:a2e:9706:0:0:0:0:0 with SMTP id r6-v6csp808162lji; Fri, 1 Jun 2018 04:28:13 -0700 (PDT) X-Google-Smtp-Source: ADUXVKI9AJQej/1pZuVJqssdEFnd7vYNVp3N1yyk3ENq6BXvFwGOk0jr4IIUfl2r8ZKh4m3oBkgS X-Received: by 2002:a62:a09c:: with SMTP id p28-v6mr10559814pfl.9.1527852493510; Fri, 01 Jun 2018 04:28:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1527852493; cv=none; d=google.com; s=arc-20160816; b=lj//BdbVa70EYFQQKrGOYySQoETKQqtKkayRrkh4aTt+ZdPysYH0zzIs2JeElTE42X Zlt9y0xLfmgiivTgKPskE9PtwGXB3jPjObhoiBpLh0Hqz8u4fGTbX58weQC3CJ0JyJ98 qUPgz+GEIVqZaco3pmFM31LIjIwj4lUTGJ1gVGBo1uSH50N7Qv0gEgyO2qbF+b3OUZyi Rskdn7MguPi1GdMuTnDUgykxhw1hi3MeQgB1iSfJ8E72CYjuULXAcL33CcoLELPmSGSW TUjc/vkC5EzfaPamAR+OL3xraOmVRzp/PDa+NqDwFEuO7T8a+Oha1z6d/so/JFoxbAgI wBSQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:arc-authentication-results; bh=SrjDVMaNJ3DhDE0LCMAdreUevpNi5gCnwygZDBQeRls=; b=paaYe61d10TH7uI5iB4uJ3rV2CAvKcOKsKLlf0DYAzqyILIHqFV9zT1JA+9c+Wu+BX 6oOKDtl3OylnpxPwHDqMYpeIzlqixrOkCXSTz0olUZTx+qtJSImbrMgS0E9fMzjPi0X1 JkuyLuBSkSPV/FiBVYle0Yk+7euCdmlIUDWGc0TJhKLrTKGFBo7DkBZAdPhKvUYhGYeK cyy1bqcVFCGLtXCFyOhGXu0ANHbzX80BiyRZPNCqQgBPD9FNHSKvkvlQxMJPZ8HNCMxH H4XrPine6GHEVhcc0Zc7dQag1rKHqX9flsW06SDBnO2+g219AAPzGw9u5zIXhyj9cORg MpSg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id u12-v6si18671407plz.392.2018.06.01.04.28.13; Fri, 01 Jun 2018 04:28:13 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752062AbeFAL2L (ORCPT + 30 others); Fri, 1 Jun 2018 07:28:11 -0400 Received: from usa-sjc-mx-foss1.foss.arm.com ([217.140.101.70]:50334 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751984AbeFALZK (ORCPT ); Fri, 1 Jun 2018 07:25:10 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 845EC169F; Fri, 1 Jun 2018 04:25:10 -0700 (PDT) Received: from lakrids.cambridge.arm.com (usa-sjc-imap-foss1.foss.arm.com [10.72.51.249]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 53B583F25D; Fri, 1 Jun 2018 04:25:09 -0700 (PDT) From: Mark Rutland To: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, will.deacon@arm.com, catalin.marinas@arm.com Cc: Mark Rutland , Marc Zyngier Subject: [PATCHv2 11/19] arm64: don't reload GPRs after apply_ssbd Date: Fri, 1 Jun 2018 12:24:33 +0100 Message-Id: <20180601112441.37810-12-mark.rutland@arm.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20180601112441.37810-1-mark.rutland@arm.com> References: <20180601112441.37810-1-mark.rutland@arm.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Now that all of the syscall logic works on the saved pt_regs, apply_ssbd can safely corrupt x0-x3 in the entry paths, and we no longer need to restore them. So let's remotve the logic doing so. With that logic gone, we can fold the branch target into the macro, so that callers need not deal with this. GAS provides \@, which provides a unique value per macro invocation, which we can use to create a unique label. Signed-off-by: Mark Rutland Cc: Catalin Marinas Cc: Marc Zyngier Cc: Will Deacon --- arch/arm64/kernel/entry.S | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) -- 2.11.0 Acked-by: Marc Zyngier diff --git a/arch/arm64/kernel/entry.S b/arch/arm64/kernel/entry.S index 156c4e3fd1a4..22c58e7dfc0f 100644 --- a/arch/arm64/kernel/entry.S +++ b/arch/arm64/kernel/entry.S @@ -140,20 +140,21 @@ alternative_else_nop_endif // This macro corrupts x0-x3. It is the caller's duty // to save/restore them if required. - .macro apply_ssbd, state, targ, tmp1, tmp2 + .macro apply_ssbd, state, tmp1, tmp2 #ifdef CONFIG_ARM64_SSBD alternative_cb arm64_enable_wa2_handling - b \targ + b skip_apply_ssbd\@ alternative_cb_end ldr_this_cpu \tmp2, arm64_ssbd_callback_required, \tmp1 - cbz \tmp2, \targ + cbz \tmp2, skip_apply_ssbd\@ ldr \tmp2, [tsk, #TSK_TI_FLAGS] - tbnz \tmp2, #TIF_SSBD, \targ + tbnz \tmp2, #TIF_SSBD, skip_apply_ssbd\@ mov w0, #ARM_SMCCC_ARCH_WORKAROUND_2 mov w1, #\state alternative_cb arm64_update_smccc_conduit nop // Patched to SMC/HVC #0 alternative_cb_end +skip_apply_ssbd\@: #endif .endm @@ -183,13 +184,7 @@ alternative_cb_end ldr x19, [tsk, #TSK_TI_FLAGS] // since we can unmask debug disable_step_tsk x19, x20 // exceptions when scheduling. - apply_ssbd 1, 1f, x22, x23 - -#ifdef CONFIG_ARM64_SSBD - ldp x0, x1, [sp, #16 * 0] - ldp x2, x3, [sp, #16 * 1] -#endif -1: + apply_ssbd 1, x22, x23 mov x29, xzr // fp pointed to user-space .else @@ -331,8 +326,7 @@ alternative_if ARM64_WORKAROUND_845719 alternative_else_nop_endif #endif 3: - apply_ssbd 0, 5f, x0, x1 -5: + apply_ssbd 0, x0, x1 .endif msr elr_el1, x21 // set up the return data