From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Athira Rajeev <atrajeev@linux.vnet.ibm.com>
Cc: linuxppc-dev <linuxppc-dev@lists.ozlabs.org>,
Madhavan Srinivasan <maddy@linux.ibm.com>,
Jiri Olsa <jolsa@redhat.com>, Jiri Olsa <jolsa@kernel.org>,
Kajol Jain <kjain@linux.ibm.com>
Subject: Re: [PATCH] tools/perf: Fix powerpc gap between kernel end and module start
Date: Tue, 9 Feb 2021 09:47:12 -0300 [thread overview]
Message-ID: <20210209124712.GC1018564@kernel.org> (raw)
In-Reply-To: <20210203153148.GC854763@kernel.org>
Em Wed, Feb 03, 2021 at 12:31:48PM -0300, Arnaldo Carvalho de Melo escreveu:
> Em Tue, Feb 02, 2021 at 04:02:36PM +0530, Athira Rajeev escreveu:
> >
> >
> > On 18-Jan-2021, at 3:51 PM, kajoljain <kjain@linux.ibm.com> wrote:
> >
> >
> >
> > On 1/12/21 3:08 PM, Jiri Olsa wrote:
> >
> > On Mon, Dec 28, 2020 at 09:14:14PM -0500, Athira Rajeev wrote:
> >
> > SNIP
> >
> >
> > c000000002799370 b backtrace_flag
> > c000000002799378 B radix_tree_node_cachep
> > c000000002799380 B __bss_stop
> > c0000000027a0000 B _end
> > c008000003890000 t icmp_checkentry [ip_tables]
> > c008000003890038 t ipt_alloc_initial_table [ip_tables]
> > c008000003890468 T ipt_do_table [ip_tables]
> > c008000003890de8 T ipt_unregister_table_pre_exit [ip_tables]
> > ...
> >
> > Perf calls function symbols__fixup_end() which sets the end of
> > symbol
> > to 0xc008000003890000, which is the next address and this is the
> > start
> > address of first module (icmp_checkentry in above) which will make
> > the
> > huge symbol size of 0x80000010f0000.
> >
> > After symbols__fixup_end:
> > symbols__fixup_end: sym->name: _end, sym->start:
> > 0xc0000000027a0000,
> > sym->end: 0xc008000003890000
> >
> > On powerpc, kernel text segment is located at 0xc000000000000000
> > whereas the modules are located at very high memory addresses,
> > 0xc00800000xxxxxxx. Since the gap between end of kernel text
> > segment
> > and beginning of first module's address is high, histogram
> > allocation
> > using calloc fails.
> >
> > Fix this by detecting the kernel's last symbol and limiting
> > the range of last kernel symbol to pagesize.
> >
> >
> > Patch looks good to me.
> >
> > Tested-By: Kajol Jain<kjain@linux.ibm.com>
> >
> > Thanks,
> > Kajol Jain
> >
> >
> > Signed-off-by: Athira Rajeev<atrajeev@linux.vnet.ibm.com>
> >
> >
> > I can't test, but since the same approach works for arm and s390,
> > this also looks ok
> >
> > Acked-by: Jiri Olsa <jolsa@redhat.com>
> >
> > thanks,
> > jirka
> >
> >
> > Hi Arnaldo,
> >
> > Can you please help review this patch and merge if this looks good..
>
> Thanks, collected the Tested-by from Kajol and the Acked-by from Jiri
> and applied to my local tree for testing, then up to my perf/core
> branch.
Had to apply this on top.
- Arnaldo
commit 0f000f9c89182950cd3500226729977251529364
Author: Arnaldo Carvalho de Melo <acme@redhat.com>
Date: Tue Feb 9 09:41:21 2021 -0300
perf powerpc: Fix printf conversion specifier for IP addresses
We need to use "%#" PRIx64 for u64 values, not "%lx", fixing this build
problem on powerpc 32-bit:
72 13.69 ubuntu:18.04-x-powerpc : FAIL powerpc-linux-gnu-gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0
arch/powerpc/util/machine.c: In function 'arch__symbols__fixup_end':
arch/powerpc/util/machine.c:23:12: error: format '%lx' expects argument of type 'long unsigned int', but argument 6 has type 'u64 {aka long long unsigned int}' [-Werror=format=]
pr_debug4("%s sym:%s end:%#lx\n", __func__, p->name, p->end);
^
/git/linux/tools/perf/util/debug.h:18:21: note: in definition of macro 'pr_fmt'
#define pr_fmt(fmt) fmt
^~~
/git/linux/tools/perf/util/debug.h:33:29: note: in expansion of macro 'pr_debugN'
#define pr_debug4(fmt, ...) pr_debugN(4, pr_fmt(fmt), ##__VA_ARGS__)
^~~~~~~~~
/git/linux/tools/perf/util/debug.h:33:42: note: in expansion of macro 'pr_fmt'
#define pr_debug4(fmt, ...) pr_debugN(4, pr_fmt(fmt), ##__VA_ARGS__)
^~~~~~
arch/powerpc/util/machine.c:23:2: note: in expansion of macro 'pr_debug4'
pr_debug4("%s sym:%s end:%#lx\n", __func__, p->name, p->end);
^~~~~~~~~
cc1: all warnings being treated as errors
/git/linux/tools/build/Makefile.build:139: recipe for target 'util' failed
make[5]: *** [util] Error 2
/git/linux/tools/build/Makefile.build:139: recipe for target 'powerpc' failed
make[4]: *** [powerpc] Error 2
/git/linux/tools/build/Makefile.build:139: recipe for target 'arch' failed
make[3]: *** [arch] Error 2
73 30.47 ubuntu:18.04-x-powerpc64 : Ok powerpc64-linux-gnu-gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0
Fixes: 557c3eadb7712741 ("perf powerpc: Fix gap between kernel end and module start")
Cc: Athira Rajeev <atrajeev@linux.vnet.ibm.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Kajol Jain <kjain@linux.ibm.com>
Cc: Madhavan Srinivasan <maddy@linux.ibm.com>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
diff --git a/tools/perf/arch/powerpc/util/machine.c b/tools/perf/arch/powerpc/util/machine.c
index c30e5cc88c1673d6..e652a1aa8132274f 100644
--- a/tools/perf/arch/powerpc/util/machine.c
+++ b/tools/perf/arch/powerpc/util/machine.c
@@ -1,5 +1,6 @@
// SPDX-License-Identifier: GPL-2.0
+#include <inttypes.h>
#include <stdio.h>
#include <string.h>
#include <internal/lib.h> // page_size
@@ -20,5 +21,5 @@ void arch__symbols__fixup_end(struct symbol *p, struct symbol *c)
p->end += page_size;
else
p->end = c->start;
- pr_debug4("%s sym:%s end:%#lx\n", __func__, p->name, p->end);
+ pr_debug4("%s sym:%s end:%#" PRIx64 "\n", __func__, p->name, p->end);
}
next prev parent reply other threads:[~2021-02-09 12:51 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-12-29 2:14 [PATCH] tools/perf: Fix powerpc gap between kernel end and module start Athira Rajeev
2021-01-12 9:38 ` Jiri Olsa
2021-01-13 6:44 ` Athira Rajeev
2021-01-18 10:21 ` kajoljain
2021-02-02 10:32 ` Athira Rajeev
2021-02-03 15:31 ` Arnaldo Carvalho de Melo
2021-02-04 12:11 ` Athira Rajeev
2021-02-09 12:47 ` Arnaldo Carvalho de Melo [this message]
2021-02-11 12:19 ` Athira Rajeev
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210209124712.GC1018564@kernel.org \
--to=acme@kernel.org \
--cc=atrajeev@linux.vnet.ibm.com \
--cc=jolsa@kernel.org \
--cc=jolsa@redhat.com \
--cc=kjain@linux.ibm.com \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=maddy@linux.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).