{
        if (!test_and_set_bit(EC_FLAGS_QUERY_ENABLED, &ec->flags))
                ec_log_drv("event unblocked");
-       if (!test_bit(EC_FLAGS_QUERY_PENDING, &ec->flags))
-               advance_transaction(ec);
+       /*
+        * Unconditionally invoke this once after enabling the event
+        * handling mechanism to detect the pending events.
+        */
+       advance_transaction(ec);
 }
 
 static inline void __acpi_ec_disable_event(struct acpi_ec *ec)
                        if (test_bit(EC_FLAGS_STARTED, &ec->flags) &&
                            ec->reference_count >= 1)
                                acpi_ec_enable_gpe(ec, true);
-
-                       /* EC is fully operational, allow queries */
-                       acpi_ec_enable_event(ec);
                }
        }
+       /* EC is fully operational, allow queries */
+       acpi_ec_enable_event(ec);
 
        return 0;
 }