|
Description
|
I've just LUed from 105 to 110 on my Tosh M9.
I get a panic (every time) on reboot.
The only packages which failed on the LU were SUNWxwfnt (which I
manually installed, and SUNWdcopy (which I've tried unchanged, removed,
and re-installed.)
I enabled kmdb, and attached is the pretty picture I get. Any clues?
(I've also searched bugtraq, and sunsolve for references to
cpu_acpi_cache and 6612299, 6756843 and 6781321 are all that I found,
but they don't seem related)
...
Mike Ramchand
stack:
cmntrap
cpu_acpi_cache_cst
cpu_acpi_cache_cstate_data
cpu_idle_init
post_startup
genunix:main
The kernel is panicking on this line:
/*
* Does the package look coherent?
*/
cnt = obj->Package.Elements[0].Integer.Value;
The system's ACPI _CST object claimed to have more than 2 elements.
However dereferencing Elements[0] traps.
The BIOS has a buggy _CST table.
Solaris can use on_trap() to protect itself when reading the ACPI _CST table.
This proposed fix survives mdb fault injection during cpu_acpi_cache_cst:
Webrev: http://cr.opensolaris.org/~bholler/6818652/
bash-3.2$ hg pdiffs
Not trusting file /ws/onnv-clone/.hg/hgrc from untrusted user nobody, group nobody
diff -r a47dcdb19715 -r 357cce765108 usr/src/uts/i86pc/os/cpupm/cpu_acpi.c
--- a/usr/src/uts/i86pc/os/cpupm/cpu_acpi.c Thu Mar 19 14:29:36 2009 -0400
+++ b/usr/src/uts/i86pc/os/cpupm/cpu_acpi.c Thu Mar 19 15:02:15 2009 -0700
@@ -695,8 +695,8 @@
abuf.Length = ACPI_ALLOCATE_BUFFER;
abuf.Pointer = NULL;
- if (ACPI_FAILURE(AcpiEvaluateObject(handle->cs_handle, "_CST",
- NULL, &abuf))) {
+ if (ACPI_FAILURE(AcpiEvaluateObjectTyped(handle->cs_handle, "_CST",
+ NULL, &abuf, ACPI_TYPE_PACKAGE))) {
cmn_err(CE_NOTE, "!cpu_acpi: _CST evaluate failure");
return (-1);
}
|