linux-perf-users.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Michael S. Tsirkin" <mst@redhat.com>
To: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: Ingo Molnar <mingo@kernel.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	Jiri Olsa <jolsa@kernel.org>, Namhyung Kim <namhyung@kernel.org>,
	Clark Williams <williams@redhat.com>,
	linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org,
	Arnaldo Carvalho de Melo <acme@redhat.com>,
	Adrian Hunter <adrian.hunter@intel.com>,
	Arnd Bergmann <arnd@arndb.de>
Subject: Re: [PATCH 04/13] tools headers uapi: Sync asm-generic/mman-common.h and linux/mman.h
Date: Fri, 29 Mar 2019 10:20:06 -0400	[thread overview]
Message-ID: <20190329101404-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <20190329133801.21004-5-acme@kernel.org>

On Fri, Mar 29, 2019 at 10:37:52AM -0300, Arnaldo Carvalho de Melo wrote:
> From: Arnaldo Carvalho de Melo <acme@redhat.com>
> 
> To deal with the move of some defines from asm-generic/mmap-common.h to
> linux/mman.h done in:
> 
>   746c9398f5ac ("arch: move common mmap flags to linux/mman.h")
> 
> The generated mmap_flags array stays the same:
> 
>   $ tools/perf/trace/beauty/mmap_flags.sh
>   static const char *mmap_flags[] = {
> 	[ilog2(0x40) + 1] = "32BIT",
> 	[ilog2(0x01) + 1] = "SHARED",
> 	[ilog2(0x02) + 1] = "PRIVATE",
> 	[ilog2(0x10) + 1] = "FIXED",
> 	[ilog2(0x20) + 1] = "ANONYMOUS",
> 	[ilog2(0x100000) + 1] = "FIXED_NOREPLACE",
> 	[ilog2(0x0100) + 1] = "GROWSDOWN",
> 	[ilog2(0x0800) + 1] = "DENYWRITE",
> 	[ilog2(0x1000) + 1] = "EXECUTABLE",
> 	[ilog2(0x2000) + 1] = "LOCKED",
> 	[ilog2(0x4000) + 1] = "NORESERVE",
> 	[ilog2(0x8000) + 1] = "POPULATE",
> 	[ilog2(0x10000) + 1] = "NONBLOCK",
> 	[ilog2(0x20000) + 1] = "STACK",
> 	[ilog2(0x40000) + 1] = "HUGETLB",
> 	[ilog2(0x80000) + 1] = "SYNC",
>   };
>   $
> 
> And to have the system's sys/mman.h find the definition of MAP_SHARED
> and MAP_PRIVATE, make sure they are defined in the tools/ mman-common.h
> in a way that keeps it the same as the kernel's, need for keeping the
> Android's NDK cross build working.
> 
> This silences these perf build warnings:
> 
>   Warning: Kernel ABI header at 'tools/include/uapi/asm-generic/mman-common.h' differs from latest version at 'include/uapi/asm-generic/mman-common.h'
>   diff -u tools/include/uapi/asm-generic/mman-common.h include/uapi/asm-generic/mman-common.h
>   Warning: Kernel ABI header at 'tools/include/uapi/linux/mman.h' differs from latest version at 'include/uapi/linux/mman.h'
>   diff -u tools/include/uapi/linux/mman.h include/uapi/linux/mman.h
> 
> Cc: Adrian Hunter <adrian.hunter@intel.com>
> Cc: Arnd Bergmann <arnd@arndb.de>
> Cc: Jiri Olsa <jolsa@kernel.org>
> Cc: Michael S. Tsirkin <mst@redhat.com>
> Cc: Namhyung Kim <namhyung@kernel.org>
> Link: https://lkml.kernel.org/n/tip-h80ycpc6pedg9s5z2rwpy6ws@git.kernel.org
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
> ---
>  tools/arch/alpha/include/uapi/asm/mman.h      |  2 --
>  tools/arch/mips/include/uapi/asm/mman.h       |  2 --
>  tools/arch/parisc/include/uapi/asm/mman.h     |  2 --
>  tools/arch/xtensa/include/uapi/asm/mman.h     |  2 --
>  .../uapi/asm-generic/mman-common-tools.h      | 23 +++++++++++++++++++
>  tools/include/uapi/asm-generic/mman-common.h  |  4 +---
>  tools/include/uapi/asm-generic/mman.h         |  2 +-
>  tools/include/uapi/linux/mman.h               |  4 ++++
>  tools/perf/Makefile.perf                      |  4 ++--
>  tools/perf/check-headers.sh                   |  2 +-
>  tools/perf/trace/beauty/mmap_flags.sh         | 14 ++++++++---
>  11 files changed, 43 insertions(+), 18 deletions(-)
>  create mode 100644 tools/include/uapi/asm-generic/mman-common-tools.h
> 
> diff --git a/tools/arch/alpha/include/uapi/asm/mman.h b/tools/arch/alpha/include/uapi/asm/mman.h
> index c317d3e6867a..ea6a255ae61f 100644
> --- a/tools/arch/alpha/include/uapi/asm/mman.h
> +++ b/tools/arch/alpha/include/uapi/asm/mman.h
> @@ -27,8 +27,6 @@
>  #define MAP_NONBLOCK	0x40000
>  #define MAP_NORESERVE	0x10000
>  #define MAP_POPULATE	0x20000
> -#define MAP_PRIVATE	0x02
> -#define MAP_SHARED	0x01
>  #define MAP_STACK	0x80000
>  #define PROT_EXEC	0x4
>  #define PROT_GROWSDOWN	0x01000000
> diff --git a/tools/arch/mips/include/uapi/asm/mman.h b/tools/arch/mips/include/uapi/asm/mman.h
> index de2206883abc..c8acaa138d46 100644
> --- a/tools/arch/mips/include/uapi/asm/mman.h
> +++ b/tools/arch/mips/include/uapi/asm/mman.h
> @@ -28,8 +28,6 @@
>  #define MAP_NONBLOCK	0x20000
>  #define MAP_NORESERVE	0x0400
>  #define MAP_POPULATE	0x10000
> -#define MAP_PRIVATE	0x002
> -#define MAP_SHARED	0x001
>  #define MAP_STACK	0x40000
>  #define PROT_EXEC	0x04
>  #define PROT_GROWSDOWN	0x01000000
> diff --git a/tools/arch/parisc/include/uapi/asm/mman.h b/tools/arch/parisc/include/uapi/asm/mman.h
> index 1bd78758bde9..f9fd1325f5bd 100644
> --- a/tools/arch/parisc/include/uapi/asm/mman.h
> +++ b/tools/arch/parisc/include/uapi/asm/mman.h
> @@ -27,8 +27,6 @@
>  #define MAP_NONBLOCK	0x20000
>  #define MAP_NORESERVE	0x4000
>  #define MAP_POPULATE	0x10000
> -#define MAP_PRIVATE	0x02
> -#define MAP_SHARED	0x01
>  #define MAP_STACK	0x40000
>  #define PROT_EXEC	0x4
>  #define PROT_GROWSDOWN	0x01000000
> diff --git a/tools/arch/xtensa/include/uapi/asm/mman.h b/tools/arch/xtensa/include/uapi/asm/mman.h
> index 34dde6f44dae..f2b08c990afc 100644
> --- a/tools/arch/xtensa/include/uapi/asm/mman.h
> +++ b/tools/arch/xtensa/include/uapi/asm/mman.h
> @@ -27,8 +27,6 @@
>  #define MAP_NONBLOCK	0x20000
>  #define MAP_NORESERVE	0x0400
>  #define MAP_POPULATE	0x10000
> -#define MAP_PRIVATE	0x002
> -#define MAP_SHARED	0x001
>  #define MAP_STACK	0x40000
>  #define PROT_EXEC	0x4
>  #define PROT_GROWSDOWN	0x01000000
> diff --git a/tools/include/uapi/asm-generic/mman-common-tools.h b/tools/include/uapi/asm-generic/mman-common-tools.h
> new file mode 100644
> index 000000000000..af7d0d3a3182
> --- /dev/null
> +++ b/tools/include/uapi/asm-generic/mman-common-tools.h
> @@ -0,0 +1,23 @@
> +/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
> +#ifndef __ASM_GENERIC_MMAN_COMMON_TOOLS_ONLY_H
> +#define __ASM_GENERIC_MMAN_COMMON_TOOLS_ONLY_H
> +
> +#include <asm-generic/mman-common.h>
> +
> +/* We need this because we need to have tools/include/uapi/ included in the tools
> + * header search path to get access to stuff that is not yet in the system's
> + * copy of the files in that directory, but since this cset:
> + *
> + *     746c9398f5ac ("arch: move common mmap flags to linux/mman.h")
> + *
> + * We end up making sys/mman.h, that is in the system headers, to not find the
> + * MAP_SHARED and MAP_PRIVATE defines because they are not anymore in our copy
> + * of asm-generic/mman-common.h.

Isn't the reason they are not found there that you moved them out of
there in the chunk below?

> So we define them here and include this header
> + * from each of the per arch mman.h headers.
> + */
> +#ifndef MAP_SHARED
> +#define MAP_SHARED	0x01		/* Share changes */
> +#define MAP_PRIVATE	0x02		/* Changes are private */
> +#define MAP_SHARED_VALIDATE 0x03	/* share + validate extension flags */
> +#endif
> +#endif // __ASM_GENERIC_MMAN_COMMON_TOOLS_ONLY_H
> diff --git a/tools/include/uapi/asm-generic/mman-common.h b/tools/include/uapi/asm-generic/mman-common.h
> index e7ee32861d51..abd238d0f7a4 100644
> --- a/tools/include/uapi/asm-generic/mman-common.h
> +++ b/tools/include/uapi/asm-generic/mman-common.h
> @@ -15,9 +15,7 @@
>  #define PROT_GROWSDOWN	0x01000000	/* mprotect flag: extend change to start of growsdown vma */
>  #define PROT_GROWSUP	0x02000000	/* mprotect flag: extend change to end of growsup vma */
>  
> -#define MAP_SHARED	0x01		/* Share changes */
> -#define MAP_PRIVATE	0x02		/* Changes are private */
> -#define MAP_SHARED_VALIDATE 0x03	/* share + validate extension flags */
> +/* 0x01 - 0x03 are defined in linux/mman.h */
>  #define MAP_TYPE	0x0f		/* Mask for type of mapping */
>  #define MAP_FIXED	0x10		/* Interpret addr exactly */
>  #define MAP_ANONYMOUS	0x20		/* don't use a file */

> diff --git a/tools/include/uapi/asm-generic/mman.h b/tools/include/uapi/asm-generic/mman.h
> index 653687d9771b..36c197fc44a0 100644
> --- a/tools/include/uapi/asm-generic/mman.h
> +++ b/tools/include/uapi/asm-generic/mman.h
> @@ -2,7 +2,7 @@
>  #ifndef __ASM_GENERIC_MMAN_H
>  #define __ASM_GENERIC_MMAN_H
>  
> -#include <asm-generic/mman-common.h>
> +#include <asm-generic/mman-common-tools.h>
>  
>  #define MAP_GROWSDOWN	0x0100		/* stack-like segment */
>  #define MAP_DENYWRITE	0x0800		/* ETXTBSY */
> diff --git a/tools/include/uapi/linux/mman.h b/tools/include/uapi/linux/mman.h
> index d0f515d53299..fc1a64c3447b 100644
> --- a/tools/include/uapi/linux/mman.h
> +++ b/tools/include/uapi/linux/mman.h
> @@ -12,6 +12,10 @@
>  #define OVERCOMMIT_ALWAYS		1
>  #define OVERCOMMIT_NEVER		2
>  
> +#define MAP_SHARED	0x01		/* Share changes */
> +#define MAP_PRIVATE	0x02		/* Changes are private */
> +#define MAP_SHARED_VALIDATE 0x03	/* share + validate extension flags */
> +
>  /*
>   * Huge page size encoding when MAP_HUGETLB is specified, and a huge page
>   * size other than the default is desired.  See hugetlb_encode.h.
> diff --git a/tools/perf/Makefile.perf b/tools/perf/Makefile.perf
> index 01f7555fd933..e8c9f77e9010 100644
> --- a/tools/perf/Makefile.perf
> +++ b/tools/perf/Makefile.perf
> @@ -481,8 +481,8 @@ $(madvise_behavior_array): $(madvise_hdr_dir)/mman-common.h $(madvise_behavior_t
>  mmap_flags_array := $(beauty_outdir)/mmap_flags_array.c
>  mmap_flags_tbl := $(srctree)/tools/perf/trace/beauty/mmap_flags.sh
>  
> -$(mmap_flags_array): $(asm_generic_uapi_dir)/mman.h $(asm_generic_uapi_dir)/mman-common.h $(mmap_flags_tbl)
> -	$(Q)$(SHELL) '$(mmap_flags_tbl)' $(asm_generic_uapi_dir) $(arch_asm_uapi_dir) > $@
> +$(mmap_flags_array): $(linux_uapi_dir)/mman.h $(asm_generic_uapi_dir)/mman.h $(asm_generic_uapi_dir)/mman-common.h $(mmap_flags_tbl)
> +	$(Q)$(SHELL) '$(mmap_flags_tbl)' $(linux_uapi_dir) $(asm_generic_uapi_dir) $(arch_asm_uapi_dir) > $@
>  
>  mount_flags_array := $(beauty_outdir)/mount_flags_array.c
>  mount_flags_tbl := $(srctree)/tools/perf/trace/beauty/mount_flags.sh
> diff --git a/tools/perf/check-headers.sh b/tools/perf/check-headers.sh
> index 7b55613924de..c68ee06cae63 100755
> --- a/tools/perf/check-headers.sh
> +++ b/tools/perf/check-headers.sh
> @@ -103,7 +103,7 @@ done
>  # diff with extra ignore lines
>  check arch/x86/lib/memcpy_64.S        '-I "^EXPORT_SYMBOL" -I "^#include <asm/export.h>"'
>  check arch/x86/lib/memset_64.S        '-I "^EXPORT_SYMBOL" -I "^#include <asm/export.h>"'
> -check include/uapi/asm-generic/mman.h '-I "^#include <\(uapi/\)*asm-generic/mman-common.h>"'
> +check include/uapi/asm-generic/mman.h '-I "^#include <\(uapi/\)*asm-generic/mman-common\(-tools\)*.h>"'
>  check include/uapi/linux/mman.h       '-I "^#include <\(uapi/\)*asm/mman.h>"'
>  
>  # diff non-symmetric files
> diff --git a/tools/perf/trace/beauty/mmap_flags.sh b/tools/perf/trace/beauty/mmap_flags.sh
> index 32bac9c0d694..5f5eefcb3c74 100755
> --- a/tools/perf/trace/beauty/mmap_flags.sh
> +++ b/tools/perf/trace/beauty/mmap_flags.sh
> @@ -1,15 +1,18 @@
>  #!/bin/sh
>  # SPDX-License-Identifier: LGPL-2.1
>  
> -if [ $# -ne 2 ] ; then
> +if [ $# -ne 3 ] ; then
>  	[ $# -eq 1 ] && hostarch=$1 || hostarch=`uname -m | sed -e s/i.86/x86/ -e s/x86_64/x86/`
> +	linux_header_dir=tools/include/uapi/linux
>  	header_dir=tools/include/uapi/asm-generic
>  	arch_header_dir=tools/arch/${hostarch}/include/uapi/asm
>  else
> -	header_dir=$1
> -	arch_header_dir=$2
> +	linux_header_dir=$1
> +	header_dir=$2
> +	arch_header_dir=$3
>  fi
>  
> +linux_mman=${linux_header_dir}/mman.h
>  arch_mman=${arch_header_dir}/mman.h
>  
>  # those in egrep -vw are flags, we want just the bits
> @@ -20,6 +23,11 @@ egrep -q $regex ${arch_mman} && \
>  (egrep $regex ${arch_mman} | \
>  	sed -r "s/$regex/\2 \1/g"	| \
>  	xargs printf "\t[ilog2(%s) + 1] = \"%s\",\n")
> +egrep -q $regex ${linux_mman} && \
> +(egrep $regex ${linux_mman} | \
> +	egrep -vw 'MAP_(UNINITIALIZED|TYPE|SHARED_VALIDATE)' | \
> +	sed -r "s/$regex/\2 \1/g"	| \
> +	xargs printf "\t[ilog2(%s) + 1] = \"%s\",\n")
>  ([ ! -f ${arch_mman} ] || egrep -q '#[[:space:]]*include[[:space:]]+<uapi/asm-generic/mman.*' ${arch_mman}) &&
>  (egrep $regex ${header_dir}/mman-common.h | \
>  	egrep -vw 'MAP_(UNINITIALIZED|TYPE|SHARED_VALIDATE)' | \
> -- 
> 2.20.1

  reply	other threads:[~2019-03-29 14:20 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-03-29 13:37 [GIT PULL 00/13] perf/urgent fixes Arnaldo Carvalho de Melo
2019-03-29 13:37 ` [PATCH 01/13] perf cs-etm: Add missing case value Arnaldo Carvalho de Melo
2019-03-29 13:37 ` [PATCH 02/13] perf intel-pt: Fix TSC slip Arnaldo Carvalho de Melo
2019-03-29 13:37 ` [PATCH 03/13] perf evsel: Fix max perf_event_attr.precise_ip detection Arnaldo Carvalho de Melo
2019-03-29 13:37 ` [PATCH 04/13] tools headers uapi: Sync asm-generic/mman-common.h and linux/mman.h Arnaldo Carvalho de Melo
2019-03-29 14:20   ` Michael S. Tsirkin [this message]
2019-03-29 18:49     ` Arnaldo Carvalho de Melo
2019-03-29 13:37 ` [PATCH 05/13] tools headers uapi: Sync linux/fcntl.h to get the F_SEAL_FUTURE_WRITE addition Arnaldo Carvalho de Melo
2019-03-29 14:24   ` Joel Fernandes
2019-03-29 13:37 ` [PATCH 06/13] tools arch x86: Sync asm/cpufeatures.h with the kernel sources Arnaldo Carvalho de Melo
2019-03-29 13:37 ` [PATCH 07/13] tools headers uapi: Update drm/i915_drm.h Arnaldo Carvalho de Melo
2019-03-29 13:37 ` [PATCH 08/13] tools headers: Update x86's syscall_64.tbl and uapi/asm-generic/unistd Arnaldo Carvalho de Melo
2019-03-29 13:37 ` [PATCH 09/13] tools headers uapi: Sync powerpc's asm/kvm.h copy with the kernel sources Arnaldo Carvalho de Melo
2019-03-29 13:37 ` [PATCH 10/13] perf machine: Update kernel map address and re-order properly Arnaldo Carvalho de Melo
2019-03-29 13:37 ` [PATCH 11/13] perf scripts python: exported-sql-viewer.py: Fix never-ending loop Arnaldo Carvalho de Melo
2019-03-29 13:38 ` [PATCH 12/13] perf scripts python: exported-sql-viewer.py: Fix python3 support Arnaldo Carvalho de Melo
2019-03-29 13:38 ` [PATCH 13/13] perf pmu: Fix parser error for uncore event alias Arnaldo Carvalho de Melo

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=20190329101404-mutt-send-email-mst@kernel.org \
    --to=mst@redhat.com \
    --cc=acme@kernel.org \
    --cc=acme@redhat.com \
    --cc=adrian.hunter@intel.com \
    --cc=arnd@arndb.de \
    --cc=jolsa@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=namhyung@kernel.org \
    --cc=tglx@linutronix.de \
    --cc=williams@redhat.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).