summaryrefslogtreecommitdiff
path: root/usr/src
diff options
context:
space:
mode:
authormyers <none@none>2007-05-09 08:39:30 -0700
committermyers <none@none>2007-05-09 08:39:30 -0700
commit2700489547b0189992777b1336a929b734815baf (patch)
treeec6718134d251443b0d6457e7bf6a0d23129cc6a /usr/src
parentc839f7d5515cd80a9c4f32cc29aa002e8ebc5dbb (diff)
downloadillumos-gate-2700489547b0189992777b1336a929b734815baf.tar.gz
6533533 psm: Dell Dimension 4600 doesn't quite poweroff any longer
Diffstat (limited to 'usr/src')
-rw-r--r--usr/src/uts/i86pc/io/pcplusmp/apic.c8
-rw-r--r--usr/src/uts/i86pc/io/psm/uppc.c12
2 files changed, 14 insertions, 6 deletions
diff --git a/usr/src/uts/i86pc/io/pcplusmp/apic.c b/usr/src/uts/i86pc/io/pcplusmp/apic.c
index 532405f017..f51d4adcfd 100644
--- a/usr/src/uts/i86pc/io/pcplusmp/apic.c
+++ b/usr/src/uts/i86pc/io/pcplusmp/apic.c
@@ -1451,8 +1451,12 @@ apic_shutdown(int cmd, int fcn)
if (cmd != A_SHUTDOWN)
return;
- /* switch system back into Legacy Mode if using ACPI */
- if (apic_enable_acpi)
+ /*
+ * Switch system back into Legacy-Mode if using ACPI and
+ * not powering-off. Some BIOSes need to remain in ACPI-mode
+ * for power-off to succeed (Dell Dimension 4600)
+ */
+ if (apic_enable_acpi && (fcn != AD_POWEROFF))
(void) AcpiDisable();
/* remainder of function is for shutdown+poweroff case only */
diff --git a/usr/src/uts/i86pc/io/psm/uppc.c b/usr/src/uts/i86pc/io/psm/uppc.c
index 27cb6a6a22..51181b0415 100644
--- a/usr/src/uts/i86pc/io/psm/uppc.c
+++ b/usr/src/uts/i86pc/io/psm/uppc.c
@@ -473,11 +473,15 @@ uppc_shutdown(int cmd, int fcn)
if ((cmd != A_SHUTDOWN) || (!uppc_enable_acpi))
return;
- /* switch system back into Legacy Mode */
- (void) AcpiDisable();
-
- if (fcn != AD_POWEROFF)
+ /*
+ * Switch system back into Legacy-Mode if using ACPI and
+ * not powering-off. Some BIOSes need to remain in ACPI-mode
+ * for power-off to succeed (Dell Dimension 4600)
+ */
+ if (fcn != AD_POWEROFF) {
+ (void) AcpiDisable();
return;
+ }
(void) acpi_poweroff();
}