• Douglas Anderson's avatar
    mmc: dw_mmc: Add locking to the CTO timer · 8892b705
    Douglas Anderson authored
    This attempts to instill a bit of paranoia to the code dealing with
    the CTO timer.  It's believed that this will make the CTO timer more
    robust in the case that we're having very long interrupt latencies.
    
    Note that I originally thought that perhaps this patch was being
    overly paranoid and wasn't really needed, but then while I was running
    mmc_test on an rk3399 board I saw one instance of the message:
      dwmmc_rockchip fe320000.dwmmc: Unexpected interrupt latency
    
    I had debug prints in the CTO timer code and I found that it was
    running CMD 13 at the time.
    
    ...so even though this patch seems like it might be overly paranoid,
    maybe it really isn't?
    
    Presumably the bad interrupt latency experienced was due to the fact
    that I had serial console enabled as serial console is typically where
    I place blame when I see absurdly large interrupt latencies.  In this
    particular case there was an (unrelated) printout to the serial
    console just before I saw the "Unexpected interrupt latency" printout.
    
    ...and actually, I managed to even reproduce the problems by running
    "iw mlan0 scan > /dev/null" while mmc_test was running.  That not only
    does a bunch of PCIe traffic but it also (on my system) outputs some
    SELinux log spam.
    
    Fixes: 03de1921
    
     ("mmc: dw_mmc: introduce timer for broken command transfer over scheme")
    Tested-by: default avatarEmil Renner Berthing <kernel@esmil.dk>
    Signed-off-by: default avatarDouglas Anderson <dianders@chromium.org>
    Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
    8892b705
dw_mmc.c 88.4 KB