On 10/11/2013 11:40 AM, Xenia Ragiadakou wrote:
[snip]
The main reasons that made me come to this conclusion was the fact
that Context Entries by being updated with a value other than the last
valid endpoint will be inconsistent with the definition in xhci spec
(revision 1.0 5/21/10) "Context Entries. This field identifies the
index of the last valid Endpoint Context within this Device Context
structure." and that in 6.4.3.8 Stop Endpoint Command TRB field
definitions for Endpoint ID field it states that "Valid values are ‘1’
to Slot Context Context Entries", from which i hypothesize that when
Context Entries are set with a smaller value a subsequent Stop Command
to an endpoint with higher index will fail.
I compile now to see if that actually can happen. However, the best
person to answer this question is an xHC architect. Will the xHC take
under consideration the value in Context Entries field of the Output
Slot Context only when a Configure Endpoint command is issued or also
for other commands in order to check if the endpoint affected by the
command is a valid endpoint?
To test if a smaller value will cause a problem, I reset first endpoint
4 and, then, endpoint 3 so that the Context Entries field get updated
with the value 3 while the actual last valid endpoint is 4.
Endpoint 4 is a BULK OUT endpoint so I checked if I could write to the
device. I didn't experience any issues when writing.
Then, I issued a Stop Endpoint command to EP 4 and although its number
is higher than the number kept in Context Entries field, the Stop
Endpoint command completed successfully.
Then, I issued a Set TR Dequeue pointer command to EP 4 and also
completed successfully.
At last, I issued a Disable Slot command to see if all the Endpoint
Contexts for the slot will be disabled and not only those in the range
of Context Entries and indeed all of them were disabled.
So, I guess that my changelog was unreasonably ominous and that the
patch can be dropped.
From the above it seems that xHC does not update with the vallue in the
Context Entries field of the Input Slot Context any internal register
used in determining currently valid endpoints.
regards,
ksenia
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html