Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp1154218pxu; Fri, 27 Nov 2020 00:38:08 -0800 (PST) X-Google-Smtp-Source: ABdhPJwIHAKsC6gwrz6AEJYpEbKdmG/FTgmU+yqrE2Ll6P//7ZLfKlV5Plz6RHIozdoZxcM7Byyn X-Received: by 2002:a17:906:6d13:: with SMTP id m19mr6612243ejr.345.1606466287968; Fri, 27 Nov 2020 00:38:07 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1606466287; cv=none; d=google.com; s=arc-20160816; b=WrH+NB/BX3mTLEp+RPdNj9GGaiGRixPolSGJuzxMmCoKZo9dK3MsIJMrfSCCNL1QOt qYGLqlt4aG39SxiIC7zHQy+zlHgfpj5LRvtxEt6nDjcAPAUG6GyJY+c5USr6xL4W6iB4 zjqCjbTEGlvhAB3PZLPw2KGvCMxn3d6rxagyTnZ2QUP5RegqE/RfZWSMVDptQyRuEMFW H1uJ92NFWJNUFKT7TOeoG39LZdpj8kHSi+s/fZOuMgP7OSfQExrt2EzFgqJBn3YXjm5n t+xG4Ll+aqdVDg3L7+0vyLAj7iKPp2shA2+mrjn3EHgBORB8heh+/NR5s5xKQKd+CbEI sjuQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=GsnG0DEF4157qvZPIZpsse4XyNwMeGomS3sOxMON2gc=; b=DWLndJoqm0KlkRAjW/A3aEtO9kUwKcKwWmZiHha7AFDR5VL/JD5vOnI7HLfsYBIFJv 92YPYNjJuHPGd17JZmHBU3jBlnNmP46xq+QoknSn7VP8QlDPjZxbtRXb5PiiC85Ny7H/ TqwmWgvahoTtNhkbMDgd3reux3wDvkVJxcn2WbS5fk51a+u3mHdUtEB2YREAyi+8iSNp JvTSfMkR7zEF7gZMeeX4lfQbkoQaSsKDfTzAm00/hv/kaD38igolvlckkieTlXtbXmCl 8yQqCicqRq6c1nt445aussUUT2DuftrXzybBCse8s6BTW+sWEJBqNyruBB4lb4h62+VM TeJQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=ejaVufY6; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id u19si5593749edo.433.2020.11.27.00.37.45; Fri, 27 Nov 2020 00:38:07 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=ejaVufY6; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2404547AbgKZRs6 (ORCPT + 99 others); Thu, 26 Nov 2020 12:48:58 -0500 Received: from mail.kernel.org ([198.145.29.99]:42866 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2404191AbgKZRs6 (ORCPT ); Thu, 26 Nov 2020 12:48:58 -0500 Received: from quaco.ghostprotocols.net (unknown [179.97.37.151]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 17E692053B; Thu, 26 Nov 2020 17:48:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1606412937; bh=F1BSjmQM9ALhiKXa6yBdZ6tAqKerL8aFo9e3Lq9AalE=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=ejaVufY6pvfZdY5Yn58UuwGxGghVSVcg8WfJmEyP/PrVyGJ9DRDGkZHiLm9xhbhM1 908KiL7hkmM84L37hPHeKo9Npu+evt8Gfwagi7Te/zoy3D9BhYUUps23fHA9eJa0ta aL9NkzjdnFfDNfdrdKk7zafRTrfgl1Oildhu81IE= Received: by quaco.ghostprotocols.net (Postfix, from userid 1000) id E85A240E29; Thu, 26 Nov 2020 14:48:54 -0300 (-03) Date: Thu, 26 Nov 2020 14:48:54 -0300 From: Arnaldo Carvalho de Melo To: Jiri Olsa Cc: Ian Rogers , lkml , Peter Zijlstra , Ingo Molnar , Mark Rutland , Namhyung Kim , Alexander Shishkin , Michael Petlan , Song Liu , Stephane Eranian , Alexey Budankov , Andi Kleen , Adrian Hunter Subject: Re: [PATCH 11/25] perf tools: Use struct extra_kernel_map in machine__process_kernel_mmap_event Message-ID: <20201126174854.GC70905@kernel.org> References: <20201126170026.2619053-1-jolsa@kernel.org> <20201126170026.2619053-12-jolsa@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20201126170026.2619053-12-jolsa@kernel.org> X-Url: http://acmel.wordpress.com Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Em Thu, Nov 26, 2020 at 06:00:12PM +0100, Jiri Olsa escreveu: > Using struct extra_kernel_map in machine__process_kernel_mmap_event, > to pass mmap details. This way we can used single function for all 3 > mmap versions. Thanks, applied. - Arnaldo > Acked-by: Ian Rogers > Signed-off-by: Jiri Olsa > --- > tools/perf/util/machine.c | 62 +++++++++++++++++++++------------------ > 1 file changed, 33 insertions(+), 29 deletions(-) > > diff --git a/tools/perf/util/machine.c b/tools/perf/util/machine.c > index 15385ea00190..1ae32a81639c 100644 > --- a/tools/perf/util/machine.c > +++ b/tools/perf/util/machine.c > @@ -1581,32 +1581,25 @@ static bool machine__uses_kcore(struct machine *machine) > } > > static bool perf_event__is_extra_kernel_mmap(struct machine *machine, > - union perf_event *event) > + struct extra_kernel_map *xm) > { > return machine__is(machine, "x86_64") && > - is_entry_trampoline(event->mmap.filename); > + is_entry_trampoline(xm->name); > } > > static int machine__process_extra_kernel_map(struct machine *machine, > - union perf_event *event) > + struct extra_kernel_map *xm) > { > struct dso *kernel = machine__kernel_dso(machine); > - struct extra_kernel_map xm = { > - .start = event->mmap.start, > - .end = event->mmap.start + event->mmap.len, > - .pgoff = event->mmap.pgoff, > - }; > > if (kernel == NULL) > return -1; > > - strlcpy(xm.name, event->mmap.filename, KMAP_NAME_LEN); > - > - return machine__create_extra_kernel_map(machine, kernel, &xm); > + return machine__create_extra_kernel_map(machine, kernel, xm); > } > > static int machine__process_kernel_mmap_event(struct machine *machine, > - union perf_event *event) > + struct extra_kernel_map *xm) > { > struct map *map; > enum dso_space_type dso_space; > @@ -1621,20 +1614,18 @@ static int machine__process_kernel_mmap_event(struct machine *machine, > else > dso_space = DSO_SPACE__KERNEL_GUEST; > > - is_kernel_mmap = memcmp(event->mmap.filename, > - machine->mmap_name, > + is_kernel_mmap = memcmp(xm->name, machine->mmap_name, > strlen(machine->mmap_name) - 1) == 0; > - if (event->mmap.filename[0] == '/' || > - (!is_kernel_mmap && event->mmap.filename[0] == '[')) { > - map = machine__addnew_module_map(machine, event->mmap.start, > - event->mmap.filename); > + if (xm->name[0] == '/' || > + (!is_kernel_mmap && xm->name[0] == '[')) { > + map = machine__addnew_module_map(machine, xm->start, > + xm->name); > if (map == NULL) > goto out_problem; > > - map->end = map->start + event->mmap.len; > + map->end = map->start + xm->end - xm->start; > } else if (is_kernel_mmap) { > - const char *symbol_name = (event->mmap.filename + > - strlen(machine->mmap_name)); > + const char *symbol_name = (xm->name + strlen(machine->mmap_name)); > /* > * Should be there already, from the build-id table in > * the header. > @@ -1688,18 +1679,17 @@ static int machine__process_kernel_mmap_event(struct machine *machine, > if (strstr(kernel->long_name, "vmlinux")) > dso__set_short_name(kernel, "[kernel.vmlinux]", false); > > - machine__update_kernel_mmap(machine, event->mmap.start, > - event->mmap.start + event->mmap.len); > + machine__update_kernel_mmap(machine, xm->start, xm->end); > > /* > * Avoid using a zero address (kptr_restrict) for the ref reloc > * symbol. Effectively having zero here means that at record > * time /proc/sys/kernel/kptr_restrict was non zero. > */ > - if (event->mmap.pgoff != 0) { > + if (xm->pgoff != 0) { > map__set_kallsyms_ref_reloc_sym(machine->vmlinux_map, > symbol_name, > - event->mmap.pgoff); > + xm->pgoff); > } > > if (machine__is_default_guest(machine)) { > @@ -1708,8 +1698,8 @@ static int machine__process_kernel_mmap_event(struct machine *machine, > */ > dso__load(kernel, machine__kernel_map(machine)); > } > - } else if (perf_event__is_extra_kernel_mmap(machine, event)) { > - return machine__process_extra_kernel_map(machine, event); > + } else if (perf_event__is_extra_kernel_mmap(machine, xm)) { > + return machine__process_extra_kernel_map(machine, xm); > } > return 0; > out_problem: > @@ -1735,7 +1725,14 @@ int machine__process_mmap2_event(struct machine *machine, > > if (sample->cpumode == PERF_RECORD_MISC_GUEST_KERNEL || > sample->cpumode == PERF_RECORD_MISC_KERNEL) { > - ret = machine__process_kernel_mmap_event(machine, event); > + struct extra_kernel_map xm = { > + .start = event->mmap2.start, > + .end = event->mmap2.start + event->mmap2.len, > + .pgoff = event->mmap2.pgoff, > + }; > + > + strlcpy(xm.name, event->mmap2.filename, KMAP_NAME_LEN); > + ret = machine__process_kernel_mmap_event(machine, &xm); > if (ret < 0) > goto out_problem; > return 0; > @@ -1785,7 +1782,14 @@ int machine__process_mmap_event(struct machine *machine, union perf_event *event > > if (sample->cpumode == PERF_RECORD_MISC_GUEST_KERNEL || > sample->cpumode == PERF_RECORD_MISC_KERNEL) { > - ret = machine__process_kernel_mmap_event(machine, event); > + struct extra_kernel_map xm = { > + .start = event->mmap.start, > + .end = event->mmap.start + event->mmap.len, > + .pgoff = event->mmap.pgoff, > + }; > + > + strlcpy(xm.name, event->mmap.filename, KMAP_NAME_LEN); > + ret = machine__process_kernel_mmap_event(machine, &xm); > if (ret < 0) > goto out_problem; > return 0; > -- > 2.26.2 > -- - Arnaldo