Skip to content
Snippets Groups Projects
Forked from Reform / reform-boundary-uboot
Source project has a limited visibility.
  • Wolfgang Denk's avatar
    9038e0e7
    ehci-hcd.c: fix hanging under higher load · 9038e0e7
    Wolfgang Denk authored
    
    This patch solves a problem with USB hanging under higher load on a
    i.MX31 board.  It falls into class of typical USB problems and fixes:
    if you don't understand the real cause, add a delay somewhere.
    
    The problem appeared after introduction of ELF relocation, which
    results in smaller code, which appears to run faster (probably because
    it fits better in the cache); turning off the instruction cache,
    adding debug printf()s and increasing the delay have all been found to
    make the problem go away.
    
    Moving the original "udelay(1)" up in the code to it's new place made
    the problem appear much less frequently. Increasing the delay to 2
    microseconds then made the code run reliably in all (hour-long) tests.
    To be on the safe side, we set it to 5 microseconds here.
    
    Signed-off-by: default avatarHeiko schocher <hs@denx.de>
    Signed-off-by: default avatarWolfgang Denk <wd@denx.de>
    Cc: Remy Bohmer <linux@bohmer.net>
    Cc: Stefano Babic <sbabic@denx.de>
    9038e0e7
    History
    ehci-hcd.c: fix hanging under higher load
    Wolfgang Denk authored
    
    This patch solves a problem with USB hanging under higher load on a
    i.MX31 board.  It falls into class of typical USB problems and fixes:
    if you don't understand the real cause, add a delay somewhere.
    
    The problem appeared after introduction of ELF relocation, which
    results in smaller code, which appears to run faster (probably because
    it fits better in the cache); turning off the instruction cache,
    adding debug printf()s and increasing the delay have all been found to
    make the problem go away.
    
    Moving the original "udelay(1)" up in the code to it's new place made
    the problem appear much less frequently. Increasing the delay to 2
    microseconds then made the code run reliably in all (hour-long) tests.
    To be on the safe side, we set it to 5 microseconds here.
    
    Signed-off-by: default avatarHeiko schocher <hs@denx.de>
    Signed-off-by: default avatarWolfgang Denk <wd@denx.de>
    Cc: Remy Bohmer <linux@bohmer.net>
    Cc: Stefano Babic <sbabic@denx.de>