All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2] mm: thp: Set the accessed flag for old pages on access fault.
@ 2012-10-02 16:59 ` Will Deacon
  0 siblings, 0 replies; 36+ messages in thread
From: Will Deacon @ 2012-10-02 16:59 UTC (permalink / raw)
  To: linux-mm
  Cc: linux-kernel, linux-arch, akpm, mhocko, kirill, Will Deacon,
	Andrea Arcangeli, Chris Metcalf, Steve Capper

On x86 memory accesses to pages without the ACCESSED flag set result in the
ACCESSED flag being set automatically. With the ARM architecture a page access
fault is raised instead (and it will continue to be raised until the ACCESSED
flag is set for the appropriate PTE/PMD).

For normal memory pages, handle_pte_fault will call pte_mkyoung (effectively
setting the ACCESSED flag). For transparent huge pages, pmd_mkyoung will only
be called for a write fault.

This patch ensures that faults on transparent hugepages which do not result
in a CoW update the access flags for the faulting pmd.

Cc: Andrea Arcangeli <aarcange@redhat.com>
Cc: Chris Metcalf <cmetcalf@tilera.com>
Signed-off-by: Steve Capper <steve.capper@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
---

v2: - Use pmd_trans_huge_lock to guard against splitting pmds
    - Propogate dirty (write) flag to low-level pmd modifier

 include/linux/huge_mm.h |    2 ++
 mm/huge_memory.c        |    8 ++++++++
 mm/memory.c             |    9 ++++++++-
 3 files changed, 18 insertions(+), 1 deletions(-)

diff --git a/include/linux/huge_mm.h b/include/linux/huge_mm.h
index 4c59b11..5eb9b06 100644
--- a/include/linux/huge_mm.h
+++ b/include/linux/huge_mm.h
@@ -8,6 +8,8 @@ extern int do_huge_pmd_anonymous_page(struct mm_struct *mm,
 extern int copy_huge_pmd(struct mm_struct *dst_mm, struct mm_struct *src_mm,
 			 pmd_t *dst_pmd, pmd_t *src_pmd, unsigned long addr,
 			 struct vm_area_struct *vma);
+extern void huge_pmd_set_accessed(struct vm_area_struct *vma,
+				  unsigned long address, pmd_t *pmd, int dirty);
 extern int do_huge_pmd_wp_page(struct mm_struct *mm, struct vm_area_struct *vma,
 			       unsigned long address, pmd_t *pmd,
 			       pmd_t orig_pmd);
diff --git a/mm/huge_memory.c b/mm/huge_memory.c
index d684934..1de3f9b 100644
--- a/mm/huge_memory.c
+++ b/mm/huge_memory.c
@@ -914,6 +914,14 @@ out_free_pages:
 	goto out;
 }
 
+void huge_pmd_set_accessed(struct vm_area_struct *vma, unsigned long address,
+			   pmd_t *pmd, int dirty)
+{
+	pmd_t entry = pmd_mkyoung(*pmd);
+	if (pmdp_set_access_flags(vma, address & HPAGE_PMD_MASK, pmd, entry, dirty))
+		update_mmu_cache(vma, address, pmd);
+}
+
 int do_huge_pmd_wp_page(struct mm_struct *mm, struct vm_area_struct *vma,
 			unsigned long address, pmd_t *pmd, pmd_t orig_pmd)
 {
diff --git a/mm/memory.c b/mm/memory.c
index 5736170..f12f859 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -3524,7 +3524,8 @@ retry:
 
 		barrier();
 		if (pmd_trans_huge(orig_pmd)) {
-			if (flags & FAULT_FLAG_WRITE &&
+			int dirty = flags & FAULT_FLAG_WRITE;
+			if (dirty &&
 			    !pmd_write(orig_pmd) &&
 			    !pmd_trans_splitting(orig_pmd)) {
 				ret = do_huge_pmd_wp_page(mm, vma, address, pmd,
@@ -3537,7 +3538,13 @@ retry:
 				if (unlikely(ret & VM_FAULT_OOM))
 					goto retry;
 				return ret;
+			} else if (pmd_trans_huge_lock(pmd, vma) == 1) {
+				if (likely(pmd_same(*pmd, orig_pmd)))
+					huge_pmd_set_accessed(vma, address, pmd,
+							      dirty);
+				spin_unlock(&mm->page_table_lock);
 			}
+
 			return 0;
 		}
 	}
-- 
1.7.4.1


^ permalink raw reply related	[flat|nested] 36+ messages in thread

* [PATCH v2] mm: thp: Set the accessed flag for old pages on access fault.
@ 2012-10-02 16:59 ` Will Deacon
  0 siblings, 0 replies; 36+ messages in thread
From: Will Deacon @ 2012-10-02 16:59 UTC (permalink / raw)
  To: linux-mm
  Cc: linux-kernel, linux-arch, akpm, mhocko, kirill, Will Deacon,
	Andrea Arcangeli, Chris Metcalf, Steve Capper

On x86 memory accesses to pages without the ACCESSED flag set result in the
ACCESSED flag being set automatically. With the ARM architecture a page access
fault is raised instead (and it will continue to be raised until the ACCESSED
flag is set for the appropriate PTE/PMD).

For normal memory pages, handle_pte_fault will call pte_mkyoung (effectively
setting the ACCESSED flag). For transparent huge pages, pmd_mkyoung will only
be called for a write fault.

This patch ensures that faults on transparent hugepages which do not result
in a CoW update the access flags for the faulting pmd.

Cc: Andrea Arcangeli <aarcange@redhat.com>
Cc: Chris Metcalf <cmetcalf@tilera.com>
Signed-off-by: Steve Capper <steve.capper@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
---

v2: - Use pmd_trans_huge_lock to guard against splitting pmds
    - Propogate dirty (write) flag to low-level pmd modifier

 include/linux/huge_mm.h |    2 ++
 mm/huge_memory.c        |    8 ++++++++
 mm/memory.c             |    9 ++++++++-
 3 files changed, 18 insertions(+), 1 deletions(-)

diff --git a/include/linux/huge_mm.h b/include/linux/huge_mm.h
index 4c59b11..5eb9b06 100644
--- a/include/linux/huge_mm.h
+++ b/include/linux/huge_mm.h
@@ -8,6 +8,8 @@ extern int do_huge_pmd_anonymous_page(struct mm_struct *mm,
 extern int copy_huge_pmd(struct mm_struct *dst_mm, struct mm_struct *src_mm,
 			 pmd_t *dst_pmd, pmd_t *src_pmd, unsigned long addr,
 			 struct vm_area_struct *vma);
+extern void huge_pmd_set_accessed(struct vm_area_struct *vma,
+				  unsigned long address, pmd_t *pmd, int dirty);
 extern int do_huge_pmd_wp_page(struct mm_struct *mm, struct vm_area_struct *vma,
 			       unsigned long address, pmd_t *pmd,
 			       pmd_t orig_pmd);
diff --git a/mm/huge_memory.c b/mm/huge_memory.c
index d684934..1de3f9b 100644
--- a/mm/huge_memory.c
+++ b/mm/huge_memory.c
@@ -914,6 +914,14 @@ out_free_pages:
 	goto out;
 }
 
+void huge_pmd_set_accessed(struct vm_area_struct *vma, unsigned long address,
+			   pmd_t *pmd, int dirty)
+{
+	pmd_t entry = pmd_mkyoung(*pmd);
+	if (pmdp_set_access_flags(vma, address & HPAGE_PMD_MASK, pmd, entry, dirty))
+		update_mmu_cache(vma, address, pmd);
+}
+
 int do_huge_pmd_wp_page(struct mm_struct *mm, struct vm_area_struct *vma,
 			unsigned long address, pmd_t *pmd, pmd_t orig_pmd)
 {
diff --git a/mm/memory.c b/mm/memory.c
index 5736170..f12f859 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -3524,7 +3524,8 @@ retry:
 
 		barrier();
 		if (pmd_trans_huge(orig_pmd)) {
-			if (flags & FAULT_FLAG_WRITE &&
+			int dirty = flags & FAULT_FLAG_WRITE;
+			if (dirty &&
 			    !pmd_write(orig_pmd) &&
 			    !pmd_trans_splitting(orig_pmd)) {
 				ret = do_huge_pmd_wp_page(mm, vma, address, pmd,
@@ -3537,7 +3538,13 @@ retry:
 				if (unlikely(ret & VM_FAULT_OOM))
 					goto retry;
 				return ret;
+			} else if (pmd_trans_huge_lock(pmd, vma) == 1) {
+				if (likely(pmd_same(*pmd, orig_pmd)))
+					huge_pmd_set_accessed(vma, address, pmd,
+							      dirty);
+				spin_unlock(&mm->page_table_lock);
 			}
+
 			return 0;
 		}
 	}
-- 
1.7.4.1

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply related	[flat|nested] 36+ messages in thread

* Re: [PATCH v2] mm: thp: Set the accessed flag for old pages on access fault.
  2012-10-02 16:59 ` Will Deacon
@ 2012-10-02 17:46   ` Andrea Arcangeli
  -1 siblings, 0 replies; 36+ messages in thread
From: Andrea Arcangeli @ 2012-10-02 17:46 UTC (permalink / raw)
  To: Will Deacon
  Cc: linux-mm, linux-kernel, linux-arch, akpm, mhocko, kirill,
	Chris Metcalf, Steve Capper

On Tue, Oct 02, 2012 at 05:59:11PM +0100, Will Deacon wrote:
> On x86 memory accesses to pages without the ACCESSED flag set result in the
> ACCESSED flag being set automatically. With the ARM architecture a page access
> fault is raised instead (and it will continue to be raised until the ACCESSED
> flag is set for the appropriate PTE/PMD).
> 
> For normal memory pages, handle_pte_fault will call pte_mkyoung (effectively
> setting the ACCESSED flag). For transparent huge pages, pmd_mkyoung will only
> be called for a write fault.
> 
> This patch ensures that faults on transparent hugepages which do not result
> in a CoW update the access flags for the faulting pmd.
> 
> Cc: Andrea Arcangeli <aarcange@redhat.com>
> Cc: Chris Metcalf <cmetcalf@tilera.com>
> Signed-off-by: Steve Capper <steve.capper@arm.com>
> Signed-off-by: Will Deacon <will.deacon@arm.com>
> ---
> 
> v2: - Use pmd_trans_huge_lock to guard against splitting pmds
>     - Propogate dirty (write) flag to low-level pmd modifier
> 
>  include/linux/huge_mm.h |    2 ++
>  mm/huge_memory.c        |    8 ++++++++
>  mm/memory.c             |    9 ++++++++-
>  3 files changed, 18 insertions(+), 1 deletions(-)

Reviewed-by: Andrea Arcangeli <aarcange@redhat.com>

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH v2] mm: thp: Set the accessed flag for old pages on access fault.
@ 2012-10-02 17:46   ` Andrea Arcangeli
  0 siblings, 0 replies; 36+ messages in thread
From: Andrea Arcangeli @ 2012-10-02 17:46 UTC (permalink / raw)
  To: Will Deacon
  Cc: linux-mm, linux-kernel, linux-arch, akpm, mhocko, kirill,
	Chris Metcalf, Steve Capper

On Tue, Oct 02, 2012 at 05:59:11PM +0100, Will Deacon wrote:
> On x86 memory accesses to pages without the ACCESSED flag set result in the
> ACCESSED flag being set automatically. With the ARM architecture a page access
> fault is raised instead (and it will continue to be raised until the ACCESSED
> flag is set for the appropriate PTE/PMD).
> 
> For normal memory pages, handle_pte_fault will call pte_mkyoung (effectively
> setting the ACCESSED flag). For transparent huge pages, pmd_mkyoung will only
> be called for a write fault.
> 
> This patch ensures that faults on transparent hugepages which do not result
> in a CoW update the access flags for the faulting pmd.
> 
> Cc: Andrea Arcangeli <aarcange@redhat.com>
> Cc: Chris Metcalf <cmetcalf@tilera.com>
> Signed-off-by: Steve Capper <steve.capper@arm.com>
> Signed-off-by: Will Deacon <will.deacon@arm.com>
> ---
> 
> v2: - Use pmd_trans_huge_lock to guard against splitting pmds
>     - Propogate dirty (write) flag to low-level pmd modifier
> 
>  include/linux/huge_mm.h |    2 ++
>  mm/huge_memory.c        |    8 ++++++++
>  mm/memory.c             |    9 ++++++++-
>  3 files changed, 18 insertions(+), 1 deletions(-)

Reviewed-by: Andrea Arcangeli <aarcange@redhat.com>

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH v2] mm: thp: Set the accessed flag for old pages on access fault.
  2012-10-02 16:59 ` Will Deacon
@ 2012-10-02 22:01   ` Andrew Morton
  -1 siblings, 0 replies; 36+ messages in thread
From: Andrew Morton @ 2012-10-02 22:01 UTC (permalink / raw)
  To: Will Deacon
  Cc: linux-mm, linux-kernel, linux-arch, mhocko, kirill,
	Andrea Arcangeli, Chris Metcalf, Steve Capper

On Tue,  2 Oct 2012 17:59:11 +0100
Will Deacon <will.deacon@arm.com> wrote:

> On x86 memory accesses to pages without the ACCESSED flag set result in the
> ACCESSED flag being set automatically. With the ARM architecture a page access
> fault is raised instead (and it will continue to be raised until the ACCESSED
> flag is set for the appropriate PTE/PMD).
> 
> For normal memory pages, handle_pte_fault will call pte_mkyoung (effectively
> setting the ACCESSED flag). For transparent huge pages, pmd_mkyoung will only
> be called for a write fault.
> 
> This patch ensures that faults on transparent hugepages which do not result
> in a CoW update the access flags for the faulting pmd.

Alas, the code you're altering has changed so much in linux-next that I
am reluctant to force this fix in there myself.  Can you please
redo/retest/resend?  You can do that on 3.7-rc1 if you like, then we
can feed this into -rc2.

> --- a/mm/memory.c
> +++ b/mm/memory.c
> @@ -3524,7 +3524,8 @@ retry:
>  
>  		barrier();
>  		if (pmd_trans_huge(orig_pmd)) {
> -			if (flags & FAULT_FLAG_WRITE &&
> +			int dirty = flags & FAULT_FLAG_WRITE;

`flags' is `unsigned int', so making `dirty' match that is nicer.



^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH v2] mm: thp: Set the accessed flag for old pages on access fault.
@ 2012-10-02 22:01   ` Andrew Morton
  0 siblings, 0 replies; 36+ messages in thread
From: Andrew Morton @ 2012-10-02 22:01 UTC (permalink / raw)
  To: Will Deacon
  Cc: linux-mm, linux-kernel, linux-arch, mhocko, kirill,
	Andrea Arcangeli, Chris Metcalf, Steve Capper

On Tue,  2 Oct 2012 17:59:11 +0100
Will Deacon <will.deacon@arm.com> wrote:

> On x86 memory accesses to pages without the ACCESSED flag set result in the
> ACCESSED flag being set automatically. With the ARM architecture a page access
> fault is raised instead (and it will continue to be raised until the ACCESSED
> flag is set for the appropriate PTE/PMD).
> 
> For normal memory pages, handle_pte_fault will call pte_mkyoung (effectively
> setting the ACCESSED flag). For transparent huge pages, pmd_mkyoung will only
> be called for a write fault.
> 
> This patch ensures that faults on transparent hugepages which do not result
> in a CoW update the access flags for the faulting pmd.

Alas, the code you're altering has changed so much in linux-next that I
am reluctant to force this fix in there myself.  Can you please
redo/retest/resend?  You can do that on 3.7-rc1 if you like, then we
can feed this into -rc2.

> --- a/mm/memory.c
> +++ b/mm/memory.c
> @@ -3524,7 +3524,8 @@ retry:
>  
>  		barrier();
>  		if (pmd_trans_huge(orig_pmd)) {
> -			if (flags & FAULT_FLAG_WRITE &&
> +			int dirty = flags & FAULT_FLAG_WRITE;

`flags' is `unsigned int', so making `dirty' match that is nicer.


--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH v2] mm: thp: Set the accessed flag for old pages on access fault.
  2012-10-02 22:01   ` Andrew Morton
@ 2012-10-03  9:09     ` Will Deacon
  -1 siblings, 0 replies; 36+ messages in thread
From: Will Deacon @ 2012-10-03  9:09 UTC (permalink / raw)
  To: Andrew Morton
  Cc: linux-mm, linux-kernel, linux-arch, mhocko, kirill,
	Andrea Arcangeli, Chris Metcalf, Steve Capper

On Tue, Oct 02, 2012 at 11:01:04PM +0100, Andrew Morton wrote:
> On Tue,  2 Oct 2012 17:59:11 +0100
> Will Deacon <will.deacon@arm.com> wrote:
> 
> > On x86 memory accesses to pages without the ACCESSED flag set result in the
> > ACCESSED flag being set automatically. With the ARM architecture a page access
> > fault is raised instead (and it will continue to be raised until the ACCESSED
> > flag is set for the appropriate PTE/PMD).
> > 
> > For normal memory pages, handle_pte_fault will call pte_mkyoung (effectively
> > setting the ACCESSED flag). For transparent huge pages, pmd_mkyoung will only
> > be called for a write fault.
> > 
> > This patch ensures that faults on transparent hugepages which do not result
> > in a CoW update the access flags for the faulting pmd.
> 
> Alas, the code you're altering has changed so much in linux-next that I
> am reluctant to force this fix in there myself.  Can you please
> redo/retest/resend?  You can do that on 3.7-rc1 if you like, then we
> can feed this into -rc2.

No problem. I'll rebase the entire ARM series at -rc1 prior to posting
anyway, so this can be included in that lot.

> > --- a/mm/memory.c
> > +++ b/mm/memory.c
> > @@ -3524,7 +3524,8 @@ retry:
> >  
> >  		barrier();
> >  		if (pmd_trans_huge(orig_pmd)) {
> > -			if (flags & FAULT_FLAG_WRITE &&
> > +			int dirty = flags & FAULT_FLAG_WRITE;
> 
> `flags' is `unsigned int', so making `dirty' match that is nicer.

I'll fold that in with the above.

Cheers,

Will

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH v2] mm: thp: Set the accessed flag for old pages on access fault.
@ 2012-10-03  9:09     ` Will Deacon
  0 siblings, 0 replies; 36+ messages in thread
From: Will Deacon @ 2012-10-03  9:09 UTC (permalink / raw)
  To: Andrew Morton
  Cc: linux-mm, linux-kernel, linux-arch, mhocko, kirill,
	Andrea Arcangeli, Chris Metcalf, Steve Capper

On Tue, Oct 02, 2012 at 11:01:04PM +0100, Andrew Morton wrote:
> On Tue,  2 Oct 2012 17:59:11 +0100
> Will Deacon <will.deacon@arm.com> wrote:
> 
> > On x86 memory accesses to pages without the ACCESSED flag set result in the
> > ACCESSED flag being set automatically. With the ARM architecture a page access
> > fault is raised instead (and it will continue to be raised until the ACCESSED
> > flag is set for the appropriate PTE/PMD).
> > 
> > For normal memory pages, handle_pte_fault will call pte_mkyoung (effectively
> > setting the ACCESSED flag). For transparent huge pages, pmd_mkyoung will only
> > be called for a write fault.
> > 
> > This patch ensures that faults on transparent hugepages which do not result
> > in a CoW update the access flags for the faulting pmd.
> 
> Alas, the code you're altering has changed so much in linux-next that I
> am reluctant to force this fix in there myself.  Can you please
> redo/retest/resend?  You can do that on 3.7-rc1 if you like, then we
> can feed this into -rc2.

No problem. I'll rebase the entire ARM series at -rc1 prior to posting
anyway, so this can be included in that lot.

> > --- a/mm/memory.c
> > +++ b/mm/memory.c
> > @@ -3524,7 +3524,8 @@ retry:
> >  
> >  		barrier();
> >  		if (pmd_trans_huge(orig_pmd)) {
> > -			if (flags & FAULT_FLAG_WRITE &&
> > +			int dirty = flags & FAULT_FLAG_WRITE;
> 
> `flags' is `unsigned int', so making `dirty' match that is nicer.

I'll fold that in with the above.

Cheers,

Will

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH v2] mm: thp: Set the accessed flag for old pages on access fault.
  2012-10-02 16:59 ` Will Deacon
@ 2012-10-04 22:13   ` Kirill A. Shutemov
  -1 siblings, 0 replies; 36+ messages in thread
From: Kirill A. Shutemov @ 2012-10-04 22:13 UTC (permalink / raw)
  To: Will Deacon
  Cc: linux-mm, linux-kernel, linux-arch, akpm, mhocko,
	Andrea Arcangeli, Chris Metcalf, Steve Capper

On Tue, Oct 02, 2012 at 05:59:11PM +0100, Will Deacon wrote:
> On x86 memory accesses to pages without the ACCESSED flag set result in the
> ACCESSED flag being set automatically. With the ARM architecture a page access
> fault is raised instead (and it will continue to be raised until the ACCESSED
> flag is set for the appropriate PTE/PMD).
> 
> For normal memory pages, handle_pte_fault will call pte_mkyoung (effectively
> setting the ACCESSED flag). For transparent huge pages, pmd_mkyoung will only
> be called for a write fault.
> 
> This patch ensures that faults on transparent hugepages which do not result
> in a CoW update the access flags for the faulting pmd.
> 
> Cc: Andrea Arcangeli <aarcange@redhat.com>
> Cc: Chris Metcalf <cmetcalf@tilera.com>
> Signed-off-by: Steve Capper <steve.capper@arm.com>
> Signed-off-by: Will Deacon <will.deacon@arm.com>

Acked-by: Kirill A. Shutemov <kirill@shutemov.name>

-- 
 Kirill A. Shutemov

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH v2] mm: thp: Set the accessed flag for old pages on access fault.
@ 2012-10-04 22:13   ` Kirill A. Shutemov
  0 siblings, 0 replies; 36+ messages in thread
From: Kirill A. Shutemov @ 2012-10-04 22:13 UTC (permalink / raw)
  To: Will Deacon
  Cc: linux-mm, linux-kernel, linux-arch, akpm, mhocko,
	Andrea Arcangeli, Chris Metcalf, Steve Capper

On Tue, Oct 02, 2012 at 05:59:11PM +0100, Will Deacon wrote:
> On x86 memory accesses to pages without the ACCESSED flag set result in the
> ACCESSED flag being set automatically. With the ARM architecture a page access
> fault is raised instead (and it will continue to be raised until the ACCESSED
> flag is set for the appropriate PTE/PMD).
> 
> For normal memory pages, handle_pte_fault will call pte_mkyoung (effectively
> setting the ACCESSED flag). For transparent huge pages, pmd_mkyoung will only
> be called for a write fault.
> 
> This patch ensures that faults on transparent hugepages which do not result
> in a CoW update the access flags for the faulting pmd.
> 
> Cc: Andrea Arcangeli <aarcange@redhat.com>
> Cc: Chris Metcalf <cmetcalf@tilera.com>
> Signed-off-by: Steve Capper <steve.capper@arm.com>
> Signed-off-by: Will Deacon <will.deacon@arm.com>

Acked-by: Kirill A. Shutemov <kirill@shutemov.name>

-- 
 Kirill A. Shutemov

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH v2] mm: thp: Set the accessed flag for old pages on access fault.
  2012-10-02 22:01   ` Andrew Morton
  (?)
  (?)
@ 2012-10-17 13:01     ` Will Deacon
  -1 siblings, 0 replies; 36+ messages in thread
From: Will Deacon @ 2012-10-17 13:01 UTC (permalink / raw)
  To: Andrew Morton
  Cc: linux-mm, linux-kernel, linux-arch, mhocko, kirill,
	Andrea Arcangeli, Chris Metcalf, Steve Capper

Hi Andrew,

On Tue, Oct 02, 2012 at 11:01:04PM +0100, Andrew Morton wrote:
> On Tue,  2 Oct 2012 17:59:11 +0100
> Will Deacon <will.deacon@arm.com> wrote:
> 
> > On x86 memory accesses to pages without the ACCESSED flag set result in the
> > ACCESSED flag being set automatically. With the ARM architecture a page access
> > fault is raised instead (and it will continue to be raised until the ACCESSED
> > flag is set for the appropriate PTE/PMD).
> > 
> > For normal memory pages, handle_pte_fault will call pte_mkyoung (effectively
> > setting the ACCESSED flag). For transparent huge pages, pmd_mkyoung will only
> > be called for a write fault.
> > 
> > This patch ensures that faults on transparent hugepages which do not result
> > in a CoW update the access flags for the faulting pmd.
> 
> Alas, the code you're altering has changed so much in linux-next that I
> am reluctant to force this fix in there myself.  Can you please
> redo/retest/resend?  You can do that on 3.7-rc1 if you like, then we
> can feed this into -rc2.

Here's the updated patch against -rc1...

Cheers,

Will

--->8

>From 16b73aea010832cd3d6f22ada60ae055937ef6c0 Mon Sep 17 00:00:00 2001
From: Will Deacon <will.deacon@arm.com>
Date: Tue, 2 Oct 2012 11:18:52 +0100
Subject: [PATCH] mm: thp: Set the accessed flag for old pages on access fault.

On x86 memory accesses to pages without the ACCESSED flag set result in the
ACCESSED flag being set automatically. With the ARM architecture a page access
fault is raised instead (and it will continue to be raised until the ACCESSED
flag is set for the appropriate PTE/PMD).

For normal memory pages, handle_pte_fault will call pte_mkyoung (effectively
setting the ACCESSED flag). For transparent huge pages, pmd_mkyoung will only
be called for a write fault.

This patch ensures that faults on transparent hugepages which do not result
in a CoW update the access flags for the faulting pmd.

Cc: Chris Metcalf <cmetcalf@tilera.com>
Acked-by: Kirill A. Shutemov <kirill@shutemov.name>
Reviewed-by: Andrea Arcangeli <aarcange@redhat.com>
Signed-off-by: Steve Capper <steve.capper@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
---
 include/linux/huge_mm.h |    2 ++
 mm/huge_memory.c        |    8 ++++++++
 mm/memory.c             |    9 ++++++++-
 3 files changed, 18 insertions(+), 1 deletions(-)

diff --git a/include/linux/huge_mm.h b/include/linux/huge_mm.h
index b31cb7d..62a0d5a 100644
--- a/include/linux/huge_mm.h
+++ b/include/linux/huge_mm.h
@@ -8,6 +8,8 @@ extern int do_huge_pmd_anonymous_page(struct mm_struct *mm,
 extern int copy_huge_pmd(struct mm_struct *dst_mm, struct mm_struct *src_mm,
 			 pmd_t *dst_pmd, pmd_t *src_pmd, unsigned long addr,
 			 struct vm_area_struct *vma);
+extern void huge_pmd_set_accessed(struct vm_area_struct *vma,
+				  unsigned long address, pmd_t *pmd, int dirty);
 extern int do_huge_pmd_wp_page(struct mm_struct *mm, struct vm_area_struct *vma,
 			       unsigned long address, pmd_t *pmd,
 			       pmd_t orig_pmd);
diff --git a/mm/huge_memory.c b/mm/huge_memory.c
index a863af2..5a7ce24 100644
--- a/mm/huge_memory.c
+++ b/mm/huge_memory.c
@@ -878,6 +878,14 @@ out_free_pages:
 	goto out;
 }
 
+void huge_pmd_set_accessed(struct vm_area_struct *vma, unsigned long address,
+			   pmd_t *pmd, int dirty)
+{
+	pmd_t entry = pmd_mkyoung(*pmd);
+	if (pmdp_set_access_flags(vma, address & HPAGE_PMD_MASK, pmd, entry, dirty))
+		update_mmu_cache(vma, address, pmd);
+}
+
 int do_huge_pmd_wp_page(struct mm_struct *mm, struct vm_area_struct *vma,
 			unsigned long address, pmd_t *pmd, pmd_t orig_pmd)
 {
diff --git a/mm/memory.c b/mm/memory.c
index fb135ba..c55c17c 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -3539,7 +3539,8 @@ retry:
 
 		barrier();
 		if (pmd_trans_huge(orig_pmd)) {
-			if (flags & FAULT_FLAG_WRITE &&
+			unsigned int dirty = flags & FAULT_FLAG_WRITE;
+			if (dirty &&
 			    !pmd_write(orig_pmd) &&
 			    !pmd_trans_splitting(orig_pmd)) {
 				ret = do_huge_pmd_wp_page(mm, vma, address, pmd,
@@ -3552,7 +3553,13 @@ retry:
 				if (unlikely(ret & VM_FAULT_OOM))
 					goto retry;
 				return ret;
+			} else if (pmd_trans_huge_lock(pmd, vma) == 1) {
+				if (likely(pmd_same(*pmd, orig_pmd)))
+					huge_pmd_set_accessed(vma, address, pmd,
+							      dirty);
+				spin_unlock(&mm->page_table_lock);
 			}
+
 			return 0;
 		}
 	}
-- 
1.7.4.1


^ permalink raw reply related	[flat|nested] 36+ messages in thread

* Re: [PATCH v2] mm: thp: Set the accessed flag for old pages on access fault.
@ 2012-10-17 13:01     ` Will Deacon
  0 siblings, 0 replies; 36+ messages in thread
From: Will Deacon @ 2012-10-17 13:01 UTC (permalink / raw)
  To: Andrew Morton
  Cc: linux-mm, linux-kernel, linux-arch, mhocko, kirill,
	Andrea Arcangeli, Chris Metcalf, Steve Capper

Hi Andrew,

On Tue, Oct 02, 2012 at 11:01:04PM +0100, Andrew Morton wrote:
> On Tue,  2 Oct 2012 17:59:11 +0100
> Will Deacon <will.deacon@arm.com> wrote:
> 
> > On x86 memory accesses to pages without the ACCESSED flag set result in the
> > ACCESSED flag being set automatically. With the ARM architecture a page access
> > fault is raised instead (and it will continue to be raised until the ACCESSED
> > flag is set for the appropriate PTE/PMD).
> > 
> > For normal memory pages, handle_pte_fault will call pte_mkyoung (effectively
> > setting the ACCESSED flag). For transparent huge pages, pmd_mkyoung will only
> > be called for a write fault.
> > 
> > This patch ensures that faults on transparent hugepages which do not result
> > in a CoW update the access flags for the faulting pmd.
> 
> Alas, the code you're altering has changed so much in linux-next that I
> am reluctant to force this fix in there myself.  Can you please
> redo/retest/resend?  You can do that on 3.7-rc1 if you like, then we
> can feed this into -rc2.

Here's the updated patch against -rc1...

Cheers,

Will

--->8

From 16b73aea010832cd3d6f22ada60ae055937ef6c0 Mon Sep 17 00:00:00 2001
From: Will Deacon <will.deacon@arm.com>
Date: Tue, 2 Oct 2012 11:18:52 +0100
Subject: [PATCH] mm: thp: Set the accessed flag for old pages on access fault.

On x86 memory accesses to pages without the ACCESSED flag set result in the
ACCESSED flag being set automatically. With the ARM architecture a page access
fault is raised instead (and it will continue to be raised until the ACCESSED
flag is set for the appropriate PTE/PMD).

For normal memory pages, handle_pte_fault will call pte_mkyoung (effectively
setting the ACCESSED flag). For transparent huge pages, pmd_mkyoung will only
be called for a write fault.

This patch ensures that faults on transparent hugepages which do not result
in a CoW update the access flags for the faulting pmd.

Cc: Chris Metcalf <cmetcalf@tilera.com>
Acked-by: Kirill A. Shutemov <kirill@shutemov.name>
Reviewed-by: Andrea Arcangeli <aarcange@redhat.com>
Signed-off-by: Steve Capper <steve.capper@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
---
 include/linux/huge_mm.h |    2 ++
 mm/huge_memory.c        |    8 ++++++++
 mm/memory.c             |    9 ++++++++-
 3 files changed, 18 insertions(+), 1 deletions(-)

diff --git a/include/linux/huge_mm.h b/include/linux/huge_mm.h
index b31cb7d..62a0d5a 100644
--- a/include/linux/huge_mm.h
+++ b/include/linux/huge_mm.h
@@ -8,6 +8,8 @@ extern int do_huge_pmd_anonymous_page(struct mm_struct *mm,
 extern int copy_huge_pmd(struct mm_struct *dst_mm, struct mm_struct *src_mm,
 			 pmd_t *dst_pmd, pmd_t *src_pmd, unsigned long addr,
 			 struct vm_area_struct *vma);
+extern void huge_pmd_set_accessed(struct vm_area_struct *vma,
+				  unsigned long address, pmd_t *pmd, int dirty);
 extern int do_huge_pmd_wp_page(struct mm_struct *mm, struct vm_area_struct *vma,
 			       unsigned long address, pmd_t *pmd,
 			       pmd_t orig_pmd);
diff --git a/mm/huge_memory.c b/mm/huge_memory.c
index a863af2..5a7ce24 100644
--- a/mm/huge_memory.c
+++ b/mm/huge_memory.c
@@ -878,6 +878,14 @@ out_free_pages:
 	goto out;
 }
 
+void huge_pmd_set_accessed(struct vm_area_struct *vma, unsigned long address,
+			   pmd_t *pmd, int dirty)
+{
+	pmd_t entry = pmd_mkyoung(*pmd);
+	if (pmdp_set_access_flags(vma, address & HPAGE_PMD_MASK, pmd, entry, dirty))
+		update_mmu_cache(vma, address, pmd);
+}
+
 int do_huge_pmd_wp_page(struct mm_struct *mm, struct vm_area_struct *vma,
 			unsigned long address, pmd_t *pmd, pmd_t orig_pmd)
 {
diff --git a/mm/memory.c b/mm/memory.c
index fb135ba..c55c17c 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -3539,7 +3539,8 @@ retry:
 
 		barrier();
 		if (pmd_trans_huge(orig_pmd)) {
-			if (flags & FAULT_FLAG_WRITE &&
+			unsigned int dirty = flags & FAULT_FLAG_WRITE;
+			if (dirty &&
 			    !pmd_write(orig_pmd) &&
 			    !pmd_trans_splitting(orig_pmd)) {
 				ret = do_huge_pmd_wp_page(mm, vma, address, pmd,
@@ -3552,7 +3553,13 @@ retry:
 				if (unlikely(ret & VM_FAULT_OOM))
 					goto retry;
 				return ret;
+			} else if (pmd_trans_huge_lock(pmd, vma) == 1) {
+				if (likely(pmd_same(*pmd, orig_pmd)))
+					huge_pmd_set_accessed(vma, address, pmd,
+							      dirty);
+				spin_unlock(&mm->page_table_lock);
 			}
+
 			return 0;
 		}
 	}
-- 
1.7.4.1

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply related	[flat|nested] 36+ messages in thread

* Re: [PATCH v2] mm: thp: Set the accessed flag for old pages on access fault.
@ 2012-10-17 13:01     ` Will Deacon
  0 siblings, 0 replies; 36+ messages in thread
From: Will Deacon @ 2012-10-17 13:01 UTC (permalink / raw)
  To: Andrew Morton
  Cc: linux-mm, linux-kernel, linux-arch, mhocko, kirill,
	Andrea Arcangeli, Chris Metcalf, Steve Capper

Hi Andrew,

On Tue, Oct 02, 2012 at 11:01:04PM +0100, Andrew Morton wrote:
> On Tue,  2 Oct 2012 17:59:11 +0100
> Will Deacon <will.deacon@arm.com> wrote:
> 
> > On x86 memory accesses to pages without the ACCESSED flag set result in the
> > ACCESSED flag being set automatically. With the ARM architecture a page access
> > fault is raised instead (and it will continue to be raised until the ACCESSED
> > flag is set for the appropriate PTE/PMD).
> > 
> > For normal memory pages, handle_pte_fault will call pte_mkyoung (effectively
> > setting the ACCESSED flag). For transparent huge pages, pmd_mkyoung will only
> > be called for a write fault.
> > 
> > This patch ensures that faults on transparent hugepages which do not result
> > in a CoW update the access flags for the faulting pmd.
> 
> Alas, the code you're altering has changed so much in linux-next that I
> am reluctant to force this fix in there myself.  Can you please
> redo/retest/resend?  You can do that on 3.7-rc1 if you like, then we
> can feed this into -rc2.

Here's the updated patch against -rc1...

Cheers,

Will

--->8

From 16b73aea010832cd3d6f22ada60ae055937ef6c0 Mon Sep 17 00:00:00 2001
From: Will Deacon <will.deacon@arm.com>
Date: Tue, 2 Oct 2012 11:18:52 +0100
Subject: [PATCH] mm: thp: Set the accessed flag for old pages on access fault.

On x86 memory accesses to pages without the ACCESSED flag set result in the
ACCESSED flag being set automatically. With the ARM architecture a page access
fault is raised instead (and it will continue to be raised until the ACCESSED
flag is set for the appropriate PTE/PMD).

For normal memory pages, handle_pte_fault will call pte_mkyoung (effectively
setting the ACCESSED flag). For transparent huge pages, pmd_mkyoung will only
be called for a write fault.

This patch ensures that faults on transparent hugepages which do not result
in a CoW update the access flags for the faulting pmd.

Cc: Chris Metcalf <cmetcalf@tilera.com>
Acked-by: Kirill A. Shutemov <kirill@shutemov.name>
Reviewed-by: Andrea Arcangeli <aarcange@redhat.com>
Signed-off-by: Steve Capper <steve.capper@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
---
 include/linux/huge_mm.h |    2 ++
 mm/huge_memory.c        |    8 ++++++++
 mm/memory.c             |    9 ++++++++-
 3 files changed, 18 insertions(+), 1 deletions(-)

diff --git a/include/linux/huge_mm.h b/include/linux/huge_mm.h
index b31cb7d..62a0d5a 100644
--- a/include/linux/huge_mm.h
+++ b/include/linux/huge_mm.h
@@ -8,6 +8,8 @@ extern int do_huge_pmd_anonymous_page(struct mm_struct *mm,
 extern int copy_huge_pmd(struct mm_struct *dst_mm, struct mm_struct *src_mm,
 			 pmd_t *dst_pmd, pmd_t *src_pmd, unsigned long addr,
 			 struct vm_area_struct *vma);
+extern void huge_pmd_set_accessed(struct vm_area_struct *vma,
+				  unsigned long address, pmd_t *pmd, int dirty);
 extern int do_huge_pmd_wp_page(struct mm_struct *mm, struct vm_area_struct *vma,
 			       unsigned long address, pmd_t *pmd,
 			       pmd_t orig_pmd);
diff --git a/mm/huge_memory.c b/mm/huge_memory.c
index a863af2..5a7ce24 100644
--- a/mm/huge_memory.c
+++ b/mm/huge_memory.c
@@ -878,6 +878,14 @@ out_free_pages:
 	goto out;
 }
 
+void huge_pmd_set_accessed(struct vm_area_struct *vma, unsigned long address,
+			   pmd_t *pmd, int dirty)
+{
+	pmd_t entry = pmd_mkyoung(*pmd);
+	if (pmdp_set_access_flags(vma, address & HPAGE_PMD_MASK, pmd, entry, dirty))
+		update_mmu_cache(vma, address, pmd);
+}
+
 int do_huge_pmd_wp_page(struct mm_struct *mm, struct vm_area_struct *vma,
 			unsigned long address, pmd_t *pmd, pmd_t orig_pmd)
 {
diff --git a/mm/memory.c b/mm/memory.c
index fb135ba..c55c17c 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -3539,7 +3539,8 @@ retry:
 
 		barrier();
 		if (pmd_trans_huge(orig_pmd)) {
-			if (flags & FAULT_FLAG_WRITE &&
+			unsigned int dirty = flags & FAULT_FLAG_WRITE;
+			if (dirty &&
 			    !pmd_write(orig_pmd) &&
 			    !pmd_trans_splitting(orig_pmd)) {
 				ret = do_huge_pmd_wp_page(mm, vma, address, pmd,
@@ -3552,7 +3553,13 @@ retry:
 				if (unlikely(ret & VM_FAULT_OOM))
 					goto retry;
 				return ret;
+			} else if (pmd_trans_huge_lock(pmd, vma) == 1) {
+				if (likely(pmd_same(*pmd, orig_pmd)))
+					huge_pmd_set_accessed(vma, address, pmd,
+							      dirty);
+				spin_unlock(&mm->page_table_lock);
 			}
+
 			return 0;
 		}
 	}
-- 
1.7.4.1


^ permalink raw reply related	[flat|nested] 36+ messages in thread

* Re: [PATCH v2] mm: thp: Set the accessed flag for old pages on access fault.
@ 2012-10-17 13:01     ` Will Deacon
  0 siblings, 0 replies; 36+ messages in thread
From: Will Deacon @ 2012-10-17 13:01 UTC (permalink / raw)
  To: Andrew Morton
  Cc: linux-mm, linux-kernel, linux-arch, mhocko, kirill,
	Andrea Arcangeli, Chris Metcalf, Steve Capper

Hi Andrew,

On Tue, Oct 02, 2012 at 11:01:04PM +0100, Andrew Morton wrote:
> On Tue,  2 Oct 2012 17:59:11 +0100
> Will Deacon <will.deacon@arm.com> wrote:
> 
> > On x86 memory accesses to pages without the ACCESSED flag set result in the
> > ACCESSED flag being set automatically. With the ARM architecture a page access
> > fault is raised instead (and it will continue to be raised until the ACCESSED
> > flag is set for the appropriate PTE/PMD).
> > 
> > For normal memory pages, handle_pte_fault will call pte_mkyoung (effectively
> > setting the ACCESSED flag). For transparent huge pages, pmd_mkyoung will only
> > be called for a write fault.
> > 
> > This patch ensures that faults on transparent hugepages which do not result
> > in a CoW update the access flags for the faulting pmd.
> 
> Alas, the code you're altering has changed so much in linux-next that I
> am reluctant to force this fix in there myself.  Can you please
> redo/retest/resend?  You can do that on 3.7-rc1 if you like, then we
> can feed this into -rc2.

Here's the updated patch against -rc1...

Cheers,

Will

--->8

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH v2] mm: thp: Set the accessed flag for old pages on access fault.
  2012-10-17 13:01     ` Will Deacon
@ 2012-10-17 15:26       ` David Miller
  -1 siblings, 0 replies; 36+ messages in thread
From: David Miller @ 2012-10-17 15:26 UTC (permalink / raw)
  To: will.deacon
  Cc: akpm, linux-mm, linux-kernel, linux-arch, mhocko, kirill,
	aarcange, cmetcalf, Steve.Capper

From: Will Deacon <will.deacon@arm.com>
Date: Wed, 17 Oct 2012 14:01:25 +0100

> +		update_mmu_cache(vma, address, pmd);

This won't build, use update_mmu_cache_pmd().

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH v2] mm: thp: Set the accessed flag for old pages on access fault.
@ 2012-10-17 15:26       ` David Miller
  0 siblings, 0 replies; 36+ messages in thread
From: David Miller @ 2012-10-17 15:26 UTC (permalink / raw)
  To: will.deacon
  Cc: akpm, linux-mm, linux-kernel, linux-arch, mhocko, kirill,
	aarcange, cmetcalf, Steve.Capper

From: Will Deacon <will.deacon@arm.com>
Date: Wed, 17 Oct 2012 14:01:25 +0100

> +		update_mmu_cache(vma, address, pmd);

This won't build, use update_mmu_cache_pmd().

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH v2] mm: thp: Set the accessed flag for old pages on access fault.
  2012-10-17 15:26       ` David Miller
  (?)
  (?)
@ 2012-10-17 15:54         ` Will Deacon
  -1 siblings, 0 replies; 36+ messages in thread
From: Will Deacon @ 2012-10-17 15:54 UTC (permalink / raw)
  To: David Miller
  Cc: akpm, linux-mm, linux-kernel, linux-arch, mhocko, kirill,
	aarcange, cmetcalf, Steve Capper

On Wed, Oct 17, 2012 at 04:26:20PM +0100, David Miller wrote:
> From: Will Deacon <will.deacon@arm.com>
> Date: Wed, 17 Oct 2012 14:01:25 +0100
> 
> > +		update_mmu_cache(vma, address, pmd);
> 
> This won't build, use update_mmu_cache_pmd().

Good catch. They're both empty macros on ARM, so the typechecker didn't spot
it. Updated patch below.

Cheers,

Will

--->8

>From a548127ac12c14c178d4d817fa454baec9043d89 Mon Sep 17 00:00:00 2001
From: Will Deacon <will.deacon@arm.com>
Date: Tue, 2 Oct 2012 11:18:52 +0100
Subject: [PATCH] mm: thp: Set the accessed flag for old pages on access fault.

On x86 memory accesses to pages without the ACCESSED flag set result in the
ACCESSED flag being set automatically. With the ARM architecture a page access
fault is raised instead (and it will continue to be raised until the ACCESSED
flag is set for the appropriate PTE/PMD).

For normal memory pages, handle_pte_fault will call pte_mkyoung (effectively
setting the ACCESSED flag). For transparent huge pages, pmd_mkyoung will only
be called for a write fault.

This patch ensures that faults on transparent hugepages which do not result
in a CoW update the access flags for the faulting pmd.

Cc: Chris Metcalf <cmetcalf@tilera.com>
Acked-by: Kirill A. Shutemov <kirill@shutemov.name>
Reviewed-by: Andrea Arcangeli <aarcange@redhat.com>
Signed-off-by: Steve Capper <steve.capper@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
---
 include/linux/huge_mm.h |    2 ++
 mm/huge_memory.c        |    8 ++++++++
 mm/memory.c             |    9 ++++++++-
 3 files changed, 18 insertions(+), 1 deletions(-)

diff --git a/include/linux/huge_mm.h b/include/linux/huge_mm.h
index b31cb7d..62a0d5a 100644
--- a/include/linux/huge_mm.h
+++ b/include/linux/huge_mm.h
@@ -8,6 +8,8 @@ extern int do_huge_pmd_anonymous_page(struct mm_struct *mm,
 extern int copy_huge_pmd(struct mm_struct *dst_mm, struct mm_struct *src_mm,
 			 pmd_t *dst_pmd, pmd_t *src_pmd, unsigned long addr,
 			 struct vm_area_struct *vma);
+extern void huge_pmd_set_accessed(struct vm_area_struct *vma,
+				  unsigned long address, pmd_t *pmd, int dirty);
 extern int do_huge_pmd_wp_page(struct mm_struct *mm, struct vm_area_struct *vma,
 			       unsigned long address, pmd_t *pmd,
 			       pmd_t orig_pmd);
diff --git a/mm/huge_memory.c b/mm/huge_memory.c
index a863af2..d9aa402 100644
--- a/mm/huge_memory.c
+++ b/mm/huge_memory.c
@@ -878,6 +878,14 @@ out_free_pages:
 	goto out;
 }
 
+void huge_pmd_set_accessed(struct vm_area_struct *vma, unsigned long address,
+			   pmd_t *pmd, int dirty)
+{
+	pmd_t entry = pmd_mkyoung(*pmd);
+	if (pmdp_set_access_flags(vma, address & HPAGE_PMD_MASK, pmd, entry, dirty))
+		update_mmu_cache_pmd(vma, address, pmd);
+}
+
 int do_huge_pmd_wp_page(struct mm_struct *mm, struct vm_area_struct *vma,
 			unsigned long address, pmd_t *pmd, pmd_t orig_pmd)
 {
diff --git a/mm/memory.c b/mm/memory.c
index fb135ba..c55c17c 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -3539,7 +3539,8 @@ retry:
 
 		barrier();
 		if (pmd_trans_huge(orig_pmd)) {
-			if (flags & FAULT_FLAG_WRITE &&
+			unsigned int dirty = flags & FAULT_FLAG_WRITE;
+			if (dirty &&
 			    !pmd_write(orig_pmd) &&
 			    !pmd_trans_splitting(orig_pmd)) {
 				ret = do_huge_pmd_wp_page(mm, vma, address, pmd,
@@ -3552,7 +3553,13 @@ retry:
 				if (unlikely(ret & VM_FAULT_OOM))
 					goto retry;
 				return ret;
+			} else if (pmd_trans_huge_lock(pmd, vma) == 1) {
+				if (likely(pmd_same(*pmd, orig_pmd)))
+					huge_pmd_set_accessed(vma, address, pmd,
+							      dirty);
+				spin_unlock(&mm->page_table_lock);
 			}
+
 			return 0;
 		}
 	}
-- 
1.7.4.1


^ permalink raw reply related	[flat|nested] 36+ messages in thread

* Re: [PATCH v2] mm: thp: Set the accessed flag for old pages on access fault.
@ 2012-10-17 15:54         ` Will Deacon
  0 siblings, 0 replies; 36+ messages in thread
From: Will Deacon @ 2012-10-17 15:54 UTC (permalink / raw)
  To: David Miller
  Cc: akpm, linux-mm, linux-kernel, linux-arch, mhocko, kirill,
	aarcange, cmetcalf, Steve Capper

On Wed, Oct 17, 2012 at 04:26:20PM +0100, David Miller wrote:
> From: Will Deacon <will.deacon@arm.com>
> Date: Wed, 17 Oct 2012 14:01:25 +0100
> 
> > +		update_mmu_cache(vma, address, pmd);
> 
> This won't build, use update_mmu_cache_pmd().

Good catch. They're both empty macros on ARM, so the typechecker didn't spot
it. Updated patch below.

Cheers,

Will

--->8

From a548127ac12c14c178d4d817fa454baec9043d89 Mon Sep 17 00:00:00 2001
From: Will Deacon <will.deacon@arm.com>
Date: Tue, 2 Oct 2012 11:18:52 +0100
Subject: [PATCH] mm: thp: Set the accessed flag for old pages on access fault.

On x86 memory accesses to pages without the ACCESSED flag set result in the
ACCESSED flag being set automatically. With the ARM architecture a page access
fault is raised instead (and it will continue to be raised until the ACCESSED
flag is set for the appropriate PTE/PMD).

For normal memory pages, handle_pte_fault will call pte_mkyoung (effectively
setting the ACCESSED flag). For transparent huge pages, pmd_mkyoung will only
be called for a write fault.

This patch ensures that faults on transparent hugepages which do not result
in a CoW update the access flags for the faulting pmd.

Cc: Chris Metcalf <cmetcalf@tilera.com>
Acked-by: Kirill A. Shutemov <kirill@shutemov.name>
Reviewed-by: Andrea Arcangeli <aarcange@redhat.com>
Signed-off-by: Steve Capper <steve.capper@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
---
 include/linux/huge_mm.h |    2 ++
 mm/huge_memory.c        |    8 ++++++++
 mm/memory.c             |    9 ++++++++-
 3 files changed, 18 insertions(+), 1 deletions(-)

diff --git a/include/linux/huge_mm.h b/include/linux/huge_mm.h
index b31cb7d..62a0d5a 100644
--- a/include/linux/huge_mm.h
+++ b/include/linux/huge_mm.h
@@ -8,6 +8,8 @@ extern int do_huge_pmd_anonymous_page(struct mm_struct *mm,
 extern int copy_huge_pmd(struct mm_struct *dst_mm, struct mm_struct *src_mm,
 			 pmd_t *dst_pmd, pmd_t *src_pmd, unsigned long addr,
 			 struct vm_area_struct *vma);
+extern void huge_pmd_set_accessed(struct vm_area_struct *vma,
+				  unsigned long address, pmd_t *pmd, int dirty);
 extern int do_huge_pmd_wp_page(struct mm_struct *mm, struct vm_area_struct *vma,
 			       unsigned long address, pmd_t *pmd,
 			       pmd_t orig_pmd);
diff --git a/mm/huge_memory.c b/mm/huge_memory.c
index a863af2..d9aa402 100644
--- a/mm/huge_memory.c
+++ b/mm/huge_memory.c
@@ -878,6 +878,14 @@ out_free_pages:
 	goto out;
 }
 
+void huge_pmd_set_accessed(struct vm_area_struct *vma, unsigned long address,
+			   pmd_t *pmd, int dirty)
+{
+	pmd_t entry = pmd_mkyoung(*pmd);
+	if (pmdp_set_access_flags(vma, address & HPAGE_PMD_MASK, pmd, entry, dirty))
+		update_mmu_cache_pmd(vma, address, pmd);
+}
+
 int do_huge_pmd_wp_page(struct mm_struct *mm, struct vm_area_struct *vma,
 			unsigned long address, pmd_t *pmd, pmd_t orig_pmd)
 {
diff --git a/mm/memory.c b/mm/memory.c
index fb135ba..c55c17c 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -3539,7 +3539,8 @@ retry:
 
 		barrier();
 		if (pmd_trans_huge(orig_pmd)) {
-			if (flags & FAULT_FLAG_WRITE &&
+			unsigned int dirty = flags & FAULT_FLAG_WRITE;
+			if (dirty &&
 			    !pmd_write(orig_pmd) &&
 			    !pmd_trans_splitting(orig_pmd)) {
 				ret = do_huge_pmd_wp_page(mm, vma, address, pmd,
@@ -3552,7 +3553,13 @@ retry:
 				if (unlikely(ret & VM_FAULT_OOM))
 					goto retry;
 				return ret;
+			} else if (pmd_trans_huge_lock(pmd, vma) == 1) {
+				if (likely(pmd_same(*pmd, orig_pmd)))
+					huge_pmd_set_accessed(vma, address, pmd,
+							      dirty);
+				spin_unlock(&mm->page_table_lock);
 			}
+
 			return 0;
 		}
 	}
-- 
1.7.4.1

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply related	[flat|nested] 36+ messages in thread

* Re: [PATCH v2] mm: thp: Set the accessed flag for old pages on access fault.
@ 2012-10-17 15:54         ` Will Deacon
  0 siblings, 0 replies; 36+ messages in thread
From: Will Deacon @ 2012-10-17 15:54 UTC (permalink / raw)
  To: David Miller
  Cc: akpm, linux-mm, linux-kernel, linux-arch, mhocko, kirill,
	aarcange, cmetcalf, Steve Capper

On Wed, Oct 17, 2012 at 04:26:20PM +0100, David Miller wrote:
> From: Will Deacon <will.deacon@arm.com>
> Date: Wed, 17 Oct 2012 14:01:25 +0100
> 
> > +		update_mmu_cache(vma, address, pmd);
> 
> This won't build, use update_mmu_cache_pmd().

Good catch. They're both empty macros on ARM, so the typechecker didn't spot
it. Updated patch below.

Cheers,

Will

--->8

From a548127ac12c14c178d4d817fa454baec9043d89 Mon Sep 17 00:00:00 2001
From: Will Deacon <will.deacon@arm.com>
Date: Tue, 2 Oct 2012 11:18:52 +0100
Subject: [PATCH] mm: thp: Set the accessed flag for old pages on access fault.

On x86 memory accesses to pages without the ACCESSED flag set result in the
ACCESSED flag being set automatically. With the ARM architecture a page access
fault is raised instead (and it will continue to be raised until the ACCESSED
flag is set for the appropriate PTE/PMD).

For normal memory pages, handle_pte_fault will call pte_mkyoung (effectively
setting the ACCESSED flag). For transparent huge pages, pmd_mkyoung will only
be called for a write fault.

This patch ensures that faults on transparent hugepages which do not result
in a CoW update the access flags for the faulting pmd.

Cc: Chris Metcalf <cmetcalf@tilera.com>
Acked-by: Kirill A. Shutemov <kirill@shutemov.name>
Reviewed-by: Andrea Arcangeli <aarcange@redhat.com>
Signed-off-by: Steve Capper <steve.capper@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
---
 include/linux/huge_mm.h |    2 ++
 mm/huge_memory.c        |    8 ++++++++
 mm/memory.c             |    9 ++++++++-
 3 files changed, 18 insertions(+), 1 deletions(-)

diff --git a/include/linux/huge_mm.h b/include/linux/huge_mm.h
index b31cb7d..62a0d5a 100644
--- a/include/linux/huge_mm.h
+++ b/include/linux/huge_mm.h
@@ -8,6 +8,8 @@ extern int do_huge_pmd_anonymous_page(struct mm_struct *mm,
 extern int copy_huge_pmd(struct mm_struct *dst_mm, struct mm_struct *src_mm,
 			 pmd_t *dst_pmd, pmd_t *src_pmd, unsigned long addr,
 			 struct vm_area_struct *vma);
+extern void huge_pmd_set_accessed(struct vm_area_struct *vma,
+				  unsigned long address, pmd_t *pmd, int dirty);
 extern int do_huge_pmd_wp_page(struct mm_struct *mm, struct vm_area_struct *vma,
 			       unsigned long address, pmd_t *pmd,
 			       pmd_t orig_pmd);
diff --git a/mm/huge_memory.c b/mm/huge_memory.c
index a863af2..d9aa402 100644
--- a/mm/huge_memory.c
+++ b/mm/huge_memory.c
@@ -878,6 +878,14 @@ out_free_pages:
 	goto out;
 }
 
+void huge_pmd_set_accessed(struct vm_area_struct *vma, unsigned long address,
+			   pmd_t *pmd, int dirty)
+{
+	pmd_t entry = pmd_mkyoung(*pmd);
+	if (pmdp_set_access_flags(vma, address & HPAGE_PMD_MASK, pmd, entry, dirty))
+		update_mmu_cache_pmd(vma, address, pmd);
+}
+
 int do_huge_pmd_wp_page(struct mm_struct *mm, struct vm_area_struct *vma,
 			unsigned long address, pmd_t *pmd, pmd_t orig_pmd)
 {
diff --git a/mm/memory.c b/mm/memory.c
index fb135ba..c55c17c 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -3539,7 +3539,8 @@ retry:
 
 		barrier();
 		if (pmd_trans_huge(orig_pmd)) {
-			if (flags & FAULT_FLAG_WRITE &&
+			unsigned int dirty = flags & FAULT_FLAG_WRITE;
+			if (dirty &&
 			    !pmd_write(orig_pmd) &&
 			    !pmd_trans_splitting(orig_pmd)) {
 				ret = do_huge_pmd_wp_page(mm, vma, address, pmd,
@@ -3552,7 +3553,13 @@ retry:
 				if (unlikely(ret & VM_FAULT_OOM))
 					goto retry;
 				return ret;
+			} else if (pmd_trans_huge_lock(pmd, vma) == 1) {
+				if (likely(pmd_same(*pmd, orig_pmd)))
+					huge_pmd_set_accessed(vma, address, pmd,
+							      dirty);
+				spin_unlock(&mm->page_table_lock);
 			}
+
 			return 0;
 		}
 	}
-- 
1.7.4.1


^ permalink raw reply related	[flat|nested] 36+ messages in thread

* Re: [PATCH v2] mm: thp: Set the accessed flag for old pages on access fault.
@ 2012-10-17 15:54         ` Will Deacon
  0 siblings, 0 replies; 36+ messages in thread
From: Will Deacon @ 2012-10-17 15:54 UTC (permalink / raw)
  To: David Miller
  Cc: akpm, linux-mm, linux-kernel, linux-arch, mhocko, kirill,
	aarcange, cmetcalf, Steve Capper

On Wed, Oct 17, 2012 at 04:26:20PM +0100, David Miller wrote:
> From: Will Deacon <will.deacon@arm.com>
> Date: Wed, 17 Oct 2012 14:01:25 +0100
> 
> > +		update_mmu_cache(vma, address, pmd);
> 
> This won't build, use update_mmu_cache_pmd().

Good catch. They're both empty macros on ARM, so the typechecker didn't spot
it. Updated patch below.

Cheers,

Will

--->8

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH v2] mm: thp: Set the accessed flag for old pages on access fault.
  2012-10-17 15:54         ` Will Deacon
@ 2012-10-18 22:05           ` Andrew Morton
  -1 siblings, 0 replies; 36+ messages in thread
From: Andrew Morton @ 2012-10-18 22:05 UTC (permalink / raw)
  To: Will Deacon
  Cc: David Miller, linux-mm, linux-kernel, linux-arch, mhocko, kirill,
	aarcange, cmetcalf, Steve Capper

On Wed, 17 Oct 2012 16:54:02 +0100
Will Deacon <will.deacon@arm.com> wrote:

> On x86 memory accesses to pages without the ACCESSED flag set result in the
> ACCESSED flag being set automatically. With the ARM architecture a page access
> fault is raised instead (and it will continue to be raised until the ACCESSED
> flag is set for the appropriate PTE/PMD).
> 
> For normal memory pages, handle_pte_fault will call pte_mkyoung (effectively
> setting the ACCESSED flag). For transparent huge pages, pmd_mkyoung will only
> be called for a write fault.
> 
> This patch ensures that faults on transparent hugepages which do not result
> in a CoW update the access flags for the faulting pmd.

Confused.  Where is the arm implementation of update_mmu_cache_pmd()?

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH v2] mm: thp: Set the accessed flag for old pages on access fault.
@ 2012-10-18 22:05           ` Andrew Morton
  0 siblings, 0 replies; 36+ messages in thread
From: Andrew Morton @ 2012-10-18 22:05 UTC (permalink / raw)
  To: Will Deacon
  Cc: David Miller, linux-mm, linux-kernel, linux-arch, mhocko, kirill,
	aarcange, cmetcalf, Steve Capper

On Wed, 17 Oct 2012 16:54:02 +0100
Will Deacon <will.deacon@arm.com> wrote:

> On x86 memory accesses to pages without the ACCESSED flag set result in the
> ACCESSED flag being set automatically. With the ARM architecture a page access
> fault is raised instead (and it will continue to be raised until the ACCESSED
> flag is set for the appropriate PTE/PMD).
> 
> For normal memory pages, handle_pte_fault will call pte_mkyoung (effectively
> setting the ACCESSED flag). For transparent huge pages, pmd_mkyoung will only
> be called for a write fault.
> 
> This patch ensures that faults on transparent hugepages which do not result
> in a CoW update the access flags for the faulting pmd.

Confused.  Where is the arm implementation of update_mmu_cache_pmd()?

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH v2] mm: thp: Set the accessed flag for old pages on access fault.
  2012-10-18 22:05           ` Andrew Morton
@ 2012-10-19  9:10             ` Will Deacon
  -1 siblings, 0 replies; 36+ messages in thread
From: Will Deacon @ 2012-10-19  9:10 UTC (permalink / raw)
  To: Andrew Morton
  Cc: David Miller, linux-mm, linux-kernel, linux-arch, mhocko, kirill,
	aarcange, cmetcalf, Steve Capper

On Thu, Oct 18, 2012 at 11:05:02PM +0100, Andrew Morton wrote:
> On Wed, 17 Oct 2012 16:54:02 +0100
> Will Deacon <will.deacon@arm.com> wrote:
> 
> > On x86 memory accesses to pages without the ACCESSED flag set result in the
> > ACCESSED flag being set automatically. With the ARM architecture a page access
> > fault is raised instead (and it will continue to be raised until the ACCESSED
> > flag is set for the appropriate PTE/PMD).
> > 
> > For normal memory pages, handle_pte_fault will call pte_mkyoung (effectively
> > setting the ACCESSED flag). For transparent huge pages, pmd_mkyoung will only
> > be called for a write fault.
> > 
> > This patch ensures that faults on transparent hugepages which do not result
> > in a CoW update the access flags for the faulting pmd.
> 
> Confused.  Where is the arm implementation of update_mmu_cache_pmd()?

Right at the end of this patch, which was posted to the ARM list yesterday:

  http://lists.infradead.org/pipermail/linux-arm-kernel/2012-October/126387.html

Cheers,

Will

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH v2] mm: thp: Set the accessed flag for old pages on access fault.
@ 2012-10-19  9:10             ` Will Deacon
  0 siblings, 0 replies; 36+ messages in thread
From: Will Deacon @ 2012-10-19  9:10 UTC (permalink / raw)
  To: Andrew Morton
  Cc: David Miller, linux-mm, linux-kernel, linux-arch, mhocko, kirill,
	aarcange, cmetcalf, Steve Capper

On Thu, Oct 18, 2012 at 11:05:02PM +0100, Andrew Morton wrote:
> On Wed, 17 Oct 2012 16:54:02 +0100
> Will Deacon <will.deacon@arm.com> wrote:
> 
> > On x86 memory accesses to pages without the ACCESSED flag set result in the
> > ACCESSED flag being set automatically. With the ARM architecture a page access
> > fault is raised instead (and it will continue to be raised until the ACCESSED
> > flag is set for the appropriate PTE/PMD).
> > 
> > For normal memory pages, handle_pte_fault will call pte_mkyoung (effectively
> > setting the ACCESSED flag). For transparent huge pages, pmd_mkyoung will only
> > be called for a write fault.
> > 
> > This patch ensures that faults on transparent hugepages which do not result
> > in a CoW update the access flags for the faulting pmd.
> 
> Confused.  Where is the arm implementation of update_mmu_cache_pmd()?

Right at the end of this patch, which was posted to the ARM list yesterday:

  http://lists.infradead.org/pipermail/linux-arm-kernel/2012-October/126387.html

Cheers,

Will

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH v2] mm: thp: Set the accessed flag for old pages on access fault.
  2012-10-19  9:10             ` Will Deacon
@ 2012-10-19 18:49               ` Andrew Morton
  -1 siblings, 0 replies; 36+ messages in thread
From: Andrew Morton @ 2012-10-19 18:49 UTC (permalink / raw)
  To: Will Deacon
  Cc: David Miller, linux-mm, linux-kernel, linux-arch, mhocko, kirill,
	aarcange, cmetcalf, Steve Capper

On Fri, 19 Oct 2012 10:10:16 +0100
Will Deacon <will.deacon@arm.com> wrote:

> On Thu, Oct 18, 2012 at 11:05:02PM +0100, Andrew Morton wrote:
> > On Wed, 17 Oct 2012 16:54:02 +0100
> > Will Deacon <will.deacon@arm.com> wrote:
> > 
> > > On x86 memory accesses to pages without the ACCESSED flag set result in the
> > > ACCESSED flag being set automatically. With the ARM architecture a page access
> > > fault is raised instead (and it will continue to be raised until the ACCESSED
> > > flag is set for the appropriate PTE/PMD).
> > > 
> > > For normal memory pages, handle_pte_fault will call pte_mkyoung (effectively
> > > setting the ACCESSED flag). For transparent huge pages, pmd_mkyoung will only
> > > be called for a write fault.
> > > 
> > > This patch ensures that faults on transparent hugepages which do not result
> > > in a CoW update the access flags for the faulting pmd.
> > 
> > Confused.  Where is the arm implementation of update_mmu_cache_pmd()?
> 
> Right at the end of this patch, which was posted to the ARM list yesterday:
> 
>   http://lists.infradead.org/pipermail/linux-arm-kernel/2012-October/126387.html

I received and then merged a patch which won't compile!

Ho hum.  I'll drop
mm-thp-set-the-accessed-flag-for-old-pages-on-access-fault.patch and
shall assume that you'll sort things out at the appropriate time.


^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH v2] mm: thp: Set the accessed flag for old pages on access fault.
@ 2012-10-19 18:49               ` Andrew Morton
  0 siblings, 0 replies; 36+ messages in thread
From: Andrew Morton @ 2012-10-19 18:49 UTC (permalink / raw)
  To: Will Deacon
  Cc: David Miller, linux-mm, linux-kernel, linux-arch, mhocko, kirill,
	aarcange, cmetcalf, Steve Capper

On Fri, 19 Oct 2012 10:10:16 +0100
Will Deacon <will.deacon@arm.com> wrote:

> On Thu, Oct 18, 2012 at 11:05:02PM +0100, Andrew Morton wrote:
> > On Wed, 17 Oct 2012 16:54:02 +0100
> > Will Deacon <will.deacon@arm.com> wrote:
> > 
> > > On x86 memory accesses to pages without the ACCESSED flag set result in the
> > > ACCESSED flag being set automatically. With the ARM architecture a page access
> > > fault is raised instead (and it will continue to be raised until the ACCESSED
> > > flag is set for the appropriate PTE/PMD).
> > > 
> > > For normal memory pages, handle_pte_fault will call pte_mkyoung (effectively
> > > setting the ACCESSED flag). For transparent huge pages, pmd_mkyoung will only
> > > be called for a write fault.
> > > 
> > > This patch ensures that faults on transparent hugepages which do not result
> > > in a CoW update the access flags for the faulting pmd.
> > 
> > Confused.  Where is the arm implementation of update_mmu_cache_pmd()?
> 
> Right at the end of this patch, which was posted to the ARM list yesterday:
> 
>   http://lists.infradead.org/pipermail/linux-arm-kernel/2012-October/126387.html

I received and then merged a patch which won't compile!

Ho hum.  I'll drop
mm-thp-set-the-accessed-flag-for-old-pages-on-access-fault.patch and
shall assume that you'll sort things out at the appropriate time.

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH v2] mm: thp: Set the accessed flag for old pages on access fault.
  2012-10-19 18:49               ` Andrew Morton
@ 2012-10-22 10:35                 ` Will Deacon
  -1 siblings, 0 replies; 36+ messages in thread
From: Will Deacon @ 2012-10-22 10:35 UTC (permalink / raw)
  To: Andrew Morton
  Cc: David Miller, linux-mm, linux-kernel, linux-arch, mhocko, kirill,
	aarcange, cmetcalf, Steve Capper

On Fri, Oct 19, 2012 at 07:49:55PM +0100, Andrew Morton wrote:
> On Fri, 19 Oct 2012 10:10:16 +0100
> Will Deacon <will.deacon@arm.com> wrote:
> 
> > On Thu, Oct 18, 2012 at 11:05:02PM +0100, Andrew Morton wrote:
> > > On Wed, 17 Oct 2012 16:54:02 +0100
> > > Will Deacon <will.deacon@arm.com> wrote:
> > > 
> > > > On x86 memory accesses to pages without the ACCESSED flag set result in the
> > > > ACCESSED flag being set automatically. With the ARM architecture a page access
> > > > fault is raised instead (and it will continue to be raised until the ACCESSED
> > > > flag is set for the appropriate PTE/PMD).
> > > > 
> > > > For normal memory pages, handle_pte_fault will call pte_mkyoung (effectively
> > > > setting the ACCESSED flag). For transparent huge pages, pmd_mkyoung will only
> > > > be called for a write fault.
> > > > 
> > > > This patch ensures that faults on transparent hugepages which do not result
> > > > in a CoW update the access flags for the faulting pmd.
> > > 
> > > Confused.  Where is the arm implementation of update_mmu_cache_pmd()?
> > 
> > Right at the end of this patch, which was posted to the ARM list yesterday:
> > 
> >   http://lists.infradead.org/pipermail/linux-arm-kernel/2012-October/126387.html
> 
> I received and then merged a patch which won't compile!

Eek, that certainly wasn't intentional and it's compiling fine for me on
-rc1 and -rc2 for both ARM (no THP) and x86 (with and without THP).

Please can you send the build failure?

> Ho hum.  I'll drop
> mm-thp-set-the-accessed-flag-for-old-pages-on-access-fault.patch and
> shall assume that you'll sort things out at the appropriate time.

Happy to sort it out once I work out what's going wrong!

Cheers,

Will

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH v2] mm: thp: Set the accessed flag for old pages on access fault.
@ 2012-10-22 10:35                 ` Will Deacon
  0 siblings, 0 replies; 36+ messages in thread
From: Will Deacon @ 2012-10-22 10:35 UTC (permalink / raw)
  To: Andrew Morton
  Cc: David Miller, linux-mm, linux-kernel, linux-arch, mhocko, kirill,
	aarcange, cmetcalf, Steve Capper

On Fri, Oct 19, 2012 at 07:49:55PM +0100, Andrew Morton wrote:
> On Fri, 19 Oct 2012 10:10:16 +0100
> Will Deacon <will.deacon@arm.com> wrote:
> 
> > On Thu, Oct 18, 2012 at 11:05:02PM +0100, Andrew Morton wrote:
> > > On Wed, 17 Oct 2012 16:54:02 +0100
> > > Will Deacon <will.deacon@arm.com> wrote:
> > > 
> > > > On x86 memory accesses to pages without the ACCESSED flag set result in the
> > > > ACCESSED flag being set automatically. With the ARM architecture a page access
> > > > fault is raised instead (and it will continue to be raised until the ACCESSED
> > > > flag is set for the appropriate PTE/PMD).
> > > > 
> > > > For normal memory pages, handle_pte_fault will call pte_mkyoung (effectively
> > > > setting the ACCESSED flag). For transparent huge pages, pmd_mkyoung will only
> > > > be called for a write fault.
> > > > 
> > > > This patch ensures that faults on transparent hugepages which do not result
> > > > in a CoW update the access flags for the faulting pmd.
> > > 
> > > Confused.  Where is the arm implementation of update_mmu_cache_pmd()?
> > 
> > Right at the end of this patch, which was posted to the ARM list yesterday:
> > 
> >   http://lists.infradead.org/pipermail/linux-arm-kernel/2012-October/126387.html
> 
> I received and then merged a patch which won't compile!

Eek, that certainly wasn't intentional and it's compiling fine for me on
-rc1 and -rc2 for both ARM (no THP) and x86 (with and without THP).

Please can you send the build failure?

> Ho hum.  I'll drop
> mm-thp-set-the-accessed-flag-for-old-pages-on-access-fault.patch and
> shall assume that you'll sort things out at the appropriate time.

Happy to sort it out once I work out what's going wrong!

Cheers,

Will

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH v2] mm: thp: Set the accessed flag for old pages on access fault.
  2012-10-22 10:35                 ` Will Deacon
@ 2012-10-22 18:18                   ` Andrew Morton
  -1 siblings, 0 replies; 36+ messages in thread
From: Andrew Morton @ 2012-10-22 18:18 UTC (permalink / raw)
  To: Will Deacon
  Cc: David Miller, linux-mm, linux-kernel, linux-arch, mhocko, kirill,
	aarcange, cmetcalf, Steve Capper

On Mon, 22 Oct 2012 11:35:03 +0100
Will Deacon <will.deacon@arm.com> wrote:

> On Fri, Oct 19, 2012 at 07:49:55PM +0100, Andrew Morton wrote:
> > On Fri, 19 Oct 2012 10:10:16 +0100
> > Will Deacon <will.deacon@arm.com> wrote:
> > 
> > > On Thu, Oct 18, 2012 at 11:05:02PM +0100, Andrew Morton wrote:
> > > > On Wed, 17 Oct 2012 16:54:02 +0100
> > > > Will Deacon <will.deacon@arm.com> wrote:
> > > > 
> > > > > On x86 memory accesses to pages without the ACCESSED flag set result in the
> > > > > ACCESSED flag being set automatically. With the ARM architecture a page access
> > > > > fault is raised instead (and it will continue to be raised until the ACCESSED
> > > > > flag is set for the appropriate PTE/PMD).
> > > > > 
> > > > > For normal memory pages, handle_pte_fault will call pte_mkyoung (effectively
> > > > > setting the ACCESSED flag). For transparent huge pages, pmd_mkyoung will only
> > > > > be called for a write fault.
> > > > > 
> > > > > This patch ensures that faults on transparent hugepages which do not result
> > > > > in a CoW update the access flags for the faulting pmd.
> > > > 
> > > > Confused.  Where is the arm implementation of update_mmu_cache_pmd()?
> > > 
> > > Right at the end of this patch, which was posted to the ARM list yesterday:
> > > 
> > >   http://lists.infradead.org/pipermail/linux-arm-kernel/2012-October/126387.html
> > 
> > I received and then merged a patch which won't compile!
> 
> Eek, that certainly wasn't intentional and it's compiling fine for me on
> -rc1 and -rc2 for both ARM (no THP) and x86 (with and without THP).
> 
> Please can you send the build failure?
> 
> > Ho hum.  I'll drop
> > mm-thp-set-the-accessed-flag-for-old-pages-on-access-fault.patch and
> > shall assume that you'll sort things out at the appropriate time.
> 
> Happy to sort it out once I work out what's going wrong!

The patch "ARM: mm: Transparent huge page support for LPAE systems" is
not present in linux-next, so this patch ("mm: thp: Set the accessed
flag for old pages on access fault") will not compile?

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH v2] mm: thp: Set the accessed flag for old pages on access fault.
@ 2012-10-22 18:18                   ` Andrew Morton
  0 siblings, 0 replies; 36+ messages in thread
From: Andrew Morton @ 2012-10-22 18:18 UTC (permalink / raw)
  To: Will Deacon
  Cc: David Miller, linux-mm, linux-kernel, linux-arch, mhocko, kirill,
	aarcange, cmetcalf, Steve Capper

On Mon, 22 Oct 2012 11:35:03 +0100
Will Deacon <will.deacon@arm.com> wrote:

> On Fri, Oct 19, 2012 at 07:49:55PM +0100, Andrew Morton wrote:
> > On Fri, 19 Oct 2012 10:10:16 +0100
> > Will Deacon <will.deacon@arm.com> wrote:
> > 
> > > On Thu, Oct 18, 2012 at 11:05:02PM +0100, Andrew Morton wrote:
> > > > On Wed, 17 Oct 2012 16:54:02 +0100
> > > > Will Deacon <will.deacon@arm.com> wrote:
> > > > 
> > > > > On x86 memory accesses to pages without the ACCESSED flag set result in the
> > > > > ACCESSED flag being set automatically. With the ARM architecture a page access
> > > > > fault is raised instead (and it will continue to be raised until the ACCESSED
> > > > > flag is set for the appropriate PTE/PMD).
> > > > > 
> > > > > For normal memory pages, handle_pte_fault will call pte_mkyoung (effectively
> > > > > setting the ACCESSED flag). For transparent huge pages, pmd_mkyoung will only
> > > > > be called for a write fault.
> > > > > 
> > > > > This patch ensures that faults on transparent hugepages which do not result
> > > > > in a CoW update the access flags for the faulting pmd.
> > > > 
> > > > Confused.  Where is the arm implementation of update_mmu_cache_pmd()?
> > > 
> > > Right at the end of this patch, which was posted to the ARM list yesterday:
> > > 
> > >   http://lists.infradead.org/pipermail/linux-arm-kernel/2012-October/126387.html
> > 
> > I received and then merged a patch which won't compile!
> 
> Eek, that certainly wasn't intentional and it's compiling fine for me on
> -rc1 and -rc2 for both ARM (no THP) and x86 (with and without THP).
> 
> Please can you send the build failure?
> 
> > Ho hum.  I'll drop
> > mm-thp-set-the-accessed-flag-for-old-pages-on-access-fault.patch and
> > shall assume that you'll sort things out at the appropriate time.
> 
> Happy to sort it out once I work out what's going wrong!

The patch "ARM: mm: Transparent huge page support for LPAE systems" is
not present in linux-next, so this patch ("mm: thp: Set the accessed
flag for old pages on access fault") will not compile?

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH v2] mm: thp: Set the accessed flag for old pages on access fault.
  2012-10-22 18:18                   ` Andrew Morton
@ 2012-10-23 10:11                     ` Will Deacon
  -1 siblings, 0 replies; 36+ messages in thread
From: Will Deacon @ 2012-10-23 10:11 UTC (permalink / raw)
  To: Andrew Morton
  Cc: David Miller, linux-mm, linux-kernel, linux-arch, mhocko, kirill,
	aarcange, cmetcalf, Steve Capper

On Mon, Oct 22, 2012 at 07:18:43PM +0100, Andrew Morton wrote:
> On Mon, 22 Oct 2012 11:35:03 +0100
> Will Deacon <will.deacon@arm.com> wrote:
> 
> > On Fri, Oct 19, 2012 at 07:49:55PM +0100, Andrew Morton wrote:
> > > Ho hum.  I'll drop
> > > mm-thp-set-the-accessed-flag-for-old-pages-on-access-fault.patch and
> > > shall assume that you'll sort things out at the appropriate time.
> > 
> > Happy to sort it out once I work out what's going wrong!
> 
> The patch "ARM: mm: Transparent huge page support for LPAE systems" is
> not present in linux-next, so this patch ("mm: thp: Set the accessed
> flag for old pages on access fault") will not compile?

This patch ("mm: thp: Set the accessed flag for old pages on access fault")
doesn't depend on "ARM: mm: Transparent huge page support for LPAE systems"
because currently transparent huge pages cannot be enabled for ARM in
mainline (or linux-next). update_mmu_cache_pmd is only called from
mm/huge_memory.c, which depends on CONFIG_TRANSPARENT_HUGEPAGE=y.

As for the new huge_pmd_set_accessed function... there's a similar situation
for the do_huge_pmd_wp_page function: it's called from mm/memory.c but is
only defined in mm/huge_memory.c. Looks like the compiler optimises those
calls away because pmd_trans_huge and friends constant-fold to 0.

Will

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH v2] mm: thp: Set the accessed flag for old pages on access fault.
@ 2012-10-23 10:11                     ` Will Deacon
  0 siblings, 0 replies; 36+ messages in thread
From: Will Deacon @ 2012-10-23 10:11 UTC (permalink / raw)
  To: Andrew Morton
  Cc: David Miller, linux-mm, linux-kernel, linux-arch, mhocko, kirill,
	aarcange, cmetcalf, Steve Capper

On Mon, Oct 22, 2012 at 07:18:43PM +0100, Andrew Morton wrote:
> On Mon, 22 Oct 2012 11:35:03 +0100
> Will Deacon <will.deacon@arm.com> wrote:
> 
> > On Fri, Oct 19, 2012 at 07:49:55PM +0100, Andrew Morton wrote:
> > > Ho hum.  I'll drop
> > > mm-thp-set-the-accessed-flag-for-old-pages-on-access-fault.patch and
> > > shall assume that you'll sort things out at the appropriate time.
> > 
> > Happy to sort it out once I work out what's going wrong!
> 
> The patch "ARM: mm: Transparent huge page support for LPAE systems" is
> not present in linux-next, so this patch ("mm: thp: Set the accessed
> flag for old pages on access fault") will not compile?

This patch ("mm: thp: Set the accessed flag for old pages on access fault")
doesn't depend on "ARM: mm: Transparent huge page support for LPAE systems"
because currently transparent huge pages cannot be enabled for ARM in
mainline (or linux-next). update_mmu_cache_pmd is only called from
mm/huge_memory.c, which depends on CONFIG_TRANSPARENT_HUGEPAGE=y.

As for the new huge_pmd_set_accessed function... there's a similar situation
for the do_huge_pmd_wp_page function: it's called from mm/memory.c but is
only defined in mm/huge_memory.c. Looks like the compiler optimises those
calls away because pmd_trans_huge and friends constant-fold to 0.

Will

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH v2] mm: thp: Set the accessed flag for old pages on access fault.
  2012-10-23 10:11                     ` Will Deacon
@ 2012-10-23 21:50                       ` Andrew Morton
  -1 siblings, 0 replies; 36+ messages in thread
From: Andrew Morton @ 2012-10-23 21:50 UTC (permalink / raw)
  To: Will Deacon
  Cc: David Miller, linux-mm, linux-kernel, linux-arch, mhocko, kirill,
	aarcange, cmetcalf, Steve Capper

On Tue, 23 Oct 2012 11:11:25 +0100
Will Deacon <will.deacon@arm.com> wrote:

> On Mon, Oct 22, 2012 at 07:18:43PM +0100, Andrew Morton wrote:
> > On Mon, 22 Oct 2012 11:35:03 +0100
> > Will Deacon <will.deacon@arm.com> wrote:
> > 
> > > On Fri, Oct 19, 2012 at 07:49:55PM +0100, Andrew Morton wrote:
> > > > Ho hum.  I'll drop
> > > > mm-thp-set-the-accessed-flag-for-old-pages-on-access-fault.patch and
> > > > shall assume that you'll sort things out at the appropriate time.
> > > 
> > > Happy to sort it out once I work out what's going wrong!
> > 
> > The patch "ARM: mm: Transparent huge page support for LPAE systems" is
> > not present in linux-next, so this patch ("mm: thp: Set the accessed
> > flag for old pages on access fault") will not compile?
> 
> This patch ("mm: thp: Set the accessed flag for old pages on access fault")
> doesn't depend on "ARM: mm: Transparent huge page support for LPAE systems"
> because currently transparent huge pages cannot be enabled for ARM in
> mainline (or linux-next). update_mmu_cache_pmd is only called from
> mm/huge_memory.c, which depends on CONFIG_TRANSPARENT_HUGEPAGE=y.
> 
> As for the new huge_pmd_set_accessed function... there's a similar situation
> for the do_huge_pmd_wp_page function: it's called from mm/memory.c but is
> only defined in mm/huge_memory.c. Looks like the compiler optimises those
> calls away because pmd_trans_huge and friends constant-fold to 0.

Ah, OK.

"mm: thp: Set the accessed flag for old pages on access fault" clashes
in a non-trivial way with linux-next changes, due to the sched-numa
changes (sigh).  This is a problem for me, because I either need to
significantly alter your patch (so it isn't applicable to mainline) or
I need to stage your patch ahead of linux-next, then fix up linux-next
every day after I've pulled and re-merged it.

I'm unsure what your timing is.  Can you carry "mm: thp: Set the
accessed flag for old pages on access fault" until either the whole
patchset is ready to merge or until the sched-numa situation has been
cleared up?

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH v2] mm: thp: Set the accessed flag for old pages on access fault.
@ 2012-10-23 21:50                       ` Andrew Morton
  0 siblings, 0 replies; 36+ messages in thread
From: Andrew Morton @ 2012-10-23 21:50 UTC (permalink / raw)
  To: Will Deacon
  Cc: David Miller, linux-mm, linux-kernel, linux-arch, mhocko, kirill,
	aarcange, cmetcalf, Steve Capper

On Tue, 23 Oct 2012 11:11:25 +0100
Will Deacon <will.deacon@arm.com> wrote:

> On Mon, Oct 22, 2012 at 07:18:43PM +0100, Andrew Morton wrote:
> > On Mon, 22 Oct 2012 11:35:03 +0100
> > Will Deacon <will.deacon@arm.com> wrote:
> > 
> > > On Fri, Oct 19, 2012 at 07:49:55PM +0100, Andrew Morton wrote:
> > > > Ho hum.  I'll drop
> > > > mm-thp-set-the-accessed-flag-for-old-pages-on-access-fault.patch and
> > > > shall assume that you'll sort things out at the appropriate time.
> > > 
> > > Happy to sort it out once I work out what's going wrong!
> > 
> > The patch "ARM: mm: Transparent huge page support for LPAE systems" is
> > not present in linux-next, so this patch ("mm: thp: Set the accessed
> > flag for old pages on access fault") will not compile?
> 
> This patch ("mm: thp: Set the accessed flag for old pages on access fault")
> doesn't depend on "ARM: mm: Transparent huge page support for LPAE systems"
> because currently transparent huge pages cannot be enabled for ARM in
> mainline (or linux-next). update_mmu_cache_pmd is only called from
> mm/huge_memory.c, which depends on CONFIG_TRANSPARENT_HUGEPAGE=y.
> 
> As for the new huge_pmd_set_accessed function... there's a similar situation
> for the do_huge_pmd_wp_page function: it's called from mm/memory.c but is
> only defined in mm/huge_memory.c. Looks like the compiler optimises those
> calls away because pmd_trans_huge and friends constant-fold to 0.

Ah, OK.

"mm: thp: Set the accessed flag for old pages on access fault" clashes
in a non-trivial way with linux-next changes, due to the sched-numa
changes (sigh).  This is a problem for me, because I either need to
significantly alter your patch (so it isn't applicable to mainline) or
I need to stage your patch ahead of linux-next, then fix up linux-next
every day after I've pulled and re-merged it.

I'm unsure what your timing is.  Can you carry "mm: thp: Set the
accessed flag for old pages on access fault" until either the whole
patchset is ready to merge or until the sched-numa situation has been
cleared up?

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH v2] mm: thp: Set the accessed flag for old pages on access fault.
  2012-10-23 21:50                       ` Andrew Morton
@ 2012-10-24  9:35                         ` Will Deacon
  -1 siblings, 0 replies; 36+ messages in thread
From: Will Deacon @ 2012-10-24  9:35 UTC (permalink / raw)
  To: Andrew Morton
  Cc: David Miller, linux-mm, linux-kernel, linux-arch, mhocko, kirill,
	aarcange, cmetcalf, Steve Capper

On Tue, Oct 23, 2012 at 10:50:27PM +0100, Andrew Morton wrote:
> On Tue, 23 Oct 2012 11:11:25 +0100
> Will Deacon <will.deacon@arm.com> wrote:
> > This patch ("mm: thp: Set the accessed flag for old pages on access fault")
> > doesn't depend on "ARM: mm: Transparent huge page support for LPAE systems"
> > because currently transparent huge pages cannot be enabled for ARM in
> > mainline (or linux-next). update_mmu_cache_pmd is only called from
> > mm/huge_memory.c, which depends on CONFIG_TRANSPARENT_HUGEPAGE=y.
> > 
> > As for the new huge_pmd_set_accessed function... there's a similar situation
> > for the do_huge_pmd_wp_page function: it's called from mm/memory.c but is
> > only defined in mm/huge_memory.c. Looks like the compiler optimises those
> > calls away because pmd_trans_huge and friends constant-fold to 0.
> 
> Ah, OK.
> 
> "mm: thp: Set the accessed flag for old pages on access fault" clashes
> in a non-trivial way with linux-next changes, due to the sched-numa
> changes (sigh).  This is a problem for me, because I either need to
> significantly alter your patch (so it isn't applicable to mainline) or
> I need to stage your patch ahead of linux-next, then fix up linux-next
> every day after I've pulled and re-merged it.
> 
> I'm unsure what your timing is.  Can you carry "mm: thp: Set the
> accessed flag for old pages on access fault" until either the whole
> patchset is ready to merge or until the sched-numa situation has been
> cleared up?

I think DaveM may want this patch for sparc, so I'll keep it separate from
the ARM patches and have a go at reworking it when the sched-numa stuff has
settled down. Is that all in linux-next btw? If so, I can use that as a
starting point to dealing with the mess.

Cheers,

Will

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH v2] mm: thp: Set the accessed flag for old pages on access fault.
@ 2012-10-24  9:35                         ` Will Deacon
  0 siblings, 0 replies; 36+ messages in thread
From: Will Deacon @ 2012-10-24  9:35 UTC (permalink / raw)
  To: Andrew Morton
  Cc: David Miller, linux-mm, linux-kernel, linux-arch, mhocko, kirill,
	aarcange, cmetcalf, Steve Capper

On Tue, Oct 23, 2012 at 10:50:27PM +0100, Andrew Morton wrote:
> On Tue, 23 Oct 2012 11:11:25 +0100
> Will Deacon <will.deacon@arm.com> wrote:
> > This patch ("mm: thp: Set the accessed flag for old pages on access fault")
> > doesn't depend on "ARM: mm: Transparent huge page support for LPAE systems"
> > because currently transparent huge pages cannot be enabled for ARM in
> > mainline (or linux-next). update_mmu_cache_pmd is only called from
> > mm/huge_memory.c, which depends on CONFIG_TRANSPARENT_HUGEPAGE=y.
> > 
> > As for the new huge_pmd_set_accessed function... there's a similar situation
> > for the do_huge_pmd_wp_page function: it's called from mm/memory.c but is
> > only defined in mm/huge_memory.c. Looks like the compiler optimises those
> > calls away because pmd_trans_huge and friends constant-fold to 0.
> 
> Ah, OK.
> 
> "mm: thp: Set the accessed flag for old pages on access fault" clashes
> in a non-trivial way with linux-next changes, due to the sched-numa
> changes (sigh).  This is a problem for me, because I either need to
> significantly alter your patch (so it isn't applicable to mainline) or
> I need to stage your patch ahead of linux-next, then fix up linux-next
> every day after I've pulled and re-merged it.
> 
> I'm unsure what your timing is.  Can you carry "mm: thp: Set the
> accessed flag for old pages on access fault" until either the whole
> patchset is ready to merge or until the sched-numa situation has been
> cleared up?

I think DaveM may want this patch for sparc, so I'll keep it separate from
the ARM patches and have a go at reworking it when the sched-numa stuff has
settled down. Is that all in linux-next btw? If so, I can use that as a
starting point to dealing with the mess.

Cheers,

Will

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 36+ messages in thread

end of thread, other threads:[~2012-10-24  9:35 UTC | newest]

Thread overview: 36+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-10-02 16:59 [PATCH v2] mm: thp: Set the accessed flag for old pages on access fault Will Deacon
2012-10-02 16:59 ` Will Deacon
2012-10-02 17:46 ` Andrea Arcangeli
2012-10-02 17:46   ` Andrea Arcangeli
2012-10-02 22:01 ` Andrew Morton
2012-10-02 22:01   ` Andrew Morton
2012-10-03  9:09   ` Will Deacon
2012-10-03  9:09     ` Will Deacon
2012-10-17 13:01   ` Will Deacon
2012-10-17 13:01     ` Will Deacon
2012-10-17 13:01     ` Will Deacon
2012-10-17 13:01     ` Will Deacon
2012-10-17 15:26     ` David Miller
2012-10-17 15:26       ` David Miller
2012-10-17 15:54       ` Will Deacon
2012-10-17 15:54         ` Will Deacon
2012-10-17 15:54         ` Will Deacon
2012-10-17 15:54         ` Will Deacon
2012-10-18 22:05         ` Andrew Morton
2012-10-18 22:05           ` Andrew Morton
2012-10-19  9:10           ` Will Deacon
2012-10-19  9:10             ` Will Deacon
2012-10-19 18:49             ` Andrew Morton
2012-10-19 18:49               ` Andrew Morton
2012-10-22 10:35               ` Will Deacon
2012-10-22 10:35                 ` Will Deacon
2012-10-22 18:18                 ` Andrew Morton
2012-10-22 18:18                   ` Andrew Morton
2012-10-23 10:11                   ` Will Deacon
2012-10-23 10:11                     ` Will Deacon
2012-10-23 21:50                     ` Andrew Morton
2012-10-23 21:50                       ` Andrew Morton
2012-10-24  9:35                       ` Will Deacon
2012-10-24  9:35                         ` Will Deacon
2012-10-04 22:13 ` Kirill A. Shutemov
2012-10-04 22:13   ` Kirill A. Shutemov

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.