Re: [PATCH v2 00/12] s390: More this_cpu_*() changes
Mark Rutland <[email protected]>
| Newsgroups | org.kernel.vger.linux-kernel,org.kernel.vger.linux-s390 |
|---|---|
| Message-ID | <aq0S_fKqcZ5WoLUU@J2N7QTR9R3> |
Hi Heiko,
This looks neat!
On Fri, Sep 18, 2026 at 10:48:30AM +0200, Heiko Carstens wrote:
> v2:
> - Yet another brown paper bug: Re-add CPU migration check to last
> patch. Unconditionally recalculating and updating the percpu variable
> address and percpu offset register can corrupt previous context
> register state in several cases (not only the single case reported by
> Sashiko).
Do all of those case boil down to:
* During exception entry from context A to context B, a nested exception
is taken from context B to context C before percpu_entry() is called,
and the nested exception handler updates B's live regs using A's
percpu register indices.
* During exception return from context B to context A, a nested
exception is taken from context B to context C after percpu_entry() is
called, and the nested exception handler updates B's live regs using
A's percpu register indices.
... or was there another case that you spotted (e.g. some case where
percpu_{entry,exit}() aren't called)?
On arm64, I think we avoid those two cases by virtue of not taking
nested (architectural) exceptions during those windows, and by not
applying fixups for SDEI events (SW NMIs that can be taken during those
windows).
If there's another case to consider, it'd be handy to know.
Mark.