Skip to content
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

Update ARM and AARCH64 AInvs for explicit FPU changes #850

Open
wants to merge 7 commits into
base: explicit_fpu
Choose a base branch
from

Conversation

corlewis
Copy link
Member

This updates the AInvs proofs for ARM and AARCH64 following the specification changes made in #819 that made FPU state more explicit and changed the kernel to use semi-lazy FPU switching. It additionally proves a new invariant about the FPU that we expect to be necessary for later stages of the functional correctness proofs and also updates Access for ARM.

@corlewis corlewis self-assigned this Feb 10, 2025
Copy link
Member

@lsf37 lsf37 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good work, and a very substantial chunk of the overall FPU proof. Only the minor comments above from me, no real content changes.

@corlewis
Copy link
Member Author

corlewis commented Feb 14, 2025

For anyone reviewing this in its current state, ignore the refactor arch_thread_get/set lemmas commit, I've pulled it into a separate PR for master and it will go away here once #852 is merged and I've rebased this branch.

Signed-off-by: Corey Lewis <corey.lewis@proofcraft.systems>
No need to review this commit

Signed-off-by: Corey Lewis <corey.lewis@proofcraft.systems>
Signed-off-by: Corey Lewis <corey.lewis@proofcraft.systems>
This is used to track within the tcb whether it is the current fpu
owner, so that we are able to determine whether a tcb is live without
needing to look at global state.

Signed-off-by: Corey Lewis <corey.lewis@proofcraft.systems>
For architectures with FPU enabled, this shows that the tcb_cur_fpu
field in each tcb is consistent with the global current_fpu_owner. As a
consequence of this, it also shows that if the global current_fpu_owner
is set to something then there is a tcb there.

Signed-off-by: Corey Lewis <corey.lewis@proofcraft.systems>
Signed-off-by: Corey Lewis <corey.lewis@proofcraft.systems>
…r_fpu field

Signed-off-by: Corey Lewis <corey.lewis@proofcraft.systems>
@corlewis
Copy link
Member Author

For anyone reviewing this in its current state, ignore the refactor arch_thread_get/set lemmas commit, I've pulled it into a separate PR for master and it will go away here once #852 is merged and I've rebased this branch.

This branch has been rebased over master now #852 has been merged.
I've also updated x64 aspec for the tcb_cur_fpu ghost variable, as it will be needed there in the future and I want to keep the architectures in sync where possible to make patching between them easier once I'm up to that stage.

@lsf37 lsf37 added the Aarch64 AArch64-specific proofs, specs, etc label Feb 26, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Aarch64 AArch64-specific proofs, specs, etc
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants