mbox series

[v3,00/16] objtool: Enable and implement --mcount option on powerpc

Message ID 20220912082020.226755-1-sv@linux.ibm.com (mailing list archive)
Headers show
Series objtool: Enable and implement --mcount option on powerpc | expand

Message

Sathvika Vasireddy Sept. 12, 2022, 8:20 a.m. UTC
This patchset enables and implements objtool --mcount
option on powerpc. This applies atop powerpc/merge branch.

Changelog:

v3:

* Patch 01/16 - Rework patch subject.
	      -	Rework changelog.
	      - Add Reviewed-by tag from Christophe Leroy.

* Patch 02/16 - Rework changelog to update details based on feedback
 		from Nicholas Piggin and Michael Ellerman.
	      - Use quotes instead of __stringify macro, based on
		suggestion from Christophe Leroy.

* Patch 03/16 - Add Reviewed-by tag from Christophe Leroy.
	      - Based on Christophe's suggestion, keep all <linux/...>
	        before <asm/...>.
	      - Rework changelog.

* Patch 04/16 - Add Reviewed-by tag from Christophe Leroy.

* Patch 05/16 - Add Reviewed-by tag from Christophe Leroy.

* Patch 06/16 - No change. 

* Patch 07/16 - Add Reviewed-by tag from Christophe Leroy.

* Patch 08/16 - Add Acked-by tag from Peter Zijlstra.

* Patch 09/16 - Add Acked-by tag from Peter Zijlstra.

* Patch 10/16 - Reorder local variable declarations to use reverse
		xmas tree format. 
	      - Add Signed-off-by tag from Sathvika Vasireddy indicating
	        changes done.
	      - Add Acked-by tag from Peter Zijlstra.

* Patch 11/16 - Update changelog to indicate that powerpc kernel does
		not support nop'ed out ftrace locations. 
	      - Add Acked-by tag from Peter Zijlstra.
	      - Add Reviewed-by tag from Christophe Leroy.

* Patch 12/16 - Per Christophe's comment, rework changelog. 

* Patch 13/16 - Add Acked-by tag from Peter Zijlstra.
              - Add Reviewed-by tag from Christophe Leroy.

* Patch 14/16 - Simplify arch_ftrace_match() function, based on
 		Christophe's suggestion. 
              - Add Reviewed-by tag from Christophe Leroy. 

* Patch 15/16 - Include code from Christophe Leroy to use local vars for
 		type and imm, and to adapt len for prefixed
		instructions.

* Patch 16/16 - Based on suggestion from Christophe Leroy, setup
                immediate value calculation outside the check for
                specific instruction under case 18. 
	      - Set instruction type to INSN_CALL for 'bla'
	        instruction as well.
		
v2:

* Change subject of patch 01/16
* As suggested by Christophe Leroy, add barrier_before_unreachable()
before __builtin_unreachable() to work around a gcc problem.
* Fix issues reported by Kernel Test Robot.
* Include suggestions from Christophe Leroy, and change commit 
messages for patches 01/16, 02/16, 03/16, 05/16.

Christophe Leroy (4):
  objtool: Fix SEGFAULT
  objtool: Use target file endianness instead of a compiled constant
  objtool: Use target file class size instead of a compiled constant
  powerpc: Fix objtool unannotated intra-function call warnings on PPC32

Sathvika Vasireddy (12):
  powerpc: Fix __WARN_FLAGS() for use with Objtool
  powerpc: Override __ALIGN and __ALIGN_STR macros
  powerpc: Fix objtool unannotated intra-function call warnings
  powerpc: Curb objtool unannotated intra-function warnings
  powerpc: Skip objtool from running on drivers/crypto/vmx/aesp8-ppc.o
  powerpc: Skip objtool from running on VDSO files
  objtool: Add --mnop as an option to --mcount
  objtool: Read special sections with alts only when specific options are selected
  objtool: Use macros to define arch specific reloc types
  objtool: Add arch specific function arch_ftrace_match()
  objtool/powerpc: Enable objtool to be built on ppc
  objtool/powerpc: Add --mcount specific implementation

 Makefile                                      |   4 +-
 arch/powerpc/Kconfig                          |   2 +
 arch/powerpc/include/asm/asm.h                |   7 ++
 arch/powerpc/include/asm/bug.h                |   3 +-
 arch/powerpc/include/asm/linkage.h            |   3 +
 arch/powerpc/kernel/cpu_setup_6xx.S           |  26 +++--
 arch/powerpc/kernel/cpu_setup_fsl_booke.S     |   8 +-
 arch/powerpc/kernel/entry_32.S                |   9 +-
 arch/powerpc/kernel/entry_64.S                |   2 +
 arch/powerpc/kernel/exceptions-64s.S          |   7 +-
 arch/powerpc/kernel/head_40x.S                |   5 +-
 arch/powerpc/kernel/head_64.S                 |   7 +-
 arch/powerpc/kernel/head_8xx.S                |   5 +-
 arch/powerpc/kernel/head_book3s_32.S          |  29 +++--
 arch/powerpc/kernel/head_fsl_booke.S          |   5 +-
 arch/powerpc/kernel/misc_64.S                 |   4 +-
 arch/powerpc/kernel/swsusp_32.S               |   5 +-
 arch/powerpc/kernel/vdso/Makefile             |   2 +
 arch/powerpc/kernel/vector.S                  |   4 +-
 arch/powerpc/kvm/book3s_hv_interrupts.S       |   4 +-
 arch/powerpc/kvm/book3s_hv_rmhandlers.S       |  25 +++--
 arch/powerpc/kvm/fpu.S                        |  17 ++-
 arch/powerpc/platforms/52xx/lite5200_sleep.S  |  15 ++-
 arch/x86/Kconfig                              |   1 +
 drivers/crypto/vmx/Makefile                   |   2 +
 scripts/Makefile.lib                          |   1 +
 tools/objtool/arch/powerpc/Build              |   2 +
 tools/objtool/arch/powerpc/decode.c           | 101 ++++++++++++++++++
 .../arch/powerpc/include/arch/cfi_regs.h      |  11 ++
 tools/objtool/arch/powerpc/include/arch/elf.h |  10 ++
 .../arch/powerpc/include/arch/special.h       |  21 ++++
 tools/objtool/arch/powerpc/special.c          |  19 ++++
 tools/objtool/arch/x86/decode.c               |   5 +
 tools/objtool/arch/x86/include/arch/elf.h     |   2 +
 .../arch/x86/include/arch/endianness.h        |   9 --
 tools/objtool/builtin-check.c                 |  14 +++
 tools/objtool/check.c                         |  53 ++++-----
 tools/objtool/elf.c                           |   8 +-
 tools/objtool/include/objtool/arch.h          |   2 +
 tools/objtool/include/objtool/builtin.h       |   1 +
 tools/objtool/include/objtool/elf.h           |   8 ++
 tools/objtool/include/objtool/endianness.h    |  32 +++---
 tools/objtool/orc_dump.c                      |  11 +-
 tools/objtool/orc_gen.c                       |   4 +-
 tools/objtool/special.c                       |   3 +-
 45 files changed, 411 insertions(+), 107 deletions(-)
 create mode 100644 arch/powerpc/include/asm/asm.h
 create mode 100644 tools/objtool/arch/powerpc/Build
 create mode 100644 tools/objtool/arch/powerpc/decode.c
 create mode 100644 tools/objtool/arch/powerpc/include/arch/cfi_regs.h
 create mode 100644 tools/objtool/arch/powerpc/include/arch/elf.h
 create mode 100644 tools/objtool/arch/powerpc/include/arch/special.h
 create mode 100644 tools/objtool/arch/powerpc/special.c
 delete mode 100644 tools/objtool/arch/x86/include/arch/endianness.h

Comments

Peter Zijlstra Sept. 13, 2022, 2:13 p.m. UTC | #1
On Mon, Sep 12, 2022 at 01:50:04PM +0530, Sathvika Vasireddy wrote:
> Christophe Leroy (4):
>   objtool: Fix SEGFAULT
>   objtool: Use target file endianness instead of a compiled constant
>   objtool: Use target file class size instead of a compiled constant

> Sathvika Vasireddy (12):
>   objtool: Add --mnop as an option to --mcount
>   objtool: Read special sections with alts only when specific options are selected
>   objtool: Use macros to define arch specific reloc types
>   objtool: Add arch specific function arch_ftrace_match()
>   objtool/powerpc: Enable objtool to be built on ppc
>   objtool/powerpc: Add --mcount specific implementation

>  tools/objtool/arch/powerpc/Build              |   2 +
>  tools/objtool/arch/powerpc/decode.c           | 101 ++++++++++++++++++
>  .../arch/powerpc/include/arch/cfi_regs.h      |  11 ++
>  tools/objtool/arch/powerpc/include/arch/elf.h |  10 ++
>  .../arch/powerpc/include/arch/special.h       |  21 ++++
>  tools/objtool/arch/powerpc/special.c          |  19 ++++
>  tools/objtool/arch/x86/decode.c               |   5 +
>  tools/objtool/arch/x86/include/arch/elf.h     |   2 +
>  .../arch/x86/include/arch/endianness.h        |   9 --
>  tools/objtool/builtin-check.c                 |  14 +++
>  tools/objtool/check.c                         |  53 ++++-----
>  tools/objtool/elf.c                           |   8 +-
>  tools/objtool/include/objtool/arch.h          |   2 +
>  tools/objtool/include/objtool/builtin.h       |   1 +
>  tools/objtool/include/objtool/elf.h           |   8 ++
>  tools/objtool/include/objtool/endianness.h    |  32 +++---
>  tools/objtool/orc_dump.c                      |  11 +-
>  tools/objtool/orc_gen.c                       |   4 +-
>  tools/objtool/special.c                       |   3 +-

This seems to painlessly merge with the objtool changes I have in
queue.git/call-depth-tracking. After that all I need is the below little
patch to make it to build ppc44x_defconfig + CONFIG_DYNAMIC_FTRACE=y.

So I think these patches can go through the powerpc tree if Michael
wants. Josh you okay with that, or should we do something complicated?

diff --git a/tools/objtool/arch/powerpc/decode.c b/tools/objtool/arch/powerpc/decode.c
index ea2b1968f0ee..8343e2c4cea0 100644
--- a/tools/objtool/arch/powerpc/decode.c
+++ b/tools/objtool/arch/powerpc/decode.c
@@ -24,6 +24,11 @@ bool arch_callee_saved_reg(unsigned char reg)
 	return false;
 }
 
+bool arch_pc_relative_reloc(struct reloc *reloc)
+{
+	exit(-1);
+}
+
 int arch_decode_hint_reg(u8 sp_reg, int *base)
 {
 	exit(-1);
Josh Poimboeuf Sept. 14, 2022, 12:15 a.m. UTC | #2
On Tue, Sep 13, 2022 at 04:13:52PM +0200, Peter Zijlstra wrote:
> On Mon, Sep 12, 2022 at 01:50:04PM +0530, Sathvika Vasireddy wrote:
> > Christophe Leroy (4):
> >   objtool: Fix SEGFAULT
> >   objtool: Use target file endianness instead of a compiled constant
> >   objtool: Use target file class size instead of a compiled constant
> 
> > Sathvika Vasireddy (12):
> >   objtool: Add --mnop as an option to --mcount
> >   objtool: Read special sections with alts only when specific options are selected
> >   objtool: Use macros to define arch specific reloc types
> >   objtool: Add arch specific function arch_ftrace_match()
> >   objtool/powerpc: Enable objtool to be built on ppc
> >   objtool/powerpc: Add --mcount specific implementation
> 
> >  tools/objtool/arch/powerpc/Build              |   2 +
> >  tools/objtool/arch/powerpc/decode.c           | 101 ++++++++++++++++++
> >  .../arch/powerpc/include/arch/cfi_regs.h      |  11 ++
> >  tools/objtool/arch/powerpc/include/arch/elf.h |  10 ++
> >  .../arch/powerpc/include/arch/special.h       |  21 ++++
> >  tools/objtool/arch/powerpc/special.c          |  19 ++++
> >  tools/objtool/arch/x86/decode.c               |   5 +
> >  tools/objtool/arch/x86/include/arch/elf.h     |   2 +
> >  .../arch/x86/include/arch/endianness.h        |   9 --
> >  tools/objtool/builtin-check.c                 |  14 +++
> >  tools/objtool/check.c                         |  53 ++++-----
> >  tools/objtool/elf.c                           |   8 +-
> >  tools/objtool/include/objtool/arch.h          |   2 +
> >  tools/objtool/include/objtool/builtin.h       |   1 +
> >  tools/objtool/include/objtool/elf.h           |   8 ++
> >  tools/objtool/include/objtool/endianness.h    |  32 +++---
> >  tools/objtool/orc_dump.c                      |  11 +-
> >  tools/objtool/orc_gen.c                       |   4 +-
> >  tools/objtool/special.c                       |   3 +-
> 
> This seems to painlessly merge with the objtool changes I have in
> queue.git/call-depth-tracking. After that all I need is the below little
> patch to make it to build ppc44x_defconfig + CONFIG_DYNAMIC_FTRACE=y.
> 
> So I think these patches can go through the powerpc tree if Michael
> wants. Josh you okay with that, or should we do something complicated?

I'm all for avoiding complicated, but let me try to give it a proper
review first.
Sathvika Vasireddy Sept. 21, 2022, 9:10 a.m. UTC | #3
Hi Josh,

On 14/09/22 05:45, Josh Poimboeuf wrote:

> On Tue, Sep 13, 2022 at 04:13:52PM +0200, Peter Zijlstra wrote:
>> On Mon, Sep 12, 2022 at 01:50:04PM +0530, Sathvika Vasireddy wrote:
>>> Christophe Leroy (4):
>>>    objtool: Fix SEGFAULT
>>>    objtool: Use target file endianness instead of a compiled constant
>>>    objtool: Use target file class size instead of a compiled constant
>>> Sathvika Vasireddy (12):
>>>    objtool: Add --mnop as an option to --mcount
>>>    objtool: Read special sections with alts only when specific options are selected
>>>    objtool: Use macros to define arch specific reloc types
>>>    objtool: Add arch specific function arch_ftrace_match()
>>>    objtool/powerpc: Enable objtool to be built on ppc
>>>    objtool/powerpc: Add --mcount specific implementation
>>>   tools/objtool/arch/powerpc/Build              |   2 +
>>>   tools/objtool/arch/powerpc/decode.c           | 101 ++++++++++++++++++
>>>   .../arch/powerpc/include/arch/cfi_regs.h      |  11 ++
>>>   tools/objtool/arch/powerpc/include/arch/elf.h |  10 ++
>>>   .../arch/powerpc/include/arch/special.h       |  21 ++++
>>>   tools/objtool/arch/powerpc/special.c          |  19 ++++
>>>   tools/objtool/arch/x86/decode.c               |   5 +
>>>   tools/objtool/arch/x86/include/arch/elf.h     |   2 +
>>>   .../arch/x86/include/arch/endianness.h        |   9 --
>>>   tools/objtool/builtin-check.c                 |  14 +++
>>>   tools/objtool/check.c                         |  53 ++++-----
>>>   tools/objtool/elf.c                           |   8 +-
>>>   tools/objtool/include/objtool/arch.h          |   2 +
>>>   tools/objtool/include/objtool/builtin.h       |   1 +
>>>   tools/objtool/include/objtool/elf.h           |   8 ++
>>>   tools/objtool/include/objtool/endianness.h    |  32 +++---
>>>   tools/objtool/orc_dump.c                      |  11 +-
>>>   tools/objtool/orc_gen.c                       |   4 +-
>>>   tools/objtool/special.c                       |   3 +-
>> This seems to painlessly merge with the objtool changes I have in
>> queue.git/call-depth-tracking. After that all I need is the below little
>> patch to make it to build ppc44x_defconfig + CONFIG_DYNAMIC_FTRACE=y.
>>
>> So I think these patches can go through the powerpc tree if Michael
>> wants. Josh you okay with that, or should we do something complicated?
> I'm all for avoiding complicated, but let me try to give it a proper
> review first.

Did you get a chance to review this patch set?

- Sathvika