diff options
Diffstat (limited to 'drivers/acpi/acpica/evgpe.c')
| -rw-r--r-- | drivers/acpi/acpica/evgpe.c | 17 | 
1 files changed, 13 insertions, 4 deletions
diff --git a/drivers/acpi/acpica/evgpe.c b/drivers/acpi/acpica/evgpe.c index 14988a86066..f4725212eb4 100644 --- a/drivers/acpi/acpica/evgpe.c +++ b/drivers/acpi/acpica/evgpe.c @@ -457,6 +457,7 @@ static void ACPI_SYSTEM_XFACE acpi_ev_asynch_execute_gpe_method(void *context)  	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_asynch_execute_gpe_method(void *context)  		 * 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:  |