[lkml]   [2005]   [Jul]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
Patch in this message
Subject[PATCH] RealTimeSync Patch

I would like to get some feedback on this patch for the kernel. It's sole purpose is to help in reducing boot time by not waiting to synchronize the clock edge with the hardware clock. This when combined with other boot reduction patched can bring the kernel boot time to well under 10 seconds, in most cases two or three seconds. In a desktop system this patch is probably insignificant, howerver several patches like this in a set top box or cell phone will be signicant.

I understand that there may be some concerns with patches like these so I would like to start a discussion so that I can better understand what the issues are. The members of the CELinux Forum have quite a bit we would like to contribute.

Looking at the archives I see that a an intel patch was submitted back in October but I am unable to determine what the resolution was.

This patch included is for PPC but other architecutres are available on the patch web site below.

Detailed information on the patch can be found here:

In addition, other patches for boot time reduction can be found here:

Elias Kesh

* Fast boot options
Fast boot options (FASTBOOT) [N/y/?] (NEW) y
Disable synch on read of Real Time Clock (RTC_NO_SYNC) [N/y/?] (NEW) y

diff -u -pruN -X ../dontdiff linux-2.6.12/arch/ppc/kernel/time.c linux-2.6.12_rtc_patch/arch/ppc/kernel/time.c
--- linux-2.6.12/arch/ppc/kernel/time.c 2005-06-17 21:48:29.000000000 +0200
+++ linux-2.6.12_rtc_patch/arch/ppc/kernel/time.c 2005-07-02 00:27:37.000000000 +0200
@@ -282,8 +282,12 @@ EXPORT_SYMBOL(do_settimeofday);
/* This function is only called on the boot processor */
void __init time_init(void)
- time_t sec, old_sec;
- unsigned old_stamp, stamp, elapsed;
+ time_t sec;
+ unsigned stamp;
+ time_t old_sec;
+ unsigned old_stamp, elapsed;

if (ppc_md.time_init != NULL)
time_offset = ppc_md.time_init();
@@ -308,6 +312,7 @@ void __init time_init(void)
stamp = get_native_tbl();
if (ppc_md.get_rtc_time) {
sec = ppc_md.get_rtc_time();
elapsed = 0;
do {
old_stamp = stamp;
@@ -320,6 +325,7 @@ void __init time_init(void)
} while ( sec == old_sec && elapsed < 2*HZ*tb_ticks_per_jiffy);
if (sec==old_sec)
printk("Warning: real time clock seems stuck!\n");
xtime.tv_sec = sec;
xtime.tv_nsec = 0;
/* No update now, we just read the time from the RTC ! */
diff -u -pruN -X ../dontdiff linux-2.6.12/init/Kconfig linux-2.6.12_rtc_patch/init/Kconfig
--- linux-2.6.12/init/Kconfig 2005-06-17 21:48:29.000000000 +0200
+++ linux-2.6.12_rtc_patch/init/Kconfig 2005-07-02 00:27:37.000000000 +0200
@@ -275,6 +275,33 @@ config KALLSYMS_EXTRA_PASS
reported. KALLSYMS_EXTRA_PASS is only a temporary workaround while
you wait for kallsyms to be fixed.

+menuconfig FASTBOOT
+ bool "Fast boot options"
+ help
+ Say Y here to select among various options that can decrease
+ kernel boot time. These options may involve providing
+ hardcoded values for some parameters that the kernel usually
+ determines automatically.
+ This option is useful primarily on embedded systems.
+ If unsure, say N.
+config RTC_NO_SYNC
+ bool "Disable synch on read of Real Time Clock" if FASTBOOT
+ default n
+ help
+ The Real Time Clock is read aligned by default. That means a
+ series of reads of the RTC are done until it's verified that
+ the RTC's state has just changed. If you enable this feature,
+ this synchronization will not be performed. The result is that
+ the machine will boot up to 1 second faster.
+ A drawback is that, with this option enabled, your system
+ clock may drift from the correct value over the course
+ of several boot cycles (under certain circumstances).
+ If unsure, say N.

config PRINTK
default y

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
More majordomo info at
Please read the FAQ at

 \ /
  Last update: 2005-07-14 18:29    [from the cache]
©2003-2014 Jasper Spaans. hosted at Digital Ocean