[Devel] [PATCH RHEL7 COMMIT] Revert "Revert "perf tools: Stop fallbacking to kallsyms for vdso symbols lookup""

Konstantin Khorenko khorenko at virtuozzo.com
Thu Apr 23 12:12:50 MSK 2020


The commit is pushed to "branch-rh7-3.10.0-1127.vz7.150.x-ovz" and will appear at https://src.openvz.org/scm/ovz/vzkernel.git
after rh7-3.10.0-1127.vz7.150.3
------>
commit 1f7ab462e1b187694c6dd10540a28c902cdaa308
Author: Konstantin Khorenko <khorenko at virtuozzo.com>
Date:   Thu Apr 23 12:07:48 2020 +0300

    Revert "Revert "perf tools: Stop fallbacking to kallsyms for vdso symbols lookup""
    
    This reverts commit 49810a59cbad72071eed763958a41fe0a6880b98.
    
    RedHat has fixed the original issue of non-working perf
    https://jira.sw.ru/browse/HCI-128
    (symbols were not shown correctly)
    
    So, 3 other patches fix the original issue and we now safe to drop the
    patch revert.
    
    * Mon Oct 14 2019 Jan Stancek <jstancek at redhat.com> [3.10.0-1103.el7]
    
     - [tools] perf callchain: Honour the ordering of PERF_CONTEXT_{USER,
       KERNEL, etc} (Michael Petlan) [1758046]
     - [tools] perf callchain: Stop validating callchains by the max_stack
       sysctl (Michael Petlan) [1758046]
     - [tools] perf tools: Separate accounting of contexts and real
       addresses in a stack trace (Michael Petlan) [1758046]
    
    https://jira.sw.ru/browse/PSBM-100150
    
    Signed-off-by: Konstantin Khorenko <khorenko at virtuozzo.com>
---
 tools/perf/util/event.c | 21 ++-------------------
 1 file changed, 2 insertions(+), 19 deletions(-)

diff --git a/tools/perf/util/event.c b/tools/perf/util/event.c
index 55c93bf1b4983..a7bab025f563e 100644
--- a/tools/perf/util/event.c
+++ b/tools/perf/util/event.c
@@ -1417,26 +1417,9 @@ struct map *thread__find_map(struct thread *thread, u8 cpumode, u64 addr,
 
 		return NULL;
 	}
-try_again:
+
 	al->map = map_groups__find(mg, al->addr);
-	if (al->map == NULL) {
-		/*
-		 * If this is outside of all known maps, and is a negative
-		 * address, try to look it up in the kernel dso, as it might be
-		 * a vsyscall or vdso (which executes in user-mode).
-		 *
-		 * XXX This is nasty, we should have a symbol list in the
-		 * "[vdso]" dso, but for now lets use the old trick of looking
-		 * in the whole kernel symbol list.
-		 */
-		if (cpumode == PERF_RECORD_MISC_USER && machine &&
-		    mg != &machine->kmaps &&
-		    machine__kernel_ip(machine, al->addr)) {
-			mg = &machine->kmaps;
-			load_map = true;
-			goto try_again;
-		}
-	} else {
+	if (al->map != NULL) {
 		/*
 		 * Kernel maps might be changed when loading symbols so loading
 		 * must be done prior to using kernel maps.


More information about the Devel mailing list