Re: [PATCH v2 00/11] Fix up SRSO stuff

From: Borislav Petkov
Date: Mon Aug 14 2023 - 12:45:48 EST


On Mon, Aug 14, 2023 at 01:44:26PM +0200, Peter Zijlstra wrote:
> The one open techinical issue I have with the mitigation is the alignment of
> the RET inside srso_safe_ret(). The details given for retbleed stated that RET
> should be on a 64byte boundary, which is not the case here.

I have written this in the hope to make this more clear:

/*
* Some generic notes on the untraining sequences:
*
* They are interchangeable when it comes to flushing potentially wrong
* RET predictions from the BTB.
*
* The SRSO Zen1/2 (MOVABS) untraining sequence is longer than the
* Retbleed sequence because the return sequence done there
* (srso_safe_ret()) is longer and the return sequence must fully nest
* (end before) the untraining sequence. Therefore, the untraining
* sequence must overlap the return sequence.
*
* Regarding alignment - the instructions which need to be untrained,
* must all start at a cacheline boundary for Zen1/2 generations. That
* is, both the ret in zen_untrain_ret() and srso_safe_ret() in the
* srso_untrain_ret() must both be placed at the beginning of
* a cacheline.
*/

--
Regards/Gruss,
Boris.

https://people.kernel.org/tglx/notes-about-netiquette