Thread (69 messages) 69 messages, 9 authors, 2011-08-08

Re: [PATCH 1/1] Fixup write permission of TLB on powerpc e500 core

From: Peter Zijlstra <hidden>
Date: 2011-07-15 18:16:54
Also in: lkml

On Fri, 2011-07-15 at 11:18 -0400, Shan Hai wrote:
quoted
quoted
+	vma =3D find_vma(mm, address);
Uhm, find_vma() needs mmap_sem, and futex_atomic_cmpxchg_inatomic() is
most certainly not called with that lock held.
=20
My fault, that will be fixed in the V2 patch.
But you cannot, the function isn't called _atomic_ just for kicks, its
used while holding spinlocks.
quoted
quoted
+	if (likely(vma)) {
+		/* only fixup present page */
+		if (follow_page(vma, address, FOLL_WRITE)) {
+			handle_mm_fault(mm, vma, address, FAULT_FLAG_WRITE);
So how can this toggle your sw dirty/young tracking, that's pretty much
what gup(.write=3D1) does too!
=20
because of the kernel read only permission of the page is transparent
to the follow_page(),  the handle_mm_fault() is not to be activated
in the __get_use_pages(), so the gup(.write=3D1) could not help to fixup
the write permission.
So why do you need the vma? Is it like I wrote earlier that you don't
have spare PTE bits and need the vma flags to see if it may become
writable?

gup(.write=3D1) not triggering this is a serious problem though, not
something you can just paper over. I wouldn't be at all surprised to
find there's more things broken because of that.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help