Re: [v1][PATCH] cpu_down: move migrate_enable() back

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 13-11-06 09:06 PM, Tiejun Chen wrote:
> Commit 08c1ab68, "hotplug-use-migrate-disable.patch", intends to
> use migrate_enable()/migrate_disable() to replace that combination

Since you quote a commit ID, it would be nice if you mentioned that
it is in v3.8-rt from the stable-rt repo, instead of making people
look it up.

Also, since you have cc'd stable-rt@vger, there should be some mention
of what versions it might be appropriate for (3.4?  3.10?).

> of preempt_enable() and preempt_disable(), but actually in
> !CONFIG_PREEMPT_RT_FULL case, migrate_enable()/migrate_disable()
> are still equal to preempt_enable()/preempt_disable(). So that
> followed cpu_hotplug_begin()/cpu_unplug_begin(cpu) would go schedule()
> to trigger schedule_debug() like this:
> 
> _cpu_down()
> 	|
> 	+ migrate_disable() = preempt_disable()
> 	|
> 	+ cpu_hotplug_begin() or cpu_unplug_begin()
> 		|
> 		+ schedule()
> 			|
> 			+ __schedule()
> 				|
> 				+ preempt_disable();
> 				|
> 				+ __schedule_bug() is true!
> 
> So we should move migrate_enable() as the original scheme.

It is unclear to me what context you are thinking of/referencing
as the "original scheme"...

> 
> Signed-off-by: Tiejun Chen <tiejun.chen@xxxxxxxxxxxxx>
> ---
>  kernel/cpu.c |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/kernel/cpu.c b/kernel/cpu.c
> index 98f2ea3..da6e128 100644
> --- a/kernel/cpu.c
> +++ b/kernel/cpu.c
> @@ -594,6 +594,7 @@ static int __ref _cpu_down(unsigned int cpu, int tasks_frozen)
>  		err = -EBUSY;
>  		goto restore_cpus;
>  	}
> +	migrate_enable();
>  

So, what happens if we now get migrated right here, before the
hotplug_begin call below?

P.
--

>  	cpu_hotplug_begin();
>  	err = cpu_unplug_begin(cpu);
> @@ -647,7 +648,6 @@ static int __ref _cpu_down(unsigned int cpu, int tasks_frozen)
>  out_release:
>  	cpu_unplug_done(cpu);
>  out_cancel:
> -	migrate_enable();
>  	cpu_hotplug_done();
>  	if (!err)
>  		cpu_notify_nofail(CPU_POST_DEAD | mod, hcpu);
> 
--
To unsubscribe from this list: send the line "unsubscribe stable-rt" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux USB Development]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux