All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kim Phillips <kim.phillips@arm.com>
To: Namhyung Kim <namhyung@kernel.org>
Cc: Arnaldo Carvalho de Melo <acme@kernel.org>,
	Jiri Olsa <jolsa@redhat.com>, Ingo Molnar <mingo@kernel.org>,
	Peter Zijlstra <a.p.zijlstra@chello.nl>,
	Jiri Olsa <jolsa@kernel.org>, LKML <linux-kernel@vger.kernel.org>,
	<kernel-team@lge.com>
Subject: Re: [PATCH] perf tools: set kernel end address properly
Date: Thu, 19 Apr 2018 18:20:24 -0500	[thread overview]
Message-ID: <20180419182024.5d3bc71deef99551cc19fc55@arm.com> (raw)
In-Reply-To: <20180419023712.GB13370@sejong>

On Thu, 19 Apr 2018 11:37:12 +0900
Namhyung Kim <namhyung@kernel.org> wrote:

> On Wed, Apr 18, 2018 at 07:37:59PM -0500, Kim Phillips wrote:
> > On Tue, 17 Apr 2018 11:27:26 +0900
> > Namhyung Kim <namhyung@kernel.org> wrote:
> > > On Mon, Apr 16, 2018 at 05:48:11PM -0500, Kim Phillips wrote:
> > > > > a perf/urgent from last week (commit 918965d4897) + this patch:
> > > > > 
> > > > > $ sudo ./perf test -vv 1 |& head 
> > > > >  1: vmlinux symtab matches kallsyms                       :
> > > > > --- start ---
> > > > > test child forked, pid 6194
> > > > > Looking at the vmlinux_path (8 entries long)
> > > > > Using /lib/modules/4.16.0+/build/vmlinux for symbols
> > > > > ERR : 0xffff200008081000: do_undefinstr not on kallsyms
> > > > > ERR : 0xffff2000080810b8: do_sysinstr not on kallsyms
> > > > > ERR : 0xffff200008081258: do_debug_exception not on kallsyms
> > > > > ERR : 0xffff200008081648: do_mem_abort not on kallsyms
> > > > > ERR : 0xffff2000080818b8: do_el0_irq_bp_hardening not on kallsyms
> > > > > $ sudo ./perf test -vv 1 |& tail
> > > > > ERR : 0xffff20000a1d37c8: tramp_exit_native not on kallsyms
> > > > > ERR : 0xffff20000a1d37e8: tramp_exit_compat not on kallsyms
> > > > > ERR : 0xffff20000a1d4000: __entry_tramp_text_end not on kallsyms
> > > > > WARN: Maps only in vmlinux:
> > > > >  ffff200008080000-ffff200008081000 10000 [kernel].head.text
> > > > >  ffff20000aec0000-ffff20000aff7548 2e50000 [kernel].init.text
> > > > >  ffff20000aff7548-ffff20000b0126d4 2f87548 [kernel].exit.text
> > > > > test child finished with -1
> > > > > ---- end ----
> > > > > vmlinux symtab matches kallsyms: FAILED!
> > > > 
> > > > this patch's advertised "If there's no module after the kernel map, the
> > > > end address will be ~0ULL." doesn't seem to be working: the value it
> > > > gets for 'end' is 0xffff200008080000.
> > > 
> > > For the vmlinux, right?
> > 
> > yes, map__next(machine__kernel_map(machine)) has the start address
> > of the single module currently loaded:
> > 
> > ffff200002290000 t $x	[arm_ccn]
> > ffff200002290000 t arm_ccn_pmu_events_is_visible	[arm_ccn]
> > 
> > The beginning of the kernel is..later:
> > 
> > ffff200008080000 t _head
> > ffff200008080000 T _text
> > 
> > and its end according to grep -w _end /proc/kallsyms is:
> > 
> > ffff20000d5f9000 B _end
> > 
> > but end was assigned to the beginning of arm_ccn (0xffff200002290000),
> > which is upside-down.
> 
> So ARM64 has modules below the kernel.

right.

> > > To be precise, it should be "If there's no map after the kernel map".
> > 
> > In numerical address order, in maps in map_groups__insert order, or
> > some other order?
> 
> The map_groups__insert() also sorts the map by address, so they should

Had missed that, sorry.

> be identical.  I think the problem is perf assumes the kernel is the
> first map in the kmaps.  When it calls maps_groups__insert() it uses
> start address of 0 for the kernel map.  It seems always true for x86
> but not for ARM64.
> 
> While it changes the start address in machine__set_kernel_mmap() it
> doesn't change the order in the kmaps.
> 
> Could you please test below patch (on top) then?

Much better, thank you!  Together with the "module_emit_adrp_veneer not
on kallsyms" mitigation diff, test 1 now passes on arm64 systems both
with modules loaded, and without, and with and without RANDOMIZE_BASE.

I would send a patch (From: you), but I think you'd do a better job on
writing the commit text, so would you care to, please?

Thanks,

Kim

  reply	other threads:[~2018-04-19 23:20 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-04-16  4:22 [PATCH] perf tools: set kernel end address properly Namhyung Kim
2018-04-16  9:23 ` Jiri Olsa
2018-04-16 13:51   ` Arnaldo Carvalho de Melo
2018-04-16 16:07     ` Kim Phillips
2018-04-16 16:58       ` Arnaldo Carvalho de Melo
2018-04-16 17:24         ` Kim Phillips
2018-04-16 22:48           ` Kim Phillips
2018-04-17  2:27             ` Namhyung Kim
2018-04-19  0:37               ` Kim Phillips
2018-04-19  2:37                 ` Namhyung Kim
2018-04-19 23:20                   ` Kim Phillips [this message]
2018-04-19 23:59                     ` Namhyung Kim
2018-04-20 23:23                       ` Kim Phillips
2018-04-23 13:52                         ` Arnaldo Carvalho de Melo
2018-04-23 14:56                           ` Kim Phillips
2018-04-26  5:51                       ` [tip:perf/urgent] perf machine: Set main " tip-bot for Namhyung Kim
2018-04-19  2:54                 ` [PATCH] perf tools: set " Namhyung Kim
2018-04-19 23:33                   ` Kim Phillips
2018-04-20  0:11                     ` Namhyung Kim
2018-04-20  8:10                     ` Ard Biesheuvel
2018-04-23 21:43                       ` Kim Phillips
2018-04-24  6:13                         ` Ard Biesheuvel
2018-04-24 12:50                           ` Kim Phillips
2018-04-24 13:07                             ` Ard Biesheuvel
2018-04-24 15:13                               ` [PATCH] arm64/kernel: rename module_emit_adrp_veneer->module_emit_veneer_for_adrp Kim Phillips
2018-04-24 15:13                                 ` Kim Phillips
2018-04-24 15:15                                 ` Ard Biesheuvel
2018-04-24 15:15                                   ` Ard Biesheuvel
2018-04-24 15:39                                   ` [PATCH v2] " Kim Phillips
2018-04-24 15:39                                     ` Kim Phillips

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=20180419182024.5d3bc71deef99551cc19fc55@arm.com \
    --to=kim.phillips@arm.com \
    --cc=a.p.zijlstra@chello.nl \
    --cc=acme@kernel.org \
    --cc=jolsa@kernel.org \
    --cc=jolsa@redhat.com \
    --cc=kernel-team@lge.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=namhyung@kernel.org \
    /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 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.