[RFC PATCH 13/36] arm64: process: Use helper to check exception state

Liao, Chang liaochang1 at huawei.com
Tue Jul 14 05:46:20 PDT 2026


在 2026/7/10 18:00, Jinjie Ruan 写道:
> 
> 
> On 7/9/2026 8:13 PM, Vladimir Murzin wrote:
>> debug_switch_state() explicitly checks the hardware exception state
>> for both the pseudo-NMI and non-NMI paths. The expected state matches
>> the NOIRQ_CONTEXT exception context introduced alongside the exception
>> masking helpers and state checkers.
>>
>> Use the helper instead of open-coding these checks.
>>
>> Signed-off-by: Vladimir Murzin <vladimir.murzin at arm.com>
>> ---
>>  arch/arm64/kernel/process.c | 21 ++-------------------
>>  1 file changed, 2 insertions(+), 19 deletions(-)
>>
>> diff --git a/arch/arm64/kernel/process.c b/arch/arm64/kernel/process.c
>> index 033643cd4e5e..ddda8d7aee24 100644
>> --- a/arch/arm64/kernel/process.c
>> +++ b/arch/arm64/kernel/process.c
>> @@ -51,6 +51,7 @@
>>  #include <asm/exec.h>
>>  #include <asm/fpsimd.h>
>>  #include <asm/gcs.h>
>> +#include <asm/interrupts/common_flags.h>
>>  #include <asm/mmu_context.h>
>>  #include <asm/mpam.h>
>>  #include <asm/mte.h>
>> @@ -738,25 +739,7 @@ void update_sctlr_el1(u64 sctlr)
>>  
>>  static inline void debug_switch_state(void)
>>  {
>> -	if (system_uses_irq_prio_masking()) {
>> -		unsigned long daif_expected = 0;
>> -		unsigned long daif_actual = read_sysreg(daif);
>> -		unsigned long pmr_expected = GIC_PRIO_IRQOFF;
>> -		unsigned long pmr_actual = read_sysreg_s(SYS_ICC_PMR_EL1);
>> -
>> -		WARN_ONCE(daif_actual != daif_expected ||
>> -			  pmr_actual != pmr_expected,
>> -			  "Unexpected DAIF + PMR: 0x%lx + 0x%lx (expected 0x%lx + 0x%lx)\n",
>> -			  daif_actual, pmr_actual,
>> -			  daif_expected, pmr_expected);
>> -	} else {
>> -		unsigned long daif_expected = DAIF_PROCCTX_NOIRQ;
>> -		unsigned long daif_actual = read_sysreg(daif);
>> -
>> -		WARN_ONCE(daif_actual != daif_expected,
>> -			  "Unexpected DAIF value: 0x%lx (expected 0x%lx)\n",
>> -			  daif_actual, daif_expected);
>> -	}
>> +	arm64_debug_exc_context(NOIRQ_CONTEXT);
> 
> 
> With CONFIG_DEBUG_IRQFLAGS,we can avoid the overhead of this check.

Hmm, CONFIG_DEBUG_IRQFLAGS has been checked in arm64_debug_exc_context().

> 
> LGTM
> Reviewed-by: Jinjie Ruan <ruanjinjie at huawei.com>
> 
>>  }
>>  
>>  /*
> 
> 


-- 
BR
Liao, Chang



More information about the linux-arm-kernel mailing list