From: Nicholas Piggin <npiggin@gmail.com>
To: linux-arch@vger.kernel.org
Cc: Nicholas Piggin <npiggin@gmail.com>,
x86@kernel.org,
Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
Arnd Bergmann <arnd@arndb.de>,
Peter Zijlstra <peterz@infradead.org>,
linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org,
linux-mm@kvack.org, Anton Blanchard <anton@ozlabs.org>,
Remis Lima Baima <remis.developer@googlemail.com>
Subject: [RFC PATCH 1/7] asm-generic: add generic MMU versions of mmu context functions
Date: Fri, 10 Jul 2020 11:56:40 +1000 [thread overview]
Message-ID: <20200710015646.2020871-2-npiggin@gmail.com> (raw)
In-Reply-To: <20200710015646.2020871-1-npiggin@gmail.com>
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: Remis Lima Baima <remis.developer@googlemail.com>
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
---
arch/microblaze/include/asm/mmu_context.h | 2 +-
arch/sh/include/asm/mmu_context.h | 2 +-
include/asm-generic/mmu_context.h | 57 +++++++++++++++++------
include/asm-generic/nommu_context.h | 19 ++++++++
4 files changed, 64 insertions(+), 16 deletions(-)
create mode 100644 include/asm-generic/nommu_context.h
diff --git a/arch/microblaze/include/asm/mmu_context.h b/arch/microblaze/include/asm/mmu_context.h
index f74f9da07fdc..34004efb3def 100644
--- a/arch/microblaze/include/asm/mmu_context.h
+++ b/arch/microblaze/include/asm/mmu_context.h
@@ -2,5 +2,5 @@
#ifdef CONFIG_MMU
# include <asm/mmu_context_mm.h>
#else
-# include <asm-generic/mmu_context.h>
+# include <asm-generic/nommu_context.h>
#endif
diff --git a/arch/sh/include/asm/mmu_context.h b/arch/sh/include/asm/mmu_context.h
index 48e67d544d53..9470d17c71c2 100644
--- a/arch/sh/include/asm/mmu_context.h
+++ b/arch/sh/include/asm/mmu_context.h
@@ -134,7 +134,7 @@ static inline void switch_mm(struct mm_struct *prev,
#define set_TTB(pgd) do { } while (0)
#define get_TTB() (0)
-#include <asm-generic/mmu_context.h>
+#include <asm-generic/nommu_context.h>
#endif /* CONFIG_MMU */
diff --git a/include/asm-generic/mmu_context.h b/include/asm-generic/mmu_context.h
index 6be9106fb6fb..86cea80a50df 100644
--- a/include/asm-generic/mmu_context.h
+++ b/include/asm-generic/mmu_context.h
@@ -3,44 +3,73 @@
#define __ASM_GENERIC_MMU_CONTEXT_H
/*
- * Generic hooks for NOMMU architectures, which do not need to do
- * anything special here.
+ * Generic hooks to implement no-op functionality.
*/
-#include <asm-generic/mm_hooks.h>
-
struct task_struct;
struct mm_struct;
+/*
+ * enter_lazy_tlb - Called when "tsk" is about to enter lazy TLB mode.
+ *
+ * @mm: the currently active mm context which is becoming lazy
+ * @tsk: task which is entering lazy tlb
+ *
+ * tsk->mm will be NULL
+ */
+#ifndef enter_lazy_tlb
static inline void enter_lazy_tlb(struct mm_struct *mm,
struct task_struct *tsk)
{
}
+#endif
+/**
+ * init_new_context - Initialize context of a new mm_struct.
+ * @tsk: task struct for the mm
+ * @mm: the new mm struct
+ */
+#ifndef init_new_context
static inline int init_new_context(struct task_struct *tsk,
struct mm_struct *mm)
{
return 0;
}
+#endif
+/**
+ * destroy_context - Undo init_new_context when the mm is going away
+ * @mm: old mm struct
+ */
+#ifndef destroy_context
static inline void destroy_context(struct mm_struct *mm)
{
}
+#endif
-static inline void deactivate_mm(struct task_struct *task,
- struct mm_struct *mm)
-{
-}
-
-static inline void switch_mm(struct mm_struct *prev,
- struct mm_struct *next,
- struct task_struct *tsk)
+/**
+ * activate_mm - called after exec switches the current task to a new mm, to switch to it
+ * @prev_mm: previous mm of this task
+ * @next_mm: new mm
+ */
+#ifndef activate_mm
+static inline void activate_mm(struct mm_struct *prev_mm,
+ struct mm_struct *next_mm)
{
+ switch_mm(prev_mm, next_mm, current);
}
+#endif
-static inline void activate_mm(struct mm_struct *prev_mm,
- struct mm_struct *next_mm)
+/**
+ * dectivate_mm - called when an mm is released after exit or exec switches away from it
+ * @tsk: the task
+ * @mm: the old mm
+ */
+#ifndef deactivate_mm
+static inline void deactivate_mm(struct task_struct *tsk,
+ struct mm_struct *mm)
{
}
+#endif
#endif /* __ASM_GENERIC_MMU_CONTEXT_H */
diff --git a/include/asm-generic/nommu_context.h b/include/asm-generic/nommu_context.h
new file mode 100644
index 000000000000..72b8d8b1d81e
--- /dev/null
+++ b/include/asm-generic/nommu_context.h
@@ -0,0 +1,19 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __ASM_GENERIC_NOMMU_H
+#define __ASM_GENERIC_NOMMU_H
+
+/*
+ * Generic hooks for NOMMU architectures, which do not need to do
+ * anything special here.
+ */
+
+#include <asm-generic/mm_hooks.h>
+#include <asm-generic/mmu_context.h>
+
+static inline void switch_mm(struct mm_struct *prev,
+ struct mm_struct *next,
+ struct task_struct *tsk)
+{
+}
+
+#endif /* __ASM_GENERIC_NOMMU_H */
--
2.23.0
WARNING: multiple messages have this Message-ID (diff)
From: Nicholas Piggin <npiggin@gmail.com>
To: linux-arch@vger.kernel.org
Cc: Arnd Bergmann <arnd@arndb.de>,
Peter Zijlstra <peterz@infradead.org>,
x86@kernel.org, linux-kernel@vger.kernel.org,
Nicholas Piggin <npiggin@gmail.com>,
linux-mm@kvack.org,
Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
Remis Lima Baima <remis.developer@googlemail.com>,
linuxppc-dev@lists.ozlabs.org
Subject: [RFC PATCH 1/7] asm-generic: add generic MMU versions of mmu context functions
Date: Fri, 10 Jul 2020 11:56:40 +1000 [thread overview]
Message-ID: <20200710015646.2020871-2-npiggin@gmail.com> (raw)
In-Reply-To: <20200710015646.2020871-1-npiggin@gmail.com>
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: Remis Lima Baima <remis.developer@googlemail.com>
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
---
arch/microblaze/include/asm/mmu_context.h | 2 +-
arch/sh/include/asm/mmu_context.h | 2 +-
include/asm-generic/mmu_context.h | 57 +++++++++++++++++------
include/asm-generic/nommu_context.h | 19 ++++++++
4 files changed, 64 insertions(+), 16 deletions(-)
create mode 100644 include/asm-generic/nommu_context.h
diff --git a/arch/microblaze/include/asm/mmu_context.h b/arch/microblaze/include/asm/mmu_context.h
index f74f9da07fdc..34004efb3def 100644
--- a/arch/microblaze/include/asm/mmu_context.h
+++ b/arch/microblaze/include/asm/mmu_context.h
@@ -2,5 +2,5 @@
#ifdef CONFIG_MMU
# include <asm/mmu_context_mm.h>
#else
-# include <asm-generic/mmu_context.h>
+# include <asm-generic/nommu_context.h>
#endif
diff --git a/arch/sh/include/asm/mmu_context.h b/arch/sh/include/asm/mmu_context.h
index 48e67d544d53..9470d17c71c2 100644
--- a/arch/sh/include/asm/mmu_context.h
+++ b/arch/sh/include/asm/mmu_context.h
@@ -134,7 +134,7 @@ static inline void switch_mm(struct mm_struct *prev,
#define set_TTB(pgd) do { } while (0)
#define get_TTB() (0)
-#include <asm-generic/mmu_context.h>
+#include <asm-generic/nommu_context.h>
#endif /* CONFIG_MMU */
diff --git a/include/asm-generic/mmu_context.h b/include/asm-generic/mmu_context.h
index 6be9106fb6fb..86cea80a50df 100644
--- a/include/asm-generic/mmu_context.h
+++ b/include/asm-generic/mmu_context.h
@@ -3,44 +3,73 @@
#define __ASM_GENERIC_MMU_CONTEXT_H
/*
- * Generic hooks for NOMMU architectures, which do not need to do
- * anything special here.
+ * Generic hooks to implement no-op functionality.
*/
-#include <asm-generic/mm_hooks.h>
-
struct task_struct;
struct mm_struct;
+/*
+ * enter_lazy_tlb - Called when "tsk" is about to enter lazy TLB mode.
+ *
+ * @mm: the currently active mm context which is becoming lazy
+ * @tsk: task which is entering lazy tlb
+ *
+ * tsk->mm will be NULL
+ */
+#ifndef enter_lazy_tlb
static inline void enter_lazy_tlb(struct mm_struct *mm,
struct task_struct *tsk)
{
}
+#endif
+/**
+ * init_new_context - Initialize context of a new mm_struct.
+ * @tsk: task struct for the mm
+ * @mm: the new mm struct
+ */
+#ifndef init_new_context
static inline int init_new_context(struct task_struct *tsk,
struct mm_struct *mm)
{
return 0;
}
+#endif
+/**
+ * destroy_context - Undo init_new_context when the mm is going away
+ * @mm: old mm struct
+ */
+#ifndef destroy_context
static inline void destroy_context(struct mm_struct *mm)
{
}
+#endif
-static inline void deactivate_mm(struct task_struct *task,
- struct mm_struct *mm)
-{
-}
-
-static inline void switch_mm(struct mm_struct *prev,
- struct mm_struct *next,
- struct task_struct *tsk)
+/**
+ * activate_mm - called after exec switches the current task to a new mm, to switch to it
+ * @prev_mm: previous mm of this task
+ * @next_mm: new mm
+ */
+#ifndef activate_mm
+static inline void activate_mm(struct mm_struct *prev_mm,
+ struct mm_struct *next_mm)
{
+ switch_mm(prev_mm, next_mm, current);
}
+#endif
-static inline void activate_mm(struct mm_struct *prev_mm,
- struct mm_struct *next_mm)
+/**
+ * dectivate_mm - called when an mm is released after exit or exec switches away from it
+ * @tsk: the task
+ * @mm: the old mm
+ */
+#ifndef deactivate_mm
+static inline void deactivate_mm(struct task_struct *tsk,
+ struct mm_struct *mm)
{
}
+#endif
#endif /* __ASM_GENERIC_MMU_CONTEXT_H */
diff --git a/include/asm-generic/nommu_context.h b/include/asm-generic/nommu_context.h
new file mode 100644
index 000000000000..72b8d8b1d81e
--- /dev/null
+++ b/include/asm-generic/nommu_context.h
@@ -0,0 +1,19 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __ASM_GENERIC_NOMMU_H
+#define __ASM_GENERIC_NOMMU_H
+
+/*
+ * Generic hooks for NOMMU architectures, which do not need to do
+ * anything special here.
+ */
+
+#include <asm-generic/mm_hooks.h>
+#include <asm-generic/mmu_context.h>
+
+static inline void switch_mm(struct mm_struct *prev,
+ struct mm_struct *next,
+ struct task_struct *tsk)
+{
+}
+
+#endif /* __ASM_GENERIC_NOMMU_H */
--
2.23.0
next prev parent reply other threads:[~2020-07-10 1:56 UTC|newest]
Thread overview: 118+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-07-10 1:56 [RFC PATCH 0/7] mmu context cleanup, lazy tlb cleanup, Nicholas Piggin
2020-07-10 1:56 ` Nicholas Piggin
2020-07-10 1:56 ` Nicholas Piggin [this message]
2020-07-10 1:56 ` [RFC PATCH 1/7] asm-generic: add generic MMU versions of mmu context functions Nicholas Piggin
2020-07-10 1:56 ` [RFC PATCH 2/7] arch: use asm-generic mmu context for no-op implementations Nicholas Piggin
2020-07-10 1:56 ` Nicholas Piggin
2020-07-10 1:56 ` [RFC PATCH 3/7] mm: introduce exit_lazy_tlb Nicholas Piggin
2020-07-10 1:56 ` Nicholas Piggin
2020-07-10 1:56 ` [RFC PATCH 4/7] x86: use exit_lazy_tlb rather than membarrier_mm_sync_core_before_usermode Nicholas Piggin
2020-07-10 1:56 ` Nicholas Piggin
2020-07-10 9:42 ` Peter Zijlstra
2020-07-10 9:42 ` Peter Zijlstra
2020-07-10 14:02 ` Mathieu Desnoyers
2020-07-10 14:02 ` Mathieu Desnoyers
2020-07-10 17:04 ` Andy Lutomirski
2020-07-10 17:04 ` Andy Lutomirski
2020-07-13 4:45 ` Nicholas Piggin
2020-07-13 4:45 ` Nicholas Piggin
2020-07-13 13:47 ` Nicholas Piggin
2020-07-13 13:47 ` Nicholas Piggin
2020-07-13 14:13 ` Mathieu Desnoyers
2020-07-13 14:13 ` Mathieu Desnoyers
2020-07-13 15:48 ` Andy Lutomirski
2020-07-13 15:48 ` Andy Lutomirski
2020-07-13 16:37 ` Nicholas Piggin
2020-07-13 16:37 ` Nicholas Piggin
2020-07-16 4:15 ` Nicholas Piggin
2020-07-16 4:15 ` Nicholas Piggin
2020-07-16 4:42 ` Nicholas Piggin
2020-07-16 4:42 ` Nicholas Piggin
2020-07-16 15:46 ` Mathieu Desnoyers
2020-07-16 15:46 ` Mathieu Desnoyers
2020-07-16 16:03 ` Mathieu Desnoyers
2020-07-16 16:03 ` Mathieu Desnoyers
2020-07-16 18:58 ` Mathieu Desnoyers
2020-07-16 18:58 ` Mathieu Desnoyers
2020-07-16 21:24 ` Alan Stern
2020-07-16 21:24 ` Alan Stern
2020-07-17 13:39 ` Mathieu Desnoyers
2020-07-17 13:39 ` Mathieu Desnoyers
2020-07-17 14:51 ` Alan Stern
2020-07-17 14:51 ` Alan Stern
2020-07-17 15:39 ` Mathieu Desnoyers
2020-07-17 15:39 ` Mathieu Desnoyers
2020-07-17 16:11 ` Alan Stern
2020-07-17 16:11 ` Alan Stern
2020-07-17 16:22 ` Mathieu Desnoyers
2020-07-17 16:22 ` Mathieu Desnoyers
2020-07-17 17:44 ` Alan Stern
2020-07-17 17:44 ` Alan Stern
2020-07-17 17:52 ` Mathieu Desnoyers
2020-07-17 17:52 ` Mathieu Desnoyers
2020-07-17 0:00 ` Nicholas Piggin
2020-07-17 0:00 ` Nicholas Piggin
2020-07-16 5:18 ` Andy Lutomirski
2020-07-16 5:18 ` Andy Lutomirski
2020-07-16 6:06 ` Nicholas Piggin
2020-07-16 6:06 ` Nicholas Piggin
2020-07-16 8:50 ` Peter Zijlstra
2020-07-16 8:50 ` Peter Zijlstra
2020-07-16 10:03 ` Nicholas Piggin
2020-07-16 10:03 ` Nicholas Piggin
2020-07-16 11:00 ` peterz
2020-07-16 11:00 ` peterz
2020-07-16 15:34 ` Mathieu Desnoyers
2020-07-16 15:34 ` Mathieu Desnoyers
2020-07-16 23:26 ` Nicholas Piggin
2020-07-16 23:26 ` Nicholas Piggin
2020-07-17 13:42 ` Mathieu Desnoyers
2020-07-17 13:42 ` Mathieu Desnoyers
2020-07-20 3:03 ` Nicholas Piggin
2020-07-20 3:03 ` Nicholas Piggin
2020-07-20 16:46 ` Mathieu Desnoyers
2020-07-20 16:46 ` Mathieu Desnoyers
2020-07-21 10:04 ` Nicholas Piggin
2020-07-21 10:04 ` Nicholas Piggin
2020-07-21 13:11 ` Mathieu Desnoyers
2020-07-21 13:11 ` Mathieu Desnoyers
2020-07-21 14:30 ` Nicholas Piggin
2020-07-21 14:30 ` Nicholas Piggin
2020-07-21 15:06 ` peterz
2020-07-21 15:06 ` peterz
2020-07-21 15:15 ` Mathieu Desnoyers
2020-07-21 15:15 ` Mathieu Desnoyers
2020-07-21 15:19 ` Peter Zijlstra
2020-07-21 15:19 ` Peter Zijlstra
2020-07-21 15:22 ` Mathieu Desnoyers
2020-07-21 15:22 ` Mathieu Desnoyers
2020-07-10 1:56 ` [RFC PATCH 5/7] lazy tlb: introduce lazy mm refcount helper functions Nicholas Piggin
2020-07-10 1:56 ` Nicholas Piggin
2020-07-10 9:48 ` Peter Zijlstra
2020-07-10 9:48 ` Peter Zijlstra
2020-07-10 1:56 ` [RFC PATCH 6/7] lazy tlb: allow lazy tlb mm switching to be configurable Nicholas Piggin
2020-07-10 1:56 ` Nicholas Piggin
2020-07-10 1:56 ` [RFC PATCH 7/7] lazy tlb: shoot lazies, a non-refcounting lazy tlb option Nicholas Piggin
2020-07-10 1:56 ` Nicholas Piggin
2020-07-10 9:35 ` Peter Zijlstra
2020-07-10 9:35 ` Peter Zijlstra
2020-07-13 4:58 ` Nicholas Piggin
2020-07-13 4:58 ` Nicholas Piggin
2020-07-13 15:59 ` Andy Lutomirski
2020-07-13 15:59 ` Andy Lutomirski
2020-07-13 16:48 ` Nicholas Piggin
2020-07-13 16:48 ` Nicholas Piggin
2020-07-13 18:18 ` Andy Lutomirski
2020-07-13 18:18 ` Andy Lutomirski
2020-07-14 5:04 ` Nicholas Piggin
2020-07-14 5:04 ` Nicholas Piggin
2020-07-14 6:31 ` Nicholas Piggin
2020-07-14 6:31 ` Nicholas Piggin
2020-07-14 12:46 ` Andy Lutomirski
2020-07-14 12:46 ` Andy Lutomirski
2020-07-14 13:23 ` Peter Zijlstra
2020-07-14 13:23 ` Peter Zijlstra
2020-07-16 2:26 ` Nicholas Piggin
2020-07-16 2:26 ` Nicholas Piggin
2020-07-16 2:35 ` Nicholas Piggin
2020-07-16 2:35 ` Nicholas Piggin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200710015646.2020871-2-npiggin@gmail.com \
--to=npiggin@gmail.com \
--cc=anton@ozlabs.org \
--cc=arnd@arndb.de \
--cc=linux-arch@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=mathieu.desnoyers@efficios.com \
--cc=peterz@infradead.org \
--cc=remis.developer@googlemail.com \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.