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))
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))