Re: hpwdt oops in clflush_cache_range

From: Roland Dreier
Date: Wed Feb 27 2008 - 16:18:16 EST


> Where is my brown paperbag ? I know that GCC _is_ stupid, but I never
> remember.

Original patch actually worked fine and trapped the problem.

I also instrumented the driver, and the problem is coming from the code:

/*
* Now we will check:
* - SMBIOS checksum must be 0
* - intermediate anchor should be _DMI_
* - intermediate checksum should be 0
*/
if ((bios_checksum(p, length)) &&
(strncmp((char *)eps->intermediate_anchor, "_DMI_",
sizeof(eps->intermediate_anchor)) == 0) &&
(bios_checksum(p+0x10, 15))) {
buf = ioremap(eps->table_address, eps->table_length);
if (buf == NULL)
return -ENODEV;

the ioremap there is trying to remap 0x7b6 bytes at an address of
0x240047000ee000 -- either the BIOS data is bogus or the driver is
getting at it the wrong way.

Thomas (Mingarelli) -- this is on an HPDL380 G5 with pretty up-to-date
firmware (if it's not the latest, I'm only missing an update that came
out in the last month). Should hpwdt work on this system? Any debug
info that would be helpful?

- R.
--
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/