Messages in this thread | | | Date | Mon, 11 Nov 2013 17:20:22 +0100 | From | Peter Zijlstra <> | Subject | Re: [sched/get_online_cpus] INFO: task swapper/0:1 blocked for more than 120 seconds. |
| |
On Mon, Nov 11, 2013 at 03:47:11PM +0800, Michael wang wrote: > Hi, Fengguang > > On 11/10/2013 06:16 PM, Fengguang Wu wrote: > > Greetings, > > > > I got the below dmesg and the first bad commit is > > I guess this will disappear when '!CONFIG_RCU_BOOST'... > > AFAIK, if the rsp was in boost mode, we count on smpboot-thread > 'rcu_cpu_thread_spec' to finish the callback, which will be > parked before do sync-rcu inside _cpu_down(), if that was true, > then the sync will never finish... > > May be some brainless fix like this? > > > > diff --git a/kernel/cpu.c b/kernel/cpu.c > index 63aa50d..aa24338 100644 > --- a/kernel/cpu.c > +++ b/kernel/cpu.c > @@ -306,7 +306,6 @@ static int __ref _cpu_down(unsigned int cpu, int tasks_frozen) > __func__, cpu); > goto out_release; > } > - smpboot_park_threads(cpu); > > /* > * By now we've cleared cpu_active_mask, wait for all preempt-disabled > @@ -321,6 +320,8 @@ static int __ref _cpu_down(unsigned int cpu, int tasks_frozen) > #endif > synchronize_rcu(); > > + smpboot_park_threads(cpu); > + > /* > * So now all preempt/rcu users must observe !cpu_active(). > */
Good thinking.. Wu did this cure stuff?
| |