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/

Reply via email to