From patchwork Tue Sep 20 20:03:35 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnaldo Carvalho de Melo X-Patchwork-Id: 76633 Delivered-To: patch@linaro.org Received: by 10.140.106.72 with SMTP id d66csp1665048qgf; Tue, 20 Sep 2016 13:07:25 -0700 (PDT) X-Received: by 10.98.192.130 with SMTP id g2mr58421863pfk.54.1474402045403; Tue, 20 Sep 2016 13:07:25 -0700 (PDT) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id x80si33516475pff.54.2016.09.20.13.07.25; Tue, 20 Sep 2016 13:07:25 -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 S1754874AbcITUHG (ORCPT + 27 others); Tue, 20 Sep 2016 16:07:06 -0400 Received: from merlin.infradead.org ([205.233.59.134]:39074 "EHLO merlin.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754107AbcITUEa (ORCPT ); Tue, 20 Sep 2016 16:04:30 -0400 Received: from 179-240-166-80.3g.claro.net.br ([179.240.166.80] helo=jouet.infradead.org) by merlin.infradead.org with esmtpsa (Exim 4.85_2 #1 (Red Hat Linux)) id 1bmRHB-0007Z7-Qj; Tue, 20 Sep 2016 20:04:22 +0000 Received: by jouet.infradead.org (Postfix, from userid 1000) id C2CED140F7D; Tue, 20 Sep 2016 17:04:09 -0300 (BRT) From: Arnaldo Carvalho de Melo To: Ingo Molnar Cc: linux-kernel@vger.kernel.org, Wang Nan , Ravi Bangoria , Zefan Li , pi3orama@163.com, Arnaldo Carvalho de Melo Subject: [PATCH 15/22] tools include: Add mman macros needed by perf for all arch Date: Tue, 20 Sep 2016 17:03:35 -0300 Message-Id: <1474401822-18902-16-git-send-email-acme@kernel.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1474401822-18902-1-git-send-email-acme@kernel.org> References: <1474401822-18902-1-git-send-email-acme@kernel.org> X-SRS-Rewrite: SMTP reverse-path rewritten from by merlin.infradead.org. See http://www.infradead.org/rpr.html Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Wang Nan Some macros required by tools/perf/trace/beauty/mmap.c is not support for all architectures. For example, MAP_32BIT is defined on x86 only, alpha doesn't define MADV_HWPOISON and MADV_SOFT_OFFLINE. This patch regenerates mman.h for each arch, defines these missing macros for perf. For missing MADV_*, fall back to asm-generic/mman-common because they are in a 'case ...' statement. For flags, define it to 0. Following is the script to generate this patch: macros=`cat $0 | awk 'V==1 {print}; /^# start macro list/ {V=1}'` rm `find ./tools/arch/ -name mman.h` for arch in `ls tools/arch` do [ -d tools/arch/$arch/include/uapi/asm ] || mkdir -p tools/arch/$arch/include/uapi/asm src=arch/$arch/include/uapi/asm/mman.h target=tools/arch/$arch/include/uapi/asm/mman.h.tmp real_target=tools/arch/$arch/include/uapi/asm/mman.h guard="TOOLS_ARCH_"`echo $arch | awk '{print toupper($0)}'`_UAPI_ASM_MMAN_FIX_H rm -f $target [ -f $src ] && for m in $macros do if grep '#define[ \t]*'$m $src > /dev/null 2>&1 then grep -h '#define[ \t]*'$m $src | sed 's/[ \t]*\/\*.*$//g' >> $target fi done if [ -f $src ] then grep '#include > $target else echo "#include " >> $target fi touch $real_target for m in $macros do if cat << EOF | gcc -Itools/arch/$arch/include -Itools/arch/$arch/include/uapi -Iinclude/ -Iinclude/uapi -E - | grep $m > /dev/null 2>&1 #include #include $m EOF then echo "Fixing $m for $arch" echo "/* $m is undefined on $arch, fix it for perf */" >> $target if echo $m | grep '^MADV_' > /dev/null 2>&1 then grep -h '#define[ \t]*'$m include/uapi/asm-generic/mman-common.h | sed 's/[ \t]*\/\*.*$//g' >> $target else echo "#define $m 0" >> $target fi fi done real_target=tools/arch/$arch/include/uapi/asm/mman.h echo '#ifndef '$guard > $real_target echo '#define '$guard >> $real_target cat $target | sed 's|asm-generic|uapi/asm-generic|g' >> $real_target echo '#endif' >> $real_target rm $target echo "$real_target" done exit 0 # Following macros are extracted from: # tools/perf/trace/beauty/mmap.c # # start macro list MADV_DODUMP MADV_DOFORK MADV_DONTDUMP MADV_DONTFORK MADV_DONTNEED MADV_FREE MADV_HUGEPAGE MADV_HWPOISON MADV_MERGEABLE MADV_NOHUGEPAGE MADV_NORMAL MADV_RANDOM MADV_REMOVE MADV_SEQUENTIAL MADV_SOFT_OFFLINE MADV_UNMERGEABLE MADV_WILLNEED MAP_32BIT MAP_ANONYMOUS MAP_DENYWRITE MAP_EXECUTABLE MAP_FILE MAP_FIXED MAP_GROWSDOWN MAP_HUGETLB MAP_LOCKED MAP_NONBLOCK MAP_NORESERVE MAP_POPULATE MAP_PRIVATE MAP_SHARED MAP_STACK MAP_UNINITIALIZED MREMAP_FIXED MREMAP_MAYMOVE PROT_EXEC PROT_GROWSDOWN PROT_GROWSUP PROT_NONE PROT_READ PROT_SEM PROT_WRITE Signed-off-by: Wang Nan Tested-by: Kim Phillips Tested-by: Naveen N. Rao Cc: Ravi Bangoria Cc: Zefan Li Cc: pi3orama@163.com Fixes: 277cf08f3feb ("perf trace beauty mmap: Fix defines for non !x86_64") Link: http://lkml.kernel.org/r/1473850649-83389-3-git-send-email-wangnan0@huawei.com Signed-off-by: Arnaldo Carvalho de Melo --- tools/arch/alpha/include/uapi/asm/mman.h | 9 +++++++++ tools/arch/arc/include/uapi/asm/mman.h | 2 ++ tools/arch/arm/include/uapi/asm/mman.h | 2 ++ tools/arch/arm64/include/uapi/asm/mman.h | 2 ++ tools/arch/frv/include/uapi/asm/mman.h | 2 ++ tools/arch/h8300/include/uapi/asm/mman.h | 2 ++ tools/arch/hexagon/include/uapi/asm/mman.h | 2 ++ tools/arch/ia64/include/uapi/asm/mman.h | 2 ++ tools/arch/m32r/include/uapi/asm/mman.h | 2 ++ tools/arch/microblaze/include/uapi/asm/mman.h | 2 ++ tools/arch/mips/include/uapi/asm/mman.h | 7 +++++++ tools/arch/mn10300/include/uapi/asm/mman.h | 2 ++ tools/arch/parisc/include/uapi/asm/mman.h | 9 +++++++++ tools/arch/powerpc/include/uapi/asm/mman.h | 2 ++ tools/arch/s390/include/uapi/asm/mman.h | 2 ++ tools/arch/score/include/uapi/asm/mman.h | 2 ++ tools/arch/sh/include/uapi/asm/mman.h | 2 ++ tools/arch/sparc/include/uapi/asm/mman.h | 2 ++ tools/arch/tile/include/uapi/asm/mman.h | 2 ++ tools/arch/xtensa/include/uapi/asm/mman.h | 9 +++++++++ 20 files changed, 66 insertions(+) -- 2.7.4 diff --git a/tools/arch/alpha/include/uapi/asm/mman.h b/tools/arch/alpha/include/uapi/asm/mman.h index 6ed4ad44a289..e38b64c82b97 100644 --- a/tools/arch/alpha/include/uapi/asm/mman.h +++ b/tools/arch/alpha/include/uapi/asm/mman.h @@ -5,6 +5,7 @@ #define MADV_DONTDUMP 16 #define MADV_DONTFORK 10 #define MADV_DONTNEED 6 +#define MADV_FREE 8 #define MADV_HUGEPAGE 14 #define MADV_MERGEABLE 12 #define MADV_NOHUGEPAGE 15 @@ -35,4 +36,12 @@ #define PROT_READ 0x1 #define PROT_SEM 0x8 #define PROT_WRITE 0x2 +/* MADV_HWPOISON is undefined on alpha, fix it for perf */ +#define MADV_HWPOISON 100 +/* MADV_SOFT_OFFLINE is undefined on alpha, fix it for perf */ +#define MADV_SOFT_OFFLINE 101 +/* MAP_32BIT is undefined on alpha, fix it for perf */ +#define MAP_32BIT 0 +/* MAP_UNINITIALIZED is undefined on alpha, fix it for perf */ +#define MAP_UNINITIALIZED 0 #endif diff --git a/tools/arch/arc/include/uapi/asm/mman.h b/tools/arch/arc/include/uapi/asm/mman.h index f76765dbaafa..aa3acd2aa9af 100644 --- a/tools/arch/arc/include/uapi/asm/mman.h +++ b/tools/arch/arc/include/uapi/asm/mman.h @@ -1,4 +1,6 @@ #ifndef TOOLS_ARCH_ARC_UAPI_ASM_MMAN_FIX_H #define TOOLS_ARCH_ARC_UAPI_ASM_MMAN_FIX_H #include +/* MAP_32BIT is undefined on arc, fix it for perf */ +#define MAP_32BIT 0 #endif diff --git a/tools/arch/arm/include/uapi/asm/mman.h b/tools/arch/arm/include/uapi/asm/mman.h index f2006385e203..478f699f56fd 100644 --- a/tools/arch/arm/include/uapi/asm/mman.h +++ b/tools/arch/arm/include/uapi/asm/mman.h @@ -1,4 +1,6 @@ #ifndef TOOLS_ARCH_ARM_UAPI_ASM_MMAN_FIX_H #define TOOLS_ARCH_ARM_UAPI_ASM_MMAN_FIX_H #include +/* MAP_32BIT is undefined on arm, fix it for perf */ +#define MAP_32BIT 0 #endif diff --git a/tools/arch/arm64/include/uapi/asm/mman.h b/tools/arch/arm64/include/uapi/asm/mman.h index a7dd975bb33e..70fd3113710a 100644 --- a/tools/arch/arm64/include/uapi/asm/mman.h +++ b/tools/arch/arm64/include/uapi/asm/mman.h @@ -1,4 +1,6 @@ #ifndef TOOLS_ARCH_ARM64_UAPI_ASM_MMAN_FIX_H #define TOOLS_ARCH_ARM64_UAPI_ASM_MMAN_FIX_H #include +/* MAP_32BIT is undefined on arm64, fix it for perf */ +#define MAP_32BIT 0 #endif diff --git a/tools/arch/frv/include/uapi/asm/mman.h b/tools/arch/frv/include/uapi/asm/mman.h index 99bba054e795..5be78ac12464 100644 --- a/tools/arch/frv/include/uapi/asm/mman.h +++ b/tools/arch/frv/include/uapi/asm/mman.h @@ -1,4 +1,6 @@ #ifndef TOOLS_ARCH_FRV_UAPI_ASM_MMAN_FIX_H #define TOOLS_ARCH_FRV_UAPI_ASM_MMAN_FIX_H #include +/* MAP_32BIT is undefined on frv, fix it for perf */ +#define MAP_32BIT 0 #endif diff --git a/tools/arch/h8300/include/uapi/asm/mman.h b/tools/arch/h8300/include/uapi/asm/mman.h index df95096c2a7a..9d9ac54d3c5a 100644 --- a/tools/arch/h8300/include/uapi/asm/mman.h +++ b/tools/arch/h8300/include/uapi/asm/mman.h @@ -1,4 +1,6 @@ #ifndef TOOLS_ARCH_H8300_UAPI_ASM_MMAN_FIX_H #define TOOLS_ARCH_H8300_UAPI_ASM_MMAN_FIX_H #include +/* MAP_32BIT is undefined on h8300, fix it for perf */ +#define MAP_32BIT 0 #endif diff --git a/tools/arch/hexagon/include/uapi/asm/mman.h b/tools/arch/hexagon/include/uapi/asm/mman.h index f1adcce90f37..102f3fae6085 100644 --- a/tools/arch/hexagon/include/uapi/asm/mman.h +++ b/tools/arch/hexagon/include/uapi/asm/mman.h @@ -1,4 +1,6 @@ #ifndef TOOLS_ARCH_HEXAGON_UAPI_ASM_MMAN_FIX_H #define TOOLS_ARCH_HEXAGON_UAPI_ASM_MMAN_FIX_H #include +/* MAP_32BIT is undefined on hexagon, fix it for perf */ +#define MAP_32BIT 0 #endif diff --git a/tools/arch/ia64/include/uapi/asm/mman.h b/tools/arch/ia64/include/uapi/asm/mman.h index 23420eb30d92..1d6e5ac6442d 100644 --- a/tools/arch/ia64/include/uapi/asm/mman.h +++ b/tools/arch/ia64/include/uapi/asm/mman.h @@ -1,4 +1,6 @@ #ifndef TOOLS_ARCH_IA64_UAPI_ASM_MMAN_FIX_H #define TOOLS_ARCH_IA64_UAPI_ASM_MMAN_FIX_H #include +/* MAP_32BIT is undefined on ia64, fix it for perf */ +#define MAP_32BIT 0 #endif diff --git a/tools/arch/m32r/include/uapi/asm/mman.h b/tools/arch/m32r/include/uapi/asm/mman.h index a35ebd68add9..1c29635bb73b 100644 --- a/tools/arch/m32r/include/uapi/asm/mman.h +++ b/tools/arch/m32r/include/uapi/asm/mman.h @@ -1,4 +1,6 @@ #ifndef TOOLS_ARCH_M32R_UAPI_ASM_MMAN_FIX_H #define TOOLS_ARCH_M32R_UAPI_ASM_MMAN_FIX_H #include +/* MAP_32BIT is undefined on m32r, fix it for perf */ +#define MAP_32BIT 0 #endif diff --git a/tools/arch/microblaze/include/uapi/asm/mman.h b/tools/arch/microblaze/include/uapi/asm/mman.h index 75f460abbe58..005cd50b50e1 100644 --- a/tools/arch/microblaze/include/uapi/asm/mman.h +++ b/tools/arch/microblaze/include/uapi/asm/mman.h @@ -1,4 +1,6 @@ #ifndef TOOLS_ARCH_MICROBLAZE_UAPI_ASM_MMAN_FIX_H #define TOOLS_ARCH_MICROBLAZE_UAPI_ASM_MMAN_FIX_H #include +/* MAP_32BIT is undefined on microblaze, fix it for perf */ +#define MAP_32BIT 0 #endif diff --git a/tools/arch/mips/include/uapi/asm/mman.h b/tools/arch/mips/include/uapi/asm/mman.h index db88fa41e74c..c02052965d50 100644 --- a/tools/arch/mips/include/uapi/asm/mman.h +++ b/tools/arch/mips/include/uapi/asm/mman.h @@ -5,6 +5,7 @@ #define MADV_DONTDUMP 16 #define MADV_DONTFORK 10 #define MADV_DONTNEED 4 +#define MADV_FREE 8 #define MADV_HUGEPAGE 14 #define MADV_HWPOISON 100 #define MADV_MERGEABLE 12 @@ -36,4 +37,10 @@ #define PROT_READ 0x01 #define PROT_SEM 0x10 #define PROT_WRITE 0x02 +/* MADV_SOFT_OFFLINE is undefined on mips, fix it for perf */ +#define MADV_SOFT_OFFLINE 101 +/* MAP_32BIT is undefined on mips, fix it for perf */ +#define MAP_32BIT 0 +/* MAP_UNINITIALIZED is undefined on mips, fix it for perf */ +#define MAP_UNINITIALIZED 0 #endif diff --git a/tools/arch/mn10300/include/uapi/asm/mman.h b/tools/arch/mn10300/include/uapi/asm/mman.h index 81faa5d1b2dc..c1ea36d83acc 100644 --- a/tools/arch/mn10300/include/uapi/asm/mman.h +++ b/tools/arch/mn10300/include/uapi/asm/mman.h @@ -1,4 +1,6 @@ #ifndef TOOLS_ARCH_MN10300_UAPI_ASM_MMAN_FIX_H #define TOOLS_ARCH_MN10300_UAPI_ASM_MMAN_FIX_H #include +/* MAP_32BIT is undefined on mn10300, fix it for perf */ +#define MAP_32BIT 0 #endif diff --git a/tools/arch/parisc/include/uapi/asm/mman.h b/tools/arch/parisc/include/uapi/asm/mman.h index c4a9d9f12d55..03d8d5b7ae7f 100644 --- a/tools/arch/parisc/include/uapi/asm/mman.h +++ b/tools/arch/parisc/include/uapi/asm/mman.h @@ -5,6 +5,7 @@ #define MADV_DONTDUMP 69 #define MADV_DONTFORK 10 #define MADV_DONTNEED 4 +#define MADV_FREE 8 #define MADV_HUGEPAGE 67 #define MADV_MERGEABLE 65 #define MADV_NOHUGEPAGE 68 @@ -35,4 +36,12 @@ #define PROT_READ 0x1 #define PROT_SEM 0x8 #define PROT_WRITE 0x2 +/* MADV_HWPOISON is undefined on parisc, fix it for perf */ +#define MADV_HWPOISON 100 +/* MADV_SOFT_OFFLINE is undefined on parisc, fix it for perf */ +#define MADV_SOFT_OFFLINE 101 +/* MAP_32BIT is undefined on parisc, fix it for perf */ +#define MAP_32BIT 0 +/* MAP_UNINITIALIZED is undefined on parisc, fix it for perf */ +#define MAP_UNINITIALIZED 0 #endif diff --git a/tools/arch/powerpc/include/uapi/asm/mman.h b/tools/arch/powerpc/include/uapi/asm/mman.h index 7a56ab9988dd..761db43172fe 100644 --- a/tools/arch/powerpc/include/uapi/asm/mman.h +++ b/tools/arch/powerpc/include/uapi/asm/mman.h @@ -10,4 +10,6 @@ #define MAP_POPULATE 0x8000 #define MAP_STACK 0x20000 #include +/* MAP_32BIT is undefined on powerpc, fix it for perf */ +#define MAP_32BIT 0 #endif diff --git a/tools/arch/s390/include/uapi/asm/mman.h b/tools/arch/s390/include/uapi/asm/mman.h index fe53b91405d3..b03dea9e1f56 100644 --- a/tools/arch/s390/include/uapi/asm/mman.h +++ b/tools/arch/s390/include/uapi/asm/mman.h @@ -1,4 +1,6 @@ #ifndef TOOLS_ARCH_S390_UAPI_ASM_MMAN_FIX_H #define TOOLS_ARCH_S390_UAPI_ASM_MMAN_FIX_H #include +/* MAP_32BIT is undefined on s390, fix it for perf */ +#define MAP_32BIT 0 #endif diff --git a/tools/arch/score/include/uapi/asm/mman.h b/tools/arch/score/include/uapi/asm/mman.h index ba1ee9ce9f6a..2f8fb89944fd 100644 --- a/tools/arch/score/include/uapi/asm/mman.h +++ b/tools/arch/score/include/uapi/asm/mman.h @@ -1,4 +1,6 @@ #ifndef TOOLS_ARCH_SCORE_UAPI_ASM_MMAN_FIX_H #define TOOLS_ARCH_SCORE_UAPI_ASM_MMAN_FIX_H #include +/* MAP_32BIT is undefined on score, fix it for perf */ +#define MAP_32BIT 0 #endif diff --git a/tools/arch/sh/include/uapi/asm/mman.h b/tools/arch/sh/include/uapi/asm/mman.h index 5a47d8cff786..26504f6f060e 100644 --- a/tools/arch/sh/include/uapi/asm/mman.h +++ b/tools/arch/sh/include/uapi/asm/mman.h @@ -1,4 +1,6 @@ #ifndef TOOLS_ARCH_SH_UAPI_ASM_MMAN_FIX_H #define TOOLS_ARCH_SH_UAPI_ASM_MMAN_FIX_H #include +/* MAP_32BIT is undefined on sh, fix it for perf */ +#define MAP_32BIT 0 #endif diff --git a/tools/arch/sparc/include/uapi/asm/mman.h b/tools/arch/sparc/include/uapi/asm/mman.h index b88f3ac9c48a..8640525de991 100644 --- a/tools/arch/sparc/include/uapi/asm/mman.h +++ b/tools/arch/sparc/include/uapi/asm/mman.h @@ -10,4 +10,6 @@ #define MAP_POPULATE 0x8000 #define MAP_STACK 0x20000 #include +/* MAP_32BIT is undefined on sparc, fix it for perf */ +#define MAP_32BIT 0 #endif diff --git a/tools/arch/tile/include/uapi/asm/mman.h b/tools/arch/tile/include/uapi/asm/mman.h index b0a054f27a22..7116c4b928b3 100644 --- a/tools/arch/tile/include/uapi/asm/mman.h +++ b/tools/arch/tile/include/uapi/asm/mman.h @@ -10,4 +10,6 @@ #define MAP_POPULATE 0x0040 #define MAP_STACK MAP_GROWSDOWN #include +/* MAP_32BIT is undefined on tile, fix it for perf */ +#define MAP_32BIT 0 #endif diff --git a/tools/arch/xtensa/include/uapi/asm/mman.h b/tools/arch/xtensa/include/uapi/asm/mman.h index 1c89538bd391..4453195c450c 100644 --- a/tools/arch/xtensa/include/uapi/asm/mman.h +++ b/tools/arch/xtensa/include/uapi/asm/mman.h @@ -5,6 +5,7 @@ #define MADV_DONTDUMP 16 #define MADV_DONTFORK 10 #define MADV_DONTNEED 4 +#define MADV_FREE 8 #define MADV_HUGEPAGE 14 #define MADV_MERGEABLE 12 #define MADV_NOHUGEPAGE 15 @@ -35,4 +36,12 @@ #define PROT_READ 0x1 #define PROT_SEM 0x10 #define PROT_WRITE 0x2 +/* MADV_HWPOISON is undefined on xtensa, fix it for perf */ +#define MADV_HWPOISON 100 +/* MADV_SOFT_OFFLINE is undefined on xtensa, fix it for perf */ +#define MADV_SOFT_OFFLINE 101 +/* MAP_32BIT is undefined on xtensa, fix it for perf */ +#define MAP_32BIT 0 +/* MAP_UNINITIALIZED is undefined on xtensa, fix it for perf */ +#define MAP_UNINITIALIZED 0 #endif