-
Notifications
You must be signed in to change notification settings - Fork 21
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
Issue to track latest AR feedback #138
Comments
PR #139 created to address this issue. |
Since this is a large PR I will go ahead and merge it so its easier to read the merged text. Please feel free to leave comments in the PR or in this issue. |
The text currently says bit 2 for SSE in senvcfg and henvcfg. Should be bit 3 as for menvcfg (and the figures). |
Doesn't the new handling of LPE for U go against what the privileged standard says regarding MENVCFG? I understand that the idea is to make it possible to enforce landing pads in U without doing it in S, and for some reason save bits in *STATUS, but it seems inconsistent with the intended purpose of MENVCFG as stated in the standard. Now SENVCFG.LPE enables LP for U, even if MENVCFG has it disabled "for modes less privileged". Also, it is a bit strange that an operating system would be required to change the U-mode execution environment on task switch (when only some tasks have LP protection). |
Thanks. Queued PR #140 to fix that. |
So while the current bits in the menvcfg have affected all privilege modes less than M that does not need to be true always. I interpret this text as "that controls certain characteristics of the execution environment for modes less privileged than M" as allowing for controlling only a subset of execution environment less privileged than M. I will bring this up with AR to verify if they really intended this when it was suggested.
The OS can optimize this. For example, if the outgoing senvcfg and incoming senvcfg settings are identical then a change is not required. |
The stated encoding for c.ssincp ("c.lui x0, 0") is said to be c.mop.0, which does not comply with what was said earlier regarding Zcmop. Eight code points in the 16-bit encoding space are provided for MOPs: Is it c.ssincp that is wrong, or has the proposed Zcmop changed? The documentation must also be wrong regarding which c.mop.N that are used for c.sspush x1 (claimed c.mop.1, but should be c.mop.0 according to earlier Zcmop description) and/or c.sspopchk x5 (claimed c.mop.2, which was correct according to earlier Zcmop description). |
That is unfortunately an error that crept in. The |
Following the Architecture Review, the Architecture Review Committee (ARC) requested a justification for the |
Updates from 9/26 ARC:
|
PR #156 created to add the main feedback. |
Please leave feedback in on the PR in this issue or directly in the PR. |
Closing this issue. The pending code point updates will be tracked in #154 |
Here is summary of feedback to be updated in next PR:
I will create a PR with 1 through 7 shortly.
The AR has asked us to drop the
ssamoswap
instruction. The current use of thessamoswap
to perform an atomic read of the checkpoint and replace it with a value of 0 so as to enforce the "use checkpoint once" property can be achieved using a non-atomic sequence. The window of vulnerability between reading the checkpoint and clearing it is considered acceptable. If TG members have a counter to this please add to this issue. Otherwise we will be dropping this instruction in next update. If we dropssamoswap
we would need asswr
to be able to write to the shadow stack for functional reasons such as exception fixup, boot strap a new shadow stack with a checkpoint, and signal delivery cases.The text was updated successfully, but these errors were encountered: