From patchwork Thu Feb 16 16:00:10 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kristina Martsenko X-Patchwork-Id: 58158 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp383645wrn; Thu, 16 Feb 2023 08:06:12 -0800 (PST) X-Google-Smtp-Source: AK7set8FTzMbOgbCuaONgBJh6UY2djESnlSgQ8WW6DOfm/m2Js/J5nrDtQirT5DjSSLuKt0UpsIc X-Received: by 2002:a05:6a20:c114:b0:bf:1769:347f with SMTP id bh20-20020a056a20c11400b000bf1769347fmr4647950pzb.47.1676563572433; Thu, 16 Feb 2023 08:06:12 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1676563572; cv=none; d=google.com; s=arc-20160816; b=Odd4QeUlGu1ObcRRyib17RnABbPCWYpiFQlB/orZu5IHXReydvTXYbPUmSnZAfOLH8 1nG0dzYd/vuBfFcmBFHGJpCk1P4ntolOsoVuXfxY4syESvlDnjBZRm8Wpsq3BLwHWBzN 115DnoyCbibqiIDiLT/FUv0LaulXDkbRgf8DLSEyC2cEFOdBx22KvswLaYqwGGGkKH6b WqhWOxGlrwy7aDjz4zUocbFmWYYtHu9GRkoWmSfZUVzZyTRhalGo0vIcMGjDBmx82l+4 qEaUqFNyfCenzsFY25a+Y+w3/4HEdc+qQRT5mTnp94Lvc1mlbQNiJ71J63QOkJL0EoeT eQaQ== 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 :references:in-reply-to:message-id:date:subject:cc:to:from; bh=vAG0Xo7PUAt5X7FhIvAFjKRtLwBMcJLcz28JoXpK1UU=; b=dCENZ6BpbX6AwnlfzvjkY0/vjsADkMZ1JiWh2WdO+SVoM+tezXE03Gnli3/SvK8VJb ob/PA/j7iyOOD6CittygrEgZntvj6sKymErDmzoTt45EHKPkAgkGZ3wvreZ9cXnCaFdo ycfDKhmQuELK9HAS7ZqiQtLS47UXY/199xGXu+w0nc+MjITdbBVp7kntEyHipXVhKPZ2 egUsoAyVpj77NWYKTbhSjHuynhmk2LOyn7BLyEUD/bfN1q8MJPx9WPGLAvgKtYCIKUeX rByqzc8GItS62LGDRMxnvy8OAZb0OzKmMmZl+3GGHESWPQRxLp9EOqL47/ZyXgeQ8bGt 8KCA== ARC-Authentication-Results: i=1; mx.google.com; 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=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id u63-20020a638542000000b004fbba63b11dsi444418pgd.542.2023.02.16.08.05.58; Thu, 16 Feb 2023 08:06:12 -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; 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=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229664AbjBPQCZ (ORCPT + 99 others); Thu, 16 Feb 2023 11:02:25 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59146 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229820AbjBPQCO (ORCPT ); Thu, 16 Feb 2023 11:02:14 -0500 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id B738585F5E for ; Thu, 16 Feb 2023 08:01:58 -0800 (PST) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 3CBD21042; Thu, 16 Feb 2023 08:02:41 -0800 (PST) Received: from e126864.cambridge.arm.com (usa-sjc-imap-foss1.foss.arm.com [10.121.207.14]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 3DA033F881; Thu, 16 Feb 2023 08:01:55 -0800 (PST) From: Kristina Martsenko To: linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev Cc: Catalin Marinas , Will Deacon , Marc Zyngier , Oliver Upton , James Morse , Suzuki K Poulose , Zenghui Yu , Mark Rutland , Mark Brown , Luis Machado , Vladimir Murzin , linux-kernel@vger.kernel.org Subject: [PATCH 08/10] arm64: mops: handle single stepping after MOPS exception Date: Thu, 16 Feb 2023 16:00:10 +0000 Message-Id: <20230216160012.272345-9-kristina.martsenko@arm.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230216160012.272345-1-kristina.martsenko@arm.com> References: <20230216160012.272345-1-kristina.martsenko@arm.com> MIME-Version: 1.0 X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_NONE 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1758004324389971301?= X-GMAIL-MSGID: =?utf-8?q?1758004324389971301?= When a MOPS main or epilogue instruction is being executed, the task may get scheduled on a different CPU and restart execution from the prologue instruction. If the main or epilogue instruction is being single stepped then it makes sense to finish the step and take the step exception before starting to execute the next (prologue) instruction. So fast-forward the single step state machine when taking a MOPS exception. This means that if a main or epilogue instruction is single stepped with ptrace, the debugger will sometimes observe the PC moving back to the prologue instruction. (As already mentioned, this should be rare as it only happens when the task is scheduled to another CPU during the step.) This also ensures that perf breakpoints count prologue instructions consistently (i.e. every time they are executed), rather than skipping them when there also happens to be a breakpoint on a main or epilogue instruction. Signed-off-by: Kristina Martsenko Acked-by: Catalin Marinas --- arch/arm64/kernel/traps.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/arch/arm64/kernel/traps.c b/arch/arm64/kernel/traps.c index 689188712909..3dfc901a430b 100644 --- a/arch/arm64/kernel/traps.c +++ b/arch/arm64/kernel/traps.c @@ -549,6 +549,12 @@ void do_el0_mops(struct pt_regs *regs, unsigned long esr) regs->pc -= 8; else regs->pc -= 4; + + /* + * If single stepping then finish the step before executing the + * prologue instruction. + */ + user_fastforward_single_step(current); } #define __user_cache_maint(insn, address, res) \