
Oh yeah, forgot about that...;)
I just downloaded the ext4 branch tarball and built it.
The test_unit_ready calls were still in there.
With or without those it took 0m 45s to load a ~150MB image.
In our original branch (2011.12), the test_unit_ready calls had more of an impact. The stock 2011.12 u-boot image took 6m 22s to load the 150MB file. Without test_unit_ready, it took 3m 15s. Without test_unit_ready and wait_ms(5) in usb_stor_BBB_transport() it took 0m 16s.
In the ext4 branch, I removed test_unit_ready and the mdelay(5) call from usb_stor_BBB_transport() function and was able to load the same file in 0m 8s.
So, removing the mdelay(5) call is the biggest improvement. Removing both is the best.
To recap:
with w/o w/o TUR TUR TUR and 5ms wait 2011.12 6:25 3:15 0:16 ext4 0:45 0:45 0:08
Note: all these time include the 3-4 seconds it takes to do the "usb start".
Regards, -Steve
On Wed, Aug 15, 2012 at 10:19 AM, Jim Shimer mgi2475@motorola.com wrote:
Hi Marek,
I looked at the ext4 branch. It looks like he has the patch to remove the usb_test_unit_ready() calls which were not needed. Actually those calls are commented out on that branch: #if 0 if (usb_test_unit_ready(srb, ss)) { printf("Device NOT ready\n Request Sense returned %02X %02X" " %02X\n", srb->sense_buf[2], srb->sense_buf[12], srb->sense_buf[13]); return 0; } #endif
In the u-boot-usb.git, this code is removed so at some point there will be a merge conflict.
Also the ext4 branch still has the mdelay(5) always being done in usb_stor_BBB_transport() line 696 which we found to be the largest performance killer.
Regards, Jim
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
-- *James H Shimer* Motorola Mobility T3-12-HH72 900 Chelmsford Street Lowell MA 08151 978-614-3550