[PATCH RT] drop migrate_disabled section in _cpu_down

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

 



HI !


Minor cleanup: drop unnecessary migrate_disable in _cpu_down

in kernel/cpu.c:_cpu_down
    ...
    cpumask_andnot(cpumask, cpu_online_mask, cpumask_of(cpu));
    set_cpus_allowed_ptr(current, cpumask);
    ...
    migrate_disable();
    mycpu = smp_processor_id();
    if (mycpu == cpu) {
            printk(KERN_ERR "Yuck! Still on unplug CPU\n!");
            migrate_enable();
            err = -EBUSY;
            goto restore_cpus;
    }
    migrate_enable();

If we got migrated off "cpu" then we can not get migrate
back as the cpus_allowed was updated. so if smp_processor_id(); returns
anything != cpu we are fine even if migrated off to a third cpu between
the mycpu = smp_processor_id() and the if (mycpu == cpu). No need for
migration protection here.

Further the migrate disable is effectively only needed for the condition
check in the if statement - so I think it could be replaced by:

    if (cpu==smp_processor_id()) {
            pr_err("Yuck! Still on unplug CPU\n!");
            err = -EBUSY;
            goto restore_cpus;
    }

even in the case that the cpus_allowed had not been updated.

Patch is against 3.12.13-rt21

Signed-off-by: Nicholas Mc Guire <der.herr@xxxxxxx>
---
 kernel/cpu.c |    8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)

diff --git a/kernel/cpu.c b/kernel/cpu.c
index ba7416b..fc5566a 100644
--- a/kernel/cpu.c
+++ b/kernel/cpu.c
@@ -565,7 +565,7 @@ static int __ref take_cpu_down(void *_param)
 /* Requires cpu_add_remove_lock to be held */
 static int __ref _cpu_down(unsigned int cpu, int tasks_frozen)
 {
-	int mycpu, err, nr_calls = 0;
+	int err, nr_calls = 0;
 	void *hcpu = (void *)(long)cpu;
 	unsigned long mod = tasks_frozen ? CPU_TASKS_FROZEN : 0;
 	struct take_cpu_down_param tcd_param = {
@@ -593,15 +593,11 @@ static int __ref _cpu_down(unsigned int cpu, int tasks_frozen)
 	cpumask_andnot(cpumask, cpu_online_mask, cpumask_of(cpu));
 	set_cpus_allowed_ptr(current, cpumask);
 	free_cpumask_var(cpumask);
-	migrate_disable();
-	mycpu = smp_processor_id();
-	if (mycpu == cpu) {
+	if (cpu == smp_processor_id()) {
 		printk(KERN_ERR "Yuck! Still on unplug CPU\n!");
-		migrate_enable();
 		err = -EBUSY;
 		goto restore_cpus;
 	}
-	migrate_enable();
 
 	cpu_hotplug_begin();
 	err = cpu_unplug_begin(cpu);
-- 
1.7.10.4

--
To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [RT Stable]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]

  Powered by Linux