On Tue, Sep 18, 2018 at 03:10:34PM +0100, Will Deacon wrote: > > + addr = (addr & PMD_MASK) + SZ_1M; > > + __tlb_adjust_range(tlb, addr - PAGE_SIZE, addr + PAGE_SIZE); > > Hmm, I don't think you've got the range correct here. Don't we want > something like: > > __tlb_adjust_range(tlb, addr - PAGE_SIZE, 2 * PAGE_SIZE) > > to ensure that we flush on both sides of the 1M boundary? Argh indeed. I confused {start,size} with {start,end}. Thanks!