All of lore.kernel.org
 help / color / mirror / Atom feed
From: Marc Zyngier <maz@kernel.org>
To: Anshuman Khandual <anshuman.khandual@arm.com>
Cc: linux-arm-kernel@lists.infradead.org, mark.rutland@arm.com,
	ryan.roberts@arm.com, Catalin Marinas <catalin.marinas@arm.com>,
	Will Deacon <will@kernel.org>,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH] arm64/mm: Drop ESR_ELx_FSC_TYPE
Date: Mon, 17 Jun 2024 08:43:43 +0100	[thread overview]
Message-ID: <86iky8j9ow.wl-maz@kernel.org> (raw)
In-Reply-To: <45ace175-9b59-4ba2-91b8-b96151c03c05@arm.com>

On Mon, 17 Jun 2024 04:15:40 +0100,
Anshuman Khandual <anshuman.khandual@arm.com> wrote:
> 
> Does the following re-worked patch looks okay ? Earlier set_thread_esr() changes
> can be dropped from arch/arm64/mm/fault.c and also the original commit message
> still makes sense.
> 
> diff --git a/arch/arm64/include/asm/esr.h b/arch/arm64/include/asm/esr.h
> index 7abf09df7033..6cd13ac61005 100644
> --- a/arch/arm64/include/asm/esr.h
> +++ b/arch/arm64/include/asm/esr.h
> @@ -121,6 +121,13 @@
>  #define ESR_ELx_FSC_SECC       (0x18)
>  #define ESR_ELx_FSC_SECC_TTW(n)        (0x1c + (n))
>  
> +/* Status codes for individual page table levels */
> +#define ESR_ELx_FSC_ACCESS_L(n)        (ESR_ELx_FSC_ACCESS + n)
> +#define ESR_ELx_FSC_FAULT_nL   (0x2C)
> +#define ESR_ELx_FSC_FAULT_L(n) (((n) < 0 ? ESR_ELx_FSC_FAULT_nL : \
> +                                           ESR_ELx_FSC_FAULT) + (n))
> +#define ESR_ELx_FSC_PERM_L(n)  (ESR_ELx_FSC_PERM + n)
> +
>  /* ISS field definitions for Data Aborts */
>  #define ESR_ELx_ISV_SHIFT      (24)
>  #define ESR_ELx_ISV            (UL(1) << ESR_ELx_ISV_SHIFT)
> @@ -388,20 +395,33 @@ static inline bool esr_is_data_abort(unsigned long esr)
>  
>  static inline bool esr_fsc_is_translation_fault(unsigned long esr)
>  {
> -       /* Translation fault, level -1 */
> -       if ((esr & ESR_ELx_FSC) == 0b101011)
> -               return true;
> -       return (esr & ESR_ELx_FSC_TYPE) == ESR_ELx_FSC_FAULT;
> +       esr = esr & ESR_ELx_FSC;
> +
> +       return (esr == ESR_ELx_FSC_FAULT_L(3)) ||
> +              (esr == ESR_ELx_FSC_FAULT_L(2)) ||
> +              (esr == ESR_ELx_FSC_FAULT_L(1)) ||
> +              (esr == ESR_ELx_FSC_FAULT_L(0)) ||
> +              (esr == ESR_ELx_FSC_FAULT_L(-1));
>  }
>  
>  static inline bool esr_fsc_is_permission_fault(unsigned long esr)
>  {
> -       return (esr & ESR_ELx_FSC_TYPE) == ESR_ELx_FSC_PERM;
> +       esr = esr & ESR_ELx_FSC;
> +
> +       return (esr == ESR_ELx_FSC_PERM_L(3)) ||
> +              (esr == ESR_ELx_FSC_PERM_L(2)) ||
> +              (esr == ESR_ELx_FSC_PERM_L(1)) ||
> +              (esr == ESR_ELx_FSC_PERM_L(0));
>  }
>  
>  static inline bool esr_fsc_is_access_flag_fault(unsigned long esr)
>  {
> -       return (esr & ESR_ELx_FSC_TYPE) == ESR_ELx_FSC_ACCESS;
> +       esr = esr & ESR_ELx_FSC;
> +
> +       return (esr == ESR_ELx_FSC_ACCESS_L(3)) ||
> +              (esr == ESR_ELx_FSC_ACCESS_L(2)) ||
> +              (esr == ESR_ELx_FSC_ACCESS_L(1)) ||
> +              (esr == ESR_ELx_FSC_ACCESS_L(0));
>  }
>  
>  /* Indicate whether ESR.EC==0x1A is for an ERETAx instruction */

This looks better indeed.

Thanks,

	M.

-- 
Without deviation from the norm, progress is not possible.


  reply	other threads:[~2024-06-17  7:44 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-06-13  9:45 [PATCH] arm64/mm: Drop ESR_ELx_FSC_TYPE Anshuman Khandual
2024-06-13 10:03 ` Ryan Roberts
2024-06-13 10:06 ` Mark Rutland
2024-06-13 11:23 ` Marc Zyngier
2024-06-14  2:24   ` Anshuman Khandual
2024-06-14 10:37     ` Marc Zyngier
2024-06-17  3:15       ` Anshuman Khandual
2024-06-17  7:43         ` Marc Zyngier [this message]
2024-06-17  8:39           ` Anshuman Khandual
2024-06-17  9:34             ` Mark Rutland

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=86iky8j9ow.wl-maz@kernel.org \
    --to=maz@kernel.org \
    --cc=anshuman.khandual@arm.com \
    --cc=catalin.marinas@arm.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=ryan.roberts@arm.com \
    --cc=will@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.