|
@@ -1024,6 +1024,19 @@ acpi_ev_initialize_gpe_block(struct acpi_namespace_node *gpe_device,
|
|
|
|
|
|
gpe_index = (i * ACPI_GPE_REGISTER_WIDTH) + j;
|
|
|
gpe_event_info = &gpe_block->event_info[gpe_index];
|
|
|
+ gpe_number = gpe_index + gpe_block->block_base_number;
|
|
|
+
|
|
|
+ /*
|
|
|
+ * If the GPE has already been enabled for runtime
|
|
|
+ * signaling, make sure it remains enabled, but do not
|
|
|
+ * increment its reference counter.
|
|
|
+ */
|
|
|
+ if (gpe_event_info->runtime_count) {
|
|
|
+ acpi_set_gpe(gpe_device, gpe_number,
|
|
|
+ ACPI_GPE_ENABLE);
|
|
|
+ gpe_enabled_count++;
|
|
|
+ continue;
|
|
|
+ }
|
|
|
|
|
|
if (gpe_event_info->flags & ACPI_GPE_CAN_WAKE) {
|
|
|
wake_gpe_count++;
|
|
@@ -1040,7 +1053,6 @@ acpi_ev_initialize_gpe_block(struct acpi_namespace_node *gpe_device,
|
|
|
|
|
|
/* Enable this GPE */
|
|
|
|
|
|
- gpe_number = gpe_index + gpe_block->block_base_number;
|
|
|
status = acpi_enable_gpe(gpe_device, gpe_number,
|
|
|
ACPI_GPE_TYPE_RUNTIME);
|
|
|
if (ACPI_FAILURE(status)) {
|