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@xxxxxxxx> >> Cc: linux-arch@xxxxxxxxxxxxxxx >> Signed-off-by: Nicholas Piggin <npiggin@xxxxxxxxx> >> --- >> 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