On Sun, 7 Aug 2005, Richard Purdie wrote: > > > We know the the failure case can be identified by the > > > cmpxchg_fail_flag_update condition being met. Can you provide me with a > > > patch to dump useful debugging information when that occurs? > > Ok, this results in an infinite loop of one message with no change to > the numbers: > > cmpxchg fail mm=c3455ae0 vma=c355517c addr=4025f000 write=2048 > ptep=c2f0597c pmd=c2b79008 entry=88000f7 new=8800077
Ok. So we cannot set the dirty bit. Here is a patch that also prints the pte status immediately before ptep_cmpxchg. I guess this will show that dirty bit is already set. Does the ARM have some hardware capability to set dirty bits? Index: linux-2.6.13-rc4-mm1/mm/memory.c =================================================================== --- linux-2.6.13-rc4-mm1.orig/mm/memory.c 2005-08-05 08:38:10.000000000 -0700 +++ linux-2.6.13-rc4-mm1/mm/memory.c 2005-08-08 09:46:12.000000000 -0700 @@ -2104,6 +2104,8 @@ update_mmu_cache(vma, address, entry); lazy_mmu_prot_update(entry); } else { + printk(KERN_CRIT "cmpxchg fail fault mm=%p vma=%p addr=%lx write=%d ptep=%p pmd=%p entry=%lx new=%lx current=%lx\n", + mm, vma, address, write_access, pte, pmd, pte_val(entry), pte_val(new_entry), *pte); inc_page_state(cmpxchg_fail_flag_update); } - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/