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

caprevoke: remove store side revocation #1743

Closed
wants to merge 25 commits into from

Conversation

brooksdavis
Copy link
Member

@brooksdavis brooksdavis commented Jul 10, 2023

This is a PR for CI aiming to include the contents which will be merged to dev in a partially manual manner. It will be rebased as I update caprevoke with tidying fixes and and merges looped back from dev.

Load side revocation is the future. This PR aims to remove all vestiges of store side resulting in a considerable less confusing state machine.

This test depends on store-side behavior which will be removed shortly.
Always revoke load-side.  CHERI_REVOKE_FORCE_LOAD_SIDE and
CHERI_REVOKE_FORCE_STORE_SIDE are no longer defined and currently
ignored as flags.  We should likely restrict flags to valids ones for
the release.
Delete the CHERI_REVOKE_ST_SS_* states from the enum and remove all code
that referenced them.
Nothing sets this any more so remove it and the code that depends on it.
This was a store-side specific flag so remove it.
We can now revoke 2^60 times more before the epoch counter wraps...
Drop the ls_ prefix as we're always doing load-side revocation.

Add an comment on the cause of the goto since I spent quite a few
minutes failing to parse the label.
We're always doing load-side revocation so there's no need to keep it.
We're always doing a load-side scan so drop the flag to indicate we're
doing one.
This flag was unused so drop it.
More flags have been removed so renumber the remaining ones.

It might make sense to remove VM_CHERI_REVOKE_BARRIERED as it's
implemented, but unused.  For now keep it as it's described as a debug
flag.
The whole comment was store side focused with an aside about the
possibility of load side revocation.  Rewrite to be be purely
load side.
Installing all kernels by their own name is useful, but not what we're
merging so remove from the branch.
These are useful in the development branch long with cycle counts,
but probably not something we want in production.
std.CHERI-CAPREVOKE doesn't do anyting useful without CHERI support.
Make GENERIC-MORELLO include std.CHERI-CAPREVOKE.

Add -NOCAPREVOKE variants that disable CAPREVOKE entierly.

To aid script transitions, retain -CAPREVOKE variants. Update them to
assume they inherit CAPREVOKE from GENERIC-MORELLO.
GENERIC-MORELLO now enables CAPREVOKE so we don't need these.
Add the contents of std.CHERI-CAPREVOKE to GENERIC-MORELLO and remove
std.CHERI-CAPREVOKE.
Make std.CHERI include std.CHERI-CAPREVOKE.

Add -NOCAPREVOKE variants that disable CAPREVOKE entierly.

To aid script transitions, retain -CAPREVOKE variants. Update them to
assume they inherit CAPREVOKE from std.CHERI.
All non-NOCAPREVOKE kernels now enable CAPREVOKE so they are unneeded.
Add the contents of std.CHERI-CAPREVOKE to std.CHERI and remove
std.CHERI-CAPREVOKE.
@brooksdavis
Copy link
Member Author

We've merged caprevoke minus store-side revocation so this is OBE

@brooksdavis brooksdavis deleted the caprevoke-remove-storeside branch October 31, 2023 18:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant