This is an archive of the discontinued LLVM Phabricator instance.

[x86][seses] Add documentation for SESES
Needs ReviewPublic

Authored by zbrid on Mar 10 2020, 10:07 AM.



This patch includes documentation about the pass Speculative Execution
Side Effect Suppression. The document describes Load Value Injection,
the mitigation, and all the experiments ran on various LFENCE

One pager on Load Value Injection:

Deep dive on Load Value Injection:

Impl patch:

Diff Detail

Event Timeline

zbrid created this revision.Mar 10 2020, 10:07 AM
Herald added a project: Restricted Project. · View Herald TranscriptMar 10 2020, 10:07 AM
craig.topper added inline comments.Mar 11 2020, 3:32 PM

These commit ids are only valid for you local copy right? And would change any time you rebase.

craig.topper added inline comments.Mar 11 2020, 3:40 PM

Or is this the baseline revision you applied your patches against?

zbrid updated this revision to Diff 250065.Mar 12 2020, 2:57 PM
zbrid marked 3 inline comments as done.

Clarify what the Git commit IDs in the benchmark section refers to

zbrid added a comment.Mar 12 2020, 4:55 PM

Updated based on comments. Thanks for the feedback!


This the baseline revision I applied my patches against when I ran the benchmarks. I'll update the documentation to clarify that.

zbrid updated this revision to Diff 260351.Apr 27 2020, 9:12 AM

Update with info about this being a big hammer not only for LVI

zbrid added a comment.Apr 27 2020, 9:12 AM

@craig.topper Any other comments?

zbrid updated this revision to Diff 260463.Apr 27 2020, 2:59 PM

[seses][docs] Mention req to use -mlvi-cfi; Format code-block

zbrid added a comment.May 11 2020, 9:36 AM

@craig.topper @george.burgess.iv Friendly ping on this documentation.

mattdr added a comment.Oct 6 2020, 4:23 PM

Blast from the past. It seems like there's still benefit in checking in this documentation, appropriately updated to reflect the fact that SESES is now actually in the tree.

But I think we should take a second look at how much detail to provide about variants of the mitigation. As it stands, we don't have solid advice for how to make the tradeoff between them, and if someone asked we'd tell them to use the defaults. Yet 50%+ of this doc is spent covering those variations.

Maybe it's enough to gesture vaguely in the direction of experimental options, but leave out the figures and discussion?


need to update this to refer to the other LVI mitigation that's been checked in.


update wording now that SESES is committed