* [PATCH v3 0/2] arm64: Add decode of ISS2 to data abort reports
@ 2023-05-11 6:05 Mark Brown
2023-05-11 6:05 ` [PATCH v3 1/2] arm64/esr: Use GENMASK() for the ISS mask Mark Brown
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Mark Brown @ 2023-05-11 6:05 UTC (permalink / raw)
To: Catalin Marinas, Will Deacon; +Cc: linux-arm-kernel, linux-kernel, Mark Brown
We provide fairly detailed decode of ESR for data aborts but do not
currently cover the information reported in ISS2 which has had quite a
bit of additional information added to it by recent architecture
extensions. Add decode for this information to aid in debugging, for
completeness including features we don't actually use yet.
Signed-off-by: Mark Brown <broonie@kernel.org>
---
Changes in v3:
- Correct ISS->ISS2 typo.
- Link to v2: https://lore.kernel.org/r/20230417-arm64-iss2-dabt-decode-v2-0-84e1c1463d30@kernel.org
Changes in v2:
- Rebase onto v6.4-rc1.
- Link to v1: https://lore.kernel.org/r/20230417-arm64-iss2-dabt-decode-v1-0-2138b5668777@kernel.org
---
Mark Brown (2):
arm64/esr: Use GENMASK() for the ISS mask
arm64/esr: Add decode of ISS2 to data abort reporting
arch/arm64/include/asm/esr.h | 19 ++++++++++++++++++-
arch/arm64/mm/fault.c | 17 ++++++++++++++---
2 files changed, 32 insertions(+), 4 deletions(-)
---
base-commit: ac9a78681b921877518763ba0e89202254349d1b
change-id: 20230417-arm64-iss2-dabt-decode-ec9b46c98a91
Best regards,
--
Mark Brown,,, <broonie@kernel.org>
^ permalink raw reply [flat|nested] 4+ messages in thread* [PATCH v3 1/2] arm64/esr: Use GENMASK() for the ISS mask 2023-05-11 6:05 [PATCH v3 0/2] arm64: Add decode of ISS2 to data abort reports Mark Brown @ 2023-05-11 6:05 ` Mark Brown 2023-05-11 6:05 ` [PATCH v3 2/2] arm64/esr: Add decode of ISS2 to data abort reporting Mark Brown 2023-05-26 9:37 ` [PATCH v3 0/2] arm64: Add decode of ISS2 to data abort reports Catalin Marinas 2 siblings, 0 replies; 4+ messages in thread From: Mark Brown @ 2023-05-11 6:05 UTC (permalink / raw) To: Catalin Marinas, Will Deacon; +Cc: linux-arm-kernel, linux-kernel, Mark Brown 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 <broonie@kernel.org> --- 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 */ -- 2.39.2 ^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH v3 2/2] arm64/esr: Add decode of ISS2 to data abort reporting 2023-05-11 6:05 [PATCH v3 0/2] arm64: Add decode of ISS2 to data abort reports Mark Brown 2023-05-11 6:05 ` [PATCH v3 1/2] arm64/esr: Use GENMASK() for the ISS mask Mark Brown @ 2023-05-11 6:05 ` Mark Brown 2023-05-26 9:37 ` [PATCH v3 0/2] arm64: Add decode of ISS2 to data abort reports Catalin Marinas 2 siblings, 0 replies; 4+ messages in thread From: Mark Brown @ 2023-05-11 6:05 UTC (permalink / raw) To: Catalin Marinas, Will Deacon; +Cc: linux-arm-kernel, linux-kernel, Mark Brown 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 <broonie@kernel.org> --- arch/arm64/include/asm/esr.h | 17 +++++++++++++++++ arch/arm64/mm/fault.c | 17 ++++++++++++++--- 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/arch/arm64/include/asm/esr.h b/arch/arm64/include/asm/esr.h index 0bd879007168..0552a29f026b 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_ISS2_MASK) >> ESR_ELx_ISS2_SHIFT) /* 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 9e0db5c387e3..6f08fd9686be 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) { + unsigned long iss2 = ESR_ELx_ISS2(esr); + pr_alert("Data abort info:\n"); if (esr & ESR_ELx_ISV) { @@ -78,12 +80,21 @@ static void data_abort_decode(unsigned long esr) (esr & ESR_ELx_SF) >> ESR_ELx_SF_SHIFT, (esr & ESR_ELx_AR) >> ESR_ELx_AR_SHIFT); } else { - pr_alert(" ISV = 0, ISS = 0x%08lx\n", esr & ESR_ELx_ISS_MASK); + pr_alert(" ISV = 0, ISS = 0x%08lx, ISS2 = 0x%08lx\n", + esr & ESR_ELx_ISS_MASK, iss2); } - pr_alert(" CM = %lu, WnR = %lu\n", + pr_alert(" CM = %lu, WnR = %lu, TnD = %lu, TagAccess = %lu\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 = %ld, Overlay = %lu, DirtyBit = %lu, 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) -- 2.39.2 ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH v3 0/2] arm64: Add decode of ISS2 to data abort reports 2023-05-11 6:05 [PATCH v3 0/2] arm64: Add decode of ISS2 to data abort reports Mark Brown 2023-05-11 6:05 ` [PATCH v3 1/2] arm64/esr: Use GENMASK() for the ISS mask Mark Brown 2023-05-11 6:05 ` [PATCH v3 2/2] arm64/esr: Add decode of ISS2 to data abort reporting Mark Brown @ 2023-05-26 9:37 ` Catalin Marinas 2 siblings, 0 replies; 4+ messages in thread From: Catalin Marinas @ 2023-05-26 9:37 UTC (permalink / raw) To: Will Deacon, Mark Brown; +Cc: linux-arm-kernel, linux-kernel On Thu, 11 May 2023 15:05:13 +0900, Mark Brown wrote: > We provide fairly detailed decode of ESR for data aborts but do not > currently cover the information reported in ISS2 which has had quite a > bit of additional information added to it by recent architecture > extensions. Add decode for this information to aid in debugging, for > completeness including features we don't actually use yet. > > > [...] Applied to arm64 (for-next/iss2-decode), thanks! [1/2] arm64/esr: Use GENMASK() for the ISS mask https://git.kernel.org/arm64/c/de847275449a [2/2] arm64/esr: Add decode of ISS2 to data abort reporting https://git.kernel.org/arm64/c/1f9d4ba6839c -- Catalin ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2023-05-26 9:37 UTC | newest] Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2023-05-11 6:05 [PATCH v3 0/2] arm64: Add decode of ISS2 to data abort reports Mark Brown 2023-05-11 6:05 ` [PATCH v3 1/2] arm64/esr: Use GENMASK() for the ISS mask Mark Brown 2023-05-11 6:05 ` [PATCH v3 2/2] arm64/esr: Add decode of ISS2 to data abort reporting Mark Brown 2023-05-26 9:37 ` [PATCH v3 0/2] arm64: Add decode of ISS2 to data abort reports Catalin Marinas
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®