|
@@ -6846,12 +6846,12 @@ megasas_wait_for_adapter_operational(struct megasas_instance *instance)
|
|
|
{
|
|
|
int wait_time = MEGASAS_RESET_WAIT_TIME * 2;
|
|
|
int i;
|
|
|
-
|
|
|
- if (atomic_read(&instance->adprecovery) == MEGASAS_HW_CRITICAL_ERROR)
|
|
|
- return 1;
|
|
|
+ u8 adp_state;
|
|
|
|
|
|
for (i = 0; i < wait_time; i++) {
|
|
|
- if (atomic_read(&instance->adprecovery) == MEGASAS_HBA_OPERATIONAL)
|
|
|
+ adp_state = atomic_read(&instance->adprecovery);
|
|
|
+ if ((adp_state == MEGASAS_HBA_OPERATIONAL) ||
|
|
|
+ (adp_state == MEGASAS_HW_CRITICAL_ERROR))
|
|
|
break;
|
|
|
|
|
|
if (!(i % MEGASAS_RESET_NOTICE_INTERVAL))
|
|
@@ -6860,9 +6860,10 @@ megasas_wait_for_adapter_operational(struct megasas_instance *instance)
|
|
|
msleep(1000);
|
|
|
}
|
|
|
|
|
|
- if (atomic_read(&instance->adprecovery) != MEGASAS_HBA_OPERATIONAL) {
|
|
|
- dev_info(&instance->pdev->dev, "%s timed out while waiting for HBA to recover.\n",
|
|
|
- __func__);
|
|
|
+ if (adp_state != MEGASAS_HBA_OPERATIONAL) {
|
|
|
+ dev_info(&instance->pdev->dev,
|
|
|
+ "%s HBA failed to become operational, adp_state %d\n",
|
|
|
+ __func__, adp_state);
|
|
|
return 1;
|
|
|
}
|
|
|
|