2012-11-29 09:07:01

by Li Zhong

[permalink] [raw]
Subject: Re: [PATCH] context_tracking: New context tracking susbsystem

On Tue, 2012-11-27 at 19:33 +0100, Frederic Weisbecker wrote:
[....]
> -
> - WARN_ON_ONCE(!current->mm);
> -
> - local_irq_save(flags);
> - rdtp = &__get_cpu_var(rcu_dynticks);
> - if (!rdtp->ignore_user_qs && !rdtp->in_user) {
> - rdtp->in_user = true;
> - rcu_eqs_enter(true);
> - }

It seems to me that ignore_user_qs and in_user defined in struct
rcu_dynticks are no longer needed?

If so, then maybe we could remove them, code below:

==========
diff --git a/kernel/rcutree.c b/kernel/rcutree.c
index e441b77..b8fae5d 100644
--- a/kernel/rcutree.c
+++ b/kernel/rcutree.c
@@ -2719,9 +2719,6 @@ rcu_boot_init_percpu_data(int cpu, struct rcu_state *rsp)
rdp->dynticks = &per_cpu(rcu_dynticks, cpu);
WARN_ON_ONCE(rdp->dynticks->dynticks_nesting != DYNTICK_TASK_EXIT_IDLE);
WARN_ON_ONCE(atomic_read(&rdp->dynticks->dynticks) != 1);
-#ifdef CONFIG_RCU_USER_QS
- WARN_ON_ONCE(rdp->dynticks->in_user);
-#endif
rdp->cpu = cpu;
rdp->rsp = rsp;
rcu_boot_init_nocb_percpu_data(rdp);
diff --git a/kernel/rcutree.h b/kernel/rcutree.h
index 4b69291..6f21f2e 100644
--- a/kernel/rcutree.h
+++ b/kernel/rcutree.h
@@ -102,10 +102,6 @@ struct rcu_dynticks {
/* idle-period nonlazy_posted snapshot. */
int tick_nohz_enabled_snap; /* Previously seen value from sysfs. */
#endif /* #ifdef CONFIG_RCU_FAST_NO_HZ */
-#ifdef CONFIG_RCU_USER_QS
- bool ignore_user_qs; /* Treat userspace as extended QS or not */
- bool in_user; /* Is the CPU in userland from RCU POV? */
-#endif
};

/* RCU's kthread states for tracing. */


2012-11-29 10:30:22

by Frederic Weisbecker

[permalink] [raw]
Subject: Re: [PATCH] context_tracking: New context tracking susbsystem

2012/11/29 Li Zhong <[email protected]>:
> On Tue, 2012-11-27 at 19:33 +0100, Frederic Weisbecker wrote:
> [....]
>> -
>> - WARN_ON_ONCE(!current->mm);
>> -
>> - local_irq_save(flags);
>> - rdtp = &__get_cpu_var(rcu_dynticks);
>> - if (!rdtp->ignore_user_qs && !rdtp->in_user) {
>> - rdtp->in_user = true;
>> - rcu_eqs_enter(true);
>> - }
>
> It seems to me that ignore_user_qs and in_user defined in struct
> rcu_dynticks are no longer needed?
>
> If so, then maybe we could remove them, code below:
>
> ==========
> diff --git a/kernel/rcutree.c b/kernel/rcutree.c
> index e441b77..b8fae5d 100644
> --- a/kernel/rcutree.c
> +++ b/kernel/rcutree.c
> @@ -2719,9 +2719,6 @@ rcu_boot_init_percpu_data(int cpu, struct rcu_state *rsp)
> rdp->dynticks = &per_cpu(rcu_dynticks, cpu);
> WARN_ON_ONCE(rdp->dynticks->dynticks_nesting != DYNTICK_TASK_EXIT_IDLE);
> WARN_ON_ONCE(atomic_read(&rdp->dynticks->dynticks) != 1);
> -#ifdef CONFIG_RCU_USER_QS
> - WARN_ON_ONCE(rdp->dynticks->in_user);
> -#endif
> rdp->cpu = cpu;
> rdp->rsp = rsp;
> rcu_boot_init_nocb_percpu_data(rdp);
> diff --git a/kernel/rcutree.h b/kernel/rcutree.h
> index 4b69291..6f21f2e 100644
> --- a/kernel/rcutree.h
> +++ b/kernel/rcutree.h
> @@ -102,10 +102,6 @@ struct rcu_dynticks {
> /* idle-period nonlazy_posted snapshot. */
> int tick_nohz_enabled_snap; /* Previously seen value from sysfs. */
> #endif /* #ifdef CONFIG_RCU_FAST_NO_HZ */
> -#ifdef CONFIG_RCU_USER_QS
> - bool ignore_user_qs; /* Treat userspace as extended QS or not */
> - bool in_user; /* Is the CPU in userland from RCU POV? */
> -#endif
> };
>
> /* RCU's kthread states for tracing. */
>
>

Good point. Paul, do you prefer to fold these changes into my patch or
do we add a new one? In any case Li we need your Signed-off-by tag.

Thanks.

2012-11-29 15:06:48

by Paul E. McKenney

[permalink] [raw]
Subject: Re: [PATCH] context_tracking: New context tracking susbsystem

On Thu, Nov 29, 2012 at 11:30:19AM +0100, Frederic Weisbecker wrote:
> 2012/11/29 Li Zhong <[email protected]>:
> > On Tue, 2012-11-27 at 19:33 +0100, Frederic Weisbecker wrote:
> > [....]
> >> -
> >> - WARN_ON_ONCE(!current->mm);
> >> -
> >> - local_irq_save(flags);
> >> - rdtp = &__get_cpu_var(rcu_dynticks);
> >> - if (!rdtp->ignore_user_qs && !rdtp->in_user) {
> >> - rdtp->in_user = true;
> >> - rcu_eqs_enter(true);
> >> - }
> >
> > It seems to me that ignore_user_qs and in_user defined in struct
> > rcu_dynticks are no longer needed?
> >
> > If so, then maybe we could remove them, code below:
> >
> > ==========
> > diff --git a/kernel/rcutree.c b/kernel/rcutree.c
> > index e441b77..b8fae5d 100644
> > --- a/kernel/rcutree.c
> > +++ b/kernel/rcutree.c
> > @@ -2719,9 +2719,6 @@ rcu_boot_init_percpu_data(int cpu, struct rcu_state *rsp)
> > rdp->dynticks = &per_cpu(rcu_dynticks, cpu);
> > WARN_ON_ONCE(rdp->dynticks->dynticks_nesting != DYNTICK_TASK_EXIT_IDLE);
> > WARN_ON_ONCE(atomic_read(&rdp->dynticks->dynticks) != 1);
> > -#ifdef CONFIG_RCU_USER_QS
> > - WARN_ON_ONCE(rdp->dynticks->in_user);
> > -#endif
> > rdp->cpu = cpu;
> > rdp->rsp = rsp;
> > rcu_boot_init_nocb_percpu_data(rdp);
> > diff --git a/kernel/rcutree.h b/kernel/rcutree.h
> > index 4b69291..6f21f2e 100644
> > --- a/kernel/rcutree.h
> > +++ b/kernel/rcutree.h
> > @@ -102,10 +102,6 @@ struct rcu_dynticks {
> > /* idle-period nonlazy_posted snapshot. */
> > int tick_nohz_enabled_snap; /* Previously seen value from sysfs. */
> > #endif /* #ifdef CONFIG_RCU_FAST_NO_HZ */
> > -#ifdef CONFIG_RCU_USER_QS
> > - bool ignore_user_qs; /* Treat userspace as extended QS or not */
> > - bool in_user; /* Is the CPU in userland from RCU POV? */
> > -#endif
> > };
> >
> > /* RCU's kthread states for tracing. */
> >
> >
>
> Good point. Paul, do you prefer to fold these changes into my patch or
> do we add a new one? In any case Li we need your Signed-off-by tag.

A separate patch works fine here because there should be no complaints
from compilers or tests about these. Zhong, please do send with your
Signed-off-by, and I will queue them.

Thanx, Paul

2012-11-30 06:19:37

by Li Zhong

[permalink] [raw]
Subject: [PATCH rcu] Remove unused code originally used for context tracking

As new context tracking subsystem added, it seems ignore_user_qs and
in_user defined in struct rcu_dynticks are no longer needed, so remove
them.

Signed-off-by: Li Zhong <[email protected]>
---
kernel/rcutree.c | 3 ---
kernel/rcutree.h | 4 ----
2 files changed, 7 deletions(-)

diff --git a/kernel/rcutree.c b/kernel/rcutree.c
index e441b77..b8fae5d 100644
--- a/kernel/rcutree.c
+++ b/kernel/rcutree.c
@@ -2719,9 +2719,6 @@ rcu_boot_init_percpu_data(int cpu, struct rcu_state *rsp)
rdp->dynticks = &per_cpu(rcu_dynticks, cpu);
WARN_ON_ONCE(rdp->dynticks->dynticks_nesting != DYNTICK_TASK_EXIT_IDLE);
WARN_ON_ONCE(atomic_read(&rdp->dynticks->dynticks) != 1);
-#ifdef CONFIG_RCU_USER_QS
- WARN_ON_ONCE(rdp->dynticks->in_user);
-#endif
rdp->cpu = cpu;
rdp->rsp = rsp;
rcu_boot_init_nocb_percpu_data(rdp);
diff --git a/kernel/rcutree.h b/kernel/rcutree.h
index 4b69291..6f21f2e 100644
--- a/kernel/rcutree.h
+++ b/kernel/rcutree.h
@@ -102,10 +102,6 @@ struct rcu_dynticks {
/* idle-period nonlazy_posted snapshot. */
int tick_nohz_enabled_snap; /* Previously seen value from sysfs. */
#endif /* #ifdef CONFIG_RCU_FAST_NO_HZ */
-#ifdef CONFIG_RCU_USER_QS
- bool ignore_user_qs; /* Treat userspace as extended QS or not */
- bool in_user; /* Is the CPU in userland from RCU POV? */
-#endif
};

/* RCU's kthread states for tracing. */
--
1.7.11.4