.. | .. |
---|
12 | 12 | #include <asm/cpufeature.h> |
---|
13 | 13 | #include <asm/ptrace.h> |
---|
14 | 14 | |
---|
| 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 | + |
---|
15 | 21 | #define DAIF_PROCCTX 0 |
---|
16 | 22 | #define DAIF_PROCCTX_NOIRQ PSR_I_BIT |
---|
17 | 23 | #define DAIF_ERRCTX (PSR_I_BIT | PSR_A_BIT) |
---|
.. | .. |
---|
35 | 41 | if (system_uses_irq_prio_masking()) |
---|
36 | 42 | gic_write_pmr(GIC_PRIO_IRQON | GIC_PRIO_PSR_I_SET); |
---|
37 | 43 | |
---|
38 | | - trace_hardirqs_off(); |
---|
| 44 | + trace_hardirqs_off_pipelined(); |
---|
39 | 45 | } |
---|
40 | 46 | |
---|
41 | 47 | static inline unsigned long local_daif_save_flags(void) |
---|
.. | .. |
---|
72 | 78 | !(read_sysreg(daif) & PSR_I_BIT)); |
---|
73 | 79 | |
---|
74 | 80 | if (!irq_disabled) { |
---|
75 | | - trace_hardirqs_on(); |
---|
| 81 | + trace_hardirqs_on_pipelined(); |
---|
76 | 82 | |
---|
77 | 83 | if (system_uses_irq_prio_masking()) { |
---|
78 | 84 | gic_write_pmr(GIC_PRIO_IRQON); |
---|
.. | .. |
---|
117 | 123 | write_sysreg(flags, daif); |
---|
118 | 124 | |
---|
119 | 125 | if (irq_disabled) |
---|
120 | | - trace_hardirqs_off(); |
---|
| 126 | + trace_hardirqs_off_pipelined(); |
---|
121 | 127 | } |
---|
122 | 128 | |
---|
123 | 129 | /* |
---|
.. | .. |
---|
129 | 135 | unsigned long flags = regs->pstate & DAIF_MASK; |
---|
130 | 136 | |
---|
131 | 137 | if (interrupts_enabled(regs)) |
---|
132 | | - trace_hardirqs_on(); |
---|
| 138 | + trace_hardirqs_on_pipelined(); |
---|
133 | 139 | |
---|
134 | 140 | if (system_uses_irq_prio_masking()) |
---|
135 | 141 | gic_write_pmr(regs->pmr_save); |
---|