Messages in this thread | | | From | "Mingarelli, Thomas" <> | Date | Wed, 18 Jun 2008 22:03:26 +0000 | Subject | RE: [WATCHDOG] v2.6.26 hpwdt.c fixes |
| |
Is this with 64 bit Linux?
Tom
-----Original Message----- From: S.Çağlar Onur [mailto:caglar@pardus.org.tr] 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@pardus.org.tr>
Thanks!
[1] http://marc.info/?l=linux-kernel&m=121266952602497&w=2 -- S.Çağlar Onur <caglar@pardus.org.tr> 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@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |