diff --git a/drivers/scsi/hisi_sas/hisi_sas_main.c b/drivers/scsi/hisi_sas/hisi_sas_main.c index 92e7d7b067f4de90c0c479a6e489dec74043fc61..a6b84cd53ada04e21978094a194929c04f35c9c4 100644 --- a/drivers/scsi/hisi_sas/hisi_sas_main.c +++ b/drivers/scsi/hisi_sas/hisi_sas_main.c @@ -1272,8 +1272,11 @@ static void hisi_sas_rescan_topology(struct hisi_hba *hisi_hba, u32 old_state, static void hisi_sas_reset_init_all_devices(struct hisi_hba *hisi_hba) { - struct hisi_sas_device *sas_dev; + void *bitmap = hisi_hba->slot_index_tags; + struct device *dev = hisi_hba->dev; + struct hisi_sas_device *sas_dev; struct domain_device *device; + int slot_num = 0; int i; for (i = 0; i < HISI_SAS_MAX_DEVICES; i++) { @@ -1285,6 +1288,14 @@ static void hisi_sas_reset_init_all_devices(struct hisi_hba *hisi_hba) hisi_sas_init_device(device); } + + /* Check whether there are IPTT remains. */ + for (i = 0; i < hisi_hba->slot_index_count; i++) + if (test_bit(i, bitmap)) + slot_num++; + + if (slot_num) + dev_warn(dev, "%d IPTT remains\n", slot_num); } static void hisi_sas_send_ata_reset_each_phy(struct hisi_hba *hisi_hba,