]> err.no Git - linux-2.6/blobdiff - arch/x86/kernel/process_64.c
[PACKET]: Fix sparse warnings in af_packet.c
[linux-2.6] / arch / x86 / kernel / process_64.c
index 6309b275cb9c176f61133fa7fc2b5585c9063fd4..ab79e1dfa02311bb75c81c44aa137ddd450c5922 100644 (file)
@@ -135,6 +135,10 @@ static void poll_idle (void)
        cpu_relax();
 }
 
+static void do_nothing(void *unused)
+{
+}
+
 void cpu_idle_wait(void)
 {
        unsigned int cpu, this_cpu = get_cpu();
@@ -160,6 +164,13 @@ void cpu_idle_wait(void)
                                cpu_clear(cpu, map);
                }
                cpus_and(map, map, cpu_online_map);
+               /*
+                * We waited 1 sec, if a CPU still did not call idle
+                * it may be because it is in idle and not waking up
+                * because it has nothing to do.
+                * Give all the remaining CPUS a kick.
+                */
+               smp_call_function_mask(map, do_nothing, 0, 0);
        } while (!cpus_empty(map));
 
        set_cpus_allowed(current, tmp);