clocksource / timekeeping rework V4 (resend V3 + bug fix)
Subsystems (10)
cover clocksource / timekeeping rework V4 (resend V3 + bug fix)
Greetings,
version 4 of the clocksource / timekeeping cleanup patches. If you wonder why version 3 did not show up on the mailing list: I had a hiccup with quilt which did strange things to the message ids and the post to lkml got rejected. Sorry for the spamming of the people on Cc.
John pointed out a subtle bug in v3 of the patch set with the reset of the cycle_last value in timekeeping_resume. Fixed in v4.
The latest additions are:
1) Change read_persistent_clock to return a struct timespec instead of an unsigned long with the number of seconds.
2) Introduce read_boot_clock to initialize wall_to_monotonic.
3) Move the reset of cycle_last to zero from the timekeeping code to the TSC code.
The patch set is based on todays upstream tree plus the patches from the tip tree, if anyone wants to try them you need to pull from the master branch of
git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-tip
Keeping the fingers crossed that this is now really done. John already gave his thumbs up for the patch series, so the next logical question is who is going to sit on the patches until the merge window is opened? I can certainly create a git branch on git390 for them, but the patches depend on some patches in the x86-tip tree. Thomas, any thoughts?
Signature · 4 lines
blue skies, Martin. "Reality continues to ruin my life." - Calvin.
PATCH 1/15 introduce timekeeping_leap_insert
From: john stultz <[email protected]>
--- include/linux/time.h | 1 + kernel/time/ntp.c | 7 ++----- kernel/time/timekeeping.c | 7 +++++++ 3 files changed, 10 insertions(+), 5 deletions(-)
include/linux/time.h +1 -0
@@ -147,6 +147,7 @@ extern struct timespec timespec_trunc(stextern int timekeeping_valid_for_hres (void );extern void update_wall_time (void );extern void update_xtime_cache (u64 nsec); +extern void timekeeping_leap_insert (int leapsecond);struct tms ;extern void do_sys_times (struct tms *);
kernel/time/ntp.c +2 -5
@@ -194,8 +194,7 @@ static enum hrtimer_restart ntp_leap_seccase TIME_OK :break ;case TIME_INS : - xtime.tv_sec--; - wall_to_monotonic.tv_sec++; +timekeeping_leap_insert (-1 ); time_state =TIME_OOP ;printk (KERN_NOTICE "Clock: inserting leap second 23:59:60 UTC\n" );
@@ -203,9 +202,8 @@ static enum hrtimer_restart ntp_leap_sec res =HRTIMER_RESTART ;break ;case TIME_DEL : - xtime.tv_sec++; +timekeeping_leap_insert (1 ); time_tai--; - wall_to_monotonic.tv_sec--; time_state =TIME_WAIT ;printk (KERN_NOTICE "Clock: deleting leap second 23:59:59 UTC\n" );
@@ -219,7 +217,6 @@ static enum hrtimer_restart ntp_leap_sec time_state =TIME_OK ;break ; } -update_vsyscall (&xtime, clock);write_sequnlock (&xtime_lock);
kernel/time/timekeeping.c +7 -0
@@ -58,6 +58,13 @@ void update_xtime_cache(u64 nsec)struct clocksource *clock; +/* must hold xtime_lock */ +void timekeeping_leap_insert (int leapsecond) +{ + xtime.tv_sec += leapsecond; + wall_to_monotonic.tv_sec -= leapsecond; +update_vsyscall (&xtime, clock); +}#ifdef CONFIG_GENERIC_TIME /**
Signature · 4 lines
blue skies, Martin. "Reality continues to ruin my life." - Calvin.
[tip:timers/core] timekeeping: Introduce timekeeping_leap_insert
Commit-ID: 31089c13bcb18d2cd2a3ddfbe3a28666346f237e Gitweb: http://git.kernel.org/tip/31089c13bcb18d2cd2a3ddfbe3a28666346f237e Author: John Stultz <[email protected]> AuthorDate: Fri, 14 Aug 2009 15:47:18 +0200 Committer: Thomas Gleixner <[email protected]> CommitDate: Sat, 15 Aug 2009 10:55:45 +0200
timekeeping: Introduce timekeeping_leap_insert
Move the adjustment of xtime, wall_to_monotonic and the update of the vsyscall variables to the timekeeping code.
LKML-Reference: <[email protected]>
--- include/linux/time.h | 1 + kernel/time/ntp.c | 7 ++----- kernel/time/timekeeping.c | 7 +++++++ 3 files changed, 10 insertions(+), 5 deletions(-)
include/linux/time.h +1 -0
@@ -147,6 +147,7 @@ extern struct timespec timespec_trunc(struct timespec t, unsigned gran);extern int timekeeping_valid_for_hres (void );extern void update_wall_time (void );extern void update_xtime_cache (u64 nsec); +extern void timekeeping_leap_insert (int leapsecond);struct tms ;extern void do_sys_times (struct tms *);
kernel/time/ntp.c +2 -5
@@ -194,8 +194,7 @@ static enum hrtimer_restart ntp_leap_second(struct hrtimer *timer)case TIME_OK :break ;case TIME_INS : - xtime.tv_sec--; - wall_to_monotonic.tv_sec++; +timekeeping_leap_insert (-1 ); time_state =TIME_OOP ;printk (KERN_NOTICE "Clock: inserting leap second 23:59:60 UTC\n" );
@@ -203,9 +202,8 @@ static enum hrtimer_restart ntp_leap_second(struct hrtimer *timer) res =HRTIMER_RESTART ;break ;case TIME_DEL : - xtime.tv_sec++; +timekeeping_leap_insert (1 ); time_tai--; - wall_to_monotonic.tv_sec--; time_state =TIME_WAIT ;printk (KERN_NOTICE "Clock: deleting leap second 23:59:59 UTC\n" );
@@ -219,7 +217,6 @@ static enum hrtimer_restart ntp_leap_second(struct hrtimer *timer) time_state =TIME_OK ;break ; } -update_vsyscall (&xtime, clock);write_sequnlock (&xtime_lock);
kernel/time/timekeeping.c +7 -0
@@ -58,6 +58,13 @@ void update_xtime_cache(u64 nsec)struct clocksource *clock; +/* must hold xtime_lock */ +void timekeeping_leap_insert (int leapsecond) +{ + xtime.tv_sec += leapsecond; + wall_to_monotonic.tv_sec -= leapsecond; +update_vsyscall (&xtime, clock); +}#ifdef CONFIG_GENERIC_TIME /**
PATCH 2/15 remove clocksource inline functions
In reply to Martin SchwidefskyFrom: Martin Schwidefsky <[email protected]>
The three inline functions clocksource_read, clocksource_enable and clocksource_disable are simple wrappers of an indirect call plus the copy from and to the mult_orig value. The functions are exclusively used by the timekeeping code which has intimate knowledge of the clocksource anyway. Therefore remove the inline functions. No functional change.
--- include/linux/clocksource.h | 58 -------------------------------------------- kernel/time/timekeeping.c | 41 +++++++++++++++++++++---------- 2 files changed, 28 insertions(+), 71 deletions(-)
kernel/time/timekeeping.c +28 -13
@@ -79,7 +79,7 @@ static void clocksource_forward_now(voidcycle_t cycle_now, cycle_delta;s64 nsec; - cycle_now =clocksource_read (clock); + cycle_now = clock->read (clock); cycle_delta = (cycle_now - clock->cycle_last) & clock->mask; clock->cycle_last = cycle_now;
@@ -114,7 +114,7 @@ void getnstimeofday(struct timespec *ts) *ts = xtime;/* read clocksource: */ - cycle_now =clocksource_read (clock); + cycle_now = clock->read (clock);/* calculate the delta since the last update_wall_time: */ cycle_delta = (cycle_now - clock->cycle_last) & clock->mask;
@@ -146,7 +146,7 @@ ktime_t ktime_get(void) nsecs = xtime.tv_nsec + wall_to_monotonic.tv_nsec;/* read clocksource: */ - cycle_now =clocksource_read (clock); + cycle_now = clock->read (clock);/* calculate the delta since the last update_wall_time: */ cycle_delta = (cycle_now - clock->cycle_last) & clock->mask;
@@ -186,7 +186,7 @@ void ktime_get_ts(struct timespec *ts) tomono = wall_to_monotonic;/* read clocksource: */ - cycle_now =clocksource_read (clock); + cycle_now = clock->read (clock);/* calculate the delta since the last update_wall_time: */ cycle_delta = (cycle_now - clock->cycle_last) & clock->mask;
@@ -274,16 +274,29 @@ static void change_clocksource(void)clocksource_forward_now (); -if (clocksource_enable (new)) +if (new->enable && ! new->enable (new))return ; +/* +* The frequency may have changed while the clocksource +* was disabled. If so the code in ->enable() must update +* the mult value to reflect the new frequency. Make sure +* mult_orig follows this change. +*/ + new->mult_orig = new->mult; new->raw_time = clock->raw_time; old = clock; clock = new; -clocksource_disable (old); +/* +* Save mult_orig in mult so that the value can be restored +* regardless if ->enable() updates the value of mult or not. +*/ + old->mult = old->mult_orig; +if (old->disable) + old->disable (old); clock->cycle_last =0 ; - clock->cycle_last =clocksource_read (clock); + clock->cycle_last = clock->read (clock); clock->error =0 ; clock->xtime_nsec =0 ;clocksource_calculate_interval (clock,NTP_INTERVAL_LENGTH );
@@ -373,7 +386,7 @@ void getrawmonotonic(struct timespec *ts seq =read_seqbegin (&xtime_lock);/* read clocksource: */ - cycle_now =clocksource_read (clock); + cycle_now = clock->read (clock);/* calculate the delta since the last update_wall_time: */ cycle_delta = (cycle_now - clock->cycle_last) & clock->mask;
@@ -435,9 +448,12 @@ void __init timekeeping_init(void)ntp_init (); clock =clocksource_get_next (); -clocksource_enable (clock); +if (clock->enable) + clock->enable (clock); +/* set mult_orig on enable */ + clock->mult_orig = clock->mult;clocksource_calculate_interval (clock,NTP_INTERVAL_LENGTH ); - clock->cycle_last =clocksource_read (clock); + clock->cycle_last = clock->read (clock); xtime.tv_sec = sec; xtime.tv_nsec =0 ;
@@ -477,8 +493,7 @@ static int timekeeping_resume(struct sys }update_xtime_cache (0 );/* re-base the last cycle value */ - clock->cycle_last =0 ; - clock->cycle_last =clocksource_read (clock); + clock->cycle_last = clock->read (clock); clock->error =0 ; timekeeping_suspended =0 ;write_sequnlock_irqrestore (&xtime_lock, flags);
@@ -630,7 +645,7 @@ void update_wall_time(void)return ;#ifdef CONFIG_GENERIC_TIME - offset = (clocksource_read (clock) - clock->cycle_last) & clock->mask; + offset = (clock->read (clock) - clock->cycle_last) & clock->mask;#else offset = clock->cycle_interval;#endif
include/linux/clocksource.h +0 -58
64 lines not on this page · raw message
Signature · 4 lines
blue skies, Martin. "Reality continues to ruin my life." - Calvin.
[tip:timers/core] timekeeping: Remove clocksource inline functions
Commit-ID: a0f7d48bfb95a4c5172a2756dbc4b82afc8e9ae4 Gitweb: http://git.kernel.org/tip/a0f7d48bfb95a4c5172a2756dbc4b82afc8e9ae4 Author: Martin Schwidefsky <[email protected]> AuthorDate: Fri, 14 Aug 2009 15:47:19 +0200 Committer: Thomas Gleixner <[email protected]> CommitDate: Sat, 15 Aug 2009 10:55:45 +0200
timekeeping: Remove clocksource inline functions
The three inline functions clocksource_read, clocksource_enable and clocksource_disable are simple wrappers of an indirect call plus the copy from and to the mult_orig value. The functions are exclusively used by the timekeeping code which has intimate knowledge of the clocksource anyway. Therefore remove the inline functions. No functional change.
LKML-Reference: <[email protected]>
--- include/linux/clocksource.h | 58 ------------------------------------------- kernel/time/timekeeping.c | 41 ++++++++++++++++++++--------- 2 files changed, 28 insertions(+), 71 deletions(-)
include/linux/clocksource.h +0 -58
@@ -268,64 +268,6 @@ static inline u32 clocksource_hz2mult(u32 hz, u32 shift_constant) }/** -* clocksource_read: - Access the clocksource's current cycle value -* @cs: pointer to clocksource being read -* -* Uses the clocksource to return the current cycle_t value -*/ -static inline cycle_t clocksource_read (struct clocksource *cs) -{ -return cs->read (cs); -} - -/** -* clocksource_enable: - enable clocksource -* @cs: pointer to clocksource -* -* Enables the specified clocksource. The clocksource callback -* function should start up the hardware and setup mult and field -* members of struct clocksource to reflect hardware capabilities. -*/ -static inline int clocksource_enable (struct clocksource *cs) -{ -int ret =0 ; - -if (cs->enable) - ret = cs->enable (cs); - -/* -* The frequency may have changed while the clocksource -* was disabled. If so the code in ->enable() must update -* the mult value to reflect the new frequency. Make sure -* mult_orig follows this change. -*/ - cs->mult_orig = cs->mult; - -return ret; -} - -/** -* clocksource_disable: - disable clocksource -* @cs: pointer to clocksource -* -* Disables the specified clocksource. The clocksource callback -* function should power down the now unused hardware block to -* save power. -*/ -static inline void clocksource_disable (struct clocksource *cs) -{ -/* -* Save mult_orig in mult so clocksource_enable() can -* restore the value regardless if ->enable() updates -* the value of mult or not. -*/ - cs->mult = cs->mult_orig; - -if (cs->disable) - cs->disable (cs); -} - -/** * cyc2ns - converts clocksource cycles to nanoseconds * @cs: Pointer to clocksource * @cycles: Cycles
kernel/time/timekeeping.c +28 -13
103 lines not on this page · raw message
PATCH 3/15 reset of cycle_last for tsc clocksource
In reply to Martin SchwidefskyFrom: Martin Schwidefsky <[email protected]>
change_clocksource resets the cycle_last value to zero then sets it to a value read from the clocksource. The reset to zero is required only for the TSC clocksource to make the read_tsc function work. This is subtle and surprising. Move the reset to a resume function in the tsc code.
--- arch/x86/kernel/tsc.c | 6 ++++++ kernel/time/timekeeping.c | 1 - 2 files changed, 6 insertions(+), 1 deletion(-)
arch/x86/kernel/tsc.c +6 -0
@@ -744,10 +744,16 @@ static cycle_t __vsyscall_fn vread_tsc(v }#endif +static void resume_tsc (void ) +{ + clocksource_tsc.cycle_last =0 ; +} +static struct clocksource clocksource_tsc = { .name ="tsc" , .rating =300 , .read = read_tsc, + .resume = resume_tsc, .mask =CLOCKSOURCE_MASK (64 ), .shift =22 , .flags = CLOCK_SOURCE_IS_CONTINUOUS |
kernel/time/timekeeping.c +0 -1
@@ -295,7 +295,6 @@ static void change_clocksource(void)if (old->disable) old->disable (old); - clock->cycle_last =0 ; clock->cycle_last = clock->read (clock); clock->error =0 ; clock->xtime_nsec =0 ;
Signature · 4 lines
blue skies, Martin. "Reality continues to ruin my life." - Calvin.
[tip:timers/core] timekeeping: Move reset of cycle_last for tsc clocksource to tsc
Commit-ID: 1be396794897f80bfc8774719ba60309a9e3d374 Gitweb: http://git.kernel.org/tip/1be396794897f80bfc8774719ba60309a9e3d374 Author: Martin Schwidefsky <[email protected]> AuthorDate: Fri, 14 Aug 2009 15:47:20 +0200 Committer: Thomas Gleixner <[email protected]> CommitDate: Sat, 15 Aug 2009 10:55:45 +0200
timekeeping: Move reset of cycle_last for tsc clocksource to tsc
change_clocksource resets the cycle_last value to zero then sets it to a value read from the clocksource. The reset to zero is required only for the TSC clocksource to make the read_tsc function work after a resume. The reason is that the TSC read function uses cycle_last to detect backwards going TSCs. In the resume case cycle_last contains the TSC value from the last update before the suspend. On resume the TSC starts counting from 0 again and would trip over the cycle_last comparison.
This is subtle and surprising. Move the reset to a resume function in the tsc code.
LKML-Reference: <[email protected]>
--- arch/x86/kernel/tsc.c | 6 ++++++ kernel/time/timekeeping.c | 1 - 2 files changed, 6 insertions(+), 1 deletions(-)
arch/x86/kernel/tsc.c +6 -0
@@ -744,10 +744,16 @@ static cycle_t __vsyscall_fn vread_tsc(void) }#endif +static void resume_tsc (void ) +{ + clocksource_tsc.cycle_last =0 ; +} +static struct clocksource clocksource_tsc = { .name ="tsc" , .rating =300 , .read = read_tsc, + .resume = resume_tsc, .mask =CLOCKSOURCE_MASK (64 ), .shift =22 , .flags = CLOCK_SOURCE_IS_CONTINUOUS |
kernel/time/timekeeping.c +0 -1
@@ -295,7 +295,6 @@ static void change_clocksource(void)if (old->disable) old->disable (old); - clock->cycle_last =0 ; clock->cycle_last = clock->read (clock); clock->error =0 ; clock->xtime_nsec =0 ;
PATCH 4/15 cleanup clocksource selection
In reply to Martin SchwidefskyFrom: Martin Schwidefsky <[email protected]>
If a non high-resolution clocksource is first set as override clock and then registered it becomes active even if the system is in on-shot mode. Move the override check from sysfs_override_clocksource to the clocksource selection. That fixes the bug and simplifies the code. The check in clocksource_register for double registration of the same clocksource is removed without replacement.
To find the initial clocksource a new weak function in jiffies.c is defined that returns the jiffies clocksource. The architecture code can then override the weak function with a more suitable clocksource, e.g. the TOD clock on s390.
--- arch/s390/kernel/time.c | 4 + include/linux/clocksource.h | 2 kernel/time/clocksource.c | 138 ++++++++++++++++---------------------------- kernel/time/jiffies.c | 6 + kernel/time/timekeeping.c | 4 - 5 files changed, 65 insertions(+), 89 deletions(-)
kernel/time/clocksource.c +52 -86
@@ -21,7 +21,6 @@* * TODO WishList: * o Allow clocksource drivers to be unregistered -* o get rid of clocksource_jiffies extern */ #include <linux/clocksource.h>
@@ -107,12 +106,9 @@ u64 timecounter_cyc2time(struct timecoun }EXPORT_SYMBOL (timecounter_cyc2time); -/* XXX - Would like a better way for initializing curr_clocksource */ -extern struct clocksource clocksource_jiffies; -/*[Clocksource internal variables]--------- * curr_clocksource: -* currently selected clocksource. Initialized to clocksource_jiffies. +* currently selected clocksource. * next_clocksource: * pending next selected clocksource. * clocksource_list:
@@ -123,9 +119,8 @@ extern struct clocksource clocksource_ji* override_name: * Name of the user-specified clocksource. */ -static struct clocksource *curr_clocksource = &clocksource_jiffies; +static struct clocksource *curr_clocksource;static struct clocksource *next_clocksource; -static struct clocksource *clocksource_override;static LIST_HEAD (clocksource_list);static DEFINE_SPINLOCK (clocksource_lock);static char override_name[32 ];
@@ -320,6 +315,7 @@ void clocksource_touch_watchdog(void)clocksource_resume_watchdog (); } +#ifdef CONFIG_GENERIC_TIME /** * clocksource_get_next - Returns the selected clocksource *
@@ -339,56 +335,65 @@ struct clocksource *clocksource_get_next }/** -* select_clocksource - Selects the best registered clocksource. +* clocksource_select - Select the best clocksource available * * Private function. Must hold clocksource_lock when called. * * Select the clocksource with the best rating, or the clocksource, * which is selected by userspace override. */ -static struct clocksource *select_clocksource (void ) +static void clocksource_select (void ) { -struct clocksource *next; +struct clocksource *best, *cs;if (list_empty (&clocksource_list)) -return NULL ; +return ; +/* First clocksource on the list has the best rating. */ + best = list_first_entry(&clocksource_list, struct clocksource, list); +/* Check for the override clocksource. */ +list_for_each_entry (cs, &clocksource_list, list) { +if (strcmp (cs->name, override_name) !=0 ) +continue ; +/* +* Check to make sure we don't switch to a non-highres +* capable clocksource if the tick code is in oneshot +* mode (highres or nohz) +*/ +if (!(cs->flags &CLOCK_SOURCE_VALID_FOR_HRES ) && +tick_oneshot_mode_active ()) { +/* Override clocksource cannot be used. */ +printk (KERN_WARNING "Override clocksource %s is not " +"HRT compatible. Cannot switch while in " +"HRT/NOHZ mode\n" , cs->name); + override_name[0 ] =0 ; + }else +/* Override clocksource can be used. */ + best = cs; +break ; + } +if (curr_clocksource != best) + next_clocksource = best; +} -if (clocksource_override) - next = clocksource_override; -else - next = list_entry(clocksource_list.next, struct clocksource, - list); +#else /* CONFIG_GENERIC_TIME */ -if (next == curr_clocksource) -return NULL ; +static void clocksource_select (void ) { } -return next; -} +#endif /* * Enqueue the clocksource sorted by rating */ -static int clocksource_enqueue (struct clocksource *c) +static void clocksource_enqueue (struct clocksource *cs) { -struct list_head *tmp, *entry = &clocksource_list; - -list_for_each (tmp, &clocksource_list) { -struct clocksource *cs; +struct list_head *entry = &clocksource_list; +struct clocksource *tmp; - cs = list_entry(tmp, struct clocksource, list); -if (cs == c) -return -EBUSY ; +list_for_each_entry (tmp, &clocksource_list, list)/* Keep track of the place, where to insert */ -if (cs->rating >= c->rating) - entry = tmp; - } -list_add (&c->list, entry); - -if (strlen (c->name) ==strlen (override_name) && - !strcmp (c->name, override_name)) - clocksource_override = c; - -return 0 ; +if (tmp->rating >= cs->rating) + entry = &tmp->list; +list_add (&cs->list, entry); }/**
@@ -397,19 +402,16 @@ static int clocksource_enqueue(struct cl* * Returns -EBUSY if registration fails, zero otherwise. */ -int clocksource_register (struct clocksource *c) +int clocksource_register (struct clocksource *cs) {unsigned long flags; -int ret;spin_lock_irqsave (&clocksource_lock, flags); - ret =clocksource_enqueue (c); -if (!ret) - next_clocksource =select_clocksource (); +clocksource_enqueue (cs); +clocksource_select ();spin_unlock_irqrestore (&clocksource_lock, flags); -if (!ret) -clocksource_check_watchdog (c); -return ret; +clocksource_check_watchdog (cs); +return 0 ; }EXPORT_SYMBOL (clocksource_register);
@@ -425,7 +427,7 @@ void clocksource_change_rating(struct cllist_del (&cs->list); cs->rating = rating;clocksource_enqueue (cs); - next_clocksource =select_clocksource (); +clocksource_select ();spin_unlock_irqrestore (&clocksource_lock, flags); }
@@ -438,9 +440,7 @@ void clocksource_unregister(struct clockspin_lock_irqsave (&clocksource_lock, flags);list_del (&cs->list); -if (clocksource_override == cs) - clocksource_override =NULL ; - next_clocksource =select_clocksource (); +clocksource_select ();spin_unlock_irqrestore (&clocksource_lock, flags); }
@@ -478,10 +478,6 @@ static ssize_t sysfs_override_clocksourc struct sysdev_attribute *attr, const char *buf, size_t count) { - struct clocksource *ovr = NULL; -size_t ret = count; -int len; - /* strings from sysfs write are not 0 terminated! */ if (count >= sizeof(override_name)) return -EINVAL;
@@ -495,41 +491,11 @@ static ssize_t sysfs_override_clocksourcif (count >0 )memcpy (override_name, buf, count); override_name[count] =0 ; - - len =strlen (override_name); -if (len) { -struct clocksource *cs; - - ovr = clocksource_override; -/* try to select it: */ -list_for_each_entry (cs, &clocksource_list, list) { -if (strlen (cs->name) == len && - !strcmp (cs->name, override_name)) - ovr = cs; - } - } - -/* -* Check to make sure we don't switch to a non-highres capable -* clocksource if the tick code is in oneshot mode (highres or nohz) -*/ -if (tick_oneshot_mode_active () && ovr && - !(ovr->flags &CLOCK_SOURCE_VALID_FOR_HRES )) { -printk (KERN_WARNING "%s clocksource is not HRT compatible. " -"Cannot switch while in HRT/NOHZ mode\n" , ovr->name); - ovr =NULL ; - override_name[0 ] =0 ; - } - -/* Reselect, when the override name has changed */ -if (ovr != clocksource_override) { - clocksource_override = ovr; - next_clocksource =select_clocksource (); - } +clocksource_select ();spin_unlock_irq (&clocksource_lock); -return ret; +return count; }/**
include/linux/clocksource.h +2 -0
@@ -14,6 +14,7 @@#include <linux/list.h> #include <linux/cache.h> #include <linux/timer.h> +#include <linux/init.h> #include <asm/div64.h> #include <asm/io.h>
@@ -322,6 +323,7 @@ extern void clocksource_touch_watchdog(vextern struct clocksource *clocksource_get_next (void );extern void clocksource_change_rating (struct clocksource *cs,int rating);extern void clocksource_resume (void ); +extern struct clocksource *__init __weak clocksource_default_clock (void );#ifdef CONFIG_GENERIC_TIME_VSYSCALL extern void update_vsyscall (struct timespec *ts,struct clocksource *c);
kernel/time/timekeeping.c +2 -2
@@ -269,7 +269,7 @@ static void change_clocksource(void) new =clocksource_get_next (); -if (clock == new) +if (!new || clock == new)return ;clocksource_forward_now ();
@@ -446,7 +446,7 @@ void __init timekeeping_init(void)ntp_init (); - clock =clocksource_get_next (); + clock =clocksource_default_clock ();if (clock->enable) clock->enable (clock);/* set mult_orig on enable */
kernel/time/jiffies.c +5 -1
@@ -61,7 +61,6 @@ struct clocksource clocksource_jiffies = .read = jiffies_read, .mask = 0xffffffff, /*32bits*/ .mult = NSEC_PER_JIFFY << JIFFIES_SHIFT, /* details above */ - .mult_orig = NSEC_PER_JIFFY << JIFFIES_SHIFT, .shift = JIFFIES_SHIFT, };
@@ -71,3 +70,8 @@ static int __init init_jiffies_clocksour }core_initcall (init_jiffies_clocksource); + +struct clocksource *__init __weak clocksource_default_clock (void ) +{ +return &clocksource_jiffies; +}
arch/s390/kernel/time.c +4 -0
@@ -205,6 +205,10 @@ static struct clocksource clocksource_to .flags = CLOCK_SOURCE_IS_CONTINUOUS, }; +struct clocksource *__init clocksource_default_clock (void ) +{ +return &clocksource_tod; +}void update_vsyscall (struct timespec *wall_time,struct clocksource *clock) {
Signature · 4 lines
blue skies, Martin. "Reality continues to ruin my life." - Calvin.
Re: [patch 04/15] cleanup clocksource selection
Quoted 10 lines · Martin Schwidefsky
plain text document attachment (clocksource-select.diff)
From: Martin Schwidefsky <[email protected]>If a non high-resolution clocksource is first set as override clock and then registered it becomes active even if the system is in on-shot mode. Move the override check from
sysfs_override_clocksourceto the clocksource selection. That fixes the bug and simplifies the code. The check inclocksource_registerfor double registration of the same clocksource is removed without replacement.
Quoted 4 lines
To find the initial clocksource a new weak function in
jiffies.cis defined that returns the jiffies clocksource. The architecture code can then override the weak function with a more suitable clocksource, e.g. the TOD clock on s390.
Hey Martin,
So I found the issue I sent mail about earlier, this is patch breaks sysfs clocksource overrides. The suggested fix is below:
Quoted 43 lines
(quoted diff) +0
-32@@ -478,10 +478,6 @@ static ssize_t sysfs_override_clocksourc struct sysdev_attribute *attr, const char *buf, size_t count) { - struct clocksource *ovr = NULL; - size_t ret = count; - int len; - /* strings from sysfs write are not 0 terminated! */ if (count >= sizeof(override_name)) return -EINVAL;@@ -495,41 +491,11 @@ static ssize_t sysfs_override_clocksourc if (count > 0) memcpy(override_name, buf, count); override_name[count] = 0; - - len = strlen(override_name); - if (len) { - struct clocksource *cs; - - ovr = clocksource_override; - /* try to select it: */ - list_for_each_entry(cs, &clocksource_list, list) { - if (strlen(cs->name) == len && - !strcmp(cs->name, override_name)) - ovr = cs; - } - } - - /* - * Check to make sure we don't switch to a non-highres capable - * clocksource if the tick code is in oneshot mode (highres or nohz) - */ - if (tick_oneshot_mode_active() && ovr && - !(ovr->flags & CLOCK_SOURCE_VALID_FOR_HRES)) { - printk(KERN_WARNING "%s clocksource is not HRT compatible. " - "Cannot switch while in HRT/NOHZ mode\n", ovr->name); - ovr = NULL; - override_name[0] = 0; - } - - /* Reselect, when the override name has changed */ - if (ovr != clocksource_override) {
Review static ssize_t sysfs_override_clocksourc · line 499
Quoted 10 lines
(quoted diff) +2
-4- clocksource_override = ovr; - next_clocksource = select_clocksource(); - } + clocksource_select(); spin_unlock_irq(&clocksource_lock); - return ret; + return count; }
Here when you return count, count may have been decremented in the code above, which causes the writer to get back fewer bytes then what they passed in, causing the last char to be repeatedly sent. This is what causes the immediate switch back to the default clocksource (override gets set to null), and the hang of the command writing to the sysfs file.
The fix is simply keeping the initial "size_t ret = count;" and the final "return ret;"
kernel/time/clocksource.c +3 -1
@@ -478,6 +478,8 @@struct sysdev_attribute *attr, const char *buf, size_t count) { + size_t ret = count; +/* strings from sysfs write are not 0 terminated! */ if (count >=sizeof (override_name))return -EINVAL ;
@@ -495,7 +497,7 @@spin_unlock_irq (&clocksource_lock); -return count; +return ret; }/**
thanks
-john
Re: [patch 04/15] cleanup clocksource selection
Quoted 84 lines · john stultz
Quoted 10 lines · Martin Schwidefsky
plain text document attachment (clocksource-select.diff)
From: Martin Schwidefsky <[email protected]>If a non high-resolution clocksource is first set as override clock and then registered it becomes active even if the system is in on-shot mode. Move the override check from
sysfs_override_clocksourceto the clocksource selection. That fixes the bug and simplifies the code. The check inclocksource_registerfor double registration of the same clocksource is removed without replacement.Quoted 4 lines
To find the initial clocksource a new weak function in
jiffies.cis defined that returns the jiffies clocksource. The architecture code can then override the weak function with a more suitable clocksource, e.g. the TOD clock on s390.Hey Martin,
So I found the issue I sent mail about earlier, this is patch breaks sysfs clocksource overrides. The suggested fix is below:
Quoted 43 lines
kernel/time/clocksource.c +0
-32@@ -478,10 +478,6 @@ static ssize_t sysfs_override_clocksourc struct sysdev_attribute *attr, const char *buf, size_t count) { - struct clocksource *ovr = NULL; -size_t ret = count; -int len; - /* strings from sysfs write are not 0 terminated! */ if (count >= sizeof(override_name)) return -EINVAL;@@ -495,41 +491,11 @@ static ssize_t sysfs_override_clocksourcif (count >0 )memcpy (override_name, buf, count); override_name[count] =0 ; - - len =strlen (override_name); -if (len) { -struct clocksource *cs; - - ovr = clocksource_override; -/* try to select it: */ -list_for_each_entry (cs, &clocksource_list, list) { -if (strlen (cs->name) == len && - !strcmp (cs->name, override_name)) - ovr = cs; - } - } - -/* -* Check to make sure we don't switch to a non-highres capable -* clocksource if the tick code is in oneshot mode (highres or nohz) -*/ -if (tick_oneshot_mode_active () && ovr && - !(ovr->flags &CLOCK_SOURCE_VALID_FOR_HRES )) { -printk (KERN_WARNING "%s clocksource is not HRT compatible. " -"Cannot switch while in HRT/NOHZ mode\n" , ovr->name); - ovr =NULL ; - override_name[0 ] =0 ; - } - -/* Reselect, when the override name has changed */ -if (ovr != clocksource_override) {kernel/time/clocksource.c static ssize_t sysfs_override_clocksourc · line 499
Quoted 10 lines
kernel/time/clocksource.c +2
-4- clocksource_override = ovr; - next_clocksource =select_clocksource (); - } +clocksource_select ();spin_unlock_irq (&clocksource_lock); -return ret; +return count; }Here when you return count, count may have been decremented in the code above, which causes the writer to get back fewer bytes then what they passed in, causing the last char to be repeatedly sent. This is what causes the immediate switch back to the default clocksource (override gets set to null), and the hang of the command writing to the sysfs file.
Quoted 3 lines
The fix is simply keeping the initial "
size_tret = count;" and the final "return ret;"
Oh, and with this small fixup the entire stack seems to be working properly.
thanks
-john
Re: [patch 04/15] cleanup clocksource selection
In reply to john stultzQuoted 25 lines · On Fri, 14 Aug 2009 18:42:20 -0700 john stultz <[email protected]> wrote:
Here when you return count, count may have been decremented in the code above, which causes the writer to get back fewer bytes then what they passed in, causing the last char to be repeatedly sent. This is what causes the immediate switch back to the default clocksource (override gets set to null), and the hang of the command writing to the sysfs file.
The fix is simply keeping the initial "
size_tret = count;" and the final "return ret;"Index:
linux-2.6-tip/kernel/time/clocksource.c
===================================================================kernel/time/clocksource.c +2
-0@@ -478,6 +478,8 @@struct sysdev_attribute *attr, const char *buf, size_t count) { + size_t ret = count; +/* strings from sysfs write are not 0 terminated! */ if (count >=sizeof (override_name))return -EINVAL ;
kernel/time/clocksource.c line 503
Quoted 8 lines
kernel/time/clocksource.c +1
-1@@ -495,7 +497,7 @@spin_unlock_irq (&clocksource_lock); -return count; +return ret; }/**
Opps :-(
Thanks for bisecting & fixing.
Signature · 4 lines
blue skies, Martin. "Reality continues to ruin my life." - Calvin.
[tip:timers/core] clocksource: Cleanup clocksource selection
In reply to Martin SchwidefskyCommit-ID: f1b82746c1e93daf24e1ab9bfbd39bcdb2e7018b Gitweb: http://git.kernel.org/tip/f1b82746c1e93daf24e1ab9bfbd39bcdb2e7018b Author: Martin Schwidefsky <[email protected]> AuthorDate: Fri, 14 Aug 2009 15:47:21 +0200 Committer: Thomas Gleixner <[email protected]> CommitDate: Sat, 15 Aug 2009 10:55:46 +0200
clocksource: Cleanup clocksource selection
If a non high-resolution clocksource is first set as override clock and then registered it becomes active even if the system is in one-shot mode. Move the override check from sysfs_override_clocksource to the clocksource selection. That fixes the bug and simplifies the code. The check in clocksource_register for double registration of the same clocksource is removed without replacement.
To find the initial clocksource a new weak function in jiffies.c is defined that returns the jiffies clocksource. The architecture code can then override the weak function with a more suitable clocksource, e.g. the TOD clock on s390.
[ tglx: Folded in a fix from John Stultz ]
LKML-Reference: <[email protected]>
--- arch/s390/kernel/time.c | 4 + include/linux/clocksource.h | 2 + kernel/time/clocksource.c | 134 ++++++++++++++++-------------------------- kernel/time/jiffies.c | 6 ++- kernel/time/timekeeping.c | 4 +- 5 files changed, 64 insertions(+), 86 deletions(-)
arch/s390/kernel/time.c +4 -0
@@ -205,6 +205,10 @@ static struct clocksource clocksource_tod = { .flags = CLOCK_SOURCE_IS_CONTINUOUS, }; +struct clocksource *__init clocksource_default_clock (void ) +{ +return &clocksource_tod; +}void update_vsyscall (struct timespec *wall_time,struct clocksource *clock) {
include/linux/clocksource.h +2 -0
@@ -14,6 +14,7 @@#include <linux/list.h> #include <linux/cache.h> #include <linux/timer.h> +#include <linux/init.h> #include <asm/div64.h> #include <asm/io.h>
@@ -322,6 +323,7 @@ extern void clocksource_touch_watchdog(void);extern struct clocksource *clocksource_get_next (void );extern void clocksource_change_rating (struct clocksource *cs,int rating);extern void clocksource_resume (void ); +extern struct clocksource *__init __weak clocksource_default_clock (void );#ifdef CONFIG_GENERIC_TIME_VSYSCALL extern void update_vsyscall (struct timespec *ts,struct clocksource *c);
kernel/time/clocksource.c +51 -83
222 lines not on this page · raw message
kernel/time/jiffies.c +5 -1
@@ -61,7 +61,6 @@ struct clocksource clocksource_jiffies = { .read = jiffies_read, .mask = 0xffffffff, /*32bits*/ .mult = NSEC_PER_JIFFY << JIFFIES_SHIFT, /* details above */ - .mult_orig = NSEC_PER_JIFFY << JIFFIES_SHIFT, .shift = JIFFIES_SHIFT, };
@@ -71,3 +70,8 @@ static int __init init_jiffies_clocksource(void) }core_initcall (init_jiffies_clocksource); + +struct clocksource *__init __weak clocksource_default_clock (void ) +{ +return &clocksource_jiffies; +}
kernel/time/timekeeping.c +2 -2
@@ -269,7 +269,7 @@ static void change_clocksource(void) new =clocksource_get_next (); -if (clock == new) +if (!new || clock == new)return ;clocksource_forward_now ();
@@ -446,7 +446,7 @@ void __init timekeeping_init(void)ntp_init (); - clock =clocksource_get_next (); + clock =clocksource_default_clock ();if (clock->enable) clock->enable (clock);/* set mult_orig on enable */
PATCH 5/15 clocksource watchdog highres enablement
In reply to Martin SchwidefskyFrom: Martin Schwidefsky <[email protected]>
The clocksource watchdog marks a clock as highres capable before it checked the deviation from the watchdog clocksource even for a single time. Make sure that the deviation is at least checked once before doing the switch to highres mode.
--- kernel/time/clocksource.c | 47 +++++++++++++++++++++------------------------- 1 file changed, 22 insertions(+), 25 deletions(-)
kernel/time/clocksource.c +22 -25
@@ -153,11 +153,8 @@ static unsigned long watchdog_resumed;#define WATCHDOG_INTERVAL (HZ >> 1)#define WATCHDOG_THRESHOLD (NSEC_PER_SEC >> 4) -static void clocksource_ratewd (struct clocksource *cs,int64_t delta) +static void clocksource_unstable (struct clocksource *cs,int64_t delta) { -if (delta > -WATCHDOG_THRESHOLD && delta <WATCHDOG_THRESHOLD ) -return ; -printk (KERN_WARNING "Clocksource %s unstable (delta = %Ld ns)\n" , cs->name, delta); cs->flags &= ~(CLOCK_SOURCE_VALID_FOR_HRES |CLOCK_SOURCE_WATCHDOG );
@@ -183,31 +180,31 @@ static void clocksource_watchdog(unsignelist_for_each_entry_safe (cs, tmp, &watchdog_list, wd_list) { csnow = cs->read (cs); -if (unlikely (resumed)) { +/* Clocksource initialized ? */ +if (!(cs->flags &CLOCK_SOURCE_WATCHDOG )) { + cs->flags |=CLOCK_SOURCE_WATCHDOG ; cs->wd_last = csnow;continue ; } -/* Initialized ? */ -if (!(cs->flags &CLOCK_SOURCE_WATCHDOG )) { -if ((cs->flags &CLOCK_SOURCE_IS_CONTINUOUS ) && - (watchdog->flags &CLOCK_SOURCE_IS_CONTINUOUS )) { - cs->flags |=CLOCK_SOURCE_VALID_FOR_HRES ; -/* -* We just marked the clocksource as -* highres-capable, notify the rest of the -* system as well so that we transition -* into high-res mode: -*/ -tick_clock_notify (); - } - cs->flags |=CLOCK_SOURCE_WATCHDOG ; - cs->wd_last = csnow; - }else { - cs_nsec =cyc2ns (cs, (csnow - cs->wd_last) & cs->mask); - cs->wd_last = csnow; -/* Check the delta. Might remove from the list ! */ -clocksource_ratewd (cs, cs_nsec - wd_nsec); +/* Check the deviation from the watchdog clocksource. */ + cs_nsec =cyc2ns (cs, (csnow - cs->wd_last) & cs->mask); + cs->wd_last = csnow; +if (abs (cs_nsec - wd_nsec) >WATCHDOG_THRESHOLD ) { +clocksource_unstable (cs, cs_nsec - wd_nsec); +continue ; + } + +if (!(cs->flags &CLOCK_SOURCE_VALID_FOR_HRES ) && + (cs->flags &CLOCK_SOURCE_IS_CONTINUOUS ) && + (watchdog->flags &CLOCK_SOURCE_IS_CONTINUOUS )) { + cs->flags |=CLOCK_SOURCE_VALID_FOR_HRES ; +/* +* We just marked the clocksource as highres-capable, +* notify the rest of the system as well so that we +* transition into high-res mode: +*/ +tick_clock_notify (); } }
Signature · 4 lines
blue skies, Martin. "Reality continues to ruin my life." - Calvin.
[tip:timers/core] clocksource: Delay clocksource watchdog highres enablement
Commit-ID: 8cf4e750f8459d51c2e8a035a201da4bf7aa996a Gitweb: http://git.kernel.org/tip/8cf4e750f8459d51c2e8a035a201da4bf7aa996a Author: Martin Schwidefsky <[email protected]> AuthorDate: Fri, 14 Aug 2009 15:47:22 +0200 Committer: Thomas Gleixner <[email protected]> CommitDate: Sat, 15 Aug 2009 10:55:46 +0200
clocksource: Delay clocksource watchdog highres enablement
The clocksource watchdog marks a clock as highres capable before it checked the deviation from the watchdog clocksource even for a single time. Make sure that the deviation is at least checked once before doing the switch to highres mode.
LKML-Reference: <[email protected]>
--- kernel/time/clocksource.c | 47 +++++++++++++++++++++----------------------- 1 files changed, 22 insertions(+), 25 deletions(-)
kernel/time/clocksource.c +22 -25
@@ -153,11 +153,8 @@ static unsigned long watchdog_resumed;#define WATCHDOG_INTERVAL (HZ >> 1)#define WATCHDOG_THRESHOLD (NSEC_PER_SEC >> 4) -static void clocksource_ratewd (struct clocksource *cs,int64_t delta) +static void clocksource_unstable (struct clocksource *cs,int64_t delta) { -if (delta > -WATCHDOG_THRESHOLD && delta <WATCHDOG_THRESHOLD ) -return ; -printk (KERN_WARNING "Clocksource %s unstable (delta = %Ld ns)\n" , cs->name, delta); cs->flags &= ~(CLOCK_SOURCE_VALID_FOR_HRES |CLOCK_SOURCE_WATCHDOG );
@@ -183,31 +180,31 @@ static void clocksource_watchdog(unsigned long data)list_for_each_entry_safe (cs, tmp, &watchdog_list, wd_list) { csnow = cs->read (cs); -if (unlikely (resumed)) { +/* Clocksource initialized ? */ +if (!(cs->flags &CLOCK_SOURCE_WATCHDOG )) { + cs->flags |=CLOCK_SOURCE_WATCHDOG ; cs->wd_last = csnow;continue ; } -/* Initialized ? */ -if (!(cs->flags &CLOCK_SOURCE_WATCHDOG )) { -if ((cs->flags &CLOCK_SOURCE_IS_CONTINUOUS ) && - (watchdog->flags &CLOCK_SOURCE_IS_CONTINUOUS )) { - cs->flags |=CLOCK_SOURCE_VALID_FOR_HRES ; -/* -* We just marked the clocksource as -* highres-capable, notify the rest of the -* system as well so that we transition -* into high-res mode: -*/ -tick_clock_notify (); - } - cs->flags |=CLOCK_SOURCE_WATCHDOG ; - cs->wd_last = csnow; - }else { - cs_nsec =cyc2ns (cs, (csnow - cs->wd_last) & cs->mask); - cs->wd_last = csnow; -/* Check the delta. Might remove from the list ! */ -clocksource_ratewd (cs, cs_nsec - wd_nsec); +/* Check the deviation from the watchdog clocksource. */ + cs_nsec =cyc2ns (cs, (csnow - cs->wd_last) & cs->mask); + cs->wd_last = csnow; +if (abs (cs_nsec - wd_nsec) >WATCHDOG_THRESHOLD ) { +clocksource_unstable (cs, cs_nsec - wd_nsec); +continue ; + } + +if (!(cs->flags &CLOCK_SOURCE_VALID_FOR_HRES ) && + (cs->flags &CLOCK_SOURCE_IS_CONTINUOUS ) && + (watchdog->flags &CLOCK_SOURCE_IS_CONTINUOUS )) { + cs->flags |=CLOCK_SOURCE_VALID_FOR_HRES ; +/* +* We just marked the clocksource as highres-capable, +* notify the rest of the system as well so that we +* transition into high-res mode: +*/ +tick_clock_notify (); } }
PATCH 6/15 clocksource watchdog resume logic
In reply to Martin SchwidefskyFrom: Martin Schwidefsky <[email protected]>
To resume the clocksource watchdog just remove the CLOCK_SOURCE_WATCHDOG bit from the watched clocksource.
--- kernel/time/clocksource.c | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-)
kernel/time/clocksource.c +15 -8
@@ -145,7 +145,6 @@ static struct clocksource *watchdog;static struct timer_list watchdog_timer;static DEFINE_SPINLOCK (watchdog_lock);static cycle_t watchdog_last; -static unsigned long watchdog_resumed;/* * Interval: 0.5sec Threshold: 0.0625s
@@ -167,12 +166,9 @@ static void clocksource_watchdog(unsignestruct clocksource *cs, *tmp;cycle_t csnow, wdnow;int64_t wd_nsec, cs_nsec; -int resumed;spin_lock (&watchdog_lock); - resumed =test_and_clear_bit (0 , &watchdog_resumed); - wdnow = watchdog->read (watchdog); wd_nsec =cyc2ns (watchdog, (wdnow - watchdog_last) & watchdog->mask); watchdog_last = wdnow;
@@ -223,14 +219,26 @@ static void clocksource_watchdog(unsigne }spin_unlock (&watchdog_lock); } + +static inline void clocksource_reset_watchdog (void ) +{ +struct clocksource *cs; + +list_for_each_entry (cs, &watchdog_list, wd_list) + cs->flags &= ~CLOCK_SOURCE_WATCHDOG ; +} +static void clocksource_resume_watchdog (void ) { -set_bit (0 , &watchdog_resumed); +unsigned long flags; + +spin_lock_irqsave (&watchdog_lock, flags); +clocksource_reset_watchdog (); +spin_unlock_irqrestore (&watchdog_lock, flags); }static void clocksource_check_watchdog (struct clocksource *cs) { -struct clocksource *cse;unsigned long flags;spin_lock_irqsave (&watchdog_lock, flags);
@@ -256,8 +264,7 @@ static void clocksource_check_watchdog(s watchdog_timer.function = clocksource_watchdog;/* Reset watchdog cycles */ -list_for_each_entry (cse, &watchdog_list, wd_list) - cse->flags &= ~CLOCK_SOURCE_WATCHDOG ; +clocksource_reset_watchdog ();/* Start if list is not empty */ if (!list_empty (&watchdog_list)) { watchdog_last = watchdog->read (watchdog);
Signature · 4 lines
blue skies, Martin. "Reality continues to ruin my life." - Calvin.
[tip:timers/core] clocksource: Simplify clocksource watchdog resume logic
Commit-ID: 0f8e8ef7c204988246da5a42d576b7fa5277a8e4 Gitweb: http://git.kernel.org/tip/0f8e8ef7c204988246da5a42d576b7fa5277a8e4 Author: Martin Schwidefsky <[email protected]> AuthorDate: Fri, 14 Aug 2009 15:47:23 +0200 Committer: Thomas Gleixner <[email protected]> CommitDate: Sat, 15 Aug 2009 10:55:46 +0200
clocksource: Simplify clocksource watchdog resume logic
To resume the clocksource watchdog just remove the CLOCK_SOURCE_WATCHDOG bit from the watched clocksource.
LKML-Reference: <[email protected]>
--- kernel/time/clocksource.c | 23 +++++++++++++++-------- 1 files changed, 15 insertions(+), 8 deletions(-)
kernel/time/clocksource.c +15 -8
@@ -145,7 +145,6 @@ static struct clocksource *watchdog;static struct timer_list watchdog_timer;static DEFINE_SPINLOCK (watchdog_lock);static cycle_t watchdog_last; -static unsigned long watchdog_resumed;/* * Interval: 0.5sec Threshold: 0.0625s
@@ -167,12 +166,9 @@ static void clocksource_watchdog(unsigned long data)struct clocksource *cs, *tmp;cycle_t csnow, wdnow;int64_t wd_nsec, cs_nsec; -int resumed;spin_lock (&watchdog_lock); - resumed =test_and_clear_bit (0 , &watchdog_resumed); - wdnow = watchdog->read (watchdog); wd_nsec =cyc2ns (watchdog, (wdnow - watchdog_last) & watchdog->mask); watchdog_last = wdnow;
@@ -223,14 +219,26 @@ static void clocksource_watchdog(unsigned long data) }spin_unlock (&watchdog_lock); } + +static inline void clocksource_reset_watchdog (void ) +{ +struct clocksource *cs; + +list_for_each_entry (cs, &watchdog_list, wd_list) + cs->flags &= ~CLOCK_SOURCE_WATCHDOG ; +} +static void clocksource_resume_watchdog (void ) { -set_bit (0 , &watchdog_resumed); +unsigned long flags; + +spin_lock_irqsave (&watchdog_lock, flags); +clocksource_reset_watchdog (); +spin_unlock_irqrestore (&watchdog_lock, flags); }static void clocksource_check_watchdog (struct clocksource *cs) { -struct clocksource *cse;unsigned long flags;spin_lock_irqsave (&watchdog_lock, flags);
@@ -256,8 +264,7 @@ static void clocksource_check_watchdog(struct clocksource *cs) watchdog_timer.function = clocksource_watchdog;/* Reset watchdog cycles */ -list_for_each_entry (cse, &watchdog_list, wd_list) - cse->flags &= ~CLOCK_SOURCE_WATCHDOG ; +clocksource_reset_watchdog ();/* Start if list is not empty */ if (!list_empty (&watchdog_list)) { watchdog_last = watchdog->read (watchdog);
PATCH 7/15 clocksource watchdog refactoring
In reply to Martin SchwidefskyFrom: Martin Schwidefsky <[email protected]>
Refactor clocksource watchdog code to make it more readable. Add clocksource_dequeue_watchdog to remove a clocksource from the watckdog list when it is unregistered.
--- kernel/time/clocksource.c | 97 ++++++++++++++++++++++++++++++++-------------- 1 file changed, 69 insertions(+), 28 deletions(-)
kernel/time/clocksource.c +69 -28
@@ -145,6 +145,7 @@ static struct clocksource *watchdog;static struct timer_list watchdog_timer;static DEFINE_SPINLOCK (watchdog_lock);static cycle_t watchdog_last; +static int watchdog_running;/* * Interval: 0.5sec Threshold: 0.0625s
@@ -168,6 +169,8 @@ static void clocksource_watchdog(unsigneint64_t wd_nsec, cs_nsec;spin_lock (&watchdog_lock); +if (!watchdog_running) + goto out; wdnow = watchdog->read (watchdog); wd_nsec =cyc2ns (watchdog, (wdnow - watchdog_last) & watchdog->mask);
@@ -217,9 +220,30 @@ static void clocksource_watchdog(unsigne watchdog_timer.expires +=WATCHDOG_INTERVAL ;add_timer_on (&watchdog_timer, next_cpu); } +out:spin_unlock (&watchdog_lock); } +static inline void clocksource_start_watchdog (void ) +{ +if (watchdog_running || !watchdog ||list_empty (&watchdog_list)) +return ; +init_timer (&watchdog_timer); + watchdog_timer.function = clocksource_watchdog; + watchdog_last = watchdog->read (watchdog); + watchdog_timer.expires = jiffies +WATCHDOG_INTERVAL ; +add_timer_on (&watchdog_timer,cpumask_first (cpu_online_mask)); + watchdog_running =1 ; +} + +static inline void clocksource_stop_watchdog (void ) +{ +if (!watchdog_running || (watchdog && !list_empty (&watchdog_list))) +return ; +del_timer (&watchdog_timer); + watchdog_running =0 ; +} +static inline void clocksource_reset_watchdog (void ) {struct clocksource *cs;
@@ -237,55 +261,70 @@ static void clocksource_resume_watchdog(spin_unlock_irqrestore (&watchdog_lock, flags); } -static void clocksource_check_watchdog (struct clocksource *cs) +static void clocksource_enqueue_watchdog (struct clocksource *cs) {unsigned long flags;spin_lock_irqsave (&watchdog_lock, flags);if (cs->flags &CLOCK_SOURCE_MUST_VERIFY ) { -int started = !list_empty (&watchdog_list); - +/* cs is a clocksource to be watched. */ list_add (&cs->wd_list, &watchdog_list); -if (!started && watchdog) { - watchdog_last = watchdog->read (watchdog); - watchdog_timer.expires = jiffies +WATCHDOG_INTERVAL ; -add_timer_on (&watchdog_timer, -cpumask_first (cpu_online_mask)); - } + cs->flags &= ~CLOCK_SOURCE_WATCHDOG ; }else { +/* cs is a watchdog. */ if (cs->flags &CLOCK_SOURCE_IS_CONTINUOUS ) cs->flags |=CLOCK_SOURCE_VALID_FOR_HRES ; - +/* Pick the best watchdog. */ if (!watchdog || cs->rating > watchdog->rating) { -if (watchdog) -del_timer (&watchdog_timer); watchdog = cs; -init_timer (&watchdog_timer); - watchdog_timer.function = clocksource_watchdog; -/* Reset watchdog cycles */ clocksource_reset_watchdog (); -/* Start if list is not empty */ -if (!list_empty (&watchdog_list)) { - watchdog_last = watchdog->read (watchdog); - watchdog_timer.expires = - jiffies +WATCHDOG_INTERVAL ; -add_timer_on (&watchdog_timer, -cpumask_first (cpu_online_mask)); - } } } +/* Check if the watchdog timer needs to be started. */ +clocksource_start_watchdog ();spin_unlock_irqrestore (&watchdog_lock, flags); } -#else -static void clocksource_check_watchdog (struct clocksource *cs) + +static void clocksource_dequeue_watchdog (struct clocksource *cs) +{ +struct clocksource *tmp; +unsigned long flags; + +spin_lock_irqsave (&watchdog_lock, flags); +if (cs->flags &CLOCK_SOURCE_MUST_VERIFY ) { +/* cs is a watched clocksource. */ +list_del_init (&cs->wd_list); + }else if (cs == watchdog) { +/* Reset watchdog cycles */ +clocksource_reset_watchdog (); +/* Current watchdog is removed. Find an alternative. */ + watchdog =NULL ; +list_for_each_entry (tmp, &clocksource_list, list) { +if (tmp == cs || tmp->flags &CLOCK_SOURCE_MUST_VERIFY ) +continue ; +if (!watchdog || tmp->rating > watchdog->rating) + watchdog = tmp; + } + } + cs->flags &= ~CLOCK_SOURCE_WATCHDOG ; +/* Check if the watchdog timer needs to be stopped. */ +clocksource_stop_watchdog (); +spin_unlock_irqrestore (&watchdog_lock, flags); +} + +#else /* CONFIG_CLOCKSOURCE_WATCHDOG */ + +static void clocksource_enqueue_watchdog (struct clocksource *cs) {if (cs->flags &CLOCK_SOURCE_IS_CONTINUOUS ) cs->flags |=CLOCK_SOURCE_VALID_FOR_HRES ; } +static inline void clocksource_dequeue_watchdog (struct clocksource *cs) { }static inline void clocksource_resume_watchdog (void ) { } -#endif + +#endif /* CONFIG_CLOCKSOURCE_WATCHDOG */ /** * clocksource_resume - resume the clocksource(s)
@@ -414,14 +453,13 @@ int clocksource_register(struct clocksouclocksource_enqueue (cs);clocksource_select ();spin_unlock_irqrestore (&clocksource_lock, flags); -clocksource_check_watchdog (cs); +clocksource_enqueue_watchdog (cs);return 0 ; }EXPORT_SYMBOL (clocksource_register);/** * clocksource_change_rating - Change the rating of a registered clocksource -* */ void clocksource_change_rating (struct clocksource *cs,int rating) {
@@ -434,6 +472,7 @@ void clocksource_change_rating(struct clclocksource_select ();spin_unlock_irqrestore (&clocksource_lock, flags); } +EXPORT_SYMBOL (clocksource_change_rating);/** * clocksource_unregister - remove a registered clocksource
@@ -442,11 +481,13 @@ void clocksource_unregister(struct clock {unsigned long flags; +clocksource_dequeue_watchdog (cs);spin_lock_irqsave (&clocksource_lock, flags);list_del (&cs->list);clocksource_select ();spin_unlock_irqrestore (&clocksource_lock, flags); } +EXPORT_SYMBOL (clocksource_unregister);#ifdef CONFIG_SYSFS /**
Signature · 4 lines
blue skies, Martin. "Reality continues to ruin my life." - Calvin.
[tip:timers/core] clocksource: Refactor clocksource watchdog
Commit-ID: fb63a0ebe615fba9de8c75ea44ded999d1e24c65 Gitweb: http://git.kernel.org/tip/fb63a0ebe615fba9de8c75ea44ded999d1e24c65 Author: Martin Schwidefsky <[email protected]> AuthorDate: Fri, 14 Aug 2009 15:47:24 +0200 Committer: Thomas Gleixner <[email protected]> CommitDate: Sat, 15 Aug 2009 10:55:46 +0200
clocksource: Refactor clocksource watchdog
Refactor clocksource watchdog code to make it more readable. Add clocksource_dequeue_watchdog to remove a clocksource from the watchdog list when it is unregistered.
LKML-Reference: <[email protected]>
--- kernel/time/clocksource.c | 97 ++++++++++++++++++++++++++++++++------------- 1 files changed, 69 insertions(+), 28 deletions(-)
kernel/time/clocksource.c +69 -28
@@ -145,6 +145,7 @@ static struct clocksource *watchdog;static struct timer_list watchdog_timer;static DEFINE_SPINLOCK (watchdog_lock);static cycle_t watchdog_last; +static int watchdog_running;/* * Interval: 0.5sec Threshold: 0.0625s
@@ -168,6 +169,8 @@ static void clocksource_watchdog(unsigned long data)int64_t wd_nsec, cs_nsec;spin_lock (&watchdog_lock); +if (!watchdog_running) + goto out; wdnow = watchdog->read (watchdog); wd_nsec =cyc2ns (watchdog, (wdnow - watchdog_last) & watchdog->mask);
@@ -217,9 +220,30 @@ static void clocksource_watchdog(unsigned long data) watchdog_timer.expires +=WATCHDOG_INTERVAL ;add_timer_on (&watchdog_timer, next_cpu); } +out:spin_unlock (&watchdog_lock); } +static inline void clocksource_start_watchdog (void ) +{ +if (watchdog_running || !watchdog ||list_empty (&watchdog_list)) +return ; +init_timer (&watchdog_timer); + watchdog_timer.function = clocksource_watchdog; + watchdog_last = watchdog->read (watchdog); + watchdog_timer.expires = jiffies +WATCHDOG_INTERVAL ; +add_timer_on (&watchdog_timer,cpumask_first (cpu_online_mask)); + watchdog_running =1 ; +} + +static inline void clocksource_stop_watchdog (void ) +{ +if (!watchdog_running || (watchdog && !list_empty (&watchdog_list))) +return ; +del_timer (&watchdog_timer); + watchdog_running =0 ; +} +static inline void clocksource_reset_watchdog (void ) {struct clocksource *cs;
@@ -237,55 +261,70 @@ static void clocksource_resume_watchdog(void)spin_unlock_irqrestore (&watchdog_lock, flags); } -static void clocksource_check_watchdog (struct clocksource *cs) +static void clocksource_enqueue_watchdog (struct clocksource *cs) {unsigned long flags;spin_lock_irqsave (&watchdog_lock, flags);if (cs->flags &CLOCK_SOURCE_MUST_VERIFY ) { -int started = !list_empty (&watchdog_list); - +/* cs is a clocksource to be watched. */ list_add (&cs->wd_list, &watchdog_list); -if (!started && watchdog) { - watchdog_last = watchdog->read (watchdog); - watchdog_timer.expires = jiffies +WATCHDOG_INTERVAL ; -add_timer_on (&watchdog_timer, -cpumask_first (cpu_online_mask)); - } + cs->flags &= ~CLOCK_SOURCE_WATCHDOG ; }else { +/* cs is a watchdog. */ if (cs->flags &CLOCK_SOURCE_IS_CONTINUOUS ) cs->flags |=CLOCK_SOURCE_VALID_FOR_HRES ; - +/* Pick the best watchdog. */ if (!watchdog || cs->rating > watchdog->rating) { -if (watchdog) -del_timer (&watchdog_timer); watchdog = cs; -init_timer (&watchdog_timer); - watchdog_timer.function = clocksource_watchdog; -/* Reset watchdog cycles */ clocksource_reset_watchdog (); -/* Start if list is not empty */ -if (!list_empty (&watchdog_list)) { - watchdog_last = watchdog->read (watchdog); - watchdog_timer.expires = - jiffies +WATCHDOG_INTERVAL ; -add_timer_on (&watchdog_timer, -cpumask_first (cpu_online_mask)); - } } } +/* Check if the watchdog timer needs to be started. */ +clocksource_start_watchdog ();spin_unlock_irqrestore (&watchdog_lock, flags); } -#else -static void clocksource_check_watchdog (struct clocksource *cs) + +static void clocksource_dequeue_watchdog (struct clocksource *cs) +{ +struct clocksource *tmp; +unsigned long flags; + +spin_lock_irqsave (&watchdog_lock, flags); +if (cs->flags &CLOCK_SOURCE_MUST_VERIFY ) { +/* cs is a watched clocksource. */ +list_del_init (&cs->wd_list); + }else if (cs == watchdog) { +/* Reset watchdog cycles */ +clocksource_reset_watchdog (); +/* Current watchdog is removed. Find an alternative. */ + watchdog =NULL ; +list_for_each_entry (tmp, &clocksource_list, list) { +if (tmp == cs || tmp->flags &CLOCK_SOURCE_MUST_VERIFY ) +continue ; +if (!watchdog || tmp->rating > watchdog->rating) + watchdog = tmp; + } + } + cs->flags &= ~CLOCK_SOURCE_WATCHDOG ; +/* Check if the watchdog timer needs to be stopped. */ +clocksource_stop_watchdog (); +spin_unlock_irqrestore (&watchdog_lock, flags); +} + +#else /* CONFIG_CLOCKSOURCE_WATCHDOG */ + +static void clocksource_enqueue_watchdog (struct clocksource *cs) {if (cs->flags &CLOCK_SOURCE_IS_CONTINUOUS ) cs->flags |=CLOCK_SOURCE_VALID_FOR_HRES ; } +static inline void clocksource_dequeue_watchdog (struct clocksource *cs) { }static inline void clocksource_resume_watchdog (void ) { } -#endif + +#endif /* CONFIG_CLOCKSOURCE_WATCHDOG */ /** * clocksource_resume - resume the clocksource(s)
@@ -414,14 +453,13 @@ int clocksource_register(struct clocksource *cs)clocksource_enqueue (cs);clocksource_select ();spin_unlock_irqrestore (&clocksource_lock, flags); -clocksource_check_watchdog (cs); +clocksource_enqueue_watchdog (cs);return 0 ; }EXPORT_SYMBOL (clocksource_register);/** * clocksource_change_rating - Change the rating of a registered clocksource -* */ void clocksource_change_rating (struct clocksource *cs,int rating) {
@@ -434,6 +472,7 @@ void clocksource_change_rating(struct clocksource *cs, int rating)clocksource_select ();spin_unlock_irqrestore (&clocksource_lock, flags); } +EXPORT_SYMBOL (clocksource_change_rating);/** * clocksource_unregister - remove a registered clocksource
@@ -442,11 +481,13 @@ void clocksource_unregister(struct clocksource *cs) {unsigned long flags; +clocksource_dequeue_watchdog (cs);spin_lock_irqsave (&clocksource_lock, flags);list_del (&cs->list);clocksource_select ();spin_unlock_irqrestore (&clocksource_lock, flags); } +EXPORT_SYMBOL (clocksource_unregister);#ifdef CONFIG_SYSFS /**
PATCH 8/15 clocksource watchdog work
In reply to Martin SchwidefskyFrom: Martin Schwidefsky <[email protected]>
Move the downgrade of an unstable clocksource from the timer interrupt context into the process context of a work queue thread. This is needed to be able to do the clocksource switch with stop_machine.
--- include/linux/clocksource.h | 1 kernel/time/clocksource.c | 56 ++++++++++++++++++++++++++++++-------------- 2 files changed, 40 insertions(+), 17 deletions(-)
include/linux/clocksource.h +1 -0
@@ -213,6 +213,7 @@ extern struct clocksource *clock; /* cur#define CLOCK_SOURCE_WATCHDOG 0x10#define CLOCK_SOURCE_VALID_FOR_HRES 0x20 +#define CLOCK_SOURCE_UNSTABLE 0x40/* simplify initialization of mask field */ #define CLOCKSOURCE_MASK (bits) (cycle_t)((bits) < 64 ? ((1ULL<<(bits))-1) : -1)
kernel/time/clocksource.c +39 -17
102 lines not on this page · raw message
Signature · 4 lines
blue skies, Martin. "Reality continues to ruin my life." - Calvin.
[tip:timers/core] clocksource: Move watchdog downgrade to a work queue thread
Commit-ID: c55c87c892c1875deace0c8fc28787335277fdf2 Gitweb: http://git.kernel.org/tip/c55c87c892c1875deace0c8fc28787335277fdf2 Author: Martin Schwidefsky <[email protected]> AuthorDate: Fri, 14 Aug 2009 15:47:25 +0200 Committer: Thomas Gleixner <[email protected]> CommitDate: Sat, 15 Aug 2009 10:55:46 +0200
clocksource: Move watchdog downgrade to a work queue thread
Move the downgrade of an unstable clocksource from the timer interrupt context into the process context of a work queue thread. This is needed to be able to do the clocksource switch with stop_machine.
LKML-Reference: <[email protected]>
--- include/linux/clocksource.h | 1 + kernel/time/clocksource.c | 56 ++++++++++++++++++++++++++++++------------- 2 files changed, 40 insertions(+), 17 deletions(-)
include/linux/clocksource.h +1 -0
@@ -213,6 +213,7 @@ extern struct clocksource *clock; /* current clocksource */#define CLOCK_SOURCE_WATCHDOG 0x10#define CLOCK_SOURCE_VALID_FOR_HRES 0x20 +#define CLOCK_SOURCE_UNSTABLE 0x40/* simplify initialization of mask field */ #define CLOCKSOURCE_MASK (bits) (cycle_t)((bits) < 64 ? ((1ULL<<(bits))-1) : -1)
kernel/time/clocksource.c +39 -17
102 lines not on this page · raw message
PATCH 9/15 introduce struct timekeeper
In reply to Martin SchwidefskyFrom: Martin Schwidefsky <[email protected]>
Add struct timekeeper to keep the internal values timekeeping.c needs in regard to the currently selected clock source. This moves the timekeeping intervals, xtime_nsec and the ntp error value from struct clocksource to struct timekeeper. The raw_time is removed from the clocksource as well. It gets treated like xtime as a global variable. Eventually xtime raw_time should be moved to struct timekeeper.
--- arch/s390/kernel/time.c | 1 include/linux/clocksource.h | 54 ---------- kernel/time/clocksource.c | 6 - kernel/time/timekeeping.c | 233 +++++++++++++++++++++++++++++--------------- 4 files changed, 162 insertions(+), 132 deletions(-)
arch/s390/kernel/time.c +0 -1
@@ -280,7 +280,6 @@ void __init time_init(void) now =get_clock ();tod_to_timeval (now -TOD_UNIX_EPOCH , &xtime); clocksource_tod.cycle_last = now; - clocksource_tod.raw_time = xtime;tod_to_timeval (sched_clock_base_cc -TOD_UNIX_EPOCH , &ts);set_normalized_timespec (&wall_to_monotonic, -ts.tv_sec, -ts.tv_nsec);write_sequnlock_irqrestore (&xtime_lock, flags);
include/linux/clocksource.h +4 -50
89 lines not on this page · raw message
kernel/time/clocksource.c +4 -2
@@ -177,7 +177,8 @@ static void clocksource_watchdog(unsigne goto out; wdnow = watchdog->read (watchdog); - wd_nsec =cyc2ns (watchdog, (wdnow - watchdog_last) & watchdog->mask); + wd_nsec =clocksource_cyc2ns ((wdnow - watchdog_last) & watchdog->mask, + watchdog->mult, watchdog->shift); watchdog_last = wdnow;list_for_each_entry (cs, &watchdog_list, wd_list) {
@@ -196,7 +197,8 @@ static void clocksource_watchdog(unsigne }/* Check the deviation from the watchdog clocksource. */ - cs_nsec =cyc2ns (cs, (csnow - cs->wd_last) & cs->mask); + cs_nsec =clocksource_cyc2ns ((csnow - cs->wd_last) & + cs->mask, cs->mult, cs->shift); cs->wd_last = csnow;if (abs (cs_nsec - wd_nsec) >WATCHDOG_THRESHOLD ) {clocksource_unstable (cs, cs_nsec - wd_nsec);
kernel/time/timekeeping.c +154 -79
514 lines not on this page · raw message
Signature · 4 lines
blue skies, Martin. "Reality continues to ruin my life." - Calvin.
[tip:timers/core] timekeeping: Introduce struct timekeeper
Commit-ID: 155ec60226ae0ae2aadaa57c951a58a359331030 Gitweb: http://git.kernel.org/tip/155ec60226ae0ae2aadaa57c951a58a359331030 Author: Martin Schwidefsky <[email protected]> AuthorDate: Fri, 14 Aug 2009 15:47:26 +0200 Committer: Thomas Gleixner <[email protected]> CommitDate: Sat, 15 Aug 2009 10:55:46 +0200
timekeeping: Introduce struct timekeeper
Add struct timekeeper to keep the internal values timekeeping.c needs in regard to the currently selected clock source. This moves the timekeeping intervals, xtime_nsec and the ntp error value from struct clocksource to struct timekeeper. The raw_time is removed from the clocksource as well. It gets treated like xtime as a global variable. Eventually xtime raw_time should be moved to struct timekeeper.
[ tglx: minor cleanup ]
LKML-Reference: <[email protected]>
--- arch/s390/kernel/time.c | 1 - include/linux/clocksource.h | 54 +--------- kernel/time/clocksource.c | 6 +- kernel/time/timekeeping.c | 235 ++++++++++++++++++++++++++++--------------- 4 files changed, 164 insertions(+), 132 deletions(-)
arch/s390/kernel/time.c +0 -1
@@ -280,7 +280,6 @@ void __init time_init(void) now =get_clock ();tod_to_timeval (now -TOD_UNIX_EPOCH , &xtime); clocksource_tod.cycle_last = now; - clocksource_tod.raw_time = xtime;tod_to_timeval (sched_clock_base_cc -TOD_UNIX_EPOCH , &ts);set_normalized_timespec (&wall_to_monotonic, -ts.tv_sec, -ts.tv_nsec);write_sequnlock_irqrestore (&xtime_lock, flags);
include/linux/clocksource.h +4 -50
89 lines not on this page · raw message
kernel/time/clocksource.c +4 -2
@@ -177,7 +177,8 @@ static void clocksource_watchdog(unsigned long data) goto out; wdnow = watchdog->read (watchdog); - wd_nsec =cyc2ns (watchdog, (wdnow - watchdog_last) & watchdog->mask); + wd_nsec =clocksource_cyc2ns ((wdnow - watchdog_last) & watchdog->mask, + watchdog->mult, watchdog->shift); watchdog_last = wdnow;list_for_each_entry (cs, &watchdog_list, wd_list) {
@@ -196,7 +197,8 @@ static void clocksource_watchdog(unsigned long data) }/* Check the deviation from the watchdog clocksource. */ - cs_nsec =cyc2ns (cs, (csnow - cs->wd_last) & cs->mask); + cs_nsec =clocksource_cyc2ns ((csnow - cs->wd_last) & + cs->mask, cs->mult, cs->shift); cs->wd_last = csnow;if (abs (cs_nsec - wd_nsec) >WATCHDOG_THRESHOLD ) {clocksource_unstable (cs, cs_nsec - wd_nsec);
kernel/time/timekeeping.c +156 -79
516 lines not on this page · raw message
PATCH 10/15 add xtime_shift and ntp_error_shift to struct timekeeper
In reply to Martin SchwidefskyFrom: Martin Schwidefsky <[email protected]>
The xtime_nsec value in the timekeeper structure is shifted by a few bits to improve precision. This happens to be the same value as the clock->shift. To improve readability add xtime_shift to the timekeeper and use it instead of the clock->shift. Likewise add ntp_error_shift and replace all (NTP_SCALE_SHIFT - clock->shift) expressions.
--- kernel/time/timekeeping.c | 36 +++++++++++++++++++++--------------- 1 file changed, 21 insertions(+), 15 deletions(-)
kernel/time/timekeeping.c +21 -15
@@ -23,6 +23,8 @@struct timekeeper {/* Current clocksource used for timekeeping. */ struct clocksource *clock; +/* The shift value of the current clocksource. */ +int shift;/* Number of clock cycles in one NTP interval. */ cycle_t cycle_interval;
@@ -36,6 +38,9 @@ struct timekeeper {/* Difference between accumulated time and NTP time in ntp * shifted nano seconds. */ s64 ntp_error; +/* Shift conversion between clock shifted nano seconds and +* ntp shifted nano seconds. */ +int ntp_error_shift; };struct timekeeper timekeeper;
@@ -75,8 +80,10 @@ static void timekeeper_setup_internals(s ((u64 ) interval * clock->mult_orig) >> clock->shift; timekeeper.xtime_nsec =0 ; + timekeeper.shift = clock->shift; timekeeper.ntp_error =0 ; + timekeeper.ntp_error_shift =NTP_SCALE_SHIFT - clock->shift; }/*
@@ -641,8 +648,7 @@ static __always_inline int timekeeping_b* Now calculate the error in (1 << look_ahead) ticks, but first * remove the single look ahead already included in the error. */ - tick_error = tick_length >> - (NTP_SCALE_SHIFT - timekeeper.clock->shift +1 ); + tick_error = tick_length >> (timekeeper.ntp_error_shift +1 ); tick_error -= timekeeper.xtime_interval >>1 ; error = ((error - tick_error) >> look_ahead) + tick_error;
@@ -673,8 +679,7 @@ static void timekeeping_adjust(s64 offses64 error, interval = timekeeper.cycle_interval;int adj; - error = timekeeper.ntp_error >> - (NTP_SCALE_SHIFT - timekeeper.clock->shift -1 ); + error = timekeeper.ntp_error >> (timekeeper.ntp_error_shift -1 );if (error > interval) { error >>=2 ;if (likely (error <= interval))
@@ -696,7 +701,7 @@ static void timekeeping_adjust(s64 offse timekeeper.xtime_interval += interval; timekeeper.xtime_nsec -= offset; timekeeper.ntp_error -= (interval - offset) << - (NTP_SCALE_SHIFT - timekeeper.clock->shift); + timekeeper.ntp_error_shift; }/**
@@ -708,7 +713,7 @@ void update_wall_time(void) {struct clocksource *clock;cycle_t offset; -s64 nsecs; +u64 nsecs;/* Make sure we're fully resumed: */ if (unlikely (timekeeping_suspended))
@@ -720,7 +725,7 @@ void update_wall_time(void)#else offset = timekeeper.cycle_interval;#endif - timekeeper.xtime_nsec = (s64 )xtime.tv_nsec << clock->shift; + timekeeper.xtime_nsec = (s64 )xtime.tv_nsec << timekeeper.shift;/* normally this loop will run just once, however in the * case of lost or late ticks, it will accumulate correctly.
@@ -731,8 +736,9 @@ void update_wall_time(void) clock->cycle_last += timekeeper.cycle_interval; timekeeper.xtime_nsec += timekeeper.xtime_interval; -if (timekeeper.xtime_nsec >= (u64 )NSEC_PER_SEC << clock->shift) { - timekeeper.xtime_nsec -= (u64 )NSEC_PER_SEC << clock->shift; + nsecs = (u64 )NSEC_PER_SEC << timekeeper.shift; +if (timekeeper.xtime_nsec >= nsecs) { + timekeeper.xtime_nsec -= nsecs; xtime.tv_sec++;second_overflow (); }
@@ -746,7 +752,7 @@ void update_wall_time(void)/* accumulate error between NTP and clock interval */ timekeeper.ntp_error += tick_length; timekeeper.ntp_error -= timekeeper.xtime_interval << - (NTP_SCALE_SHIFT - clock->shift); + timekeeper.ntp_error_shift; }/* correct the clock when NTP error is too big */
@@ -771,16 +777,16 @@ void update_wall_time(void)if (unlikely ((s64 )timekeeper.xtime_nsec <0 )) {s64 neg = -(s64 )timekeeper.xtime_nsec; timekeeper.xtime_nsec =0 ; - timekeeper.ntp_error += neg << (NTP_SCALE_SHIFT - clock->shift); + timekeeper.ntp_error += neg << timekeeper.ntp_error_shift; }/* store full nanoseconds into xtime after rounding it up and * add the remainder to the error difference. */ - xtime.tv_nsec = ((s64 )timekeeper.xtime_nsec >> clock->shift) +1 ; - timekeeper.xtime_nsec -= (s64 )xtime.tv_nsec << clock->shift; - timekeeper.ntp_error += timekeeper.xtime_nsec << - (NTP_SCALE_SHIFT - clock->shift); + xtime.tv_nsec = ((s64 ) timekeeper.xtime_nsec >> timekeeper.shift) +1 ; + timekeeper.xtime_nsec -= (s64 ) xtime.tv_nsec << timekeeper.shift; + timekeeper.ntp_error += timekeeper.xtime_nsec << + timekeeper.ntp_error_shift; nsecs =clocksource_cyc2ns (offset, clock->mult, clock->shift);update_xtime_cache (nsecs);
Signature · 4 lines
blue skies, Martin. "Reality continues to ruin my life." - Calvin.
[tip:timers/core] timekeeping: Add xtime_shift and ntp_error_shift to struct timekeeper
Commit-ID: 23ce72117c714baab794e66c8daf343bf6a912bf Gitweb: http://git.kernel.org/tip/23ce72117c714baab794e66c8daf343bf6a912bf Author: Martin Schwidefsky <[email protected]> AuthorDate: Fri, 14 Aug 2009 15:47:27 +0200 Committer: Thomas Gleixner <[email protected]> CommitDate: Sat, 15 Aug 2009 10:55:46 +0200
timekeeping: Add xtime_shift and ntp_error_shift to struct timekeeper
The xtime_nsec value in the timekeeper structure is shifted by a few bits to improve precision. This happens to be the same value as the clock->shift. To improve readability add xtime_shift to the timekeeper and use it instead of the clock->shift. Likewise add ntp_error_shift and replace all (NTP_SCALE_SHIFT - clock->shift) expressions.
LKML-Reference: <[email protected]>
--- kernel/time/timekeeping.c | 33 +++++++++++++++++++-------------- 1 files changed, 19 insertions(+), 14 deletions(-)
kernel/time/timekeeping.c +19 -14
@@ -23,6 +23,8 @@struct timekeeper {/* Current clocksource used for timekeeping. */ struct clocksource *clock; +/* The shift value of the current clocksource. */ +int shift;/* Number of clock cycles in one NTP interval. */ cycle_t cycle_interval;
@@ -36,6 +38,9 @@ struct timekeeper {/* Difference between accumulated time and NTP time in ntp * shifted nano seconds. */ s64 ntp_error; +/* Shift conversion between clock shifted nano seconds and +* ntp shifted nano seconds. */ +int ntp_error_shift; };struct timekeeper timekeeper;
@@ -75,8 +80,10 @@ static void timekeeper_setup_internals(struct clocksource *clock) ((u64 ) interval * clock->mult_orig) >> clock->shift; timekeeper.xtime_nsec =0 ; + timekeeper.shift = clock->shift; timekeeper.ntp_error =0 ; + timekeeper.ntp_error_shift =NTP_SCALE_SHIFT - clock->shift; }/*
@@ -641,8 +648,7 @@ static __always_inline int timekeeping_bigadjust(s64 error, s64 *interval,* Now calculate the error in (1 << look_ahead) ticks, but first * remove the single look ahead already included in the error. */ - tick_error = tick_length >> - (NTP_SCALE_SHIFT - timekeeper.clock->shift +1 ); + tick_error = tick_length >> (timekeeper.ntp_error_shift +1 ); tick_error -= timekeeper.xtime_interval >>1 ; error = ((error - tick_error) >> look_ahead) + tick_error;
@@ -673,8 +679,7 @@ static void timekeeping_adjust(s64 offset)s64 error, interval = timekeeper.cycle_interval;int adj; - error = timekeeper.ntp_error >> - (NTP_SCALE_SHIFT - timekeeper.clock->shift -1 ); + error = timekeeper.ntp_error >> (timekeeper.ntp_error_shift -1 );if (error > interval) { error >>=2 ;if (likely (error <= interval))
@@ -696,7 +701,7 @@ static void timekeeping_adjust(s64 offset) timekeeper.xtime_interval += interval; timekeeper.xtime_nsec -= offset; timekeeper.ntp_error -= (interval - offset) << - (NTP_SCALE_SHIFT - timekeeper.clock->shift); + timekeeper.ntp_error_shift; }/**
@@ -708,7 +713,7 @@ void update_wall_time(void) {struct clocksource *clock;cycle_t offset; -s64 nsecs; +u64 nsecs;/* Make sure we're fully resumed: */ if (unlikely (timekeeping_suspended))
@@ -720,13 +725,13 @@ void update_wall_time(void)#else offset = timekeeper.cycle_interval;#endif - timekeeper.xtime_nsec = (s64 )xtime.tv_nsec << clock->shift; + timekeeper.xtime_nsec = (s64 )xtime.tv_nsec << timekeeper.shift;/* normally this loop will run just once, however in the * case of lost or late ticks, it will accumulate correctly. */ while (offset >= timekeeper.cycle_interval) { -u64 nsecps = (u64 )NSEC_PER_SEC << clock->shift; +u64 nsecps = (u64 )NSEC_PER_SEC << timekeeper.shift;/* accumulate one interval */ offset -= timekeeper.cycle_interval;
@@ -748,7 +753,7 @@ void update_wall_time(void)/* accumulate error between NTP and clock interval */ timekeeper.ntp_error += tick_length; timekeeper.ntp_error -= timekeeper.xtime_interval << - (NTP_SCALE_SHIFT - clock->shift); + timekeeper.ntp_error_shift; }/* correct the clock when NTP error is too big */
@@ -773,16 +778,16 @@ void update_wall_time(void)if (unlikely ((s64 )timekeeper.xtime_nsec <0 )) {s64 neg = -(s64 )timekeeper.xtime_nsec; timekeeper.xtime_nsec =0 ; - timekeeper.ntp_error += neg << (NTP_SCALE_SHIFT - clock->shift); + timekeeper.ntp_error += neg << timekeeper.ntp_error_shift; }/* store full nanoseconds into xtime after rounding it up and * add the remainder to the error difference. */ - xtime.tv_nsec = ((s64 )timekeeper.xtime_nsec >> clock->shift) +1 ; - timekeeper.xtime_nsec -= (s64 )xtime.tv_nsec << clock->shift; - timekeeper.ntp_error += timekeeper.xtime_nsec << - (NTP_SCALE_SHIFT - clock->shift); + xtime.tv_nsec = ((s64 ) timekeeper.xtime_nsec >> timekeeper.shift) +1 ; + timekeeper.xtime_nsec -= (s64 ) xtime.tv_nsec << timekeeper.shift; + timekeeper.ntp_error += timekeeper.xtime_nsec << + timekeeper.ntp_error_shift; nsecs =clocksource_cyc2ns (offset, clock->mult, clock->shift);update_xtime_cache (nsecs);
Re: [patch 10/15] add xtime_shift and ntp_error_shift to struct timekeeper
In reply to Martin Schwidefskykernel/time/timekeeping.c void update_wall_time(void) · line 739
Quoted 4 lines · Martin Schwidefsky
kernel/time/timekeeping.c +1
-2timekeeper.xtime_nsec += timekeeper.xtime_interval; -if (timekeeper.xtime_nsec >= (u64 )NSEC_PER_SEC << clock->shift) { - timekeeper.xtime_nsec -= (u64 )NSEC_PER_SEC << clock->shift; + nsecs = (u64 )NSEC_PER_SEC << timekeeper.shift;
Minor nit. I made this a separate u64 variable as nsecs is s64 and while this signed/unsigned mismatch is probably not hurting in that context it's still not pretty :)
Thanks,
tglx
PATCH 11/15 move NTP adjusted clock multiplier to struct timekeeper
In reply to Martin SchwidefskyFrom: Martin Schwidefsky <[email protected]>
The clocksource structure has two multipliers, the unmodified multiplier clock->mult_orig and the NTP corrected multiplier clock->mult. The NTP multiplier is misplaced in the struct clocksource, this is private information of the timekeeping code. Add the mult field to the struct timekeeper to contain the NTP corrected value, keep the unmodifed multiplier in clock->mult and remove clock->mult_orig.
--- arch/arm/plat-omap/common.c | 7 +---- include/linux/clocksource.h | 4 --- kernel/time/timekeeping.c | 53 +++++++++++++++++++------------------------- 3 files changed, 27 insertions(+), 37 deletions(-)
include/linux/clocksource.h +1 -3
@@ -149,8 +149,7 @@ extern u64 timecounter_cyc2time(struct t* @disable: optional function to disable the clocksource * @mask: bitmask for two's complement * subtraction of non 64 bit counters -* @mult: cycle to nanosecond multiplier (adjusted by NTP) -* @mult_orig: cycle to nanosecond multiplier (unadjusted by NTP) +* @mult: cycle to nanosecond multiplier * @shift: cycle to nanosecond divisor (power of two) * @flags: flags describing special properties * @vread: vsyscall based read
@@ -168,7 +167,6 @@ struct clocksource {void (*disable)(struct clocksource *cs);cycle_t mask;u32 mult; -u32 mult_orig;u32 shift;unsigned long flags;cycle_t (*vread)(void);
kernel/time/timekeeping.c +24 -29
141 lines not on this page · raw message
arch/arm/plat-omap/common.c +2 -5
@@ -253,11 +253,8 @@ static struct clocksource clocksource_32*/ unsigned long long sched_clock (void ) { -unsigned long long ret; - - ret = (unsigned long long )clocksource_32k.read (&clocksource_32k); - ret = (ret * clocksource_32k.mult_orig) >> clocksource_32k.shift; -return ret; +return clocksource_cyc2ns (clocksource_32k.read (&clocksource_32k), + clocksource_32k.mult, clocksource_32k.shift); }static int __init omap_init_clocksource_32k (void )
Signature · 4 lines
blue skies, Martin. "Reality continues to ruin my life." - Calvin.
[tip:timers/core] timekeeping: Move NTP adjusted clock multiplier to struct timekeeper
Commit-ID: 0a54419836254a27baecd9037103171bcbabaf67 Gitweb: http://git.kernel.org/tip/0a54419836254a27baecd9037103171bcbabaf67 Author: Martin Schwidefsky <[email protected]> AuthorDate: Fri, 14 Aug 2009 15:47:28 +0200 Committer: Thomas Gleixner <[email protected]> CommitDate: Sat, 15 Aug 2009 10:55:46 +0200
timekeeping: Move NTP adjusted clock multiplier to struct timekeeper
The clocksource structure has two multipliers, the unmodified multiplier clock->mult_orig and the NTP corrected multiplier clock->mult. The NTP multiplier is misplaced in the struct clocksource, this is private information of the timekeeping code. Add the mult field to the struct timekeeper to contain the NTP corrected value, keep the unmodifed multiplier in clock->mult and remove clock->mult_orig.
LKML-Reference: <[email protected]>
--- arch/arm/plat-omap/common.c | 7 +---- include/linux/clocksource.h | 4 +-- kernel/time/timekeeping.c | 53 +++++++++++++++++++----------------------- 3 files changed, 27 insertions(+), 37 deletions(-)
arch/arm/plat-omap/common.c +2 -5
@@ -253,11 +253,8 @@ static struct clocksource clocksource_32k = {*/ unsigned long long sched_clock (void ) { -unsigned long long ret; - - ret = (unsigned long long )clocksource_32k.read (&clocksource_32k); - ret = (ret * clocksource_32k.mult_orig) >> clocksource_32k.shift; -return ret; +return clocksource_cyc2ns (clocksource_32k.read (&clocksource_32k), + clocksource_32k.mult, clocksource_32k.shift); }static int __init omap_init_clocksource_32k (void )
include/linux/clocksource.h +1 -3
@@ -149,8 +149,7 @@ extern u64 timecounter_cyc2time(struct timecounter *tc,* @disable: optional function to disable the clocksource * @mask: bitmask for two's complement * subtraction of non 64 bit counters -* @mult: cycle to nanosecond multiplier (adjusted by NTP) -* @mult_orig: cycle to nanosecond multiplier (unadjusted by NTP) +* @mult: cycle to nanosecond multiplier * @shift: cycle to nanosecond divisor (power of two) * @flags: flags describing special properties * @vread: vsyscall based read
@@ -168,7 +167,6 @@ struct clocksource {void (*disable)(struct clocksource *cs);cycle_t mask;u32 mult; -u32 mult_orig;u32 shift;unsigned long flags;cycle_t (*vread)(void);
kernel/time/timekeeping.c +24 -29
141 lines not on this page · raw message
PATCH 12/15 timekeeper read clock helper functions
In reply to Martin SchwidefskyFrom: Martin Schwidefsky <[email protected]>
Add timekeeper_read_clock_ntp and timekeeper_read_clock_raw and use them for getnstimeofday, ktime_get, ktime_get_ts and getrawmonotonic.
--- kernel/time/timekeeping.c | 91 +++++++++++++++++++--------------------------- 1 file changed, 38 insertions(+), 53 deletions(-)
kernel/time/timekeeping.c +38 -53
@@ -95,6 +95,40 @@ static void timekeeper_setup_internals(s timekeeper.mult = clock->mult; } +/* Timekeeper helper functions. */ +static inline s64 timekeeping_get_ns (void ) +{ +cycle_t cycle_now, cycle_delta; +struct clocksource *clock; + +/* read clocksource: */ + clock = timekeeper.clock; + cycle_now = clock->read (clock); + +/* calculate the delta since the last update_wall_time: */ + cycle_delta = (cycle_now - clock->cycle_last) & clock->mask; + +/* return delta convert to nanoseconds using ntp adjusted mult. */ +return clocksource_cyc2ns (cycle_delta, timekeeper.mult, + timekeeper.shift); +} + +static inline s64 timekeeping_get_ns_raw (void ) +{ +cycle_t cycle_now, cycle_delta; +struct clocksource *clock; + +/* read clocksource: */ + clock = timekeeper.clock; + cycle_now = clock->read (clock); + +/* calculate the delta since the last update_wall_time: */ + cycle_delta = (cycle_now - clock->cycle_last) & clock->mask; + +/* return delta convert to nanoseconds using ntp adjusted mult. */ +return clocksource_cyc2ns (cycle_delta, clock->mult, clock->shift); +} +/* * This read-write spinlock protects us from races in SMP while * playing with xtime.
@@ -183,8 +217,6 @@ static void timekeeping_forward_now(void*/ void getnstimeofday (struct timespec *ts) { -cycle_t cycle_now, cycle_delta; -struct clocksource *clock;unsigned long seq;s64 nsecs;
@@ -194,17 +226,7 @@ void getnstimeofday(struct timespec *ts) seq =read_seqbegin (&xtime_lock); *ts = xtime; - -/* read clocksource: */ - clock = timekeeper.clock; - cycle_now = clock->read (clock); - -/* calculate the delta since the last update_wall_time: */ - cycle_delta = (cycle_now - clock->cycle_last) & clock->mask; - -/* convert to nanoseconds: */ - nsecs =clocksource_cyc2ns (cycle_delta, timekeeper.mult, - timekeeper.shift); + nsecs =timekeeping_get_ns ();/* If arch requires, add in gettimeoffset() */ nsecs +=arch_gettimeoffset ();
@@ -218,8 +240,6 @@ EXPORT_SYMBOL(getnstimeofday);ktime_t ktime_get (void ) { -cycle_t cycle_now, cycle_delta; -struct clocksource *clock;unsigned int seq;s64 secs, nsecs;
@@ -229,17 +249,7 @@ ktime_t ktime_get(void) seq =read_seqbegin (&xtime_lock); secs = xtime.tv_sec + wall_to_monotonic.tv_sec; nsecs = xtime.tv_nsec + wall_to_monotonic.tv_nsec; - -/* read clocksource: */ - clock = timekeeper.clock; - cycle_now = clock->read (clock); - -/* calculate the delta since the last update_wall_time: */ - cycle_delta = (cycle_now - clock->cycle_last) & clock->mask; - -/* convert to nanoseconds: */ - nsecs +=clocksource_cyc2ns (cycle_delta, timekeeper.mult, - timekeeper.shift); + nsecs +=timekeeping_get_ns (); }while (read_seqretry (&xtime_lock, seq));/*
@@ -260,8 +270,6 @@ EXPORT_SYMBOL_GPL(ktime_get);*/ void ktime_get_ts (struct timespec *ts) { -cycle_t cycle_now, cycle_delta; -struct clocksource *clock;struct timespec tomono;unsigned int seq;s64 nsecs;
@@ -272,17 +280,7 @@ void ktime_get_ts(struct timespec *ts) seq =read_seqbegin (&xtime_lock); *ts = xtime; tomono = wall_to_monotonic; - -/* read clocksource: */ - clock = timekeeper.clock; - cycle_now = clock->read (clock); - -/* calculate the delta since the last update_wall_time: */ - cycle_delta = (cycle_now - clock->cycle_last) & clock->mask; - -/* convert to nanoseconds: */ - nsecs =clocksource_cyc2ns (cycle_delta, timekeeper.mult, - timekeeper.shift); + nsecs =timekeeping_get_ns (); }while (read_seqretry (&xtime_lock, seq));
@@ -445,23 +443,10 @@ void getrawmonotonic(struct timespec *ts {unsigned long seq;s64 nsecs; -cycle_t cycle_now, cycle_delta; -struct clocksource *clock;do { seq =read_seqbegin (&xtime_lock); - -/* read clocksource: */ - clock = timekeeper.clock; - cycle_now = clock->read (clock); - -/* calculate the delta since the last update_wall_time: */ - cycle_delta = (cycle_now - clock->cycle_last) & clock->mask; - -/* convert to nanoseconds: */ - nsecs =clocksource_cyc2ns (cycle_delta, clock->mult, - clock->shift); - + nsecs =timekeeping_get_ns_raw (); *ts = raw_time; }while (read_seqretry (&xtime_lock, seq));
Signature · 4 lines
blue skies, Martin. "Reality continues to ruin my life." - Calvin.
[tip:timers/core] timekeeping: Add timekeeper read_clock helper functions
Commit-ID: 2ba2a3054fdffc8e6452f4ee120760322a6fbd43 Gitweb: http://git.kernel.org/tip/2ba2a3054fdffc8e6452f4ee120760322a6fbd43 Author: Martin Schwidefsky <[email protected]> AuthorDate: Fri, 14 Aug 2009 15:47:29 +0200 Committer: Thomas Gleixner <[email protected]> CommitDate: Sat, 15 Aug 2009 10:55:46 +0200
timekeeping: Add timekeeper read_clock helper functions
Add timekeeper_read_clock_ntp and timekeeper_read_clock_raw and use them for getnstimeofday, ktime_get, ktime_get_ts and getrawmonotonic.
LKML-Reference: <[email protected]>
--- kernel/time/timekeeping.c | 91 +++++++++++++++++++-------------------------- 1 files changed, 38 insertions(+), 53 deletions(-)
kernel/time/timekeeping.c +38 -53
@@ -95,6 +95,40 @@ static void timekeeper_setup_internals(struct clocksource *clock) timekeeper.mult = clock->mult; } +/* Timekeeper helper functions. */ +static inline s64 timekeeping_get_ns (void ) +{ +cycle_t cycle_now, cycle_delta; +struct clocksource *clock; + +/* read clocksource: */ + clock = timekeeper.clock; + cycle_now = clock->read (clock); + +/* calculate the delta since the last update_wall_time: */ + cycle_delta = (cycle_now - clock->cycle_last) & clock->mask; + +/* return delta convert to nanoseconds using ntp adjusted mult. */ +return clocksource_cyc2ns (cycle_delta, timekeeper.mult, + timekeeper.shift); +} + +static inline s64 timekeeping_get_ns_raw (void ) +{ +cycle_t cycle_now, cycle_delta; +struct clocksource *clock; + +/* read clocksource: */ + clock = timekeeper.clock; + cycle_now = clock->read (clock); + +/* calculate the delta since the last update_wall_time: */ + cycle_delta = (cycle_now - clock->cycle_last) & clock->mask; + +/* return delta convert to nanoseconds using ntp adjusted mult. */ +return clocksource_cyc2ns (cycle_delta, clock->mult, clock->shift); +} +/* * This read-write spinlock protects us from races in SMP while * playing with xtime.
@@ -183,8 +217,6 @@ static void timekeeping_forward_now(void)*/ void getnstimeofday (struct timespec *ts) { -cycle_t cycle_now, cycle_delta; -struct clocksource *clock;unsigned long seq;s64 nsecs;
@@ -194,17 +226,7 @@ void getnstimeofday(struct timespec *ts) seq =read_seqbegin (&xtime_lock); *ts = xtime; - -/* read clocksource: */ - clock = timekeeper.clock; - cycle_now = clock->read (clock); - -/* calculate the delta since the last update_wall_time: */ - cycle_delta = (cycle_now - clock->cycle_last) & clock->mask; - -/* convert to nanoseconds: */ - nsecs =clocksource_cyc2ns (cycle_delta, timekeeper.mult, - timekeeper.shift); + nsecs =timekeeping_get_ns ();/* If arch requires, add in gettimeoffset() */ nsecs +=arch_gettimeoffset ();
@@ -218,8 +240,6 @@ EXPORT_SYMBOL(getnstimeofday);ktime_t ktime_get (void ) { -cycle_t cycle_now, cycle_delta; -struct clocksource *clock;unsigned int seq;s64 secs, nsecs;
@@ -229,17 +249,7 @@ ktime_t ktime_get(void) seq =read_seqbegin (&xtime_lock); secs = xtime.tv_sec + wall_to_monotonic.tv_sec; nsecs = xtime.tv_nsec + wall_to_monotonic.tv_nsec; - -/* read clocksource: */ - clock = timekeeper.clock; - cycle_now = clock->read (clock); - -/* calculate the delta since the last update_wall_time: */ - cycle_delta = (cycle_now - clock->cycle_last) & clock->mask; - -/* convert to nanoseconds: */ - nsecs +=clocksource_cyc2ns (cycle_delta, timekeeper.mult, - timekeeper.shift); + nsecs +=timekeeping_get_ns (); }while (read_seqretry (&xtime_lock, seq));/*
@@ -260,8 +270,6 @@ EXPORT_SYMBOL_GPL(ktime_get);*/ void ktime_get_ts (struct timespec *ts) { -cycle_t cycle_now, cycle_delta; -struct clocksource *clock;struct timespec tomono;unsigned int seq;s64 nsecs;
@@ -272,17 +280,7 @@ void ktime_get_ts(struct timespec *ts) seq =read_seqbegin (&xtime_lock); *ts = xtime; tomono = wall_to_monotonic; - -/* read clocksource: */ - clock = timekeeper.clock; - cycle_now = clock->read (clock); - -/* calculate the delta since the last update_wall_time: */ - cycle_delta = (cycle_now - clock->cycle_last) & clock->mask; - -/* convert to nanoseconds: */ - nsecs =clocksource_cyc2ns (cycle_delta, timekeeper.mult, - timekeeper.shift); + nsecs =timekeeping_get_ns (); }while (read_seqretry (&xtime_lock, seq));
@@ -445,23 +443,10 @@ void getrawmonotonic(struct timespec *ts) {unsigned long seq;s64 nsecs; -cycle_t cycle_now, cycle_delta; -struct clocksource *clock;do { seq =read_seqbegin (&xtime_lock); - -/* read clocksource: */ - clock = timekeeper.clock; - cycle_now = clock->read (clock); - -/* calculate the delta since the last update_wall_time: */ - cycle_delta = (cycle_now - clock->cycle_last) & clock->mask; - -/* convert to nanoseconds: */ - nsecs =clocksource_cyc2ns (cycle_delta, clock->mult, - clock->shift); - + nsecs =timekeeping_get_ns_raw (); *ts = raw_time; }while (read_seqretry (&xtime_lock, seq));
PATCH 13/15 update clocksource with stop_machine
In reply to Martin SchwidefskyFrom: Martin Schwidefsky <[email protected]>
update_wall_time calls change_clocksource HZ times per second to check if a new clock source is available. In close to 100% of all calls there is no new clock. Replace the tick based check by an update done with stop_machine.
--- include/linux/clocksource.h | 2 kernel/time/clocksource.c | 112 +++++++++++++++++--------------------------- kernel/time/timekeeping.c | 41 ++++++++++------ 3 files changed, 72 insertions(+), 83 deletions(-)
include/linux/clocksource.h +2 -0
@@ -291,4 +291,6 @@ static inline void update_vsyscall_tz(vo }#endif +extern void timekeeping_notify (struct clocksource *clock); +#endif /* _LINUX_CLOCKSOURCE_H */
kernel/time/clocksource.c +44 -68
233 lines not on this page · raw message
kernel/time/timekeeping.c +26 -15
82 lines not on this page · raw message
Signature · 4 lines
blue skies, Martin. "Reality continues to ruin my life." - Calvin.
[tip:timers/core] timekeeping: Update clocksource with stop_machine
Commit-ID: 75c5158f70c065b9704b924503d96e8297838f79 Gitweb: http://git.kernel.org/tip/75c5158f70c065b9704b924503d96e8297838f79 Author: Martin Schwidefsky <[email protected]> AuthorDate: Fri, 14 Aug 2009 15:47:30 +0200 Committer: Thomas Gleixner <[email protected]> CommitDate: Sat, 15 Aug 2009 10:55:46 +0200
timekeeping: Update clocksource with stop_machine
update_wall_time calls change_clocksource HZ times per second to check if a new clock source is available. In close to 100% of all calls there is no new clock. Replace the tick based check by an update done with stop_machine.
LKML-Reference: <[email protected]>
--- include/linux/clocksource.h | 2 + kernel/time/clocksource.c | 112 +++++++++++++++++-------------------------- kernel/time/timekeeping.c | 41 ++++++++++------ 3 files changed, 72 insertions(+), 83 deletions(-)
include/linux/clocksource.h +2 -0
@@ -291,4 +291,6 @@ static inline void update_vsyscall_tz(void) }#endif +extern void timekeeping_notify (struct clocksource *clock); +#endif /* _LINUX_CLOCKSOURCE_H */
kernel/time/clocksource.c +44 -68
233 lines not on this page · raw message
kernel/time/timekeeping.c +26 -15
82 lines not on this page · raw message
PATCH 14/15 read_persistent_clock should return a timespec
In reply to Martin SchwidefskyFrom: Martin Schwidefsky <[email protected]>
The persistent clock of some architectures (e.g. s390) have a better granularity than seconds. To reduce the delta between the host clock and the guest clock in a virtualized system change the read_persistent_clock function to return a struct timespec.
--- arch/m68knommu/kernel/time.c | 5 +-- arch/mips/dec/time.c | 5 +-- arch/mips/lasat/ds1603.c | 5 +-- arch/mips/lasat/sysctl.c | 8 +++-- arch/mips/lemote/lm2e/setup.c | 5 +-- arch/mips/mti-malta/malta-time.c | 5 +-- arch/mips/pmc-sierra/yosemite/setup.c | 5 +-- arch/mips/sibyte/swarm/setup.c | 15 +++++++-- arch/mips/sni/time.c | 5 +-- arch/powerpc/kernel/time.c | 7 ++-- arch/s390/kernel/time.c | 22 ++------------ arch/sh/kernel/time.c | 6 +-- arch/x86/kernel/rtc.c | 5 +-- arch/xtensa/kernel/time.c | 5 +-- include/linux/time.h | 2 - kernel/time/timekeeping.c | 52 ++++++++++++++++++---------------- 16 files changed, 83 insertions(+), 74 deletions(-)
arch/m68knommu/kernel/time.c +3 -2
@@ -72,9 +72,10 @@ static unsigned long read_rtc_mmss(void)return mktime (year, mon, day, hour, min, sec);; } -unsigned long read_persistent_clock (void ) +void read_persistent_clock (struct timespec *ts) { -return read_rtc_mmss (); + ts->tv_sec =read_rtc_mmss (); + ts->tv_nsec =0 ; }int update_persistent_clock (struct timespec now)
arch/mips/dec/time.c +3 -2
@@ -18,7 +18,7 @@#include <asm/dec/ioasic.h> #include <asm/dec/machtype.h> -unsigned long read_persistent_clock (void ) +void read_persistent_clock (struct timespec *ts) {unsigned int year, mon, day, hour, min, sec, real_year;unsigned long flags;
@@ -53,7 +53,8 @@ unsigned long read_persistent_clock(void year += real_year -72 +2000 ; -return mktime (year, mon, day, hour, min, sec); + ts->tv_sec =mktime (year, mon, day, hour, min, sec); + ts->tv_nsec =0 ; }/*
arch/mips/lasat/ds1603.c +3 -2
@@ -135,7 +135,7 @@ static void rtc_end_op(void)lasat_ndelay (1000 ); } -unsigned long read_persistent_clock (void ) +void read_persistent_clock (struct timespec *ts) {unsigned long word;unsigned long flags;
@@ -147,7 +147,8 @@ unsigned long read_persistent_clock(voidrtc_end_op ();spin_unlock_irqrestore (&rtc_lock, flags); -return word; + ts->tv_sec = word; + ts->tv_nsec =0 ; }int rtc_mips_set_mmss (unsigned long time)
arch/mips/lasat/sysctl.c +6 -2
@@ -92,10 +92,12 @@ static int rtctmp;int proc_dolasatrtc (ctl_table *table,int write,struct file *filp,void *buffer,size_t *lenp,loff_t *ppos) { +struct timespec ts;int r;if (!write) { - rtctmp =read_persistent_clock (); +read_persistent_clock (&ts); + rtctmp = ts.tv_sec;/* check for time < 0 and set to 0 */ if (rtctmp <0 ) rtctmp =0 ;
@@ -134,9 +136,11 @@ int sysctl_lasat_rtc(ctl_table *table, void *oldval, size_t *oldlenp, void *newval, size_t newlen) { + struct timespec ts;int r; - rtctmp =read_persistent_clock (); +read_persistent_clock (&ts); + rtctmp = ts.tv_sec;if (rtctmp <0 ) rtctmp =0 ; r =sysctl_intvec (table, oldval, oldlenp, newval, newlen);
arch/mips/lemote/lm2e/setup.c +3 -2
@@ -54,9 +54,10 @@ void __init plat_time_init(void) mips_hpt_frequency = cpu_clock_freq /2 ; } -unsigned long read_persistent_clock (void ) +void read_persistent_clock (struct timespec *ts) { -return mc146818_get_cmos_time (); + ts->tv_sec =mc146818_get_cmos_time (); + ts->tv_nsec =0 ; }void (*__wbflush)(void );
arch/mips/mti-malta/malta-time.c +3 -2
@@ -100,9 +100,10 @@ static unsigned int __init estimate_cpu_return count; } -unsigned long read_persistent_clock (void ) +void read_persistent_clock (struct timespec *ts) { -return mc146818_get_cmos_time (); + ts->tv_sec =mc146818_get_cmos_time (); + ts->tv_nsec =0 ; }static void __init plat_perf_setup (void )
arch/mips/pmc-sierra/yosemite/setup.c +3 -2
@@ -70,7 +70,7 @@ void __init bus_error_init(void) } -unsigned long read_persistent_clock (void ) +void read_persistent_clock (struct timespec *ts) {unsigned int year, month, day, hour, min, sec;unsigned long flags;
@@ -92,7 +92,8 @@ unsigned long read_persistent_clock(void m48t37_base->control =0x00 ;spin_unlock_irqrestore (&rtc_lock, flags); -return mktime (year, month, day, hour, min, sec); + ts->tv_sec =mktime (year, month, day, hour, min, sec); + ts->tv_nsec =0 ; }int rtc_mips_set_time (unsigned long tim)
arch/mips/sibyte/swarm/setup.c +11 -4
@@ -87,19 +87,26 @@ enum swarm_rtc_type {enum swarm_rtc_type swarm_rtc_type; -unsigned long read_persistent_clock (void ) +void read_persistent_clock (struct timespec *ts) { +unsigned long sec; +switch (swarm_rtc_type) {case RTC_XICOR : -return xicor_get_time (); + sec =xicor_get_time (); +break ;case RTC_M4LT81 : -return m41t81_get_time (); + sec =m41t81_get_time (); +break ;case RTC_NONE :default : -return mktime (2000 ,1 ,1 ,0 ,0 ,0 ); + sec =mktime (2000 ,1 ,1 ,0 ,0 ,0 ); +break ; } + ts->tv_sec = sec; + tv->tv_nsec =0 ; }int rtc_mips_set_time (unsigned long sec)
arch/mips/sni/time.c +3 -2
@@ -182,7 +182,8 @@ void __init plat_time_init(void)setup_pit_timer (); } -unsigned long read_persistent_clock (void ) +void read_persistent_clock (struct timespec *ts) { -return -1 ; + ts->tv_sec =-1 ; + ts->tv_nsec =0 ; }
arch/powerpc/kernel/time.c +4 -3
@@ -772,7 +772,7 @@ int update_persistent_clock(struct timesreturn ppc_md.set_rtc_time (&tm); } -unsigned long read_persistent_clock (void ) +void read_persistent_clock (struct timespec *ts) {struct rtc_time tm;static int first =1 ;
@@ -790,8 +790,9 @@ unsigned long read_persistent_clock(voidif (!ppc_md.get_rtc_time)return 0 ; ppc_md.get_rtc_time (&tm); -return mktime (tm.tm_year+1900 , tm.tm_mon+1 , tm.tm_mday, - tm.tm_hour, tm.tm_min, tm.tm_sec); + 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 */
arch/s390/kernel/time.c +4 -18
@@ -182,12 +182,9 @@ static void timing_alert_interrupt(__u16static void etr_reset (void );static void stp_reset (void ); -unsigned long read_persistent_clock (void ) +void read_persistent_clock (struct timespec *ts) { -struct timespec ts; - -tod_to_timeval (get_clock () -TOD_UNIX_EPOCH , &ts); -return ts.tv_sec; +tod_to_timeval (get_clock () -TOD_UNIX_EPOCH , ts); }static cycle_t read_tod_clock (struct clocksource *cs)
@@ -248,7 +245,6 @@ void __init time_init(void) {struct timespec ts;unsigned long flags; -cycle_t now;/* Reset time synchronization interfaces. */ etr_reset ();
@@ -266,20 +262,10 @@ void __init time_init(void)panic ("Could not register TOD clock source" );/* -* The TOD clock is an accurate clock. The xtime should be -* initialized in a way that the difference between TOD and -* xtime is reasonably small. Too bad that timekeeping_init -* sets xtime.tv_nsec to zero. In addition the clock source -* change from the jiffies clock source to the TOD clock -* source add another error of up to 1/HZ second. The same -* function sets wall_to_monotonic to a value that is too -* small for /proc/uptime to be accurate. -* Reset xtime and wall_to_monotonic to sane values. +* Reset wall_to_monotonic to the initial timestamp created +* in head.S to get a precise value in /proc/uptime. */ write_seqlock_irqsave (&xtime_lock, flags); - now =get_clock (); -tod_to_timeval (now -TOD_UNIX_EPOCH , &xtime); - clocksource_tod.cycle_last = now;tod_to_timeval (sched_clock_base_cc -TOD_UNIX_EPOCH , &ts);set_normalized_timespec (&wall_to_monotonic, -ts.tv_sec, -ts.tv_nsec);write_sequnlock_irqrestore (&xtime_lock, flags);
arch/sh/kernel/time.c +2 -4
@@ -39,11 +39,9 @@ void (*rtc_sh_get_time)(struct timespecint (*rtc_sh_set_time)(const time_t ) = null_rtc_set_time;#ifdef CONFIG_GENERIC_CMOS_UPDATE -unsigned long read_persistent_clock (void ) +void read_persistent_clock (struct timespec *ts) { -struct timespec tv; -rtc_sh_get_time (&tv); -return tv.tv_sec; +rtc_sh_get_time (&ts); }int update_persistent_clock (struct timespec now)
arch/x86/kernel/rtc.c +3 -2
@@ -178,7 +178,7 @@ static int set_rtc_mmss(unsigned long no }/* not static: needed by APM */ -unsigned long read_persistent_clock (void ) +void read_persistent_clock (struct timespec *ts) {unsigned long retval, flags;
@@ -186,7 +186,8 @@ unsigned long read_persistent_clock(void retval =get_wallclock ();spin_unlock_irqrestore (&rtc_lock, flags); -return retval; + ts->tv_sec = retval; + ts->tv_nsec =0 ; }int update_persistent_clock (struct timespec now)
arch/xtensa/kernel/time.c +2 -3
@@ -59,9 +59,8 @@ static struct irqaction timer_irqactionvoid __init time_init (void ) { - xtime.tv_nsec =0 ; - xtime.tv_sec =read_persistent_clock (); - +/* FIXME: xtime&wall_to_monotonic are set in timekeeping_init. */ +read_persistent_clock (&xtime);set_normalized_timespec (&wall_to_monotonic, -xtime.tv_sec, -xtime.tv_nsec);
include/linux/time.h +1 -1
@@ -101,7 +101,7 @@ extern struct timespec xtime;extern struct timespec wall_to_monotonic;extern seqlock_t xtime_lock; -extern unsigned long read_persistent_clock (void ); +extern void read_persistent_clock (struct timespec *ts);extern int update_persistent_clock (struct timespec now);extern int no_sync_cmos_clock__read_mostly ;void timekeeping_init (void );
kernel/time/timekeeping.c +29 -23
120 lines not on this page · raw message
Signature · 4 lines
blue skies, Martin. "Reality continues to ruin my life." - Calvin.
[tip:timers/core] timekeeping: Increase granularity of read_persistent_clock()
Commit-ID: d4f587c67fc39e0030ddd718675e252e208da4d7 Gitweb: http://git.kernel.org/tip/d4f587c67fc39e0030ddd718675e252e208da4d7 Author: Martin Schwidefsky <[email protected]> AuthorDate: Fri, 14 Aug 2009 15:47:31 +0200 Committer: Thomas Gleixner <[email protected]> CommitDate: Sat, 15 Aug 2009 10:55:46 +0200
timekeeping: Increase granularity of read_persistent_clock()
The persistent clock of some architectures (e.g. s390) have a better granularity than seconds. To reduce the delta between the host clock and the guest clock in a virtualized system change the read_persistent_clock function to return a struct timespec.
LKML-Reference: <[email protected]>
--- arch/m68knommu/kernel/time.c | 5 ++- arch/mips/dec/time.c | 5 ++- arch/mips/lasat/ds1603.c | 5 ++- arch/mips/lasat/sysctl.c | 8 ++++- arch/mips/lemote/lm2e/setup.c | 5 ++- arch/mips/mti-malta/malta-time.c | 5 ++- arch/mips/pmc-sierra/yosemite/setup.c | 5 ++- arch/mips/sibyte/swarm/setup.c | 15 +++++++-- arch/mips/sni/time.c | 5 ++- arch/powerpc/kernel/time.c | 7 ++-- arch/s390/kernel/time.c | 22 ++----------- arch/sh/kernel/time.c | 6 +-- arch/x86/kernel/rtc.c | 5 ++- arch/xtensa/kernel/time.c | 5 +-- include/linux/time.h | 2 +- kernel/time/timekeeping.c | 52 ++++++++++++++++++-------------- 16 files changed, 83 insertions(+), 74 deletions(-)
arch/m68knommu/kernel/time.c +3 -2
@@ -72,9 +72,10 @@ static unsigned long read_rtc_mmss(void)return mktime (year, mon, day, hour, min, sec);; } -unsigned long read_persistent_clock (void ) +void read_persistent_clock (struct timespec *ts) { -return read_rtc_mmss (); + ts->tv_sec =read_rtc_mmss (); + ts->tv_nsec =0 ; }int update_persistent_clock (struct timespec now)
arch/mips/dec/time.c +3 -2
@@ -18,7 +18,7 @@#include <asm/dec/ioasic.h> #include <asm/dec/machtype.h> -unsigned long read_persistent_clock (void ) +void read_persistent_clock (struct timespec *ts) {unsigned int year, mon, day, hour, min, sec, real_year;unsigned long flags;
@@ -53,7 +53,8 @@ unsigned long read_persistent_clock(void) year += real_year -72 +2000 ; -return mktime (year, mon, day, hour, min, sec); + ts->tv_sec =mktime (year, mon, day, hour, min, sec); + ts->tv_nsec =0 ; }/*
arch/mips/lasat/ds1603.c +3 -2
@@ -135,7 +135,7 @@ static void rtc_end_op(void)lasat_ndelay (1000 ); } -unsigned long read_persistent_clock (void ) +void read_persistent_clock (struct timespec *ts) {unsigned long word;unsigned long flags;
@@ -147,7 +147,8 @@ unsigned long read_persistent_clock(void)rtc_end_op ();spin_unlock_irqrestore (&rtc_lock, flags); -return word; + ts->tv_sec = word; + ts->tv_nsec =0 ; }int rtc_mips_set_mmss (unsigned long time)
arch/mips/lasat/sysctl.c +6 -2
@@ -92,10 +92,12 @@ static int rtctmp;int proc_dolasatrtc (ctl_table *table,int write,struct file *filp,void *buffer,size_t *lenp,loff_t *ppos) { +struct timespec ts;int r;if (!write) { - rtctmp =read_persistent_clock (); +read_persistent_clock (&ts); + rtctmp = ts.tv_sec;/* check for time < 0 and set to 0 */ if (rtctmp <0 ) rtctmp =0 ;
@@ -134,9 +136,11 @@ int sysctl_lasat_rtc(ctl_table *table, void *oldval, size_t *oldlenp, void *newval, size_t newlen) { + struct timespec ts;int r; - rtctmp =read_persistent_clock (); +read_persistent_clock (&ts); + rtctmp = ts.tv_sec;if (rtctmp <0 ) rtctmp =0 ; r =sysctl_intvec (table, oldval, oldlenp, newval, newlen);
arch/mips/lemote/lm2e/setup.c +3 -2
@@ -54,9 +54,10 @@ void __init plat_time_init(void) mips_hpt_frequency = cpu_clock_freq /2 ; } -unsigned long read_persistent_clock (void ) +void read_persistent_clock (struct timespec *ts) { -return mc146818_get_cmos_time (); + ts->tv_sec =mc146818_get_cmos_time (); + ts->tv_nsec =0 ; }void (*__wbflush)(void );
arch/mips/mti-malta/malta-time.c +3 -2
@@ -100,9 +100,10 @@ static unsigned int __init estimate_cpu_frequency(void)return count; } -unsigned long read_persistent_clock (void ) +void read_persistent_clock (struct timespec *ts) { -return mc146818_get_cmos_time (); + ts->tv_sec =mc146818_get_cmos_time (); + ts->tv_nsec =0 ; }static void __init plat_perf_setup (void )
arch/mips/pmc-sierra/yosemite/setup.c +3 -2
@@ -70,7 +70,7 @@ void __init bus_error_init(void) } -unsigned long read_persistent_clock (void ) +void read_persistent_clock (struct timespec *ts) {unsigned int year, month, day, hour, min, sec;unsigned long flags;
@@ -92,7 +92,8 @@ unsigned long read_persistent_clock(void) m48t37_base->control =0x00 ;spin_unlock_irqrestore (&rtc_lock, flags); -return mktime (year, month, day, hour, min, sec); + ts->tv_sec =mktime (year, month, day, hour, min, sec); + ts->tv_nsec =0 ; }int rtc_mips_set_time (unsigned long tim)
arch/mips/sibyte/swarm/setup.c +11 -4
@@ -87,19 +87,26 @@ enum swarm_rtc_type {enum swarm_rtc_type swarm_rtc_type; -unsigned long read_persistent_clock (void ) +void read_persistent_clock (struct timespec *ts) { +unsigned long sec; +switch (swarm_rtc_type) {case RTC_XICOR : -return xicor_get_time (); + sec =xicor_get_time (); +break ;case RTC_M4LT81 : -return m41t81_get_time (); + sec =m41t81_get_time (); +break ;case RTC_NONE :default : -return mktime (2000 ,1 ,1 ,0 ,0 ,0 ); + sec =mktime (2000 ,1 ,1 ,0 ,0 ,0 ); +break ; } + ts->tv_sec = sec; + tv->tv_nsec =0 ; }int rtc_mips_set_time (unsigned long sec)
arch/mips/sni/time.c +3 -2
@@ -182,7 +182,8 @@ void __init plat_time_init(void)setup_pit_timer (); } -unsigned long read_persistent_clock (void ) +void read_persistent_clock (struct timespec *ts) { -return -1 ; + ts->tv_sec =-1 ; + ts->tv_nsec =0 ; }
arch/powerpc/kernel/time.c +4 -3
@@ -769,7 +769,7 @@ int update_persistent_clock(struct timespec now)return ppc_md.set_rtc_time (&tm); } -unsigned long read_persistent_clock (void ) +void read_persistent_clock (struct timespec *ts) {struct rtc_time tm;static int first =1 ;
@@ -787,8 +787,9 @@ unsigned long read_persistent_clock(void)if (!ppc_md.get_rtc_time)return 0 ; ppc_md.get_rtc_time (&tm); -return mktime (tm.tm_year+1900 , tm.tm_mon+1 , tm.tm_mday, - tm.tm_hour, tm.tm_min, tm.tm_sec); + 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 */
arch/s390/kernel/time.c +4 -18
@@ -182,12 +182,9 @@ static void timing_alert_interrupt(__u16 code)static void etr_reset (void );static void stp_reset (void ); -unsigned long read_persistent_clock (void ) +void read_persistent_clock (struct timespec *ts) { -struct timespec ts; - -tod_to_timeval (get_clock () -TOD_UNIX_EPOCH , &ts); -return ts.tv_sec; +tod_to_timeval (get_clock () -TOD_UNIX_EPOCH , ts); }static cycle_t read_tod_clock (struct clocksource *cs)
@@ -248,7 +245,6 @@ void __init time_init(void) {struct timespec ts;unsigned long flags; -cycle_t now;/* Reset time synchronization interfaces. */ etr_reset ();
@@ -266,20 +262,10 @@ void __init time_init(void)panic ("Could not register TOD clock source" );/* -* The TOD clock is an accurate clock. The xtime should be -* initialized in a way that the difference between TOD and -* xtime is reasonably small. Too bad that timekeeping_init -* sets xtime.tv_nsec to zero. In addition the clock source -* change from the jiffies clock source to the TOD clock -* source add another error of up to 1/HZ second. The same -* function sets wall_to_monotonic to a value that is too -* small for /proc/uptime to be accurate. -* Reset xtime and wall_to_monotonic to sane values. +* Reset wall_to_monotonic to the initial timestamp created +* in head.S to get a precise value in /proc/uptime. */ write_seqlock_irqsave (&xtime_lock, flags); - now =get_clock (); -tod_to_timeval (now -TOD_UNIX_EPOCH , &xtime); - clocksource_tod.cycle_last = now;tod_to_timeval (sched_clock_base_cc -TOD_UNIX_EPOCH , &ts);set_normalized_timespec (&wall_to_monotonic, -ts.tv_sec, -ts.tv_nsec);write_sequnlock_irqrestore (&xtime_lock, flags);
arch/sh/kernel/time.c +2 -4
@@ -39,11 +39,9 @@ void (*rtc_sh_get_time)(struct timespec *) = null_rtc_get_time;int (*rtc_sh_set_time)(const time_t ) = null_rtc_set_time;#ifdef CONFIG_GENERIC_CMOS_UPDATE -unsigned long read_persistent_clock (void ) +void read_persistent_clock (struct timespec *ts) { -struct timespec tv; -rtc_sh_get_time (&tv); -return tv.tv_sec; +rtc_sh_get_time (&ts); }int update_persistent_clock (struct timespec now)
arch/x86/kernel/rtc.c +3 -2
@@ -178,7 +178,7 @@ static int set_rtc_mmss(unsigned long nowtime) }/* not static: needed by APM */ -unsigned long read_persistent_clock (void ) +void read_persistent_clock (struct timespec *ts) {unsigned long retval, flags;
@@ -186,7 +186,8 @@ unsigned long read_persistent_clock(void) retval =get_wallclock ();spin_unlock_irqrestore (&rtc_lock, flags); -return retval; + ts->tv_sec = retval; + ts->tv_nsec =0 ; }int update_persistent_clock (struct timespec now)
arch/xtensa/kernel/time.c +2 -3
@@ -59,9 +59,8 @@ static struct irqaction timer_irqaction = {void __init time_init (void ) { - xtime.tv_nsec =0 ; - xtime.tv_sec =read_persistent_clock (); - +/* FIXME: xtime&wall_to_monotonic are set in timekeeping_init. */ +read_persistent_clock (&xtime);set_normalized_timespec (&wall_to_monotonic, -xtime.tv_sec, -xtime.tv_nsec);
include/linux/time.h +1 -1
@@ -101,7 +101,7 @@ extern struct timespec xtime;extern struct timespec wall_to_monotonic;extern seqlock_t xtime_lock; -extern unsigned long read_persistent_clock (void ); +extern void read_persistent_clock (struct timespec *ts);extern int update_persistent_clock (struct timespec now);extern int no_sync_cmos_clock__read_mostly ;void timekeeping_init (void );
kernel/time/timekeeping.c +29 -23
120 lines not on this page · raw message
Re: [tip:timers/core] timekeeping: Increase granularity of read_persistent_clock()
Quoted 8 lines · tip-bot for Martin Schwidefsky
Commit-ID: d4f587c67fc39e0030ddd718675e252e208da4d7 Gitweb: http://git.kernel.org/tip/d4f587c67fc39e0030ddd718675e252e208da4d7 Author: Martin Schwidefsky <[email protected]> AuthorDate: Fri, 14 Aug 2009 15:47:31 +0200 Committer: Thomas Gleixner <[email protected]> CommitDate: Sat, 15 Aug 2009 10:55:46 +0200timekeeping: Increase granularity of
read_persistent_clock()
FYI, -tip arch-testing found that this commit broke the PowerPC build:
/home/mingo/tip/arch/powerpc/kernel/time.c: In function 'read_persistent_clock':/home/mingo/tip/arch/powerpc/kernel/time.c:788: error: 'return' with a value, in function returning void /home/mingo/tip/arch/powerpc/kernel/time.c:791: error: 'return' with a value, in function returning void make[2]: *** [arch/powerpc/kernel/time.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [arch/powerpc/kernel] Error 2
Ingo
Re: [tip:timers/core] timekeeping: Increase granularity of read_persistent_clock()
Quoted 15 lines · On Sat, 22 Aug 2009 12:32:52 +0200 Ingo Molnar <[email protected]> wrote:
Quoted 8 lines · tip-bot for Martin Schwidefsky
Commit-ID: d4f587c67fc39e0030ddd718675e252e208da4d7 Gitweb: http://git.kernel.org/tip/d4f587c67fc39e0030ddd718675e252e208da4d7 Author: Martin Schwidefsky <[email protected]> AuthorDate: Fri, 14 Aug 2009 15:47:31 +0200 Committer: Thomas Gleixner <[email protected]> CommitDate: Sat, 15 Aug 2009 10:55:46 +0200timekeeping: Increase granularity of
read_persistent_clock()FYI, -tip arch-testing found that this commit broke the PowerPC build:
Quoted 6 lines
/home/mingo/tip/arch/powerpc/kernel/time.c: In function 'read_persistent_clock':/home/mingo/tip/arch/powerpc/kernel/time.c:788: error: 'return' with a value, in function returning void/home/mingo/tip/arch/powerpc/kernel/time.c:791: error: 'return' with a value, in function returning void make[2]: *** [arch/powerpc/kernel/time.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [arch/powerpc/kernel] Error 2
I overlooked a case in the powerpc version of read_persistent_lock. New patch:
--
Subject: [PATCH] read_persistent_clock should return a timespec
From: Martin Schwidefsky <[email protected]>
The persistent clock of some architectures (e.g. s390) have a better granularity than seconds. To reduce the delta between the host clock and the guest clock in a virtualized system change the read_persistent_clock function to return a struct timespec.
--- arch/m68knommu/kernel/time.c | 5 +-- arch/mips/dec/time.c | 5 +-- arch/mips/lasat/ds1603.c | 5 +-- arch/mips/lasat/sysctl.c | 8 +++-- arch/mips/lemote/lm2e/setup.c | 5 +-- arch/mips/mti-malta/malta-time.c | 5 +-- arch/mips/pmc-sierra/yosemite/setup.c | 5 +-- arch/mips/sibyte/swarm/setup.c | 15 +++++++-- arch/mips/sni/time.c | 5 +-- arch/powerpc/kernel/time.c | 14 +++++---- arch/s390/kernel/time.c | 22 ++------------ arch/sh/kernel/time.c | 6 +-- arch/x86/kernel/rtc.c | 5 +-- arch/xtensa/kernel/time.c | 5 +-- include/linux/time.h | 2 - kernel/time/timekeeping.c | 52 ++++++++++++++++++---------------- 16 files changed, 88 insertions(+), 76 deletions(-)
arch/m68knommu/kernel/time.c +3 -2
@@ -72,9 +72,10 @@ static unsigned long read_rtc_mmss(void)return mktime (year, mon, day, hour, min, sec);; } -unsigned long read_persistent_clock (void ) +void read_persistent_clock (struct timespec *ts) { -return read_rtc_mmss (); + ts->tv_sec =read_rtc_mmss (); + ts->tv_nsec =0 ; }int update_persistent_clock (struct timespec now)
arch/mips/dec/time.c +3 -2
@@ -18,7 +18,7 @@#include <asm/dec/ioasic.h> #include <asm/dec/machtype.h> -unsigned long read_persistent_clock (void ) +void read_persistent_clock (struct timespec *ts) {unsigned int year, mon, day, hour, min, sec, real_year;unsigned long flags;
@@ -53,7 +53,8 @@ unsigned long read_persistent_clock(void year += real_year -72 +2000 ; -return mktime (year, mon, day, hour, min, sec); + ts->tv_sec =mktime (year, mon, day, hour, min, sec); + ts->tv_nsec =0 ; }/*
arch/mips/lasat/ds1603.c +3 -2
@@ -135,7 +135,7 @@ static void rtc_end_op(void)lasat_ndelay (1000 ); } -unsigned long read_persistent_clock (void ) +void read_persistent_clock (struct timespec *ts) {unsigned long word;unsigned long flags;
@@ -147,7 +147,8 @@ unsigned long read_persistent_clock(voidrtc_end_op ();spin_unlock_irqrestore (&rtc_lock, flags); -return word; + ts->tv_sec = word; + ts->tv_nsec =0 ; }int rtc_mips_set_mmss (unsigned long time)
arch/mips/lasat/sysctl.c +6 -2
@@ -92,10 +92,12 @@ static int rtctmp;int proc_dolasatrtc (ctl_table *table,int write,struct file *filp,void *buffer,size_t *lenp,loff_t *ppos) { +struct timespec ts;int r;if (!write) { - rtctmp =read_persistent_clock (); +read_persistent_clock (&ts); + rtctmp = ts.tv_sec;/* check for time < 0 and set to 0 */ if (rtctmp <0 ) rtctmp =0 ;
@@ -134,9 +136,11 @@ int sysctl_lasat_rtc(ctl_table *table, void *oldval, size_t *oldlenp, void *newval, size_t newlen) { + struct timespec ts;int r; - rtctmp =read_persistent_clock (); +read_persistent_clock (&ts); + rtctmp = ts.tv_sec;if (rtctmp <0 ) rtctmp =0 ; r =sysctl_intvec (table, oldval, oldlenp, newval, newlen);
arch/mips/lemote/lm2e/setup.c +3 -2
@@ -54,9 +54,10 @@ void __init plat_time_init(void) mips_hpt_frequency = cpu_clock_freq /2 ; } -unsigned long read_persistent_clock (void ) +void read_persistent_clock (struct timespec *ts) { -return mc146818_get_cmos_time (); + ts->tv_sec =mc146818_get_cmos_time (); + ts->tv_nsec =0 ; }void (*__wbflush)(void );
arch/mips/mti-malta/malta-time.c +3 -2
@@ -100,9 +100,10 @@ static unsigned int __init estimate_cpu_return count; } -unsigned long read_persistent_clock (void ) +void read_persistent_clock (struct timespec *ts) { -return mc146818_get_cmos_time (); + ts->tv_sec =mc146818_get_cmos_time (); + ts->tv_nsec =0 ; }static void __init plat_perf_setup (void )
arch/mips/pmc-sierra/yosemite/setup.c +3 -2
@@ -70,7 +70,7 @@ void __init bus_error_init(void) } -unsigned long read_persistent_clock (void ) +void read_persistent_clock (struct timespec *ts) {unsigned int year, month, day, hour, min, sec;unsigned long flags;
@@ -92,7 +92,8 @@ unsigned long read_persistent_clock(void m48t37_base->control =0x00 ;spin_unlock_irqrestore (&rtc_lock, flags); -return mktime (year, month, day, hour, min, sec); + ts->tv_sec =mktime (year, month, day, hour, min, sec); + ts->tv_nsec =0 ; }int rtc_mips_set_time (unsigned long tim)
arch/mips/sibyte/swarm/setup.c +11 -4
@@ -87,19 +87,26 @@ enum swarm_rtc_type {enum swarm_rtc_type swarm_rtc_type; -unsigned long read_persistent_clock (void ) +void read_persistent_clock (struct timespec *ts) { +unsigned long sec; +switch (swarm_rtc_type) {case RTC_XICOR : -return xicor_get_time (); + sec =xicor_get_time (); +break ;case RTC_M4LT81 : -return m41t81_get_time (); + sec =m41t81_get_time (); +break ;case RTC_NONE :default : -return mktime (2000 ,1 ,1 ,0 ,0 ,0 ); + sec =mktime (2000 ,1 ,1 ,0 ,0 ,0 ); +break ; } + ts->tv_sec = sec; + tv->tv_nsec =0 ; }int rtc_mips_set_time (unsigned long sec)
arch/mips/sni/time.c +3 -2
@@ -182,7 +182,8 @@ void __init plat_time_init(void)setup_pit_timer (); } -unsigned long read_persistent_clock (void ) +void read_persistent_clock (struct timespec *ts) { -return -1 ; + ts->tv_sec =-1 ; + ts->tv_nsec =0 ; }
arch/powerpc/kernel/time.c +9 -5
@@ -772,7 +772,7 @@ int update_persistent_clock(struct timesreturn ppc_md.set_rtc_time (&tm); } -unsigned long read_persistent_clock (void ) +void read_persistent_clock (struct timespec *ts) {struct rtc_time tm;static int first =1 ;
@@ -787,11 +787,15 @@ unsigned long read_persistent_clock(voidif (ppc_md.get_boot_time)return ppc_md.get_boot_time () -timezone_offset; } -if (!ppc_md.get_rtc_time) -return 0 ; +if (!ppc_md.get_rtc_time) { + ts->tv_sec =0 ; + ts->tv_nsec =0 ; +return ; + } ppc_md.get_rtc_time (&tm); -return mktime (tm.tm_year+1900 , tm.tm_mon+1 , tm.tm_mday, - tm.tm_hour, tm.tm_min, tm.tm_sec); + 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 */
arch/s390/kernel/time.c +4 -18
@@ -182,12 +182,9 @@ static void timing_alert_interrupt(__u16static void etr_reset (void );static void stp_reset (void ); -unsigned long read_persistent_clock (void ) +void read_persistent_clock (struct timespec *ts) { -struct timespec ts; - -tod_to_timeval (get_clock () -TOD_UNIX_EPOCH , &ts); -return ts.tv_sec; +tod_to_timeval (get_clock () -TOD_UNIX_EPOCH , ts); }static cycle_t read_tod_clock (struct clocksource *cs)
@@ -248,7 +245,6 @@ void __init time_init(void) {struct timespec ts;unsigned long flags; -cycle_t now;/* Reset time synchronization interfaces. */ etr_reset ();
@@ -266,20 +262,10 @@ void __init time_init(void)panic ("Could not register TOD clock source" );/* -* The TOD clock is an accurate clock. The xtime should be -* initialized in a way that the difference between TOD and -* xtime is reasonably small. Too bad that timekeeping_init -* sets xtime.tv_nsec to zero. In addition the clock source -* change from the jiffies clock source to the TOD clock -* source add another error of up to 1/HZ second. The same -* function sets wall_to_monotonic to a value that is too -* small for /proc/uptime to be accurate. -* Reset xtime and wall_to_monotonic to sane values. +* Reset wall_to_monotonic to the initial timestamp created +* in head.S to get a precise value in /proc/uptime. */ write_seqlock_irqsave (&xtime_lock, flags); - now =get_clock (); -tod_to_timeval (now -TOD_UNIX_EPOCH , &xtime); - clocksource_tod.cycle_last = now;tod_to_timeval (sched_clock_base_cc -TOD_UNIX_EPOCH , &ts);set_normalized_timespec (&wall_to_monotonic, -ts.tv_sec, -ts.tv_nsec);write_sequnlock_irqrestore (&xtime_lock, flags);
arch/sh/kernel/time.c +2 -4
@@ -39,11 +39,9 @@ void (*rtc_sh_get_time)(struct timespecint (*rtc_sh_set_time)(const time_t ) = null_rtc_set_time;#ifdef CONFIG_GENERIC_CMOS_UPDATE -unsigned long read_persistent_clock (void ) +void read_persistent_clock (struct timespec *ts) { -struct timespec tv; -rtc_sh_get_time (&tv); -return tv.tv_sec; +rtc_sh_get_time (&ts); }int update_persistent_clock (struct timespec now)
arch/x86/kernel/rtc.c +3 -2
@@ -178,7 +178,7 @@ static int set_rtc_mmss(unsigned long no }/* not static: needed by APM */ -unsigned long read_persistent_clock (void ) +void read_persistent_clock (struct timespec *ts) {unsigned long retval, flags;
@@ -186,7 +186,8 @@ unsigned long read_persistent_clock(void retval =get_wallclock ();spin_unlock_irqrestore (&rtc_lock, flags); -return retval; + ts->tv_sec = retval; + ts->tv_nsec =0 ; }int update_persistent_clock (struct timespec now)
arch/xtensa/kernel/time.c +2 -3
@@ -59,9 +59,8 @@ static struct irqaction timer_irqactionvoid __init time_init (void ) { - xtime.tv_nsec =0 ; - xtime.tv_sec =read_persistent_clock (); - +/* FIXME: xtime&wall_to_monotonic are set in timekeeping_init. */ +read_persistent_clock (&xtime);set_normalized_timespec (&wall_to_monotonic, -xtime.tv_sec, -xtime.tv_nsec);
include/linux/time.h +1 -1
@@ -101,7 +101,7 @@ extern struct timespec xtime;extern struct timespec wall_to_monotonic;extern seqlock_t xtime_lock; -extern unsigned long read_persistent_clock (void ); +extern void read_persistent_clock (struct timespec *ts);extern int update_persistent_clock (struct timespec now);extern int no_sync_cmos_clock__read_mostly ;void timekeeping_init (void );
kernel/time/timekeeping.c +29 -23
120 lines not on this page · raw message
Signature · 4 lines
blue skies, Martin. "Reality continues to ruin my life." - Calvin.
Re: [tip:timers/core] timekeeping: Increase granularity of read_persistent_clock()
Quoted 10 lines · Martin Schwidefsky
Quoted 9 lines
FYI, -tip arch-testing found that this commit broke the PowerPC build:
/home/mingo/tip/arch/powerpc/kernel/time.c: In function 'read_persistent_clock':/home/mingo/tip/arch/powerpc/kernel/time.c:788: error: 'return' with a value, in function returning void/home/mingo/tip/arch/powerpc/kernel/time.c:791: error: 'return' with a value, in function returning void make[2]: *** [arch/powerpc/kernel/time.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [arch/powerpc/kernel] Error 2
Quoted 2 lines
I overlooked a case in the powerpc version of
read_persistent_lock. New patch:
the patches are already committed and this patch doesnt apply - mind sending a delta fix against tip:master:
http://people.redhat.com/mingo/tip.git/README
Thanks,
Ingo
Re: [tip:timers/core] timekeeping: Increase granularity of read_persistent_clock()
Quoted 13 lines · On Sat, 22 Aug 2009 17:33:46 +0200 Ingo Molnar <[email protected]> wrote:
Quoted 10 lines · Martin Schwidefsky
Quoted 9 lines
FYI, -tip arch-testing found that this commit broke the PowerPC build:
/home/mingo/tip/arch/powerpc/kernel/time.c: In function 'read_persistent_clock':/home/mingo/tip/arch/powerpc/kernel/time.c:788: error: 'return' with a value, in function returning void/home/mingo/tip/arch/powerpc/kernel/time.c:791: error: 'return' with a value, in function returning void make[2]: *** [arch/powerpc/kernel/time.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [arch/powerpc/kernel] Error 2
Quoted 7 lines
Quoted 2 lines
I overlooked a case in the powerpc version of
read_persistent_lock. New patch:the patches are already committed and this patch doesnt apply - mind sending a delta fix against tip:master:
Here we go:
--
Subject: [PATCH] powerpc: build fix for read_persistent_clock
From: Martin Schwidefsky <[email protected]>
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 make[2]: *** [arch/powerpc/kernel/time.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [arch/powerpc/kernel] Error 2
--- arch/powerpc/kernel/time.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-)
arch/powerpc/kernel/time.c +9 -5
@@ -774,6 +774,7 @@ void read_persistent_clock(struct timespstruct 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 timesp 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 */
Signature · 4 lines
blue skies, Martin. "Reality continues to ruin my life." - Calvin.
Ingo Molnar
AppliedRe: [tip:timers/core] timekeeping: Increase granularity of read_persistent_clock()
Quoted 19 lines · Martin Schwidefsky
Quoted 16 lines · On Sat, 22 Aug 2009 17:33:46 +0200 Ingo Molnar <[email protected]> wrote:
Quoted 12 lines · Martin Schwidefsky
Quoted 9 lines
FYI, -tip arch-testing found that this commit broke the PowerPC build:
/home/mingo/tip/arch/powerpc/kernel/time.c: In function 'read_persistent_clock':/home/mingo/tip/arch/powerpc/kernel/time.c:788: error: 'return' with a value, in function returning void/home/mingo/tip/arch/powerpc/kernel/time.c:791: error: 'return' with a value, in function returning void make[2]: *** [arch/powerpc/kernel/time.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [arch/powerpc/kernel] Error 2I overlooked a case in the powerpc version of
read_persistent_lock. New patch:
Quoted 6 lines
Quoted 4 lines
the patches are already committed and this patch doesnt apply - mind sending a delta fix against tip:master:
Here we go:
applied, thanks! (i fixed the small detail checkpatch complained about)
Note, i've appended it to the timer tree for now - but for the lockdep bug we'll need another fix, and these two bugs will probably trigger a rebase. I'll leave it up to Thomas whether he wants to rebase the end result, once things have settled down.
Ingo
[tip:timers/core] timekeeping: Increase granularity of read_persistent_clock(), build fix
In reply to Martin SchwidefskyCommit-ID: d90246cd8e0141332a8ab09c3c1800cc2028a686 Gitweb: http://git.kernel.org/tip/d90246cd8e0141332a8ab09c3c1800cc2028a686 Author: Martin Schwidefsky <[email protected]> AuthorDate: Sat, 22 Aug 2009 22:23:13 +0200 Committer: Ingo Molnar <[email protected]> CommitDate: Sun, 23 Aug 2009 10:49:48 +0200
timekeeping: Increase granularity of read_persistent_clock(), build fix
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
LKML-Reference: <20090822222313.74b9619c@skybase>
--- arch/powerpc/kernel/time.c | 14 +++++++++----- 1 files changed, 9 insertions(+), 5 deletions(-)
arch/powerpc/kernel/time.c +9 -5
@@ -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 */
Re: [tip:timers/core] timekeeping: Increase granularity of read_persistent_clock()
In reply to Ingo MolnarQuoted 6 lines · Ingo Molnar
Quoted 2 lines · Martin Schwidefsky
I overlooked a case in the powerpc version of
read_persistent_lock. New patch:the patches are already committed and this patch doesnt apply - mind sending a delta fix against tip:master:
Is that going to leave us with a bisection breakage on powerpc once this stuff goes upstream? If so please fold the fix into the original patch.
Thanks,
Paul.
Re: [tip:timers/core] timekeeping: Increase granularity of read_persistent_clock()
Quoted 6 lines · Paul Mackerras
Quoted 4 lines · Ingo Molnar
Quoted 2 lines · Martin Schwidefsky
I overlooked a case in the powerpc version of
read_persistent_lock. New patch:
Quoted 6 lines
Quoted 2 lines
the patches are already committed and this patch doesnt apply - mind sending a delta fix against tip:master:
Is that going to leave us with a bisection breakage on powerpc once this stuff goes upstream? If so please fold the fix into the original patch.
Do you ask Linus to rebase the upstream kernel as well, if the powerpc or x86 build happens to break? There's more than a dozen such cases per development cycle triggering on my tests alone. If not, why not?
The thing is, we'll probably redo this portion of the timer tree as i found other problems in testing, but generally the disadvantages of a build breakage with a very small non-bisectability window has to be weighed against the disadvantages of a rebase (which are significant).
The equation does not automatically flip in favor of a rebase as you seem to suggest - in fact it generally goes _against_ a rebase.
Ingo
Re: [tip:timers/core] timekeeping: Increase granularity of read_persistent_clock()
Quoted 4 lines · Ingo Molnar
Do you ask Linus to rebase the upstream kernel as well, if the powerpc or x86 build happens to break? There's more than a dozen such cases per development cycle triggering on my tests alone. If not, why not?
I see you pulling commits out of the tip tree quite often, when they have testing failures of various kinds. I presume that, like other maintainers, you have some branches that you try hard not to rebase and other testing branches that are quite volatile and get reconstructed frequently (though I don't know what branch names you use for them).
I presumed that you wouldn't have put a commit that hadn't even passed basic build testing into one of your non-rebasing branches. That's why I assumed you could fold the fix into the original patch without difficulty.
Quoted 8 lines
The thing is, we'll probably redo this portion of the timer tree as i found other problems in testing, but generally the disadvantages of a build breakage with a very small non-bisectability window has to be weighed against the disadvantages of a rebase (which are significant).
The equation does not automatically flip in favor of a rebase as you seem to suggest - in fact it generally goes _against_ a rebase.
In a stable, non-rebasing branch, sure. But putting untested patches into such a branch would be a bit silly, so I assumed you hadn't done that. :)
Paul.
Re: [tip:timers/core] timekeeping: Increase granularity of read_persistent_clock()
Quoted 14 lines · Paul Mackerras
Quoted 4 lines · Ingo Molnar
Do you ask Linus to rebase the upstream kernel as well, if the powerpc or x86 build happens to break? There's more than a dozen such cases per development cycle triggering on my tests alone. If not, why not?
I see you pulling commits out of the tip tree quite often, when they have testing failures of various kinds. I presume that, like other maintainers, you have some branches that you try hard not to rebase and other testing branches that are quite volatile and get reconstructed frequently (though I don't know what branch names you use for them).
Quoted 4 lines
I presumed that you wouldn't have put a commit that hadn't even passed basic build testing into one of your non-rebasing branches. That's why I assumed you could fold the fix into the original patch without difficulty.
Sometimes rebasing is possible, sometimes not. Here it's borderline
- the commit was already behind other commits.
Quoted 6 lines
Quoted 6 lines
The thing is, we'll probably redo this portion of the timer tree as i found other problems in testing, but generally the disadvantages of a build breakage with a very small non-bisectability window has to be weighed against the disadvantages of a rebase (which are significant).
Quoted 7 lines
Quoted 3 lines
The equation does not automatically flip in favor of a rebase as you seem to suggest - in fact it generally goes _against_ a rebase.
In a stable, non-rebasing branch, sure. But putting untested patches into such a branch would be a bit silly, so I assumed you hadn't done that. :)
You have not answered my primary question though AFAICS. There's _more_ build breakages in Linus's tree (in a volume-scaled form), so why dont you request rebases there?
If you requested them you'd have a snowball's chance in hell, Linus has never rebased the upstream tree, ever. Once pushed out for others to pull it's cast into stone. Yes, sometimes the build breaks, especially on rarely used architectures. We fix them.
The more frequently an architecture is tested, the more it is used in practice, the more a driver and an architecture matters the shorter the bisection breakage window becomes. The upstream kernel is a self-tuning process of quality, even without rebases and backmerges.
(DaveM does something quite similar to Linus too AFAICS, he too never rebases the networking tree.)
I'm thinking about starting to do the same for all -tip trees too: i do reasonable testing before pushing it out, on the most common architecture and driver selection, and once pushed out it's cast into stone Git-wise.
I actually start regretting that i do rebases too frequently - some people (not you really, but you gave me the perfect example to reply to) want more and seem to think they are _entitled_ to rebases and are entitled to backmerges. The thing is, rebases are not free. They are risky and error-prone, and they destroy Git history.
Ingo
Re: [tip:timers/core] timekeeping: Increase granularity of read_persistent_clock()
Quoted 9 lines · Ingo Molnar
Quoted 3 lines · Paul Mackerras
In a stable, non-rebasing branch, sure. But putting untested patches into such a branch would be a bit silly, so I assumed you hadn't done that. :)
You have not answered my primary question though AFAICS. There's _more_ build breakages in Linus's tree (in a volume-scaled form), so why dont you request rebases there?
Well, I don't see a lot of build breakages in Linus' tree, in fact.
What goes into Linus' tree is supposed to have been tested by subsystem maintainers first, and if there is stuff that goes across several architectures, it should have been posted to linux-arch first. In other words, with Linus' tree the focus is on filtering out at least the more obvious problems before they get into Linus' tree. Sometimes that doesn't work, and then we yell at the person responsible for a bit and then move on.
On the other hand, subsystem and architecture maintainers (such as yourself) should be doing a reasonable amount of testing before committing patches to any non-rebasing branch. Some maintainers use quilt for this, others use testing branches that explicitly get reconstructed frequently and are not for others to build on.
Quoted 4 lines
If you requested them you'd have a snowball's chance in hell, Linus has never rebased the upstream tree, ever. Once pushed out for others to pull it's cast into stone. Yes, sometimes the build breaks, especially on rarely used architectures. We fix them.
Yet I see you pulling patches out of tip quite frequently. When I update my local copy of your tip/perfcounters branches, maybe one time in three I see a forced update of at least one of those branches.
You don't seem to have separate testing and non-rebasing branches. Instead you seem to treat the more recent commits as testing and the older ones as non-rebasing. I would suggest that that way of operating isn't as clear and predictable for your downstream users as it would be if you used separate branches.
Quoted 8 lines
The more frequently an architecture is tested, the more it is used in practice, the more a driver and an architecture matters the shorter the bisection breakage window becomes. The upstream kernel is a self-tuning process of quality, even without rebases and backmerges.
(DaveM does something quite similar to Linus too AFAICS, he too never rebases the networking tree.)
I don't follow the networking tree, but I do know that DaveM doesn't publish commits until a reasonable period of time has passed since committed them and he has done some basic testing of them.
Your way seems to be to push commits into tip very quickly and publish them, and then do testing, then revert recent commits if they cause problems.
Quoted 4 lines
I'm thinking about starting to do the same for all -tip trees too: i do reasonable testing before pushing it out, on the most common architecture and driver selection, and once pushed out it's cast into stone Git-wise.
I think that's an excellent idea. If you want to let people help you with the testing you could also publish the commits you're testing on a testing branch. I would also advise a minimum latency for patches to move from testing to the cast-in-stone branch of (say) one day unless there is a very good reason for pushing them out more quickly. If you have separate branches then it's clear to downstream users that they should base their work on your cast-in-stone branch not your testing branch.
I assume your "reasonable testing" includes building at least one powerpc config, since you found the breakage on powerpc yourself.
Quoted 5 lines
I actually start regretting that i do rebases too frequently - some people (not you really, but you gave me the perfect example to reply to) want more and seem to think they are _entitled_ to rebases and are entitled to backmerges. The thing is, rebases are not free. They are risky and error-prone, and they destroy Git history.
To be honest, I didn't think I was asking for a rebase of something which was already cast in stone, since I didn't think you would have cast a commit in stone before doing a build test on powerpc.
Paul.
Re: [tip:timers/core] timekeeping: Increase granularity of read_persistent_clock()
Quoted 11 lines · Paul Mackerras
Quoted 6 lines
I actually start regretting that i do rebases too frequently - some people (not you really, but you gave me the perfect example to reply to) want more and seem to think they are _entitled_ to rebases and are entitled to backmerges. The thing is, rebases are not free. They are risky and error-prone, and they destroy Git history.
To be honest, I didn't think I was asking for a rebase of something which was already cast in stone, since I didn't think you would have cast a commit in stone before doing a build test on powerpc.
I think there's a fundamental disconnect with reality here.
The thing is, as the maintainer of certain core kernel subsystems i _have to_ mirror and honor the system usage and hardware preferences of developers, testers and users. Those are predominantly x86 based currently. I cross-test to a lot of architectures because i'm nice but in practice it rarely matters.
(It goes beyond that btw: i try to test more common drivers within x86 too, etc.)
If you want to change that reality you can do it the old fashioned, fair way: build cool hardware, send more SDVs to kernel developers, make PowerPC more widely used, etc.
If i put more effort into testing what nobody uses i'd be doing a disservice to Linux - i'd disproportionately favor PowerPC just because you are a squeakier wheel.
I.e. please _earn_ your usage share, dont try to dicate it artificially ... It does not work the other way, you cannot force in the kernel space what PowerPC did not manage to achieve in the marketplace.
If you suggest that each and every subsystem maintainer who touches code that can be built on non-x86 architectures has to cross-build to 20+ architectures to be able to push out a tree, all the time, and has to rebase if this ever gets omitted, you are really defying reality and are hurting Linux.
Ingo
Re: [tip:timers/core] timekeeping: Increase granularity of read_persistent_clock()
Quoted 5 lines · Ingo Molnar
If you suggest that each and every subsystem maintainer who touches code that can be built on non-x86 architectures has to cross-build to 20+ architectures to be able to push out a tree, all the time, and has to rebase if this ever gets omitted, you are really defying reality and are hurting Linux.
Nice straw man, but I never said or even suggested anything like that. :)
I do think that it's reasonable to expect that a patch which touches the architecture-specific code for some architecture gets compiled for that architecture at least once before it gets set in stone. As far as I can tell, this didn't happen in the case of Martin's patch that triggered this debate.
Patches which touch multiple architecture's arch-specific code should also get sent to the maintainers of the affected architectures and the linux-arch mailing list. I don't recall seeing this patch on linux-arch, though I may have missed it (and anyway that would be Martin's responsibility not yours, but it does contribute to the sense of being blindsided).
More generally - if you don't have the resources to do regular build testing for powerpc or other architectures, then publish a testing branch and we'll get kisskb (http://kisskb.ellerman.id.au/) to build a selection of configs and architectures automatically.
Paul.
Re: [tip:timers/core] timekeeping: Increase granularity of read_persistent_clock()
Quoted 10 lines · Paul Mackerras
Quoted 5 lines · Ingo Molnar
If you suggest that each and every subsystem maintainer who touches code that can be built on non-x86 architectures has to cross-build to 20+ architectures to be able to push out a tree, all the time, and has to rebase if this ever gets omitted, you are really defying reality and are hurting Linux.
Nice straw man, but I never said or even suggested anything like that. :)
... but what you say in essence amounts to that. Every change to a file that is built on an architecture 'affects' that architecture so your arguments can be repeated for that one. It's a slippery slope built on a wrong premise.
I can only repeat what i said because i did not see you really counter the core of my argument (you snipped out much of my mail that details this and only replied to the last paragraph):
Quoted 15 lines
Quoted 15 lines
I think there's a fundamental disconnect with reality here.
The thing is, as the maintainer of certain core kernel subsystems i
_haveto_mirror and honor the system usage and hardware preferences of developers, testers and users. Those are predominantly x86 based currently. I cross-test to a lot of architectures because i'm nice but in practice it rarely matters.(It goes beyond that btw: i try to test more common drivers within x86 too, etc.)
If you want to change that reality you can do it the old fashioned, fair way: build cool hardware, send more SDVs to kernel developers, make PowerPC more widely used, etc.
Quoted 8 lines
Quoted 8 lines
If i put more effort into testing what nobody uses i'd be doing a disservice to Linux - i'd disproportionately favor PowerPC just because you are a squeakier wheel.
I.e. please _earn_ your usage share, dont try to dicate it artificially ... It does not work the other way, you cannot force in the kernel space what PowerPC did not manage to achieve in the marketplace.
We should be (and are) testing what matters and 22 architectures must not be allowed to hold core kernel facilities hostage.
( Plus, as i said the current tip of timers/core was problematic for
other reasons as well, which amounts to a 'might need to be rebased'. )
Quoted 5 lines
I do think that it's reasonable to expect that a patch which touches the architecture-specific code for some architecture gets compiled for that architecture at least once before it gets set in stone. As far as I can tell, this didn't happen in the case of Martin's patch that triggered this debate.
I've seen similar arguments for patches that didnt touch any architecture files but broke it via some other, less direct way.
Say that patch also touches arch/xtensa/. Can you cross-build to xtensa?
Quoted 7 lines
Patches which touch multiple architecture's arch-specific code should also get sent to the maintainers of the affected architectures and the linux-arch mailing list. I don't recall seeing this patch on linux-arch, though I may have missed it (and anyway that would be Martin's responsibility not yours, but it does contribute to the sense of being blindsided).
Quoted 5 lines
More generally - if you don't have the resources to do regular build testing for powerpc or other architectures, then publish a testing branch and we'll get kisskb
(http://kisskb.ellerman.id.au/) to build a selection of configs and architectures automatically.
Slowing down patches via buerocracy like that is not acceptable at all. Make developers care more about your architecture via natural means, not via buerocratic measures.
Ingo
Re: [tip:timers/core] timekeeping: Increase granularity of read_persistent_clock()
Quoted 10 lines · Ingo Molnar
Quoted 8 lines · Paul Mackerras
Quoted 5 lines · Ingo Molnar
If you suggest that each and every subsystem maintainer who touches code that can be built on non-x86 architectures has to cross-build to 20+ architectures to be able to push out a tree, all the time, and has to rebase if this ever gets omitted, you are really defying reality and are hurting Linux.
Quoted 7 lines
Quoted 2 lines
Nice straw man, but I never said or even suggested anything like that. :)
... but what you say in essence amounts to that. Every change to a file that is built on an architecture 'affects' that architecture so your arguments can be repeated for that one. It's a slippery slope built on a wrong premise.
Not at all. I'm saying that committing code, some of which has never ever been compiled on any architecture, is just sloppy. It's basic good engineering practice to have at least compiled the code you're committing - at least once on at least one architecture. It's like making changes inside #ifdef CONFIG_FOO but never testing with CONFIG_FOO turned on. You'd complain, and rightly, if someone did that.
Quoted 3 lines
I can only repeat what i said because i did not see you really counter the core of my argument (you snipped out much of my mail that details this and only replied to the last paragraph):
Well, though much of what you said is true, in the end it seems to boil down to saying that non-x86 architectures don't have any right to expect any degree of care or attention from you, because only x86 is important. And of course you have a perfect right to pay attention to whatever you find interesting and ignore anything else, including difficulties that you cause along the way for other kernel developers.
There doesn't seem to be any useful response to that.
Quoted 2 lines
Say that patch also touches
arch/xtensa/. Can you cross-build to xtensa?
Sure, I just ask Michael Ellerman to point kisskb at a tree with my proposed patch in it.
Quoted 13 lines
Quoted 7 lines
Patches which touch multiple architecture's arch-specific code should also get sent to the maintainers of the affected architectures and the linux-arch mailing list. I don't recall seeing this patch on linux-arch, though I may have missed it (and anyway that would be Martin's responsibility not yours, but it does contribute to the sense of being blindsided).
Quoted 5 lines
More generally - if you don't have the resources to do regular build testing for powerpc or other architectures, then publish a testing branch and we'll get kisskb
(http://kisskb.ellerman.id.au/) to build a selection of configs and architectures automatically.
Quoted 3 lines
Slowing down patches via buerocracy like that is not acceptable at all. Make developers care more about your architecture via natural means, not via buerocratic measures.
The "should" in what I said is just good manners, not bureaucracy.
The stuff about kisskb was an offer to help, not bureaucracy. No-one's forcing you to do anything.
Paul.
Re: [tip:timers/core] timekeeping: Increase granularity of read_persistent_clock()
Quoted 15 lines · Paul Mackerras
Quoted 13 lines · Ingo Molnar
Quoted 10 lines · Paul Mackerras
Quoted 5 lines · Ingo Molnar
If you suggest that each and every subsystem maintainer who touches code that can be built on non-x86 architectures has to cross-build to 20+ architectures to be able to push out a tree, all the time, and has to rebase if this ever gets omitted, you are really defying reality and are hurting Linux.
Nice straw man, but I never said or even suggested anything like that. :)
Quoted 7 lines
Quoted 4 lines
... but what you say in essence amounts to that. Every change to a file that is built on an architecture 'affects' that architecture so your arguments can be repeated for that one. It's a slippery slope built on a wrong premise.
Not at all. I'm saying that committing code, some of which has never ever been compiled on any architecture, is just sloppy.
But this is not what happened. We committed it because it was a good patch and this _enabled_ the wider testing of it, even in areas that developers dont normally use.
In other words while i do a lot of cross-testing and applied your fix immediately i'm not willing to whitewash the "PowerPC is rarely used" fact out of Git trees via ugly rebasing - especially if the distance between the original commit and the fix is just 4 hops.
Nor am i going to require people/developers to test on a dozen of architectures or more before we can commit something - it's not reasonable.
( Nor is there any real upside to rebasing for this reason alone,
and there's a lot of downsides to it, many of which i already mentioned in my prior replies. )
Quoted 3 lines
It's basic good engineering practice to have at least compiled the code you're committing - at least once on at least one architecture. [...]
And i very much do that before i push such changes to Linus.
It's a push show-stopper but not a commit show-stopper.
You chose to see the intermediate steps by checking the development stage, why are you surprised that less used and less tested areas of the code breaks?
Everything that happens rarely, such as big pushes to Linus, can be (and does get) tested widely like that. For for the most critical part of the workflow, the commit latency, we dont want extra buerocracy that buys us nothing.
Let the platforms do their own testing and _provide developers_ who will make it damn sure new bits work on their architecture out of box. Or if they dont (or cannot) and just sit there expecting the upstream kernel to do development for them, let them deal with the consequences.
Quoted 3 lines
[...] It's like making changes inside #ifdef
CONFIG_FOObut never testing withCONFIG_FOOturned on. You'd complain, and rightly, if someone did that.
You again seem to ignore the very valid case i pointed out: if i change generic code (or an include, an inline function or a define) which somehow affects an architecture, by your logic i'd be compelled to test it on that architecture - because it affects it. That's not reasonable overhead.
Quoted 12 lines
Quoted 3 lines
I can only repeat what i said because i did not see you really counter the core of my argument (you snipped out much of my mail that details this and only replied to the last paragraph):
Well, though much of what you said is true, in the end it seems to boil down to saying that non-x86 architectures don't have any right to expect any degree of care or attention from you, because only x86 is important. And of course you have a perfect right to pay attention to whatever you find interesting and ignore anything else, including difficulties that you cause along the way for other kernel developers.
Quoted 1 line
There doesn't seem to be any useful response to that.
You paraphrased my opinion into something i did not say.
Exactly which bit of "i cross-build test every architecture that builds fine upstream before i push out to linux-next" do you understand as me not caring?
But it does not get as strong testing, it's not a commit show-stopper (unless coupled with other badness) and sometimes bugs slip through and get fixed after (quickly).
Quoted 5 lines
Quoted 2 lines
Say that patch also touches
arch/xtensa/. Can you cross-build to xtensa?Sure, I just ask Michael Ellerman to point kisskb at a tree with my proposed patch in it.
FYI, would be a challenge, xtensa's defconfig didnt build upstream for quite a long time:
/home/mingo/tip/arch/xtensa/kernel/pci.c: In function '__pci_mmap_set_pgprot':/home/mingo/tip/arch/xtensa/kernel/pci.c:362: error: '_PAGE_NO_CACHE' undeclared (first use in this function) /home/mingo/tip/arch/xtensa/kernel/pci.c:362: error: (Each undeclared identifier is reported only once /home/mingo/tip/arch/xtensa/kernel/pci.c:362: error: for each function it appears in.)
Quoted 13 lines
Quoted 13 lines
Quoted 12 lines
Patches which touch multiple architecture's arch-specific code should also get sent to the maintainers of the affected architectures and the linux-arch mailing list. I don't recall seeing this patch on linux-arch, though I may have missed it (and anyway that would be Martin's responsibility not yours, but it does contribute to the sense of being blindsided).
More generally - if you don't have the resources to do regular build testing for powerpc or other architectures, then publish a testing branch and we'll get kisskb
(http://kisskb.ellerman.id.au/) to build a selection of configs and architectures automatically.
Quoted 8 lines
Quoted 3 lines
Slowing down patches via buerocracy like that is not acceptable at all. Make developers care more about your architecture via natural means, not via buerocratic measures.
The "should" in what I said is just good manners, not bureaucracy.
The stuff about kisskb was an offer to help, not bureaucracy. No-one's forcing you to do anything.
Well, me pointing out that such measures slow down the critical path of patch submission is a valid concern - and "you are not forced to do that" pretty much defeats you having suggested it, doesnt it? (i hope i'm not misprepresenting your words)
Ingo
Re: [tip:timers/core] timekeeping: Increase granularity of read_persistent_clock()
Quoted 9 lines · Ingo Molnar
Quoted 3 lines
[...] It's like making changes inside #ifdef
CONFIG_FOObut never testing withCONFIG_FOOturned on. You'd complain, and rightly, if someone did that.You again seem to ignore the very valid case i pointed out: if i change generic code (or an include, an inline function or a define) which somehow affects an architecture, by your logic i'd be compelled to test it on that architecture - because it affects it. That's not reasonable overhead.
Paul, Ingo, it seems like the two of you are talking past each other. He's said he's OK with generic code which somehow affects an architecture only being tested on one architecture, so what you're proposing is a straw man. What he has requested it would be nice that each line of code be compile-tested on at least *one* architecture. If it's generic code, then by definition when you compile on x86, it's met the criterion he has proposed.
On the other hand, your claim that it would slow down development too much is based on the assumption that if you make a change in generic code that breaks architecture-specific code, it's good manners to at least *attempt* to fix up the architecture-specific code, as opposed to leaving it broken. So you could meet Paul's request of "not committing code that hasn't been compile-tested" by simply leaving that particular architecture broken when you change generic code.
Personally, I think that would be worse, since that exchanges the risk that a generic change might break the PowerPC architecture, with the *certainty* that the PowerPC architecture would be broken by said change. :-) So it may very well be that you are doing the right thing.
It's the combination of Paul's request that it be good manners that all architecture specific code be compile-tested at least once, and the generally accepted criterion that when someone makes a change in generic code, that all in-tree users should be converted to use the new calling convention --- after all, that's one of the benefits that we tout to device driver writers for merging code into the mainline.
I will note, by the way, that in the file system space, where we have almost 70 filesystems, I doubt very much that every single generic change in the core VM or FS code that might have a potential to affect every single filesystem gets compile-tested using allyesconfig. Maybe it should, but I suspect it's not all that uncommon for people to assume that simple syntactical change of adding an extra parameter to a function signature (for example) can be addressed using a global search and replace, and not necesarily tested on every single filesystem. Maybe it *should* in the ideal world, but I'm guessing that sometimes that doesn't happen...
In the case of architecture code where compile-testing on every single architecture would require keeping very large number of cross-compilers, and a non-trivial amount of time, it's much less reasonable. Doing a full test on all architectures before pushing to Linus (as opposed to publication in a -tip git branch) may be the best that can be expected.
- Ted
Re: [tip:timers/core] timekeeping: Increase granularity of read_persistent_clock()
Quoted 19 lines · Theodore Tso
Quoted 9 lines · Ingo Molnar
Quoted 3 lines
[...] It's like making changes inside #ifdef
CONFIG_FOObut never testing withCONFIG_FOOturned on. You'd complain, and rightly, if someone did that.You again seem to ignore the very valid case i pointed out: if i change generic code (or an include, an inline function or a define) which somehow affects an architecture, by your logic i'd be compelled to test it on that architecture - because it affects it. That's not reasonable overhead.
Paul, Ingo, it seems like the two of you are talking past each other. He's said he's OK with generic code which somehow affects an architecture only being tested on one architecture, so what you're proposing is a straw man. What he has requested it would be nice that each line of code be compile-tested on at least *one* architecture. If it's generic code, then by definition when you compile on x86, it's met the criterion he has proposed.
Quoted 5 lines
On the other hand, your claim that it would slow down development too much is based on the assumption that if you make a change in generic code that breaks architecture-specific code, it's good manners to at least *attempt* to fix up the architecture-specific code, as opposed to leaving it broken. [...]
That's (of course!) what happened here.
In fact, more than just an attempt happened, the thread started by _me_ finding this build breakage to begin with:
Quoted 5 lines
Quoted 5 lines
Quoted 5 lines
FYI, -tip arch-testing found that this commit broke the PowerPC build:
/home/mingo/tip/arch/powerpc/kernel/time.c: In function 'read_persistent_clock':/home/mingo/tip/arch/powerpc/kernel/time.c:788: error: 'return' with a value, in function returning void
and i applied the fix from Martin very quickly as well.
So i think this is much ado about nothing. Testing was done, the fix was applied immediately and no kitten was hurt in the process.
Ingo
Re: [tip:timers/core] timekeeping: Increase granularity of read_persistent_clock()
Quoted 2 lines · Ingo Molnar
So i think this is much ado about nothing. Testing was done, the fix was applied immediately and no kitten was hurt in the process.
I agree.
I have a question though: I notice that you add cc's to patches that get committed to the tip tree. Do you do that manually, or is it automated?
And I have a request: when a patch touches architecture-specific code, could you add a cc to the maintainer of that architecture?
Paul.
Re: [tip:timers/core] timekeeping: Increase granularity of read_persistent_clock()
In reply to Theodore TsoQuoted 16 lines · Theodore Tso
Paul, Ingo, it seems like the two of you are talking past each other. He's said he's OK with generic code which somehow affects an architecture only being tested on one architecture, so what you're proposing is a straw man. What he has requested it would be nice that each line of code be compile-tested on at least *one* architecture. If it's generic code, then by definition when you compile on x86, it's met the criterion he has proposed.
On the other hand, your claim that it would slow down development too much is based on the assumption that if you make a change in generic code that breaks architecture-specific code, it's good manners to at least *attempt* to fix up the architecture-specific code, as opposed to leaving it broken. So you could meet Paul's request of "not committing code that hasn't been compile-tested" by simply leaving that particular architecture broken when you change generic code.
Quoted 5 lines
Personally, I think that would be worse, since that exchanges the risk that a generic change might break the PowerPC architecture, with the *certainty* that the PowerPC architecture would be broken by said change. :-) So it may very well be that you are doing the right thing.
Upon reflection, I think that a large part of the problem in this particular instance is that while an attempt was made to fix up the powerpc architecture code, it was never cc'd to any powerpc developer or mailing list, and as far as I can tell it wasn't sent to linux-arch either.
Quoted 4 lines
I will note, by the way, that in the file system space, where we have almost 70 filesystems, I doubt very much that every single generic change in the core VM or FS code that might have a potential to affect every single filesystem gets compile-tested using allyesconfig. Maybe
I think Stephen Rothwell does an x86 allyesconfig build of the linux-next tree every day, so if the generic changes are in linux-next they will in fact get tested against every filesystem.
Quoted 6 lines
In the case of architecture code where compile-testing on every single architecture would require keeping very large number of cross-compilers, and a non-trivial amount of time, it's much less reasonable. Doing a full test on all architectures before pushing to Linus (as opposed to publication in a -tip git branch) may be the best that can be expected.
Well, it used to be that if you had a patch that affected several architectures, you'd post it to Andrew Morton and linux-arch, and collect acks from as many architecture maintainers as you could in a reasonable time. And if you could cross-compile your patch yourself, that was a good thing to do as well.
Ingo seems to be bypassing that step in order to speed up development on x86. Now, I can imagine a value system where that is a logical thing to do, but it is not my value system. :) I think this is why several architecture maintainers have got unhappy with Ingo recently.
Paul.
Re: [tip:timers/core] timekeeping: Increase granularity of read_persistent_clock()
In reply to Ingo MolnarQuoted 22 lines · Ingo Molnar
Quoted 20 lines · Paul Mackerras
Quoted 17 lines · Ingo Molnar
Quoted 10 lines · Paul Mackerras
Quoted 5 lines · Ingo Molnar
If you suggest that each and every subsystem maintainer who touches code that can be built on non-x86 architectures has to cross-build to 20+ architectures to be able to push out a tree, all the time, and has to rebase if this ever gets omitted, you are really defying reality and are hurting Linux.
Nice straw man, but I never said or even suggested anything like that. :)
... but what you say in essence amounts to that. Every change to a file that is built on an architecture 'affects' that architecture so your arguments can be repeated for that one. It's a slippery slope built on a wrong premise.
Quoted 6 lines
Quoted 2 lines
Not at all. I'm saying that committing code, some of which has never ever been compiled on any architecture, is just sloppy.
But this is not what happened. We committed it because it was a good patch and this _enabled_ the wider testing of it, even in areas that developers dont normally use.
One of the points that I have been trying to make all along is that it helps to make a distinction between "committing for testing" and "committing to the permanent record", particularly for subsystem and architecture maintainers (i.e. people who aren't Linus).
Quoted 4 lines
In other words while i do a lot of cross-testing and applied your fix immediately i'm not willing to whitewash the "PowerPC is rarely used" fact out of Git trees via ugly rebasing - especially if the distance between the original commit and the fix is just 4 hops.
Well, I disagree with the word "rarely", but let's not get into a great long discussion about that.
Quoted 12 lines
Nor am i going to require people/developers to test on a dozen of architectures or more before we can commit something - it's not reasonable.
( Nor is there any real upside to rebasing for this reason alone,
and there's a lot of downsides to it, many of which i already mentioned in my prior replies. )Quoted 3 lines
It's basic good engineering practice to have at least compiled the code you're committing - at least once on at least one architecture. [...]
Quoted 7 lines
And i very much do that before i push such changes to Linus.
It's a push show-stopper but not a commit show-stopper.
You chose to see the intermediate steps by checking the development stage, why are you surprised that less used and less tested areas of the code breaks?
I'm not surprised it breaks, I'm surprised you set it in stone before you discover it breaks. Or at least I was surprised - your workflow is pretty unique, and I think I have come to understand it better through this discussion. If I understand correctly, you don't have a specific, defined point where a commit gets "frozen", rather, commits start out fairly liquid and turn to slush and then ice (to change the metaphor :) within a few days. Is that a reasonable description?
Quoted 10 lines
Everything that happens rarely, such as big pushes to Linus, can be (and does get) tested widely like that. For for the most critical part of the workflow, the commit latency, we dont want extra buerocracy that buys us nothing.
Let the platforms do their own testing and
_providedevelopers_who will make it damn sure new bits work on their architecture out of box. Or if they dont (or cannot) and just sit there expecting the upstream kernel to do development for them, let them deal with the consequences.
OK. I assume you have a branch in the tip tree that pulls together all the work in progress - what is that branch called? I'll try to organize some regular build-testing on powerpc of that branch.
Quoted 9 lines
Quoted 3 lines
[...] It's like making changes inside #ifdef
CONFIG_FOObut never testing withCONFIG_FOOturned on. You'd complain, and rightly, if someone did that.You again seem to ignore the very valid case i pointed out: if i change generic code (or an include, an inline function or a define) which somehow affects an architecture, by your logic i'd be compelled to test it on that architecture - because it affects it. That's not reasonable overhead.
Well, the "by your logic I'd be compelled" part just doesn't follow. Certainly, if you make a change that obviously affects somebody's code, it would be good manners to inform them, but that's quite a different thing from what I was saying.
Quoted 12 lines
Quoted 12 lines
Quoted 3 lines
I can only repeat what i said because i did not see you really counter the core of my argument (you snipped out much of my mail that details this and only replied to the last paragraph):
Well, though much of what you said is true, in the end it seems to boil down to saying that non-x86 architectures don't have any right to expect any degree of care or attention from you, because only x86 is important. And of course you have a perfect right to pay attention to whatever you find interesting and ignore anything else, including difficulties that you cause along the way for other kernel developers.
Quoted 7 lines
Quoted 1 line
There doesn't seem to be any useful response to that.
You paraphrased my opinion into something i did not say.
Exactly which bit of "i cross-build test every architecture that builds fine upstream before i push out to linux-next" do you understand as me not caring?
I didn't say you didn't care. I paraphrased your statement as "non-x86 architectures don't have a right to expect me to care", which is a different thing. Perhaps that is a slight exaggeration, but "non-x86 architectures don't have a right to expect more than a very limited degree of care from me" is certainly the message that has been coming through loud and strong from you on many occasions.
Quoted 9 lines
Quoted 4 lines
The "should" in what I said is just good manners, not bureaucracy.
The stuff about kisskb was an offer to help, not bureaucracy. No-one's forcing you to do anything.
Well, me pointing out that such measures slow down the critical path of patch submission is a valid concern - and "you are not forced to do that" pretty much defeats you having suggested it, doesnt it? (i hope i'm not misprepresenting your words)
You're saying that making a suggestion that someone isn't forced to follow is pointless? Huh?
As for the latency of patch submission - that's an interesting question, and I don't believe that the optimum latency is zero, because then there's no chance for review. But certainly we don't want it to be unnecessarily long either. Maybe the optimum patch latency would be an interesting topic to discuss at kernel summit. Anyway, I am inclined to think that something in the range from a day or two up to a week would be about right, depending on the nature of the patch (bug fix, enhancement, new feature) and the width of its impact across the tree (number of subsystems/architectures affected, etc.).
Finally, I do think that putting changes to some architecture's code into your tree without even cc'ing the maintainer for that architecture, let alone getting their ack, is just plain rude. And, correct me if I'm wrong, but that does appear to be what happened here, and it does seem to be happening more and more often in the tip tree, unfortunately.
Paul.
Re: [tip:timers/core] timekeeping: Increase granularity of read_persistent_clock()
In reply to Ingo MolnarQuoted 6 lines · Ingo Molnar
Well, me pointing out that such measures slow down the critical path of patch submission is a valid concern - and "you are not forced to do that" pretty much defeats you having suggested it, doesnt it? (i hope i'm not misprepresenting your words)
My problem with you is precisely there.
"The critical path of patch submission"
You seem to consider it a holy objective to shove as much stuff into Linux as can be produced and as fast as possible. Your previous comment about not slowing down the process is in the similar vein.
That's something that I would hear out of a corporate executive, not a Linux kernel hacker and especially not one who is a maintainer.
Changes at all cost is not a panacea, nor are we in some kind of "race" to get the must stuff in as you can manage. We should take the time to make sure things are done right, and if a patch has a problem, then fix the patch and rebase before it hits upstream.
This is good and sane process, nothing else.
Cheers,
Ben.
PATCH 15/15 introduce read_boot_clock
In reply to Martin SchwidefskyFrom: Martin Schwidefsky <[email protected]>
Add the new function read_boot_clock to get the exact time the system has been started. For architectures without support for exact boot time a new weak function is added that returns 0. Use the exact boot time to initialize wall_to_monotonic, or xtime if the read_boot_clock returned 0.
--- arch/s390/kernel/time.c | 17 +++++------------ include/linux/time.h | 1 + kernel/time/timekeeping.c | 24 ++++++++++++++++++++++-- 3 files changed, 28 insertions(+), 14 deletions(-)
kernel/time/timekeeping.c +22 -2
@@ -501,6 +501,21 @@ void __attribute__((weak)) read_persiste ts->tv_nsec =0 ; } +/** +* read_boot_clock - Return time of the system start. +* +* Weak dummy function for arches that do not yet support it. +* Function to read the exact time the system has been started. +* Returns a timespec with tv_sec=0 and tv_nsec=0 if unsupported. +* +* XXX - Do be sure to remove it once all arches implement it. +*/ +void __attribute__((weak))read_boot_clock (struct timespec *ts) +{ + ts->tv_sec =0 ; + ts->tv_nsec =0 ; +} +/* * timekeeping_init - Initializes the clocksource and common timekeeping values */
@@ -508,9 +523,10 @@ void __init timekeeping_init(void) {struct clocksource *clock;unsigned long flags; -struct timespec now; +struct timespec now, boot;read_persistent_clock (&now); +read_boot_clock (&boot);write_seqlock_irqsave (&xtime_lock, flags);
@@ -525,8 +541,12 @@ void __init timekeeping_init(void) xtime.tv_nsec = now.tv_nsec; raw_time.tv_sec =0 ; raw_time.tv_nsec =0 ; +if (boot.tv_sec ==0 && boot.tv_nsec ==0 ) { + boot.tv_sec = xtime.tv_sec; + boot.tv_nsec = xtime.tv_nsec; + }set_normalized_timespec (&wall_to_monotonic, - -xtime.tv_sec, -xtime.tv_nsec); + -boot.tv_sec, -boot.tv_nsec);update_xtime_cache (0 ); total_sleep_time.tv_sec =0 ; total_sleep_time.tv_nsec =0 ;
arch/s390/kernel/time.c +5 -12
@@ -187,6 +187,11 @@ void read_persistent_clock(struct timesptod_to_timeval (get_clock () -TOD_UNIX_EPOCH , ts); } +void read_boot_clock (struct timespec *ts) +{ +tod_to_timeval (sched_clock_base_cc -TOD_UNIX_EPOCH , ts); +} +static cycle_t read_tod_clock (struct clocksource *cs) {return get_clock ();
@@ -243,9 +248,6 @@ void update_vsyscall_tz(void)*/ void __init time_init (void ) { -struct timespec ts; -unsigned long flags; -/* Reset time synchronization interfaces. */ etr_reset ();stp_reset ();
@@ -261,15 +263,6 @@ void __init time_init(void)if (clocksource_register (&clocksource_tod) !=0 )panic ("Could not register TOD clock source" ); -/* -* Reset wall_to_monotonic to the initial timestamp created -* in head.S to get a precise value in /proc/uptime. -*/ -write_seqlock_irqsave (&xtime_lock, flags); -tod_to_timeval (sched_clock_base_cc -TOD_UNIX_EPOCH , &ts); -set_normalized_timespec (&wall_to_monotonic, -ts.tv_sec, -ts.tv_nsec); -write_sequnlock_irqrestore (&xtime_lock, flags); -/* Enable TOD clock interrupts on the boot cpu. */ init_cpu_timer ();
include/linux/time.h +1 -0
@@ -102,6 +102,7 @@ extern struct timespec wall_to_monotonicextern seqlock_t xtime_lock;extern void read_persistent_clock (struct timespec *ts); +extern void read_boot_clock (struct timespec *ts);extern int update_persistent_clock (struct timespec now);extern int no_sync_cmos_clock__read_mostly ;void timekeeping_init (void );
Signature · 4 lines
blue skies, Martin. "Reality continues to ruin my life." - Calvin.
[tip:timers/core] timekeeping: Introduce read_boot_clock
Commit-ID: 23970e389e9cee43c4b41023935e1417271708b2 Gitweb: http://git.kernel.org/tip/23970e389e9cee43c4b41023935e1417271708b2 Author: Martin Schwidefsky <[email protected]> AuthorDate: Fri, 14 Aug 2009 15:47:32 +0200 Committer: Thomas Gleixner <[email protected]> CommitDate: Sat, 15 Aug 2009 10:55:47 +0200
timekeeping: Introduce read_boot_clock
Add the new function read_boot_clock to get the exact time the system has been started. For architectures without support for exact boot time a new weak function is added that returns 0. Use the exact boot time to initialize wall_to_monotonic, or xtime if the read_boot_clock returned 0.
LKML-Reference: <[email protected]>
--- arch/s390/kernel/time.c | 17 +++++------------ include/linux/time.h | 1 + kernel/time/timekeeping.c | 24 ++++++++++++++++++++++-- 3 files changed, 28 insertions(+), 14 deletions(-)
arch/s390/kernel/time.c +5 -12
@@ -187,6 +187,11 @@ void read_persistent_clock(struct timespec *ts)tod_to_timeval (get_clock () -TOD_UNIX_EPOCH , ts); } +void read_boot_clock (struct timespec *ts) +{ +tod_to_timeval (sched_clock_base_cc -TOD_UNIX_EPOCH , ts); +} +static cycle_t read_tod_clock (struct clocksource *cs) {return get_clock ();
@@ -243,9 +248,6 @@ void update_vsyscall_tz(void)*/ void __init time_init (void ) { -struct timespec ts; -unsigned long flags; -/* Reset time synchronization interfaces. */ etr_reset ();stp_reset ();
@@ -261,15 +263,6 @@ void __init time_init(void)if (clocksource_register (&clocksource_tod) !=0 )panic ("Could not register TOD clock source" ); -/* -* Reset wall_to_monotonic to the initial timestamp created -* in head.S to get a precise value in /proc/uptime. -*/ -write_seqlock_irqsave (&xtime_lock, flags); -tod_to_timeval (sched_clock_base_cc -TOD_UNIX_EPOCH , &ts); -set_normalized_timespec (&wall_to_monotonic, -ts.tv_sec, -ts.tv_nsec); -write_sequnlock_irqrestore (&xtime_lock, flags); -/* Enable TOD clock interrupts on the boot cpu. */ init_cpu_timer ();
include/linux/time.h +1 -0
@@ -102,6 +102,7 @@ extern struct timespec wall_to_monotonic;extern seqlock_t xtime_lock;extern void read_persistent_clock (struct timespec *ts); +extern void read_boot_clock (struct timespec *ts);extern int update_persistent_clock (struct timespec now);extern int no_sync_cmos_clock__read_mostly ;void timekeeping_init (void );
kernel/time/timekeeping.c +22 -2
@@ -501,6 +501,21 @@ void __attribute__((weak)) read_persistent_clock(struct timespec *ts) ts->tv_nsec =0 ; } +/** +* read_boot_clock - Return time of the system start. +* +* Weak dummy function for arches that do not yet support it. +* Function to read the exact time the system has been started. +* Returns a timespec with tv_sec=0 and tv_nsec=0 if unsupported. +* +* XXX - Do be sure to remove it once all arches implement it. +*/ +void __attribute__((weak))read_boot_clock (struct timespec *ts) +{ + ts->tv_sec =0 ; + ts->tv_nsec =0 ; +} +/* * timekeeping_init - Initializes the clocksource and common timekeeping values */
@@ -508,9 +523,10 @@ void __init timekeeping_init(void) {struct clocksource *clock;unsigned long flags; -struct timespec now; +struct timespec now, boot;read_persistent_clock (&now); +read_boot_clock (&boot);write_seqlock_irqsave (&xtime_lock, flags);
@@ -525,8 +541,12 @@ void __init timekeeping_init(void) xtime.tv_nsec = now.tv_nsec; raw_time.tv_sec =0 ; raw_time.tv_nsec =0 ; +if (boot.tv_sec ==0 && boot.tv_nsec ==0 ) { + boot.tv_sec = xtime.tv_sec; + boot.tv_nsec = xtime.tv_nsec; + }set_normalized_timespec (&wall_to_monotonic, - -xtime.tv_sec, -xtime.tv_nsec); + -boot.tv_sec, -boot.tv_nsec);update_xtime_cache (0 ); total_sleep_time.tv_sec =0 ; total_sleep_time.tv_nsec =0 ;
Martin,
Quoted 20 lines · Martin Schwidefsky
Greetings,
version 4 of the clocksource / timekeeping cleanup patches. If you wonder why version 3 did not show up on the mailing list: I had a hiccup with quilt which did strange things to the message ids and the post to lkml got rejected. Sorry for the spamming of the people on Cc.John pointed out a subtle bug in v3 of the patch set with the reset of the
cycle_lastvalue intimekeeping_resume. Fixed in v4.The latest additions are:
1) Changeread_persistent_clockto return a struct timespec instead of an unsigned long with the number of seconds.
2) Introduceread_boot_clockto initializewall_to_monotonic.
3) Move the reset ofcycle_lastto zero from the timekeeping code to the TSC code.The patch set is based on todays upstream tree plus the patches from the tip tree, if anyone wants to try them you need to pull from the master branch of
Quoted 8 lines
git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-tipKeeping the fingers crossed that this is now really done. John already gave his thumbs up for the patch series, so the next logical question is who is going to sit on the patches until the merge window is opened? I can certainly create a git branch on git390 for them, but the patches depend on some patches in the x86-tip tree. Thomas, any thoughts?
I'm going through them and pick them up into -tip.
Thanks,
tglx
Quoted 8 lines · On Fri, 14 Aug 2009 16:08:57 +0200 (CEST) Thomas Gleixner <[email protected]>…
Quoted 6 lines
Keeping the fingers crossed that this is now really done. John already gave his thumbs up for the patch series, so the next logical question is who is going to sit on the patches until the merge window is opened? I can certainly create a git branch on git390 for them, but the patches depend on some patches in the x86-tip tree. Thomas, any thoughts?
I'm going through them and pick them up into -tip.
Very good, thanks Thomas.
Signature · 4 lines
blue skies, Martin. "Reality continues to ruin my life." - Calvin.
Quoted 20 lines · Martin Schwidefsky
Greetings,
version 4 of the clocksource / timekeeping cleanup patches. If you wonder why version 3 did not show up on the mailing list: I had a hiccup with quilt which did strange things to the message ids and the post to lkml got rejected. Sorry for the spamming of the people on Cc.John pointed out a subtle bug in v3 of the patch set with the reset of the
cycle_lastvalue intimekeeping_resume. Fixed in v4.The latest additions are:
1) Changeread_persistent_clockto return a struct timespec instead of an unsigned long with the number of seconds.
2) Introduceread_boot_clockto initializewall_to_monotonic.
3) Move the reset ofcycle_lastto zero from the timekeeping code to the TSC code.The patch set is based on todays upstream tree plus the patches from the tip tree, if anyone wants to try them you need to pull from the master branch of
Quoted 8 lines
git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-tipKeeping the fingers crossed that this is now really done. John already gave his thumbs up for the patch series, so the next logical question is who is going to sit on the patches until the merge window is opened? I can certainly create a git branch on git390 for them, but the patches depend on some patches in the x86-tip tree. Thomas, any thoughts?
Just as a heads up to Thomas and Martin, I finally got a box with a few clocksources (TSC, HPET, ACPI PM) and tested switching between them with this patch set.
Unfortunately when I try to switch away form the TSC, the write to the sysfs entry seems to hang. The dmesg shows a switch message to hpet, but then immdiately follows with ah switch message to tsc. The box still runs, but the shells I ran the echo command from are hung.
I'm bisecting down the issue and will get you some more info as soon as I can.
thanks
-john
Quoted 20 lines · Martin Schwidefsky
Greetings,
version 4 of the clocksource / timekeeping cleanup patches. If you wonder why version 3 did not show up on the mailing list: I had a hiccup with quilt which did strange things to the message ids and the post to lkml got rejected. Sorry for the spamming of the people on Cc.John pointed out a subtle bug in v3 of the patch set with the reset of the
cycle_lastvalue intimekeeping_resume. Fixed in v4.The latest additions are:
1) Changeread_persistent_clockto return a struct timespec instead of an unsigned long with the number of seconds.
2) Introduceread_boot_clockto initializewall_to_monotonic.
3) Move the reset ofcycle_lastto zero from the timekeeping code to the TSC code.The patch set is based on todays upstream tree plus the patches from the tip tree, if anyone wants to try them you need to pull from the master branch of
Quoted 8 lines
git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-tipKeeping the fingers crossed that this is now really done. John already gave his thumbs up for the patch series, so the next logical question is who is going to sit on the patches until the merge window is opened? I can certainly create a git branch on git390 for them, but the patches depend on some patches in the x86-tip tree. Thomas, any thoughts?
So with the fix I sent out to patch #4, this set looks good to me.
So for all of them, including the fixup:
thanks
-john
Quoted 7 lines · john stultz
Quoted 6 lines
Keeping the fingers crossed that this is now really done. John already gave his thumbs up for the patch series, so the next logical question is who is going to sit on the patches until the merge window is opened? I can certainly create a git branch on git390 for them, but the patches depend on some patches in the x86-tip tree. Thomas, any thoughts?
Quoted 5 lines
So with the fix I sent out to patch #4, this set looks good to me.
So for all of them, including the fixup:
Acked-by John Stultz <[email protected]>
Thanks John for the fix. I picked up everything and pushed it into tip/timers/core.
Martin, thanks for the nice work. FYI, I massaged the commit messages a bit as they were missing subsystem identifiers and I added some more explanation to some of them.
Thanks,
tglx
Quoted 12 lines · Thomas Gleixner
Quoted 11 lines · john stultz
Quoted 6 lines
Keeping the fingers crossed that this is now really done. John already gave his thumbs up for the patch series, so the next logical question is who is going to sit on the patches until the merge window is opened? I can certainly create a git branch on git390 for them, but the patches depend on some patches in the x86-tip tree. Thomas, any thoughts?
So with the fix I sent out to patch #4, this set looks good to me.
So for all of them, including the fixup:
Quoted 8 lines
Quoted 1 line
Acked-by John Stultz <[email protected]>Thanks John for the fix. I picked up everything and pushed it into tip/timers/core.
Martin, thanks for the nice work. FYI, I massaged the commit messages a bit as they were missing subsystem identifiers and I added some more explanation to some of them.
Yeah, nice cleanups!
I gave it some brief testing in tip:master and there's the new lockdep assert below. Config and full bootlog attached.
Ingo
[ 1.680107] =======================================================
[ 1.683330] [ INFO: possible circular locking dependency detected ]
[ 1.683330] 2.6.31-rc6-tip #4534
[ 1.683330] -------------------------------------------------------
[ 1.703334] events/1/8 is trying to acquire lock:
[ 1.703334] (clocksource_mutex){+.+...}, at: [<c105dde6>] clocksource_change_rating+0x1b/0x86
[ 1.703334]
[ 1.703334] but task is already holding lock:
[ 1.703334] (watchdog_lock){+.-...}, at: [<c105e24a>] clocksource_watchdog_work+0x14/0x94
[ 1.703334]
[ 1.703334] which lock already depends on the new lock.
[ 1.703334]
[ 1.703334]
[ 1.703334] the existing dependency chain (in reverse order) is:
[ 1.703334]
[ 1.703334] -> #1 (watchdog_lock){+.-...}:
[ 1.703334] [<c1066317>] __lock_acquire+0xa5d/0xbed
[ 1.703334] [<c1066542>] lock_acquire+0x9b/0xb8
[ 1.703334] [<c19fcf2a>] _spin_lock_irqsave+0x37/0x6a
[ 1.703334] [<c105e0da>] clocksource_register+0x65/0x1c1
[ 1.703334] [<c1fe8102>] tsc_init+0x1d7/0x1df
[ 1.703334] [<c1fe4b75>] time_init+0xd/0x19
[ 1.703334] [<c1fe2ab1>] start_kernel+0x21b/0x3e5
[ 1.703334] [<c1fe2391>] i386_start_kernel+0x6b/0x70
[ 1.703334]
[ 1.703334] -> #0 (clocksource_mutex){+.+...}:
[ 1.703334] [<c1066222>] __lock_acquire+0x968/0xbed
[ 1.703334] [<c1066542>] lock_acquire+0x9b/0xb8
[ 1.703334] [<c19fbb3f>] __mutex_lock_common+0x3a/0x34d
[ 1.703334] [<c19fbecc>] mutex_lock_nested+0x24/0x2c
[ 1.703334] [<c105dde6>] clocksource_change_rating+0x1b/0x86
[ 1.703334] [<c105e277>] clocksource_watchdog_work+0x41/0x94
[ 1.703334] [<c1050d96>] worker_thread+0x179/0x24a
[ 1.703334] [<c1054ad7>] kthread+0x66/0x6b
[ 1.703334] [<c1004227>] kernel_thread_helper+0x7/0x10
[ 1.703334]
[ 1.703334] other info that might help us debug this:
[ 1.703334]
[ 1.703334] 3 locks held by events/1/8:
[ 1.703334] #0: (events){+.+...}, at: [<c1050d4c>] worker_thread+0x12f/0x24a
[ 1.703334] #1: (&watchdog_work){+.+...}, at: [<c1050d4c>] worker_thread+0x12f/0x24a
[ 1.703334] #2: (watchdog_lock){+.-...}, at: [<c105e24a>] clocksource_watchdog_work+0x14/0x94
[ 1.703334]
[ 1.703334] stack backtrace:
[ 1.703334] Pid: 8, comm: events/1 Tainted: G W 2.6.31-rc6-tip #4534
[ 1.703334] Call Trace:
[ 1.703334] [<c19fa80e>] ? printk+0x14/0x16
[ 1.703334] [<c1065575>] print_circular_bug+0x8a/0x96
[ 1.703334] [<c1066222>] __lock_acquire+0x968/0xbed
[ 1.703334] [<c1066542>] lock_acquire+0x9b/0xb8
[ 1.703334] [<c105dde6>] ? clocksource_change_rating+0x1b/0x86
[ 1.703334] [<c19fbb3f>] __mutex_lock_common+0x3a/0x34d
[ 1.703334] [<c105dde6>] ? clocksource_change_rating+0x1b/0x86
[ 1.703334] [<c105e24a>] ? clocksource_watchdog_work+0x14/0x94
[ 1.703334] [<c19fbecc>] mutex_lock_nested+0x24/0x2c
[ 1.703334] [<c105dde6>] ? clocksource_change_rating+0x1b/0x86
[ 1.703334] [<c105dde6>] clocksource_change_rating+0x1b/0x86
[ 1.703334] [<c105e277>] clocksource_watchdog_work+0x41/0x94
[ 1.703334] [<c1050d96>] worker_thread+0x179/0x24a
[ 1.703334] [<c1050d4c>] ? worker_thread+0x12f/0x24a
[ 1.703334] [<c105e236>] ? clocksource_watchdog_work+0x0/0x94
[ 1.703334] [<c1054d71>] ? autoremove_wake_function+0x0/0x38
[ 1.703334] [<c1050c1d>] ? worker_thread+0x0/0x24a
[ 1.703334] [<c1054ad7>] kthread+0x66/0x6b
[ 1.703334] [<c1054a71>] ? kthread+0x0/0x6b
[ 1.703334] [<c1004227>] kernel_thread_helper+0x7/0x10
[ 2.464242] initcall cfg80211_init+0x0/0x69 returned 0 after 735675 usecs
[ 2.466667] calling ieee80211_init+0x0/0x24 @ 1Timer List Version: v0.4HRTIMER_MAX_CLOCK_BASES: 2
now at 1915353302473 nsecs
cpu: 0
clock 0:
.base: c28c0a78
.index: 0
.resolution: 3333116 nsecs
.get_time: ktime_get_real
.offset: 0 nsecs
active timers:
clock 1:
.base: c28c0aa4
.index: 1
.resolution: 3333116 nsecs
.get_time: ktime_get
.offset: 0 nsecs
active timers:
#0: <f604daf0>, hrtimer_wakeup, S:01, <(null)>, /-1
# expires at 1919286635810-1919291635810 nsecs [in 3933333337 to 3938333337 nsecs] .expires_next : 9223372036854775807 nsecs .hres_active : 0 .nr_events : 0 .nohz_mode : 0 .idle_tick : 0 nsecs .tick_stopped : 0 .idle_jiffies : 0 .idle_calls : 0 .idle_sleeps : 0 .idle_entrytime : 1915196635812 nsecs .idle_waketime : 0 nsecs .idle_exittime : 0 nsecs .idle_sleeptime : 0 nsecs .last_jiffies : 0 .next_jiffies : 0 .idle_expires : 0 nsecs jiffies: 484606
cpu: 1
clock 0:
.base: c2a0da78
.index: 0
.resolution: 3333116 nsecs
.get_time: ktime_get_real
.offset: 0 nsecs
active timers:
clock 1:
.base: c2a0daa4
.index: 1
.resolution: 3333116 nsecs
.get_time: ktime_get
.offset: 0 nsecs
active timers:
#0: <f4089b74>, hrtimer_wakeup, S:01, <(null)>, /-1
# expires at 1915449969140-1915450069140 nsecs [in 96666667 to 96766667 nsecs] .expires_next : 9223372036854775807 nsecs .hres_active : 0 .nr_events : 0 .nohz_mode : 0 .idle_tick : 0 nsecs .tick_stopped : 0 .idle_jiffies : 0 .idle_calls : 0 .idle_sleeps : 0 .idle_entrytime : 1915349969140 nsecs .idle_waketime : 0 nsecs .idle_exittime : 0 nsecs .idle_sleeptime : 49729999524 nsecs .last_jiffies : 0 .next_jiffies : 0 .idle_expires : 0 nsecs jiffies: 484606
Tick Device: mode: 0
Broadcast device
Clock Event Device: pit
max_delta_ns: 27461866 min_delta_ns: 12571 mult: 5124677 shift: 32 mode: 1 next_event: 9223372036854775807 nsecs
set_next_event: pit_next_event
set_mode: init_pit_timer
event_handler: clockevents_handle_nooptick_broadcast_mask: 00000000tick_broadcast_oneshot_mask: 00000000
Tick Device: mode: 0
Per CPU device: 0
Clock Event Device: lapic
max_delta_ns: 667650479 min_delta_ns: 1193 mult: 53963554 shift: 32 mode: 2 next_event: 9223372036854775807 nsecs
set_next_event: lapic_next_event
set_mode: lapic_timer_setup
event_handler: tick_handle_periodic
Tick Device: mode: 0
Per CPU device: 1
Clock Event Device: lapic
max_delta_ns: 667650479 min_delta_ns: 1193 mult: 53963554 shift: 32 mode: 2 next_event: 9223372036854775807 nsecs
set_next_event: lapic_next_event
set_mode: lapic_timer_setup
event_handler: tick_handle_periodic
mercury:~> cat /sys/devices/system/clocksource/clocksource0/current_clocksource jiffies
mercury:~> cat /sys/devices/system/clocksource/clocksource0/available_clocksource jiffies tsc
#
# Automatically generated make config: don't edit # Linux kernel version: 2.6.31-rc6
# Sat Aug 15 11:14:01 2009
#
# CONFIG_64BIT is not setCONFIG_X86_32=y
# CONFIG_X86_64 is not setCONFIG_X86=yCONFIG_OUTPUT_FORMAT="elf32-i386" CONFIG_ARCH_DEFCONFIG="arch/x86/configs/i386_defconfig" CONFIG_GENERIC_TIME=yCONFIG_GENERIC_CMOS_UPDATE=y CONFIG_CLOCKSOURCE_WATCHDOG=y CONFIG_GENERIC_CLOCKEVENTS=y CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y CONFIG_LOCKDEP_SUPPORT=y CONFIG_STACKTRACE_SUPPORT=y CONFIG_HAVE_LATENCYTOP_SUPPORT=y CONFIG_FAST_CMPXCHG_LOCAL=yCONFIG_MMU=yCONFIG_ZONE_DMA=yCONFIG_GENERIC_ISA_DMA=yCONFIG_GENERIC_IOMAP=yCONFIG_GENERIC_BUG=yCONFIG_GENERIC_HWEIGHT=yCONFIG_GENERIC_GPIO=y CONFIG_ARCH_MAY_HAVE_PC_FDC=y
# CONFIG_RWSEM_GENERIC_SPINLOCK is not set CONFIG_RWSEM_XCHGADD_ALGORITHM=y CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y CONFIG_GENERIC_CALIBRATE_DELAY=y
# CONFIG_GENERIC_TIME_VSYSCALL is not set CONFIG_ARCH_HAS_CPU_RELAX=y CONFIG_ARCH_HAS_DEFAULT_IDLE=y CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y CONFIG_HAVE_SETUP_PER_CPU_AREA=y CONFIG_HAVE_DYNAMIC_PER_CPU_AREA=y
# CONFIG_HAVE_CPUMASK_OF_CPU_MAP is not set CONFIG_ARCH_HIBERNATION_POSSIBLE=y CONFIG_ARCH_SUSPEND_POSSIBLE=y
# CONFIG_ZONE_DMA32 is not set CONFIG_ARCH_POPULATES_NODE_MAP=y
# CONFIG_AUDIT_ARCH is not set CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y CONFIG_GENERIC_HARDIRQS=y CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y CONFIG_GENERIC_IRQ_PROBE=y CONFIG_GENERIC_PENDING_IRQ=y CONFIG_USE_GENERIC_SMP_HELPERS=y CONFIG_X86_32_SMP=yCONFIG_X86_HT=yCONFIG_X86_TRAMPOLINE=yCONFIG_KTIME_SCALAR=y CONFIG_BOOTPARAM_SUPPORT_NOT_WANTED=y CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" CONFIG_CONSTRUCTORS=y
#
# General setup
#CONFIG_EXPERIMENTAL=y
# CONFIG_BROKEN_BOOT_ALLOWED4 is not set
# CONFIG_BROKEN_BOOT_DISALLOWED is not setCONFIG_BROKEN_BOOT_EUROPE=yCONFIG_BROKEN_BOOT_TITAN=yCONFIG_LOCK_KERNEL=yCONFIG_INIT_ENV_ARG_LIMIT=32CONFIG_LOCALVERSION=""
# CONFIG_LOCALVERSION_AUTO is not setCONFIG_HAVE_KERNEL_GZIP=yCONFIG_HAVE_KERNEL_BZIP2=yCONFIG_HAVE_KERNEL_LZMA=y
# CONFIG_KERNEL_GZIP is not setCONFIG_KERNEL_BZIP2=y
# CONFIG_KERNEL_LZMA is not set
# CONFIG_SWAP is not setCONFIG_SYSVIPC=yCONFIG_SYSVIPC_SYSCTL=yCONFIG_POSIX_MQUEUE=yCONFIG_POSIX_MQUEUE_SYSCTL=yCONFIG_BSD_PROCESS_ACCT=yCONFIG_BSD_PROCESS_ACCT_V3=yCONFIG_TASKSTATS=yCONFIG_TASK_DELAY_ACCT=y
# CONFIG_TASK_XACCT is not set
# CONFIG_AUDIT is not set
#
# RCU Subsystem
#CONFIG_TREE_RCU=y
# CONFIG_PREEMPT_RCU is not set
# CONFIG_RCU_TRACE is not setCONFIG_RCU_FANOUT=32CONFIG_RCU_FANOUT_EXACT=y
# CONFIG_TREE_RCU_TRACE is not set
# CONFIG_PREEMPT_RCU_TRACE is not setCONFIG_IKCONFIG=yCONFIG_IKCONFIG_PROC=yCONFIG_LOG_BUF_SHIFT=20CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=yCONFIG_GROUP_SCHED=yCONFIG_FAIR_GROUP_SCHED=yCONFIG_RT_GROUP_SCHED=yCONFIG_USER_SCHED=y
# CONFIG_CGROUP_SCHED is not set
# CONFIG_CGROUPS is not setCONFIG_SYSFS_DEPRECATED=yCONFIG_SYSFS_DEPRECATED_V2=yCONFIG_RELAY=y
# CONFIG_NAMESPACES is not setCONFIG_BLK_DEV_INITRD=yCONFIG_INITRAMFS_SOURCE=""CONFIG_RD_GZIP=yCONFIG_RD_BZIP2=y
# CONFIG_RD_LZMA is not setCONFIG_CC_OPTIMIZE_FOR_SIZE=yCONFIG_SYSCTL=yCONFIG_ANON_INODES=yCONFIG_EMBEDDED=y
# CONFIG_UID16 is not setCONFIG_SYSCTL_SYSCALL=yCONFIG_KALLSYMS=yCONFIG_KALLSYMS_ALL=yCONFIG_KALLSYMS_EXTRA_PASS=yCONFIG_HOTPLUG=yCONFIG_PRINTK=yCONFIG_BUG=y
# CONFIG_ELF_CORE is not setCONFIG_PCSPKR_PLATFORM=yCONFIG_BASE_FULL=yCONFIG_FUTEX=y
# CONFIG_EPOLL is not setCONFIG_SIGNALFD=y
# CONFIG_TIMERFD is not setCONFIG_EVENTFD=yCONFIG_SHMEM=yCONFIG_AIO=yCONFIG_HAVE_PERF_COUNTERS=y
#
# Performance Counters
#CONFIG_PERF_COUNTERS=yCONFIG_EVENT_PROFILE=yCONFIG_VM_EVENT_COUNTERS=y
# CONFIG_PCI_QUIRKS is not set
# CONFIG_SLUB_DEBUG is not setCONFIG_STRIP_ASM_SYMS=yCONFIG_COMPAT_BRK=y
# CONFIG_SLAB is not setCONFIG_SLUB=y
# CONFIG_SLOB is not setCONFIG_PROFILING=yCONFIG_TRACEPOINTS=yCONFIG_MARKERS=yCONFIG_OPROFILE=y
# CONFIG_OPROFILE_IBS is not setCONFIG_OPROFILE_EVENT_MULTIPLEX=yCONFIG_HAVE_OPROFILE=yCONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=yCONFIG_HAVE_IOREMAP_PROT=yCONFIG_HAVE_KPROBES=yCONFIG_HAVE_KRETPROBES=yCONFIG_HAVE_ARCH_TRACEHOOK=yCONFIG_HAVE_DMA_ATTRS=yCONFIG_HAVE_DMA_API_DEBUG=yCONFIG_HAVE_HW_BREAKPOINT=y
#
# GCOV-based kernel profiling
#
# CONFIG_SLOW_WORK is not setCONFIG_HAVE_GENERIC_DMA_COHERENT=yCONFIG_RT_MUTEXES=yCONFIG_BASE_SMALL=0
# CONFIG_MODULES is not setCONFIG_BLOCK=y
# CONFIG_LBDAF is not setCONFIG_BLK_DEV_BSG=yCONFIG_BLK_DEV_INTEGRITY=y
#
# IO Schedulers
#CONFIG_IOSCHED_NOOP=yCONFIG_IOSCHED_AS=yCONFIG_IOSCHED_DEADLINE=yCONFIG_IOSCHED_CFQ=y
# CONFIG_DEFAULT_AS is not setCONFIG_DEFAULT_DEADLINE=y
# CONFIG_DEFAULT_CFQ is not set
# CONFIG_DEFAULT_NOOP is not setCONFIG_DEFAULT_IOSCHED="deadline"
# CONFIG_FREEZER is not set
#
# Processor type and features
#CONFIG_TICK_ONESHOT=yCONFIG_NO_HZ=yCONFIG_HIGH_RES_TIMERS=y CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
# CONFIG_SMP_SUPPORT is not set CONFIG_X86_MPPARSE=yCONFIG_X86_BIGSMP=y CONFIG_X86_EXTENDED_PLATFORM=y
# CONFIG_X86_ELAN is not set CONFIG_X86_RDC321X=y CONFIG_X86_32_NON_STANDARD=y CONFIG_X86_NUMAQ=yCONFIG_X86_SUMMIT=yCONFIG_X86_ES7000=y CONFIG_SCHED_OMIT_FRAME_POINTER=y CONFIG_PARAVIRT_GUEST=y
# CONFIG_VMI is not setCONFIG_KVM_CLOCK=yCONFIG_KVM_GUEST=yCONFIG_LGUEST_GUEST=yCONFIG_PARAVIRT=y CONFIG_PARAVIRT_SPINLOCKS=y CONFIG_PARAVIRT_CLOCK=y CONFIG_PARAVIRT_DEBUG=yCONFIG_MEMTEST=yCONFIG_X86_SUMMIT_NUMA=y CONFIG_X86_CYCLONE_TIMER=y
# CONFIG_M386 is not set
# CONFIG_M486 is not set
# CONFIG_M586 is not set
# CONFIG_M586TSC is not set
# CONFIG_M586MMX is not set
# CONFIG_M686 is not set
# CONFIG_MPENTIUMII is not set
# CONFIG_MPENTIUMIII is not set
# CONFIG_MPENTIUMM is not set
# CONFIG_MPENTIUM4 is not set
# CONFIG_MK6 is not set
# CONFIG_MK7 is not set
# CONFIG_MK8 is not set
# CONFIG_MCRUSOE is not set
# CONFIG_MEFFICEON is not set
# CONFIG_MWINCHIPC6 is not set CONFIG_MWINCHIP3D=y
# CONFIG_MGEODEGX1 is not set
# CONFIG_MGEODE_LX is not set
# CONFIG_MCYRIXIII is not set
# CONFIG_MVIAC3_2 is not set
# CONFIG_MVIAC7 is not set
# CONFIG_MPSC is not set
# CONFIG_MCORE2 is not set
# CONFIG_GENERIC_CPU is not set CONFIG_X86_GENERIC=yCONFIG_X86_CPU=y CONFIG_X86_L1_CACHE_BYTES=64 CONFIG_X86_INTERNODE_CACHE_BYTES=64 CONFIG_X86_CMPXCHG=y CONFIG_X86_L1_CACHE_SHIFT=5 CONFIG_X86_XADD=yCONFIG_X86_WP_WORKS_OK=yCONFIG_X86_INVLPG=yCONFIG_X86_BSWAP=yCONFIG_X86_POPAD_OK=y CONFIG_X86_ALIGNMENT_16=y CONFIG_X86_INTEL_USERCOPY=y CONFIG_X86_USE_PPRO_CHECKSUM=y CONFIG_X86_CMPXCHG64=y CONFIG_X86_MINIMUM_CPU_FAMILY=4 CONFIG_PROCESSOR_SELECT=y CONFIG_CPU_SUP_INTEL=y CONFIG_CPU_SUP_CYRIX_32=y CONFIG_CPU_SUP_AMD=y
# CONFIG_CPU_SUP_CENTAUR is not set CONFIG_CPU_SUP_TRANSMETA_32=y CONFIG_CPU_SUP_UMC_32=yCONFIG_HPET_TIMER=yCONFIG_DMI=y
# CONFIG_IOMMU_HELPER is not set
# CONFIG_IOMMU_API is not set CONFIG_NR_CPUS=32CONFIG_SCHED_SMT=yCONFIG_SCHED_MC=y
# CONFIG_PREEMPT_NONE is not set CONFIG_PREEMPT_VOLUNTARY=y
# CONFIG_PREEMPT is not set CONFIG_X86_LOCAL_APIC=yCONFIG_X86_IO_APIC=y
# CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS is not set CONFIG_X86_MCE=y
# CONFIG_X86_MCE_INTEL is not set CONFIG_X86_MCE_AMD=y CONFIG_X86_ANCIENT_MCE=y CONFIG_X86_MCE_THRESHOLD=y CONFIG_X86_MCE_INJECT=yCONFIG_VM86=y
# CONFIG_I8K is not set CONFIG_X86_REBOOTFIXUPS=y
# CONFIG_MICROCODE is not set CONFIG_X86_MSR=yCONFIG_X86_CPUID=yCONFIG_X86_CPU_DEBUG=y
# CONFIG_UP_WANTED_1 is not setCONFIG_SMP=y
# CONFIG_NOHIGHMEM is not set
# CONFIG_HIGHMEM4G is not set CONFIG_HIGHMEM64G=yCONFIG_VMSPLIT_3G=y
# CONFIG_VMSPLIT_3G_OPT is not set
# CONFIG_VMSPLIT_2G is not set
# CONFIG_VMSPLIT_2G_OPT is not set
# CONFIG_VMSPLIT_1G is not set CONFIG_PAGE_OFFSET=0xC0000000 CONFIG_HIGHMEM=yCONFIG_X86_PAE=y CONFIG_ARCH_PHYS_ADDR_T_64BIT=y CONFIG_NUMA=y
#
# NUMA (Summit) requires SMP, 64GB highmem support, ACPI #CONFIG_NODES_SHIFT=4CONFIG_HAVE_ARCH_BOOTMEM=y CONFIG_ARCH_HAVE_MEMORY_PRESENT=y CONFIG_NEED_NODE_MEMMAP_SIZE=y CONFIG_HAVE_ARCH_ALLOC_REMAP=y CONFIG_ARCH_DISCONTIGMEM_ENABLE=y CONFIG_ARCH_DISCONTIGMEM_DEFAULT=y CONFIG_ARCH_SPARSEMEM_ENABLE=y CONFIG_ARCH_SELECT_MEMORY_MODEL=y CONFIG_ILLEGAL_POINTER_VALUE=0 CONFIG_SELECT_MEMORY_MODEL=y
# CONFIG_FLATMEM_MANUAL is not set CONFIG_DISCONTIGMEM_MANUAL=y
# CONFIG_SPARSEMEM_MANUAL is not set CONFIG_DISCONTIGMEM=y CONFIG_FLAT_NODE_MEM_MAP=y CONFIG_NEED_MULTIPLE_NODES=y CONFIG_HAVE_MEMORY_PRESENT=y CONFIG_SPARSEMEM_STATIC=y CONFIG_PAGEFLAGS_EXTENDED=y CONFIG_SPLIT_PTLOCK_CPUS=4CONFIG_MIGRATION=yCONFIG_PHYS_ADDR_T_64BIT=y CONFIG_ZONE_DMA_FLAG=1CONFIG_BOUNCE=yCONFIG_VIRT_TO_BUS=yCONFIG_HAVE_MLOCK=y CONFIG_HAVE_MLOCKED_PAGE_BIT=y CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
# CONFIG_HIGHPTE is not set CONFIG_X86_CHECK_BIOS_CORRUPTION=y CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y CONFIG_X86_RESERVE_LOW_64K=y CONFIG_MATH_EMULATION=y
# CONFIG_MTRR is not setCONFIG_SECCOMP=yCONFIG_CC_STACKPROTECTOR_ALL=y CONFIG_CC_STACKPROTECTOR=y
# CONFIG_HZ_100 is not set
# CONFIG_HZ_250 is not setCONFIG_HZ_300=y
# CONFIG_HZ_1000 is not setCONFIG_HZ=300CONFIG_SCHED_HRTICK=y
# CONFIG_KEXEC is not setCONFIG_CRASH_DUMP=y CONFIG_PHYSICAL_START=0x1000000
# CONFIG_RELOCATABLE is not set CONFIG_PHYSICAL_ALIGN=0x1000000
# CONFIG_HOTPLUG_CPU is not set
# CONFIG_COMPAT_VDSO is not set
# CONFIG_CMDLINE_BOOL is not set CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
# CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID is not set
#
# Power management and ACPI options
#
# CONFIG_PM is not set
#
# CPU Frequency scaling
#CONFIG_CPU_FREQ=yCONFIG_CPU_FREQ_TABLE=y
# CONFIG_CPU_FREQ_DEBUG is not set CONFIG_CPU_FREQ_STAT=y
# CONFIG_CPU_FREQ_STAT_DETAILS is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set # CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set # CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set CONFIG_CPU_FREQ_GOV_PERFORMANCE=y CONFIG_CPU_FREQ_GOV_POWERSAVE=y CONFIG_CPU_FREQ_GOV_USERSPACE=y
# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set
#
# CPUFreq processor drivers
#
# CONFIG_X86_POWERNOW_K6 is not setCONFIG_X86_POWERNOW_K7=yCONFIG_X86_GX_SUSPMOD=y
# CONFIG_X86_SPEEDSTEP_CENTRINO is not set
# CONFIG_X86_SPEEDSTEP_ICH is not setCONFIG_X86_SPEEDSTEP_SMI=yCONFIG_X86_P4_CLOCKMOD=y
# CONFIG_X86_CPUFREQ_NFORCE2 is not setCONFIG_X86_LONGRUN=y
# CONFIG_X86_E_POWERSAVER is not set
#
# shared options # CONFIG_X86_SPEEDSTEP_LIB=y # CONFIG_X86_SPEEDSTEP_RELAXED_CAP_CHECK is not set # CONFIG_CPU_IDLE is not set
#
# Bus options (PCI etc.)
#CONFIG_PCI=y
# CONFIG_PCI_GOBIOS is not set
# CONFIG_PCI_GOMMCONFIG is not set
# CONFIG_PCI_GODIRECT is not set
# CONFIG_PCI_GOOLPC is not setCONFIG_PCI_GOANY=yCONFIG_PCI_BIOS=yCONFIG_PCI_DIRECT=yCONFIG_PCI_OLPC=yCONFIG_PCI_DOMAINS=yCONFIG_PCIEPORTBUS=yCONFIG_PCIEAER=yCONFIG_PCIE_ECRC=yCONFIG_PCIEAER_INJECT=yCONFIG_PCIEASPM=yCONFIG_PCIEASPM_DEBUG=yCONFIG_ARCH_SUPPORTS_MSI=y
# CONFIG_PCI_MSI is not setCONFIG_PCI_LEGACY=y
# CONFIG_PCI_DEBUG is not setCONFIG_PCI_STUB=y
# CONFIG_HT_IRQ is not setCONFIG_PCI_IOV=yCONFIG_ISA_DMA_API=y
# CONFIG_ISA is not setCONFIG_MCA=yCONFIG_MCA_LEGACY=yCONFIG_MCA_PROC_FS=y
# CONFIG_SCx200 is not setCONFIG_OLPC=yCONFIG_K8_NB=yCONFIG_PCCARD=yCONFIG_PCMCIA_DEBUG=yCONFIG_PCMCIA=yCONFIG_PCMCIA_LOAD_CIS=yCONFIG_PCMCIA_IOCTL=yCONFIG_CARDBUS=y
#
# PC-card bridges
#CONFIG_YENTA=yCONFIG_YENTA_O2=yCONFIG_YENTA_RICOH=yCONFIG_YENTA_TI=y
# CONFIG_YENTA_ENE_TUNE is not setCONFIG_YENTA_TOSHIBA=yCONFIG_PD6729=y
# CONFIG_I82092 is not setCONFIG_PCCARD_NONSTATIC=y
# CONFIG_HOTPLUG_PCI is not set
#
# Executable file formats / Emulations
#CONFIG_BINFMT_ELF=yCONFIG_HAVE_AOUT=yCONFIG_BINFMT_AOUT=yCONFIG_BINFMT_MISC=yCONFIG_HAVE_ATOMIC_IOMAP=yCONFIG_NET=y
#
# Networking options
#CONFIG_PACKET=y
# CONFIG_PACKET_MMAP is not setCONFIG_UNIX=yCONFIG_XFRM=yCONFIG_XFRM_USER=y
# CONFIG_XFRM_SUB_POLICY is not set
# CONFIG_XFRM_MIGRATE is not set
# CONFIG_XFRM_STATISTICS is not setCONFIG_NET_KEY=y
# CONFIG_NET_KEY_MIGRATE is not setCONFIG_INET=yCONFIG_IP_MULTICAST=yCONFIG_IP_ADVANCED_ROUTER=yCONFIG_ASK_IP_FIB_HASH=y
# CONFIG_IP_FIB_TRIE is not setCONFIG_IP_FIB_HASH=yCONFIG_IP_MULTIPLE_TABLES=yCONFIG_IP_ROUTE_MULTIPATH=yCONFIG_IP_ROUTE_VERBOSE=y
# CONFIG_IP_PNP is not set
# CONFIG_NET_IPIP is not setCONFIG_NET_IPGRE=y
# CONFIG_NET_IPGRE_BROADCAST is not setCONFIG_IP_MROUTE=yCONFIG_IP_PIMSM_V1=y
# CONFIG_IP_PIMSM_V2 is not set
# CONFIG_ARPD is not setCONFIG_SYN_COOKIES=y
# CONFIG_INET_AH is not setCONFIG_INET_ESP=y
# CONFIG_INET_IPCOMP is not set
# CONFIG_INET_XFRM_TUNNEL is not setCONFIG_INET_TUNNEL=y
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
# CONFIG_INET_XFRM_MODE_TUNNEL is not setCONFIG_INET_XFRM_MODE_BEET=yCONFIG_INET_LRO=yCONFIG_INET_DIAG=yCONFIG_INET_TCP_DIAG=y
# CONFIG_TCP_CONG_ADVANCED is not setCONFIG_TCP_CONG_CUBIC=yCONFIG_DEFAULT_TCP_CONG="cubic"
# CONFIG_TCP_MD5SIG is not setCONFIG_IPV6=yCONFIG_IPV6_PRIVACY=yCONFIG_IPV6_ROUTER_PREF=y
# CONFIG_IPV6_ROUTE_INFO is not setCONFIG_IPV6_OPTIMISTIC_DAD=yCONFIG_INET6_AH=yCONFIG_INET6_ESP=y
# CONFIG_INET6_IPCOMP is not setCONFIG_IPV6_MIP6=y
# CONFIG_INET6_XFRM_TUNNEL is not setCONFIG_INET6_TUNNEL=yCONFIG_INET6_XFRM_MODE_TRANSPORT=yCONFIG_INET6_XFRM_MODE_TUNNEL=yCONFIG_INET6_XFRM_MODE_BEET=yCONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=yCONFIG_IPV6_SIT=yCONFIG_IPV6_NDISC_NODETYPE=yCONFIG_IPV6_TUNNEL=y
# CONFIG_IPV6_MULTIPLE_TABLES is not setCONFIG_IPV6_MROUTE=y
# CONFIG_IPV6_PIMSM_V2 is not set
# CONFIG_NETLABEL is not setCONFIG_NETWORK_SECMARK=y
# CONFIG_NETFILTER is not setCONFIG_IP_DCCP=yCONFIG_INET_DCCP_DIAG=y
#
# DCCP CCIDs Configuration (EXPERIMENTAL)
#CONFIG_IP_DCCP_CCID2_DEBUG=y
# CONFIG_IP_DCCP_CCID3 is not set
#
# DCCP Kernel Hacking
#CONFIG_IP_DCCP_DEBUG=y
# CONFIG_IP_SCTP is not setCONFIG_TIPC=y
# CONFIG_TIPC_ADVANCED is not set
# CONFIG_TIPC_DEBUG is not setCONFIG_ATM=y
# CONFIG_ATM_CLIP is not setCONFIG_ATM_LANE=yCONFIG_ATM_MPOA=yCONFIG_ATM_BR2684=y
# CONFIG_ATM_BR2684_IPFILTER is not set
# CONFIG_BRIDGE is not setCONFIG_NET_DSA=yCONFIG_NET_DSA_TAG_DSA=yCONFIG_NET_DSA_TAG_EDSA=yCONFIG_NET_DSA_TAG_TRAILER=yCONFIG_NET_DSA_MV88E6XXX=yCONFIG_NET_DSA_MV88E6060=yCONFIG_NET_DSA_MV88E6XXX_NEED_PPU=yCONFIG_NET_DSA_MV88E6131=yCONFIG_NET_DSA_MV88E6123_61_65=y
# CONFIG_VLAN_8021Q is not setCONFIG_DECNET=y
# CONFIG_DECNET_ROUTER is not setCONFIG_LLC=yCONFIG_LLC2=yCONFIG_IPX=y
# CONFIG_IPX_INTERN is not set
# CONFIG_ATALK is not set
# CONFIG_X25 is not setCONFIG_LAPB=yCONFIG_ECONET=yCONFIG_ECONET_AUNUDP=y
# CONFIG_ECONET_NATIVE is not setCONFIG_WAN_ROUTER=yCONFIG_PHONET=yCONFIG_IEEE802154=yCONFIG_NET_SCHED=y
#
# Queueing/Scheduling
#CONFIG_NET_SCH_CBQ=y
# CONFIG_NET_SCH_HTB is not setCONFIG_NET_SCH_HFSC=yCONFIG_NET_SCH_ATM=y
# CONFIG_NET_SCH_PRIO is not setCONFIG_NET_SCH_MULTIQ=yCONFIG_NET_SCH_RED=yCONFIG_NET_SCH_SFQ=y
# CONFIG_NET_SCH_TEQL is not setCONFIG_NET_SCH_TBF=yCONFIG_NET_SCH_GRED=yCONFIG_NET_SCH_DSMARK=y
# CONFIG_NET_SCH_NETEM is not setCONFIG_NET_SCH_DRR=y
#
# Classification
#CONFIG_NET_CLS=y
# CONFIG_NET_CLS_BASIC is not setCONFIG_NET_CLS_TCINDEX=y
# CONFIG_NET_CLS_ROUTE4 is not set
# CONFIG_NET_CLS_FW is not set
# CONFIG_NET_CLS_U32 is not set
# CONFIG_NET_CLS_RSVP is not set
# CONFIG_NET_CLS_RSVP6 is not setCONFIG_NET_CLS_FLOW=y
# CONFIG_NET_EMATCH is not set
# CONFIG_NET_CLS_ACT is not setCONFIG_NET_SCH_FIFO=y
# CONFIG_DCB is not set
#
# Network testing
#CONFIG_NET_PKTGEN=y
# CONFIG_NET_DROP_MONITOR is not set
# CONFIG_HAMRADIO is not setCONFIG_CAN=y
# CONFIG_CAN_RAW is not setCONFIG_CAN_BCM=y
#
# CAN Device Drivers
#CONFIG_CAN_VCAN=yCONFIG_CAN_DEV=y
# CONFIG_CAN_CALC_BITTIMING is not set
# CONFIG_CAN_SJA1000 is not setCONFIG_CAN_DEBUG_DEVICES=y
# CONFIG_IRDA is not setCONFIG_BT=y
# CONFIG_BT_L2CAP is not set
# CONFIG_BT_SCO is not set
#
# Bluetooth device drivers
#CONFIG_BT_HCIBTUSB=yCONFIG_BT_HCIBTSDIO=yCONFIG_BT_HCIUART=yCONFIG_BT_HCIUART_H4=yCONFIG_BT_HCIUART_BCSP=y
# CONFIG_BT_HCIUART_LL is not setCONFIG_BT_HCIBCM203X=y
# CONFIG_BT_HCIBPA10X is not setCONFIG_BT_HCIBFUSB=yCONFIG_BT_HCIDTL1=y
# CONFIG_BT_HCIBT3C is not set
# CONFIG_BT_HCIBLUECARD is not setCONFIG_BT_HCIBTUART=yCONFIG_BT_HCIVHCI=yCONFIG_AF_RXRPC=yCONFIG_AF_RXRPC_DEBUG=yCONFIG_RXKAD=yCONFIG_FIB_RULES=yCONFIG_WIRELESS=yCONFIG_CFG80211=yCONFIG_CFG80211_REG_DEBUG=yCONFIG_CFG80211_DEBUGFS=yCONFIG_WIRELESS_OLD_REGULATORY=yCONFIG_WIRELESS_EXT=yCONFIG_WIRELESS_EXT_SYSFS=yCONFIG_LIB80211=yCONFIG_LIB80211_CRYPT_WEP=yCONFIG_LIB80211_CRYPT_CCMP=yCONFIG_LIB80211_CRYPT_TKIP=y
# CONFIG_LIB80211_DEBUG is not setCONFIG_MAC80211=yCONFIG_MAC80211_DEFAULT_PS=yCONFIG_MAC80211_DEFAULT_PS_VALUE=1
#
# Rate control algorithm selection
#CONFIG_MAC80211_RC_PID=yCONFIG_MAC80211_RC_MINSTREL=y
# CONFIG_MAC80211_RC_DEFAULT_PID is not setCONFIG_MAC80211_RC_DEFAULT_MINSTREL=yCONFIG_MAC80211_RC_DEFAULT="minstrel"CONFIG_MAC80211_LEDS=yCONFIG_MAC80211_DEBUGFS=yCONFIG_MAC80211_DEBUG_MENU=yCONFIG_MAC80211_DEBUG_PACKET_ALIGNMENT=yCONFIG_MAC80211_NOINLINE=y
# CONFIG_MAC80211_VERBOSE_DEBUG is not setCONFIG_MAC80211_HT_DEBUG=yCONFIG_MAC80211_TKIP_DEBUG=yCONFIG_MAC80211_IBSS_DEBUG=yCONFIG_MAC80211_VERBOSE_PS_DEBUG=y
# CONFIG_MAC80211_DEBUG_COUNTERS is not setCONFIG_WIMAX=yCONFIG_WIMAX_DEBUG_LEVEL=8CONFIG_RFKILL=yCONFIG_RFKILL_LEDS=y
# CONFIG_RFKILL_INPUT is not set
#
# Device Drivers
#
#
# Generic Driver Options
#CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"CONFIG_STANDALONE=yCONFIG_PREVENT_FIRMWARE_BUILD=yCONFIG_FW_LOADER=yCONFIG_FIRMWARE_IN_KERNEL=yCONFIG_EXTRA_FIRMWARE=""CONFIG_DEBUG_DRIVER=yCONFIG_DEBUG_DEVRES=y
# CONFIG_SYS_HYPERVISOR is not setCONFIG_CONNECTOR=yCONFIG_PROC_EVENTS=y
# CONFIG_PARPORT is not setCONFIG_BLK_DEV=yCONFIG_BLK_DEV_FD=yCONFIG_BLK_CPQ_DA=yCONFIG_BLK_CPQ_CISS_DA=yCONFIG_CISS_SCSI_TAPE=yCONFIG_BLK_DEV_DAC960=yCONFIG_BLK_DEV_UMEM=y
# CONFIG_BLK_DEV_COW_COMMON is not setCONFIG_BLK_DEV_LOOP=y
# CONFIG_BLK_DEV_CRYPTOLOOP is not set
# CONFIG_BLK_DEV_NBD is not set
# CONFIG_BLK_DEV_OSD is not setCONFIG_BLK_DEV_SX8=yCONFIG_BLK_DEV_UB=y
# CONFIG_BLK_DEV_RAM is not setCONFIG_CDROM_PKTCDVD=yCONFIG_CDROM_PKTCDVD_BUFFERS=8
# CONFIG_CDROM_PKTCDVD_WCACHE is not set
# CONFIG_ATA_OVER_ETH is not setCONFIG_VIRTIO_BLK=yCONFIG_BLK_DEV_HD=yCONFIG_MISC_DEVICES=yCONFIG_IBM_ASM=y
# CONFIG_PHANTOM is not setCONFIG_SGI_IOC4=yCONFIG_TIFM_CORE=y
# CONFIG_TIFM_7XX1 is not setCONFIG_ICS932S401=y
# CONFIG_ENCLOSURE_SERVICES is not setCONFIG_HP_ILO=y
# CONFIG_ISL29003 is not setCONFIG_C2PORT=yCONFIG_C2PORT_DURAMAR_2150=y
#
# EEPROM support
#
# CONFIG_EEPROM_AT24 is not setCONFIG_EEPROM_LEGACY=yCONFIG_EEPROM_MAX6875=yCONFIG_EEPROM_93CX6=y
# CONFIG_CB710_CORE is not setCONFIG_HAVE_IDE=y
#
# SCSI device support
#
# CONFIG_RAID_ATTRS is not setCONFIG_SCSI=yCONFIG_SCSI_DMA=yCONFIG_SCSI_TGT=yCONFIG_SCSI_NETLINK=yCONFIG_SCSI_PROC_FS=y
#
# SCSI support type (disk, tape, CD-ROM)
#CONFIG_BLK_DEV_SD=y
# CONFIG_CHR_DEV_ST is not setCONFIG_CHR_DEV_OSST=y
# CONFIG_BLK_DEV_SR is not setCONFIG_CHR_DEV_SG=y
# CONFIG_CHR_DEV_SCH is not setCONFIG_SCSI_MULTI_LUN=yCONFIG_SCSI_CONSTANTS=yCONFIG_SCSI_LOGGING=y
# CONFIG_SCSI_SCAN_ASYNC is not set
#
# SCSI Transports
#CONFIG_SCSI_SPI_ATTRS=yCONFIG_SCSI_FC_ATTRS=yCONFIG_SCSI_FC_TGT_ATTRS=yCONFIG_SCSI_ISCSI_ATTRS=yCONFIG_SCSI_SAS_ATTRS=yCONFIG_SCSI_SAS_LIBSAS=yCONFIG_SCSI_SAS_ATA=y
# CONFIG_SCSI_SAS_HOST_SMP is not set
# CONFIG_SCSI_SAS_LIBSAS_DEBUG is not setCONFIG_SCSI_LOWLEVEL=yCONFIG_ISCSI_TCP=yCONFIG_SCSI_CXGB3_ISCSI=y
# CONFIG_BLK_DEV_3W_XXXX_RAID is not setCONFIG_SCSI_3W_9XXX=yCONFIG_SCSI_ACARD=y
# CONFIG_SCSI_AACRAID is not setCONFIG_SCSI_AIC7XXX=yCONFIG_AIC7XXX_CMDS_PER_DEVICE=32CONFIG_AIC7XXX_RESET_DELAY_MS=5000
# CONFIG_AIC7XXX_DEBUG_ENABLE is not setCONFIG_AIC7XXX_DEBUG_MASK=0CONFIG_AIC7XXX_REG_PRETTY_PRINT=yCONFIG_SCSI_AIC7XXX_OLD=yCONFIG_SCSI_AIC79XX=yCONFIG_AIC79XX_CMDS_PER_DEVICE=32CONFIG_AIC79XX_RESET_DELAY_MS=5000
# CONFIG_AIC79XX_DEBUG_ENABLE is not setCONFIG_AIC79XX_DEBUG_MASK=0
# CONFIG_AIC79XX_REG_PRETTY_PRINT is not setCONFIG_SCSI_AIC94XX=yCONFIG_AIC94XX_DEBUG=y
# CONFIG_SCSI_MVSAS is not setCONFIG_SCSI_DPT_I2O=yCONFIG_SCSI_ADVANSYS=yCONFIG_SCSI_ARCMSR=yCONFIG_SCSI_ARCMSR_AER=y
# CONFIG_MEGARAID_NEWGEN is not setCONFIG_MEGARAID_LEGACY=yCONFIG_MEGARAID_SAS=y
# CONFIG_SCSI_MPT2SAS is not setCONFIG_SCSI_HPTIOP=yCONFIG_SCSI_BUSLOGIC=yCONFIG_SCSI_FLASHPOINT=yCONFIG_LIBFC=yCONFIG_LIBFCOE=yCONFIG_FCOE=y
# CONFIG_FCOE_FNIC is not set
# CONFIG_SCSI_DMX3191D is not setCONFIG_SCSI_EATA=yCONFIG_SCSI_EATA_TAGGED_QUEUE=y
# CONFIG_SCSI_EATA_LINKED_COMMANDS is not setCONFIG_SCSI_EATA_MAX_TAGS=16CONFIG_SCSI_FUTURE_DOMAIN=yCONFIG_SCSI_FD_MCS=yCONFIG_SCSI_GDTH=yCONFIG_SCSI_IBMMCA=yCONFIG_IBMMCA_SCSI_ORDER_STANDARD=yCONFIG_IBMMCA_SCSI_DEV_RESET=y
# CONFIG_SCSI_IPS is not set
# CONFIG_SCSI_INITIO is not setCONFIG_SCSI_INIA100=yCONFIG_SCSI_NCR_D700=y
# CONFIG_SCSI_STEX is not setCONFIG_SCSI_SYM53C8XX_2=yCONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64CONFIG_SCSI_SYM53C8XX_MMIO=yCONFIG_SCSI_IPR=yCONFIG_SCSI_IPR_TRACE=yCONFIG_SCSI_IPR_DUMP=yCONFIG_SCSI_NCR_Q720=yCONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=8CONFIG_SCSI_NCR53C8XX_MAX_TAGS=32CONFIG_SCSI_NCR53C8XX_SYNC=20
# CONFIG_SCSI_QLOGIC_1280 is not setCONFIG_SCSI_QLA_FC=yCONFIG_SCSI_QLA_ISCSI=y
# CONFIG_SCSI_LPFC is not setCONFIG_SCSI_SIM710=y
CONFIG_SCSI_DC395x=yCONFIG_SCSI_DC390T=y
# CONFIG_SCSI_NSP32 is not set
# CONFIG_SCSI_SRP is not setCONFIG_SCSI_LOWLEVEL_PCMCIA=yCONFIG_SCSI_DH=yCONFIG_SCSI_DH_RDAC=yCONFIG_SCSI_DH_HP_SW=yCONFIG_SCSI_DH_EMC=y
# CONFIG_SCSI_DH_ALUA is not setCONFIG_SCSI_OSD_INITIATOR=yCONFIG_SCSI_OSD_ULD=yCONFIG_SCSI_OSD_DPRINT_SENSE=1
# CONFIG_SCSI_OSD_DEBUG is not setCONFIG_ATA=y
# CONFIG_ATA_NONSTANDARD is not set
# CONFIG_SATA_PMP is not setCONFIG_SATA_AHCI=y
# CONFIG_SATA_SIL24 is not setCONFIG_ATA_SFF=yCONFIG_SATA_SVW=yCONFIG_ATA_PIIX=yCONFIG_SATA_MV=yCONFIG_SATA_NV=yCONFIG_PDC_ADMA=yCONFIG_SATA_QSTOR=yCONFIG_SATA_PROMISE=yCONFIG_SATA_SX4=y
# CONFIG_SATA_SIL is not setCONFIG_SATA_SIS=yCONFIG_SATA_ULI=y
# CONFIG_SATA_VIA is not setCONFIG_SATA_VITESSE=y
# CONFIG_SATA_INIC162X is not setCONFIG_PATA_ALI=yCONFIG_PATA_AMD=y
# CONFIG_PATA_ARTOP is not setCONFIG_PATA_ATIIXP=yCONFIG_PATA_CMD640_PCI=yCONFIG_PATA_CMD64X=yCONFIG_PATA_CS5520=yCONFIG_PATA_CS5530=y
# CONFIG_PATA_CS5535 is not set
# CONFIG_PATA_CS5536 is not setCONFIG_PATA_CYPRESS=yCONFIG_PATA_EFAR=y
# CONFIG_ATA_GENERIC is not setCONFIG_PATA_HPT366=yCONFIG_PATA_HPT37X=yCONFIG_PATA_HPT3X2N=y
# CONFIG_PATA_HPT3X3 is not set
# CONFIG_PATA_IT821X is not set
# CONFIG_PATA_IT8213 is not setCONFIG_PATA_JMICRON=y
# CONFIG_PATA_TRIFLEX is not setCONFIG_PATA_MARVELL=yCONFIG_PATA_MPIIX=yCONFIG_PATA_OLDPIIX=y
# CONFIG_PATA_NETCELL is not set
# CONFIG_PATA_NINJA32 is not setCONFIG_PATA_NS87410=yCONFIG_PATA_NS87415=y
# CONFIG_PATA_OPTI is not setCONFIG_PATA_OPTIDMA=yCONFIG_PATA_PCMCIA=yCONFIG_PATA_PDC_OLD=yCONFIG_PATA_RADISYS=yCONFIG_PATA_RZ1000=y
# CONFIG_PATA_SC1200 is not setCONFIG_PATA_SERVERWORKS=yCONFIG_PATA_PDC2027X=yCONFIG_PATA_SIL680=yCONFIG_PATA_SIS=yCONFIG_PATA_VIA=yCONFIG_PATA_WINBOND=yCONFIG_PATA_PLATFORM=yCONFIG_PATA_SCH=yCONFIG_MD=y
# CONFIG_BLK_DEV_MD is not setCONFIG_BLK_DEV_DM=yCONFIG_DM_DEBUG=y
# CONFIG_DM_CRYPT is not setCONFIG_DM_SNAPSHOT=yCONFIG_DM_MIRROR=yCONFIG_DM_LOG_USERSPACE=yCONFIG_DM_ZERO=y
# CONFIG_DM_MULTIPATH is not setCONFIG_DM_DELAY=yCONFIG_DM_UEVENT=y
# CONFIG_FUSION is not set
#
# IEEE 1394 (FireWire) support
#
#
# You can enable one or both FireWire driver stacks. #
#
# See the help texts for more information.
#CONFIG_FIREWIRE=yCONFIG_FIREWIRE_OHCI=yCONFIG_FIREWIRE_OHCI_DEBUG=yCONFIG_FIREWIRE_SBP2=yCONFIG_FIREWIRE_NET=yCONFIG_IEEE1394=yCONFIG_IEEE1394_OHCI1394=y
# CONFIG_IEEE1394_PCILYNX is not set
# CONFIG_IEEE1394_SBP2 is not set
# CONFIG_IEEE1394_ETH1394_ROM_ENTRY is not set
# CONFIG_IEEE1394_ETH1394 is not setCONFIG_IEEE1394_RAWIO=yCONFIG_IEEE1394_VIDEO1394=y
# CONFIG_IEEE1394_DV1394 is not setCONFIG_IEEE1394_VERBOSEDEBUG=y
# CONFIG_I2O is not setCONFIG_MACINTOSH_DRIVERS=y
# CONFIG_MAC_EMUMOUSEBTN is not setCONFIG_NETDEVICES=yCONFIG_DUMMY=yCONFIG_BONDING=yCONFIG_MACVLAN=yCONFIG_EQUALIZER=yCONFIG_TUN=y
# CONFIG_VETH is not setCONFIG_ARCNET=yCONFIG_ARCNET_1201=yCONFIG_ARCNET_1051=y
# CONFIG_ARCNET_RAW is not set
# CONFIG_ARCNET_CAP is not set
CONFIG_ARCNET_COM90xx=y
CONFIG_ARCNET_COM90xxIO=yCONFIG_ARCNET_RIM_I=yCONFIG_ARCNET_COM20020=yCONFIG_ARCNET_COM20020_PCI=yCONFIG_PHYLIB=y
#
# MII PHY device drivers
#CONFIG_MARVELL_PHY=yCONFIG_DAVICOM_PHY=yCONFIG_QSEMI_PHY=yCONFIG_LXT_PHY=yCONFIG_CICADA_PHY=yCONFIG_VITESSE_PHY=yCONFIG_SMSC_PHY=y
# CONFIG_BROADCOM_PHY is not set CONFIG_ICPLUS_PHY=yCONFIG_REALTEK_PHY=y
# CONFIG_NATIONAL_PHY is not set CONFIG_STE10XP=y
# CONFIG_LSI_ET1011C_PHY is not set
# CONFIG_FIXED_PHY is not set
# CONFIG_MDIO_BITBANG is not set CONFIG_NET_ETHERNET=yCONFIG_MII=yCONFIG_HAPPYMEAL=yCONFIG_SUNGEM=y
# CONFIG_CASSINI is not set CONFIG_NET_VENDOR_3COM=yCONFIG_EL3=yCONFIG_ELMC=yCONFIG_ELMC_II=yCONFIG_VORTEX=y
# CONFIG_TYPHOON is not set CONFIG_NET_VENDOR_SMC=yCONFIG_ULTRAMCA=yCONFIG_ETHOC=yCONFIG_DNET=yCONFIG_NET_TULIP=yCONFIG_DE2104X=yCONFIG_DE2104X_DSL=0CONFIG_TULIP=y
# CONFIG_TULIP_MWI is not set CONFIG_TULIP_MMIO=y
# CONFIG_TULIP_NAPI is not set
# CONFIG_DE4X5 is not set CONFIG_WINBOND_840=y
# CONFIG_DM9102 is not set CONFIG_ULI526X=yCONFIG_PCMCIA_XIRCOM=yCONFIG_AT1700=yCONFIG_DEPCA=yCONFIG_HP100=yCONFIG_NE2_MCA=yCONFIG_IBMLANA=y
# CONFIG_IBM_NEW_EMAC_ZMII is not set
# CONFIG_IBM_NEW_EMAC_RGMII is not set
# CONFIG_IBM_NEW_EMAC_TAH is not set
# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set # CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set # CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set CONFIG_NET_PCI=yCONFIG_PCNET32=yCONFIG_AMD8111_ETH=y CONFIG_ADAPTEC_STARFIRE=yCONFIG_B44=yCONFIG_B44_PCI_AUTOSELECT=y CONFIG_B44_PCICORE_AUTOSELECT=y CONFIG_B44_PCI=yCONFIG_FORCEDETH=y
# CONFIG_FORCEDETH_NAPI is not set CONFIG_E100=y
# CONFIG_FEALNX is not set
# CONFIG_NATSEMI is not set
# CONFIG_NE2K_PCI is not set CONFIG_8139CP=yCONFIG_8139TOO=yCONFIG_8139TOO_PIO=y CONFIG_8139TOO_TUNE_TWISTER=y CONFIG_8139TOO_8129=y CONFIG_8139_OLD_RX_RESET=yCONFIG_R6040=yCONFIG_SIS900=yCONFIG_EPIC100=yCONFIG_SMSC9420=yCONFIG_SUNDANCE=yCONFIG_SUNDANCE_MMIO=yCONFIG_TLAN=y
# CONFIG_KS8842 is not set CONFIG_VIA_RHINE=y
# CONFIG_VIA_RHINE_MMIO is not set
# CONFIG_SC92031 is not setCONFIG_ATL2=yCONFIG_NETDEV_1000=yCONFIG_ACENIC=y
# CONFIG_ACENIC_OMIT_TIGON_I is not set CONFIG_DL2K=y
# CONFIG_E1000 is not setCONFIG_E1000E=yCONFIG_IP1000=yCONFIG_IGB=yCONFIG_IGBVF=yCONFIG_NS83820=yCONFIG_HAMACHI=yCONFIG_YELLOWFIN=y
# CONFIG_R8169 is not setCONFIG_SIS190=y
# CONFIG_SKGE is not setCONFIG_SKY2=y
# CONFIG_SKY2_DEBUG is not set CONFIG_VIA_VELOCITY=yCONFIG_TIGON3=yCONFIG_BNX2=yCONFIG_QLA3XXX=yCONFIG_ATL1=yCONFIG_ATL1E=y
# CONFIG_ATL1C is not setCONFIG_JME=yCONFIG_NETDEV_10000=yCONFIG_MDIO=yCONFIG_CHELSIO_T1=yCONFIG_CHELSIO_T1_1G=y CONFIG_CHELSIO_T3_DEPENDS=y CONFIG_CHELSIO_T3=yCONFIG_ENIC=yCONFIG_IXGBE=yCONFIG_IXGB=yCONFIG_S2IO=yCONFIG_MYRI10GE=yCONFIG_NIU=yCONFIG_MLX4_EN=yCONFIG_MLX4_CORE=yCONFIG_MLX4_DEBUG=yCONFIG_TEHUTI=yCONFIG_BNX2X=yCONFIG_QLGE=yCONFIG_SFC=y
# CONFIG_BE2NET is not set
# CONFIG_TR is not set
#
# Wireless LAN
#CONFIG_WLAN_PRE80211=yCONFIG_STRIP=yCONFIG_PCMCIA_WAVELAN=yCONFIG_PCMCIA_NETWAVE=yCONFIG_WLAN_80211=y
# CONFIG_PCMCIA_RAYCS is not set
# CONFIG_LIBERTAS is not setCONFIG_LIBERTAS_THINFIRM=yCONFIG_LIBERTAS_THINFIRM_USB=yCONFIG_AIRO=yCONFIG_ATMEL=yCONFIG_PCI_ATMEL=yCONFIG_PCMCIA_ATMEL=y
# CONFIG_AT76C50X_USB is not setCONFIG_AIRO_CS=yCONFIG_PCMCIA_WL3501=y
# CONFIG_PRISM54 is not setCONFIG_USB_ZD1201=yCONFIG_USB_NET_RNDIS_WLAN=yCONFIG_RTL8180=yCONFIG_RTL8187=yCONFIG_RTL8187_LEDS=yCONFIG_ADM8211=yCONFIG_MAC80211_HWSIM=yCONFIG_MWL8K=y
# CONFIG_P54_COMMON is not setCONFIG_ATH_COMMON=yCONFIG_ATH5K=y
# CONFIG_ATH5K_DEBUG is not set
# CONFIG_ATH9K is not setCONFIG_AR9170_USB=yCONFIG_AR9170_LEDS=yCONFIG_IPW2100=yCONFIG_IPW2100_MONITOR=yCONFIG_IPW2100_DEBUG=y
# CONFIG_IPW2200 is not setCONFIG_LIBIPW=y
# CONFIG_LIBIPW_DEBUG is not setCONFIG_IWLWIFI=yCONFIG_IWLWIFI_LEDS=y
# CONFIG_IWLWIFI_SPECTRUM_MEASUREMENT is not set
# CONFIG_IWLWIFI_DEBUG is not setCONFIG_IWLAGN=yCONFIG_IWL4965=yCONFIG_IWL5000=yCONFIG_IWL3945=yCONFIG_IWL3945_SPECTRUM_MEASUREMENT=yCONFIG_HOSTAP=yCONFIG_HOSTAP_FIRMWARE=y
# CONFIG_HOSTAP_FIRMWARE_NVRAM is not setCONFIG_HOSTAP_PLX=y
# CONFIG_HOSTAP_PCI is not setCONFIG_HOSTAP_CS=yCONFIG_B43=yCONFIG_B43_PCI_AUTOSELECT=yCONFIG_B43_PCICORE_AUTOSELECT=y
# CONFIG_B43_PCMCIA is not setCONFIG_B43_PIO=yCONFIG_B43_LEDS=yCONFIG_B43_HWRNG=yCONFIG_B43_DEBUG=yCONFIG_B43_FORCE_PIO=y
# CONFIG_B43LEGACY is not set
# CONFIG_ZD1211RW is not set
# CONFIG_HERMES is not setCONFIG_IWM=yCONFIG_IWM_DEBUG=y
#
# WiMAX Wireless Broadband devices
#CONFIG_WIMAX_I2400M=yCONFIG_WIMAX_I2400M_SDIO=yCONFIG_WIMAX_I2400M_DEBUG_LEVEL=8
#
# USB Network Adapters
#CONFIG_USB_CATC=yCONFIG_USB_KAWETH=y
# CONFIG_USB_PEGASUS is not set
# CONFIG_USB_RTL8150 is not setCONFIG_USB_USBNET=yCONFIG_USB_NET_AX8817X=yCONFIG_USB_NET_CDCETHER=yCONFIG_USB_NET_CDC_EEM=yCONFIG_USB_NET_DM9601=yCONFIG_USB_NET_SMSC95XX=yCONFIG_USB_NET_GL620A=yCONFIG_USB_NET_NET1080=yCONFIG_USB_NET_PLUSB=yCONFIG_USB_NET_MCS7830=yCONFIG_USB_NET_RNDIS_HOST=y
# CONFIG_USB_NET_CDC_SUBSET is not set
# CONFIG_USB_NET_ZAURUS is not setCONFIG_USB_HSO=yCONFIG_USB_NET_INT51X1=yCONFIG_USB_CDC_PHONET=yCONFIG_NET_PCMCIA=y
# CONFIG_PCMCIA_3C589 is not set
# CONFIG_PCMCIA_3C574 is not setCONFIG_PCMCIA_FMVJ18X=yCONFIG_PCMCIA_PCNET=yCONFIG_PCMCIA_NMCLAN=yCONFIG_PCMCIA_SMC91C92=yCONFIG_PCMCIA_XIRC2PS=yCONFIG_PCMCIA_AXNET=yCONFIG_ARCNET_COM20020_CS=yCONFIG_WAN=yCONFIG_LANMEDIA=yCONFIG_HDLC=yCONFIG_HDLC_RAW=y
# CONFIG_HDLC_RAW_ETH is not setCONFIG_HDLC_CISCO=yCONFIG_HDLC_FR=yCONFIG_HDLC_PPP=y
# CONFIG_HDLC_X25 is not setCONFIG_PCI200SYN=yCONFIG_WANXL=yCONFIG_PC300TOO=yCONFIG_FARSYNC=yCONFIG_DLCI=yCONFIG_DLCI_MAX=8CONFIG_WAN_ROUTER_DRIVERS=yCONFIG_CYCLADES_SYNC=yCONFIG_CYCLOMX_X25=y
# CONFIG_SBNI is not set
# CONFIG_ATM_DRIVERS is not set
# CONFIG_IEEE802154_DRIVERS is not set
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not setCONFIG_PPP=yCONFIG_PPP_MULTILINK=yCONFIG_PPP_FILTER=y
# CONFIG_PPP_ASYNC is not setCONFIG_PPP_SYNC_TTY=yCONFIG_PPP_DEFLATE=yCONFIG_PPP_BSDCOMP=y
# CONFIG_PPP_MPPE is not setCONFIG_PPPOE=yCONFIG_PPPOATM=y
# CONFIG_PPPOL2TP is not set
# CONFIG_SLIP is not setCONFIG_SLHC=y
# CONFIG_NET_FC is not setCONFIG_NETCONSOLE=y
# CONFIG_NETCONSOLE_DYNAMIC is not setCONFIG_NETPOLL=yCONFIG_NETPOLL_TRAP=yCONFIG_NET_POLL_CONTROLLER=yCONFIG_VIRTIO_NET=y
# CONFIG_ISDN is not set
# CONFIG_PHONE is not set
#
# Input device support
#CONFIG_INPUT=yCONFIG_INPUT_FF_MEMLESS=yCONFIG_INPUT_POLLDEV=y
#
# Userland interfaces
#CONFIG_INPUT_MOUSEDEV=y
# CONFIG_INPUT_MOUSEDEV_PSAUX is not setCONFIG_INPUT_MOUSEDEV_SCREEN_X=1024CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768CONFIG_INPUT_JOYDEV=yCONFIG_INPUT_EVDEV=yCONFIG_INPUT_EVBUG=y
#
# Input Device Drivers
#CONFIG_INPUT_KEYBOARD=yCONFIG_KEYBOARD_ATKBD=yCONFIG_KEYBOARD_LKKBD=y
# CONFIG_KEYBOARD_GPIO is not setCONFIG_KEYBOARD_MATRIX=yCONFIG_KEYBOARD_LM8323=yCONFIG_KEYBOARD_NEWTON=y
# CONFIG_KEYBOARD_STOWAWAY is not setCONFIG_KEYBOARD_SUNKBD=yCONFIG_KEYBOARD_XTKBD=yCONFIG_INPUT_MOUSE=yCONFIG_MOUSE_PS2=y
# CONFIG_MOUSE_PS2_ALPS is not set
# CONFIG_MOUSE_PS2_LOGIPS2PP is not set
# CONFIG_MOUSE_PS2_SYNAPTICS is not set
# CONFIG_MOUSE_PS2_LIFEBOOK is not setCONFIG_MOUSE_PS2_TRACKPOINT=yCONFIG_MOUSE_PS2_ELANTECH=yCONFIG_MOUSE_PS2_TOUCHKIT=yCONFIG_MOUSE_PS2_OLPC=yCONFIG_MOUSE_SERIAL=yCONFIG_MOUSE_APPLETOUCH=y
# CONFIG_MOUSE_BCM5974 is not setCONFIG_MOUSE_VSXXXAA=yCONFIG_MOUSE_GPIO=yCONFIG_MOUSE_SYNAPTICS_I2C=y
# CONFIG_INPUT_JOYSTICK is not setCONFIG_INPUT_TABLET=yCONFIG_TABLET_USB_ACECAD=yCONFIG_TABLET_USB_AIPTEK=y
# CONFIG_TABLET_USB_GTCO is not set
# CONFIG_TABLET_USB_KBTAB is not setCONFIG_TABLET_USB_WACOM=yCONFIG_INPUT_TOUCHSCREEN=yCONFIG_TOUCHSCREEN_AD7879_I2C=yCONFIG_TOUCHSCREEN_AD7879=yCONFIG_TOUCHSCREEN_DA9034=y
# CONFIG_TOUCHSCREEN_EETI is not setCONFIG_TOUCHSCREEN_FUJITSU=yCONFIG_TOUCHSCREEN_GUNZE=yCONFIG_TOUCHSCREEN_ELO=y
# CONFIG_TOUCHSCREEN_WACOM_W8001 is not setCONFIG_TOUCHSCREEN_MTOUCH=y
# CONFIG_TOUCHSCREEN_INEXIO is not setCONFIG_TOUCHSCREEN_MK712=y
# CONFIG_TOUCHSCREEN_PENMOUNT is not set
# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not setCONFIG_TOUCHSCREEN_TOUCHWIN=yCONFIG_TOUCHSCREEN_USB_COMPOSITE=yCONFIG_TOUCHSCREEN_USB_EGALAX=yCONFIG_TOUCHSCREEN_USB_PANJIT=y
# CONFIG_TOUCHSCREEN_USB_3M is not set
# CONFIG_TOUCHSCREEN_USB_ITM is not setCONFIG_TOUCHSCREEN_USB_ETURBO=yCONFIG_TOUCHSCREEN_USB_GUNZE=yCONFIG_TOUCHSCREEN_USB_DMC_TSC10=yCONFIG_TOUCHSCREEN_USB_IRTOUCH=yCONFIG_TOUCHSCREEN_USB_IDEALTEK=yCONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH=yCONFIG_TOUCHSCREEN_USB_GOTOP=y
# CONFIG_TOUCHSCREEN_TOUCHIT213 is not setCONFIG_TOUCHSCREEN_TSC2007=y
# CONFIG_TOUCHSCREEN_W90X900 is not set
# CONFIG_INPUT_MISC is not set
#
# Hardware I/O ports
#CONFIG_SERIO=yCONFIG_SERIO_I8042=yCONFIG_SERIO_SERPORT=yCONFIG_SERIO_CT82C710=yCONFIG_SERIO_PCIPS2=yCONFIG_SERIO_LIBPS2=y
# CONFIG_SERIO_RAW is not set
# CONFIG_GAMEPORT is not set
#
# Character devices
#CONFIG_VT=y
# CONFIG_CONSOLE_TRANSLATIONS is not setCONFIG_VT_CONSOLE=yCONFIG_HW_CONSOLE=yCONFIG_VT_HW_CONSOLE_BINDING=y
# CONFIG_DEVKMEM is not set
# CONFIG_SERIAL_NONSTANDARD is not set
# CONFIG_NOZOMI is not set
#
# Serial drivers
#CONFIG_SERIAL_8250=yCONFIG_SERIAL_8250_CONSOLE=yCONFIG_FIX_EARLYCON_MEM=yCONFIG_SERIAL_8250_PCI=yCONFIG_SERIAL_8250_CS=yCONFIG_SERIAL_8250_NR_UARTS=4CONFIG_SERIAL_8250_RUNTIME_UARTS=4CONFIG_SERIAL_8250_EXTENDED=yCONFIG_SERIAL_8250_MANY_PORTS=yCONFIG_SERIAL_8250_SHARE_IRQ=y
# CONFIG_SERIAL_8250_DETECT_IRQ is not set
# CONFIG_SERIAL_8250_RSA is not set
# CONFIG_SERIAL_8250_MCA is not set
#
# Non-8250 serial port support
#CONFIG_SERIAL_CORE=yCONFIG_SERIAL_CORE_CONSOLE=yCONFIG_SERIAL_JSM=yCONFIG_UNIX98_PTYS=y
# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not setCONFIG_LEGACY_PTYS=yCONFIG_LEGACY_PTY_COUNT=256CONFIG_HVC_DRIVER=yCONFIG_VIRTIO_CONSOLE=yCONFIG_IPMI_HANDLER=y
# CONFIG_IPMI_PANIC_EVENT is not setCONFIG_IPMI_DEVICE_INTERFACE=yCONFIG_IPMI_SI=yCONFIG_IPMI_WATCHDOG=yCONFIG_IPMI_POWEROFF=yCONFIG_HW_RANDOM=yCONFIG_HW_RANDOM_TIMERIOMEM=y
# CONFIG_HW_RANDOM_INTEL is not setCONFIG_HW_RANDOM_AMD=yCONFIG_HW_RANDOM_GEODE=yCONFIG_HW_RANDOM_VIA=yCONFIG_HW_RANDOM_VIRTIO=yCONFIG_NVRAM=y
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
# CONFIG_SONYPI is not set
#
# PCMCIA character devices
#CONFIG_SYNCLINK_CS=yCONFIG_CARDMAN_4000=y
# CONFIG_CARDMAN_4040 is not setCONFIG_IPWIRELESS=y
# CONFIG_MWAVE is not set
# CONFIG_PC8736x_GPIO is not setCONFIG_NSC_GPIO=y
# CONFIG_CS5535_GPIO is not set
# CONFIG_RAW_DRIVER is not setCONFIG_HANGCHECK_TIMER=yCONFIG_TCG_TPM=yCONFIG_TCG_NSC=y
# CONFIG_TCG_ATMEL is not setCONFIG_TELCLOCK=yCONFIG_DEVPORT=yCONFIG_I2C=yCONFIG_I2C_BOARDINFO=yCONFIG_I2C_CHARDEV=y
# CONFIG_I2C_HELPER_AUTO is not set
#
# I2C Algorithms
#CONFIG_I2C_ALGOBIT=yCONFIG_I2C_ALGOPCF=yCONFIG_I2C_ALGOPCA=y
#
# I2C Hardware Bus support
#
#
# PC SMBus host controller drivers
#
# CONFIG_I2C_ALI1535 is not set
# CONFIG_I2C_ALI1563 is not set
# CONFIG_I2C_ALI15X3 is not setCONFIG_I2C_AMD756=yCONFIG_I2C_AMD8111=yCONFIG_I2C_I801=yCONFIG_I2C_ISCH=yCONFIG_I2C_PIIX4=yCONFIG_I2C_NFORCE2=yCONFIG_I2C_SIS5595=yCONFIG_I2C_SIS630=yCONFIG_I2C_SIS96X=yCONFIG_I2C_VIA=yCONFIG_I2C_VIAPRO=y
#
# I2C system bus drivers (mostly embedded / system-on-chip) #
# CONFIG_I2C_GPIO is not setCONFIG_I2C_OCORES=yCONFIG_I2C_SIMTEC=y
#
# External I2C/SMBus adapter drivers
#
# CONFIG_I2C_PARPORT_LIGHT is not set
# CONFIG_I2C_TAOS_EVM is not setCONFIG_I2C_TINY_USB=y
#
# Graphics adapter I2C/DDC channel drivers
#
# CONFIG_I2C_VOODOO3 is not set
#
# Other I2C/SMBus bus drivers
#CONFIG_I2C_PCA_PLATFORM=y
CONFIG_SCx200_ACB=y
#
# Miscellaneous I2C Chip support
#
# CONFIG_DS1682 is not setCONFIG_SENSORS_PCF8574=yCONFIG_PCF8575=yCONFIG_SENSORS_PCA9539=yCONFIG_SENSORS_TSL2550=y
# CONFIG_I2C_DEBUG_CORE is not set
# CONFIG_I2C_DEBUG_ALGO is not setCONFIG_I2C_DEBUG_BUS=yCONFIG_I2C_DEBUG_CHIP=y
# CONFIG_SPI is not set
#
# PPS support
#CONFIG_PPS=yCONFIG_PPS_DEBUG=yCONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=yCONFIG_GPIOLIB=yCONFIG_DEBUG_GPIO=y
# CONFIG_GPIO_SYSFS is not set
#
# Memory mapped GPIO expanders:
#
#
# I2C GPIO expanders:
#CONFIG_GPIO_MAX732X=y
# CONFIG_GPIO_PCA953X is not set
# CONFIG_GPIO_PCF857X is not setCONFIG_GPIO_TWL4030=y
#
# PCI GPIO expanders:
#CONFIG_GPIO_BT8XX=y
#
# SPI GPIO expanders:
#CONFIG_W1=yCONFIG_W1_CON=y
#
# 1-wire Bus Masters
#
# CONFIG_W1_MASTER_MATROX is not setCONFIG_W1_MASTER_DS2490=yCONFIG_W1_MASTER_DS2482=yCONFIG_W1_MASTER_GPIO=y
#
# 1-wire Slaves
#
# CONFIG_W1_SLAVE_THERM is not setCONFIG_W1_SLAVE_SMEM=y
# CONFIG_W1_SLAVE_DS2431 is not setCONFIG_W1_SLAVE_DS2433=yCONFIG_W1_SLAVE_DS2433_CRC=y
# CONFIG_W1_SLAVE_DS2760 is not set
# CONFIG_W1_SLAVE_BQ27000 is not set
# CONFIG_POWER_SUPPLY is not setCONFIG_HWMON=yCONFIG_HWMON_VID=yCONFIG_SENSORS_ABITUGURU=yCONFIG_SENSORS_ABITUGURU3=y
# CONFIG_SENSORS_AD7414 is not setCONFIG_SENSORS_AD7418=yCONFIG_SENSORS_ADM1021=y
# CONFIG_SENSORS_ADM1025 is not setCONFIG_SENSORS_ADM1026=yCONFIG_SENSORS_ADM1029=y
# CONFIG_SENSORS_ADM1031 is not setCONFIG_SENSORS_ADM9240=yCONFIG_SENSORS_ADT7462=yCONFIG_SENSORS_ADT7470=y
# CONFIG_SENSORS_ADT7473 is not setCONFIG_SENSORS_ADT7475=y
# CONFIG_SENSORS_K8TEMP is not setCONFIG_SENSORS_ASB100=yCONFIG_SENSORS_ATXP1=yCONFIG_SENSORS_DS1621=yCONFIG_SENSORS_I5K_AMB=yCONFIG_SENSORS_F71805F=y
# CONFIG_SENSORS_F71882FG is not setCONFIG_SENSORS_F75375S=yCONFIG_SENSORS_FSCHER=yCONFIG_SENSORS_FSCPOS=yCONFIG_SENSORS_FSCHMD=yCONFIG_SENSORS_G760A=yCONFIG_SENSORS_GL518SM=y
# CONFIG_SENSORS_GL520SM is not setCONFIG_SENSORS_CORETEMP=yCONFIG_SENSORS_IBMAEM=y
# CONFIG_SENSORS_IBMPEX is not setCONFIG_SENSORS_IT87=y
# CONFIG_SENSORS_LM63 is not set
# CONFIG_SENSORS_LM75 is not set
# CONFIG_SENSORS_LM77 is not setCONFIG_SENSORS_LM78=y
# CONFIG_SENSORS_LM80 is not setCONFIG_SENSORS_LM83=yCONFIG_SENSORS_LM85=y
# CONFIG_SENSORS_LM87 is not set
# CONFIG_SENSORS_LTC4215 is not set
# CONFIG_SENSORS_LTC4245 is not setCONFIG_SENSORS_LM95241=yCONFIG_SENSORS_MAX1619=yCONFIG_SENSORS_MAX6650=yCONFIG_SENSORS_PC87360=yCONFIG_SENSORS_PC87427=y
# CONFIG_SENSORS_PCF8591 is not set
# CONFIG_SENSORS_SHT15 is not setCONFIG_SENSORS_SIS5595=y
# CONFIG_SENSORS_DME1737 is not set
# CONFIG_SENSORS_SMSC47M1 is not setCONFIG_SENSORS_SMSC47M192=y
# CONFIG_SENSORS_SMSC47B397 is not set
# CONFIG_SENSORS_ADS7828 is not setCONFIG_SENSORS_THMC50=yCONFIG_SENSORS_TMP401=y
# CONFIG_SENSORS_VIA686A is not setCONFIG_SENSORS_VT1211=yCONFIG_SENSORS_VT8231=yCONFIG_SENSORS_W83781D=yCONFIG_SENSORS_W83791D=yCONFIG_SENSORS_W83792D=y
# CONFIG_SENSORS_W83793 is not setCONFIG_SENSORS_W83L785TS=yCONFIG_SENSORS_W83L786NG=yCONFIG_SENSORS_W83627HF=y
# CONFIG_SENSORS_W83627EHF is not set
# CONFIG_SENSORS_HDAPS is not setCONFIG_SENSORS_APPLESMC=yCONFIG_HWMON_DEBUG_CHIP=y
# CONFIG_THERMAL is not setCONFIG_THERMAL_HWMON=yCONFIG_WATCHDOG=yCONFIG_WATCHDOG_NOWAYOUT=y
#
# Watchdog Device Drivers
#CONFIG_SOFT_WATCHDOG=yCONFIG_TWL4030_WATCHDOG=yCONFIG_ACQUIRE_WDT=y
# CONFIG_ADVANTECH_WDT is not setCONFIG_ALIM1535_WDT=yCONFIG_ALIM7101_WDT=yCONFIG_SC520_WDT=y
# CONFIG_IB700_WDT is not setCONFIG_IBMASR=yCONFIG_WAFER_WDT=y
# CONFIG_I6300ESB_WDT is not setCONFIG_ITCO_WDT=yCONFIG_ITCO_VENDOR_SUPPORT=yCONFIG_IT8712F_WDT=yCONFIG_IT87_WDT=yCONFIG_HP_WATCHDOG=y
# CONFIG_SC1200_WDT is not set
# CONFIG_PC87413_WDT is not setCONFIG_RDC321X_WDT=y
# CONFIG_60XX_WDT is not setCONFIG_SBC8360_WDT=yCONFIG_SBC7240_WDT=yCONFIG_CPU5_WDT=yCONFIG_SMSC_SCH311X_WDT=yCONFIG_SMSC37B787_WDT=y
# CONFIG_W83627HF_WDT is not setCONFIG_W83877F_WDT=yCONFIG_W83977F_WDT=y
# CONFIG_MACHZ_WDT is not setCONFIG_SBC_EPX_C3_WATCHDOG=y
#
# PCI-based Watchdog Cards
#CONFIG_PCIPCWATCHDOG=y
# CONFIG_WDTPCI is not set
#
# USB-based Watchdog Cards
#
# CONFIG_USBPCWATCHDOG is not setCONFIG_SSB_POSSIBLE=y
#
# Sonics Silicon Backplane
#CONFIG_SSB=yCONFIG_SSB_SPROM=yCONFIG_SSB_BLOCKIO=yCONFIG_SSB_PCIHOST_POSSIBLE=yCONFIG_SSB_PCIHOST=yCONFIG_SSB_B43_PCI_BRIDGE=yCONFIG_SSB_PCMCIAHOST_POSSIBLE=y
# CONFIG_SSB_PCMCIAHOST is not setCONFIG_SSB_SILENT=yCONFIG_SSB_DRIVER_PCICORE_POSSIBLE=yCONFIG_SSB_DRIVER_PCICORE=y
#
# Multifunction device drivers
#CONFIG_MFD_CORE=y
# CONFIG_MFD_SM501 is not setCONFIG_HTC_PASIC3=yCONFIG_TPS65010=yCONFIG_TWL4030_CORE=y
# CONFIG_MFD_TMIO is not setCONFIG_PMIC_DA903X=y
# CONFIG_MFD_WM8400 is not setCONFIG_MFD_PCF50633=y
# CONFIG_PCF50633_ADC is not setCONFIG_PCF50633_GPIO=yCONFIG_AB3100_CORE=y
# CONFIG_REGULATOR is not set
# CONFIG_MEDIA_SUPPORT is not set
#
# Graphics support
#CONFIG_AGP=y
# CONFIG_AGP_ALI is not setCONFIG_AGP_ATI=yCONFIG_AGP_AMD=yCONFIG_AGP_AMD64=yCONFIG_AGP_INTEL=yCONFIG_AGP_NVIDIA=yCONFIG_AGP_SIS=yCONFIG_AGP_SWORKS=yCONFIG_AGP_VIA=yCONFIG_AGP_EFFICEON=yCONFIG_DRM=y
# CONFIG_DRM_TDFX is not setCONFIG_DRM_R128=yCONFIG_DRM_RADEON=y
# CONFIG_DRM_I810 is not set
# CONFIG_DRM_I830 is not set
# CONFIG_DRM_I915 is not setCONFIG_DRM_MGA=yCONFIG_DRM_SIS=yCONFIG_DRM_VIA=yCONFIG_DRM_SAVAGE=yCONFIG_VGASTATE=yCONFIG_VIDEO_OUTPUT_CONTROL=yCONFIG_FB=yCONFIG_FIRMWARE_EDID=yCONFIG_FB_DDC=y
# CONFIG_FB_BOOT_VESA_SUPPORT is not setCONFIG_FB_CFB_FILLRECT=yCONFIG_FB_CFB_COPYAREA=yCONFIG_FB_CFB_IMAGEBLIT=y
# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not setCONFIG_FB_SYS_FILLRECT=yCONFIG_FB_SYS_COPYAREA=yCONFIG_FB_SYS_IMAGEBLIT=yCONFIG_FB_FOREIGN_ENDIAN=yCONFIG_FB_BOTH_ENDIAN=y
# CONFIG_FB_BIG_ENDIAN is not set
# CONFIG_FB_LITTLE_ENDIAN is not setCONFIG_FB_SYS_FOPS=yCONFIG_FB_DEFERRED_IO=yCONFIG_FB_HECUBA=yCONFIG_FB_SVGALIB=y
# CONFIG_FB_MACMODES is not setCONFIG_FB_BACKLIGHT=yCONFIG_FB_MODE_HELPERS=yCONFIG_FB_TILEBLITTING=y
#
# Frame buffer hardware drivers
#
# CONFIG_FB_PM2 is not setCONFIG_FB_CYBER2000=yCONFIG_FB_ARC=y
# CONFIG_FB_IMSTT is not setCONFIG_FB_UVESA=yCONFIG_FB_N411=y
# CONFIG_FB_HGA is not set
# CONFIG_FB_S1D13XXX is not setCONFIG_FB_NVIDIA=y
# CONFIG_FB_NVIDIA_I2C is not setCONFIG_FB_NVIDIA_DEBUG=yCONFIG_FB_NVIDIA_BACKLIGHT=yCONFIG_FB_RIVA=y
# CONFIG_FB_RIVA_I2C is not setCONFIG_FB_RIVA_DEBUG=yCONFIG_FB_RIVA_BACKLIGHT=yCONFIG_FB_I810=yCONFIG_FB_I810_GTF=yCONFIG_FB_I810_I2C=y
# CONFIG_FB_LE80578 is not set
# CONFIG_FB_INTEL is not set
# CONFIG_FB_MATROX is not setCONFIG_FB_ATY128=y
# CONFIG_FB_ATY128_BACKLIGHT is not setCONFIG_FB_ATY=yCONFIG_FB_ATY_CT=y
# CONFIG_FB_ATY_GENERIC_LCD is not set
# CONFIG_FB_ATY_GX is not setCONFIG_FB_ATY_BACKLIGHT=y
# CONFIG_FB_S3 is not setCONFIG_FB_SAVAGE=yCONFIG_FB_SAVAGE_I2C=yCONFIG_FB_SAVAGE_ACCEL=y
# CONFIG_FB_SIS is not setCONFIG_FB_VIA=y
# CONFIG_FB_NEOMAGIC is not setCONFIG_FB_KYRO=yCONFIG_FB_3DFX=yCONFIG_FB_3DFX_ACCEL=y
# CONFIG_FB_3DFX_I2C is not setCONFIG_FB_VOODOO1=yCONFIG_FB_VT8623=yCONFIG_FB_TRIDENT=y
# CONFIG_FB_ARK is not set
# CONFIG_FB_PM3 is not setCONFIG_FB_CARMINE=y
# CONFIG_FB_CARMINE_DRAM_EVAL is not setCONFIG_CARMINE_DRAM_CUSTOM=yCONFIG_FB_GEODE=yCONFIG_FB_GEODE_LX=y
# CONFIG_FB_GEODE_GX is not set
# CONFIG_FB_GEODE_GX1 is not set
# CONFIG_FB_TMIO is not setCONFIG_FB_METRONOME=yCONFIG_FB_MB862XX=y
# CONFIG_FB_MB862XX_PCI_GDC is not set
# CONFIG_FB_BROADSHEET is not setCONFIG_BACKLIGHT_LCD_SUPPORT=yCONFIG_LCD_CLASS_DEVICE=y
# CONFIG_LCD_ILI9320 is not setCONFIG_LCD_PLATFORM=yCONFIG_BACKLIGHT_CLASS_DEVICE=yCONFIG_BACKLIGHT_GENERIC=y
# CONFIG_BACKLIGHT_PROGEAR is not set
# CONFIG_BACKLIGHT_DA903X is not set
# CONFIG_BACKLIGHT_MBP_NVIDIA is not setCONFIG_BACKLIGHT_SAHARA=y
#
# Display device support
#CONFIG_DISPLAY_SUPPORT=y
#
# Display hardware drivers
#
#
# Console display driver support
#CONFIG_VGA_CONSOLE=yCONFIG_VGACON_SOFT_SCROLLBACK=yCONFIG_VGACON_SOFT_SCROLLBACK_SIZE=64CONFIG_DUMMY_CONSOLE=yCONFIG_LOGO=y
# CONFIG_LOGO_LINUX_MONO is not set
# CONFIG_LOGO_LINUX_VGA16 is not setCONFIG_LOGO_LINUX_CLUT224=yCONFIG_SOUND=yCONFIG_SOUND_OSS_CORE=y
# CONFIG_SND is not setCONFIG_SOUND_PRIME=y
# CONFIG_SOUND_OSS is not setCONFIG_HID_SUPPORT=yCONFIG_HID=yCONFIG_HID_DEBUG=yCONFIG_HIDRAW=y
#
# USB Input Devices
#CONFIG_USB_HID=yCONFIG_HID_PID=y
# CONFIG_USB_HIDDEV is not setCONFIG_USB_MOUSE=y
#
# Special HID drivers
#
# CONFIG_HID_A4TECH is not setCONFIG_HID_APPLE=yCONFIG_HID_BELKIN=yCONFIG_HID_CHERRY=yCONFIG_HID_CHICONY=yCONFIG_HID_CYPRESS=yCONFIG_HID_DRAGONRISE=yCONFIG_DRAGONRISE_FF=y
# CONFIG_HID_EZKEY is not set
# CONFIG_HID_KYE is not setCONFIG_HID_GYRATION=y
# CONFIG_HID_KENSINGTON is not set
# CONFIG_HID_LOGITECH is not setCONFIG_HID_MICROSOFT=y
# CONFIG_HID_MONTEREY is not setCONFIG_HID_NTRIG=y
# CONFIG_HID_PANTHERLORD is not setCONFIG_HID_PETALYNX=yCONFIG_HID_SAMSUNG=y
# CONFIG_HID_SONY is not setCONFIG_HID_SUNPLUS=yCONFIG_HID_GREENASIA=y
# CONFIG_GREENASIA_FF is not setCONFIG_HID_SMARTJOYPLUS=y
# CONFIG_SMARTJOYPLUS_FF is not set
# CONFIG_HID_TOPSEED is not setCONFIG_HID_THRUSTMASTER=yCONFIG_THRUSTMASTER_FF=yCONFIG_HID_ZEROPLUS=yCONFIG_ZEROPLUS_FF=yCONFIG_USB_SUPPORT=yCONFIG_USB_ARCH_HAS_HCD=yCONFIG_USB_ARCH_HAS_OHCI=yCONFIG_USB_ARCH_HAS_EHCI=yCONFIG_USB=y
# CONFIG_USB_DEBUG is not setCONFIG_USB_ANNOUNCE_NEW_DEVICES=y
#
# Miscellaneous USB options
#CONFIG_USB_DEVICEFS=yCONFIG_USB_DEVICE_CLASS=yCONFIG_USB_DYNAMIC_MINORS=y
# CONFIG_USB_OTG is not setCONFIG_USB_OTG_WHITELIST=yCONFIG_USB_OTG_BLACKLIST_HUB=yCONFIG_USB_MON=yCONFIG_USB_WUSB=y
# CONFIG_USB_WUSB_CBAF is not set
#
# USB Host Controller Drivers
#CONFIG_USB_C67X00_HCD=y
# CONFIG_USB_XHCI_HCD is not setCONFIG_USB_EHCI_HCD=yCONFIG_USB_EHCI_ROOT_HUB_TT=yCONFIG_USB_EHCI_TT_NEWSCHED=yCONFIG_USB_OXU210HP_HCD=yCONFIG_USB_ISP116X_HCD=yCONFIG_USB_ISP1760_HCD=yCONFIG_USB_OHCI_HCD=yCONFIG_USB_OHCI_HCD_SSB=y
# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not setCONFIG_USB_OHCI_LITTLE_ENDIAN=yCONFIG_USB_UHCI_HCD=yCONFIG_USB_SL811_HCD=yCONFIG_USB_SL811_CS=yCONFIG_USB_R8A66597_HCD=yCONFIG_USB_HWA_HCD=y
#
# USB Device Class drivers
#CONFIG_USB_ACM=yCONFIG_USB_PRINTER=y
# CONFIG_USB_WDM is not setCONFIG_USB_TMC=y
#
# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may #
#
# also be needed; see USB_STORAGE Help for more info # CONFIG_USB_STORAGE=y # CONFIG_USB_STORAGE_DEBUG is not set CONFIG_USB_STORAGE_DATAFAB=y # CONFIG_USB_STORAGE_FREECOM is not set # CONFIG_USB_STORAGE_ISD200 is not set CONFIG_USB_STORAGE_USBAT=y CONFIG_USB_STORAGE_SDDR09=y CONFIG_USB_STORAGE_SDDR55=y # CONFIG_USB_STORAGE_JUMPSHOT is not set CONFIG_USB_STORAGE_ALAUDA=y # CONFIG_USB_STORAGE_ONETOUCH is not set CONFIG_USB_STORAGE_KARMA=y # CONFIG_USB_STORAGE_CYPRESS_ATACB is not set CONFIG_USB_LIBUSUAL=y
#
# USB Imaging devices
#CONFIG_USB_MDC800=yCONFIG_USB_MICROTEK=y
#
# USB port drivers
#
# CONFIG_USB_SERIAL is not set
#
# USB Miscellaneous drivers
#
# CONFIG_USB_EMI62 is not set
# CONFIG_USB_EMI26 is not setCONFIG_USB_ADUTUX=yCONFIG_USB_SEVSEG=yCONFIG_USB_RIO500=yCONFIG_USB_LEGOTOWER=y
# CONFIG_USB_LCD is not setCONFIG_USB_BERRY_CHARGE=yCONFIG_USB_LED=yCONFIG_USB_CYPRESS_CY7C63=y
# CONFIG_USB_CYTHERM is not setCONFIG_USB_IDMOUSE=y
# CONFIG_USB_FTDI_ELAN is not setCONFIG_USB_APPLEDISPLAY=yCONFIG_USB_SISUSBVGA=y
# CONFIG_USB_SISUSBVGA_CON is not set
# CONFIG_USB_LD is not setCONFIG_USB_TRANCEVIBRATOR=y
# CONFIG_USB_IOWARRIOR is not setCONFIG_USB_TEST=yCONFIG_USB_ISIGHTFW=yCONFIG_USB_VST=yCONFIG_USB_ATM=yCONFIG_USB_SPEEDTOUCH=y
# CONFIG_USB_CXACRU is not setCONFIG_USB_UEAGLEATM=y
# CONFIG_USB_XUSBATM is not set
#
# OTG and related infrastructure
#CONFIG_USB_OTG_UTILS=yCONFIG_USB_GPIO_VBUS=yCONFIG_NOP_USB_XCEIV=yCONFIG_UWB=yCONFIG_UWB_HWA=y
# CONFIG_UWB_WHCI is not set
# CONFIG_UWB_WLP is not setCONFIG_UWB_I1480U=yCONFIG_MMC=yCONFIG_MMC_DEBUG=y
# CONFIG_MMC_UNSAFE_RESUME is not set
#
# MMC/SD/SDIO Card Drivers
#CONFIG_MMC_BLOCK=y
# CONFIG_MMC_BLOCK_BOUNCE is not set
# CONFIG_SDIO_UART is not setCONFIG_MMC_TEST=y
#
# MMC/SD/SDIO Host Controller Drivers
#
# CONFIG_MMC_SDHCI is not setCONFIG_MMC_WBSD=yCONFIG_MMC_TIFM_SD=yCONFIG_MMC_SDRICOH_CS=y
# CONFIG_MMC_CB710 is not setCONFIG_MMC_VIA_SDMMC=y
# CONFIG_MEMSTICK is not setCONFIG_NEW_LEDS=yCONFIG_LEDS_CLASS=y
#
# LED drivers
#CONFIG_LEDS_ALIX2=yCONFIG_LEDS_PCA9532=yCONFIG_LEDS_GPIO=yCONFIG_LEDS_GPIO_PLATFORM=y
# CONFIG_LEDS_LP3944 is not set
# CONFIG_LEDS_CLEVO_MAIL is not set
# CONFIG_LEDS_PCA955X is not setCONFIG_LEDS_DA903X=yCONFIG_LEDS_BD2802=y
#
# LED Triggers
#CONFIG_LEDS_TRIGGERS=y
# CONFIG_LEDS_TRIGGER_TIMER is not setCONFIG_LEDS_TRIGGER_HEARTBEAT=y
# CONFIG_LEDS_TRIGGER_BACKLIGHT is not setCONFIG_LEDS_TRIGGER_GPIO=yCONFIG_LEDS_TRIGGER_DEFAULT_ON=y
#
# iptables trigger is under Netfilter config (LED target) # CONFIG_ACCESSIBILITY=y # CONFIG_A11Y_BRAILLE_CONSOLE is not set # CONFIG_INFINIBAND is not set CONFIG_EDAC=y
#
# Reporting subsystems
#CONFIG_EDAC_DEBUG=yCONFIG_EDAC_DEBUG_VERBOSE=yCONFIG_EDAC_MM_EDAC=yCONFIG_EDAC_AMD76X=yCONFIG_EDAC_E7XXX=yCONFIG_EDAC_E752X=y
# CONFIG_EDAC_I82875P is not setCONFIG_EDAC_I82975X=yCONFIG_EDAC_I3000=yCONFIG_EDAC_X38=yCONFIG_EDAC_I5400=y
# CONFIG_EDAC_I82860 is not setCONFIG_EDAC_R82600=yCONFIG_EDAC_I5000=yCONFIG_EDAC_I5100=yCONFIG_RTC_LIB=yCONFIG_RTC_CLASS=yCONFIG_RTC_HCTOSYS=yCONFIG_RTC_HCTOSYS_DEVICE="rtc0"CONFIG_RTC_DEBUG=y
#
# RTC interfaces
#CONFIG_RTC_INTF_SYSFS=yCONFIG_RTC_INTF_PROC=yCONFIG_RTC_INTF_DEV=yCONFIG_RTC_INTF_DEV_UIE_EMUL=y
# CONFIG_RTC_DRV_TEST is not set
#
# I2C RTC drivers
#
# CONFIG_RTC_DRV_DS1307 is not setCONFIG_RTC_DRV_DS1374=y
# CONFIG_RTC_DRV_DS1672 is not setCONFIG_RTC_DRV_MAX6900=yCONFIG_RTC_DRV_RS5C372=yCONFIG_RTC_DRV_ISL1208=yCONFIG_RTC_DRV_X1205=y
# CONFIG_RTC_DRV_PCF8563 is not setCONFIG_RTC_DRV_PCF8583=y
# CONFIG_RTC_DRV_M41T80 is not setCONFIG_RTC_DRV_TWL4030=yCONFIG_RTC_DRV_S35390A=yCONFIG_RTC_DRV_FM3130=y
# CONFIG_RTC_DRV_RX8581 is not setCONFIG_RTC_DRV_RX8025=y
#
# SPI RTC drivers
#
#
# Platform RTC drivers
#
# CONFIG_RTC_DRV_CMOS is not setCONFIG_RTC_DRV_DS1286=y
# CONFIG_RTC_DRV_DS1511 is not setCONFIG_RTC_DRV_DS1553=y
# CONFIG_RTC_DRV_DS1742 is not set
# CONFIG_RTC_DRV_STK17TA8 is not setCONFIG_RTC_DRV_M48T86=yCONFIG_RTC_DRV_M48T35=y
# CONFIG_RTC_DRV_M48T59 is not setCONFIG_RTC_DRV_BQ4802=y
# CONFIG_RTC_DRV_V3020 is not set
# CONFIG_RTC_DRV_PCF50633 is not set
#
# on-CPU RTC drivers
#CONFIG_DMADEVICES=y
#
# DMA Devices
#
# CONFIG_INTEL_IOATDMA is not setCONFIG_AUXDISPLAY=yCONFIG_UIO=yCONFIG_UIO_CIF=yCONFIG_UIO_PDRV=yCONFIG_UIO_PDRV_GENIRQ=yCONFIG_UIO_SMX=yCONFIG_UIO_AEC=y
# CONFIG_UIO_SERCOS3 is not set
#
# TI VLYNQ
#
# CONFIG_X86_PLATFORM_DEVICES is not set
#
# Firmware Drivers
#
# CONFIG_EDD is not setCONFIG_FIRMWARE_MEMMAP=yCONFIG_DELL_RBU=yCONFIG_DCDBAS=yCONFIG_DMIID=y
# CONFIG_ISCSI_IBFT_FIND is not set
#
# File systems
#CONFIG_EXT2_FS=yCONFIG_EXT2_FS_XATTR=yCONFIG_EXT2_FS_POSIX_ACL=yCONFIG_EXT2_FS_SECURITY=yCONFIG_EXT2_FS_XIP=yCONFIG_EXT3_FS=yCONFIG_EXT3_DEFAULTS_TO_ORDERED=yCONFIG_EXT3_FS_XATTR=yCONFIG_EXT3_FS_POSIX_ACL=yCONFIG_EXT3_FS_SECURITY=y
# CONFIG_EXT4_FS is not setCONFIG_FS_XIP=yCONFIG_JBD=yCONFIG_JBD_DEBUG=yCONFIG_JBD2=y
# CONFIG_JBD2_DEBUG is not setCONFIG_FS_MBCACHE=y
# CONFIG_REISERFS_FS is not setCONFIG_JFS_FS=y
# CONFIG_JFS_POSIX_ACL is not setCONFIG_JFS_SECURITY=yCONFIG_JFS_DEBUG=yCONFIG_JFS_STATISTICS=yCONFIG_FS_POSIX_ACL=yCONFIG_XFS_FS=y
# CONFIG_XFS_QUOTA is not setCONFIG_XFS_POSIX_ACL=yCONFIG_XFS_RT=y
# CONFIG_XFS_DEBUG is not setCONFIG_OCFS2_FS=y
# CONFIG_OCFS2_FS_O2CB is not set
# CONFIG_OCFS2_FS_STATS is not setCONFIG_OCFS2_DEBUG_MASKLOG=yCONFIG_OCFS2_DEBUG_FS=yCONFIG_OCFS2_FS_POSIX_ACL=y
# CONFIG_BTRFS_FS is not setCONFIG_FILE_LOCKING=yCONFIG_FSNOTIFY=yCONFIG_DNOTIFY=yCONFIG_INOTIFY=yCONFIG_INOTIFY_USER=yCONFIG_QUOTA=yCONFIG_QUOTA_NETLINK_INTERFACE=yCONFIG_PRINT_QUOTA_WARNING=yCONFIG_QUOTA_TREE=yCONFIG_QFMT_V1=yCONFIG_QFMT_V2=yCONFIG_QUOTACTL=yCONFIG_AUTOFS_FS=y
# CONFIG_AUTOFS4_FS is not set
# CONFIG_FUSE_FS is not set
#
# Caches
#
# CONFIG_FSCACHE is not set
#
# CD-ROM/DVD Filesystems
#
# CONFIG_ISO9660_FS is not set
# CONFIG_UDF_FS is not set
#
# DOS/FAT/NT Filesystems
#CONFIG_FAT_FS=yCONFIG_MSDOS_FS=y
# CONFIG_VFAT_FS is not setCONFIG_FAT_DEFAULT_CODEPAGE=437CONFIG_NTFS_FS=yCONFIG_NTFS_DEBUG=yCONFIG_NTFS_RW=y
#
# Pseudo filesystems
#CONFIG_PROC_FS=yCONFIG_PROC_KCORE=yCONFIG_PROC_VMCORE=y
# CONFIG_PROC_SYSCTL is not set
# CONFIG_PROC_PAGE_MONITOR is not setCONFIG_SYSFS=y
# CONFIG_TMPFS is not setCONFIG_HUGETLBFS=yCONFIG_HUGETLB_PAGE=yCONFIG_CONFIGFS_FS=y
# CONFIG_MISC_FILESYSTEMS is not setCONFIG_NETWORK_FILESYSTEMS=yCONFIG_NFS_FS=yCONFIG_NFS_V3=yCONFIG_NFS_V3_ACL=yCONFIG_NFS_V4=yCONFIG_NFS_V4_1=yCONFIG_NFSD=yCONFIG_NFSD_V2_ACL=yCONFIG_NFSD_V3=yCONFIG_NFSD_V3_ACL=yCONFIG_NFSD_V4=yCONFIG_LOCKD=yCONFIG_LOCKD_V4=yCONFIG_EXPORTFS=yCONFIG_NFS_ACL_SUPPORT=yCONFIG_NFS_COMMON=yCONFIG_SUNRPC=yCONFIG_SUNRPC_GSS=yCONFIG_RPCSEC_GSS_KRB5=y
# CONFIG_RPCSEC_GSS_SPKM3 is not setCONFIG_SMB_FS=y
# CONFIG_SMB_NLS_DEFAULT is not set
# CONFIG_CIFS is not setCONFIG_NCP_FS=yCONFIG_NCPFS_PACKET_SIGNING=yCONFIG_NCPFS_IOCTL_LOCKING=yCONFIG_NCPFS_STRONG=y
# CONFIG_NCPFS_NFS_NS is not set
# CONFIG_NCPFS_OS2_NS is not set
# CONFIG_NCPFS_SMALLDOS is not setCONFIG_NCPFS_NLS=y
# CONFIG_NCPFS_EXTRAS is not set
# CONFIG_CODA_FS is not setCONFIG_AFS_FS=y
# CONFIG_AFS_DEBUG is not set
#
# Partition Types
#CONFIG_PARTITION_ADVANCED=yCONFIG_ACORN_PARTITION=y
# CONFIG_ACORN_PARTITION_CUMANA is not setCONFIG_ACORN_PARTITION_EESOX=yCONFIG_ACORN_PARTITION_ICS=y
# CONFIG_ACORN_PARTITION_ADFS is not setCONFIG_ACORN_PARTITION_POWERTEC=y
# CONFIG_ACORN_PARTITION_RISCIX is not setCONFIG_OSF_PARTITION=yCONFIG_AMIGA_PARTITION=yCONFIG_ATARI_PARTITION=yCONFIG_MAC_PARTITION=yCONFIG_MSDOS_PARTITION=yCONFIG_BSD_DISKLABEL=yCONFIG_MINIX_SUBPARTITION=y
# CONFIG_SOLARIS_X86_PARTITION is not setCONFIG_UNIXWARE_DISKLABEL=yCONFIG_LDM_PARTITION=y
# CONFIG_LDM_DEBUG is not setCONFIG_SGI_PARTITION=y
# CONFIG_ULTRIX_PARTITION is not setCONFIG_SUN_PARTITION=yCONFIG_KARMA_PARTITION=yCONFIG_EFI_PARTITION=y
# CONFIG_SYSV68_PARTITION is not setCONFIG_NLS=yCONFIG_NLS_DEFAULT="iso8859-1"CONFIG_NLS_CODEPAGE_437=yCONFIG_NLS_CODEPAGE_737=yCONFIG_NLS_CODEPAGE_775=yCONFIG_NLS_CODEPAGE_850=yCONFIG_NLS_CODEPAGE_852=yCONFIG_NLS_CODEPAGE_855=yCONFIG_NLS_CODEPAGE_857=y
# CONFIG_NLS_CODEPAGE_860 is not setCONFIG_NLS_CODEPAGE_861=y
# CONFIG_NLS_CODEPAGE_862 is not setCONFIG_NLS_CODEPAGE_863=y
# CONFIG_NLS_CODEPAGE_864 is not setCONFIG_NLS_CODEPAGE_865=y
# CONFIG_NLS_CODEPAGE_866 is not setCONFIG_NLS_CODEPAGE_869=y
# CONFIG_NLS_CODEPAGE_936 is not setCONFIG_NLS_CODEPAGE_950=y
# CONFIG_NLS_CODEPAGE_932 is not setCONFIG_NLS_CODEPAGE_949=yCONFIG_NLS_CODEPAGE_874=yCONFIG_NLS_ISO8859_8=yCONFIG_NLS_CODEPAGE_1250=y
# CONFIG_NLS_CODEPAGE_1251 is not setCONFIG_NLS_ASCII=y
# CONFIG_NLS_ISO8859_1 is not setCONFIG_NLS_ISO8859_2=y
# CONFIG_NLS_ISO8859_3 is not setCONFIG_NLS_ISO8859_4=y
# CONFIG_NLS_ISO8859_5 is not setCONFIG_NLS_ISO8859_6=yCONFIG_NLS_ISO8859_7=yCONFIG_NLS_ISO8859_9=yCONFIG_NLS_ISO8859_13=yCONFIG_NLS_ISO8859_14=yCONFIG_NLS_ISO8859_15=yCONFIG_NLS_KOI8_R=y
# CONFIG_NLS_KOI8_U is not setCONFIG_NLS_UTF8=y
# CONFIG_DLM is not set
#
# Kernel hacking
#CONFIG_TRACE_IRQFLAGS_SUPPORT=yCONFIG_PRINTK_TIME=yCONFIG_ALLOW_WARNINGS=y
# CONFIG_ENABLE_WARN_DEPRECATED is not setCONFIG_ENABLE_MUST_CHECK=yCONFIG_FRAME_WARN=1024CONFIG_MAGIC_SYSRQ=yCONFIG_UNUSED_SYMBOLS=yCONFIG_DEBUG_FS=y
# CONFIG_HEADERS_CHECK is not set
# CONFIG_DEBUG_SECTION_MISMATCH is not setCONFIG_DEBUG_KERNEL=y
# CONFIG_DEBUG_SHIRQ is not set
# CONFIG_DETECT_SOFTLOCKUP is not setCONFIG_DETECT_HUNG_TASK=yCONFIG_BOOTPARAM_HUNG_TASK_PANIC=yCONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=1CONFIG_SCHED_DEBUG=yCONFIG_SCHEDSTATS=yCONFIG_TIMER_STATS=y
# CONFIG_DEBUG_OBJECTS is not set
# CONFIG_DEBUG_RT_MUTEXES is not set
# CONFIG_RT_MUTEX_TESTER is not setCONFIG_DEBUG_SPINLOCK=yCONFIG_DEBUG_MUTEXES=yCONFIG_DEBUG_LOCK_ALLOC=yCONFIG_PROVE_LOCKING=yCONFIG_LOCKDEP=yCONFIG_LOCK_STAT=yCONFIG_DEBUG_LOCKDEP=yCONFIG_TRACE_IRQFLAGS=y
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not setCONFIG_STACKTRACE=y
# CONFIG_DEBUG_HIGHMEM is not setCONFIG_DEBUG_BUGVERBOSE=yCONFIG_DEBUG_VM=yCONFIG_DEBUG_VIRTUAL=yCONFIG_DEBUG_WRITECOUNT=yCONFIG_DEBUG_MEMORY_INIT=y
# CONFIG_DEBUG_LIST is not setCONFIG_DEBUG_SG=yCONFIG_DEBUG_NOTIFIERS=yCONFIG_ARCH_WANT_FRAME_POINTERS=yCONFIG_FRAME_POINTER=y
# CONFIG_BOOT_PRINTK_DELAY is not set
# CONFIG_RCU_TORTURE_TEST is not setCONFIG_RCU_CPU_STALL_DETECTOR=y
# CONFIG_BACKTRACE_SELF_TEST is not set
# CONFIG_FAULT_INJECTION is not setCONFIG_LATENCYTOP=yCONFIG_SYSCTL_SYSCALL_CHECK=yCONFIG_DEBUG_PAGEALLOC=yCONFIG_USER_STACKTRACE_SUPPORT=yCONFIG_NOP_TRACER=yCONFIG_HAVE_FUNCTION_TRACER=yCONFIG_HAVE_FUNCTION_GRAPH_TRACER=yCONFIG_HAVE_FUNCTION_GRAPH_FP_TEST=yCONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=yCONFIG_HAVE_DYNAMIC_FTRACE=yCONFIG_HAVE_FTRACE_MCOUNT_RECORD=yCONFIG_HAVE_FTRACE_SYSCALLS=yCONFIG_TRACER_MAX_TRACE=yCONFIG_RING_BUFFER=yCONFIG_EVENT_TRACING=yCONFIG_CONTEXT_SWITCH_TRACER=yCONFIG_TRACING=yCONFIG_GENERIC_TRACER=yCONFIG_TRACING_SUPPORT=yCONFIG_FTRACE=yCONFIG_FUNCTION_TRACER=y
# CONFIG_IRQSOFF_TRACER is not set
# CONFIG_SYSPROF_TRACER is not setCONFIG_SCHED_TRACER=yCONFIG_FTRACE_SYSCALLS=yCONFIG_BOOT_TRACER=yCONFIG_BRANCH_PROFILE_NONE=y
# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
# CONFIG_PROFILE_ALL_BRANCHES is not set
# CONFIG_POWER_TRACER is not setCONFIG_KSYM_TRACER=yCONFIG_PROFILE_KSYM_TRACER=yCONFIG_STACK_TRACER=y
# CONFIG_KMEMTRACE is not set
# CONFIG_WORKQUEUE_TRACER is not setCONFIG_BLK_DEV_IO_TRACE=y
# CONFIG_DYNAMIC_FTRACE is not setCONFIG_FUNCTION_PROFILER=yCONFIG_FTRACE_SELFTEST=yCONFIG_FTRACE_STARTUP_TEST=y
# CONFIG_MMIOTRACE is not set
# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not setCONFIG_FIREWIRE_OHCI_REMOTE_DMA=y
# CONFIG_DYNAMIC_DEBUG is not set
# CONFIG_DMA_API_DEBUG is not set
# CONFIG_SAMPLES is not setCONFIG_HAVE_ARCH_KGDB=yCONFIG_KGDB=y
# CONFIG_KGDB_SERIAL_CONSOLE is not set
# CONFIG_KGDB_TESTS is not setCONFIG_HAVE_ARCH_KMEMCHECK=yCONFIG_STRICT_DEVMEM=yCONFIG_X86_VERBOSE_BOOTUP=yCONFIG_EARLY_PRINTK=y
# CONFIG_EARLY_PRINTK_DBGP is not setCONFIG_DEBUG_STACKOVERFLOW=yCONFIG_DEBUG_STACK_USAGE=yCONFIG_DEBUG_PER_CPU_MAPS=yCONFIG_X86_PTDUMP=yCONFIG_DEBUG_RODATA=yCONFIG_DEBUG_RODATA_TEST=y
# CONFIG_4KSTACKS is not set
# CONFIG_DOUBLEFAULT is not setCONFIG_IOMMU_STRESS=yCONFIG_HAVE_MMIOTRACE_SUPPORT=yCONFIG_IO_DELAY_TYPE_0X80=0CONFIG_IO_DELAY_TYPE_0XED=1CONFIG_IO_DELAY_TYPE_UDELAY=2CONFIG_IO_DELAY_TYPE_NONE=3
# CONFIG_IO_DELAY_0X80 is not set
# CONFIG_IO_DELAY_0XED is not set
# CONFIG_IO_DELAY_UDELAY is not setCONFIG_IO_DELAY_NONE=yCONFIG_DEFAULT_IO_DELAY_TYPE=3
# CONFIG_DEBUG_BOOT_PARAMS is not set
# CONFIG_CPA_DEBUG is not setCONFIG_OPTIMIZE_INLINING=y
#
# Security options
#CONFIG_KEYS=y
# CONFIG_KEYS_DEBUG_PROC_KEYS is not setCONFIG_SECURITY=yCONFIG_SECURITYFS=yCONFIG_SECURITY_NETWORK=y
# CONFIG_SECURITY_NETWORK_XFRM is not setCONFIG_SECURITY_PATH=y
# CONFIG_SECURITY_FILE_CAPABILITIES is not setCONFIG_SECURITY_TOMOYO=yCONFIG_CRYPTO=y
#
# Crypto core or helper
#CONFIG_CRYPTO_FIPS=yCONFIG_CRYPTO_ALGAPI=yCONFIG_CRYPTO_ALGAPI2=yCONFIG_CRYPTO_AEAD=yCONFIG_CRYPTO_AEAD2=yCONFIG_CRYPTO_BLKCIPHER=yCONFIG_CRYPTO_BLKCIPHER2=yCONFIG_CRYPTO_HASH=yCONFIG_CRYPTO_HASH2=yCONFIG_CRYPTO_RNG=yCONFIG_CRYPTO_RNG2=yCONFIG_CRYPTO_PCOMP=yCONFIG_CRYPTO_MANAGER=yCONFIG_CRYPTO_MANAGER2=yCONFIG_CRYPTO_GF128MUL=yCONFIG_CRYPTO_NULL=yCONFIG_CRYPTO_WORKQUEUE=y
# CONFIG_CRYPTO_CRYPTD is not setCONFIG_CRYPTO_AUTHENC=y
#
# Authenticated Encryption with Associated Data
#CONFIG_CRYPTO_CCM=yCONFIG_CRYPTO_GCM=yCONFIG_CRYPTO_SEQIV=y
#
# Block modes
#CONFIG_CRYPTO_CBC=yCONFIG_CRYPTO_CTR=yCONFIG_CRYPTO_CTS=yCONFIG_CRYPTO_ECB=y
# CONFIG_CRYPTO_LRW is not setCONFIG_CRYPTO_PCBC=y
# CONFIG_CRYPTO_XTS is not set
#
# Hash modes
#CONFIG_CRYPTO_HMAC=yCONFIG_CRYPTO_XCBC=y
#
# Digest
#CONFIG_CRYPTO_CRC32C=yCONFIG_CRYPTO_CRC32C_INTEL=yCONFIG_CRYPTO_MD4=yCONFIG_CRYPTO_MD5=yCONFIG_CRYPTO_MICHAEL_MIC=yCONFIG_CRYPTO_RMD128=y
# CONFIG_CRYPTO_RMD160 is not setCONFIG_CRYPTO_RMD256=y
# CONFIG_CRYPTO_RMD320 is not setCONFIG_CRYPTO_SHA1=yCONFIG_CRYPTO_SHA256=y
# CONFIG_CRYPTO_SHA512 is not setCONFIG_CRYPTO_TGR192=yCONFIG_CRYPTO_WP512=y
#
# Ciphers
#CONFIG_CRYPTO_AES=yCONFIG_CRYPTO_AES_586=yCONFIG_CRYPTO_ANUBIS=yCONFIG_CRYPTO_ARC4=yCONFIG_CRYPTO_BLOWFISH=y
# CONFIG_CRYPTO_CAMELLIA is not set
# CONFIG_CRYPTO_CAST5 is not setCONFIG_CRYPTO_CAST6=yCONFIG_CRYPTO_DES=yCONFIG_CRYPTO_FCRYPT=yCONFIG_CRYPTO_KHAZAD=yCONFIG_CRYPTO_SALSA20=yCONFIG_CRYPTO_SALSA20_586=y
# CONFIG_CRYPTO_SEED is not setCONFIG_CRYPTO_SERPENT=yCONFIG_CRYPTO_TEA=y
# CONFIG_CRYPTO_TWOFISH is not set
# CONFIG_CRYPTO_TWOFISH_586 is not set
#
# Compression
#CONFIG_CRYPTO_DEFLATE=yCONFIG_CRYPTO_ZLIB=y
# CONFIG_CRYPTO_LZO is not set
#
# Random Number Generation
#CONFIG_CRYPTO_ANSI_CPRNG=y
# CONFIG_CRYPTO_HW is not setCONFIG_HAVE_KVM=yCONFIG_HAVE_KVM_IRQCHIP=y
# CONFIG_VIRTUALIZATION is not setCONFIG_VIRTIO=yCONFIG_VIRTIO_RING=yCONFIG_BINARY_PRINTF=y
#
# Library routines
#CONFIG_BITREVERSE=yCONFIG_GENERIC_FIND_FIRST_BIT=yCONFIG_GENERIC_FIND_NEXT_BIT=yCONFIG_GENERIC_FIND_LAST_BIT=yCONFIG_CRC_CCITT=yCONFIG_CRC16=yCONFIG_CRC_T10DIF=yCONFIG_CRC_ITU_T=yCONFIG_CRC32=y
# CONFIG_CRC7 is not setCONFIG_LIBCRC32C=yCONFIG_ZLIB_INFLATE=yCONFIG_ZLIB_DEFLATE=yCONFIG_DECOMPRESS_GZIP=yCONFIG_DECOMPRESS_BZIP2=yCONFIG_HAS_IOMEM=yCONFIG_HAS_IOPORT=yCONFIG_HAS_DMA=yCONFIG_CHECK_SIGNATURE=yCONFIG_CPUMASK_OFFSTACK=yCONFIG_NLATTR=yCONFIG_FORCE_SUCCESSFUL_BUILD=yCONFIG_FORCE_MINIMAL_CONFIG=yCONFIG_FORCE_MINIMAL_CONFIG_PHYS=yCONFIG_X86_32_ALWAYS_ON=y
[ 0.000000] Linux version 2.6.31-rc6-tip (mingo@sirius) (gcc version 4.3.2 20081105 (Red Hat 4.3.2-7) (GCC) ) #4534 SMP Sat Aug 15 11:14:49 CEST 2009 [ 0.000000] KERNEL supported cpus: [ 0.000000] Intel GenuineIntel [ 0.000000] AMD AuthenticAMD [ 0.000000] NSC Geode by NSC [ 0.000000] Cyrix CyrixInstead [ 0.000000] Transmeta GenuineTMx86 [ 0.000000] Transmeta TransmetaCPU [ 0.000000] UMC UMC UMC UMC [ 0.000000] BIOS-provided physical RAM map: [ 0.000000] BIOS-e820: 0000000000000000 - 000000000009f800 (usable) [ 0.000000] BIOS-e820: 000000000009f800 - 00000000000a0000 (reserved) [ 0.000000] BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved) [ 0.000000] BIOS-e820: 0000000000100000 - 000000003fff0000 (usable) [ 0.000000] BIOS-e820: 000000003fff0000 - 000000003fff3000 (ACPI NVS) [ 0.000000] BIOS-e820: 000000003fff3000 - 0000000040000000 (ACPI data) [ 0.000000] BIOS-e820: 00000000e0000000 - 00000000f0000000 (reserved) [ 0.000000] BIOS-e820: 00000000fec00000 - 0000000100000000 (reserved) [ 0.000000] console [earlyser0] enabled [ 0.000000] debug: ignoring loglevel setting. [ 0.000000] DMI 2.3 present. [ 0.000000] Phoenix BIOS detected: BIOS may corrupt low RAM, working around it. [ 0.000000] e820 update range: 0000000000000000 - 0000000000010000 (usable) ==> (reserved) [ 0.000000] last_pfn = 0x3fff0 max_arch_pfn = 0x1000000 [ 0.000000] Scanning 0 areas for low memory corruption [ 0.000000] modified physical RAM map: [ 0.000000] modified: 0000000000000000 - 0000000000010000 (reserved) [ 0.000000] modified: 0000000000010000 - 000000000009f800 (usable) [ 0.000000] modified: 000000000009f800 - 00000000000a0000 (reserved) [ 0.000000] modified: 00000000000f0000 - 0000000000100000 (reserved) [ 0.000000] modified: 0000000000100000 - 000000003fff0000 (usable) [ 0.000000] modified: 000000003fff0000 - 000000003fff3000 (ACPI NVS) [ 0.000000] modified: 000000003fff3000 - 0000000040000000 (ACPI data) [ 0.000000] modified: 00000000e0000000 - 00000000f0000000 (reserved) [ 0.000000] modified: 00000000fec00000 - 0000000100000000 (reserved) [ 0.000000] initial memory mapped : 0 - 02c00000 [ 0.000000] init_memory_mapping: 0000000000000000-00000000377fe000 [ 0.000000] NX (Execute Disable) protection: active [ 0.000000] 0000000000 - 00377fe000 page 4k [ 0.000000] kernel direct mapping tables up to 377fe000 @ 100000-2c1000 [ 0.000000] Scan SMP from c0000000 for 1024 bytes. [ 0.000000] Scan SMP from c009fc00 for 1024 bytes. [ 0.000000] Scan SMP from c00f0000 for 65536 bytes. [ 0.000000] found SMP MP-table at [c00f5680] f5680 [ 0.000000] Intel MultiProcessor Specification v1.4 [ 0.000000] Virtual Wire compatibility mode. [ 0.000000] mpc: f1400-f152c [ 0.000000] MPTABLE: OEM ID: OEM00000 [ 0.000000] MPTABLE: Product ID: PROD00000000 [ 0.000000] MPTABLE: APIC at: 0xFEE00000 [ 0.000000] Warning! Not a NUMA-Q system! [ 0.000000] NUMA - single node, flat memory mode [ 0.000000] Node: 0, start_pfn: 0, end_pfn: 3fff0 [ 0.000000] Setting physnode_map array to node 0 for pfns: [ 0.000000] 0 4000 8000 c000 10000 14000 18000 1c000 20000 24000 28000 2c000 30000 34000 38000 3c000 [ 0.000000] node 0 pfn: [0 - 3fff0] [ 0.000000] Reserving 4096 pages of KVA for lmem_map of node 0 at 3ee00 [ 0.000000] remove_active_range (0, 257536, 261632) [ 0.000000] Reserving total of 1000 pages for numa KVA remap [ 0.000000] kva_start_pfn ~ 36600 max_low_pfn ~ 377fe [ 0.000000] max_pfn = 3fff0 [ 0.000000] 135MB HIGHMEM available. [ 0.000000] 887MB LOWMEM available. [ 0.000000] max_low_pfn = 377fe, highstart_pfn = 377fe [ 0.000000] Low memory ends at vaddr f77fe000 [ 0.000000] node 0 will remap to vaddr f6600000 - f7600000 [ 0.000000] allocate_pgdat: node 0 NODE_DATA f6600000 [ 0.000000] remap_numa_kva: node 0 [ 0.000000] remap_numa_kva: f6600000 to pfn 0003ee00 [ 0.000000] remap_numa_kva: f6800000 to pfn 0003f000 [ 0.000000] remap_numa_kva: f6a00000 to pfn 0003f200 [ 0.000000] remap_numa_kva: f6c00000 to pfn 0003f400 [ 0.000000] remap_numa_kva: f6e00000 to pfn 0003f600 [ 0.000000] remap_numa_kva: f7000000 to pfn 0003f800 [ 0.000000] remap_numa_kva: f7200000 to pfn 0003fa00 [ 0.000000] remap_numa_kva: f7400000 to pfn 0003fc00 [ 0.000000] High memory starts at vaddr f77fe000 [ 0.000000] mapped low ram: 0 - 377fe000 [ 0.000000] low ram: 0 - 377fe000 [ 0.000000] node 0 low ram: 00000000 - 377fe000 [ 0.000000] node 0 bootmap 00010000 - 00016f00 [ 0.000000] (10 early reservations) ==> bootmem [0000000000 - 00377fe000] [ 0.000000] #0 [0000000000 - 0000001000] BIOS data page ==> [0000000000 - 0000001000] [ 0.000000] #1 [0000001000 - 0000002000] EX TRAMPOLINE ==> [0000001000 - 0000002000] [ 0.000000] #2 [0000006000 - 0000007000] TRAMPOLINE ==> [0000006000 - 0000007000] [ 0.000000] #3 [0001000000 - 000289458c] TEXT DATA BSS ==> [0001000000 - 000289458c] [ 0.000000] #4 [000009f800 - 0000100000] BIOS reserved ==> [000009f800 - 0000100000] [ 0.000000] #5 [0002895000 - 00028ab149] BRK ==> [0002895000 - 00028ab149] [ 0.000000] #6 [0000100000 - 00002a9000] PGTABLE ==> [0000100000 - 00002a9000] [ 0.000000] #7 [003ee00000 - 003fe00000] KVA RAM [ 0.000000] #8 [0036600000 - 0037600000] KVA PG ==> [0036600000 - 0037600000] [ 0.000000] #9 [0000010000 - 0000017000] BOOTMAP ==> [0000010000 - 0000017000] [ 0.000000] Scan SMP from c0000000 for 1024 bytes. [ 0.000000] Scan SMP from c009fc00 for 1024 bytes. [ 0.000000] Scan SMP from c00f0000 for 65536 bytes. [ 0.000000] found SMP MP-table at [c00f5680] f5680 [ 0.000000] mpc: f1400-f152c [ 0.000000] Zone PFN ranges: [ 0.000000] DMA 0x00000010 -> 0x00001000 [ 0.000000] Normal 0x00001000 -> 0x000377fe [ 0.000000] HighMem 0x000377fe -> 0x0003fff0 [ 0.000000] Movable zone start PFN for each node [ 0.000000] early_node_map[3] active PFN ranges [ 0.000000] 0: 0x00000010 -> 0x0000009f [ 0.000000] 0: 0x00000100 -> 0x0003ee00 [ 0.000000] 0: 0x0003fe00 -> 0x0003fff0 [ 0.000000] On node 0 totalpages: 257919 [ 0.000000] free_area_init_node: node 0, pgdat f6600000, node_mem_map f66023c0 [ 0.000000] DMA zone: 60 pages used for memmap [ 0.000000] DMA zone: 0 pages reserved [ 0.000000] DMA zone: 3923 pages, LIFO batch:0 [ 0.000000] Normal zone: 3270 pages used for memmap [ 0.000000] Normal zone: 219960 pages, LIFO batch:31 [ 0.000000] HighMem zone: 510 pages used for memmap [ 0.000000] HighMem zone: 30196 pages, LIFO batch:7 [ 0.000000] Using APIC driver default [ 0.000000] Intel MultiProcessor Specification v1.4 [ 0.000000] Virtual Wire compatibility mode. [ 0.000000] mpc: f1400-f152c [ 0.000000] MPTABLE: OEM ID: OEM00000 [ 0.000000] MPTABLE: Product ID: PROD00000000 [ 0.000000] MPTABLE: APIC at: 0xFEE00000 [ 0.000000] Warning! Not a NUMA-Q system! [ 0.000000] Processor #0 (Bootup-CPU) [ 0.000000] Processor #1 [ 0.000000] Bus #0 is PCI [ 0.000000] Bus #1 is PCI [ 0.000000] Bus #2 is PCI [ 0.000000] Bus #3 is PCI [ 0.000000] Bus #4 is PCI [ 0.000000] Bus #5 is PCI [ 0.000000] Bus #6 is ISA [ 0.000000] I/O APIC #2 Version 17 at 0xFEC00000. [ 0.000000] Int: type 0, pol 3, trig 3, bus 00, IRQ 28, APIC ID 2, APIC INT 0b [ 0.000000] Int: type 0, pol 3, trig 3, bus 00, IRQ 10, APIC ID 2, APIC INT 03 [ 0.000000] Int: type 0, pol 3, trig 3, bus 01, IRQ 00, APIC ID 2, APIC INT 05 [ 0.000000] Int: type 0, pol 3, trig 3, bus 05, IRQ 1c, APIC ID 2, APIC INT 0b [ 0.000000] Int: type 3, pol 0, trig 0, bus 06, IRQ 00, APIC ID 2, APIC INT 00 [ 0.000000] Int: type 0, pol 0, trig 0, bus 06, IRQ 01, APIC ID 2, APIC INT 01 [ 0.000000] Int: type 0, pol 0, trig 0, bus 06, IRQ 00, APIC ID 2, APIC INT 02 [ 0.000000] Int: type 0, pol 0, trig 0, bus 06, IRQ 04, APIC ID 2, APIC INT 04 [ 0.000000] Int: type 0, pol 0, trig 0, bus 06, IRQ 06, APIC ID 2, APIC INT 06 [ 0.000000] Int: type 0, pol 0, trig 0, bus 06, IRQ 07, APIC ID 2, APIC INT 07 [ 0.000000] Int: type 0, pol 1, trig 1, bus 06, IRQ 08, APIC ID 2, APIC INT 08 [ 0.000000] Int: type 0, pol 0, trig 0, bus 06, IRQ 09, APIC ID 2, APIC INT 09 [ 0.000000] Int: type 0, pol 0, trig 0, bus 06, IRQ 0a, APIC ID 2, APIC INT 0a [ 0.000000] Int: type 0, pol 0, trig 0, bus 06, IRQ 0c, APIC ID 2, APIC INT 0c [ 0.000000] Int: type 0, pol 0, trig 0, bus 06, IRQ 0d, APIC ID 2, APIC INT 0d [ 0.000000] Int: type 0, pol 0, trig 0, bus 06, IRQ 0e, APIC ID 2, APIC INT 0e [ 0.000000] Int: type 0, pol 0, trig 0, bus 06, IRQ 0f, APIC ID 2, APIC INT 0f [ 0.000000] Lint: type 3, pol 0, trig 0, bus 00, IRQ 00, APIC ID ff, APIC LINT 00 [ 0.000000] Lint: type 1, pol 0, trig 0, bus 00, IRQ 00, APIC ID ff, APIC LINT 01 [ 0.000000] Enabling APIC mode: Flat. Using 1 I/O APICs [ 0.000000] Processors: 2 [ 0.000000] SMP: Allowing 2 CPUs, 0 hotplug CPUs [ 0.000000] mapped APIC to ffffb000 (fee00000) [ 0.000000] mapped IOAPIC to ffffa000 (fec00000) [ 0.000000] nr_irqs_gsi: 24 [ 0.000000] Allocating PCI resources starting at 40000000 (gap: 40000000:a0000000) [ 0.000000] NR_CPUS:32 nr_cpumask_bits:2 nr_cpu_ids:2 nr_node_ids:16 [ 0.000000] PERCPU: Embedded 333 pages at c28bc000, static data 1350492 bytes [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 254079 [ 0.000000] Policy zone: HighMem [ 0.000000] Kernel command line: root=/dev/sda1 earlyprintk=serial,ttyS0,115200,keep console=tty debug initcall_debug enforcing=0 apic=verbose ignore_loglevel sysrq_always_enabled selinux=0 nmi_watchdog=0 3 panic=1 [ 0.000000] debug: sysrq always enabled. [ 0.000000] PID hash table entries: 4096 (order: 12, 16384 bytes) [ 0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes) [ 0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes) [ 0.000000] Enabling fast FPU save and restore... done. [ 0.000000] Enabling unmasked SIMD FPU exception support... done. [ 0.000000] Initializing CPU#0 [ 0.000000] Initializing HighMem for node 0 (000377fe:0003fff0) [ 0.000000] Memory: 984812k/1048512k available (10231k kernel code, 46864k reserved, 5981k data, 1840k init, 122824k highmem) [ 0.000000] virtual kernel memory layout: [ 0.000000] fixmap : 0xffd56000 - 0xfffff000 (2724 kB) [ 0.000000] pkmap : 0xff800000 - 0xffa00000 (2048 kB) [ 0.000000] vmalloc : 0xf7ffe000 - 0xff7fe000 ( 120 MB) [ 0.000000] lowmem : 0xc0000000 - 0xf77fe000 ( 887 MB) [ 0.000000] .init : 0xc1fe2000 - 0xc21ae000 (1840 kB) [ 0.000000] .data : 0xc19fdfae - 0xc1fd53fc (5981 kB) [ 0.000000] .text : 0xc1000000 - 0xc19fdfae (10231 kB) [ 0.000000] Checking if this processor honours the WP bit even in supervisor mode...Ok. [ 0.000000] SLUB: Genslabs=14, HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=16 [ 0.000000] Hierarchical RCU implementation. [ 0.000000] RCU-based detection of stalled CPUs is enabled. [ 0.000000] NR_IRQS:1280 [ 0.000000] Fast TSC calibration using PIT [ 0.000000] Detected 2010.509 MHz processor. [ 0.000033] spurious 8259A interrupt: IRQ7. [ 0.003333] Console: colour VGA+ 80x25 [ 0.003333] console [tty0] enabled [ 0.003333] Lock dependency validator: Copyright (c) 2006 Red Hat, Inc., Ingo Molnar [ 0.003333] ... MAX_LOCKDEP_SUBCLASSES: 8 [ 0.003333] ... MAX_LOCK_DEPTH: 48 [ 0.003333] ... MAX_LOCKDEP_KEYS: 8191 [ 0.003333] ... CLASSHASH_SIZE: 4096 [ 0.003333] ... MAX_LOCKDEP_ENTRIES: 16384 [ 0.003333] ... MAX_LOCKDEP_CHAINS: 32768 [ 0.003333] ... CHAINHASH_SIZE: 16384 [ 0.003333] memory used by lock dependency info: 3823 kB [ 0.003333] per task-struct memory footprint: 1920 bytes [ 0.003359] Calibrating delay loop (skipped), value calculated using timer frequency.. 4022.56 BogoMIPS (lpj=6701696) [ 0.010056] Security Framework initialized [ 0.013343] TOMOYO Linux initialized [ 0.016751] Mount-cache hash table entries: 512 [ 0.023629] CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64 bytes/line) [ 0.026674] CPU: L2 Cache: 512K (64 bytes/line) [ 0.030006] CPU: Physical Processor ID: 0 [ 0.033339] CPU: Processor Core ID: 0 [ 0.036674] mce: CPU supports 5 MCE banks [ 0.040027] Performance Counters: AMD PMU driver. [ 0.043346] ... version: 0 [ 0.046672] ... bit width: 48 [ 0.050005] ... generic counters: 4 [ 0.053338] ... value mask: 0000ffffffffffff [ 0.056672] ... max period: 00007fffffffffff [ 0.060005] ... fixed-purpose counters: 0 [ 0.063338] ... counter mask: 000000000000000f [ 0.066674] Checking 'hlt' instruction... OK. [ 0.085636] debug: unmapping init memory c1fd8000..c1fe2000 [ 0.086930] enabled ExtINT on CPU#0 [ 0.090062] ExtINT not setup in hardware but reported by MP table [ 0.093440] Mapping cpu 0 to node 0 [ 0.096672] ENABLING IO-APIC IRQs [ 0.100005] init IO_APIC IRQs [ 0.103339] 2-0 (apicid-pin) not connected [ 0.106682] IOAPIC[0]: Set routing entry (2-1 -> 0x31 -> IRQ 1 Mode:0 Active:0) [ 0.110013] IOAPIC[0]: Set routing entry (2-2 -> 0x30 -> IRQ 0 Mode:0 Active:0) [ 0.113344] IOAPIC[0]: Set routing entry (2-3 -> 0x33 -> IRQ 3 Mode:1 Active:1) [ 0.116666] IOAPIC[0]: Set routing entry (2-4 -> 0x34 -> IRQ 4 Mode:0 Active:0) [ 0.116666] IOAPIC[0]: Set routing entry (2-5 -> 0x35 -> IRQ 5 Mode:1 Active:1) [ 0.116666] IOAPIC[0]: Set routing entry (2-6 -> 0x36 -> IRQ 6 Mode:0 Active:0) [ 0.116666] IOAPIC[0]: Set routing entry (2-7 -> 0x37 -> IRQ 7 Mode:0 Active:0) [ 0.116666] IOAPIC[0]: Set routing entry (2-8 -> 0x38 -> IRQ 8 Mode:0 Active:0) [ 0.116666] IOAPIC[0]: Set routing entry (2-9 -> 0x39 -> IRQ 9 Mode:0 Active:0) [ 0.116666] IOAPIC[0]: Set routing entry (2-10 -> 0x3a -> IRQ 10 Mode:0 Active:0) [ 0.116666] IOAPIC[0]: Set routing entry (2-11 -> 0x3b -> IRQ 11 Mode:1 Active:1) [ 0.116666] IOAPIC[0]: Set routing entry (2-12 -> 0x3c -> IRQ 12 Mode:0 Active:0) [ 0.116666] IOAPIC[0]: Set routing entry (2-13 -> 0x3d -> IRQ 13 Mode:0 Active:0) [ 0.116666] IOAPIC[0]: Set routing entry (2-14 -> 0x3e -> IRQ 14 Mode:0 Active:0) [ 0.116666] IOAPIC[0]: Set routing entry (2-15 -> 0x3f -> IRQ 15 Mode:0 Active:0) [ 0.116666] 2-16 2-17 2-18 2-19 2-20 2-21 2-22 2-23 (apicid-pin) not connected [ 0.116666] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=0 pin2=0 [ 0.116666] ..MP-BIOS bug: 8254 timer not connected to IO-APIC [ 0.116666] ...trying to set up timer (IRQ0) through the 8259A ... [ 0.116666] ..... (found apic 0 pin 0) ... [ 0.150085] ....... works. [ 0.152653] CPU0: AMD Athlon(tm) 64 X2 Dual Core Processor 3800+ stepping 02 [ 0.157878] Using local APIC timer interrupts. [ 0.157879] calibrating APIC timer ... [ 0.163332] ... lapic delta = 1256355 [ 0.163332] ..... delta 1256355 [ 0.163332] ..... mult: 53963554 [ 0.163332] ..... calibration result: 670056 [ 0.163332] ..... CPU clock speed is 2010.1229 MHz. [ 0.163332] ..... host bus clock speed is 201.0123 MHz. [ 0.163332] ... verify APIC timer [ 0.270778] ... jiffies delta = 30 [ 0.273336] ... jiffies result ok [ 0.276690] calling migration_init+0x0/0x47 @ 1 [ 0.280224] initcall migration_init+0x0/0x47 returned 0 after 0 usecs [ 0.283340] calling spawn_ksoftirqd+0x0/0x47 @ 1 [ 0.286720] initcall spawn_ksoftirqd+0x0/0x47 returned 0 after 0 usecs [ 0.290007] calling init_call_single_data+0x0/0x91 @ 1 [ 0.293341] initcall init_call_single_data+0x0/0x91 returned 0 after 0 usecs [ 0.296671] calling relay_init+0x0/0x7 @ 1 [ 0.300005] initcall relay_init+0x0/0x7 returned 0 after 0 usecs [ 0.303338] calling tracer_alloc_buffers+0x0/0x208 @ 1 [ 0.310006] Testing tracer nop: PASSED [ 0.313350] initcall tracer_alloc_buffers+0x0/0x208 returned 0 after 6510 usecs [ 0.316681] calling init_trace_printk+0x0/0x7 @ 1 [ 0.320004] initcall init_trace_printk+0x0/0x7 returned 0 after 0 usecs [ 0.323553] lockdep: fixing up alternatives. [ 0.330065] Booting processor 1 APIC 0x1 ip 0x6000 [ 0.003333] Initializing CPU#1 [ 0.003333] masked ExtINT on CPU#1 [ 0.003333] Mapping cpu 1 to node 0 [ 0.003333] Calibrating delay using timer specific routine.. 4021.85 BogoMIPS (lpj=6700569) [ 0.003333] CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64 bytes/line) [ 0.003333] CPU: L2 Cache: 512K (64 bytes/line) [ 0.003333] CPU: Physical Processor ID: 0 [ 0.003333] CPU: Processor Core ID: 1 [ 0.003333] mce: CPU supports 5 MCE banks [ 0.426792] CPU1: AMD Athlon(tm) 64 X2 Dual Core Processor 3800+ stepping 02 [ 0.434716] Brought up 2 CPUs [ 0.436671] Total of 2 processors activated (8044.41 BogoMIPS). [ 0.436672] ------------[ cut here ]------------ [ 0.436681] WARNING: at kernel/rcutree.c:1140 __rcu_process_callbacks+0x30/0x207() [ 0.436684] Hardware name: System Product Name [ 0.436688] Pid: 0, comm: swapper Not tainted 2.6.31-rc6-tip #4534 [ 0.436690] Call Trace: [ 0.436695] [<c103b2e2>] warn_slowpath_common+0x60/0x90 [ 0.436699] [<c103b324>] warn_slowpath_null+0x12/0x15 [ 0.436703] [<c1071fc5>] __rcu_process_callbacks+0x30/0x207 [ 0.436707] [<c10414ac>] ? __do_softirq+0x54/0x16f [ 0.436711] [<c10721c0>] rcu_process_callbacks+0x24/0x42 [ 0.436715] [<c1041514>] __do_softirq+0xbc/0x16f [ 0.436718] [<c1041602>] do_softirq+0x3b/0x5f [ 0.436722] [<c1041712>] irq_exit+0x3a/0x6d [ 0.436727] [<c10164a9>] smp_apic_timer_interrupt+0x74/0x82 [ 0.436732] [<c1003fd6>] apic_timer_interrupt+0x36/0x40 [ 0.436737] [<c101c9e4>] ? native_safe_halt+0xa/0xc [ 0.436741] [<c100a118>] default_idle+0x5c/0x8e [ 0.436746] [<c1063ae3>] ? trace_hardirqs_off+0xb/0xd [ 0.436750] [<c1002721>] cpu_idle+0xbf/0xda [ 0.436756] [<c2029e27>] start_secondary+0x1d8/0x1e0 [ 0.436781] ---[ end trace 6d450e935ee1897c ]--- [ 0.440223] CPU0 attaching sched-domain: [ 0.443339] domain 0: span 0-1 level MC [ 0.448310] groups: 0 1 [ 0.450517] domain 1: span 0-1 level NODE [ 0.455150] groups: 0-1 [ 0.457204] CPU1 attaching sched-domain: [ 0.460018] domain 0: span 0-1 level MC [ 0.466670] groups: 1 0 [ 0.469263] domain 1: span 0-1 level NODE [ 0.473372] groups: 0-1 [ 0.476405] device: 'platform': device_add [ 0.476756] khelper used greatest stack depth: 6684 bytes left [ 0.483605] bus: 'platform': registered [ 0.486674] Registering sysdev class 'cpu' [ 0.490297] calling init_cpufreq_transition_notifier_list+0x0/0x18 @ 1 [ 0.493343] initcall init_cpufreq_transition_notifier_list+0x0/0x18 returned 0 after 0 usecs [ 0.496671] calling net_ns_init+0x0/0xe1 @ 1 [ 0.500046] initcall net_ns_init+0x0/0xe1 returned 0 after 0 usecs [ 0.503337] calling cpufreq_tsc+0x0/0x25 @ 1 [ 0.506703] initcall cpufreq_tsc+0x0/0x25 returned 0 after 0 usecs [ 0.510004] calling pci_reboot_init+0x0/0x11 @ 1 [ 0.513339] initcall pci_reboot_init+0x0/0x11 returned 0 after 0 usecs [ 0.516670] calling reboot_init+0x0/0x11 @ 1 [ 0.520011] initcall reboot_init+0x0/0x11 returned 0 after 0 usecs [ 0.523338] calling print_banner+0x0/0xd @ 1 [ 0.526669] Booting paravirtualized kernel on bare hardware [ 0.530004] initcall print_banner+0x0/0xd returned 0 after 3255 usecs [ 0.533340] calling init_smp_flush+0x0/0x2f @ 1 [ 0.536672] initcall init_smp_flush+0x0/0x2f returned 0 after 0 usecs [ 0.540007] calling sysctl_init+0x0/0x29 @ 1 [ 0.543601] initcall sysctl_init+0x0/0x29 returned 0 after 0 usecs [ 0.546672] calling ksysfs_init+0x0/0x96 @ 1 [ 0.550049] initcall ksysfs_init+0x0/0x96 returned 0 after 0 usecs [ 0.553338] calling async_init+0x0/0x3c @ 1 [ 0.556670] initcall async_init+0x0/0x3c returned 0 after 0 usecs [ 0.560003] calling init_jiffies_clocksource+0x0/0xf @ 1 [ 0.563365] initcall init_jiffies_clocksource+0x0/0xf returned 0 after 0 usecs [ 0.566673] calling init_hw_breakpoint+0x0/0xf @ 1 [ 0.570005] initcall init_hw_breakpoint+0x0/0xf returned 0 after 0 usecs [ 0.573337] calling filelock_init+0x0/0x27 @ 1 [ 0.576675] initcall filelock_init+0x0/0x27 returned 0 after 0 usecs [ 0.580005] calling init_aout_binfmt+0x0/0x11 @ 1 [ 0.583360] initcall init_aout_binfmt+0x0/0x11 returned 0 after 0 usecs [ 0.586671] calling init_misc_binfmt+0x0/0x35 @ 1 [ 0.590007] initcall init_misc_binfmt+0x0/0x35 returned 0 after 0 usecs [ 0.593339] calling init_script_binfmt+0x0/0x11 @ 1 [ 0.596671] initcall init_script_binfmt+0x0/0x11 returned 0 after 0 usecs [ 0.600004] calling init_elf_binfmt+0x0/0x11 @ 1 [ 0.603338] initcall init_elf_binfmt+0x0/0x11 returned 0 after 0 usecs [ 0.606673] calling debugfs_init+0x0/0x4a @ 1 [ 0.610010] initcall debugfs_init+0x0/0x4a returned 0 after 0 usecs [ 0.613337] calling securityfs_init+0x0/0x41 @ 1 [ 0.616675] initcall securityfs_init+0x0/0x41 returned 0 after 0 usecs [ 0.620004] calling random32_init+0x0/0x9d @ 1 [ 0.623338] initcall random32_init+0x0/0x9d returned 0 after 0 usecs [ 0.626672] calling cpufreq_core_init+0x0/0x55 @ 1 [ 0.630005] initcall cpufreq_core_init+0x0/0x55 returned 0 after 0 usecs [ 0.633338] calling virtio_init+0x0/0x24 @ 1 [ 0.636691] bus: 'virtio': registered [ 0.640006] initcall virtio_init+0x0/0x24 returned 0 after 3255 usecs [ 0.643337] calling sock_init+0x0/0x4c @ 1 [ 0.646826] initcall sock_init+0x0/0x4c returned 0 after 0 usecs [ 0.650005] calling netpoll_init+0x0/0x39 @ 1 [ 0.653338] initcall netpoll_init+0x0/0x39 returned 0 after 0 usecs [ 0.656671] calling netlink_proto_init+0x0/0x10a @ 1 [ 0.660057] NET: Registered protocol family 16 [ 0.663418] initcall netlink_proto_init+0x0/0x10a returned 0 after 3255 usecs [ 0.666671] calling olpc_init+0x0/0x105 @ 1 [ 0.670009] initcall olpc_init+0x0/0x105 returned 0 after 0 usecs [ 0.673337] calling bdi_class_init+0x0/0x35 @ 1 [ 0.676673] device class 'bdi': registering [ 0.680219] initcall bdi_class_init+0x0/0x35 returned 0 after 3255 usecs [ 0.683338] calling kobject_uevent_init+0x0/0x4e @ 1 [ 0.686678] initcall kobject_uevent_init+0x0/0x4e returned 0 after 0 usecs [ 0.690004] calling pcibus_class_init+0x0/0x14 @ 1 [ 0.693338] device class 'pci_bus': registering [ 0.696715] initcall pcibus_class_init+0x0/0x14 returned 0 after 3255 usecs [ 0.700005] calling pci_driver_init+0x0/0xf @ 1 [ 0.703359] bus: 'pci': registered [ 0.706672] initcall pci_driver_init+0x0/0xf returned 0 after 3255 usecs [ 0.710004] calling lcd_class_init+0x0/0x3f @ 1 [ 0.713336] device class 'lcd': registering [ 0.716690] initcall lcd_class_init+0x0/0x3f returned 0 after 3255 usecs [ 0.720007] calling backlight_class_init+0x0/0x4d @ 1 [ 0.723336] device class 'backlight': registering [ 0.726691] initcall backlight_class_init+0x0/0x4d returned 0 after 3255 usecs [ 0.730005] calling video_output_class_init+0x0/0x14 @ 1 [ 0.733336] device class 'video_output': registering [ 0.736690] initcall video_output_class_init+0x0/0x14 returned 0 after 3255 usecs [ 0.740004] calling tty_class_init+0x0/0x2c @ 1 [ 0.743336] device class 'tty': registering [ 0.746700] initcall tty_class_init+0x0/0x2c returned 0 after 3255 usecs [ 0.750005] calling vtconsole_class_init+0x0/0xa1 @ 1 [ 0.753337] device class 'vtconsole': registering [ 0.756691] device: 'vtcon0': device_add [ 0.760070] initcall vtconsole_class_init+0x0/0xa1 returned 0 after 6510 usecs [ 0.763337] calling register_node_type+0x0/0x3a @ 1 [ 0.766669] Registering sysdev class 'node' [ 0.773381] initcall register_node_type+0x0/0x3a returned 0 after 6510 usecs [ 0.776672] calling i2c_init+0x0/0x54 @ 1 [ 0.780024] bus: 'i2c': registered [ 0.783336] device class 'i2c-adapter': registering [ 0.786691] bus: 'i2c': add driver dummy [ 0.793351] initcall i2c_init+0x0/0x54 returned 0 after 13020 usecs [ 0.796671] calling lguest_devices_init+0x0/0x16f @ 1 [ 0.800005] initcall lguest_devices_init+0x0/0x16f returned 0 after 0 usecs [ 0.803339] calling amd_postcore_init+0x0/0x9a @ 1 [ 0.806671] initcall amd_postcore_init+0x0/0x9a returned 0 after 0 usecs [ 0.810003] calling arch_kdebugfs_init+0x0/0x1e @ 1 [ 0.813347] initcall arch_kdebugfs_init+0x0/0x1e returned 0 after 0 usecs [ 0.816671] calling init_pit_clocksource+0x0/0x97 @ 1 [ 0.820003] initcall init_pit_clocksource+0x0/0x97 returned 0 after 0 usecs [ 0.823337] calling arch_init_ftrace_syscalls+0x0/0xd2 @ 1 [ 0.830895] initcall arch_init_ftrace_syscalls+0x0/0xd2 returned 0 after 3255 usecs [ 0.833337] calling kdump_buf_page_init+0x0/0x72 @ 1 [ 0.836672] initcall kdump_buf_page_init+0x0/0x72 returned 0 after 0 usecs [ 0.840004] calling dmi_id_init+0x0/0x2bb @ 1 [ 0.843336] device class 'dmi': registering [ 0.846693] device: 'id': device_add [ 0.850094] initcall dmi_id_init+0x0/0x2bb returned 0 after 6510 usecs [ 0.853338] calling init_cyclone_clocksource+0x0/0x17d @ 1 [ 0.856671] initcall init_cyclone_clocksource+0x0/0x17d returned -19 after 0 usecs [ 0.860003] calling pci_arch_init+0x0/0x4e @ 1 [ 0.871280] PCI: PCI BIOS revision 3.00 entry at 0xf21d0, last bus=5 [ 0.873335] PCI: Using configuration type 1 for base access [ 0.876679] initcall pci_arch_init+0x0/0x4e returned 0 after 9765 usecs [ 0.880006] calling topology_init+0x0/0xb8 @ 1 [ 0.883336] Registering sys device of class 'node' [ 0.886675] Registering sys device 'node0' [ 0.890044] Registering sys device of class 'cpu' [ 0.893345] Registering sys device 'cpu0' [ 0.896686] Registering sys device of class 'cpu' [ 0.900007] Registering sys device 'cpu1' [ 0.903354] initcall topology_init+0x0/0xb8 returned 0 after 19531 usecs [ 0.906671] calling mca_init+0x0/0x2ae @ 1 [ 0.910083] bus: 'MCA': registered [ 0.913338] initcall mca_init+0x0/0x2ae returned -19 after 3255 usecs [ 0.916669] calling param_sysfs_init+0x0/0x2bf @ 1 [ 0.985346] initcall param_sysfs_init+0x0/0x2bf returned 0 after 61848 usecs [ 0.986773] calling default_bdi_init+0x0/0x2f @ 1 [ 0.990017] device: 'default': device_add [ 0.993429] initcall default_bdi_init+0x0/0x2f returned 0 after 3255 usecs [ 0.996806] calling init_bio+0x0/0xae @ 1 [ 1.000135] bio: create slab <bio-0> at 0 [ 1.003372] initcall init_bio+0x0/0xae returned 0 after 3255 usecs [ 1.006671] calling fsnotify_init+0x0/0xf @ 1 [ 1.010023] initcall fsnotify_init+0x0/0xf returned 0 after 0 usecs [ 1.013337] calling fsnotify_notification_init+0x0/0xe7 @ 1 [ 1.016676] initcall fsnotify_notification_init+0x0/0xe7 returned 0 after 0 usecs [ 1.020003] calling cryptomgr_init+0x0/0xf @ 1 [ 1.023337] initcall cryptomgr_init+0x0/0xf returned 0 after 0 usecs [ 1.026670] calling blk_settings_init+0x0/0x1d @ 1 [ 1.030005] initcall blk_settings_init+0x0/0x1d returned 0 after 0 usecs [ 1.033336] calling blk_ioc_init+0x0/0x24 @ 1 [ 1.036674] initcall blk_ioc_init+0x0/0x24 returned 0 after 0 usecs [ 1.040025] calling blk_softirq_init+0x0/0x83 @ 1 [ 1.043337] initcall blk_softirq_init+0x0/0x83 returned 0 after 0 usecs [ 1.046670] calling genhd_device_init+0x0/0x50 @ 1 [ 1.050002] device class 'block': registering [ 1.053437] initcall genhd_device_init+0x0/0x50 returned 0 after 3255 usecs [ 1.056675] calling blk_dev_integrity_init+0x0/0x24 @ 1 [ 1.060006] initcall blk_dev_integrity_init+0x0/0x24 returned 0 after 0 usecs [ 1.063398] calling gpiolib_debugfs_init+0x0/0x1f @ 1 [ 1.066682] initcall gpiolib_debugfs_init+0x0/0x1f returned 0 after 0 usecs [ 1.070005] calling max732x_init+0x0/0x11 @ 1 [ 1.073337] bus: 'i2c': add driver max732x [ 1.076749] initcall max732x_init+0x0/0x11 returned 0 after 3255 usecs [ 1.080010] calling gpio_twl4030_init+0x0/0xf @ 1 [ 1.083337] bus: 'platform': add driver twl4030_gpio [ 1.086739] initcall gpio_twl4030_init+0x0/0xf returned 0 after 3255 usecs [ 1.090006] calling pci_slot_init+0x0/0x40 @ 1 [ 1.093344] initcall pci_slot_init+0x0/0x40 returned 0 after 0 usecs [ 1.096670] calling fbmem_init+0x0/0x78 @ 1 [ 1.100040] device class 'graphics': registering [ 1.103401] initcall fbmem_init+0x0/0x78 returned 0 after 3255 usecs [ 1.106671] calling misc_init+0x0/0x92 @ 1 [ 1.110007] device class 'misc': registering [ 1.113399] initcall misc_init+0x0/0x92 returned 0 after 3255 usecs [ 1.116672] calling cn_init+0x0/0xd0 @ 1 [ 1.120065] initcall cn_init+0x0/0xd0 returned 0 after 0 usecs [ 1.123336] calling tifm_init+0x0/0x75 @ 1 [ 1.126739] bus: 'tifm': registered [ 1.130005] device class 'tifm_adapter': registering [ 1.133399] initcall tifm_init+0x0/0x75 returned 0 after 6510 usecs [ 1.136671] calling tps_init+0x0/0x6f @ 1 [ 1.140003] tps65010: version 2 May 2005 [ 1.143336] bus: 'i2c': add driver tps65010 [ 1.146750] bus: 'i2c': remove driver tps65010 [ 1.150065] driver: 'tps65010': driver_release [ 1.166708] bus: 'i2c': add driver tps65010 [ 1.170074] bus: 'i2c': remove driver tps65010 [ 1.173396] driver: 'tps65010': driver_release [ 1.190010] bus: 'i2c': add driver tps65010 [ 1.193407] bus: 'i2c': remove driver tps65010 [ 1.196728] driver: 'tps65010': driver_release [ 1.200003] tps65010: no chip? [ 1.203336] initcall tps_init+0x0/0x6f returned -19 after 61848 usecs [ 1.206669] calling twl4030_init+0x0/0x11 @ 1 [ 1.210002] bus: 'i2c': add driver twl4030 [ 1.213409] initcall twl4030_init+0x0/0x11 returned 0 after 3255 usecs [ 1.216670] calling da903x_init+0x0/0x11 @ 1 [ 1.220003] bus: 'i2c': add driver da903x [ 1.223407] initcall da903x_init+0x0/0x11 returned 0 after 3255 usecs [ 1.226670] calling pcf50633_init+0x0/0x11 @ 1 [ 1.230002] bus: 'i2c': add driver pcf50633 [ 1.233407] initcall pcf50633_init+0x0/0x11 returned 0 after 3255 usecs [ 1.236671] calling ab3100_i2c_init+0x0/0x11 @ 1 [ 1.240003] bus: 'i2c': add driver ab3100 [ 1.243406] initcall ab3100_i2c_init+0x0/0x11 returned 0 after 3255 usecs [ 1.246670] calling init_scsi+0x0/0x89 @ 1 [ 1.250123] device class 'scsi_host': registering [ 1.253417] bus: 'scsi': registered [ 1.256669] device class 'scsi_device': registering [ 1.260066] SCSI subsystem initialized [ 1.263338] initcall init_scsi+0x0/0x89 returned 0 after 13020 usecs [ 1.266670] calling ata_init+0x0/0x2c3 @ 1 [ 1.270114] libata version 3.00 loaded. [ 1.273338] initcall ata_init+0x0/0x2c3 returned 0 after 3255 usecs [ 1.276671] calling phy_init+0x0/0x29 @ 1 [ 1.280002] device class 'mdio_bus': registering [ 1.286716] bus: 'mdio_bus': registered [ 1.290003] bus: 'mdio_bus': add driver Generic PHY [ 1.293406] initcall phy_init+0x0/0x29 returned 0 after 13020 usecs [ 1.296671] calling init_pcmcia_cs+0x0/0x2d @ 1 [ 1.300003] device class 'pcmcia_socket': registering [ 1.303400] initcall init_pcmcia_cs+0x0/0x2d returned 0 after 3255 usecs [ 1.306671] calling nop_usb_xceiv_init+0x0/0xf @ 1 [ 1.310003] bus: 'platform': add driver nop_usb_xceiv [ 1.313407] initcall nop_usb_xceiv_init+0x0/0xf returned 0 after 3255 usecs [ 1.316671] calling usb_init+0x0/0x14a @ 1 [ 1.320090] bus: 'usb': registered [ 1.323342] bus: 'usb': add driver usbfs [ 1.326740] usbcore: registered new interface driver usbfs [ 1.330010] device class 'usb_device': registering [ 1.333400] bus: 'usb': add driver hub [ 1.336749] usbcore: registered new interface driver hub [ 1.340049] bus: 'usb': add driver usb [ 1.343408] usbcore: registered new device driver usb [ 1.346671] initcall usb_init+0x0/0x14a returned 0 after 26041 usecs [ 1.350003] calling serio_init+0x0/0x73 @ 1 [ 1.353401] bus: 'serio': registered [ 1.356714] initcall serio_init+0x0/0x73 returned 0 after 3255 usecs [ 1.360003] calling input_init+0x0/0x106 @ 1 [ 1.363335] device class 'input': registering [ 1.366734] initcall input_init+0x0/0x106 returned 0 after 3255 usecs [ 1.370007] calling rtc_init+0x0/0x5e @ 1 [ 1.373335] device class 'rtc': registering [ 1.376733] initcall rtc_init+0x0/0x5e returned 0 after 3255 usecs [ 1.380004] calling pps_init+0x0/0x92 @ 1 [ 1.383336] device class 'pps': registering [ 1.386732] LinuxPPS API ver. 1 registered [ 1.390003] Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <[email protected]> [ 1.393337] initcall pps_init+0x0/0x92 returned 0 after 9765 usecs [ 1.396669] calling hwmon_init+0x0/0xe9 @ 1 [ 1.400004] device class 'hwmon': registering [ 1.403401] initcall hwmon_init+0x0/0xe9 returned 0 after 3255 usecs [ 1.406671] calling mmc_init+0x0/0x6e @ 1 [ 1.413365] bus: 'mmc': registered [ 1.416669] device class 'mmc_host': registering [ 1.420072] bus: 'sdio': registered [ 1.423338] initcall mmc_init+0x0/0x6e returned 0 after 13020 usecs [ 1.426669] calling leds_init+0x0/0x36 @ 1 [ 1.430002] device class 'leds': registering [ 1.433403] initcall leds_init+0x0/0x36 returned 0 after 3255 usecs [ 1.436673] calling pci_subsys_init+0x0/0xec @ 1 [ 1.440002] PCI: Probing PCI hardware [ 1.443365] PCI: Probing PCI hardware (bus 00) [ 1.446689] device: 'pci0000:00': device_add [ 1.450014] device: '0000:00': device_add [ 1.453632] pci 0000:00:01.1: reg 10 io port: [0xdc00-0xdc1f] [ 1.456690] pci 0000:00:01.1: reg 20 io port: [0x4c00-0x4c3f] [ 1.460007] pci 0000:00:01.1: reg 24 io port: [0x4c40-0x4c7f] [ 1.463358] pci 0000:00:01.1: PME# supported from D3hot D3cold [ 1.466671] pci 0000:00:01.1: PME# disabled [ 1.470051] pci 0000:00:02.0: reg 10 32bit mmio: [0xda102000-0xda102fff] [ 1.473382] pci 0000:00:02.0: supports D1 D2 [ 1.476668] pci 0000:00:02.0: PME# supported from D0 D1 D2 D3hot D3cold [ 1.480004] pci 0000:00:02.0: PME# disabled [ 1.483382] pci 0000:00:02.1: reg 10 32bit mmio: [0xfeb00000-0xfeb000ff] [ 1.486724] pci 0000:00:02.1: supports D1 D2 [ 1.490002] pci 0000:00:02.1: PME# supported from D0 D1 D2 D3hot D3cold [ 1.493338] pci 0000:00:02.1: PME# disabled [ 1.496720] pci 0000:00:04.0: reg 10 io port: [0xd400-0xd4ff] [ 1.500009] pci 0000:00:04.0: reg 14 io port: [0xd800-0xd8ff] [ 1.503340] pci 0000:00:04.0: reg 18 32bit mmio: [0xda101000-0xda101fff] [ 1.506705] pci 0000:00:04.0: supports D1 D2 [ 1.510057] pci 0000:00:06.0: reg 20 io port: [0xf000-0xf00f] [ 1.513438] pci 0000:00:0a.0: reg 10 32bit mmio: [0xda100000-0xda100fff] [ 1.516674] pci 0000:00:0a.0: reg 14 io port: [0xd000-0xd007] [ 1.520044] pci 0000:00:0a.0: supports D1 D2 [ 1.523335] pci 0000:00:0a.0: PME# supported from D0 D1 D2 D3hot D3cold [ 1.526671] pci 0000:00:0a.0: PME# disabled [ 1.530082] pci 0000:00:0b.0: PME# supported from D0 D1 D2 D3hot D3cold [ 1.533337] pci 0000:00:0b.0: PME# disabled [ 1.536754] pci 0000:00:0c.0: PME# supported from D0 D1 D2 D3hot D3cold [ 1.540004] pci 0000:00:0c.0: PME# disabled [ 1.543423] pci 0000:00:0d.0: PME# supported from D0 D1 D2 D3hot D3cold [ 1.546671] pci 0000:00:0d.0: PME# disabled [ 1.550088] pci 0000:00:0e.0: PME# supported from D0 D1 D2 D3hot D3cold [ 1.553337] pci 0000:00:0e.0: PME# disabled [ 1.556987] pci 0000:05:07.0: reg 10 io port: [0xc000-0xc0ff] [ 1.560011] pci 0000:05:07.0: reg 14 32bit mmio: [0xda000000-0xda0000ff] [ 1.563337] Clocksource tsc unstable (delta = 222469102 ns) [ 1.563388] pci 0000:05:07.0: supports D1 D2 [ 1.563390] pci 0000:05:07.0: PME# supported from D1 D2 D3hot [ 1.563396] pci 0000:05:07.0: PME# disabled [ 1.563462] pci 0000:00:09.0: transparent bridge [ 1.563468] pci 0000:00:09.0: bridge io port: [0xc000-0xcfff] [ 1.563474] pci 0000:00:09.0: bridge 32bit mmio: [0xda000000-0xda0fffff] [ 1.563847] pci 0000:01:00.0: reg 10 32bit mmio: [0xd0000000-0xd7ffffff] [ 1.563856] pci 0000:01:00.0: reg 14 io port: [0xb000-0xb0ff] [ 1.563865] pci 0000:01:00.0: reg 18 32bit mmio: [0xd9000000-0xd900ffff] [ 1.563892] pci 0000:01:00.0: reg 30 32bit mmio: [0x000000-0x01ffff] [ 1.563926] pci 0000:01:00.0: supports D1 D2 [ 1.563976] pci 0000:01:00.1: reg 10 32bit mmio: [0xd9010000-0xd901ffff] [ 1.564042] pci 0000:01:00.1: supports D1 D2 [ 1.564142] pci 0000:01:00.0: disabling ASPM on pre-1.1 PCIe device. You can enable it with 'pcie_aspm=force' [ 1.564325] pci 0000:00:0e.0: bridge io port: [0xb000-0xbfff] [ 1.564331] pci 0000:00:0e.0: bridge 32bit mmio: [0xd8000000-0xd9ffffff] [ 1.564339] pci 0000:00:0e.0: bridge 64bit mmio pref: [0xd0000000-0xd7ffffff] [ 1.564375] device: '0000:00:00.0': device_add [ 1.564384] bus: 'pci': add device 0000:00:00.0 [ 1.680106] [ 1.680107] ======================================================= [ 1.683330] [ INFO: possible circular locking dependency detected ] [ 1.683330] 2.6.31-rc6-tip #4534 [ 1.683330] ------------------------------------------------------- [ 1.703385] device: '0000:00:01.0': device_add [ 1.703393] bus: 'pci': add device 0000:00:01.0 [ 1.703508] device: '0000:00:01.1': device_add [ 1.703515] bus: 'pci': add device 0000:00:01.1 [ 1.703618] device: '0000:00:02.0': device_add [ 1.703624] bus: 'pci': add device 0000:00:02.0 [ 1.703719] device: '0000:00:02.1': device_add [ 1.703725] bus: 'pci': add device 0000:00:02.1 [ 1.703819] device: '0000:00:04.0': device_add [ 1.703825] bus: 'pci': add device 0000:00:04.0 [ 1.703920] device: '0000:00:06.0': device_add [ 1.703926] bus: 'pci': add device 0000:00:06.0 [ 1.704029] device: '0000:00:09.0': device_add [ 1.704035] bus: 'pci': add device 0000:00:09.0 [ 1.704129] device: '0000:00:0a.0': device_add [ 1.704135] bus: 'pci': add device 0000:00:0a.0 [ 1.704229] device: '0000:00:0b.0': device_add [ 1.704235] bus: 'pci': add device 0000:00:0b.0 [ 1.704335] device: '0000:00:0c.0': device_add [ 1.704342] bus: 'pci': add device 0000:00:0c.0 [ 1.704446] device: '0000:00:0d.0': device_add [ 1.704453] bus: 'pci': add device 0000:00:0d.0 [ 1.704551] device: '0000:00:0e.0': device_add [ 1.704557] bus: 'pci': add device 0000:00:0e.0 [ 1.704654] device: '0000:00:18.0': device_add [ 1.704660] bus: 'pci': add device 0000:00:18.0 [ 1.704755] device: '0000:00:18.1': device_add [ 1.704761] bus: 'pci': add device 0000:00:18.1 [ 1.704863] device: '0000:00:18.2': device_add [ 1.704870] bus: 'pci': add device 0000:00:18.2 [ 1.704971] device: '0000:00:18.3': device_add [ 1.704978] bus: 'pci': add device 0000:00:18.3 [ 1.705075] device: '0000:05:07.0': device_add [ 1.705082] bus: 'pci': add device 0000:05:07.0 [ 1.705177] device: '0000:05': device_add [ 1.705262] device: '0000:04': device_add [ 1.705340] device: '0000:03': device_add [ 1.705417] device: '0000:02': device_add [ 1.705500] device: '0000:01:00.0': device_add [ 1.705506] bus: 'pci': add device 0000:01:00.0 [ 1.705603] device: '0000:01:00.1': device_add [ 1.705609] bus: 'pci': add device 0000:01:00.1 [ 1.705713] device: '0000:01': device_add [ 1.706073] pci 0000:00:00.0: default IRQ router [10de:005e] [ 1.706218] initcall pci_subsys_init+0x0/0xec returned 0 after 257161 usecs [ 1.706223] calling proto_init+0x0/0xf @ 1 [ 1.706237] initcall proto_init+0x0/0xf returned 0 after 0 usecs [ 1.706241] calling net_dev_init+0x0/0x17d @ 1 [ 1.706252] device class 'net': registering [ 1.706341] device: 'lo': device_add [ 1.706489] initcall net_dev_init+0x0/0x17d returned 0 after 0 usecs [ 1.706493] calling neigh_init+0x0/0x66 @ 1 [ 1.706497] initcall neigh_init+0x0/0x66 returned 0 after 0 usecs [ 1.706501] calling fib_rules_init+0x0/0x99 @ 1 [ 1.706507] initcall fib_rules_init+0x0/0x99 returned 0 after 0 usecs [ 1.706511] calling pktsched_init+0x0/0xa9 @ 1 [ 1.706518] initcall pktsched_init+0x0/0xa9 returned 0 after 0 usecs [ 1.706521] calling tc_filter_init+0x0/0x43 @ 1 [ 1.706525] initcall tc_filter_init+0x0/0x43 returned 0 after 0 usecs [ 1.706529] calling genl_init+0x0/0xb0 @ 1 [ 1.710199] initcall genl_init+0x0/0xb0 returned 0 after 6510 usecs [ 1.710203] calling wanrouter_init+0x0/0x42 @ 1 [ 1.710206] Sangoma WANPIPE Router v1.1 (c) 1995-2000 Sangoma Technologies Inc. [ 1.710216] initcall wanrouter_init+0x0/0x42 returned 0 after 0 usecs [ 1.710219] calling bt_init+0x0/0x50 @ 1 [ 1.710221] Bluetooth: Core ver 2.15 [ 1.710262] device class 'bluetooth': registering [ 1.710332] NET: Registered protocol family 31 [ 1.710334] Bluetooth: HCI device and connection manager initialized [ 1.710338] Bluetooth: HCI socket layer initialized [ 1.710342] initcall bt_init+0x0/0x50 returned 0 after 0 usecs [ 1.710345] calling atm_init+0x0/0xa0 @ 1 [ 1.710348] NET: Registered protocol family 8 [ 1.710350] NET: Registered protocol family 20 [ 1.710362] device class 'atm': registering [ 1.710429] initcall atm_init+0x0/0xa0 returned 0 after 0 usecs [ 1.710433] calling wireless_nlevent_init+0x0/0x39 @ 1 [ 1.710437] initcall wireless_nlevent_init+0x0/0x39 returned 0 after 0 usecs [ 1.710443] calling cfg80211_init+0x0/0x69 @ 1 [ 1.710445] device class 'ieee80211': registering [ 1.733350] Registering platform device 'regulatory.0'. Parent at platform [ 1.733353] device: 'regulatory.0': device_add [ 1.733359] bus: 'platform': add device regulatory.0 [ 1.733431] cfg80211: Using static regulatory domain info [ 1.733434] cfg80211: Regulatory domain: US [ 1.733436] (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp) [ 1.733439] (2402000 KHz - 2472000 KHz @ 40000 KHz), (600 mBi, 2700 mBm) [ 1.733442] (5170000 KHz - 5190000 KHz @ 40000 KHz), (600 mBi, 2300 mBm) [ 1.733445] (5190000 KHz - 5210000 KHz @ 40000 KHz), (600 mBi, 2300 mBm) [ 1.733449] (5210000 KHz - 5230000 KHz @ 40000 KHz), (600 mBi, 2300 mBm) [ 1.733452] (5230000 KHz - 5330000 KHz @ 40000 KHz), (600 mBi, 2300 mBm) [ 1.733455] (5735000 KHz - 5835000 KHz @ 40000 KHz), (600 mBi, 3000 mBm) [ 1.733466] cfg80211: Calling CRDA for country: US [ 1.703334] events/1/8 is trying to acquire lock: [ 1.703334] (clocksource_mutex){+.+...}, at: [<c105dde6>] clocksource_change_rating+0x1b/0x86 [ 1.703334] [ 1.703334] but task is already holding lock: [ 1.703334] (watchdog_lock){+.-...}, at: [<c105e24a>] clocksource_watchdog_work+0x14/0x94 [ 1.703334] [ 1.703334] which lock already depends on the new lock. [ 1.703334] [ 1.703334] [ 1.703334] the existing dependency chain (in reverse order) is: [ 1.703334] [ 1.703334] -> #1 (watchdog_lock){+.-...}: [ 1.703334] [<c1066317>] __lock_acquire+0xa5d/0xbed [ 1.703334] [<c1066542>] lock_acquire+0x9b/0xb8 [ 1.703334] [<c19fcf2a>] _spin_lock_irqsave+0x37/0x6a [ 1.703334] [<c105e0da>] clocksource_register+0x65/0x1c1 [ 1.703334] [<c1fe8102>] tsc_init+0x1d7/0x1df [ 1.703334] [<c1fe4b75>] time_init+0xd/0x19 [ 1.703334] [<c1fe2ab1>] start_kernel+0x21b/0x3e5 [ 1.703334] [<c1fe2391>] i386_start_kernel+0x6b/0x70 [ 1.703334] [ 1.703334] -> #0 (clocksource_mutex){+.+...}: [ 1.703334] [<c1066222>] __lock_acquire+0x968/0xbed [ 1.703334] [<c1066542>] lock_acquire+0x9b/0xb8 [ 1.703334] [<c19fbb3f>] __mutex_lock_common+0x3a/0x34d [ 1.703334] [<c19fbecc>] mutex_lock_nested+0x24/0x2c [ 1.703334] [<c105dde6>] clocksource_change_rating+0x1b/0x86 [ 1.703334] [<c105e277>] clocksource_watchdog_work+0x41/0x94 [ 1.703334] [<c1050d96>] worker_thread+0x179/0x24a [ 1.703334] [<c1054ad7>] kthread+0x66/0x6b [ 1.703334] [<c1004227>] kernel_thread_helper+0x7/0x10 [ 1.703334] [ 1.703334] other info that might help us debug this: [ 1.703334] [ 1.703334] 3 locks held by events/1/8: [ 1.703334] #0: (events){+.+...}, at: [<c1050d4c>] worker_thread+0x12f/0x24a [ 1.703334] #1: (&watchdog_work){+.+...}, at: [<c1050d4c>] worker_thread+0x12f/0x24a [ 1.703334] #2: (watchdog_lock){+.-...}, at: [<c105e24a>] clocksource_watchdog_work+0x14/0x94 [ 1.703334] [ 1.703334] stack backtrace: [ 1.703334] Pid: 8, comm: events/1 Tainted: G W 2.6.31-rc6-tip #4534 [ 1.703334] Call Trace: [ 1.703334] [<c19fa80e>] ? printk+0x14/0x16 [ 1.703334] [<c1065575>] print_circular_bug+0x8a/0x96 [ 1.703334] [<c1066222>] __lock_acquire+0x968/0xbed [ 1.703334] [<c1066542>] lock_acquire+0x9b/0xb8 [ 1.703334] [<c105dde6>] ? clocksource_change_rating+0x1b/0x86 [ 1.703334] [<c19fbb3f>] __mutex_lock_common+0x3a/0x34d [ 1.703334] [<c105dde6>] ? clocksource_change_rating+0x1b/0x86 [ 1.703334] [<c105e24a>] ? clocksource_watchdog_work+0x14/0x94 [ 1.703334] [<c19fbecc>] mutex_lock_nested+0x24/0x2c [ 1.703334] [<c105dde6>] ? clocksource_change_rating+0x1b/0x86 [ 1.703334] [<c105dde6>] clocksource_change_rating+0x1b/0x86 [ 1.703334] [<c105e277>] clocksource_watchdog_work+0x41/0x94 [ 1.703334] [<c1050d96>] worker_thread+0x179/0x24a [ 1.703334] [<c1050d4c>] ? worker_thread+0x12f/0x24a [ 1.703334] [<c105e236>] ? clocksource_watchdog_work+0x0/0x94 [ 1.703334] [<c1054d71>] ? autoremove_wake_function+0x0/0x38 [ 1.703334] [<c1050c1d>] ? worker_thread+0x0/0x24a [ 1.703334] [<c1054ad7>] kthread+0x66/0x6b [ 1.703334] [<c1054a71>] ? kthread+0x0/0x6b [ 1.703334] [<c1004227>] kernel_thread_helper+0x7/0x10 [ 2.464242] initcall cfg80211_init+0x0/0x69 returned 0 after 735675 usecs [ 2.466667] calling ieee80211_init+0x0/0x24 @ 1 [ 2.470003] initcall ieee80211_init+0x0/0x24 returned 0 after 0 usecs [ 2.473332] calling rfkill_init+0x0/0x60 @ 1 [ 2.476665] device class 'rfkill': registering [ 2.480036] device: 'rfkill': device_add [ 2.483377] initcall rfkill_init+0x0/0x60 returned 0 after 6510 usecs [ 2.486667] calling sysctl_init+0x0/0x3b @ 1 [ 2.490001] initcall sysctl_init+0x0/0x3b returned 0 after 0 usecs [ 2.493335] calling pci_iommu_init+0x0/0xc @ 1 [ 2.496667] initcall pci_iommu_init+0x0/0xc returned 0 after 0 usecs [ 2.500001] calling print_all_ICs+0x0/0x4a7 @ 1 [ 2.503331] [ 2.503332] printing PIC contents [ 2.506666] ... PIC IMR: fffa [ 2.509694] ... PIC IRR: 0001 [ 2.509997] ... PIC ISR: 0001 [ 2.513333] ... PIC ELCR: 0828 [ 2.516666] printing local APIC contents on CPU#0/0: [ 2.519995] ... APIC ID: 00000000 (0) [ 2.519995] ... APIC VERSION: 00040010 [ 2.519995] ... APIC TASKPRI: 00000000 (00) [ 2.519995] ... APIC ARBPRI: 000000e0 (e0) [ 2.519995] ... APIC PROCPRI: 00000000 [ 2.519995] ... APIC LDR: 01000000 [ 2.519995] ... APIC DFR: ffffffff [ 2.519995] ... APIC SPIV: 000001ff [ 2.519995] ... APIC ISR field: [ 2.519995] 0000000000000000000000000000000000000000000000000000000000000000 [ 2.519995] ... APIC TMR field: [ 2.519995] 0000000000000000000000000000000000000000000000000000000000000000 [ 2.519995] ... APIC IRR field: [ 2.519995] 0000000000000000000000000000000000000000000000000000000000008000 [ 2.519995] ... APIC ESR: 00000000 [ 2.519995] ... APIC ICR: 000008fd [ 2.519995] ... APIC ICR2: 02000000 [ 2.519995] ... APIC LVTT: 000200ef [ 2.519995] ... APIC LVTPC: 00000400 [ 2.519995] ... APIC LVT0: 00010700 [ 2.519995] ... APIC LVT1: 00000400 [ 2.519995] ... APIC LVTERR: 000000fe [ 2.519995] ... APIC TMICT: 0000a396 [ 2.519995] ... APIC TMCCT: 0000860f [ 2.519995] ... APIC TDCR: 00000003 [ 2.519995] [ 2.517145] printing local APIC contents on CPU#1/1: [ 2.519995] ... APIC ID: 01000000 (1) [ 2.519995] ... APIC VERSION: 00040010 [ 2.519995] ... APIC TASKPRI: 00000000 (00) [ 2.519995] ... APIC ARBPRI: 000000e0 (e0) [ 2.519995] ... APIC PROCPRI: 00000000 [ 2.519995] ... APIC LDR: 02000000 [ 2.519995] ... APIC DFR: ffffffff [ 2.519995] ... APIC SPIV: 000001ff [ 2.519995] ... APIC ISR field: [ 2.519995] 0000000000000000000000000000000000000000000000000000000000000000 [ 2.519995] ... APIC TMR field: [ 2.519995] 0000000000000000000000000000000000000000000000000000000000000000 [ 2.519995] ... APIC IRR field: [ 2.519995] 0000000000000000000000000000000000000000000000000000000000008000 [ 2.519995] ... APIC ESR: 00000000 [ 2.519995] ... APIC ICR: 000008fd [ 2.519995] ... APIC ICR2: 01000000 [ 2.519995] ... APIC LVTT: 000200ef [ 2.519995] ... APIC LVTPC: 00010400 [ 2.519995] ... APIC LVT0: 00010700 [ 2.519995] ... APIC LVT1: 00010400 [ 2.519995] ... APIC LVTERR: 000000fe [ 2.519995] ... APIC TMICT: 0000a396 [ 2.519995] ... APIC TMCCT: 00006fb0 [ 2.519995] ... APIC TDCR: 00000003 [ 2.519995] [ 2.628165] number of MP IRQ sources: 17. [ 2.629998] number of IO-APIC #2 registers: 24. [ 2.636664] testing the IO APIC....................... [ 2.640000] [ 2.641467] IO APIC #2...... [ 2.643331] .... register #00: 00000000 [ 2.646665] ....... : physical APIC id: 00 [ 2.649997] ....... : Delivery Type: 0 [ 2.653331] ....... : LTS : 0 [ 2.656664] .... register #01: 00170011 [ 2.659998] ....... : max redirection entries: 0017 [ 2.663331] ....... : PRQ implemented: 0 [ 2.666664] ....... : IO APIC version: 0011 [ 2.669997] .... register #02: 00000000 [ 2.673331] ....... : arbitration: 00 [ 2.676664] .... IRQ redirection table: [ 2.679997] NR Dst Mask Trig IRR Pol Stat Dmod Deli Vect: [ 2.683333] 00 003 0 0 0 0 0 1 1 30 [ 2.686667] 01 003 0 0 0 0 0 1 1 31 [ 2.693333] 02 000 1 0 0 0 0 0 0 00 [ 2.696666] 03 003 1 1 0 1 0 1 1 33 [ 2.703333] 04 003 0 0 0 0 0 1 1 34 [ 2.710000] 05 003 1 1 0 1 0 1 1 35 [ 2.713333] 06 003 0 0 0 0 0 1 1 36 [ 2.720002] 07 003 1 0 0 0 0 1 1 37 [ 2.723333] 08 003 0 0 0 0 0 1 1 38 [ 2.730000] 09 003 0 0 0 0 0 1 1 39 [ 2.733333] 0a 003 0 0 0 0 0 1 1 3A [ 2.740000] 0b 003 1 1 0 1 0 1 1 3B [ 2.743333] 0c 003 0 0 0 0 0 1 1 3C [ 2.750000] 0d 003 0 0 0 0 0 1 1 3D [ 2.756666] 0e 003 0 0 0 0 0 1 1 3E [ 2.759999] 0f 003 0 0 0 0 0 1 1 3F [ 2.766667] 10 000 1 0 0 0 0 0 0 00 [ 2.769999] 11 000 1 0 0 0 0 0 0 00 [ 2.776666] 12 000 1 0 0 0 0 0 0 00 [ 2.780000] 13 000 1 0 0 0 0 0 0 00 [ 2.786666] 14 000 1 0 0 0 0 0 0 00 [ 2.793201] 15 000 1 0 0 0 0 0 0 00 [ 2.796666] 16 000 1 0 0 0 0 0 0 00 [ 2.803332] 17 000 1 0 0 0 0 0 0 00 [ 2.806665] IRQ to pin mappings: [ 2.809998] IRQ0 -> 0:0 [ 2.814021] IRQ1 -> 0:1 [ 2.816835] IRQ3 -> 0:3 [ 2.819258] IRQ4 -> 0:4 [ 2.820687] IRQ5 -> 0:5 [ 2.824020] IRQ6 -> 0:6 [ 2.826446] IRQ7 -> 0:7 [ 2.827354] IRQ8 -> 0:8 [ 2.830687] IRQ9 -> 0:9 [ 2.833501] IRQ10 -> 0:10 [ 2.836099] IRQ11 -> 0:11 [ 2.837441] IRQ12 -> 0:12 [ 2.840774] IRQ13 -> 0:13 [ 2.844107] IRQ14 -> 0:14 [ 2.846833] IRQ15 -> 0:15 [ 2.849537] .................................... done. [ 2.850000] initcall print_all_ICs+0x0/0x4a7 returned 0 after 338541 usecs [ 2.853332] calling hpet_late_init+0x0/0xc5 @ 1 [ 2.856666] initcall hpet_late_init+0x0/0xc5 returned -19 after 0 usecs [ 2.859999] calling clocksource_done_booting+0x0/0x16 @ 1 [ 2.863331] Switching to clocksource jiffies [ 2.866665] initcall clocksource_done_booting+0x0/0x16 returned 0 after 3255 usecs [ 2.869999] calling ftrace_init_debugfs+0x0/0x16a @ 1 [ 2.873372] initcall ftrace_init_debugfs+0x0/0x16a returned 0 after 0 usecs [ 2.876666] calling rb_init_debugfs+0x0/0x27 @ 1 [ 2.880002] initcall rb_init_debugfs+0x0/0x27 returned 0 after 0 usecs [ 2.883332] calling tracer_init_debugfs+0x0/0x26c @ 1 [ 2.886859] initcall tracer_init_debugfs+0x0/0x26c returned 0 after 0 usecs [ 2.890000] calling init_trace_printk_function_export+0x0/0x2a @ 1 [ 2.893336] initcall init_trace_printk_function_export+0x0/0x2a returned 0 after 0 usecs [ 2.896665] calling event_trace_init+0x0/0x410 @ 1 [ 2.920427] initcall event_trace_init+0x0/0x410 returned 0 after 19531 usecs [ 2.923334] calling ksym_tracer_stat_init+0x0/0x27 @ 1 [ 2.926672] initcall ksym_tracer_stat_init+0x0/0x27 returned 0 after 0 usecs [ 2.930000] calling init_pipe_fs+0x0/0x3d @ 1 [ 2.933360] initcall init_pipe_fs+0x0/0x3d returned 0 after 0 usecs [ 2.936666] calling anon_inode_init+0x0/0xeb @ 1 [ 2.940008] initcall anon_inode_init+0x0/0xeb returned 0 after 0 usecs [ 2.943333] calling tomoyo_initerface_init+0x0/0x112 @ 1 [ 2.946727] initcall tomoyo_initerface_init+0x0/0x112 returned 0 after 0 usecs [ 2.950001] calling blk_scsi_ioctl_init+0x0/0x294 @ 1 [ 2.953333] initcall blk_scsi_ioctl_init+0x0/0x294 returned 0 after 0 usecs [ 2.956666] calling chr_dev_init+0x0/0x89 @ 1 [ 2.960008] device class 'mem': registering [ 2.963436] device: 'mem': device_add [ 2.966721] device: 'null': device_add [ 2.970050] device: 'port': device_add [ 2.973382] device: 'zero': device_add [ 2.976718] device: 'full': device_add [ 2.980048] device: 'random': device_add [ 2.983382] device: 'urandom': device_add [ 2.986714] device: 'kmsg': device_add [ 2.990056] device: 'oldmem': device_add [ 2.993382] initcall chr_dev_init+0x0/0x89 returned 0 after 32552 usecs [ 2.996666] calling firmware_class_init+0x0/0x61 @ 1 [ 2.999997] device class 'firmware': registering [ 3.003375] initcall firmware_class_init+0x0/0x61 returned 0 after 3255 usecs [ 3.006667] calling ieee1394_init+0x0/0x208 @ 1 [ 3.013375] bus: 'ieee1394': registered [ 3.016667] device class 'ieee1394_host': registering [ 3.020042] device class 'ieee1394_protocol': registering [ 3.023377] device class 'ieee1394_node': registering [ 3.026709] device class 'ieee1394': registering [ 3.030043] bus: 'ieee1394': add driver nodemgr [ 3.033380] initcall ieee1394_init+0x0/0x208 returned 0 after 22786 usecs [ 3.036666] calling init_pcmcia_bus+0x0/0x6c @ 1 [ 3.040044] bus: 'pcmcia': registered [ 3.043343] initcall init_pcmcia_bus+0x0/0x6c returned 0 after 3255 usecs [ 3.046666] calling cpufreq_gov_performance_init+0x0/0xf @ 1 [ 3.050000] initcall cpufreq_gov_performance_init+0x0/0xf returned 0 after 0 usecs [ 3.053332] calling cpufreq_gov_powersave_init+0x0/0xf @ 1 [ 3.056667] initcall cpufreq_gov_powersave_init+0x0/0xf returned 0 after 0 usecs [ 3.059998] calling ssb_modinit+0x0/0x64 @ 1 [ 3.063375] bus: 'ssb': registered [ 3.066667] bus: 'pci': add driver b43-pci-bridge [ 3.070060] initcall ssb_modinit+0x0/0x64 returned 0 after 6510 usecs [ 3.073333] calling pcibios_assign_resources+0x0/0x81 @ 1 [ 3.076728] pci 0000:00:09.0: PCI bridge, secondary bus 0000:05 [ 3.079998] pci 0000:00:09.0: IO window: 0xc000-0xcfff [ 3.083333] pci 0000:00:09.0: MEM window: 0xda000000-0xda0fffff [ 3.086666] pci 0000:00:09.0: PREFETCH window: disabled [ 3.089999] pci 0000:00:0b.0: PCI bridge, secondary bus 0000:04 [ 3.093330] pci 0000:00:0b.0: IO window: disabled [ 3.096666] pci 0000:00:0b.0: MEM window: disabled [ 3.099999] pci 0000:00:0b.0: PREFETCH window: disabled [ 3.103332] pci 0000:00:0c.0: PCI bridge, secondary bus 0000:03 [ 3.106663] pci 0000:00:0c.0: IO window: disabled [ 3.109999] pci 0000:00:0c.0: MEM window: disabled [ 3.113332] pci 0000:00:0c.0: PREFETCH window: disabled [ 3.116666] pci 0000:00:0d.0: PCI bridge, secondary bus 0000:02 [ 3.119997] pci 0000:00:0d.0: IO window: disabled [ 3.123332] pci 0000:00:0d.0: MEM window: disabled [ 3.126665] pci 0000:00:0d.0: PREFETCH window: disabled [ 3.130004] pci 0000:00:0e.0: PCI bridge, secondary bus 0000:01 [ 3.133332] pci 0000:00:0e.0: IO window: 0xb000-0xbfff [ 3.136666] pci 0000:00:0e.0: MEM window: 0xd8000000-0xd9ffffff [ 3.139999] pci 0000:00:0e.0: PREFETCH window: 0x000000d0000000-0x000000d7ffffff [ 3.143339] pci 0000:00:09.0: setting latency timer to 64 [ 3.146670] pci 0000:00:0b.0: setting latency timer to 64 [ 3.150002] pci 0000:00:0c.0: setting latency timer to 64 [ 3.153335] pci 0000:00:0d.0: setting latency timer to 64 [ 3.156669] pci 0000:00:0e.0: setting latency timer to 64 [ 3.160000] pci_bus 0000:00: resource 0 io: [0x00-0xffff] [ 3.163331] pci_bus 0000:00: resource 1 mem: [0x000000-0xffffffffffffffff] [ 3.166664] pci_bus 0000:05: resource 0 io: [0xc000-0xcfff] [ 3.169998] pci_bus 0000:05: resource 1 mem: [0xda000000-0xda0fffff] [ 3.173331] pci_bus 0000:05: resource 3 io: [0x00-0xffff] [ 3.176665] pci_bus 0000:05: resource 4 mem: [0x000000-0xffffffffffffffff] [ 3.179998] pci_bus 0000:01: resource 0 io: [0xb000-0xbfff] [ 3.183331] pci_bus 0000:01: resource 1 mem: [0xd8000000-0xd9ffffff] [ 3.186665] pci_bus 0000:01: resource 2 pref mem [0xd0000000-0xd7ffffff] [ 3.189999] initcall pcibios_assign_resources+0x0/0x81 returned 0 after 110676 usecs [ 3.193332] calling sysctl_core_init+0x0/0x2d @ 1 [ 3.196706] initcall sysctl_core_init+0x0/0x2d returned 0 after 0 usecs [ 3.199999] calling inet_init+0x0/0x1cb @ 1 [ 3.203344] NET: Registered protocol family 2 [ 3.206814] IP route cache hash table entries: 32768 (order: 5, 131072 bytes) [ 3.210607] TCP established hash table entries: 131072 (order: 8, 1048576 bytes) [ 3.217937] TCP bind hash table entries: 65536 (order: 9, 2621440 bytes) [ 3.222111] TCP: Hash tables configured (established 131072 bind 65536) [ 3.223332] TCP reno registered [ 3.226818] initcall inet_init+0x0/0x1cb returned 0 after 22786 usecs [ 3.229999] calling af_unix_init+0x0/0x47 @ 1 [ 3.233345] NET: Registered protocol family 1 [ 3.236682] initcall af_unix_init+0x0/0x47 returned 0 after 3255 usecs [ 3.240001] calling populate_rootfs+0x0/0x8a @ 1 [ 3.243421] initcall populate_rootfs+0x0/0x8a returned 0 after 0 usecs [ 3.246666] calling i8259A_init_sysfs+0x0/0x1d @ 1 [ 3.249998] Registering sysdev class 'i8259' [ 3.253423] Registering sys device of class 'i8259' [ 3.256668] Registering sys device 'i82590' [ 3.260048] initcall i8259A_init_sysfs+0x0/0x1d returned 0 after 9765 usecs [ 3.263333] calling sbf_init+0x0/0xdb @ 1 [ 3.266666] initcall sbf_init+0x0/0xdb returned 0 after 0 usecs [ 3.269999] calling i8237A_init_sysfs+0x0/0x1d @ 1 [ 3.273330] Registering sysdev class 'i8237' [ 3.276709] Registering sys device of class 'i8237' [ 3.280001] Registering sys device 'i82370' [ 3.283372] initcall i8237A_init_sysfs+0x0/0x1d returned 0 after 9765 usecs [ 3.286665] calling add_rtc_cmos+0x0/0x31 @ 1 [ 3.290000] Registering platform device 'rtc_cmos'. Parent at platform [ 3.293331] device: 'rtc_cmos': device_add [ 3.296670] bus: 'platform': add device rtc_cmos [ 3.300048] platform rtc_cmos: registered platform RTC device (no PNP device found) [ 3.303332] initcall add_rtc_cmos+0x0/0x31 returned 0 after 13020 usecs [ 3.306666] calling cache_sysfs_init+0x0/0x28d @ 1 [ 3.310079] initcall cache_sysfs_init+0x0/0x28d returned 0 after 0 usecs [ 3.313332] calling cpu_debug_init+0x0/0x216 @ 1 [ 3.321195] cpu0(2) debug files 137 [ 3.325313] cpu1(2) debug files 137 [ 3.326669] initcall cpu_debug_init+0x0/0x216 returned 0 after 9765 usecs [ 3.329998] calling mce_init_device+0x0/0x276 @ 1 [ 3.333333] Registering sysdev class 'machinecheck' [ 3.336756] Registering sys device of class 'machinecheck' [ 3.340004] Registering sys device 'machinecheck0' [ 3.343374] Registering sys device of class 'machinecheck' [ 3.346667] Registering sys device 'machinecheck1' [ 3.350038] device: 'mcelog': device_add [ 3.353387] initcall mce_init_device+0x0/0x276 returned 0 after 19531 usecs [ 3.356665] calling threshold_init_device+0x0/0x6a @ 1 [ 3.359998] initcall threshold_init_device+0x0/0x6a returned 0 after 0 usecs [ 3.363333] calling inject_init+0x0/0x20 @ 1 [ 3.366664] Machine check injector initialized [ 3.369998] initcall inject_init+0x0/0x20 returned 0 after 3255 usecs [ 3.373331] calling longrun_init+0x0/0x2d @ 1 [ 3.376665] initcall longrun_init+0x0/0x2d returned -19 after 0 usecs [ 3.379998] calling cpufreq_gx_init+0x0/0x163 @ 1 [ 3.383331] initcall cpufreq_gx_init+0x0/0x163 returned -19 after 0 usecs [ 3.386664] calling speedstep_init+0x0/0xb3 @ 1 [ 3.389998] initcall speedstep_init+0x0/0xb3 returned -19 after 0 usecs [ 3.393331] calling msr_init+0x0/0xff @ 1 [ 3.396669] device class 'msr': registering [ 3.400046] device: 'msr0': device_add [ 3.403381] device: 'msr1': device_add [ 3.406715] initcall msr_init+0x0/0xff returned 0 after 9765 usecs [ 3.409998] calling cpuid_init+0x0/0xff @ 1 [ 3.413332] device class 'cpuid': registering [ 3.416716] device: 'cpu0': device_add [ 3.420056] device: 'cpu1': device_add [ 3.423382] initcall cpuid_init+0x0/0xff returned 0 after 9765 usecs [ 3.426666] calling ioapic_init_sysfs+0x0/0x84 @ 1 [ 3.429997] Registering sysdev class 'ioapic' [ 3.433374] Registering sys device of class 'ioapic' [ 3.436667] Registering sys device 'ioapic0' [ 3.440036] initcall ioapic_init_sysfs+0x0/0x84 returned 0 after 9765 usecs [ 3.443332] calling add_pcspkr+0x0/0x28 @ 1 [ 3.446666] Registering platform device 'pcspkr'. Parent at platform [ 3.449997] device: 'pcspkr': device_add [ 3.453334] bus: 'platform': add device pcspkr [ 3.456712] initcall add_pcspkr+0x0/0x28 returned 0 after 9765 usecs [ 3.460000] calling start_periodic_check_for_corruption+0x0/0x37 @ 1 [ 3.463331] Scanning for low memory corruption every 60 seconds [ 3.466668] initcall start_periodic_check_for_corruption+0x0/0x37 returned 0 after 3255 usecs [ 3.469999] calling pt_dump_init+0x0/0x69 @ 1 [ 3.473346] initcall pt_dump_init+0x0/0x69 returned 0 after 0 usecs [ 3.476665] calling aes_init+0x0/0xf @ 1 [ 3.480085] initcall aes_init+0x0/0xf returned 0 after 0 usecs [ 3.483332] calling init+0x0/0xf @ 1 [ 3.486696] initcall init+0x0/0xf returned 0 after 0 usecs [ 3.490004] calling crc32c_intel_mod_init+0x0/0x1d @ 1 [ 3.493332] initcall crc32c_intel_mod_init+0x0/0x1d returned -19 after 0 usecs [ 3.496665] calling init_sched_debug_procfs+0x0/0x27 @ 1 [ 3.500005] initcall init_sched_debug_procfs+0x0/0x27 returned 0 after 0 usecs [ 3.503332] calling proc_schedstat_init+0x0/0x1c @ 1 [ 3.506667] initcall proc_schedstat_init+0x0/0x1c returned 0 after 0 usecs [ 3.509998] calling proc_execdomains_init+0x0/0x1c @ 1 [ 3.513338] initcall proc_execdomains_init+0x0/0x1c returned 0 after 0 usecs [ 3.516666] calling ioresources_init+0x0/0x31 @ 1 [ 3.520003] initcall ioresources_init+0x0/0x31 returned 0 after 0 usecs [ 3.523332] calling uid_cache_init+0x0/0x78 @ 1 [ 3.526671] initcall uid_cache_init+0x0/0x78 returned 0 after 0 usecs [ 3.529997] calling init_posix_timers+0x0/0xb0 @ 1 [ 3.533333] initcall init_posix_timers+0x0/0xb0 returned 0 after 0 usecs [ 3.536665] calling init_posix_cpu_timers+0x0/0xb7 @ 1 [ 3.539998] initcall init_posix_cpu_timers+0x0/0xb7 returned 0 after 0 usecs [ 3.543330] calling nsproxy_cache_init+0x0/0x27 @ 1 [ 3.546665] initcall nsproxy_cache_init+0x0/0x27 returned 0 after 0 usecs [ 3.550000] calling create_proc_profile+0x0/0x1f4 @ 1 [ 3.553331] initcall create_proc_profile+0x0/0x1f4 returned 0 after 0 usecs [ 3.556664] calling timekeeping_init_device+0x0/0x1d @ 1 [ 3.559996] Registering sysdev class 'timekeeping' [ 3.563376] Registering sys device of class 'timekeeping' [ 3.566667] Registering sys device 'timekeeping0' [ 3.570037] initcall timekeeping_init_device+0x0/0x1d returned 0 after 9765 usecs [ 3.573331] calling init_clocksource_sysfs+0x0/0x43 @ 1 [ 3.576663] Registering sysdev class 'clocksource' [ 3.580038] Registering sys device of class 'clocksource' [ 3.583333] Registering sys device 'clocksource0' [ 3.586703] initcall init_clocksource_sysfs+0x0/0x43 returned 0 after 9765 usecs [ 3.589998] calling init_timer_list_procfs+0x0/0x27 @ 1 [ 3.593334] initcall init_timer_list_procfs+0x0/0x27 returned 0 after 0 usecs [ 3.596664] calling init_tstats_procfs+0x0/0x27 @ 1 [ 3.599999] initcall init_tstats_procfs+0x0/0x27 returned 0 after 0 usecs [ 3.603331] calling lockdep_proc_init+0x0/0x67 @ 1 [ 3.606671] initcall lockdep_proc_init+0x0/0x67 returned 0 after 0 usecs [ 3.609997] calling futex_init+0x0/0x8d @ 1 [ 3.613343] initcall futex_init+0x0/0x8d returned 0 after 0 usecs [ 3.616664] calling proc_dma_init+0x0/0x1c @ 1 [ 3.620000] initcall proc_dma_init+0x0/0x1c returned 0 after 0 usecs [ 3.623331] calling kallsyms_init+0x0/0x1f @ 1 [ 3.626666] initcall kallsyms_init+0x0/0x1f returned 0 after 0 usecs [ 3.629997] calling ikconfig_init+0x0/0x3a @ 1 [ 3.633332] initcall ikconfig_init+0x0/0x3a returned 0 after 0 usecs [ 3.636664] calling hung_task_init+0x0/0x42 @ 1 [ 3.640027] initcall hung_task_init+0x0/0x42 returned 0 after 0 usecs [ 3.643331] calling utsname_sysctl_init+0x0/0x11 @ 1 [ 3.646678] sysctl table check failed: /kernel/ostype .1.1 No proc_handler [ 3.655320] Pid: 1, comm: swapper Tainted: G W 2.6.31-rc6-tip #4534 [ 3.656664] Call Trace: [ 3.660000] [<c19fa80e>] ? printk+0x14/0x16 [ 3.663332] [<c105bbc0>] set_fail+0x38/0x45 [ 3.666665] [<c105bff2>] sysctl_check_table+0x425/0x490 [ 3.669999] [<c105c008>] sysctl_check_table+0x43b/0x490 [ 3.673332] [<c104331f>] __register_sysctl_paths+0xb6/0x230 [ 3.676666] [<c105e4f8>] ? jiffies_read+0x8/0x14 [ 3.679998] [<c105cfc0>] ? ktime_get+0x68/0xce [ 3.683332] [<c1ff4e19>] ? utsname_sysctl_init+0x0/0x11 [ 3.686665] [<c10434bc>] register_sysctl_paths+0x23/0x25 [ 3.689998] [<c10434d2>] register_sysctl_table+0x14/0x16 [ 3.693331] [<c1ff4e26>] utsname_sysctl_init+0xd/0x11 [ 3.696665] [<c1001074>] do_one_initcall+0x6a/0x177 [ 3.700000] [<c1066498>] ? __lock_acquire+0xbde/0xbed [ 3.703331] [<c1066498>] ? __lock_acquire+0xbde/0xbed [ 3.706665] [<c1066498>] ? __lock_acquire+0xbde/0xbed [ 3.709999] [<c1064d61>] ? mark_held_locks+0x47/0x5f [ 3.713333] [<c10b3070>] ? kmem_cache_free+0x9b/0xcf [ 3.716665] [<c1064fdf>] ? trace_hardirqs_on_caller+0x10b/0x133 [ 3.719998] [<c1065012>] ? trace_hardirqs_on+0xb/0xd [ 3.723334] [<c12e4870>] ? ida_get_new_above+0x158/0x172 [ 3.726665] [<c10fd27d>] ? proc_register+0x14b/0x15c [ 3.730000] [<c12ed8c5>] ? _raw_spin_unlock+0x92/0x98 [ 3.733332] [<c19fccd3>] ? _spin_unlock+0x22/0x25 [ 3.736665] [<c10fd27d>] ? proc_register+0x14b/0x15c [ 3.739998] [<c10fd3a6>] ? create_proc_entry+0x7c/0x90 [ 3.743333] [<c1071412>] ? register_irq_proc+0x91/0xad [ 3.746667] [<c107138f>] ? register_irq_proc+0xe/0xad [ 3.749999] [<c106f180>] ? irq_to_desc+0x8/0x21 [ 3.753332] [<c1071486>] ? init_irq_proc+0x58/0x65 [ 3.756666] [<c1fe2665>] kernel_init+0x170/0x1c1 [ 3.759998] [<c1fe24f5>] ? kernel_init+0x0/0x1c1 [ 3.763333] [<c1004227>] kernel_thread_helper+0x7/0x10 [ 3.766669] sysctl table check failed: /kernel/osrelease .1.2 No proc_handler [ 3.776665] Pid: 1, comm: swapper Tainted: G W 2.6.31-rc6-tip #4534 [ 3.779995] Call Trace: [ 3.782419] [<c19fa80e>] ? printk+0x14/0x16 [ 3.783332] [<c105bbc0>] set_fail+0x38/0x45 [ 3.786665] [<c105bff2>] sysctl_check_table+0x425/0x490 [ 3.789999] [<c105c008>] sysctl_check_table+0x43b/0x490 [ 3.793331] [<c104331f>] __register_sysctl_paths+0xb6/0x230 [ 3.796665] [<c105e4f8>] ? jiffies_read+0x8/0x14 [ 3.799998] [<c105cfc0>] ? ktime_get+0x68/0xce [ 3.803332] [<c1ff4e19>] ? utsname_sysctl_init+0x0/0x11 [ 3.806664] [<c10434bc>] register_sysctl_paths+0x23/0x25 [ 3.809998] [<c10434d2>] register_sysctl_table+0x14/0x16 [ 3.813331] [<c1ff4e26>] utsname_sysctl_init+0xd/0x11 [ 3.816665] [<c1001074>] do_one_initcall+0x6a/0x177 [ 3.819999] [<c1066498>] ? __lock_acquire+0xbde/0xbed [ 3.823332] [<c1066498>] ? __lock_acquire+0xbde/0xbed [ 3.826665] [<c1066498>] ? __lock_acquire+0xbde/0xbed [ 3.829999] [<c1064d61>] ? mark_held_locks+0x47/0x5f [ 3.833331] [<c10b3070>] ? kmem_cache_free+0x9b/0xcf [ 3.836665] [<c1064fdf>] ? trace_hardirqs_on_caller+0x10b/0x133 [ 3.839998] [<c1065012>] ? trace_hardirqs_on+0xb/0xd [ 3.843332] [<c12e4870>] ? ida_get_new_above+0x158/0x172 [ 3.846664] [<c10fd27d>] ? proc_register+0x14b/0x15c [ 3.849998] [<c12ed8c5>] ? _raw_spin_unlock+0x92/0x98 [ 3.853331] [<c19fccd3>] ? _spin_unlock+0x22/0x25 [ 3.856665] [<c10fd27d>] ? proc_register+0x14b/0x15c [ 3.859997] [<c10fd3a6>] ? create_proc_entry+0x7c/0x90 [ 3.863331] [<c1071412>] ? register_irq_proc+0x91/0xad [ 3.866664] [<c107138f>] ? register_irq_proc+0xe/0xad [ 3.869999] [<c106f180>] ? irq_to_desc+0x8/0x21 [ 3.873331] [<c1071486>] ? init_irq_proc+0x58/0x65 [ 3.876665] [<c1fe2665>] kernel_init+0x170/0x1c1 [ 3.879998] [<c1fe24f5>] ? kernel_init+0x0/0x1c1 [ 3.883333] [<c1004227>] kernel_thread_helper+0x7/0x10 [ 3.886669] sysctl table check failed: /kernel/version .1.4 No proc_handler [ 3.893330] Pid: 1, comm: swapper Tainted: G W 2.6.31-rc6-tip #4534 [ 3.896663] Call Trace: [ 3.899997] [<c19fa80e>] ? printk+0x14/0x16 [ 3.903331] [<c105bbc0>] set_fail+0x38/0x45 [ 3.906664] [<c105bff2>] sysctl_check_table+0x425/0x490 [ 3.909999] [<c105c008>] sysctl_check_table+0x43b/0x490 [ 3.913331] [<c104331f>] __register_sysctl_paths+0xb6/0x230 [ 3.916665] [<c105e4f8>] ? jiffies_read+0x8/0x14 [ 3.919998] [<c105cfc0>] ? ktime_get+0x68/0xce [ 3.923332] [<c1ff4e19>] ? utsname_sysctl_init+0x0/0x11 [ 3.926664] [<c10434bc>] register_sysctl_paths+0x23/0x25 [ 3.929998] [<c10434d2>] register_sysctl_table+0x14/0x16 [ 3.933331] [<c1ff4e26>] utsname_sysctl_init+0xd/0x11 [ 3.936665] [<c1001074>] do_one_initcall+0x6a/0x177 [ 3.939998] [<c1066498>] ? __lock_acquire+0xbde/0xbed [ 3.943331] [<c1066498>] ? __lock_acquire+0xbde/0xbed [ 3.946664] [<c1066498>] ? __lock_acquire+0xbde/0xbed [ 3.949999] [<c1064d61>] ? mark_held_locks+0x47/0x5f [ 3.953331] [<c10b3070>] ? kmem_cache_free+0x9b/0xcf [ 3.956665] [<c1064fdf>] ? trace_hardirqs_on_caller+0x10b/0x133 [ 3.959998] [<c1065012>] ? trace_hardirqs_on+0xb/0xd [ 3.963332] [<c12e4870>] ? ida_get_new_above+0x158/0x172 [ 3.966664] [<c10fd27d>] ? proc_register+0x14b/0x15c [ 3.969998] [<c12ed8c5>] ? _raw_spin_unlock+0x92/0x98 [ 3.973331] [<c19fccd3>] ? _spin_unlock+0x22/0x25 [ 3.976665] [<c10fd27d>] ? proc_register+0x14b/0x15c [ 3.979997] [<c10fd3a6>] ? create_proc_entry+0x7c/0x90 [ 3.983331] [<c1071412>] ? register_irq_proc+0x91/0xad [ 3.986665] [<c107138f>] ? register_irq_proc+0xe/0xad [ 3.989998] [<c106f180>] ? irq_to_desc+0x8/0x21 [ 3.993331] [<c1071486>] ? init_irq_proc+0x58/0x65 [ 3.996665] [<c1fe2665>] kernel_init+0x170/0x1c1 [ 3.999997] [<c1fe24f5>] ? kernel_init+0x0/0x1c1 [ 4.003334] [<c1004227>] kernel_thread_helper+0x7/0x10 [ 4.006668] sysctl table check failed: /kernel/hostname .1.7 No proc_handler [ 4.015319] Pid: 1, comm: swapper Tainted: G W 2.6.31-rc6-tip #4534 [ 4.016663] Call Trace: [ 4.019997] [<c19fa80e>] ? printk+0x14/0x16 [ 4.023331] [<c105bbc0>] set_fail+0x38/0x45 [ 4.026664] [<c105bff2>] sysctl_check_table+0x425/0x490 [ 4.029999] [<c105c008>] sysctl_check_table+0x43b/0x490 [ 4.033331] [<c104331f>] __register_sysctl_paths+0xb6/0x230 [ 4.036665] [<c105e4f8>] ? jiffies_read+0x8/0x14 [ 4.039997] [<c105cfc0>] ? ktime_get+0x68/0xce [ 4.043332] [<c1ff4e19>] ? utsname_sysctl_init+0x0/0x11 [ 4.046664] [<c10434bc>] register_sysctl_paths+0x23/0x25 [ 4.049998] [<c10434d2>] register_sysctl_table+0x14/0x16 [ 4.053330] [<c1ff4e26>] utsname_sysctl_init+0xd/0x11 [ 4.056665] [<c1001074>] do_one_initcall+0x6a/0x177 [ 4.059998] [<c1066498>] ? __lock_acquire+0xbde/0xbed [ 4.063331] [<c1066498>] ? __lock_acquire+0xbde/0xbed [ 4.066664] [<c1066498>] ? __lock_acquire+0xbde/0xbed [ 4.069999] [<c1064d61>] ? mark_held_locks+0x47/0x5f [ 4.073331] [<c10b3070>] ? kmem_cache_free+0x9b/0xcf [ 4.076665] [<c1064fdf>] ? trace_hardirqs_on_caller+0x10b/0x133 [ 4.079997] [<c1065012>] ? trace_hardirqs_on+0xb/0xd [ 4.083332] [<c12e4870>] ? ida_get_new_above+0x158/0x172 [ 4.086664] [<c10fd27d>] ? proc_register+0x14b/0x15c [ 4.089998] [<c12ed8c5>] ? _raw_spin_unlock+0x92/0x98 [ 4.093331] [<c19fccd3>] ? _spin_unlock+0x22/0x25 [ 4.096665] [<c10fd27d>] ? proc_register+0x14b/0x15c [ 4.099997] [<c10fd3a6>] ? create_proc_entry+0x7c/0x90 [ 4.103331] [<c1071412>] ? register_irq_proc+0x91/0xad [ 4.106664] [<c107138f>] ? register_irq_proc+0xe/0xad [ 4.109998] [<c106f180>] ? irq_to_desc+0x8/0x21 [ 4.113331] [<c1071486>] ? init_irq_proc+0x58/0x65 [ 4.116664] [<c1fe2665>] kernel_init+0x170/0x1c1 [ 4.119997] [<c1fe24f5>] ? kernel_init+0x0/0x1c1 [ 4.123332] [<c1004227>] kernel_thread_helper+0x7/0x10 [ 4.126668] sysctl table check failed: /kernel/domainname .1.8 No proc_handler [ 4.136664] Pid: 1, comm: swapper Tainted: G W 2.6.31-rc6-tip #4534 [ 4.139995] Call Trace: [ 4.142419] [<c19fa80e>] ? printk+0x14/0x16 [ 4.143331] [<c105bbc0>] set_fail+0x38/0x45 [ 4.146664] [<c105bff2>] sysctl_check_table+0x425/0x490 [ 4.149999] [<c105c008>] sysctl_check_table+0x43b/0x490 [ 4.153331] [<c104331f>] __register_sysctl_paths+0xb6/0x230 [ 4.156665] [<c105e4f8>] ? jiffies_read+0x8/0x14 [ 4.159997] [<c105cfc0>] ? ktime_get+0x68/0xce [ 4.163331] [<c1ff4e19>] ? utsname_sysctl_init+0x0/0x11 [ 4.166664] [<c10434bc>] register_sysctl_paths+0x23/0x25 [ 4.169997] [<c10434d2>] register_sysctl_table+0x14/0x16 [ 4.173330] [<c1ff4e26>] utsname_sysctl_init+0xd/0x11 [ 4.176664] [<c1001074>] do_one_initcall+0x6a/0x177 [ 4.179998] [<c1066498>] ? __lock_acquire+0xbde/0xbed [ 4.183331] [<c1066498>] ? __lock_acquire+0xbde/0xbed [ 4.186664] [<c1066498>] ? __lock_acquire+0xbde/0xbed [ 4.189999] [<c1064d61>] ? mark_held_locks+0x47/0x5f [ 4.193330] [<c10b3070>] ? kmem_cache_free+0x9b/0xcf [ 4.196664] [<c1064fdf>] ? trace_hardirqs_on_caller+0x10b/0x133 [ 4.199997] [<c1065012>] ? trace_hardirqs_on+0xb/0xd [ 4.203332] [<c12e4870>] ? ida_get_new_above+0x158/0x172 [ 4.206664] [<c10fd27d>] ? proc_register+0x14b/0x15c [ 4.209998] [<c12ed8c5>] ? _raw_spin_unlock+0x92/0x98 [ 4.213330] [<c19fccd3>] ? _spin_unlock+0x22/0x25 [ 4.216665] [<c10fd27d>] ? proc_register+0x14b/0x15c [ 4.219997] [<c10fd3a6>] ? create_proc_entry+0x7c/0x90 [ 4.223331] [<c1071412>] ? register_irq_proc+0x91/0xad [ 4.226664] [<c107138f>] ? register_irq_proc+0xe/0xad [ 4.229998] [<c106f180>] ? irq_to_desc+0x8/0x21 [ 4.233330] [<c1071486>] ? init_irq_proc+0x58/0x65 [ 4.236664] [<c1fe2665>] kernel_init+0x170/0x1c1 [ 4.239997] [<c1fe24f5>] ? kernel_init+0x0/0x1c1 [ 4.243332] [<c1004227>] kernel_thread_helper+0x7/0x10 [ 4.246664] initcall utsname_sysctl_init+0x0/0x11 returned 0 after 585936 usecs [ 4.249997] calling init_lstats_procfs+0x0/0x1f @ 1 [ 4.253334] initcall init_lstats_procfs+0x0/0x1f returned 0 after 0 usecs [ 4.256664] calling ftrace_nodyn_init+0x0/0x11 @ 1 [ 4.259999] initcall ftrace_nodyn_init+0x0/0x11 returned 0 after 0 usecs [ 4.263330] calling init_events+0x0/0x5a @ 1 [ 4.266669] initcall init_events+0x0/0x5a returned 0 after 0 usecs [ 4.269998] calling init_sched_switch_trace+0x0/0xf @ 1 [ 4.273333] Testing tracer sched_switch: PASSED [ 4.380616] initcall init_sched_switch_trace+0x0/0xf returned 0 after 104166 usecs [ 4.383330] calling init_function_trace+0x0/0xf @ 1 [ 4.386663] Testing tracer function: PASSED [ 4.500791] initcall init_function_trace+0x0/0xf returned 0 after 110676 usecs [ 4.503330] calling init_wakeup_tracer+0x0/0x1d @ 1 [ 4.506663] Testing tracer wakeup: PASSED [ 4.717243] Testing tracer wakeup_rt: PASSED [ 4.927238] initcall init_wakeup_tracer+0x0/0x1d returned 0 after 410155 usecs [ 4.929997] calling stack_trace_init+0x0/0x5b @ 1 [ 4.933340] initcall stack_trace_init+0x0/0x5b returned 0 after 0 usecs [ 4.936663] calling init_blk_tracer+0x0/0x4b @ 1 [ 4.939997] initcall init_blk_tracer+0x0/0x4b returned 0 after 0 usecs [ 4.943330] calling init_ksym_trace+0x0/0x47 @ 1 [ 4.946666] Testing tracer ksym_tracer: PASSED [ 4.970588] initcall init_ksym_trace+0x0/0x47 returned 0 after 22786 usecs [ 4.973329] calling perf_counter_sysfs_init+0x0/0x14 @ 1 [ 4.976674] initcall perf_counter_sysfs_init+0x0/0x14 returned 0 after 0 usecs [ 4.979996] calling init_per_zone_wmark_min+0x0/0x65 @ 1 [ 4.983404] initcall init_per_zone_wmark_min+0x0/0x65 returned 0 after 0 usecs [ 4.986662] calling pdflush_init+0x0/0x1b @ 1 [ 4.990049] initcall pdflush_init+0x0/0x1b returned 0 after 0 usecs [ 4.993330] calling kswapd_init+0x0/0x50 @ 1 [ 4.996691] initcall kswapd_init+0x0/0x50 returned 0 after 0 usecs [ 4.999997] calling init_tmpfs+0x0/0xb9 @ 1 [ 5.003378] initcall init_tmpfs+0x0/0xb9 returned 0 after 0 usecs [ 5.006663] calling setup_vmstat+0x0/0xa2 @ 1 [ 5.010014] initcall setup_vmstat+0x0/0xa2 returned 0 after 0 usecs [ 5.013329] calling mm_sysfs_init+0x0/0x22 @ 1 [ 5.016668] initcall mm_sysfs_init+0x0/0x22 returned 0 after 0 usecs [ 5.019996] calling proc_vmalloc_init+0x0/0x1f @ 1 [ 5.023338] initcall proc_vmalloc_init+0x0/0x1f returned 0 after 0 usecs [ 5.026662] calling init_emergency_pool+0x0/0x58 @ 1 [ 5.030131] highmem bounce pool size: 64 pages [ 5.033330] initcall init_emergency_pool+0x0/0x58 returned 0 after 3255 usecs [ 5.036663] calling hugetlb_init+0x0/0x2f4 @ 1 [ 5.039996] HugeTLB registered 2 MB page size, pre-allocated 0 pages [ 5.043342] initcall hugetlb_init+0x0/0x2f4 returned 0 after 3255 usecs [ 5.046662] calling fasync_init+0x0/0x24 @ 1 [ 5.050000] initcall fasync_init+0x0/0x24 returned 0 after 0 usecs [ 5.053329] calling proc_filesystems_init+0x0/0x1c @ 1 [ 5.056665] initcall proc_filesystems_init+0x0/0x1c returned 0 after 0 usecs [ 5.059995] calling dnotify_init+0x0/0x6f @ 1 [ 5.063333] initcall dnotify_init+0x0/0x6f returned 0 after 0 usecs [ 5.066662] calling inotify_setup+0x0/0x11 @ 1 [ 5.069996] initcall inotify_setup+0x0/0x11 returned 0 after 0 usecs [ 5.073329] calling inotify_user_setup+0x0/0x9e @ 1 [ 5.076677] initcall inotify_user_setup+0x0/0x9e returned 0 after 0 usecs [ 5.079996] calling aio_setup+0x0/0x66 @ 1 [ 5.083378] initcall aio_setup+0x0/0x66 returned 0 after 0 usecs [ 5.086663] calling proc_locks_init+0x0/0x1c @ 1 [ 5.090000] initcall proc_locks_init+0x0/0x1c returned 0 after 0 usecs [ 5.093329] calling init_mbcache+0x0/0x11 @ 1 [ 5.096663] initcall init_mbcache+0x0/0x11 returned 0 after 0 usecs [ 5.099995] calling dquot_init+0x0/0xe4 @ 1 [ 5.103328] VFS: Disk quotas dquot_6.5.2 [ 5.106724] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes) [ 5.110006] initcall dquot_init+0x0/0xe4 returned 0 after 6510 usecs [ 5.113329] calling init_v1_quota_format+0x0/0xf @ 1 [ 5.116663] initcall init_v1_quota_format+0x0/0xf returned 0 after 0 usecs [ 5.119995] calling init_v2_quota_format+0x0/0xf @ 1 [ 5.123330] initcall init_v2_quota_format+0x0/0xf returned 0 after 0 usecs [ 5.126662] calling proc_cmdline_init+0x0/0x1c @ 1 [ 5.129999] initcall proc_cmdline_init+0x0/0x1c returned 0 after 0 usecs [ 5.133329] calling proc_cpuinfo_init+0x0/0x1c @ 1 [ 5.136669] initcall proc_cpuinfo_init+0x0/0x1c returned 0 after 0 usecs [ 5.139996] calling proc_devices_init+0x0/0x1c @ 1 [ 5.143331] initcall proc_devices_init+0x0/0x1c returned 0 after 0 usecs [ 5.146662] calling proc_interrupts_init+0x0/0x1c @ 1 [ 5.149998] initcall proc_interrupts_init+0x0/0x1c returned 0 after 0 usecs [ 5.153329] calling proc_loadavg_init+0x0/0x1c @ 1 [ 5.156665] initcall proc_loadavg_init+0x0/0x1c returned 0 after 0 usecs [ 5.159995] calling proc_meminfo_init+0x0/0x1c @ 1 [ 5.163331] initcall proc_meminfo_init+0x0/0x1c returned 0 after 0 usecs [ 5.166662] calling proc_stat_init+0x0/0x1c @ 1 [ 5.169998] initcall proc_stat_init+0x0/0x1c returned 0 after 0 usecs [ 5.173329] calling proc_uptime_init+0x0/0x1c @ 1 [ 5.176665] initcall proc_uptime_init+0x0/0x1c returned 0 after 0 usecs [ 5.179999] calling proc_version_init+0x0/0x1c @ 1 [ 5.183332] initcall proc_version_init+0x0/0x1c returned 0 after 0 usecs [ 5.186662] calling proc_softirqs_init+0x0/0x1c @ 1 [ 5.189998] initcall proc_softirqs_init+0x0/0x1c returned 0 after 0 usecs [ 5.193329] calling proc_kcore_init+0x0/0x40 @ 1 [ 5.196665] initcall proc_kcore_init+0x0/0x40 returned 0 after 0 usecs [ 5.199995] calling vmcore_init+0x0/0x9b3 @ 1 [ 5.203330] initcall vmcore_init+0x0/0x9b3 returned 0 after 0 usecs [ 5.206662] calling proc_kmsg_init+0x0/0x1f @ 1 [ 5.209998] initcall proc_kmsg_init+0x0/0x1f returned 0 after 0 usecs [ 5.213329] calling configfs_init+0x0/0xd6 @ 1 [ 5.216676] initcall configfs_init+0x0/0xd6 returned 0 after 0 usecs [ 5.219996] calling init_devpts_fs+0x0/0x3d @ 1 [ 5.223345] initcall init_devpts_fs+0x0/0x3d returned 0 after 0 usecs [ 5.226662] calling init_ext3_fs+0x0/0x64 @ 1 [ 5.230002] initcall init_ext3_fs+0x0/0x64 returned 0 after 0 usecs [ 5.233329] calling init_ext2_fs+0x0/0x64 @ 1 [ 5.236671] initcall init_ext2_fs+0x0/0x64 returned 0 after 0 usecs [ 5.239996] calling journal_init+0x0/0xb6 @ 1 [ 5.243351] initcall journal_init+0x0/0xb6 returned 0 after 0 usecs [ 5.246662] calling journal_init+0x0/0x9a @ 1 [ 5.250003] initcall journal_init+0x0/0x9a returned 0 after 0 usecs [ 5.253329] calling init_ramfs_fs+0x0/0xf @ 1 [ 5.256664] initcall init_ramfs_fs+0x0/0xf returned 0 after 0 usecs [ 5.259996] calling init_hugetlbfs_fs+0x0/0x82 @ 1 [ 5.263361] initcall init_hugetlbfs_fs+0x0/0x82 returned 0 after 0 usecs [ 5.266663] calling init_fat_fs+0x0/0x46 @ 1 [ 5.269998] initcall init_fat_fs+0x0/0x46 returned 0 after 0 usecs [ 5.273329] calling init_msdos_fs+0x0/0xf @ 1 [ 5.276664] initcall init_msdos_fs+0x0/0xf returned 0 after 0 usecs [ 5.279995] calling init_nfs_fs+0x0/0x11c @ 1 [ 5.283406] initcall init_nfs_fs+0x0/0x11c returned 0 after 0 usecs [ 5.286663] calling init_nfsd+0x0/0xca @ 1 [ 5.289994] Installing knfsd (copyright (C) 1996 [email protected]). [ 5.293550] initcall init_nfsd+0x0/0xca returned 0 after 3255 usecs [ 5.296663] calling init_nlm+0x0/0x1c @ 1 [ 5.300035] initcall init_nlm+0x0/0x1c returned 0 after 0 usecs [ 5.303329] calling init_nls_cp437+0x0/0xf @ 1 [ 5.306663] initcall init_nls_cp437+0x0/0xf returned 0 after 0 usecs [ 5.310000] calling init_nls_cp737+0x0/0xf @ 1 [ 5.313329] initcall init_nls_cp737+0x0/0xf returned 0 after 0 usecs [ 5.316663] calling init_nls_cp775+0x0/0xf @ 1 [ 5.319996] initcall init_nls_cp775+0x0/0xf returned 0 after 0 usecs [ 5.323329] calling init_nls_cp850+0x0/0xf @ 1 [ 5.326663] initcall init_nls_cp850+0x0/0xf returned 0 after 0 usecs [ 5.329995] calling init_nls_cp852+0x0/0xf @ 1 [ 5.333329] initcall init_nls_cp852+0x0/0xf returned 0 after 0 usecs [ 5.336662] calling init_nls_cp855+0x0/0xf @ 1 [ 5.339996] initcall init_nls_cp855+0x0/0xf returned 0 after 0 usecs [ 5.343328] calling init_nls_cp857+0x0/0xf @ 1 [ 5.346662] initcall init_nls_cp857+0x0/0xf returned 0 after 0 usecs [ 5.349995] calling init_nls_cp861+0x0/0xf @ 1 [ 5.353329] initcall init_nls_cp861+0x0/0xf returned 0 after 0 usecs [ 5.356662] calling init_nls_cp863+0x0/0xf @ 1 [ 5.359996] initcall init_nls_cp863+0x0/0xf returned 0 after 0 usecs [ 5.363328] calling init_nls_cp865+0x0/0xf @ 1 [ 5.366662] initcall init_nls_cp865+0x0/0xf returned 0 after 0 usecs [ 5.369995] calling init_nls_cp869+0x0/0xf @ 1 [ 5.373329] initcall init_nls_cp869+0x0/0xf returned 0 after 0 usecs [ 5.376662] calling init_nls_cp874+0x0/0xf @ 1 [ 5.379996] initcall init_nls_cp874+0x0/0xf returned 0 after 0 usecs [ 5.383328] calling init_nls_cp949+0x0/0xf @ 1 [ 5.386662] initcall init_nls_cp949+0x0/0xf returned 0 after 0 usecs [ 5.389995] calling init_nls_cp950+0x0/0xf @ 1 [ 5.393329] initcall init_nls_cp950+0x0/0xf returned 0 after 0 usecs [ 5.396662] calling init_nls_cp1250+0x0/0xf @ 1 [ 5.399996] initcall init_nls_cp1250+0x0/0xf returned 0 after 0 usecs [ 5.403328] calling init_nls_ascii+0x0/0xf @ 1 [ 5.406662] initcall init_nls_ascii+0x0/0xf returned 0 after 0 usecs [ 5.409995] calling init_nls_iso8859_2+0x0/0xf @ 1 [ 5.413329] initcall init_nls_iso8859_2+0x0/0xf returned 0 after 0 usecs [ 5.416662] calling init_nls_iso8859_4+0x0/0xf @ 1 [ 5.419996] initcall init_nls_iso8859_4+0x0/0xf returned 0 after 0 usecs [ 5.423328] calling init_nls_iso8859_6+0x0/0xf @ 1 [ 5.426662] initcall init_nls_iso8859_6+0x0/0xf returned 0 after 0 usecs [ 5.429995] calling init_nls_iso8859_7+0x0/0xf @ 1 [ 5.433329] initcall init_nls_iso8859_7+0x0/0xf returned 0 after 0 usecs [ 5.436664] calling init_nls_cp1255+0x0/0xf @ 1 [ 5.439996] initcall init_nls_cp1255+0x0/0xf returned 0 after 0 usecs [ 5.443328] calling init_nls_iso8859_9+0x0/0xf @ 1 [ 5.446662] initcall init_nls_iso8859_9+0x0/0xf returned 0 after 0 usecs [ 5.449995] calling init_nls_iso8859_13+0x0/0xf @ 1 [ 5.453329] initcall init_nls_iso8859_13+0x0/0xf returned 0 after 0 usecs [ 5.456662] calling init_nls_iso8859_14+0x0/0xf @ 1 [ 5.459996] initcall init_nls_iso8859_14+0x0/0xf returned 0 after 0 usecs [ 5.463328] calling init_nls_iso8859_15+0x0/0xf @ 1 [ 5.466662] initcall init_nls_iso8859_15+0x0/0xf returned 0 after 0 usecs [ 5.469995] calling init_nls_koi8_r+0x0/0xf @ 1 [ 5.473329] initcall init_nls_koi8_r+0x0/0xf returned 0 after 0 usecs [ 5.476662] calling init_nls_utf8+0x0/0x1f @ 1 [ 5.479996] initcall init_nls_utf8+0x0/0x1f returned 0 after 0 usecs [ 5.483328] calling init_smb_fs+0x0/0x64 @ 1 [ 5.486664] initcall init_smb_fs+0x0/0x64 returned 0 after 0 usecs [ 5.493330] calling init_ncp_fs+0x0/0x54 @ 1 [ 5.496664] initcall init_ncp_fs+0x0/0x54 returned 0 after 0 usecs [ 5.503328] calling init_ntfs_fs+0x0/0x1ea @ 1 [ 5.506660] NTFS driver 2.1.29 [Flags: R/W DEBUG]. [ 5.513357] initcall init_ntfs_fs+0x0/0x1ea returned 0 after 6510 usecs [ 5.519995] calling init_autofs_fs+0x0/0xf @ 1 [ 5.523330] initcall init_autofs_fs+0x0/0xf returned 0 after 0 usecs [ 5.529995] calling init_jfs_fs+0x0/0x207 @ 1 [ 5.533345] JFS: nTxBlock = 7693, nTxLock = 61550 [ 5.544201] initcall init_jfs_fs+0x0/0x207 returned 0 after 9765 usecs [ 5.549999] calling init_xfs_fs+0x0/0x9b @ 1 [ 5.553327] SGI XFS with ACLs, security attributes, realtime, no debug enabled [ 5.562387] initcall init_xfs_fs+0x0/0x9b returned 0 after 6510 usecs [ 5.566663] calling ocfs2_init+0x0/0x316 @ 1 [ 5.573328] OCFS2 1.5.0 [ 5.575889] initcall ocfs2_init+0x0/0x316 returned 0 after 0 usecs [ 5.579996] calling ocfs2_stack_glue_init+0x0/0x7c @ 1 [ 5.586716] initcall ocfs2_stack_glue_init+0x0/0x7c returned 0 after 0 usecs [ 5.593328] calling init_o2nm+0x0/0x92 @ 1 [ 5.596660] OCFS2 Node Manager 1.5.0 [ 5.602357] initcall init_o2nm+0x0/0x92 returned 0 after 3255 usecs [ 5.606662] calling ipc_init+0x0/0x20 @ 1 [ 5.610000] msgmni has been set to 1683 [ 5.613333] initcall ipc_init+0x0/0x20 returned 0 after 3255 usecs [ 5.619995] calling ipc_sysctl_init+0x0/0x11 @ 1 [ 5.626672] sysctl table check failed: /kernel/shmmax .1.34 No proc_handler [ 5.632072] Pid: 1, comm: swapper Tainted: G W 2.6.31-rc6-tip #4534 [ 5.639993] Call Trace: [ 5.643331] [<c19fa80e>] ? printk+0x14/0x16 [ 5.646664] [<c105bbc0>] set_fail+0x38/0x45 [ 5.649996] [<c105bff2>] sysctl_check_table+0x425/0x490 [ 5.656662] [<c105c008>] sysctl_check_table+0x43b/0x490 [ 5.659997] [<c104331f>] __register_sysctl_paths+0xb6/0x230 [ 5.666662] [<c1ffc6a6>] ? ipc_init_proc_interface+0x8a/0x9f [ 5.673329] [<c105e4f8>] ? jiffies_read+0x8/0x14 [ 5.676662] [<c105cfc0>] ? ktime_get+0x68/0xce [ 5.679998] [<c1ffc745>] ? ipc_sysctl_init+0x0/0x11 [ 5.686662] [<c10434bc>] register_sysctl_paths+0x23/0x25 [ 5.693329] [<c10434d2>] register_sysctl_table+0x14/0x16 [ 5.696662] [<c1ffc752>] ipc_sysctl_init+0xd/0x11 [ 5.703329] [<c1001074>] do_one_initcall+0x6a/0x177 [ 5.706665] [<c1066498>] ? __lock_acquire+0xbde/0xbed [ 5.713329] [<c1066498>] ? __lock_acquire+0xbde/0xbed [ 5.716662] [<c1066498>] ? __lock_acquire+0xbde/0xbed [ 5.723329] [<c1064d61>] ? mark_held_locks+0x47/0x5f [ 5.726664] [<c10b3070>] ? kmem_cache_free+0x9b/0xcf [ 5.733329] [<c1064fdf>] ? trace_hardirqs_on_caller+0x10b/0x133 [ 5.739996] [<c1065012>] ? trace_hardirqs_on+0xb/0xd [ 5.743331] [<c12e4870>] ? ida_get_new_above+0x158/0x172 [ 5.749996] [<c10fd27d>] ? proc_register+0x14b/0x15c [ 5.753330] [<c12ed8c5>] ? _raw_spin_unlock+0x92/0x98 [ 5.759997] [<c19fccd3>] ? _spin_unlock+0x22/0x25 [ 5.763328] [<c10fd27d>] ? proc_register+0x14b/0x15c [ 5.769995] [<c10fd3a6>] ? create_proc_entry+0x7c/0x90 [ 5.773330] [<c1071412>] ? register_irq_proc+0x91/0xad [ 5.779996] [<c107138f>] ? register_irq_proc+0xe/0xad [ 5.783329] [<c106f180>] ? irq_to_desc+0x8/0x21 [ 5.789996] [<c1071486>] ? init_irq_proc+0x58/0x65 [ 5.793331] [<c1fe2665>] kernel_init+0x170/0x1c1 [ 5.799996] [<c1fe24f5>] ? kernel_init+0x0/0x1c1 [ 5.803330] [<c1004227>] kernel_thread_helper+0x7/0x10 [ 5.810002] sysctl table check failed: /kernel/shmall .1.41 No proc_handler [ 5.815144] Pid: 1, comm: swapper Tainted: G W 2.6.31-rc6-tip #4534 [ 5.823327] Call Trace: [ 5.823328] [<c19fa80e>] ? printk+0x14/0x16 [ 5.829996] [<c105bbc0>] set_fail+0x38/0x45 [ 5.833329] [<c105bff2>] sysctl_check_table+0x425/0x490 [ 5.839996] [<c105c008>] sysctl_check_table+0x43b/0x490 [ 5.843329] [<c104331f>] __register_sysctl_paths+0xb6/0x230 [ 5.849996] [<c1ffc6a6>] ? ipc_init_proc_interface+0x8a/0x9f [ 5.856662] [<c105e4f8>] ? jiffies_read+0x8/0x14 [ 5.859995] [<c105cfc0>] ? ktime_get+0x68/0xce [ 5.863328] [<c1ffc745>] ? ipc_sysctl_init+0x0/0x11 [ 5.869995] [<c10434bc>] register_sysctl_paths+0x23/0x25 [ 5.873329] [<c10434d2>] register_sysctl_table+0x14/0x16 [ 5.879995] [<c1ffc752>] ipc_sysctl_init+0xd/0x11 [ 5.883328] [<c1001074>] do_one_initcall+0x6a/0x177 [ 5.889996] [<c1066498>] ? __lock_acquire+0xbde/0xbed [ 5.896662] [<c1066498>] ? __lock_acquire+0xbde/0xbed [ 5.899996] [<c1066498>] ? __lock_acquire+0xbde/0xbed [ 5.906662] [<c1064d61>] ? mark_held_locks+0x47/0x5f [ 5.909995] [<c10b3070>] ? kmem_cache_free+0x9b/0xcf [ 5.916662] [<c1064fdf>] ? trace_hardirqs_on_caller+0x10b/0x133 [ 5.919995] [<c1065012>] ? trace_hardirqs_on+0xb/0xd [ 5.926662] [<c12e4870>] ? ida_get_new_above+0x158/0x172 [ 5.933329] [<c10fd27d>] ? proc_register+0x14b/0x15c [ 5.936664] [<c12ed8c5>] ? _raw_spin_unlock+0x92/0x98 [ 5.943329] [<c19fccd3>] ? _spin_unlock+0x22/0x25 [ 5.946662] [<c10fd27d>] ? proc_register+0x14b/0x15c [ 5.949995] [<c10fd3a6>] ? create_proc_entry+0x7c/0x90 [ 5.956662] [<c1071412>] ? register_irq_proc+0x91/0xad [ 5.963329] [<c107138f>] ? register_irq_proc+0xe/0xad [ 5.966662] [<c106f180>] ? irq_to_desc+0x8/0x21 [ 5.973329] [<c1071486>] ? init_irq_proc+0x58/0x65 [ 5.976662] [<c1fe2665>] kernel_init+0x170/0x1c1 [ 5.979995] [<c1fe24f5>] ? kernel_init+0x0/0x1c1 [ 5.986662] [<c1004227>] kernel_thread_helper+0x7/0x10 [ 5.990000] sysctl table check failed: /kernel/shmmni .1.45 No proc_handler [ 5.996660] Pid: 1, comm: swapper Tainted: G W 2.6.31-rc6-tip #4534 [ 6.006660] Call Trace: [ 6.006661] [<c19fa80e>] ? printk+0x14/0x16 [ 6.013329] [<c105bbc0>] set_fail+0x38/0x45 [ 6.016662] [<c105bff2>] sysctl_check_table+0x425/0x490 [ 6.019995] [<c105c008>] sysctl_check_table+0x43b/0x490 [ 6.026662] [<c104331f>] __register_sysctl_paths+0xb6/0x230 [ 6.033329] [<c1ffc6a6>] ? ipc_init_proc_interface+0x8a/0x9f [ 6.036662] [<c105e4f8>] ? jiffies_read+0x8/0x14 [ 6.043329] [<c105cfc0>] ? ktime_get+0x68/0xce [ 6.046662] [<c1ffc745>] ? ipc_sysctl_init+0x0/0x11 [ 6.053329] [<c10434bc>] register_sysctl_paths+0x23/0x25 [ 6.056661] [<c10434d2>] register_sysctl_table+0x14/0x16 [ 6.063328] [<c1ffc752>] ipc_sysctl_init+0xd/0x11 [ 6.066661] [<c1001074>] do_one_initcall+0x6a/0x177 [ 6.073329] [<c1066498>] ? __lock_acquire+0xbde/0xbed [ 6.076662] [<c1066498>] ? __lock_acquire+0xbde/0xbed [ 6.083329] [<c1066498>] ? __lock_acquire+0xbde/0xbed [ 6.086662] [<c1064d61>] ? mark_held_locks+0x47/0x5f [ 6.093328] [<c10b3070>] ? kmem_cache_free+0x9b/0xcf [ 6.096662] [<c1064fdf>] ? trace_hardirqs_on_caller+0x10b/0x133 [ 6.103329] [<c1065012>] ? trace_hardirqs_on+0xb/0xd [ 6.109995] [<c12e4870>] ? ida_get_new_above+0x158/0x172 [ 6.113328] [<c10fd27d>] ? proc_register+0x14b/0x15c [ 6.119996] [<c12ed8c5>] ? _raw_spin_unlock+0x92/0x98 [ 6.123328] [<c19fccd3>] ? _spin_unlock+0x22/0x25 [ 6.129995] [<c10fd27d>] ? proc_register+0x14b/0x15c [ 6.133328] [<c10fd3a6>] ? create_proc_entry+0x7c/0x90 [ 6.139995] [<c1071412>] ? register_irq_proc+0x91/0xad [ 6.143328] [<c107138f>] ? register_irq_proc+0xe/0xad [ 6.149995] [<c106f180>] ? irq_to_desc+0x8/0x21 [ 6.153329] [<c1071486>] ? init_irq_proc+0x58/0x65 [ 6.159995] [<c1fe2665>] kernel_init+0x170/0x1c1 [ 6.163328] [<c1fe24f5>] ? kernel_init+0x0/0x1c1 [ 6.169995] [<c1004227>] kernel_thread_helper+0x7/0x10 [ 6.173333] sysctl table check failed: /kernel/msgmax .1.35 No proc_handler [ 6.179994] Pid: 1, comm: swapper Tainted: G W 2.6.31-rc6-tip #4534 [ 6.186659] Call Trace: [ 6.189083] [<c19fa80e>] ? printk+0x14/0x16 [ 6.193331] [<c105bbc0>] set_fail+0x38/0x45 [ 6.199995] [<c105bff2>] sysctl_check_table+0x425/0x490 [ 6.203328] [<c105c008>] sysctl_check_table+0x43b/0x490 [ 6.209995] [<c104331f>] __register_sysctl_paths+0xb6/0x230 [ 6.213328] [<c1ffc6a6>] ? ipc_init_proc_interface+0x8a/0x9f [ 6.219995] [<c105e4f8>] ? jiffies_read+0x8/0x14 [ 6.226662] [<c105cfc0>] ? ktime_get+0x68/0xce [ 6.229994] [<c1ffc745>] ? ipc_sysctl_init+0x0/0x11 [ 6.233328] [<c10434bc>] register_sysctl_paths+0x23/0x25 [ 6.239995] [<c10434d2>] register_sysctl_table+0x14/0x16 [ 6.246661] [<c1ffc752>] ipc_sysctl_init+0xd/0x11 [ 6.249994] [<c1001074>] do_one_initcall+0x6a/0x177 [ 6.253329] [<c1066498>] ? __lock_acquire+0xbde/0xbed [ 6.259995] [<c1066498>] ? __lock_acquire+0xbde/0xbed [ 6.266662] [<c1066498>] ? __lock_acquire+0xbde/0xbed [ 6.269995] [<c1064d61>] ? mark_held_locks+0x47/0x5f [ 6.276662] [<c10b3070>] ? kmem_cache_free+0x9b/0xcf [ 6.279995] [<c1064fdf>] ? trace_hardirqs_on_caller+0x10b/0x133 [ 6.286662] [<c1065012>] ? trace_hardirqs_on+0xb/0xd [ 6.289995] [<c12e4870>] ? ida_get_new_above+0x158/0x172 [ 6.296662] [<c10fd27d>] ? proc_register+0x14b/0x15c [ 6.303329] [<c12ed8c5>] ? _raw_spin_unlock+0x92/0x98 [ 6.306662] [<c19fccd3>] ? _spin_unlock+0x22/0x25 [ 6.313328] [<c10fd27d>] ? proc_register+0x14b/0x15c [ 6.316661] [<c10fd3a6>] ? create_proc_entry+0x7c/0x90 [ 6.323328] [<c1071412>] ? register_irq_proc+0x91/0xad [ 6.326662] [<c107138f>] ? register_irq_proc+0xe/0xad [ 6.333328] [<c106f180>] ? irq_to_desc+0x8/0x21 [ 6.336666] [<c1071486>] ? init_irq_proc+0x58/0x65 [ 6.339996] [<c1fe2665>] kernel_init+0x170/0x1c1 [ 6.346662] [<c1fe24f5>] ? kernel_init+0x0/0x1c1 [ 6.349996] [<c1004227>] kernel_thread_helper+0x7/0x10 [ 6.356667] sysctl table check failed: /kernel/msgmni .1.42 No proc_handler [ 6.363326] Pid: 1, comm: swapper Tainted: G W 2.6.31-rc6-tip #4534 [ 6.369993] Call Trace: [ 6.373328] [<c19fa80e>] ? printk+0x14/0x16 [ 6.376662] [<c105bbc0>] set_fail+0x38/0x45 [ 6.379996] [<c105bff2>] sysctl_check_table+0x425/0x490 [ 6.386662] [<c105c008>] sysctl_check_table+0x43b/0x490 [ 6.389995] [<c104331f>] __register_sysctl_paths+0xb6/0x230 [ 6.396662] [<c1ffc6a6>] ? ipc_init_proc_interface+0x8a/0x9f [ 6.403329] [<c105e4f8>] ? jiffies_read+0x8/0x14 [ 6.406662] [<c105cfc0>] ? ktime_get+0x68/0xce [ 6.413328] [<c1ffc745>] ? ipc_sysctl_init+0x0/0x11 [ 6.416662] [<c10434bc>] register_sysctl_paths+0x23/0x25 [ 6.423328] [<c10434d2>] register_sysctl_table+0x14/0x16 [ 6.426661] [<c1ffc752>] ipc_sysctl_init+0xd/0x11 [ 6.433328] [<c1001074>] do_one_initcall+0x6a/0x177 [ 6.436662] [<c1066498>] ? __lock_acquire+0xbde/0xbed [ 6.443329] [<c1066498>] ? __lock_acquire+0xbde/0xbed [ 6.446662] [<c1066498>] ? __lock_acquire+0xbde/0xbed [ 6.453331] [<c1064d61>] ? mark_held_locks+0x47/0x5f [ 6.456662] [<c10b3070>] ? kmem_cache_free+0x9b/0xcf [ 6.463329] [<c1064fdf>] ? trace_hardirqs_on_caller+0x10b/0x133 [ 6.469995] [<c1065012>] ? trace_hardirqs_on+0xb/0xd [ 6.473329] [<c12e4870>] ? ida_get_new_above+0x158/0x172 [ 6.479997] [<c10fd27d>] ? proc_register+0x14b/0x15c [ 6.483329] [<c12ed8c5>] ? _raw_spin_unlock+0x92/0x98 [ 6.489995] [<c19fccd3>] ? _spin_unlock+0x22/0x25 [ 6.493328] [<c10fd27d>] ? proc_register+0x14b/0x15c [ 6.499995] [<c10fd3a6>] ? create_proc_entry+0x7c/0x90 [ 6.503329] [<c1071412>] ? register_irq_proc+0x91/0xad [ 6.509995] [<c107138f>] ? register_irq_proc+0xe/0xad [ 6.513328] [<c106f180>] ? irq_to_desc+0x8/0x21 [ 6.519995] [<c1071486>] ? init_irq_proc+0x58/0x65 [ 6.523329] [<c1fe2665>] kernel_init+0x170/0x1c1 [ 6.529995] [<c1fe24f5>] ? kernel_init+0x0/0x1c1 [ 6.533329] [<c1004227>] kernel_thread_helper+0x7/0x10 [ 6.540000] sysctl table check failed: /kernel/msgmnb .1.36 No proc_handler [ 6.546659] Pid: 1, comm: swapper Tainted: G W 2.6.31-rc6-tip #4534 [ 6.553326] Call Trace: [ 6.556661] [<c19fa80e>] ? printk+0x14/0x16 [ 6.559995] [<c105bbc0>] set_fail+0x38/0x45 [ 6.563329] [<c105bff2>] sysctl_check_table+0x425/0x490 [ 6.569995] [<c105c008>] sysctl_check_table+0x43b/0x490 [ 6.573328] [<c104331f>] __register_sysctl_paths+0xb6/0x230 [ 6.579995] [<c1ffc6a6>] ? ipc_init_proc_interface+0x8a/0x9f [ 6.586662] [<c105e4f8>] ? jiffies_read+0x8/0x14 [ 6.589995] [<c105cfc0>] ? ktime_get+0x68/0xce [ 6.593328] [<c1ffc745>] ? ipc_sysctl_init+0x0/0x11 [ 6.599995] [<c10434bc>] register_sysctl_paths+0x23/0x25 [ 6.606662] [<c10434d2>] register_sysctl_table+0x14/0x16 [ 6.609995] [<c1ffc752>] ipc_sysctl_init+0xd/0x11 [ 6.616661] [<c1001074>] do_one_initcall+0x6a/0x177 [ 6.619995] [<c1066498>] ? __lock_acquire+0xbde/0xbed [ 6.626662] [<c1066498>] ? __lock_acquire+0xbde/0xbed [ 6.629995] [<c1066498>] ? __lock_acquire+0xbde/0xbed [ 6.636662] [<c1064d61>] ? mark_held_locks+0x47/0x5f [ 6.639995] [<c10b3070>] ? kmem_cache_free+0x9b/0xcf [ 6.646662] [<c1064fdf>] ? trace_hardirqs_on_caller+0x10b/0x133 [ 6.653328] [<c1065012>] ? trace_hardirqs_on+0xb/0xd [ 6.656662] [<c12e4870>] ? ida_get_new_above+0x158/0x172 [ 6.663328] [<c10fd27d>] ? proc_register+0x14b/0x15c [ 6.666662] [<c12ed8c5>] ? _raw_spin_unlock+0x92/0x98 [ 6.673328] [<c19fccd3>] ? _spin_unlock+0x22/0x25 [ 6.676661] [<c10fd27d>] ? proc_register+0x14b/0x15c [ 6.683328] [<c10fd3a6>] ? create_proc_entry+0x7c/0x90 [ 6.686662] [<c1071412>] ? register_irq_proc+0x91/0xad [ 6.693328] [<c107138f>] ? register_irq_proc+0xe/0xad [ 6.696661] [<c106f180>] ? irq_to_desc+0x8/0x21 [ 6.703328] [<c1071486>] ? init_irq_proc+0x58/0x65 [ 6.706662] [<c1fe2665>] kernel_init+0x170/0x1c1 [ 6.713330] [<c1fe24f5>] ? kernel_init+0x0/0x1c1 [ 6.716662] [<c1004227>] kernel_thread_helper+0x7/0x10 [ 6.723333] sysctl table check failed: /kernel/sem .1.43 No proc_handler [ 6.729994] Pid: 1, comm: swapper Tainted: G W 2.6.31-rc6-tip #4534 [ 6.736659] Call Trace: [ 6.736660] [<c19fa80e>] ? printk+0x14/0x16 [ 6.743328] [<c105bbc0>] set_fail+0x38/0x45 [ 6.746662] [<c105bff2>] sysctl_check_table+0x425/0x490 [ 6.749995] [<c105c008>] sysctl_check_table+0x43b/0x490 [ 6.756662] [<c104331f>] __register_sysctl_paths+0xb6/0x230 [ 6.763328] [<c1ffc6a6>] ? ipc_init_proc_interface+0x8a/0x9f [ 6.766662] [<c105e4f8>] ? jiffies_read+0x8/0x14 [ 6.773328] [<c105cfc0>] ? ktime_get+0x68/0xce [ 6.776661] [<c1ffc745>] ? ipc_sysctl_init+0x0/0x11 [ 6.783328] [<c10434bc>] register_sysctl_paths+0x23/0x25 [ 6.786661] [<c10434d2>] register_sysctl_table+0x14/0x16 [ 6.793328] [<c1ffc752>] ipc_sysctl_init+0xd/0x11 [ 6.796661] [<c1001074>] do_one_initcall+0x6a/0x177 [ 6.803329] [<c1066498>] ? __lock_acquire+0xbde/0xbed [ 6.806662] [<c1066498>] ? __lock_acquire+0xbde/0xbed [ 6.813328] [<c1066498>] ? __lock_acquire+0xbde/0xbed [ 6.816662] [<c1064d61>] ? mark_held_locks+0x47/0x5f [ 6.823328] [<c10b3070>] ? kmem_cache_free+0x9b/0xcf [ 6.826662] [<c1064fdf>] ? trace_hardirqs_on_caller+0x10b/0x133 [ 6.833328] [<c1065012>] ? trace_hardirqs_on+0xb/0xd [ 6.839995] [<c12e4870>] ? ida_get_new_above+0x158/0x172 [ 6.843328] [<c10fd27d>] ? proc_register+0x14b/0x15c [ 6.849995] [<c12ed8c5>] ? _raw_spin_unlock+0x92/0x98 [ 6.853328] [<c19fccd3>] ? _spin_unlock+0x22/0x25 [ 6.859994] [<c10fd27d>] ? proc_register+0x14b/0x15c [ 6.863328] [<c10fd3a6>] ? create_proc_entry+0x7c/0x90 [ 6.869995] [<c1071412>] ? register_irq_proc+0x91/0xad [ 6.873328] [<c107138f>] ? register_irq_proc+0xe/0xad [ 6.879995] [<c106f180>] ? irq_to_desc+0x8/0x21 [ 6.883328] [<c1071486>] ? init_irq_proc+0x58/0x65 [ 6.889995] [<c1fe2665>] kernel_init+0x170/0x1c1 [ 6.893328] [<c1fe24f5>] ? kernel_init+0x0/0x1c1 [ 6.899995] [<c1004227>] kernel_thread_helper+0x7/0x10 [ 6.903334] sysctl table check failed: /kernel/auto_msgmni No proc_handler [ 6.909993] Pid: 1, comm: swapper Tainted: G W 2.6.31-rc6-tip #4534 [ 6.916659] Call Trace: [ 6.919994] [<c19fa80e>] ? printk+0x14/0x16 [ 6.923328] [<c105bbc0>] set_fail+0x38/0x45 [ 6.929995] [<c105bff2>] sysctl_check_table+0x425/0x490 [ 6.933328] [<c105c008>] sysctl_check_table+0x43b/0x490 [ 6.939995] [<c104331f>] __register_sysctl_paths+0xb6/0x230 [ 6.946661] [<c1ffc6a6>] ? ipc_init_proc_interface+0x8a/0x9f [ 6.949995] [<c105e4f8>] ? jiffies_read+0x8/0x14 [ 6.956661] [<c105cfc0>] ? ktime_get+0x68/0xce [ 6.959994] [<c1ffc745>] ? ipc_sysctl_init+0x0/0x11 [ 6.963328] [<c10434bc>] register_sysctl_paths+0x23/0x25 [ 6.969997] [<c10434d2>] register_sysctl_table+0x14/0x16 [ 6.976661] [<c1ffc752>] ipc_sysctl_init+0xd/0x11 [ 6.979994] [<c1001074>] do_one_initcall+0x6a/0x177 [ 6.986662] [<c1066498>] ? __lock_acquire+0xbde/0xbed [ 6.989995] [<c1066498>] ? __lock_acquire+0xbde/0xbed [ 6.996661] [<c1066498>] ? __lock_acquire+0xbde/0xbed [ 6.999995] [<c1064d61>] ? mark_held_locks+0x47/0x5f [ 7.006661] [<c10b3070>] ? kmem_cache_free+0x9b/0xcf [ 7.009995] [<c1064fdf>] ? trace_hardirqs_on_caller+0x10b/0x133 [ 7.016661] [<c1065012>] ? trace_hardirqs_on+0xb/0xd [ 7.023328] [<c12e4870>] ? ida_get_new_above+0x158/0x172 [ 7.026661] [<c10fd27d>] ? proc_register+0x14b/0x15c [ 7.033328] [<c12ed8c5>] ? _raw_spin_unlock+0x92/0x98 [ 7.036661] [<c19fccd3>] ? _spin_unlock+0x22/0x25 [ 7.043327] [<c10fd27d>] ? proc_register+0x14b/0x15c [ 7.046661] [<c10fd3a6>] ? create_proc_entry+0x7c/0x90 [ 7.053328] [<c1071412>] ? register_irq_proc+0x91/0xad [ 7.056661] [<c107138f>] ? register_irq_proc+0xe/0xad [ 7.063328] [<c106f180>] ? irq_to_desc+0x8/0x21 [ 7.066661] [<c1071486>] ? init_irq_proc+0x58/0x65 [ 7.073328] [<c1fe2665>] kernel_init+0x170/0x1c1 [ 7.076661] [<c1fe24f5>] ? kernel_init+0x0/0x1c1 [ 7.079995] [<c1004227>] kernel_thread_helper+0x7/0x10 [ 7.086661] initcall ipc_sysctl_init+0x0/0x11 returned 0 after 1425779 usecs [ 7.093327] calling init_mqueue_fs+0x0/0xa3 @ 1 [ 7.099941] sysctl table check failed: /fs/mqueue/queues_max No proc_handler [ 7.103327] Pid: 1, comm: swapper Tainted: G W 2.6.31-rc6-tip #4534 [ 7.106658] Call Trace: [ 7.109085] [<c19fa80e>] ? printk+0x14/0x16 [ 7.109996] [<c105bbc0>] set_fail+0x38/0x45 [ 7.113328] [<c105bff2>] sysctl_check_table+0x425/0x490 [ 7.116661] [<c105c008>] sysctl_check_table+0x43b/0x490 [ 7.119994] [<c105c008>] sysctl_check_table+0x43b/0x490 [ 7.123328] [<c104331f>] __register_sysctl_paths+0xb6/0x230 [ 7.126660] [<c1ffc756>] ? init_mqueue_fs+0x0/0xa3 [ 7.129993] [<c105840a>] ? up_write+0x1b/0x30 [ 7.133327] [<c1ffc756>] ? init_mqueue_fs+0x0/0xa3 [ 7.136660] [<c10434bc>] register_sysctl_paths+0x23/0x25 [ 7.139993] [<c10434d2>] register_sysctl_table+0x14/0x16 [ 7.143329] [<c12a0a06>] mq_register_sysctl_table+0x12/0x14 [ 7.146660] [<c1ffc78a>] init_mqueue_fs+0x34/0xa3 [ 7.149993] [<c1001074>] do_one_initcall+0x6a/0x177 [ 7.153329] [<c1066498>] ? __lock_acquire+0xbde/0xbed [ 7.156660] [<c1066498>] ? __lock_acquire+0xbde/0xbed [ 7.159994] [<c1066498>] ? __lock_acquire+0xbde/0xbed [ 7.163330] [<c1064d61>] ? mark_held_locks+0x47/0x5f [ 7.166661] [<c10b3070>] ? kmem_cache_free+0x9b/0xcf [ 7.169994] [<c1064fdf>] ? trace_hardirqs_on_caller+0x10b/0x133 [ 7.173327] [<c1065012>] ? trace_hardirqs_on+0xb/0xd [ 7.176662] [<c12e4870>] ? ida_get_new_above+0x158/0x172 [ 7.179995] [<c10fd27d>] ? proc_register+0x14b/0x15c [ 7.183328] [<c12ed8c5>] ? _raw_spin_unlock+0x92/0x98 [ 7.186661] [<c19fccd3>] ? _spin_unlock+0x22/0x25 [ 7.189993] [<c10fd27d>] ? proc_register+0x14b/0x15c [ 7.193327] [<c10fd3a6>] ? create_proc_entry+0x7c/0x90 [ 7.196661] [<c1071412>] ? register_irq_proc+0x91/0xad [ 7.199994] [<c107138f>] ? register_irq_proc+0xe/0xad [ 7.203327] [<c106f180>] ? irq_to_desc+0x8/0x21 [ 7.206660] [<c1071486>] ? init_irq_proc+0x58/0x65 [ 7.209995] [<c1fe2665>] kernel_init+0x170/0x1c1 [ 7.213327] [<c1fe24f5>] ? kernel_init+0x0/0x1c1 [ 7.216661] [<c1004227>] kernel_thread_helper+0x7/0x10 [ 7.219998] sysctl table check failed: /fs/mqueue/msg_max No proc_handler [ 7.226659] Pid: 1, comm: swapper Tainted: G W 2.6.31-rc6-tip #4534 [ 7.229992] Call Trace: [ 7.233326] [<c19fa80e>] ? printk+0x14/0x16 [ 7.236661] [<c105bbc0>] set_fail+0x38/0x45 [ 7.239994] [<c105bff2>] sysctl_check_table+0x425/0x490 [ 7.243327] [<c105c008>] sysctl_check_table+0x43b/0x490 [ 7.246660] [<c105c008>] sysctl_check_table+0x43b/0x490 [ 7.249994] [<c104331f>] __register_sysctl_paths+0xb6/0x230 [ 7.253327] [<c1ffc756>] ? init_mqueue_fs+0x0/0xa3 [ 7.256660] [<c105840a>] ? up_write+0x1b/0x30 [ 7.259993] [<c1ffc756>] ? init_mqueue_fs+0x0/0xa3 [ 7.263327] [<c10434bc>] register_sysctl_paths+0x23/0x25 [ 7.266660] [<c10434d2>] register_sysctl_table+0x14/0x16 [ 7.269994] [<c12a0a06>] mq_register_sysctl_table+0x12/0x14 [ 7.273326] [<c1ffc78a>] init_mqueue_fs+0x34/0xa3 [ 7.276660] [<c1001074>] do_one_initcall+0x6a/0x177 [ 7.279994] [<c1066498>] ? __lock_acquire+0xbde/0xbed [ 7.283327] [<c1066498>] ? __lock_acquire+0xbde/0xbed [ 7.286660] [<c1066498>] ? __lock_acquire+0xbde/0xbed [ 7.289994] [<c1064d61>] ? mark_held_locks+0x47/0x5f [ 7.293329] [<c10b3070>] ? kmem_cache_free+0x9b/0xcf [ 7.296661] [<c1064fdf>] ? trace_hardirqs_on_caller+0x10b/0x133 [ 7.299993] [<c1065012>] ? trace_hardirqs_on+0xb/0xd [ 7.303327] [<c12e4870>] ? ida_get_new_above+0x158/0x172 [ 7.306660] [<c10fd27d>] ? proc_register+0x14b/0x15c [ 7.309994] [<c12ed8c5>] ? _raw_spin_unlock+0x92/0x98 [ 7.313327] [<c19fccd3>] ? _spin_unlock+0x22/0x25 [ 7.316660] [<c10fd27d>] ? proc_register+0x14b/0x15c [ 7.319993] [<c10fd3a6>] ? create_proc_entry+0x7c/0x90 [ 7.323327] [<c1071412>] ? register_irq_proc+0x91/0xad [ 7.326660] [<c107138f>] ? register_irq_proc+0xe/0xad [ 7.329994] [<c106f180>] ? irq_to_desc+0x8/0x21 [ 7.333327] [<c1071486>] ? init_irq_proc+0x58/0x65 [ 7.336661] [<c1fe2665>] kernel_init+0x170/0x1c1 [ 7.339993] [<c1fe24f5>] ? kernel_init+0x0/0x1c1 [ 7.343327] [<c1004227>] kernel_thread_helper+0x7/0x10 [ 7.346668] sysctl table check failed: /fs/mqueue/msgsize_max No proc_handler [ 7.354968] Pid: 1, comm: swapper Tainted: G W 2.6.31-rc6-tip #4534 [ 7.356658] Call Trace: [ 7.359994] [<c19fa80e>] ? printk+0x14/0x16 [ 7.363328] [<c105bbc0>] set_fail+0x38/0x45 [ 7.366661] [<c105bff2>] sysctl_check_table+0x425/0x490 [ 7.369994] [<c105c008>] sysctl_check_table+0x43b/0x490 [ 7.373327] [<c105c008>] sysctl_check_table+0x43b/0x490 [ 7.376661] [<c104331f>] __register_sysctl_paths+0xb6/0x230 [ 7.379994] [<c1ffc756>] ? init_mqueue_fs+0x0/0xa3 [ 7.383327] [<c105840a>] ? up_write+0x1b/0x30 [ 7.386660] [<c1ffc756>] ? init_mqueue_fs+0x0/0xa3 [ 7.389994] [<c10434bc>] register_sysctl_paths+0x23/0x25 [ 7.393327] [<c10434d2>] register_sysctl_table+0x14/0x16 [ 7.396661] [<c12a0a06>] mq_register_sysctl_table+0x12/0x14 [ 7.399994] [<c1ffc78a>] init_mqueue_fs+0x34/0xa3 [ 7.403327] [<c1001074>] do_one_initcall+0x6a/0x177 [ 7.406661] [<c1066498>] ? __lock_acquire+0xbde/0xbed [ 7.409994] [<c1066498>] ? __lock_acquire+0xbde/0xbed [ 7.413328] [<c1066498>] ? __lock_acquire+0xbde/0xbed [ 7.416661] [<c1064d61>] ? mark_held_locks+0x47/0x5f [ 7.419994] [<c10b3070>] ? kmem_cache_free+0x9b/0xcf [ 7.423328] [<c1064fdf>] ? trace_hardirqs_on_caller+0x10b/0x133 [ 7.426661] [<c1065012>] ? trace_hardirqs_on+0xb/0xd [ 7.429994] [<c12e4870>] ? ida_get_new_above+0x158/0x172 [ 7.433327] [<c10fd27d>] ? proc_register+0x14b/0x15c [ 7.436661] [<c12ed8c5>] ? _raw_spin_unlock+0x92/0x98 [ 7.439994] [<c19fccd3>] ? _spin_unlock+0x22/0x25 [ 7.443327] [<c10fd27d>] ? proc_register+0x14b/0x15c [ 7.446660] [<c10fd3a6>] ? create_proc_entry+0x7c/0x90 [ 7.449994] [<c1071412>] ? register_irq_proc+0x91/0xad [ 7.453327] [<c107138f>] ? register_irq_proc+0xe/0xad [ 7.456660] [<c106f180>] ? irq_to_desc+0x8/0x21 [ 7.459994] [<c1071486>] ? init_irq_proc+0x58/0x65 [ 7.463327] [<c1fe2665>] kernel_init+0x170/0x1c1 [ 7.466660] [<c1fe24f5>] ? kernel_init+0x0/0x1c1 [ 7.469994] [<c1004227>] kernel_thread_helper+0x7/0x10 [ 7.473335] initcall init_mqueue_fs+0x0/0xa3 returned 0 after 367838 usecs [ 7.479994] calling key_proc_init+0x0/0x2c @ 1 [ 7.483330] initcall key_proc_init+0x0/0x2c returned 0 after 0 usecs [ 7.489992] calling crypto_wq_init+0x0/0x2f @ 1 [ 7.496296] initcall crypto_wq_init+0x0/0x2f returned 0 after 0 usecs [ 7.499993] calling crypto_algapi_init+0x0/0xc @ 1 [ 7.506683] initcall crypto_algapi_init+0x0/0xc returned 0 after 0 usecs [ 7.513326] calling chainiv_module_init+0x0/0xf @ 1 [ 7.516661] initcall chainiv_module_init+0x0/0xf returned 0 after 0 usecs [ 7.523326] calling eseqiv_module_init+0x0/0xf @ 1 [ 7.529993] initcall eseqiv_module_init+0x0/0xf returned 0 after 0 usecs [ 7.536661] calling seqiv_module_init+0x0/0xf @ 1 [ 7.539993] initcall seqiv_module_init+0x0/0xf returned 0 after 0 usecs [ 7.546659] calling hmac_module_init+0x0/0xf @ 1 [ 7.553327] initcall hmac_module_init+0x0/0xf returned 0 after 0 usecs [ 7.556659] calling crypto_xcbc_module_init+0x0/0xf @ 1 [ 7.563327] initcall crypto_xcbc_module_init+0x0/0xf returned 0 after 0 usecs [ 7.569993] calling crypto_null_mod_init+0x0/0x69 @ 1 [ 7.577511] alg: No test for cipher_null (cipher_null-generic) [ 7.583350] alg: No test for ecb(cipher_null) (ecb-cipher_null) [ 7.586667] alg: No test for digest_null (digest_null-generic) [ 7.595040] alg: No test for compress_null (compress_null-generic) [ 7.596662] initcall crypto_null_mod_init+0x0/0x69 returned 0 after 19531 usecs [ 7.603327] calling md4_mod_init+0x0/0xf @ 1 [ 7.609453] initcall md4_mod_init+0x0/0xf returned 0 after 0 usecs [ 7.613334] calling md5_mod_init+0x0/0xf @ 1 [ 7.620013] initcall md5_mod_init+0x0/0xf returned 0 after 3255 usecs [ 7.623326] calling rmd128_mod_init+0x0/0xf @ 1 [ 7.630967] initcall rmd128_mod_init+0x0/0xf returned 0 after 0 usecs [ 7.636659] calling rmd256_mod_init+0x0/0xf @ 1 [ 7.641975] initcall rmd256_mod_init+0x0/0xf returned 0 after 0 usecs [ 7.646660] calling sha1_generic_mod_init+0x0/0xf @ 1 [ 7.653502] initcall sha1_generic_mod_init+0x0/0xf returned 0 after 0 usecs [ 7.659993] calling sha256_generic_mod_init+0x0/0x33 @ 1 [ 7.665806] cryptomgr_test used greatest stack depth: 6376 bytes left [ 7.665806] initcall sha256_generic_mod_init+0x0/0x33 returned 0 after 3255 usecs [ 7.673329] calling wp512_mod_init+0x0/0x52 @ 1 [ 7.680936] initcall wp512_mod_init+0x0/0x52 returned 0 after 0 usecs [ 7.686666] calling tgr192_mod_init+0x0/0x52 @ 1 [ 7.692368] initcall tgr192_mod_init+0x0/0x52 returned 0 after 0 usecs [ 7.696660] calling crypto_ecb_module_init+0x0/0xf @ 1 [ 7.703327] initcall crypto_ecb_module_init+0x0/0xf returned 0 after 0 usecs [ 7.709992] calling crypto_cbc_module_init+0x0/0xf @ 1 [ 7.713326] initcall crypto_cbc_module_init+0x0/0xf returned 0 after 0 usecs [ 7.723326] calling crypto_pcbc_module_init+0x0/0xf @ 1 [ 7.726660] initcall crypto_pcbc_module_init+0x0/0xf returned 0 after 0 usecs [ 7.733325] calling crypto_cts_module_init+0x0/0xf @ 1 [ 7.739993] initcall crypto_cts_module_init+0x0/0xf returned 0 after 0 usecs [ 7.746659] calling crypto_ctr_module_init+0x0/0x35 @ 1 [ 7.753327] initcall crypto_ctr_module_init+0x0/0x35 returned 0 after 0 usecs [ 7.759992] calling crypto_gcm_module_init+0x0/0x4f @ 1 [ 7.763327] initcall crypto_gcm_module_init+0x0/0x4f returned 0 after 0 usecs [ 7.769992] calling crypto_ccm_module_init+0x0/0x4f @ 1 [ 7.776660] initcall crypto_ccm_module_init+0x0/0x4f returned 0 after 0 usecs [ 7.783325] calling des_generic_mod_init+0x0/0x33 @ 1 [ 7.790433] initcall des_generic_mod_init+0x0/0x33 returned 0 after 0 usecs [ 7.796659] calling fcrypt_mod_init+0x0/0xf @ 1 [ 7.802106] alg: No test for fcrypt (fcrypt-generic) [ 7.803329] initcall fcrypt_mod_init+0x0/0xf returned 0 after 3255 usecs [ 7.809993] calling blowfish_mod_init+0x0/0xf @ 1 [ 7.815153] initcall blowfish_mod_init+0x0/0xf returned 0 after 0 usecs [ 7.819992] calling serpent_mod_init+0x0/0x33 @ 1 [ 7.827175] initcall serpent_mod_init+0x0/0x33 returned 0 after 0 usecs [ 7.833326] calling aes_init+0x0/0xf @ 1 [ 7.837895] initcall aes_init+0x0/0xf returned 0 after 0 usecs [ 7.843326] calling cast6_mod_init+0x0/0xf @ 1 [ 7.848235] initcall cast6_mod_init+0x0/0xf returned 0 after 0 usecs [ 7.853326] calling arc4_init+0x0/0xf @ 1 [ 7.858661] initcall arc4_init+0x0/0xf returned 0 after 0 usecs [ 7.863326] calling tea_mod_init+0x0/0x52 @ 1 [ 7.869019] initcall tea_mod_init+0x0/0x52 returned 0 after 0 usecs [ 7.873326] calling khazad_mod_init+0x0/0xf @ 1 [ 7.880106] initcall khazad_mod_init+0x0/0xf returned 0 after 0 usecs [ 7.883326] calling anubis_mod_init+0x0/0xf @ 1 [ 7.891140] initcall anubis_mod_init+0x0/0xf returned 0 after 0 usecs [ 7.896660] calling salsa20_generic_mod_init+0x0/0xf @ 1 [ 7.902994] initcall salsa20_generic_mod_init+0x0/0xf returned 0 after 0 usecs [ 7.909993] calling deflate_mod_init+0x0/0xf @ 1 [ 7.914870] initcall deflate_mod_init+0x0/0xf returned 0 after 0 usecs [ 7.919993] calling zlib_mod_init+0x0/0xf @ 1 [ 7.926094] initcall zlib_mod_init+0x0/0xf returned 0 after 0 usecs [ 7.929996] calling michael_mic_init+0x0/0xf @ 1 [ 7.937339] initcall michael_mic_init+0x0/0xf returned 0 after 0 usecs [ 7.943326] calling crc32c_mod_init+0x0/0xf @ 1 [ 7.948430] initcall crc32c_mod_init+0x0/0xf returned 0 after 0 usecs [ 7.953326] calling crypto_authenc_module_init+0x0/0xf @ 1 [ 7.959993] initcall crypto_authenc_module_init+0x0/0xf returned 0 after 0 usecs [ 7.966659] calling krng_mod_init+0x0/0xf @ 1 [ 7.972178] alg: No test for stdrng (krng) [ 7.973328] initcall krng_mod_init+0x0/0xf returned 0 after 3255 usecs [ 7.979992] calling prng_mod_init+0x0/0x24 @ 1 [ 7.987262] alg: No test for stdrng (ansi_cprng) [ 7.989995] initcall prng_mod_init+0x0/0x24 returned 0 after 3255 usecs [ 7.996659] calling proc_genhd_init+0x0/0x31 @ 1 [ 8.000000] initcall proc_genhd_init+0x0/0x31 returned 0 after 0 usecs [ 8.006659] calling bsg_init+0x0/0x10d @ 1 [ 8.013335] device class 'bsg': registering [ 8.018021] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 251) [ 8.023326] initcall bsg_init+0x0/0x10d returned 0 after 9765 usecs [ 8.029992] calling noop_init+0x0/0x11 @ 1 [ 8.033325] io scheduler noop registered [ 8.036658] initcall noop_init+0x0/0x11 returned 0 after 3255 usecs [ 8.043325] calling as_init+0x0/0x11 @ 1 [ 8.046658] io scheduler anticipatory registered [ 8.053325] initcall as_init+0x0/0x11 returned 0 after 6510 usecs [ 8.059992] calling deadline_init+0x0/0x11 @ 1 [ 8.063324] io scheduler deadline registered (default) [ 8.069992] initcall deadline_init+0x0/0x11 returned 0 after 6510 usecs [ 8.076658] calling cfq_init+0x0/0x89 @ 1 [ 8.079996] io scheduler cfq registered [ 8.083325] initcall cfq_init+0x0/0x89 returned 0 after 3255 usecs [ 8.089992] calling libcrc32c_mod_init+0x0/0x29 @ 1 [ 8.093328] initcall libcrc32c_mod_init+0x0/0x29 returned 0 after 0 usecs [ 8.099992] calling percpu_counter_startup+0x0/0x28 @ 1 [ 8.106659] initcall percpu_counter_startup+0x0/0x28 returned 0 after 0 usecs [ 8.113326] calling bt8xxgpio_init+0x0/0x1b @ 1 [ 8.116659] bus: 'pci': add driver bt8xxgpio [ 8.123771] initcall bt8xxgpio_init+0x0/0x1b returned 0 after 6510 usecs [ 8.129994] calling pci_init+0x0/0x31 @ 1 [ 8.133354] initcall pci_init+0x0/0x31 returned 0 after 0 usecs [ 8.139992] calling pci_proc_init+0x0/0x5b @ 1 [ 8.143414] initcall pci_proc_init+0x0/0x5b returned 0 after 0 usecs [ 8.149992] calling pcie_portdrv_init+0x0/0x41 @ 1 [ 8.156083] bus: 'pci_express': registered [ 8.159992] bus: 'pci': add driver pcieport-driver [ 8.163333] bus: 'pci': driver_probe_device: matched device 0000:00:0b.0 with driver pcieport-driver [ 8.173324] bus: 'pci': really_probe: probing driver pcieport-driver with device 0000:00:0b.0 [ 8.182495] bus: 'pci': driver_probe_device: matched device 0000:00:0c.0 with driver pcieport-driver [ 8.189994] bus: 'pci': really_probe: probing driver pcieport-driver with device 0000:00:0c.0 [ 8.200108] bus: 'pci': driver_probe_device: matched device 0000:00:0d.0 with driver pcieport-driver [ 8.206658] bus: 'pci': really_probe: probing driver pcieport-driver with device 0000:00:0d.0 [ 8.217710] bus: 'pci': driver_probe_device: matched device 0000:00:0e.0 with driver pcieport-driver [ 8.226658] bus: 'pci': really_probe: probing driver pcieport-driver with device 0000:00:0e.0 [ 8.235314] initcall pcie_portdrv_init+0x0/0x41 returned 0 after 78124 usecs [ 8.239993] calling aer_service_init+0x0/0x1d @ 1 [ 8.246658] bus: 'pci_express': add driver aer [ 8.251614] initcall aer_service_init+0x0/0x1d returned 0 after 3255 usecs [ 8.256659] calling aer_inject_init+0x0/0xf @ 1 [ 8.263327] device: 'aer_inject': device_add [ 8.267838] initcall aer_inject_init+0x0/0xf returned 0 after 3255 usecs [ 8.273326] calling pci_stub_init+0x0/0x16 @ 1 [ 8.276658] bus: 'pci': add driver pci-stub [ 8.283179] initcall pci_stub_init+0x0/0x16 returned 0 after 3255 usecs [ 8.286659] calling platform_lcd_init+0x0/0xf @ 1 [ 8.293326] bus: 'platform': add driver platform-lcd [ 8.299468] initcall platform_lcd_init+0x0/0xf returned 0 after 3255 usecs [ 8.303326] calling genericbl_init+0x0/0xf @ 1 [ 8.309991] bus: 'platform': add driver generic-bl [ 8.315588] initcall genericbl_init+0x0/0xf returned 0 after 3255 usecs [ 8.319992] calling kb3886_init+0x0/0x35 @ 1 [ 8.323327] initcall kb3886_init+0x0/0x35 returned -19 after 0 usecs [ 8.329992] calling display_class_init+0x0/0x69 @ 1 [ 8.336669] device class 'display': registering [ 8.342286] initcall display_class_init+0x0/0x69 returned 0 after 3255 usecs [ 8.346659] calling arcfb_init+0x0/0x60 @ 1 [ 8.353326] initcall arcfb_init+0x0/0x60 returned -6 after 0 usecs [ 8.356659] initcall arcfb_init+0x0/0x60 returned with error code -6 [ 8.363325] calling cyber2000fb_init+0x0/0xb2 @ 1 [ 8.369992] bus: 'pci': add driver CyberPro [ 8.375055] initcall cyber2000fb_init+0x0/0xb2 returned 0 after 3255 usecs [ 8.379993] calling rivafb_init+0x0/0x187 @ 1 [ 8.383324] rivafb_setup START [ 8.386658] bus: 'pci': add driver rivafb [ 8.393351] initcall rivafb_init+0x0/0x187 returned 0 after 9765 usecs [ 8.396659] calling nvidiafb_init+0x0/0x27e @ 1 [ 8.403324] nvidiafb_setup START [ 8.406658] bus: 'pci': add driver nvidiafb [ 8.411806] initcall nvidiafb_init+0x0/0x27e returned 0 after 6510 usecs [ 8.416659] calling atyfb_init+0x0/0x1b9 @ 1 [ 8.419991] bus: 'pci': add driver atyfb [ 8.426718] initcall atyfb_init+0x0/0x1b9 returned 0 after 6510 usecs [ 8.429993] calling aty128fb_init+0x0/0xfc @ 1 [ 8.436658] bus: 'pci': add driver aty128fb [ 8.441796] initcall aty128fb_init+0x0/0xfc returned 0 after 3255 usecs [ 8.446662] calling viafb_init+0x0/0x1086 @ 1 [ 8.449991] VIA Graphics Intergration Chipset framebuffer 2.4 initializing [ 8.456703] device: 'i2c-0': device_add [ 16.301404] ioremap failed [ 16.303316] initcall viafb_init+0x0/0x1086 returned -1 after 7669260 usecs [ 16.309982] initcall viafb_init+0x0/0x1086 returned with error code -1 [ 16.316649] calling kyrofb_init+0x0/0xab @ 1 [ 16.323315] bus: 'pci': add driver kyrofb [ 16.327770] initcall kyrofb_init+0x0/0xab returned 0 after 3255 usecs [ 16.333316] calling savagefb_init+0x0/0x62 @ 1 [ 16.336651] bus: 'pci': add driver savagefb [ 16.342853] initcall savagefb_init+0x0/0x62 returned 0 after 3255 usecs [ 16.346649] calling lxfb_init+0x0/0xcb @ 1 [ 16.353315] bus: 'pci': add driver lxfb [ 16.357410] initcall lxfb_init+0x0/0xcb returned 0 after 3255 usecs [ 16.363315] calling tdfxfb_init+0x0/0xe3 @ 1 [ 16.366648] bus: 'pci': add driver tdfxfb [ 16.371945] initcall tdfxfb_init+0x0/0xe3 returned 0 after 3255 usecs [ 16.376650] calling vt8623fb_init+0x0/0x4b @ 1 [ 16.379981] bus: 'pci': add driver vt8623fb [ 16.387075] initcall vt8623fb_init+0x0/0x4b returned 0 after 6510 usecs [ 16.393316] calling tridentfb_init+0x0/0x1dc @ 1 [ 16.396648] bus: 'pci': add driver tridentfb [ 16.402568] initcall tridentfb_init+0x0/0x1dc returned 0 after 3255 usecs [ 16.406651] calling hecubafb_init+0x0/0xf @ 1 [ 16.413314] bus: 'platform': add driver hecubafb [ 16.418334] initcall hecubafb_init+0x0/0xf returned 0 after 3255 usecs [ 16.423315] calling n411_init+0x0/0x7c @ 1 [ 16.426646] no IO addresses supplied [ 16.429982] initcall n411_init+0x0/0x7c returned -22 after 3255 usecs [ 16.436649] initcall n411_init+0x0/0x7c returned with error code -22 [ 16.443316] calling sstfb_init+0x0/0x191 @ 1 [ 16.446648] bus: 'pci': add driver sstfb [ 16.453619] initcall sstfb_init+0x0/0x191 returned 0 after 6510 usecs [ 16.456649] calling metronomefb_init+0x0/0xf @ 1 [ 16.463314] bus: 'platform': add driver metronomefb [ 16.469565] initcall metronomefb_init+0x0/0xf returned 0 after 3255 usecs [ 16.473315] calling carminefb_init+0x0/0x31 @ 1 [ 16.479981] bus: 'pci': add driver carminefb [ 16.485165] initcall carminefb_init+0x0/0x31 returned 0 after 3255 usecs [ 16.489982] calling mb862xxfb_init+0x0/0xf @ 1 [ 16.493314] initcall mb862xxfb_init+0x0/0xf returned -19 after 0 usecs [ 16.499981] calling uvesafb_init+0x0/0x359 @ 1 [ 16.506651] bus: 'platform': add driver uvesafb [ 16.511853] Registering platform device 'uvesafb.0'. Parent at platform [ 16.516648] device: 'uvesafb.0': device_add [ 16.519984] bus: 'platform': add device uvesafb.0 [ 16.527281] bus: 'platform': driver_probe_device: matched device uvesafb.0 with driver uvesafb [ 16.533314] bus: 'platform': really_probe: probing driver uvesafb with device uvesafb.0 [ 16.543876] uvesafb: failed to execute /sbin/v86d [ 16.546647] uvesafb: make sure that the v86d helper is installed and executable [ 16.553315] uvesafb: Getting VBE info block failed (eax=0x4f00, err=-2) [ 16.559981] uvesafb: vbe_init() failed with -22 [ 16.566651] uvesafb: probe of uvesafb.0 failed with error -22 [ 16.569985] initcall uvesafb_init+0x0/0x359 returned 0 after 61848 usecs [ 16.576650] calling rand_initialize+0x0/0x2a @ 1 [ 16.583350] initcall rand_initialize+0x0/0x2a returned 0 after 0 usecs [ 16.589982] calling tty_init+0x0/0xd5 @ 1 [ 16.593316] device: 'tty': device_add [ 16.598191] device: 'console': device_add [ 16.602177] device: 'tty0': device_add [ 16.605901] device class 'vc': registering [ 16.609970] device: 'vcs': device_add [ 16.613619] device: 'vcsa': device_add [ 16.617343] device: 'vcs1': device_add [ 16.621071] device: 'vcsa1': device_add [ 16.624884] device: 'tty1': device_add [ 16.628618] device: 'tty2': device_add [ 16.632337] device: 'tty3': device_add [ 16.636064] device: 'tty4': device_add [ 16.639790] device: 'tty5': device_add [ 16.643527] device: 'tty6': device_add [ 16.647248] device: 'tty7': device_add [ 16.650982] device: 'tty8': device_add [ 16.654701] device: 'tty9': device_add [ 16.658426] device: 'tty10': device_add [ 16.662240] device: 'tty11': device_add [ 16.666054] device: 'tty12': device_add [ 16.669867] device: 'tty13': device_add [ 16.673683] device: 'tty14': device_add [ 16.677495] device: 'tty15': device_add [ 16.681310] device: 'tty16': device_add [ 16.685122] device: 'tty17': device_add [ 16.688939] device: 'tty18': device_add [ 16.692748] device: 'tty19': device_add [ 16.696564] device: 'tty20': device_add [ 16.700380] device: 'tty21': device_add [ 16.704191] device: 'tty22': device_add [ 16.708005] device: 'tty23': device_add [ 16.711818] device: 'tty24': device_add [ 16.715641] device: 'tty25': device_add [ 16.719445] device: 'tty26': device_add [ 16.723258] device: 'tty27': device_add [ 16.727075] device: 'tty28': device_add [ 16.730886] device: 'tty29': device_add [ 16.734702] device: 'tty30': device_add [ 16.738514] device: 'tty31': device_add [ 16.742328] device: 'tty32': device_add [ 16.746140] device: 'tty33': device_add [ 16.749954] device: 'tty34': device_add [ 16.753770] device: 'tty35': device_add [ 16.757582] device: 'tty36': device_add [ 16.761398] device: 'tty37': device_add [ 16.765209] device: 'tty38': device_add [ 16.769023] device: 'tty39': device_add [ 16.772836] device: 'tty40': device_add [ 16.776666] device: 'tty41': device_add [ 16.780483] device: 'tty42': device_add [ 16.784280] device: 'tty43': device_add [ 16.788092] device: 'tty44': device_add [ 16.791906] device: 'tty45': device_add [ 16.795719] device: 'tty46': device_add [ 16.799532] device: 'tty47': device_add [ 16.803359] device: 'tty48': device_add [ 16.807164] device: 'tty49': device_add [ 16.810974] device: 'tty50': device_add [ 16.814790] device: 'tty51': device_add [ 16.818601] device: 'tty52': device_add [ 16.822414] device: 'tty53': device_add [ 16.826227] device: 'tty54': device_add [ 16.830045] device: 'tty55': device_add [ 16.833857] device: 'tty56': device_add [ 16.837670] device: 'tty57': device_add [ 16.841484] device: 'tty58': device_add [ 16.845278] device: 'tty59': device_add [ 16.849113] device: 'tty60': device_add [ 16.852933] device: 'tty61': device_add [ 16.856759] device: 'tty62': device_add [ 16.860555] device: 'tty63': device_add [ 16.864368] initcall tty_init+0x0/0xd5 returned 0 after 263671 usecs [ 16.869985] calling pty_init+0x0/0x4ab @ 1 [ 16.873326] device: 'ptyp0': device_add [ 16.878671] device: 'ptyp1': device_add [ 16.882479] device: 'ptyp2': device_add [ 16.886292] device: 'ptyp3': device_add [ 16.890110] device: 'ptyp4': device_add [ 16.893922] device: 'ptyp5': device_add [ 16.897737] device: 'ptyp6': device_add [ 16.901549] device: 'ptyp7': device_add [ 16.905363] device: 'ptyp8': device_add [ 16.909176] device: 'ptyp9': device_add [ 16.913598] device: 'ptypa': device_add [ 16.917411] device: 'ptypb': device_add [ 16.921234] device: 'ptypc': device_add [ 16.925038] device: 'ptypd': device_add [ 16.928851] device: 'ptype': device_add [ 16.932665] device: 'ptypf': device_add [ 16.936479] device: 'ptyq0': device_add [ 16.940296] device: 'ptyq1': device_add [ 16.944108] device: 'ptyq2': device_add [ 16.947923] device: 'ptyq3': device_add [ 16.951734] device: 'ptyq4': device_add [ 16.955547] device: 'ptyq5': device_add [ 16.959361] device: 'ptyq6': device_add [ 16.963173] device: 'ptyq7': device_add [ 16.966988] device: 'ptyq8': device_add [ 16.970802] device: 'ptyq9': device_add [ 16.974615] device: 'ptyqa': device_add [ 16.978430] device: 'ptyqb': device_add [ 16.982243] device: 'ptyqc': device_add [ 16.986064] device: 'ptyqd': device_add [ 16.989869] device: 'ptyqe': device_add [ 16.993682] device: 'ptyqf': device_add [ 16.997497] device: 'ptyr0': device_add [ 17.001314] device: 'ptyr1': device_add [ 17.005125] device: 'ptyr2': device_add [ 17.008938] device: 'ptyr3': device_add [ 17.012751] device: 'ptyr4': device_add [ 17.016565] device: 'ptyr5': device_add [ 17.020380] device: 'ptyr6': device_add [ 17.024193] device: 'ptyr7': device_add [ 17.028008] device: 'ptyr8': device_add [ 17.031821] device: 'ptyr9': device_add [ 17.035635] device: 'ptyra': device_add [ 17.039448] device: 'ptyrb': device_add [ 17.043261] device: 'ptyrc': device_add [ 17.047076] device: 'ptyrd': device_add [ 17.050897] device: 'ptyre': device_add [ 17.054704] device: 'ptyrf': device_add [ 17.058517] device: 'ptys0': device_add [ 17.062334] device: 'ptys1': device_add [ 17.066146] device: 'ptys2': device_add [ 17.069955] device: 'ptys3': device_add [ 17.073772] device: 'ptys4': device_add [ 17.077586] device: 'ptys5': device_add [ 17.081398] device: 'ptys6': device_add [ 17.085213] device: 'ptys7': device_add [ 17.089025] device: 'ptys8': device_add [ 17.092839] device: 'ptys9': device_add [ 17.096668] device: 'ptysa': device_add [ 17.100467] device: 'ptysb': device_add [ 17.104281] device: 'ptysc': device_add [ 17.108094] device: 'ptysd': device_add [ 17.111908] device: 'ptyse': device_add [ 17.115729] device: 'ptysf': device_add [ 17.119535] device: 'ptyt0': device_add [ 17.123365] device: 'ptyt1': device_add [ 17.127162] device: 'ptyt2': device_add [ 17.130977] device: 'ptyt3': device_add [ 17.134791] device: 'ptyt4': device_add [ 17.138605] device: 'ptyt5': device_add [ 17.142416] device: 'ptyt6': device_add [ 17.146231] device: 'ptyt7': device_add [ 17.150048] device: 'ptyt8': device_add [ 17.153859] device: 'ptyt9': device_add [ 17.157673] device: 'ptyta': device_add [ 17.161486] device: 'ptytb': device_add [ 17.165274] device: 'ptytc': device_add [ 17.169117] device: 'ptytd': device_add [ 17.172927] device: 'ptyte': device_add [ 17.176761] device: 'ptytf': device_add [ 17.180562] device: 'ptyu0': device_add [ 17.184372] device: 'ptyu1': device_add [ 17.188187] device: 'ptyu2': device_add [ 17.191996] device: 'ptyu3': device_add [ 17.195809] device: 'ptyu4': device_add [ 17.199621] device: 'ptyu5': device_add [ 17.203438] device: 'ptyu6': device_add [ 17.207250] device: 'ptyu7': device_add [ 17.211073] device: 'ptyu8': device_add [ 17.214879] device: 'ptyu9': device_add [ 17.218689] device: 'ptyua': device_add [ 17.222504] device: 'ptyub': device_add [ 17.226317] device: 'ptyuc': device_add [ 17.230133] device: 'ptyud': device_add [ 17.233946] device: 'ptyue': device_add [ 17.237759] device: 'ptyuf': device_add [ 17.241573] device: 'ptyv0': device_add [ 17.245395] device: 'ptyv1': device_add [ 17.249200] device: 'ptyv2': device_add [ 17.253012] device: 'ptyv3': device_add [ 17.256830] device: 'ptyv4': device_add [ 17.260642] device: 'ptyv5': device_add [ 17.264455] device: 'ptyv6': device_add [ 17.268268] device: 'ptyv7': device_add [ 17.272082] device: 'ptyv8': device_add [ 17.275896] device: 'ptyv9': device_add [ 17.279708] device: 'ptyva': device_add [ 17.283525] device: 'ptyvb': device_add [ 17.287338] device: 'ptyvc': device_add [ 17.291151] device: 'ptyvd': device_add [ 17.294966] device: 'ptyve': device_add [ 17.298778] device: 'ptyvf': device_add [ 17.302592] device: 'ptyw0': device_add [ 17.306408] device: 'ptyw1': device_add [ 17.310228] device: 'ptyw2': device_add [ 17.314033] device: 'ptyw3': device_add [ 17.317847] device: 'ptyw4': device_add [ 17.321661] device: 'ptyw5': device_add [ 17.325473] device: 'ptyw6': device_add [ 17.329286] device: 'ptyw7': device_add [ 17.333100] device: 'ptyw8': device_add [ 17.336925] device: 'ptyw9': device_add [ 17.340729] device: 'ptywa': device_add [ 17.344543] device: 'ptywb': device_add [ 17.346693] device: 'ptywc': device_add [ 17.352169] device: 'ptywd': device_add [ 17.355983] device: 'ptywe': device_add [ 17.359796] device: 'ptywf': device_add [ 17.363612] device: 'ptyx0': device_add [ 17.367428] device: 'ptyx1': device_add [ 17.371239] device: 'ptyx2': device_add [ 17.375059] device: 'ptyx3': device_add [ 17.378866] device: 'ptyx4': device_add [ 17.382679] device: 'ptyx5': device_add [ 17.386492] device: 'ptyx6': device_add [ 17.390308] device: 'ptyx7': device_add [ 17.394121] device: 'ptyx8': device_add [ 17.397935] device: 'ptyx9': device_add [ 17.401749] device: 'ptyxa': device_add [ 17.405561] device: 'ptyxb': device_add [ 17.409381] device: 'ptyxc': device_add [ 17.413188] device: 'ptyxd': device_add [ 17.417005] device: 'ptyxe': device_add [ 17.420817] device: 'ptyxf': device_add [ 17.424630] device: 'ptyy0': device_add [ 17.428458] device: 'ptyy1': device_add [ 17.432258] device: 'ptyy2': device_add [ 17.436072] device: 'ptyy3': device_add [ 17.439890] device: 'ptyy4': device_add [ 17.443699] device: 'ptyy5': device_add [ 17.447512] device: 'ptyy6': device_add [ 17.451326] device: 'ptyy7': device_add [ 17.455140] device: 'ptyy8': device_add [ 17.458952] device: 'ptyy9': device_add [ 17.462766] device: 'ptyya': device_add [ 17.466579] device: 'ptyyb': device_add [ 17.470395] device: 'ptyyc': device_add [ 17.474208] device: 'ptyyd': device_add [ 17.478022] device: 'ptyye': device_add [ 17.481836] device: 'ptyyf': device_add [ 17.485648] device: 'ptyz0': device_add [ 17.489465] device: 'ptyz1': device_add [ 17.493274] device: 'ptyz2': device_add [ 17.497092] device: 'ptyz3': device_add [ 17.500905] device: 'ptyz4': device_add [ 17.504734] device: 'ptyz5': device_add [ 17.508532] device: 'ptyz6': device_add [ 17.512344] device: 'ptyz7': device_add [ 17.516158] device: 'ptyz8': device_add [ 17.519972] device: 'ptyz9': device_add [ 17.523787] device: 'ptyza': device_add [ 17.527600] device: 'ptyzb': device_add [ 17.531414] device: 'ptyzc': device_add [ 17.535228] device: 'ptyzd': device_add [ 17.539042] device: 'ptyze': device_add [ 17.542855] device: 'ptyzf': device_add [ 17.546685] device: 'ptya0': device_add [ 17.550487] device: 'ptya1': device_add [ 17.554300] device: 'ptya2': device_add [ 17.558109] device: 'ptya3': device_add [ 17.561923] device: 'ptya4': device_add [ 17.565736] device: 'ptya5': device_add [ 17.569557] device: 'ptya6': device_add [ 17.573370] device: 'ptya7': device_add [ 17.577179] device: 'ptya8': device_add [ 17.580993] device: 'ptya9': device_add [ 17.584807] device: 'ptyaa': device_add [ 17.588621] device: 'ptyab': device_add [ 17.592432] device: 'ptyac': device_add [ 17.596245] device: 'ptyad': device_add [ 17.600677] device: 'ptyae': device_add [ 17.604490] device: 'ptyaf': device_add [ 17.608304] device: 'ptyb0': device_add [ 17.612120] device: 'ptyb1': device_add [ 17.615929] device: 'ptyb2': device_add [ 17.619743] device: 'ptyb3': device_add [ 17.623560] device: 'ptyb4': device_add [ 17.627373] device: 'ptyb5': device_add [ 17.631186] device: 'ptyb6': device_add [ 17.635007] device: 'ptyb7': device_add [ 17.638813] device: 'ptyb8': device_add [ 17.642626] device: 'ptyb9': device_add [ 17.646439] device: 'ptyba': device_add [ 17.650256] device: 'ptybb': device_add [ 17.654068] device: 'ptybc': device_add [ 17.657882] device: 'ptybd': device_add [ 17.661697] device: 'ptybe': device_add [ 17.665511] device: 'ptybf': device_add [ 17.669321] device: 'ptyc0': device_add [ 17.673139] device: 'ptyc1': device_add [ 17.676951] device: 'ptyc2': device_add [ 17.680764] device: 'ptyc3': device_add [ 17.684577] device: 'ptyc4': device_add [ 17.688392] device: 'ptyc5': device_add [ 17.692206] device: 'ptyc6': device_add [ 17.696018] device: 'ptyc7': device_add [ 17.699840] device: 'ptyc8': device_add [ 17.703648] device: 'ptyc9': device_add [ 17.707459] device: 'ptyca': device_add [ 17.711275] device: 'ptycb': device_add [ 17.715088] device: 'ptycc': device_add [ 17.718901] device: 'ptycd': device_add [ 17.722714] device: 'ptyce': device_add [ 17.726528] device: 'ptycf': device_add [ 17.730345] device: 'ptyd0': device_add [ 17.734158] device: 'ptyd1': device_add [ 17.737970] device: 'ptyd2': device_add [ 17.741783] device: 'ptyd3': device_add [ 17.745597] device: 'ptyd4': device_add [ 17.749410] device: 'ptyd5': device_add [ 17.753224] device: 'ptyd6': device_add [ 17.757040] device: 'ptyd7': device_add [ 17.760852] device: 'ptyd8': device_add [ 17.764674] device: 'ptyd9': device_add [ 17.768480] device: 'ptyda': device_add [ 17.772293] device: 'ptydb': device_add [ 17.776107] device: 'ptydc': device_add [ 17.779921] device: 'ptydd': device_add [ 17.783736] device: 'ptyde': device_add [ 17.787548] device: 'ptydf': device_add [ 17.791363] device: 'ptye0': device_add [ 17.795183] device: 'ptye1': device_add [ 17.798990] device: 'ptye2': device_add [ 17.802802] device: 'ptye3': device_add [ 17.806616] device: 'ptye4': device_add [ 17.810431] device: 'ptye5': device_add [ 17.814245] device: 'ptye6': device_add [ 17.818058] device: 'ptye7': device_add [ 17.821872] device: 'ptye8': device_add [ 17.825685] device: 'ptye9': device_add [ 17.829506] device: 'ptyea': device_add [ 17.833327] device: 'ptyeb': device_add [ 17.837124] device: 'ptyec': device_add [ 17.840939] device: 'ptyed': device_add [ 17.844755] device: 'ptyee': device_add [ 17.848567] device: 'ptyef': device_add [ 17.852382] device: 'ttyp0': device_add [ 17.856193] device: 'ttyp1': device_add [ 17.860018] device: 'ttyp2': device_add [ 17.863827] device: 'ttyp3': device_add [ 17.867634] device: 'ttyp4': device_add [ 17.871446] device: 'ttyp5': device_add [ 17.875260] device: 'ttyp6': device_add [ 17.879073] device: 'ttyp7': device_add [ 17.882887] device: 'ttyp8': device_add [ 17.886704] device: 'ttyp9': device_add [ 17.890515] device: 'ttypa': device_add [ 17.894336] device: 'ttypb': device_add [ 17.898142] device: 'ttypc': device_add [ 17.901956] device: 'ttypd': device_add [ 17.905770] device: 'ttype': device_add [ 17.909583] device: 'ttypf': device_add [ 17.913399] device: 'ttyq0': device_add [ 17.917215] device: 'ttyq1': device_add [ 17.921028] device: 'ttyq2': device_add [ 17.924838] device: 'ttyq3': device_add [ 17.928653] device: 'ttyq4': device_add [ 17.932464] device: 'ttyq5': device_add [ 17.936277] device: 'ttyq6': device_add [ 17.940094] device: 'ttyq7': device_add [ 17.943906] device: 'ttyq8': device_add [ 17.947722] device: 'ttyq9': device_add [ 17.951534] device: 'ttyqa': device_add [ 17.955348] device: 'ttyqb': device_add [ 17.959169] device: 'ttyqc': device_add [ 17.962973] device: 'ttyqd': device_add [ 17.966790] device: 'ttyqe': device_add [ 17.970602] device: 'ttyqf': device_add [ 17.974416] device: 'ttyr0': device_add [ 17.978234] device: 'ttyr1': device_add [ 17.982042] device: 'ttyr2': device_add [ 17.985856] device: 'ttyr3': device_add [ 17.989669] device: 'ttyr4': device_add [ 17.993487] device: 'ttyr5': device_add [ 17.997298] device: 'ttyr6': device_add [ 18.001113] device: 'ttyr7': device_add [ 18.004927] device: 'ttyr8': device_add [ 18.008738] device: 'ttyr9': device_add [ 18.012553] device: 'ttyra': device_add [ 18.016364] device: 'ttyrb': device_add [ 18.020182] device: 'ttyrc': device_add [ 18.024002] device: 'ttyrd': device_add [ 18.027809] device: 'ttyre': device_add [ 18.031622] device: 'ttyrf': device_add [ 18.035436] device: 'ttys0': device_add [ 18.039251] device: 'ttys1': device_add [ 18.043060] device: 'ttys2': device_add [ 18.046878] device: 'ttys3': device_add [ 18.050690] device: 'ttys4': device_add [ 18.054504] device: 'ttys5': device_add [ 18.058317] device: 'ttys6': device_add [ 18.062130] device: 'ttys7': device_add [ 18.065944] device: 'ttys8': device_add [ 18.069756] device: 'ttys9': device_add [ 18.073574] device: 'ttysa': device_add [ 18.077386] device: 'ttysb': device_add [ 18.081199] device: 'ttysc': device_add [ 18.085014] device: 'ttysd': device_add [ 18.088833] device: 'ttyse': device_add [ 18.092640] device: 'ttysf': device_add [ 18.096452] device: 'ttyt0': device_add [ 18.100273] device: 'ttyt1': device_add [ 18.104082] device: 'ttyt2': device_add [ 18.107895] device: 'ttyt3': device_add [ 18.111709] device: 'ttyt4': device_add [ 18.115522] device: 'ttyt5': device_add [ 18.119336] device: 'ttyt6': device_add [ 18.123148] device: 'ttyt7': device_add [ 18.126966] device: 'ttyt8': device_add [ 18.130778] device: 'ttyt9': device_add [ 18.134591] device: 'ttyta': device_add [ 18.138406] device: 'ttytb': device_add [ 18.142218] device: 'ttytc': device_add [ 18.146032] device: 'ttytd': device_add [ 18.149846] device: 'ttyte': device_add [ 18.153668] device: 'ttytf': device_add [ 18.157474] device: 'ttyu0': device_add [ 18.161291] device: 'ttyu1': device_add [ 18.165103] device: 'ttyu2': device_add [ 18.168920] device: 'ttyu3': device_add [ 18.172729] device: 'ttyu4': device_add [ 18.176540] device: 'ttyu5': device_add [ 18.180357] device: 'ttyu6': device_add [ 18.184170] device: 'ttyu7': device_add [ 18.187983] device: 'ttyu8': device_add [ 18.191797] device: 'ttyu9': device_add [ 18.195610] device: 'ttyua': device_add [ 18.199424] device: 'ttyub': device_add [ 18.203236] device: 'ttyuc': device_add [ 18.207054] device: 'ttyud': device_add [ 18.210866] device: 'ttyue': device_add [ 18.214680] device: 'ttyuf': device_add [ 18.218500] device: 'ttyv0': device_add [ 18.222308] device: 'ttyv1': device_add [ 18.226119] device: 'ttyv2': device_add [ 18.229931] device: 'ttyv3': device_add [ 18.233749] device: 'ttyv4': device_add [ 18.237561] device: 'ttyv5': device_add [ 18.241375] device: 'ttyv6': device_add [ 18.245189] device: 'ttyv7': device_add [ 18.249001] device: 'ttyv8': device_add [ 18.252815] device: 'ttyv9': device_add [ 18.256628] device: 'ttyva': device_add [ 18.260445] device: 'ttyvb': device_add [ 18.264257] device: 'ttyvc': device_add [ 18.268072] device: 'ttyvd': device_add [ 18.271884] device: 'ttyve': device_add [ 18.275699] device: 'ttyvf': device_add [ 18.279522] device: 'ttyw0': device_add [ 18.283356] device: 'ttyw1': device_add [ 18.287798] device: 'ttyw2': device_add [ 18.291611] device: 'ttyw3': device_add [ 18.295426] device: 'ttyw4': device_add [ 18.299239] device: 'ttyw5': device_add [ 18.303053] device: 'ttyw6': device_add [ 18.306867] device: 'ttyw7': device_add [ 18.310681] device: 'ttyw8': device_add [ 18.314494] device: 'ttyw9': device_add [ 18.318307] device: 'ttywa': device_add [ 18.322122] device: 'ttywb': device_add [ 18.325934] device: 'ttywc': device_add [ 18.329748] device: 'ttywd': device_add [ 18.333563] device: 'ttywe': device_add [ 18.337384] device: 'ttywf': device_add [ 18.341190] device: 'ttyx0': device_add [ 18.345006] device: 'ttyx1': device_add [ 18.346701] device: 'ttyx2': device_add [ 18.352630] device: 'ttyx3': device_add [ 18.356443] device: 'ttyx4': device_add [ 18.360259] device: 'ttyx5': device_add [ 18.364072] device: 'ttyx6': device_add [ 18.367886] device: 'ttyx7': device_add [ 18.371699] device: 'ttyx8': device_add [ 18.375513] device: 'ttyx9': device_add [ 18.379325] device: 'ttyxa': device_add [ 18.383139] device: 'ttyxb': device_add [ 18.386956] device: 'ttyxc': device_add [ 18.390769] device: 'ttyxd': device_add [ 18.394581] device: 'ttyxe': device_add [ 18.398395] device: 'ttyxf': device_add [ 18.402212] device: 'ttyy0': device_add [ 18.406030] device: 'ttyy1': device_add [ 18.409844] device: 'ttyy2': device_add [ 18.413667] device: 'ttyy3': device_add [ 18.417472] device: 'ttyy4': device_add [ 18.421285] device: 'ttyy5': device_add [ 18.425100] device: 'ttyy6': device_add [ 18.428913] device: 'ttyy7': device_add [ 18.432726] device: 'ttyy8': device_add [ 18.436540] device: 'ttyy9': device_add [ 18.440355] device: 'ttyya': device_add [ 18.444168] device: 'ttyyb': device_add [ 18.447982] device: 'ttyyc': device_add [ 18.451795] device: 'ttyyd': device_add [ 18.455609] device: 'ttyye': device_add [ 18.459421] device: 'ttyyf': device_add [ 18.463236] device: 'ttyz0': device_add [ 18.467055] device: 'ttyz1': device_add [ 18.470864] device: 'ttyz2': device_add [ 18.474678] device: 'ttyz3': device_add [ 18.478499] device: 'ttyz4': device_add [ 18.482313] device: 'ttyz5': device_add [ 18.486127] device: 'ttyz6': device_add [ 18.489940] device: 'ttyz7': device_add [ 18.493757] device: 'ttyz8': device_add [ 18.497568] device: 'ttyz9': device_add [ 18.501382] device: 'ttyza': device_add [ 18.505196] device: 'ttyzb': device_add [ 18.509010] device: 'ttyzc': device_add [ 18.512822] device: 'ttyzd': device_add [ 18.516665] device: 'ttyze': device_add [ 18.520478] device: 'ttyzf': device_add [ 18.524292] device: 'ttya0': device_add [ 18.528117] device: 'ttya1': device_add [ 18.531926] device: 'ttya2': device_add [ 18.535739] device: 'ttya3': device_add [ 18.539553] device: 'ttya4': device_add [ 18.543376] device: 'ttya5': device_add [ 18.547191] device: 'ttya6': device_add [ 18.551004] device: 'ttya7': device_add [ 18.554818] device: 'ttya8': device_add [ 18.558605] device: 'ttya9': device_add [ 18.562466] device: 'ttyaa': device_add [ 18.566279] device: 'ttyab': device_add [ 18.570096] device: 'ttyac': device_add [ 18.573919] device: 'ttyad': device_add [ 18.577736] device: 'ttyae': device_add [ 18.581550] device: 'ttyaf': device_add [ 18.585363] device: 'ttyb0': device_add [ 18.589186] device: 'ttyb1': device_add [ 18.592996] device: 'ttyb2': device_add [ 18.596812] device: 'ttyb3': device_add [ 18.600626] device: 'ttyb4': device_add [ 18.604439] device: 'ttyb5': device_add [ 18.608261] device: 'ttyb6': device_add [ 18.612075] device: 'ttyb7': device_add [ 18.615887] device: 'ttyb8': device_add [ 18.619701] device: 'ttyb9': device_add [ 18.623517] device: 'ttyba': device_add [ 18.627330] device: 'ttybb': device_add [ 18.631144] device: 'ttybc': device_add [ 18.634959] device: 'ttybd': device_add [ 18.638772] device: 'ttybe': device_add [ 18.642585] device: 'ttybf': device_add [ 18.646409] device: 'ttyc0': device_add [ 18.650232] device: 'ttyc1': device_add [ 18.654042] device: 'ttyc2': device_add [ 18.657856] device: 'ttyc3': device_add [ 18.661670] device: 'ttyc4': device_add [ 18.665483] device: 'ttyc5': device_add [ 18.669297] device: 'ttyc6': device_add [ 18.673119] device: 'ttyc7': device_add [ 18.676935] device: 'ttyc8': device_add [ 18.680747] device: 'ttyc9': device_add [ 18.684561] device: 'ttyca': device_add [ 18.688375] device: 'ttycb': device_add [ 18.692189] device: 'ttycc': device_add [ 18.696001] device: 'ttycd': device_add [ 18.699815] device: 'ttyce': device_add [ 18.703630] device: 'ttycf': device_add [ 18.707444] device: 'ttyd0': device_add [ 18.711269] device: 'ttyd1': device_add [ 18.715088] device: 'ttyd2': device_add [ 18.718901] device: 'ttyd3': device_add [ 18.722714] device: 'ttyd4': device_add [ 18.726529] device: 'ttyd5': device_add [ 18.730344] device: 'ttyd6': device_add [ 18.734157] device: 'ttyd7': device_add [ 18.737980] device: 'ttyd8': device_add [ 18.741793] device: 'ttyd9': device_add [ 18.745606] device: 'ttyda': device_add [ 18.749420] device: 'ttydb': device_add [ 18.753242] device: 'ttydc': device_add [ 18.757068] device: 'ttydd': device_add [ 18.760888] device: 'ttyde': device_add [ 18.764702] device: 'ttydf': device_add [ 18.768528] device: 'ttye0': device_add [ 18.772349] device: 'ttye1': device_add [ 18.776167] device: 'ttye2': device_add [ 18.779997] device: 'ttye3': device_add [ 18.783813] device: 'ttye4': device_add [ 18.787628] device: 'ttye5': device_add [ 18.791450] device: 'ttye6': device_add [ 18.795271] device: 'ttye7': device_add [ 18.799084] device: 'ttye8': device_add [ 18.802906] device: 'ttye9': device_add [ 18.806732] device: 'ttyea': device_add [ 18.810553] device: 'ttyeb': device_add [ 18.814367] device: 'ttyec': device_add [ 18.818189] device: 'ttyed': device_add [ 18.822012] device: 'ttyee': device_add [ 18.825832] device: 'ttyef': device_add [ 18.829655] device: 'ptmx': device_add [ 18.833436] initcall pty_init+0x0/0x4ab returned 0 after 1914060 usecs [ 18.836648] calling sysrq_init+0x0/0x1f @ 1 [ 18.843323] initcall sysrq_init+0x0/0x1f returned 0 after 0 usecs [ 18.849980] calling init+0x0/0xf @ 1 [ 18.853313] bus: 'virtio': add driver virtio_console [ 18.858803] initcall init+0x0/0xf returned 0 after 3255 usecs [ 18.863314] calling nvram_init+0x0/0x70 @ 1 [ 18.866647] device: 'nvram': device_add [ 18.872600] Non-volatile memory driver v1.3 [ 18.876647] initcall nvram_init+0x0/0x70 returned 0 after 9765 usecs [ 18.879979] calling timeriomem_rng_init+0x0/0xf @ 1 [ 18.886647] bus: 'platform': add driver timeriomem_rng [ 18.893126] initcall timeriomem_rng_init+0x0/0xf returned 0 after 3255 usecs [ 18.899980] calling mod_init+0x0/0x9f @ 1 [ 18.903347] initcall mod_init+0x0/0x9f returned -19 after 0 usecs [ 18.909980] calling mod_init+0x0/0x93 @ 1 [ 18.913339] initcall mod_init+0x0/0x93 returned -19 after 0 usecs [ 18.919980] calling mod_init+0x0/0x41 @ 1 [ 18.923313] initcall mod_init+0x0/0x41 returned -19 after 0 usecs [ 18.929980] calling init+0x0/0x81 @ 1 [ 18.933312] bus: 'virtio': add driver virtio_rng [ 18.938887] initcall init+0x0/0x81 returned 0 after 3255 usecs [ 18.943314] calling nsc_gpio_init+0x0/0x11 @ 1 [ 18.946644] nsc_gpio initializing [ 18.949980] initcall nsc_gpio_init+0x0/0x11 returned 0 after 3255 usecs [ 18.956646] calling tlclk_init+0x0/0x1cb @ 1 [ 18.963317] telclk_interrup = 0xf non-mcpbl0010 hw. [ 18.966650] initcall tlclk_init+0x0/0x1cb returned -6 after 3255 usecs [ 18.973313] initcall tlclk_init+0x0/0x1cb returned with error code -6 [ 18.979982] calling agp_init+0x0/0x21 @ 1 [ 18.983312] Linux agpgart interface v0.103 [ 18.986646] initcall agp_init+0x0/0x21 returned 0 after 3255 usecs [ 18.993313] calling agp_ati_init+0x0/0x24 @ 1 [ 18.996647] bus: 'pci': add driver agpgart-ati [ 19.004424] initcall agp_ati_init+0x0/0x24 returned 0 after 6510 usecs [ 19.009980] calling agp_amdk7_init+0x0/0x24 @ 1 [ 19.013312] bus: 'pci': add driver agpgart-amdk7 [ 19.020630] initcall agp_amdk7_init+0x0/0x24 returned 0 after 6510 usecs [ 19.026647] calling agp_amd64_init+0x0/0xaf @ 1 [ 19.029979] bus: 'pci': add driver agpgart-amd64 [ 19.036490] initcall agp_amd64_init+0x0/0xaf returned -19 after 3255 usecs [ 19.043313] calling agp_efficeon_init+0x0/0x39 @ 1 [ 19.046646] bus: 'pci': add driver agpgart-efficeon [ 19.053131] initcall agp_efficeon_init+0x0/0x39 returned 0 after 3255 usecs [ 19.059980] calling agp_intel_init+0x0/0x24 @ 1 [ 19.063313] bus: 'pci': add driver agpgart-intel [ 19.069258] initcall agp_intel_init+0x0/0x24 returned 0 after 3255 usecs [ 19.073313] calling agp_nvidia_init+0x0/0x24 @ 1 [ 19.079979] bus: 'pci': add driver agpgart-nvidia [ 19.085287] initcall agp_nvidia_init+0x0/0x24 returned 0 after 3255 usecs [ 19.089980] calling agp_sis_init+0x0/0x24 @ 1 [ 19.093312] bus: 'pci': add driver agpgart-sis [ 19.100893] initcall agp_sis_init+0x0/0x24 returned 0 after 6510 usecs [ 19.106647] calling agp_serverworks_init+0x0/0x24 @ 1 [ 19.109979] bus: 'pci': add driver agpgart-serverworks [ 19.117618] initcall agp_serverworks_init+0x0/0x24 returned 0 after 6510 usecs [ 19.123313] calling agp_via_init+0x0/0x24 @ 1 [ 19.126646] bus: 'pci': add driver agpgart-via [ 19.133662] initcall agp_via_init+0x0/0x24 returned 0 after 6510 usecs [ 19.139980] calling init_ipwireless+0x0/0x36 @ 1 [ 19.143311] ipwireless 1.1 by Stephen Blackheath, Ben Martel, Jiri Kosina and David Sterba [ 19.149983] bus: 'pcmcia': add driver ipwireless [ 19.157661] initcall init_ipwireless+0x0/0x36 returned 0 after 13020 usecs [ 19.163313] calling synclink_cs_init+0x0/0x128 @ 1 [ 19.166645] SyncLink PC Card driver $Revision: 4.34 $ [ 19.173312] bus: 'pcmcia': add driver synclink_cs [ 19.179067] device: 'ttySLP0': device_add [ 19.183097] device: 'ttySLP1': device_add [ 19.187090] device: 'ttySLP2': device_add [ 19.191082] device: 'ttySLP3': device_add [ 19.195070] SyncLink PC Card driver $Revision: 4.34 $, tty major#249 [ 19.199981] initcall synclink_cs_init+0x0/0x128 returned 0 after 32552 usecs [ 19.206646] calling cmm_init+0x0/0xa0 @ 1 [ 19.209978] cm4000_cs.c v2.4.0gm6 - All bugs added by Harald Welte [ 19.216645] device class 'cardman_4000': registering [ 19.223557] bus: 'pcmcia': add driver cm4000_cs [ 19.228064] initcall cmm_init+0x0/0xa0 returned 0 after 16276 usecs [ 19.233313] calling ipmi_init_msghandler_mod+0x0/0xc @ 1 [ 19.236648] bus: 'platform': add driver ipmi [ 19.243927] ipmi message handler version 39.2 [ 19.246651] initcall ipmi_init_msghandler_mod+0x0/0xc returned 0 after 9765 usecs [ 19.253313] calling init_ipmi_devintf+0x0/0xd1 @ 1 [ 19.259978] ipmi device interface [ 19.263311] device class 'ipmi': registering [ 19.268103] initcall init_ipmi_devintf+0x0/0xd1 returned 0 after 6510 usecs [ 19.273314] calling init_ipmi_si+0x0/0x567 @ 1 [ 19.276646] bus: 'platform': add driver ipmi_si [ 19.284057] IPMI System Interface driver. [ 19.286647] bus: 'pci': add driver ipmi_si [ 19.319994] bus: 'pci': remove driver ipmi_si [ 19.326231] driver: 'ipmi_si': driver_release [ 19.329986] bus: 'platform': remove driver ipmi_si [ 19.335330] driver: 'ipmi_si': driver_release [ 19.336649] ipmi_si: Unable to find any System Interface(s) [ 19.343313] initcall init_ipmi_si+0x0/0x567 returned -19 after 65104 usecs [ 19.349982] calling ipmi_wdog_init+0x0/0xfe @ 1 [ 19.353322] IPMI Watchdog: driver initialized [ 19.359980] initcall ipmi_wdog_init+0x0/0xfe returned 0 after 6510 usecs [ 19.366648] calling ipmi_poweroff_init+0x0/0x7d @ 1 [ 19.369978] Copyright (C) 2004 MontaVista Software - IPMI Powerdown via sys_reboot. [ 19.380000] initcall ipmi_poweroff_init+0x0/0x7d returned 0 after 9765 usecs [ 19.386646] calling hangcheck_init+0x0/0xa9 @ 1 [ 19.389978] Hangcheck: starting hangcheck timer 0.9.0 (tick is 180 seconds, margin is 60 seconds). [ 19.399978] Hangcheck: Using get_cycles(). [ 19.403314] initcall hangcheck_init+0x0/0xa9 returned 0 after 13020 usecs [ 19.409980] calling init_nsc+0x0/0x19f @ 1 [ 19.413324] initcall init_nsc+0x0/0x19f returned -19 after 0 usecs [ 19.419980] calling drm_core_init+0x0/0xec @ 1 [ 19.423314] device class 'drm': registering [ 19.430592] [drm] Initialized drm 1.1.0 20060810 [ 19.433314] initcall drm_core_init+0x0/0xec returned 0 after 9765 usecs [ 19.439979] calling r128_init+0x0/0x19 @ 1 [ 19.443513] initcall r128_init+0x0/0x19 returned 0 after 0 usecs [ 19.449980] calling radeon_init+0x0/0x23 @ 1 [ 19.453948] IOAPIC[0]: Set routing entry (2-5 -> 0x35 -> IRQ 5 Mode:1 Active:1) [ 19.463316] pci 0000:01:00.0: PCI->APIC IRQ transform: INT A -> IRQ 5 [ 19.469981] pci 0000:01:00.0: setting latency timer to 64 [ 19.473400] device: 'card0': device_add [ 19.479817] [drm] Initialized radeon 1.30.0 20080528 for 0000:01:00.0 on minor 0 [ 19.487840] initcall radeon_init+0x0/0x23 returned 0 after 32552 usecs [ 19.493315] calling mga_init+0x0/0x19 @ 1 [ 19.496665] initcall mga_init+0x0/0x19 returned 0 after 0 usecs [ 19.503313] calling sis_init+0x0/0x19 @ 1 [ 19.506684] initcall sis_init+0x0/0x19 returned 0 after 0 usecs [ 19.513313] calling savage_init+0x0/0x19 @ 1 [ 19.516752] initcall savage_init+0x0/0x19 returned 0 after 0 usecs [ 19.523313] calling via_init+0x0/0x1e @ 1 [ 19.526691] initcall via_init+0x0/0x1e returned 0 after 0 usecs [ 19.533313] calling cn_proc_init+0x0/0x30 @ 1 [ 19.536649] initcall cn_proc_init+0x0/0x30 returned 0 after 0 usecs [ 19.543312] calling i810fb_init+0x0/0x35f @ 1 [ 19.549982] bus: 'pci': add driver i810fb [ 19.554261] initcall i810fb_init+0x0/0x35f returned 0 after 3255 usecs [ 19.559980] calling serial8250_init+0x0/0x114 @ 1 [ 19.563312] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled [ 19.569989] Registering platform device 'serial8250'. Parent at platform [ 19.576645] device: 'serial8250': device_add [ 19.579982] bus: 'platform': add device serial8250 [ 19.587449] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A [ 19.593316] device: 'ttyS0': device_add [ 19.597330] device: 'ttyS1': device_add [ 19.601163] device: 'ttyS2': device_add [ 19.604996] device: 'ttyS3': device_add [ 19.608827] bus: 'platform': add driver serial8250 [ 19.613318] bus: 'platform': driver_probe_device: matched device serial8250 with driver serial8250 [ 19.619978] bus: 'platform': really_probe: probing driver serial8250 with device serial8250 [ 19.629982] driver: 'serial8250': driver_bound: bound to device 'serial8250' [ 19.636645] bus: 'platform': really_probe: bound device serial8250 to driver serial8250 [ 19.645800] initcall serial8250_init+0x0/0x114 returned 0 after 78124 usecs [ 19.649981] calling serial8250_pci_init+0x0/0x16 @ 1 [ 19.656646] bus: 'pci': add driver serial [ 19.661775] initcall serial8250_pci_init+0x0/0x16 returned 0 after 3255 usecs [ 19.666646] calling init_serial_cs+0x0/0xf @ 1 [ 19.670000] bus: 'pcmcia': add driver serial_cs [ 19.677872] initcall init_serial_cs+0x0/0xf returned 0 after 6510 usecs [ 19.683313] calling jsm_init_module+0x0/0x3a @ 1 [ 19.686677] bus: 'pci': add driver jsm [ 19.692876] initcall jsm_init_module+0x0/0x3a returned 0 after 3255 usecs [ 19.696647] calling topology_sysfs_init+0x0/0x7c @ 1 [ 19.703333] initcall topology_sysfs_init+0x0/0x7c returned 0 after 0 usecs [ 19.709979] calling floppy_init+0x0/0xd18 @ 1 [ 19.713343] bus: 'platform': add driver floppy [ 19.720347] Floppy drive(s): fd0 is 1.44M [ 19.740745] FDC 0 is a post-1991 82077 [ 19.743532] Registering platform device 'floppy.0'. Parent at platform [ 19.749983] device: 'floppy.0': device_add [ 19.756649] bus: 'platform': add device floppy.0 [ 19.761585] bus: 'platform': driver_probe_device: matched device floppy.0 with driver floppy [ 19.766645] bus: 'platform': really_probe: probing driver floppy with device floppy.0 [ 19.776648] driver: 'floppy.0': driver_bound: bound to device 'floppy' [ 19.783314] bus: 'platform': really_probe: bound device floppy.0 to driver floppy [ 19.789995] device: 'fd0': device_add [ 19.795412] device: '2:0': device_add [ 19.799062] initcall floppy_init+0x0/0xd18 returned 0 after 81380 usecs [ 19.803312] calling loop_init+0x0/0x16a @ 1 [ 19.806727] device: 'loop0': device_add [ 19.813728] device: '7:0': device_add [ 19.817368] device: 'loop1': device_add [ 19.821196] device: '7:1': device_add [ 19.824826] device: 'loop2': device_add [ 19.828660] device: '7:2': device_add [ 19.832298] device: 'loop3': device_add [ 19.836129] device: '7:3': device_add [ 19.839769] device: 'loop4': device_add [ 19.843603] device: '7:4': device_add [ 19.847242] device: 'loop5': device_add [ 19.851072] device: '7:5': device_add [ 19.854703] device: 'loop6': device_add [ 19.858533] device: '7:6': device_add [ 19.862177] device: 'loop7': device_add [ 19.866004] device: '7:7': device_add [ 19.869636] loop: module loaded [ 19.869979] initcall loop_init+0x0/0x16a returned 0 after 61848 usecs [ 19.876646] calling cpqarray_init+0x0/0x24e @ 1 [ 19.883311] Compaq SMART2 Driver (v 2.6.0) [ 19.886646] bus: 'pci': add driver cpqarray [ 19.892011] bus: 'pci': remove driver cpqarray [ 19.896409] driver: 'cpqarray': driver_release [ 19.899980] initcall cpqarray_init+0x0/0x24e returned -19 after 16276 usecs [ 19.906645] calling cciss_init+0x0/0x47 @ 1 [ 19.909977] HP CISS Driver (v 3.6.20) [ 19.915657] bus: 'cciss': registered [ 19.916645] bus: 'pci': add driver cciss [ 19.923122] initcall cciss_init+0x0/0x47 returned 0 after 9765 usecs [ 19.929981] calling DAC960_init_module+0x0/0x46 @ 1 [ 19.933312] bus: 'pci': add driver DAC960 [ 19.938992] device: 'dac960_gam': device_add [ 19.943265] initcall DAC960_init_module+0x0/0x46 returned 0 after 6510 usecs [ 19.949980] calling pkt_init+0x0/0x190 @ 1 [ 19.953320] device class 'pktcdvd': registering [ 19.958926] device: 'pktcdvd!control': device_add [ 19.963639] initcall pkt_init+0x0/0x190 returned 0 after 9765 usecs [ 19.966646] calling mm_init+0x0/0x14a @ 1 [ 19.973313] bus: 'pci': add driver umem [ 19.977763] MM: desc_per_page = 128 [ 19.979980] initcall mm_init+0x0/0x14a returned 0 after 6510 usecs [ 19.986645] calling init+0x0/0x24 @ 1 [ 19.989979] bus: 'virtio': add driver virtio_blk [ 19.995686] initcall init+0x0/0x24 returned 0 after 3255 usecs [ 19.999979] calling carm_init+0x0/0x16 @ 1 [ 20.003312] bus: 'pci': add driver sx8 [ 20.009389] initcall carm_init+0x0/0x16 returned 0 after 3255 usecs [ 20.013312] calling ub_init+0x0/0x71 @ 1 [ 20.016647] bus: 'usb': add driver ub [ 20.023247] usbcore: registered new interface driver ub [ 20.026660] initcall ub_init+0x0/0x71 returned 0 after 9765 usecs [ 20.033312] calling ibmasm_init+0x0/0x56 @ 1 [ 20.036653] bus: 'pci': add driver ibmasm [ 20.042846] ibmasm: IBM ASM Service Processor Driver version 1.0 loaded [ 20.046646] initcall ibmasm_init+0x0/0x56 returned 0 after 9765 usecs [ 20.053313] calling ics932s401_init+0x0/0x11 @ 1 [ 20.059979] bus: 'i2c': add driver ics932s401 [ 20.064851] initcall ics932s401_init+0x0/0x11 returned 0 after 3255 usecs [ 20.069980] calling ioc4_init+0x0/0x1b @ 1 [ 20.073312] bus: 'pci': add driver IOC4 [ 20.079594] initcall ioc4_init+0x0/0x1b returned 0 after 3255 usecs [ 20.083312] calling ilo_init+0x0/0x81 @ 1 [ 20.086645] device class 'iLO': registering [ 20.094058] bus: 'pci': add driver hpilo [ 20.097975] initcall ilo_init+0x0/0x81 returned 0 after 9765 usecs [ 20.103312] calling c2port_init+0x0/0x45 @ 1 [ 20.106644] Silicon Labs C2 port support v. 0.51.0 - (C) 2007 Rodolfo Giometti [ 20.113311] device class 'c2port': registering [ 20.120058] initcall c2port_init+0x0/0x45 returned 0 after 13020 usecs [ 20.123312] calling duramar2150_c2port_init+0x0/0x67 @ 1 [ 20.129990] device: 'c2port0': device_add [ 20.135936] c2port c2port0: C2 port uc added [ 20.139979] c2port c2port0: uc flash has 30 blocks x 512 bytes (15360 bytes total) [ 20.146646] initcall duramar2150_c2port_init+0x0/0x67 returned 0 after 16276 usecs [ 20.153312] calling eeprom_init+0x0/0x11 @ 1 [ 20.156645] bus: 'i2c': add driver eeprom [ 20.163572] initcall eeprom_init+0x0/0x11 returned 0 after 6510 usecs [ 20.166646] calling max6875_init+0x0/0x11 @ 1 [ 20.173311] bus: 'i2c': add driver max6875 [ 20.178478] initcall max6875_init+0x0/0x11 returned 0 after 3255 usecs [ 20.183312] calling pasic3_base_init+0x0/0x14 @ 1 [ 20.186646] bus: 'platform': add driver pasic3 [ 20.194171] bus: 'platform': remove driver pasic3 [ 20.198838] driver: 'pasic3': driver_release [ 20.199979] initcall pasic3_base_init+0x0/0x14 returned -19 after 13020 usecs [ 20.209978] calling scsi_tgt_init+0x0/0x7d @ 1 [ 20.214707] device: 'tgt': device_add [ 20.218549] initcall scsi_tgt_init+0x0/0x7d returned 0 after 3255 usecs [ 20.223312] calling spi_transport_init+0x0/0x65 @ 1 [ 20.229985] device class 'spi_transport': registering [ 20.235077] device class 'spi_host': registering [ 20.239667] initcall spi_transport_init+0x0/0x65 returned 0 after 6510 usecs [ 20.243312] calling fc_transport_init+0x0/0x43 @ 1 [ 20.249978] device class 'fc_host': registering [ 20.256047] device class 'fc_vports': registering [ 20.260728] device class 'fc_remote_ports': registering [ 20.265929] device class 'fc_transport': registering [ 20.270870] initcall fc_transport_init+0x0/0x43 returned 0 after 19531 usecs [ 20.276646] calling iscsi_transport_init+0x0/0x125 @ 1 [ 20.279977] Loading iSCSI transport class v2.0-870. [ 20.286644] device class 'iscsi_transport': registering [ 20.293143] device class 'iscsi_endpoint': registering [ 20.298266] device class 'iscsi_host': registering [ 20.303026] device class 'iscsi_connection': registering [ 20.308313] device class 'iscsi_session': registering [ 20.313379] initcall iscsi_transport_init+0x0/0x125 returned 0 after 32552 usecs [ 20.319979] calling sas_transport_init+0x0/0x9f @ 1 [ 20.323310] device class 'sas_host': registering [ 20.330325] device class 'sas_phy': registering [ 20.334826] device class 'sas_port': registering [ 20.339429] device class 'sas_device': registering [ 20.344188] device class 'sas_end_device': registering [ 20.346691] device class 'sas_expander': registering [ 20.354242] initcall sas_transport_init+0x0/0x9f returned 0 after 29296 usecs [ 20.359978] calling sas_class_init+0x0/0x2c @ 1 [ 20.363316] initcall sas_class_init+0x0/0x2c returned 0 after 0 usecs [ 20.369978] calling scsi_dh_init+0x0/0x34 @ 1 [ 20.376646] initcall scsi_dh_init+0x0/0x34 returned 0 after 0 usecs [ 20.379978] calling rdac_init+0x0/0x26 @ 1 [ 20.386644] rdac: device handler registered [ 20.389978] initcall rdac_init+0x0/0x26 returned 0 after 3255 usecs [ 20.396644] calling hp_sw_init+0x0/0xf @ 1 [ 20.399977] hp_sw: device handler registered [ 20.403311] initcall hp_sw_init+0x0/0xf returned 0 after 3255 usecs [ 20.409978] calling clariion_init+0x0/0x2c @ 1 [ 20.416644] emc: device handler registered [ 20.419978] initcall clariion_init+0x0/0x2c returned 0 after 3255 usecs [ 20.426644] calling libfc_init+0x0/0x65 @ 1 [ 20.431622] initcall libfc_init+0x0/0x65 returned 0 after 0 usecs [ 20.436645] calling fcoe_init+0x0/0x126 @ 1 [ 20.441925] initcall fcoe_init+0x0/0x126 returned 0 after 0 usecs [ 20.446645] calling iscsi_sw_tcp_init+0x0/0x3a @ 1 [ 20.449980] device: 'tcp': device_add [ 20.456527] iscsi: registered transport (tcp) [ 20.459979] initcall iscsi_sw_tcp_init+0x0/0x3a returned 0 after 9765 usecs [ 20.466645] calling NCR_700_init+0x0/0x1c @ 1 [ 20.469979] initcall NCR_700_init+0x0/0x1c returned 0 after 0 usecs [ 20.476644] calling sim710_init+0x0/0x11 @ 1 [ 20.479978] initcall sim710_init+0x0/0x11 returned 0 after 0 usecs [ 20.486644] calling advansys_init+0x0/0x16 @ 1 [ 20.493314] bus: 'pci': add driver advansys [ 20.497618] initcall advansys_init+0x0/0x16 returned 0 after 3255 usecs [ 20.503312] calling BusLogic_init+0x0/0x193d @ 1 [ 20.506707] initcall BusLogic_init+0x0/0x193d returned 0 after 0 usecs [ 20.513312] calling adpt_init+0x0/0xdb8 @ 1 [ 20.516643] Loading Adaptec I2O RAID: Version 2.4 Build 5go [ 20.523313] Detecting Adaptec I2O RAID controllers... [ 20.529985] initcall adpt_init+0x0/0xdb8 returned -19 after 13020 usecs [ 20.536647] calling arcmsr_module_init+0x0/0x1b @ 1 [ 20.539979] bus: 'pci': add driver arcmsr [ 20.545720] initcall arcmsr_module_init+0x0/0x1b returned 0 after 3255 usecs [ 20.549978] calling ahc_linux_init+0x0/0x5c @ 1 [ 20.556648] bus: 'pci': add driver aic7xxx [ 20.561411] initcall ahc_linux_init+0x0/0x5c returned 0 after 3255 usecs [ 20.566645] calling ahd_linux_init+0x0/0x6e @ 1 [ 20.569981] bus: 'pci': add driver aic79xx [ 20.576757] initcall ahd_linux_init+0x0/0x6e returned 0 after 6510 usecs [ 20.583312] calling init_this_scsi_driver+0x0/0xc5 @ 1 [ 20.586882] initcall init_this_scsi_driver+0x0/0xc5 returned -19 after 0 usecs [ 20.593312] calling aic94xx_init+0x0/0x115 @ 1 [ 20.599977] aic94xx: Adaptec aic94xx SAS/SATA driver version 1.0.3 loaded [ 20.606658] bus: 'pci': add driver aic94xx [ 20.611363] initcall aic94xx_init+0x0/0x115 returned 0 after 9765 usecs [ 20.616645] calling init_this_scsi_driver+0x0/0xc5 @ 1 [ 20.619979] initcall init_this_scsi_driver+0x0/0xc5 returned -19 after 0 usecs [ 20.629978] calling init_this_scsi_driver+0x0/0xc5 @ 1 [ 20.633351] scsi: <fdomain> Detection failed (no card) [ 20.639979] initcall init_this_scsi_driver+0x0/0xc5 returned -19 after 6510 usecs [ 20.646645] calling NCR_D700_init+0x0/0xf @ 1 [ 20.649978] initcall NCR_D700_init+0x0/0xf returned 0 after 0 usecs [ 20.656646] calling NCR_Q720_init+0x0/0x29 @ 1 [ 20.659986] initcall NCR_Q720_init+0x0/0x29 returned 0 after 0 usecs [ 20.666645] calling qla2x00_module_init+0x0/0xfd @ 1 [ 20.673321] QLogic Fibre Channel HBA Driver: 8.03.01-k4 [ 20.676646] bus: 'pci': add driver qla2xxx [ 20.683915] initcall qla2x00_module_init+0x0/0xfd returned 0 after 9765 usecs [ 20.689979] calling qla4xxx_module_init+0x0/0xbd @ 1 [ 20.693316] device: 'qla4xxx': device_add [ 20.700021] iscsi: registered transport (qla4xxx) [ 20.703313] bus: 'pci': add driver qla4xxx [ 20.708781] QLogic iSCSI HBA Driver [ 20.709979] initcall qla4xxx_module_init+0x0/0xbd returned 0 after 16276 usecs [ 20.716645] calling sym2_init+0x0/0xdf @ 1 [ 20.723314] bus: 'pci': add driver sym53c8xx [ 20.727852] initcall sym2_init+0x0/0xdf returned 0 after 3255 usecs [ 20.733312] calling ibmmca_init+0x0/0x14 @ 1 [ 20.736645] initcall ibmmca_init+0x0/0x14 returned 0 after 0 usecs [ 20.743312] calling init_this_scsi_driver+0x0/0xc5 @ 1 [ 20.746651] initcall init_this_scsi_driver+0x0/0xc5 returned -19 after 0 usecs [ 20.756646] calling dc395x_module_init+0x0/0x16 @ 1 [ 20.759978] bus: 'pci': add driver dc395x [ 20.765899] initcall dc395x_module_init+0x0/0x16 returned 0 after 3255 usecs [ 20.769979] calling dc390_module_init+0x0/0x8b @ 1 [ 20.776644] DC390: clustering now enabled by default. If you get problems load [ 20.783312] with "disable_clustering=1" and report to maintainers [ 20.789979] bus: 'pci': add driver tmscsim [ 20.795714] initcall dc390_module_init+0x0/0x8b returned 0 after 16276 usecs [ 20.799979] calling megaraid_init+0x0/0x9d @ 1 [ 20.806656] bus: 'pci': add driver megaraid_legacy [ 20.812548] initcall megaraid_init+0x0/0x9d returned 0 after 3255 usecs [ 20.816645] calling megasas_init+0x0/0x11b @ 1 [ 20.823311] megasas: 00.00.04.01 Thu July 24 11:41:51 PST 2008 [ 20.826650] bus: 'pci': add driver megaraid_sas [ 20.833965] initcall megasas_init+0x0/0x11b returned 0 after 9765 usecs [ 20.839979] calling atp870u_init+0x0/0x16 @ 1 [ 20.843312] bus: 'pci': add driver atp870u [ 20.849034] initcall atp870u_init+0x0/0x16 returned 0 after 3255 usecs [ 20.853312] calling gdth_init+0x0/0xd5 @ 1 [ 20.856645] GDT-HA: Storage RAID Controller Driver. Version: 3.05 [ 20.863312] bus: 'pci': add driver gdth [ 20.869577] initcall gdth_init+0x0/0xd5 returned 0 after 9765 usecs [ 20.873312] calling inia100_init+0x0/0x16 @ 1 [ 20.879979] bus: 'pci': add driver inia100 [ 20.884314] initcall inia100_init+0x0/0x16 returned 0 after 3255 usecs [ 20.889978] calling twa_init+0x0/0x25 @ 1 [ 20.893310] 3ware 9000 Storage Controller device driver for Linux v2.26.02.012. [ 20.899979] bus: 'pci': add driver 3w-9xxx [ 20.906240] initcall twa_init+0x0/0x25 returned 0 after 9765 usecs [ 20.909978] calling ipr_init+0x0/0x2a @ 1 [ 20.913310] ipr: IBM Power RAID SCSI Device Driver version: 2.4.3 (June 10, 2009) [ 20.923312] bus: 'pci': add driver ipr [ 20.927651] initcall ipr_init+0x0/0x2a returned 0 after 13020 usecs [ 20.933312] calling hptiop_module_init+0x0/0x2a @ 1 [ 20.936644] RocketRAID 3xxx/4xxx Controller driver v1.3 (071203) [ 20.943312] bus: 'pci': add driver hptiop [ 20.948798] initcall hptiop_module_init+0x0/0x2a returned 0 after 9765 usecs [ 20.953312] calling cxgb3i_init_module+0x0/0x31 @ 1 [ 20.959979] cxgb3i: tag itt 0x1fff, 13 bits, age 0xf, 4 bits. [ 20.963312] device: 'cxgb3i': device_add [ 20.970370] iscsi: registered transport (cxgb3i) [ 20.973319] initcall cxgb3i_init_module+0x0/0x31 returned 0 after 13020 usecs [ 20.979979] calling init_osst+0x0/0x10f @ 1 [ 20.983311] osst :I: Tape driver with OnStream support version 0.99.4 [ 20.983313] osst :I: $Id: osst.c,v 1.73 2005/01/01 21:13:34 wriede Exp $ [ 20.996644] device class 'onstream_tape': registering [ 21.004433] bus: 'scsi': add driver osst [ 21.008342] initcall init_osst+0x0/0x10f returned 0 after 22786 usecs [ 21.013312] calling init_sd+0x0/0xdb @ 1 [ 21.016652] device class 'scsi_disk': registering [ 21.023412] bus: 'scsi': add driver sd [ 21.027140] initcall init_sd+0x0/0xdb returned 0 after 9765 usecs [ 21.029978] calling init_sg+0x0/0x133 @ 1 [ 21.036645] device class 'scsi_generic': registering [ 21.042218] initcall init_sg+0x0/0x133 returned 0 after 3255 usecs [ 21.046645] calling osd_uld_init+0x0/0xb6 @ 1 [ 21.049977] device class 'scsi_osd': registering
3,551 lines not shown · raw message
Part of this message is not shown here. View the raw message.
Quoted 4 lines · Ingo Molnar
Yeah, nice cleanups!
I gave it some brief testing in tip:master and there's the new lockdep assert below. Config and full bootlog attached.
Yeah, we need to call clocksource_change_rating() outside of watchdog lock. Spotted a missing _irqrestore as well.
Thanks,
tglx
---
kernel/time/clocksource.c +9 -2
@@ -307,16 +307,23 @@ static void clocksource_watchdog_work(struct work_struct *work) {struct clocksource *cs, *tmp;unsigned long flags; +LIST_HEAD (unstable);spin_lock_irqsave (&watchdog_lock, flags);list_for_each_entry_safe (cs, tmp, &watchdog_list, wd_list)if (cs->flags &CLOCK_SOURCE_UNSTABLE ) {list_del_init (&cs->wd_list); -clocksource_change_rating (cs,0 ); +list_add (&cs->wd_list, &unstable); }/* Check if the watchdog timer needs to be stopped. */ clocksource_stop_watchdog (); -spin_unlock (&watchdog_lock); +spin_unlock_irqrestore (&watchdog_lock, flags); + +/* Needs to be done outside of watchdog lock */ +list_for_each_entry_safe (cs, tmp, &unstable, wd_list) { +list_del_init (&cs->wd_list); +clocksource_change_rating (cs,0 ); + } }#else /* CONFIG_CLOCKSOURCE_WATCHDOG */
Quoted 28 lines · On Sat, 15 Aug 2009 12:08:35 +0200 (CEST) Thomas Gleixner <[email protected]>…
Yeah, we need to call
clocksource_change_rating()outside of watchdog lock. Spotted a missing_irqrestoreas well.Thanks,
tglx
---kernel/time/clocksource.c +2
-2@@ -307,16 +307,23 @@ static void clocksource_watchdog_work(struct work_struct *work) {struct clocksource *cs, *tmp;unsigned long flags; +LIST_HEAD (unstable);spin_lock_irqsave (&watchdog_lock, flags);list_for_each_entry_safe (cs, tmp, &watchdog_list, wd_list)if (cs->flags &CLOCK_SOURCE_UNSTABLE ) {list_del_init (&cs->wd_list); -clocksource_change_rating (cs,0 ); +list_add (&cs->wd_list, &unstable); }/* Check if the watchdog timer needs to be stopped. */ clocksource_stop_watchdog (); -spin_unlock (&watchdog_lock);
kernel/time/clocksource.c static void clocksource_watchdog_work(struct work_struct *work) · line 329
Quoted 10 lines
kernel/time/clocksource.c +7
-0+spin_unlock_irqrestore (&watchdog_lock, flags); + +/* Needs to be done outside of watchdog lock */ +list_for_each_entry_safe (cs, tmp, &unstable, wd_list) { +list_del_init (&cs->wd_list); +clocksource_change_rating (cs,0 ); + } }#else /* CONFIG_CLOCKSOURCE_WATCHDOG */
Autsch, the s/spin_unlock/spin_unlock_irqrestore/ is rather obvious, no? In theory we now have a reference count problem. The call to clocksource_change_rating are no done outside of the clocksource mutex and outside of the watchdog lock. A concurrent clocksource_unregister could remove the clock.
Signature · 4 lines
blue skies, Martin. "Reality continues to ruin my life." - Calvin.
Quoted 10 lines · Martin Schwidefsky
Quoted 10 lines
(quoted diff) +7
-1- spin_unlock(&watchdog_lock); + spin_unlock_irqrestore(&watchdog_lock, flags); + + /* Needs to be done outside of watchdog lock */ + list_for_each_entry_safe(cs, tmp, &unstable, wd_list) { + list_del_init(&cs->wd_list); + clocksource_change_rating(cs, 0); + } }
Quoted 3 lines
Quoted 1 line
#else /*
CONFIG_CLOCKSOURCE_WATCHDOG*/Autsch, the s/spin_unlock/spin_unlock_irqrestore/ is rather obvious, no?
:)
Quoted 4 lines
In theory we now have a reference count problem. The call to
clocksource_change_ratingare no done outside of the clocksource mutex and outside of the watchdog lock. A concurrentclocksource_unregistercould remove the clock.
Darn, yes. But it's not hard to fix.
Thanks,
tglx
---
kernel/time/clocksource.c +13 -5
@@ -131,6 +131,7 @@ static cycle_t watchdog_last;static int watchdog_running;static void clocksource_watchdog_work (struct work_struct *work); +static void __clocksource_change_rating (struct clocksource *cs,int rating);/* * Interval: 0.5sec Threshold: 0.0625s
@@ -309,6 +310,7 @@ static void clocksource_watchdog_work(struct work_struct *work)unsigned long flags;LIST_HEAD (unstable); +mutex_lock (&clocksource_mutex);spin_lock_irqsave (&watchdog_lock, flags);list_for_each_entry_safe (cs, tmp, &watchdog_list, wd_list)if (cs->flags &CLOCK_SOURCE_UNSTABLE ) {
@@ -322,8 +324,9 @@ static void clocksource_watchdog_work(struct work_struct *work)/* Needs to be done outside of watchdog lock */ list_for_each_entry_safe (cs, tmp, &unstable, wd_list) {list_del_init (&cs->wd_list); -clocksource_change_rating (cs,0 ); +__clocksource_change_rating (cs,0 ); } + mutex_unlock(&clocksource_mutex); }#else /* CONFIG_CLOCKSOURCE_WATCHDOG */
@@ -470,16 +473,21 @@ int clocksource_register(struct clocksource *cs) }EXPORT_SYMBOL (clocksource_register); +static void __clocksource_change_rating (struct clocksource *cs,int rating) +{ +list_del (&cs->list); + cs->rating = rating; +clocksource_enqueue (cs); +clocksource_select (); +} +/** * clocksource_change_rating - Change the rating of a registered clocksource */ void clocksource_change_rating (struct clocksource *cs,int rating) {mutex_lock (&clocksource_mutex); -list_del (&cs->list); - cs->rating = rating; -clocksource_enqueue (cs); -clocksource_select (); +__clocksource_change_rating (cs, rating);mutex_unlock (&clocksource_mutex); }EXPORT_SYMBOL (clocksource_change_rating);