struct megasas_instance *instance;
 
        instance = megasas_lookup_instance(sdev->host->host_no);
-       if (instance->allow_fw_scan) {
+       if (instance->pd_list_not_supported) {
                if (sdev->channel < MEGASAS_MAX_PD_CHANNELS &&
                        sdev->type == TYPE_DISK) {
                        pd_index = (sdev->channel * MEGASAS_MAX_DEV_PER_CHANNEL) +
                pd_index =
                        (sdev->channel * MEGASAS_MAX_DEV_PER_CHANNEL) +
                        sdev->id;
-               if ((instance->allow_fw_scan || instance->pd_list[pd_index].driveState ==
+               if ((instance->pd_list_not_supported ||
+                       instance->pd_list[pd_index].driveState ==
                        MR_PD_STATE_SYSTEM)) {
                        goto scan_target;
                }
 
        switch (ret) {
        case DCMD_FAILED:
-               megaraid_sas_kill_hba(instance);
+               dev_info(&instance->pdev->dev, "MR_DCMD_PD_LIST_QUERY "
+                       "failed/not supported by firmware\n");
+
+               if (instance->ctrl_context)
+                       megaraid_sas_kill_hba(instance);
+               else
+                       instance->pd_list_not_supported = 1;
                break;
        case DCMD_TIMEOUT:
 
        case PCI_DEVICE_ID_DELL_PERC5:
        default:
                instance->instancet = &megasas_instance_template_xscale;
-               instance->allow_fw_scan = 1;
                break;
        }