Make proof generic over current seL4 RISC-V platforms - #1024
Merged
Conversation
Xaphiosis
reviewed
Jul 2, 2026
Xaphiosis
reviewed
Jul 2, 2026
Xaphiosis
reviewed
Jul 2, 2026
Xaphiosis
reviewed
Jul 2, 2026
Xaphiosis
reviewed
Jul 2, 2026
Xaphiosis
reviewed
Jul 2, 2026
Xaphiosis
reviewed
Jul 2, 2026
Xaphiosis
reviewed
Jul 2, 2026
Xaphiosis
reviewed
Jul 2, 2026
Xaphiosis
reviewed
Jul 2, 2026
Xaphiosis
reviewed
Jul 2, 2026
Xaphiosis
reviewed
Jul 2, 2026
Xaphiosis
reviewed
Jul 2, 2026
Member
|
Commits:
|
corlewis
approved these changes
Jul 17, 2026
Useful for reducing proof effort in showing pspace_distinct' and other distinctness properties for concrete states. The auxiliary concept of aligned_offsets (an array of smaller objects making up a larger object) could be useful in the definitions of CNodes, page tables, etc in the design spec. Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>
- add machine declarations for maxIRQ - remove old manual maxIRQ definition - add interface lemmas for maxIRQ Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>
Change the definition of getActiveIRQ in RISCV64 to not suppress 0xFF, which was an invalid IRQ of some previous platform. Instead check for symbolic irqInvalid. From the proof perspective, even this check is not necessary, but it models actual hardware behaviour where irqInvalid (= irq 0) is reserved to mean "no IRQ". Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>
Increase alignment of IRQ node in example init state and add alignment check lemma (also used later in AInvs). We need to increase alignment, because some platforms have a much larger number of IRQs (>512). Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>
Use properties from Arch_Kernel_Config_Lemmas instead of unfolding, which also simplifies most proofs that used these Kernel_Config constants. Improve the pspace_distinct' proof in the infoflow refine state example by making use of the new Sorted_Addresses library. Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR mostly makes the treatment of
maxIRQgeneric in the proofs, which is the only not-yet-generic parameter that still varies between RISC-V platforms. This means, after this PR is merged, all seL4 RISC-V platforms are supported by the full RISC-V proof stack.Part of this update is fixing the machine interface definition
getActiveIRQfor RISC-V. It was suppressing IRQ 0xFF, which was an invalid IRQ for a previous architecture, not for RISC-V. There is no effect on the proof, since this is an assumption that was not made use of anywhere (invalidIRQ = 0 on RISC-V).PR for verified configs here: seL4/seL4#1698. I'm planning to make a separate PR for adding some of these to CI one both PRs are merged.