timekeeping: Increase granularity of read_persistent_clock(), build fix
authorMartin Schwidefsky <schwidefsky@de.ibm.com>
Sat, 22 Aug 2009 20:23:13 +0000 (22:23 +0200)
committerIngo Molnar <mingo@elte.hu>
Sun, 23 Aug 2009 08:49:48 +0000 (10:49 +0200)
Fix the following build problem on powerpc:

  arch/powerpc/kernel/time.c: In function 'read_persistent_clock':
  arch/powerpc/kernel/time.c:788: error: 'return' with a value, in function returning void
  arch/powerpc/kernel/time.c:791: error: 'return' with a value, in function returning void

Reported-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: dwalker@fifo99.com
Cc: johnstul@us.ibm.com
LKML-Reference: <20090822222313.74b9619c@skybase>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/powerpc/kernel/time.c

index ad63f30fe3dadfc6b7e2cffe09966562e84456d8..a508388fb87c1993493b22df19b50deb41e9ab65 100644 (file)
@@ -774,6 +774,7 @@ void read_persistent_clock(struct timespec *ts)
        struct rtc_time tm;
        static int first = 1;
 
+       ts->tv_nsec = 0;
        /* XXX this is a litle fragile but will work okay in the short term */
        if (first) {
                first = 0;
@@ -781,15 +782,18 @@ void read_persistent_clock(struct timespec *ts)
                        timezone_offset = ppc_md.time_init();
 
                /* get_boot_time() isn't guaranteed to be safe to call late */
-               if (ppc_md.get_boot_time)
-                       return ppc_md.get_boot_time() -timezone_offset;
+               if (ppc_md.get_boot_time) {
+                       ts->tv_sec = ppc_md.get_boot_time() - timezone_offset;
+                       return;
+               }
+       }
+       if (!ppc_md.get_rtc_time) {
+               ts->tv_sec = 0;
+               return;
        }
-       if (!ppc_md.get_rtc_time)
-               return 0;
        ppc_md.get_rtc_time(&tm);
        ts->tv_sec = mktime(tm.tm_year+1900, tm.tm_mon+1, tm.tm_mday,
                            tm.tm_hour, tm.tm_min, tm.tm_sec);
-       ts->tv_nsec = 0;
 }
 
 /* clocksource code */