From patchwork Tue Sep 6 04:58:27 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wang Nan X-Patchwork-Id: 75456 Delivered-To: patch@linaro.org Received: by 10.140.106.11 with SMTP id d11csp360455qgf; Mon, 5 Sep 2016 21:59:34 -0700 (PDT) X-Received: by 10.66.151.9 with SMTP id um9mr45660551pab.85.1473137974124; Mon, 05 Sep 2016 21:59:34 -0700 (PDT) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id f81si19948152pfj.40.2016.09.05.21.59.33; Mon, 05 Sep 2016 21:59:34 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754651AbcIFE7M (ORCPT + 27 others); Tue, 6 Sep 2016 00:59:12 -0400 Received: from szxga01-in.huawei.com ([58.251.152.64]:11963 "EHLO szxga01-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752784AbcIFE7E (ORCPT ); Tue, 6 Sep 2016 00:59:04 -0400 Received: from 172.24.1.136 (EHLO szxeml432-hub.china.huawei.com) ([172.24.1.136]) by szxrg01-dlp.huawei.com (MOS 4.3.7-GA FastPath queued) with ESMTP id DQQ84618; Tue, 06 Sep 2016 12:58:41 +0800 (CST) Received: from linux-4hy3.site (10.107.193.248) by szxeml432-hub.china.huawei.com (10.82.67.209) with Microsoft SMTP Server id 14.3.235.1; Tue, 6 Sep 2016 12:58:34 +0800 From: Wang Nan To: CC: , , , Wang Nan , Hou Pengyang , He Kuang , "Arnaldo Carvalho de Melo" Subject: [PATCH v2 1/3] perf tools: Recognize hugetlb mapping as anon mapping Date: Tue, 6 Sep 2016 04:58:27 +0000 Message-ID: <1473137909-142064-2-git-send-email-wangnan0@huawei.com> X-Mailer: git-send-email 1.8.3.4 In-Reply-To: <1473137909-142064-1-git-send-email-wangnan0@huawei.com> References: <1473137909-142064-1-git-send-email-wangnan0@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.107.193.248] X-CFilter-Loop: Reflected X-Mirapoint-Virus-RAPID-Raw: score=unknown(0), refid=str=0001.0A020206.57CE4D01.0138, ss=1, re=0.000, recu=0.000, reip=0.000, cl=1, cld=1, fgs=0, ip=0.0.0.0, so=2013-06-18 04:22:30, dmn=2013-03-21 17:37:32 X-Mirapoint-Loop-Id: 265a66b594559a230258b8bc5f48b7d5 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hugetlbfs mapping should be recognized as anon mapping so user has a chance to create /tmp/perf-.map file for symbol resolving. This patch utilizes MAP_HUGETLB to identify hugetlb mapping. After this patch, if perf is started before the program starts using huge pages (so perf gets MMAP2 events from kernel), perf is able to recognize hugetlb mapping as anon mapping. Signed-off-by: Wang Nan Signed-off-by: Hou Pengyang Cc: He Kuang Cc: Arnaldo Carvalho de Melo Cc: Nilay Vaish --- tools/perf/util/map.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) -- 1.8.3.4 diff --git a/tools/perf/util/map.c b/tools/perf/util/map.c index 728129a..f52d460 100644 --- a/tools/perf/util/map.c +++ b/tools/perf/util/map.c @@ -6,6 +6,7 @@ #include #include #include +#include #include "map.h" #include "thread.h" #include "strlist.h" @@ -24,9 +25,15 @@ const char *map_type__name[MAP__NR_TYPES] = { [MAP__VARIABLE] = "Variables", }; -static inline int is_anon_memory(const char *filename) +static inline int is_anon_memory(const char *filename, u32 flags) { - return !strcmp(filename, "//anon") || + u32 anon_flags = 0; + +#ifdef MAP_HUGETLB + anon_flags |= MAP_HUGETLB; +#endif + return flags & anon_flags || + !strcmp(filename, "//anon") || !strncmp(filename, "/dev/zero", sizeof("/dev/zero") - 1) || !strncmp(filename, "/anon_hugepage", sizeof("/anon_hugepage") - 1); } @@ -155,7 +162,7 @@ struct map *map__new(struct machine *machine, u64 start, u64 len, int anon, no_dso, vdso, android; android = is_android_lib(filename); - anon = is_anon_memory(filename); + anon = is_anon_memory(filename, flags); vdso = is_vdso_map(filename); no_dso = is_no_dso_memory(filename);