• Benjamin Berg's avatar
    um: refactor TLB update handling · bcf3d957
    Benjamin Berg authored
    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: default avatarBenjamin Berg <benjamin.berg@intel.com>
    Link: https://patch.msgid.link/20240703134536.1161108-13-benjamin@sipsolutions.netSigned-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
    bcf3d957
tlb.c 5.36 KB