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 ***
