Re: [GEODE] Geode GX/LX watchdog timer (was 2.6.24-rc8 hangs at mfgpt-timer)

From: Arnd Hannemann
Date: Sun Jan 20 2008 - 08:22:37 EST


Hi,

Jordan Crouse wrote:
> On 17/01/08 23:52 +0100, Arnd Hannemann wrote:
>>>> Watchdog for the new API would be great :-)
>>> Coming soon.
>
> As promised, a watchdog driver for the Geode GX/LX processors is attached.
> I basically just ported the previous patch forward to 2.6.24.

Great work!

>
> I also have good news or bad news depending on your perspective. I wanted
> to test this against 2.6.24, and OLPC is stuck at an older kernel version,
> so I had to test this with coreboot (LinuxBIOS) on another Geode
> platform. Like all BIOSen execpt for the OLPC firmware, coreboot uses
> VSA (SMM handler) which consumes all the timers.
>
> So I used the magical MSR and surprise! - the timer tick hung.
> I compiled out the timer tick, and tested the watchdog timer instead,
> and it worked fine on timer 0. So I don't think the MFGPTs themselves
> have anything to do with this problem, but I do think it might be
> related to VSA and possibly interrupts too. I'm going to invoke the
> strong BIOS fu of our LinuxBIOS / BIOS expert Marc Jones, and see what
> he comes up with.
>
> I don't know how much of a hassle it would be for Andres to get a 2.6.24
> kernel running on the OLPC to make sure that this isn't a regression
> in the timer tick code (I suspect it isn't a regression, but you never
> know). I also think that it would probably be in our best interest to
> default CONFIG_GEODE_MFGPT_TIMER to 'n' until we get this figured
> out. Since most BIOSen don't have timers available, that shouldn't affect
> too many people.
>
> So, anyway, enjoy the watchdog timer - I hope it meets everybody's
> expectations for the 2.6.25 kernel.

Thanks a lot for this, it works great! (with CONFIG_GEODE_MFGPT_TIMER
not set).
However some minor issues:
Could the name of the /dev entry perhaps be changed from
"geode-watchdog" to "watchdog" instead?
I think all other watchdogs use "watchdog", and using two different
watchdogs in the same machine won't work anyway, because of the same
minor number, right?

As a second point my gcc (4.1.2) issues a warning:

drivers/watchdog/geodewdt.c: In function âgeodewdt_removeâ:
drivers/watchdog/geodewdt.c:256: warning: control reaches end of
non-void function

which I think is a valid one.

>
> Jordan
>
Best regards,
Arnd
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/