18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: MIT 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * Copyright © 2018 Intel Corporation 48c2ecf20Sopenharmony_ci */ 58c2ecf20Sopenharmony_ci 68c2ecf20Sopenharmony_ci#include <linux/preempt.h> 78c2ecf20Sopenharmony_ci#include <linux/bottom_half.h> 88c2ecf20Sopenharmony_ci#include <linux/irqflags.h> 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_ci#include "igt_atomic.h" 118c2ecf20Sopenharmony_ci 128c2ecf20Sopenharmony_cistatic void __preempt_begin(void) 138c2ecf20Sopenharmony_ci{ 148c2ecf20Sopenharmony_ci preempt_disable(); 158c2ecf20Sopenharmony_ci} 168c2ecf20Sopenharmony_ci 178c2ecf20Sopenharmony_cistatic void __preempt_end(void) 188c2ecf20Sopenharmony_ci{ 198c2ecf20Sopenharmony_ci preempt_enable(); 208c2ecf20Sopenharmony_ci} 218c2ecf20Sopenharmony_ci 228c2ecf20Sopenharmony_cistatic void __softirq_begin(void) 238c2ecf20Sopenharmony_ci{ 248c2ecf20Sopenharmony_ci local_bh_disable(); 258c2ecf20Sopenharmony_ci} 268c2ecf20Sopenharmony_ci 278c2ecf20Sopenharmony_cistatic void __softirq_end(void) 288c2ecf20Sopenharmony_ci{ 298c2ecf20Sopenharmony_ci local_bh_enable(); 308c2ecf20Sopenharmony_ci} 318c2ecf20Sopenharmony_ci 328c2ecf20Sopenharmony_cistatic void __hardirq_begin(void) 338c2ecf20Sopenharmony_ci{ 348c2ecf20Sopenharmony_ci local_irq_disable(); 358c2ecf20Sopenharmony_ci} 368c2ecf20Sopenharmony_ci 378c2ecf20Sopenharmony_cistatic void __hardirq_end(void) 388c2ecf20Sopenharmony_ci{ 398c2ecf20Sopenharmony_ci local_irq_enable(); 408c2ecf20Sopenharmony_ci} 418c2ecf20Sopenharmony_ci 428c2ecf20Sopenharmony_ciconst struct igt_atomic_section igt_atomic_phases[] = { 438c2ecf20Sopenharmony_ci { "preempt", __preempt_begin, __preempt_end }, 448c2ecf20Sopenharmony_ci { "softirq", __softirq_begin, __softirq_end }, 458c2ecf20Sopenharmony_ci { "hardirq", __hardirq_begin, __hardirq_end }, 468c2ecf20Sopenharmony_ci { } 478c2ecf20Sopenharmony_ci}; 48