Skip to content
Snippets Groups Projects
Commit b71c46d5 authored by Ruben Rodriguez's avatar Ruben Rodriguez
Browse files

Added helpers for linux-hwe

parent 6278be66
No related branches found
No related tags found
No related merge requests found
Showing with 29292 additions and 0 deletions
From f2ebe596e7d72e96e0fb2be87be90f0b96e6f1b3 Mon Sep 17 00:00:00 2001
From: Paolo Valente <paolo.valente@unimore.it>
Date: Tue, 7 Apr 2015 13:39:12 +0200
Subject: [PATCH 1/4] block: cgroups, kconfig, build bits for BFQ-v7r11-4.8.0
Update Kconfig.iosched and do the related Makefile changes to include
kernel configuration options for BFQ. Also increase the number of
policies supported by the blkio controller so that BFQ can add its
own.
Signed-off-by: Paolo Valente <paolo.valente@unimore.it>
Signed-off-by: Arianna Avanzini <avanzini@google.com>
---
block/Kconfig.iosched | 32 ++++++++++++++++++++++++++++++++
block/Makefile | 1 +
include/linux/blkdev.h | 2 +-
3 files changed, 34 insertions(+), 1 deletion(-)
diff --git a/block/Kconfig.iosched b/block/Kconfig.iosched
index 421bef9..0ee5f0f 100644
--- a/block/Kconfig.iosched
+++ b/block/Kconfig.iosched
@@ -39,6 +39,27 @@ config CFQ_GROUP_IOSCHED
---help---
Enable group IO scheduling in CFQ.
+config IOSCHED_BFQ
+ tristate "BFQ I/O scheduler"
+ default n
+ ---help---
+ The BFQ I/O scheduler tries to distribute bandwidth among
+ all processes according to their weights.
+ It aims at distributing the bandwidth as desired, independently of
+ the disk parameters and with any workload. It also tries to
+ guarantee low latency to interactive and soft real-time
+ applications. If compiled built-in (saying Y here), BFQ can
+ be configured to support hierarchical scheduling.
+
+config CGROUP_BFQIO
+ bool "BFQ hierarchical scheduling support"
+ depends on CGROUPS && IOSCHED_BFQ=y
+ default n
+ ---help---
+ Enable hierarchical scheduling in BFQ, using the cgroups
+ filesystem interface. The name of the subsystem will be
+ bfqio.
+
choice
prompt "Default I/O scheduler"
default DEFAULT_CFQ
@@ -52,6 +73,16 @@ choice
config DEFAULT_CFQ
bool "CFQ" if IOSCHED_CFQ=y
+ config DEFAULT_BFQ
+ bool "BFQ" if IOSCHED_BFQ=y
+ help
+ Selects BFQ as the default I/O scheduler which will be
+ used by default for all block devices.
+ The BFQ I/O scheduler aims at distributing the bandwidth
+ as desired, independently of the disk parameters and with
+ any workload. It also tries to guarantee low latency to
+ interactive and soft real-time applications.
+
config DEFAULT_NOOP
bool "No-op"
@@ -61,6 +92,7 @@ config DEFAULT_IOSCHED
string
default "deadline" if DEFAULT_DEADLINE
default "cfq" if DEFAULT_CFQ
+ default "bfq" if DEFAULT_BFQ
default "noop" if DEFAULT_NOOP
endmenu
diff --git a/block/Makefile b/block/Makefile
index 9eda232..4a36683 100644
--- a/block/Makefile
+++ b/block/Makefile
@@ -18,6 +18,7 @@ obj-$(CONFIG_BLK_DEV_THROTTLING) += blk-throttle.o
obj-$(CONFIG_IOSCHED_NOOP) += noop-iosched.o
obj-$(CONFIG_IOSCHED_DEADLINE) += deadline-iosched.o
obj-$(CONFIG_IOSCHED_CFQ) += cfq-iosched.o
+obj-$(CONFIG_IOSCHED_BFQ) += bfq-iosched.o
obj-$(CONFIG_BLOCK_COMPAT) += compat_ioctl.o
obj-$(CONFIG_BLK_CMDLINE_PARSER) += cmdline-parser.o
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
index e79055c..931ff1e 100644
--- a/include/linux/blkdev.h
+++ b/include/linux/blkdev.h
@@ -45,7 +45,7 @@ struct pr_ops;
* Maximum number of blkcg policies allowed to be registered concurrently.
* Defined here to simplify include dependency.
*/
-#define BLKCG_MAX_POLS 2
+#define BLKCG_MAX_POLS 3
typedef void (rq_end_io_fn)(struct request *, int);
--
2.7.4 (Apple Git-66)
This diff is collapsed.
#!/bin/bash
files=`find -type f`
while read -r line
do
./deblob-check $line
done <<< "$files"
This diff is collapsed.
This diff is collapsed.
#! /bin/sh
# Copyright (C) 2008-2016 Alexandre Oliva <lxoliva@fsfla.org>
# This program is part of GNU Linux-libre, a GNU project that
# publishes scripts to clean up Linux so as to make it suitable for
# use in the GNU Project and in Free System Distributions.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
# USA
# deblob-main - prepare a GNU Linux-libre tarball out of a non-libre
# Linux tarball. It expects the Linux release (mver, say 3.0) as the
# first argument, the gnu sub-release (extra) as the second optional
# argument, and the patch release (sver, say .13) as an optional third
# argument. mver and sver are pasted together to form kver.
# linux-$kver.tar.bz2 and deblob-$mver must exist in the current
# directory, and the line that sets kver and extra in deblob-$mver
# must match mver and extra.
# The resulting tarball is put in linux-libre-$kver-gnu$extra.tar.bz2.
# An uncompressed xdelta that produces linux-libre-$kver-gnu$extra.tar
# out of linux-$kver.tar is put in linux-libre-$kver-gnu$extra.xdelta.
# This xdelta can be distributed to enable third parties to easily
# reconstruct the binary tarball starting out of sources downloaded
# from kernel.org, but without distributing non-Free Software
# yourself, because xdelta (unlike patches) is not reversible: the
# removed bits are not present in it at all.
# xdelta version 3 uses different command line syntax, and it switched
# to the more standardized but less efficient vcdiff file format.
# This script will also produce a vcdiff file if xdelta3 is present,
# and it expects the xdelta program to use the version 1 syntax.
# To enable you to check the differences between the tarballs, a patch
# file is generated in linux-libre-$kver-gnu$extra.patch. This patch
# file contains the non-Free blobs, even though in reversed form, so
# its distribution is discouraged.
# The tar files and binary deltas are finally compressed with bzip2,
# and optionally with lzip and xz too, if the compressors are
# available.
# At the end, the script attempts to generate a digital signature for
# the newly-created tarball. This is the last thing the script does,
# so interrupting it at that point to skip the signing won't fail to
# do anything else.
# It is safe to interrupt the script at any other point. When it gets
# a ^C (other than during signing), it starts cleaning up all of its
# temporary and output files. If you insist, it may leave junk
# behind, and then it will refuse to run again before you clean it up
# by hand. It takes extra care to avoid overwriting useful files.
# If deblob-$mver finds any unexpected situation, it will error out,
# and then deblob-main will quit. Pass --force to deblob-main, before
# any other argument, for deblob-main to ignore any such situations.
case $1 in
--force) force=--force; shift;;
*) force=;;
esac
# We don't want e.g. diff output translations to affect us.
LC_ALL=C; export LC_ALL
LANGUAGE=C; export LANGUAGE
mver=$1 extra=$2 sver=$3
kver=$mver$sver gnu=gnu$extra
deblob= dir=`echo "$0" | sed 's,[^/]*$,,;s,^$,.,;s,/*$,,'`
if test -f linux-$kver.tar; then
zext=tar zcmd=
elif test -f linux-$kver.tar.bz2; then
zext=tar.bz2 zcmd=bunzip2
elif test -f linux-$kver.tar.xz; then
zext=tar.xz zcmd=unxz
elif test -f linux-$kver.tar.lz; then
zext=tar.lz zcmd="lzip -d"
elif test -f linux-$kver.tar.gz; then
zext=tar.gz zcmd=gunzip
elif test -f linux-$kver.tgz; then
zext=tgz zcmd=gunzip
else
echo linux-$kver.tar not found, tried .bz2, .xz, .lz, .gz and .tgz too >&2
exit 1
fi
if test -f deblob-$mver; then
deblob=deblob-$mver
elif test -f deblob; then
deblob=deblob
elif test -f $dir/deblob-$mver; then
cp $dir/deblob-$mver deblob
deblob=deblob
else
echo deblob does not exist >&2
exit 1
fi
x1="kver=$mver extra=$extra"
x2=`grep "^kver=[^ ]* extra=" $deblob`
if test "$x1" = "$x2"; then
:
else
echo deblob script does not match command-line arguments >&2
echo expected: $x1 >&2
echo found : $x2 >&2
exit 1
fi
cleanup=
for f in \
linux-libre-$kver-$gnu.tar.bz2 \
linux-libre-$kver-$gnu.tar.bz2.asc \
linux-libre-$kver-$gnu.tar.bz2.sign \
linux-libre-$kver-$gnu.tar.xz \
linux-libre-$kver-$gnu.tar.xz.asc \
linux-libre-$kver-$gnu.tar.xz.sign \
linux-libre-$kver-$gnu.tar.lz \
linux-libre-$kver-$gnu.tar.lz.asc \
linux-libre-$kver-$gnu.tar.lz.sign \
linux-libre-$kver-$gnu.tar \
linux-libre-$kver-$gnu.tar.asc \
linux-libre-$kver-$gnu.tar.sign \
linux-libre-$kver-$gnu.patch \
linux-libre-$kver-$gnu.log \
linux-libre-$kver-$gnu.vcdiff \
linux-libre-$kver-$gnu.vcdiff.bz2 \
linux-libre-$kver-$gnu.vcdiff.bz2.asc \
linux-libre-$kver-$gnu.vcdiff.bz2.sign \
linux-libre-$kver-$gnu.vcdiff.xz \
linux-libre-$kver-$gnu.vcdiff.xz.asc \
linux-libre-$kver-$gnu.vcdiff.xz.sign \
linux-libre-$kver-$gnu.vcdiff.lz \
linux-libre-$kver-$gnu.vcdiff.lz.asc \
linux-libre-$kver-$gnu.vcdiff.lz.sign \
linux-libre-$kver-$gnu.xdelta \
linux-libre-$kver-$gnu.xdelta.bz2 \
linux-libre-$kver-$gnu.xdelta.bz2.asc \
linux-libre-$kver-$gnu.xdelta.bz2.sign \
linux-libre-$kver-$gnu.xdelta.xz \
linux-libre-$kver-$gnu.xdelta.xz.asc \
linux-libre-$kver-$gnu.xdelta.xz.sign \
linux-libre-$kver-$gnu.xdelta.lz \
linux-libre-$kver-$gnu.xdelta.lz.asc \
linux-libre-$kver-$gnu.xdelta.lz.sign \
; do
if test -f $f; then
echo $f already exists >&2
exit 1
fi
cleanup="$cleanup $f"
done
for d in \
linux-$kver \
linux-libre-$kver-$gnu \
orig-linux-$kver \
; do
if test -d $d; then
echo $d already exists >&2
exit 1
fi
cleanup="$cleanup $d"
done
if test -f $dir/deblob-$kver; then
if cmp $dir/deblob-$kver $deblob; then
:
else
echo $dir/deblob-$kver and $deblob are different >&2
exit 1
fi
fi
if test ! -f deblob-check; then
if test -f $dir/deblob-check; then
cp $dir/deblob-check deblob-check
fi
else
if test -f $dir/deblob-check; then
if cmp $dir/deblob-check deblob-check; then
:
else
echo $dir/deblob-check and deblob-check are different >&2
exit 1
fi
fi
fi
trap 'status=$?; echo cleaning up...; rm -rf $cleanup; (exit $status); exit' 0 1 2 15
set -e
if test -n "$zcmd"; then
echo Uncompressing linux-$kver.$zext into linux-$kver.tar
rm -rf linux-$kver.tar
cleanup="$cleanup linux-$kver.tar"
$zcmd < linux-$kver.$zext > linux-$kver.tar
fi
echo Extracting linux-$kver.tar into linux-$kver
rm -rf linux-$kver
tar -xf linux-$kver.tar
rm -rf linux-libre-$kver-$gnu linux-libre-$kver-$gnu.tar
echo Copying linux-$kver to linux-libre-$kver-$gnu
cp linux-$kver.tar linux-libre-$kver-$gnu.tar
cp -lR linux-$kver/. linux-libre-$kver-$gnu
rm -f linux-libre-$kver-$gnu.log linux-libre-$kver-$gnu.log.tmp
echo Deblobbing within linux-libre-$kver-$gnu, saving output to linux-libre-$kver-$gnu.log
# We can't just pipe deblob into tee, for then we fail to detect
# error conditions. Use file renaming to tell whether we succeeded.
if (cd linux-libre-$kver-$gnu && /bin/sh ../$deblob $force) 2>&1; then
mv linux-libre-$kver-$gnu.log.tmp linux-libre-$kver-$gnu.log
fi | tee linux-libre-$kver-$gnu.log.tmp
if test ! -f linux-libre-$kver-$gnu.log; then
mv linux-libre-$kver-$gnu.log.tmp linux-libre-$kver-$gnu.log
echo $deblob failed, aborting >&2
exit 1
fi
rm -f linux-libre-$kver-$gnu.patch
# Do not copy these scripts for now, deblob-check regards itself as a blob.
# cp -p $0 $deblob deblob-check linux-libre-$kver-$gnu
echo Generating linux-libre-$kver-$gnu.patch
diff -druN linux-$kver linux-libre-$kver-$gnu > linux-libre-$kver-$gnu.patch || :
echo Removing removed or modified files from linux-libre-$kver-$gnu.tar
diff -rq linux-$kver linux-libre-$kver-$gnu |
sed -n "
s,^Only in \\(linux-$kver\\(/.*\\)\\?\\): \\(.*\\),\1/\3,p;
s,^Files \\(linux-$kver\\)/\\(.*\\) and linux-libre-$kver-$gnu/\\2 differ,\\1/\\2,p;
" |
xargs tar --delete -f linux-libre-$kver-$gnu.tar
echo Adding modified or added files to linux-libre-$kver-$gnu.tar
rm -rf orig-linux-$kver
mv linux-$kver orig-linux-$kver
mv linux-libre-$kver-$gnu linux-$kver
diff -rq orig-linux-$kver linux-$kver |
sed -n "
s,^Files orig-\\(linux-$kver/.*\\) and \\1 differ,\\1,p;
s,^Only in \\(linux-$kver\\(/.*\\)\\?\\): \\(.*\\),\\1/\\3,p;
" |
xargs tar --append -f linux-libre-$kver-$gnu.tar
echo Wiping out extracted trees
rm -rf linux-$kver orig-linux-$kver
echo Creating vcdiff between linux-$kver.tar and linux-libre-$kver-$gnu.tar
xdelta3 -e -9 -S djw -s linux-$kver.tar linux-libre-$kver-$gnu.tar linux-libre-$kver-$gnu.vcdiff || : # don't fail if xdelta3 is not present
echo Creating xdelta between linux-$kver.tar and linux-libre-$kver-$gnu.tar
xdelta delta -0 linux-$kver.tar linux-libre-$kver-$gnu.tar linux-libre-$kver-$gnu.xdelta || : # xdelta returns nonzero on success
cleanup="linux-libre-$kver-$gnu.tar linux-libre-$kver-$gnu.xdelta"
echo Compressing binary deltas and linux-libre-$kver-$gnu.tar
rm -f linux-$kver.tar
if test -f linux-libre-$kver-$gnu.xdelta; then
bzip2 -k9 linux-libre-$kver-$gnu.xdelta
xz -k9 linux-libre-$kver-$gnu.xdelta || :
lzip -k9s64MiB linux-libre-$kver-$gnu.xdelta || :
fi
bzip2 -k9 linux-libre-$kver-$gnu.tar
xz -k9 linux-libre-$kver-$gnu.tar || :
lzip -k9s64MiB linux-libre-$kver-$gnu.tar || :
echo Done except for signing, feel free to interrupt
for f in \
linux-libre-$kver-$gnu.tar \
linux-libre-$kver-$gnu.tar.bz2 \
linux-libre-$kver-$gnu.tar.xz \
linux-libre-$kver-$gnu.tar.lz \
linux-libre-$kver-$gnu.vcdiff \
linux-libre-$kver-$gnu.xdelta \
linux-libre-$kver-$gnu.xdelta.bz2 \
linux-libre-$kver-$gnu.xdelta.xz \
linux-libre-$kver-$gnu.xdelta.lz \
; do
if test -f $f; then
gpg -a --detach-sign $f
mv $f.asc $f.sign
fi
done
rm -f $cleanup
cleanup=
trap 'status=$?; (exit $status); exit' 0 1 2 15
echo All set, please review linux-libre-$kver-$gnu.patch
exit 0
This diff is collapsed.
#!/bin/sh
#
# Copyright (C) 2008-2017 Ruben Rodriguez <ruben@trisquel.info>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#
VERSION=1
. ./config
for PATCH in $DATA/*.patch ; do
echo $PATCH
patch -p1 < $PATCH
done
rm -rf /tmp/preserve
mkdir /tmp/preserve
PRESERVE=$(grep '^+++' $DATA/silent-accept-firmware.patch | /bin/sed 's/+++ //; s/\t.*//;' | cut -d/ -f2- | sort -u )
for FILE in $PRESERVE; do
cp $FILE /tmp/preserve --parents -a
done
sh $DATA/deblob-4.8 --force
sed 's/bnx2.*fw/$(DEBLOBBED)/' -i firmware/Makefile
cp /tmp/preserve/* . -a
# Remove ZFS
rm zfs spl debian/scripts/misc/update-zfs.sh -rf
#sed '/zfs/d; /spl/d' -i debian.master/reconstruct
/bin/sed 's/spl-dkms, zfs-dkms//' -i debian/control debian.master/control.d/vars.generic debian.master/control.d/vars.*
/bin/sed '/zfs/d' -i debian.master/rules.d/* debian.master/d-i/modules/fs-core-modules debian.master/control.d/generic.inclusion-list debian.master/abi/*/*/*.modules debian/rules debian.master/control.d/vars.*
/bin/sed '/^define build_zfs/,/^endef/d; /^define install_zfs/,/^endef/d; /zfs/d' -i debian/rules.d/2-binary-arch.mk
# Remove VBox
rm ubuntu/vbox* -rf
sed /vbox/d -i debian.master/info/RECONCILE debian.master/control.d/generic.inclusion-list ubuntu/Makefile
sed '/vbox/d' -i debian.master/reconstruct
# Compile with less modules and avoid abi check
echo 'skipmodule = true' >> debian.master/rules.d/0-common-vars.mk
echo 'skipabi = true' >> debian.master/rules.d/0-common-vars.mk
echo 'skipmodule = true' >> debian/rules.d/0-common-vars.mk
echo 'skipabi = true' >> debian/rules.d/0-common-vars.mk
line=$(grep -n ')-Ubuntu' debian/rules.d/0-common-vars.mk|cut -d: -f1)
sed $(expr $line - 1 ),$(expr $line + 1 )d debian/rules.d/0-common-vars.mk -i
sed s/family=ubuntu/family=trisquel/ -i debian/rules.d/0-common-vars.mk
rename s/ubuntu/trisquel/ debian.*/config/config.common.ubuntu
find debian* -type f -name *control* -exec sed 's/ with Ubuntu patches//; s/Linux/Linux-libre/g' -i {} \;
# Descriptions should not change based on the build arch
sed 's/on DESC//; s/PKGVER on/PKGVER/; /^ DESC.$/d;' debian*/control.d/flavour-control.stub -i
sed '/^firmware/d' ./debian*/abi/*/fwinfo -i
echo > ./debian.master/d-i/firmware/nic-modules
echo > ./debian.master/d-i/firmware/scsi-modules
# Use BFQ scheduler in lowlatency kernels
cat << EOF >> debian.master/config/config.common.trisquel
CONFIG_IOSCHED_BFQ=y
CONFIG_CGROUP_BFQIO=y
CONFIG_BFQ_GROUP_IOSCHED=y
# CONFIG_DEFAULT_BFQ is not set
EOF
cat << EOF >> debian.master/config/i386/config.flavour.lowlatency
CONFIG_DEFAULT_BFQ=y
CONFIG_DEFAULT_IOSCHED="BFQ"
EOF
cp debian.master/config/i386/config.flavour.lowlatency debian.master/config/amd64/config.flavour.lowlatency
# Disable using udev as a fallback for firmware loading
replace "CONFIG_FW_LOADER_USER_HELPER=y" "CONFIG_FW_LOADER_USER_HELPER=n" debian.master/config
changelog "Removed non-free bits"
cp debian/changelog debian.master/changelog
compile
#!/bin/sh
#
# Copyright (C) 2008-2016 Ruben Rodriguez <ruben@trisquel.info>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#
VERSION=1
. ./config
rm ./debian/control.d/signed-generic
sed 's/, linux-firmware//' -i debian/control ./debian/control.d/generic
sed 's/Ubuntu/upstream/' -i debian/control
sed 's/Linux/Linux-libre/g' -i debian/control ./debian/control.d/generic
sed '/signed/,/^$/ d' -i debian/control
changelog "Removed linux-firmware dependency, renamed release for Trisquel"
compile
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment