* [PATCH v2 00/23] Use asm-generic for mmu_context no-op functions
@ 2020-08-26 14:52 Nicholas Piggin
2020-08-26 14:52 ` [PATCH v2 01/23] asm-generic: add generic MMU versions of mmu context functions Nicholas Piggin
` (24 more replies)
0 siblings, 25 replies; 50+ messages in thread
From: Nicholas Piggin @ 2020-08-26 14:52 UTC (permalink / raw)
To: linux-arch; +Cc: Nicholas Piggin, linux-kernel, linux-mm, Arnd Bergmann
It would be nice to be able to modify mmu_context functions or add a
hook without updating all architectures, many of which will be no-ops.
The motivation for this series is a change to lazy mmu handling, but
this series stands on its own as a good cleanup whether or not we end
up making that change.
Arnd, is this something you could take through your asm-generic tree?
(assuming arch maintainers are okay with it)
Thanks,
Nick
Since v1:
- Added acks and feedback from various people.
- Fixed a nommu build error caught by ktp.
- Dropped unicore32.
Nicholas Piggin (23):
asm-generic: add generic MMU versions of mmu context functions
alpha: use asm-generic/mmu_context.h for no-op implementations
arc: use asm-generic/mmu_context.h for no-op implementations
arm: use asm-generic/mmu_context.h for no-op implementations
arm64: use asm-generic/mmu_context.h for no-op implementations
csky: use asm-generic/mmu_context.h for no-op implementations
hexagon: use asm-generic/mmu_context.h for no-op implementations
ia64: use asm-generic/mmu_context.h for no-op implementations
m68k: use asm-generic/mmu_context.h for no-op implementations
microblaze: use asm-generic/mmu_context.h for no-op implementations
mips: use asm-generic/mmu_context.h for no-op implementations
nds32: use asm-generic/mmu_context.h for no-op implementations
nios2: use asm-generic/mmu_context.h for no-op implementations
openrisc: use asm-generic/mmu_context.h for no-op implementations
parisc: use asm-generic/mmu_context.h for no-op implementations
powerpc: use asm-generic/mmu_context.h for no-op implementations
riscv: use asm-generic/mmu_context.h for no-op implementations
s390: use asm-generic/mmu_context.h for no-op implementations
sh: use asm-generic/mmu_context.h for no-op implementations
sparc: use asm-generic/mmu_context.h for no-op implementations
um: use asm-generic/mmu_context.h for no-op implementations
x86: use asm-generic/mmu_context.h for no-op implementations
xtensa: use asm-generic/mmu_context.h for no-op implementations
arch/alpha/include/asm/mmu_context.h | 12 ++---
arch/arc/include/asm/mmu_context.h | 17 +++---
arch/arm/include/asm/mmu_context.h | 26 ++-------
arch/arm64/include/asm/mmu_context.h | 9 ++--
arch/csky/include/asm/mmu_context.h | 8 ++-
arch/hexagon/include/asm/mmu_context.h | 33 ++----------
arch/ia64/include/asm/mmu_context.h | 17 ++----
arch/m68k/include/asm/mmu_context.h | 47 +++-------------
arch/microblaze/include/asm/mmu_context.h | 2 +-
arch/microblaze/include/asm/mmu_context_mm.h | 8 +--
arch/microblaze/include/asm/processor.h | 3 --
arch/mips/include/asm/mmu_context.h | 11 ++--
arch/nds32/include/asm/mmu_context.h | 10 +---
arch/nios2/include/asm/mmu_context.h | 21 ++------
arch/openrisc/include/asm/mmu_context.h | 8 ++-
arch/parisc/include/asm/mmu_context.h | 12 ++---
arch/powerpc/include/asm/mmu_context.h | 22 +++-----
arch/riscv/include/asm/mmu_context.h | 22 +-------
arch/s390/include/asm/mmu_context.h | 9 ++--
arch/sh/include/asm/mmu_context.h | 7 ++-
arch/sh/include/asm/mmu_context_32.h | 9 ----
arch/sparc/include/asm/mmu_context_32.h | 10 ++--
arch/sparc/include/asm/mmu_context_64.h | 10 ++--
arch/um/include/asm/mmu_context.h | 12 ++---
arch/x86/include/asm/mmu_context.h | 6 +++
arch/xtensa/include/asm/mmu_context.h | 11 ++--
arch/xtensa/include/asm/nommu_context.h | 26 +--------
include/asm-generic/mmu_context.h | 57 +++++++++++++++-----
include/asm-generic/nommu_context.h | 19 +++++++
29 files changed, 166 insertions(+), 298 deletions(-)
create mode 100644 include/asm-generic/nommu_context.h
--
2.23.0
^ permalink raw reply [flat|nested] 50+ messages in thread
* [PATCH v2 01/23] asm-generic: add generic MMU versions of mmu context functions
2020-08-26 14:52 [PATCH v2 00/23] Use asm-generic for mmu_context no-op functions Nicholas Piggin
@ 2020-08-26 14:52 ` Nicholas Piggin
2020-08-26 18:13 ` kernel test robot
2020-09-01 6:49 ` Mike Rapoport
2020-08-26 14:52 ` [PATCH v2 02/23] alpha: use asm-generic/mmu_context.h for no-op implementations Nicholas Piggin
` (23 subsequent siblings)
24 siblings, 2 replies; 50+ messages in thread
From: Nicholas Piggin @ 2020-08-26 14:52 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 f664e51e8a15..461b1304580b 100644
--- a/arch/sh/include/asm/mmu_context.h
+++ b/arch/sh/include/asm/mmu_context.h
@@ -133,7 +133,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..4f916f9e16cd
--- /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>
+
+static inline void switch_mm(struct mm_struct *prev,
+ struct mm_struct *next,
+ struct task_struct *tsk)
+{
+}
+
+#include <asm-generic/mmu_context.h>
+
+#endif /* __ASM_GENERIC_NOMMU_H */
--
2.23.0
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH v2 02/23] alpha: use asm-generic/mmu_context.h for no-op implementations
2020-08-26 14:52 [PATCH v2 00/23] Use asm-generic for mmu_context no-op functions Nicholas Piggin
2020-08-26 14:52 ` [PATCH v2 01/23] asm-generic: add generic MMU versions of mmu context functions Nicholas Piggin
@ 2020-08-26 14:52 ` Nicholas Piggin
2020-08-26 14:52 ` [PATCH v2 03/23] arc: " Nicholas Piggin
` (22 subsequent siblings)
24 siblings, 0 replies; 50+ messages in thread
From: Nicholas Piggin @ 2020-08-26 14:52 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] 50+ messages in thread
* [PATCH v2 03/23] arc: use asm-generic/mmu_context.h for no-op implementations
2020-08-26 14:52 [PATCH v2 00/23] Use asm-generic for mmu_context no-op functions Nicholas Piggin
2020-08-26 14:52 ` [PATCH v2 01/23] asm-generic: add generic MMU versions of mmu context functions Nicholas Piggin
2020-08-26 14:52 ` [PATCH v2 02/23] alpha: use asm-generic/mmu_context.h for no-op implementations Nicholas Piggin
@ 2020-08-26 14:52 ` Nicholas Piggin
2020-08-26 14:52 ` [PATCH v2 04/23] arm: " Nicholas Piggin
` (21 subsequent siblings)
24 siblings, 0 replies; 50+ messages in thread
From: Nicholas Piggin @ 2020-08-26 14:52 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 | 17 +++++++++--------
1 file changed, 9 insertions(+), 8 deletions(-)
diff --git a/arch/arc/include/asm/mmu_context.h b/arch/arc/include/asm/mmu_context.h
index 3a5e6a5b9ed6..df164066e172 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,13 @@ 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 (in asm-generic) 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 +170,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] 50+ messages in thread
* [PATCH v2 04/23] arm: use asm-generic/mmu_context.h for no-op implementations
2020-08-26 14:52 [PATCH v2 00/23] Use asm-generic for mmu_context no-op functions Nicholas Piggin
` (2 preceding siblings ...)
2020-08-26 14:52 ` [PATCH v2 03/23] arc: " Nicholas Piggin
@ 2020-08-26 14:52 ` Nicholas Piggin
2020-08-26 14:52 ` [PATCH v2 05/23] arm64: " Nicholas Piggin
` (20 subsequent siblings)
24 siblings, 0 replies; 50+ messages in thread
From: Nicholas Piggin @ 2020-08-26 14:52 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] 50+ messages in thread
* [PATCH v2 05/23] arm64: use asm-generic/mmu_context.h for no-op implementations
2020-08-26 14:52 [PATCH v2 00/23] Use asm-generic for mmu_context no-op functions Nicholas Piggin
` (3 preceding siblings ...)
2020-08-26 14:52 ` [PATCH v2 04/23] arm: " Nicholas Piggin
@ 2020-08-26 14:52 ` Nicholas Piggin
2020-08-26 15:25 ` Catalin Marinas
` (3 more replies)
2020-08-26 14:52 ` [PATCH v2 06/23] csky: " Nicholas Piggin
` (19 subsequent siblings)
24 siblings, 4 replies; 50+ messages in thread
From: Nicholas Piggin @ 2020-08-26 14:52 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 | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/arch/arm64/include/asm/mmu_context.h b/arch/arm64/include/asm/mmu_context.h
index f2d7537d6f83..765e8a0f88c9 100644
--- a/arch/arm64/include/asm/mmu_context.h
+++ b/arch/arm64/include/asm/mmu_context.h
@@ -174,8 +174,7 @@ 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);
+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)
{
@@ -242,12 +242,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] 50+ messages in thread
* [PATCH v2 06/23] csky: use asm-generic/mmu_context.h for no-op implementations
2020-08-26 14:52 [PATCH v2 00/23] Use asm-generic for mmu_context no-op functions Nicholas Piggin
` (4 preceding siblings ...)
2020-08-26 14:52 ` [PATCH v2 05/23] arm64: " Nicholas Piggin
@ 2020-08-26 14:52 ` Nicholas Piggin
2020-08-26 14:52 ` [PATCH v2 07/23] hexagon: " Nicholas Piggin
` (18 subsequent siblings)
24 siblings, 0 replies; 50+ messages in thread
From: Nicholas Piggin @ 2020-08-26 14:52 UTC (permalink / raw)
To: linux-arch
Cc: Nicholas Piggin, linux-kernel, linux-mm, Arnd Bergmann,
linux-csky, Guo Ren
Cc: linux-csky@vger.kernel.org
Acked-by: Guo Ren <guoren@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] 50+ messages in thread
* [PATCH v2 07/23] hexagon: use asm-generic/mmu_context.h for no-op implementations
2020-08-26 14:52 [PATCH v2 00/23] Use asm-generic for mmu_context no-op functions Nicholas Piggin
` (5 preceding siblings ...)
2020-08-26 14:52 ` [PATCH v2 06/23] csky: " Nicholas Piggin
@ 2020-08-26 14:52 ` Nicholas Piggin
2020-08-26 14:52 ` [PATCH v2 08/23] ia64: " Nicholas Piggin
` (17 subsequent siblings)
24 siblings, 0 replies; 50+ messages in thread
From: Nicholas Piggin @ 2020-08-26 14:52 UTC (permalink / raw)
To: linux-arch
Cc: Nicholas Piggin, linux-kernel, linux-mm, Arnd Bergmann,
linux-hexagon, Brian Cain
Cc: linux-hexagon@vger.kernel.org
Acked-by: Brian Cain <bcain@codeaurora.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] 50+ messages in thread
* [PATCH v2 08/23] ia64: use asm-generic/mmu_context.h for no-op implementations
2020-08-26 14:52 [PATCH v2 00/23] Use asm-generic for mmu_context no-op functions Nicholas Piggin
` (6 preceding siblings ...)
2020-08-26 14:52 ` [PATCH v2 07/23] hexagon: " Nicholas Piggin
@ 2020-08-26 14:52 ` Nicholas Piggin
2020-08-26 14:52 ` [PATCH v2 09/23] m68k: " Nicholas Piggin
` (16 subsequent siblings)
24 siblings, 0 replies; 50+ messages in thread
From: Nicholas Piggin @ 2020-08-26 14:52 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] 50+ messages in thread
* [PATCH v2 09/23] m68k: use asm-generic/mmu_context.h for no-op implementations
2020-08-26 14:52 [PATCH v2 00/23] Use asm-generic for mmu_context no-op functions Nicholas Piggin
` (7 preceding siblings ...)
2020-08-26 14:52 ` [PATCH v2 08/23] ia64: " Nicholas Piggin
@ 2020-08-26 14:52 ` Nicholas Piggin
2020-08-27 9:33 ` Geert Uytterhoeven
2020-08-26 14:52 ` [PATCH v2 10/23] microblaze: " Nicholas Piggin
` (15 subsequent siblings)
24 siblings, 1 reply; 50+ messages in thread
From: Nicholas Piggin @ 2020-08-26 14:52 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 993fd7e37069..012e92204c1b 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/cacheflush.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] 50+ messages in thread
* [PATCH v2 10/23] microblaze: use asm-generic/mmu_context.h for no-op implementations
2020-08-26 14:52 [PATCH v2 00/23] Use asm-generic for mmu_context no-op functions Nicholas Piggin
` (8 preceding siblings ...)
2020-08-26 14:52 ` [PATCH v2 09/23] m68k: " Nicholas Piggin
@ 2020-08-26 14:52 ` Nicholas Piggin
2020-08-31 14:15 ` Michal Simek
2020-08-26 14:52 ` [PATCH v2 11/23] mips: " Nicholas Piggin
` (14 subsequent siblings)
24 siblings, 1 reply; 50+ messages in thread
From: Nicholas Piggin @ 2020-08-26 14:52 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] 50+ messages in thread
* [PATCH v2 11/23] mips: use asm-generic/mmu_context.h for no-op implementations
2020-08-26 14:52 [PATCH v2 00/23] Use asm-generic for mmu_context no-op functions Nicholas Piggin
` (9 preceding siblings ...)
2020-08-26 14:52 ` [PATCH v2 10/23] microblaze: " Nicholas Piggin
@ 2020-08-26 14:52 ` Nicholas Piggin
2020-08-26 14:52 ` [PATCH v2 12/23] nds32: " Nicholas Piggin
` (13 subsequent siblings)
24 siblings, 0 replies; 50+ messages in thread
From: Nicholas Piggin @ 2020-08-26 14:52 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] 50+ messages in thread
* [PATCH v2 12/23] nds32: use asm-generic/mmu_context.h for no-op implementations
2020-08-26 14:52 [PATCH v2 00/23] Use asm-generic for mmu_context no-op functions Nicholas Piggin
` (10 preceding siblings ...)
2020-08-26 14:52 ` [PATCH v2 11/23] mips: " Nicholas Piggin
@ 2020-08-26 14:52 ` Nicholas Piggin
2020-08-28 10:09 ` Greentime Hu
2020-08-26 14:52 ` [PATCH v2 13/23] nios2: " Nicholas Piggin
` (12 subsequent siblings)
24 siblings, 1 reply; 50+ messages in thread
From: Nicholas Piggin @ 2020-08-26 14:52 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] 50+ messages in thread
* [PATCH v2 13/23] nios2: use asm-generic/mmu_context.h for no-op implementations
2020-08-26 14:52 [PATCH v2 00/23] Use asm-generic for mmu_context no-op functions Nicholas Piggin
` (11 preceding siblings ...)
2020-08-26 14:52 ` [PATCH v2 12/23] nds32: " Nicholas Piggin
@ 2020-08-26 14:52 ` Nicholas Piggin
2020-08-26 14:52 ` [PATCH v2 14/23] openrisc: " Nicholas Piggin
` (11 subsequent siblings)
24 siblings, 0 replies; 50+ messages in thread
From: Nicholas Piggin @ 2020-08-26 14:52 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 ++++-----------------
1 file changed, 4 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 */
--
2.23.0
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH v2 14/23] openrisc: use asm-generic/mmu_context.h for no-op implementations
2020-08-26 14:52 [PATCH v2 00/23] Use asm-generic for mmu_context no-op functions Nicholas Piggin
` (12 preceding siblings ...)
2020-08-26 14:52 ` [PATCH v2 13/23] nios2: " Nicholas Piggin
@ 2020-08-26 14:52 ` Nicholas Piggin
2020-08-26 14:52 ` [PATCH v2 15/23] parisc: " Nicholas Piggin
` (10 subsequent siblings)
24 siblings, 0 replies; 50+ messages in thread
From: Nicholas Piggin @ 2020-08-26 14:52 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 +++-----
1 file changed, 3 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
--
2.23.0
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH v2 15/23] parisc: use asm-generic/mmu_context.h for no-op implementations
2020-08-26 14:52 [PATCH v2 00/23] Use asm-generic for mmu_context no-op functions Nicholas Piggin
` (13 preceding siblings ...)
2020-08-26 14:52 ` [PATCH v2 14/23] openrisc: " Nicholas Piggin
@ 2020-08-26 14:52 ` Nicholas Piggin
2020-08-29 9:09 ` Helge Deller
2020-08-26 14:52 ` [PATCH v2 16/23] powerpc: " Nicholas Piggin
` (9 subsequent siblings)
24 siblings, 1 reply; 50+ messages in thread
From: Nicholas Piggin @ 2020-08-26 14:52 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 cb5f2f730421..46f8c22c5977 100644
--- a/arch/parisc/include/asm/mmu_context.h
+++ b/arch/parisc/include/asm/mmu_context.h
@@ -7,16 +7,13 @@
#include <linux/atomic.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)
{
@@ -26,6 +23,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)
{
@@ -71,8 +69,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)
{
/*
@@ -90,4 +87,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] 50+ messages in thread
* [PATCH v2 16/23] powerpc: use asm-generic/mmu_context.h for no-op implementations
2020-08-26 14:52 [PATCH v2 00/23] Use asm-generic for mmu_context no-op functions Nicholas Piggin
` (14 preceding siblings ...)
2020-08-26 14:52 ` [PATCH v2 15/23] parisc: " Nicholas Piggin
@ 2020-08-26 14:52 ` Nicholas Piggin
2020-09-01 7:30 ` Michael Ellerman
2020-08-26 14:52 ` [PATCH v2 17/23] riscv: " Nicholas Piggin
` (8 subsequent siblings)
24 siblings, 1 reply; 50+ messages in thread
From: Nicholas Piggin @ 2020-08-26 14:52 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 7f3658a97384..bc22e247ab55 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;
@@ -235,27 +237,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);
@@ -298,5 +288,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] 50+ messages in thread
* [PATCH v2 17/23] riscv: use asm-generic/mmu_context.h for no-op implementations
2020-08-26 14:52 [PATCH v2 00/23] Use asm-generic for mmu_context no-op functions Nicholas Piggin
` (15 preceding siblings ...)
2020-08-26 14:52 ` [PATCH v2 16/23] powerpc: " Nicholas Piggin
@ 2020-08-26 14:52 ` Nicholas Piggin
2020-08-26 16:42 ` Pekka Enberg
2020-08-26 14:52 ` [PATCH v2 18/23] s390: " Nicholas Piggin
` (7 subsequent siblings)
24 siblings, 1 reply; 50+ messages in thread
From: Nicholas Piggin @ 2020-08-26 14:52 UTC (permalink / raw)
To: linux-arch
Cc: Nicholas Piggin, linux-kernel, linux-mm, Arnd Bergmann,
Paul Walmsley, Palmer Dabbelt, Albert Ou, linux-riscv,
Palmer Dabbelt
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
Acked-by: Palmer Dabbelt <palmerdabbelt@google.com>
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] 50+ messages in thread
* [PATCH v2 18/23] s390: use asm-generic/mmu_context.h for no-op implementations
2020-08-26 14:52 [PATCH v2 00/23] Use asm-generic for mmu_context no-op functions Nicholas Piggin
` (16 preceding siblings ...)
2020-08-26 14:52 ` [PATCH v2 17/23] riscv: " Nicholas Piggin
@ 2020-08-26 14:52 ` Nicholas Piggin
2020-08-26 14:52 ` [PATCH v2 19/23] sh: " Nicholas Piggin
` (6 subsequent siblings)
24 siblings, 0 replies; 50+ messages in thread
From: Nicholas Piggin @ 2020-08-26 14:52 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] 50+ messages in thread
* [PATCH v2 19/23] sh: use asm-generic/mmu_context.h for no-op implementations
2020-08-26 14:52 [PATCH v2 00/23] Use asm-generic for mmu_context no-op functions Nicholas Piggin
` (17 preceding siblings ...)
2020-08-26 14:52 ` [PATCH v2 18/23] s390: " Nicholas Piggin
@ 2020-08-26 14:52 ` Nicholas Piggin
2020-08-26 14:52 ` [PATCH v2 20/23] sparc: " Nicholas Piggin
` (5 subsequent siblings)
24 siblings, 0 replies; 50+ messages in thread
From: Nicholas Piggin @ 2020-08-26 14:52 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 461b1304580b..78eef4e7d5df 100644
--- a/arch/sh/include/asm/mmu_context.h
+++ b/arch/sh/include/asm/mmu_context.h
@@ -84,6 +84,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)
{
@@ -120,9 +121,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] 50+ messages in thread
* [PATCH v2 20/23] sparc: use asm-generic/mmu_context.h for no-op implementations
2020-08-26 14:52 [PATCH v2 00/23] Use asm-generic for mmu_context no-op functions Nicholas Piggin
` (18 preceding siblings ...)
2020-08-26 14:52 ` [PATCH v2 19/23] sh: " Nicholas Piggin
@ 2020-08-26 14:52 ` Nicholas Piggin
2020-08-26 14:52 ` [PATCH v2 21/23] um: " Nicholas Piggin
` (4 subsequent siblings)
24 siblings, 0 replies; 50+ messages in thread
From: Nicholas Piggin @ 2020-08-26 14:52 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] 50+ messages in thread
* [PATCH v2 21/23] um: use asm-generic/mmu_context.h for no-op implementations
2020-08-26 14:52 [PATCH v2 00/23] Use asm-generic for mmu_context no-op functions Nicholas Piggin
` (19 preceding siblings ...)
2020-08-26 14:52 ` [PATCH v2 20/23] sparc: " Nicholas Piggin
@ 2020-08-26 14:52 ` Nicholas Piggin
2020-08-26 14:52 ` [PATCH v2 22/23] x86: " Nicholas Piggin
` (3 subsequent siblings)
24 siblings, 0 replies; 50+ messages in thread
From: Nicholas Piggin @ 2020-08-26 14:52 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] 50+ messages in thread
* [PATCH v2 22/23] x86: use asm-generic/mmu_context.h for no-op implementations
2020-08-26 14:52 [PATCH v2 00/23] Use asm-generic for mmu_context no-op functions Nicholas Piggin
` (20 preceding siblings ...)
2020-08-26 14:52 ` [PATCH v2 21/23] um: " Nicholas Piggin
@ 2020-08-26 14:52 ` Nicholas Piggin
2020-08-26 14:52 ` [PATCH v2 23/23] xtensa: " Nicholas Piggin
` (2 subsequent siblings)
24 siblings, 0 replies; 50+ messages in thread
From: Nicholas Piggin @ 2020-08-26 14:52 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, Peter Zijlstra
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>
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
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 d98016b83755..36afcbea6a9f 100644
--- a/arch/x86/include/asm/mmu_context.h
+++ b/arch/x86/include/asm/mmu_context.h
@@ -91,12 +91,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)
{
@@ -116,6 +118,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);
@@ -214,4 +218,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] 50+ messages in thread
* [PATCH v2 23/23] xtensa: use asm-generic/mmu_context.h for no-op implementations
2020-08-26 14:52 [PATCH v2 00/23] Use asm-generic for mmu_context no-op functions Nicholas Piggin
` (21 preceding siblings ...)
2020-08-26 14:52 ` [PATCH v2 22/23] x86: " Nicholas Piggin
@ 2020-08-26 14:52 ` Nicholas Piggin
2020-08-26 20:12 ` [PATCH v2 00/23] Use asm-generic for mmu_context no-op functions Arnd Bergmann
2020-08-30 10:18 ` Mike Rapoport
24 siblings, 0 replies; 50+ messages in thread
From: Nicholas Piggin @ 2020-08-26 14:52 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] 50+ messages in thread
* Re: [PATCH v2 05/23] arm64: use asm-generic/mmu_context.h for no-op implementations
2020-08-26 14:52 ` [PATCH v2 05/23] arm64: " Nicholas Piggin
@ 2020-08-26 15:25 ` Catalin Marinas
2020-08-26 16:20 ` Nicholas Piggin
2020-08-26 18:42 ` kernel test robot
` (2 subsequent siblings)
3 siblings, 1 reply; 50+ messages in thread
From: Catalin Marinas @ 2020-08-26 15:25 UTC (permalink / raw)
To: Nicholas Piggin
Cc: linux-arch, linux-kernel, linux-mm, Arnd Bergmann, Will Deacon,
linux-arm-kernel
On Thu, Aug 27, 2020 at 12:52:31AM +1000, Nicholas Piggin wrote:
> 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>
Acked-by: Catalin Marinas <catalin.marinas@arm.com>
^ permalink raw reply [flat|nested] 50+ messages in thread
* Re: [PATCH v2 05/23] arm64: use asm-generic/mmu_context.h for no-op implementations
2020-08-26 15:25 ` Catalin Marinas
@ 2020-08-26 16:20 ` Nicholas Piggin
2020-10-27 9:59 ` Naresh Kamboju
0 siblings, 1 reply; 50+ messages in thread
From: Nicholas Piggin @ 2020-08-26 16:20 UTC (permalink / raw)
To: Catalin Marinas
Cc: Arnd Bergmann, linux-arch, linux-arm-kernel, linux-kernel,
linux-mm, Will Deacon
Excerpts from Catalin Marinas's message of August 27, 2020 1:25 am:
> On Thu, Aug 27, 2020 at 12:52:31AM +1000, Nicholas Piggin wrote:
>> 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>
>
> Acked-by: Catalin Marinas <catalin.marinas@arm.com>
>
Thank you, I see I stupidly mis-rebased this patch too :( Sorry
I'll fix that.
Thanks,
Nick
^ permalink raw reply [flat|nested] 50+ messages in thread
* Re: [PATCH v2 17/23] riscv: use asm-generic/mmu_context.h for no-op implementations
2020-08-26 14:52 ` [PATCH v2 17/23] riscv: " Nicholas Piggin
@ 2020-08-26 16:42 ` Pekka Enberg
0 siblings, 0 replies; 50+ messages in thread
From: Pekka Enberg @ 2020-08-26 16:42 UTC (permalink / raw)
To: Nicholas Piggin
Cc: list@ebiederm.org:DOCUMENTATION <linux-doc@vger.kernel.org>,
list@ebiederm.org:MEMORY MANAGEMENT <linux-mm@kvack.org>,,
LKML, linux-mm, Arnd Bergmann, Paul Walmsley, Palmer Dabbelt,
Albert Ou, linux-riscv, Palmer Dabbelt
On Wed, Aug 26, 2020 at 5:54 PM Nicholas Piggin <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
> Acked-by: Palmer Dabbelt <palmerdabbelt@google.com>
> Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Reviewed-by: Pekka Enberg <penberg@kernel.or>
^ permalink raw reply [flat|nested] 50+ messages in thread
* Re: [PATCH v2 01/23] asm-generic: add generic MMU versions of mmu context functions
2020-08-26 14:52 ` [PATCH v2 01/23] asm-generic: add generic MMU versions of mmu context functions Nicholas Piggin
@ 2020-08-26 18:13 ` kernel test robot
2020-09-01 6:49 ` Mike Rapoport
1 sibling, 0 replies; 50+ messages in thread
From: kernel test robot @ 2020-08-26 18:13 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: 5175 bytes --]
Hi Nicholas,
I love your patch! Yet something to improve:
[auto build test ERROR on linus/master]
[also build test ERROR on asm-generic/master sparc-next/master xtensa/for_next v5.9-rc2 next-20200826]
[cannot apply to sparc/master]
[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/20200826-225632
base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 2ac69819ba9e3d8d550bb5d2d2df74848e556812
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 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);
| ^~~~~~~~~
kernel/fork.c: At top level:
kernel/fork.c:160:13: warning: no previous prototype for 'arch_release_task_struct' [-Wmissing-prototypes]
160 | void __weak arch_release_task_struct(struct task_struct *tsk)
| ^~~~~~~~~~~~~~~~~~~~~~~~
kernel/fork.c:743:20: warning: no previous prototype for 'arch_task_cache_init' [-Wmissing-prototypes]
743 | void __init __weak arch_task_cache_init(void) { }
| ^~~~~~~~~~~~~~~~~~~~
kernel/fork.c:834:12: warning: no previous prototype for 'arch_dup_task_struct' [-Wmissing-prototypes]
834 | int __weak arch_dup_task_struct(struct task_struct *dst,
| ^~~~~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
--
In file included from ./arch/c6x/include/generated/asm/mmu_context.h:1,
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);
| ^~~~~~~~~
kernel/exit.c: At top level:
kernel/exit.c:1754:13: warning: no previous prototype for 'abort' [-Wmissing-prototypes]
1754 | __weak void abort(void)
| ^~~~~
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/kthread.c:12:
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
# https://github.com/0day-ci/linux/commit/96f6fa7969b31878ea85427182e4d9201ab3f592
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Nicholas-Piggin/Use-asm-generic-for-mmu_context-no-op-functions/20200826-225632
git checkout 96f6fa7969b31878ea85427182e4d9201ab3f592
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: 54051 bytes --]
^ permalink raw reply [flat|nested] 50+ messages in thread
* Re: [PATCH v2 05/23] arm64: use asm-generic/mmu_context.h for no-op implementations
2020-08-26 14:52 ` [PATCH v2 05/23] arm64: " Nicholas Piggin
2020-08-26 15:25 ` Catalin Marinas
@ 2020-08-26 18:42 ` kernel test robot
2020-08-26 18:57 ` kernel test robot
2020-08-26 23:55 ` kernel test robot
3 siblings, 0 replies; 50+ messages in thread
From: kernel test robot @ 2020-08-26 18:42 UTC (permalink / raw)
To: Nicholas Piggin, linux-arch
Cc: kbuild-all, Nicholas Piggin, linux-kernel, linux-mm,
Arnd Bergmann, Catalin Marinas, Will Deacon, linux-arm-kernel
[-- Attachment #1: Type: text/plain, Size: 9532 bytes --]
Hi Nicholas,
I love your patch! Yet something to improve:
[auto build test ERROR on linus/master]
[also build test ERROR on v5.9-rc2 next-20200826]
[cannot apply to sparc/master asm-generic/master sparc-next/master 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/20200826-225632
base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 2ac69819ba9e3d8d550bb5d2d2df74848e556812
config: arm64-randconfig-r013-20200826 (attached as .config)
compiler: aarch64-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=arm64
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/arm64/kernel/process.c:54:
arch/arm64/include/asm/mmu_context.h: In function '__switch_mm':
>> arch/arm64/include/asm/mmu_context.h:226:2: error: too few arguments to function 'check_and_switch_context'
226 | check_and_switch_context(next);
| ^~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/include/asm/mmu_context.h:177:6: note: declared here
177 | void check_and_switch_context(struct mm_struct *mm, unsigned int cpu);
| ^~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/kernel/process.c: At top level:
arch/arm64/kernel/process.c:260:6: warning: no previous prototype for '__show_regs' [-Wmissing-prototypes]
260 | void __show_regs(struct pt_regs *regs)
| ^~~~~~~~~~~
arch/arm64/kernel/process.c:352:5: warning: no previous prototype for 'arch_dup_task_struct' [-Wmissing-prototypes]
352 | int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src)
| ^~~~~~~~~~~~~~~~~~~~
arch/arm64/kernel/process.c:554:41: warning: no previous prototype for '__switch_to' [-Wmissing-prototypes]
554 | __notrace_funcgraph struct task_struct *__switch_to(struct task_struct *prev,
| ^~~~~~~~~~~
arch/arm64/kernel/process.c:692:25: warning: no previous prototype for 'arm64_preempt_schedule_irq' [-Wmissing-prototypes]
692 | asmlinkage void __sched arm64_preempt_schedule_irq(void)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
--
In file included from arch/arm64/include/asm/efi.h:10,
from arch/arm64/kernel/setup.c:50:
arch/arm64/include/asm/mmu_context.h: In function '__switch_mm':
>> arch/arm64/include/asm/mmu_context.h:226:2: error: too few arguments to function 'check_and_switch_context'
226 | check_and_switch_context(next);
| ^~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/include/asm/mmu_context.h:177:6: note: declared here
177 | void check_and_switch_context(struct mm_struct *mm, unsigned int cpu);
| ^~~~~~~~~~~~~~~~~~~~~~~~
--
In file included from arch/arm64/kernel/cpu_errata.c:111:
arch/arm64/include/asm/mmu_context.h: In function '__switch_mm':
>> arch/arm64/include/asm/mmu_context.h:226:2: error: too few arguments to function 'check_and_switch_context'
226 | check_and_switch_context(next);
| ^~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/include/asm/mmu_context.h:177:6: note: declared here
177 | void check_and_switch_context(struct mm_struct *mm, unsigned int cpu);
| ^~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/kernel/cpu_errata.c: At top level:
arch/arm64/kernel/cpu_errata.c:295:13: warning: no previous prototype for 'arm64_update_smccc_conduit' [-Wmissing-prototypes]
295 | void __init arm64_update_smccc_conduit(struct alt_instr *alt,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/kernel/cpu_errata.c:317:13: warning: no previous prototype for 'arm64_enable_wa2_handling' [-Wmissing-prototypes]
317 | void __init arm64_enable_wa2_handling(struct alt_instr *alt,
| ^~~~~~~~~~~~~~~~~~~~~~~~~
--
In file included from arch/arm64/include/asm/kvm_mmu.h:90,
from arch/arm64/kernel/smp.c:43:
arch/arm64/include/asm/mmu_context.h: In function '__switch_mm':
>> arch/arm64/include/asm/mmu_context.h:226:2: error: too few arguments to function 'check_and_switch_context'
226 | check_and_switch_context(next);
| ^~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/include/asm/mmu_context.h:177:6: note: declared here
177 | void check_and_switch_context(struct mm_struct *mm, unsigned int cpu);
| ^~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/kernel/smp.c: At top level:
arch/arm64/kernel/smp.c:842:6: warning: no previous prototype for 'arch_irq_work_raise' [-Wmissing-prototypes]
842 | void arch_irq_work_raise(void)
| ^~~~~~~~~~~~~~~~~~~
arch/arm64/kernel/smp.c:863:6: warning: no previous prototype for 'panic_smp_self_stop' [-Wmissing-prototypes]
863 | void panic_smp_self_stop(void)
| ^~~~~~~~~~~~~~~~~~~
--
In file included from arch/arm64/kernel/suspend.c:14:
arch/arm64/include/asm/mmu_context.h: In function '__switch_mm':
>> arch/arm64/include/asm/mmu_context.h:226:2: error: too few arguments to function 'check_and_switch_context'
226 | check_and_switch_context(next);
| ^~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/include/asm/mmu_context.h:177:6: note: declared here
177 | void check_and_switch_context(struct mm_struct *mm, unsigned int cpu);
| ^~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/kernel/suspend.c: At top level:
arch/arm64/kernel/suspend.c:32:13: warning: no previous prototype for 'cpu_suspend_set_dbg_restorer' [-Wmissing-prototypes]
32 | void __init cpu_suspend_set_dbg_restorer(int (*hw_bp_restore)(unsigned int))
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
--
In file included from arch/arm64/kernel/machine_kexec.c:21:
arch/arm64/include/asm/mmu_context.h: In function '__switch_mm':
>> arch/arm64/include/asm/mmu_context.h:226:2: error: too few arguments to function 'check_and_switch_context'
226 | check_and_switch_context(next);
| ^~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/include/asm/mmu_context.h:177:6: note: declared here
177 | void check_and_switch_context(struct mm_struct *mm, unsigned int cpu);
| ^~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/kernel/machine_kexec.c: At top level:
arch/arm64/kernel/machine_kexec.c:250:6: warning: no previous prototype for 'machine_crash_shutdown' [-Wmissing-prototypes]
250 | void machine_crash_shutdown(struct pt_regs *regs)
| ^~~~~~~~~~~~~~~~~~~~~~
--
In file included from arch/arm64/mm/context.c:16:
arch/arm64/include/asm/mmu_context.h: In function '__switch_mm':
>> arch/arm64/include/asm/mmu_context.h:226:2: error: too few arguments to function 'check_and_switch_context'
226 | check_and_switch_context(next);
| ^~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/include/asm/mmu_context.h:177:6: note: declared here
177 | void check_and_switch_context(struct mm_struct *mm, unsigned int cpu);
| ^~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/mm/context.c: At top level:
>> arch/arm64/mm/context.c:201:6: error: conflicting types for 'check_and_switch_context'
201 | void check_and_switch_context(struct mm_struct *mm)
| ^~~~~~~~~~~~~~~~~~~~~~~~
In file included from arch/arm64/mm/context.c:16:
arch/arm64/include/asm/mmu_context.h:177:6: note: previous declaration of 'check_and_switch_context' was here
177 | void check_and_switch_context(struct mm_struct *mm, unsigned int cpu);
| ^~~~~~~~~~~~~~~~~~~~~~~~
# https://github.com/0day-ci/linux/commit/b7168fc5046fd65223bdc51ef411e157939433b6
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Nicholas-Piggin/Use-asm-generic-for-mmu_context-no-op-functions/20200826-225632
git checkout b7168fc5046fd65223bdc51ef411e157939433b6
vim +/check_and_switch_context +226 arch/arm64/include/asm/mmu_context.h
d96cc49bff5a77 Will Deacon 2017-12-06 214
39bc88e5e38e9b Catalin Marinas 2016-09-02 215 static inline void __switch_mm(struct mm_struct *next)
39bc88e5e38e9b Catalin Marinas 2016-09-02 216 {
e53f21bce4d35a Catalin Marinas 2015-03-23 217 /*
e53f21bce4d35a Catalin Marinas 2015-03-23 218 * init_mm.pgd does not contain any user mappings and it is always
e53f21bce4d35a Catalin Marinas 2015-03-23 219 * active for kernel addresses in TTBR1. Just set the reserved TTBR0.
e53f21bce4d35a Catalin Marinas 2015-03-23 220 */
e53f21bce4d35a Catalin Marinas 2015-03-23 221 if (next == &init_mm) {
e53f21bce4d35a Catalin Marinas 2015-03-23 222 cpu_set_reserved_ttbr0();
e53f21bce4d35a Catalin Marinas 2015-03-23 223 return;
e53f21bce4d35a Catalin Marinas 2015-03-23 224 }
e53f21bce4d35a Catalin Marinas 2015-03-23 225
c4885bbb3afee8 Pingfan Liu 2020-07-10 @226 check_and_switch_context(next);
b3901d54dc4f73 Catalin Marinas 2012-03-05 227 }
b3901d54dc4f73 Catalin Marinas 2012-03-05 228
---
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: 35504 bytes --]
^ permalink raw reply [flat|nested] 50+ messages in thread
* Re: [PATCH v2 05/23] arm64: use asm-generic/mmu_context.h for no-op implementations
2020-08-26 14:52 ` [PATCH v2 05/23] arm64: " Nicholas Piggin
2020-08-26 15:25 ` Catalin Marinas
2020-08-26 18:42 ` kernel test robot
@ 2020-08-26 18:57 ` kernel test robot
2020-08-26 23:55 ` kernel test robot
3 siblings, 0 replies; 50+ messages in thread
From: kernel test robot @ 2020-08-26 18:57 UTC (permalink / raw)
To: Nicholas Piggin, linux-arch
Cc: kbuild-all, clang-built-linux, Nicholas Piggin, linux-kernel,
linux-mm, Arnd Bergmann, Catalin Marinas, Will Deacon,
linux-arm-kernel
[-- Attachment #1: Type: text/plain, Size: 23588 bytes --]
Hi Nicholas,
I love your patch! Yet something to improve:
[auto build test ERROR on linus/master]
[also build test ERROR on v5.9-rc2 next-20200826]
[cannot apply to sparc/master asm-generic/master]
[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/20200826-225632
base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 2ac69819ba9e3d8d550bb5d2d2df74848e556812
config: arm64-randconfig-r002-20200826 (attached as .config)
compiler: clang version 12.0.0 (https://github.com/llvm/llvm-project 7cfcecece0e0430937cf529ce74d3a071a4dedc6)
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
# install arm64 cross compiling tool for clang build
# apt-get install binutils-aarch64-linux-gnu
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm64
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/arm64/kernel/process.c:54:
>> arch/arm64/include/asm/mmu_context.h:226:31: error: too few arguments to function call, expected 2, have 1
check_and_switch_context(next);
~~~~~~~~~~~~~~~~~~~~~~~~ ^
arch/arm64/include/asm/mmu_context.h:177:6: note: 'check_and_switch_context' declared here
void check_and_switch_context(struct mm_struct *mm, unsigned int cpu);
^
arch/arm64/kernel/process.c:260:6: warning: no previous prototype for function '__show_regs' [-Wmissing-prototypes]
void __show_regs(struct pt_regs *regs)
^
arch/arm64/kernel/process.c:260:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
void __show_regs(struct pt_regs *regs)
^
static
arch/arm64/kernel/process.c:352:5: warning: no previous prototype for function 'arch_dup_task_struct' [-Wmissing-prototypes]
int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src)
^
arch/arm64/kernel/process.c:352:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src)
^
static
arch/arm64/kernel/process.c:554:41: warning: no previous prototype for function '__switch_to' [-Wmissing-prototypes]
__notrace_funcgraph struct task_struct *__switch_to(struct task_struct *prev,
^
arch/arm64/kernel/process.c:554:21: note: declare 'static' if the function is not intended to be used outside of this translation unit
__notrace_funcgraph struct task_struct *__switch_to(struct task_struct *prev,
^
static
arch/arm64/kernel/process.c:692:25: warning: no previous prototype for function 'arm64_preempt_schedule_irq' [-Wmissing-prototypes]
asmlinkage void __sched arm64_preempt_schedule_irq(void)
^
arch/arm64/kernel/process.c:692:12: note: declare 'static' if the function is not intended to be used outside of this translation unit
asmlinkage void __sched arm64_preempt_schedule_irq(void)
^
static
4 warnings and 1 error generated.
--
In file included from arch/arm64/kernel/setup.c:50:
In file included from arch/arm64/include/asm/efi.h:10:
>> arch/arm64/include/asm/mmu_context.h:226:31: error: too few arguments to function call, expected 2, have 1
check_and_switch_context(next);
~~~~~~~~~~~~~~~~~~~~~~~~ ^
arch/arm64/include/asm/mmu_context.h:177:6: note: 'check_and_switch_context' declared here
void check_and_switch_context(struct mm_struct *mm, unsigned int cpu);
^
1 error generated.
--
In file included from arch/arm64/kernel/cpu_errata.c:111:
>> arch/arm64/include/asm/mmu_context.h:226:31: error: too few arguments to function call, expected 2, have 1
check_and_switch_context(next);
~~~~~~~~~~~~~~~~~~~~~~~~ ^
arch/arm64/include/asm/mmu_context.h:177:6: note: 'check_and_switch_context' declared here
void check_and_switch_context(struct mm_struct *mm, unsigned int cpu);
^
arch/arm64/kernel/cpu_errata.c:295:13: warning: no previous prototype for function 'arm64_update_smccc_conduit' [-Wmissing-prototypes]
void __init arm64_update_smccc_conduit(struct alt_instr *alt,
^
arch/arm64/kernel/cpu_errata.c:295:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
void __init arm64_update_smccc_conduit(struct alt_instr *alt,
^
static
arch/arm64/kernel/cpu_errata.c:317:13: warning: no previous prototype for function 'arm64_enable_wa2_handling' [-Wmissing-prototypes]
void __init arm64_enable_wa2_handling(struct alt_instr *alt,
^
arch/arm64/kernel/cpu_errata.c:317:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
void __init arm64_enable_wa2_handling(struct alt_instr *alt,
^
static
arch/arm64/kernel/cpu_errata.c:747:3: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
ERRATA_MIDR_REV_RANGE(MIDR_CORTEX_A53, 0, 0, 4),
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/kernel/cpu_errata.c:506:2: note: expanded from macro 'ERRATA_MIDR_REV_RANGE'
ERRATA_MIDR_RANGE(m, var, r_min, var, r_max)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/kernel/cpu_errata.c:498:2: note: expanded from macro 'ERRATA_MIDR_RANGE'
CAP_MIDR_RANGE(model, v_min, r_min, v_max, r_max)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/kernel/cpu_errata.c:486:13: note: expanded from macro 'CAP_MIDR_RANGE'
.matches = is_affected_midr_range, \
^~~~~~~~~~~~~~~~~~~~~~
arch/arm64/kernel/cpu_errata.c:746:14: note: previous initialization is here
.matches = is_affected_midr_range,
^~~~~~~~~~~~~~~~~~~~~~
arch/arm64/kernel/cpu_errata.c:753:3: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
ERRATA_MIDR_REV(MIDR_BRAHMA_B53, 0, 0),
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/kernel/cpu_errata.c:510:2: note: expanded from macro 'ERRATA_MIDR_REV'
ERRATA_MIDR_RANGE(model, var, rev, var, rev)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/kernel/cpu_errata.c:498:2: note: expanded from macro 'ERRATA_MIDR_RANGE'
CAP_MIDR_RANGE(model, v_min, r_min, v_max, r_max)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/kernel/cpu_errata.c:486:13: note: expanded from macro 'CAP_MIDR_RANGE'
.matches = is_affected_midr_range, \
^~~~~~~~~~~~~~~~~~~~~~
arch/arm64/kernel/cpu_errata.c:752:14: note: previous initialization is here
.matches = is_affected_midr_range,
^~~~~~~~~~~~~~~~~~~~~~
arch/arm64/kernel/cpu_errata.c:913:11: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
.type = (ARM64_CPUCAP_SCOPE_LOCAL_CPU |
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/kernel/cpu_errata.c:912:3: note: previous initialization is here
ERRATA_MIDR_RANGE_LIST(erratum_1418040_list),
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/kernel/cpu_errata.c:519:10: note: expanded from macro 'ERRATA_MIDR_RANGE_LIST'
.type = ARM64_CPUCAP_LOCAL_CPU_ERRATUM, \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/include/asm/cpufeature.h:258:2: note: expanded from macro 'ARM64_CPUCAP_LOCAL_CPU_ERRATUM'
(ARM64_CPUCAP_SCOPE_LOCAL_CPU | ARM64_CPUCAP_OPTIONAL_FOR_LATE_CPU)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5 warnings and 1 error generated.
--
In file included from arch/arm64/kernel/smp.c:43:
In file included from arch/arm64/include/asm/kvm_mmu.h:90:
>> arch/arm64/include/asm/mmu_context.h:226:31: error: too few arguments to function call, expected 2, have 1
check_and_switch_context(next);
~~~~~~~~~~~~~~~~~~~~~~~~ ^
arch/arm64/include/asm/mmu_context.h:177:6: note: 'check_and_switch_context' declared here
void check_and_switch_context(struct mm_struct *mm, unsigned int cpu);
^
arch/arm64/kernel/smp.c:842:6: warning: no previous prototype for function 'arch_irq_work_raise' [-Wmissing-prototypes]
void arch_irq_work_raise(void)
^
arch/arm64/kernel/smp.c:842:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
void arch_irq_work_raise(void)
^
static
arch/arm64/kernel/smp.c:863:6: warning: no previous prototype for function 'panic_smp_self_stop' [-Wmissing-prototypes]
void panic_smp_self_stop(void)
^
arch/arm64/kernel/smp.c:863:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
void panic_smp_self_stop(void)
^
static
arch/arm64/kernel/smp.c:1067:5: warning: no previous prototype for function 'setup_profiling_timer' [-Wmissing-prototypes]
int setup_profiling_timer(unsigned int multiplier)
^
arch/arm64/kernel/smp.c:1067:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
int setup_profiling_timer(unsigned int multiplier)
^
static
3 warnings and 1 error generated.
--
In file included from arch/arm64/kernel/suspend.c:14:
>> arch/arm64/include/asm/mmu_context.h:226:31: error: too few arguments to function call, expected 2, have 1
check_and_switch_context(next);
~~~~~~~~~~~~~~~~~~~~~~~~ ^
arch/arm64/include/asm/mmu_context.h:177:6: note: 'check_and_switch_context' declared here
void check_and_switch_context(struct mm_struct *mm, unsigned int cpu);
^
arch/arm64/kernel/suspend.c:32:13: warning: no previous prototype for function 'cpu_suspend_set_dbg_restorer' [-Wmissing-prototypes]
void __init cpu_suspend_set_dbg_restorer(int (*hw_bp_restore)(unsigned int))
^
arch/arm64/kernel/suspend.c:32:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
void __init cpu_suspend_set_dbg_restorer(int (*hw_bp_restore)(unsigned int))
^
static
1 warning and 1 error generated.
--
In file included from arch/arm64/kernel/machine_kexec.c:21:
>> arch/arm64/include/asm/mmu_context.h:226:31: error: too few arguments to function call, expected 2, have 1
check_and_switch_context(next);
~~~~~~~~~~~~~~~~~~~~~~~~ ^
arch/arm64/include/asm/mmu_context.h:177:6: note: 'check_and_switch_context' declared here
void check_and_switch_context(struct mm_struct *mm, unsigned int cpu);
^
arch/arm64/kernel/machine_kexec.c:250:6: warning: no previous prototype for function 'machine_crash_shutdown' [-Wmissing-prototypes]
void machine_crash_shutdown(struct pt_regs *regs)
^
arch/arm64/kernel/machine_kexec.c:250:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
void machine_crash_shutdown(struct pt_regs *regs)
^
static
1 warning and 1 error generated.
--
In file included from arch/arm64/mm/mmu.c:35:
>> arch/arm64/include/asm/mmu_context.h:226:31: error: too few arguments to function call, expected 2, have 1
check_and_switch_context(next);
~~~~~~~~~~~~~~~~~~~~~~~~ ^
arch/arm64/include/asm/mmu_context.h:177:6: note: 'check_and_switch_context' declared here
void check_and_switch_context(struct mm_struct *mm, unsigned int cpu);
^
arch/arm64/mm/mmu.c:1135:6: warning: no previous prototype for function 'vmemmap_free' [-Wmissing-prototypes]
void vmemmap_free(unsigned long start, unsigned long end,
^
arch/arm64/mm/mmu.c:1135:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
void vmemmap_free(unsigned long start, unsigned long end,
^
static
1 warning and 1 error generated.
--
In file included from arch/arm64/mm/context.c:16:
>> arch/arm64/include/asm/mmu_context.h:226:31: error: too few arguments to function call, expected 2, have 1
check_and_switch_context(next);
~~~~~~~~~~~~~~~~~~~~~~~~ ^
arch/arm64/include/asm/mmu_context.h:177:6: note: 'check_and_switch_context' declared here
void check_and_switch_context(struct mm_struct *mm, unsigned int cpu);
^
arch/arm64/mm/context.c:201:6: error: conflicting types for 'check_and_switch_context'
void check_and_switch_context(struct mm_struct *mm)
^
arch/arm64/include/asm/mmu_context.h:177:6: note: previous declaration is here
void check_and_switch_context(struct mm_struct *mm, unsigned int cpu);
^
2 errors generated.
--
In file included from arch/arm64/kvm/va_layout.c:13:
In file included from arch/arm64/include/asm/kvm_mmu.h:90:
>> arch/arm64/include/asm/mmu_context.h:226:31: error: too few arguments to function call, expected 2, have 1
check_and_switch_context(next);
~~~~~~~~~~~~~~~~~~~~~~~~ ^
arch/arm64/include/asm/mmu_context.h:177:6: note: 'check_and_switch_context' declared here
void check_and_switch_context(struct mm_struct *mm, unsigned int cpu);
^
arch/arm64/kvm/va_layout.c:137:6: warning: no previous prototype for function 'kvm_patch_vector_branch' [-Wmissing-prototypes]
void kvm_patch_vector_branch(struct alt_instr *alt,
^
arch/arm64/kvm/va_layout.c:137:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
void kvm_patch_vector_branch(struct alt_instr *alt,
^
static
1 warning and 1 error generated.
--
In file included from arch/arm64/kvm/handle_exit.c:19:
In file included from arch/arm64/include/asm/kvm_mmu.h:90:
>> arch/arm64/include/asm/mmu_context.h:226:31: error: too few arguments to function call, expected 2, have 1
check_and_switch_context(next);
~~~~~~~~~~~~~~~~~~~~~~~~ ^
arch/arm64/include/asm/mmu_context.h:177:6: note: 'check_and_switch_context' declared here
void check_and_switch_context(struct mm_struct *mm, unsigned int cpu);
^
arch/arm64/kvm/handle_exit.c:178:21: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
[ESR_ELx_EC_WFx] = kvm_handle_wfx,
^~~~~~~~~~~~~~
arch/arm64/kvm/handle_exit.c:177:27: note: previous initialization is here
[0 ... ESR_ELx_EC_MAX] = kvm_handle_unknown_ec,
^~~~~~~~~~~~~~~~~~~~~
arch/arm64/kvm/handle_exit.c:179:25: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
[ESR_ELx_EC_CP15_32] = kvm_handle_cp15_32,
^~~~~~~~~~~~~~~~~~
arch/arm64/kvm/handle_exit.c:177:27: note: previous initialization is here
[0 ... ESR_ELx_EC_MAX] = kvm_handle_unknown_ec,
^~~~~~~~~~~~~~~~~~~~~
arch/arm64/kvm/handle_exit.c:180:25: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
[ESR_ELx_EC_CP15_64] = kvm_handle_cp15_64,
^~~~~~~~~~~~~~~~~~
arch/arm64/kvm/handle_exit.c:177:27: note: previous initialization is here
[0 ... ESR_ELx_EC_MAX] = kvm_handle_unknown_ec,
^~~~~~~~~~~~~~~~~~~~~
arch/arm64/kvm/handle_exit.c:181:25: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
[ESR_ELx_EC_CP14_MR] = kvm_handle_cp14_32,
^~~~~~~~~~~~~~~~~~
arch/arm64/kvm/handle_exit.c:177:27: note: previous initialization is here
[0 ... ESR_ELx_EC_MAX] = kvm_handle_unknown_ec,
^~~~~~~~~~~~~~~~~~~~~
arch/arm64/kvm/handle_exit.c:182:25: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
[ESR_ELx_EC_CP14_LS] = kvm_handle_cp14_load_store,
^~~~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/kvm/handle_exit.c:177:27: note: previous initialization is here
[0 ... ESR_ELx_EC_MAX] = kvm_handle_unknown_ec,
^~~~~~~~~~~~~~~~~~~~~
arch/arm64/kvm/handle_exit.c:183:25: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
[ESR_ELx_EC_CP14_64] = kvm_handle_cp14_64,
^~~~~~~~~~~~~~~~~~
arch/arm64/kvm/handle_exit.c:177:27: note: previous initialization is here
[0 ... ESR_ELx_EC_MAX] = kvm_handle_unknown_ec,
^~~~~~~~~~~~~~~~~~~~~
arch/arm64/kvm/handle_exit.c:184:23: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
[ESR_ELx_EC_HVC32] = handle_hvc,
^~~~~~~~~~
arch/arm64/kvm/handle_exit.c:177:27: note: previous initialization is here
[0 ... ESR_ELx_EC_MAX] = kvm_handle_unknown_ec,
^~~~~~~~~~~~~~~~~~~~~
arch/arm64/kvm/handle_exit.c:185:23: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
[ESR_ELx_EC_SMC32] = handle_smc,
^~~~~~~~~~
arch/arm64/kvm/handle_exit.c:177:27: note: previous initialization is here
[0 ... ESR_ELx_EC_MAX] = kvm_handle_unknown_ec,
^~~~~~~~~~~~~~~~~~~~~
arch/arm64/kvm/handle_exit.c:186:23: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
[ESR_ELx_EC_HVC64] = handle_hvc,
^~~~~~~~~~
arch/arm64/kvm/handle_exit.c:177:27: note: previous initialization is here
[0 ... ESR_ELx_EC_MAX] = kvm_handle_unknown_ec,
^~~~~~~~~~~~~~~~~~~~~
arch/arm64/kvm/handle_exit.c:187:23: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
[ESR_ELx_EC_SMC64] = handle_smc,
^~~~~~~~~~
arch/arm64/kvm/handle_exit.c:177:27: note: previous initialization is here
[0 ... ESR_ELx_EC_MAX] = kvm_handle_unknown_ec,
^~~~~~~~~~~~~~~~~~~~~
arch/arm64/kvm/handle_exit.c:188:23: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
[ESR_ELx_EC_SYS64] = kvm_handle_sys_reg,
^~~~~~~~~~~~~~~~~~
arch/arm64/kvm/handle_exit.c:177:27: note: previous initialization is here
[0 ... ESR_ELx_EC_MAX] = kvm_handle_unknown_ec,
^~~~~~~~~~~~~~~~~~~~~
arch/arm64/kvm/handle_exit.c:189:21: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
[ESR_ELx_EC_SVE] = handle_sve,
^~~~~~~~~~
arch/arm64/kvm/handle_exit.c:177:27: note: previous initialization is here
[0 ... ESR_ELx_EC_MAX] = kvm_handle_unknown_ec,
^~~~~~~~~~~~~~~~~~~~~
arch/arm64/kvm/handle_exit.c:190:26: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
[ESR_ELx_EC_IABT_LOW] = kvm_handle_guest_abort,
^~~~~~~~~~~~~~~~~~~~~~
arch/arm64/kvm/handle_exit.c:177:27: note: previous initialization is here
[0 ... ESR_ELx_EC_MAX] = kvm_handle_unknown_ec,
^~~~~~~~~~~~~~~~~~~~~
arch/arm64/kvm/handle_exit.c:191:26: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
[ESR_ELx_EC_DABT_LOW] = kvm_handle_guest_abort,
^~~~~~~~~~~~~~~~~~~~~~
arch/arm64/kvm/handle_exit.c:177:27: note: previous initialization is here
[0 ... ESR_ELx_EC_MAX] = kvm_handle_unknown_ec,
^~~~~~~~~~~~~~~~~~~~~
arch/arm64/kvm/handle_exit.c:192:28: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
[ESR_ELx_EC_SOFTSTP_LOW]= kvm_handle_guest_debug,
^~~~~~~~~~~~~~~~~~~~~~
arch/arm64/kvm/handle_exit.c:177:27: note: previous initialization is here
[0 ... ESR_ELx_EC_MAX] = kvm_handle_unknown_ec,
^~~~~~~~~~~~~~~~~~~~~
arch/arm64/kvm/handle_exit.c:193:28: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
[ESR_ELx_EC_WATCHPT_LOW]= kvm_handle_guest_debug,
^~~~~~~~~~~~~~~~~~~~~~
arch/arm64/kvm/handle_exit.c:177:27: note: previous initialization is here
[0 ... ESR_ELx_EC_MAX] = kvm_handle_unknown_ec,
# https://github.com/0day-ci/linux/commit/b7168fc5046fd65223bdc51ef411e157939433b6
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Nicholas-Piggin/Use-asm-generic-for-mmu_context-no-op-functions/20200826-225632
git checkout b7168fc5046fd65223bdc51ef411e157939433b6
vim +226 arch/arm64/include/asm/mmu_context.h
d96cc49bff5a77 Will Deacon 2017-12-06 214
39bc88e5e38e9b Catalin Marinas 2016-09-02 215 static inline void __switch_mm(struct mm_struct *next)
39bc88e5e38e9b Catalin Marinas 2016-09-02 216 {
e53f21bce4d35a Catalin Marinas 2015-03-23 217 /*
e53f21bce4d35a Catalin Marinas 2015-03-23 218 * init_mm.pgd does not contain any user mappings and it is always
e53f21bce4d35a Catalin Marinas 2015-03-23 219 * active for kernel addresses in TTBR1. Just set the reserved TTBR0.
e53f21bce4d35a Catalin Marinas 2015-03-23 220 */
e53f21bce4d35a Catalin Marinas 2015-03-23 221 if (next == &init_mm) {
e53f21bce4d35a Catalin Marinas 2015-03-23 222 cpu_set_reserved_ttbr0();
e53f21bce4d35a Catalin Marinas 2015-03-23 223 return;
e53f21bce4d35a Catalin Marinas 2015-03-23 224 }
e53f21bce4d35a Catalin Marinas 2015-03-23 225
c4885bbb3afee8 Pingfan Liu 2020-07-10 @226 check_and_switch_context(next);
b3901d54dc4f73 Catalin Marinas 2012-03-05 227 }
b3901d54dc4f73 Catalin Marinas 2012-03-05 228
---
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: 41785 bytes --]
^ permalink raw reply [flat|nested] 50+ messages in thread
* Re: [PATCH v2 00/23] Use asm-generic for mmu_context no-op functions
2020-08-26 14:52 [PATCH v2 00/23] Use asm-generic for mmu_context no-op functions Nicholas Piggin
` (22 preceding siblings ...)
2020-08-26 14:52 ` [PATCH v2 23/23] xtensa: " Nicholas Piggin
@ 2020-08-26 20:12 ` Arnd Bergmann
2020-08-30 10:18 ` Mike Rapoport
24 siblings, 0 replies; 50+ messages in thread
From: Arnd Bergmann @ 2020-08-26 20:12 UTC (permalink / raw)
To: Nicholas Piggin; +Cc: linux-arch, linux-kernel, Linux-MM
On Wed, Aug 26, 2020 at 4:53 PM Nicholas Piggin <npiggin@gmail.com> wrote:
>
> It would be nice to be able to modify mmu_context functions or add a
> hook without updating all architectures, many of which will be no-ops.
>
> The motivation for this series is a change to lazy mmu handling, but
> this series stands on its own as a good cleanup whether or not we end
> up making that change.
>
> Arnd, is this something you could take through your asm-generic tree?
> (assuming arch maintainers are okay with it)
Yes, I can definitely take this. The patches all look good to me, so
feel free to add "Acked-by: Arnd Bergmann <arnd@arndb.de" if you
like (not really needed if I merge them later though) and send me a
pull request once you feel you have collected enough Ack from others.
Arnd
^ permalink raw reply [flat|nested] 50+ messages in thread
* Re: [PATCH v2 05/23] arm64: use asm-generic/mmu_context.h for no-op implementations
2020-08-26 14:52 ` [PATCH v2 05/23] arm64: " Nicholas Piggin
` (2 preceding siblings ...)
2020-08-26 18:57 ` kernel test robot
@ 2020-08-26 23:55 ` kernel test robot
3 siblings, 0 replies; 50+ messages in thread
From: kernel test robot @ 2020-08-26 23:55 UTC (permalink / raw)
To: Nicholas Piggin, linux-arch
Cc: kbuild-all, clang-built-linux, Nicholas Piggin, linux-kernel,
linux-mm, Arnd Bergmann, Catalin Marinas, Will Deacon,
linux-arm-kernel
[-- Attachment #1: Type: text/plain, Size: 20766 bytes --]
Hi Nicholas,
I love your patch! Yet something to improve:
[auto build test ERROR on linus/master]
[also build test ERROR on v5.9-rc2 next-20200826]
[cannot apply to sparc/master asm-generic/master sparc-next/master 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/20200826-225632
base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 2ac69819ba9e3d8d550bb5d2d2df74848e556812
config: arm64-randconfig-r036-20200826 (attached as .config)
compiler: clang version 12.0.0 (https://github.com/llvm/llvm-project 7cfcecece0e0430937cf529ce74d3a071a4dedc6)
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
# install arm64 cross compiling tool for clang build
# apt-get install binutils-aarch64-linux-gnu
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm64
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/arm64/mm/mmu.c:35:
>> arch/arm64/include/asm/mmu_context.h:226:31: error: too few arguments to function call, expected 2, have 1
check_and_switch_context(next);
~~~~~~~~~~~~~~~~~~~~~~~~ ^
arch/arm64/include/asm/mmu_context.h:177:6: note: 'check_and_switch_context' declared here
void check_and_switch_context(struct mm_struct *mm, unsigned int cpu);
^
1 error generated.
--
In file included from arch/arm64/mm/context.c:16:
>> arch/arm64/include/asm/mmu_context.h:226:31: error: too few arguments to function call, expected 2, have 1
check_and_switch_context(next);
~~~~~~~~~~~~~~~~~~~~~~~~ ^
arch/arm64/include/asm/mmu_context.h:177:6: note: 'check_and_switch_context' declared here
void check_and_switch_context(struct mm_struct *mm, unsigned int cpu);
^
>> arch/arm64/mm/context.c:201:6: error: conflicting types for 'check_and_switch_context'
void check_and_switch_context(struct mm_struct *mm)
^
arch/arm64/include/asm/mmu_context.h:177:6: note: previous declaration is here
void check_and_switch_context(struct mm_struct *mm, unsigned int cpu);
^
2 errors generated.
--
In file included from arch/arm64/kernel/process.c:54:
>> arch/arm64/include/asm/mmu_context.h:226:31: error: too few arguments to function call, expected 2, have 1
check_and_switch_context(next);
~~~~~~~~~~~~~~~~~~~~~~~~ ^
arch/arm64/include/asm/mmu_context.h:177:6: note: 'check_and_switch_context' declared here
void check_and_switch_context(struct mm_struct *mm, unsigned int cpu);
^
arch/arm64/kernel/process.c:260:6: warning: no previous prototype for function '__show_regs' [-Wmissing-prototypes]
void __show_regs(struct pt_regs *regs)
^
arch/arm64/kernel/process.c:260:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
void __show_regs(struct pt_regs *regs)
^
static
arch/arm64/kernel/process.c:352:5: warning: no previous prototype for function 'arch_dup_task_struct' [-Wmissing-prototypes]
int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src)
^
arch/arm64/kernel/process.c:352:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src)
^
static
arch/arm64/kernel/process.c:554:41: warning: no previous prototype for function '__switch_to' [-Wmissing-prototypes]
__notrace_funcgraph struct task_struct *__switch_to(struct task_struct *prev,
^
arch/arm64/kernel/process.c:554:21: note: declare 'static' if the function is not intended to be used outside of this translation unit
__notrace_funcgraph struct task_struct *__switch_to(struct task_struct *prev,
^
static
arch/arm64/kernel/process.c:692:25: warning: no previous prototype for function 'arm64_preempt_schedule_irq' [-Wmissing-prototypes]
asmlinkage void __sched arm64_preempt_schedule_irq(void)
^
arch/arm64/kernel/process.c:692:12: note: declare 'static' if the function is not intended to be used outside of this translation unit
asmlinkage void __sched arm64_preempt_schedule_irq(void)
^
static
4 warnings and 1 error generated.
--
In file included from arch/arm64/kernel/cpu_errata.c:111:
>> arch/arm64/include/asm/mmu_context.h:226:31: error: too few arguments to function call, expected 2, have 1
check_and_switch_context(next);
~~~~~~~~~~~~~~~~~~~~~~~~ ^
arch/arm64/include/asm/mmu_context.h:177:6: note: 'check_and_switch_context' declared here
void check_and_switch_context(struct mm_struct *mm, unsigned int cpu);
^
arch/arm64/kernel/cpu_errata.c:295:13: warning: no previous prototype for function 'arm64_update_smccc_conduit' [-Wmissing-prototypes]
void __init arm64_update_smccc_conduit(struct alt_instr *alt,
^
arch/arm64/kernel/cpu_errata.c:295:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
void __init arm64_update_smccc_conduit(struct alt_instr *alt,
^
static
arch/arm64/kernel/cpu_errata.c:317:13: warning: no previous prototype for function 'arm64_enable_wa2_handling' [-Wmissing-prototypes]
void __init arm64_enable_wa2_handling(struct alt_instr *alt,
^
arch/arm64/kernel/cpu_errata.c:317:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
void __init arm64_enable_wa2_handling(struct alt_instr *alt,
^
static
arch/arm64/kernel/cpu_errata.c:747:3: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
ERRATA_MIDR_REV_RANGE(MIDR_CORTEX_A53, 0, 0, 4),
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/kernel/cpu_errata.c:506:2: note: expanded from macro 'ERRATA_MIDR_REV_RANGE'
ERRATA_MIDR_RANGE(m, var, r_min, var, r_max)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/kernel/cpu_errata.c:498:2: note: expanded from macro 'ERRATA_MIDR_RANGE'
CAP_MIDR_RANGE(model, v_min, r_min, v_max, r_max)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/kernel/cpu_errata.c:486:13: note: expanded from macro 'CAP_MIDR_RANGE'
.matches = is_affected_midr_range, \
^~~~~~~~~~~~~~~~~~~~~~
arch/arm64/kernel/cpu_errata.c:746:14: note: previous initialization is here
.matches = is_affected_midr_range,
^~~~~~~~~~~~~~~~~~~~~~
arch/arm64/kernel/cpu_errata.c:753:3: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
ERRATA_MIDR_REV(MIDR_BRAHMA_B53, 0, 0),
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/kernel/cpu_errata.c:510:2: note: expanded from macro 'ERRATA_MIDR_REV'
ERRATA_MIDR_RANGE(model, var, rev, var, rev)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/kernel/cpu_errata.c:498:2: note: expanded from macro 'ERRATA_MIDR_RANGE'
CAP_MIDR_RANGE(model, v_min, r_min, v_max, r_max)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/kernel/cpu_errata.c:486:13: note: expanded from macro 'CAP_MIDR_RANGE'
.matches = is_affected_midr_range, \
^~~~~~~~~~~~~~~~~~~~~~
arch/arm64/kernel/cpu_errata.c:752:14: note: previous initialization is here
.matches = is_affected_midr_range,
^~~~~~~~~~~~~~~~~~~~~~
arch/arm64/kernel/cpu_errata.c:938:14: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
.matches = needs_tx2_tvm_workaround,
^~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/kernel/cpu_errata.c:937:3: note: previous initialization is here
ERRATA_MIDR_RANGE_LIST(tx2_family_cpus),
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/kernel/cpu_errata.c:520:2: note: expanded from macro 'ERRATA_MIDR_RANGE_LIST'
CAP_MIDR_RANGE_LIST(midr_list)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/kernel/cpu_errata.c:501:13: note: expanded from macro 'CAP_MIDR_RANGE_LIST'
.matches = is_affected_midr_range_list, \
^~~~~~~~~~~~~~~~~~~~~~~~~~~
5 warnings and 1 error generated.
--
In file included from arch/arm64/kernel/smp.c:43:
In file included from arch/arm64/include/asm/kvm_mmu.h:90:
>> arch/arm64/include/asm/mmu_context.h:226:31: error: too few arguments to function call, expected 2, have 1
check_and_switch_context(next);
~~~~~~~~~~~~~~~~~~~~~~~~ ^
arch/arm64/include/asm/mmu_context.h:177:6: note: 'check_and_switch_context' declared here
void check_and_switch_context(struct mm_struct *mm, unsigned int cpu);
^
arch/arm64/kernel/smp.c:842:6: warning: no previous prototype for function 'arch_irq_work_raise' [-Wmissing-prototypes]
void arch_irq_work_raise(void)
^
arch/arm64/kernel/smp.c:842:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
void arch_irq_work_raise(void)
^
static
arch/arm64/kernel/smp.c:863:6: warning: no previous prototype for function 'panic_smp_self_stop' [-Wmissing-prototypes]
void panic_smp_self_stop(void)
^
arch/arm64/kernel/smp.c:863:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
void panic_smp_self_stop(void)
^
static
2 warnings and 1 error generated.
--
In file included from arch/arm64/kernel/suspend.c:14:
>> arch/arm64/include/asm/mmu_context.h:226:31: error: too few arguments to function call, expected 2, have 1
check_and_switch_context(next);
~~~~~~~~~~~~~~~~~~~~~~~~ ^
arch/arm64/include/asm/mmu_context.h:177:6: note: 'check_and_switch_context' declared here
void check_and_switch_context(struct mm_struct *mm, unsigned int cpu);
^
arch/arm64/kernel/suspend.c:32:13: warning: no previous prototype for function 'cpu_suspend_set_dbg_restorer' [-Wmissing-prototypes]
void __init cpu_suspend_set_dbg_restorer(int (*hw_bp_restore)(unsigned int))
^
arch/arm64/kernel/suspend.c:32:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
void __init cpu_suspend_set_dbg_restorer(int (*hw_bp_restore)(unsigned int))
^
static
1 warning and 1 error generated.
--
In file included from arch/arm64/kernel/machine_kexec.c:21:
>> arch/arm64/include/asm/mmu_context.h:226:31: error: too few arguments to function call, expected 2, have 1
check_and_switch_context(next);
~~~~~~~~~~~~~~~~~~~~~~~~ ^
arch/arm64/include/asm/mmu_context.h:177:6: note: 'check_and_switch_context' declared here
void check_and_switch_context(struct mm_struct *mm, unsigned int cpu);
^
arch/arm64/kernel/machine_kexec.c:250:6: warning: no previous prototype for function 'machine_crash_shutdown' [-Wmissing-prototypes]
void machine_crash_shutdown(struct pt_regs *regs)
^
arch/arm64/kernel/machine_kexec.c:250:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
void machine_crash_shutdown(struct pt_regs *regs)
^
static
1 warning and 1 error generated.
--
In file included from kernel/fork.c:101:
>> arch/arm64/include/asm/mmu_context.h:226:31: error: too few arguments to function call, expected 2, have 1
check_and_switch_context(next);
~~~~~~~~~~~~~~~~~~~~~~~~ ^
arch/arm64/include/asm/mmu_context.h:177:6: note: 'check_and_switch_context' declared here
void check_and_switch_context(struct mm_struct *mm, unsigned int cpu);
^
kernel/fork.c:743:20: warning: no previous prototype for function 'arch_task_cache_init' [-Wmissing-prototypes]
void __init __weak arch_task_cache_init(void) { }
^
kernel/fork.c:743:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
void __init __weak arch_task_cache_init(void) { }
^
static
kernel/fork.c:834:12: warning: no previous prototype for function 'arch_dup_task_struct' [-Wmissing-prototypes]
int __weak arch_dup_task_struct(struct task_struct *dst,
^
kernel/fork.c:834:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
int __weak arch_dup_task_struct(struct task_struct *dst,
^
static
2 warnings and 1 error generated.
--
In file included from kernel/sched/core.c:13:
In file included from kernel/sched/sched.h:54:
In file included from include/linux/mmu_context.h:5:
>> arch/arm64/include/asm/mmu_context.h:226:31: error: too few arguments to function call, expected 2, have 1
check_and_switch_context(next);
~~~~~~~~~~~~~~~~~~~~~~~~ ^
arch/arm64/include/asm/mmu_context.h:177:6: note: 'check_and_switch_context' declared here
void check_and_switch_context(struct mm_struct *mm, unsigned int cpu);
^
kernel/sched/core.c:2380:6: warning: no previous prototype for function 'sched_set_stop_task' [-Wmissing-prototypes]
void sched_set_stop_task(int cpu, struct task_struct *stop)
^
kernel/sched/core.c:2380:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
void sched_set_stop_task(int cpu, struct task_struct *stop)
^
static
kernel/sched/core.c:4635:35: warning: no previous prototype for function 'schedule_user' [-Wmissing-prototypes]
asmlinkage __visible void __sched schedule_user(void)
^
kernel/sched/core.c:4635:22: note: declare 'static' if the function is not intended to be used outside of this translation unit
asmlinkage __visible void __sched schedule_user(void)
^
static
2 warnings and 1 error generated.
--
In file included from kernel/sched/fair.c:23:
In file included from kernel/sched/sched.h:54:
In file included from include/linux/mmu_context.h:5:
>> arch/arm64/include/asm/mmu_context.h:226:31: error: too few arguments to function call, expected 2, have 1
check_and_switch_context(next);
~~~~~~~~~~~~~~~~~~~~~~~~ ^
arch/arm64/include/asm/mmu_context.h:177:6: note: 'check_and_switch_context' declared here
void check_and_switch_context(struct mm_struct *mm, unsigned int cpu);
^
kernel/sched/fair.c:5364:6: warning: no previous prototype for function 'init_cfs_bandwidth' [-Wmissing-prototypes]
void init_cfs_bandwidth(struct cfs_bandwidth *cfs_b) {}
^
kernel/sched/fair.c:5364:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
void init_cfs_bandwidth(struct cfs_bandwidth *cfs_b) {}
^
static
kernel/sched/fair.c:11108:6: warning: no previous prototype for function 'free_fair_sched_group' [-Wmissing-prototypes]
void free_fair_sched_group(struct task_group *tg) { }
^
kernel/sched/fair.c:11108:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
void free_fair_sched_group(struct task_group *tg) { }
^
static
kernel/sched/fair.c:11110:5: warning: no previous prototype for function 'alloc_fair_sched_group' [-Wmissing-prototypes]
int alloc_fair_sched_group(struct task_group *tg, struct task_group *parent)
^
kernel/sched/fair.c:11110:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
int alloc_fair_sched_group(struct task_group *tg, struct task_group *parent)
^
static
kernel/sched/fair.c:11115:6: warning: no previous prototype for function 'online_fair_sched_group' [-Wmissing-prototypes]
void online_fair_sched_group(struct task_group *tg) { }
^
kernel/sched/fair.c:11115:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
void online_fair_sched_group(struct task_group *tg) { }
^
static
kernel/sched/fair.c:11117:6: warning: no previous prototype for function 'unregister_fair_sched_group' [-Wmissing-prototypes]
void unregister_fair_sched_group(struct task_group *tg) { }
^
kernel/sched/fair.c:11117:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
void unregister_fair_sched_group(struct task_group *tg) { }
^
static
5 warnings and 1 error generated.
--
In file included from kernel/sched/rt.c:6:
In file included from kernel/sched/sched.h:54:
In file included from include/linux/mmu_context.h:5:
>> arch/arm64/include/asm/mmu_context.h:226:31: error: too few arguments to function call, expected 2, have 1
check_and_switch_context(next);
~~~~~~~~~~~~~~~~~~~~~~~~ ^
arch/arm64/include/asm/mmu_context.h:177:6: note: 'check_and_switch_context' declared here
void check_and_switch_context(struct mm_struct *mm, unsigned int cpu);
^
kernel/sched/rt.c:253:6: warning: no previous prototype for function 'free_rt_sched_group' [-Wmissing-prototypes]
void free_rt_sched_group(struct task_group *tg) { }
^
kernel/sched/rt.c:253:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
void free_rt_sched_group(struct task_group *tg) { }
^
static
kernel/sched/rt.c:255:5: warning: no previous prototype for function 'alloc_rt_sched_group' [-Wmissing-prototypes]
int alloc_rt_sched_group(struct task_group *tg, struct task_group *parent)
^
kernel/sched/rt.c:255:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
int alloc_rt_sched_group(struct task_group *tg, struct task_group *parent)
^
static
kernel/sched/rt.c:668:6: warning: no previous prototype for function 'sched_rt_bandwidth_account' [-Wmissing-prototypes]
bool sched_rt_bandwidth_account(struct rt_rq *rt_rq)
^
kernel/sched/rt.c:668:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
bool sched_rt_bandwidth_account(struct rt_rq *rt_rq)
^
static
3 warnings and 1 error generated.
# https://github.com/0day-ci/linux/commit/b7168fc5046fd65223bdc51ef411e157939433b6
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Nicholas-Piggin/Use-asm-generic-for-mmu_context-no-op-functions/20200826-225632
git checkout b7168fc5046fd65223bdc51ef411e157939433b6
vim +226 arch/arm64/include/asm/mmu_context.h
d96cc49bff5a77 Will Deacon 2017-12-06 214
39bc88e5e38e9b Catalin Marinas 2016-09-02 215 static inline void __switch_mm(struct mm_struct *next)
39bc88e5e38e9b Catalin Marinas 2016-09-02 216 {
e53f21bce4d35a Catalin Marinas 2015-03-23 217 /*
e53f21bce4d35a Catalin Marinas 2015-03-23 218 * init_mm.pgd does not contain any user mappings and it is always
e53f21bce4d35a Catalin Marinas 2015-03-23 219 * active for kernel addresses in TTBR1. Just set the reserved TTBR0.
e53f21bce4d35a Catalin Marinas 2015-03-23 220 */
e53f21bce4d35a Catalin Marinas 2015-03-23 221 if (next == &init_mm) {
e53f21bce4d35a Catalin Marinas 2015-03-23 222 cpu_set_reserved_ttbr0();
e53f21bce4d35a Catalin Marinas 2015-03-23 223 return;
e53f21bce4d35a Catalin Marinas 2015-03-23 224 }
e53f21bce4d35a Catalin Marinas 2015-03-23 225
c4885bbb3afee8 Pingfan Liu 2020-07-10 @226 check_and_switch_context(next);
b3901d54dc4f73 Catalin Marinas 2012-03-05 227 }
b3901d54dc4f73 Catalin Marinas 2012-03-05 228
---
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: 43232 bytes --]
^ permalink raw reply [flat|nested] 50+ messages in thread
* Re: [PATCH v2 09/23] m68k: use asm-generic/mmu_context.h for no-op implementations
2020-08-26 14:52 ` [PATCH v2 09/23] m68k: " Nicholas Piggin
@ 2020-08-27 9:33 ` Geert Uytterhoeven
2020-09-01 6:23 ` Nicholas Piggin
0 siblings, 1 reply; 50+ messages in thread
From: Geert Uytterhoeven @ 2020-08-27 9:33 UTC (permalink / raw)
To: Nicholas Piggin
Cc: Linux-Arch, Linux Kernel Mailing List, Linux MM, Arnd Bergmann,
linux-m68k
On Wed, Aug 26, 2020 at 4:53 PM Nicholas Piggin <npiggin@gmail.com> wrote:
> Cc: Geert Uytterhoeven <geert@linux-m68k.org>
> Cc: linux-m68k@lists.linux-m68k.org
> Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
With the below fixed:
Acked-by: Geert Uytterhoeven <geert@linux-m68k.org>
> --- a/arch/m68k/include/asm/mmu_context.h
> +++ b/arch/m68k/include/asm/mmu_context.h
> @@ -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);
> -}
Assumed switch_mm() in [PATCH v2 01/23] is revived with the above body.
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
^ permalink raw reply [flat|nested] 50+ messages in thread
* Re: [PATCH v2 12/23] nds32: use asm-generic/mmu_context.h for no-op implementations
2020-08-26 14:52 ` [PATCH v2 12/23] nds32: " Nicholas Piggin
@ 2020-08-28 10:09 ` Greentime Hu
0 siblings, 0 replies; 50+ messages in thread
From: Greentime Hu @ 2020-08-28 10:09 UTC (permalink / raw)
To: Nicholas Piggin
Cc: linux-arch, Linux Kernel Mailing List,
Linux Memory Management List, Arnd Bergmann, Nick Hu,
Vincent Chen
Nicholas Piggin <npiggin@gmail.com> 於 2020年8月26日 週三 下午10:53寫道:
>
> 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
Acked-by: Greentime Hu <green.hu@gmail.com>
Thank you. :)
^ permalink raw reply [flat|nested] 50+ messages in thread
* Re: [PATCH v2 15/23] parisc: use asm-generic/mmu_context.h for no-op implementations
2020-08-26 14:52 ` [PATCH v2 15/23] parisc: " Nicholas Piggin
@ 2020-08-29 9:09 ` Helge Deller
0 siblings, 0 replies; 50+ messages in thread
From: Helge Deller @ 2020-08-29 9:09 UTC (permalink / raw)
To: Nicholas Piggin, linux-arch
Cc: linux-kernel, linux-mm, Arnd Bergmann, James E.J. Bottomley,
linux-parisc
On 26.08.20 16:52, Nicholas Piggin wrote:
> 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>
Acked-by: Helge Deller <deller@gmx.de>
> ---
> 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 cb5f2f730421..46f8c22c5977 100644
> --- a/arch/parisc/include/asm/mmu_context.h
> +++ b/arch/parisc/include/asm/mmu_context.h
> @@ -7,16 +7,13 @@
> #include <linux/atomic.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)
> {
> @@ -26,6 +23,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)
> {
> @@ -71,8 +69,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)
> {
> /*
> @@ -90,4 +87,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
>
^ permalink raw reply [flat|nested] 50+ messages in thread
* Re: [PATCH v2 00/23] Use asm-generic for mmu_context no-op functions
2020-08-26 14:52 [PATCH v2 00/23] Use asm-generic for mmu_context no-op functions Nicholas Piggin
` (23 preceding siblings ...)
2020-08-26 20:12 ` [PATCH v2 00/23] Use asm-generic for mmu_context no-op functions Arnd Bergmann
@ 2020-08-30 10:18 ` Mike Rapoport
2020-09-01 6:17 ` Nicholas Piggin
24 siblings, 1 reply; 50+ messages in thread
From: Mike Rapoport @ 2020-08-30 10:18 UTC (permalink / raw)
To: Nicholas Piggin; +Cc: linux-arch, linux-kernel, linux-mm, Arnd Bergmann
On Thu, Aug 27, 2020 at 12:52:26AM +1000, Nicholas Piggin wrote:
> It would be nice to be able to modify mmu_context functions or add a
> hook without updating all architectures, many of which will be no-ops.
>
> The motivation for this series is a change to lazy mmu handling, but
> this series stands on its own as a good cleanup whether or not we end
> up making that change.
I really like this series, I just have some small comments in reply to
patch 1, otherwise feel free to add
Acked-by: Mike Rapoport <rppt@linux.ibm.com>
> Arnd, is this something you could take through your asm-generic tree?
> (assuming arch maintainers are okay with it)
>
> Thanks,
> Nick
>
> Since v1:
> - Added acks and feedback from various people.
> - Fixed a nommu build error caught by ktp.
> - Dropped unicore32.
>
> Nicholas Piggin (23):
> asm-generic: add generic MMU versions of mmu context functions
> alpha: use asm-generic/mmu_context.h for no-op implementations
> arc: use asm-generic/mmu_context.h for no-op implementations
> arm: use asm-generic/mmu_context.h for no-op implementations
> arm64: use asm-generic/mmu_context.h for no-op implementations
> csky: use asm-generic/mmu_context.h for no-op implementations
> hexagon: use asm-generic/mmu_context.h for no-op implementations
> ia64: use asm-generic/mmu_context.h for no-op implementations
> m68k: use asm-generic/mmu_context.h for no-op implementations
> microblaze: use asm-generic/mmu_context.h for no-op implementations
> mips: use asm-generic/mmu_context.h for no-op implementations
> nds32: use asm-generic/mmu_context.h for no-op implementations
> nios2: use asm-generic/mmu_context.h for no-op implementations
> openrisc: use asm-generic/mmu_context.h for no-op implementations
> parisc: use asm-generic/mmu_context.h for no-op implementations
> powerpc: use asm-generic/mmu_context.h for no-op implementations
> riscv: use asm-generic/mmu_context.h for no-op implementations
> s390: use asm-generic/mmu_context.h for no-op implementations
> sh: use asm-generic/mmu_context.h for no-op implementations
> sparc: use asm-generic/mmu_context.h for no-op implementations
> um: use asm-generic/mmu_context.h for no-op implementations
> x86: use asm-generic/mmu_context.h for no-op implementations
> xtensa: use asm-generic/mmu_context.h for no-op implementations
>
> arch/alpha/include/asm/mmu_context.h | 12 ++---
> arch/arc/include/asm/mmu_context.h | 17 +++---
> arch/arm/include/asm/mmu_context.h | 26 ++-------
> arch/arm64/include/asm/mmu_context.h | 9 ++--
> arch/csky/include/asm/mmu_context.h | 8 ++-
> arch/hexagon/include/asm/mmu_context.h | 33 ++----------
> arch/ia64/include/asm/mmu_context.h | 17 ++----
> arch/m68k/include/asm/mmu_context.h | 47 +++-------------
> arch/microblaze/include/asm/mmu_context.h | 2 +-
> arch/microblaze/include/asm/mmu_context_mm.h | 8 +--
> arch/microblaze/include/asm/processor.h | 3 --
> arch/mips/include/asm/mmu_context.h | 11 ++--
> arch/nds32/include/asm/mmu_context.h | 10 +---
> arch/nios2/include/asm/mmu_context.h | 21 ++------
> arch/openrisc/include/asm/mmu_context.h | 8 ++-
> arch/parisc/include/asm/mmu_context.h | 12 ++---
> arch/powerpc/include/asm/mmu_context.h | 22 +++-----
> arch/riscv/include/asm/mmu_context.h | 22 +-------
> arch/s390/include/asm/mmu_context.h | 9 ++--
> arch/sh/include/asm/mmu_context.h | 7 ++-
> arch/sh/include/asm/mmu_context_32.h | 9 ----
> arch/sparc/include/asm/mmu_context_32.h | 10 ++--
> arch/sparc/include/asm/mmu_context_64.h | 10 ++--
> arch/um/include/asm/mmu_context.h | 12 ++---
> arch/x86/include/asm/mmu_context.h | 6 +++
> arch/xtensa/include/asm/mmu_context.h | 11 ++--
> arch/xtensa/include/asm/nommu_context.h | 26 +--------
> include/asm-generic/mmu_context.h | 57 +++++++++++++++-----
> include/asm-generic/nommu_context.h | 19 +++++++
> 29 files changed, 166 insertions(+), 298 deletions(-)
> create mode 100644 include/asm-generic/nommu_context.h
>
> --
> 2.23.0
>
>
--
Sincerely yours,
Mike.
^ permalink raw reply [flat|nested] 50+ messages in thread
* Re: [PATCH v2 10/23] microblaze: use asm-generic/mmu_context.h for no-op implementations
2020-08-26 14:52 ` [PATCH v2 10/23] microblaze: " Nicholas Piggin
@ 2020-08-31 14:15 ` Michal Simek
2020-09-01 6:15 ` Nicholas Piggin
0 siblings, 1 reply; 50+ messages in thread
From: Michal Simek @ 2020-08-31 14:15 UTC (permalink / raw)
To: Nicholas Piggin, linux-arch
Cc: linux-kernel, linux-mm, Arnd Bergmann, Michal Simek
On 26. 08. 20 16:52, Nicholas Piggin wrote:
> 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
>
>
I am fine with the patch but I pretty much don't like that commit
message is empty and there is only subject.
With fixing that you can add my:
Acked-by: Michal Simek <monstr@monstr.eu>
Thanks,
Michal
--
Michal Simek, Ing. (M.Eng), OpenPGP -> KeyID: FE3D1F91
w: www.monstr.eu p: +42-0-721842854
Maintainer of Linux kernel - Xilinx Microblaze
Maintainer of Linux kernel - Xilinx Zynq ARM and ZynqMP ARM64 SoCs
U-Boot custodian - Xilinx Microblaze/Zynq/ZynqMP/Versal SoCs
^ permalink raw reply [flat|nested] 50+ messages in thread
* Re: [PATCH v2 10/23] microblaze: use asm-generic/mmu_context.h for no-op implementations
2020-08-31 14:15 ` Michal Simek
@ 2020-09-01 6:15 ` Nicholas Piggin
2020-09-01 6:41 ` Michal Simek
0 siblings, 1 reply; 50+ messages in thread
From: Nicholas Piggin @ 2020-09-01 6:15 UTC (permalink / raw)
To: linux-arch, Michal Simek
Cc: Arnd Bergmann, linux-kernel, linux-mm, Michal Simek
Excerpts from Michal Simek's message of September 1, 2020 12:15 am:
>
>
> On 26. 08. 20 16:52, Nicholas Piggin wrote:
>> 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
>>
>>
>
> I am fine with the patch but I pretty much don't like that commit
> message is empty and there is only subject.
> With fixing that you can add my:
> Acked-by: Michal Simek <monstr@monstr.eu>
Thanks for the review, will do. Any suggestion for a useful commit message?
Thanks,
Nick
^ permalink raw reply [flat|nested] 50+ messages in thread
* Re: [PATCH v2 00/23] Use asm-generic for mmu_context no-op functions
2020-08-30 10:18 ` Mike Rapoport
@ 2020-09-01 6:17 ` Nicholas Piggin
2020-09-01 6:54 ` Mike Rapoport
0 siblings, 1 reply; 50+ messages in thread
From: Nicholas Piggin @ 2020-09-01 6:17 UTC (permalink / raw)
To: Mike Rapoport; +Cc: Arnd Bergmann, linux-arch, linux-kernel, linux-mm
Excerpts from Mike Rapoport's message of August 30, 2020 8:18 pm:
> On Thu, Aug 27, 2020 at 12:52:26AM +1000, Nicholas Piggin wrote:
>> It would be nice to be able to modify mmu_context functions or add a
>> hook without updating all architectures, many of which will be no-ops.
>>
>> The motivation for this series is a change to lazy mmu handling, but
>> this series stands on its own as a good cleanup whether or not we end
>> up making that change.
>
> I really like this series, I just have some small comments in reply to
> patch 1, otherwise feel free to add
>
> Acked-by: Mike Rapoport <rppt@linux.ibm.com>
I can't see your comments in reply to patch 1.
Thanks,
Nick
^ permalink raw reply [flat|nested] 50+ messages in thread
* Re: [PATCH v2 09/23] m68k: use asm-generic/mmu_context.h for no-op implementations
2020-08-27 9:33 ` Geert Uytterhoeven
@ 2020-09-01 6:23 ` Nicholas Piggin
2020-09-01 7:03 ` Geert Uytterhoeven
0 siblings, 1 reply; 50+ messages in thread
From: Nicholas Piggin @ 2020-09-01 6:23 UTC (permalink / raw)
To: Geert Uytterhoeven
Cc: Arnd Bergmann, Linux-Arch, Linux Kernel Mailing List, linux-m68k,
Linux MM
Excerpts from Geert Uytterhoeven's message of August 27, 2020 7:33 pm:
> On Wed, Aug 26, 2020 at 4:53 PM Nicholas Piggin <npiggin@gmail.com> wrote:
>> Cc: Geert Uytterhoeven <geert@linux-m68k.org>
>> Cc: linux-m68k@lists.linux-m68k.org
>> Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
>
> With the below fixed:
> Acked-by: Geert Uytterhoeven <geert@linux-m68k.org>
>
>> --- a/arch/m68k/include/asm/mmu_context.h
>> +++ b/arch/m68k/include/asm/mmu_context.h
>> @@ -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);
>> -}
>
> Assumed switch_mm() in [PATCH v2 01/23] is revived with the above body.
I'm not sure what you mean here. We can remove this because it's a copy
of switch_mm above, and that's what the new header defaults to if you
don't provide an active_mm.
Patch 1 should not have changed that, it should only affect the nommu
architectures (and actually didn't touch m68k because it was not using
the asm-generic/mmu_context.h header).
Thanks,
Nick
^ permalink raw reply [flat|nested] 50+ messages in thread
* Re: [PATCH v2 10/23] microblaze: use asm-generic/mmu_context.h for no-op implementations
2020-09-01 6:15 ` Nicholas Piggin
@ 2020-09-01 6:41 ` Michal Simek
2020-09-01 7:09 ` Nicholas Piggin
0 siblings, 1 reply; 50+ messages in thread
From: Michal Simek @ 2020-09-01 6:41 UTC (permalink / raw)
To: Nicholas Piggin, linux-arch, Michal Simek
Cc: Arnd Bergmann, linux-kernel, linux-mm, Michal Simek
On 01. 09. 20 8:15, Nicholas Piggin wrote:
> Excerpts from Michal Simek's message of September 1, 2020 12:15 am:
>>
>>
>> On 26. 08. 20 16:52, Nicholas Piggin wrote:
>>> 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
>>>
>>>
>>
>> I am fine with the patch but I pretty much don't like that commit
>> message is empty and there is only subject.
>> With fixing that you can add my:
>> Acked-by: Michal Simek <monstr@monstr.eu>
>
> Thanks for the review, will do. Any suggestion for a useful commit message?
What about?
Wire asm-generic/mmu_context.h to provide generic empty hooks for arch
code simplification.
Thanks,
Michal
^ permalink raw reply [flat|nested] 50+ messages in thread
* Re: [PATCH v2 01/23] asm-generic: add generic MMU versions of mmu context functions
2020-08-26 14:52 ` [PATCH v2 01/23] asm-generic: add generic MMU versions of mmu context functions Nicholas Piggin
2020-08-26 18:13 ` kernel test robot
@ 2020-09-01 6:49 ` Mike Rapoport
2020-09-01 7:14 ` Nicholas Piggin
1 sibling, 1 reply; 50+ messages in thread
From: Mike Rapoport @ 2020-09-01 6:49 UTC (permalink / raw)
To: Nicholas Piggin; +Cc: linux-arch, linux-kernel, linux-mm, Arnd Bergmann
On Thu, Aug 27, 2020 at 12:52:27AM +1000, 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
>
> 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 f664e51e8a15..461b1304580b 100644
> --- a/arch/sh/include/asm/mmu_context.h
> +++ b/arch/sh/include/asm/mmu_context.h
> @@ -133,7 +133,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
'make *docs' will complain here about missing Return: description
> + */
> +#ifndef init_new_context
> static inline int init_new_context(struct task_struct *tsk,
> struct mm_struct *mm)
> {
> return 0;
> }
> +#endif
Most architectures have non-trivial init_new_context, maybe this
should go into nommu_context.h?
> +/**
> + * 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..4f916f9e16cd
> --- /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>
> +
> +static inline void switch_mm(struct mm_struct *prev,
> + struct mm_struct *next,
> + struct task_struct *tsk)
> +{
> +}
> +
> +#include <asm-generic/mmu_context.h>
> +
> +#endif /* __ASM_GENERIC_NOMMU_H */
> --
> 2.23.0
>
>
--
Sincerely yours,
Mike.
^ permalink raw reply [flat|nested] 50+ messages in thread
* Re: [PATCH v2 00/23] Use asm-generic for mmu_context no-op functions
2020-09-01 6:17 ` Nicholas Piggin
@ 2020-09-01 6:54 ` Mike Rapoport
0 siblings, 0 replies; 50+ messages in thread
From: Mike Rapoport @ 2020-09-01 6:54 UTC (permalink / raw)
To: Nicholas Piggin; +Cc: Arnd Bergmann, linux-arch, linux-kernel, linux-mm
On Tue, Sep 01, 2020 at 04:17:00PM +1000, Nicholas Piggin wrote:
> Excerpts from Mike Rapoport's message of August 30, 2020 8:18 pm:
> > On Thu, Aug 27, 2020 at 12:52:26AM +1000, Nicholas Piggin wrote:
> >> It would be nice to be able to modify mmu_context functions or add a
> >> hook without updating all architectures, many of which will be no-ops.
> >>
> >> The motivation for this series is a change to lazy mmu handling, but
> >> this series stands on its own as a good cleanup whether or not we end
> >> up making that change.
> >
> > I really like this series, I just have some small comments in reply to
> > patch 1, otherwise feel free to add
> >
> > Acked-by: Mike Rapoport <rppt@linux.ibm.com>
>
> I can't see your comments in reply to patch 1.
Hmm, apparently I forgot to hit "Send"...
> Thanks,
> Nick
>
--
Sincerely yours,
Mike.
^ permalink raw reply [flat|nested] 50+ messages in thread
* Re: [PATCH v2 09/23] m68k: use asm-generic/mmu_context.h for no-op implementations
2020-09-01 6:23 ` Nicholas Piggin
@ 2020-09-01 7:03 ` Geert Uytterhoeven
2020-09-01 7:50 ` Nicholas Piggin
0 siblings, 1 reply; 50+ messages in thread
From: Geert Uytterhoeven @ 2020-09-01 7:03 UTC (permalink / raw)
To: Nicholas Piggin
Cc: Arnd Bergmann, Linux-Arch, Linux Kernel Mailing List, linux-m68k,
Linux MM
Hi Nick,
On Tue, Sep 1, 2020 at 8:23 AM Nicholas Piggin <npiggin@gmail.com> wrote:
> Excerpts from Geert Uytterhoeven's message of August 27, 2020 7:33 pm:
> > On Wed, Aug 26, 2020 at 4:53 PM Nicholas Piggin <npiggin@gmail.com> wrote:
> >> Cc: Geert Uytterhoeven <geert@linux-m68k.org>
> >> Cc: linux-m68k@lists.linux-m68k.org
> >> Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
> >
> > With the below fixed:
> > Acked-by: Geert Uytterhoeven <geert@linux-m68k.org>
> >
> >> --- a/arch/m68k/include/asm/mmu_context.h
> >> +++ b/arch/m68k/include/asm/mmu_context.h
> >> @@ -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);
> >> -}
> >
> > Assumed switch_mm() in [PATCH v2 01/23] is revived with the above body.
>
> I'm not sure what you mean here. We can remove this because it's a copy
> of switch_mm above, and that's what the new header defaults to if you
> don't provide an active_mm.
IC. I thought it started relying on <asm-generic/mmu_context.h> for this,
where you removed switch_mm().
Seems I missed the definition above.
> Patch 1 should not have changed that, it should only affect the nommu
> architectures (and actually didn't touch m68k because it was not using
> the asm-generic/mmu_context.h header).
OK. Sorry for the noise.
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
^ permalink raw reply [flat|nested] 50+ messages in thread
* Re: [PATCH v2 10/23] microblaze: use asm-generic/mmu_context.h for no-op implementations
2020-09-01 6:41 ` Michal Simek
@ 2020-09-01 7:09 ` Nicholas Piggin
0 siblings, 0 replies; 50+ messages in thread
From: Nicholas Piggin @ 2020-09-01 7:09 UTC (permalink / raw)
To: linux-arch, Michal Simek, Michal Simek
Cc: Arnd Bergmann, linux-kernel, linux-mm
Excerpts from Michal Simek's message of September 1, 2020 4:41 pm:
>
>
> On 01. 09. 20 8:15, Nicholas Piggin wrote:
>> Excerpts from Michal Simek's message of September 1, 2020 12:15 am:
>>>
>>>
>>> On 26. 08. 20 16:52, Nicholas Piggin wrote:
>>>> 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
>>>>
>>>>
>>>
>>> I am fine with the patch but I pretty much don't like that commit
>>> message is empty and there is only subject.
>>> With fixing that you can add my:
>>> Acked-by: Michal Simek <monstr@monstr.eu>
>>
>> Thanks for the review, will do. Any suggestion for a useful commit message?
>
> What about?
> Wire asm-generic/mmu_context.h to provide generic empty hooks for arch
> code simplification.
Sure I'll add it.
Thanks,
Nick
^ permalink raw reply [flat|nested] 50+ messages in thread
* Re: [PATCH v2 01/23] asm-generic: add generic MMU versions of mmu context functions
2020-09-01 6:49 ` Mike Rapoport
@ 2020-09-01 7:14 ` Nicholas Piggin
0 siblings, 0 replies; 50+ messages in thread
From: Nicholas Piggin @ 2020-09-01 7:14 UTC (permalink / raw)
To: Mike Rapoport; +Cc: Arnd Bergmann, linux-arch, linux-kernel, linux-mm
Excerpts from Mike Rapoport's message of September 1, 2020 4:49 pm:
> On Thu, Aug 27, 2020 at 12:52:27AM +1000, 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
>>
>> 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 f664e51e8a15..461b1304580b 100644
>> --- a/arch/sh/include/asm/mmu_context.h
>> +++ b/arch/sh/include/asm/mmu_context.h
>> @@ -133,7 +133,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
>
> 'make *docs' will complain here about missing Return: description
Thanks, I added something. Looks like we can't get rid of it, sparc
and um can return error. Oh well.
>> + */
>> +#ifndef init_new_context
>> static inline int init_new_context(struct task_struct *tsk,
>> struct mm_struct *mm)
>> {
>> return 0;
>> }
>> +#endif
>
> Most architectures have non-trivial init_new_context, maybe this
> should go into nommu_context.h?
Hmm, I guess you could go either way. A few do have no-op functions so I
think that qualifies them if the rule is less ambiguous and we provide
no-op for functions unless it does not make any sense (e.g., switch_mm
for MMU). More importantly I already have the code written and am lazy
:)
Thanks,
Nick
^ permalink raw reply [flat|nested] 50+ messages in thread
* Re: [PATCH v2 16/23] powerpc: use asm-generic/mmu_context.h for no-op implementations
2020-08-26 14:52 ` [PATCH v2 16/23] powerpc: " Nicholas Piggin
@ 2020-09-01 7:30 ` Michael Ellerman
0 siblings, 0 replies; 50+ messages in thread
From: Michael Ellerman @ 2020-09-01 7:30 UTC (permalink / raw)
To: Nicholas Piggin, linux-arch
Cc: Nicholas Piggin, linux-kernel, linux-mm, Arnd Bergmann,
Benjamin Herrenschmidt, Paul Mackerras, linuxppc-dev
Nicholas Piggin <npiggin@gmail.com> writes:
> 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(-)
Acked-by: Michael Ellerman <mpe@ellerman.id.au> (powerpc)
cheers
> diff --git a/arch/powerpc/include/asm/mmu_context.h b/arch/powerpc/include/asm/mmu_context.h
> index 7f3658a97384..bc22e247ab55 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;
> @@ -235,27 +237,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);
>
> @@ -298,5 +288,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 [flat|nested] 50+ messages in thread
* Re: [PATCH v2 09/23] m68k: use asm-generic/mmu_context.h for no-op implementations
2020-09-01 7:03 ` Geert Uytterhoeven
@ 2020-09-01 7:50 ` Nicholas Piggin
0 siblings, 0 replies; 50+ messages in thread
From: Nicholas Piggin @ 2020-09-01 7:50 UTC (permalink / raw)
To: Geert Uytterhoeven
Cc: Arnd Bergmann, Linux-Arch, Linux Kernel Mailing List, linux-m68k,
Linux MM
Excerpts from Geert Uytterhoeven's message of September 1, 2020 5:03 pm:
> Hi Nick,
>
> On Tue, Sep 1, 2020 at 8:23 AM Nicholas Piggin <npiggin@gmail.com> wrote:
>> Excerpts from Geert Uytterhoeven's message of August 27, 2020 7:33 pm:
>> > On Wed, Aug 26, 2020 at 4:53 PM Nicholas Piggin <npiggin@gmail.com> wrote:
>> >> Cc: Geert Uytterhoeven <geert@linux-m68k.org>
>> >> Cc: linux-m68k@lists.linux-m68k.org
>> >> Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
>> >
>> > With the below fixed:
>> > Acked-by: Geert Uytterhoeven <geert@linux-m68k.org>
>> >
>> >> --- a/arch/m68k/include/asm/mmu_context.h
>> >> +++ b/arch/m68k/include/asm/mmu_context.h
>> >> @@ -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);
>> >> -}
>> >
>> > Assumed switch_mm() in [PATCH v2 01/23] is revived with the above body.
>>
>> I'm not sure what you mean here. We can remove this because it's a copy
>> of switch_mm above, and that's what the new header defaults to if you
>> don't provide an active_mm.
>
> IC. I thought it started relying on <asm-generic/mmu_context.h> for this,
> where you removed switch_mm().
>
> Seems I missed the definition above.
It's supposed to all build incrementally, I'll try to make sure it's
right...
>
>> Patch 1 should not have changed that, it should only affect the nommu
>> architectures (and actually didn't touch m68k because it was not using
>> the asm-generic/mmu_context.h header).
>
> OK. Sorry for the noise.
No problem thanks for looking at it.
Thanks,
Nick
^ permalink raw reply [flat|nested] 50+ messages in thread
* Re: [PATCH v2 05/23] arm64: use asm-generic/mmu_context.h for no-op implementations
2020-08-26 16:20 ` Nicholas Piggin
@ 2020-10-27 9:59 ` Naresh Kamboju
2020-10-27 15:08 ` Arnd Bergmann
0 siblings, 1 reply; 50+ messages in thread
From: Naresh Kamboju @ 2020-10-27 9:59 UTC (permalink / raw)
To: Nicholas Piggin, Arnd Bergmann, Catalin Marinas
Cc: linux-arch, Linux ARM, open list, linux-mm, Will Deacon, lkft-triage
On Wed, 26 Aug 2020 at 21:50, Nicholas Piggin <npiggin@gmail.com> wrote:
>
> Excerpts from Catalin Marinas's message of August 27, 2020 1:25 am:
> > On Thu, Aug 27, 2020 at 12:52:31AM +1000, Nicholas Piggin wrote:
> >> 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>
> >
> > Acked-by: Catalin Marinas <catalin.marinas@arm.com>
> >
>
> Thank you, I see I stupidly mis-rebased this patch too :( Sorry
> I'll fix that.
arm64 build error caused due to this patch on linux next 20201027 tag.
make -sk KBUILD_BUILD_USER=TuxBuild -C/linux ARCH=arm64
CROSS_COMPILE=aarch64-linux-gnu- HOSTCC=gcc CC="sccache
aarch64-linux-gnu-gcc" O=build defconfig
#
#
#
set -e
cd /linux
export ARCH=arm64
export HOSTCC=gcc
export CC=gcc
export CROSS_COMPILE=aarch64-linux-gnu-
scripts/kconfig/merge_config.sh -O build 'build/.config' 'build/frag.config'
#
#
# make -sk KBUILD_BUILD_USER=TuxBuild -C/linux -j16 ARCH=arm64
CROSS_COMPILE=aarch64-linux-gnu- HOSTCC=gcc CC="sccache
aarch64-linux-gnu-gcc" O=build Image
#
In file included from ../arch/arm64/include/asm/mmu_context.h:257,
from ../arch/arm64/include/asm/efi.h:10,
from ../arch/arm64/xen/../../arm/xen/enlighten.c:19:
../include/asm-generic/mmu_context.h:34:19: error: redefinition of
‘init_new_context’
34 | static inline int init_new_context(struct task_struct *tsk,
| ^~~~~~~~~~~~~~~~
In file included from ../arch/arm64/include/asm/efi.h:10,
from ../arch/arm64/xen/../../arm/xen/enlighten.c:19:
../arch/arm64/include/asm/mmu_context.h:180:1: note: previous
definition of ‘init_new_context’ was here
180 | init_new_context(struct task_struct *tsk, struct mm_struct *mm)
| ^~~~~~~~~~~~~~~~
make[3]: *** [../scripts/Makefile.build:283:
arch/arm64/xen/../../arm/xen/enlighten.o] Error 1
In file included from ../arch/arm64/include/asm/mmu_context.h:257,
from ../include/linux/mmu_context.h:5,
from ../kernel/sched/sched.h:54,
from ../kernel/sched/core.c:13:
../include/asm-generic/mmu_context.h:34:19: error: redefinition of
‘init_new_context’
34 | static inline int init_new_context(struct task_struct *tsk,
| ^~~~~~~~~~~~~~~~
In file included from ../include/linux/mmu_context.h:5,
from ../kernel/sched/sched.h:54,
from ../kernel/sched/core.c:13:
../arch/arm64/include/asm/mmu_context.h:180:1: note: previous
definition of ‘init_new_context’ was here
180 | init_new_context(struct task_struct *tsk, struct mm_struct *mm)
| ^~~~~~~~~~~~~~~~
make[3]: *** [../scripts/Makefile.build:283: kernel/sched/core.o] Error 1
Reported-by: Naresh Kamboju <naresh.kamboju@linaro.org>
full build log link,
https://gitlab.com/Linaro/lkft/mirrors/next/linux-next/-/jobs/813497297
--
Linaro LKFT
https://lkft.linaro.org
^ permalink raw reply [flat|nested] 50+ messages in thread
* Re: [PATCH v2 05/23] arm64: use asm-generic/mmu_context.h for no-op implementations
2020-10-27 9:59 ` Naresh Kamboju
@ 2020-10-27 15:08 ` Arnd Bergmann
0 siblings, 0 replies; 50+ messages in thread
From: Arnd Bergmann @ 2020-10-27 15:08 UTC (permalink / raw)
To: Naresh Kamboju
Cc: Nicholas Piggin, Catalin Marinas, linux-arch, Linux ARM,
open list, linux-mm, Will Deacon, lkft-triage
On Tue, Oct 27, 2020 at 10:59 AM Naresh Kamboju
<naresh.kamboju@linaro.org> wrote:
> On Wed, 26 Aug 2020 at 21:50, Nicholas Piggin <npiggin@gmail.com> wrote:
>
> Reported-by: Naresh Kamboju <naresh.kamboju@linaro.org>
>
> full build log link,
> https://gitlab.com/Linaro/lkft/mirrors/next/linux-next/-/jobs/813497297
Thanks for the report. I added a one-line fix into the original commit,
as it was my mistake during rebasing: Nick's version was fine, but
48118151d8cc ("arm64: mm: Pin down ASIDs for sharing mm with devices")
turned a macro into an inline function, which makde it no
longer override the generic version.
Arnd
^ permalink raw reply [flat|nested] 50+ messages in thread
end of thread, other threads:[~2020-10-27 15:09 UTC | newest]
Thread overview: 50+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-08-26 14:52 [PATCH v2 00/23] Use asm-generic for mmu_context no-op functions Nicholas Piggin
2020-08-26 14:52 ` [PATCH v2 01/23] asm-generic: add generic MMU versions of mmu context functions Nicholas Piggin
2020-08-26 18:13 ` kernel test robot
2020-09-01 6:49 ` Mike Rapoport
2020-09-01 7:14 ` Nicholas Piggin
2020-08-26 14:52 ` [PATCH v2 02/23] alpha: use asm-generic/mmu_context.h for no-op implementations Nicholas Piggin
2020-08-26 14:52 ` [PATCH v2 03/23] arc: " Nicholas Piggin
2020-08-26 14:52 ` [PATCH v2 04/23] arm: " Nicholas Piggin
2020-08-26 14:52 ` [PATCH v2 05/23] arm64: " Nicholas Piggin
2020-08-26 15:25 ` Catalin Marinas
2020-08-26 16:20 ` Nicholas Piggin
2020-10-27 9:59 ` Naresh Kamboju
2020-10-27 15:08 ` Arnd Bergmann
2020-08-26 18:42 ` kernel test robot
2020-08-26 18:57 ` kernel test robot
2020-08-26 23:55 ` kernel test robot
2020-08-26 14:52 ` [PATCH v2 06/23] csky: " Nicholas Piggin
2020-08-26 14:52 ` [PATCH v2 07/23] hexagon: " Nicholas Piggin
2020-08-26 14:52 ` [PATCH v2 08/23] ia64: " Nicholas Piggin
2020-08-26 14:52 ` [PATCH v2 09/23] m68k: " Nicholas Piggin
2020-08-27 9:33 ` Geert Uytterhoeven
2020-09-01 6:23 ` Nicholas Piggin
2020-09-01 7:03 ` Geert Uytterhoeven
2020-09-01 7:50 ` Nicholas Piggin
2020-08-26 14:52 ` [PATCH v2 10/23] microblaze: " Nicholas Piggin
2020-08-31 14:15 ` Michal Simek
2020-09-01 6:15 ` Nicholas Piggin
2020-09-01 6:41 ` Michal Simek
2020-09-01 7:09 ` Nicholas Piggin
2020-08-26 14:52 ` [PATCH v2 11/23] mips: " Nicholas Piggin
2020-08-26 14:52 ` [PATCH v2 12/23] nds32: " Nicholas Piggin
2020-08-28 10:09 ` Greentime Hu
2020-08-26 14:52 ` [PATCH v2 13/23] nios2: " Nicholas Piggin
2020-08-26 14:52 ` [PATCH v2 14/23] openrisc: " Nicholas Piggin
2020-08-26 14:52 ` [PATCH v2 15/23] parisc: " Nicholas Piggin
2020-08-29 9:09 ` Helge Deller
2020-08-26 14:52 ` [PATCH v2 16/23] powerpc: " Nicholas Piggin
2020-09-01 7:30 ` Michael Ellerman
2020-08-26 14:52 ` [PATCH v2 17/23] riscv: " Nicholas Piggin
2020-08-26 16:42 ` Pekka Enberg
2020-08-26 14:52 ` [PATCH v2 18/23] s390: " Nicholas Piggin
2020-08-26 14:52 ` [PATCH v2 19/23] sh: " Nicholas Piggin
2020-08-26 14:52 ` [PATCH v2 20/23] sparc: " Nicholas Piggin
2020-08-26 14:52 ` [PATCH v2 21/23] um: " Nicholas Piggin
2020-08-26 14:52 ` [PATCH v2 22/23] x86: " Nicholas Piggin
2020-08-26 14:52 ` [PATCH v2 23/23] xtensa: " Nicholas Piggin
2020-08-26 20:12 ` [PATCH v2 00/23] Use asm-generic for mmu_context no-op functions Arnd Bergmann
2020-08-30 10:18 ` Mike Rapoport
2020-09-01 6:17 ` Nicholas Piggin
2020-09-01 6:54 ` Mike Rapoport
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).