Re: [PATCH RFC tip/core/rcu] Make SRCU be once again optional

From: Paul E. McKenney
Date: Fri Apr 28 2017 - 20:10:55 EST


On Fri, Apr 28, 2017 at 05:51:15PM -0400, Nicolas Pitre wrote:
> On Fri, 28 Apr 2017, Paul E. McKenney wrote:
>
> > Hello, Nicolas!
> >
> > Saw the TTY write up LWN and figured I should send this your way.
> > It should be worth about 2K compared to current -next, which gave
> > up the 2K compared to v4.10. So really getting things back to where
> > they were.
> >
> > My current plan is to push this into v4.13.
>
> Excellent!
>
> If every maintainer finds a way to (optionally) reduce the size of the
> code they maintain by 2K then we'll get a much smaller kernel pretty
> soon.

I would feel better if it wasn't me who had added the 2K, but then
again, I do look forward to seeing a negative-sized kernel! ;-)

> > ------------------------------------------------------------------------
> >
> > commit e01ef0529ed548c1b30206058c2b5eecbbc07998
> > Author: Paul E. McKenney <paulmck@xxxxxxxxxxxxxxxxxx>
> > Date: Fri Apr 28 13:53:04 2017 -0700
> >
> > srcu: Make SRCU be once again optional
> >
> > Commit d160a727c40e ("srcu: Make SRCU be built by default") in response
> > to build errors, which were caused by code that included srcu.h
> > despite !SRCU. However, srcutiny.o is almost 2K of code, which is not
> > insignificant for those attempting to run the Linux kernel on IoT devices.
> > This commit therefore makes SRCU be once again optional, and adjusts
> > srcu.h to allow error-free inclusion in !SRCU kernel builds.
> >
> > Signed-off-by: Paul E. McKenney <paulmck@xxxxxxxxxxxxxxxxxx>
> > Cc: Nicolas Pitre <nicolas.pitre@xxxxxxxxxx>
>
> Acked-by: Nicolas Pitre <nico@xxxxxxxxxx>

Applied, thank you!

Thanx, Paul

> > diff --git a/include/linux/srcu.h b/include/linux/srcu.h
> > index 167ad8831aaf..c0143fe2e39d 100644
> > --- a/include/linux/srcu.h
> > +++ b/include/linux/srcu.h
> > @@ -62,7 +62,7 @@ int init_srcu_struct(struct srcu_struct *sp);
> > #include <linux/srcutree.h>
> > #elif defined(CONFIG_CLASSIC_SRCU)
> > #include <linux/srcuclassic.h>
> > -#else
> > +#elif defined(CONFIG_SRCU)
> > #error "Unknown SRCU implementation specified to kernel configuration"
> > #endif
> >
> > diff --git a/init/Kconfig b/init/Kconfig
> > index 42a346b0df43..fe72c12e06a5 100644
> > --- a/init/Kconfig
> > +++ b/init/Kconfig
> > @@ -521,7 +521,6 @@ config RCU_EXPERT
> >
> > config SRCU
> > bool
> > - default y
> > help
> > This option selects the sleepable version of RCU. This version
> > permits arbitrary sleeping or blocking within RCU read-side critical
> >
> >
>