diff options
| author | Magnus Lindholm <linmag7@gmail.com> | 2026-10-10 16:33:10 +0200 |
|---|---|---|
| committer | Magnus Lindholm <linmag7@gmail.com> | 2026-10-18 00:44:45 +0200 |
| commit | 16266d50c51eb5eb98f1c345c5aa9ff359a305aa (patch) | |
| tree | 8f03322b18bbd879d11b1036a22c49e4334d5b1a /tools/perf/scripts/python/task-analyzer.py | |
| parent | 4244c555ac440a445cc168f860b2677099d761f9 (diff) | |
| download | linux-16266d50c51eb5eb98f1c345c5aa9ff359a305aa.tar.gz linux-16266d50c51eb5eb98f1c345c5aa9ff359a305aa.zip | |
alpha: do not clear remote MMU contexts in migrate_flush_tlb_page()
After the on_each_cpu() rendezvous, migrate_flush_tlb_page() walks the
other CPUs and zeroes their mm->context[cpu] when mm_users is at most one,
described as mimicking flush_tlb_mm()'s mm_users<=1 optimization.
It is not one. flush_tlb_mm() tests mm_users before deciding whether to
send the IPIs; here every CPU has already been visited and waited for, so
nothing is saved. The callback has also just set each CPU's own slot
correctly, so the loop only overwrites it, and does so while that CPU may
still be running in the address space.
Remove it. The shootdown shortcuts in flush_tlb_mm(), flush_tlb_page()
and flush_icache_user_page() clear remote slots too; once the next patch
removes those as well, every runtime update of mm->context[cpu] is made by
CPU cpu itself. That patch relies on the invariant when it reads those
slots to decide whether a shootdown can be skipped, so this one is tagged
for stable as its prerequisite.
Fixes: dd5712f3379c ("alpha: fix user-space corruption during memory compaction")
Cc: stable@vger.kernel.org
Reviewed-by: Matt Turner <mattst88@gmail.com>
Signed-off-by: Magnus Lindholm <linmag7@gmail.com>
Link: https://lore.kernel.org/r/20261010144621.974850-2-linmag7@gmail.com
Signed-off-by: Magnus Lindholm <linmag7@gmail.com>
Diffstat (limited to 'tools/perf/scripts/python/task-analyzer.py')
0 files changed, 0 insertions, 0 deletions
