Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 19 Apr 2011 09:24:51 +1000 (EST)
From:      Bruce Evans <brde@optusnet.com.au>
To:        Alexander Motin <mav@FreeBSD.org>
Cc:        svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org, John Baldwin <jhb@FreeBSD.org>
Subject:   Re: svn commit: r220777 - head/sys/dev/ahci
Message-ID:  <20110419091915.G2406@besplex.bde.org>
In-Reply-To: <4DAC91BF.7050102@FreeBSD.org>
References:  <201104181334.p3IDYVDh073304@svn.freebsd.org> <201104181306.58172.jhb@freebsd.org> <4DAC91BF.7050102@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, 18 Apr 2011, Alexander Motin wrote:

> On 18.04.2011 20:06, John Baldwin wrote:
>> On Monday, April 18, 2011 9:34:31 am Alexander Motin wrote:
>>> Author: mav
>>> Date: Mon Apr 18 13:34:31 2011
>>> New Revision: 220777
>>> URL: http://svn.freebsd.org/changeset/base/220777
>>> 
>>> Log:
>>>     - Tune different wait loops to cut some more milliseconds from reset 
>>> time.
>>>     - Do not call ahci_start() before device signature received. It is 
>>> required
>>>    by the specification and caused non-fatal reset timeouts on AMD 
>>> chipsets.
>> 
>> Do you have to use DELAY() here rather than a blocking sleep via pause()?
>
> At the moment I would say yes. These paths are called from CAM while holding 
> SIM lock. CAM may not like if I drop the lock in the middle of the call. Also 
> during recovery those functions could be called from the callout and 
> interrupt threads. In that case even dropping the lock won't allow thread to 
> sleep.

More than before you reduced the delays.  There seems to be no interrupt
for reset, and it may be impossible for a timer to interrupt after
only ~10 usec like some of the reduced delays use.

> I will think more about possibilities to refactor the code to replace some 
> DELAYs with callouts, but requirement to keep functionality in polled mode 
> doesn't make the task easier.

This means that callouts cannot work.  Dumps should start with a reset
which should run entirely in polled mode, like the entired dump.

Bruce



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