On 31 December 2014 at 02:18, Bin Meng <bmeng...@gmail.com> wrote: > > Each time U-Boot boots on Intel Crown Bay board, the displayed hard > drive information is wrong. It could be either wrong capacity or just > a 'Capacity: not available' message. After enabling the debug switch, > we can see the scsi inquiry command did not execute successfully. > However, doing a 'scsi scan' in the U-Boot shell does not expose > this issue. > > SCSI: Target spinup took 0 ms. > SATA link 1 timeout. > AHCI 0001.0100 32 slots 2 ports 3 Gbps 0x3 impl SATA mode > flags: ncq stag pm led clo only pmp pio slum part ccc apst > scanning bus for devices... > ahci_device_data_io: 0 byte transferred. <--- scsi inquiry fails > ahci_device_data_io: 512 byte transferred. > ahci_device_data_io: 512 byte transferred. > ahci_device_data_io: 512 byte transferred. > Device 0: (0:0) Vendor: ATA Prod.: Rev: ?8 > Type: Hard Disk > Capacity: 912968.3 MB = 891.5 GB (1869759264 x 512) > Found 1 device(s). > > So uninitialized contents on the stack were passed to dev_print() to > display those wrong information. > > The symptom were observed on two hard drives (one is Seagate, the > other one is Western Digital). The fix is to make sure the AHCI > interface is not busy by checking the error and status information > from task file register after enabling the port in ahci_port_start() > before proceeding other operations like scsi_scan(). > > Signed-off-by: Bin Meng <bmeng...@gmail.com> > > --- > > Changes in v2: > - Return error codes in ahci_port_start() when timeout > - Use get_timer() instead of plain loop when checking tfdata status >
Reviewed-by: Simon Glass <s...@chromium.org> > drivers/block/ahci.c | 20 +++++++++++++++++++- > 1 file changed, 19 insertions(+), 1 deletion(-) _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot