pt->nr_lx_pages[lvl]++;
#endif /* CONFIG_PAGING_STATS */
- if (PT_Lx_PTE_PRESENT(orig_pte, lvl))
+ if (PT_Lx_PTE_PRESENT(orig_pte, lvl) && pt == pg_active_pt)
ukarch_tlb_flush_entry(vaddr);
NEXT_PTE:
if (unlikely(rc))
return rc;
- if (vaddr != __VADDR_ANY)
+ if (vaddr != __VADDR_ANY && pt == pg_active_pt)
ukarch_tlb_flush_entry(vaddr);
#ifdef CONFIG_PAGING_STATS
if (unlikely(rc))
return rc;
- if (vaddr != __VADDR_ANY)
+ if (vaddr != __VADDR_ANY && pt == pg_active_pt)
ukarch_tlb_flush_entry(vaddr);
pg_pt_free(pt, pt_vaddr_cache[plvl], plvl);
} while (1);
- if (vaddr == __VADDR_ANY)
+ if (vaddr == __VADDR_ANY && pt == pg_active_pt)
ukarch_tlb_flush();
return 0;
if (unlikely(rc))
return rc;
- if (vaddr != __VADDR_ANY)
+ if (vaddr != __VADDR_ANY && pt == pg_active_pt)
ukarch_tlb_flush_entry(vaddr);
}
} while (1);
- if (vaddr == __VADDR_ANY)
+ if (vaddr == __VADDR_ANY && pt == pg_active_pt)
ukarch_tlb_flush();
return 0;