From f13fa025c6a2d28d46d69d2544d0ba3bd8d73b4d Mon Sep 17 00:00:00 2001 From: Petr Vandrovec Date: Fri, 5 Aug 2005 15:50:07 +0200 Subject: [PATCH] --- yaml --- r: 5665 b: refs/heads/master c: 403fe5ae57c831968c3dbbaba291ae825a1c5aaa h: refs/heads/master i: 5663: 73bc119881382b0340b5f419fe473b7fde9b1ecd v: v3 --- [refs] | 2 +- trunk/drivers/char/rtc.c | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index fa00a591b312..d8f5a430214f 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 2f60f8d3573ff90fe5d75a6d11fd2add1248e7d6 +refs/heads/master: 403fe5ae57c831968c3dbbaba291ae825a1c5aaa diff --git a/trunk/drivers/char/rtc.c b/trunk/drivers/char/rtc.c index d8f9e94ae475..cd4fe8b1709f 100644 --- a/trunk/drivers/char/rtc.c +++ b/trunk/drivers/char/rtc.c @@ -1209,6 +1209,7 @@ static int rtc_proc_open(struct inode *inode, struct file *file) void rtc_get_rtc_time(struct rtc_time *rtc_tm) { + unsigned long uip_watchdog = jiffies; unsigned char ctrl; #ifdef CONFIG_MACH_DECSTATION unsigned int real_year; @@ -1224,8 +1225,10 @@ void rtc_get_rtc_time(struct rtc_time *rtc_tm) * Once the read clears, read the RTC time (again via ioctl). Easy. */ - if (rtc_is_updating() != 0) - msleep(20); + while (rtc_is_updating() != 0 && jiffies - uip_watchdog < 2*HZ/100) { + barrier(); + cpu_relax(); + } /* * Only the values that we read from the RTC are set. We leave