Re: [PATCH v4 4/9] ppc64 ftrace_with_regs configuration variables

2015-12-04 Thread Torsten Duwe
On Thu, Dec 03, 2015 at 05:20:08PM +0100, Petr Mladek wrote:
>
> IMHO, we should not define CC_USING_MPROFILE_KERNEL if it is not
> supported by the compiler.

Yes, true.

> I took inspiration from the CC_USING_FENTRY handling in
> linux/Makefile. The following code worked for me:
>
> CC_USING_MPROFILE_KERNEL := $(call cc-option, -pg -mprofile-kernel 
> -DCC_USING_MPROFILE_KERNEL)
> CC_FLAGS_FTRACE := $(CC_USING_MPROFILE_KERNEL)
> KBUILD_CPPFLAGS += $(CC_USING_MPROFILE_KERNEL)

Excellent!

> I just do not understand why we need to add the flags also
> to KBUILD_CPPFLAGS. It seems that they are duplicated
> when compiling kernel/livepatch/core.o. But livepatching
> did not work without it. I wonder if you found the culprit.

Some assembler-with-cpp files also need to be notified?

My plan is to first get this working reliably and then fine tune.

Torsten

___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

Re: [PATCH v4 4/9] ppc64 ftrace_with_regs configuration variables

2015-12-03 Thread Petr Mladek
On Wed 2015-11-25 17:37:33, Torsten Duwe wrote:
>   * Makefile:
> - globally use -mprofile-kernel in case it's configured.
>   * arch/powerpc/Kconfig / kernel/trace/Kconfig:
> - declare that ppc64le HAVE_MPROFILE_KERNEL and
>   HAVE_DYNAMIC_FTRACE_WITH_REGS, and use it.
> 
> --- a/arch/powerpc/Makefile
> +++ b/arch/powerpc/Makefile
> @@ -133,6 +133,13 @@ else
>  CFLAGS-$(CONFIG_GENERIC_CPU) += -mcpu=powerpc64
>  endif
>  
> +ifeq ($(CONFIG_PPC64),y)
> +ifdef CONFIG_HAVE_MPROFILE_KERNEL
> +CC_FLAGS_FTRACE  := -pg $(call cc-option,-mprofile-kernel)

Do we want to define -pg even when -mprofile-kernel is not supported
by the used gcc, please?

> +KBUILD_CPPFLAGS  += -DCC_USING_MPROFILE_KERNEL

IMHO, we should not define CC_USING_MPROFILE_KERNEL if it is not
supported by the compiler.

I took inspiration from the CC_USING_FENTRY handling in
linux/Makefile. The following code worked for me:

CC_USING_MPROFILE_KERNEL := $(call cc-option, -pg -mprofile-kernel 
-DCC_USING_MPROFILE_KERNEL)
CC_FLAGS_FTRACE := $(CC_USING_MPROFILE_KERNEL)
KBUILD_CPPFLAGS += $(CC_USING_MPROFILE_KERNEL)

I just do not understand why we need to add the flags also
to KBUILD_CPPFLAGS. It seems that they are duplicated
when compiling kernel/livepatch/core.o. But livepatching
did not work without it. I wonder if you found the culprit.

Best Regards,
Petr

> +endif
> +endif
> +
>  CFLAGS-$(CONFIG_CELL_CPU) += $(call cc-option,-mcpu=cell)
>  CFLAGS-$(CONFIG_POWER4_CPU) += $(call cc-option,-mcpu=power4)
>  CFLAGS-$(CONFIG_POWER5_CPU) += $(call cc-option,-mcpu=power5)
___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

[PATCH v4 4/9] ppc64 ftrace_with_regs configuration variables

2015-11-25 Thread Torsten Duwe
  * Makefile:
- globally use -mprofile-kernel in case it's configured.
  * arch/powerpc/Kconfig / kernel/trace/Kconfig:
- declare that ppc64le HAVE_MPROFILE_KERNEL and
  HAVE_DYNAMIC_FTRACE_WITH_REGS, and use it.

Signed-off-by: Torsten Duwe 
---
 arch/powerpc/Kconfig  | 2 ++
 arch/powerpc/Makefile | 7 +++
 kernel/trace/Kconfig  | 5 +
 3 files changed, 14 insertions(+)

diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index 9a7057e..55fd59e 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -97,8 +97,10 @@ config PPC
select OF_RESERVED_MEM
select HAVE_FTRACE_MCOUNT_RECORD
select HAVE_DYNAMIC_FTRACE
+   select HAVE_DYNAMIC_FTRACE_WITH_REGS if PPC64 && CPU_LITTLE_ENDIAN
select HAVE_FUNCTION_TRACER
select HAVE_FUNCTION_GRAPH_TRACER
+   select HAVE_MPROFILE_KERNEL if PPC64 && CPU_LITTLE_ENDIAN
select SYSCTL_EXCEPTION_TRACE
select ARCH_WANT_OPTIONAL_GPIOLIB
select VIRT_TO_BUS if !PPC64
diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile
index b9b4af2..25d0034 100644
--- a/arch/powerpc/Makefile
+++ b/arch/powerpc/Makefile
@@ -133,6 +133,13 @@ else
 CFLAGS-$(CONFIG_GENERIC_CPU) += -mcpu=powerpc64
 endif
 
+ifeq ($(CONFIG_PPC64),y)
+ifdef CONFIG_HAVE_MPROFILE_KERNEL
+CC_FLAGS_FTRACE:= -pg $(call cc-option,-mprofile-kernel)
+KBUILD_CPPFLAGS+= -DCC_USING_MPROFILE_KERNEL
+endif
+endif
+
 CFLAGS-$(CONFIG_CELL_CPU) += $(call cc-option,-mcpu=cell)
 CFLAGS-$(CONFIG_POWER4_CPU) += $(call cc-option,-mcpu=power4)
 CFLAGS-$(CONFIG_POWER5_CPU) += $(call cc-option,-mcpu=power5)
diff --git a/kernel/trace/Kconfig b/kernel/trace/Kconfig
index 1153c43..dbcb635 100644
--- a/kernel/trace/Kconfig
+++ b/kernel/trace/Kconfig
@@ -52,6 +52,11 @@ config HAVE_FENTRY
help
  Arch supports the gcc options -pg with -mfentry
 
+config HAVE_MPROFILE_KERNEL
+   bool
+   help
+ Arch supports the gcc options -pg with -mprofile-kernel
+
 config HAVE_C_RECORDMCOUNT
bool
help
-- 
1.8.5.6

___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev