forked from rpms/kernel
		
	Avoid false quiescent states in rcutree with CONFIG_RCU_FAST_NO_HZ. (rhbz 577968)
This commit is contained in:
		
							parent
							
								
									737c9c7da8
								
							
						
					
					
						commit
						27b62b6f85
					
				| @ -51,7 +51,7 @@ Summary: The Linux kernel | ||||
| # For non-released -rc kernels, this will be prepended with "0.", so | ||||
| # for example a 3 here will become 0.3 | ||||
| # | ||||
| %global baserelease 1 | ||||
| %global baserelease 2 | ||||
| %global fedora_build %{baserelease} | ||||
| 
 | ||||
| # base_sublevel is the kernel version we're starting with and patching | ||||
| @ -697,6 +697,8 @@ Patch2900: linux-2.6-v4l-dvb-update.patch | ||||
| Patch2901: linux-2.6-v4l-dvb-experimental.patch | ||||
| Patch2902: linux-2.6-v4l-dvb-uvcvideo-update.patch | ||||
| 
 | ||||
| Patch3000: rcutree-avoid-false-quiescent-states.patch | ||||
| 
 | ||||
| # fs fixes | ||||
| 
 | ||||
| # NFSv4 | ||||
| @ -1307,6 +1309,8 @@ ApplyOptionalPatch linux-2.6-v4l-dvb-experimental.patch | ||||
| #ApplyPatch linux-2.6-v4l-dvb-uvcvideo-update.patch | ||||
| 
 | ||||
| # Patches headed upstream | ||||
| ApplyPatch rcutree-avoid-false-quiescent-states.patch | ||||
| 
 | ||||
| ApplyPatch disable-i8042-check-on-apple-mac.patch | ||||
| 
 | ||||
| ApplyPatch add-appleir-usb-driver.patch | ||||
| @ -2039,6 +2043,9 @@ fi | ||||
| #                 ||----w | | ||||
| #                 ||     || | ||||
| %changelog | ||||
| * Mon Sep 12 2011 Josh Boyer <jwboyer@redhat.com> | ||||
| - Avoid false quiescent states in rcutree with CONFIG_RCU_FAST_NO_HZ. (rhbz 577968) | ||||
| 
 | ||||
| * Fri Sep 09 2011 Josh Boyer <jwboyer@redhat.com> | ||||
| - Change to 64K page size for ppc64 kernels (rhbz 736751) | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										67
									
								
								rcutree-avoid-false-quiescent-states.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										67
									
								
								rcutree-avoid-false-quiescent-states.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,67 @@ | ||||
| diff --git a/kernel/rcutree.c b/kernel/rcutree.c
 | ||||
| index ba06207..c38a882 100644
 | ||||
| --- a/kernel/rcutree.c
 | ||||
| +++ b/kernel/rcutree.c
 | ||||
| @@ -1476,9 +1476,6 @@ static void rcu_process_callbacks(struct softirq_action *unused)
 | ||||
|  				&__get_cpu_var(rcu_sched_data)); | ||||
|  	__rcu_process_callbacks(&rcu_bh_state, &__get_cpu_var(rcu_bh_data)); | ||||
|  	rcu_preempt_process_callbacks(); | ||||
| -
 | ||||
| -	/* If we are last CPU on way to dyntick-idle mode, accelerate it. */
 | ||||
| -	rcu_needs_cpu_flush();
 | ||||
|  } | ||||
|   | ||||
|  /* | ||||
| diff --git a/kernel/rcutree.h b/kernel/rcutree.h
 | ||||
| index 01b2ccd..795f7fc 100644
 | ||||
| --- a/kernel/rcutree.h
 | ||||
| +++ b/kernel/rcutree.h
 | ||||
| @@ -450,7 +450,6 @@ static int rcu_preempt_needs_cpu(int cpu);
 | ||||
|  static void __cpuinit rcu_preempt_init_percpu_data(int cpu); | ||||
|  static void rcu_preempt_send_cbs_to_online(void); | ||||
|  static void __init __rcu_init_preempt(void); | ||||
| -static void rcu_needs_cpu_flush(void);
 | ||||
|  static void rcu_initiate_boost(struct rcu_node *rnp, unsigned long flags); | ||||
|  static void rcu_preempt_boost_start_gp(struct rcu_node *rnp); | ||||
|  static void invoke_rcu_callbacks_kthread(void); | ||||
| diff --git a/kernel/rcutree_plugin.h b/kernel/rcutree_plugin.h
 | ||||
| index 8aafbb8..b0254de 100644
 | ||||
| --- a/kernel/rcutree_plugin.h
 | ||||
| +++ b/kernel/rcutree_plugin.h
 | ||||
| @@ -1907,15 +1907,6 @@ int rcu_needs_cpu(int cpu)
 | ||||
|  	return rcu_needs_cpu_quick_check(cpu); | ||||
|  } | ||||
|   | ||||
| -/*
 | ||||
| - * Check to see if we need to continue a callback-flush operations to
 | ||||
| - * allow the last CPU to enter dyntick-idle mode.  But fast dyntick-idle
 | ||||
| - * entry is not configured, so we never do need to.
 | ||||
| - */
 | ||||
| -static void rcu_needs_cpu_flush(void)
 | ||||
| -{
 | ||||
| -}
 | ||||
| -
 | ||||
|  #else /* #if !defined(CONFIG_RCU_FAST_NO_HZ) */ | ||||
|   | ||||
|  #define RCU_NEEDS_CPU_FLUSHES 5 | ||||
| @@ -1991,20 +1982,4 @@ int rcu_needs_cpu(int cpu)
 | ||||
|  	return c; | ||||
|  } | ||||
|   | ||||
| -/*
 | ||||
| - * Check to see if we need to continue a callback-flush operations to
 | ||||
| - * allow the last CPU to enter dyntick-idle mode.
 | ||||
| - */
 | ||||
| -static void rcu_needs_cpu_flush(void)
 | ||||
| -{
 | ||||
| -	int cpu = smp_processor_id();
 | ||||
| -	unsigned long flags;
 | ||||
| -
 | ||||
| -	if (per_cpu(rcu_dyntick_drain, cpu) <= 0)
 | ||||
| -		return;
 | ||||
| -	local_irq_save(flags);
 | ||||
| -	(void)rcu_needs_cpu(cpu);
 | ||||
| -	local_irq_restore(flags);
 | ||||
| -}
 | ||||
| -
 | ||||
|  #endif /* #else #if !defined(CONFIG_RCU_FAST_NO_HZ) */ | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user