public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/2] perf tools: Urgent fixes
@ 2015-09-24 10:05 Adrian Hunter
  2015-09-24 10:05 ` [PATCH 1/2] perf intel-pt: Remove no_force_psb from documentation Adrian Hunter
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Adrian Hunter @ 2015-09-24 10:05 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo; +Cc: Jiri Olsa, linux-kernel

Hi

Here are a couple of urgent fixes for v4.3.

The "Fix copying of /proc/kcore" problem goes back to v3.13
if you think it is important enough for stable.


Adrian Hunter (2):
      perf intel-pt: Remove no_force_psb from documentation
      perf tools: Fix copying of /proc/kcore

 tools/perf/Documentation/intel-pt.txt | 15 ---------------
 tools/perf/util/symbol-elf.c          | 35 +++++++++++++----------------------
 2 files changed, 13 insertions(+), 37 deletions(-)


Regards
Adrian

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

* [PATCH 1/2] perf intel-pt: Remove no_force_psb from documentation
  2015-09-24 10:05 [PATCH 0/2] perf tools: Urgent fixes Adrian Hunter
@ 2015-09-24 10:05 ` Adrian Hunter
  2015-09-26  6:21   ` [tip:perf/urgent] " tip-bot for Adrian Hunter
  2015-09-24 10:05 ` [PATCH 2/2] perf tools: Fix copying of /proc/kcore Adrian Hunter
  2015-09-25 13:49 ` [PATCH 0/2] perf tools: Urgent fixes Arnaldo Carvalho de Melo
  2 siblings, 1 reply; 6+ messages in thread
From: Adrian Hunter @ 2015-09-24 10:05 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo; +Cc: Jiri Olsa, linux-kernel

no_force_psb was dropped as a late change to the kernel
driver.  Consequently, remove it from the documentation.

Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
---
 tools/perf/Documentation/intel-pt.txt | 15 ---------------
 1 file changed, 15 deletions(-)

diff --git a/tools/perf/Documentation/intel-pt.txt b/tools/perf/Documentation/intel-pt.txt
index 4a0501d7a3b4..c94c9de3173e 100644
--- a/tools/perf/Documentation/intel-pt.txt
+++ b/tools/perf/Documentation/intel-pt.txt
@@ -364,21 +364,6 @@ cyc_thresh	Specifies how frequently CYC packets are produced - see cyc
 
 		CYC packets are not requested by default.
 
-no_force_psb	This is a driver option and is not in the IA32_RTIT_CTL MSR.
-
-		It stops the driver resetting the byte count to zero whenever
-		enabling the trace (for example on context switches) which in
-		turn results in no PSB being forced.  However some processors
-		will produce a PSB anyway.
-
-		In any case, there is still a PSB when the trace is enabled for
-		the first time.
-
-		no_force_psb can be used to slightly decrease the trace size but
-		may make it harder for the decoder to recover from errors.
-
-		no_force_psb is not selected by default.
-
 
 new snapshot option
 -------------------
-- 
1.9.1


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

* [PATCH 2/2] perf tools: Fix copying of /proc/kcore
  2015-09-24 10:05 [PATCH 0/2] perf tools: Urgent fixes Adrian Hunter
  2015-09-24 10:05 ` [PATCH 1/2] perf intel-pt: Remove no_force_psb from documentation Adrian Hunter
@ 2015-09-24 10:05 ` Adrian Hunter
  2015-09-26  6:22   ` [tip:perf/urgent] " tip-bot for Adrian Hunter
  2015-09-25 13:49 ` [PATCH 0/2] perf tools: Urgent fixes Arnaldo Carvalho de Melo
  2 siblings, 1 reply; 6+ messages in thread
From: Adrian Hunter @ 2015-09-24 10:05 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo; +Cc: Jiri Olsa, linux-kernel

A copy of /proc/kcore containing the kernel text can be made to the
buildid cache. e.g.

	perf buildid-cache -v -k /proc/kcore

To workaround objdump limitations, a copy is also made when annotating
against /proc/kcore.

The copying process stops working from libelf about v1.62 onwards
(the problem was found with v1.63).

The cause is that a call to gelf_getphdr() in kcore__add_phdr() fails
because additional validation has been added to gelf_getphdr().

The use of gelf_getphdr() is a misguided attempt to get default
initialization of the Gelf_Phdr structure.  That should not be
necessary because every member of the Gelf_Phdr structure is
subsequently assigned.  So just remove the call to gelf_getphdr().

Similarly, a call to gelf_getehdr() in gelf_kcore__init() can be
removed also.

Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
---
 tools/perf/util/symbol-elf.c | 35 +++++++++++++----------------------
 1 file changed, 13 insertions(+), 22 deletions(-)

diff --git a/tools/perf/util/symbol-elf.c b/tools/perf/util/symbol-elf.c
index f78ea3dc4c08..475d88d0a1c9 100644
--- a/tools/perf/util/symbol-elf.c
+++ b/tools/perf/util/symbol-elf.c
@@ -1271,8 +1271,6 @@ out_close:
 static int kcore__init(struct kcore *kcore, char *filename, int elfclass,
 		       bool temp)
 {
-	GElf_Ehdr *ehdr;
-
 	kcore->elfclass = elfclass;
 
 	if (temp)
@@ -1289,9 +1287,7 @@ static int kcore__init(struct kcore *kcore, char *filename, int elfclass,
 	if (!gelf_newehdr(kcore->elf, elfclass))
 		goto out_end;
 
-	ehdr = gelf_getehdr(kcore->elf, &kcore->ehdr);
-	if (!ehdr)
-		goto out_end;
+	memset(&kcore->ehdr, 0, sizeof(GElf_Ehdr));
 
 	return 0;
 
@@ -1348,23 +1344,18 @@ static int kcore__copy_hdr(struct kcore *from, struct kcore *to, size_t count)
 static int kcore__add_phdr(struct kcore *kcore, int idx, off_t offset,
 			   u64 addr, u64 len)
 {
-	GElf_Phdr gphdr;
-	GElf_Phdr *phdr;
-
-	phdr = gelf_getphdr(kcore->elf, idx, &gphdr);
-	if (!phdr)
-		return -1;
-
-	phdr->p_type	= PT_LOAD;
-	phdr->p_flags	= PF_R | PF_W | PF_X;
-	phdr->p_offset	= offset;
-	phdr->p_vaddr	= addr;
-	phdr->p_paddr	= 0;
-	phdr->p_filesz	= len;
-	phdr->p_memsz	= len;
-	phdr->p_align	= page_size;
-
-	if (!gelf_update_phdr(kcore->elf, idx, phdr))
+	GElf_Phdr phdr = {
+		.p_type		= PT_LOAD,
+		.p_flags	= PF_R | PF_W | PF_X,
+		.p_offset	= offset,
+		.p_vaddr	= addr,
+		.p_paddr	= 0,
+		.p_filesz	= len,
+		.p_memsz	= len,
+		.p_align	= page_size,
+	};
+
+	if (!gelf_update_phdr(kcore->elf, idx, &phdr))
 		return -1;
 
 	return 0;
-- 
1.9.1


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

* Re: [PATCH 0/2] perf tools: Urgent fixes
  2015-09-24 10:05 [PATCH 0/2] perf tools: Urgent fixes Adrian Hunter
  2015-09-24 10:05 ` [PATCH 1/2] perf intel-pt: Remove no_force_psb from documentation Adrian Hunter
  2015-09-24 10:05 ` [PATCH 2/2] perf tools: Fix copying of /proc/kcore Adrian Hunter
@ 2015-09-25 13:49 ` Arnaldo Carvalho de Melo
  2 siblings, 0 replies; 6+ messages in thread
From: Arnaldo Carvalho de Melo @ 2015-09-25 13:49 UTC (permalink / raw)
  To: Adrian Hunter; +Cc: Jiri Olsa, linux-kernel

Em Thu, Sep 24, 2015 at 01:05:20PM +0300, Adrian Hunter escreveu:
> Hi
> 
> Here are a couple of urgent fixes for v4.3.
> 
> The "Fix copying of /proc/kcore" problem goes back to v3.13
> if you think it is important enough for stable.

I added a Cc: stable@kernel.org and your notes to the commit log.

Thanks, applied.

- Arnaldo

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

* [tip:perf/urgent] perf intel-pt: Remove no_force_psb from documentation
  2015-09-24 10:05 ` [PATCH 1/2] perf intel-pt: Remove no_force_psb from documentation Adrian Hunter
@ 2015-09-26  6:21   ` tip-bot for Adrian Hunter
  0 siblings, 0 replies; 6+ messages in thread
From: tip-bot for Adrian Hunter @ 2015-09-26  6:21 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: adrian.hunter, acme, mingo, hpa, jolsa, linux-kernel, tglx

Commit-ID:  597ee40722bf05195f91a41e88e15b79bdab152c
Gitweb:     http://git.kernel.org/tip/597ee40722bf05195f91a41e88e15b79bdab152c
Author:     Adrian Hunter <adrian.hunter@intel.com>
AuthorDate: Thu, 24 Sep 2015 13:05:21 +0300
Committer:  Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Fri, 25 Sep 2015 10:42:38 -0300

perf intel-pt: Remove no_force_psb from documentation

no_force_psb was dropped as a late change to the kernel driver.
Consequently, remove it from the documentation.

Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Link: http://lkml.kernel.org/r/1443089122-19082-2-git-send-email-adrian.hunter@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/Documentation/intel-pt.txt | 15 ---------------
 1 file changed, 15 deletions(-)

diff --git a/tools/perf/Documentation/intel-pt.txt b/tools/perf/Documentation/intel-pt.txt
index 4a0501d..c94c9de 100644
--- a/tools/perf/Documentation/intel-pt.txt
+++ b/tools/perf/Documentation/intel-pt.txt
@@ -364,21 +364,6 @@ cyc_thresh	Specifies how frequently CYC packets are produced - see cyc
 
 		CYC packets are not requested by default.
 
-no_force_psb	This is a driver option and is not in the IA32_RTIT_CTL MSR.
-
-		It stops the driver resetting the byte count to zero whenever
-		enabling the trace (for example on context switches) which in
-		turn results in no PSB being forced.  However some processors
-		will produce a PSB anyway.
-
-		In any case, there is still a PSB when the trace is enabled for
-		the first time.
-
-		no_force_psb can be used to slightly decrease the trace size but
-		may make it harder for the decoder to recover from errors.
-
-		no_force_psb is not selected by default.
-
 
 new snapshot option
 -------------------

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

* [tip:perf/urgent] perf tools: Fix copying of /proc/kcore
  2015-09-24 10:05 ` [PATCH 2/2] perf tools: Fix copying of /proc/kcore Adrian Hunter
@ 2015-09-26  6:22   ` tip-bot for Adrian Hunter
  0 siblings, 0 replies; 6+ messages in thread
From: tip-bot for Adrian Hunter @ 2015-09-26  6:22 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: acme, hpa, jolsa, tglx, linux-kernel, mingo, adrian.hunter

Commit-ID:  b5cabbcbd157a4bf5a92dfc85134999a3b55342d
Gitweb:     http://git.kernel.org/tip/b5cabbcbd157a4bf5a92dfc85134999a3b55342d
Author:     Adrian Hunter <adrian.hunter@intel.com>
AuthorDate: Thu, 24 Sep 2015 13:05:22 +0300
Committer:  Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Fri, 25 Sep 2015 10:45:50 -0300

perf tools: Fix copying of /proc/kcore

A copy of /proc/kcore containing the kernel text can be made to the
buildid cache. e.g.

	perf buildid-cache -v -k /proc/kcore

To workaround objdump limitations, a copy is also made when annotating
against /proc/kcore.

The copying process stops working from libelf about v1.62 onwards (the
problem was found with v1.63).

The cause is that a call to gelf_getphdr() in kcore__add_phdr() fails
because additional validation has been added to gelf_getphdr().

The use of gelf_getphdr() is a misguided attempt to get default
initialization of the Gelf_Phdr structure.  That should not be
necessary because every member of the Gelf_Phdr structure is
subsequently assigned.  So just remove the call to gelf_getphdr().

Similarly, a call to gelf_getehdr() in gelf_kcore__init() can be
removed also.

Committer notes:

Note to stable@kernel.org, from Adrian in the cover letter for this
patchkit:

The "Fix copying of /proc/kcore" problem goes back to v3.13 if you think
it is important enough for stable.

Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: stable@kernel.org
Link: http://lkml.kernel.org/r/1443089122-19082-3-git-send-email-adrian.hunter@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/util/symbol-elf.c | 35 +++++++++++++----------------------
 1 file changed, 13 insertions(+), 22 deletions(-)

diff --git a/tools/perf/util/symbol-elf.c b/tools/perf/util/symbol-elf.c
index f78ea3d..475d88d 100644
--- a/tools/perf/util/symbol-elf.c
+++ b/tools/perf/util/symbol-elf.c
@@ -1271,8 +1271,6 @@ out_close:
 static int kcore__init(struct kcore *kcore, char *filename, int elfclass,
 		       bool temp)
 {
-	GElf_Ehdr *ehdr;
-
 	kcore->elfclass = elfclass;
 
 	if (temp)
@@ -1289,9 +1287,7 @@ static int kcore__init(struct kcore *kcore, char *filename, int elfclass,
 	if (!gelf_newehdr(kcore->elf, elfclass))
 		goto out_end;
 
-	ehdr = gelf_getehdr(kcore->elf, &kcore->ehdr);
-	if (!ehdr)
-		goto out_end;
+	memset(&kcore->ehdr, 0, sizeof(GElf_Ehdr));
 
 	return 0;
 
@@ -1348,23 +1344,18 @@ static int kcore__copy_hdr(struct kcore *from, struct kcore *to, size_t count)
 static int kcore__add_phdr(struct kcore *kcore, int idx, off_t offset,
 			   u64 addr, u64 len)
 {
-	GElf_Phdr gphdr;
-	GElf_Phdr *phdr;
-
-	phdr = gelf_getphdr(kcore->elf, idx, &gphdr);
-	if (!phdr)
-		return -1;
-
-	phdr->p_type	= PT_LOAD;
-	phdr->p_flags	= PF_R | PF_W | PF_X;
-	phdr->p_offset	= offset;
-	phdr->p_vaddr	= addr;
-	phdr->p_paddr	= 0;
-	phdr->p_filesz	= len;
-	phdr->p_memsz	= len;
-	phdr->p_align	= page_size;
-
-	if (!gelf_update_phdr(kcore->elf, idx, phdr))
+	GElf_Phdr phdr = {
+		.p_type		= PT_LOAD,
+		.p_flags	= PF_R | PF_W | PF_X,
+		.p_offset	= offset,
+		.p_vaddr	= addr,
+		.p_paddr	= 0,
+		.p_filesz	= len,
+		.p_memsz	= len,
+		.p_align	= page_size,
+	};
+
+	if (!gelf_update_phdr(kcore->elf, idx, &phdr))
 		return -1;
 
 	return 0;

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

end of thread, other threads:[~2015-09-26  6:22 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-09-24 10:05 [PATCH 0/2] perf tools: Urgent fixes Adrian Hunter
2015-09-24 10:05 ` [PATCH 1/2] perf intel-pt: Remove no_force_psb from documentation Adrian Hunter
2015-09-26  6:21   ` [tip:perf/urgent] " tip-bot for Adrian Hunter
2015-09-24 10:05 ` [PATCH 2/2] perf tools: Fix copying of /proc/kcore Adrian Hunter
2015-09-26  6:22   ` [tip:perf/urgent] " tip-bot for Adrian Hunter
2015-09-25 13:49 ` [PATCH 0/2] perf tools: Urgent fixes Arnaldo Carvalho de Melo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox