All of lore.kernel.org
 help / color / mirror / Atom feed
diff for duplicates of <1455504278.16012.18.camel@gmail.com>

diff --git a/a/1.txt b/N1/1.txt
index ecfee67..04c883d 100644
--- a/a/1.txt
+++ b/N1/1.txt
@@ -1,5 +1,5 @@
 On Tue, 2016-02-09 at 06:50 +0530, Aneesh Kumar K.V wrote:
-> 
+>A 
 > Also make sure we wait for irq disable section in other cpus to finish
 > before flipping a huge pte entry with a regular pmd entry. Code paths
 > like find_linux_pte_or_hugepte depend on irq disable to get
@@ -10,12 +10,12 @@ On Tue, 2016-02-09 at 06:50 +0530, Aneesh Kumar K.V wrote:
 > Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
 > Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
 > ---
->  arch/powerpc/include/asm/book3s/64/pgtable.h |  4 ++++
->  arch/powerpc/mm/pgtable_64.c                 | 35
+> A arch/powerpc/include/asm/book3s/64/pgtable.h |A A 4 ++++
+> A arch/powerpc/mm/pgtable_64.cA A A A A A A A A A A A A A A A A | 35
 > +++++++++++++++++++++++++++-
->  include/asm-generic/pgtable.h                |  8 +++++++
->  mm/huge_memory.c                             |  1 +
->  4 files changed, 47 insertions(+), 1 deletion(-)
+> A include/asm-generic/pgtable.hA A A A A A A A A A A A A A A A |A A 8 +++++++
+> A mm/huge_memory.cA A A A A A A A A A A A A A A A A A A A A A A A A A A A A |A A 1 +
+> A 4 files changed, 47 insertions(+), 1 deletion(-)
 > 
 > diff --git a/arch/powerpc/include/asm/book3s/64/pgtable.h
 > b/arch/powerpc/include/asm/book3s/64/pgtable.h
@@ -24,28 +24,28 @@ On Tue, 2016-02-09 at 06:50 +0530, Aneesh Kumar K.V wrote:
 > +++ b/arch/powerpc/include/asm/book3s/64/pgtable.h
 > @@ -281,6 +281,10 @@ extern pgtable_t pgtable_trans_huge_withdraw(struct
 > mm_struct *mm, pmd_t *pmdp);
->  extern void pmdp_invalidate(struct vm_area_struct *vma, unsigned long
+> A extern void pmdp_invalidate(struct vm_area_struct *vma, unsigned long
 > address,
->  			    pmd_t *pmdp);
->  
+> A 			A A A A pmd_t *pmdp);
+> A 
 > +#define __HAVE_ARCH_PMDP_HUGE_SPLIT_PREPARE
 > +extern void pmdp_huge_split_prepare(struct vm_area_struct *vma,
-> +				    unsigned long address, pmd_t *pmdp);
+> +				A A A A unsigned long address, pmd_t *pmdp);
 > +
->  #define pmd_move_must_withdraw pmd_move_must_withdraw
->  struct spinlock;
->  static inline int pmd_move_must_withdraw(struct spinlock *new_pmd_ptl,
+> A #define pmd_move_must_withdraw pmd_move_must_withdraw
+> A struct spinlock;
+> A static inline int pmd_move_must_withdraw(struct spinlock *new_pmd_ptl,
 > diff --git a/arch/powerpc/mm/pgtable_64.c b/arch/powerpc/mm/pgtable_64.c
 > index 3124a20d0fab..c8a00da39969 100644
 > --- a/arch/powerpc/mm/pgtable_64.c
 > +++ b/arch/powerpc/mm/pgtable_64.c
 > @@ -646,6 +646,30 @@ pgtable_t pgtable_trans_huge_withdraw(struct mm_struct
 > *mm, pmd_t *pmdp)
->  	return pgtable;
->  }
->  
+> A 	return pgtable;
+> A }
+> A 
 > +void pmdp_huge_split_prepare(struct vm_area_struct *vma,
-> +			     unsigned long address, pmd_t *pmdp)
+> +			A A A A A unsigned long address, pmd_t *pmdp)
 > +{
 > +	VM_BUG_ON(address & ~HPAGE_PMD_MASK);
 > +
@@ -53,17 +53,17 @@ On Tue, 2016-02-09 at 06:50 +0530, Aneesh Kumar K.V wrote:
 > +	BUG_ON(REGION_ID(address) != USER_REGION_ID);
 > +#endif
 > +	/*
-> +	 * We can't mark the pmd none here, because that will cause a race
-> +	 * against exit_mmap. We need to continue mark pmd TRANS HUGE, while
-> +	 * we spilt, but at the same time we wan't rest of the ppc64 code
-> +	 * not to insert hash pte on this, because we will be modifying
-> +	 * the deposited pgtable in the caller of this function. Hence
-> +	 * clear the _PAGE_USER so that we move the fault handling to
-> +	 * higher level function and that will serialize against ptl.
-> +	 * We need to flush existing hash pte entries here even though,
-> +	 * the translation is still valid, because we will withdraw
-> +	 * pgtable_t after this.
-> +	 */
+> +	A * We can't mark the pmd none here, because that will cause a race
+> +	A * against exit_mmap. We need to continue mark pmd TRANS HUGE, while
+> +	A * we spilt, but at the same time we wan't rest of the ppc64 code
+> +	A * not to insert hash pte on this, because we will be modifying
+> +	A * the deposited pgtable in the caller of this function. Hence
+> +	A * clear the _PAGE_USER so that we move the fault handling to
+> +	A * higher level function and that will serialize against ptl.
+> +	A * We need to flush existing hash pte entries here even though,
+> +	A * the translation is still valid, because we will withdraw
+> +	A * pgtable_t after this.
+> +	A */
 > +	pmd_hugepage_update(vma->vm_mm, address, pmdp, _PAGE_USER, 0);
 
 Can this break any checks for _PAGE_USER? From other paths?
@@ -71,27 +71,27 @@ Can this break any checks for _PAGE_USER? From other paths?
 > +}
 > +
 > +
->  /*
->   * set a new huge pmd. We should not be called for updating
->   * an existing pmd entry. That should go via pmd_hugepage_update.
+> A /*
+> A  * set a new huge pmd. We should not be called for updating
+> A  * an existing pmd entry. That should go via pmd_hugepage_update.
 > @@ -663,10 +687,19 @@ void set_pmd_at(struct mm_struct *mm, unsigned long
 > addr,
->  	return set_pte_at(mm, addr, pmdp_ptep(pmdp), pmd_pte(pmd));
->  }
->  
+> A 	return set_pte_at(mm, addr, pmdp_ptep(pmdp), pmd_pte(pmd));
+> A }
+> A 
 > +/*
 > + * We use this to invalidate a pmdp entry before switching from a
 > + * hugepte to regular pmd entry.
 > + */
->  void pmdp_invalidate(struct vm_area_struct *vma, unsigned long address,
->  		     pmd_t *pmdp)
->  {
+> A void pmdp_invalidate(struct vm_area_struct *vma, unsigned long address,
+> A 		A A A A A pmd_t *pmdp)
+> A {
 > -	pmd_hugepage_update(vma->vm_mm, address, pmdp, _PAGE_PRESENT, 0);
 > +	pmd_hugepage_update(vma->vm_mm, address, pmdp, ~0UL, 0);
 > +	/*
-> +	 * This ensures that generic code that rely on IRQ disabling
-> +	 * to prevent a parallel THP split work as expected.
-> +	 */
+> +	A * This ensures that generic code that rely on IRQ disabling
+> +	A * to prevent a parallel THP split work as expected.
+> +	A */
 > +	kick_all_cpus_sync();
 
 Seems expensive, anyway I think the right should do something like or a wrapper
@@ -102,3 +102,9 @@ on_each_cpu_mask(mm_cpumask(vma->vm_mm), do_nothing, NULL, 1);
 do_nothing is not exported, but that can be fixed :)
 
 Balbir Singh
+
+--
+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>
diff --git a/a/content_digest b/N1/content_digest
index 85b162a..b9cdb7d 100644
--- a/a/content_digest
+++ b/N1/content_digest
@@ -15,7 +15,7 @@
  "\00:1\0"
  "b\0"
  "On Tue, 2016-02-09 at 06:50 +0530, Aneesh Kumar K.V wrote:\n"
- ">\302\240\n"
+ ">A \n"
  "> Also make sure we wait for irq disable section in other cpus to finish\n"
  "> before flipping a huge pte entry with a regular pmd entry. Code paths\n"
  "> like find_linux_pte_or_hugepte depend on irq disable to get\n"
@@ -26,12 +26,12 @@
  "> Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>\n"
  "> Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>\n"
  "> ---\n"
- "> \302\240arch/powerpc/include/asm/book3s/64/pgtable.h |\302\240\302\2404 ++++\n"
- "> \302\240arch/powerpc/mm/pgtable_64.c\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240| 35\n"
+ "> A arch/powerpc/include/asm/book3s/64/pgtable.h |A A 4 ++++\n"
+ "> A arch/powerpc/mm/pgtable_64.cA A A A A A A A A A A A A A A A A | 35\n"
  "> +++++++++++++++++++++++++++-\n"
- "> \302\240include/asm-generic/pgtable.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2408 +++++++\n"
- "> \302\240mm/huge_memory.c\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n"
- "> \302\2404 files changed, 47 insertions(+), 1 deletion(-)\n"
+ "> A include/asm-generic/pgtable.hA A A A A A A A A A A A A A A A |A A 8 +++++++\n"
+ "> A mm/huge_memory.cA A A A A A A A A A A A A A A A A A A A A A A A A A A A A |A A 1 +\n"
+ "> A 4 files changed, 47 insertions(+), 1 deletion(-)\n"
  "> \n"
  "> diff --git a/arch/powerpc/include/asm/book3s/64/pgtable.h\n"
  "> b/arch/powerpc/include/asm/book3s/64/pgtable.h\n"
@@ -40,28 +40,28 @@
  "> +++ b/arch/powerpc/include/asm/book3s/64/pgtable.h\n"
  "> @@ -281,6 +281,10 @@ extern pgtable_t pgtable_trans_huge_withdraw(struct\n"
  "> mm_struct *mm, pmd_t *pmdp);\n"
- "> \302\240extern void pmdp_invalidate(struct vm_area_struct *vma, unsigned long\n"
+ "> A extern void pmdp_invalidate(struct vm_area_struct *vma, unsigned long\n"
  "> address,\n"
- "> \302\240\t\t\t\302\240\302\240\302\240\302\240pmd_t *pmdp);\n"
- "> \302\240\n"
+ "> A \t\t\tA A A A pmd_t *pmdp);\n"
+ "> A \n"
  "> +#define __HAVE_ARCH_PMDP_HUGE_SPLIT_PREPARE\n"
  "> +extern void pmdp_huge_split_prepare(struct vm_area_struct *vma,\n"
- "> +\t\t\t\t\302\240\302\240\302\240\302\240unsigned long address, pmd_t *pmdp);\n"
+ "> +\t\t\t\tA A A A unsigned long address, pmd_t *pmdp);\n"
  "> +\n"
- "> \302\240#define pmd_move_must_withdraw pmd_move_must_withdraw\n"
- "> \302\240struct spinlock;\n"
- "> \302\240static inline int pmd_move_must_withdraw(struct spinlock *new_pmd_ptl,\n"
+ "> A #define pmd_move_must_withdraw pmd_move_must_withdraw\n"
+ "> A struct spinlock;\n"
+ "> A static inline int pmd_move_must_withdraw(struct spinlock *new_pmd_ptl,\n"
  "> diff --git a/arch/powerpc/mm/pgtable_64.c b/arch/powerpc/mm/pgtable_64.c\n"
  "> index 3124a20d0fab..c8a00da39969 100644\n"
  "> --- a/arch/powerpc/mm/pgtable_64.c\n"
  "> +++ b/arch/powerpc/mm/pgtable_64.c\n"
  "> @@ -646,6 +646,30 @@ pgtable_t pgtable_trans_huge_withdraw(struct mm_struct\n"
  "> *mm, pmd_t *pmdp)\n"
- "> \302\240\treturn pgtable;\n"
- "> \302\240}\n"
- "> \302\240\n"
+ "> A \treturn pgtable;\n"
+ "> A }\n"
+ "> A \n"
  "> +void pmdp_huge_split_prepare(struct vm_area_struct *vma,\n"
- "> +\t\t\t\302\240\302\240\302\240\302\240\302\240unsigned long address, pmd_t *pmdp)\n"
+ "> +\t\t\tA A A A A unsigned long address, pmd_t *pmdp)\n"
  "> +{\n"
  "> +\tVM_BUG_ON(address & ~HPAGE_PMD_MASK);\n"
  "> +\n"
@@ -69,17 +69,17 @@
  "> +\tBUG_ON(REGION_ID(address) != USER_REGION_ID);\n"
  "> +#endif\n"
  "> +\t/*\n"
- "> +\t\302\240* We can't mark the pmd none here, because that will cause a race\n"
- "> +\t\302\240* against exit_mmap. We need to continue mark pmd TRANS HUGE, while\n"
- "> +\t\302\240* we spilt, but at the same time we wan't rest of the ppc64 code\n"
- "> +\t\302\240* not to insert hash pte on this, because we will be modifying\n"
- "> +\t\302\240* the deposited pgtable in the caller of this function. Hence\n"
- "> +\t\302\240* clear the _PAGE_USER so that we move the fault handling to\n"
- "> +\t\302\240* higher level function and that will serialize against ptl.\n"
- "> +\t\302\240* We need to flush existing hash pte entries here even though,\n"
- "> +\t\302\240* the translation is still valid, because we will withdraw\n"
- "> +\t\302\240* pgtable_t after this.\n"
- "> +\t\302\240*/\n"
+ "> +\tA * We can't mark the pmd none here, because that will cause a race\n"
+ "> +\tA * against exit_mmap. We need to continue mark pmd TRANS HUGE, while\n"
+ "> +\tA * we spilt, but at the same time we wan't rest of the ppc64 code\n"
+ "> +\tA * not to insert hash pte on this, because we will be modifying\n"
+ "> +\tA * the deposited pgtable in the caller of this function. Hence\n"
+ "> +\tA * clear the _PAGE_USER so that we move the fault handling to\n"
+ "> +\tA * higher level function and that will serialize against ptl.\n"
+ "> +\tA * We need to flush existing hash pte entries here even though,\n"
+ "> +\tA * the translation is still valid, because we will withdraw\n"
+ "> +\tA * pgtable_t after this.\n"
+ "> +\tA */\n"
  "> +\tpmd_hugepage_update(vma->vm_mm, address, pmdp, _PAGE_USER, 0);\n"
  "\n"
  "Can this break any checks for _PAGE_USER? From other paths?\n"
@@ -87,27 +87,27 @@
  "> +}\n"
  "> +\n"
  "> +\n"
- "> \302\240/*\n"
- "> \302\240 * set a new huge pmd. We should not be called for updating\n"
- "> \302\240 * an existing pmd entry. That should go via pmd_hugepage_update.\n"
+ "> A /*\n"
+ "> A  * set a new huge pmd. We should not be called for updating\n"
+ "> A  * an existing pmd entry. That should go via pmd_hugepage_update.\n"
  "> @@ -663,10 +687,19 @@ void set_pmd_at(struct mm_struct *mm, unsigned long\n"
  "> addr,\n"
- "> \302\240\treturn set_pte_at(mm, addr, pmdp_ptep(pmdp), pmd_pte(pmd));\n"
- "> \302\240}\n"
- "> \302\240\n"
+ "> A \treturn set_pte_at(mm, addr, pmdp_ptep(pmdp), pmd_pte(pmd));\n"
+ "> A }\n"
+ "> A \n"
  "> +/*\n"
  "> + * We use this to invalidate a pmdp entry before switching from a\n"
  "> + * hugepte to regular pmd entry.\n"
  "> + */\n"
- "> \302\240void pmdp_invalidate(struct vm_area_struct *vma, unsigned long address,\n"
- "> \302\240\t\t\302\240\302\240\302\240\302\240\302\240pmd_t *pmdp)\n"
- "> \302\240{\n"
+ "> A void pmdp_invalidate(struct vm_area_struct *vma, unsigned long address,\n"
+ "> A \t\tA A A A A pmd_t *pmdp)\n"
+ "> A {\n"
  "> -\tpmd_hugepage_update(vma->vm_mm, address, pmdp, _PAGE_PRESENT, 0);\n"
  "> +\tpmd_hugepage_update(vma->vm_mm, address, pmdp, ~0UL, 0);\n"
  "> +\t/*\n"
- "> +\t\302\240* This ensures that generic code that rely on IRQ disabling\n"
- "> +\t\302\240* to prevent a parallel THP split work as expected.\n"
- "> +\t\302\240*/\n"
+ "> +\tA * This ensures that generic code that rely on IRQ disabling\n"
+ "> +\tA * to prevent a parallel THP split work as expected.\n"
+ "> +\tA */\n"
  "> +\tkick_all_cpus_sync();\n"
  "\n"
  "Seems expensive, anyway I think the right should do something like or a wrapper\n"
@@ -117,6 +117,12 @@
  "\n"
  "do_nothing is not exported, but that can be fixed :)\n"
  "\n"
- Balbir Singh
+ "Balbir Singh\n"
+ "\n"
+ "--\n"
+ "To unsubscribe, send a message with 'unsubscribe linux-mm' in\n"
+ "the body to majordomo@kvack.org.  For more info on Linux MM,\n"
+ "see: http://www.linux-mm.org/ .\n"
+ "Don't email: <a href=mailto:\"dont@kvack.org\"> email@kvack.org </a>"
 
-d80dfc075e7cf43c3cd7aedebe9b01747d921c2d74434f398e1efdbe5421519e
+ffd976e8ed282e3e93c6b077609390313bf021e93eac03295696add0713262ca

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.