linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [RFC PATCH V5] GCOV: Add config to check the preqequisites situation
@ 2020-06-10  2:11 gengcixi
  2020-06-15  9:45 ` Peter Oberparleiter
  0 siblings, 1 reply; 2+ messages in thread
From: gengcixi @ 2020-06-10  2:11 UTC (permalink / raw)
  To: gregkh, jslaby, oberpar, linux-serial, linux-kernel
  Cc: orsonzhai, zhang.lyra, Cixi Geng

From: Cixi Geng <cixi.geng1@unisoc.com>

Introduce new configuration option GCOV_PROFILE_PREREQS that can be
used to check whether the prerequisites for enabling gcov profiling
for specific files and directories are met.

Only add SERIAL_GCOV for an example.

Signed-off-by: Cixi Geng <cixi.geng1@unisoc.com>
---
 drivers/tty/serial/Kconfig  |  8 ++++++++
 drivers/tty/serial/Makefile |  1 +
 kernel/gcov/Kconfig         | 15 +++++++++++++++
 3 files changed, 24 insertions(+)

diff --git a/drivers/tty/serial/Kconfig b/drivers/tty/serial/Kconfig
index adf9e80e7dc9..3d7e811d90dc 100644
--- a/drivers/tty/serial/Kconfig
+++ b/drivers/tty/serial/Kconfig
@@ -1566,3 +1566,11 @@ endmenu
 
 config SERIAL_MCTRL_GPIO
 	tristate
+
+config SERIAL_GCOV
+	bool "Enable profile gcov for serial directory"
+	depends on GCOV_PROFILE_PREREQS
+	default y if GCOV_PROFILE_PREREQS
+	help
+	  The SERIAL_GCOV will add Gcov profiling flags when kernel compiles.
+	  Say 'Y' here if you want the gcov data for the serial directory,
diff --git a/drivers/tty/serial/Makefile b/drivers/tty/serial/Makefile
index d056ee6cca33..17272733db95 100644
--- a/drivers/tty/serial/Makefile
+++ b/drivers/tty/serial/Makefile
@@ -3,6 +3,7 @@
 # Makefile for the kernel serial device drivers.
 #
 
+GCOV_PROFILE := $(CONFIG_SERIAL_GCOV)
 obj-$(CONFIG_SERIAL_CORE) += serial_core.o
 
 obj-$(CONFIG_SERIAL_EARLYCON) += earlycon.o
diff --git a/kernel/gcov/Kconfig b/kernel/gcov/Kconfig
index 3941a9c48f83..35b839879553 100644
--- a/kernel/gcov/Kconfig
+++ b/kernel/gcov/Kconfig
@@ -51,6 +51,21 @@ config GCOV_PROFILE_ALL
 	larger and run slower. Also be sure to exclude files from profiling
 	which are not linked to the kernel image to prevent linker errors.
 
+config GCOV_PROFILE_PREREQS
+	bool "Profile Kernel for prereqs"
+	depends on !COMPILE_TEST
+	depends on GCOV_KERNEL
+	depends on !COMPILE_PROFILE_ALL
+	default y if GCOV_KERNEL && !COMPILE_TEST
+	help
+	  This options activates profiling for the specified kernel modules.
+
+	  When some modules need Gcov data, enable this config, then configure
+	  with gcov on the corresponding modules,The directories or files of
+	  these modules will be added profiling flags after kernel compile.
+
+	  If unsure, say N.
+
 choice
 	prompt "Specify GCOV format"
 	depends on GCOV_KERNEL
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [RFC PATCH V5] GCOV: Add config to check the preqequisites situation
  2020-06-10  2:11 [RFC PATCH V5] GCOV: Add config to check the preqequisites situation gengcixi
@ 2020-06-15  9:45 ` Peter Oberparleiter
  0 siblings, 0 replies; 2+ messages in thread
From: Peter Oberparleiter @ 2020-06-15  9:45 UTC (permalink / raw)
  To: gengcixi, gregkh, jslaby, linux-serial, linux-kernel
  Cc: orsonzhai, zhang.lyra, Cixi Geng

On 10.06.2020 04:11, gengcixi@gmail.com wrote:
> From: Cixi Geng <cixi.geng1@unisoc.com>
> 
> Introduce new configuration option GCOV_PROFILE_PREREQS that can be
> used to check whether the prerequisites for enabling gcov profiling
> for specific files and directories are met.
> 
> Only add SERIAL_GCOV for an example.
> 
> Signed-off-by: Cixi Geng <cixi.geng1@unisoc.com>
> ---
>  drivers/tty/serial/Kconfig  |  8 ++++++++
>  drivers/tty/serial/Makefile |  1 +
>  kernel/gcov/Kconfig         | 15 +++++++++++++++
>  3 files changed, 24 insertions(+)
> 
> diff --git a/drivers/tty/serial/Kconfig b/drivers/tty/serial/Kconfig
> index adf9e80e7dc9..3d7e811d90dc 100644
> --- a/drivers/tty/serial/Kconfig
> +++ b/drivers/tty/serial/Kconfig
> @@ -1566,3 +1566,11 @@ endmenu
>  
>  config SERIAL_MCTRL_GPIO
>  	tristate
> +
> +config SERIAL_GCOV
> +	bool "Enable profile gcov for serial directory"
> +	depends on GCOV_PROFILE_PREREQS
> +	default y if GCOV_PROFILE_PREREQS

I think the choice to enable each specific profiling symbol should not
be automated based on the PREREQS symbol. This should be a purely manual
setting with a depends relation on the PREREQS.

The logic should be:
- if the requirements are met
- then provide a way for users to manually enable each specific gcov
  profiling site

Otherwise you would be duplicating the meaning of CONFIG_GCOV_PROFILE_ALL.

> +	help
> +	  The SERIAL_GCOV will add Gcov profiling flags when kernel compiles.
> +	  Say 'Y' here if you want the gcov data for the serial directory,
> diff --git a/drivers/tty/serial/Makefile b/drivers/tty/serial/Makefile
> index d056ee6cca33..17272733db95 100644
> --- a/drivers/tty/serial/Makefile
> +++ b/drivers/tty/serial/Makefile
> @@ -3,6 +3,7 @@
>  # Makefile for the kernel serial device drivers.
>  #
>  
> +GCOV_PROFILE := $(CONFIG_SERIAL_GCOV)
>  obj-$(CONFIG_SERIAL_CORE) += serial_core.o
>  
>  obj-$(CONFIG_SERIAL_EARLYCON) += earlycon.o
> diff --git a/kernel/gcov/Kconfig b/kernel/gcov/Kconfig
> index 3941a9c48f83..35b839879553 100644
> --- a/kernel/gcov/Kconfig
> +++ b/kernel/gcov/Kconfig
> @@ -51,6 +51,21 @@ config GCOV_PROFILE_ALL
>  	larger and run slower. Also be sure to exclude files from profiling
>  	which are not linked to the kernel image to prevent linker errors.
>  
> +config GCOV_PROFILE_PREREQS
> +	bool "Profile Kernel for prereqs"
> +	depends on !COMPILE_TEST
> +	depends on GCOV_KERNEL
> +	depends on !COMPILE_PROFILE_ALL
> +	default y if GCOV_KERNEL && !COMPILE_TEST

This mix of depends and "default if" is confusing. As I mentioned in my
previous e-mail, the "default if" should be sufficient for an automatic
symbol, so the "depends" statements can be removed.

> +	help
> +	  This options activates profiling for the specified kernel modules.
> +
> +	  When some modules need Gcov data, enable this config, then configure
> +	  with gcov on the corresponding modules,The directories or files of
> +	  these modules will be added profiling flags after kernel compile.
> +
> +	  If unsure, say N.

What reason is there for a user to manually set this to N? In my opinion
the only use case where this symbol makes sense is as an automatic
config symbol that can be used by other symbols that enable specific
GCOV profiling sites via a "depends" relation. The PREREQ symbol
indicates that is is ok to provide the manual choice of enabling such
profiling.

> +
>  choice
>  	prompt "Specify GCOV format"
>  	depends on GCOV_KERNEL
> 


-- 
Peter Oberparleiter
Linux on Z Development - IBM Germany

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2020-06-15  9:45 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-10  2:11 [RFC PATCH V5] GCOV: Add config to check the preqequisites situation gengcixi
2020-06-15  9:45 ` Peter Oberparleiter

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).