1*4882a593Smuzhiyun // SPDX-License-Identifier: MIT 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * Copyright © 2018 Intel Corporation 4*4882a593Smuzhiyun */ 5*4882a593Smuzhiyun 6*4882a593Smuzhiyun #include <linux/preempt.h> 7*4882a593Smuzhiyun #include <linux/bottom_half.h> 8*4882a593Smuzhiyun #include <linux/irqflags.h> 9*4882a593Smuzhiyun 10*4882a593Smuzhiyun #include "igt_atomic.h" 11*4882a593Smuzhiyun __preempt_begin(void)12*4882a593Smuzhiyunstatic void __preempt_begin(void) 13*4882a593Smuzhiyun { 14*4882a593Smuzhiyun preempt_disable(); 15*4882a593Smuzhiyun } 16*4882a593Smuzhiyun __preempt_end(void)17*4882a593Smuzhiyunstatic void __preempt_end(void) 18*4882a593Smuzhiyun { 19*4882a593Smuzhiyun preempt_enable(); 20*4882a593Smuzhiyun } 21*4882a593Smuzhiyun __softirq_begin(void)22*4882a593Smuzhiyunstatic void __softirq_begin(void) 23*4882a593Smuzhiyun { 24*4882a593Smuzhiyun local_bh_disable(); 25*4882a593Smuzhiyun } 26*4882a593Smuzhiyun __softirq_end(void)27*4882a593Smuzhiyunstatic void __softirq_end(void) 28*4882a593Smuzhiyun { 29*4882a593Smuzhiyun local_bh_enable(); 30*4882a593Smuzhiyun } 31*4882a593Smuzhiyun __hardirq_begin(void)32*4882a593Smuzhiyunstatic void __hardirq_begin(void) 33*4882a593Smuzhiyun { 34*4882a593Smuzhiyun local_irq_disable(); 35*4882a593Smuzhiyun } 36*4882a593Smuzhiyun __hardirq_end(void)37*4882a593Smuzhiyunstatic void __hardirq_end(void) 38*4882a593Smuzhiyun { 39*4882a593Smuzhiyun local_irq_enable(); 40*4882a593Smuzhiyun } 41*4882a593Smuzhiyun 42*4882a593Smuzhiyun const struct igt_atomic_section igt_atomic_phases[] = { 43*4882a593Smuzhiyun { "preempt", __preempt_begin, __preempt_end }, 44*4882a593Smuzhiyun { "softirq", __softirq_begin, __softirq_end }, 45*4882a593Smuzhiyun { "hardirq", __hardirq_begin, __hardirq_end }, 46*4882a593Smuzhiyun { } 47*4882a593Smuzhiyun }; 48