On 05/31/2013 05:06 AM, Jens Taprogge wrote:
So, in the case of the reverted v3.9.4 with CONFIG_CPU_FREQ_STAT=y,
CONFIG_X86_VERBOSE_BOOTUP makes a difference. To update the little
table from above:
With d96ac6f2 reverted:
CONFIG_CPU_FREQ_STAT=n works
CONFIG_CPU_FREQ_STAT=y and CONFIG_X86_VERBOSE_BOOTUP=y does not work
CONFIG_CPU_FREQ_STAT=y and CONFIG_X86_VERBOSE_BOOTUP=n works
Ok. None of this is yet making any sense to me. (And I worry enumerating
all the mix and match of configs that work or don't only blurs the issues).
Few base questions:
1) What distro is this on?
2) What gcc version are you using?
Then could you also try the attached patches against un-modified v3.9.4
(using a config that boots with d96ac6f2 reverted):
3) Apply persistent-clock-exists-true.patch, does it boot or hang?
4) Apply has-persistent-clock-true.patch (on top of
persistent-clock-exists-true.patch), does it boot or hang?
These two patches basically partially revert the d96ac6f2. The hope is
that by figuring out where things go wrong, we can hopefully narrow down
why its happening.
Though given the strange config matrix of working/not working, I'm
starting to suspect that is has some sort of stranger issue about code
size rather then strictly the logic being enabled or disabled.
thanks
-john
diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c
index 9a0bc98..dce6849 100644
--- a/kernel/time/timekeeping.c
+++ b/kernel/time/timekeeping.c
@@ -30,7 +30,7 @@ static struct timekeeper timekeeper;
int __read_mostly timekeeping_suspended;
/* Flag for if there is a persistent clock on this platform */
-bool __read_mostly persistent_clock_exist = false;
+bool __read_mostly persistent_clock_exist = true;
static inline void tk_normalize_xtime(struct timekeeper *tk)
{
diff --git a/include/linux/time.h b/include/linux/time.h
index afcdc4b..9e80010 100644
--- a/include/linux/time.h
+++ b/include/linux/time.h
@@ -119,7 +119,7 @@ extern bool persistent_clock_exist;
static inline bool has_persistent_clock(void)
{
- return persistent_clock_exist;
+ return true;
}
extern void read_persistent_clock(struct timespec *ts);