This message is from the T13 list server.

On Thu, 23 Sep 2004 12:34:11 -0700, Eschmann, Michael K wrote:
>This message is from the T13 list server.
>Hale and I were discussing an issue with the "Execute Device
>Diagnostics" command, and I'd like to see if there's enough collective
>memory as to why the spec is the way it is.

I doubt we will find any reason that anyone can remember. However...

There is a possible problem in both the Host Non-Data and Host
EXECUTE DEVICE DIAGNOSTIC state diagrams. It could be viewed as a
"technical problem" or just something that can be "confusing". 

I think it can be cleared up with a very simple change.

The problem is this: In these two state diagrams (which are very
similar) there is a "Check_status" state - see states HND1 and HED2.
This state has an exit/entry condition (a loop) that is executed when
BSY=1. This exit/entry condition is valid ONLY when nIEN=1 (the host
is polling).

(You ask why? Answer: Because if the host is using interrupts
(nIEN=0) AND the host recives the interrupt, the device status CAN
NOT be BSY=1 - that would violate the basic rules about when a device
asserts INTRQ and the host should detect this as an error condition.
BTW it is a host that detects this "error" that started this
conversation.)

I think the simple "fix" is to change the "BSY=1" to "nIEN=1 & BSY=1"
in the state diagrams. That makes it clear that the "loop when BSY=1"
is not used when nIEN=0.

Now the question is: Does the problem also exist in any of the other
host side state diagrams.

Hale



*** Hale Landis *** www.ata-atapi.com ***



Reply via email to