hc
2024-11-01 2f529f9b558ca1c1bd74be7437a84e4711743404
kernel/arch/arm64/include/asm/daifflags.h
....@@ -12,6 +12,12 @@
1212 #include <asm/cpufeature.h>
1313 #include <asm/ptrace.h>
1414
15
+/*
16
+ * irq_pipeline: DAIF masking is only used in contexts where hard
17
+ * interrupt masking applies, so no need to virtualize for the inband
18
+ * stage here (the pipeline core does assume this).
19
+ */
20
+
1521 #define DAIF_PROCCTX 0
1622 #define DAIF_PROCCTX_NOIRQ PSR_I_BIT
1723 #define DAIF_ERRCTX (PSR_I_BIT | PSR_A_BIT)
....@@ -35,7 +41,7 @@
3541 if (system_uses_irq_prio_masking())
3642 gic_write_pmr(GIC_PRIO_IRQON | GIC_PRIO_PSR_I_SET);
3743
38
- trace_hardirqs_off();
44
+ trace_hardirqs_off_pipelined();
3945 }
4046
4147 static inline unsigned long local_daif_save_flags(void)
....@@ -72,7 +78,7 @@
7278 !(read_sysreg(daif) & PSR_I_BIT));
7379
7480 if (!irq_disabled) {
75
- trace_hardirqs_on();
81
+ trace_hardirqs_on_pipelined();
7682
7783 if (system_uses_irq_prio_masking()) {
7884 gic_write_pmr(GIC_PRIO_IRQON);
....@@ -117,7 +123,7 @@
117123 write_sysreg(flags, daif);
118124
119125 if (irq_disabled)
120
- trace_hardirqs_off();
126
+ trace_hardirqs_off_pipelined();
121127 }
122128
123129 /*
....@@ -129,7 +135,7 @@
129135 unsigned long flags = regs->pstate & DAIF_MASK;
130136
131137 if (interrupts_enabled(regs))
132
- trace_hardirqs_on();
138
+ trace_hardirqs_on_pipelined();
133139
134140 if (system_uses_irq_prio_masking())
135141 gic_write_pmr(regs->pmr_save);