Subject: Re: 2.6.31-rc7 : kernel BUG at drivers/rtc/rtc-ps3.c:36!

From: Michael Ellerman <[email-masked]>
Date: Mon, 24 Aug 2009 17:39:12 +1000

On Mon, 2009-08-24 at 12:31 +0530, Sachin Sant wrote:
> While trying to boot 2.6.31-rc7 on a power6 machine came
> across the following Bug. 
> 
> Starting udev: ------------[ cut here ]------------
> kernel BUG at drivers/rtc/rtc-ps3.c:36!
> cpu 0x0: Vector: 700 (Program Check) at [c0000000f70f3570]
>     pc: c00000000059a020: .ps3_get_time+0x3c/0x84
>     lr: c00000000059a018: .ps3_get_time+0x34/0x84
>     sp: c0000000f70f37f0
>    msr: 8000000000029032
>   current = 0xc0000000f8d14ee0
>   paca    = 0xc0000000012cc300
>     pid   = 159, comm = hwclock
> kernel BUG at drivers/rtc/rtc-ps3.c:36!

> static u64 read_rtc(void)
> {
> ....
> result = lv1_get_rtc(&rtc_val, &tb_val);
> BUG_ON(result);
> 
> I had never tried enabling CONFIG_RTC_DRV_PS3 option before
> so not sure if this is a new problem or an old one. 

Looks like an old one, or at least as long as the driver has existed.

The code needs to cope with being called on something other than a PS3.
Either the platform driver is only registered if the machine is a PS3,
or ps3_rtc_probe() actually does something to check it's on a PS3 before
registering the rtc_device.

cheers