Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 11 Mar 2002 10:50:32 +0100
From:      Thomas Quinot <thomas@cuivre.fr.eu.org>
To:        "Kenneth D. Merry" <ken@kdm.org>
Cc:        freebsd-scsi@FreeBSD.ORG
Subject:   Re: ATAPI/CAM boot-time hang
Message-ID:  <20020311105032.A32895@melusine.cuivre.fr.eu.org>
In-Reply-To: <20020309161919.A59137@panzer.kdm.org>; from ken@kdm.org on Sat, Mar 09, 2002 at 04:19:19PM -0700
References:  <20020309001232.A96693@melusine.cuivre.fr.eu.org> <20020309161919.A59137@panzer.kdm.org>

next in thread | previous in thread | raw e-mail | index | archive | help
Le 2002-03-10, Kenneth D. Merry écrivait :

> That is illegal behavior (returning unit attention in response to an
> inquiry).  An inquiry should only result in a check condition when the
> device can't fulfill the request.  In this case, the device is sending back
> a unit attention, which has nothing to do with not being able to fulfill
> the request.

Plus, the ATAPI generic code immediately issues a REQUEST SENSE in such
a situation, which should clear the UA in any case.
 
> The reason we set the SF_RETRY_UA flag is because unit attentions are
> expected conditions, and will be cleared as soon as they are reported.

OK.

> They aren't cleared by an inquiry, but then they aren't supposed to be
> reported in response to an inquiry.

Agreed.
 
> It's possible in -current that we might actually decrement the count for a
> unit attention, depending on what ASC/ASCQ are returned.

We get 0x2e/0x00, which is unassigned in SPC, and assigned to
'INSUFFICIENT TIME FOR OPERATION' in SPC-2 and higher. This ASC/ASCQ is
specific to CD-ROM class devices, and in any case should be returned
only with a CHECK CONDITION sense key.
 
> >   1. consider that the device's behaviour is abnormal (ATAPI does
> >      always perform autosense, so UNIT ATTENTION should be cleared
> >      on the 2nd attempt) and create quirk entries for it;

From what I infer from the above it is likely that we need to introduce
these new quirk entries (CAM_QUIRK_NOFULLINQUIRY?) (or maybe
CAM_NEW_TRAN_CODE provides another way of working around such issues --
I have yet to have a closer look at it).

> >   2. decrement the retry count when receiving UNIT ATTENTION (but in
> >      that case, the probe machinery should not consider failure of
> >      full inquiry as an indication that the device has disappeared);

Since UA is supposed to be a transient condition, couldn't we clear
SF_RETRY_UA the first time we do a retry, so as to ensure that a
command which yields a (bogus) UA at every retry finally fails?

> >   3. get rid of the full inquiry altogether (anything besides
> >      SHORT_INQUIRY_LENGTH is vendor-specific anyway -- do we actually
> >      use it?)
> Take a look at the scsi_inquiry_data structure in scsi_all.h.  There
> are fields used to indicate the ability to do QAS, DT clocking, etc.  At
> least the DT clocking bit is used in the transport layer, and the ses(4)
> driver needs some of the extended data as well.

Ah, yes, I see the SPI stuff there in SPC2 (in what were reserved bits
in SPC), so the answer to my question above is 'yes we do use actually
use it'.
 
> Well, it would help to find out what ASC/ASCQ are actually getting returned
> from the device.  We know what the sense key is, but it would be useful to
> find out what ASC/ASCQ are reported.

atapi_interrupt: result = 0x60
... cmd was 0x12, now doing autosense
-> here the ATAPI layer reports an UA (the high-order nibble of result
   is a sense key) in response to our INQUIRY, and the atapi_interrupt
   routine automatically schedules a REQUEST SENSE

atapi_interrupt: result = 0x60
-> here the unit has replied to the internally-generated REQUEST SENSE...

atapi_cb: hcb@0xc1edac40 status = 60: (sk = 06)
  atapicam1s: cmd 03 - sk=06 asc=2e ascq=00
-> ... the xpt callback gets back control, and we see that we have
   a sense key of 6 UNIT ATTENTION, and an ASC/ASCQ of 2e/00
   INSUFFICIENT TIME FOR OPERATION. Bogus.

Thomas.
 
-- 
    Thomas.Quinot@Cuivre.FR.EU.ORG

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-scsi" in the body of the message




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