-
Notifications
You must be signed in to change notification settings - Fork 19
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
A question of msdcfg.SDICN #116
Comments
hi @ZeyueShen - these are orthogonal (not interdependent) aspects - MPT can be in bare mode, while the RDSM may specify the SDICN as required. The rules based on how SDICN is programmed (0, !impl controller OR impl controller) are specified on page 39 of the spec. See text starting with "When SDICN is not the number of an implemented interrupt controller, or is zero then the following rules apply to all privilege modes:" |
hi @rsahita - Thanks for your reply. According to your explanation, I understand that the choice of SDICN has nothing to do with whether mmpt.Mode is equal to 0. But I have one more question: msdcfg is used to configure the current supervisor domain. When mmpt.Mode=Bare, mmpt.sdid=0, and supervisor domain in this case is meaningless (because mmpt.Mode=Bare). In this case, the configuration of SDICN is used to configure mmpt.sdid=0. Is this understanding correct? Or maybe my expression is not quite correct, I just want to know whether mmpt.sdid and SDICN are related? |
P39 @ V0.2.0 |
thanks @rock-ifly and sorry for the delay @ZeyueShen - hope @rock-ifly's response clarified your question. |
@rsahita About this issue,I also have some confusion.
When mmpt.Mode=Bare, according to smmtt spec, mmpt.sdid must be set to 0, which indicates that the current space is a single supervisor domain.When there is only one supervisor domain, there is also only one interrupt controller. So what is the meaning of RDSM specifying the SDICN? In other words, what problems will occur if SDICN is not allowed to be configured? |
This statement is incorrect. SDIDMAX=0 is a valid configuration, meaning all supervisor domains must use SDID 0. This does not limit the number of schedulable supervisor domains; it just means a fence will be required during every supervisor domain context switch. Even if the hardware supports multiple SDIDs, software is not required to use them.
This is also incorrect. SDID is only relevant to the Smmpt extension. All it affects is the scope of MPT caching. You may notice that there are zero references to SDID in the Smsdia chapter. SDID and SDICN are completely unrelated. |
@rsahita @SiFiveHolland please help us to make it clear,
|
I notice a sentence in page 38 (v0.2.0):
I am not sure if the spec is intended to restrict only one interrupt controller per supervisor domain. |
When mmpt.Mode=Bare, according to smmtt spec, mmpt.sdid must be set to 0, which indicates that the current space is not in any supervisor domain. In this case, set msdcfg.SDICN to 0 or a valid number or an invalid number. Will it affect imsic and aplic (hart associated) address access? (Will an exception be reported when msdcfg.SDICN is set to invalid numbe or 0)?
The text was updated successfully, but these errors were encountered: