From patchwork Tue Apr 18 13:57:31 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mark Brown X-Patchwork-Id: 13215761 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 DC04FC77B75 for ; Tue, 18 Apr 2023 14:09:34 +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:Cc:To:In-Reply-To:References:Message-Id :MIME-Version:Subject:Date:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=hDCsGKYvWk05LlvoH0NDEf8XMeauUDeKG4Ht7pxAaxU=; b=W+8/uw+8TaIgO7 L+wysvOd2LvZmaQZxNVIkhRE/vnJct1rDJtQq8dgAfk1AMZJlYsV5sFbShwfJs3c4hIDOs4aqjlXJ G6nS46I1wrCE/qPXDQeSbao7koa0bDTWQiHtT/Qd/+2zuGtYtZ1eE0eAO+1T20yMxSGv/qFFVQpQQ beUngL5AVLhiPBJ1Hsrl/WGl590noTbrPUCYSmy0npTwb+ZTWF0S17BgAmZTBwiuhlJcL1ns26zXX EHT+kCR8dBeFQTTXCEykn73Ultsomx/DHmzO9DHt1n/hMDDR1SqcXledK3XazR/hI1xNeAbehUg70 9qQLwc25H8rGPYQLUu+Q==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1pom0m-002NbA-1N; Tue, 18 Apr 2023 14:08:48 +0000 Received: from dfw.source.kernel.org ([139.178.84.217]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1pom0g-002NYi-2G for linux-arm-kernel@lists.infradead.org; Tue, 18 Apr 2023 14:08:43 +0000 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 F353762AD4; Tue, 18 Apr 2023 14:08:41 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id EF856C4339E; Tue, 18 Apr 2023 14:08:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1681826921; bh=xpHsOrpkWRpyNCpBAlr/smcDbgm9ns3SuGHZf7AJY+k=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=bsK6f7SYNFolXhScpxxmBRMAXE1fSceM8+DAksbKK7J3dYaKV6Y1fWyTO+PFnis/l 5JqdgF33ililjaH5lv6Rh/P0TSBfqKaFoovN3CvnW+OdhpgST1wNH94hkmAHqecbiN YUUYAtuG1hW/3bny2P6d4TMV6VQWahUWSs3dFtN22Dy93Ahr39zuqV+oCfRlajIQeE aN0YzXLLIH1VTox8efH9ucZKEK57y1w1jdOjrHizy/tYfmYQA0cwuG0xn/gBgBoaQb H56mMEV00ZvbFlXQ3NGgrdafOOpvBWGx/ljeeJKPQqG3QYolxF0OWvo7PBKsRBmRUd jRjTnocTPrl3Q== From: Mark Brown Date: Tue, 18 Apr 2023 14:57:31 +0100 Subject: [PATCH 1/2] arm64/esr: Use GENMASK() for the ISS mask MIME-Version: 1.0 Message-Id: <20230417-arm64-iss2-dabt-decode-v1-1-2138b5668777@kernel.org> References: <20230417-arm64-iss2-dabt-decode-v1-0-2138b5668777@kernel.org> In-Reply-To: <20230417-arm64-iss2-dabt-decode-v1-0-2138b5668777@kernel.org> To: Catalin Marinas , Will Deacon Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Mark Brown X-Mailer: b4 0.13-dev-00303 X-Developer-Signature: v=1; a=openpgp-sha256; l=839; i=broonie@kernel.org; h=from:subject:message-id; bh=xpHsOrpkWRpyNCpBAlr/smcDbgm9ns3SuGHZf7AJY+k=; b=owEBbQGS/pANAwAKASTWi3JdVIfQAcsmYgBkPqRkeS7UOEnFRIgdAZNupiulQ4MNR2QjZKhO9kVX HG9SbvuJATMEAAEKAB0WIQSt5miqZ1cYtZ/in+ok1otyXVSH0AUCZD6kZAAKCRAk1otyXVSH0FhSB/ 9qsI6sABTBumYfQvPtyRsaAmGR4YOv80PLiLvQ8Pya6vJCaGnPe92RvF6fsegVD10YrZBoQi/GMrWC 1gHFxB/bu8Y1hJeVCBEVUAw4BYb/XVENzzAHHCl5hjC6GIYMpAfmpvUL6RQr8febtdOkbXwFUvhon+ DwoWg/MEJ+vkPBl8XTXeaN9Gqbi16OhBBncwZHJdZQt0mg3IcGz9hMf75kk6tfGm9iAUJ7t/t/vQsN trUCSltAjO8tNQRmG/ZYqxZMoW7TBHz6D9of8foVn3iSZrNzm763DPumdBIrxoI/iOqwau1LSnBBEi 4wtNIV2CjX5qD8/qUCaGxL8m6P3X5U X-Developer-Key: i=broonie@kernel.org; a=openpgp; fpr=3F2568AAC26998F9E813A1C5C3F436CA30F5D8EB X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230418_070842_774504_DC8169AE X-CRM114-Status: GOOD ( 12.89 ) 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 We express the mask for ESR_ELx.ISS in a non-standard manner, not using the standard helpers. In preparation for adding decode for ISS2 convert to use GENMASK(). No functional change. Signed-off-by: Mark Brown --- arch/arm64/include/asm/esr.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm64/include/asm/esr.h b/arch/arm64/include/asm/esr.h index 8487aec9b658..0bd879007168 100644 --- a/arch/arm64/include/asm/esr.h +++ b/arch/arm64/include/asm/esr.h @@ -75,7 +75,7 @@ #define ESR_ELx_IL_SHIFT (25) #define ESR_ELx_IL (UL(1) << ESR_ELx_IL_SHIFT) -#define ESR_ELx_ISS_MASK (ESR_ELx_IL - 1) +#define ESR_ELx_ISS_MASK (GENMASK(24, 0)) #define ESR_ELx_ISS(esr) ((esr) & ESR_ELx_ISS_MASK) /* ISS field definitions shared by different classes */ From patchwork Tue Apr 18 13:57:32 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mark Brown X-Patchwork-Id: 13215762 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 81A56C77B78 for ; Tue, 18 Apr 2023 14:09:39 +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:Cc:To:In-Reply-To:References:Message-Id :MIME-Version:Subject:Date:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=SjgVKszCtPTFv2nmMMkJOzdAeT33fSY1pQR1/zRpj7I=; b=JW2ESdLbi9Pi1b mcMvmp3/eojkNRRWde3+vupk73eXJK3ERhYV0eh6GtvWLgc/CO0o3xjUd8slVUJ3rT6yhLBU/OLPE 3R/BWWhwc4GFQ6vvDfh8cH0Y1Tns7Mg8bjRf9IL7ftGdglwQHrLXSMm0F5FjUJw2StHeDIpNrSGBn zjWhynDmoa5rpQUjaNBM1/0PVVPfjp97gg2SCC0KfasGzxskV16G1qtiqAiqiouV4JzZ/8r93Eqqu rVVrVlo0yvc/VI+wfwCDYXhmmOoY83GyRb+xrLiKGcHom2g8s/WSxcWds6gEvQ41ZZRi/1nrgOS3d lbJQHf4C/ll+wbx4Nnzw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1pom0n-002Nba-1H; Tue, 18 Apr 2023 14:08:49 +0000 Received: from dfw.source.kernel.org ([2604:1380:4641:c500::1]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1pom0h-002NZH-2o for linux-arm-kernel@lists.infradead.org; Tue, 18 Apr 2023 14:08:45 +0000 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 7856862B5E; Tue, 18 Apr 2023 14:08:43 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id D49A3C433D2; Tue, 18 Apr 2023 14:08:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1681826922; bh=IIJAPadN5fPGUmVV67Tg/6FekfBFHUYC6SXh5jbkH+M=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=h652EvVPz5wMZ0bbgUws/aesIPqSUlyLs3bL1iZP4d815g6xXOuS7ryz9vcpsWxos dGP06+QaB8oeduf3mxeBZuvv8kV8LOgH7+pr8j4Bu4mGYBGWIcfcja5nfchEgYh2nE e8pjghk3CWP8zGardGM0Yr+lzPMUUyAghUIvUI2frZdcR/YrlibGvba+H1T/37VhVk hfJj5U/Y86/yrMzNZeiXL8q7UZnMWyPCWnp1yF1sVgNR9ks/7I7mK1V7qp+PEz01Vg ZVqsoncj76NOwFg/gLtIFLun4B+yb/nV8wO/5+5+3ENGw8/LYuSwYiYVTE2+8p1yO4 yYhydnUCk4KLw== From: Mark Brown Date: Tue, 18 Apr 2023 14:57:32 +0100 Subject: [PATCH 2/2] arm64/esr: Add decode of ISS2 to data abort reporting MIME-Version: 1.0 Message-Id: <20230417-arm64-iss2-dabt-decode-v1-2-2138b5668777@kernel.org> References: <20230417-arm64-iss2-dabt-decode-v1-0-2138b5668777@kernel.org> In-Reply-To: <20230417-arm64-iss2-dabt-decode-v1-0-2138b5668777@kernel.org> To: Catalin Marinas , Will Deacon Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Mark Brown X-Mailer: b4 0.13-dev-00303 X-Developer-Signature: v=1; a=openpgp-sha256; l=3367; i=broonie@kernel.org; h=from:subject:message-id; bh=IIJAPadN5fPGUmVV67Tg/6FekfBFHUYC6SXh5jbkH+M=; b=owEBbQGS/pANAwAKASTWi3JdVIfQAcsmYgBkPqRlDtHW6v6P3sn7sJZbXIsAo7cK+/2mmFo7QVkD XWzYMT+JATMEAAEKAB0WIQSt5miqZ1cYtZ/in+ok1otyXVSH0AUCZD6kZQAKCRAk1otyXVSH0KRIB/ 9EMfEFftbpDqjc9BKCFNb0IKD9L/AQgW1xA5b3+NglugINAqngFsZ0DnO+9JKXr3uEpZ7hjPfGW8Lw x/M6XaflfWK2tM2VCDiWJU6Cn/c7h+6X3rc5de1XzjldvsZwb4wz6tT48q59Eg+tGMrirgATOl1kJ7 ICZ12xmw8RQqlU2S/TEvqGlCGSkCLkzsLXb6w/h8kYeerxHSar/PYnjbqcvTCJ2xr6LEjaAxB17pHr QaOPzkwq2m5ENt0aS6dZoSjBpZrcdhgn6/qlb3+dnse2Q/tjJyxhlBq9/MueDPRfqNBcVkQ2sWv+tD s9lG/oE9BZXhLkdtLqisJTroLP0Mbs X-Developer-Key: i=broonie@kernel.org; a=openpgp; fpr=3F2568AAC26998F9E813A1C5C3F436CA30F5D8EB X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230418_070843_995260_01BCD8FC X-CRM114-Status: GOOD ( 15.35 ) 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 The architecture has added more information about faults to ISS2 within ESR. Add decode of this to our data abort fault decode to aid diagnostics. Features that are not currently enabled are included here for completeness. Since the architecture specifies the values of bits within ISS2 in terms of ISS2 rather than in terms of the register as a whole we do so for our definitions as well, this makes it easier to review bitfield definitions. Signed-off-by: Mark Brown --- arch/arm64/include/asm/esr.h | 17 +++++++++++++++++ arch/arm64/mm/fault.c | 14 ++++++++++++-- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/arch/arm64/include/asm/esr.h b/arch/arm64/include/asm/esr.h index 0bd879007168..17bc6536ffea 100644 --- a/arch/arm64/include/asm/esr.h +++ b/arch/arm64/include/asm/esr.h @@ -77,6 +77,9 @@ #define ESR_ELx_IL (UL(1) << ESR_ELx_IL_SHIFT) #define ESR_ELx_ISS_MASK (GENMASK(24, 0)) #define ESR_ELx_ISS(esr) ((esr) & ESR_ELx_ISS_MASK) +#define ESR_ELx_ISS2_SHIFT (32) +#define ESR_ELx_ISS2_MASK (GENMASK_ULL(55, 32)) +#define ESR_ELx_ISS2(esr) ((esr) & ESR_ELx_ISS_MASK) /* ISS field definitions shared by different classes */ #define ESR_ELx_WNR_SHIFT (6) @@ -140,6 +143,20 @@ #define ESR_ELx_CM_SHIFT (8) #define ESR_ELx_CM (UL(1) << ESR_ELx_CM_SHIFT) +/* ISS2 field definitions for Data Aborts */ +#define ESR_ELx_TnD_SHIFT (10) +#define ESR_ELx_TnD (UL(1) << ESR_ELx_TnD_SHIFT) +#define ESR_ELx_TagAccess_SHIFT (9) +#define ESR_ELx_TagAccess (UL(1) << ESR_ELx_TagAccess_SHIFT) +#define ESR_ELx_GCS_SHIFT (8) +#define ESR_ELx_GCS (UL(1) << ESR_ELx_GCS_SHIFT) +#define ESR_ELx_Overlay_SHIFT (6) +#define ESR_ELx_Overlay (UL(1) << ESR_ELx_Overlay_SHIFT) +#define ESR_ELx_DirtyBit_SHIFT (5) +#define ESR_ELx_DirtyBit (UL(1) << ESR_ELx_DirtyBit_SHIFT) +#define ESR_ELx_Xs_SHIFT (0) +#define ESR_ELx_Xs_MASK (GENMASK_ULL(4, 0)) + /* ISS field definitions for exceptions taken in to Hyp */ #define ESR_ELx_CV (UL(1) << 24) #define ESR_ELx_COND_SHIFT (20) diff --git a/arch/arm64/mm/fault.c b/arch/arm64/mm/fault.c index f4cb0f85ccf4..2e76dc613c86 100644 --- a/arch/arm64/mm/fault.c +++ b/arch/arm64/mm/fault.c @@ -66,6 +66,8 @@ static inline const struct fault_info *esr_to_debug_fault_info(unsigned long esr static void data_abort_decode(unsigned long esr) { + u64 iss2 = ESR_ELx_ISS2(esr); + pr_alert("Data abort info:\n"); if (esr & ESR_ELx_ISV) { @@ -81,9 +83,17 @@ static void data_abort_decode(unsigned long esr) pr_alert(" ISV = 0, ISS = 0x%08lx\n", esr & ESR_ELx_ISS_MASK); } - pr_alert(" CM = %lu, WnR = %lu\n", + pr_alert(" CM = %lu, WnR = %lu, TnD = %llu, TagAccess = %lld\n", (esr & ESR_ELx_CM) >> ESR_ELx_CM_SHIFT, - (esr & ESR_ELx_WNR) >> ESR_ELx_WNR_SHIFT); + (esr & ESR_ELx_WNR) >> ESR_ELx_WNR_SHIFT, + (iss2 & ESR_ELx_TnD) >> ESR_ELx_TnD_SHIFT, + (iss2 & ESR_ELx_TagAccess) >> ESR_ELx_TagAccess_SHIFT); + + pr_alert(" GCS = %lld, Overlay = %llu, DirtyBit = %llu, Xs = %llu\n", + (iss2 & ESR_ELx_GCS) >> ESR_ELx_GCS_SHIFT, + (iss2 & ESR_ELx_Overlay) >> ESR_ELx_Overlay_SHIFT, + (iss2 & ESR_ELx_DirtyBit) >> ESR_ELx_DirtyBit_SHIFT, + (iss2 & ESR_ELx_Xs_MASK) >> ESR_ELx_Xs_SHIFT); } static void mem_abort_decode(unsigned long esr)