mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-10-31 08:44:41 +00:00 
			
		
		
		
	rtc: fix CMOS time error after writing /proc/acpi/alarm
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> Acked-by: Zhao Yakui <yakui.zhao@intel.com> Acked-by: Alessandro Zummo <a.zummo@towertech.it> Acked-by: Len Brown <lenb@kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
		
							parent
							
								
									471d47e322
								
							
						
					
					
						commit
						cce3ce89c1
					
				
					 1 changed files with 4 additions and 1 deletions
				
			
		|  | @ -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); | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Huacai Chen
						Huacai Chen