* Scratch value was altered, this means the device was powered off, we
         * need to reset it completely.
         * Note: MAC (bits 0:7) will be cleared upon suspend even with wowlan,
-        * so assume that any bits there mean that the device is usable.
+        * but not bits [15:8]. So if we have bits set in lower word, assume
+        * the device is alive.
+        * For older devices, just try silently to grab the NIC.
         */
-       if (trans->mac_cfg->device_family >= IWL_DEVICE_FAMILY_BZ &&
-           !iwl_read32(trans, CSR_FUNC_SCRATCH))
-               device_was_powered_off = true;
+       if (trans->mac_cfg->device_family >= IWL_DEVICE_FAMILY_BZ) {
+               if (!(iwl_read32(trans, CSR_FUNC_SCRATCH) &
+                     CSR_FUNC_SCRATCH_POWER_OFF_MASK))
+                       device_was_powered_off = true;
+       } else {
+               /*
+                * bh are re-enabled by iwl_trans_pcie_release_nic_access,
+                * so re-enable them if _iwl_trans_pcie_grab_nic_access fails.
+                */
+               local_bh_disable();
+               if (_iwl_trans_pcie_grab_nic_access(trans, true)) {
+                       iwl_trans_pcie_release_nic_access(trans);
+               } else {
+                       device_was_powered_off = true;
+                       local_bh_enable();
+               }
+       }
 
        if (restore || device_was_powered_off) {
                trans->state = IWL_TRANS_NO_FW;