]> www.infradead.org Git - users/jedix/linux-maple.git/commit
um: refactor TLB update handling
authorBenjamin Berg <benjamin.berg@intel.com>
Wed, 3 Jul 2024 13:45:36 +0000 (15:45 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Wed, 3 Jul 2024 15:09:50 +0000 (17:09 +0200)
commitbcf3d957c63d8b6d718b862fea18c5f14ce803e2
tree607887b1ddcbee5522d4066df731ba739bbaa26a
parent573a446fc8ea4ca9be60b1db2091297da48d0a0d
um: refactor TLB update handling

Conceptually, we want the memory mappings to always be up to date and
represent whatever is in the TLB. To ensure that, we need to sync them
over in the userspace case and for the kernel we need to process the
mappings.

The kernel will call flush_tlb_* if page table entries that were valid
before become invalid. Unfortunately, this is not the case if entries
are added.

As such, change both flush_tlb_* and set_ptes to track the memory range
that has to be synchronized. For the kernel, we need to execute a
flush_tlb_kern_* immediately but we can wait for the first page fault in
case of set_ptes. For userspace in contrast we only store that a range
of memory needs to be synced and do so whenever we switch to that
process.

Signed-off-by: Benjamin Berg <benjamin.berg@intel.com>
Link: https://patch.msgid.link/20240703134536.1161108-13-benjamin@sipsolutions.net
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
arch/um/drivers/ubd_kern.c
arch/um/include/asm/mmu.h
arch/um/include/asm/pgtable.h
arch/um/include/asm/tlbflush.h
arch/um/include/shared/skas/skas.h
arch/um/kernel/skas/process.c
arch/um/kernel/tlb.c
arch/um/kernel/trap.c
arch/um/os-Linux/skas/process.c