Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-tip
* 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-tip: x86: Fix double enable_IR_x2apic() call on SMP kernel on !SMP boards x86: Increase CONFIG_NODES_SHIFT max to 10 ibft, x86: Change reserve_ibft_region() to find_ibft_region() x86, hpet: Fix bug in RTC emulation x86, hpet: Erratum workaround for read after write of HPET comparator bootmem, x86: Fix 32bit numa system without RAM on node 0 nobootmem, x86: Fix 32bit numa system without RAM on node 0 x86: Handle overlapping mptables x86: Make e820_remove_range to handle all covered case x86-32, resume: do a global tlb flush in S4 resume
This commit is contained in:
@@ -400,9 +400,15 @@ static int hpet_next_event(unsigned long delta,
|
||||
* then we might have a real hardware problem. We can not do
|
||||
* much about it here, but at least alert the user/admin with
|
||||
* a prominent warning.
|
||||
* An erratum on some chipsets (ICH9,..), results in comparator read
|
||||
* immediately following a write returning old value. Workaround
|
||||
* for this is to read this value second time, when first
|
||||
* read returns old value.
|
||||
*/
|
||||
WARN_ONCE(hpet_readl(HPET_Tn_CMP(timer)) != cnt,
|
||||
if (unlikely((u32)hpet_readl(HPET_Tn_CMP(timer)) != cnt)) {
|
||||
WARN_ONCE(hpet_readl(HPET_Tn_CMP(timer)) != cnt,
|
||||
KERN_WARNING "hpet: compare register read back failed.\n");
|
||||
}
|
||||
|
||||
return (s32)(hpet_readl(HPET_COUNTER) - cnt) >= 0 ? -ETIME : 0;
|
||||
}
|
||||
@@ -1144,6 +1150,7 @@ int hpet_set_periodic_freq(unsigned long freq)
|
||||
do_div(clc, freq);
|
||||
clc >>= hpet_clockevent.shift;
|
||||
hpet_pie_delta = clc;
|
||||
hpet_pie_limit = 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
Reference in New Issue
Block a user