1. 23 11月, 2011 1 次提交
    • R
      rtc: Disable the alarm in the hardware · c0afabd3
      Rabin Vincent 提交于
      Currently, the RTC code does not disable the alarm in the hardware.
      
      This means that after a sequence such as the one below (the files are in the
      RTC sysfs), the box will boot up after 2 minutes even though we've
      asked for the alarm to be turned off.
      
      	# echo $((`cat since_epoch`)+120) > wakealarm
      	# echo 0 > wakealarm
      	# poweroff
      
      Fix this by disabling the alarm when there are no timers to run.
      
      Cc: stable@kernel.org
      Cc: John Stultz <john.stultz@linaro.org>
      Signed-off-by: NRabin Vincent <rabin.vincent@stericsson.com>
      Signed-off-by: NJohn Stultz <john.stultz@linaro.org>
      c0afabd3
  2. 04 8月, 2011 1 次提交
  3. 27 7月, 2011 3 次提交
  4. 26 7月, 2011 5 次提交
  5. 02 7月, 2011 6 次提交
  6. 28 6月, 2011 1 次提交
  7. 24 6月, 2011 1 次提交
  8. 22 6月, 2011 1 次提交
    • J
      rtc: Avoid accumulating time drift in suspend/resume · 3dcad5ff
      John Stultz 提交于
      Because the RTC interface is only a second granular interface,
      each time we read from the RTC for suspend/resume, we introduce a
      half second (on average) of error.
      
      In order to avoid this error accumulating as the system is suspended
      over and over, this patch measures the time delta between the RTC
      and the system CLOCK_REALTIME.
      
      If the delta is less then 2 seconds from the last suspend, we compensate
      by using the previous time delta (keeping it close). If it is larger
      then 2 seconds, we assume the clock was set or has been changed, so we
      do no correction and update the delta.
      
      Note: If NTP is running, ths could seem to "fight" with the NTP corrected
      time, where as if the system time was off by 1 second, and NTP slewed the
      value in, a suspend/resume cycle could undo this correction, by trying to
      restore the previous offset from the RTC. However, without this patch,
      since each read could cause almost a full second worth of error, its
      possible to get almost 2 seconds of error just from the suspend/resume
      cycle alone, so this about equal to any offset added by the compensation.
      
      Further on systems that suspend/resume frequently, this should keep time
      closer then NTP could compensate for if the errors were allowed to
      accumulate.
      
      Credits to Arve Hjønnevåg for suggesting this solution.
      
      This patch also improves some of the variable names and adds more clear
      comments.
      
      CC: Arve Hjønnevåg <arve@android.com>
      CC: Thomas Gleixner <tglx@linutronix.de>
      Signed-off-by: NJohn Stultz <john.stultz@linaro.org>
      3dcad5ff
  9. 10 6月, 2011 1 次提交
  10. 09 6月, 2011 2 次提交
  11. 02 6月, 2011 2 次提交
  12. 27 5月, 2011 9 次提交
  13. 18 5月, 2011 1 次提交
  14. 12 5月, 2011 1 次提交
  15. 07 5月, 2011 5 次提交
    • U
      rtc: mc13xxx: Don't call rtc_device_register while holding lock · 156229b3
      Uwe Kleine-König 提交于
      Since commit f44f7f96 (RTC: Initialize kernel state from RTC)
      rtc_device_register reads the programmed alarm. As reading the alarm
      needs to take the mc13xxx lock, release it before calling
      rtc_device_register.
      
      This fixes a deadlock during boot:
      
      	INFO: task swapper:1 blocked for more than 120 seconds.
      	"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
      	swapper         D c02b175c     0     1      0 0x00000000
      	[<c02b175c>] (schedule+0x304/0x4f4) from [<c02b25a8>] (__mutex_lock_slowpath+0x7c/0x110)
      	[<c02b25a8>] (__mutex_lock_slowpath+0x7c/0x110) from [<c020b4cc>] (mc13xxx_rtc_read_time+0x1c/0x118)
      	[<c020b4cc>] (mc13xxx_rtc_read_time+0x1c/0x118) from [<c0208f04>] (__rtc_read_time+0x58/0x5c)
      	[<c0208f04>] (__rtc_read_time+0x58/0x5c) from [<c0209508>] (rtc_read_time+0x30/0x48)
      	[<c0209508>] (rtc_read_time+0x30/0x48) from [<c0209dd4>] (__rtc_read_alarm+0x1c/0x290)
      	[<c0209dd4>] (__rtc_read_alarm+0x1c/0x290) from [<c0208d58>] (rtc_device_register+0x150/0x27c)
      	[<c0208d58>] (rtc_device_register+0x150/0x27c) from [<c02b0b74>] (mc13xxx_rtc_probe+0x128/0x17c)
      	[<c02b0b74>] (mc13xxx_rtc_probe+0x128/0x17c) from [<c01d5280>] (platform_drv_probe+0x1c/0x24)
      	[<c01d5280>] (platform_drv_probe+0x1c/0x24) from [<c01d3e58>] (driver_probe_device+0x80/0x1a8)
      	[<c01d3e58>] (driver_probe_device+0x80/0x1a8) from [<c01d400c>] (__driver_attach+0x8c/0x90)
      	[<c01d400c>] (__driver_attach+0x8c/0x90) from [<c01d3654>] (bus_for_each_dev+0x60/0x8c)
      	[<c01d3654>] (bus_for_each_dev+0x60/0x8c) from [<c01d2f6c>] (bus_add_driver+0x180/0x248)
      	[<c01d2f6c>] (bus_add_driver+0x180/0x248) from [<c01d4664>] (driver_register+0x70/0x15c)
      	[<c01d4664>] (driver_register+0x70/0x15c) from [<c01d5700>] (platform_driver_probe+0x18/0x98)
      	[<c01d5700>] (platform_driver_probe+0x18/0x98) from [<c00273a8>] (do_one_initcall+0x2c/0x168)
      	[<c00273a8>] (do_one_initcall+0x2c/0x168) from [<c00083ac>] (kernel_init+0xa0/0x150)
      	[<c00083ac>] (kernel_init+0xa0/0x150) from [<c0033ff8>] (kernel_thread_exit+0x0/0x8)
      Reported-by: NVagrant Cascadian <vagrant@debian.org>
      Signed-off-by: NUwe Kleine-König <u.kleine-koenig@pengutronix.de>
      Closes: http://bugs.debian.org/625804
      [Tweaked commit log -jstultz]
      Signed-off-by: NJohn Stultz <john.stultz@linaro.org>
      156229b3
    • J
      rtc: rp5c01: Initialize drvdata before registering device · 130107b2
      John Stultz 提交于
      Commit f44f7f96 ("RTC: Initialize kernel state from RTC") uncovered
      an issue in a number of RTC drivers, where the drivers call
      rtc_device_register before initializing the device or platform drvdata.
      
      This frequently results in null pointer dereferences when the
      rtc_device_register immediately makes use of the rtc device, calling
      rtc_read_alarm.
      
      The solution is to ensure the drvdata is initialized prior to registering
      the rtc device.
      
      CC: Wolfram Sang <w.sang@pengutronix.de>
      CC: Alessandro Zummo <a.zummo@towertech.it>
      CC: Thomas Gleixner <tglx@linutronix.de>
      CC: rtc-linux@googlegroups.com
      Signed-off-by: NJohn Stultz <john.stultz@linaro.org>
      130107b2
    • J
      rtc: pcap: Initialize drvdata before registering device · 4b3687f9
      John Stultz 提交于
      Commit f44f7f96 ("RTC: Initialize kernel state from RTC") uncovered
      an issue in a number of RTC drivers, where the drivers call
      rtc_device_register before initializing the device or platform drvdata.
      
      This frequently results in null pointer dereferences when the
      rtc_device_register immediately makes use of the rtc device, calling
      rtc_read_alarm.
      
      The solution is to ensure the drvdata is initialized prior to registering
      the rtc device.
      
      CC: Wolfram Sang <w.sang@pengutronix.de>
      CC: Alessandro Zummo <a.zummo@towertech.it>
      CC: Thomas Gleixner <tglx@linutronix.de>
      CC: rtc-linux@googlegroups.com
      Signed-off-by: NJohn Stultz <john.stultz@linaro.org>
      4b3687f9
    • J
      rtc: msm6242: Initialize drvdata before registering device · 93015236
      John Stultz 提交于
      Commit f44f7f96 ("RTC: Initialize kernel state from RTC") uncovered
      an issue in a number of RTC drivers, where the drivers call
      rtc_device_register before initializing the device or platform drvdata.
      
      This frequently results in null pointer dereferences when the
      rtc_device_register immediately makes use of the rtc device, calling
      rtc_read_alarm.
      
      The solution is to ensure the drvdata is initialized prior to registering
      the rtc device.
      
      CC: Wolfram Sang <w.sang@pengutronix.de>
      CC: Alessandro Zummo <a.zummo@towertech.it>
      CC: Thomas Gleixner <tglx@linutronix.de>
      CC: rtc-linux@googlegroups.com
      Signed-off-by: NJohn Stultz <john.stultz@linaro.org>
      93015236
    • J
      rtc: max8998: Initialize drvdata before registering device · 03cf7c47
      John Stultz 提交于
      Commit f44f7f96 ("RTC: Initialize kernel state from RTC") uncovered
      an issue in a number of RTC drivers, where the drivers call
      rtc_device_register before initializing the device or platform drvdata.
      
      This frequently results in null pointer dereferences when the
      rtc_device_register immediately makes use of the rtc device, calling
      rtc_read_alarm.
      
      The solution is to ensure the drvdata is initialized prior to registering
      the rtc device.
      
      CC: Wolfram Sang <w.sang@pengutronix.de>
      CC: Alessandro Zummo <a.zummo@towertech.it>
      CC: Thomas Gleixner <tglx@linutronix.de>
      CC: rtc-linux@googlegroups.com
      Signed-off-by: NJohn Stultz <john.stultz@linaro.org>
      03cf7c47