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

Bug#636797: patch for WARN_OUT?



-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi,

I just wanted to ask if there's already some progress on this?
I created a patch like suggested in bugzilla#13

Can anyone please review this patch?
Would it make sense to create a patch that does the devide-by-zero
workaround and also throws a WARN_OUT?
- -- 
Bjoern Boschman

nfon AG
Leonrodstraße 68
D-80636 München

fon	+49 (0)89 453 00-0
fax	+49 (0)89 453 00-100
mail	bjoern.boschman@nfon.net
web	www.nfon.net

Support-Hotline der nfon AG
mail	support@nfon.net
fon	+49 (0)89 453 00-555
web	support.nfon.net

Vorsitzender des Aufsichtsrats: Prof. Dr. Jens Boecker
Vorstände: Fabian Hoppe, Marcus Otto, Jens Blomeyer
Sitz der Gesellschaft München
Amtsgericht München, HRB 168022
USt-ID DE254495743
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAk5U/AMACgkQABMWRpwdNumkmACg0gm2IlCDsHLIM5NZe/xUYURS
qp4AmwTI1TpK6KUulrga/RsbsxAKnPHT
=/kk1
-----END PGP SIGNATURE-----
diff -urp linux-2.6-2.6.32.orig//kernel/sched.c linux-2.6-2.6.32/kernel/sched.c
--- linux-2.6-2.6.32.orig//kernel/sched.c	2009-12-03 04:51:21.000000000 +0100
+++ linux-2.6-2.6.32/kernel/sched.c	2011-08-24 10:52:07.472342615 +0200
@@ -3640,6 +3640,7 @@ static void update_cpu_power(struct sche
 	unsigned long weight = cpumask_weight(sched_domain_span(sd));
 	unsigned long power = SCHED_LOAD_SCALE;
 	struct sched_group *sdg = sd->groups;
+	unsigned long scale_rt;
 
 	if (sched_feat(ARCH_POWER))
 		power *= arch_scale_freq_power(sd, cpu);
@@ -3657,12 +3658,16 @@ static void update_cpu_power(struct sche
 		power >>= SCHED_LOAD_SHIFT;
 	}
 
+	scale_rt = scale_rt_power(cpu);
 	power *= scale_rt_power(cpu);
 	power >>= SCHED_LOAD_SHIFT;
 
 	if (!power)
 		power = 1;
 
+	if (WARN_ON((long)power <= 0))
+		printk(KERN_ERR "cpu_power = %ld; scale_rt = %ld\n", power, scale_rt);
+
 	sdg->cpu_power = power;
 }
 
@@ -3685,6 +3690,9 @@ static void update_group_power(struct sc
 		group = group->next;
 	} while (group != child->groups);
 
+	if (WARN_ON((long)power <= 0))
+		printk(KERN_ERR "cpu_power = %ld\n", power);
+
 	sdg->cpu_power = power;
 }
 

Reply to: