David Miller wrote: [Wed Oct 09 2013, 04:03:09PM EDT] > From: Bob Picco <bpicco@xxxxxxxxxx> > Date: Fri, 4 Oct 2013 11:45:55 -0400 > > > The issue appears to be corruption. > > I think I know what the problem is. > > In set_pmd_at() we need to flush two 4MB pages. > > I'll play around with your test case and a potential fix, thanks. I believe you need this too. Otherwise the wrong tsb is computed. arch/sparc/mm/init_64.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/arch/sparc/mm/init_64.c b/arch/sparc/mm/init_64.c index 4d0c99b..807e108 100644 --- a/arch/sparc/mm/init_64.c +++ b/arch/sparc/mm/init_64.c @@ -2722,7 +2722,7 @@ void update_mmu_cache_pmd(struct vm_area_struct *vma, unsigned long addr, spin_lock_irqsave(&mm->context.lock, flags); if (mm->context.tsb_block[MM_TSB_HUGE].tsb != NULL) - __update_mmu_tsb_insert(mm, MM_TSB_HUGE, HPAGE_SHIFT, + __update_mmu_tsb_insert(mm, MM_TSB_HUGE, REAL_HPAGE_SHIFT, addr, pte); spin_unlock_irqrestore(&mm->context.lock, flags); -- To unsubscribe from this list: send the line "unsubscribe sparclinux" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html