From patchwork Fri Apr 12 14:26:59 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Suzuki K Poulose X-Patchwork-Id: 13627857 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 5109DC00A94 for ; Fri, 12 Apr 2024 14:27:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=rr5h0ggckBsdAzvu7ncDi0ibxahKpYM0Ip8BiDJpypU=; b=nYpjXePGmee3Rx W40eNcoY+7p/haTQoYJK1spzXFL3ea6m5e7P3fDWu3LTKzdun/PJtDEC1Fg9+c07oNGJfNFltOoIa /nJyIst3zYCyqsShRqw6BHGsrbEmgqQ1IdELGJ5SRFBleuEOSBEd5VK55v2+kh12YtNN4ZQLhHjXg IRwKydr9J1GNZ1pon99RSW+swm7fiydHQUwEuRvdWg6EzN2H0cR7oy0bxEJmN6sRc1shQDWUbbJbt pyP8vfof6Wm3rFFQroZLLEyUyjASjPUcwcWtEJz7Ptszq2+dsky5HU0UtoKX9P645y6U7BynXi+K7 uxJGFo1j0oNjbAB/tRXQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rvHsA-0000000HZBS-1OWc; Fri, 12 Apr 2024 14:27:22 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rvHs5-0000000HZ6i-1zlH for linux-arm-kernel@lists.infradead.org; Fri, 12 Apr 2024 14:27:19 +0000 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 5046A113E; Fri, 12 Apr 2024 07:27:41 -0700 (PDT) Received: from ewhatever.cambridge.arm.com (ewhatever.cambridge.arm.com [10.1.197.1]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 20F293F766; Fri, 12 Apr 2024 07:27:11 -0700 (PDT) From: Suzuki K Poulose To: coresight@lists.linaro.org Cc: james.clark@arm.com, mike.leach@linaro.org, anshuman.khandual@arm.com, yabinc@google.com, linux-arm-kernel@lists.infradead.org, Suzuki K Poulose Subject: [PATCH v2 1/4] coresight: etm4x: Do not hardcode IOMEM access for register restore Date: Fri, 12 Apr 2024 15:26:59 +0100 Message-Id: <20240412142702.2882478-2-suzuki.poulose@arm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240412142702.2882478-1-suzuki.poulose@arm.com> References: <20240412142702.2882478-1-suzuki.poulose@arm.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240412_072717_707783_BF92D296 X-CRM114-Status: UNSURE ( 9.17 ) X-CRM114-Notice: Please train this message. X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org When we restore the register state for ETM4x, while coming back from CPU idle, we hardcode IOMEM access. This is wrong and could blow up for an ETM with system instructions access (and for ETE). Fixes: f5bd523690d2 ("coresight: etm4x: Convert all register accesses") Reported-by: Yabin Cui Reviewed-by: Mike Leach Signed-off-by: Suzuki K Poulose Tested-by: Yabin Cui --- drivers/hwtracing/coresight/coresight-etm4x-core.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/hwtracing/coresight/coresight-etm4x-core.c b/drivers/hwtracing/coresight/coresight-etm4x-core.c index c2ca4a02dfce..7bd849e28953 100644 --- a/drivers/hwtracing/coresight/coresight-etm4x-core.c +++ b/drivers/hwtracing/coresight/coresight-etm4x-core.c @@ -1843,8 +1843,10 @@ static void __etm4_cpu_restore(struct etmv4_drvdata *drvdata) { int i; struct etmv4_save_state *state = drvdata->save_state; - struct csdev_access tmp_csa = CSDEV_ACCESS_IOMEM(drvdata->base); - struct csdev_access *csa = &tmp_csa; + struct csdev_access *csa = &drvdata->csdev->access; + + if (WARN_ON(!drvdata->csdev)) + return; etm4_cs_unlock(drvdata, csa); etm4x_relaxed_write32(csa, state->trcclaimset, TRCCLAIMSET);