* [PATCH 01/24] asm-generic: add generic versions of mmu context functions
2020-07-28 3:33 [PATCH 00/24] Use asm-generic for mmu_context no-op functions Nicholas Piggin
@ 2020-07-28 3:33 ` Nicholas Piggin
2020-07-28 4:01 ` Vineet Gupta
` (2 more replies)
2020-07-28 3:33 ` [PATCH 02/24] alpha: use asm-generic/mmu_context.h for no-op implementations Nicholas Piggin
` (22 subsequent siblings)
23 siblings, 3 replies; 40+ messages in thread
From: Nicholas Piggin @ 2020-07-28 3:33 UTC (permalink / raw)
To: linux-arch; +Cc: Nicholas Piggin, linux-kernel, linux-mm, Arnd Bergmann
Many of these are no-ops on many architectures, so extend mmu_context.h
to cover MMU and NOMMU, and split the NOMMU bits out to nommu_context.h
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: linux-arch@vger.kernel.org
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
---
arch/microblaze/include/asm/mmu_context.h | 2 +-
arch/sh/include/asm/mmu_context.h | 2 +-
include/asm-generic/mmu_context.h | 57 +++++++++++++++++------
include/asm-generic/nommu_context.h | 19 ++++++++
4 files changed, 64 insertions(+), 16 deletions(-)
create mode 100644 include/asm-generic/nommu_context.h
diff --git a/arch/microblaze/include/asm/mmu_context.h b/arch/microblaze/include/asm/mmu_context.h
index f74f9da07fdc..34004efb3def 100644
--- a/arch/microblaze/include/asm/mmu_context.h
+++ b/arch/microblaze/include/asm/mmu_context.h
@@ -2,5 +2,5 @@
#ifdef CONFIG_MMU
# include <asm/mmu_context_mm.h>
#else
-# include <asm-generic/mmu_context.h>
+# include <asm-generic/nommu_context.h>
#endif
diff --git a/arch/sh/include/asm/mmu_context.h b/arch/sh/include/asm/mmu_context.h
index 48e67d544d53..9470d17c71c2 100644
--- a/arch/sh/include/asm/mmu_context.h
+++ b/arch/sh/include/asm/mmu_context.h
@@ -134,7 +134,7 @@ static inline void switch_mm(struct mm_struct *prev,
#define set_TTB(pgd) do { } while (0)
#define get_TTB() (0)
-#include <asm-generic/mmu_context.h>
+#include <asm-generic/nommu_context.h>
#endif /* CONFIG_MMU */
diff --git a/include/asm-generic/mmu_context.h b/include/asm-generic/mmu_context.h
index 6be9106fb6fb..86cea80a50df 100644
--- a/include/asm-generic/mmu_context.h
+++ b/include/asm-generic/mmu_context.h
@@ -3,44 +3,73 @@
#define __ASM_GENERIC_MMU_CONTEXT_H
/*
- * Generic hooks for NOMMU architectures, which do not need to do
- * anything special here.
+ * Generic hooks to implement no-op functionality.
*/
-#include <asm-generic/mm_hooks.h>
-
struct task_struct;
struct mm_struct;
+/*
+ * enter_lazy_tlb - Called when "tsk" is about to enter lazy TLB mode.
+ *
+ * @mm: the currently active mm context which is becoming lazy
+ * @tsk: task which is entering lazy tlb
+ *
+ * tsk->mm will be NULL
+ */
+#ifndef enter_lazy_tlb
static inline void enter_lazy_tlb(struct mm_struct *mm,
struct task_struct *tsk)
{
}
+#endif
+/**
+ * init_new_context - Initialize context of a new mm_struct.
+ * @tsk: task struct for the mm
+ * @mm: the new mm struct
+ */
+#ifndef init_new_context
static inline int init_new_context(struct task_struct *tsk,
struct mm_struct *mm)
{
return 0;
}
+#endif
+/**
+ * destroy_context - Undo init_new_context when the mm is going away
+ * @mm: old mm struct
+ */
+#ifndef destroy_context
static inline void destroy_context(struct mm_struct *mm)
{
}
+#endif
-static inline void deactivate_mm(struct task_struct *task,
- struct mm_struct *mm)
-{
-}
-
-static inline void switch_mm(struct mm_struct *prev,
- struct mm_struct *next,
- struct task_struct *tsk)
+/**
+ * activate_mm - called after exec switches the current task to a new mm, to switch to it
+ * @prev_mm: previous mm of this task
+ * @next_mm: new mm
+ */
+#ifndef activate_mm
+static inline void activate_mm(struct mm_struct *prev_mm,
+ struct mm_struct *next_mm)
{
+ switch_mm(prev_mm, next_mm, current);
}
+#endif
-static inline void activate_mm(struct mm_struct *prev_mm,
- struct mm_struct *next_mm)
+/**
+ * dectivate_mm - called when an mm is released after exit or exec switches away from it
+ * @tsk: the task
+ * @mm: the old mm
+ */
+#ifndef deactivate_mm
+static inline void deactivate_mm(struct task_struct *tsk,
+ struct mm_struct *mm)
{
}
+#endif
#endif /* __ASM_GENERIC_MMU_CONTEXT_H */
diff --git a/include/asm-generic/nommu_context.h b/include/asm-generic/nommu_context.h
new file mode 100644
index 000000000000..72b8d8b1d81e
--- /dev/null
+++ b/include/asm-generic/nommu_context.h
@@ -0,0 +1,19 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __ASM_GENERIC_NOMMU_H
+#define __ASM_GENERIC_NOMMU_H
+
+/*
+ * Generic hooks for NOMMU architectures, which do not need to do
+ * anything special here.
+ */
+
+#include <asm-generic/mm_hooks.h>
+#include <asm-generic/mmu_context.h>
+
+static inline void switch_mm(struct mm_struct *prev,
+ struct mm_struct *next,
+ struct task_struct *tsk)
+{
+}
+
+#endif /* __ASM_GENERIC_NOMMU_H */
--
2.23.0
^ permalink raw reply related [flat|nested] 40+ messages in thread
* Re: [PATCH 01/24] asm-generic: add generic versions of mmu context functions
2020-07-28 3:33 ` [PATCH 01/24] asm-generic: add generic versions of mmu context functions Nicholas Piggin
@ 2020-07-28 4:01 ` Vineet Gupta
2020-07-28 10:37 ` Nicholas Piggin
2020-08-26 13:59 ` Nicholas Piggin
2020-07-28 5:53 ` kernel test robot
2020-07-28 23:52 ` kernel test robot
2 siblings, 2 replies; 40+ messages in thread
From: Vineet Gupta @ 2020-07-28 4:01 UTC (permalink / raw)
To: Nicholas Piggin, linux-arch; +Cc: linux-kernel, linux-mm, Arnd Bergmann
On 7/27/20 8:33 PM, Nicholas Piggin wrote:
> Many of these are no-ops on many architectures, so extend mmu_context.h
> to cover MMU and NOMMU, and split the NOMMU bits out to nommu_context.h
>
> -static inline void switch_mm(struct mm_struct *prev,
> - struct mm_struct *next,
> - struct task_struct *tsk)
> +/**
> + * activate_mm - called after exec switches the current task to a new mm, to switch to it
> + * @prev_mm: previous mm of this task
> + * @next_mm: new mm
> + */
> +#ifndef activate_mm
> +static inline void activate_mm(struct mm_struct *prev_mm,
> + struct mm_struct *next_mm)
> {
> + switch_mm(prev_mm, next_mm, current);
> }
> +#endif
Is activate_mm() really needed now. It seems most arches have
activate_mm(p, n) -> switch_mm(p, n, NULL)
And if we are passing current, that can be pushed inside switch_mm()
>
> -static inline void activate_mm(struct mm_struct *prev_mm,
> - struct mm_struct *next_mm)
^ permalink raw reply [flat|nested] 40+ messages in thread
* Re: [PATCH 01/24] asm-generic: add generic versions of mmu context functions
2020-07-28 4:01 ` Vineet Gupta
@ 2020-07-28 10:37 ` Nicholas Piggin
2020-08-26 13:59 ` Nicholas Piggin
1 sibling, 0 replies; 40+ messages in thread
From: Nicholas Piggin @ 2020-07-28 10:37 UTC (permalink / raw)
To: linux-arch, Vineet Gupta; +Cc: Arnd Bergmann, linux-kernel, linux-mm
Excerpts from Vineet Gupta's message of July 28, 2020 2:01 pm:
> On 7/27/20 8:33 PM, Nicholas Piggin wrote:
>> Many of these are no-ops on many architectures, so extend mmu_context.h
>> to cover MMU and NOMMU, and split the NOMMU bits out to nommu_context.h
>>
>
>> -static inline void switch_mm(struct mm_struct *prev,
>> - struct mm_struct *next,
>> - struct task_struct *tsk)
>> +/**
>> + * activate_mm - called after exec switches the current task to a new mm, to switch to it
>> + * @prev_mm: previous mm of this task
>> + * @next_mm: new mm
>> + */
>> +#ifndef activate_mm
>> +static inline void activate_mm(struct mm_struct *prev_mm,
>> + struct mm_struct *next_mm)
>> {
>> + switch_mm(prev_mm, next_mm, current);
>> }
>> +#endif
>
> Is activate_mm() really needed now. It seems most arches have
> activate_mm(p, n) -> switch_mm(p, n, NULL)
>
> And if we are passing current, that can be pushed inside switch_mm()
Thanks for taking a look, I think there may be more consolidation
like this possible, and certainly some of the arch patches could
have gone a bit further.
I wanted to be fairly careful to make only quite trivial changes
(only the obvious no-ops) for the first iteration, but once this
is in the tree it should become a fair bit easier to do some
of your suggestions.
There's a few things that make activate_mm->switch_mm not quite
simple - alpha, nios2, parisc, s390, maybe x86.
Thanks,
Nick
^ permalink raw reply [flat|nested] 40+ messages in thread
* Re: [PATCH 01/24] asm-generic: add generic versions of mmu context functions
2020-07-28 4:01 ` Vineet Gupta
2020-07-28 10:37 ` Nicholas Piggin
@ 2020-08-26 13:59 ` Nicholas Piggin
1 sibling, 0 replies; 40+ messages in thread
From: Nicholas Piggin @ 2020-08-26 13:59 UTC (permalink / raw)
To: linux-arch, Vineet Gupta; +Cc: Arnd Bergmann, linux-kernel, linux-mm
Excerpts from Vineet Gupta's message of July 28, 2020 2:01 pm:
> On 7/27/20 8:33 PM, Nicholas Piggin wrote:
>> Many of these are no-ops on many architectures, so extend mmu_context.h
>> to cover MMU and NOMMU, and split the NOMMU bits out to nommu_context.h
>>
>
>> -static inline void switch_mm(struct mm_struct *prev,
>> - struct mm_struct *next,
>> - struct task_struct *tsk)
>> +/**
>> + * activate_mm - called after exec switches the current task to a new mm, to switch to it
>> + * @prev_mm: previous mm of this task
>> + * @next_mm: new mm
>> + */
>> +#ifndef activate_mm
>> +static inline void activate_mm(struct mm_struct *prev_mm,
>> + struct mm_struct *next_mm)
>> {
>> + switch_mm(prev_mm, next_mm, current);
>> }
>> +#endif
>
> Is activate_mm() really needed now. It seems most arches have
> activate_mm(p, n) -> switch_mm(p, n, NULL)
Alpha, nios2, parisc, s390, um, x86 have non-trivial differences,
so it seems to be still needed.
Thanks,
Nick
^ permalink raw reply [flat|nested] 40+ messages in thread
* Re: [PATCH 01/24] asm-generic: add generic versions of mmu context functions
2020-07-28 3:33 ` [PATCH 01/24] asm-generic: add generic versions of mmu context functions Nicholas Piggin
2020-07-28 4:01 ` Vineet Gupta
@ 2020-07-28 5:53 ` kernel test robot
2020-07-28 23:52 ` kernel test robot
2 siblings, 0 replies; 40+ messages in thread
From: kernel test robot @ 2020-07-28 5:53 UTC (permalink / raw)
To: Nicholas Piggin, linux-arch
Cc: kbuild-all, Nicholas Piggin, linux-kernel, linux-mm, Arnd Bergmann
[-- Attachment #1: Type: text/plain, Size: 3096 bytes --]
Hi Nicholas,
I love your patch! Yet something to improve:
[auto build test ERROR on openrisc/for-next]
[also build test ERROR on sparc/master linus/master asm-generic/master v5.8-rc7 next-20200727]
[cannot apply to nios2/for-linus]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Nicholas-Piggin/Use-asm-generic-for-mmu_context-no-op-functions/20200728-113854
base: https://github.com/openrisc/linux.git for-next
config: c6x-allyesconfig (attached as .config)
compiler: c6x-elf-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=c6x
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
In file included from ./arch/c6x/include/generated/asm/mmu_context.h:1,
from include/linux/mmu_context.h:5,
from kernel//sched/sched.h:54,
from kernel//sched/core.c:9:
include/asm-generic/mmu_context.h: In function 'activate_mm':
>> include/asm-generic/mmu_context.h:59:2: error: implicit declaration of function 'switch_mm' [-Werror=implicit-function-declaration]
59 | switch_mm(prev_mm, next_mm, current);
| ^~~~~~~~~
cc1: some warnings being treated as errors
--
In file included from ./arch/c6x/include/generated/asm/mmu_context.h:1,
from include/linux/mmu_context.h:5,
from kernel//sched/sched.h:54,
from kernel//sched/rt.c:6:
include/asm-generic/mmu_context.h: In function 'activate_mm':
>> include/asm-generic/mmu_context.h:59:2: error: implicit declaration of function 'switch_mm' [-Werror=implicit-function-declaration]
59 | switch_mm(prev_mm, next_mm, current);
| ^~~~~~~~~
kernel//sched/rt.c: At top level:
kernel//sched/rt.c:668:6: warning: no previous prototype for 'sched_rt_bandwidth_account' [-Wmissing-prototypes]
668 | bool sched_rt_bandwidth_account(struct rt_rq *rt_rq)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
vim +/switch_mm +59 include/asm-generic/mmu_context.h
49
50 /**
51 * activate_mm - called after exec switches the current task to a new mm, to switch to it
52 * @prev_mm: previous mm of this task
53 * @next_mm: new mm
54 */
55 #ifndef activate_mm
56 static inline void activate_mm(struct mm_struct *prev_mm,
57 struct mm_struct *next_mm)
58 {
> 59 switch_mm(prev_mm, next_mm, current);
60 }
61 #endif
62
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 53627 bytes --]
^ permalink raw reply [flat|nested] 40+ messages in thread
* Re: [PATCH 01/24] asm-generic: add generic versions of mmu context functions
2020-07-28 3:33 ` [PATCH 01/24] asm-generic: add generic versions of mmu context functions Nicholas Piggin
2020-07-28 4:01 ` Vineet Gupta
2020-07-28 5:53 ` kernel test robot
@ 2020-07-28 23:52 ` kernel test robot
2 siblings, 0 replies; 40+ messages in thread
From: kernel test robot @ 2020-07-28 23:52 UTC (permalink / raw)
To: Nicholas Piggin, linux-arch
Cc: kbuild-all, Nicholas Piggin, linux-kernel, linux-mm, Arnd Bergmann
[-- Attachment #1: Type: text/plain, Size: 13783 bytes --]
Hi Nicholas,
I love your patch! Yet something to improve:
[auto build test ERROR on openrisc/for-next]
[also build test ERROR on sparc-next/master sparc/master linus/master asm-generic/master xtensa/for_next v5.8-rc7 next-20200728]
[cannot apply to nios2/for-linus]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Nicholas-Piggin/Use-asm-generic-for-mmu_context-no-op-functions/20200728-113854
base: https://github.com/openrisc/linux.git for-next
config: sh-allmodconfig (attached as .config)
compiler: sh4-linux-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=sh
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All error/warnings (new ones prefixed by >>):
In file included from include/asm-generic/nommu_context.h:11,
from arch/sh/include/asm/mmu_context.h:137,
from arch/sh/kernel/process_32.c:26:
include/asm-generic/mmu_context.h: In function 'activate_mm':
include/asm-generic/mmu_context.h:59:2: error: implicit declaration of function 'switch_mm' [-Werror=implicit-function-declaration]
59 | switch_mm(prev_mm, next_mm, current);
| ^~~~~~~~~
In file included from arch/sh/include/asm/mmu_context.h:137,
from arch/sh/kernel/process_32.c:26:
include/asm-generic/nommu_context.h: At top level:
include/asm-generic/nommu_context.h:13:20: error: conflicting types for 'switch_mm' [-Werror]
13 | static inline void switch_mm(struct mm_struct *prev,
| ^~~~~~~~~
>> include/asm-generic/nommu_context.h:13:20: error: static declaration of 'switch_mm' follows non-static declaration
In file included from include/asm-generic/nommu_context.h:11,
from arch/sh/include/asm/mmu_context.h:137,
from arch/sh/kernel/process_32.c:26:
include/asm-generic/mmu_context.h:59:2: note: previous implicit declaration of 'switch_mm' was here
59 | switch_mm(prev_mm, next_mm, current);
| ^~~~~~~~~
cc1: all warnings being treated as errors
--
In file included from include/asm-generic/nommu_context.h:11,
from arch/sh/include/asm/mmu_context.h:137,
from arch/sh/kernel/setup.c:44:
include/asm-generic/mmu_context.h: In function 'activate_mm':
include/asm-generic/mmu_context.h:59:2: error: implicit declaration of function 'switch_mm' [-Werror=implicit-function-declaration]
59 | switch_mm(prev_mm, next_mm, current);
| ^~~~~~~~~
In file included from arch/sh/include/asm/mmu_context.h:137,
from arch/sh/kernel/setup.c:44:
include/asm-generic/nommu_context.h: At top level:
include/asm-generic/nommu_context.h:13:20: error: conflicting types for 'switch_mm' [-Werror]
13 | static inline void switch_mm(struct mm_struct *prev,
| ^~~~~~~~~
>> include/asm-generic/nommu_context.h:13:20: error: static declaration of 'switch_mm' follows non-static declaration
In file included from include/asm-generic/nommu_context.h:11,
from arch/sh/include/asm/mmu_context.h:137,
from arch/sh/kernel/setup.c:44:
include/asm-generic/mmu_context.h:59:2: note: previous implicit declaration of 'switch_mm' was here
59 | switch_mm(prev_mm, next_mm, current);
| ^~~~~~~~~
arch/sh/kernel/setup.c:248:12: error: no previous prototype for 'sh_fdt_init' [-Werror=missing-prototypes]
248 | void __ref sh_fdt_init(phys_addr_t dt_phys)
| ^~~~~~~~~~~
cc1: all warnings being treated as errors
--
In file included from include/asm-generic/nommu_context.h:11,
from arch/sh/include/asm/mmu_context.h:137,
from arch/sh/kernel/hw_breakpoint.c:21:
include/asm-generic/mmu_context.h: In function 'activate_mm':
include/asm-generic/mmu_context.h:59:2: error: implicit declaration of function 'switch_mm' [-Werror=implicit-function-declaration]
59 | switch_mm(prev_mm, next_mm, current);
| ^~~~~~~~~
In file included from arch/sh/include/asm/mmu_context.h:137,
from arch/sh/kernel/hw_breakpoint.c:21:
include/asm-generic/nommu_context.h: At top level:
include/asm-generic/nommu_context.h:13:20: error: conflicting types for 'switch_mm' [-Werror]
13 | static inline void switch_mm(struct mm_struct *prev,
| ^~~~~~~~~
>> include/asm-generic/nommu_context.h:13:20: error: static declaration of 'switch_mm' follows non-static declaration
In file included from include/asm-generic/nommu_context.h:11,
from arch/sh/include/asm/mmu_context.h:137,
from arch/sh/kernel/hw_breakpoint.c:21:
include/asm-generic/mmu_context.h:59:2: note: previous implicit declaration of 'switch_mm' was here
59 | switch_mm(prev_mm, next_mm, current);
| ^~~~~~~~~
arch/sh/kernel/hw_breakpoint.c:135:5: error: no previous prototype for 'arch_bp_generic_fields' [-Werror=missing-prototypes]
135 | int arch_bp_generic_fields(int sh_len, int sh_type,
| ^~~~~~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
--
In file included from include/asm-generic/nommu_context.h:11,
from arch/sh/include/asm/mmu_context.h:137,
from arch/sh/kernel/cpu/init.c:14:
include/asm-generic/mmu_context.h: In function 'activate_mm':
include/asm-generic/mmu_context.h:59:2: error: implicit declaration of function 'switch_mm' [-Werror=implicit-function-declaration]
59 | switch_mm(prev_mm, next_mm, current);
| ^~~~~~~~~
In file included from arch/sh/include/asm/mmu_context.h:137,
from arch/sh/kernel/cpu/init.c:14:
include/asm-generic/nommu_context.h: At top level:
>> include/asm-generic/nommu_context.h:13:20: warning: conflicting types for 'switch_mm'
13 | static inline void switch_mm(struct mm_struct *prev,
| ^~~~~~~~~
>> include/asm-generic/nommu_context.h:13:20: error: static declaration of 'switch_mm' follows non-static declaration
In file included from include/asm-generic/nommu_context.h:11,
from arch/sh/include/asm/mmu_context.h:137,
from arch/sh/kernel/cpu/init.c:14:
include/asm-generic/mmu_context.h:59:2: note: previous implicit declaration of 'switch_mm' was here
59 | switch_mm(prev_mm, next_mm, current);
| ^~~~~~~~~
arch/sh/kernel/cpu/init.c:99:29: warning: no previous prototype for 'l2_cache_init' [-Wmissing-prototypes]
99 | void __attribute__ ((weak)) l2_cache_init(void)
| ^~~~~~~~~~~~~
cc1: some warnings being treated as errors
--
In file included from include/asm-generic/nommu_context.h:11,
from arch/sh/include/asm/mmu_context.h:137,
from kernel/fork.c:101:
include/asm-generic/mmu_context.h: In function 'activate_mm':
include/asm-generic/mmu_context.h:59:2: error: implicit declaration of function 'switch_mm' [-Werror=implicit-function-declaration]
59 | switch_mm(prev_mm, next_mm, current);
| ^~~~~~~~~
In file included from arch/sh/include/asm/mmu_context.h:137,
from kernel/fork.c:101:
include/asm-generic/nommu_context.h: At top level:
>> include/asm-generic/nommu_context.h:13:20: warning: conflicting types for 'switch_mm'
13 | static inline void switch_mm(struct mm_struct *prev,
| ^~~~~~~~~
>> include/asm-generic/nommu_context.h:13:20: error: static declaration of 'switch_mm' follows non-static declaration
In file included from include/asm-generic/nommu_context.h:11,
from arch/sh/include/asm/mmu_context.h:137,
from kernel/fork.c:101:
include/asm-generic/mmu_context.h:59:2: note: previous implicit declaration of 'switch_mm' was here
59 | switch_mm(prev_mm, next_mm, current);
| ^~~~~~~~~
cc1: some warnings being treated as errors
--
In file included from include/asm-generic/nommu_context.h:11,
from arch/sh/include/asm/mmu_context.h:137,
from kernel/exit.c:69:
include/asm-generic/mmu_context.h: In function 'activate_mm':
include/asm-generic/mmu_context.h:59:2: error: implicit declaration of function 'switch_mm' [-Werror=implicit-function-declaration]
59 | switch_mm(prev_mm, next_mm, current);
| ^~~~~~~~~
In file included from arch/sh/include/asm/mmu_context.h:137,
from kernel/exit.c:69:
include/asm-generic/nommu_context.h: At top level:
>> include/asm-generic/nommu_context.h:13:20: warning: conflicting types for 'switch_mm'
13 | static inline void switch_mm(struct mm_struct *prev,
| ^~~~~~~~~
>> include/asm-generic/nommu_context.h:13:20: error: static declaration of 'switch_mm' follows non-static declaration
In file included from include/asm-generic/nommu_context.h:11,
from arch/sh/include/asm/mmu_context.h:137,
from kernel/exit.c:69:
include/asm-generic/mmu_context.h:59:2: note: previous implicit declaration of 'switch_mm' was here
59 | switch_mm(prev_mm, next_mm, current);
| ^~~~~~~~~
kernel/exit.c:1714:13: warning: no previous prototype for 'abort' [-Wmissing-prototypes]
1714 | __weak void abort(void)
| ^~~~~
cc1: some warnings being treated as errors
--
In file included from include/asm-generic/nommu_context.h:11,
from arch/sh/include/asm/mmu_context.h:137,
from include/linux/mmu_context.h:5,
from kernel/sched/sched.h:54,
from kernel/sched/rt.c:6:
include/asm-generic/mmu_context.h: In function 'activate_mm':
include/asm-generic/mmu_context.h:59:2: error: implicit declaration of function 'switch_mm' [-Werror=implicit-function-declaration]
59 | switch_mm(prev_mm, next_mm, current);
| ^~~~~~~~~
In file included from arch/sh/include/asm/mmu_context.h:137,
from include/linux/mmu_context.h:5,
from kernel/sched/sched.h:54,
from kernel/sched/rt.c:6:
include/asm-generic/nommu_context.h: At top level:
>> include/asm-generic/nommu_context.h:13:20: warning: conflicting types for 'switch_mm'
13 | static inline void switch_mm(struct mm_struct *prev,
| ^~~~~~~~~
>> include/asm-generic/nommu_context.h:13:20: error: static declaration of 'switch_mm' follows non-static declaration
In file included from include/asm-generic/nommu_context.h:11,
from arch/sh/include/asm/mmu_context.h:137,
from include/linux/mmu_context.h:5,
from kernel/sched/sched.h:54,
from kernel/sched/rt.c:6:
include/asm-generic/mmu_context.h:59:2: note: previous implicit declaration of 'switch_mm' was here
59 | switch_mm(prev_mm, next_mm, current);
| ^~~~~~~~~
kernel/sched/rt.c:668:6: warning: no previous prototype for 'sched_rt_bandwidth_account' [-Wmissing-prototypes]
668 | bool sched_rt_bandwidth_account(struct rt_rq *rt_rq)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
--
In file included from include/asm-generic/nommu_context.h:11,
from arch/sh/include/asm/mmu_context.h:137,
from mm/nommu.c:43:
include/asm-generic/mmu_context.h: In function 'activate_mm':
include/asm-generic/mmu_context.h:59:2: error: implicit declaration of function 'switch_mm' [-Werror=implicit-function-declaration]
59 | switch_mm(prev_mm, next_mm, current);
| ^~~~~~~~~
In file included from arch/sh/include/asm/mmu_context.h:137,
from mm/nommu.c:43:
include/asm-generic/nommu_context.h: At top level:
>> include/asm-generic/nommu_context.h:13:20: warning: conflicting types for 'switch_mm'
13 | static inline void switch_mm(struct mm_struct *prev,
| ^~~~~~~~~
>> include/asm-generic/nommu_context.h:13:20: error: static declaration of 'switch_mm' follows non-static declaration
In file included from include/asm-generic/nommu_context.h:11,
from arch/sh/include/asm/mmu_context.h:137,
from mm/nommu.c:43:
include/asm-generic/mmu_context.h:59:2: note: previous implicit declaration of 'switch_mm' was here
59 | switch_mm(prev_mm, next_mm, current);
| ^~~~~~~~~
mm/nommu.c:1665:15: warning: no previous prototype for 'arch_get_unmapped_area' [-Wmissing-prototypes]
1665 | unsigned long arch_get_unmapped_area(struct file *file, unsigned long addr,
| ^~~~~~~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
vim +/switch_mm +13 include/asm-generic/nommu_context.h
12
> 13 static inline void switch_mm(struct mm_struct *prev,
14 struct mm_struct *next,
15 struct task_struct *tsk)
16 {
17 }
18
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 53840 bytes --]
^ permalink raw reply [flat|nested] 40+ messages in thread
* [PATCH 02/24] alpha: use asm-generic/mmu_context.h for no-op implementations
2020-07-28 3:33 [PATCH 00/24] Use asm-generic for mmu_context no-op functions Nicholas Piggin
2020-07-28 3:33 ` [PATCH 01/24] asm-generic: add generic versions of mmu context functions Nicholas Piggin
@ 2020-07-28 3:33 ` Nicholas Piggin
2020-07-28 3:33 ` [PATCH 03/24] arc: " Nicholas Piggin
` (21 subsequent siblings)
23 siblings, 0 replies; 40+ messages in thread
From: Nicholas Piggin @ 2020-07-28 3:33 UTC (permalink / raw)
To: linux-arch
Cc: Nicholas Piggin, linux-kernel, linux-mm, Arnd Bergmann,
Richard Henderson, Ivan Kokshaysky, Matt Turner, linux-alpha
Cc: Richard Henderson <rth@twiddle.net>
Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
Cc: Matt Turner <mattst88@gmail.com>
Cc: linux-alpha@vger.kernel.org
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
---
arch/alpha/include/asm/mmu_context.h | 12 ++++--------
1 file changed, 4 insertions(+), 8 deletions(-)
diff --git a/arch/alpha/include/asm/mmu_context.h b/arch/alpha/include/asm/mmu_context.h
index 6d7d9bc1b4b8..4eea7c616992 100644
--- a/arch/alpha/include/asm/mmu_context.h
+++ b/arch/alpha/include/asm/mmu_context.h
@@ -214,8 +214,6 @@ ev4_activate_mm(struct mm_struct *prev_mm, struct mm_struct *next_mm)
tbiap();
}
-#define deactivate_mm(tsk,mm) do { } while (0)
-
#ifdef CONFIG_ALPHA_GENERIC
# define switch_mm(a,b,c) alpha_mv.mv_switch_mm((a),(b),(c))
# define activate_mm(x,y) alpha_mv.mv_activate_mm((x),(y))
@@ -229,6 +227,7 @@ ev4_activate_mm(struct mm_struct *prev_mm, struct mm_struct *next_mm)
# endif
#endif
+#define init_new_context init_new_context
static inline int
init_new_context(struct task_struct *tsk, struct mm_struct *mm)
{
@@ -242,12 +241,7 @@ init_new_context(struct task_struct *tsk, struct mm_struct *mm)
return 0;
}
-extern inline void
-destroy_context(struct mm_struct *mm)
-{
- /* Nothing to do. */
-}
-
+#define enter_lazy_tlb enter_lazy_tlb
static inline void
enter_lazy_tlb(struct mm_struct *mm, struct task_struct *tsk)
{
@@ -255,6 +249,8 @@ enter_lazy_tlb(struct mm_struct *mm, struct task_struct *tsk)
= ((unsigned long)mm->pgd - IDENT_ADDR) >> PAGE_SHIFT;
}
+#include <asm-generic/mmu_context.h>
+
#ifdef __MMU_EXTERN_INLINE
#undef __EXTERN_INLINE
#undef __MMU_EXTERN_INLINE
--
2.23.0
^ permalink raw reply related [flat|nested] 40+ messages in thread
* [PATCH 03/24] arc: use asm-generic/mmu_context.h for no-op implementations
2020-07-28 3:33 [PATCH 00/24] Use asm-generic for mmu_context no-op functions Nicholas Piggin
2020-07-28 3:33 ` [PATCH 01/24] asm-generic: add generic versions of mmu context functions Nicholas Piggin
2020-07-28 3:33 ` [PATCH 02/24] alpha: use asm-generic/mmu_context.h for no-op implementations Nicholas Piggin
@ 2020-07-28 3:33 ` Nicholas Piggin
2020-07-28 3:58 ` Vineet Gupta
2020-07-28 3:33 ` [PATCH 04/24] arm: " Nicholas Piggin
` (20 subsequent siblings)
23 siblings, 1 reply; 40+ messages in thread
From: Nicholas Piggin @ 2020-07-28 3:33 UTC (permalink / raw)
To: linux-arch
Cc: Nicholas Piggin, linux-kernel, linux-mm, Arnd Bergmann,
Vineet Gupta, 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
^ permalink raw reply related [flat|nested] 40+ 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: " Nicholas Piggin
@ 2020-07-28 3:58 ` Vineet Gupta
0 siblings, 0 replies; 40+ messages in thread
From: Vineet Gupta @ 2020-07-28 3:58 UTC (permalink / raw)
To: Nicholas Piggin, linux-arch
Cc: linux-kernel, linux-mm, Arnd Bergmann, linux-snps-arc
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()
^ permalink raw reply [flat|nested] 40+ messages in thread
* [PATCH 04/24] arm: use asm-generic/mmu_context.h for no-op implementations
2020-07-28 3:33 [PATCH 00/24] Use asm-generic for mmu_context no-op functions Nicholas Piggin
` (2 preceding siblings ...)
2020-07-28 3:33 ` [PATCH 03/24] arc: " Nicholas Piggin
@ 2020-07-28 3:33 ` Nicholas Piggin
2020-07-28 4:14 ` Vineet Gupta
2020-07-28 3:33 ` [PATCH 05/24] arm64: " Nicholas Piggin
` (19 subsequent siblings)
23 siblings, 1 reply; 40+ messages in thread
From: Nicholas Piggin @ 2020-07-28 3:33 UTC (permalink / raw)
To: linux-arch
Cc: Nicholas Piggin, linux-kernel, linux-mm, Arnd Bergmann,
Russell King, linux-arm-kernel
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)
-/*
- * This is called when "tsk" is about to enter lazy TLB mode.
- *
- * mm: describes the currently active mm context
- * tsk: task which is entering lazy tlb
- * cpu: cpu number which is entering lazy tlb
- *
- * tsk->mm will be NULL
- */
-static inline void
-enter_lazy_tlb(struct mm_struct *mm, struct task_struct *tsk)
-{
-}
-
/*
* This is the actual mm switch as far as the scheduler
* is concerned. No registers are touched. We avoid
@@ -149,6 +129,6 @@ switch_mm(struct mm_struct *prev, struct mm_struct *next,
#endif
}
-#define deactivate_mm(tsk,mm) do { } while (0)
+#include <asm-generic/mmu_context.h>
#endif
--
2.23.0
^ permalink raw reply related [flat|nested] 40+ messages in thread
* Re: [PATCH 04/24] arm: use asm-generic/mmu_context.h for no-op implementations
2020-07-28 3:33 ` [PATCH 04/24] arm: " Nicholas Piggin
@ 2020-07-28 4:14 ` Vineet Gupta
2020-08-26 14:14 ` Nicholas Piggin
0 siblings, 1 reply; 40+ messages in thread
From: Vineet Gupta @ 2020-07-28 4:14 UTC (permalink / raw)
To: Nicholas Piggin, linux-arch
Cc: linux-kernel, linux-mm, Arnd Bergmann, Russell King,
linux-arm-kernel, arcml
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
^ permalink raw reply related [flat|nested] 40+ messages in thread
* Re: [PATCH 04/24] arm: use asm-generic/mmu_context.h for no-op implementations
2020-07-28 4:14 ` Vineet Gupta
@ 2020-08-26 14:14 ` Nicholas Piggin
0 siblings, 0 replies; 40+ messages in thread
From: Nicholas Piggin @ 2020-08-26 14:14 UTC (permalink / raw)
To: linux-arch, Vineet Gupta
Cc: Arnd Bergmann, linux-arm-kernel, Russell King, linux-kernel,
linux-mm, arcml
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
>
>
^ permalink raw reply [flat|nested] 40+ messages in thread
* [PATCH 05/24] arm64: use asm-generic/mmu_context.h for no-op implementations
2020-07-28 3:33 [PATCH 00/24] Use asm-generic for mmu_context no-op functions Nicholas Piggin
` (3 preceding siblings ...)
2020-07-28 3:33 ` [PATCH 04/24] arm: " Nicholas Piggin
@ 2020-07-28 3:33 ` Nicholas Piggin
2020-07-28 3:33 ` [PATCH 06/24] csky: " Nicholas Piggin
` (18 subsequent siblings)
23 siblings, 0 replies; 40+ messages in thread
From: Nicholas Piggin @ 2020-07-28 3:33 UTC (permalink / raw)
To: linux-arch
Cc: Nicholas Piggin, linux-kernel, linux-mm, Arnd Bergmann,
Catalin Marinas, Will Deacon, linux-arm-kernel
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: linux-arm-kernel@lists.infradead.org
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
---
arch/arm64/include/asm/mmu_context.h | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/arch/arm64/include/asm/mmu_context.h b/arch/arm64/include/asm/mmu_context.h
index b0bd9b55594c..0f5e351f586a 100644
--- a/arch/arm64/include/asm/mmu_context.h
+++ b/arch/arm64/include/asm/mmu_context.h
@@ -174,7 +174,6 @@ static inline void cpu_replace_ttbr1(pgd_t *pgdp)
* Setting a reserved TTBR0 or EPD0 would work, but it all gets ugly when you
* take CPU migration into account.
*/
-#define destroy_context(mm) do { } while(0)
void check_and_switch_context(struct mm_struct *mm, unsigned int cpu);
#define init_new_context(tsk,mm) ({ atomic64_set(&(mm)->context.id, 0); 0; })
@@ -202,6 +201,7 @@ static inline void update_saved_ttbr0(struct task_struct *tsk,
}
#endif
+#define enter_lazy_tlb enter_lazy_tlb
static inline void
enter_lazy_tlb(struct mm_struct *mm, struct task_struct *tsk)
{
@@ -244,12 +244,11 @@ switch_mm(struct mm_struct *prev, struct mm_struct *next,
update_saved_ttbr0(tsk, next);
}
-#define deactivate_mm(tsk,mm) do { } while (0)
-#define activate_mm(prev,next) switch_mm(prev, next, current)
-
void verify_cpu_asid_bits(void);
void post_ttbr_update_workaround(void);
+#include <asm-generic/mmu_context.h>
+
#endif /* !__ASSEMBLY__ */
#endif /* !__ASM_MMU_CONTEXT_H */
--
2.23.0
^ permalink raw reply related [flat|nested] 40+ messages in thread
* [PATCH 06/24] csky: use asm-generic/mmu_context.h for no-op implementations
2020-07-28 3:33 [PATCH 00/24] Use asm-generic for mmu_context no-op functions Nicholas Piggin
` (4 preceding siblings ...)
2020-07-28 3:33 ` [PATCH 05/24] arm64: " Nicholas Piggin
@ 2020-07-28 3:33 ` Nicholas Piggin
2020-07-28 4:09 ` Guo Ren
2020-07-28 3:33 ` [PATCH 07/24] hexagon: " Nicholas Piggin
` (17 subsequent siblings)
23 siblings, 1 reply; 40+ messages in thread
From: Nicholas Piggin @ 2020-07-28 3:33 UTC (permalink / raw)
To: linux-arch
Cc: Nicholas Piggin, linux-kernel, linux-mm, Arnd Bergmann, Guo Ren,
linux-csky
Cc: Guo Ren <guoren@kernel.org>
Cc: linux-csky@vger.kernel.org
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
---
arch/csky/include/asm/mmu_context.h | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/arch/csky/include/asm/mmu_context.h b/arch/csky/include/asm/mmu_context.h
index abdf1f1cb6ec..b227d29393a8 100644
--- a/arch/csky/include/asm/mmu_context.h
+++ b/arch/csky/include/asm/mmu_context.h
@@ -24,11 +24,6 @@
#define cpu_asid(mm) (atomic64_read(&mm->context.asid) & ASID_MASK)
#define init_new_context(tsk,mm) ({ atomic64_set(&(mm)->context.asid, 0); 0; })
-#define activate_mm(prev,next) switch_mm(prev, next, current)
-
-#define destroy_context(mm) do {} while (0)
-#define enter_lazy_tlb(mm, tsk) do {} while (0)
-#define deactivate_mm(tsk, mm) do {} while (0)
void check_and_switch_context(struct mm_struct *mm, unsigned int cpu);
@@ -46,4 +41,7 @@ switch_mm(struct mm_struct *prev, struct mm_struct *next,
flush_icache_deferred(next);
}
+
+#include <asm-generic/mmu_context.h>
+
#endif /* __ASM_CSKY_MMU_CONTEXT_H */
--
2.23.0
^ permalink raw reply related [flat|nested] 40+ messages in thread
* Re: [PATCH 06/24] csky: use asm-generic/mmu_context.h for no-op implementations
2020-07-28 3:33 ` [PATCH 06/24] csky: " Nicholas Piggin
@ 2020-07-28 4:09 ` Guo Ren
0 siblings, 0 replies; 40+ messages in thread
From: Guo Ren @ 2020-07-28 4:09 UTC (permalink / raw)
To: Nicholas Piggin
Cc: linux-arch, Linux Kernel Mailing List, linux-mm, Arnd Bergmann,
linux-csky
Acked-by: Guo Ren <guoren@kernel.org>
On Tue, Jul 28, 2020 at 11:34 AM Nicholas Piggin <npiggin@gmail.com> wrote:
>
> Cc: Guo Ren <guoren@kernel.org>
> Cc: linux-csky@vger.kernel.org
> Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
> ---
> arch/csky/include/asm/mmu_context.h | 8 +++-----
> 1 file changed, 3 insertions(+), 5 deletions(-)
>
> diff --git a/arch/csky/include/asm/mmu_context.h b/arch/csky/include/asm/mmu_context.h
> index abdf1f1cb6ec..b227d29393a8 100644
> --- a/arch/csky/include/asm/mmu_context.h
> +++ b/arch/csky/include/asm/mmu_context.h
> @@ -24,11 +24,6 @@
> #define cpu_asid(mm) (atomic64_read(&mm->context.asid) & ASID_MASK)
>
> #define init_new_context(tsk,mm) ({ atomic64_set(&(mm)->context.asid, 0); 0; })
> -#define activate_mm(prev,next) switch_mm(prev, next, current)
> -
> -#define destroy_context(mm) do {} while (0)
> -#define enter_lazy_tlb(mm, tsk) do {} while (0)
> -#define deactivate_mm(tsk, mm) do {} while (0)
>
> void check_and_switch_context(struct mm_struct *mm, unsigned int cpu);
>
> @@ -46,4 +41,7 @@ switch_mm(struct mm_struct *prev, struct mm_struct *next,
>
> flush_icache_deferred(next);
> }
> +
> +#include <asm-generic/mmu_context.h>
> +
> #endif /* __ASM_CSKY_MMU_CONTEXT_H */
> --
> 2.23.0
>
--
Best Regards
Guo Ren
ML: https://lore.kernel.org/linux-csky/
^ permalink raw reply [flat|nested] 40+ messages in thread
* [PATCH 07/24] hexagon: use asm-generic/mmu_context.h for no-op implementations
2020-07-28 3:33 [PATCH 00/24] Use asm-generic for mmu_context no-op functions Nicholas Piggin
` (5 preceding siblings ...)
2020-07-28 3:33 ` [PATCH 06/24] csky: " Nicholas Piggin
@ 2020-07-28 3:33 ` Nicholas Piggin
2020-08-11 18:34 ` Brian Cain
2020-07-28 3:33 ` [PATCH 08/24] ia64: " Nicholas Piggin
` (16 subsequent siblings)
23 siblings, 1 reply; 40+ messages in thread
From: Nicholas Piggin @ 2020-07-28 3:33 UTC (permalink / raw)
To: linux-arch
Cc: Nicholas Piggin, linux-kernel, linux-mm, Arnd Bergmann,
Brian Cain, linux-hexagon
Cc: Brian Cain <bcain@codeaurora.org>
Cc: linux-hexagon@vger.kernel.org
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
---
arch/hexagon/include/asm/mmu_context.h | 33 ++++----------------------
1 file changed, 5 insertions(+), 28 deletions(-)
diff --git a/arch/hexagon/include/asm/mmu_context.h b/arch/hexagon/include/asm/mmu_context.h
index cdc4adc0300a..81947764c47d 100644
--- a/arch/hexagon/include/asm/mmu_context.h
+++ b/arch/hexagon/include/asm/mmu_context.h
@@ -15,39 +15,13 @@
#include <asm/pgalloc.h>
#include <asm/mem-layout.h>
-static inline void destroy_context(struct mm_struct *mm)
-{
-}
-
/*
* VM port hides all TLB management, so "lazy TLB" isn't very
* meaningful. Even for ports to architectures with visble TLBs,
* this is almost invariably a null function.
+ *
+ * mm->context is set up by pgd_alloc, so no init_new_context required.
*/
-static inline void enter_lazy_tlb(struct mm_struct *mm,
- struct task_struct *tsk)
-{
-}
-
-/*
- * Architecture-specific actions, if any, for memory map deactivation.
- */
-static inline void deactivate_mm(struct task_struct *tsk,
- struct mm_struct *mm)
-{
-}
-
-/**
- * init_new_context - initialize context related info for new mm_struct instance
- * @tsk: pointer to a task struct
- * @mm: pointer to a new mm struct
- */
-static inline int init_new_context(struct task_struct *tsk,
- struct mm_struct *mm)
-{
- /* mm->context is set up by pgd_alloc */
- return 0;
-}
/*
* Switch active mm context
@@ -74,6 +48,7 @@ static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next,
/*
* Activate new memory map for task
*/
+#define activate_mm activate_mm
static inline void activate_mm(struct mm_struct *prev, struct mm_struct *next)
{
unsigned long flags;
@@ -86,4 +61,6 @@ static inline void activate_mm(struct mm_struct *prev, struct mm_struct *next)
/* Generic hooks for arch_dup_mmap and arch_exit_mmap */
#include <asm-generic/mm_hooks.h>
+#include <asm-generic/mmu_context.h>
+
#endif
--
2.23.0
^ permalink raw reply related [flat|nested] 40+ messages in thread
* RE: [PATCH 07/24] hexagon: use asm-generic/mmu_context.h for no-op implementations
2020-07-28 3:33 ` [PATCH 07/24] hexagon: " Nicholas Piggin
@ 2020-08-11 18:34 ` Brian Cain
0 siblings, 0 replies; 40+ messages in thread
From: Brian Cain @ 2020-08-11 18:34 UTC (permalink / raw)
To: 'Nicholas Piggin', linux-arch
Cc: linux-kernel, linux-mm, 'Arnd Bergmann', linux-hexagon
> -----Original Message-----
> From: linux-arch-owner@vger.kernel.org <linux-arch-owner@vger.kernel.org>
> On Behalf Of Nicholas Piggin
Acked-by: Brian Cain <bcain@codeaurora.org>
> Cc: Brian Cain <bcain@codeaurora.org>
> Cc: linux-hexagon@vger.kernel.org
> Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
> ---
> arch/hexagon/include/asm/mmu_context.h | 33 ++++----------------------
> 1 file changed, 5 insertions(+), 28 deletions(-)
>
> diff --git a/arch/hexagon/include/asm/mmu_context.h
> b/arch/hexagon/include/asm/mmu_context.h
> index cdc4adc0300a..81947764c47d 100644
> --- a/arch/hexagon/include/asm/mmu_context.h
> +++ b/arch/hexagon/include/asm/mmu_context.h
> @@ -15,39 +15,13 @@
> #include <asm/pgalloc.h>
> #include <asm/mem-layout.h>
>
> -static inline void destroy_context(struct mm_struct *mm) -{ -}
> -
> /*
> * VM port hides all TLB management, so "lazy TLB" isn't very
> * meaningful. Even for ports to architectures with visble TLBs,
> * this is almost invariably a null function.
> + *
> + * mm->context is set up by pgd_alloc, so no init_new_context required.
> */
> -static inline void enter_lazy_tlb(struct mm_struct *mm,
> - struct task_struct *tsk)
> -{
> -}
> -
> -/*
> - * Architecture-specific actions, if any, for memory map deactivation.
> - */
> -static inline void deactivate_mm(struct task_struct *tsk,
> - struct mm_struct *mm)
> -{
> -}
> -
> -/**
> - * init_new_context - initialize context related info for new mm_struct
> instance
> - * @tsk: pointer to a task struct
> - * @mm: pointer to a new mm struct
> - */
> -static inline int init_new_context(struct task_struct *tsk,
> - struct mm_struct *mm)
> -{
> - /* mm->context is set up by pgd_alloc */
> - return 0;
> -}
>
> /*
> * Switch active mm context
> @@ -74,6 +48,7 @@ static inline void switch_mm(struct mm_struct *prev,
> struct mm_struct *next,
> /*
> * Activate new memory map for task
> */
> +#define activate_mm activate_mm
> static inline void activate_mm(struct mm_struct *prev, struct mm_struct
> *next) {
> unsigned long flags;
> @@ -86,4 +61,6 @@ static inline void activate_mm(struct mm_struct *prev,
> struct mm_struct *next)
> /* Generic hooks for arch_dup_mmap and arch_exit_mmap */ #include
> <asm-generic/mm_hooks.h>
>
> +#include <asm-generic/mmu_context.h>
> +
> #endif
> --
> 2.23.0
^ permalink raw reply [flat|nested] 40+ messages in thread
* [PATCH 08/24] ia64: use asm-generic/mmu_context.h for no-op implementations
2020-07-28 3:33 [PATCH 00/24] Use asm-generic for mmu_context no-op functions Nicholas Piggin
` (6 preceding siblings ...)
2020-07-28 3:33 ` [PATCH 07/24] hexagon: " Nicholas Piggin
@ 2020-07-28 3:33 ` Nicholas Piggin
2020-07-28 3:33 ` [PATCH 09/24] m68k: " Nicholas Piggin
` (15 subsequent siblings)
23 siblings, 0 replies; 40+ messages in thread
From: Nicholas Piggin @ 2020-07-28 3:33 UTC (permalink / raw)
To: linux-arch
Cc: Nicholas Piggin, linux-kernel, linux-mm, Arnd Bergmann,
Tony Luck, Fenghua Yu, linux-ia64
Cc: Tony Luck <tony.luck@intel.com>
Cc: Fenghua Yu <fenghua.yu@intel.com>
Cc: linux-ia64@vger.kernel.org
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
---
arch/ia64/include/asm/mmu_context.h | 17 ++++-------------
1 file changed, 4 insertions(+), 13 deletions(-)
diff --git a/arch/ia64/include/asm/mmu_context.h b/arch/ia64/include/asm/mmu_context.h
index 2da0e2eb036b..87a0d5bc11ef 100644
--- a/arch/ia64/include/asm/mmu_context.h
+++ b/arch/ia64/include/asm/mmu_context.h
@@ -49,11 +49,6 @@ DECLARE_PER_CPU(u8, ia64_need_tlb_flush);
extern void mmu_context_init (void);
extern void wrap_mmu_context (struct mm_struct *mm);
-static inline void
-enter_lazy_tlb (struct mm_struct *mm, struct task_struct *tsk)
-{
-}
-
/*
* When the context counter wraps around all TLBs need to be flushed because
* an old context number might have been reused. This is signalled by the
@@ -116,6 +111,7 @@ get_mmu_context (struct mm_struct *mm)
* Initialize context number to some sane value. MM is guaranteed to be a
* brand-new address-space, so no TLB flushing is needed, ever.
*/
+#define init_new_context init_new_context
static inline int
init_new_context (struct task_struct *p, struct mm_struct *mm)
{
@@ -123,12 +119,6 @@ init_new_context (struct task_struct *p, struct mm_struct *mm)
return 0;
}
-static inline void
-destroy_context (struct mm_struct *mm)
-{
- /* Nothing to do. */
-}
-
static inline void
reload_context (nv_mm_context_t context)
{
@@ -178,11 +168,10 @@ activate_context (struct mm_struct *mm)
} while (unlikely(context != mm->context));
}
-#define deactivate_mm(tsk,mm) do { } while (0)
-
/*
* Switch from address space PREV to address space NEXT.
*/
+#define activate_mm activate_mm
static inline void
activate_mm (struct mm_struct *prev, struct mm_struct *next)
{
@@ -196,5 +185,7 @@ activate_mm (struct mm_struct *prev, struct mm_struct *next)
#define switch_mm(prev_mm,next_mm,next_task) activate_mm(prev_mm, next_mm)
+#include <asm-generic/mmu_context.h>
+
# endif /* ! __ASSEMBLY__ */
#endif /* _ASM_IA64_MMU_CONTEXT_H */
--
2.23.0
^ permalink raw reply related [flat|nested] 40+ messages in thread
* [PATCH 09/24] m68k: use asm-generic/mmu_context.h for no-op implementations
2020-07-28 3:33 [PATCH 00/24] Use asm-generic for mmu_context no-op functions Nicholas Piggin
` (7 preceding siblings ...)
2020-07-28 3:33 ` [PATCH 08/24] ia64: " Nicholas Piggin
@ 2020-07-28 3:33 ` Nicholas Piggin
2020-07-30 8:11 ` kernel test robot
2020-07-28 3:33 ` [PATCH 10/24] microblaze: " Nicholas Piggin
` (14 subsequent siblings)
23 siblings, 1 reply; 40+ messages in thread
From: Nicholas Piggin @ 2020-07-28 3:33 UTC (permalink / raw)
To: linux-arch
Cc: Nicholas Piggin, linux-kernel, linux-mm, Arnd Bergmann,
Geert Uytterhoeven, linux-m68k
Cc: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: linux-m68k@lists.linux-m68k.org
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
---
arch/m68k/include/asm/mmu_context.h | 47 +++++------------------------
1 file changed, 8 insertions(+), 39 deletions(-)
diff --git a/arch/m68k/include/asm/mmu_context.h b/arch/m68k/include/asm/mmu_context.h
index cac9f289d1f6..56ae27322178 100644
--- a/arch/m68k/include/asm/mmu_context.h
+++ b/arch/m68k/include/asm/mmu_context.h
@@ -5,10 +5,6 @@
#include <asm-generic/mm_hooks.h>
#include <linux/mm_types.h>
-static inline void enter_lazy_tlb(struct mm_struct *mm, struct task_struct *tsk)
-{
-}
-
#ifdef CONFIG_MMU
#if defined(CONFIG_COLDFIRE)
@@ -58,6 +54,7 @@ static inline void get_mmu_context(struct mm_struct *mm)
/*
* We're finished using the context for an address space.
*/
+#define destroy_context destroy_context
static inline void destroy_context(struct mm_struct *mm)
{
if (mm->context != NO_CONTEXT) {
@@ -79,19 +76,6 @@ static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next,
set_context(tsk->mm->context, next->pgd);
}
-/*
- * After we have set current->mm to a new value, this activates
- * the context for the new mm so we see the new mappings.
- */
-static inline void activate_mm(struct mm_struct *active_mm,
- struct mm_struct *mm)
-{
- get_mmu_context(mm);
- set_context(mm->context, mm->pgd);
-}
-
-#define deactivate_mm(tsk, mm) do { } while (0)
-
#define prepare_arch_switch(next) load_ksp_mmu(next)
static inline void load_ksp_mmu(struct task_struct *task)
@@ -176,6 +160,7 @@ extern unsigned long get_free_context(struct mm_struct *mm);
extern void clear_context(unsigned long context);
/* set the context for a new task to unmapped */
+#define init_new_context init_new_context
static inline int init_new_context(struct task_struct *tsk,
struct mm_struct *mm)
{
@@ -210,8 +195,7 @@ static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next,
activate_context(tsk->mm);
}
-#define deactivate_mm(tsk, mm) do { } while (0)
-
+#define activate_mm activate_mm
static inline void activate_mm(struct mm_struct *prev_mm,
struct mm_struct *next_mm)
{
@@ -224,6 +208,7 @@ static inline void activate_mm(struct mm_struct *prev_mm,
#include <asm/page.h>
#include <asm/pgalloc.h>
+#define init_new_context init_new_context
static inline int init_new_context(struct task_struct *tsk,
struct mm_struct *mm)
{
@@ -231,8 +216,6 @@ static inline int init_new_context(struct task_struct *tsk,
return 0;
}
-#define destroy_context(mm) do { } while(0)
-
static inline void switch_mm_0230(struct mm_struct *mm)
{
unsigned long crp[2] = {
@@ -300,8 +283,7 @@ static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next, str
}
}
-#define deactivate_mm(tsk,mm) do { } while (0)
-
+#define activate_mm activate_mm
static inline void activate_mm(struct mm_struct *prev_mm,
struct mm_struct *next_mm)
{
@@ -315,24 +297,11 @@ static inline void activate_mm(struct mm_struct *prev_mm,
#endif
-#else /* !CONFIG_MMU */
+#include <asm-generic/mmu_context.h>
-static inline int init_new_context(struct task_struct *tsk, struct mm_struct *mm)
-{
- return 0;
-}
-
-
-static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next, struct task_struct *tsk)
-{
-}
-
-#define destroy_context(mm) do { } while (0)
-#define deactivate_mm(tsk,mm) do { } while (0)
+#else /* !CONFIG_MMU */
-static inline void activate_mm(struct mm_struct *prev_mm, struct mm_struct *next_mm)
-{
-}
+#include <asm-generic/nommu_context.h>
#endif /* CONFIG_MMU */
#endif /* __M68K_MMU_CONTEXT_H */
--
2.23.0
^ permalink raw reply related [flat|nested] 40+ messages in thread
* Re: [PATCH 09/24] m68k: use asm-generic/mmu_context.h for no-op implementations
2020-07-28 3:33 ` [PATCH 09/24] m68k: " Nicholas Piggin
@ 2020-07-30 8:11 ` kernel test robot
0 siblings, 0 replies; 40+ messages in thread
From: kernel test robot @ 2020-07-30 8:11 UTC (permalink / raw)
To: Nicholas Piggin, linux-arch
Cc: kbuild-all, Nicholas Piggin, linux-kernel, linux-mm,
Arnd Bergmann, Geert Uytterhoeven, linux-m68k
[-- Attachment #1: Type: text/plain, Size: 11466 bytes --]
Hi Nicholas,
I love your patch! Yet something to improve:
[auto build test ERROR on openrisc/for-next]
[also build test ERROR on sparc-next/master sparc/master linus/master asm-generic/master v5.8-rc7 next-20200729]
[cannot apply to nios2/for-linus xtensa/for_next]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Nicholas-Piggin/Use-asm-generic-for-mmu_context-no-op-functions/20200728-113854
base: https://github.com/openrisc/linux.git for-next
config: m68k-randconfig-r005-20200729 (attached as .config)
compiler: m68k-linux-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=m68k
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
In file included from include/asm-generic/bug.h:5,
from arch/m68k/include/asm/bug.h:32,
from include/linux/bug.h:5,
from include/linux/thread_info.h:12,
from arch/m68k/include/asm/current.h:16,
from include/linux/sched.h:12,
from kernel//sched/sched.h:5,
from kernel//sched/core.c:9:
include/linux/scatterlist.h: In function 'sg_set_buf':
arch/m68k/include/asm/page_no.h:33:50: warning: ordered comparison of pointer with null pointer [-Wextra]
33 | #define virt_addr_valid(kaddr) (((void *)(kaddr) >= (void *)PAGE_OFFSET) && \
| ^~
include/linux/compiler.h:78:42: note: in definition of macro 'unlikely'
78 | # define unlikely(x) __builtin_expect(!!(x), 0)
| ^
include/linux/scatterlist.h:143:2: note: in expansion of macro 'BUG_ON'
143 | BUG_ON(!virt_addr_valid(buf));
| ^~~~~~
include/linux/scatterlist.h:143:10: note: in expansion of macro 'virt_addr_valid'
143 | BUG_ON(!virt_addr_valid(buf));
| ^~~~~~~~~~~~~~~
In file included from include/asm-generic/nommu_context.h:11,
from arch/m68k/include/asm/mmu_context.h:304,
from include/linux/mmu_context.h:5,
from kernel//sched/sched.h:54,
from kernel//sched/core.c:9:
include/asm-generic/mmu_context.h: In function 'activate_mm':
>> include/asm-generic/mmu_context.h:59:2: error: implicit declaration of function 'switch_mm' [-Werror=implicit-function-declaration]
59 | switch_mm(prev_mm, next_mm, current);
| ^~~~~~~~~
In file included from arch/m68k/include/asm/mmu_context.h:304,
from include/linux/mmu_context.h:5,
from kernel//sched/sched.h:54,
from kernel//sched/core.c:9:
include/asm-generic/nommu_context.h: At top level:
include/asm-generic/nommu_context.h:13:20: warning: conflicting types for 'switch_mm'
13 | static inline void switch_mm(struct mm_struct *prev,
| ^~~~~~~~~
include/asm-generic/nommu_context.h:13:20: error: static declaration of 'switch_mm' follows non-static declaration
In file included from include/asm-generic/nommu_context.h:11,
from arch/m68k/include/asm/mmu_context.h:304,
from include/linux/mmu_context.h:5,
from kernel//sched/sched.h:54,
from kernel//sched/core.c:9:
include/asm-generic/mmu_context.h:59:2: note: previous implicit declaration of 'switch_mm' was here
59 | switch_mm(prev_mm, next_mm, current);
| ^~~~~~~~~
kernel//sched/core.c: In function 'ttwu_stat':
kernel//sched/core.c:2154:13: warning: variable 'rq' set but not used [-Wunused-but-set-variable]
2154 | struct rq *rq;
| ^~
cc1: some warnings being treated as errors
--
In file included from include/asm-generic/bug.h:5,
from arch/m68k/include/asm/bug.h:32,
from include/linux/bug.h:5,
from include/linux/thread_info.h:12,
from arch/m68k/include/asm/current.h:16,
from include/linux/sched.h:12,
from kernel//sched/sched.h:5,
from kernel//sched/loadavg.c:9:
include/linux/scatterlist.h: In function 'sg_set_buf':
arch/m68k/include/asm/page_no.h:33:50: warning: ordered comparison of pointer with null pointer [-Wextra]
33 | #define virt_addr_valid(kaddr) (((void *)(kaddr) >= (void *)PAGE_OFFSET) && \
| ^~
include/linux/compiler.h:78:42: note: in definition of macro 'unlikely'
78 | # define unlikely(x) __builtin_expect(!!(x), 0)
| ^
include/linux/scatterlist.h:143:2: note: in expansion of macro 'BUG_ON'
143 | BUG_ON(!virt_addr_valid(buf));
| ^~~~~~
include/linux/scatterlist.h:143:10: note: in expansion of macro 'virt_addr_valid'
143 | BUG_ON(!virt_addr_valid(buf));
| ^~~~~~~~~~~~~~~
In file included from include/asm-generic/nommu_context.h:11,
from arch/m68k/include/asm/mmu_context.h:304,
from include/linux/mmu_context.h:5,
from kernel//sched/sched.h:54,
from kernel//sched/loadavg.c:9:
include/asm-generic/mmu_context.h: In function 'activate_mm':
>> include/asm-generic/mmu_context.h:59:2: error: implicit declaration of function 'switch_mm' [-Werror=implicit-function-declaration]
59 | switch_mm(prev_mm, next_mm, current);
| ^~~~~~~~~
In file included from arch/m68k/include/asm/mmu_context.h:304,
from include/linux/mmu_context.h:5,
from kernel//sched/sched.h:54,
from kernel//sched/loadavg.c:9:
include/asm-generic/nommu_context.h: At top level:
include/asm-generic/nommu_context.h:13:20: warning: conflicting types for 'switch_mm'
13 | static inline void switch_mm(struct mm_struct *prev,
| ^~~~~~~~~
include/asm-generic/nommu_context.h:13:20: error: static declaration of 'switch_mm' follows non-static declaration
In file included from include/asm-generic/nommu_context.h:11,
from arch/m68k/include/asm/mmu_context.h:304,
from include/linux/mmu_context.h:5,
from kernel//sched/sched.h:54,
from kernel//sched/loadavg.c:9:
include/asm-generic/mmu_context.h:59:2: note: previous implicit declaration of 'switch_mm' was here
59 | switch_mm(prev_mm, next_mm, current);
| ^~~~~~~~~
cc1: some warnings being treated as errors
--
In file included from include/asm-generic/bug.h:5,
from arch/m68k/include/asm/bug.h:32,
from include/linux/bug.h:5,
from include/linux/thread_info.h:12,
from arch/m68k/include/asm/current.h:16,
from include/linux/sched.h:12,
from kernel//sched/sched.h:5,
from kernel//sched/rt.c:6:
include/linux/scatterlist.h: In function 'sg_set_buf':
arch/m68k/include/asm/page_no.h:33:50: warning: ordered comparison of pointer with null pointer [-Wextra]
33 | #define virt_addr_valid(kaddr) (((void *)(kaddr) >= (void *)PAGE_OFFSET) && \
| ^~
include/linux/compiler.h:78:42: note: in definition of macro 'unlikely'
78 | # define unlikely(x) __builtin_expect(!!(x), 0)
| ^
include/linux/scatterlist.h:143:2: note: in expansion of macro 'BUG_ON'
143 | BUG_ON(!virt_addr_valid(buf));
| ^~~~~~
include/linux/scatterlist.h:143:10: note: in expansion of macro 'virt_addr_valid'
143 | BUG_ON(!virt_addr_valid(buf));
| ^~~~~~~~~~~~~~~
In file included from include/asm-generic/nommu_context.h:11,
from arch/m68k/include/asm/mmu_context.h:304,
from include/linux/mmu_context.h:5,
from kernel//sched/sched.h:54,
from kernel//sched/rt.c:6:
include/asm-generic/mmu_context.h: In function 'activate_mm':
>> include/asm-generic/mmu_context.h:59:2: error: implicit declaration of function 'switch_mm' [-Werror=implicit-function-declaration]
59 | switch_mm(prev_mm, next_mm, current);
| ^~~~~~~~~
In file included from arch/m68k/include/asm/mmu_context.h:304,
from include/linux/mmu_context.h:5,
from kernel//sched/sched.h:54,
from kernel//sched/rt.c:6:
include/asm-generic/nommu_context.h: At top level:
include/asm-generic/nommu_context.h:13:20: warning: conflicting types for 'switch_mm'
13 | static inline void switch_mm(struct mm_struct *prev,
| ^~~~~~~~~
include/asm-generic/nommu_context.h:13:20: error: static declaration of 'switch_mm' follows non-static declaration
In file included from include/asm-generic/nommu_context.h:11,
from arch/m68k/include/asm/mmu_context.h:304,
from include/linux/mmu_context.h:5,
from kernel//sched/sched.h:54,
from kernel//sched/rt.c:6:
include/asm-generic/mmu_context.h:59:2: note: previous implicit declaration of 'switch_mm' was here
59 | switch_mm(prev_mm, next_mm, current);
| ^~~~~~~~~
kernel//sched/rt.c:668:6: warning: no previous prototype for 'sched_rt_bandwidth_account' [-Wmissing-prototypes]
668 | bool sched_rt_bandwidth_account(struct rt_rq *rt_rq)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
vim +/switch_mm +59 include/asm-generic/mmu_context.h
5c01b46bb6bb8f2 Arnd Bergmann 2009-05-13 49
49435c52fb90a3c Nicholas Piggin 2020-07-28 50 /**
49435c52fb90a3c Nicholas Piggin 2020-07-28 51 * activate_mm - called after exec switches the current task to a new mm, to switch to it
49435c52fb90a3c Nicholas Piggin 2020-07-28 52 * @prev_mm: previous mm of this task
49435c52fb90a3c Nicholas Piggin 2020-07-28 53 * @next_mm: new mm
49435c52fb90a3c Nicholas Piggin 2020-07-28 54 */
49435c52fb90a3c Nicholas Piggin 2020-07-28 55 #ifndef activate_mm
49435c52fb90a3c Nicholas Piggin 2020-07-28 56 static inline void activate_mm(struct mm_struct *prev_mm,
49435c52fb90a3c Nicholas Piggin 2020-07-28 57 struct mm_struct *next_mm)
5c01b46bb6bb8f2 Arnd Bergmann 2009-05-13 58 {
49435c52fb90a3c Nicholas Piggin 2020-07-28 @59 switch_mm(prev_mm, next_mm, current);
5c01b46bb6bb8f2 Arnd Bergmann 2009-05-13 60 }
49435c52fb90a3c Nicholas Piggin 2020-07-28 61 #endif
5c01b46bb6bb8f2 Arnd Bergmann 2009-05-13 62
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 28172 bytes --]
^ permalink raw reply [flat|nested] 40+ messages in thread
* [PATCH 10/24] microblaze: use asm-generic/mmu_context.h for no-op implementations
2020-07-28 3:33 [PATCH 00/24] Use asm-generic for mmu_context no-op functions Nicholas Piggin
` (8 preceding siblings ...)
2020-07-28 3:33 ` [PATCH 09/24] m68k: " Nicholas Piggin
@ 2020-07-28 3:33 ` Nicholas Piggin
2020-07-28 3:33 ` [PATCH 11/24] mips: " Nicholas Piggin
` (13 subsequent siblings)
23 siblings, 0 replies; 40+ messages in thread
From: Nicholas Piggin @ 2020-07-28 3:33 UTC (permalink / raw)
To: linux-arch
Cc: Nicholas Piggin, linux-kernel, linux-mm, Arnd Bergmann, Michal Simek
Cc: Michal Simek <monstr@monstr.eu>
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
---
arch/microblaze/include/asm/mmu_context_mm.h | 8 ++++----
arch/microblaze/include/asm/processor.h | 3 ---
2 files changed, 4 insertions(+), 7 deletions(-)
diff --git a/arch/microblaze/include/asm/mmu_context_mm.h b/arch/microblaze/include/asm/mmu_context_mm.h
index a1c7dd48454c..c2c77f708455 100644
--- a/arch/microblaze/include/asm/mmu_context_mm.h
+++ b/arch/microblaze/include/asm/mmu_context_mm.h
@@ -33,10 +33,6 @@
to represent all kernel pages as shared among all contexts.
*/
-static inline void enter_lazy_tlb(struct mm_struct *mm, struct task_struct *tsk)
-{
-}
-
# define NO_CONTEXT 256
# define LAST_CONTEXT 255
# define FIRST_CONTEXT 1
@@ -105,6 +101,7 @@ static inline void get_mmu_context(struct mm_struct *mm)
/*
* We're finished using the context for an address space.
*/
+#define destroy_context destroy_context
static inline void destroy_context(struct mm_struct *mm)
{
if (mm->context != NO_CONTEXT) {
@@ -126,6 +123,7 @@ static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next,
* After we have set current->mm to a new value, this activates
* the context for the new mm so we see the new mappings.
*/
+#define activate_mm activate_mm
static inline void activate_mm(struct mm_struct *active_mm,
struct mm_struct *mm)
{
@@ -136,5 +134,7 @@ static inline void activate_mm(struct mm_struct *active_mm,
extern void mmu_context_init(void);
+#include <asm-generic/mmu_context.h>
+
# endif /* __KERNEL__ */
#endif /* _ASM_MICROBLAZE_MMU_CONTEXT_H */
diff --git a/arch/microblaze/include/asm/processor.h b/arch/microblaze/include/asm/processor.h
index 1ff5a82b76b6..616211871a6e 100644
--- a/arch/microblaze/include/asm/processor.h
+++ b/arch/microblaze/include/asm/processor.h
@@ -122,9 +122,6 @@ unsigned long get_wchan(struct task_struct *p);
# define KSTK_EIP(task) (task_pc(task))
# define KSTK_ESP(task) (task_sp(task))
-/* FIXME */
-# define deactivate_mm(tsk, mm) do { } while (0)
-
# define STACK_TOP TASK_SIZE
# define STACK_TOP_MAX STACK_TOP
--
2.23.0
^ permalink raw reply related [flat|nested] 40+ messages in thread
* [PATCH 11/24] mips: use asm-generic/mmu_context.h for no-op implementations
2020-07-28 3:33 [PATCH 00/24] Use asm-generic for mmu_context no-op functions Nicholas Piggin
` (9 preceding siblings ...)
2020-07-28 3:33 ` [PATCH 10/24] microblaze: " Nicholas Piggin
@ 2020-07-28 3:33 ` Nicholas Piggin
2020-07-28 3:33 ` [PATCH 12/24] nds32: " Nicholas Piggin
` (12 subsequent siblings)
23 siblings, 0 replies; 40+ messages in thread
From: Nicholas Piggin @ 2020-07-28 3:33 UTC (permalink / raw)
To: linux-arch
Cc: Nicholas Piggin, linux-kernel, linux-mm, Arnd Bergmann,
Thomas Bogendoerfer, linux-mips
Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
Cc: linux-mips@vger.kernel.org
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
---
arch/mips/include/asm/mmu_context.h | 11 ++++-------
1 file changed, 4 insertions(+), 7 deletions(-)
diff --git a/arch/mips/include/asm/mmu_context.h b/arch/mips/include/asm/mmu_context.h
index cddead91acd4..ed9f2d748f63 100644
--- a/arch/mips/include/asm/mmu_context.h
+++ b/arch/mips/include/asm/mmu_context.h
@@ -124,10 +124,6 @@ static inline void set_cpu_context(unsigned int cpu,
#define cpu_asid(cpu, mm) \
(cpu_context((cpu), (mm)) & cpu_asid_mask(&cpu_data[cpu]))
-static inline void enter_lazy_tlb(struct mm_struct *mm, struct task_struct *tsk)
-{
-}
-
extern void get_new_mmu_context(struct mm_struct *mm);
extern void check_mmu_context(struct mm_struct *mm);
extern void check_switch_mmu_context(struct mm_struct *mm);
@@ -136,6 +132,7 @@ extern void check_switch_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)
{
@@ -180,14 +177,12 @@ static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next,
* Destroy context related info for an mm_struct that is about
* to be put to rest.
*/
+#define destroy_context destroy_context
static inline void destroy_context(struct mm_struct *mm)
{
dsemul_mm_cleanup(mm);
}
-#define activate_mm(prev, next) switch_mm(prev, next, current)
-#define deactivate_mm(tsk, mm) do { } while (0)
-
static inline void
drop_mmu_context(struct mm_struct *mm)
{
@@ -237,4 +232,6 @@ drop_mmu_context(struct mm_struct *mm)
local_irq_restore(flags);
}
+#include <asm-generic/mmu_context.h>
+
#endif /* _ASM_MMU_CONTEXT_H */
--
2.23.0
^ permalink raw reply related [flat|nested] 40+ messages in thread
* [PATCH 12/24] nds32: use asm-generic/mmu_context.h for no-op implementations
2020-07-28 3:33 [PATCH 00/24] Use asm-generic for mmu_context no-op functions Nicholas Piggin
` (10 preceding siblings ...)
2020-07-28 3:33 ` [PATCH 11/24] mips: " Nicholas Piggin
@ 2020-07-28 3:33 ` Nicholas Piggin
2020-07-28 3:33 ` [PATCH 13/24] nios2: " Nicholas Piggin
` (11 subsequent siblings)
23 siblings, 0 replies; 40+ messages in thread
From: Nicholas Piggin @ 2020-07-28 3:33 UTC (permalink / raw)
To: linux-arch
Cc: Nicholas Piggin, linux-kernel, linux-mm, Arnd Bergmann, Nick Hu,
Greentime Hu, Vincent Chen
Cc: Nick Hu <nickhu@andestech.com>
Cc: Greentime Hu <green.hu@gmail.com>
Cc: Vincent Chen <deanbo422@gmail.com>
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
---
arch/nds32/include/asm/mmu_context.h | 10 ++--------
1 file changed, 2 insertions(+), 8 deletions(-)
diff --git a/arch/nds32/include/asm/mmu_context.h b/arch/nds32/include/asm/mmu_context.h
index b8fd3d189fdc..c651bc8cacdc 100644
--- a/arch/nds32/include/asm/mmu_context.h
+++ b/arch/nds32/include/asm/mmu_context.h
@@ -9,6 +9,7 @@
#include <asm/proc-fns.h>
#include <asm-generic/mm_hooks.h>
+#define init_new_context init_new_context
static inline int
init_new_context(struct task_struct *tsk, struct mm_struct *mm)
{
@@ -16,8 +17,6 @@ init_new_context(struct task_struct *tsk, struct mm_struct *mm)
return 0;
}
-#define destroy_context(mm) do { } while(0)
-
#define CID_BITS 9
extern spinlock_t cid_lock;
extern unsigned int cpu_last_cid;
@@ -47,10 +46,6 @@ static inline void check_context(struct mm_struct *mm)
__new_context(mm);
}
-static inline void enter_lazy_tlb(struct mm_struct *mm, struct task_struct *tsk)
-{
-}
-
static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next,
struct task_struct *tsk)
{
@@ -62,7 +57,6 @@ static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next,
}
}
-#define deactivate_mm(tsk,mm) do { } while (0)
-#define activate_mm(prev,next) switch_mm(prev, next, NULL)
+#include <asm-generic/mmu_context.h>
#endif
--
2.23.0
^ permalink raw reply related [flat|nested] 40+ messages in thread
* [PATCH 13/24] nios2: use asm-generic/mmu_context.h for no-op implementations
2020-07-28 3:33 [PATCH 00/24] Use asm-generic for mmu_context no-op functions Nicholas Piggin
` (11 preceding siblings ...)
2020-07-28 3:33 ` [PATCH 12/24] nds32: " Nicholas Piggin
@ 2020-07-28 3:33 ` Nicholas Piggin
2020-07-28 3:33 ` [PATCH 14/24] openrisc: " Nicholas Piggin
` (10 subsequent siblings)
23 siblings, 0 replies; 40+ messages in thread
From: Nicholas Piggin @ 2020-07-28 3:33 UTC (permalink / raw)
To: linux-arch
Cc: Nicholas Piggin, linux-kernel, linux-mm, Arnd Bergmann, Ley Foon Tan
Cc: Ley Foon Tan <ley.foon.tan@intel.com>
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
---
arch/nios2/include/asm/mmu_context.h | 21 ++++-----------------
arch/nios2/mm/mmu_context.c | 1 +
2 files changed, 5 insertions(+), 17 deletions(-)
diff --git a/arch/nios2/include/asm/mmu_context.h b/arch/nios2/include/asm/mmu_context.h
index 78ab3dacf579..4f99ed09b5a7 100644
--- a/arch/nios2/include/asm/mmu_context.h
+++ b/arch/nios2/include/asm/mmu_context.h
@@ -26,16 +26,13 @@ extern unsigned long get_pid_from_context(mm_context_t *ctx);
*/
extern pgd_t *pgd_current;
-static inline void enter_lazy_tlb(struct mm_struct *mm, struct task_struct *tsk)
-{
-}
-
/*
* Initialize the context related info for a new mm_struct instance.
*
* Set all new contexts to 0, that way the generation will never match
* the currently running generation when this context is switched in.
*/
+#define init_new_context init_new_context
static inline int init_new_context(struct task_struct *tsk,
struct mm_struct *mm)
{
@@ -43,26 +40,16 @@ static inline int init_new_context(struct task_struct *tsk,
return 0;
}
-/*
- * Destroy context related info for an mm_struct that is about
- * to be put to rest.
- */
-static inline void destroy_context(struct mm_struct *mm)
-{
-}
-
void switch_mm(struct mm_struct *prev, struct mm_struct *next,
struct task_struct *tsk);
-static inline void deactivate_mm(struct task_struct *tsk,
- struct mm_struct *mm)
-{
-}
-
/*
* After we have set current->mm to a new value, this activates
* the context for the new mm so we see the new mappings.
*/
+#define activate_mm activate_mm
void activate_mm(struct mm_struct *prev, struct mm_struct *next);
+#include <asm-generic/mmu_context.h>
+
#endif /* _ASM_NIOS2_MMU_CONTEXT_H */
diff --git a/arch/nios2/mm/mmu_context.c b/arch/nios2/mm/mmu_context.c
index 45d6b9c58d67..d77aa542deb2 100644
--- a/arch/nios2/mm/mmu_context.c
+++ b/arch/nios2/mm/mmu_context.c
@@ -103,6 +103,7 @@ void switch_mm(struct mm_struct *prev, struct mm_struct *next,
* After we have set current->mm to a new value, this activates
* the context for the new mm so we see the new mappings.
*/
+#define activate_mm activate_mm
void activate_mm(struct mm_struct *prev, struct mm_struct *next)
{
next->context = get_new_context();
--
2.23.0
^ permalink raw reply related [flat|nested] 40+ messages in thread
* [PATCH 14/24] openrisc: use asm-generic/mmu_context.h for no-op implementations
2020-07-28 3:33 [PATCH 00/24] Use asm-generic for mmu_context no-op functions Nicholas Piggin
` (12 preceding siblings ...)
2020-07-28 3:33 ` [PATCH 13/24] nios2: " Nicholas Piggin
@ 2020-07-28 3:33 ` Nicholas Piggin
2020-07-29 11:45 ` Stafford Horne
2020-07-28 3:33 ` [PATCH 15/24] parisc: " Nicholas Piggin
` (9 subsequent siblings)
23 siblings, 1 reply; 40+ messages in thread
From: Nicholas Piggin @ 2020-07-28 3:33 UTC (permalink / raw)
To: linux-arch
Cc: Nicholas Piggin, linux-kernel, linux-mm, Arnd Bergmann,
Jonas Bonn, Stefan Kristiansson, Stafford Horne, openrisc
Cc: Jonas Bonn <jonas@southpole.se>
Cc: Stefan Kristiansson <stefan.kristiansson@saunalahti.fi>
Cc: Stafford Horne <shorne@gmail.com>
Cc: openrisc@lists.librecores.org
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
---
arch/openrisc/include/asm/mmu_context.h | 8 +++-----
arch/openrisc/mm/tlb.c | 2 ++
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/arch/openrisc/include/asm/mmu_context.h b/arch/openrisc/include/asm/mmu_context.h
index ced577542e29..a6702384c77d 100644
--- a/arch/openrisc/include/asm/mmu_context.h
+++ b/arch/openrisc/include/asm/mmu_context.h
@@ -17,13 +17,13 @@
#include <asm-generic/mm_hooks.h>
+#define init_new_context init_new_context
extern int init_new_context(struct task_struct *tsk, struct mm_struct *mm);
+#define destroy_context destroy_context
extern void destroy_context(struct mm_struct *mm);
extern void switch_mm(struct mm_struct *prev, struct mm_struct *next,
struct task_struct *tsk);
-#define deactivate_mm(tsk, mm) do { } while (0)
-
#define activate_mm(prev, next) switch_mm((prev), (next), NULL)
/* current active pgd - this is similar to other processors pgd
@@ -32,8 +32,6 @@ extern void switch_mm(struct mm_struct *prev, struct mm_struct *next,
extern volatile pgd_t *current_pgd[]; /* defined in arch/openrisc/mm/fault.c */
-static inline void enter_lazy_tlb(struct mm_struct *mm, struct task_struct *tsk)
-{
-}
+#include <asm-generic/mmu_context.h>
#endif
diff --git a/arch/openrisc/mm/tlb.c b/arch/openrisc/mm/tlb.c
index 4b680aed8f5f..821aab4cf3be 100644
--- a/arch/openrisc/mm/tlb.c
+++ b/arch/openrisc/mm/tlb.c
@@ -159,6 +159,7 @@ void switch_mm(struct mm_struct *prev, struct mm_struct *next,
* instance.
*/
+#define init_new_context init_new_context
int init_new_context(struct task_struct *tsk, struct mm_struct *mm)
{
mm->context = NO_CONTEXT;
@@ -170,6 +171,7 @@ int init_new_context(struct task_struct *tsk, struct mm_struct *mm)
* drops it.
*/
+#define destroy_context destroy_context
void destroy_context(struct mm_struct *mm)
{
flush_tlb_mm(mm);
--
2.23.0
^ permalink raw reply related [flat|nested] 40+ messages in thread
* Re: [PATCH 14/24] openrisc: use asm-generic/mmu_context.h for no-op implementations
2020-07-28 3:33 ` [PATCH 14/24] openrisc: " Nicholas Piggin
@ 2020-07-29 11:45 ` Stafford Horne
2020-08-26 14:33 ` Nicholas Piggin
0 siblings, 1 reply; 40+ messages in thread
From: Stafford Horne @ 2020-07-29 11:45 UTC (permalink / raw)
To: Nicholas Piggin
Cc: linux-arch, linux-kernel, linux-mm, Arnd Bergmann, Jonas Bonn,
Stefan Kristiansson, openrisc
On Tue, Jul 28, 2020 at 01:33:55PM +1000, Nicholas Piggin wrote:
> Cc: Jonas Bonn <jonas@southpole.se>
> Cc: Stefan Kristiansson <stefan.kristiansson@saunalahti.fi>
> Cc: Stafford Horne <shorne@gmail.com>
> Cc: openrisc@lists.librecores.org
> Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
> ---
> arch/openrisc/include/asm/mmu_context.h | 8 +++-----
> arch/openrisc/mm/tlb.c | 2 ++
> 2 files changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/arch/openrisc/include/asm/mmu_context.h b/arch/openrisc/include/asm/mmu_context.h
> index ced577542e29..a6702384c77d 100644
> --- a/arch/openrisc/include/asm/mmu_context.h
> +++ b/arch/openrisc/include/asm/mmu_context.h
> @@ -17,13 +17,13 @@
>
> #include <asm-generic/mm_hooks.h>
>
> +#define init_new_context init_new_context
> extern int init_new_context(struct task_struct *tsk, struct mm_struct *mm);
> +#define destroy_context destroy_context
> extern void destroy_context(struct mm_struct *mm);
> extern void switch_mm(struct mm_struct *prev, struct mm_struct *next,
> struct task_struct *tsk);
>
> -#define deactivate_mm(tsk, mm) do { } while (0)
> -
> #define activate_mm(prev, next) switch_mm((prev), (next), NULL)
>
> /* current active pgd - this is similar to other processors pgd
> @@ -32,8 +32,6 @@ extern void switch_mm(struct mm_struct *prev, struct mm_struct *next,
>
> extern volatile pgd_t *current_pgd[]; /* defined in arch/openrisc/mm/fault.c */
>
> -static inline void enter_lazy_tlb(struct mm_struct *mm, struct task_struct *tsk)
> -{
> -}
> +#include <asm-generic/mmu_context.h>
This looks ok.
> #endif
> diff --git a/arch/openrisc/mm/tlb.c b/arch/openrisc/mm/tlb.c
> index 4b680aed8f5f..821aab4cf3be 100644
> --- a/arch/openrisc/mm/tlb.c
> +++ b/arch/openrisc/mm/tlb.c
> @@ -159,6 +159,7 @@ void switch_mm(struct mm_struct *prev, struct mm_struct *next,
> * instance.
> */
>
> +#define init_new_context init_new_context
> int init_new_context(struct task_struct *tsk, struct mm_struct *mm)
> {
> mm->context = NO_CONTEXT;
> @@ -170,6 +171,7 @@ int init_new_context(struct task_struct *tsk, struct mm_struct *mm)
> * drops it.
> */
>
> +#define destroy_context destroy_context
> void destroy_context(struct mm_struct *mm)
> {
> flush_tlb_mm(mm);
I don't think we need the #define's in the .c file. Do we?
-Stafford
> --
> 2.23.0
>
^ permalink raw reply [flat|nested] 40+ messages in thread
* Re: [PATCH 14/24] openrisc: use asm-generic/mmu_context.h for no-op implementations
2020-07-29 11:45 ` Stafford Horne
@ 2020-08-26 14:33 ` Nicholas Piggin
0 siblings, 0 replies; 40+ messages in thread
From: Nicholas Piggin @ 2020-08-26 14:33 UTC (permalink / raw)
To: Stafford Horne
Cc: Arnd Bergmann, Jonas Bonn, linux-arch, linux-kernel, linux-mm,
openrisc, Stefan Kristiansson
Excerpts from Stafford Horne's message of July 29, 2020 9:45 pm:
> On Tue, Jul 28, 2020 at 01:33:55PM +1000, Nicholas Piggin wrote:
>> Cc: Jonas Bonn <jonas@southpole.se>
>> Cc: Stefan Kristiansson <stefan.kristiansson@saunalahti.fi>
>> Cc: Stafford Horne <shorne@gmail.com>
>> Cc: openrisc@lists.librecores.org
>> Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
>> ---
>> arch/openrisc/include/asm/mmu_context.h | 8 +++-----
>> arch/openrisc/mm/tlb.c | 2 ++
>> 2 files changed, 5 insertions(+), 5 deletions(-)
>>
>> diff --git a/arch/openrisc/include/asm/mmu_context.h b/arch/openrisc/include/asm/mmu_context.h
>> index ced577542e29..a6702384c77d 100644
>> --- a/arch/openrisc/include/asm/mmu_context.h
>> +++ b/arch/openrisc/include/asm/mmu_context.h
>> @@ -17,13 +17,13 @@
>>
>> #include <asm-generic/mm_hooks.h>
>>
>> +#define init_new_context init_new_context
>> extern int init_new_context(struct task_struct *tsk, struct mm_struct *mm);
>> +#define destroy_context destroy_context
>> extern void destroy_context(struct mm_struct *mm);
>> extern void switch_mm(struct mm_struct *prev, struct mm_struct *next,
>> struct task_struct *tsk);
>>
>> -#define deactivate_mm(tsk, mm) do { } while (0)
>> -
>> #define activate_mm(prev, next) switch_mm((prev), (next), NULL)
>>
>> /* current active pgd - this is similar to other processors pgd
>> @@ -32,8 +32,6 @@ extern void switch_mm(struct mm_struct *prev, struct mm_struct *next,
>>
>> extern volatile pgd_t *current_pgd[]; /* defined in arch/openrisc/mm/fault.c */
>>
>> -static inline void enter_lazy_tlb(struct mm_struct *mm, struct task_struct *tsk)
>> -{
>> -}
>> +#include <asm-generic/mmu_context.h>
>
> This looks ok.
>
>> #endif
>> diff --git a/arch/openrisc/mm/tlb.c b/arch/openrisc/mm/tlb.c
>> index 4b680aed8f5f..821aab4cf3be 100644
>> --- a/arch/openrisc/mm/tlb.c
>> +++ b/arch/openrisc/mm/tlb.c
>> @@ -159,6 +159,7 @@ void switch_mm(struct mm_struct *prev, struct mm_struct *next,
>> * instance.
>> */
>>
>> +#define init_new_context init_new_context
>> int init_new_context(struct task_struct *tsk, struct mm_struct *mm)
>> {
>> mm->context = NO_CONTEXT;
>> @@ -170,6 +171,7 @@ int init_new_context(struct task_struct *tsk, struct mm_struct *mm)
>> * drops it.
>> */
>>
>> +#define destroy_context destroy_context
>> void destroy_context(struct mm_struct *mm)
>> {
>> flush_tlb_mm(mm);
>
> I don't think we need the #define's in the .c file. Do we?
You're right, I fixed that and the same issue in another arch.
Thanks,
Nick
^ permalink raw reply [flat|nested] 40+ messages in thread
* [PATCH 15/24] parisc: use asm-generic/mmu_context.h for no-op implementations
2020-07-28 3:33 [PATCH 00/24] Use asm-generic for mmu_context no-op functions Nicholas Piggin
` (13 preceding siblings ...)
2020-07-28 3:33 ` [PATCH 14/24] openrisc: " Nicholas Piggin
@ 2020-07-28 3:33 ` Nicholas Piggin
2020-07-28 3:33 ` [PATCH 16/24] powerpc: " Nicholas Piggin
` (8 subsequent siblings)
23 siblings, 0 replies; 40+ messages in thread
From: Nicholas Piggin @ 2020-07-28 3:33 UTC (permalink / raw)
To: linux-arch
Cc: Nicholas Piggin, linux-kernel, linux-mm, Arnd Bergmann,
James E.J. Bottomley, Helge Deller, linux-parisc
Cc: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com>
Cc: Helge Deller <deller@gmx.de>
Cc: linux-parisc@vger.kernel.org
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
---
arch/parisc/include/asm/mmu_context.h | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/arch/parisc/include/asm/mmu_context.h b/arch/parisc/include/asm/mmu_context.h
index 07b89c74abeb..71f8a3679b83 100644
--- a/arch/parisc/include/asm/mmu_context.h
+++ b/arch/parisc/include/asm/mmu_context.h
@@ -8,16 +8,13 @@
#include <asm/pgalloc.h>
#include <asm-generic/mm_hooks.h>
-static inline void enter_lazy_tlb(struct mm_struct *mm, struct task_struct *tsk)
-{
-}
-
/* on PA-RISC, we actually have enough contexts to justify an allocator
* for them. prumpf */
extern unsigned long alloc_sid(void);
extern void free_sid(unsigned long);
+#define init_new_context init_new_context
static inline int
init_new_context(struct task_struct *tsk, struct mm_struct *mm)
{
@@ -27,6 +24,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)
{
@@ -72,8 +70,7 @@ static inline void switch_mm(struct mm_struct *prev,
}
#define switch_mm_irqs_off switch_mm_irqs_off
-#define deactivate_mm(tsk,mm) do { } while (0)
-
+#define activate_mm activate_mm
static inline void activate_mm(struct mm_struct *prev, struct mm_struct *next)
{
/*
@@ -91,4 +88,7 @@ static inline void activate_mm(struct mm_struct *prev, struct mm_struct *next)
switch_mm(prev,next,current);
}
+
+#include <asm-generic/mmu_context.h>
+
#endif
--
2.23.0
^ permalink raw reply related [flat|nested] 40+ messages in thread
* [PATCH 16/24] powerpc: use asm-generic/mmu_context.h for no-op implementations
2020-07-28 3:33 [PATCH 00/24] Use asm-generic for mmu_context no-op functions Nicholas Piggin
` (14 preceding siblings ...)
2020-07-28 3:33 ` [PATCH 15/24] parisc: " Nicholas Piggin
@ 2020-07-28 3:33 ` Nicholas Piggin
2020-07-28 3:33 ` [PATCH 17/24] riscv: " Nicholas Piggin
` (7 subsequent siblings)
23 siblings, 0 replies; 40+ messages in thread
From: Nicholas Piggin @ 2020-07-28 3:33 UTC (permalink / raw)
To: linux-arch
Cc: Nicholas Piggin, linux-kernel, linux-mm, Arnd Bergmann,
Michael Ellerman, Benjamin Herrenschmidt, Paul Mackerras,
linuxppc-dev
Cc: Michael Ellerman <mpe@ellerman.id.au>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Paul Mackerras <paulus@ozlabs.org>
Cc: linuxppc-dev@lists.ozlabs.org
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
---
arch/powerpc/include/asm/mmu_context.h | 22 +++++++---------------
1 file changed, 7 insertions(+), 15 deletions(-)
diff --git a/arch/powerpc/include/asm/mmu_context.h b/arch/powerpc/include/asm/mmu_context.h
index 1a474f6b1992..242bd987247b 100644
--- a/arch/powerpc/include/asm/mmu_context.h
+++ b/arch/powerpc/include/asm/mmu_context.h
@@ -14,7 +14,9 @@
/*
* Most if the context management is out of line
*/
+#define init_new_context init_new_context
extern int init_new_context(struct task_struct *tsk, struct mm_struct *mm);
+#define destroy_context destroy_context
extern void destroy_context(struct mm_struct *mm);
#ifdef CONFIG_SPAPR_TCE_IOMMU
struct mm_iommu_table_group_mem_t;
@@ -237,27 +239,15 @@ static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next,
}
#define switch_mm_irqs_off switch_mm_irqs_off
-
-#define deactivate_mm(tsk,mm) do { } while (0)
-
-/*
- * After we have set current->mm to a new value, this activates
- * the context for the new mm so we see the new mappings.
- */
-static inline void activate_mm(struct mm_struct *prev, struct mm_struct *next)
-{
- switch_mm(prev, next, current);
-}
-
-/* We don't currently use enter_lazy_tlb() for anything */
+#ifdef CONFIG_PPC_BOOK3E_64
+#define enter_lazy_tlb enter_lazy_tlb
static inline void enter_lazy_tlb(struct mm_struct *mm,
struct task_struct *tsk)
{
/* 64-bit Book3E keeps track of current PGD in the PACA */
-#ifdef CONFIG_PPC_BOOK3E_64
get_paca()->pgd = NULL;
-#endif
}
+#endif
extern void arch_exit_mmap(struct mm_struct *mm);
@@ -300,5 +290,7 @@ static inline int arch_dup_mmap(struct mm_struct *oldmm,
return 0;
}
+#include <asm-generic/mmu_context.h>
+
#endif /* __KERNEL__ */
#endif /* __ASM_POWERPC_MMU_CONTEXT_H */
--
2.23.0
^ permalink raw reply related [flat|nested] 40+ messages in thread
* [PATCH 17/24] riscv: use asm-generic/mmu_context.h for no-op implementations
2020-07-28 3:33 [PATCH 00/24] Use asm-generic for mmu_context no-op functions Nicholas Piggin
` (15 preceding siblings ...)
2020-07-28 3:33 ` [PATCH 16/24] powerpc: " Nicholas Piggin
@ 2020-07-28 3:33 ` Nicholas Piggin
2020-07-30 21:20 ` Palmer Dabbelt
2020-07-28 3:33 ` [PATCH 18/24] s390: " Nicholas Piggin
` (6 subsequent siblings)
23 siblings, 1 reply; 40+ messages in thread
From: Nicholas Piggin @ 2020-07-28 3:33 UTC (permalink / raw)
To: linux-arch
Cc: Nicholas Piggin, linux-kernel, linux-mm, Arnd Bergmann,
Paul Walmsley, Palmer Dabbelt, Albert Ou, linux-riscv
Cc: Paul Walmsley <paul.walmsley@sifive.com>
Cc: Palmer Dabbelt <palmer@dabbelt.com>
Cc: Albert Ou <aou@eecs.berkeley.edu>
Cc: linux-riscv@lists.infradead.org
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
---
arch/riscv/include/asm/mmu_context.h | 22 ++--------------------
1 file changed, 2 insertions(+), 20 deletions(-)
diff --git a/arch/riscv/include/asm/mmu_context.h b/arch/riscv/include/asm/mmu_context.h
index 67c463812e2d..250defa06f3a 100644
--- a/arch/riscv/include/asm/mmu_context.h
+++ b/arch/riscv/include/asm/mmu_context.h
@@ -13,34 +13,16 @@
#include <linux/mm.h>
#include <linux/sched.h>
-static inline void enter_lazy_tlb(struct mm_struct *mm,
- struct task_struct *task)
-{
-}
-
-/* Initialize context-related info for a new mm_struct */
-static inline int init_new_context(struct task_struct *task,
- struct mm_struct *mm)
-{
- return 0;
-}
-
-static inline void destroy_context(struct mm_struct *mm)
-{
-}
-
void switch_mm(struct mm_struct *prev, struct mm_struct *next,
struct task_struct *task);
+#define activate_mm activate_mm
static inline void activate_mm(struct mm_struct *prev,
struct mm_struct *next)
{
switch_mm(prev, next, NULL);
}
-static inline void deactivate_mm(struct task_struct *task,
- struct mm_struct *mm)
-{
-}
+#include <asm-generic/mmu_context.h>
#endif /* _ASM_RISCV_MMU_CONTEXT_H */
--
2.23.0
^ permalink raw reply related [flat|nested] 40+ messages in thread
* Re: [PATCH 17/24] riscv: use asm-generic/mmu_context.h for no-op implementations
2020-07-28 3:33 ` [PATCH 17/24] riscv: " Nicholas Piggin
@ 2020-07-30 21:20 ` Palmer Dabbelt
0 siblings, 0 replies; 40+ messages in thread
From: Palmer Dabbelt @ 2020-07-30 21:20 UTC (permalink / raw)
To: npiggin
Cc: linux-arch, npiggin, linux-kernel, linux-mm, Arnd Bergmann,
Paul Walmsley, aou, linux-riscv
On Mon, 27 Jul 2020 20:33:58 PDT (-0700), npiggin@gmail.com wrote:
> Cc: Paul Walmsley <paul.walmsley@sifive.com>
> Cc: Palmer Dabbelt <palmer@dabbelt.com>
> Cc: Albert Ou <aou@eecs.berkeley.edu>
> Cc: linux-riscv@lists.infradead.org
> Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
> ---
> arch/riscv/include/asm/mmu_context.h | 22 ++--------------------
> 1 file changed, 2 insertions(+), 20 deletions(-)
>
> diff --git a/arch/riscv/include/asm/mmu_context.h b/arch/riscv/include/asm/mmu_context.h
> index 67c463812e2d..250defa06f3a 100644
> --- a/arch/riscv/include/asm/mmu_context.h
> +++ b/arch/riscv/include/asm/mmu_context.h
> @@ -13,34 +13,16 @@
> #include <linux/mm.h>
> #include <linux/sched.h>
>
> -static inline void enter_lazy_tlb(struct mm_struct *mm,
> - struct task_struct *task)
> -{
> -}
> -
> -/* Initialize context-related info for a new mm_struct */
> -static inline int init_new_context(struct task_struct *task,
> - struct mm_struct *mm)
> -{
> - return 0;
> -}
> -
> -static inline void destroy_context(struct mm_struct *mm)
> -{
> -}
> -
> void switch_mm(struct mm_struct *prev, struct mm_struct *next,
> struct task_struct *task);
>
> +#define activate_mm activate_mm
> static inline void activate_mm(struct mm_struct *prev,
> struct mm_struct *next)
> {
> switch_mm(prev, next, NULL);
> }
>
> -static inline void deactivate_mm(struct task_struct *task,
> - struct mm_struct *mm)
> -{
> -}
> +#include <asm-generic/mmu_context.h>
>
> #endif /* _ASM_RISCV_MMU_CONTEXT_H */
Acked-by: Palmer Dabbelt <palmerdabbelt@google.com>
I'm assuming this is going in along with the others. Thanks!
^ permalink raw reply [flat|nested] 40+ messages in thread
* [PATCH 18/24] s390: use asm-generic/mmu_context.h for no-op implementations
2020-07-28 3:33 [PATCH 00/24] Use asm-generic for mmu_context no-op functions Nicholas Piggin
` (16 preceding siblings ...)
2020-07-28 3:33 ` [PATCH 17/24] riscv: " Nicholas Piggin
@ 2020-07-28 3:33 ` Nicholas Piggin
2020-07-28 3:34 ` [PATCH 19/24] sh: " Nicholas Piggin
` (5 subsequent siblings)
23 siblings, 0 replies; 40+ messages in thread
From: Nicholas Piggin @ 2020-07-28 3:33 UTC (permalink / raw)
To: linux-arch
Cc: Nicholas Piggin, linux-kernel, linux-mm, Arnd Bergmann,
Heiko Carstens, Vasily Gorbik, Christian Borntraeger, linux-s390
Cc: Heiko Carstens <hca@linux.ibm.com>
Cc: Vasily Gorbik <gor@linux.ibm.com>
Cc: Christian Borntraeger <borntraeger@de.ibm.com>
Cc: linux-s390@vger.kernel.org
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
---
arch/s390/include/asm/mmu_context.h | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/arch/s390/include/asm/mmu_context.h b/arch/s390/include/asm/mmu_context.h
index c9f3d8a52756..66f9cf0a07e3 100644
--- a/arch/s390/include/asm/mmu_context.h
+++ b/arch/s390/include/asm/mmu_context.h
@@ -15,6 +15,7 @@
#include <asm/ctl_reg.h>
#include <asm-generic/mm_hooks.h>
+#define init_new_context init_new_context
static inline int init_new_context(struct task_struct *tsk,
struct mm_struct *mm)
{
@@ -69,8 +70,6 @@ static inline int init_new_context(struct task_struct *tsk,
return 0;
}
-#define destroy_context(mm) do { } while (0)
-
static inline void set_user_asce(struct mm_struct *mm)
{
S390_lowcore.user_asce = mm->context.asce;
@@ -125,9 +124,7 @@ static inline void finish_arch_post_lock_switch(void)
set_fs(current->thread.mm_segment);
}
-#define enter_lazy_tlb(mm,tsk) do { } while (0)
-#define deactivate_mm(tsk,mm) do { } while (0)
-
+#define activate_mm activate_mm
static inline void activate_mm(struct mm_struct *prev,
struct mm_struct *next)
{
@@ -136,4 +133,6 @@ static inline void activate_mm(struct mm_struct *prev,
set_user_asce(next);
}
+#include <asm-generic/mmu_context.h>
+
#endif /* __S390_MMU_CONTEXT_H */
--
2.23.0
^ permalink raw reply related [flat|nested] 40+ messages in thread
* [PATCH 19/24] sh: use asm-generic/mmu_context.h for no-op implementations
2020-07-28 3:33 [PATCH 00/24] Use asm-generic for mmu_context no-op functions Nicholas Piggin
` (17 preceding siblings ...)
2020-07-28 3:33 ` [PATCH 18/24] s390: " Nicholas Piggin
@ 2020-07-28 3:34 ` Nicholas Piggin
2020-07-28 3:34 ` [PATCH 20/24] sparc: " Nicholas Piggin
` (4 subsequent siblings)
23 siblings, 0 replies; 40+ messages in thread
From: Nicholas Piggin @ 2020-07-28 3:34 UTC (permalink / raw)
To: linux-arch
Cc: Nicholas Piggin, linux-kernel, linux-mm, Arnd Bergmann,
Yoshinori Sato, Rich Felker, linux-sh
Cc: Yoshinori Sato <ysato@users.sourceforge.jp>
Cc: Rich Felker <dalias@libc.org>
Cc: linux-sh@vger.kernel.org
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
---
arch/sh/include/asm/mmu_context.h | 5 ++---
arch/sh/include/asm/mmu_context_32.h | 9 ---------
2 files changed, 2 insertions(+), 12 deletions(-)
diff --git a/arch/sh/include/asm/mmu_context.h b/arch/sh/include/asm/mmu_context.h
index 9470d17c71c2..ce40147d4a7d 100644
--- a/arch/sh/include/asm/mmu_context.h
+++ b/arch/sh/include/asm/mmu_context.h
@@ -85,6 +85,7 @@ static inline void get_mmu_context(struct mm_struct *mm, unsigned int cpu)
* 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)
{
@@ -121,9 +122,7 @@ static inline void switch_mm(struct mm_struct *prev,
activate_context(next, cpu);
}
-#define activate_mm(prev, next) switch_mm((prev),(next),NULL)
-#define deactivate_mm(tsk,mm) do { } while (0)
-#define enter_lazy_tlb(mm,tsk) do { } while (0)
+#include <asm-generic/mmu_context.h>
#else
diff --git a/arch/sh/include/asm/mmu_context_32.h b/arch/sh/include/asm/mmu_context_32.h
index 71bf12ef1f65..bc5034fa6249 100644
--- a/arch/sh/include/asm/mmu_context_32.h
+++ b/arch/sh/include/asm/mmu_context_32.h
@@ -2,15 +2,6 @@
#ifndef __ASM_SH_MMU_CONTEXT_32_H
#define __ASM_SH_MMU_CONTEXT_32_H
-/*
- * Destroy context related info for an mm_struct that is about
- * to be put to rest.
- */
-static inline void destroy_context(struct mm_struct *mm)
-{
- /* Do nothing */
-}
-
#ifdef CONFIG_CPU_HAS_PTEAEX
static inline void set_asid(unsigned long asid)
{
--
2.23.0
^ permalink raw reply related [flat|nested] 40+ messages in thread
* [PATCH 20/24] sparc: use asm-generic/mmu_context.h for no-op implementations
2020-07-28 3:33 [PATCH 00/24] Use asm-generic for mmu_context no-op functions Nicholas Piggin
` (18 preceding siblings ...)
2020-07-28 3:34 ` [PATCH 19/24] sh: " Nicholas Piggin
@ 2020-07-28 3:34 ` Nicholas Piggin
2020-07-28 3:34 ` [PATCH 21/24] um: " Nicholas Piggin
` (3 subsequent siblings)
23 siblings, 0 replies; 40+ messages in thread
From: Nicholas Piggin @ 2020-07-28 3:34 UTC (permalink / raw)
To: linux-arch
Cc: Nicholas Piggin, linux-kernel, linux-mm, Arnd Bergmann,
David S. Miller, sparclinux
Cc: "David S. Miller" <davem@davemloft.net>
Cc: sparclinux@vger.kernel.org
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
---
arch/sparc/include/asm/mmu_context_32.h | 10 ++++------
arch/sparc/include/asm/mmu_context_64.h | 10 +++++-----
2 files changed, 9 insertions(+), 11 deletions(-)
diff --git a/arch/sparc/include/asm/mmu_context_32.h b/arch/sparc/include/asm/mmu_context_32.h
index 7ddcb8badf70..509043f81560 100644
--- a/arch/sparc/include/asm/mmu_context_32.h
+++ b/arch/sparc/include/asm/mmu_context_32.h
@@ -6,13 +6,10 @@
#include <asm-generic/mm_hooks.h>
-static inline void enter_lazy_tlb(struct mm_struct *mm, struct task_struct *tsk)
-{
-}
-
/* Initialize a new mmu context. This is invoked when a new
* address space instance (unique or shared) is instantiated.
*/
+#define init_new_context init_new_context
int init_new_context(struct task_struct *tsk, struct mm_struct *mm);
/* Destroy a dead context. This occurs when mmput drops the
@@ -20,17 +17,18 @@ int init_new_context(struct task_struct *tsk, struct mm_struct *mm);
* all the page tables have been flushed. Our job is to destroy
* any remaining processor-specific state.
*/
+#define destroy_context destroy_context
void destroy_context(struct mm_struct *mm);
/* Switch the current MM context. */
void switch_mm(struct mm_struct *old_mm, struct mm_struct *mm,
struct task_struct *tsk);
-#define deactivate_mm(tsk,mm) do { } while (0)
-
/* Activate a new MM instance for the current task. */
#define activate_mm(active_mm, mm) switch_mm((active_mm), (mm), NULL)
+#include <asm-generic/mmu_context.h>
+
#endif /* !(__ASSEMBLY__) */
#endif /* !(__SPARC_MMU_CONTEXT_H) */
diff --git a/arch/sparc/include/asm/mmu_context_64.h b/arch/sparc/include/asm/mmu_context_64.h
index 312fcee8df2b..7a8380c63aab 100644
--- a/arch/sparc/include/asm/mmu_context_64.h
+++ b/arch/sparc/include/asm/mmu_context_64.h
@@ -16,17 +16,16 @@
#include <asm-generic/mm_hooks.h>
#include <asm/percpu.h>
-static inline void enter_lazy_tlb(struct mm_struct *mm, struct task_struct *tsk)
-{
-}
-
extern spinlock_t ctx_alloc_lock;
extern unsigned long tlb_context_cache;
extern unsigned long mmu_context_bmap[];
DECLARE_PER_CPU(struct mm_struct *, per_cpu_secondary_mm);
void get_new_mmu_context(struct mm_struct *mm);
+
+#define init_new_context init_new_context
int init_new_context(struct task_struct *tsk, struct mm_struct *mm);
+#define destroy_context destroy_context
void destroy_context(struct mm_struct *mm);
void __tsb_context_switch(unsigned long pgd_pa,
@@ -136,7 +135,6 @@ static inline void switch_mm(struct mm_struct *old_mm, struct mm_struct *mm, str
spin_unlock_irqrestore(&mm->context.lock, flags);
}
-#define deactivate_mm(tsk,mm) do { } while (0)
#define activate_mm(active_mm, mm) switch_mm(active_mm, mm, NULL)
#define __HAVE_ARCH_START_CONTEXT_SWITCH
@@ -187,6 +185,8 @@ static inline void finish_arch_post_lock_switch(void)
}
}
+#include <asm-generic/mmu_context.h>
+
#endif /* !(__ASSEMBLY__) */
#endif /* !(__SPARC64_MMU_CONTEXT_H) */
--
2.23.0
^ permalink raw reply related [flat|nested] 40+ messages in thread
* [PATCH 21/24] um: use asm-generic/mmu_context.h for no-op implementations
2020-07-28 3:33 [PATCH 00/24] Use asm-generic for mmu_context no-op functions Nicholas Piggin
` (19 preceding siblings ...)
2020-07-28 3:34 ` [PATCH 20/24] sparc: " Nicholas Piggin
@ 2020-07-28 3:34 ` Nicholas Piggin
2020-07-28 3:34 ` [PATCH 22/24] unicore32: " Nicholas Piggin
` (2 subsequent siblings)
23 siblings, 0 replies; 40+ messages in thread
From: Nicholas Piggin @ 2020-07-28 3:34 UTC (permalink / raw)
To: linux-arch
Cc: Nicholas Piggin, linux-kernel, linux-mm, Arnd Bergmann,
Jeff Dike, Richard Weinberger, Anton Ivanov, linux-um
Cc: Jeff Dike <jdike@addtoit.com>
Cc: Richard Weinberger <richard@nod.at>
Cc: Anton Ivanov <anton.ivanov@cambridgegreys.com>
Cc: linux-um@lists.infradead.org
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
---
arch/um/include/asm/mmu_context.h | 12 +++++-------
1 file changed, 5 insertions(+), 7 deletions(-)
diff --git a/arch/um/include/asm/mmu_context.h b/arch/um/include/asm/mmu_context.h
index 17ddd4edf875..f8a100770691 100644
--- a/arch/um/include/asm/mmu_context.h
+++ b/arch/um/include/asm/mmu_context.h
@@ -37,10 +37,9 @@ static inline bool arch_vma_access_permitted(struct vm_area_struct *vma,
* end asm-generic/mm_hooks.h functions
*/
-#define deactivate_mm(tsk,mm) do { } while (0)
-
extern void force_flush_all(void);
+#define activate_mm activate_mm
static inline void activate_mm(struct mm_struct *old, struct mm_struct *new)
{
/*
@@ -66,13 +65,12 @@ static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next,
}
}
-static inline void enter_lazy_tlb(struct mm_struct *mm,
- struct task_struct *tsk)
-{
-}
-
+#define init_new_context init_new_context
extern int init_new_context(struct task_struct *task, struct mm_struct *mm);
+#define destroy_context destroy_context
extern void destroy_context(struct mm_struct *mm);
+#include <asm-generic/mmu_context.h>
+
#endif
--
2.23.0
^ permalink raw reply related [flat|nested] 40+ messages in thread
* [PATCH 22/24] unicore32: use asm-generic/mmu_context.h for no-op implementations
2020-07-28 3:33 [PATCH 00/24] Use asm-generic for mmu_context no-op functions Nicholas Piggin
` (20 preceding siblings ...)
2020-07-28 3:34 ` [PATCH 21/24] um: " Nicholas Piggin
@ 2020-07-28 3:34 ` Nicholas Piggin
2020-07-28 3:34 ` [PATCH 23/24] x86: " Nicholas Piggin
2020-07-28 3:34 ` [PATCH 24/24] xtensa: " Nicholas Piggin
23 siblings, 0 replies; 40+ messages in thread
From: Nicholas Piggin @ 2020-07-28 3:34 UTC (permalink / raw)
To: linux-arch
Cc: Nicholas Piggin, linux-kernel, linux-mm, Arnd Bergmann, Guan Xuetao
Cc: Guan Xuetao <gxt@pku.edu.cn>
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
---
arch/unicore32/include/asm/mmu_context.h | 24 +++---------------------
1 file changed, 3 insertions(+), 21 deletions(-)
diff --git a/arch/unicore32/include/asm/mmu_context.h b/arch/unicore32/include/asm/mmu_context.h
index 388c0c811c68..e1751cb5439c 100644
--- a/arch/unicore32/include/asm/mmu_context.h
+++ b/arch/unicore32/include/asm/mmu_context.h
@@ -18,24 +18,6 @@
#include <asm/cacheflush.h>
#include <asm/cpu-single.h>
-#define init_new_context(tsk, mm) 0
-
-#define destroy_context(mm) do { } while (0)
-
-/*
- * This is called when "tsk" is about to enter lazy TLB mode.
- *
- * mm: describes the currently active mm context
- * tsk: task which is entering lazy tlb
- * cpu: cpu number which is entering lazy tlb
- *
- * tsk->mm will be NULL
- */
-static inline void
-enter_lazy_tlb(struct mm_struct *mm, struct task_struct *tsk)
-{
-}
-
/*
* This is the actual mm switch as far as the scheduler
* is concerned. No registers are touched. We avoid
@@ -52,9 +34,6 @@ switch_mm(struct mm_struct *prev, struct mm_struct *next,
cpu_switch_mm(next->pgd, next);
}
-#define deactivate_mm(tsk, mm) do { } while (0)
-#define activate_mm(prev, next) switch_mm(prev, next, NULL)
-
/*
* We are inserting a "fake" vma for the user-accessible vector page so
* gdb and friends can get to it through ptrace and /proc/<pid>/mem.
@@ -95,4 +74,7 @@ static inline bool arch_vma_access_permitted(struct vm_area_struct *vma,
/* by default, allow everything */
return true;
}
+
+#include <asm-generic/mmu_context.h>
+
#endif
--
2.23.0
^ permalink raw reply related [flat|nested] 40+ messages in thread
* [PATCH 23/24] x86: use asm-generic/mmu_context.h for no-op implementations
2020-07-28 3:33 [PATCH 00/24] Use asm-generic for mmu_context no-op functions Nicholas Piggin
` (21 preceding siblings ...)
2020-07-28 3:34 ` [PATCH 22/24] unicore32: " Nicholas Piggin
@ 2020-07-28 3:34 ` Nicholas Piggin
2020-07-28 10:54 ` peterz
2020-07-28 3:34 ` [PATCH 24/24] xtensa: " Nicholas Piggin
23 siblings, 1 reply; 40+ messages in thread
From: Nicholas Piggin @ 2020-07-28 3:34 UTC (permalink / raw)
To: linux-arch
Cc: Nicholas Piggin, linux-kernel, linux-mm, Arnd Bergmann,
Thomas Gleixner, Ingo Molnar, Borislav Petkov, x86,
H. Peter Anvin
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Borislav Petkov <bp@alien8.de>
Cc: x86@kernel.org
Cc: "H. Peter Anvin" <hpa@zytor.com>
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
---
arch/x86/include/asm/mmu_context.h | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/arch/x86/include/asm/mmu_context.h b/arch/x86/include/asm/mmu_context.h
index 47562147e70b..255750548433 100644
--- a/arch/x86/include/asm/mmu_context.h
+++ b/arch/x86/include/asm/mmu_context.h
@@ -92,12 +92,14 @@ static inline void switch_ldt(struct mm_struct *prev, struct mm_struct *next)
}
#endif
+#define enter_lazy_tlb enter_lazy_tlb
extern void enter_lazy_tlb(struct mm_struct *mm, struct task_struct *tsk);
/*
* Init a new mm. Used on mm copies, like at fork()
* and on mm's that are brand-new, like at execve().
*/
+#define init_new_context init_new_context
static inline int init_new_context(struct task_struct *tsk,
struct mm_struct *mm)
{
@@ -117,6 +119,8 @@ static inline int init_new_context(struct task_struct *tsk,
init_new_context_ldt(mm);
return 0;
}
+
+#define destroy_context destroy_context
static inline void destroy_context(struct mm_struct *mm)
{
destroy_context_ldt(mm);
@@ -215,4 +219,6 @@ static inline bool arch_vma_access_permitted(struct vm_area_struct *vma,
unsigned long __get_current_cr3_fast(void);
+#include <asm-generic/mmu_context.h>
+
#endif /* _ASM_X86_MMU_CONTEXT_H */
--
2.23.0
^ permalink raw reply related [flat|nested] 40+ messages in thread
* Re: [PATCH 23/24] x86: use asm-generic/mmu_context.h for no-op implementations
2020-07-28 3:34 ` [PATCH 23/24] x86: " Nicholas Piggin
@ 2020-07-28 10:54 ` peterz
0 siblings, 0 replies; 40+ messages in thread
From: peterz @ 2020-07-28 10:54 UTC (permalink / raw)
To: Nicholas Piggin
Cc: linux-arch, linux-kernel, linux-mm, Arnd Bergmann,
Thomas Gleixner, Ingo Molnar, Borislav Petkov, x86,
H. Peter Anvin
On Tue, Jul 28, 2020 at 01:34:04PM +1000, Nicholas Piggin wrote:
> Cc: Thomas Gleixner <tglx@linutronix.de>
> Cc: Ingo Molnar <mingo@redhat.com>
> Cc: Borislav Petkov <bp@alien8.de>
> Cc: x86@kernel.org
> Cc: "H. Peter Anvin" <hpa@zytor.com>
> Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
> ---
> arch/x86/include/asm/mmu_context.h | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/arch/x86/include/asm/mmu_context.h b/arch/x86/include/asm/mmu_context.h
> index 47562147e70b..255750548433 100644
> --- a/arch/x86/include/asm/mmu_context.h
> +++ b/arch/x86/include/asm/mmu_context.h
> @@ -92,12 +92,14 @@ static inline void switch_ldt(struct mm_struct *prev, struct mm_struct *next)
> }
> #endif
>
> +#define enter_lazy_tlb enter_lazy_tlb
> extern void enter_lazy_tlb(struct mm_struct *mm, struct task_struct *tsk);
>
> /*
> * Init a new mm. Used on mm copies, like at fork()
> * and on mm's that are brand-new, like at execve().
> */
> +#define init_new_context init_new_context
> static inline int init_new_context(struct task_struct *tsk,
> struct mm_struct *mm)
> {
> @@ -117,6 +119,8 @@ static inline int init_new_context(struct task_struct *tsk,
> init_new_context_ldt(mm);
> return 0;
> }
> +
> +#define destroy_context destroy_context
> static inline void destroy_context(struct mm_struct *mm)
> {
> destroy_context_ldt(mm);
> @@ -215,4 +219,6 @@ static inline bool arch_vma_access_permitted(struct vm_area_struct *vma,
>
> unsigned long __get_current_cr3_fast(void);
>
> +#include <asm-generic/mmu_context.h>
> +
> #endif /* _ASM_X86_MMU_CONTEXT_H */
> --
> 2.23.0
>
^ permalink raw reply [flat|nested] 40+ messages in thread
* [PATCH 24/24] xtensa: use asm-generic/mmu_context.h for no-op implementations
2020-07-28 3:33 [PATCH 00/24] Use asm-generic for mmu_context no-op functions Nicholas Piggin
` (22 preceding siblings ...)
2020-07-28 3:34 ` [PATCH 23/24] x86: " Nicholas Piggin
@ 2020-07-28 3:34 ` Nicholas Piggin
23 siblings, 0 replies; 40+ messages in thread
From: Nicholas Piggin @ 2020-07-28 3:34 UTC (permalink / raw)
To: linux-arch
Cc: Nicholas Piggin, linux-kernel, linux-mm, Arnd Bergmann,
Chris Zankel, Max Filippov, linux-xtensa
Cc: Chris Zankel <chris@zankel.net>
Cc: Max Filippov <jcmvbkbc@gmail.com>
Cc: linux-xtensa@linux-xtensa.org
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
---
arch/xtensa/include/asm/mmu_context.h | 11 +++--------
arch/xtensa/include/asm/nommu_context.h | 26 +------------------------
2 files changed, 4 insertions(+), 33 deletions(-)
diff --git a/arch/xtensa/include/asm/mmu_context.h b/arch/xtensa/include/asm/mmu_context.h
index 74923ef3b228..e337ba9686e9 100644
--- a/arch/xtensa/include/asm/mmu_context.h
+++ b/arch/xtensa/include/asm/mmu_context.h
@@ -111,6 +111,7 @@ static inline void activate_context(struct mm_struct *mm, unsigned int cpu)
* to -1 says the process has never run on any core.
*/
+#define init_new_context init_new_context
static inline int init_new_context(struct task_struct *tsk,
struct mm_struct *mm)
{
@@ -136,24 +137,18 @@ static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next,
activate_context(next, cpu);
}
-#define activate_mm(prev, next) switch_mm((prev), (next), NULL)
-#define deactivate_mm(tsk, mm) do { } while (0)
-
/*
* Destroy context related info for an mm_struct that is about
* to be put to rest.
*/
+#define destroy_context destroy_context
static inline void destroy_context(struct mm_struct *mm)
{
invalidate_page_directory();
}
-static inline void enter_lazy_tlb(struct mm_struct *mm, struct task_struct *tsk)
-{
- /* Nothing to do. */
-
-}
+#include <asm-generic/mmu_context.h>
#endif /* CONFIG_MMU */
#endif /* _XTENSA_MMU_CONTEXT_H */
diff --git a/arch/xtensa/include/asm/nommu_context.h b/arch/xtensa/include/asm/nommu_context.h
index 37251b2ef871..7c9d1918dc41 100644
--- a/arch/xtensa/include/asm/nommu_context.h
+++ b/arch/xtensa/include/asm/nommu_context.h
@@ -7,28 +7,4 @@ static inline void init_kio(void)
{
}
-static inline void enter_lazy_tlb(struct mm_struct *mm, struct task_struct *tsk)
-{
-}
-
-static inline int init_new_context(struct task_struct *tsk,struct mm_struct *mm)
-{
- return 0;
-}
-
-static inline void destroy_context(struct mm_struct *mm)
-{
-}
-
-static inline void activate_mm(struct mm_struct *prev, struct mm_struct *next)
-{
-}
-
-static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next,
- struct task_struct *tsk)
-{
-}
-
-static inline void deactivate_mm(struct task_struct *tsk, struct mm_struct *mm)
-{
-}
+#include <asm-generic/nommu_context.h>
--
2.23.0
^ permalink raw reply related [flat|nested] 40+ messages in thread