[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