* x86 microcode driver vs hotplug CPUs.
@ 2006-02-24 1:38 Dave Jones
0 siblings, 0 replies; only message in thread
From: Dave Jones @ 2006-02-24 1:38 UTC (permalink / raw)
To: Linux Kernel
This driver loops over 'num_online_cpus', but it doesn't account
for holes in the online map created by offlined cpus, and assumes
that the cpu numbers stay linear.
Signed-off-by: Dave Jones <davej@redhat.com>
--- linux-2.6.15.noarch/arch/i386/kernel/microcode.c~ 2006-02-18 14:41:09.000000000 -0500
+++ linux-2.6.15.noarch/arch/i386/kernel/microcode.c 2006-02-18 14:45:42.000000000 -0500
@@ -250,8 +250,8 @@ static int find_matching_ucodes (void)
error = -EINVAL;
goto out;
}
-
- for (cpu_num = 0; cpu_num < num_online_cpus(); cpu_num++) {
+
+ for_each_online_cpu(cpu_num) {
struct ucode_cpu_info *uci = ucode_cpu_info + cpu_num;
if (uci->err != MC_NOTFOUND) /* already found a match or not an online cpu*/
continue;
@@ -293,7 +293,7 @@ static int find_matching_ucodes (void)
error = -EFAULT;
goto out;
}
- for (cpu_num = 0; cpu_num < num_online_cpus(); cpu_num++) {
+ for_each_online_cpu(cpu_num) {
struct ucode_cpu_info *uci = ucode_cpu_info + cpu_num;
if (uci->err != MC_NOTFOUND) /* already found a match or not an online cpu*/
continue;
@@ -304,7 +304,9 @@ static int find_matching_ucodes (void)
}
}
/* now check if any cpu has matched */
- for (cpu_num = 0, allocated_flag = 0, sum = 0; cpu_num < num_online_cpus(); cpu_num++) {
+ allocated_flag = 0;
+ sum = 0;
+ for_each_online_cpu(cpu_num) {
if (ucode_cpu_info[cpu_num].err == MC_MARKED) {
struct ucode_cpu_info *uci = ucode_cpu_info + cpu_num;
if (!allocated_flag) {
@@ -415,12 +415,12 @@ static int do_microcode_update (void)
}
out_free:
- for (i = 0; i < num_online_cpus(); i++) {
+ for_each_online_cpu(i) {
if (ucode_cpu_info[i].mc) {
int j;
void *tmp = ucode_cpu_info[i].mc;
vfree(tmp);
- for (j = i; j < num_online_cpus(); j++) {
+ for_each_online_cpu(j) {
if (ucode_cpu_info[j].mc == tmp)
ucode_cpu_info[j].mc = NULL;
}
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2006-02-24 1:38 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-02-24 1:38 x86 microcode driver vs hotplug CPUs Dave Jones
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.