mm: dont call mmu_notifier_invalidate_page during munlock
Subsystems (2)
PATCH 1/1 mm: dont call mmu_notifier_invalidate_page during munlock
try_to_munlock() searches other mlocked vmas, it never unmaps pages. There is no reason for invalidation because ptes are left unchanged.
--- mm/rmap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
mm/rmap.c +1 -1
@@ -1225,7 +1225,7 @@ int try_to_unmap_one(struct page *page, struct vm_area_struct *vma, out_unmap:pte_unmap_unlock (pte, ptl); -if (ret !=SWAP_FAIL ) +if (ret !=SWAP_FAIL &&TTU_ACTION (flags) !=TTU_MUNLOCK )mmu_notifier_invalidate_page (mm, address); out:return ret;
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Andrew Morton
maintainerQuoted 8 lines · On Wed, 28 May 2014 11:59:55 +0400 Konstantin Khlebnikov <[email protected]>…
try_to_munlock()searches other mlocked vmas, it never unmaps pages. There is no reason for invalidation because ptes are left unchanged....
mm/rmap.c int try_to_unmap_one(struct page *page, struct vm_area_struct *vma, · line 1231
Quoted 8 lines
mm/rmap.c +1
-1@@ -1225,7 +1225,7 @@ int try_to_unmap_one(struct page *page, struct vm_area_struct *vma, out_unmap:pte_unmap_unlock (pte, ptl); -if (ret !=SWAP_FAIL ) +if (ret !=SWAP_FAIL &&TTU_ACTION (flags) !=TTU_MUNLOCK )mmu_notifier_invalidate_page (mm, address); out:return ret;
The patch itself looks reasonable but there is no such thing as try_to_munlock(). I rewrote the changelog thusly:
: In its munmap mode, try_to_unmap_one() searches other mlocked vmas, it : never unmaps pages. There is no reason for invalidation because ptes are : left unchanged.
Also, the name try_to_unmap_one() is now pretty inaccurate/incomplete. Perhaps if someone is feeling enthusiastic they might think up a better name for the various try_to_unmap functions and see if we can appropriately document try_to_unmap_one().
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Quoted 11 lines · Andrew Morton
Quoted 9 lines · On Wed, 28 May 2014 11:59:55 +0400 Konstantin Khlebnikov <[email protected]>…
try_to_munlock()searches other mlocked vmas, it never unmaps pages. There is no reason for invalidation because ptes are left unchanged....
mm/rmap.c +0
-0@@ -1225,7 +1225,7 @@ int try_to_unmap_one(struct page *page, struct vm_area_struct *vma,
Quoted 10 lines
mm/rmap.c int try_to_unmap_one(struct page *page, struct vm_area_struct *vma, · line 1231
Quoted 7 lines
mm/rmap.c +1
-1out_unmap:pte_unmap_unlock (pte, ptl); -if (ret !=SWAP_FAIL ) +if (ret !=SWAP_FAIL &&TTU_ACTION (flags) !=TTU_MUNLOCK )mmu_notifier_invalidate_page (mm, address); out:return ret;The patch itself looks reasonable but there is no such thing as
try_to_munlock(). I rewrote the changelog thusly:
Wait, what? I do have function with this name in my sources. It calls rmap_walk with callback try_to_unmap_one and action TTU_MUNLOCK. This is the place where TTU_MUNLOCK is used, I've mentioned it as entry point of this logic.
Quoted 9 lines
: In its munmap mode,
try_to_unmap_one()searches other mlocked vmas, it : never unmaps pages. There is no reason for invalidation because ptes are : left unchanged.Also, the name
try_to_unmap_one()is now pretty inaccurate/incomplete. Perhaps if someone is feeling enthusiastic they might think up a better name for the varioustry_to_unmapfunctions and see if we can appropriately documenttry_to_unmap_one().
I thought about moving mlock part out of try_to_unmap_one() into separate function,
but normal unmap needs this part too...
Anyway I want to make try_to_unmap_one() static, this is internal function now.
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Andrew Morton
maintainerQuoted 24 lines · On Thu, 29 May 2014 11:19:27 +0400 Konstantin Khlebnikov <[email protected]>…
Quoted 11 lines · Andrew Morton
Quoted 9 lines · On Wed, 28 May 2014 11:59:55 +0400 Konstantin Khlebnikov <[email protected]>…
try_to_munlock()searches other mlocked vmas, it never unmaps pages. There is no reason for invalidation because ptes are left unchanged....
mm/rmap.c +0
-0@@ -1225,7 +1225,7 @@ int try_to_unmap_one(struct page *page, struct vm_area_struct *vma,Quoted 10 lines
mm/rmap.c int try_to_unmap_one(struct page *page, struct vm_area_struct *vma, · line 1231
Quoted 7 lines
mm/rmap.c +1
-1out_unmap:pte_unmap_unlock (pte, ptl); -if (ret !=SWAP_FAIL ) +if (ret !=SWAP_FAIL &&TTU_ACTION (flags) !=TTU_MUNLOCK )mmu_notifier_invalidate_page (mm, address); out:return ret;The patch itself looks reasonable but there is no such thing as
try_to_munlock(). I rewrote the changelog thusly:
Quoted 3 lines
Wait, what? I do have function with this name in my sources. It calls
rmap_walkwith callbacktry_to_unmap_oneand actionTTU_MUNLOCK. This is the place whereTTU_MUNLOCKis used, I've mentioned it as entry point of this logic.
Ah OK, I obviously misgrepped.
Quoted 5 lines
Quoted 5 lines
: In its munmap mode,
try_to_unmap_one()searches other mlocked vmas, it : never unmaps pages. There is no reason for invalidation because ptes are : left unchanged.
Quoted 8 lines
Quoted 4 lines
Also, the name
try_to_unmap_one()is now pretty inaccurate/incomplete. Perhaps if someone is feeling enthusiastic they might think up a better name for the varioustry_to_unmapfunctions and see if we can appropriately documenttry_to_unmap_one().I thought about moving mlock part out of
try_to_unmap_one()into separate function,
but normal unmap needs this part too...
try_to_unmap_one() does appear to have enough in common with the munlock operation to justify using common code. But doing so makes the name wrong.
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>