On Thu, Apr 23, 2020 at 09:56:53PM +0800, Zhenyu Ye wrote: > @@ -190,8 +196,8 @@ static inline void flush_tlb_page_nosync(struct vm_area_struct *vma, > unsigned long addr = __TLBI_VADDR(uaddr, ASID(vma->vm_mm)); > > dsb(ishst); > - __tlbi(vale1is, addr); > - __tlbi_user(vale1is, addr); > + __tlbi_level(vale1is, addr, 0); > + __tlbi_user_level(vale1is, addr, 0); > } This one remains with a level 0 throughout the series. Is this intentional? If we can't guarantee the level here, better to use the non-level __tlbi(). -- Catalin