locking, sched: Annotate thread_group_cputimer as raw
The thread_group_cputimer lock can be taken in atomic context and therefore cannot be preempted on -rt - annotate it. In mainline this change documents the low level nature of the lock - otherwise there's no functional difference. Lockdep and Sparse checking will work as usual. Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
		
							parent
							
								
									07354eb1a7
								
							
						
					
					
						commit
						ee30a7b2fc
					
				| @ -42,7 +42,7 @@ extern struct fs_struct init_fs; | ||||
| 	.cputimer	= { 						\ | ||||
| 		.cputime = INIT_CPUTIME,				\ | ||||
| 		.running = 0,						\ | ||||
| 		.lock = __SPIN_LOCK_UNLOCKED(sig.cputimer.lock),	\ | ||||
| 		.lock = __RAW_SPIN_LOCK_UNLOCKED(sig.cputimer.lock),	\ | ||||
| 	},								\ | ||||
| 	.cred_guard_mutex =						\ | ||||
| 		 __MUTEX_INITIALIZER(sig.cred_guard_mutex),		\ | ||||
|  | ||||
| @ -510,7 +510,7 @@ struct task_cputime { | ||||
| struct thread_group_cputimer { | ||||
| 	struct task_cputime cputime; | ||||
| 	int running; | ||||
| 	spinlock_t lock; | ||||
| 	raw_spinlock_t lock; | ||||
| }; | ||||
| 
 | ||||
| #include <linux/rwsem.h> | ||||
| @ -2566,7 +2566,7 @@ void thread_group_cputimer(struct task_struct *tsk, struct task_cputime *times); | ||||
| 
 | ||||
| static inline void thread_group_cputime_init(struct signal_struct *sig) | ||||
| { | ||||
| 	spin_lock_init(&sig->cputimer.lock); | ||||
| 	raw_spin_lock_init(&sig->cputimer.lock); | ||||
| } | ||||
| 
 | ||||
| /*
 | ||||
|  | ||||
| @ -274,7 +274,7 @@ void thread_group_cputimer(struct task_struct *tsk, struct task_cputime *times) | ||||
| 	struct task_cputime sum; | ||||
| 	unsigned long flags; | ||||
| 
 | ||||
| 	spin_lock_irqsave(&cputimer->lock, flags); | ||||
| 	raw_spin_lock_irqsave(&cputimer->lock, flags); | ||||
| 	if (!cputimer->running) { | ||||
| 		cputimer->running = 1; | ||||
| 		/*
 | ||||
| @ -287,7 +287,7 @@ void thread_group_cputimer(struct task_struct *tsk, struct task_cputime *times) | ||||
| 		update_gt_cputime(&cputimer->cputime, &sum); | ||||
| 	} | ||||
| 	*times = cputimer->cputime; | ||||
| 	spin_unlock_irqrestore(&cputimer->lock, flags); | ||||
| 	raw_spin_unlock_irqrestore(&cputimer->lock, flags); | ||||
| } | ||||
| 
 | ||||
| /*
 | ||||
| @ -997,9 +997,9 @@ static void stop_process_timers(struct signal_struct *sig) | ||||
| 	struct thread_group_cputimer *cputimer = &sig->cputimer; | ||||
| 	unsigned long flags; | ||||
| 
 | ||||
| 	spin_lock_irqsave(&cputimer->lock, flags); | ||||
| 	raw_spin_lock_irqsave(&cputimer->lock, flags); | ||||
| 	cputimer->running = 0; | ||||
| 	spin_unlock_irqrestore(&cputimer->lock, flags); | ||||
| 	raw_spin_unlock_irqrestore(&cputimer->lock, flags); | ||||
| } | ||||
| 
 | ||||
| static u32 onecputick; | ||||
| @ -1289,9 +1289,9 @@ static inline int fastpath_timer_check(struct task_struct *tsk) | ||||
| 	if (sig->cputimer.running) { | ||||
| 		struct task_cputime group_sample; | ||||
| 
 | ||||
| 		spin_lock(&sig->cputimer.lock); | ||||
| 		raw_spin_lock(&sig->cputimer.lock); | ||||
| 		group_sample = sig->cputimer.cputime; | ||||
| 		spin_unlock(&sig->cputimer.lock); | ||||
| 		raw_spin_unlock(&sig->cputimer.lock); | ||||
| 
 | ||||
| 		if (task_cputime_expired(&group_sample, &sig->cputime_expires)) | ||||
| 			return 1; | ||||
|  | ||||
| @ -282,10 +282,10 @@ static inline void account_group_user_time(struct task_struct *tsk, | ||||
| 	if (!cputimer->running) | ||||
| 		return; | ||||
| 
 | ||||
| 	spin_lock(&cputimer->lock); | ||||
| 	raw_spin_lock(&cputimer->lock); | ||||
| 	cputimer->cputime.utime = | ||||
| 		cputime_add(cputimer->cputime.utime, cputime); | ||||
| 	spin_unlock(&cputimer->lock); | ||||
| 	raw_spin_unlock(&cputimer->lock); | ||||
| } | ||||
| 
 | ||||
| /**
 | ||||
| @ -306,10 +306,10 @@ static inline void account_group_system_time(struct task_struct *tsk, | ||||
| 	if (!cputimer->running) | ||||
| 		return; | ||||
| 
 | ||||
| 	spin_lock(&cputimer->lock); | ||||
| 	raw_spin_lock(&cputimer->lock); | ||||
| 	cputimer->cputime.stime = | ||||
| 		cputime_add(cputimer->cputime.stime, cputime); | ||||
| 	spin_unlock(&cputimer->lock); | ||||
| 	raw_spin_unlock(&cputimer->lock); | ||||
| } | ||||
| 
 | ||||
| /**
 | ||||
| @ -330,7 +330,7 @@ static inline void account_group_exec_runtime(struct task_struct *tsk, | ||||
| 	if (!cputimer->running) | ||||
| 		return; | ||||
| 
 | ||||
| 	spin_lock(&cputimer->lock); | ||||
| 	raw_spin_lock(&cputimer->lock); | ||||
| 	cputimer->cputime.sum_exec_runtime += ns; | ||||
| 	spin_unlock(&cputimer->lock); | ||||
| 	raw_spin_unlock(&cputimer->lock); | ||||
| } | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user