Re: [PATCH] RTC: Fix CMOS time error after writing /proc/acpi/alarm

Previous thread: [BUG] While changing the cpufreq governor, kernel hits a bug in workqueue.c by Nageswara R Sastry on Monday, June 23, 2008 - 6:51 am. (22 messages)

Next thread: [PATCH] cpia2: use request_firmware() by David Woodhouse on Monday, June 23, 2008 - 7:03 am. (2 messages)
To: <linux-acpi@...>, <linux-pm@...>, <rtc-linux@...>, <lenb@...>, <p_gortmaker@...>, <a.zummo@...>
Cc: <linux-kernel@...>
Date: Monday, June 23, 2008 - 6:52 am

From: Huacai Chen <huacai.chen@intel.com>

When writing /proc/acpi/alarm in adjust mode, e.g.
echo "+0000-00-00 00:00:15" >/proc/acpi/alarm
The "century" field should be read and added to "year" field before
writing, otherwise the CMOS time will go back to 2000 years ago, e.g.
# cat /proc/acpi/alarm
0008-06-21 11:38:46
Then the system time may be reset to the date of manufacture after
rebooting. This patch fixed this issue.

Signed-off-by: Huacai Chen <huacai.chen@intel.com>
Acked-by: Pavel Machek <pavel@suse.cz>
---
diff --git a/drivers/acpi/sleep/proc.c b/drivers/acpi/sleep/proc.c
index 224c57c..c9fdf7b 100644
--- a/drivers/acpi/sleep/proc.c
+++ b/drivers/acpi/sleep/proc.c
@@ -315,8 +315,11 @@ acpi_system_write_alarm(struct file *file,
cmos_bcd_write(day, acpi_gbl_FADT.day_alarm,
rtc_control);
if (acpi_gbl_FADT.month_alarm)
cmos_bcd_write(mo, acpi_gbl_FADT.month_alarm,
rtc_control);
- if (acpi_gbl_FADT.century)
+ if (acpi_gbl_FADT.century) {
+ if (adjust)
+ yr += cmos_bcd_read(acpi_gbl_FADT.century,
rtc_control) * 100;
cmos_bcd_write(yr / 100, acpi_gbl_FADT.century,
rtc_control);
+ }
/* enable the rtc alarm interrupt */
rtc_control |= RTC_AIE;
CMOS_WRITE(rtc_control, RTC_CONTROL);
---
This is for Linux 2.6.26-rc7.
--

To: <rtc-linux@...>
Cc: <huacai.chen@...>, <linux-acpi@...>, <linux-pm@...>, <lenb@...>, <p_gortmaker@...>, <linux-kernel@...>, <akpm@...>
Date: Wednesday, June 25, 2008 - 4:44 am

On Mon, 23 Jun 2008 18:52:21 +0800

Acked-by: Alessandro Zummo <a.zummo@towertech.it>

--

Best regards,

Alessandro Zummo,
Tower Technologies - Torino, Italy

http://www.towertech.it

--

To: Chen, Huacai <huacai.chen@...>
Cc: <linux-acpi@...>, <linux-pm@...>, <rtc-linux@...>, <lenb@...>, <p_gortmaker@...>, <a.zummo@...>, <linux-kernel@...>
Date: Tuesday, June 24, 2008 - 2:37 am

--

Previous thread: [BUG] While changing the cpufreq governor, kernel hits a bug in workqueue.c by Nageswara R Sastry on Monday, June 23, 2008 - 6:51 am. (22 messages)

Next thread: [PATCH] cpia2: use request_firmware() by David Woodhouse on Monday, June 23, 2008 - 7:03 am. (2 messages)