summaryrefslogtreecommitdiffstats
path: root/linux-2.6-acpi-fix-implicit-notify.patch
diff options
context:
space:
mode:
authorChuck Ebbert <cebbert@redhat.com>2011-03-03 21:33:20 -0500
committerChuck Ebbert <cebbert@redhat.com>2011-03-03 21:33:20 -0500
commita61f0114273123044b65caeb306b051c90f4d121 (patch)
treee81198f5c1e11960a64c4fdaf9a3bfad45c2895f /linux-2.6-acpi-fix-implicit-notify.patch
parent4bb56089e398b08f865fd29e38d3c94a45e6de47 (diff)
downloadkernel-a61f0114273123044b65caeb306b051c90f4d121.tar.gz
kernel-a61f0114273123044b65caeb306b051c90f4d121.tar.xz
kernel-a61f0114273123044b65caeb306b051c90f4d121.zip
Linux 2.6.38-rc7-git1
Diffstat (limited to 'linux-2.6-acpi-fix-implicit-notify.patch')
-rw-r--r--linux-2.6-acpi-fix-implicit-notify.patch129
1 files changed, 0 insertions, 129 deletions
diff --git a/linux-2.6-acpi-fix-implicit-notify.patch b/linux-2.6-acpi-fix-implicit-notify.patch
deleted file mode 100644
index 7987be887..000000000
--- a/linux-2.6-acpi-fix-implicit-notify.patch
+++ /dev/null
@@ -1,129 +0,0 @@
-Index: linux-2.6/drivers/acpi/acpica/aclocal.h
-===================================================================
---- linux-2.6.orig/drivers/acpi/acpica/aclocal.h
-+++ linux-2.6/drivers/acpi/acpica/aclocal.h
-@@ -416,10 +416,15 @@ struct acpi_gpe_handler_info {
- u8 originally_enabled; /* True if GPE was originally enabled */
- };
-
-+struct acpi_gpe_notify_object {
-+ struct acpi_namespace_node *node;
-+ struct acpi_gpe_notify_object *next;
-+};
-+
- union acpi_gpe_dispatch_info {
- struct acpi_namespace_node *method_node; /* Method node for this GPE level */
- struct acpi_gpe_handler_info *handler; /* Installed GPE handler */
-- struct acpi_namespace_node *device_node; /* Parent _PRW device for implicit notify */
-+ struct acpi_gpe_notify_object device; /* List of _PRW devices for implicit notify */
- };
-
- /*
-Index: linux-2.6/drivers/acpi/acpica/evxfgpe.c
-===================================================================
---- linux-2.6.orig/drivers/acpi/acpica/evxfgpe.c
-+++ linux-2.6/drivers/acpi/acpica/evxfgpe.c
-@@ -198,7 +198,9 @@ acpi_setup_gpe_for_wake(acpi_handle wake
- acpi_status status = AE_BAD_PARAMETER;
- struct acpi_gpe_event_info *gpe_event_info;
- struct acpi_namespace_node *device_node;
-+ struct acpi_gpe_notify_object *notify_object;
- acpi_cpu_flags flags;
-+ u8 gpe_dispatch_mask;
-
- ACPI_FUNCTION_TRACE(acpi_setup_gpe_for_wake);
-
-@@ -221,27 +223,49 @@ acpi_setup_gpe_for_wake(acpi_handle wake
- goto unlock_and_exit;
- }
-
-+ if (wake_device == ACPI_ROOT_OBJECT) {
-+ goto out;
-+ }
-+
- /*
- * If there is no method or handler for this GPE, then the
- * wake_device will be notified whenever this GPE fires (aka
- * "implicit notify") Note: The GPE is assumed to be
- * level-triggered (for windows compatibility).
- */
-- if (((gpe_event_info->flags & ACPI_GPE_DISPATCH_MASK) ==
-- ACPI_GPE_DISPATCH_NONE) && (wake_device != ACPI_ROOT_OBJECT)) {
-+ gpe_dispatch_mask = gpe_event_info->flags & ACPI_GPE_DISPATCH_MASK;
-+ if (gpe_dispatch_mask != ACPI_GPE_DISPATCH_NONE
-+ && gpe_dispatch_mask != ACPI_GPE_DISPATCH_NOTIFY) {
-+ goto out;
-+ }
-
-- /* Validate wake_device is of type Device */
-+ /* Validate wake_device is of type Device */
-
-- device_node = ACPI_CAST_PTR(struct acpi_namespace_node,
-- wake_device);
-- if (device_node->type != ACPI_TYPE_DEVICE) {
-- goto unlock_and_exit;
-- }
-+ device_node = ACPI_CAST_PTR(struct acpi_namespace_node, wake_device);
-+ if (device_node->type != ACPI_TYPE_DEVICE) {
-+ goto unlock_and_exit;
-+ }
-+
-+ if (gpe_dispatch_mask == ACPI_GPE_DISPATCH_NONE) {
- gpe_event_info->flags = (ACPI_GPE_DISPATCH_NOTIFY |
- ACPI_GPE_LEVEL_TRIGGERED);
-- gpe_event_info->dispatch.device_node = device_node;
-+ gpe_event_info->dispatch.device.node = device_node;
-+ gpe_event_info->dispatch.device.next = NULL;
-+ } else {
-+ /* There are multiple devices to notify implicitly. */
-+
-+ notify_object = ACPI_ALLOCATE_ZEROED(sizeof(*notify_object));
-+ if (!notify_object) {
-+ status = AE_NO_MEMORY;
-+ goto unlock_and_exit;
-+ }
-+
-+ notify_object->node = device_node;
-+ notify_object->next = gpe_event_info->dispatch.device.next;
-+ gpe_event_info->dispatch.device.next = notify_object;
- }
-
-+ out:
- gpe_event_info->flags |= ACPI_GPE_CAN_WAKE;
- status = AE_OK;
-
-Index: linux-2.6/drivers/acpi/acpica/evgpe.c
-===================================================================
---- linux-2.6.orig/drivers/acpi/acpica/evgpe.c
-+++ linux-2.6/drivers/acpi/acpica/evgpe.c
-@@ -457,6 +457,7 @@ static void ACPI_SYSTEM_XFACE acpi_ev_as
- acpi_status status;
- struct acpi_gpe_event_info *local_gpe_event_info;
- struct acpi_evaluate_info *info;
-+ struct acpi_gpe_notify_object *notify_object;
-
- ACPI_FUNCTION_TRACE(ev_asynch_execute_gpe_method);
-
-@@ -508,10 +509,18 @@ static void ACPI_SYSTEM_XFACE acpi_ev_as
- * from this thread -- because handlers may in turn run other
- * control methods.
- */
-- status =
-- acpi_ev_queue_notify_request(local_gpe_event_info->dispatch.
-- device_node,
-- ACPI_NOTIFY_DEVICE_WAKE);
-+ status = acpi_ev_queue_notify_request(
-+ local_gpe_event_info->dispatch.device.node,
-+ ACPI_NOTIFY_DEVICE_WAKE);
-+
-+ notify_object = local_gpe_event_info->dispatch.device.next;
-+ while (ACPI_SUCCESS(status) && notify_object) {
-+ status = acpi_ev_queue_notify_request(
-+ notify_object->node,
-+ ACPI_NOTIFY_DEVICE_WAKE);
-+ notify_object = notify_object->next;
-+ }
-+
- break;
-
- case ACPI_GPE_DISPATCH_METHOD: