diff for duplicates of <20171109175654.GK3624@linux.vnet.ibm.com> diff --git a/a/1.txt b/N1/1.txt index 1852f5e..0eb5bef 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -1,6 +1,6 @@ On Thu, Nov 09, 2017 at 03:17:28PM +0000, Ben Hutchings wrote: > On Mon, 2017-10-16 at 18:11 +0200, gregkh@linuxfoundation.org wrote: -> > 4.4-stable review patch. If anyone has any objections, please let me know. +> > 4.4-stable review patch.��If anyone has any objections, please let me know. > > > > ------------------ > > @@ -10,17 +10,17 @@ On Thu, Nov 09, 2017 at 03:17:28PM +0000, Ben Hutchings wrote: > > > > A number of architecture invoke rcu_irq_enter() on exception entry in > > order to allow RCU read-side critical sections in the exception handler -> > when the exception is from an idle or nohz_full CPU. This works, at -> > least unless the exception happens in an NMI handler. In that case, +> > when the exception is from an idle or nohz_full CPU.��This works, at +> > least unless the exception happens in an NMI handler.��In that case, > > rcu_nmi_enter() would already have exited the extended quiescent state, > > which would mean that rcu_irq_enter() would (incorrectly) cause RCU -> > to think that it is again in an extended quiescent state. This will +> > to think that it is again in an extended quiescent state.��This will > > in turn result in lockdep splats in response to later RCU read-side > > critical sections. > > > > This commit therefore causes rcu_irq_enter() and rcu_irq_exit() to > > take no action if there is an rcu_nmi_enter() in effect, thus avoiding -> > the unscheduled return to RCU quiescent state. This in turn should +> > the unscheduled return to RCU quiescent state.��This in turn should > > make the kernel safe for on-demand RCU voyeurism. > > > > Link: http://lkml.kernel.org/r/20170922211022.GA18084@linux.vnet.ibm.com @@ -32,15 +32,15 @@ On Thu, Nov 09, 2017 at 03:17:28PM +0000, Ben Hutchings wrote: > > > Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org> > > > Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> > > --- -> > kernel/rcu/tree.c | 12 ++++++++++++ -> > 1 file changed, 12 insertions(+) +> > �kernel/rcu/tree.c |���12 ++++++++++++ +> > �1 file changed, 12 insertions(+) > > > > --- a/kernel/rcu/tree.c > > +++ b/kernel/rcu/tree.c > > @@ -759,6 +759,12 @@ void rcu_irq_exit(void) -> > -> > local_irq_save(flags); -> > rdtp = this_cpu_ptr(&rcu_dynticks); +> > � +> > � local_irq_save(flags); +> > � rdtp = this_cpu_ptr(&rcu_dynticks); > > + > > + /* Page faults can happen in NMI handlers, so check... */ > > + if (READ_ONCE(rdtp->dynticks_nmi_nesting)) @@ -56,13 +56,13 @@ On Thu, Nov 09, 2017 at 03:17:28PM +0000, Ben Hutchings wrote: > calling local_irq_save(), it's redundant to assert that IRQs are > disabled. > -> > oldval = rdtp->dynticks_nesting; -> > rdtp->dynticks_nesting--; -> > WARN_ON_ONCE(IS_ENABLED(CONFIG_RCU_EQS_DEBUG) && +> > � oldval = rdtp->dynticks_nesting; +> > � rdtp->dynticks_nesting--; +> > � WARN_ON_ONCE(IS_ENABLED(CONFIG_RCU_EQS_DEBUG) && > > @@ -887,6 +893,12 @@ void rcu_irq_enter(void) -> > -> > local_irq_save(flags); -> > rdtp = this_cpu_ptr(&rcu_dynticks); +> > � +> > � local_irq_save(flags); +> > � rdtp = this_cpu_ptr(&rcu_dynticks); > > + > > + /* Page faults can happen in NMI handlers, so check... */ > > + if (READ_ONCE(rdtp->dynticks_nmi_nesting)) diff --git a/a/content_digest b/N1/content_digest index c344b37..f4adbaa 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -12,7 +12,7 @@ "b\0" "On Thu, Nov 09, 2017 at 03:17:28PM +0000, Ben Hutchings wrote:\n" "> On Mon, 2017-10-16 at 18:11 +0200, gregkh@linuxfoundation.org wrote:\n" - "> > 4.4-stable review patch.\302\240\302\240If anyone has any objections, please let me know.\n" + "> > 4.4-stable review patch.\303\257\302\277\302\275\303\257\302\277\302\275If anyone has any objections, please let me know.\n" "> > \n" "> > ------------------\n" "> > \n" @@ -22,17 +22,17 @@ "> > \n" "> > A number of architecture invoke rcu_irq_enter() on exception entry in\n" "> > order to allow RCU read-side critical sections in the exception handler\n" - "> > when the exception is from an idle or nohz_full CPU.\302\240\302\240This works, at\n" - "> > least unless the exception happens in an NMI handler.\302\240\302\240In that case,\n" + "> > when the exception is from an idle or nohz_full CPU.\303\257\302\277\302\275\303\257\302\277\302\275This works, at\n" + "> > least unless the exception happens in an NMI handler.\303\257\302\277\302\275\303\257\302\277\302\275In that case,\n" "> > rcu_nmi_enter() would already have exited the extended quiescent state,\n" "> > which would mean that rcu_irq_enter() would (incorrectly) cause RCU\n" - "> > to think that it is again in an extended quiescent state.\302\240\302\240This will\n" + "> > to think that it is again in an extended quiescent state.\303\257\302\277\302\275\303\257\302\277\302\275This will\n" "> > in turn result in lockdep splats in response to later RCU read-side\n" "> > critical sections.\n" "> > \n" "> > This commit therefore causes rcu_irq_enter() and rcu_irq_exit() to\n" "> > take no action if there is an rcu_nmi_enter() in effect, thus avoiding\n" - "> > the unscheduled return to RCU quiescent state.\302\240\302\240This in turn should\n" + "> > the unscheduled return to RCU quiescent state.\303\257\302\277\302\275\303\257\302\277\302\275This in turn should\n" "> > make the kernel safe for on-demand RCU voyeurism.\n" "> > \n" "> > Link: http://lkml.kernel.org/r/20170922211022.GA18084@linux.vnet.ibm.com\n" @@ -44,15 +44,15 @@ "> > > Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>\n" "> > > Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>\n" "> > ---\n" - "> > \302\240kernel/rcu/tree.c |\302\240\302\240\302\24012 ++++++++++++\n" - "> > \302\2401 file changed, 12 insertions(+)\n" + "> > \303\257\302\277\302\275kernel/rcu/tree.c |\303\257\302\277\302\275\303\257\302\277\302\275\303\257\302\277\302\27512 ++++++++++++\n" + "> > \303\257\302\277\302\2751 file changed, 12 insertions(+)\n" "> > \n" "> > --- a/kernel/rcu/tree.c\n" "> > +++ b/kernel/rcu/tree.c\n" "> > @@ -759,6 +759,12 @@ void rcu_irq_exit(void)\n" - "> > \302\240\n" - "> > \302\240\tlocal_irq_save(flags);\n" - "> > \302\240\trdtp = this_cpu_ptr(&rcu_dynticks);\n" + "> > \303\257\302\277\302\275\n" + "> > \303\257\302\277\302\275\tlocal_irq_save(flags);\n" + "> > \303\257\302\277\302\275\trdtp = this_cpu_ptr(&rcu_dynticks);\n" "> > +\n" "> > +\t/* Page faults can happen in NMI handlers, so check... */\n" "> > +\tif (READ_ONCE(rdtp->dynticks_nmi_nesting))\n" @@ -68,13 +68,13 @@ "> calling local_irq_save(), it's redundant to assert that IRQs are\n" "> disabled.\n" "> \n" - "> > \302\240\toldval = rdtp->dynticks_nesting;\n" - "> > \302\240\trdtp->dynticks_nesting--;\n" - "> > \302\240\tWARN_ON_ONCE(IS_ENABLED(CONFIG_RCU_EQS_DEBUG) &&\n" + "> > \303\257\302\277\302\275\toldval = rdtp->dynticks_nesting;\n" + "> > \303\257\302\277\302\275\trdtp->dynticks_nesting--;\n" + "> > \303\257\302\277\302\275\tWARN_ON_ONCE(IS_ENABLED(CONFIG_RCU_EQS_DEBUG) &&\n" "> > @@ -887,6 +893,12 @@ void rcu_irq_enter(void)\n" - "> > \302\240\n" - "> > \302\240\tlocal_irq_save(flags);\n" - "> > \302\240\trdtp = this_cpu_ptr(&rcu_dynticks);\n" + "> > \303\257\302\277\302\275\n" + "> > \303\257\302\277\302\275\tlocal_irq_save(flags);\n" + "> > \303\257\302\277\302\275\trdtp = this_cpu_ptr(&rcu_dynticks);\n" "> > +\n" "> > +\t/* Page faults can happen in NMI handlers, so check... */\n" "> > +\tif (READ_ONCE(rdtp->dynticks_nmi_nesting))\n" @@ -89,4 +89,4 @@ "\n" "\t\t\t\t\t\t\tThanx, Paul" -8f8a83af76a38baabf382e7d24e6ff907b114d778ab7244b58b7402ce1eeb06a +8f1ed3c27167bfb1ccbf05c0634d2df970f1b6ddf34eb86f9cf34efc5f60fefd
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.