.. | .. |
---|
1129 | 1129 | return; |
---|
1130 | 1130 | } |
---|
1131 | 1131 | |
---|
1132 | | - local_irq_save(flags); |
---|
| 1132 | + flags = hard_local_irq_save(); |
---|
1133 | 1133 | update_max_tr(tr, current, smp_processor_id(), cond_data); |
---|
1134 | | - local_irq_restore(flags); |
---|
| 1134 | + hard_local_irq_restore(flags); |
---|
1135 | 1135 | } |
---|
1136 | 1136 | |
---|
1137 | 1137 | void tracing_snapshot_instance(struct trace_array *tr) |
---|
.. | .. |
---|
1822 | 1822 | if (tr->stop_count) |
---|
1823 | 1823 | return; |
---|
1824 | 1824 | |
---|
1825 | | - WARN_ON_ONCE(!irqs_disabled()); |
---|
| 1825 | + WARN_ON_ONCE(!hard_irqs_disabled()); |
---|
1826 | 1826 | |
---|
1827 | 1827 | if (!tr->allocated_snapshot) { |
---|
1828 | 1828 | /* Only the nop tracer should hit this when disabling */ |
---|
.. | .. |
---|
1866 | 1866 | if (tr->stop_count) |
---|
1867 | 1867 | return; |
---|
1868 | 1868 | |
---|
1869 | | - WARN_ON_ONCE(!irqs_disabled()); |
---|
| 1869 | + WARN_ON_ONCE(!hard_irqs_disabled()); |
---|
1870 | 1870 | if (!tr->allocated_snapshot) { |
---|
1871 | 1871 | /* Only the nop tracer should hit this when disabling */ |
---|
1872 | 1872 | WARN_ON_ONCE(tr->current_trace != &nop_trace); |
---|
.. | .. |
---|
2626 | 2626 | entry->flags = |
---|
2627 | 2627 | #ifdef CONFIG_TRACE_IRQFLAGS_SUPPORT |
---|
2628 | 2628 | (irqs_disabled_flags(flags) ? TRACE_FLAG_IRQS_OFF : 0) | |
---|
2629 | | -#else |
---|
| 2629 | + (hard_irqs_disabled() ? TRACE_FLAG_IRQS_HARDOFF : 0) | |
---|
| 2630 | +#elif !defined(CONFIG_IRQ_PIPELINE) |
---|
2630 | 2631 | TRACE_FLAG_IRQS_NOSUPPORT | |
---|
2631 | 2632 | #endif |
---|
2632 | 2633 | ((pc & NMI_MASK ) ? TRACE_FLAG_NMI : 0) | |
---|
2633 | 2634 | ((pc & HARDIRQ_MASK) ? TRACE_FLAG_HARDIRQ : 0) | |
---|
2634 | 2635 | ((pc & SOFTIRQ_OFFSET) ? TRACE_FLAG_SOFTIRQ : 0) | |
---|
| 2636 | + (running_oob() ? TRACE_FLAG_OOB_STAGE : 0) | |
---|
2635 | 2637 | (tif_need_resched() ? TRACE_FLAG_NEED_RESCHED : 0) | |
---|
2636 | 2638 | (test_preempt_need_resched() ? TRACE_FLAG_PREEMPT_RESCHED : 0); |
---|
2637 | 2639 | } |
---|
.. | .. |
---|
7085 | 7087 | ret = tracing_alloc_snapshot_instance(tr); |
---|
7086 | 7088 | if (ret < 0) |
---|
7087 | 7089 | break; |
---|
7088 | | - local_irq_disable(); |
---|
| 7090 | + hard_local_irq_disable(); |
---|
7089 | 7091 | /* Now, we're going to swap */ |
---|
7090 | 7092 | if (iter->cpu_file == RING_BUFFER_ALL_CPUS) |
---|
7091 | 7093 | update_max_tr(tr, current, smp_processor_id(), NULL); |
---|
7092 | 7094 | else |
---|
7093 | 7095 | update_max_tr_single(tr, current, iter->cpu_file); |
---|
7094 | | - local_irq_enable(); |
---|
| 7096 | + hard_local_irq_enable(); |
---|
7095 | 7097 | break; |
---|
7096 | 7098 | default: |
---|
7097 | 7099 | if (tr->allocated_snapshot) { |
---|