summaryrefslogtreecommitdiff
path: root/usr/src
diff options
context:
space:
mode:
authorMark Haywood <Mark.Haywood@Sun.COM>2009-01-26 14:48:48 -0500
committerMark Haywood <Mark.Haywood@Sun.COM>2009-01-26 14:48:48 -0500
commit3744b6bbfe79c25ef99cb26f7eea17f12271d221 (patch)
treeec8593ece79ccf9c5d65bb2f761fb0c59152b62f /usr/src
parentc3ea284015697c0da5651ef400f3dc6bc430b290 (diff)
downloadillumos-gate-3744b6bbfe79c25ef99cb26f7eea17f12271d221.tar.gz
6781321 SNV_104 can't boot on ASUS_W5F notebook
Diffstat (limited to 'usr/src')
-rw-r--r--usr/src/uts/i86pc/io/cpudrv/cpudrv_mach.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/usr/src/uts/i86pc/io/cpudrv/cpudrv_mach.c b/usr/src/uts/i86pc/io/cpudrv/cpudrv_mach.c
index 9c8d16f21a..74275dc83a 100644
--- a/usr/src/uts/i86pc/io/cpudrv/cpudrv_mach.c
+++ b/usr/src/uts/i86pc/io/cpudrv/cpudrv_mach.c
@@ -19,7 +19,7 @@
* CDDL HEADER END
*/
/*
- * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -319,19 +319,29 @@ cpudrv_pm_get_topspeed(void *ctx)
cpudrv_mach_state_t *mach_state;
cpu_acpi_handle_t handle;
cpudrv_devstate_t *cpudsp;
+ cpudrv_pm_t *cpupm;
dev_info_t *dip;
int instance;
int plat_level;
+ int max_level;
dip = ctx;
instance = ddi_get_instance(dip);
cpudsp = ddi_get_soft_state(cpudrv_state, instance);
ASSERT(cpudsp != NULL);
+ cpupm = &(cpudsp->cpudrv_pm);
mach_state = cpudsp->mach_state;
handle = mach_state->acpi_handle;
cpu_acpi_cache_ppc(handle);
plat_level = CPU_ACPI_PPC(handle);
+ max_level = cpupm->num_spd - 1;
+ if ((plat_level < 0) || (plat_level > max_level)) {
+ cmn_err(CE_NOTE, "!cpudrv_pm_get_topspeed: instance %d: "
+ "_PPC out of range %d", instance, plat_level);
+
+ plat_level = max_level;
+ }
return (plat_level);
}