2013-03-15 15:28:49 +00:00
2014-01-03 14:32:32 +00:00
i f e q ( $( src -perf ) , )
src-perf := $( srctree) /tools/perf
e n d i f
2013-03-15 15:28:49 +00:00
2014-01-03 14:32:32 +00:00
i f e q ( $( obj -perf ) , )
obj-perf := $( OUTPUT)
2013-03-15 15:28:49 +00:00
e n d i f
2014-01-03 14:32:32 +00:00
i f n e q ( $( obj -perf ) , )
obj-perf := $( abspath $( obj-perf) ) /
e n d i f
LIB_INCLUDE := $( srctree) /tools/lib/
CFLAGS := $( EXTRA_CFLAGS) $( EXTRA_WARNINGS)
i n c l u d e $( src -perf ) / c o n f i g / M a k e f i l e . a r c h
NO_PERF_REGS := 1
# Additional ARCH settings for x86
i f e q ( $( ARCH ) , x 8 6 )
2013-04-15 02:06:58 +00:00
ifeq ( ${ IS_X86_64 } , 1)
2013-09-30 10:07:11 +00:00
CFLAGS += -DHAVE_ARCH_X86_64_SUPPORT
2013-04-15 02:06:58 +00:00
ARCH_INCLUDE = ../../arch/x86/lib/memcpy_64.S ../../arch/x86/lib/memset_64.S
2013-11-01 13:51:32 +00:00
LIBUNWIND_LIBS = -lunwind -lunwind-x86_64
else
LIBUNWIND_LIBS = -lunwind -lunwind-x86
2013-04-15 02:06:58 +00:00
endif
NO_PERF_REGS := 0
2013-03-15 15:28:49 +00:00
e n d i f
2014-04-28 12:32:33 +00:00
2013-09-26 11:36:36 +00:00
i f e q ( $( ARCH ) , a r m )
NO_PERF_REGS := 0
LIBUNWIND_LIBS = -lunwind -lunwind-arm
e n d i f
2013-03-15 15:28:49 +00:00
2014-04-28 12:32:33 +00:00
i f e q ( $( ARCH ) , a r m 6 4 )
NO_PERF_REGS := 0
LIBUNWIND_LIBS = -lunwind -lunwind-aarch64
e n d i f
2014-05-16 08:41:11 +00:00
# So far there's only x86 and arm libdw unwind support merged in perf.
2014-04-20 08:50:00 +00:00
# Disable it on all other architectures in case libdw unwind
# support is detected in system. Add supported architectures
# to the check.
2014-05-16 08:41:11 +00:00
i f n e q ( $( ARCH ) , $( filter $ ( ARCH ) ,x 86 arm ) )
2014-04-20 08:50:00 +00:00
NO_LIBDW_DWARF_UNWIND := 1
e n d i f
2014-06-25 15:49:03 +00:00
i f e q ( $( ARCH ) , p o w e r p c )
CFLAGS += -DHAVE_SKIP_CALLCHAIN_IDX
e n d i f
2013-12-10 12:24:04 +00:00
i f e q ( $( LIBUNWIND_LIBS ) , )
NO_LIBUNWIND := 1
e l s e
#
# For linking with debug library, run like:
#
# make DEBUG=1 LIBUNWIND_DIR=/opt/libunwind/
#
ifdef LIBUNWIND_DIR
LIBUNWIND_CFLAGS = -I$( LIBUNWIND_DIR) /include
LIBUNWIND_LDFLAGS = -L$( LIBUNWIND_DIR) /lib
endif
LIBUNWIND_LDFLAGS += $( LIBUNWIND_LIBS)
# Set per-feature check compilation flags
FEATURE_CHECK_CFLAGS-libunwind = $( LIBUNWIND_CFLAGS)
FEATURE_CHECK_LDFLAGS-libunwind = $( LIBUNWIND_LDFLAGS)
FEATURE_CHECK_CFLAGS-libunwind-debug-frame = $( LIBUNWIND_CFLAGS)
FEATURE_CHECK_LDFLAGS-libunwind-debug-frame = $( LIBUNWIND_LDFLAGS)
e n d i f
2013-03-15 15:28:49 +00:00
i f e q ( $( NO_PERF_REGS ) , 0 )
2013-09-30 10:07:11 +00:00
CFLAGS += -DHAVE_PERF_REGS_SUPPORT
2013-03-15 15:28:49 +00:00
e n d i f
2013-03-24 23:32:01 +00:00
2014-02-19 15:52:56 +00:00
i f n d e f N O _ L I B E L F
# for linking with debug library, run like:
# make DEBUG=1 LIBDW_DIR=/opt/libdw/
ifdef LIBDW_DIR
LIBDW_CFLAGS := -I$( LIBDW_DIR) /include
LIBDW_LDFLAGS := -L$( LIBDW_DIR) /lib
endif
2014-03-26 22:44:05 +00:00
FEATURE_CHECK_CFLAGS-libdw-dwarf-unwind := $( LIBDW_CFLAGS)
FEATURE_CHECK_LDFLAGS-libdw-dwarf-unwind := $( LIBDW_LDFLAGS) -ldw
2014-02-19 15:52:56 +00:00
e n d i f
2013-05-24 12:35:23 +00:00
# include ARCH specific config
- i n c l u d e $( src -perf ) / a r c h / $( ARCH ) / M a k e f i l e
i n c l u d e $( src -perf ) / c o n f i g / u t i l i t i e s . m a k
2013-03-24 23:32:01 +00:00
i f e q ( $( call get -executable ,$ ( FLEX ) ) , )
2013-04-15 02:06:58 +00:00
dummy := $( error Error: $( FLEX) is missing on this system, please install it)
2013-03-24 23:32:01 +00:00
e n d i f
i f e q ( $( call get -executable ,$ ( BISON ) ) , )
2013-04-15 02:06:58 +00:00
dummy := $( error Error: $( BISON) is missing on this system, please install it)
2013-03-24 23:32:01 +00:00
e n d i f
2013-03-24 23:40:48 +00:00
# Treat warnings as errors unless directed not to
i f n e q ( $( WERROR ) , 0 )
2013-04-15 02:06:58 +00:00
CFLAGS += -Werror
2013-03-24 23:40:48 +00:00
e n d i f
2013-10-22 07:34:05 +00:00
i f n d e f D E B U G
DEBUG := 0
e n d i f
2013-10-10 06:05:25 +00:00
i f e q ( $( DEBUG ) , 0 )
2013-04-15 02:06:58 +00:00
CFLAGS += -O6
2013-03-24 23:40:48 +00:00
e n d i f
i f d e f P A R S E R _ D E B U G
2013-04-15 02:06:58 +00:00
PARSER_DEBUG_BISON := -t
PARSER_DEBUG_FLEX := -d
CFLAGS += -DPARSER_DEBUG
2013-03-24 23:40:48 +00:00
e n d i f
2013-04-15 02:32:28 +00:00
CFLAGS += -fno-omit-frame-pointer
CFLAGS += -ggdb3
CFLAGS += -funwind-tables
CFLAGS += -Wall
CFLAGS += -Wextra
CFLAGS += -std= gnu99
2013-03-21 10:30:54 +00:00
2014-04-27 16:51:05 +00:00
# Enforce a non-executable stack, as we may regress (again) in the future by
# adding assembler files missing the .GNU-stack linker note.
LDFLAGS += -Wl,-z,noexecstack
2013-09-23 01:44:57 +00:00
EXTLIBS = -lelf -lpthread -lrt -lm -ldl
2013-03-24 23:40:48 +00:00
2013-10-03 13:05:56 +00:00
i f n e q ( $( OUTPUT ) , )
OUTPUT_FEATURES = $( OUTPUT) config/feature-checks/
$( shell mkdir -p $( OUTPUT_FEATURES) )
e n d i f
2013-10-01 12:14:31 +00:00
feature_check = $( eval $( feature_check_code) )
2013-09-30 08:08:24 +00:00
d e f i n e f e a t u r e _ c h e c k _ c o d e
2013-12-21 05:48:11 +00:00
feature-$( 1) := $( shell $( MAKE) OUTPUT = $( OUTPUT_FEATURES) CFLAGS = " $( EXTRA_CFLAGS) $( FEATURE_CHECK_CFLAGS-$( 1) ) " LDFLAGS = " $( LDFLAGS) $( FEATURE_CHECK_LDFLAGS-$( 1) ) " -C config/feature-checks test-$1 .bin >/dev/null 2>/dev/null && echo 1 || echo 0)
2013-10-01 12:14:31 +00:00
e n d e f
feature_set = $( eval $( feature_set_code) )
d e f i n e f e a t u r e _ s e t _ c o d e
feature-$( 1) := 1
2013-09-30 08:08:24 +00:00
e n d e f
#
# Build the feature check binaries in parallel, ignore errors, ignore return value and suppress output:
#
2013-10-02 07:54:43 +00:00
#
# Note that this is not a complete list of all feature tests, just
# those that are typically built on a fully configured system.
#
# [ Feature tests not mentioned here have to be built explicitly in
# the rule that uses them - an example for that is the 'bionic'
# feature check. ]
#
CORE_FEATURE_TESTS = \
backtrace \
dwarf \
2013-10-07 07:38:28 +00:00
fortify-source \
2014-07-14 10:02:53 +00:00
sync-compare-and-swap \
2013-10-07 08:34:20 +00:00
glibc \
2013-09-30 13:01:56 +00:00
gtk2 \
2013-09-30 13:08:30 +00:00
gtk2-infobar \
2013-10-02 07:54:43 +00:00
libaudit \
libbfd \
libelf \
libelf-getphdrnum \
libelf-mmap \
libnuma \
2013-09-30 13:15:36 +00:00
libperl \
2013-09-30 13:18:37 +00:00
libpython \
2013-09-30 13:40:04 +00:00
libpython-version \
2013-10-02 07:54:43 +00:00
libslang \
libunwind \
2013-11-14 07:33:24 +00:00
stackprotector-all \
2014-02-19 15:52:58 +00:00
timerfd \
libdw-dwarf-unwind
2013-09-30 08:08:24 +00:00
2014-02-19 15:52:54 +00:00
LIB_FEATURE_TESTS = \
dwarf \
glibc \
gtk2 \
libaudit \
libbfd \
libelf \
libnuma \
libperl \
libpython \
libslang \
2014-02-19 15:52:58 +00:00
libunwind \
libdw-dwarf-unwind
2014-02-19 15:52:54 +00:00
VF_FEATURE_TESTS = \
backtrace \
fortify-source \
2014-07-14 10:02:53 +00:00
sync-compare-and-swap \
2014-02-19 15:52:54 +00:00
gtk2-infobar \
libelf-getphdrnum \
libelf-mmap \
libpython-version \
stackprotector-all \
timerfd \
libunwind-debug-frame \
2014-04-23 14:53:25 +00:00
bionic \
liberty \
liberty-z \
cplus-demangle
2014-02-19 15:52:54 +00:00
2014-01-07 12:47:18 +00:00
# Set FEATURE_CHECK_(C|LD)FLAGS-all for all CORE_FEATURE_TESTS features.
# If in the future we need per-feature checks/flags for features not
# mentioned in this list we need to refactor this ;-).
set_test_all_flags = $( eval $( set_test_all_flags_code) )
d e f i n e s e t _ t e s t _ a l l _ f l a g s _ c o d e
FEATURE_CHECK_CFLAGS-all += $( FEATURE_CHECK_CFLAGS-$( 1) )
FEATURE_CHECK_LDFLAGS-all += $( FEATURE_CHECK_LDFLAGS-$( 1) )
e n d e f
$( foreach feat ,$ ( CORE_FEATURE_TESTS ) ,$ ( call set_test_all_flags ,$ ( feat ) ) )
2013-10-01 12:14:31 +00:00
#
# Special fast-path for the 'all features are available' case:
#
2013-10-02 08:01:42 +00:00
$( call feature_check ,all ,$ ( MSG ) )
#
# Just in case the build freshly failed, make sure we print the
# feature matrix:
#
2013-10-01 12:14:31 +00:00
i f e q ( $( feature -all ) , 1 )
2013-10-02 07:54:43 +00:00
#
# test-all.c passed - just set all the core feature flags to 1:
#
$( foreach feat,$( CORE_FEATURE_TESTS) ,$( call feature_set,$( feat) ) )
2013-10-01 12:14:31 +00:00
e l s e
2013-12-21 05:48:11 +00:00
$( shell $( MAKE) OUTPUT = $( OUTPUT_FEATURES) CFLAGS = " $( EXTRA_CFLAGS) " LDFLAGS = $( LDFLAGS) -i -j -C config/feature-checks $( addsuffix .bin,$( CORE_FEATURE_TESTS) ) >/dev/null 2>& 1)
2013-10-02 07:54:43 +00:00
$( foreach feat,$( CORE_FEATURE_TESTS) ,$( call feature_check,$( feat) ) )
2013-10-01 12:14:31 +00:00
e n d i f
2013-09-30 11:48:44 +00:00
i f e q ( $( feature -stackprotector -all ) , 1 )
2013-04-15 02:06:58 +00:00
CFLAGS += -fstack-protector-all
2013-03-24 23:40:48 +00:00
e n d i f
2013-10-10 06:05:25 +00:00
i f e q ( $( DEBUG ) , 0 )
2013-10-07 07:38:28 +00:00
ifeq ( $( feature-fortify-source) , 1)
2013-04-15 02:06:58 +00:00
CFLAGS += -D_FORTIFY_SOURCE= 2
endif
2013-03-24 23:40:48 +00:00
e n d i f
2013-04-15 02:32:28 +00:00
CFLAGS += -I$( src-perf) /util/include
CFLAGS += -I$( src-perf) /arch/$( ARCH) /include
2014-01-09 14:00:52 +00:00
CFLAGS += -I$( srctree) /tools/include/
2013-04-15 02:32:28 +00:00
CFLAGS += -I$( srctree) /arch/$( ARCH) /include/uapi
CFLAGS += -I$( srctree) /arch/$( ARCH) /include
CFLAGS += -I$( srctree) /include/uapi
CFLAGS += -I$( srctree) /include
2013-05-24 12:35:23 +00:00
# $(obj-perf) for generated common-cmds.h
# $(obj-perf)/util for generated bison/flex headers
i f n e q ( $( OUTPUT ) , )
2013-04-15 02:32:28 +00:00
CFLAGS += -I$( obj-perf) /util
CFLAGS += -I$( obj-perf)
2013-05-24 12:35:23 +00:00
e n d i f
2013-04-15 02:32:28 +00:00
CFLAGS += -I$( src-perf) /util
CFLAGS += -I$( src-perf)
2013-06-11 15:29:18 +00:00
CFLAGS += -I$( LIB_INCLUDE)
2013-05-24 12:35:23 +00:00
2013-04-15 02:32:28 +00:00
CFLAGS += -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS= 64 -D_GNU_SOURCE
2013-03-24 23:40:48 +00:00
2014-07-14 10:02:53 +00:00
i f e q ( $( feature -sync -compare -and -swap ) , 1 )
CFLAGS += -DHAVE_SYNC_COMPARE_AND_SWAP_SUPPORT
e n d i f
2013-05-24 12:35:24 +00:00
i f n d e f N O _ B I O N I C
2013-10-29 16:43:15 +00:00
$( call feature_check,bionic)
2013-09-30 12:11:46 +00:00
ifeq ( $( feature-bionic) , 1)
BIONIC := 1
EXTLIBS := $( filter-out -lrt,$( EXTLIBS) )
EXTLIBS := $( filter-out -lpthread,$( EXTLIBS) )
endif
2013-03-24 23:40:48 +00:00
e n d i f
2013-03-24 23:45:08 +00:00
i f d e f N O _ L I B E L F
2013-04-15 02:06:58 +00:00
NO_DWARF := 1
NO_DEMANGLE := 1
NO_LIBUNWIND := 1
2014-02-19 15:52:57 +00:00
NO_LIBDW_DWARF_UNWIND := 1
2013-03-24 23:45:08 +00:00
e l s e
2013-09-30 12:20:25 +00:00
ifeq ( $( feature-libelf) , 0)
2013-10-07 08:34:20 +00:00
ifeq ( $( feature-glibc) , 1)
2013-09-30 12:11:16 +00:00
LIBC_SUPPORT := 1
endif
ifeq ( $( BIONIC) ,1)
LIBC_SUPPORT := 1
endif
ifeq ( $( LIBC_SUPPORT) ,1)
msg := $( warning No libelf found, disables 'probe' tool, please install elfutils-libelf-devel/libelf-dev) ;
NO_LIBELF := 1
NO_DWARF := 1
NO_DEMANGLE := 1
2014-03-25 12:35:11 +00:00
NO_LIBUNWIND := 1
NO_LIBDW_DWARF_UNWIND := 1
2013-09-30 12:11:16 +00:00
else
2014-06-05 15:46:04 +00:00
ifneq ( $( filter s% -static%,$( LDFLAGS) ,) ,)
msg := $( error No static glibc found, please install glibc-static) ;
else
msg := $( error No gnu/libc-version.h found, please install glibc-dev[ el] ) ;
endif
2013-09-30 12:11:16 +00:00
endif
2013-04-15 02:06:58 +00:00
else
2014-02-19 15:52:58 +00:00
ifndef NO_LIBDW_DWARF_UNWIND
ifneq ( $( feature-libdw-dwarf-unwind) ,1)
NO_LIBDW_DWARF_UNWIND := 1
msg := $( warning No libdw DWARF unwind found, Please install elfutils-devel/libdw-dev >= 0.158 and/or set LIBDW_DIR) ;
endif
endif
2013-10-07 08:35:39 +00:00
ifneq ( $( feature-dwarf) , 1)
2013-09-30 12:11:16 +00:00
msg := $( warning No libdw.h found or old libdw.h found or elfutils is older than 0.138, disables dwarf support. Please install new elfutils-devel/libdw-dev) ;
NO_DWARF := 1
endif # Dwarf support
2013-10-02 13:30:35 +00:00
endif # libelf support
2013-03-24 23:45:08 +00:00
e n d i f # NO_LIBELF
i f n d e f N O _ L I B E L F
2013-10-07 08:05:51 +00:00
CFLAGS += -DHAVE_LIBELF_SUPPORT
2013-03-24 23:48:14 +00:00
2013-09-30 13:02:28 +00:00
ifeq ( $( feature-libelf-mmap) , 1)
2013-10-07 08:05:51 +00:00
CFLAGS += -DHAVE_LIBELF_MMAP_SUPPORT
endif
2013-03-24 23:48:14 +00:00
2013-09-30 12:35:27 +00:00
ifeq ( $( feature-libelf-getphdrnum) , 1)
2013-10-07 08:05:51 +00:00
CFLAGS += -DHAVE_ELF_GETPHDRNUM_SUPPORT
endif
# include ARCH specific config
-include $( src-perf) /arch/$( ARCH) /Makefile
2013-03-24 23:48:14 +00:00
2013-10-07 08:05:51 +00:00
ifndef NO_DWARF
ifeq ( $( origin PERF_HAVE_DWARF_REGS) , undefined)
msg := $( warning DWARF register mappings have not been defined for architecture $( ARCH) , DWARF support disabled) ;
NO_DWARF := 1
else
CFLAGS += -DHAVE_DWARF_SUPPORT $( LIBDW_CFLAGS)
LDFLAGS += $( LIBDW_LDFLAGS)
EXTLIBS += -lelf -ldw
endif # PERF_HAVE_DWARF_REGS
endif # NO_DWARF
2013-03-24 23:45:08 +00:00
e n d i f # NO_LIBELF
2013-03-24 23:53:03 +00:00
i f n d e f N O _ L I B U N W I N D
2013-09-30 12:45:44 +00:00
ifneq ( $( feature-libunwind) , 1)
2014-02-19 15:52:58 +00:00
msg := $( warning No libunwind found. Please install libunwind-dev[ el] >= 1.1 and/or set LIBUNWIND_DIR) ;
2013-10-07 08:30:47 +00:00
NO_LIBUNWIND := 1
2014-02-19 15:52:58 +00:00
endif
e n d i f
dwarf-post-unwind := 1
dwarf-post-unwind-text := BUG
# setup DWARF post unwinder
i f d e f N O _ L I B U N W I N D
ifdef NO_LIBDW_DWARF_UNWIND
msg := $( warning Disabling post unwind, no support found.) ;
dwarf-post-unwind := 0
Merge branch 'for-linus' of git://git.linaro.org/people/rmk/linux-arm
Pull ARM updates from Russell King:
"Included in this series are:
1. BE8 (modern big endian) changes for ARM from Ben Dooks
2. big.Little support from Nicolas Pitre and Dave Martin
3. support for LPAE systems with all system memory above 4GB
4. Perf updates from Will Deacon
5. Additional prefetching and other performance improvements from Will.
6. Neon-optimised AES implementation fro Ard.
7. A number of smaller fixes scattered around the place.
There is a rather horrid merge conflict in tools/perf - I was never
notified of the conflict because it originally occurred between Will's
tree and other stuff. Consequently I have a resolution which Will
forwarded me, which I'll forward on immediately after sending this
mail.
The other notable thing is I'm expecting some build breakage in the
crypto stuff on ARM only with Ard's AES patches. These were merged
into a stable git branch which others had already pulled, so there's
little I can do about this. The problem is caused because these
patches have a dependency on some code in the crypto git tree - I
tried requesting a branch I can pull to resolve these, and all I got
each time from the crypto people was "we'll revert our patches then"
which would only make things worse since I still don't have the
dependent patches. I've no idea what's going on there or how to
resolve that, and since I can't split these patches from the rest of
this pull request, I'm rather stuck with pushing this as-is or
reverting Ard's patches.
Since it should "come out in the wash" I've left them in - the only
build problems they seem to cause at the moment are with randconfigs,
and since it's a new feature anyway. However, if by -rc1 the
dependencies aren't in, I think it'd be best to revert Ard's patches"
I resolved the perf conflict roughly as per the patch sent by Russell,
but there may be some differences. Any errors are likely mine. Let's
see how the crypto issues work out..
* 'for-linus' of git://git.linaro.org/people/rmk/linux-arm: (110 commits)
ARM: 7868/1: arm/arm64: remove atomic_clear_mask() in "include/asm/atomic.h"
ARM: 7867/1: include: asm: use 'int' instead of 'unsigned long' for 'oldval' in atomic_cmpxchg().
ARM: 7866/1: include: asm: use 'long long' instead of 'u64' within atomic.h
ARM: 7871/1: amba: Extend number of IRQS
ARM: 7887/1: Don't smp_cross_call() on UP devices in arch_irq_work_raise()
ARM: 7872/1: Support arch_irq_work_raise() via self IPIs
ARM: 7880/1: Clear the IT state independent of the Thumb-2 mode
ARM: 7878/1: nommu: Implement dummy early_paging_init()
ARM: 7876/1: clear Thumb-2 IT state on exception handling
ARM: 7874/2: bL_switcher: Remove cpu_hotplug_driver_{lock,unlock}()
ARM: footbridge: fix build warnings for netwinder
ARM: 7873/1: vfp: clear vfp_current_hw_state for dying cpu
ARM: fix misplaced arch_virt_to_idmap()
ARM: 7848/1: mcpm: Implement cpu_kill() to synchronise on powerdown
ARM: 7847/1: mcpm: Factor out logical-to-physical CPU translation
ARM: 7869/1: remove unused XSCALE_PMU Kconfig param
ARM: 7864/1: Handle 64-bit memory in case of 32-bit phys_addr_t
ARM: 7863/1: Let arm_add_memory() always use 64-bit arguments
ARM: 7862/1: pcpu: replace __get_cpu_var_uses
ARM: 7861/1: cacheflush: consolidate single-CPU ARMv7 cache disabling code
...
2013-11-13 23:51:29 +00:00
else
2014-02-19 15:52:58 +00:00
dwarf-post-unwind-text := libdw
endif
e l s e
dwarf-post-unwind-text := libunwind
# Enable libunwind support by default.
ifndef NO_LIBDW_DWARF_UNWIND
NO_LIBDW_DWARF_UNWIND := 1
endif
e n d i f
i f e q ( $( dwarf -post -unwind ) , 1 )
CFLAGS += -DHAVE_DWARF_UNWIND_SUPPORT
e l s e
NO_DWARF_UNWIND := 1
e n d i f
i f n d e f N O _ L I B U N W I N D
2014-04-28 12:32:33 +00:00
ifeq ( $( ARCH) ,$( filter $( ARCH) ,arm arm64) )
2014-02-19 15:52:58 +00:00
$( call feature_check,libunwind-debug-frame)
ifneq ( $( feature-libunwind-debug-frame) , 1)
msg := $( warning No debug_frame support found in libunwind) ;
Merge branch 'for-linus' of git://git.linaro.org/people/rmk/linux-arm
Pull ARM updates from Russell King:
"Included in this series are:
1. BE8 (modern big endian) changes for ARM from Ben Dooks
2. big.Little support from Nicolas Pitre and Dave Martin
3. support for LPAE systems with all system memory above 4GB
4. Perf updates from Will Deacon
5. Additional prefetching and other performance improvements from Will.
6. Neon-optimised AES implementation fro Ard.
7. A number of smaller fixes scattered around the place.
There is a rather horrid merge conflict in tools/perf - I was never
notified of the conflict because it originally occurred between Will's
tree and other stuff. Consequently I have a resolution which Will
forwarded me, which I'll forward on immediately after sending this
mail.
The other notable thing is I'm expecting some build breakage in the
crypto stuff on ARM only with Ard's AES patches. These were merged
into a stable git branch which others had already pulled, so there's
little I can do about this. The problem is caused because these
patches have a dependency on some code in the crypto git tree - I
tried requesting a branch I can pull to resolve these, and all I got
each time from the crypto people was "we'll revert our patches then"
which would only make things worse since I still don't have the
dependent patches. I've no idea what's going on there or how to
resolve that, and since I can't split these patches from the rest of
this pull request, I'm rather stuck with pushing this as-is or
reverting Ard's patches.
Since it should "come out in the wash" I've left them in - the only
build problems they seem to cause at the moment are with randconfigs,
and since it's a new feature anyway. However, if by -rc1 the
dependencies aren't in, I think it'd be best to revert Ard's patches"
I resolved the perf conflict roughly as per the patch sent by Russell,
but there may be some differences. Any errors are likely mine. Let's
see how the crypto issues work out..
* 'for-linus' of git://git.linaro.org/people/rmk/linux-arm: (110 commits)
ARM: 7868/1: arm/arm64: remove atomic_clear_mask() in "include/asm/atomic.h"
ARM: 7867/1: include: asm: use 'int' instead of 'unsigned long' for 'oldval' in atomic_cmpxchg().
ARM: 7866/1: include: asm: use 'long long' instead of 'u64' within atomic.h
ARM: 7871/1: amba: Extend number of IRQS
ARM: 7887/1: Don't smp_cross_call() on UP devices in arch_irq_work_raise()
ARM: 7872/1: Support arch_irq_work_raise() via self IPIs
ARM: 7880/1: Clear the IT state independent of the Thumb-2 mode
ARM: 7878/1: nommu: Implement dummy early_paging_init()
ARM: 7876/1: clear Thumb-2 IT state on exception handling
ARM: 7874/2: bL_switcher: Remove cpu_hotplug_driver_{lock,unlock}()
ARM: footbridge: fix build warnings for netwinder
ARM: 7873/1: vfp: clear vfp_current_hw_state for dying cpu
ARM: fix misplaced arch_virt_to_idmap()
ARM: 7848/1: mcpm: Implement cpu_kill() to synchronise on powerdown
ARM: 7847/1: mcpm: Factor out logical-to-physical CPU translation
ARM: 7869/1: remove unused XSCALE_PMU Kconfig param
ARM: 7864/1: Handle 64-bit memory in case of 32-bit phys_addr_t
ARM: 7863/1: Let arm_add_memory() always use 64-bit arguments
ARM: 7862/1: pcpu: replace __get_cpu_var_uses
ARM: 7861/1: cacheflush: consolidate single-CPU ARMv7 cache disabling code
...
2013-11-13 23:51:29 +00:00
CFLAGS += -DNO_LIBUNWIND_DEBUG_FRAME
endif
2014-02-19 15:52:58 +00:00
else
# non-ARM has no dwarf_find_debug_frame() function:
CFLAGS += -DNO_LIBUNWIND_DEBUG_FRAME
endif
CFLAGS += -DHAVE_LIBUNWIND_SUPPORT
EXTLIBS += $( LIBUNWIND_LIBS)
CFLAGS += $( LIBUNWIND_CFLAGS)
LDFLAGS += $( LIBUNWIND_LDFLAGS)
2013-09-30 12:45:44 +00:00
e n d i f
2013-03-24 23:54:36 +00:00
i f n d e f N O _ L I B A U D I T
2013-09-30 12:55:31 +00:00
ifneq ( $( feature-libaudit) , 1)
2013-04-15 02:06:58 +00:00
msg := $( warning No libaudit.h found, disables 'trace' tool, please install audit-libs-devel or libaudit-dev) ;
NO_LIBAUDIT := 1
else
2013-09-30 10:07:11 +00:00
CFLAGS += -DHAVE_LIBAUDIT_SUPPORT
2013-04-15 02:06:58 +00:00
EXTLIBS += -laudit
endif
2013-03-24 23:54:36 +00:00
e n d i f
2013-03-24 23:56:08 +00:00
i f d e f N O _ N E W T
2013-04-15 02:06:58 +00:00
NO_SLANG = 1
2013-03-24 23:56:08 +00:00
e n d i f
i f n d e f N O _ S L A N G
2013-09-30 12:57:54 +00:00
ifneq ( $( feature-libslang) , 1)
2013-04-15 02:06:58 +00:00
msg := $( warning slang not found, disables TUI support. Please install slang-devel or libslang-dev) ;
NO_SLANG := 1
else
# Fedora has /usr/include/slang/slang.h, but ubuntu /usr/include/slang.h
CFLAGS += -I/usr/include/slang
2013-09-30 10:07:11 +00:00
CFLAGS += -DHAVE_SLANG_SUPPORT
2013-04-15 02:06:58 +00:00
EXTLIBS += -lslang
endif
2013-03-24 23:56:08 +00:00
e n d i f
2013-03-17 23:09:24 +00:00
i f n d e f N O _ G T K 2
2014-01-15 10:44:08 +00:00
FLAGS_GTK2 = $( CFLAGS) $( LDFLAGS) $( EXTLIBS) $( shell $( PKG_CONFIG) --libs --cflags gtk+-2.0 2>/dev/null)
2013-09-30 13:01:56 +00:00
ifneq ( $( feature-gtk2) , 1)
2013-04-15 02:06:58 +00:00
msg := $( warning GTK2 not found, disables GTK2 support. Please install gtk2-devel or libgtk2.0-dev) ;
NO_GTK2 := 1
else
2013-09-30 13:08:30 +00:00
ifeq ( $( feature-gtk2-infobar) , 1)
2013-09-13 06:27:43 +00:00
GTK_CFLAGS := -DHAVE_GTK_INFO_BAR_SUPPORT
2013-04-15 02:06:58 +00:00
endif
2013-09-30 10:07:11 +00:00
CFLAGS += -DHAVE_GTK2_SUPPORT
2014-01-15 10:44:08 +00:00
GTK_CFLAGS += $( shell $( PKG_CONFIG) --cflags gtk+-2.0 2>/dev/null)
GTK_LIBS := $( shell $( PKG_CONFIG) --libs gtk+-2.0 2>/dev/null)
2013-09-26 18:55:54 +00:00
EXTLIBS += -ldl
2013-04-15 02:06:58 +00:00
endif
2013-03-17 23:09:24 +00:00
e n d i f
2013-03-17 23:19:44 +00:00
grep-libs = $( filter -l%,$( 1) )
strip-libs = $( filter-out -l%,$( 1) )
i f d e f N O _ L I B P E R L
2013-04-15 02:06:58 +00:00
CFLAGS += -DNO_LIBPERL
2013-03-17 23:19:44 +00:00
e l s e
2013-04-15 02:06:58 +00:00
PERL_EMBED_LDOPTS = $( shell perl -MExtUtils::Embed -e ldopts 2>/dev/null)
PERL_EMBED_LDFLAGS = $( call strip-libs,$( PERL_EMBED_LDOPTS) )
PERL_EMBED_LIBADD = $( call grep-libs,$( PERL_EMBED_LDOPTS) )
PERL_EMBED_CCOPTS = ` perl -MExtUtils::Embed -e ccopts 2>/dev/null`
FLAGS_PERL_EMBED = $( PERL_EMBED_CCOPTS) $( PERL_EMBED_LDOPTS)
2013-09-30 13:15:36 +00:00
ifneq ( $( feature-libperl) , 1)
2013-04-15 02:06:58 +00:00
CFLAGS += -DNO_LIBPERL
NO_LIBPERL := 1
2014-05-26 19:02:30 +00:00
msg := $( warning Missing perl devel files. Disabling perl scripting support, consider installing perl-ExtUtils-Embed) ;
2013-04-15 02:06:58 +00:00
else
LDFLAGS += $( PERL_EMBED_LDFLAGS)
EXTLIBS += $( PERL_EMBED_LIBADD)
endif
2013-03-17 23:19:44 +00:00
e n d i f
2013-03-17 23:35:32 +00:00
2013-10-29 16:43:16 +00:00
i f e q ( $( feature -timerfd ) , 1 )
CFLAGS += -DHAVE_TIMERFD_SUPPORT
e l s e
msg := $( warning No timerfd support. Disables 'perf kvm stat live' ) ;
e n d i f
2013-03-17 23:35:32 +00:00
disable-python = $( eval $( disable-python_code) )
d e f i n e d i s a b l e - p y t h o n _ c o d e
2013-03-21 10:30:54 +00:00
CFLAGS += -DNO_LIBPYTHON
2013-03-17 23:35:32 +00:00
$( if $( 1) ,$( warning No $( 1) was found) )
$( warning Python support will not be built)
NO_LIBPYTHON := 1
e n d e f
override PYTHON : = \
$( call get-executable-or-default,PYTHON,python)
i f n d e f P Y T H O N
$( call disable-python,python interpreter)
e l s e
PYTHON_WORD := $( call shell-wordify,$( PYTHON) )
ifdef NO_LIBPYTHON
$( call disable-python)
else
override PYTHON_CONFIG := \
$( call get-executable-or-default,PYTHON_CONFIG,$( PYTHON) -config)
ifndef PYTHON_CONFIG
$( call disable-python,python-config tool)
else
PYTHON_CONFIG_SQ := $( call shell-sq,$( PYTHON_CONFIG) )
PYTHON_EMBED_LDOPTS := $( shell $( PYTHON_CONFIG_SQ) --ldflags 2>/dev/null)
PYTHON_EMBED_LDFLAGS := $( call strip-libs,$( PYTHON_EMBED_LDOPTS) )
PYTHON_EMBED_LIBADD := $( call grep-libs,$( PYTHON_EMBED_LDOPTS) )
PYTHON_EMBED_CCOPTS := $( shell $( PYTHON_CONFIG_SQ) --cflags 2>/dev/null)
FLAGS_PYTHON_EMBED := $( PYTHON_EMBED_CCOPTS) $( PYTHON_EMBED_LDOPTS)
2013-09-30 13:18:37 +00:00
ifneq ( $( feature-libpython) , 1)
2013-03-17 23:35:32 +00:00
$( call disable-python,Python.h ( for Python 2.x) )
else
2013-09-30 13:40:04 +00:00
ifneq ( $( feature-libpython-version) , 1)
2013-03-17 23:35:32 +00:00
$( warning Python 3 is not yet supported; please set )
$( warning PYTHON and/or PYTHON_CONFIG appropriately.)
$( warning If you also have Python 2 installed, then )
$( warning try something like:)
$( warning $( and ,) )
$( warning $( and ,) make PYTHON = python2)
$( warning $( and ,) )
$( warning Otherwise, disable Python support entirely:)
$( warning $( and ,) )
$( warning $( and ,) make NO_LIBPYTHON = 1)
$( warning $( and ,) )
$( error $( and ,) )
else
2013-03-21 10:41:05 +00:00
LDFLAGS += $( PYTHON_EMBED_LDFLAGS)
2013-03-17 23:35:32 +00:00
EXTLIBS += $( PYTHON_EMBED_LIBADD)
2013-05-24 12:35:23 +00:00
LANG_BINDINGS += $( obj-perf) python/perf.so
2013-03-17 23:35:32 +00:00
endif
endif
endif
endif
e n d i f
2013-03-17 23:38:16 +00:00
2013-10-10 20:24:00 +00:00
i f e q ( $( feature -libbfd ) , 1 )
2014-04-23 14:53:25 +00:00
EXTLIBS += -lbfd
# call all detections now so we get correct
# status in VF output
$( call feature_check,liberty)
$( call feature_check,liberty-z)
$( call feature_check,cplus-demangle)
ifeq ( $( feature-liberty) , 1)
EXTLIBS += -liberty
else
ifeq ( $( feature-liberty-z) , 1)
EXTLIBS += -liberty -lz
endif
endif
2013-10-10 20:24:00 +00:00
e n d i f
2013-03-17 23:38:16 +00:00
i f d e f N O _ D E M A N G L E
2013-04-15 02:06:58 +00:00
CFLAGS += -DNO_DEMANGLE
2013-03-17 23:38:16 +00:00
e l s e
2013-09-30 10:07:11 +00:00
ifdef HAVE_CPLUS_DEMANGLE_SUPPORT
2013-04-15 02:06:58 +00:00
EXTLIBS += -liberty
2013-09-30 10:07:11 +00:00
CFLAGS += -DHAVE_CPLUS_DEMANGLE_SUPPORT
2013-04-15 02:06:58 +00:00
else
2013-10-10 20:24:00 +00:00
ifneq ( $( feature-libbfd) , 1)
2014-04-23 14:53:25 +00:00
ifneq ( $( feature-liberty) , 1)
ifneq ( $( feature-liberty-z) , 1)
# we dont have neither HAVE_CPLUS_DEMANGLE_SUPPORT
# or any of 'bfd iberty z' trinity
2013-10-02 13:15:09 +00:00
ifeq ( $( feature-cplus-demangle) , 1)
2013-04-15 02:06:58 +00:00
EXTLIBS += -liberty
2013-09-30 10:07:11 +00:00
CFLAGS += -DHAVE_CPLUS_DEMANGLE_SUPPORT
2013-04-15 02:06:58 +00:00
else
msg := $( warning No bfd.h/libbfd found, install binutils-dev[ el] /zlib-static to gain symbol demangling)
CFLAGS += -DNO_DEMANGLE
endif
endif
endif
endif
endif
2013-03-17 23:38:16 +00:00
e n d i f
2013-03-17 23:41:04 +00:00
2013-10-10 20:24:00 +00:00
i f n e q ( $( filter -lbfd ,$ ( EXTLIBS ) ) , )
CFLAGS += -DHAVE_LIBBFD_SUPPORT
e n d i f
2013-03-17 23:41:04 +00:00
i f n d e f N O _ B A C K T R A C E
2013-09-30 14:49:38 +00:00
ifeq ( $( feature-backtrace) , 1)
2013-09-30 10:07:11 +00:00
CFLAGS += -DHAVE_BACKTRACE_SUPPORT
2013-04-15 02:06:58 +00:00
endif
2013-03-17 23:41:04 +00:00
e n d i f
2013-03-17 23:45:27 +00:00
i f n d e f N O _ L I B N U M A
2013-09-30 11:37:10 +00:00
ifeq ( $( feature-libnuma) , 0)
2013-12-02 15:26:48 +00:00
msg := $( warning No numa.h found, disables 'perf bench numa mem' benchmark, please install numactl-devel/libnuma-devel/libnuma-dev) ;
2013-04-15 02:06:58 +00:00
NO_LIBNUMA := 1
else
2013-09-30 10:07:11 +00:00
CFLAGS += -DHAVE_LIBNUMA_SUPPORT
2013-04-15 02:06:58 +00:00
EXTLIBS += -lnuma
endif
2013-03-17 23:45:27 +00:00
e n d i f
2013-03-17 23:56:01 +00:00
2014-07-03 13:59:49 +00:00
i f d e f H A V E _ K V M _ S T A T _ S U P P O R T
CFLAGS += -DHAVE_KVM_STAT_SUPPORT
e n d i f
2013-03-17 23:56:01 +00:00
# Among the variables below, these:
# perfexecdir
# template_dir
# mandir
# infodir
# htmldir
# ETC_PERFCONFIG (but not sysconfdir)
# can be specified as a relative path some/where/else;
# this is interpreted as relative to $(prefix) and "perf" at
# runtime figures out where they are based on the path to the executable.
# This can help installing the suite in a relocatable way.
# Make the path relative to DESTDIR, not to prefix
i f n d e f D E S T D I R
2014-06-02 16:44:34 +00:00
prefix ?= $( HOME)
2013-03-17 23:56:01 +00:00
e n d i f
bindir_relative = bin
bindir = $( prefix) /$( bindir_relative)
mandir = share/man
infodir = share/info
perfexecdir = libexec/perf-core
sharedir = $( prefix) /share
template_dir = share/perf-core/templates
htmldir = share/doc/perf-doc
i f e q ( $( prefix ) , / u s r )
sysconfdir = /etc
ETC_PERFCONFIG = $( sysconfdir) /perfconfig
e l s e
sysconfdir = $( prefix) /etc
ETC_PERFCONFIG = etc/perfconfig
e n d i f
2013-09-13 06:27:43 +00:00
i f e q ( $( IS_X 86_ 64) , 1 )
lib = lib64
e l s e
2013-03-17 23:56:01 +00:00
lib = lib
2013-09-13 06:27:43 +00:00
e n d i f
libdir = $( prefix) /$( lib)
2013-03-17 23:56:01 +00:00
# Shell quote (do not use $(call) to accommodate ancient setups);
ETC_PERFCONFIG_SQ = $( subst ',' \' ' ,$( ETC_PERFCONFIG) )
DESTDIR_SQ = $( subst ',' \' ' ,$( DESTDIR) )
bindir_SQ = $( subst ',' \' ' ,$( bindir) )
mandir_SQ = $( subst ',' \' ' ,$( mandir) )
infodir_SQ = $( subst ',' \' ' ,$( infodir) )
perfexecdir_SQ = $( subst ',' \' ' ,$( perfexecdir) )
template_dir_SQ = $( subst ',' \' ' ,$( template_dir) )
htmldir_SQ = $( subst ',' \' ' ,$( htmldir) )
prefix_SQ = $( subst ',' \' ' ,$( prefix) )
sysconfdir_SQ = $( subst ',' \' ' ,$( sysconfdir) )
2013-09-13 06:27:43 +00:00
libdir_SQ = $( subst ',' \' ' ,$( libdir) )
2013-03-17 23:56:01 +00:00
i f n e q ( $( filter /%,$ ( firstword $ ( perfexecdir ) ) ) , )
perfexec_instdir = $( perfexecdir)
e l s e
perfexec_instdir = $( prefix) /$( perfexecdir)
e n d i f
perfexec_instdir_SQ = $( subst ',' \' ' ,$( perfexec_instdir) )
2013-12-03 13:09:21 +00:00
# If we install to $(HOME) we keep the traceevent default:
# $(HOME)/.traceevent/plugins
# Otherwise we install plugins into the global $(libdir).
i f d e f D E S T D I R
plugindir = $( libdir) /traceevent/plugins
2014-01-22 15:01:48 +00:00
plugindir_SQ = $( subst ',' \' ' ,$( plugindir) )
2013-12-03 13:09:21 +00:00
e n d i f
2014-02-19 15:52:54 +00:00
#
# Print the result of the feature test:
#
2014-02-19 15:52:55 +00:00
feature_print_status = $( eval $( feature_print_status_code) ) $( info $( MSG) )
2014-02-19 15:52:54 +00:00
2014-02-19 15:52:55 +00:00
d e f i n e f e a t u r e _ p r i n t _ s t a t u s _ c o d e
2014-02-19 15:52:54 +00:00
ifeq ( $( feature-$( 1) ) , 1)
MSG = $( shell printf '...%30s: [ \033[32mon\033[m ]' $( 1) )
else
MSG = $( shell printf '...%30s: [ \033[31mOFF\033[m ]' $( 1) )
endif
e n d e f
2014-02-19 15:52:55 +00:00
feature_print_var = $( eval $( feature_print_var_code) ) $( info $( MSG) )
d e f i n e f e a t u r e _ p r i n t _ v a r _ c o d e
MSG = $( shell printf '...%30s: %s' $( 1) $( $( 1) ) )
e n d e f
feature_print_text = $( eval $( feature_print_text_code) ) $( info $( MSG) )
d e f i n e f e a t u r e _ p r i n t _ t e x t _ c o d e
MSG = $( shell printf '...%30s: %s' $( 1) $( 2) )
e n d e f
2014-02-19 15:52:54 +00:00
PERF_FEATURES := $( foreach feat,$( LIB_FEATURE_TESTS) ,feature-$( feat) ( $( feature-$( feat) ) ) )
PERF_FEATURES_FILE := $( shell touch $( OUTPUT) PERF-FEATURES; cat $( OUTPUT) PERF-FEATURES)
2014-02-19 15:52:58 +00:00
i f e q ( $( dwarf -post -unwind ) , 1 )
PERF_FEATURES += dwarf-post-unwind( $( dwarf-post-unwind-text) )
e n d i f
2014-02-19 15:52:54 +00:00
# The $(display_lib) controls the default detection message
# output. It's set if:
# - detected features differes from stored features from
# last build (in PERF-FEATURES file)
# - one of the $(LIB_FEATURE_TESTS) is not detected
# - VF is enabled
i f n e q ( "$(PERF_FEATURES)" , "$(PERF_FEATURES_FILE)" )
$( shell echo " $( PERF_FEATURES) " > $( OUTPUT) PERF-FEATURES)
display_lib := 1
e n d i f
feature_check = $( eval $( feature_check_code) )
d e f i n e f e a t u r e _ c h e c k _ c o d e
ifneq ( $( feature-$( 1) ) , 1)
display_lib := 1
endif
e n d e f
$( foreach feat ,$ ( LIB_FEATURE_TESTS ) ,$ ( call feature_check ,$ ( feat ) ) )
i f e q ( $( VF ) , 1 )
display_lib := 1
display_vf := 1
e n d i f
i f e q ( $( display_lib ) , 1 )
$( info )
$( info Auto-detecting system features:)
2014-02-19 15:52:55 +00:00
$( foreach feat,$( LIB_FEATURE_TESTS) ,$( call feature_print_status,$( feat) ,) )
2014-02-19 15:52:58 +00:00
ifeq ( $( dwarf-post-unwind) ,1)
$( call feature_print_text,"DWARF post unwind library" , $( dwarf-post-unwind-text) )
endif
2014-02-19 15:52:54 +00:00
e n d i f
i f e q ( $( display_vf ) , 1 )
2014-02-19 15:52:55 +00:00
$( foreach feat,$( VF_FEATURE_TESTS) ,$( call feature_print_status,$( feat) ,) )
$( info )
$( call feature_print_var,prefix)
$( call feature_print_var,bindir)
$( call feature_print_var,libdir)
$( call feature_print_var,sysconfdir)
2014-02-19 15:52:58 +00:00
$( call feature_print_var,LIBUNWIND_DIR)
$( call feature_print_var,LIBDW_DIR)
2014-02-19 15:52:54 +00:00
e n d i f
i f e q ( $( display_lib ) , 1 )
$( info )
e n d i f