void *ignored)
 {
        acpi_status status;
+       acpi_event_status event_status;
        struct acpi_gpe_event_info *gpe_event_info;
        u32 gpe_enabled_count;
        u32 gpe_index;
+       u32 gpe_number;
        u32 i;
        u32 j;
 
 
                        gpe_index = (i * ACPI_GPE_REGISTER_WIDTH) + j;
                        gpe_event_info = &gpe_block->event_info[gpe_index];
+                       gpe_number = gpe_block->block_base_number + gpe_index;
 
                        /*
                         * Ignore GPEs that have no corresponding _Lxx/_Exx method
-                        * and GPEs that are used to wake the system
+                        * and GPEs that are used for wakeup
                         */
-                       if ((ACPI_GPE_DISPATCH_TYPE(gpe_event_info->flags) ==
-                            ACPI_GPE_DISPATCH_NONE)
-                           || (ACPI_GPE_DISPATCH_TYPE(gpe_event_info->flags) ==
-                               ACPI_GPE_DISPATCH_HANDLER)
-                           || (ACPI_GPE_DISPATCH_TYPE(gpe_event_info->flags) ==
-                               ACPI_GPE_DISPATCH_RAW_HANDLER)
+                       if ((ACPI_GPE_DISPATCH_TYPE(gpe_event_info->flags) !=
+                            ACPI_GPE_DISPATCH_METHOD)
                            || (gpe_event_info->flags & ACPI_GPE_CAN_WAKE)) {
                                continue;
                        }
 
+                       event_status = 0;
+                       (void)acpi_hw_get_gpe_status(gpe_event_info,
+                                                    &event_status);
+
                        status = acpi_ev_add_gpe_reference(gpe_event_info);
                        if (ACPI_FAILURE(status)) {
                                ACPI_EXCEPTION((AE_INFO, status,
                                        "Could not enable GPE 0x%02X",
-                                       gpe_index +
-                                       gpe_block->block_base_number));
+                                       gpe_number));
                                continue;
                        }
 
+                       if (event_status & ACPI_EVENT_FLAG_STATUS_SET) {
+                               ACPI_INFO(("GPE 0x%02X active on init",
+                                          gpe_number));
+                               (void)acpi_ev_gpe_dispatch(gpe_block->node,
+                                                          gpe_event_info,
+                                                          gpe_number);
+                       }
+
                        gpe_enabled_count++;
                }
        }