Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F3848945
Masterwork From Distant Lands
No One
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Authored By
bwidawsk
Oct 4 2018, 8:33 PM
2018-10-04 20:33:46 (UTC+0)
Size
2 KB
Referenced Files
None
Subscribers
None
Masterwork From Distant Lands
View Options
diff --git a/sys/dev/acpica/acpi.c b/sys/dev/acpica/acpi.c
index 68dae23f2c6..8b06f8f5a89 100644
--- a/sys/dev/acpica/acpi.c
+++ b/sys/dev/acpica/acpi.c
@@ -54,6 +54,7 @@ __FBSDID("$FreeBSD$");
#if defined(__i386__) || defined(__amd64__)
#include <machine/clock.h>
#include <machine/pci_cfgreg.h>
+#include <machine/intr_machdep.h>
#endif
#include <machine/resource.h>
#include <machine/bus.h>
@@ -2999,25 +3000,6 @@ __do_sleep(struct acpi_softc *sc, int state, enum acpi_sleep_state *pass)
* follows Windows behavior.
*/
AcpiWriteBitRegister(ACPI_BITREG_SCI_ENABLE, ACPI_ENABLE_EVENT);
-
- /*
- * Prevent mis-interpretation of the wakeup by power button as a request
- * for power off. Ideally we should post an appropriate wakeup event,
- * perhaps using acpi_event_power_button_wake or alike.
- *
- * Clearing of power button status after wakeup is mandated by ACPI
- * specification in section "Fixed Power Button".
- *
- * XXX As of ACPICA 20121114 AcpiGetEventStatus provides status as 0/1
- * corresponding to inactive/active despite its type being
- * ACPI_EVENT_STATUS. In other words, we should not test for
- * ACPI_EVENT_FLAG_SET for time being.
- */
- if (ACPI_SUCCESS(AcpiGetEventStatus(ACPI_EVENT_POWER_BUTTON,
- &power_button_status)) && power_button_status != 0) {
- AcpiClearEvent(ACPI_EVENT_POWER_BUTTON);
- device_printf(sc->acpi_dev, "cleared fixed power button status\n");
- }
}
intr_restore(intr);
@@ -3555,13 +3537,24 @@ acpi_event_power_button_sleep(void *context)
UINT32
acpi_event_power_button_wake(void *context)
{
+ ACPI_STATUS status;
+ ACPI_EVENT_STATUS power_button_status;
struct acpi_softc *sc = (struct acpi_softc *)context;
ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__);
- if (ACPI_FAILURE(AcpiOsExecute(OSL_NOTIFY_HANDLER,
- acpi_invoke_wake_eventhandler, &sc->acpi_power_button_sx)))
+
+ status = AcpiOsExecute(OSL_NOTIFY_HANDLER, acpi_invoke_wake_eventhandler,
+ &sc->acpi_power_button_sx);
+ if (ACPI_FAILURE(status))
return_VALUE (ACPI_INTERRUPT_NOT_HANDLED);
+
+ status = AcpiGetEventStatus(ACPI_EVENT_POWER_BUTTON, &power_button_status);
+ if (ACPI_SUCCESS(status) && power_button_status != 0) {
+ AcpiClearEvent(ACPI_EVENT_POWER_BUTTON);
+ device_printf(sc->acpi_dev, "cleared fixed power button status\n");
+ }
+
return_VALUE (ACPI_INTERRUPT_HANDLED);
}
File Metadata
Details
Attached
Mime Type
text/plain; charset=utf-8
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1591437
Default Alt Text
Masterwork From Distant Lands (2 KB)
Attached To
Mode
P226 Masterwork From Distant Lands
Attached
Detach File
Event Timeline
Log In to Comment