From: Frederic Weisbecker <fweisbec@gmail.com>
To: riel@redhat.com
Cc: paulmck@linux.vnet.ibm.com, will.deacon@arm.com,
linux-kernel@vger.kernel.org, Catalin.Marinas@arm.com,
kvm@vger.kernel.org, mtosatti@redhat.com, borntraeger@de.ibm.com,
mingo@kernel.org, oleg@redhat.com, lcapitulino@redhat.com,
pbonzini@redhat.com
Subject: Re: [PATCH 1/6] rcu,nohz: add context_tracking_user_enter/exit wrapper functions
Date: Tue, 10 Feb 2015 16:28:35 +0100 [thread overview]
Message-ID: <20150210152832.GA21917@lerouge> (raw)
In-Reply-To: <1423579310-24555-2-git-send-email-riel@redhat.com>
On Tue, Feb 10, 2015 at 09:41:45AM -0500, riel@redhat.com wrote:
> From: Rik van Riel <riel@redhat.com>
>
> These wrapper functions allow architecture code (eg. ARM) to keep
> calling context_tracking_user_enter & context_tracking_user_exit
> the same way it always has, without error prone tricks like duplicate
> defines of argument values in assembly code.
>
> Signed-off-by: Rik van Riel <riel@redhat.com>
This patch alone doesn't make much sense. The changelog says it's about keeping
context_tracking_user_*() functions as wrappers but fails to explain to what they
wrap, why and what are the new context_tracking_enter/exit functions for.
Perhaps patches 1 and 2 should be merged together into something like:
context_tracking: Generalize context tracking APIs to support user and guest
Do that because we'll also track guest....etc And keep the old user context tracking APIs
for now to avoid painful enum parameter support in ARM assembly....
> ---
> include/linux/context_tracking.h | 2 ++
> kernel/context_tracking.c | 37 +++++++++++++++++++++++++------------
> 2 files changed, 27 insertions(+), 12 deletions(-)
>
> diff --git a/include/linux/context_tracking.h b/include/linux/context_tracking.h
> index 37b81bd51ec0..03b9c733eae7 100644
> --- a/include/linux/context_tracking.h
> +++ b/include/linux/context_tracking.h
> @@ -10,6 +10,8 @@
> #ifdef CONFIG_CONTEXT_TRACKING
> extern void context_tracking_cpu_set(int cpu);
>
> +extern void context_tracking_enter(void);
> +extern void context_tracking_exit(void);
> extern void context_tracking_user_enter(void);
> extern void context_tracking_user_exit(void);
> extern void __context_tracking_task_switch(struct task_struct *prev,
> diff --git a/kernel/context_tracking.c b/kernel/context_tracking.c
> index 937ecdfdf258..bbdc423936e6 100644
> --- a/kernel/context_tracking.c
> +++ b/kernel/context_tracking.c
> @@ -39,15 +39,15 @@ void context_tracking_cpu_set(int cpu)
> }
>
> /**
> - * context_tracking_user_enter - Inform the context tracking that the CPU is going to
> - * enter userspace mode.
> + * context_tracking_enter - Inform the context tracking that the CPU is going
> + * enter user or guest space mode.
> *
> * This function must be called right before we switch from the kernel
> - * to userspace, when it's guaranteed the remaining kernel instructions
> - * to execute won't use any RCU read side critical section because this
> - * function sets RCU in extended quiescent state.
> + * to user or guest space, when it's guaranteed the remaining kernel
> + * instructions to execute won't use any RCU read side critical section
> + * because this function sets RCU in extended quiescent state.
> */
> -void context_tracking_user_enter(void)
> +void context_tracking_enter(void)
> {
> unsigned long flags;
>
> @@ -105,20 +105,27 @@ void context_tracking_user_enter(void)
> }
> local_irq_restore(flags);
> }
> +NOKPROBE_SYMBOL(context_tracking_enter);
> +
> +void context_tracking_user_enter(void)
> +{
> + context_tracking_enter();
> +}
> NOKPROBE_SYMBOL(context_tracking_user_enter);
>
> /**
> - * context_tracking_user_exit - Inform the context tracking that the CPU is
> - * exiting userspace mode and entering the kernel.
> + * context_tracking_exit - Inform the context tracking that the CPU is
> + * exiting user or guest mode and entering the kernel.
> *
> - * This function must be called after we entered the kernel from userspace
> - * before any use of RCU read side critical section. This potentially include
> - * any high level kernel code like syscalls, exceptions, signal handling, etc...
> + * This function must be called after we entered the kernel from user or
> + * guest space before any use of RCU read side critical section. This
> + * potentially include any high level kernel code like syscalls, exceptions,
> + * signal handling, etc...
> *
> * This call supports re-entrancy. This way it can be called from any exception
> * handler without needing to know if we came from userspace or not.
> */
> -void context_tracking_user_exit(void)
> +void context_tracking_exit(void)
Comment changes are good, thanks!
> {
> unsigned long flags;
>
> @@ -143,6 +150,12 @@ void context_tracking_user_exit(void)
> }
> local_irq_restore(flags);
> }
> +NOKPROBE_SYMBOL(context_tracking_exit);
> +
> +void context_tracking_user_exit(void)
> +{
> + context_tracking_exit();
> +}
> NOKPROBE_SYMBOL(context_tracking_user_exit);
>
> /**
> --
> 1.9.3
>
next prev parent reply other threads:[~2015-02-10 15:28 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-02-10 14:41 [PATCH -v4 0/6] rcu,nohz,kvm: use RCU extended quiescent state when running KVM guest riel
2015-02-10 14:41 ` [PATCH 1/6] rcu,nohz: add context_tracking_user_enter/exit wrapper functions riel
2015-02-10 15:28 ` Frederic Weisbecker [this message]
2015-02-10 16:48 ` Rik van Riel
2015-02-10 17:25 ` Paul E. McKenney
2015-02-10 17:36 ` Frederic Weisbecker
2015-02-10 17:49 ` Paul E. McKenney
2015-02-10 14:41 ` [PATCH 2/6] rcu,nohz: add state parameter to context_tracking_enter/exit riel
2015-02-10 14:41 ` [PATCH 3/6] nohz: add stub context_tracking_is_enabled riel
2015-02-10 14:41 ` [PATCH 4/6] rcu,nohz: run vtime_user_enter/exit only when state == IN_USER riel
2015-02-10 14:41 ` [PATCH 5/6] nohz,kvm: export context_tracking_user_enter/exit riel
2015-02-10 14:41 ` [PATCH 6/6] kvm,rcu,nohz: use RCU extended quiescent state when running KVM guest riel
2015-02-10 19:59 ` Andy Lutomirski
2015-02-10 20:13 ` Rik van Riel
2015-02-10 20:14 ` Paul E. McKenney
2015-02-10 20:19 ` Andy Lutomirski
2015-02-10 20:42 ` Paul E. McKenney
2015-02-10 21:00 ` Andy Lutomirski
2015-02-10 21:17 ` Paul E. McKenney
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=20150210152832.GA21917@lerouge \
--to=fweisbec@gmail.com \
--cc=Catalin.Marinas@arm.com \
--cc=borntraeger@de.ibm.com \
--cc=kvm@vger.kernel.org \
--cc=lcapitulino@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=mtosatti@redhat.com \
--cc=oleg@redhat.com \
--cc=paulmck@linux.vnet.ibm.com \
--cc=pbonzini@redhat.com \
--cc=riel@redhat.com \
--cc=will.deacon@arm.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox