Re: TLB flushes on fixmap changes

From: Nadav Amit
Date: Fri Aug 24 2018 - 16:25:00 EST

at 12:31 PM, Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> wrote:

> On Fri, Aug 24, 2018 at 11:36 AM Nadav Amit <nadav.amit@xxxxxxxxx> wrote:
>>> Urgh.. weren't the fixmaps per cpu? Bah, I remember looking at this
>>> during PTI, but I seem to have forgotten everything again.
>> [ Changed the title. Sorry for hijacking the thread. ]
>> Since:
>> native_set_fixmap()->set_pte_vaddr()->pgd_offset_k()
> The fixmaps should be entirely fixed after bootup to constant
> mappings, except for the KMAP ones, and they are indexed per-cpu.
> That's what my mental model is, at least.
> Can you actually find something that changes the fixmaps after boot
> (again, ignoring kmap)?

At least the alternatives mechanism appears to do so.

IIUC the following path is possible when adding a module:


And a similar path can happen when static_key_enable/disable() is called.