diff --git a/linux-tools/02-archlinux-paths.patch b/linux-tools/02-archlinux-paths.patch new file mode 100644 index 0000000000000000000000000000000000000000..e16ea43b5d9981be1751d76b406989c33bd5fb7b --- /dev/null +++ b/linux-tools/02-archlinux-paths.patch @@ -0,0 +1,21 @@ +# Seblu was here +--- a/tools/perf/config/Makefile 2014-02-13 23:00:14.000000000 +0100 ++++ b/tools/perf/config/Makefile 2014-02-17 20:01:33.370539725 +0100 +@@ -561,7 +561,7 @@ + bindir = $(prefix)/$(bindir_relative) + mandir = share/man + infodir = share/info +-perfexecdir = libexec/perf-core ++perfexecdir = lib/perf + sharedir = $(prefix)/share + template_dir = share/perf-core/templates + htmldir = share/doc/perf-doc +@@ -573,7 +573,7 @@ + ETC_PERFCONFIG = etc/perfconfig + endif + ifeq ($(ARCH)$(IS_64_BIT), x861) +-lib = lib64 ++lib = lib + else + lib = lib + endif diff --git a/linux-tools/04-fix-usip-h-path.patch b/linux-tools/04-fix-usip-h-path.patch new file mode 100644 index 0000000000000000000000000000000000000000..2d9abce0a44aa18e6977474a71b4b3769224ac66 --- /dev/null +++ b/linux-tools/04-fix-usip-h-path.patch @@ -0,0 +1,13 @@ +# Copyright 2014 Sébastien Luttringer + +--- a/tools/usb/usbip/libsrc/usbip_common.h 2014-10-06 02:13:09.295856364 +0200 ++++ b/tools/usb/usbip/libsrc/usbip_common.h 2014-10-06 02:13:03.607873728 +0200 +@@ -15,7 +15,7 @@ + #include + #include + #include +-#include ++#include "../../../include/uapi/linux/usbip.h" + + #ifndef USBIDS_FILE + #define USBIDS_FILE "/usr/share/hwdata/usb.ids" diff --git a/linux-tools/PKGBUILD b/linux-tools/PKGBUILD new file mode 100644 index 0000000000000000000000000000000000000000..0d3a5da234bb7447ae4f3db78fcf04e18d8ebf4b --- /dev/null +++ b/linux-tools/PKGBUILD @@ -0,0 +1,229 @@ +# Contripution from Arch: https://projects.archlinux.org/svntogit/community.git/tree/trunk?h=packages/linux-tools + +pkgbase=linux-tools +pkgname=( + 'cgroup_event_listener' + 'cpupower' + 'libtraceevent' + 'perf' + 'tmon' + 'turbostat' + 'usbip' + 'x86_energy_perf_policy' +) +pkgver=4.2.6 +pkgrel=1 +license=('GPL2') +arch=('i686' 'x86_64') +url='http://www.kernel.org' +options=('!strip') +makedepends=('git' "linux=${pkgver}") +# split packages need all package dependencies set manually in makedepends +# kernel source deps +makedepends+=('asciidoc' 'xmlto') +# perf deps +makedepends+=('perl' 'python2' 'libnewt' 'elfutils' 'libunwind' 'numactl' 'audit') +# cpupower deps +makedepends+=('pciutils') +# usbip deps +makedepends+=('glib2' 'sysfsutils' 'udev') +# tmon deps +makedepends+=('ncurses') +groups=("$pkgbase") +source=("http://www.kernel.org/pub/linux/kernel/v4.x/linux-${pkgver}.tar.xz" + 'cpupower.default' + 'cpupower.systemd' + 'cpupower.service' + 'usbipd.service' + '02-archlinux-paths.patch' + '04-fix-usip-h-path.patch') +md5sums=('209a610aec55df6ad0d3ceefc03a64f8' + '56883c159381ba89e50ab8ea65efec77' + '7e0710c2f31c1eb1e1417a7972e676b1' + '2450e8ff41b30eb58d43b5fffbfde1f4' + 'bb35634f480325a78b943f7e10165e86' + '1bc4f8c7a21a30e1a873d07e69fb698b' + 'a73ea3ea6d9c9ecb1cc910871eead3ff') + +prepare() { + cd linux-${pkgver} + # apply patch from the source array (should be a pacman feature) + local filename + for filename in "${source[@]}"; do + if [[ "$filename" =~ \.patch$ ]]; then + msg2 "Applying patch $filename" + patch -p1 -N -i "$srcdir/$filename" + fi + done + : +} + +build() { + msg2 'libtraceevent' + pushd linux-${pkgver}/tools/lib/traceevent + make + popd + + msg2 'perf' + pushd linux-${pkgver}/tools/perf + make \ + WERROR=0 \ + DESTDIR="$pkgdir/usr" \ + perfexecdir='lib/perf' \ + PYTHON=python2 \ + PYTHON_CONFIG=python2-config \ + PERF_VERSION=$pkgver-$pkgrel \ + all man + popd + + msg2 'cpupower' + pushd linux-${pkgver}/tools/power/cpupower + # we cannot use --as-needed + #LDFLAGS=${LDFLAGS:+"$LDFLAGS,--no-as-needed"} + make VERSION=$pkgver-$pkgrel + popd + + msg2 'x86_energy_perf_policy' + pushd linux-${pkgver}/tools/power/x86/x86_energy_perf_policy + make + popd + + msg2 'usbip' + pushd linux-${pkgver}/tools/usb/usbip + ./autogen.sh + ./configure --prefix=/usr --sbindir=/usr/bin + make + popd + + msg2 'tmon' + pushd linux-${pkgver}/tools/thermal/tmon + make + popd + + msg2 'cgroup_event_listener' + pushd linux-${pkgver}/tools/cgroup + make + popd + + msg2 'turbostat' + pushd linux-${pkgver}/tools/power/x86/turbostat + make + popd +} + +package_linux-tools-meta() { + pkgdesc='Linux kernel tools meta package' + groups=() + depends=( + 'cgroup_event_listener' + 'cpupower' + 'libtraceevent' + 'perf' + 'tmon' + 'turbostat' + 'usbip' + 'x86_energy_perf_policy' + ) + conflicts=( + 'acpidump' + ) +} + +package_libtraceevent() { + pkgdesc='Linux kernel trace event library' + depends=('glibc') + + cd linux-${pkgver}/tools/lib/traceevent + install -dm 755 "$pkgdir/usr/lib" + install -m 644 libtraceevent.so "$pkgdir/usr/lib" +} + +package_perf() { + pkgdesc='Linux kernel performance auditing tool' + depends=('perl' 'python2' 'libnewt' 'elfutils' 'libunwind' 'binutils' + 'numactl' 'audit') + optdepends=('gtk2: support GTK2 browser for perf report') + + cd linux-${pkgver}/tools/perf + make \ + WERROR=0 \ + DESTDIR="$pkgdir/usr" \ + perfexecdir='lib/perf' \ + PYTHON=python2 \ + PYTHON_CONFIG=python2-config \ + PERF_VERSION=$pkgver-$pkgrel \ + install install-man + # move completion in new directory + cd "$pkgdir" + install -Dm644 usr/etc/bash_completion.d/perf usr/share/bash-completion/completions/perf + rm -r usr/etc +} + +package_cpupower() { + pkgdesc='Linux kernel tool to examine and tune power saving related features of your processor' + backup=('etc/default/cpupower') + depends=('bash' 'pciutils') + install=cpupower.install + + pushd linux-${pkgver}/tools/power/cpupower + make \ + DESTDIR="$pkgdir" \ + sbindir='/usr/bin' \ + mandir='/usr/share/man' \ + docdir='/usr/share/doc/cpupower' \ + install install-man + popd + # install startup scripts + install -Dm 644 $pkgname.default "$pkgdir/etc/default/$pkgname" + install -Dm 644 $pkgname.service "$pkgdir/usr/lib/systemd/system/$pkgname.service" + install -Dm 755 $pkgname.systemd "$pkgdir/usr/lib/systemd/scripts/$pkgname" +} + +package_x86_energy_perf_policy() { + pkgdesc='Read or write MSR_IA32_ENERGY_PERF_BIAS' + depends=('glibc') + + cd linux-${pkgver}/tools/power/x86/x86_energy_perf_policy + install -Dm 755 x86_energy_perf_policy "$pkgdir/usr/bin/x86_energy_perf_policy" + install -Dm 644 x86_energy_perf_policy.8 "$pkgdir/usr/share/man/man8/x86_energy_perf_policy.8" +} + +package_usbip() { + pkgdesc='An USB device sharing system over IP network' + depends=('glib2' 'sysfsutils' 'libsystemd') + + pushd linux-${pkgver}/tools/usb/usbip + make install DESTDIR="$pkgdir" + popd + # module loading + install -Dm 644 /dev/null "$pkgdir/usr/lib/modules-load.d/$pkgname.conf" + printf 'usbip-core\nusbip-host\n' > "$pkgdir/usr/lib/modules-load.d/$pkgname.conf" + # systemd + install -Dm 644 usbipd.service "$pkgdir/usr/lib/systemd/system/usbipd.service" +} + +package_tmon() { + pkgdesc='Monitoring and Testing Tool for Linux kernel thermal subsystem' + depends=('glibc' 'ncurses') + + cd linux-${pkgver}/tools/thermal/tmon + make install INSTALL_ROOT="$pkgdir" +} + +package_cgroup_event_listener() { + pkgdesc='Simple listener of cgroup events' + depends=('glibc') + + cd linux-${pkgver}/tools/cgroup + install -Dm755 cgroup_event_listener "$pkgdir/usr/bin/cgroup_event_listener" +} + +package_turbostat() { + pkgdesc='Report processor frequency and idle statistics' + depends=('glibc') + + cd linux-${pkgver}/tools/power/x86/turbostat + make install DESTDIR="$pkgdir" +} + +# vim:set ts=2 sw=2 et: diff --git a/linux-tools/cpupower.default b/linux-tools/cpupower.default new file mode 100644 index 0000000000000000000000000000000000000000..b5c522ea1561d8e5550f96b205f4f6fe00cd75f4 --- /dev/null +++ b/linux-tools/cpupower.default @@ -0,0 +1,29 @@ +# Define CPUs governor +# valid governors: ondemand, performance, powersave, conservative, userspace. +#governor='ondemand' + +# Limit frequency range +# Valid suffixes: Hz, kHz (default), MHz, GHz, THz +#min_freq="2.25GHz" +#max_freq="3GHz" + +# Specific frequency to be set. +# Requires userspace governor to be available. +# Do not set governor field if you use this one. +#freq= + +# Utilizes cores in one processor package/socket first before processes are +# scheduled to other processor packages/sockets. +# See man (1) CPUPOWER-SET for additional details. +#mc_scheduler= + +# Utilizes thread siblings of one processor core first before processes are +# scheduled to other cores. See man (1) CPUPOWER-SET for additional details. +#smp_scheduler= + +# Sets a register on supported Intel processore which allows software to convey +# its policy for the relative importance of performance versus energy savings to +# the processor. See man (1) CPUPOWER-SET for additional details. +#perf_bias= + +# vim:set ts=2 sw=2 ft=sh et: diff --git a/linux-tools/cpupower.install b/linux-tools/cpupower.install new file mode 100644 index 0000000000000000000000000000000000000000..10e07ae52b3cc70d12fb2ac2c6dc725e9ccaeac4 --- /dev/null +++ b/linux-tools/cpupower.install @@ -0,0 +1,13 @@ +#!/bin/sh + +# arg 1: the new package version +# arg 2: the old package version +post_upgrade() { + if [ "$(vercmp $2 3.7-4)" -le 0 ]; then + cat << EOF +===> cpupower startup config file moved to /etc/default/cpupower +EOF + fi +} + +# vim:set ts=2 sw=2 ft=sh et: diff --git a/linux-tools/cpupower.service b/linux-tools/cpupower.service new file mode 100644 index 0000000000000000000000000000000000000000..aaeba2b082f30eedf193cc46fd8d27af91b228bf --- /dev/null +++ b/linux-tools/cpupower.service @@ -0,0 +1,10 @@ +[Unit] +Description=Apply cpupower configuration + +[Service] +Type=oneshot +ExecStart=/usr/lib/systemd/scripts/cpupower +RemainAfterExit=yes + +[Install] +WantedBy=multi-user.target diff --git a/linux-tools/cpupower.systemd b/linux-tools/cpupower.systemd new file mode 100644 index 0000000000000000000000000000000000000000..51c6454152638bf9ab9d931f9c1aef5f3cffb328 --- /dev/null +++ b/linux-tools/cpupower.systemd @@ -0,0 +1,32 @@ +#!/bin/bash + +. /etc/default/cpupower + +declare -i fail=0 + +# parse frequency options +declare -a params=() +params+=(${governor:+-g $governor}) +params+=(${min_freq:+-d $min_freq}) +params+=(${max_freq:+-u $max_freq}) +params+=(${freq:+-f $freq}) + +# apply frequency options +if ((${#params[@]} > 0)); then + cpupower frequency-set "${params[@]}" >/dev/null || fail=1 +fi + +# parse cpu options +declare -a params=() +params+=(${mc_scheduler:+-m $mc_scheduler}) +params+=(${smp_scheduler:+-s $smp_scheduler}) +params+=(${perf_bias:+-b $perf_bias}) + +# apply cpu options +if ((${#params[@]} > 0)); then + cpupower set "${params[@]}" >/dev/null || fail=1 +fi + +exit $fail + +# vim:set ts=2 sw=2 ft=sh et: diff --git a/linux-tools/usbipd.service b/linux-tools/usbipd.service new file mode 100644 index 0000000000000000000000000000000000000000..1807e94b18cb43f90c52db3a2171bd4ed1b3ce4a --- /dev/null +++ b/linux-tools/usbipd.service @@ -0,0 +1,9 @@ +[Unit] +Description=USB/IP server +After=network.target + +[Service] +ExecStart=/usr/bin/usbipd + +[Install] +WantedBy=multi-user.target