Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 15 Oct 2008 23:25:11 +0300
From:      Alexander Motin <mav@FreeBSD.org>
To:        "M. Warner Losh" <imp@bsdimp.com>
Cc:        webmaster@kibab.com, freebsd-arm@freebsd.org, freebsd-current@freebsd.org, zbeeble@gmail.com, freebsd-mobile@freebsd.org
Subject:   Re: RFC: PCI SD host controller driver & mmc/mmcsd modules improvements
Message-ID:  <48F651A7.3040001@FreeBSD.org>
In-Reply-To: <20081013.110310.-1622595361.imp@bsdimp.com>
References:  <5f67a8c40810052226k3070a11ah463a819c677f6307@mail.gmail.com>	<20081008113848.c9b44354.webmaster@kibab.com>	<20081012171201.da4da754.webmaster@kibab.com> <20081013.110310.-1622595361.imp@bsdimp.com>

next in thread | previous in thread | raw e-mail | index | archive | help
M. Warner Losh wrote:
> : Problem was solved by increasing the number of answer read attempts in mmc_send_app_op_cond(). With attached patch (against latest driver version) card is recognized properly on ~ 190th attempt (while in original driver there are only 100 attempts).
> : 
> : Furthermore, non-mine SDHC card is now also recognized in this cardreader (it doesn't even under Windows). In this case, it takes about 400 attempts to read answer.
> 
> I think I bumped the number of iterations to 100 when I found that 10
> wasn't enough.  25 different cards worked just fine, but I got use of
> a 16MB SD card at BSDcan that needed like 65.  Bumping it from 100 to
> 1000, however, makes the timeout go from 1s to 10s.  That opens up
> window for insertion races, but that's the only downside I see...  Of
> course, we want to fix those races, but this may expose them a little
> more..
> 
> I can't believe that you had a card that took 4s to become active!
> 
> Can you confirm the elapsed time is really 4s for that card?
> Otherwise, this may be pointing out a bug in another area of the
> code...

Completely fortunate I have noticed that number of iterations depends on 
my laptop power source. After small investigation I have found that it 
actually depends on dev.cpu.0.freq value. With default value 2400 I have 
only several iterations. But every double frequency decrease doubles 
iteration count. With minimum value 100MHz I have more then 100 
iterations. Same time it doesn't looks like this time is a real wall 
time. It looks like DELAY() used in a loop has some problems with time 
counting.

-- 
Alexander Motin



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?48F651A7.3040001>