mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
x86: clean up hpet timer reinit
Implement Linus's suggestion: introduce the hpet_cnt_ahead() helper function to compare hpet time values - like other wrapping counter comparisons are abstracted away elsewhere. (jiffies, ktime_t, etc.) Reported-by: Kirill Korotaev <dev@openvz.org> Signed-off-by: Pavel Emelyanov <xemul@openvz.org> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
7d8e23df69
commit
ff08f76d73
1 changed files with 10 additions and 2 deletions
|
@ -897,13 +897,21 @@ static unsigned long hpet_rtc_flags;
|
||||||
static int hpet_prev_update_sec;
|
static int hpet_prev_update_sec;
|
||||||
static struct rtc_time hpet_alarm_time;
|
static struct rtc_time hpet_alarm_time;
|
||||||
static unsigned long hpet_pie_count;
|
static unsigned long hpet_pie_count;
|
||||||
static unsigned long hpet_t1_cmp;
|
static u32 hpet_t1_cmp;
|
||||||
static unsigned long hpet_default_delta;
|
static unsigned long hpet_default_delta;
|
||||||
static unsigned long hpet_pie_delta;
|
static unsigned long hpet_pie_delta;
|
||||||
static unsigned long hpet_pie_limit;
|
static unsigned long hpet_pie_limit;
|
||||||
|
|
||||||
static rtc_irq_handler irq_handler;
|
static rtc_irq_handler irq_handler;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Check that the hpet counter c1 is ahead of the c2
|
||||||
|
*/
|
||||||
|
static inline int hpet_cnt_ahead(u32 c1, u32 c2)
|
||||||
|
{
|
||||||
|
return (s32)(c2 - c1) < 0;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Registers a IRQ handler.
|
* Registers a IRQ handler.
|
||||||
*/
|
*/
|
||||||
|
@ -1075,7 +1083,7 @@ static void hpet_rtc_timer_reinit(void)
|
||||||
hpet_t1_cmp += delta;
|
hpet_t1_cmp += delta;
|
||||||
hpet_writel(hpet_t1_cmp, HPET_T1_CMP);
|
hpet_writel(hpet_t1_cmp, HPET_T1_CMP);
|
||||||
lost_ints++;
|
lost_ints++;
|
||||||
} while ((s32)(hpet_readl(HPET_COUNTER) - hpet_t1_cmp) > 0);
|
} while (!hpet_cnt_ahead(hpet_t1_cmp, hpet_readl(HPET_COUNTER)));
|
||||||
|
|
||||||
if (lost_ints) {
|
if (lost_ints) {
|
||||||
if (hpet_rtc_flags & RTC_PIE)
|
if (hpet_rtc_flags & RTC_PIE)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue