Re: 64bit kernel not booting with CONFIG_PRINTK_TIME=y

!MAILaRCHIVE_VOTE_RePLACE
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: Guy Martin <gmsoft@...>
Cc: <linux-parisc@...>, <linux-kernel@...>
Date: Saturday, July 19, 2008 - 5:54 pm

On Thu, Jul 17, 2008 at 07:05:02PM +0200, Guy Martin wrote:

The problem is kernel/printk.c around line 731.

t = jiffies * (NSEC_PER_SEC / HZ);
do_div(t, 10000000000); is doing some badness (which is hard as hell to
debug since printk isn't working.)

It's doing some sort of bollocks when jiffies is between 9 and 10...

do_div being:

# define do_div(n,base) ({                                      \
        uint32_t __base = (base);                               \
        uint32_t __rem;                                         \
        __rem = ((uint64_t)(n)) % __base;                       \
        (n) = ((uint64_t)(n)) / __base;                         \
        __rem;                                                  \
 })

I'm *guessing* that umoddi3 or udivdi3 is doing an xmpyu or something,
which since this is probably before fpu init, is trapping, which is
trying to printk, which is recursively exploding.

regards, Kyle
--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
Re: 64bit kernel not booting with CONFIG_PRINTK_TIME=y, Kyle McMartin, (Sat Jul 19, 5:54 pm)
Re: 64bit kernel not booting with CONFIG_PRINTK_TIME=y, Kyle McMartin, (Sat Jul 19, 7:04 pm)
Re: 64bit kernel not booting with CONFIG_PRINTK_TIME=y, Kyle McMartin, (Tue Jul 29, 12:29 am)