[U-Boot] [PATCH] scsi: dm: Unbind all scsi based block devices before new scan

Michal Simek michal.simek at xilinx.com
Mon Jan 2 09:40:09 CET 2017


New scan should unbind all block devices not to be listed again.
Without this patch if scsi reset or scan is called new block devices are
created which point to the same id and lun.

For example:
ZynqMP> scsi scan
scsi_scan: if_type=2, devnum=0: sdhci at ff170000.blk, 6, 0
scsi_scan: if_type=2, devnum=0: ahci at fd0c0000.id1lun0, 2, 0
scsi_scan: if_type=2, devnum=0: ahci at fd0c0000.id1lun0, 2, 1
scsi_scan: if_type=2, devnum=0: ahci at fd0c0000.id1lun0, 2, 2
scsi_scan: if_type=2, devnum=0: ahci at fd0c0000.id1lun0, 2, 3
scsi_scan: if_type=2, devnum=0: ahci at fd0c0000.id1lun0, 2, 4
scanning bus for devices...
  Device 0: (1:0) Vendor: ATA Prod.: KINGSTON SVP200S Rev: 501A
            Type: Hard Disk
            Capacity: 57241.8 MB = 55.9 GB (117231408 x 512)

Reported-by: Ken Ma <make at marvell.com>
Signed-off-by: Michal Simek <michal.simek at xilinx.com>
---

 common/scsi.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/common/scsi.c b/common/scsi.c
index e7efa5ae797c..fb5b407f6b15 100644
--- a/common/scsi.c
+++ b/common/scsi.c
@@ -559,6 +559,8 @@ int scsi_scan(int mode)
 	if (mode == 1)
 		printf("scanning bus for devices...\n");
 
+	blk_unbind_all(IF_TYPE_SCSI);
+
 	ret = uclass_get(UCLASS_SCSI, &uc);
 	if (ret)
 		return ret;
-- 
1.9.1



More information about the U-Boot mailing list