RE: [WATCHDOG] v2.6.26 hpwdt.c fixes

From: Mingarelli, Thomas
Date: Wed Jun 18 2008 - 18:04:21 EST


Is this with 64 bit Linux?

Tom

-----Original Message-----
From: S.Çağlar Onur [mailto:caglar@xxxxxxxxxxxxx]
Sent: Wednesday, June 18, 2008 4:58 PM
To: Linus Torvalds
Cc: Wim Van Sebroeck; Andrew Morton; LKML; Mingarelli, Thomas
Subject: Re: [WATCHDOG] v2.6.26 hpwdt.c fixes

Hi Linus;

18 Haz 2008 Çar tarihinde, Linus Torvalds şunları yazmıştı:
>
> On Wed, 18 Jun 2008, Wim Van Sebroeck wrote:
> >
> > Revert "[WATCHDOG] hpwdt: Fix NMI handling."
> >
> > To get this driver working we need the CFLAGS_hpwdt.o += -O in the Makefile.
> >
> > The driver needs the asmlinkage tag and the CFLAGS line in the Makefile.
> > Without it the driver doesn't work.
>
> The driver is unbelievable shit, and should just be removed, I think.
>
> The reason for all the games with CFLAGS and asmlinkage and utter crud
> seems to be that the driver is just BROKEN. It will work purely by luck,
> and depend entirely on the compiler not doing anything else AT ALL in that
> asm function.
>
> Could somebody please just fix the piece-of-sh*t thing?
>
> Here's a totally untested patch that may or may not work. At least it
> removes the assembler code that assumes that it controls the whole
> function from anything that gcc will then create a function prologue and
> epilogue for. Quite frankly, this is *not* the right thing to do either:
> the proper thing to do is to just move the low-level call into the "asm"
> statement, and leave all the function prologue/epilogue entirely to the
> compiler.
>
> But this way it isn't actively _broken_ by design, at least.
>
> No promises. I don't have the hardware. But somebody should *really* do
> this correctly.


I have both the hardware and the compiler related (gcc-4.3.1) bug :) (see [1])

Your modifications works like a charm with 32bit 2.6.25.7, kernel no longer opps and watchdog lives happily with hardware.

[...]
hpwdt: New timer passed in is 30 seconds.
hpwdt: CRU Base Address: 0xfff6b800
hpwdt: CRU Offset Address: 0x0
hpwdt: CRU Length: 0x8000
hpwdt: CRU Mapped Address: 0xf885bfa8
hp Watchdog Timer Driver: 1.00, timer margin: 30 seconds( nowayout=0).
[...]

> Linus
>
> ---
> drivers/watchdog/hpwdt.c | 155 ++++++++++++++++++++++++----------------------
> 1 files changed, 80 insertions(+), 75 deletions(-)

If needed

Tested-by: S.Çağlar Onur <caglar@xxxxxxxxxxxxx>

Thanks!

[1] http://marc.info/?l=linux-kernel&m=121266952602497&w=2
--
S.Çağlar Onur <caglar@xxxxxxxxxxxxx>
http://cekirdek.pardus.org.tr/~caglar/

Linux is like living in a teepee. No Windows, no Gates and an Apache in house!
--
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/