aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86_64
diff options
context:
space:
mode:
authorVenki Pallipadi <venkatesh.pallipadi@intel.com>2007-07-21 11:10:44 -0400
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-07-21 21:37:10 -0400
commit22293e5806f58a9682267139678a5cc117fd3dcf (patch)
tree63f1961afb05a4757f9716ab2339f40b1f28f3b2 /arch/x86_64
parent459029541d857258dfa9ad29e443d287a74c36fe (diff)
x86: round_jiffies() for i386 and x86-64 non-critical/corrected MCE polling
This helps to reduce the frequency at which the CPU must be taken out of a lower-power state. Signed-off-by: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com> Acked-by: Tim Hockin <thockin@hockin.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Andi Kleen <ak@suse.de> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'arch/x86_64')
-rw-r--r--arch/x86_64/kernel/mce.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/arch/x86_64/kernel/mce.c b/arch/x86_64/kernel/mce.c
index 7c8ab423abe3..4d8450ee3635 100644
--- a/arch/x86_64/kernel/mce.c
+++ b/arch/x86_64/kernel/mce.c
@@ -375,7 +375,8 @@ static void mcheck_timer(struct work_struct *work)
375 if (mce_notify_user()) { 375 if (mce_notify_user()) {
376 next_interval = max(next_interval/2, HZ/100); 376 next_interval = max(next_interval/2, HZ/100);
377 } else { 377 } else {
378 next_interval = min(next_interval*2, check_interval*HZ); 378 next_interval = min(next_interval*2,
379 (int)round_jiffies_relative(check_interval*HZ));
379 } 380 }
380 381
381 schedule_delayed_work(&mcheck_work, next_interval); 382 schedule_delayed_work(&mcheck_work, next_interval);
@@ -428,7 +429,8 @@ static __init int periodic_mcheck_init(void)
428{ 429{
429 next_interval = check_interval * HZ; 430 next_interval = check_interval * HZ;
430 if (next_interval) 431 if (next_interval)
431 schedule_delayed_work(&mcheck_work, next_interval); 432 schedule_delayed_work(&mcheck_work,
433 round_jiffies_relative(next_interval));
432 idle_notifier_register(&mce_idle_notifier); 434 idle_notifier_register(&mce_idle_notifier);
433 return 0; 435 return 0;
434} 436}
@@ -720,7 +722,8 @@ static void mce_restart(void)
720 on_each_cpu(mce_init, NULL, 1, 1); 722 on_each_cpu(mce_init, NULL, 1, 1);
721 next_interval = check_interval * HZ; 723 next_interval = check_interval * HZ;
722 if (next_interval) 724 if (next_interval)
723 schedule_delayed_work(&mcheck_work, next_interval); 725 schedule_delayed_work(&mcheck_work,
726 round_jiffies_relative(next_interval));
724} 727}
725 728
726static struct sysdev_class mce_sysclass = { 729static struct sysdev_class mce_sysclass = {