All of lore.kernel.org
 help / color / mirror / Atom feed
diff for duplicates of <20200116064531.483522-10-aneesh.kumar@linux.ibm.com>

diff --git a/a/1.txt b/N1/1.txt
index f6033fe..c968301 100644
--- a/a/1.txt
+++ b/N1/1.txt
@@ -39,22 +39,22 @@ index c35668fbf4d4..98de654b79b3 100644
 @@ -393,8 +393,12 @@ config HAVE_ARCH_JUMP_LABEL
  config HAVE_ARCH_JUMP_LABEL_RELATIVE
  	bool
- 
+
 +config MMU_GATHER_TABLE_FREE
 +	bool
 +
  config MMU_GATHER_RCU_TABLE_FREE
  	bool
 +	select MMU_GATHER_TABLE_FREE
- 
+
  config MMU_GATHER_PAGE_SIZE
  	bool
 @@ -404,6 +408,7 @@ config MMU_GATHER_NO_RANGE
- 
+
  config MMU_GATHER_NO_GATHER
  	bool
 +	depends on MMU_GATHER_TABLE_FREE
- 
+
  config ARCH_HAVE_NMI_SAFE_CMPXCHG
  	bool
 diff --git a/arch/arm/include/asm/tlb.h b/arch/arm/include/asm/tlb.h
@@ -62,9 +62,9 @@ index 46a21cee3442..4d4e7b6aabff 100644
 --- a/arch/arm/include/asm/tlb.h
 +++ b/arch/arm/include/asm/tlb.h
 @@ -37,10 +37,6 @@ static inline void __tlb_remove_table(void *_table)
- 
+
  #include <asm-generic/tlb.h>
- 
+
 -#ifndef CONFIG_MMU_GATHER_RCU_TABLE_FREE
 -#define tlb_remove_table(tlb, entry) tlb_remove_page(tlb, entry)
 -#endif
@@ -125,7 +125,7 @@ index ca0fe75b5355..f391f6b500b4 100644
 @@ -155,37 +171,12 @@
   *  various ptep_get_and_clear() functions.
   */
- 
+
 -#ifdef CONFIG_MMU_GATHER_RCU_TABLE_FREE
 -/*
 - * Semi RCU freeing of the page directories.
@@ -165,9 +165,9 @@ index ca0fe75b5355..f391f6b500b4 100644
  	void			*tables[0];
  };
 @@ -195,6 +186,17 @@ struct mmu_table_batch {
- 
+
  extern void tlb_remove_table(struct mmu_gather *tlb, void *table);
- 
+
 +#else /* !CONFIG_MMU_GATHER_HAVE_TABLE_FREE */
 +
 +/*
@@ -185,23 +185,23 @@ index ca0fe75b5355..f391f6b500b4 100644
 @@ -248,7 +250,7 @@ extern bool __tlb_remove_page_size(struct mmu_gather *tlb, struct page *page,
  struct mmu_gather {
  	struct mm_struct	*mm;
- 
+
 -#ifdef CONFIG_MMU_GATHER_RCU_TABLE_FREE
 +#ifdef CONFIG_MMU_GATHER_TABLE_FREE
  	struct mmu_table_batch	*batch;
  #endif
- 
+
 diff --git a/mm/mmu_gather.c b/mm/mmu_gather.c
 index a28c74328085..a3538cb2bcbe 100644
 --- a/mm/mmu_gather.c
 +++ b/mm/mmu_gather.c
 @@ -91,56 +91,106 @@ bool __tlb_remove_page_size(struct mmu_gather *tlb, struct page *page, int page_
- 
+
  #endif /* MMU_GATHER_NO_GATHER */
- 
+
 -#ifdef CONFIG_MMU_GATHER_RCU_TABLE_FREE
 +#ifdef CONFIG_MMU_GATHER_TABLE_FREE
- 
+
 -/*
 - * See the comment near struct mmu_table_batch.
 - */
@@ -216,7 +216,7 @@ index a28c74328085..a3538cb2bcbe 100644
 +}
 +
 +#ifdef CONFIG_MMU_GATHER_RCU_TABLE_FREE
- 
+
  /*
 - * If we want tlb_remove_table() to imply TLB invalidates.
 + * Semi RCU freeing of the page directories.
@@ -257,12 +257,12 @@ index a28c74328085..a3538cb2bcbe 100644
 -		tlb_flush_mmu_tlbonly(tlb);
 -	}
 -}
- 
+
  static void tlb_remove_table_smp_sync(void *arg)
  {
  	/* Simply deliver the interrupt */
  }
- 
+
 -static void tlb_remove_table_one(void *table)
 +static void tlb_remove_table_sync_one(void)
  {
@@ -277,24 +277,24 @@ index a28c74328085..a3538cb2bcbe 100644
  	smp_call_function(tlb_remove_table_smp_sync, NULL, 1);
 -	__tlb_remove_table(table);
  }
- 
+
  static void tlb_remove_table_rcu(struct rcu_head *head)
  {
 -	struct mmu_table_batch *batch;
 -	int i;
 +	__tlb_remove_table_free(container_of(head, struct mmu_table_batch, rcu));
 +}
- 
+
 -	batch = container_of(head, struct mmu_table_batch, rcu);
 +static void tlb_remove_table_free(struct mmu_table_batch *batch)
 +{
 +	call_rcu(&batch->rcu, tlb_remove_table_rcu);
 +}
- 
+
 -	for (i = 0; i < batch->nr; i++)
 -		__tlb_remove_table(batch->tables[i]);
 +#else /* !CONFIG_MMU_GATHER_RCU_TABLE_FREE */
- 
+
 -	free_page((unsigned long)batch);
 +static void tlb_remove_table_sync_one(void) { }
 +
@@ -325,10 +325,10 @@ index a28c74328085..a3538cb2bcbe 100644
 +	tlb_remove_table_sync_one();
 +	__tlb_remove_table(table);
  }
- 
+
  static void tlb_table_flush(struct mmu_gather *tlb)
 @@ -149,7 +199,7 @@ static void tlb_table_flush(struct mmu_gather *tlb)
- 
+
  	if (*batch) {
  		tlb_table_invalidate(tlb);
 -		call_rcu(&(*batch)->rcu, tlb_remove_table_rcu);
@@ -339,7 +339,7 @@ index a28c74328085..a3538cb2bcbe 100644
 @@ -173,13 +223,21 @@ void tlb_remove_table(struct mmu_gather *tlb, void *table)
  		tlb_table_flush(tlb);
  }
- 
+
 -#endif /* CONFIG_MMU_GATHER_RCU_TABLE_FREE */
 +static inline void tlb_table_init(struct mmu_gather *tlb)
 +{
@@ -352,7 +352,7 @@ index a28c74328085..a3538cb2bcbe 100644
 +static inline void tlb_table_init(struct mmu_gather *tlb) { }
 +
 +#endif /* CONFIG_MMU_GATHER_TABLE_FREE */
- 
+
  static void tlb_flush_mmu_free(struct mmu_gather *tlb)
  {
 -#ifdef CONFIG_MMU_GATHER_RCU_TABLE_FREE
@@ -364,7 +364,7 @@ index a28c74328085..a3538cb2bcbe 100644
 @@ -220,9 +278,7 @@ void tlb_gather_mmu(struct mmu_gather *tlb, struct mm_struct *mm,
  	tlb->batch_count = 0;
  #endif
- 
+
 -#ifdef CONFIG_MMU_GATHER_RCU_TABLE_FREE
 -	tlb->batch = NULL;
 -#endif
diff --git a/a/content_digest b/N1/content_digest
index f34936a..53cb00d 100644
--- a/a/content_digest
+++ b/N1/content_digest
@@ -54,22 +54,22 @@
  "@@ -393,8 +393,12 @@ config HAVE_ARCH_JUMP_LABEL\n"
  " config HAVE_ARCH_JUMP_LABEL_RELATIVE\n"
  " \tbool\n"
- " \n"
+ "\n"
  "+config MMU_GATHER_TABLE_FREE\n"
  "+\tbool\n"
  "+\n"
  " config MMU_GATHER_RCU_TABLE_FREE\n"
  " \tbool\n"
  "+\tselect MMU_GATHER_TABLE_FREE\n"
- " \n"
+ "\n"
  " config MMU_GATHER_PAGE_SIZE\n"
  " \tbool\n"
  "@@ -404,6 +408,7 @@ config MMU_GATHER_NO_RANGE\n"
- " \n"
+ "\n"
  " config MMU_GATHER_NO_GATHER\n"
  " \tbool\n"
  "+\tdepends on MMU_GATHER_TABLE_FREE\n"
- " \n"
+ "\n"
  " config ARCH_HAVE_NMI_SAFE_CMPXCHG\n"
  " \tbool\n"
  "diff --git a/arch/arm/include/asm/tlb.h b/arch/arm/include/asm/tlb.h\n"
@@ -77,9 +77,9 @@
  "--- a/arch/arm/include/asm/tlb.h\n"
  "+++ b/arch/arm/include/asm/tlb.h\n"
  "@@ -37,10 +37,6 @@ static inline void __tlb_remove_table(void *_table)\n"
- " \n"
+ "\n"
  " #include <asm-generic/tlb.h>\n"
- " \n"
+ "\n"
  "-#ifndef CONFIG_MMU_GATHER_RCU_TABLE_FREE\n"
  "-#define tlb_remove_table(tlb, entry) tlb_remove_page(tlb, entry)\n"
  "-#endif\n"
@@ -140,7 +140,7 @@
  "@@ -155,37 +171,12 @@\n"
  "  *  various ptep_get_and_clear() functions.\n"
  "  */\n"
- " \n"
+ "\n"
  "-#ifdef CONFIG_MMU_GATHER_RCU_TABLE_FREE\n"
  "-/*\n"
  "- * Semi RCU freeing of the page directories.\n"
@@ -180,9 +180,9 @@
  " \tvoid\t\t\t*tables[0];\n"
  " };\n"
  "@@ -195,6 +186,17 @@ struct mmu_table_batch {\n"
- " \n"
+ "\n"
  " extern void tlb_remove_table(struct mmu_gather *tlb, void *table);\n"
- " \n"
+ "\n"
  "+#else /* !CONFIG_MMU_GATHER_HAVE_TABLE_FREE */\n"
  "+\n"
  "+/*\n"
@@ -200,23 +200,23 @@
  "@@ -248,7 +250,7 @@ extern bool __tlb_remove_page_size(struct mmu_gather *tlb, struct page *page,\n"
  " struct mmu_gather {\n"
  " \tstruct mm_struct\t*mm;\n"
- " \n"
+ "\n"
  "-#ifdef CONFIG_MMU_GATHER_RCU_TABLE_FREE\n"
  "+#ifdef CONFIG_MMU_GATHER_TABLE_FREE\n"
  " \tstruct mmu_table_batch\t*batch;\n"
  " #endif\n"
- " \n"
+ "\n"
  "diff --git a/mm/mmu_gather.c b/mm/mmu_gather.c\n"
  "index a28c74328085..a3538cb2bcbe 100644\n"
  "--- a/mm/mmu_gather.c\n"
  "+++ b/mm/mmu_gather.c\n"
  "@@ -91,56 +91,106 @@ bool __tlb_remove_page_size(struct mmu_gather *tlb, struct page *page, int page_\n"
- " \n"
+ "\n"
  " #endif /* MMU_GATHER_NO_GATHER */\n"
- " \n"
+ "\n"
  "-#ifdef CONFIG_MMU_GATHER_RCU_TABLE_FREE\n"
  "+#ifdef CONFIG_MMU_GATHER_TABLE_FREE\n"
- " \n"
+ "\n"
  "-/*\n"
  "- * See the comment near struct mmu_table_batch.\n"
  "- */\n"
@@ -231,7 +231,7 @@
  "+}\n"
  "+\n"
  "+#ifdef CONFIG_MMU_GATHER_RCU_TABLE_FREE\n"
- " \n"
+ "\n"
  " /*\n"
  "- * If we want tlb_remove_table() to imply TLB invalidates.\n"
  "+ * Semi RCU freeing of the page directories.\n"
@@ -272,12 +272,12 @@
  "-\t\ttlb_flush_mmu_tlbonly(tlb);\n"
  "-\t}\n"
  "-}\n"
- " \n"
+ "\n"
  " static void tlb_remove_table_smp_sync(void *arg)\n"
  " {\n"
  " \t/* Simply deliver the interrupt */\n"
  " }\n"
- " \n"
+ "\n"
  "-static void tlb_remove_table_one(void *table)\n"
  "+static void tlb_remove_table_sync_one(void)\n"
  " {\n"
@@ -292,24 +292,24 @@
  " \tsmp_call_function(tlb_remove_table_smp_sync, NULL, 1);\n"
  "-\t__tlb_remove_table(table);\n"
  " }\n"
- " \n"
+ "\n"
  " static void tlb_remove_table_rcu(struct rcu_head *head)\n"
  " {\n"
  "-\tstruct mmu_table_batch *batch;\n"
  "-\tint i;\n"
  "+\t__tlb_remove_table_free(container_of(head, struct mmu_table_batch, rcu));\n"
  "+}\n"
- " \n"
+ "\n"
  "-\tbatch = container_of(head, struct mmu_table_batch, rcu);\n"
  "+static void tlb_remove_table_free(struct mmu_table_batch *batch)\n"
  "+{\n"
  "+\tcall_rcu(&batch->rcu, tlb_remove_table_rcu);\n"
  "+}\n"
- " \n"
+ "\n"
  "-\tfor (i = 0; i < batch->nr; i++)\n"
  "-\t\t__tlb_remove_table(batch->tables[i]);\n"
  "+#else /* !CONFIG_MMU_GATHER_RCU_TABLE_FREE */\n"
- " \n"
+ "\n"
  "-\tfree_page((unsigned long)batch);\n"
  "+static void tlb_remove_table_sync_one(void) { }\n"
  "+\n"
@@ -340,10 +340,10 @@
  "+\ttlb_remove_table_sync_one();\n"
  "+\t__tlb_remove_table(table);\n"
  " }\n"
- " \n"
+ "\n"
  " static void tlb_table_flush(struct mmu_gather *tlb)\n"
  "@@ -149,7 +199,7 @@ static void tlb_table_flush(struct mmu_gather *tlb)\n"
- " \n"
+ "\n"
  " \tif (*batch) {\n"
  " \t\ttlb_table_invalidate(tlb);\n"
  "-\t\tcall_rcu(&(*batch)->rcu, tlb_remove_table_rcu);\n"
@@ -354,7 +354,7 @@
  "@@ -173,13 +223,21 @@ void tlb_remove_table(struct mmu_gather *tlb, void *table)\n"
  " \t\ttlb_table_flush(tlb);\n"
  " }\n"
- " \n"
+ "\n"
  "-#endif /* CONFIG_MMU_GATHER_RCU_TABLE_FREE */\n"
  "+static inline void tlb_table_init(struct mmu_gather *tlb)\n"
  "+{\n"
@@ -367,7 +367,7 @@
  "+static inline void tlb_table_init(struct mmu_gather *tlb) { }\n"
  "+\n"
  "+#endif /* CONFIG_MMU_GATHER_TABLE_FREE */\n"
- " \n"
+ "\n"
  " static void tlb_flush_mmu_free(struct mmu_gather *tlb)\n"
  " {\n"
  "-#ifdef CONFIG_MMU_GATHER_RCU_TABLE_FREE\n"
@@ -379,7 +379,7 @@
  "@@ -220,9 +278,7 @@ void tlb_gather_mmu(struct mmu_gather *tlb, struct mm_struct *mm,\n"
  " \ttlb->batch_count = 0;\n"
  " #endif\n"
- " \n"
+ "\n"
  "-#ifdef CONFIG_MMU_GATHER_RCU_TABLE_FREE\n"
  "-\ttlb->batch = NULL;\n"
  "-#endif\n"
@@ -390,4 +390,4 @@
  "-- \n"
  2.24.1
 
-38daa02ae48a8a27ba1c478be131170edd9d36f20626b0edc2dfb7c8974709e3
+cc24408477a54a17e0c1f9f1204758b4ecb52b7feed74432e74a218a66d049df

diff --git a/a/content_digest b/N2/content_digest
index f34936a..7dc6563 100644
--- a/a/content_digest
+++ b/N2/content_digest
@@ -6,10 +6,10 @@
   peterz@infradead.org
   will@kernel.org
  " mpe@ellerman.id.au\0"
- "Cc\0linux-mm@kvack.org"
-  linux-kernel@vger.kernel.org
-  linux-arch@vger.kernel.org
+ "Cc\0linux-arch@vger.kernel.org"
+  linux-mm@kvack.org
   linuxppc-dev@lists.ozlabs.org
+  linux-kernel@vger.kernel.org
  " Aneesh Kumar K . V <aneesh.kumar@linux.ibm.com>\0"
  "\00:1\0"
  "b\0"
@@ -390,4 +390,4 @@
  "-- \n"
  2.24.1
 
-38daa02ae48a8a27ba1c478be131170edd9d36f20626b0edc2dfb7c8974709e3
+e56ea0530a269b3f61c621fa3387b87d2502b83b7ca4544aec1276f45c9e6da9

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.