[U-Boot] usb_test_unit_ready called every block read - performance

Marek Vasut
2012-08-14T17:48:24Z

Dear Steve Heckman,

> Marek,
>
> I've been working with Jim on this.
>
> The latest u-boot code we tried (2012.07) does seem to be much faster
> WRT reading ext volumes from USB media. We were still able to eke
> out a bit more speed by removing the Test Unit Ready calls per Read/Write.
> In my experience, you only call Test Unit Ready during initialization of
> a device (e.g., SCSI) or after device reset.
>
> We still haven't heard a reason why it is being done for each Read and
> Write
> operation. Was it put in to work around bad hardware?

I have zero idea, it was there ever since ... let's apply similar patch and see
how it fares.

> Thanks,
> Steve Heckman
>
> On Sun, Aug 12, 2012 at 7:54 PM, Marek Vasut <marex@denx.de> wrote:
> > Dear Jim Shimer,
> >
> > > While tuning ext2load, we found that usb_test_unit_ready was being
> > > called every block read. We compared the usb block storage to the
> > > scsi block storage cmd_scsi.c, and found that the scsi device was only
> > > calling its scsi_setup_test_unit_ready() during scsi_can. It appears
> > > that usb_test_unit_ready() really only needs to be called once during
> > > usb_stor_scan(), via usb_stor_get_info(). Is there a particular
> > > reason usb_test_unit_ready is called for every block read, or do you
> > > think its
> >
> > ok
> >
> > > to only call during usb_stor_scan()? We're finding this speeds up
> >
> > ext2load
> >
> > > quite a bit.
> >
> > Jim, did we get anywhere on this one ? Can you try with the new ext4 code
> > in
> > Wolfgangs' u-boot-master/ext4 branch?
> >
> > > Regards,
> > > Jim
> >
> > Best regards,
> > Marek Vasut

Best regards,
Marek Vasut