* Re: [PATCH 16/16] objtool/powerpc: Add --mcount specific implementation
@ 2022-08-10 3:46 kernel test robot
0 siblings, 0 replies; 4+ messages in thread
From: kernel test robot @ 2022-08-10 3:46 UTC (permalink / raw)
Cc: kbuild-all, llvm
In-Reply-To: <20220808114908.240813-17-sv@linux.ibm.com>
References: <20220808114908.240813-17-sv@linux.ibm.com>
TO: Sathvika Vasireddy <sv@linux.ibm.com>
TO: linuxppc-dev@lists.ozlabs.org
CC: jpoimboe@redhat.com
CC: peterz@infradead.org
CC: linux-kernel@vger.kernel.org
CC: aik@ozlabs.ru
CC: mpe@ellerman.id.au
CC: mingo@redhat.com
CC: christophe.leroy@csgroup.eu
CC: rostedt@goodmis.org
CC: mbenes@suse.cz
CC: npiggin@gmail.com
CC: chenzhongjin@huawei.com
CC: linux-arm-kernel@lists.infradead.org
CC: naveen.n.rao@linux.vnet.ibm.com
CC: sv@linux.ibm.com
Hi Sathvika,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on linus/master]
[also build test WARNING on v5.19 next-20220810]
[cannot apply to powerpc/next powerpc/topic/ppc-kvm masahiroy-kbuild/for-next]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Sathvika-Vasireddy/objtool-Enable-and-implement-mcount-option-on-powerpc/20220808-200702
base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 4e23eeebb2e57f5a28b36221aa776b5a1122dde5
config: powerpc-randconfig-r024-20220808 (https://download.01.org/0day-ci/archive/20220810/202208101138.8BblKl1L-lkp@intel.com/config)
compiler: clang version 16.0.0 (https://github.com/llvm/llvm-project 5f1c7e2cc5a3c07cbc2412e851a7283c1841f520)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# install powerpc cross compiling tool for clang build
# apt-get install binutils-powerpc-linux-gnu
# https://github.com/intel-lab-lkp/linux/commit/eb2c41f83b8e1f2967fd2342fbdc7c116def52c0
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Sathvika-Vasireddy/objtool-Enable-and-implement-mcount-option-on-powerpc/20220808-200702
git checkout eb2c41f83b8e1f2967fd2342fbdc7c116def52c0
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=powerpc SHELL=/bin/bash arch/powerpc/
If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@intel.com>
All warnings (new ones prefixed by >>):
>> arch/powerpc/kernel/prom_init.o: warning: objtool: prom_init+0x14: unannotated intra-function call
--
>> arch/powerpc/platforms/powermac/bootx_init.o: warning: objtool: bootx_init+0x28: unannotated intra-function call
objdump-func vmlinux.o prom_init:
0000 00000004 <prom_init>:
0000 4: 7c 08 02 a6 mflr r0
0004 8: 90 01 00 04 stw r0,4(r1)
0008 c: 94 21 ff e0 stwu r1,-32(r1)
000c 10: 93 c1 00 18 stw r30,24(r1)
0010 14: 93 a1 00 14 stw r29,20(r1)
0014 18: 48 00 00 05 bl 1c <prom_init+0x18>
0018 1c: 7c bd 2b 78 mr r29,r5
001c 20: 7f c8 02 a6 mflr r30
0020 24: 80 7e ff e4 lwz r3,-28(r30)
0024 28: 7f c3 f2 14 add r30,r3,r30
0028 2c: 48 00 00 01 bl 2c <prom_init+0x28> 2c: R_PPC_PLTREL24 reloc_offset
002c 30: 48 00 00 01 bl 30 <prom_init+0x2c> 30: R_PPC_PLTREL24 reloc_got2
0030 34: 80 9e 80 00 lwz r4,-32768(r30)
0034 38: 80 7e 80 04 lwz r3,-32764(r30)
0038 3c: 7c a3 20 50 subf r5,r3,r4
003c 40: 38 80 00 00 li r4,0
0040 44: 48 00 00 01 bl 44 <prom_init+0x40> 44: R_PPC_PLTREL24 memset
0044 48: 7f a3 eb 78 mr r3,r29
0048 4c: 48 00 00 45 bl 90 <prom_init_client_services>
004c 50: 48 00 01 01 bl 150 <prom_find_mmu>
0050 54: 48 00 02 a9 bl 2fc <prom_init_stdout>
0054 58: 80 7e 80 08 lwz r3,-32760(r30)
0058 5c: 80 9e 80 0c lwz r4,-32756(r30)
005c 60: 4c c6 31 82 crclr 4*cr1+eq
0060 64: 48 00 04 39 bl 49c <prom_printf>
0064 68: 48 00 08 19 bl 880 <prom_find_machine_type>
0068 6c: 80 be 80 10 lwz r5,-32752(r30)
006c 70: 7c 64 1b 78 mr r4,r3
0070 74: 4c c6 31 82 crclr 4*cr1+eq
0074 78: 90 65 00 00 stw r3,0(r5)
0078 7c: 80 7e 80 14 lwz r3,-32748(r30)
007c 80: 48 00 04 1d bl 49c <prom_printf>
0080 84: 80 7e 80 18 lwz r3,-32744(r30)
0084 88: 48 00 09 01 bl 988 <prom_panic>
0088 8c: 00 00 00 00 .long 0x0 8c: R_PPC_REL32 .got2+0x7fe4
--
0-DAY CI Kernel Test Service
https://01.org/lkp
^ permalink raw reply [flat|nested] 4+ messages in thread* [PATCH 00/16] objtool: Enable and implement --mcount option on powerpc
@ 2022-08-08 11:48 Sathvika Vasireddy
2022-08-08 11:49 ` Sathvika Vasireddy
0 siblings, 1 reply; 4+ messages in thread
From: Sathvika Vasireddy @ 2022-08-08 11:48 UTC (permalink / raw)
To: linuxppc-dev
Cc: peterz, npiggin, linux-kernel, aik, mingo, sv, rostedt, jpoimboe,
naveen.n.rao, mbenes, chenzhongjin, linux-arm-kernel
This patchset enables and implements objtool --mcount
option on powerpc. This applies atop powerpc/merge branch.
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: Replace unreachable() with it's builtin variant in WARN_ON()
powerpc: override __ALIGN() and __ALIGN_STR() macros
powerpc: Fix objtool unannotated intra-function call warnings
powerpc: curb objtool unannotated intra-function call 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 | 2 +-
arch/powerpc/include/asm/linkage.h | 4 +
arch/powerpc/kernel/cpu_setup_6xx.S | 26 +++--
arch/powerpc/kernel/cpu_setup_fsl_booke.S | 8 +-
arch/powerpc/kernel/entry_32.S | 8 +-
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 | 96 +++++++++++++++++++
.../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 | 8 ++
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 | 51 +++++-----
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, 408 insertions(+), 105 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
--
2.31.1
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 16/16] objtool/powerpc: Add --mcount specific implementation
2022-08-08 11:48 [PATCH 00/16] objtool: Enable and implement --mcount option on powerpc Sathvika Vasireddy
2022-08-08 11:49 ` Sathvika Vasireddy
@ 2022-08-08 11:49 ` Sathvika Vasireddy
0 siblings, 0 replies; 4+ messages in thread
From: Sathvika Vasireddy @ 2022-08-08 11:49 UTC (permalink / raw)
To: linuxppc-dev
Cc: peterz, npiggin, linux-kernel, aik, mingo, sv, rostedt, jpoimboe,
naveen.n.rao, mbenes, chenzhongjin, linux-arm-kernel
This patch enables objtool --mcount on powerpc, and
adds implementation specific to powerpc.
Signed-off-by: Sathvika Vasireddy <sv@linux.ibm.com>
---
arch/powerpc/Kconfig | 1 +
tools/objtool/arch/powerpc/decode.c | 22 +++++++++++++++++++
tools/objtool/arch/powerpc/include/arch/elf.h | 2 ++
3 files changed, 25 insertions(+)
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index dc05cd23c233..6be2e68fa9eb 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -238,6 +238,7 @@ config PPC
select HAVE_NMI if PERF_EVENTS || (PPC64 && PPC_BOOK3S)
select HAVE_OPTPROBES
select HAVE_OBJTOOL if PPC32 || MPROFILE_KERNEL
+ select HAVE_OBJTOOL_MCOUNT if HAVE_OBJTOOL
select HAVE_PERF_EVENTS
select HAVE_PERF_EVENTS_NMI if PPC64
select HAVE_PERF_REGS
diff --git a/tools/objtool/arch/powerpc/decode.c b/tools/objtool/arch/powerpc/decode.c
index 8b6a14680da7..b71c265ed503 100644
--- a/tools/objtool/arch/powerpc/decode.c
+++ b/tools/objtool/arch/powerpc/decode.c
@@ -9,6 +9,14 @@
#include <objtool/builtin.h>
#include <objtool/endianness.h>
+bool arch_ftrace_match(char *name)
+{
+ if (!strcmp(name, "_mcount"))
+ return true;
+
+ return false;
+}
+
unsigned long arch_dest_reloc_offset(int addend)
{
return addend;
@@ -41,12 +49,26 @@ int arch_decode_instruction(struct objtool_file *file, const struct section *sec
struct list_head *ops_list)
{
u32 insn;
+ unsigned int opcode;
*immediate = 0;
insn = bswap_if_needed(file->elf, *(u32 *)(sec->data->d_buf + offset));
*len = 4;
*type = INSN_OTHER;
+ opcode = insn >> 26;
+
+ switch (opcode) {
+ case 18: /* bl */
+ if ((insn & 3) == 1) {
+ *type = INSN_CALL;
+ *immediate = insn & 0x3fffffc;
+ if (*immediate & 0x2000000)
+ *immediate -= 0x4000000;
+ }
+ break;
+ }
+
return 0;
}
diff --git a/tools/objtool/arch/powerpc/include/arch/elf.h b/tools/objtool/arch/powerpc/include/arch/elf.h
index 3c8ebb7d2a6b..73f9ae172fe5 100644
--- a/tools/objtool/arch/powerpc/include/arch/elf.h
+++ b/tools/objtool/arch/powerpc/include/arch/elf.h
@@ -4,5 +4,7 @@
#define _OBJTOOL_ARCH_ELF
#define R_NONE R_PPC_NONE
+#define R_ABS64 R_PPC64_ADDR64
+#define R_ABS32 R_PPC_ADDR32
#endif /* _OBJTOOL_ARCH_ELF */
--
2.31.1
^ permalink raw reply related [flat|nested] 4+ messages in thread* [PATCH 16/16] objtool/powerpc: Add --mcount specific implementation
@ 2022-08-08 11:49 ` Sathvika Vasireddy
0 siblings, 0 replies; 4+ messages in thread
From: Sathvika Vasireddy @ 2022-08-08 11:49 UTC (permalink / raw)
To: linuxppc-dev
Cc: jpoimboe, peterz, linux-kernel, aik, mpe, mingo, christophe.leroy,
rostedt, mbenes, npiggin, chenzhongjin, linux-arm-kernel,
naveen.n.rao, sv
This patch enables objtool --mcount on powerpc, and
adds implementation specific to powerpc.
Signed-off-by: Sathvika Vasireddy <sv@linux.ibm.com>
---
arch/powerpc/Kconfig | 1 +
tools/objtool/arch/powerpc/decode.c | 22 +++++++++++++++++++
tools/objtool/arch/powerpc/include/arch/elf.h | 2 ++
3 files changed, 25 insertions(+)
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index dc05cd23c233..6be2e68fa9eb 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -238,6 +238,7 @@ config PPC
select HAVE_NMI if PERF_EVENTS || (PPC64 && PPC_BOOK3S)
select HAVE_OPTPROBES
select HAVE_OBJTOOL if PPC32 || MPROFILE_KERNEL
+ select HAVE_OBJTOOL_MCOUNT if HAVE_OBJTOOL
select HAVE_PERF_EVENTS
select HAVE_PERF_EVENTS_NMI if PPC64
select HAVE_PERF_REGS
diff --git a/tools/objtool/arch/powerpc/decode.c b/tools/objtool/arch/powerpc/decode.c
index 8b6a14680da7..b71c265ed503 100644
--- a/tools/objtool/arch/powerpc/decode.c
+++ b/tools/objtool/arch/powerpc/decode.c
@@ -9,6 +9,14 @@
#include <objtool/builtin.h>
#include <objtool/endianness.h>
+bool arch_ftrace_match(char *name)
+{
+ if (!strcmp(name, "_mcount"))
+ return true;
+
+ return false;
+}
+
unsigned long arch_dest_reloc_offset(int addend)
{
return addend;
@@ -41,12 +49,26 @@ int arch_decode_instruction(struct objtool_file *file, const struct section *sec
struct list_head *ops_list)
{
u32 insn;
+ unsigned int opcode;
*immediate = 0;
insn = bswap_if_needed(file->elf, *(u32 *)(sec->data->d_buf + offset));
*len = 4;
*type = INSN_OTHER;
+ opcode = insn >> 26;
+
+ switch (opcode) {
+ case 18: /* bl */
+ if ((insn & 3) == 1) {
+ *type = INSN_CALL;
+ *immediate = insn & 0x3fffffc;
+ if (*immediate & 0x2000000)
+ *immediate -= 0x4000000;
+ }
+ break;
+ }
+
return 0;
}
diff --git a/tools/objtool/arch/powerpc/include/arch/elf.h b/tools/objtool/arch/powerpc/include/arch/elf.h
index 3c8ebb7d2a6b..73f9ae172fe5 100644
--- a/tools/objtool/arch/powerpc/include/arch/elf.h
+++ b/tools/objtool/arch/powerpc/include/arch/elf.h
@@ -4,5 +4,7 @@
#define _OBJTOOL_ARCH_ELF
#define R_NONE R_PPC_NONE
+#define R_ABS64 R_PPC64_ADDR64
+#define R_ABS32 R_PPC_ADDR32
#endif /* _OBJTOOL_ARCH_ELF */
--
2.31.1
^ permalink raw reply related [flat|nested] 4+ messages in thread* [PATCH 16/16] objtool/powerpc: Add --mcount specific implementation
@ 2022-08-08 11:49 ` Sathvika Vasireddy
0 siblings, 0 replies; 4+ messages in thread
From: Sathvika Vasireddy @ 2022-08-08 11:49 UTC (permalink / raw)
To: linuxppc-dev
Cc: jpoimboe, peterz, linux-kernel, aik, mpe, mingo, christophe.leroy,
rostedt, mbenes, npiggin, chenzhongjin, linux-arm-kernel,
naveen.n.rao, sv
This patch enables objtool --mcount on powerpc, and
adds implementation specific to powerpc.
Signed-off-by: Sathvika Vasireddy <sv@linux.ibm.com>
---
arch/powerpc/Kconfig | 1 +
tools/objtool/arch/powerpc/decode.c | 22 +++++++++++++++++++
tools/objtool/arch/powerpc/include/arch/elf.h | 2 ++
3 files changed, 25 insertions(+)
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index dc05cd23c233..6be2e68fa9eb 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -238,6 +238,7 @@ config PPC
select HAVE_NMI if PERF_EVENTS || (PPC64 && PPC_BOOK3S)
select HAVE_OPTPROBES
select HAVE_OBJTOOL if PPC32 || MPROFILE_KERNEL
+ select HAVE_OBJTOOL_MCOUNT if HAVE_OBJTOOL
select HAVE_PERF_EVENTS
select HAVE_PERF_EVENTS_NMI if PPC64
select HAVE_PERF_REGS
diff --git a/tools/objtool/arch/powerpc/decode.c b/tools/objtool/arch/powerpc/decode.c
index 8b6a14680da7..b71c265ed503 100644
--- a/tools/objtool/arch/powerpc/decode.c
+++ b/tools/objtool/arch/powerpc/decode.c
@@ -9,6 +9,14 @@
#include <objtool/builtin.h>
#include <objtool/endianness.h>
+bool arch_ftrace_match(char *name)
+{
+ if (!strcmp(name, "_mcount"))
+ return true;
+
+ return false;
+}
+
unsigned long arch_dest_reloc_offset(int addend)
{
return addend;
@@ -41,12 +49,26 @@ int arch_decode_instruction(struct objtool_file *file, const struct section *sec
struct list_head *ops_list)
{
u32 insn;
+ unsigned int opcode;
*immediate = 0;
insn = bswap_if_needed(file->elf, *(u32 *)(sec->data->d_buf + offset));
*len = 4;
*type = INSN_OTHER;
+ opcode = insn >> 26;
+
+ switch (opcode) {
+ case 18: /* bl */
+ if ((insn & 3) == 1) {
+ *type = INSN_CALL;
+ *immediate = insn & 0x3fffffc;
+ if (*immediate & 0x2000000)
+ *immediate -= 0x4000000;
+ }
+ break;
+ }
+
return 0;
}
diff --git a/tools/objtool/arch/powerpc/include/arch/elf.h b/tools/objtool/arch/powerpc/include/arch/elf.h
index 3c8ebb7d2a6b..73f9ae172fe5 100644
--- a/tools/objtool/arch/powerpc/include/arch/elf.h
+++ b/tools/objtool/arch/powerpc/include/arch/elf.h
@@ -4,5 +4,7 @@
#define _OBJTOOL_ARCH_ELF
#define R_NONE R_PPC_NONE
+#define R_ABS64 R_PPC64_ADDR64
+#define R_ABS32 R_PPC_ADDR32
#endif /* _OBJTOOL_ARCH_ELF */
--
2.31.1
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2022-08-10 3:47 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-08-10 3:46 [PATCH 16/16] objtool/powerpc: Add --mcount specific implementation kernel test robot
-- strict thread matches above, loose matches on Subject: below --
2022-08-08 11:48 [PATCH 00/16] objtool: Enable and implement --mcount option on powerpc Sathvika Vasireddy
2022-08-08 11:49 ` [PATCH 16/16] objtool/powerpc: Add --mcount specific implementation Sathvika Vasireddy
2022-08-08 11:49 ` Sathvika Vasireddy
2022-08-08 11:49 ` Sathvika Vasireddy
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.