Messages in this thread | | | Subject | Re: BUG: about flush TLB during unmapping a page in memory subsystem | From | Benjamin Herrenschmidt <> | Date | Fri, 20 Oct 2006 15:54:27 +1000 |
| |
On Fri, 2006-10-20 at 13:10 +0800, yunfeng zhang wrote: > Maybe, the solution is below > > ... > // >>> ptep_clear((__vma)->vm_mm, __address, __ptep); > // >>> flush_tlb_page(__vma, __address); > // >>> __ptep; > ... > > And even so, we also get a pte with present = 0 AND its dirty = 1, an odd pte. > > Remember B dirtied the pte before A executes flush_tlb_page.
It's very much architecture specific. I suppose x86 must have some HW requirements of checking if the PTE is still present atomically when setting the dirty bit but I can't tell for sure :)
On PowerPC, we don't use HW dirty bits, we use SW for that, thus the ptep_get_and_clear will be enough to prevent any further dirty bit to be set.
Ben.
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |