Skip to content

model kernel ELF window for AArch64 #1045

Description

@lsf37

Up until #1031 and seL4/seL4#1516 it was fine for the formalisation to ignore the kernel ELF, because it overlapped with the normal kernel window, so the formalisation could treat objects such as the (empty) global user page table as residing in the kernel window. The objects that reside in the kernel ELF window are the global variables.

seL4/seL4#1516 makes the kernel ELF window and the kernel window distinct. Because we need to require that the physical address of the global user page table fits into 48 bits and this physical address is computed via the kernel ELF window translation, this distinctness becomes directly visible in the formalisation and leads to a contradiction with the separate invariant that all objects live in the kernel window.

The problem currently only leads to a problem in the example state for information flow at the design spec level, and could be circumvented by picking an address in the kernel window that happens to have the right properties under the kernel ELF window translation, but this would not properly model the kernel setup.

The proper fix for this is:

  • introduce the kernel ELF window to the formal model
  • require that global_refs are within the kernel ELF window, and that only objects at global_refs addresses are within the kernel ELF window
  • relax the pspace_in_kernel_window invariant to say that an object must be either fully within the kernel window or fully within the kernel ELF window

Metadata

Metadata

Assignees

No one assigned

    Labels

    Aarch64AArch64-specific proofs, specs, etc

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions