[U-Boot] Generic bootcmd handling: Missing 'scsi scan'

Stephen Warren swarren at wwwdotorg.org
Mon Sep 15 19:22:27 CEST 2014


On 09/14/2014 12:00 PM, Hans de Goede wrote:
> Hi Karsten,
>
> Thanks for testing this!
>
> On 09/14/2014 05:43 PM, Karsten Merker wrote:
>> Hello,
>>
>> I am currently testing the new bootcmd handling introduced at
>> http://git.denx.de/?p=u-boot.git;a=commit;h=8cc96848f0a467922820895b6b2363b0c64163b5
>> on a sunxi-based system running u-boot v2014.10-rc2.
>>
>> When installing to MMC, everything works as expected; the
>> boot.scr on the first MMC partition is found and executed.
>>
>> When installing to a SATA disk, the following happens:
>>
>> U-Boot 2014.10-rc2 (Sep 04 2014 - 07:32:33) Allwinner Technology
>>
>> CPU:   Allwinner A20 (SUN7I)
>> I2C:   ready
>> DRAM:  2 GiB
>> MMC:   SUNXI SD/MMC: 0
>> In:    serial
>> Out:   serial
>> Err:   serial
>> SCSI:  SUNXI SCSI INIT
>> Target spinup took 0 ms.
>> AHCI 0001.0100 32 slots 1 ports 3 Gbps 0x1 impl SATA mode
>> flags: ncq stag pm led clo only pmp pio slum part ccc apst
>> Net:   dwmac.1c50000
>> Hit any key to stop autoboot:  0
>> switch to partitions #0, OK
>> mmc0 is current device
>> Scanning mmc 0...
>> ** No partition table - mmc 0 **
>> ** No partition table - mmc 0 **
>> ** No partition table - mmc 0 **
>> ** No partition table - mmc 0 **
>> ** No partition table - mmc 0 **
>> ** No partition table - mmc 0 **
>>
>> SCSI device 0:
>>      Device 0: device type unknown
>> ... is now current device
>> Scanning scsi 0...
>> ** Bad device size - scsi 0 **
>> ** Bad device size - scsi 0 **
>> ** Bad device size - scsi 0 **
>> ** Bad device size - scsi 0 **
>> ** Bad device size - scsi 0 **
>> ** Bad device size - scsi 0 **
>> [...]
>>
>> The last block is the output of running ${scsi_boot}:
>>
>> sun7i# printenv scsi_boot
>> scsi_boot=if scsi dev ${devnum}; then setenv devtype scsi; run scan_dev_for_boot; fi
>>
>> What appears to be missing here, is a previous 'scsi scan' command.
>> When prepending it to ${scsi_boot}, everything works as expected:
>>
>> sun7i# printenv scsi_boot
>> scsi_boot=scsi scan; if scsi dev 0; then setenv devtype scsi; run scan_dev_for_boot; fi
>> sun7i# run scsi_boot
>> scanning bus for devices...
>>    Device 0: (0:0) Vendor: ATA Prod.: HGST HTS541010A9 Rev: JA0O
>>              Type: Hard Disk
>>              Capacity: 953869.7 MB = 931.5 GB (1953525168 x 512)
>> Found 1 device(s).
>>
>> SCSI device 0:
>>      Device 0: (0:0) Vendor: ATA Prod.: HGST HTS541010A9 Rev: JA0O
>>              Type: Hard Disk
>>              Capacity: 953869.7 MB = 931.5 GB (1953525168 x 512)
>> ... is now current device
>> Scanning scsi 0...
>> Found U-Boot script /boot.scr
>> 2033 bytes read in 20 ms (98.6 KiB/s)
>> ## Executing script at 43100000
>>
>> Could you add a 'scsi scan' command to the generic bootcmd
>> handling infrastructure?
>
> A good question, I wonder if this is something which would be considered
> SoC specific, or if all SoCs need this though?
>
> Stephen (added to the To) what is your take on this ?

Hmmm. 'mmc_dev' detects the media each time it's executed. However, I 
suppose that's appropriate because each MMC controller is connected 1:1 
with a device. Such automatic scanning might not be a good idea for 
larger buses where scanning could take a long time. Perhaps you can copy 
the style of $usb_boot, and prefix a "run $scsi_init" onto the front of 
it in the same way?


More information about the U-Boot mailing list