2007-12-20 14:49:27

by Bernhard Walle

[permalink] [raw]
Subject: [PATCH] Fix RTC_AIE with CONFIG_HPET_EMULATE_RTC

In the current code, RTC_AIE doesn't work if the RTC relies on
CONFIG_HPET_EMULATE_RTC because the code sets the RTC_AIE flag
in hpet_set_rtc_irq_bit(). The interrupt handles does accidentally
check for RTC_PIE and not RTC_AIE when comparing the time
which was set in hpet_set_alarm_time().

This patch is against 2.6.24-rc5-mm1.


Signed-off-by: Bernhard Walle <[email protected]>

---
arch/x86/kernel/hpet.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

--- a/arch/x86/kernel/hpet.c
+++ b/arch/x86/kernel/hpet.c
@@ -657,7 +657,7 @@ irqreturn_t hpet_rtc_interrupt(int irq,
hpet_pie_count = 0;
}

- if (hpet_rtc_flags & RTC_PIE &&
+ if (hpet_rtc_flags & RTC_AIE &&
(curr_time.tm_sec == hpet_alarm_time.tm_sec) &&
(curr_time.tm_min == hpet_alarm_time.tm_min) &&
(curr_time.tm_hour == hpet_alarm_time.tm_hour))


2007-12-23 18:38:19

by Clemens Ladisch

[permalink] [raw]
Subject: Re: [PATCH] Fix RTC_AIE with CONFIG_HPET_EMULATE_RTC

Bernhard Walle wrote:
> In the current code, RTC_AIE doesn't work if the RTC relies on
> CONFIG_HPET_EMULATE_RTC because the code sets the RTC_AIE flag
> in hpet_set_rtc_irq_bit(). The interrupt handles does accidentally
> check for RTC_PIE and not RTC_AIE when comparing the time
> which was set in hpet_set_alarm_time().
>
> This patch is against 2.6.24-rc5-mm1.
>
>
> Signed-off-by: Bernhard Walle <[email protected]>

Acked-by: Clemens Ladisch <[email protected]>

> ---
> arch/x86/kernel/hpet.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> --- a/arch/x86/kernel/hpet.c
> +++ b/arch/x86/kernel/hpet.c
> @@ -657,7 +657,7 @@ irqreturn_t hpet_rtc_interrupt(int irq,
> hpet_pie_count = 0;
> }
>
> - if (hpet_rtc_flags & RTC_PIE &&
> + if (hpet_rtc_flags & RTC_AIE &&
> (curr_time.tm_sec == hpet_alarm_time.tm_sec) &&
> (curr_time.tm_min == hpet_alarm_time.tm_min) &&
> (curr_time.tm_hour == hpet_alarm_time.tm_hour))