linux-snps-arc.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 03/24] arc: use asm-generic/mmu_context.h for no-op implementations
       [not found] <20200728033405.78469-1-npiggin@gmail.com>
@ 2020-07-28  3:33 ` Nicholas Piggin
  2020-07-28  3:58   ` Vineet Gupta
       [not found] ` <20200728033405.78469-5-npiggin@gmail.com>
  1 sibling, 1 reply; 4+ messages in thread
From: Nicholas Piggin @ 2020-07-28  3:33 UTC (permalink / raw)
  To: linux-arch
  Cc: Arnd Bergmann, Vineet Gupta, linux-kernel, Nicholas Piggin,
	linux-mm, linux-snps-arc

Cc: Vineet Gupta <vgupta@synopsys.com>
Cc: linux-snps-arc@lists.infradead.org
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
---
 arch/arc/include/asm/mmu_context.h | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/arch/arc/include/asm/mmu_context.h b/arch/arc/include/asm/mmu_context.h
index 3a5e6a5b9ed6..586d31902a99 100644
--- a/arch/arc/include/asm/mmu_context.h
+++ b/arch/arc/include/asm/mmu_context.h
@@ -102,6 +102,7 @@ static inline void get_new_mmu_context(struct mm_struct *mm)
  * Initialize the context related info for a new mm_struct
  * instance.
  */
+#define init_new_context init_new_context
 static inline int
 init_new_context(struct task_struct *tsk, struct mm_struct *mm)
 {
@@ -113,6 +114,7 @@ init_new_context(struct task_struct *tsk, struct mm_struct *mm)
 	return 0;
 }
 
+#define destroy_context destroy_context
 static inline void destroy_context(struct mm_struct *mm)
 {
 	unsigned long flags;
@@ -153,13 +155,12 @@ static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next,
 }
 
 /*
- * Called at the time of execve() to get a new ASID
- * Note the subtlety here: get_new_mmu_context() behaves differently here
- * vs. in switch_mm(). Here it always returns a new ASID, because mm has
- * an unallocated "initial" value, while in latter, it moves to a new ASID,
- * only if it was unallocated
+ * activate_mm defaults to switch_mm and is called at the time of execve() to
+ * get a new ASID Note the subtlety here: get_new_mmu_context() behaves
+ * differently here vs. in switch_mm(). Here it always returns a new ASID,
+ * because mm has an unallocated "initial" value, while in latter, it moves to
+ * a new ASID, only if it was unallocated
  */
-#define activate_mm(prev, next)		switch_mm(prev, next, NULL)
 
 /* it seemed that deactivate_mm( ) is a reasonable place to do book-keeping
  * for retiring-mm. However destroy_context( ) still needs to do that because
@@ -168,8 +169,7 @@ static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next,
  * there is a good chance that task gets sched-out/in, making it's ASID valid
  * again (this teased me for a whole day).
  */
-#define deactivate_mm(tsk, mm)   do { } while (0)
 
-#define enter_lazy_tlb(mm, tsk)
+#include <asm-generic/mmu_context.h>
 
 #endif /* __ASM_ARC_MMU_CONTEXT_H */
-- 
2.23.0


_______________________________________________
linux-snps-arc mailing list
linux-snps-arc@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-snps-arc

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

* Re: [PATCH 03/24] arc: use asm-generic/mmu_context.h for no-op implementations
  2020-07-28  3:33 ` [PATCH 03/24] arc: use asm-generic/mmu_context.h for no-op implementations Nicholas Piggin
@ 2020-07-28  3:58   ` Vineet Gupta
  0 siblings, 0 replies; 4+ messages in thread
From: Vineet Gupta @ 2020-07-28  3:58 UTC (permalink / raw)
  To: Nicholas Piggin, linux-arch
  Cc: linux-mm, linux-snps-arc, linux-kernel, Arnd Bergmann

On 7/27/20 8:33 PM, Nicholas Piggin wrote:

>  /*
> - * Called at the time of execve() to get a new ASID
> - * Note the subtlety here: get_new_mmu_context() behaves differently here
> - * vs. in switch_mm(). Here it always returns a new ASID, because mm has
> - * an unallocated "initial" value, while in latter, it moves to a new ASID,
> - * only if it was unallocated
> + * activate_mm defaults to switch_mm and is called at the time of execve() to

With activate_mm() definition actually gone, perhaps add "activate_mm() comes from
generic code..." to provide next reader about the "spurious looking comment"

> + * get a new ASID Note the subtlety here: get_new_mmu_context() behaves
> + * differently here vs. in switch_mm(). Here it always returns a new ASID,
> + * because mm has an unallocated "initial" value, while in latter, it moves to
> + * a new ASID, only if it was unallocated
>   */
> -#define activate_mm(prev, next)		switch_mm(prev, next, NULL)
>  
>  /* it seemed that deactivate_mm( ) is a reasonable place to do book-keeping
>   * for retiring-mm. However destroy_context( ) still needs to do that because
> @@ -168,8 +169,7 @@ static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next,
>   * there is a good chance that task gets sched-out/in, making it's ASID valid
>   * again (this teased me for a whole day).
>   */
> -#define deactivate_mm(tsk, mm)   do { } while (0)

same for deactivate_mm()
_______________________________________________
linux-snps-arc mailing list
linux-snps-arc@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-snps-arc

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

* Re: [PATCH 04/24] arm: use asm-generic/mmu_context.h for no-op implementations
       [not found] ` <20200728033405.78469-5-npiggin@gmail.com>
@ 2020-07-28  4:14   ` Vineet Gupta
  2020-08-26 14:14     ` Nicholas Piggin
  0 siblings, 1 reply; 4+ messages in thread
From: Vineet Gupta @ 2020-07-28  4:14 UTC (permalink / raw)
  To: Nicholas Piggin, linux-arch
  Cc: Arnd Bergmann, linux-kernel, Russell King, linux-mm, arcml,
	linux-arm-kernel

On 7/27/20 8:33 PM, Nicholas Piggin wrote:
> Cc: Russell King <linux@armlinux.org.uk>
> Cc: linux-arm-kernel@lists.infradead.org
> Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
> ---
>  arch/arm/include/asm/mmu_context.h | 26 +++-----------------------
>  1 file changed, 3 insertions(+), 23 deletions(-)
> 
> diff --git a/arch/arm/include/asm/mmu_context.h b/arch/arm/include/asm/mmu_context.h
> index f99ed524fe41..84e58956fcab 100644
> --- a/arch/arm/include/asm/mmu_context.h
> +++ b/arch/arm/include/asm/mmu_context.h
> @@ -26,6 +26,8 @@ void __check_vmalloc_seq(struct mm_struct *mm);
>  #ifdef CONFIG_CPU_HAS_ASID
>  
>  void check_and_switch_context(struct mm_struct *mm, struct task_struct *tsk);
> +
> +#define init_new_context init_new_context
>  static inline int
>  init_new_context(struct task_struct *tsk, struct mm_struct *mm)
>  {
> @@ -92,32 +94,10 @@ static inline void finish_arch_post_lock_switch(void)
>  
>  #endif	/* CONFIG_MMU */
>  
> -static inline int
> -init_new_context(struct task_struct *tsk, struct mm_struct *mm)
> -{
> -	return 0;
> -}
> -
> -
>  #endif	/* CONFIG_CPU_HAS_ASID */
>  
> -#define destroy_context(mm)		do { } while(0)
>  #define activate_mm(prev,next)		switch_mm(prev, next, NULL)

Actually this can also go away too.

ARM switch_mm(prev, next, tsk) -> check_and_switch_context(next, tsk) but latter
doesn't use @tsk at all. With patch below, you can remove above as well...

-------->
From 672e0f78a94892794057a5a7542d85b71c1369c4 Mon Sep 17 00:00:00 2001
From: Vineet Gupta <vgupta@synopsys.com>
Date: Mon, 27 Jul 2020 21:12:42 -0700
Subject: [PATCH] ARM: mm: check_and_switch_context() doesn't use @tsk arg

Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
---
 arch/arm/include/asm/efi.h         | 2 +-
 arch/arm/include/asm/mmu_context.h | 5 ++---
 arch/arm/mm/context.c              | 2 +-
 3 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/arch/arm/include/asm/efi.h b/arch/arm/include/asm/efi.h
index 5dcf3c6011b7..0995b308149d 100644
--- a/arch/arm/include/asm/efi.h
+++ b/arch/arm/include/asm/efi.h
@@ -37,7 +37,7 @@ int efi_set_mapping_permissions(struct mm_struct *mm,
efi_memory_desc_t *md);

 static inline void efi_set_pgd(struct mm_struct *mm)
 {
-	check_and_switch_context(mm, NULL);
+	check_and_switch_context(mm);
 }

 void efi_virtmap_load(void);
diff --git a/arch/arm/include/asm/mmu_context.h b/arch/arm/include/asm/mmu_context.h
index f99ed524fe41..c96360fa3466 100644
--- a/arch/arm/include/asm/mmu_context.h
+++ b/arch/arm/include/asm/mmu_context.h
@@ -25,7 +25,7 @@ void __check_vmalloc_seq(struct mm_struct *mm);

 #ifdef CONFIG_CPU_HAS_ASID

-void check_and_switch_context(struct mm_struct *mm, struct task_struct *tsk);
+void check_and_switch_context(struct mm_struct *mm);
 static inline int
 init_new_context(struct task_struct *tsk, struct mm_struct *mm)
 {
@@ -47,8 +47,7 @@ static inline void a15_erratum_get_cpumask(int this_cpu, struct
mm_struct *mm,

 #ifdef CONFIG_MMU

-static inline void check_and_switch_context(struct mm_struct *mm,
-					    struct task_struct *tsk)
+static inline void check_and_switch_context(struct mm_struct *mm)
 {
 	if (unlikely(mm->context.vmalloc_seq != init_mm.context.vmalloc_seq))
 		__check_vmalloc_seq(mm);
diff --git a/arch/arm/mm/context.c b/arch/arm/mm/context.c
index b7525b433f3e..86c411e1d7cb 100644
--- a/arch/arm/mm/context.c
+++ b/arch/arm/mm/context.c
@@ -234,7 +234,7 @@ static u64 new_context(struct mm_struct *mm, unsigned int cpu)
 	return asid | generation;
 }

-void check_and_switch_context(struct mm_struct *mm, struct task_struct *tsk)
+void check_and_switch_context(struct mm_struct *mm)
 {
 	unsigned long flags;
 	unsigned int cpu = smp_processor_id();
-- 
2.20.1

_______________________________________________
linux-snps-arc mailing list
linux-snps-arc@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-snps-arc

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

* Re: [PATCH 04/24] arm: use asm-generic/mmu_context.h for no-op implementations
  2020-07-28  4:14   ` [PATCH 04/24] arm: " Vineet Gupta
@ 2020-08-26 14:14     ` Nicholas Piggin
  0 siblings, 0 replies; 4+ messages in thread
From: Nicholas Piggin @ 2020-08-26 14:14 UTC (permalink / raw)
  To: linux-arch, Vineet Gupta
  Cc: Arnd Bergmann, linux-kernel, Russell King, linux-mm, arcml,
	linux-arm-kernel

Excerpts from Vineet Gupta's message of July 28, 2020 2:14 pm:
> On 7/27/20 8:33 PM, Nicholas Piggin wrote:
>> Cc: Russell King <linux@armlinux.org.uk>
>> Cc: linux-arm-kernel@lists.infradead.org
>> Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
>> ---
>>  arch/arm/include/asm/mmu_context.h | 26 +++-----------------------
>>  1 file changed, 3 insertions(+), 23 deletions(-)
>> 
>> diff --git a/arch/arm/include/asm/mmu_context.h b/arch/arm/include/asm/mmu_context.h
>> index f99ed524fe41..84e58956fcab 100644
>> --- a/arch/arm/include/asm/mmu_context.h
>> +++ b/arch/arm/include/asm/mmu_context.h
>> @@ -26,6 +26,8 @@ void __check_vmalloc_seq(struct mm_struct *mm);
>>  #ifdef CONFIG_CPU_HAS_ASID
>>  
>>  void check_and_switch_context(struct mm_struct *mm, struct task_struct *tsk);
>> +
>> +#define init_new_context init_new_context
>>  static inline int
>>  init_new_context(struct task_struct *tsk, struct mm_struct *mm)
>>  {
>> @@ -92,32 +94,10 @@ static inline void finish_arch_post_lock_switch(void)
>>  
>>  #endif	/* CONFIG_MMU */
>>  
>> -static inline int
>> -init_new_context(struct task_struct *tsk, struct mm_struct *mm)
>> -{
>> -	return 0;
>> -}
>> -
>> -
>>  #endif	/* CONFIG_CPU_HAS_ASID */
>>  
>> -#define destroy_context(mm)		do { } while(0)
>>  #define activate_mm(prev,next)		switch_mm(prev, next, NULL)
> 
> Actually this can also go away too.
> 
> ARM switch_mm(prev, next, tsk) -> check_and_switch_context(next, tsk) but latter
> doesn't use @tsk at all. With patch below, you can remove above as well...

Thanks for reviewing. I did notice that might be possible but I was 
avoiding any change that wasn't completely trivial. It's a good point
to continue consolidating and simplifying though.

Thanks,
Nick

> 
> -------->
> From 672e0f78a94892794057a5a7542d85b71c1369c4 Mon Sep 17 00:00:00 2001
> From: Vineet Gupta <vgupta@synopsys.com>
> Date: Mon, 27 Jul 2020 21:12:42 -0700
> Subject: [PATCH] ARM: mm: check_and_switch_context() doesn't use @tsk arg
> 
> Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
> ---
>  arch/arm/include/asm/efi.h         | 2 +-
>  arch/arm/include/asm/mmu_context.h | 5 ++---
>  arch/arm/mm/context.c              | 2 +-
>  3 files changed, 4 insertions(+), 5 deletions(-)
> 
> diff --git a/arch/arm/include/asm/efi.h b/arch/arm/include/asm/efi.h
> index 5dcf3c6011b7..0995b308149d 100644
> --- a/arch/arm/include/asm/efi.h
> +++ b/arch/arm/include/asm/efi.h
> @@ -37,7 +37,7 @@ int efi_set_mapping_permissions(struct mm_struct *mm,
> efi_memory_desc_t *md);
> 
>  static inline void efi_set_pgd(struct mm_struct *mm)
>  {
> -	check_and_switch_context(mm, NULL);
> +	check_and_switch_context(mm);
>  }
> 
>  void efi_virtmap_load(void);
> diff --git a/arch/arm/include/asm/mmu_context.h b/arch/arm/include/asm/mmu_context.h
> index f99ed524fe41..c96360fa3466 100644
> --- a/arch/arm/include/asm/mmu_context.h
> +++ b/arch/arm/include/asm/mmu_context.h
> @@ -25,7 +25,7 @@ void __check_vmalloc_seq(struct mm_struct *mm);
> 
>  #ifdef CONFIG_CPU_HAS_ASID
> 
> -void check_and_switch_context(struct mm_struct *mm, struct task_struct *tsk);
> +void check_and_switch_context(struct mm_struct *mm);
>  static inline int
>  init_new_context(struct task_struct *tsk, struct mm_struct *mm)
>  {
> @@ -47,8 +47,7 @@ static inline void a15_erratum_get_cpumask(int this_cpu, struct
> mm_struct *mm,
> 
>  #ifdef CONFIG_MMU
> 
> -static inline void check_and_switch_context(struct mm_struct *mm,
> -					    struct task_struct *tsk)
> +static inline void check_and_switch_context(struct mm_struct *mm)
>  {
>  	if (unlikely(mm->context.vmalloc_seq != init_mm.context.vmalloc_seq))
>  		__check_vmalloc_seq(mm);
> diff --git a/arch/arm/mm/context.c b/arch/arm/mm/context.c
> index b7525b433f3e..86c411e1d7cb 100644
> --- a/arch/arm/mm/context.c
> +++ b/arch/arm/mm/context.c
> @@ -234,7 +234,7 @@ static u64 new_context(struct mm_struct *mm, unsigned int cpu)
>  	return asid | generation;
>  }
> 
> -void check_and_switch_context(struct mm_struct *mm, struct task_struct *tsk)
> +void check_and_switch_context(struct mm_struct *mm)
>  {
>  	unsigned long flags;
>  	unsigned int cpu = smp_processor_id();
> -- 
> 2.20.1
> 
> 

_______________________________________________
linux-snps-arc mailing list
linux-snps-arc@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-snps-arc

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

end of thread, other threads:[~2020-08-26 14:15 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <20200728033405.78469-1-npiggin@gmail.com>
2020-07-28  3:33 ` [PATCH 03/24] arc: use asm-generic/mmu_context.h for no-op implementations Nicholas Piggin
2020-07-28  3:58   ` Vineet Gupta
     [not found] ` <20200728033405.78469-5-npiggin@gmail.com>
2020-07-28  4:14   ` [PATCH 04/24] arm: " Vineet Gupta
2020-08-26 14:14     ` Nicholas Piggin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).