Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1248674 > unrolled thread
| Started by | Laurent Dufour <ldufour@linux.vnet.ibm.com> |
|---|---|
| First post | 2015-10-16 14:10 +0200 |
| Last post | 2015-10-17 14:10 +0200 |
| Articles | 9 — 4 participants |
Back to article view | Back to linux.kernel
[PATCH 0/3] mm/powerpc: enabling memory soft dirty tracking Laurent Dufour <ldufour@linux.vnet.ibm.com> - 2015-10-16 14:10 +0200
[PATCH 1/3] mm: clearing pte in clear_soft_dirty() Laurent Dufour <ldufour@linux.vnet.ibm.com> - 2015-10-16 14:10 +0200
Re: [PATCH 1/3] mm: clearing pte in clear_soft_dirty() Benjamin Herrenschmidt <benh@kernel.crashing.org> - 2015-10-16 17:30 +0200
Re: [PATCH 1/3] mm: clearing pte in clear_soft_dirty() "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com> - 2015-10-17 14:20 +0200
[PATCH 2/3] mm: clear_soft_dirty_pmd requires THP Laurent Dufour <ldufour@linux.vnet.ibm.com> - 2015-10-16 14:10 +0200
Re: [PATCH 2/3] mm: clear_soft_dirty_pmd requires THP "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com> - 2015-10-17 14:20 +0200
Re: [PATCH 0/3] mm/powerpc: enabling memory soft dirty tracking Andrew Morton <akpm@linux-foundation.org> - 2015-10-16 23:20 +0200
Re: [PATCH 0/3] mm/powerpc: enabling memory soft dirty tracking Benjamin Herrenschmidt <benh@kernel.crashing.org> - 2015-10-17 04:20 +0200
Re: [PATCH 0/3] mm/powerpc: enabling memory soft dirty tracking "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com> - 2015-10-17 14:10 +0200
| From | Laurent Dufour <ldufour@linux.vnet.ibm.com> |
|---|---|
| Date | 2015-10-16 14:10 +0200 |
| Subject | [PATCH 0/3] mm/powerpc: enabling memory soft dirty tracking |
| Message-ID | <qkbZE-5OX-9@gated-at.bofh.it> |
This series is enabling the software memory dirty tracking in the
kernel for powerpc. This is the follow up of the commit 0f8975ec4db2
("mm: soft-dirty bits for user memory changes tracking") which
introduced this feature in the mm code.
The first patch is fixing an issue in the code clearing the soft dirty
bit. The PTE were not cleared before being modified, leading to hang
on ppc64.
The second patch is fixing a build issue when the transparent huge
page is not enabled.
The third patch is introducing the soft dirty tracking in the powerpc
architecture code.
Laurent Dufour (3):
mm: clearing pte in clear_soft_dirty()
mm: clear_soft_dirty_pmd requires THP
powerpc/mm: Add page soft dirty tracking
arch/powerpc/Kconfig | 2 ++
arch/powerpc/include/asm/pgtable-ppc64.h | 13 +++++++++--
arch/powerpc/include/asm/pgtable.h | 40 +++++++++++++++++++++++++++++++-
arch/powerpc/include/asm/pte-book3e.h | 1 +
arch/powerpc/include/asm/pte-common.h | 5 ++--
arch/powerpc/include/asm/pte-hash64.h | 1 +
fs/proc/task_mmu.c | 21 +++++++++--------
7 files changed, 68 insertions(+), 15 deletions(-)
--
1.9.1
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [next] | [standalone]
| From | Laurent Dufour <ldufour@linux.vnet.ibm.com> |
|---|---|
| Date | 2015-10-16 14:10 +0200 |
| Subject | [PATCH 1/3] mm: clearing pte in clear_soft_dirty() |
| Message-ID | <qkbZF-5OX-25@gated-at.bofh.it> |
| In reply to | #1248674 |
As mentioned in the commit 56eecdb912b5 ("mm: Use ptep/pmdp_set_numa()
for updating _PAGE_NUMA bit"), architecture like ppc64 doesn't do
tlb flush in set_pte/pmd functions.
So when dealing with existing pte in clear_soft_dirty, the pte must
be cleared before being modified.
Signed-off-by: Laurent Dufour <ldufour@linux.vnet.ibm.com>
CC: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
---
fs/proc/task_mmu.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c
index e2d46adb54b4..c9454ee39b28 100644
--- a/fs/proc/task_mmu.c
+++ b/fs/proc/task_mmu.c
@@ -753,19 +753,20 @@ static inline void clear_soft_dirty(struct vm_area_struct *vma,
pte_t ptent = *pte;
if (pte_present(ptent)) {
+ ptent = ptep_modify_prot_start(vma->vm_mm, addr, pte);
ptent = pte_wrprotect(ptent);
ptent = pte_clear_flags(ptent, _PAGE_SOFT_DIRTY);
+ ptep_modify_prot_commit(vma->vm_mm, addr, pte, ptent);
} else if (is_swap_pte(ptent)) {
ptent = pte_swp_clear_soft_dirty(ptent);
+ set_pte_at(vma->vm_mm, addr, pte, ptent);
}
-
- set_pte_at(vma->vm_mm, addr, pte, ptent);
}
static inline void clear_soft_dirty_pmd(struct vm_area_struct *vma,
unsigned long addr, pmd_t *pmdp)
{
- pmd_t pmd = *pmdp;
+ pmd_t pmd = pmdp_huge_get_and_clear(vma->vm_mm, addr, pmdp);
pmd = pmd_wrprotect(pmd);
pmd = pmd_clear_flags(pmd, _PAGE_SOFT_DIRTY);
--
1.9.1
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Benjamin Herrenschmidt <benh@kernel.crashing.org> |
|---|---|
| Date | 2015-10-16 17:30 +0200 |
| Subject | Re: [PATCH 1/3] mm: clearing pte in clear_soft_dirty() |
| Message-ID | <qkf7d-1SN-37@gated-at.bofh.it> |
| In reply to | #1248677 |
On Fri, 2015-10-16 at 14:07 +0200, Laurent Dufour wrote:
> As mentioned in the commit 56eecdb912b5 ("mm: Use
> ptep/pmdp_set_numa()
> for updating _PAGE_NUMA bit"), architecture like ppc64 doesn't do
> tlb flush in set_pte/pmd functions.
>
> So when dealing with existing pte in clear_soft_dirty, the pte must
> be cleared before being modified.
Note that this is true of more than powerpc afaik. There's is a general
rule that we don't "restrict" a PTE access permissions without first
clearing it, due to various races.
> Signed-off-by: Laurent Dufour <ldufour@linux.vnet.ibm.com>
> CC: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
> ---
> fs/proc/task_mmu.c | 7 ++++---
> 1 file changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c
> index e2d46adb54b4..c9454ee39b28 100644
> --- a/fs/proc/task_mmu.c
> +++ b/fs/proc/task_mmu.c
> @@ -753,19 +753,20 @@ static inline void clear_soft_dirty(struct
> vm_area_struct *vma,
> pte_t ptent = *pte;
>
> if (pte_present(ptent)) {
> + ptent = ptep_modify_prot_start(vma->vm_mm, addr,
> pte);
> ptent = pte_wrprotect(ptent);
> ptent = pte_clear_flags(ptent, _PAGE_SOFT_DIRTY);
> + ptep_modify_prot_commit(vma->vm_mm, addr, pte,
> ptent);
> } else if (is_swap_pte(ptent)) {
> ptent = pte_swp_clear_soft_dirty(ptent);
> + set_pte_at(vma->vm_mm, addr, pte, ptent);
> }
> -
> - set_pte_at(vma->vm_mm, addr, pte, ptent);
> }
>
> static inline void clear_soft_dirty_pmd(struct vm_area_struct *vma,
> unsigned long addr, pmd_t *pmdp)
> {
> - pmd_t pmd = *pmdp;
> + pmd_t pmd = pmdp_huge_get_and_clear(vma->vm_mm, addr, pmdp);
>
> pmd = pmd_wrprotect(pmd);
> pmd = pmd_clear_flags(pmd, _PAGE_SOFT_DIRTY);
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com> |
|---|---|
| Date | 2015-10-17 14:20 +0200 |
| Subject | Re: [PATCH 1/3] mm: clearing pte in clear_soft_dirty() |
| Message-ID | <qkyCR-5u3-3@gated-at.bofh.it> |
| In reply to | #1248677 |
Laurent Dufour <ldufour@linux.vnet.ibm.com> writes:
> As mentioned in the commit 56eecdb912b5 ("mm: Use ptep/pmdp_set_numa()
> for updating _PAGE_NUMA bit"), architecture like ppc64 doesn't do
> tlb flush in set_pte/pmd functions.
>
> So when dealing with existing pte in clear_soft_dirty, the pte must
> be cleared before being modified.
>
> Signed-off-by: Laurent Dufour <ldufour@linux.vnet.ibm.com>
> CC: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Reviewed-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
> ---
> fs/proc/task_mmu.c | 7 ++++---
> 1 file changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c
> index e2d46adb54b4..c9454ee39b28 100644
> --- a/fs/proc/task_mmu.c
> +++ b/fs/proc/task_mmu.c
> @@ -753,19 +753,20 @@ static inline void clear_soft_dirty(struct vm_area_struct *vma,
> pte_t ptent = *pte;
>
> if (pte_present(ptent)) {
> + ptent = ptep_modify_prot_start(vma->vm_mm, addr, pte);
> ptent = pte_wrprotect(ptent);
> ptent = pte_clear_flags(ptent, _PAGE_SOFT_DIRTY);
> + ptep_modify_prot_commit(vma->vm_mm, addr, pte, ptent);
> } else if (is_swap_pte(ptent)) {
> ptent = pte_swp_clear_soft_dirty(ptent);
> + set_pte_at(vma->vm_mm, addr, pte, ptent);
> }
> -
> - set_pte_at(vma->vm_mm, addr, pte, ptent);
> }
>
> static inline void clear_soft_dirty_pmd(struct vm_area_struct *vma,
> unsigned long addr, pmd_t *pmdp)
> {
> - pmd_t pmd = *pmdp;
> + pmd_t pmd = pmdp_huge_get_and_clear(vma->vm_mm, addr, pmdp);
>
> pmd = pmd_wrprotect(pmd);
> pmd = pmd_clear_flags(pmd, _PAGE_SOFT_DIRTY);
> --
> 1.9.1
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Laurent Dufour <ldufour@linux.vnet.ibm.com> |
|---|---|
| Date | 2015-10-16 14:10 +0200 |
| Subject | [PATCH 2/3] mm: clear_soft_dirty_pmd requires THP |
| Message-ID | <qkbZE-5OX-23@gated-at.bofh.it> |
| In reply to | #1248674 |
Don't build clear_soft_dirty_pmd() if the transparent huge pages are
not enabled.
Signed-off-by: Laurent Dufour <ldufour@linux.vnet.ibm.com>
CC: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
---
fs/proc/task_mmu.c | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c
index c9454ee39b28..fa847a982a9f 100644
--- a/fs/proc/task_mmu.c
+++ b/fs/proc/task_mmu.c
@@ -762,7 +762,14 @@ static inline void clear_soft_dirty(struct vm_area_struct *vma,
set_pte_at(vma->vm_mm, addr, pte, ptent);
}
}
+#else
+static inline void clear_soft_dirty(struct vm_area_struct *vma,
+ unsigned long addr, pte_t *pte)
+{
+}
+#endif
+#if defined(CONFIG_MEM_SOFT_DIRTY) && defined(CONFIG_TRANSPARENT_HUGEPAGE)
static inline void clear_soft_dirty_pmd(struct vm_area_struct *vma,
unsigned long addr, pmd_t *pmdp)
{
@@ -776,14 +783,7 @@ static inline void clear_soft_dirty_pmd(struct vm_area_struct *vma,
set_pmd_at(vma->vm_mm, addr, pmdp, pmd);
}
-
#else
-
-static inline void clear_soft_dirty(struct vm_area_struct *vma,
- unsigned long addr, pte_t *pte)
-{
-}
-
static inline void clear_soft_dirty_pmd(struct vm_area_struct *vma,
unsigned long addr, pmd_t *pmdp)
{
--
1.9.1
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com> |
|---|---|
| Date | 2015-10-17 14:20 +0200 |
| Subject | Re: [PATCH 2/3] mm: clear_soft_dirty_pmd requires THP |
| Message-ID | <qkyCS-5u3-25@gated-at.bofh.it> |
| In reply to | #1248679 |
Laurent Dufour <ldufour@linux.vnet.ibm.com> writes:
> Don't build clear_soft_dirty_pmd() if the transparent huge pages are
> not enabled.
>
> Signed-off-by: Laurent Dufour <ldufour@linux.vnet.ibm.com>
> CC: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Reviewed-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
> ---
> fs/proc/task_mmu.c | 14 +++++++-------
> 1 file changed, 7 insertions(+), 7 deletions(-)
>
> diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c
> index c9454ee39b28..fa847a982a9f 100644
> --- a/fs/proc/task_mmu.c
> +++ b/fs/proc/task_mmu.c
> @@ -762,7 +762,14 @@ static inline void clear_soft_dirty(struct vm_area_struct *vma,
> set_pte_at(vma->vm_mm, addr, pte, ptent);
> }
> }
> +#else
> +static inline void clear_soft_dirty(struct vm_area_struct *vma,
> + unsigned long addr, pte_t *pte)
> +{
> +}
> +#endif
>
> +#if defined(CONFIG_MEM_SOFT_DIRTY) && defined(CONFIG_TRANSPARENT_HUGEPAGE)
> static inline void clear_soft_dirty_pmd(struct vm_area_struct *vma,
> unsigned long addr, pmd_t *pmdp)
> {
> @@ -776,14 +783,7 @@ static inline void clear_soft_dirty_pmd(struct vm_area_struct *vma,
>
> set_pmd_at(vma->vm_mm, addr, pmdp, pmd);
> }
> -
> #else
> -
> -static inline void clear_soft_dirty(struct vm_area_struct *vma,
> - unsigned long addr, pte_t *pte)
> -{
> -}
> -
> static inline void clear_soft_dirty_pmd(struct vm_area_struct *vma,
> unsigned long addr, pmd_t *pmdp)
> {
> --
> 1.9.1
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Andrew Morton <akpm@linux-foundation.org> |
|---|---|
| Date | 2015-10-16 23:20 +0200 |
| Message-ID | <qkkzT-1wT-3@gated-at.bofh.it> |
| In reply to | #1248674 |
On Fri, 16 Oct 2015 14:07:05 +0200 Laurent Dufour <ldufour@linux.vnet.ibm.com> wrote:
> This series is enabling the software memory dirty tracking in the
> kernel for powerpc. This is the follow up of the commit 0f8975ec4db2
> ("mm: soft-dirty bits for user memory changes tracking") which
> introduced this feature in the mm code.
>
> The first patch is fixing an issue in the code clearing the soft dirty
> bit. The PTE were not cleared before being modified, leading to hang
> on ppc64.
>
> The second patch is fixing a build issue when the transparent huge
> page is not enabled.
>
> The third patch is introducing the soft dirty tracking in the powerpc
> architecture code.
I grabbed these patches, but they're more a ppc thing than a core
kernel thing. I can merge them into 4.3 with suitable acks or drop
them if they turn up in the powerpc tree. Or something else?
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Benjamin Herrenschmidt <benh@kernel.crashing.org> |
|---|---|
| Date | 2015-10-17 04:20 +0200 |
| Message-ID | <qkpgf-8rM-5@gated-at.bofh.it> |
| In reply to | #1249153 |
On Fri, 2015-10-16 at 14:11 -0700, Andrew Morton wrote: > I grabbed these patches, but they're more a ppc thing than a core > kernel thing. I can merge them into 4.3 with suitable acks or drop > them if they turn up in the powerpc tree. Or something else? I'm happy for you to keep the generic ones but the powerpc one at the end should be reviewed by Aneesh at least. Cheers, Ben. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com> |
|---|---|
| Date | 2015-10-17 14:10 +0200 |
| Message-ID | <qkytc-5iD-1@gated-at.bofh.it> |
| In reply to | #1249153 |
Andrew Morton <akpm@linux-foundation.org> writes:
> On Fri, 16 Oct 2015 14:07:05 +0200 Laurent Dufour <ldufour@linux.vnet.ibm.com> wrote:
>
>> This series is enabling the software memory dirty tracking in the
>> kernel for powerpc. This is the follow up of the commit 0f8975ec4db2
>> ("mm: soft-dirty bits for user memory changes tracking") which
>> introduced this feature in the mm code.
>>
>> The first patch is fixing an issue in the code clearing the soft dirty
>> bit. The PTE were not cleared before being modified, leading to hang
>> on ppc64.
>>
>> The second patch is fixing a build issue when the transparent huge
>> page is not enabled.
>>
>> The third patch is introducing the soft dirty tracking in the powerpc
>> architecture code.
>
> I grabbed these patches, but they're more a ppc thing than a core
> kernel thing. I can merge them into 4.3 with suitable acks or drop
> them if they turn up in the powerpc tree. Or something else?
patch 1 and patch 2 are fixes for generic code. That can go via -mm
tree. The ppc64 bits should go via linux-powerpc tree. We have changes
in this area pending to be merged upstream and patch 3 will result
in conflicts.
-aneesh
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web