• Will Deacon's avatar
    arm64: switch_mm: simplify mm and CPU checks · c2775b2e
    Will Deacon authored
    
    
    switch_mm performs some checks to try and avoid entering the ASID
    allocator:
    
      (1) If we're switching to the init_mm (no user mappings), then simply
          set a reserved TTBR0 value with no page table (the zero page)
    
      (2) If prev == next *and* the mm_cpumask indicates that we've run on
          this CPU before, then we can skip the allocator.
    
    However, there is plenty of redundancy here. With the new ASID allocator,
    if prev == next, then we know that our ASID is valid and do not need to
    worry about re-allocation. Consequently, we can drop the mm_cpumask check
    in (2) and move the prev == next check before the init_mm check, since
    if prev == next == init_mm then there's nothing to do.
    Reviewed-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: default avatarWill Deacon <will.deacon@arm.com>
    Signed-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
    c2775b2e
mmu_context.h 3.9 KB