Re: [RFC PATCH v2] tinification: Introduce CONFIG_SRCU to make SRCU optional

From: Pranith Kumar
Date: Thu Dec 04 2014 - 15:27:56 EST


(resending, forgot CC's)

On Thu, Dec 4, 2014 at 11:13 AM, Josh Triplett <josh@xxxxxxxxxxxxxxxx> wrote:
>>
>> The current tinyconfig on x86 enables SRCU by default since x86 enables
>> PERF_EVENTS which in-turn require SRCU support. If we disable
>> PERF_EVENTS, we can disable compiling SRCU for tiny configs on x86 systems.
>
> To the best of my knowledge, "select" still doesn't recursively enable
> things that the selected symbol selects, so I think you need to "select
> SRCU" from X86, right next to the "select PERF_EVENTS".

Doesn't this prevent not selecting SRCU on x86 systems?

I think a warning will be generated during make if a dependent config
is not enabled.

>
> Also, can you try your patch on top of the current patch series to
> compile without perf (tiny/disable-perf), and see if you can
> successfully compile without SRCU on x86?

This branch had a small config error which was compiling perf related
code unconditionally.

warning: (HW_BREAKPOINTS) selects HAVE_HW_BREAKPOINT which has unmet
direct dependencies (PERF_EVENTS)

With the following patch applied on top of it I was able to compile my patch.

diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 10c51ff..0ecc069 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -588,6 +588,7 @@ config HW_BREAKPOINTS
default y
select HAVE_HW_BREAKPOINT
select HAVE_MIXED_BREAKPOINTS_REGS
+ depends on PERF_EVENTS
---help---
Enable support for x86 hardware breakpoints for debuggers
and perf. This will implicitly enable perf-events.


>
>> I tested this using randconfig and building about 15 kernels. This is definitely
>> not complete and could use more testing. Sticking it in next might help in that
>> regards.
>>
>> Comments and suggestions are welcome. Please let me know if I should split up
>> this patch.
>
> I don't think this needs splitting; it's a very small and obvious patch
> combined with a few selects.
>
> The code looks good to me. Assuming it compiles on x86, with tinyconfig
> and with allyesconfig minus SRCU (and whatever requires it), this seems

For allyesconfig minus SRCU(using tiny/disable-perf) I needed the
following patch to get it to build

diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 10c51ff..0ecc069 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -588,6 +588,7 @@ config HW_BREAKPOINTS
default y
select HAVE_HW_BREAKPOINT
select HAVE_MIXED_BREAKPOINTS_REGS
+ depends on PERF_EVENTS
---help---
Enable support for x86 hardware breakpoints for debuggers
and perf. This will implicitly enable perf-events.
diff --git a/fs/Kconfig.binfmt b/fs/Kconfig.binfmt
index 370b24c..2669ddf 100644
--- a/fs/Kconfig.binfmt
+++ b/fs/Kconfig.binfmt
@@ -182,6 +182,7 @@ config BINFMT_MISC
config COREDUMP
bool "Enable core dump support" if EXPERT
default y
+ depends on PERF_EVENTS
help
This option enables support for performing core dumps. You almost
certainly want to say Y here. Not necessary on systems that never
diff --git a/kernel/trace/Kconfig b/kernel/trace/Kconfig
index 8639819..b008c597 100644
--- a/kernel/trace/Kconfig
+++ b/kernel/trace/Kconfig
@@ -125,6 +125,7 @@ config TRACING_SUPPORT
# irqflags tracing for your architecture.
depends on TRACE_IRQFLAGS_SUPPORT || PPC32
depends on STACKTRACE_SUPPORT
+ depends on PERF_EVENTS
default y

if TRACING_SUPPORT

--

If the above two patches are good, then may be you should add them to
the tiny/disable-perf branch?

I will submit SRCU patch on top of rcu/dev so that Paul can pick it up
in his tree.

Thanks!
--
Pranith
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/