Committed, thanks On 01.12.2012 23:46, Aleš Nesrsta wrote:
> Hi, > I found some USB problem: > > Some part of GRUB wants read "long" data block from USB mass storage > device when GRUB opens USB disk, e.g. when "ls" command is entered first > time after EHCI/UHCI/OHCI module is loaded. > "Long" means data block of 0x8000 bytes length - it is not too much > nowadays :-) > > But: > Some USB devices have too low limit of bulk data packet size, e.g. 32 > bytes or less - so, in such case the USB driver needs to use lot of > Transfer Descriptors (TDs) to transfer 32Kbytes of data. > Unfortunately, number of TDs is limited in GRUB driver(s) - and there is > not enough TDs in this situation. > The result is internal error, no data transfer is initiated by driver > and error code is returned to calling function from usbms.c. > > It is vary bad situation: USB device receives CBW command to transfer > 0x8000 bytes - but transfer of data is never started because driver run > out of TDs... > Some devices could be automatically recovered from such situation and > works normally later when GRUB tries read disk by smaller parts. > But some devices remains confused even if they are reset by USBMS > specific reset command. > > So, I wrote simple experimental patch which splits "long" transfer into > smaller parts - it looks to solve this issue. > Patch solves only read transfer - AFAIK GRUB loader is not designed to > write some data into disk, so there probably never be transfer of "long" > data block in direction into USB mass storage device. > Maximal size 2Kbyte of USB data transfer data block (defined in > usbtrans.h) looks to be more or less optimal value. > > It is probably not critical patch because this situation happens mainly > if USB device is full speed device - i.e. this problem is related mainly > to very old USB flash disks or some (older) special mass storage devices > like GPS devices, cameras, card readers etc. - which will be probably > never used as boot devices... (but - who knows...) :-) > > BR, > Ales > > > > _______________________________________________ > Grub-devel mailing list > Grub-devel@gnu.org > https://lists.gnu.org/mailman/listinfo/grub-devel -- Regards Vladimir 'φ-coder/phcoder' Serbinenko
signature.asc
Description: OpenPGP digital signature
_______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel