-
Notifications
You must be signed in to change notification settings - Fork 95
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Sdtrig: Clarify that tinfo.version is a global constant, not per-trigger #1081
base: main
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I believe this to be a valuable clarification. Tnanks!
The confusion is that "the version of the Sdtrig extension implemented" might change dynamically because part of the trigger module might support 0.13 and another part supports 1.0? |
c56c4f7
to
9d0e6e0
Compare
Yes. The sentence |
To me "This register provides access to the trigger selected by tselect." does mean that tinfo.version applies per trigger, and this change would change that behavior. That would make this change not backwards compatible. |
One may argue that the sentence Could we please reach an agreement what we would like |
You're right that different triggers cannot implement different versions of Sdtrig and be compliant with Sdtrig. Of course, you can have a non-conforming extension that does so, but that's not officially Sdtrig. Here's what's currently specified:
I believe that you are mainly concerned about the last point. Your MR proposes:
@rtwfroody points out that the first bullet is incompatible with the behavior in the ratified spec. Practically speaking, the current spec and your proposal seem equivalent (except, possibly, if a future version does want to have per-trigger version fields for some reason). But if they're equivalent then it seems like there's not a reason to change a ratified spec. |
9d0e6e0
to
65bb3da
Compare
The purpose of "tinfo.version" field is to describe the version of the whole Sdtrig implementation. Add an explanatory note to make it clearer to spec readers that this means that all triggers will share the same tinfo.version value.
65bb3da
to
14c73cb
Compare
@pdonahue-ventana, thank you for your reply - understood. So if I rephrase your comment: the current text of the spec already requires that However, I still believe that this should be stated in a clearer way so that mis-interpretations (like discussed in this thread) are avoided. I have changed this merge request to add an explanatory note for the |
That's OK with me. I have removed the "Backwards Incompatible Change" label. Since the spec is ratified, there's a process for updates. Other specs have gathered up several clarifications and then sent a whole batch through the process. So expect this to lie dormant for a while. |
Thank you.
That sounds perfectly fine to me. After all, it is a minor clarification only. |
The purpose of "tinfo.version" field is apparently to describe the version of the whole Sdtrig implementation. That is, it is a constant unaffected by the current value of tselect CSR. Judging form the original commit that introduced it (0374fd6) and from the related mailing list discussion
(https://lists.riscv.org/g/tech-debug/topic/96888390).
However, the sentences
This register provides access to the trigger selected by tselect.
The reset values listed here apply to every underlying trigger.
leave certain room for interpretation that "tinfo.version" is a per-trigger constant, not a global one, and could therefore change depending on "tselect".
Remove this ambiguity by rewording the description of "tinfo" CSR and "tinfo.version" field.