All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mike Rapoport <rppt@kernel.org>
To: Nicholas Piggin <npiggin@gmail.com>
Cc: linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-mm@kvack.org, Arnd Bergmann <arnd@arndb.de>
Subject: Re: [PATCH v2 01/23] asm-generic: add generic MMU versions of mmu context functions
Date: Tue, 1 Sep 2020 09:49:42 +0300	[thread overview]
Message-ID: <20200901064942.GD432455@kernel.org> (raw)
In-Reply-To: <20200826145249.745432-2-npiggin@gmail.com>

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.

  parent reply	other threads:[~2020-09-01  6:49 UTC|newest]

Thread overview: 71+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
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-08-26 18:13     ` kernel test robot
2020-09-01  6:49   ` Mike Rapoport [this message]
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   ` Nicholas Piggin
2020-08-26 14:52 ` [PATCH v2 04/23] arm: " Nicholas Piggin
2020-08-26 14:52   ` Nicholas Piggin
2020-08-26 14:52 ` [PATCH v2 05/23] arm64: " Nicholas Piggin
2020-08-26 14:52   ` Nicholas Piggin
2020-08-26 15:25   ` Catalin Marinas
2020-08-26 15:25     ` Catalin Marinas
2020-08-26 16:20     ` Nicholas Piggin
2020-08-26 16:20       ` Nicholas Piggin
2020-10-27  9:59       ` Naresh Kamboju
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:42     ` kernel test robot
2020-08-26 18:42     ` kernel test robot
2020-08-26 18:57   ` kernel test robot
2020-08-26 18:57     ` kernel test robot
2020-08-26 18:57     ` kernel test robot
2020-08-26 23:55   ` kernel test robot
2020-08-26 23:55     ` 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   ` 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   ` [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-08-26 14:52   ` Nicholas Piggin
2020-09-01  7:30   ` Michael Ellerman
2020-09-01  7:30     ` Michael Ellerman
2020-08-26 14:52 ` [PATCH v2 17/23] riscv: " Nicholas Piggin
2020-08-26 14:52   ` Nicholas Piggin
2020-08-26 16:42   ` Pekka Enberg
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   ` Nicholas Piggin
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 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

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=20200901064942.GD432455@kernel.org \
    --to=rppt@kernel.org \
    --cc=arnd@arndb.de \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=npiggin@gmail.com \
    /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.