From: Salvatore Bonaccorso Date: Tue, 20 Mar 2018 08:31:07 +0000 (+0000) Subject: Import linux_4.15.11-1.debian.tar.xz X-Git-Tag: archive/raspbian/4.15.11-1+rpi1^2~106^2 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=9c7cf00d647113c0ecfadcf31484b24f1d7e7389;p=linux.git Import linux_4.15.11-1.debian.tar.xz [dgit import tarball linux 4.15.11-1 linux_4.15.11-1.debian.tar.xz] --- 9c7cf00d647113c0ecfadcf31484b24f1d7e7389 diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000000..d040fa3c7b7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,29 @@ +!/patches +!*.patch +!*.diff +*.debhelper* +*.local +*.pyc +*.substvars +*-di +/*-tmp/ +/build/ +/config.defines.dump +/control +/control.md5sum +/files +/hyperv-daemons/ +/libcpupower*/ +/liblockdep*/ +/libusbip-dev/ +/linux-* +!/linux-cpupower.install +!/linux-cpupower.manpages +/lockdep/ +/po/ +/rules.gen +/stamps/ +/tests/control +/tmp/ +/usbip/ +/xen-linux-system-* diff --git a/README.Debian b/README.Debian new file mode 100644 index 00000000000..3f6c39b18e4 --- /dev/null +++ b/README.Debian @@ -0,0 +1,56 @@ +Linux kernel for Debian +----------------------- + +Patches +------- +Debian applies small changes to the kernel source. These are split up into +separated patches addressing individual problems. Each of the patch files +contains a description and mentions the author. The patches can be found +at https://anonscm.debian.org/cgit/kernel/linux.git/tree/debian/patches. + +Config Files +------------ +The .config files used to build the various linux-image files are dynamically +generated during the linux package build. See the source package for +details. Each linux-image-* package provides the complete .config file that +was used to generate it. This file is installed in /boot. + +Scope of security support +------------------------- +Security support is provided not only for the binary builds, but also +for the full source package, allowing for locally customized kernels. +However, kernel options that are not enabled in official Debian builds are +given a lower priority for security support. Options marked as BROKEN +or EXPERIMENTAL are of very low priority, and should not be enabled in +customized builds for a security-sensitive environment. + +Building custom kernel binary packages +-------------------------------------- +We recommend using the 'make deb-pkg' target provided by the upstream +kernel source. + +Rebuilding official binary packages +----------------------------------- +You can build specific kernel binary packages using the targets in +debian/rules.gen, which have names of the form: + binary-arch___ + +Example: + fakeroot make -f debian/rules.gen binary-arch_i386_none_686 + +Rebuilding Adaptec AIC7xxx/79xx firmware +---------------------------------------- +You can rebuild the firmware for the Adaptec AIC7xxx/79xx SCSI Adapters. To +do so you need to set AIC7XXX_BUILD_FIRMWARE/AIC79XX_BUILD_FIRMWARE config +options. Note that this requires to have the development packages for +Berkeley Database (libdb-dev) installed. + +Non-free bits removed +--------------------- +See the patches under debian/patches/debian/dfsg. + +Further information +------------------- +Debian Linux Kernel Handbook: https://kernel-handbook.alioth.debian.org + or debian-kernel-handbook package +Debian Wiki: https://wiki.debian.org/DebianKernel diff --git a/README.source b/README.source new file mode 100644 index 00000000000..2f34a4481f3 --- /dev/null +++ b/README.source @@ -0,0 +1,239 @@ +Updating the upstream source +============================ + +In addition to the build-dependencies, you will need the rsync and +unifdef packages installed. + +1) It is recommended to fetch the release tag from the relevant upstream git + repository, one of: + + * https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git + * https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git + * git://kernel.ubuntu.com/ubuntu/linux.git + + However, it is also possible to use upstream tarball and patch releases. + Both tags and files should be signed by the relevant maintainer, which + you *must* verify using commands such as: + + $ git tag -v v4.5 + $ xzcat linux-4.5.tar.xz | gpg --verify linux-4.5.tar.sign - + $ xzcat patch-4.5.1.xz | gpg --verify patch-4.5.1.sign - + + The upstream maintainers' key fingerprints are: + + pub 2048R/00411886 2011-09-20 + Key fingerprint = ABAF 11C6 5A29 70B1 30AB E3C4 79BE 3E43 0041 1886 + uid Linus Torvalds + sub 2048R/012F54CA 2011-09-20 + + pub 4096R/6092693E 2011-09-23 + Key fingerprint = 647F 2865 4894 E3BD 4571 99BE 38DB BDC8 6092 693E + uid Greg Kroah-Hartman (Linux kernel stable release signing key) + sub 4096R/76D54749 2011-09-23 + + pub 4096R/FDCE24FC 2011-12-10 + Key fingerprint = D4E1 E317 4470 9144 B0F8 101A DB74 AEB8 FDCE 24FC + uid Luis Henriques + uid Luis Henriques + sub 4096R/EFBC394A 2011-12-10 + +2) Run: ./debian/bin/genorig.py + or: ./debian/bin/genorig.py [patch] + + This will produce ../orig/linux_.orig.tar.xz + (e.g. linux_3.5~rc1.orig.tar.xz). + + It involves applying several patches and file deletions for DFSG + compliance, as listed in debian/patches/series-orig. Occasionally + you will need to refresh these. + +3) Run: make -f debian/rules orig + + This will apply the main quilt series to the upstream source, which + will usually fail due to conflicts with upstream changes. You need + to resolve those by dropping or refreshing patches. + +Recording updates in the changelog +---------------------------------- + +Upstream commits that we already cherry-picked and included in a +previous package upload should not be mentioned, since they don't make +any difference to the package. Any other commits that fix a Debian +bug report and/or a security issue with a CVE ID should always be +listed, along with the (Closes: #nnnnnn) and/or (CVE-yyyy-nnnn) +reference. + +Aside from those general rules: + +* For an upstream release candidate, don't attempt to list the changes + +* For a stable release by Linus, refer to the summary at + kernelnewbies.org, e.g. https://kernelnewbies.org/Linux_4.5 + +* For a stable update, refer to the changelog on kernel.org, e.g. + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.5.1, and + list all changes that are relevant to our package and that fix bugs + that we would consider 'important' or higher severity + + - The script debian/bin/stable-update updates the changelog + version and inserts the list of changes. It doesn't attempt to + filter out irrelevant or unimportant changes. + + - The script debian/bin/ckt-stable-update.sh does the same for + stable updates by the Canonical Kernel Team. + + - If you have time, please delete irrelevant changes such as: + + Fixes for architectures not supported by the package + + Fixes for drivers that aren't enabled in any of our configurations + + Build fixes for configurations that we don't use + + Fixes for lockdep false positives + +If you have time, please add bracketted prefixes to the upstream +change list as described below under "Changelog conventions". + +Applying patches to the Debian kernel tree +========================================== + +The Debian kernel packaging uses the quilt patch system, but with +multiple series to allow for featuresets. + +Patches are stored below debian/patches, loosely sorted in bugfix/, +features/ and debian/. Patches are in the standard kernel patch +format (unified diff to be applied with patch -p1) and generally have +DEP-3 headers. + +The series file 'series' is used for all configurations and a series +file 'series-' is used for each optional featureset. + +If you want to generate a source tree with all patches applied, run +make -f debian/rules source + +The resulting source can be found below debian/build. + +Changelog conventions +===================== + +If a change only affects some architectures, flavours or featuresets, +this should be noted with a bracketted prefix on the changelog line: + +* [] Change to featureset +* [] Change that affects Debian architecture +* [,...] Change that affects Debian architectures + , , ... +* [/] Change that affects kernel flavour + on Debian architecture +* [/{,...}] Change that affects kernel + flavours , , ... on Debian architecture + +You can use wildcards to cover multiple values, e.g. 'arm*' for armel, +armhf and arm64 architectures. Also 'x86' is used to cover the Debian +architectures amd64, i386 and x32. + +Kernel config files +=================== + +Each kernel configuration file is constructed dynamically from a +number of files under debian/config. They are read in the following +order, such that files later on the list can override settings from +earlier files. Most of the files are optional and the filenames can +generally be overridden by explicit lists (possibly empty) specified +in the 'defines' files. + +1. Common: + - Default filename: config + - Filename list: [image]configs in defines +2. Per kernel architecture: + - Filename: kernelarch-/config (optional) +3. Per architecture: + - Default filename: /config + - Filename list: [image]configs in /defines +4. Per architecture and flavour: + - Default filename: /config. (optional) + - Filename list: [_image]configs in /defines +5. Per featureset: + - Default filename: featureset-/config (optional) + - Filename list: [image]configs in featureset-/defines +6. Per architecture and featureset: + - Default filename: //config (optional) + - Filename list: [image]configs in //defines +7. Per architecture, featureset, and flavour: + - Default filename: //config. (optional) + - Filename list: [_image]configs in //defines + +You can check the final list of configuration files by reading +debian/rules.gen. Each binary-arch____real +rule passes the list to debian/rules.real as the KCONFIG variable. + +Control file +============ +The master control file debian/control must be generated before +the package is uploaded. debian/rules contains the debian/control +target, which generates the control file by invoking the +debian/bin/gencontrol.py script, which combines the templates from +the templates directory and architecture-specific defines file to +produce the debian/control file. Note that this target is intentionally +made to fail with a non-zero exit code to make sure that it is never +run during an automatic build. The following variables are substituted +into the templates: + +@version@ Upstream kernel version, for example 2.6.11. +@arch@ The Debian arch name, such as powerpc or i386. +@flavour@ The build flavour, such as 686 or k7-smp. +@class@ The CPU/architecture class; displayed in synopsis. It should + be fairly short, as the synopsis is supposed to be <80 chars. + It should be in the form "foo class", and will show up in the + description as "foo class machines". +@longclass@ The CPU/architecture class; displayed in the extended + description. The same rules apply as in @class@. If + this is unset, it will default to @class@. +@desc@ (Potentially) multi-line verbiage that's appended to + -image descriptions. +@abiname@ Current abiname, a single digit. + +Normally, the arch-specific contents should be controlled by +adjusting the corresponding defines file. + +TODO: +- Patches applied to the upstream source +- How to define a flavour +- More detail on generation of debian/control and configs + +Running tests +============= + +linux supports autopkgtest and should be able to run most of the +kernel's self-tests on any architecture where kexec is supported, +but it has higher resource requirements than most packages: + +- A VM with plenty of disk space (10GB is enough), RAM (1GB is + probably enough) and at least 2 CPUs +- The temporary directory for adt-virt-qemu (-o option) will need + several GB of space, so a tmpfs may not be suitable + +Note that if you tell adt-run to use an 'unbuilt tree' (i.e. an +unpacked source package) it does not exclude VCS directories such as +.git. Either use a packed source package or copy the working tree +elsewhere excluding .git. + +Example invocation: + + adt-run -B ../linux-image-4.2.0-rc6-amd64_4.2~rc6-1~exp2_amd64.deb \ + ../linux_4.2~rc6-1~exp2.dsc \ + --timeout-test=1200 \ + --- adt-virt-qemu /var/cache/autopkgtest/adt-sid.img -o /var/tmp -c 2 + +Build profiles +============== + +Several build profiles are understood and supported: + +- stage1: Needed when bootstrapping an architecture. A stage1 build + produces only the linux-libc-dev package and has no host + build-dependencies. +- nodoc: Exclude most documentation +- pkg.linux.notools: Exclude userland tool packages (linux-kbuild-, + linux-perf-, etc.) +- cross: Needed when cross-building. Currently this must be used together + with nopython as the build-dependencies will be unsatisfiable otherwise. +- nopython: Disable Python bindings. This currently disables building the + linux-perf- package, as the perf program embeds Python. diff --git a/bin/abiupdate.py b/bin/abiupdate.py new file mode 100755 index 00000000000..10e3473b7d4 --- /dev/null +++ b/bin/abiupdate.py @@ -0,0 +1,224 @@ +#!/usr/bin/env python3 + +import sys +sys.path.append(sys.path[0] + "/../lib/python") + +import optparse +import os +import shutil +import tempfile + +from urllib.request import urlopen +from urllib.error import HTTPError + +from debian_linux.abi import Symbols +from debian_linux.config import * +from debian_linux.debian import * + +default_url_base = "http://deb.debian.org/debian/" +default_url_base_incoming = "http://incoming.debian.org/debian-buildd/" +default_url_base_ports = "http://ftp.ports.debian.org/debian-ports/" +default_url_base_ports_incoming = "http://incoming.ports.debian.org/" +default_url_base_security = "http://security.debian.org/" + + +class url_debian_flat(object): + def __init__(self, base): + self.base = base + + def __call__(self, source, filename, arch): + return self.base + filename + + +class url_debian_pool(object): + def __init__(self, base): + self.base = base + + def __call__(self, source, filename, arch): + return self.base + "pool/main/" + source[0] + "/" + source + "/" + filename + + +class url_debian_ports_pool(url_debian_pool): + def __call__(self, source, filename, arch): + if arch == 'all': + return url_debian_pool.__call__(self, source, filename, arch) + return self.base + "pool-" + arch + "/main/" + source[0] + "/" + source + "/" + filename + + +class url_debian_security_pool(url_debian_pool): + def __call__(self, source, filename, arch): + return self.base + "pool/updates/main/" + source[0] + "/" + source + "/" + filename + + +class Main(object): + dir = None + + def __init__(self, url, url_config=None, arch=None, featureset=None, flavour=None): + self.log = sys.stdout.write + + self.url = self.url_config = url + if url_config is not None: + self.url_config = url_config + self.override_arch = arch + self.override_featureset = featureset + self.override_flavour = flavour + + changelog = Changelog(version=VersionLinux) + while changelog[0].distribution == 'UNRELEASED': + changelog.pop(0) + changelog = changelog[0] + + self.source = changelog.source + self.version = changelog.version.linux_version + self.version_source = changelog.version.complete + + self.config = ConfigCoreDump(fp=open("debian/config.defines.dump", "rb")) + + self.version_abi = self.config['version', ]['abiname'] + + def __call__(self): + self.dir = tempfile.mkdtemp(prefix='abiupdate') + try: + self.log("Retrieve config\n") + + try: + config = self.get_config() + except HTTPError as e: + self.log("Failed to retrieve %s: %s\n" % (e.filename, e)) + sys.exit(1) + + if self.override_arch: + arches = [self.override_arch] + else: + arches = config[('base',)]['arches'] + for arch in arches: + self.update_arch(config, arch) + finally: + shutil.rmtree(self.dir) + + def extract_package(self, filename, base): + base_out = self.dir + "/" + base + os.mkdir(base_out) + os.system("dpkg-deb --extract %s %s" % (filename, base_out)) + return base_out + + def get_abi(self, arch, prefix): + try: + version_abi = (self.config['version',]['abiname_base'] + '-' + + self.config['abi', arch]['abiname']) + except KeyError: + version_abi = self.version_abi + filename = "linux-headers-%s-%s_%s_%s.deb" % (version_abi, prefix, self.version_source, arch) + f = self.retrieve_package(self.url, filename, arch) + d = self.extract_package(f, "linux-headers-%s_%s" % (prefix, arch)) + f1 = d + "/usr/src/linux-headers-%s-%s/Module.symvers" % (version_abi, prefix) + s = Symbols(open(f1)) + shutil.rmtree(d) + return version_abi, s + + def get_config(self): + # XXX We used to fetch the previous version of linux-support here, + # but until we authenticate downloads we should not do that as + # pickle.load allows running arbitrary code. + return self.config + + def retrieve_package(self, url, filename, arch): + u = url(self.source, filename, arch) + filename_out = self.dir + "/" + filename + + f_in = urlopen(u) + f_out = open(filename_out, 'wb') + while 1: + r = f_in.read() + if not r: + break + f_out.write(r) + return filename_out + + def save_abi(self, version_abi, symbols, arch, featureset, flavour): + dir = "debian/abi/%s" % version_abi + if not os.path.exists(dir): + os.makedirs(dir) + out = "%s/%s_%s_%s" % (dir, arch, featureset, flavour) + symbols.write(open(out, 'w')) + + def update_arch(self, config, arch): + if self.override_featureset: + featuresets = [self.override_featureset] + else: + featuresets = config[('base', arch)]['featuresets'] + for featureset in featuresets: + self.update_featureset(config, arch, featureset) + + def update_featureset(self, config, arch, featureset): + config_base = config.merge('base', arch, featureset) + + if not config_base.get('enabled', True): + return + + if self.override_flavour: + flavours = [self.override_flavour] + else: + flavours = config_base['flavours'] + for flavour in flavours: + self.update_flavour(config, arch, featureset, flavour) + + def update_flavour(self, config, arch, featureset, flavour): + config_base = config.merge('base', arch, featureset, flavour) + + self.log("Updating ABI for arch %s, featureset %s, flavour %s: " % (arch, featureset, flavour)) + try: + if featureset == 'none': + localversion = flavour + else: + localversion = featureset + '-' + flavour + + version_abi, abi = self.get_abi(arch, localversion) + self.save_abi(version_abi, abi, arch, featureset, flavour) + self.log("Ok.\n") + except HTTPError as e: + self.log("Failed to retrieve %s: %s\n" % (e.filename, e)) + except Exception: + self.log("FAILED!\n") + import traceback + traceback.print_exc(None, sys.stdout) + +if __name__ == '__main__': + options = optparse.OptionParser() + options.add_option("-i", "--incoming", action="store_true", dest="incoming") + options.add_option("--incoming-config", action="store_true", dest="incoming_config") + options.add_option("--ports", action="store_true", dest="ports") + options.add_option("--security", action="store_true", dest="security") + options.add_option("-u", "--url-base", dest="url_base", default=default_url_base) + options.add_option("--url-base-incoming", dest="url_base_incoming", default=default_url_base_incoming) + options.add_option("--url-base-ports", dest="url_base_ports", default=default_url_base_ports) + options.add_option("--url-base-ports-incoming", dest="url_base_ports_incoming", default=default_url_base_ports_incoming) + options.add_option("--url-base-security", dest="url_base_security", default=default_url_base_security) + + opts, args = options.parse_args() + + kw = {} + if len(args) >= 1: + kw['arch'] = args[0] + if len(args) >= 2: + kw['featureset'] = args[1] + if len(args) >= 3: + kw['flavour'] = args[2] + + url_base = url_debian_pool(opts.url_base) + url_base_incoming = url_debian_pool(opts.url_base_incoming) + url_base_ports = url_debian_ports_pool(opts.url_base_ports) + url_base_ports_incoming = url_debian_flat(opts.url_base_ports_incoming) + url_base_security = url_debian_security_pool(opts.url_base_security) + if opts.incoming_config: + url = url_config = url_base_incoming + else: + url_config = url_base + if opts.security: + url = url_base_security + elif opts.ports: + url = url_base_ports_incoming if opts.incoming else url_base_ports + else: + url = url_base_incoming if opts.incoming else url_base + + Main(url, url_config, **kw)() diff --git a/bin/buildcheck.py b/bin/buildcheck.py new file mode 100755 index 00000000000..eba717fa2f4 --- /dev/null +++ b/bin/buildcheck.py @@ -0,0 +1,272 @@ +#!/usr/bin/python3 + +import sys +sys.path.append('debian/lib/python') + +import fnmatch +import glob +import stat + +from debian_linux.abi import Symbols +from debian_linux.config import ConfigCoreDump +from debian_linux.debian import * + + +class CheckAbi(object): + class SymbolInfo(object): + def __init__(self, symbol, symbol_ref=None): + self.symbol = symbol + self.symbol_ref = symbol_ref or symbol + + @property + def module(self): + return self.symbol.module + + @property + def name(self): + return self.symbol.name + + def write(self, out, ignored): + info = [] + if ignored: + info.append("ignored") + for name in ('module', 'version', 'export'): + data = getattr(self.symbol, name) + data_ref = getattr(self.symbol_ref, name) + if data != data_ref: + info.append("%s: %s -> %s" % (name, data_ref, data)) + else: + info.append("%s: %s" % (name, data)) + out.write("%-48s %s\n" % (self.symbol.name, ", ".join(info))) + + def __init__(self, config, dir, arch, featureset, flavour): + self.config = config + self.arch, self.featureset, self.flavour = arch, featureset, flavour + + self.filename_new = "%s/Module.symvers" % dir + + try: + version_abi = (self.config['version',]['abiname_base'] + '-' + + self.config['abi', arch]['abiname']) + except KeyError: + version_abi = self.config['version',]['abiname'] + self.filename_ref = "debian/abi/%s/%s_%s_%s" % (version_abi, arch, featureset, flavour) + + def __call__(self, out): + ret = 0 + + new = Symbols(open(self.filename_new)) + unversioned = [name for name in new if new[name].version == '0x00000000'] + if unversioned: + out.write("ABI is not completely versioned! Refusing to continue.\n") + out.write("\nUnversioned symbols:\n") + for name in sorted(unversioned): + self.SymbolInfo(new[name]).write(out, False) + ret = 1 + + try: + ref = Symbols(open(self.filename_ref)) + except IOError: + out.write("Can't read ABI reference. ABI not checked!\n") + return ret + + symbols, add, change, remove = self._cmp(ref, new) + + ignore = self._ignore(symbols) + + add_effective = add - ignore + change_effective = change - ignore + remove_effective = remove - ignore + + if change_effective or remove_effective: + out.write("ABI has changed! Refusing to continue.\n") + ret = 1 + elif change or remove: + out.write("ABI has changed but all changes have been ignored. Continuing.\n") + elif add_effective: + out.write("New symbols have been added. Continuing.\n") + elif add: + out.write("New symbols have been added but have been ignored. Continuing.\n") + else: + out.write("No ABI changes.\n") + + if add: + out.write("\nAdded symbols:\n") + for name in sorted(add): + symbols[name].write(out, name in ignore) + + if change: + out.write("\nChanged symbols:\n") + for name in sorted(change): + symbols[name].write(out, name in ignore) + + if remove: + out.write("\nRemoved symbols:\n") + for name in sorted(remove): + symbols[name].write(out, name in ignore) + + return ret + + def _cmp(self, ref, new): + ref_names = set(ref.keys()) + new_names = set(new.keys()) + + add = set() + change = set() + remove = set() + + symbols = {} + + for name in new_names - ref_names: + add.add(name) + symbols[name] = self.SymbolInfo(new[name]) + + for name in ref_names.intersection(new_names): + s_ref = ref[name] + s_new = new[name] + + if s_ref != s_new: + change.add(name) + symbols[name] = self.SymbolInfo(s_new, s_ref) + + for name in ref_names - new_names: + remove.add(name) + symbols[name] = self.SymbolInfo(ref[name]) + + return symbols, add, change, remove + + def _ignore_pattern(self, pattern): + ret = [] + for i in re.split(r'(\*\*?)', pattern): + if i == '*': + ret.append(r'[^/]*') + elif i == '**': + ret.append(r'.*') + elif i: + ret.append(re.escape(i)) + return re.compile('^' + ''.join(ret) + '$') + + def _ignore(self, symbols): + # TODO: let config merge this lists + configs = [] + configs.append(self.config.get(('abi', self.arch, self.featureset, self.flavour), {})) + configs.append(self.config.get(('abi', self.arch, None, self.flavour), {})) + configs.append(self.config.get(('abi', self.arch, self.featureset), {})) + configs.append(self.config.get(('abi', self.arch), {})) + configs.append(self.config.get(('abi', None, self.featureset), {})) + configs.append(self.config.get(('abi',), {})) + + ignores = set() + for config in configs: + ignores.update(config.get('ignore-changes', [])) + + filtered = set() + for ignore in ignores: + type = 'name' + if ':' in ignore: + type, ignore = ignore.split(':') + if type in ('name', 'module'): + p = self._ignore_pattern(ignore) + for symbol in symbols.values(): + if p.match(getattr(symbol, type)): + filtered.add(symbol.name) + else: + raise NotImplementedError + + return filtered + + +class CheckImage(object): + def __init__(self, config, dir, arch, featureset, flavour): + self.dir = dir + self.arch, self.featureset, self.flavour = arch, featureset, flavour + + self.changelog = Changelog(version=VersionLinux)[0] + + self.config_entry_base = config.merge('base', arch, featureset, flavour) + self.config_entry_build = config.merge('build', arch, featureset, flavour) + self.config_entry_image = config.merge('image', arch, featureset, flavour) + + def __call__(self, out): + image = self.config_entry_build.get('image-file') + uncompressed_image = self.config_entry_build.get('uncompressed-image-file') + + if not image: + # TODO: Bail out + return 0 + + image = os.path.join(self.dir, image) + if uncompressed_image: + uncompressed_image = os.path.join(self.dir, uncompressed_image) + + fail = 0 + + fail |= self.check_size(out, image, uncompressed_image) + + return fail + + def check_size(self, out, image, uncompressed_image): + value = self.config_entry_image.get('check-size') + + if not value: + return 0 + + dtb_size = 0 + if self.config_entry_image.get('check-size-with-dtb'): + for dtb in glob.glob( + os.path.join(self.dir, 'arch', + self.config_entry_base['kernel-arch'], + 'boot/dts/*.dtb')): + dtb_size = max(dtb_size, os.stat(dtb).st_size) + + size = os.stat(image).st_size + dtb_size + + # 1% overhead is desirable in order to cope with growth + # through the lifetime of a stable release. Warn if this is + # not the case. + usage = (float(size)/value) * 100.0 + out.write('Image size %d/%d, using %.2f%%. ' % (size, value, usage)) + if size > value: + out.write('Too large. Refusing to continue.\n') + return 1 + elif usage >= 99.0: + out.write('Under 1%% space in %s. ' % self.changelog.distribution) + else: + out.write('Image fits. ') + out.write('Continuing.\n') + + # Also check the uncompressed image + if uncompressed_image and self.config_entry_image.get('check-uncompressed-size'): + value = self.config_entry_image.get('check-uncompressed-size') + size = os.stat(uncompressed_image).st_size + usage = (float(size)/value) * 100.0 + out.write('Uncompressed Image size %d/%d, using %.2f%%. ' % (size, value, usage)) + if size > value: + out.write('Too large. Refusing to continue.\n') + return 1 + elif usage >= 99.0: + out.write('Uncompressed Image Under 1%% space in %s. ' % self.changelog.distribution) + else: + out.write('Uncompressed Image fits. ') + out.write('Continuing.\n') + + return 0 + + +class Main(object): + def __init__(self, dir, arch, featureset, flavour): + self.args = dir, arch, featureset, flavour + + self.config = ConfigCoreDump(open("debian/config.defines.dump", "rb")) + + def __call__(self): + fail = 0 + + for c in CheckAbi, CheckImage: + fail |= c(self.config, *self.args)(sys.stdout) + + return fail + + +if __name__ == '__main__': + sys.exit(Main(*sys.argv[1:])()) diff --git a/bin/check-patches.sh b/bin/check-patches.sh new file mode 100755 index 00000000000..5885412f813 --- /dev/null +++ b/bin/check-patches.sh @@ -0,0 +1,26 @@ +#!/bin/sh -e + +TMPDIR=$(mktemp -d) +trap "rm -rf $TMPDIR" EXIT +sed '/^#/d; /^[[:space:]]*$/d; /^X /d; s/^+ //; s,^,debian/patches/,' debian/patches/series* | sort -u > $TMPDIR/used +find debian/patches ! -path '*/series*' -type f -name "*.diff" -o -name "*.patch" -printf "%p\n" | sort > $TMPDIR/avail +echo "Used patches" +echo "==============" +cat $TMPDIR/used +echo +echo "Unused patches" +echo "==============" +fgrep -v -f $TMPDIR/used $TMPDIR/avail || test $? = 1 +echo +echo "Patches without required headers" +echo "================================" +xargs egrep -l '^(Subject|Description):' < $TMPDIR/used | xargs egrep -l '^(From|Author|Origin):' > $TMPDIR/goodheaders || test $? = 1 +fgrep -v -f $TMPDIR/goodheaders $TMPDIR/used || test $? = 1 +echo +echo "Patches without Origin or Forwarded header" +echo "==========================================" +xargs egrep -L '^(Origin:|Forwarded: (no\b|not-needed|http))' < $TMPDIR/used || test $? = 1 +echo +echo "Patches to be forwarded" +echo "=======================" +xargs egrep -l '^Forwarded: no\b' < $TMPDIR/used || test $? = 1 diff --git a/bin/gencontrol.py b/bin/gencontrol.py new file mode 100755 index 00000000000..df430536e86 --- /dev/null +++ b/bin/gencontrol.py @@ -0,0 +1,582 @@ +#!/usr/bin/env python3 + +import sys +sys.path.append("debian/lib/python") + +import locale +import errno +import glob +import io +import os +import os.path +import subprocess + +locale.setlocale(locale.LC_CTYPE, "C.UTF-8") + +from debian_linux import config +from debian_linux.debian import * +from debian_linux.gencontrol import Gencontrol as Base, merge_packages +from debian_linux.utils import Templates, read_control + +class Gencontrol(Base): + config_schema = { + 'abi': { + 'ignore-changes': config.SchemaItemList(), + }, + 'build': { + 'debug-info': config.SchemaItemBoolean(), + 'signed-modules': config.SchemaItemBoolean(), + 'vdso': config.SchemaItemBoolean(), + }, + 'description': { + 'parts': config.SchemaItemList(), + }, + 'image': { + 'bootloaders': config.SchemaItemList(), + 'configs': config.SchemaItemList(), + 'initramfs-generators': config.SchemaItemList(), + 'check-size': config.SchemaItemInteger(), + 'check-size-with-dtb': config.SchemaItemBoolean(), + 'check-uncompressed-size': config.SchemaItemInteger(), + }, + 'relations': { + }, + 'packages': { + 'docs': config.SchemaItemBoolean(), + 'headers-all': config.SchemaItemBoolean(), + 'installer': config.SchemaItemBoolean(), + 'libc-dev': config.SchemaItemBoolean(), + 'tools': config.SchemaItemBoolean(), + } + } + + def __init__(self, config_dirs=["debian/config"], template_dirs=["debian/templates"]): + super(Gencontrol, self).__init__( + config.ConfigCoreHierarchy(self.config_schema, config_dirs), + Templates(template_dirs), + VersionLinux) + self.process_changelog() + self.config_dirs = config_dirs + + def _setup_makeflags(self, names, makeflags, data): + for src, dst, optional in names: + if src in data or not optional: + makeflags[dst] = data[src] + + def _substitute_file(self, template, vars, target, append=False): + with open(target, 'a' if append else 'w') as f: + f.write(self.substitute(self.templates[template], vars)) + + def do_main_setup(self, vars, makeflags, extra): + super(Gencontrol, self).do_main_setup(vars, makeflags, extra) + makeflags.update({ + 'VERSION': self.version.linux_version, + 'UPSTREAMVERSION': self.version.linux_upstream, + 'ABINAME': self.abiname_version + self.abiname_part, + 'SOURCEVERSION': self.version.complete, + }) + + # Prepare to generate debian/tests/control + self.tests_control = None + + def do_main_makefile(self, makefile, makeflags, extra): + fs_enabled = [featureset + for featureset in self.config['base', ]['featuresets'] + if self.config.merge('base', None, featureset).get('enabled', True)] + for featureset in fs_enabled: + makeflags_featureset = makeflags.copy() + makeflags_featureset['FEATURESET'] = featureset + cmds_source = ["$(MAKE) -f debian/rules.real source-featureset %s" + % makeflags_featureset] + makefile.add('source_%s_real' % featureset, cmds=cmds_source) + makefile.add('source_%s' % featureset, + ['source_%s_real' % featureset]) + makefile.add('source', ['source_%s' % featureset]) + + triplet_enabled = [] + for arch in iter(self.config['base', ]['arches']): + for featureset in self.config['base', arch].get('featuresets', ()): + if self.config.merge('base', None, featureset).get('enabled', True): + for flavour in self.config['base', arch, featureset]['flavours']: + triplet_enabled.append('%s_%s_%s' % + (arch, featureset, flavour)) + + makeflags = makeflags.copy() + makeflags['ALL_FEATURESETS'] = ' '.join(fs_enabled) + makeflags['ALL_TRIPLETS'] = ' '.join(triplet_enabled) + if not self.config.merge('packages').get('docs', True): + makeflags['DO_DOCS'] = False + if not self.config.merge('packages').get('tools', True): + makeflags['DO_TOOLS'] = False + super(Gencontrol, self).do_main_makefile(makefile, makeflags, extra) + + # linux-source-$UPSTREAMVERSION will contain all kconfig files + makefile.add('binary-indep', deps=['setup']) + + def do_main_packages(self, packages, vars, makeflags, extra): + packages.extend(self.process_packages(self.templates["control.main"], self.vars)) + if self.config.merge('packages').get('docs', True): + packages.extend(self.process_packages(self.templates["control.docs"], self.vars)) + if self.config.merge('packages').get('tools', True): + packages.extend(self.process_packages(self.templates["control.tools"], self.vars)) + + self._substitute_file('perf.lintian-overrides', self.vars, + 'debian/linux-perf-%s.lintian-overrides' % + self.vars['version']) + + def do_indep_featureset_setup(self, vars, makeflags, featureset, extra): + makeflags['LOCALVERSION'] = vars['localversion'] + kernel_arches = set() + for arch in iter(self.config['base', ]['arches']): + if self.config.get_merge('base', arch, featureset, None, 'flavours'): + kernel_arches.add(self.config['base', arch]['kernel-arch']) + makeflags['ALL_KERNEL_ARCHES'] = ' '.join(sorted(list(kernel_arches))) + + vars['featureset_desc'] = '' + if featureset != 'none': + desc = self.config[('description', None, featureset)] + desc_parts = desc['parts'] + vars['featureset_desc'] = (' with the %s featureset' % + desc['part-short-%s' % desc_parts[0]]) + + def do_indep_featureset_packages(self, packages, makefile, featureset, + vars, makeflags, extra): + headers_featureset = self.templates["control.headers.featureset"] + packages.extend(self.process_packages(headers_featureset, vars)) + + cmds_binary_arch = ["$(MAKE) -f debian/rules.real binary-indep-featureset %s" % + makeflags] + makefile.add('binary-indep_%s_real' % featureset, cmds=cmds_binary_arch) + + arch_makeflags = ( + ('kernel-arch', 'KERNEL_ARCH', False), + ) + + def do_arch_setup(self, vars, makeflags, arch, extra): + config_base = self.config.merge('base', arch) + + self._setup_makeflags(self.arch_makeflags, makeflags, config_base) + + try: + gnu_type_bytes = subprocess.check_output(['dpkg-architecture', '-f', + '-a', arch, + '-q', 'DEB_HOST_GNU_TYPE'], + stderr=subprocess.DEVNULL) + except subprocess.CalledProcessError: + # This sometimes happens for the newest ports :-/ + print('W: Unable to get GNU type for %s' % arch, file=sys.stderr) + else: + vars['gnu-type-package'] = gnu_type_bytes.decode('utf-8').strip().replace('_', '-') + + def do_arch_packages(self, packages, makefile, arch, vars, makeflags, extra): + if self.version.linux_modifier is None: + try: + abiname_part = '-%s' % self.config['abi', arch]['abiname'] + except KeyError: + abiname_part = self.abiname_part + makeflags['ABINAME'] = vars['abiname'] = \ + self.abiname_version + abiname_part + + # Some userland architectures require kernels from another + # (Debian) architecture, e.g. x32/amd64. + # And some derivatives don't need the headers-all packages + # for other reasons. + if (self.config['base', arch].get('featuresets') and + self.config.merge('packages').get('headers-all', True)): + headers_arch = self.templates["control.headers.arch"] + packages_headers_arch = self.process_packages(headers_arch, vars) + packages_headers_arch[-1]['Depends'].extend(PackageRelation()) + extra['headers_arch_depends'] = packages_headers_arch[-1]['Depends'] + else: + packages_headers_arch = [] + makeflags['DO_HEADERS_ALL'] = False + + if self.config.merge('packages').get('libc-dev', True): + libc_dev = self.templates["control.libc-dev"] + packages_headers_arch[0:0] = self.process_packages(libc_dev, {}) + else: + makeflags['DO_LIBC'] = False + + if not self.config.merge('packages').get('tools', True): + makeflags['DO_TOOLS'] = False + + + merge_packages(packages, packages_headers_arch, arch) + + cmds_build_arch = ["$(MAKE) -f debian/rules.real build-arch-arch %s" % makeflags] + makefile.add('build-arch_%s_real' % arch, cmds=cmds_build_arch) + + cmds_binary_arch = ["$(MAKE) -f debian/rules.real binary-arch-arch %s" % makeflags] + makefile.add('binary-arch_%s_real' % arch, cmds=cmds_binary_arch) + + # For stage1 build profile + makefile.add('binary-libc-dev_%s' % arch, + ['source_none_real'], + ["$(MAKE) -f debian/rules.real install-libc-dev_%s %s" % + (arch, makeflags)]) + + if os.getenv('DEBIAN_KERNEL_DISABLE_INSTALLER'): + if self.changelog[0].distribution == 'UNRELEASED': + import warnings + warnings.warn('Disable installer modules on request (DEBIAN_KERNEL_DISABLE_INSTALLER set)') + else: + raise RuntimeError('Unable to disable installer modules in release build (DEBIAN_KERNEL_DISABLE_INSTALLER set)') + elif self.config.merge('packages').get('installer', True): + # Add udebs using kernel-wedge + installer_def_dir = 'debian/installer' + installer_arch_dir = os.path.join(installer_def_dir, arch) + if os.path.isdir(installer_arch_dir): + # If we're going to build signed udebs later, don't actually + # generate udebs. Just test that we *can* build, so we find + # configuration errors before building linux-signed. + test_build = self.config.merge('build', arch).get('signed-modules', False) + + kw_env = os.environ.copy() + kw_env['KW_DEFCONFIG_DIR'] = installer_def_dir + kw_env['KW_CONFIG_DIR'] = installer_arch_dir + kw_proc = subprocess.Popen( + ['kernel-wedge', 'gen-control', vars['abiname']], + stdout=subprocess.PIPE, + env=kw_env) + if not isinstance(kw_proc.stdout, io.IOBase): + udeb_packages = read_control(io.open(kw_proc.stdout.fileno(), closefd=False)) + else: + udeb_packages = read_control(io.TextIOWrapper(kw_proc.stdout)) + kw_proc.wait() + if kw_proc.returncode != 0: + raise RuntimeError('kernel-wedge exited with code %d' % + kw_proc.returncode) + + # kernel-wedge currently chokes on Build-Profiles so add it now + for package in udeb_packages: + package['Build-Profiles'] = '' + + if not test_build: + merge_packages(packages, udeb_packages, arch) + + # These packages must be built after the per-flavour/ + # per-featureset packages. Also, this won't work + # correctly with an empty package list. + if udeb_packages: + makefile.add( + 'binary-arch_%s' % arch, + cmds=["$(MAKE) -f debian/rules.real install-udeb_%s %s " + "PACKAGE_NAMES='%s' UDEB_UNSIGNED_TEST_BUILD=%s" % + (arch, makeflags, + ' '.join(p['Package'] for p in udeb_packages), + test_build)]) + + def do_featureset_setup(self, vars, makeflags, arch, featureset, extra): + config_base = self.config.merge('base', arch, featureset) + makeflags['LOCALVERSION_HEADERS'] = vars['localversion_headers'] = vars['localversion'] + + flavour_makeflags_base = ( + ('compiler', 'COMPILER', False), + ('kernel-arch', 'KERNEL_ARCH', False), + ('cflags', 'CFLAGS_KERNEL', True), + ('override-host-type', 'OVERRIDE_HOST_TYPE', True), + ) + + flavour_makeflags_build = ( + ('image-file', 'IMAGE_FILE', True), + ) + + flavour_makeflags_image = ( + ('install-stem', 'IMAGE_INSTALL_STEM', True), + ) + + flavour_makeflags_other = ( + ('localversion', 'LOCALVERSION', False), + ('localversion-image', 'LOCALVERSION_IMAGE', True), + ) + + def do_flavour_setup(self, vars, makeflags, arch, featureset, flavour, extra): + config_base = self.config.merge('base', arch, featureset, flavour) + config_build = self.config.merge('build', arch, featureset, flavour) + config_description = self.config.merge('description', arch, featureset, flavour) + config_image = self.config.merge('image', arch, featureset, flavour) + + vars['class'] = config_description['hardware'] + vars['longclass'] = config_description.get('hardware-long') or vars['class'] + + vars['localversion-image'] = vars['localversion'] + override_localversion = config_image.get('override-localversion', None) + if override_localversion is not None: + vars['localversion-image'] = vars['localversion_headers'] + '-' + override_localversion + vars['image-stem'] = config_image.get('install-stem') + + self._setup_makeflags(self.flavour_makeflags_base, makeflags, config_base) + self._setup_makeflags(self.flavour_makeflags_build, makeflags, config_build) + self._setup_makeflags(self.flavour_makeflags_image, makeflags, config_image) + self._setup_makeflags(self.flavour_makeflags_other, makeflags, vars) + + def do_flavour_packages(self, packages, makefile, arch, featureset, flavour, vars, makeflags, extra): + headers = self.templates["control.headers"] + + config_entry_base = self.config.merge('base', arch, featureset, flavour) + config_entry_build = self.config.merge('build', arch, featureset, flavour) + config_entry_description = self.config.merge('description', arch, featureset, flavour) + config_entry_image = self.config.merge('image', arch, featureset, flavour) + config_entry_relations = self.config.merge('relations', arch, featureset, flavour) + + compiler = config_entry_base.get('compiler', 'gcc') + + # Work out dependency from linux-headers to compiler. Drop + # dependencies for cross-builds. Strip any remaining + # restrictions, as they don't apply to binary Depends. + relations_compiler_headers = PackageRelation( + self.substitute(config_entry_relations.get('headers%' + compiler) or + config_entry_relations.get(compiler), vars)) + relations_compiler_headers = PackageRelation( + PackageRelationGroup(entry for entry in group + if 'cross' not in entry.restrictions) + for group in relations_compiler_headers) + for group in relations_compiler_headers: + for entry in group: + entry.restrictions = [] + + relations_compiler_build_dep = PackageRelation( + self.substitute(config_entry_relations[compiler], vars)) + for group in relations_compiler_build_dep: + for item in group: + item.arches = [arch] + packages['source']['Build-Depends-Arch'].extend(relations_compiler_build_dep) + + image_fields = {'Description': PackageDescription()} + for field in 'Depends', 'Provides', 'Suggests', 'Recommends', 'Conflicts', 'Breaks': + image_fields[field] = PackageRelation(config_entry_image.get(field.lower(), None), override_arches=(arch,)) + + generators = config_entry_image['initramfs-generators'] + l = PackageRelationGroup() + for i in generators: + i = config_entry_relations.get(i, i) + l.append(i) + a = PackageRelationEntry(i) + if a.operator is not None: + a.operator = -a.operator + image_fields['Breaks'].append(PackageRelationGroup([a])) + for item in l: + item.arches = [arch] + image_fields['Depends'].append(l) + + bootloaders = config_entry_image.get('bootloaders') + if bootloaders: + l = PackageRelationGroup() + for i in bootloaders: + i = config_entry_relations.get(i, i) + l.append(i) + a = PackageRelationEntry(i) + if a.operator is not None: + a.operator = -a.operator + image_fields['Breaks'].append(PackageRelationGroup([a])) + for item in l: + item.arches = [arch] + image_fields['Suggests'].append(l) + + desc_parts = self.config.get_merge('description', arch, featureset, flavour, 'parts') + if desc_parts: + # XXX: Workaround, we need to support multiple entries of the same name + parts = list(set(desc_parts)) + parts.sort() + desc = image_fields['Description'] + for part in parts: + desc.append(config_entry_description['part-long-' + part]) + desc.append_short(config_entry_description.get('part-short-' + part, '')) + + packages_dummy = [] + packages_own = [] + + build_signed = config_entry_build.get('signed-modules') + + image = self.templates[build_signed and "control.image-unsigned" + or "control.image"] + + vars.setdefault('desc', None) + + image_main = self.process_real_image(image[0], image_fields, vars) + packages_own.append(image_main) + makeflags['IMAGE_PACKAGE_NAME'] = image_main['Package'] + packages_own.extend(self.process_packages(image[1:], vars)) + + package_headers = self.process_package(headers[0], vars) + package_headers['Depends'].extend(relations_compiler_headers) + packages_own.append(package_headers) + if extra.get('headers_arch_depends'): + extra['headers_arch_depends'].append('%s (= ${binary:Version})' % packages_own[-1]['Package']) + + if config_entry_build.get('vdso', False): + makeflags['VDSO'] = True + + build_debug = config_entry_build.get('debug-info') + + if os.getenv('DEBIAN_KERNEL_DISABLE_DEBUG'): + if self.changelog[0].distribution == 'UNRELEASED': + import warnings + warnings.warn('Disable debug infos on request (DEBIAN_KERNEL_DISABLE_DEBUG set)') + build_debug = False + else: + raise RuntimeError('Unable to disable debug infos in release build (DEBIAN_KERNEL_DISABLE_DEBUG set)') + + if build_debug: + makeflags['DEBUG'] = True + packages_own.extend(self.process_packages(self.templates['control.image-dbg'], vars)) + + merge_packages(packages, packages_own + packages_dummy, arch) + + tests_control = self.process_package( + self.templates['tests-control.main'][0], vars) + tests_control['Depends'].append( + PackageRelationGroup(image_main['Package'], + override_arches=(arch,))) + if self.tests_control: + self.tests_control['Depends'].extend(tests_control['Depends']) + else: + self.tests_control = tests_control + + def get_config(*entry_name): + entry_real = ('image',) + entry_name + entry = self.config.get(entry_real, None) + if entry is None: + return None + return entry.get('configs', None) + + def check_config_default(fail, f): + for d in self.config_dirs[::-1]: + f1 = d + '/' + f + if os.path.exists(f1): + return [f1] + if fail: + raise RuntimeError("%s unavailable" % f) + return [] + + def check_config_files(files): + ret = [] + for f in files: + for d in self.config_dirs[::-1]: + f1 = d + '/' + f + if os.path.exists(f1): + ret.append(f1) + break + else: + raise RuntimeError("%s unavailable" % f) + return ret + + def check_config(default, fail, *entry_name): + configs = get_config(*entry_name) + if configs is None: + return check_config_default(fail, default) + return check_config_files(configs) + + kconfig = check_config('config', True) + kconfig.extend(check_config("kernelarch-%s/config" % config_entry_base['kernel-arch'], False)) + kconfig.extend(check_config("%s/config" % arch, True, arch)) + kconfig.extend(check_config("%s/config.%s" % (arch, flavour), False, arch, None, flavour)) + kconfig.extend(check_config("featureset-%s/config" % featureset, False, None, featureset)) + kconfig.extend(check_config("%s/%s/config" % (arch, featureset), False, arch, featureset)) + kconfig.extend(check_config("%s/%s/config.%s" % (arch, featureset, flavour), False, arch, featureset, flavour)) + makeflags['KCONFIG'] = ' '.join(kconfig) + makeflags['KCONFIG_OPTIONS'] = '' + if build_debug: + makeflags['KCONFIG_OPTIONS'] += ' -o DEBUG_INFO=y' + if build_signed: + makeflags['KCONFIG_OPTIONS'] += ' -o MODULE_SIG=y' + + cmds_binary_arch = ["$(MAKE) -f debian/rules.real binary-arch-flavour %s" % makeflags] + if packages_dummy: + cmds_binary_arch.append( + "$(MAKE) -f debian/rules.real install-dummy DH_OPTIONS='%s' %s" + % (' '.join("-p%s" % i['Package'] for i in packages_dummy), makeflags)) + cmds_build = ["$(MAKE) -f debian/rules.real build-arch-flavour %s" % makeflags] + cmds_setup = ["$(MAKE) -f debian/rules.real setup-arch-flavour %s" % makeflags] + makefile.add('binary-arch_%s_%s_%s_real' % (arch, featureset, flavour), cmds=cmds_binary_arch) + makefile.add('build-arch_%s_%s_%s_real' % (arch, featureset, flavour), cmds=cmds_build) + makefile.add('setup_%s_%s_%s_real' % (arch, featureset, flavour), cmds=cmds_setup) + + # Substitute kernel version etc. into maintainer scripts, + # translations and lintian overrides + self._substitute_file('headers.postinst', vars, + 'debian/linux-headers-%s%s.postinst' % + (vars['abiname'], vars['localversion'])) + for name in ['postinst', 'postrm', 'preinst', 'prerm']: + self._substitute_file('image.%s' % name, vars, + 'debian/%s.%s' % (image_main['Package'], name)) + if build_debug: + debug_lintian_over = ('debian/linux-image-%s%s-dbg.lintian-overrides' % + (vars['abiname'], vars['localversion'])) + self._substitute_file('image-dbg.lintian-overrides', vars, + debug_lintian_over) + os.chmod(debug_lintian_over, 0o755) + + def process_changelog(self): + act_upstream = self.changelog[0].version.upstream + versions = [] + for i in self.changelog: + if i.version.upstream != act_upstream: + break + versions.append(i.version) + self.versions = versions + version = self.version = self.changelog[0].version + if self.version.linux_modifier is not None: + self.abiname_part = '' + else: + self.abiname_part = '-%s' % self.config['abi', ]['abiname'] + # We need to keep at least three version components to avoid + # userland breakage (e.g. #742226, #745984). + self.abiname_version = re.sub('^(\d+\.\d+)(?=-|$)', r'\1.0', + self.version.linux_upstream) + self.vars = { + 'upstreamversion': self.version.linux_upstream, + 'version': self.version.linux_version, + 'source_upstream': self.version.upstream, + 'source_package': self.changelog[0].source, + 'abiname': self.abiname_version + self.abiname_part, + } + self.config['version', ] = {'source': self.version.complete, + 'upstream': self.version.linux_upstream, + 'abiname_base': self.abiname_version, + 'abiname': (self.abiname_version + + self.abiname_part)} + + distribution = self.changelog[0].distribution + if distribution in ('unstable', ): + if (version.linux_revision_experimental or + version.linux_revision_backports or + version.linux_revision_other): + raise RuntimeError("Can't upload to %s with a version of %s" % (distribution, version)) + if distribution in ('experimental', ): + if not version.linux_revision_experimental: + raise RuntimeError("Can't upload to %s with a version of %s" % (distribution, version)) + if distribution.endswith('-security') or distribution.endswith('-lts'): + if (not version.linux_revision_security or + version.linux_revision_backports): + raise RuntimeError("Can't upload to %s with a version of %s" % (distribution, version)) + if distribution.endswith('-backports'): + if not version.linux_revision_backports: + raise RuntimeError("Can't upload to %s with a version of %s" % (distribution, version)) + + def process_real_image(self, entry, fields, vars): + entry = self.process_package(entry, vars) + for key, value in fields.items(): + if key in entry: + real = entry[key] + real.extend(value) + elif value: + entry[key] = value + return entry + + def write(self, packages, makefile): + self.write_config() + super(Gencontrol, self).write(packages, makefile) + self.write_tests_control() + + def write_config(self): + f = open("debian/config.defines.dump", 'wb') + self.config.dump(f) + f.close() + + def write_tests_control(self): + self.write_rfc822(open("debian/tests/control", 'w'), + [self.tests_control]) + +if __name__ == '__main__': + Gencontrol()() diff --git a/bin/genorig.py b/bin/genorig.py new file mode 100755 index 00000000000..59f31a8c0e0 --- /dev/null +++ b/bin/genorig.py @@ -0,0 +1,170 @@ +#!/usr/bin/env python3 + +import sys +sys.path.append("debian/lib/python") + +import os +import os.path +import re +import shutil +import subprocess +import time + +from debian_linux.debian import Changelog, VersionLinux +from debian_linux.patches import PatchSeries + + +class Main(object): + def __init__(self, input_files, override_version): + self.log = sys.stdout.write + + self.input_files = input_files + + changelog = Changelog(version=VersionLinux)[0] + source = changelog.source + version = changelog.version + + if override_version: + version = VersionLinux('%s-0' % override_version) + + self.version_dfsg = version.linux_dfsg + if self.version_dfsg is None: + self.version_dfsg = '0' + + self.log('Using source name %s, version %s, dfsg %s\n' % (source, version.upstream, self.version_dfsg)) + + self.orig = '%s-%s' % (source, version.upstream) + self.orig_tar = '%s_%s.orig.tar.xz' % (source, version.upstream) + self.tag = 'v' + version.linux_upstream_full + + def __call__(self): + import tempfile + self.dir = tempfile.mkdtemp(prefix='genorig', dir='debian') + old_umask = os.umask(0o022) + try: + if os.path.isdir(self.input_files[0]): + self.upstream_export(self.input_files[0]) + else: + self.upstream_extract(self.input_files[0]) + if len(self.input_files) > 1: + self.upstream_patch(self.input_files[1]) + + # debian_patch() will change file mtimes. Capture the + # original release time so we can apply it to the final + # tarball. Note this doesn't work in case we apply an + # upstream patch, as that doesn't carry a release time. + orig_date = time.strftime( + "%a, %d %b %Y %H:%M:%S +0000", + time.gmtime( + os.stat(os.path.join(self.dir, self.orig, 'Makefile')) + .st_mtime)) + + self.debian_patch() + os.umask(old_umask) + self.tar(orig_date) + finally: + os.umask(old_umask) + shutil.rmtree(self.dir) + + def upstream_export(self, input_repo): + self.log("Exporting %s from %s\n" % (self.tag, input_repo)) + + gpg_wrapper = os.path.join(os.getcwd(), + "debian/bin/git-tag-gpg-wrapper") + verify_proc = subprocess.Popen(['git', + '-c', 'gpg.program=%s' % gpg_wrapper, + 'tag', '-v', self.tag], + cwd=input_repo) + if verify_proc.wait(): + raise RuntimeError("GPG tag verification failed") + + archive_proc = subprocess.Popen(['git', 'archive', '--format=tar', + '--prefix=%s/' % self.orig, self.tag], + cwd=input_repo, + stdout=subprocess.PIPE) + extract_proc = subprocess.Popen(['tar', '-xaf', '-'], cwd=self.dir, + stdin=archive_proc.stdout) + + ret1 = archive_proc.wait() + ret2 = extract_proc.wait() + if ret1 or ret2: + raise RuntimeError("Can't create archive") + + def upstream_extract(self, input_tar): + self.log("Extracting tarball %s\n" % input_tar) + match = re.match(r'(^|.*/)(?Plinux-\d+\.\d+(\.\d+)?(-\S+)?)\.tar(\.(?P(bz2|gz|xz)))?$', input_tar) + if not match: + raise RuntimeError("Can't identify name of tarball") + + cmdline = ['tar', '-xaf', input_tar, '-C', self.dir] + + if subprocess.Popen(cmdline).wait(): + raise RuntimeError("Can't extract tarball") + + os.rename(os.path.join(self.dir, match.group('dir')), os.path.join(self.dir, self.orig)) + + def upstream_patch(self, input_patch): + self.log("Patching source with %s\n" % input_patch) + match = re.match(r'(^|.*/)patch-\d+\.\d+(\.\d+)?(-\S+?)?(\.(?P(bz2|gz|xz)))?$', input_patch) + if not match: + raise RuntimeError("Can't identify name of patch") + cmdline = [] + if match.group('extension') == 'bz2': + cmdline.append('bzcat') + elif match.group('extension') == 'gz': + cmdline.append('zcat') + elif match.group('extension') == 'xz': + cmdline.append('xzcat') + else: + cmdline.append('cat') + cmdline.append(input_patch) + cmdline.append('| (cd %s; patch -p1 -f -s -t --no-backup-if-mismatch)' % os.path.join(self.dir, self.orig)) + if os.spawnv(os.P_WAIT, '/bin/sh', ['sh', '-c', ' '.join(cmdline)]): + raise RuntimeError("Can't patch source") + + def debian_patch(self): + name = "orig" + self.log("Patching source with debian patch (series %s)\n" % name) + fp = open("debian/patches/series-" + name) + series = PatchSeries(name, "debian/patches", fp) + series(dir=os.path.join(self.dir, self.orig)) + + def tar(self, orig_date): + out = os.path.join("../orig", self.orig_tar) + try: + os.mkdir("../orig") + except OSError: + pass + try: + os.stat(out) + raise RuntimeError("Destination already exists") + except OSError: + pass + self.log("Generate tarball %s\n" % out) + cmdline = '''(cd '%s' && find '%s' -print0) | + LC_ALL=C sort -z | + tar -C '%s' --no-recursion --null -T - --mtime '%s' --owner root --group root -caf '%s' + ''' % (self.dir, self.orig, self.dir, orig_date, out) + try: + if os.spawnv(os.P_WAIT, '/bin/sh', ['sh', '-c', cmdline]): + raise RuntimeError("Can't patch source") + os.chmod(out, 0o644) + except: + try: + os.unlink(out) + except OSError: + pass + raise + try: + os.symlink(os.path.join('orig', self.orig_tar), os.path.join('..', self.orig_tar)) + except OSError: + pass + +if __name__ == '__main__': + from optparse import OptionParser + parser = OptionParser(usage="%prog [OPTION]... {TAR [PATCH] | REPO}") + parser.add_option("-V", "--override-version", dest="override_version", help="Override version", metavar="VERSION") + options, args = parser.parse_args() + + assert 1 <= len(args) <= 2 + Main(args, options.override_version)() diff --git a/bin/getconfig.py b/bin/getconfig.py new file mode 100755 index 00000000000..e993f7c24e5 --- /dev/null +++ b/bin/getconfig.py @@ -0,0 +1,27 @@ +#!/usr/bin/python3 + +import sys +sys.path.append(sys.path[0] + "/../lib/python") + +from debian_linux.config import ConfigCoreDump + +section = tuple(s or None for s in sys.argv[1:-1]) +key = sys.argv[-1] +config = ConfigCoreDump(fp=open("debian/config.defines.dump", "rb")) +try: + value = config[section][key] +except KeyError: + sys.exit(1) + +if isinstance(value, str): + # Don't iterate over it + print(value) +else: + # In case it's a sequence, try printing each item + try: + for item in value: + print(item) + except TypeError: + # Otherwise use the default format + print(value) + diff --git a/bin/git-tag-gpg-wrapper b/bin/git-tag-gpg-wrapper new file mode 100755 index 00000000000..9982b014082 --- /dev/null +++ b/bin/git-tag-gpg-wrapper @@ -0,0 +1,33 @@ +#!/bin/bash -e + +# Instead of calling gpg, call gpgv and provide a local keyring + +debian_dir="$(readlink -f "$(dirname "$0")/..")" + +# Parse the expected options. If the next two lines are combined, a +# failure of getopt won't cause the script to exit. +ordered_args="$(getopt -n "$0" -o "" -l "status-fd:" -l "keyid-format:" -l "verify" -- "$@")" +eval "set -- $ordered_args" +gpgv_opts=() +while true; do + case "$1" in + --status-fd) + gpgv_opts+=(--status-fd $2) + shift 2 + ;; + --keyid-format) + # ignore + shift 2 + ;; + --verify) + # ignore + shift 1 + ;; + --) + shift 1 + break + ;; + esac +done + +exec gpgv "${gpgv_opts[@]}" --keyring "$debian_dir/upstream/${DEBIAN_KERNEL_KEYRING:-signing-key.pgp}" -- "$@" diff --git a/bin/kconfig.py b/bin/kconfig.py new file mode 100755 index 00000000000..9ee0750d75f --- /dev/null +++ b/bin/kconfig.py @@ -0,0 +1,41 @@ +#!/usr/bin/env python3 + +import optparse +import os.path +import re +import sys + +from debian_linux.kconfig import * + + +def merge(output, configs, overrides): + kconfig = KconfigFile() + for c in configs: + kconfig.read(open(c)) + for key, value in overrides.items(): + kconfig.set(key, value) + open(output, "w").write(str(kconfig)) + + +def opt_callback_dict(option, opt, value, parser): + match = re.match('^\s*(\S+)=(\S+)\s*$', value) + if not match: + raise optparse.OptionValueError('not key=value') + dest = option.dest + data = getattr(parser.values, dest) + data[match.group(1)] = match.group(2) + + +if __name__ == '__main__': + parser = optparse.OptionParser(usage="%prog [OPTION]... FILE...") + parser.add_option( + '-o', '--override', + action='callback', + callback=opt_callback_dict, + default={}, + dest='overrides', + help="Override option", + type='string') + options, args = parser.parse_args() + + merge(args[0], args[1:], options.overrides) diff --git a/bin/no-depmod b/bin/no-depmod new file mode 100755 index 00000000000..ed5a8463f16 --- /dev/null +++ b/bin/no-depmod @@ -0,0 +1,18 @@ +#!/bin/sh + +set -e + +# This is a dummy substitute for depmod. Since we run depmod during +# postinst, we do not need or want to package the files that it +# generates. + +if [ "x$1" = x-V ]; then + # Satisfy version test + echo 'not really module-init-tools' +elif [ "x$1" = x-b -a "${2%/depmod.??????}" != "$2" ]; then + # Satisfy test of short kernel versions + mkdir -p "$2/lib/modules/$3" + touch "$2/lib/modules/$3/modules.dep" +else + echo 'skipping depmod' +fi diff --git a/bin/stable-update b/bin/stable-update new file mode 100755 index 00000000000..f17afdd91c1 --- /dev/null +++ b/bin/stable-update @@ -0,0 +1,129 @@ +#!/usr/bin/python3 + +import sys +sys.path.append(sys.path[0] + "/../lib/python") + +import os, re, subprocess + +from debian_linux.debian import Changelog, VersionLinux + +def base_version(ver): + # Assume base version is at least 3.0, thus only 2 components wanted + match = re.match(r'^(\d+\.\d+)', ver) + assert match + return match.group(1) + +def add_update(ver, inc): + base = base_version(ver) + if base == ver: + update = 0 + else: + update = int(ver[len(base)+1:]) + update += inc + if update == 0: + return base + else: + return '{}.{}'.format(base, update) + +def next_update(ver): + return add_update(ver, 1) + +def print_stable_log(log, cur_ver, new_ver): + major_ver = re.sub(r'^(\d+)\..*', r'\1', cur_ver) + while cur_ver != new_ver: + next_ver = next_update(cur_ver) + print(' https://www.kernel.org/pub/linux/kernel/v{}.x/ChangeLog-{}' + .format(major_ver, next_ver), + file=log) + log.flush() # serialise our output with git's + subprocess.check_call(['git', 'log', '--reverse', + '--pretty= - %s', + 'v{}..v{}^'.format(cur_ver, next_ver)], + stdout=log) + cur_ver = next_ver + +def main(repo, new_ver): + if os.path.exists(os.path.join(repo, '.git')): + os.environ['GIT_DIR'] = os.path.join(repo, '.git') + else: + os.environ['GIT_DIR'] = repo + + changelog = Changelog(version=VersionLinux) + cur_pkg_ver = changelog[0].version + cur_ver = cur_pkg_ver.linux_upstream_full + + if base_version(new_ver) != base_version(cur_ver): + print('{} is not on the same stable series as {}' + .format(new_ver, cur_ver), + file=sys.stderr) + sys.exit(2) + + new_pkg_ver = new_ver + '-1' + if cur_pkg_ver.linux_revision_experimental: + new_pkg_ver += '~exp1' + + # Three possible cases: + # 1. The current version has been released so we need to add a new + # version to the changelog. + # 2. The current version has not been released so we're changing its + # version string. + # (a) There are no stable updates included in the current version, + # so we need to insert an introductory line, the URL(s) and + # git log(s) and a blank line at the top. + # (b) One or more stable updates are already included in the current + # version, so we need to insert the URL(s) and git log(s) after + # them. + + changelog_intro = 'New upstream stable update:' + + # Case 1 + if changelog[0].distribution != 'UNRELEASED': + subprocess.check_call(['dch', '-v', new_pkg_ver, '-D', 'UNRELEASED', + changelog_intro]) + + with open('debian/changelog', 'r') as old_log: + with open('debian/changelog.new', 'w') as new_log: + line_no = 0 + inserted = False + intro_line = ' * {}\n'.format(changelog_intro) + + for line in old_log: + line_no += 1 + + # Case 2 + if changelog[0].distribution == 'UNRELEASED' and line_no == 1: + print('{} ({}) UNRELEASED; urgency={}' + .format(changelog[0].source, new_pkg_ver, + changelog[0].urgency), + file=new_log) + continue + + if not inserted: + # Case 2(a) + if line_no == 3 and line != intro_line: + new_log.write(intro_line) + print_stable_log(new_log, cur_ver, new_ver) + new_log.write('\n') + inserted = True + # Case 1 or 2(b) + elif line_no > 3 and line == '\n': + print_stable_log(new_log, cur_ver, new_ver) + inserted = True + + # Check that we inserted before hitting the end of the + # first version entry + assert not (line.startswith(' -- ') and not inserted) + + new_log.write(line) + + os.rename('debian/changelog.new', 'debian/changelog') + +if __name__ == '__main__': + if len(sys.argv) != 3: + print('''\ +Usage: {} REPO VERSION" +REPO is the git repository to generate a changelog from +VERSION is the stable version (without leading v)'''.format(sys.argv[0]), + file=sys.stderr) + sys.exit(2) + main(*sys.argv[1:]) diff --git a/bin/stable-update.sh b/bin/stable-update.sh new file mode 100755 index 00000000000..bd86860c63f --- /dev/null +++ b/bin/stable-update.sh @@ -0,0 +1,2 @@ +#!/bin/sh -e +exec "$(dirname "$0")/stable-update" "$@" diff --git a/bin/test-patches b/bin/test-patches new file mode 100755 index 00000000000..98ddd9f93d4 --- /dev/null +++ b/bin/test-patches @@ -0,0 +1,106 @@ +#!/bin/bash + +set -e +shopt -s extglob + +# Set defaults from the running kernel +arch="$(dpkg --print-architecture)" +kernelabi="$(uname -r)" +ff="${kernelabi#+([^-])-@(trunk|+([0-9]))-}" +if [ "x$ff" != "x$kernelabi" ]; then + flavour="${ff#@(openvz|rt|vserver|xen)-}" + if [ "x$flavour" != "x$ff" ]; then + featureset="${ff%-$flavour}" + else + featureset=none + fi +else + flavour= + featureset=none +fi + +fuzz=0 +jobs=$(nproc) + +eval "set -- $(getopt -n "$0" -o "f:j:s:" -l "fuzz:" -- "$@")" +while true; do + case "$1" in + -f) flavour="$2"; shift 2 ;; + -j) jobs="$2"; shift 2 ;; + -s) featureset="$2"; shift 2 ;; + --fuzz) fuzz="$2"; shift 2;; + --) shift 1; break ;; + esac +done + +if [ $# -lt 1 ]; then + echo >&2 "Usage: $0 [] ..." + cat >&2 < specify the 'flavour' of kernel to build, e.g. 686-pae + -j specify number of compiler jobs to run in parallel + (default: number of available processors) + -s specify an optional featureset to apply, e.g. rt + --fuzz set the maximum patch fuzz factor (default: 0) +EOF + exit 2 +fi + +if [ -z "$flavour" ]; then + echo >&2 "You must specify a flavour to build with the -f option" + exit 2 +fi + +export DEB_BUILD_PROFILES=pkg.linux.notools +export MAKEFLAGS="$MAKEFLAGS -j$jobs" + +dpkg-checkbuilddeps -B + +# Append 'a~test' to Debian version; this should be less than any official +# successor and easily recognisable +version="$(dpkg-parsechangelog | sed 's/^Version: //; t; d')" +if [ "${version%a~test}" = "$version" ]; then + version="$version"a~test + dch -v "$version" --distribution UNRELEASED "Testing patches $*" +fi + +# Make new directory for patches +mkdir -p debian/patches/test + +# Ignore user's .quiltrc +alias quilt='quilt --quiltrc -' + +# Try to clean up any previous test patches +if [ "$featureset" = none ]; then + while patch="$(quilt next 2>/dev/null || quilt top 2>/dev/null)" && \ + [ "${patch#test/}" != "$patch" ]; do + quilt delete -r "$patch" + done +else + sed -i '/^test\//d' debian/patches/series-${featureset} +fi + +# Prepare a new directory for the patches +rm -rf debian/patches/test/ +mkdir debian/patches/test + +# Regenerate control and included rules +rm debian/control debian/rules.gen +debian/rules debian/control-real && exit 1 || true +test -f debian/control +test -f debian/rules.gen + +# Clean up old build; apply existing patches for featureset +debian/rules clean +debian/rules source + +# Apply the additional patches +for patch in "$@"; do + patch_abs="$(readlink -f "$patch")" + (cd "debian/build/source_${featureset}" && \ + quilt import -P "test/$(basename "$patch")" "$patch_abs" && \ + quilt push --fuzz="$fuzz") +done + +# Build selected binaries +fakeroot make -f debian/rules.gen binary-arch_"$arch"_"$featureset"_"$flavour" diff --git a/bin/uscan-hook b/bin/uscan-hook new file mode 100755 index 00000000000..b0631c64e7e --- /dev/null +++ b/bin/uscan-hook @@ -0,0 +1,19 @@ +#!/bin/bash -e + +# This script is invoked by uscan after downloading a new tarball + +if [ "x$1" != "x--upstream-version" -o $# != 3 ]; then + echo >&2 "invalid arguments: $*" + exit 2 +fi + +version="$2" +filename="$3" + +upstream_tarball="$(readlink -f "$filename")" +rm "$filename" +debian/bin/genorig.py --override-version "$version" "$upstream_tarball" + +dch -v "$version-1" 'New upstream release' + +debian/rules orig diff --git a/certs/benh@debian.org.cert.pem b/certs/benh@debian.org.cert.pem new file mode 100644 index 00000000000..8d49875e571 --- /dev/null +++ b/certs/benh@debian.org.cert.pem @@ -0,0 +1,21 @@ +-----BEGIN CERTIFICATE----- +MIIDYDCCAkgCCQCKAY3KgJMmMDANBgkqhkiG9w0BAQsFADByMQswCQYDVQQGEwJH +QjESMBAGA1UEBwwJQ2FtYnJpZGdlMRcwFQYDVQQKDA5EZWJpYW4gUHJvamVjdDEW +MBQGA1UEAwwNQmVuIEh1dGNoaW5nczEeMBwGCSqGSIb3DQEJARYPYmVuaEBkZWJp +YW4ub3JnMB4XDTE2MDQwMzIyNTg1NVoXDTE2MDUwMzIyNTg1NVowcjELMAkGA1UE +BhMCR0IxEjAQBgNVBAcMCUNhbWJyaWRnZTEXMBUGA1UECgwORGViaWFuIFByb2pl +Y3QxFjAUBgNVBAMMDUJlbiBIdXRjaGluZ3MxHjAcBgkqhkiG9w0BCQEWD2JlbmhA +ZGViaWFuLm9yZzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMPYUchZ +x/VmCn4klnuqyym6gehD/sUnjqAbDdVtAVMYBHTxxpujW2GDtCsyiqyeDlSlbd6X +piXAko7u2UaBfY5SpKcw1KDDrCgzQ3y9O0QCe0DzI/7YKvE3A7FPluJ1ZhIhHIIZ +ce6oln0WfW/H5SY6BQWE3kzxXFUXXFPvTdLQtjOBxVWeOeMTZ5CAJqG/6uHIlJms +RTJiiiHjrI3yAfLS1wcGutmu9q9YQF1ND+lbdIT4OeyIMVGe03dVrDxWjNUL+G5h +nBRwFAwkb5qxpDNayvA8eIlNwWJE/uu+4crlL+PdM9i2TduoG5gRE39KPTrxrUyN +QiDe+09lJF12wQECAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAieMLuk4Ky2FmMnzF +ryaJbbRXN163bXHPrDFd0NkvWQFa+3253QXxlLwEoS4v4OFbYb0tDxcn8qkpNLCb +DLtNUcl99slPbmBUi/RFTy/aAWc6LB4XxjbFcIlY27/c/W5bbr6/XmlVtElRW3gZ +y3JWFjgym+6lXywbr6RVKYioM3N+LlGf794Kf/pY9y7i8PqDM8WbhurGXwoaPxjv +/XsVTpuMCkorUya2n7Ap9Hatlref/IccdxnIOxItH3Jvze0vfygL82Mee77KN5U/ +jsvtswp6P3K08sLjtFGiAhkjim67H+nJrrhhczXjtUnLZUQuHpkzOghyKFDMpn3R +8lchpg== +-----END CERTIFICATE----- diff --git a/changelog b/changelog new file mode 100644 index 00000000000..4134fd19c7f --- /dev/null +++ b/changelog @@ -0,0 +1,30801 @@ +linux (4.15.11-1) unstable; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.15.5 + - IB/umad: Fix use of unprotected device pointer + - IB/qib: Fix comparison error with qperf compare/swap test + - IB/mlx4: Fix incorrectly releasing steerable UD QPs when have only ETH + ports + - IB/core: Fix two kernel warnings triggered by rxe registration + - IB/core: Fix ib_wc structure size to remain in 64 bytes boundary + - IB/core: Avoid a potential OOPs for an unused optional parameter + - RDMA/rxe: Fix a race condition related to the QP error state + - RDMA/rxe: Fix a race condition in rxe_requester() + - RDMA/rxe: Fix rxe_qp_cleanup() + - [powerpc*] cpufreq: powernv: Dont assume distinct pstate values for + nominal and pmin + - swiotlb: suppress warning when __GFP_NOWARN is set + - PM / devfreq: Propagate error from devfreq_add_device() + - mwifiex: resolve reset vs. remove()/shutdown() deadlocks + - ocfs2: try a blocking lock before return AOP_TRUNCATED_PAGE + - trace_uprobe: Display correct offset in uprobe_events + - [powerpc*] radix: Remove trace_tlbie call from radix__flush_tlb_all + - [powerpc*] kernel: Block interrupts when updating TIDR + - [powerpc*] vas: Don't set uses_vas for kernel windows + - [powerpc*] numa: Invalidate numa_cpu_lookup_table on cpu remove + - [powerpc*] mm: Flush radix process translations when setting MMU type + - [powerpc*] xive: Use hw CPU ids when configuring the CPU queues + - dma-buf: fix reservation_object_wait_timeout_rcu once more v2 + - [s390x] fix handling of -1 in set{,fs}[gu]id16 syscalls + - [arm64] dts: msm8916: Correct ipc references for smsm + - [x86] gpu: add CFL to early quirks + - [x86] kexec: Make kexec (mostly) work in 5-level paging mode + - [x86] xen: init %gs very early to avoid page faults with stack protector + - [x86] PM: Make APM idle driver initialize polling state + - mm, memory_hotplug: fix memmap initialization + - [amd64] entry: Clear extra registers beyond syscall arguments, to reduce + speculation attack surface + - [amd64] entry/compat: Clear registers for compat syscalls, to reduce + speculation attack surface + - [armhf] crypto: sun4i_ss_prng - fix return value of sun4i_ss_prng_generate + - [armhf] crypto: sun4i_ss_prng - convert lock to _bh in + sun4i_ss_prng_generate + - [powerpc*] mm/radix: Split linear mapping on hot-unplug + - [x86] speculation: Update Speculation Control microcode blacklist + - [x86] speculation: Correct Speculation Control microcode blacklist again + - [x86] Revert "x86/speculation: Simplify + indirect_branch_prediction_barrier()" + - [x86] KVM: Reduce retpoline performance impact in + slot_handle_level_range(), by always inlining iterator helper methods + - [X86] nVMX: Properly set spec_ctrl and pred_cmd before merging MSRs + - [x86] KVM/nVMX: Set the CPU_BASED_USE_MSR_BITMAPS if we have a valid L02 + MSR bitmap + - [x86] speculation: Clean up various Spectre related details + - PM / runtime: Update links_count also if !CONFIG_SRCU + - PM: cpuidle: Fix cpuidle_poll_state_init() prototype + - [x86] platform: wmi: fix off-by-one write in wmi_dev_probe() + - [amd64] entry: Clear registers for exceptions/interrupts, to reduce + speculation attack surface + - [amd64] entry: Merge SAVE_C_REGS and SAVE_EXTRA_REGS, remove unused + extensions + - [amd64] entry: Merge the POP_C_REGS and POP_EXTRA_REGS macros into a + single POP_REGS macro + - [amd64] entry: Interleave XOR register clearing with PUSH instructions + - [amd64] entry: Introduce the PUSH_AND_CLEAN_REGS macro + - [amd64] entry: Use PUSH_AND_CLEAN_REGS in more cases + - [amd64] entry: Get rid of the ALLOC_PT_GPREGS_ON_STACK and + SAVE_AND_CLEAR_REGS macros + - [amd64] entry: Indent PUSH_AND_CLEAR_REGS and POP_REGS properly + - [amd64] entry: Fix paranoid_entry() frame pointer warning + - [amd64] entry: Remove the unused 'icebp' macro + - gfs2: Fixes to "Implement iomap for block_map" + - objtool: Fix segfault in ignore_unreachable_insn() + - [x86] debug, objtool: Annotate WARN()-related UD2 as reachable + - [x86] debug: Use UD2 for WARN() + - [x86] speculation: Fix up array_index_nospec_mask() asm constraint + - nospec: Move array_index_nospec() parameter checking into separate macro + - [x86] speculation: Add dependency + - [x86] mm: Rename flush_tlb_single() and flush_tlb_one() to + __flush_tlb_one_[user|kernel]() + - [x86] cpu: Rename cpu_data.x86_mask to cpu_data.x86_stepping + - [x86] spectre: Fix an error message + - [x86] cpu: Change type of x86_cache_size variable to unsigned int + - [amd64] entry: Fix CR3 restore in paranoid_exit() + - drm/ttm: Don't add swapped BOs to swap-LRU list + - drm/ttm: Fix 'buf' pointer update in ttm_bo_vm_access_kmap() (v2) + - drm/qxl: unref cursor bo when finished with it + - drm/qxl: reapply cursor after resetting primary + - drm/amd/powerplay: Fix smu_table_entry.handle type + - drm/ast: Load lut in crtc_commit + - drm: Check for lessee in DROP_MASTER ioctl + - [arm64] Add missing Falkor part number for branch predictor hardening + - drm/radeon: Add dpm quirk for Jet PRO (v2) + - drm/radeon: adjust tested variable + - [x86] smpboot: Fix uncore_pci_remove() indexing bug when hot-removing a + physical CPU + - [powerpc*] rtc-opal: Fix handling of firmware error codes, prevent busy + loops + - mbcache: initialize entry->e_referenced in mb_cache_entry_create() + - mmc: sdhci: Implement an SDHCI-specific bounce buffer + - [armhf,arm64] mmc: bcm2835: Don't overwrite max frequency unconditionally + - [arm64] Revert "mmc: meson-gx: include tx phase in the tuning process" + - mlx5: fix mlx5_get_vector_affinity to start from completion vector 0 + - [x86] Revert "apple-gmux: lock iGP IO to protect from vgaarb changes" + - ext4: fix a race in the ext4 shutdown path + - ext4: save error to disk in __ext4_grp_locked_error() + - ext4: correct documentation for grpid mount option + - mm: Fix memory size alignment in devm_memremap_pages_release() + - [mips*] Fix typo BIG_ENDIAN to CPU_BIG_ENDIAN + - [mips*] CPS: Fix MIPS_ISA_LEVEL_RAW fallout + - [mips*] Fix incorrect mem=X@Y handling + - [arm64] PCI: Disable MSI for HiSilicon Hip06/Hip07 only in Root Port mode + - [armhf,arm64] PCI: iproc: Fix NULL pointer dereference for BCMA + - [x86] PCI: pciehp: Assume NoCompl+ for Thunderbolt ports + - console/dummy: leave .con_font_get set to NULL + - rbd: whitelist RBD_FEATURE_OPERATIONS feature bit + - xen: Fix {set,clear}_foreign_p2m_mapping on autotranslating guests + - xenbus: track caller request id + - seq_file: fix incomplete reset on read from zero offset + - tracing: Fix parsing of globs with a wildcard at the beginning + - mpls, nospec: Sanitize array index in mpls_label_ok() (CVE-2017-5753) + - rtlwifi: rtl8821ae: Fix connection lost problem correctly + - [arm64] proc: Set PTE_NG for table entries to avoid traversing them twice + - xprtrdma: Fix calculation of ri_max_send_sges + - xprtrdma: Fix BUG after a device removal + - blk-wbt: account flush requests correctly + - target/iscsi: avoid NULL dereference in CHAP auth error path + - iscsi-target: make sure to wake up sleeping login worker + - dm: correctly handle chained bios in dec_pending() + - Btrfs: fix deadlock in run_delalloc_nocow + - Btrfs: fix crash due to not cleaning up tree log block's dirty bits + - Btrfs: fix extent state leak from tree log + - Btrfs: fix btrfs_evict_inode to handle abnormal inodes correctly + - Btrfs: fix use-after-free on root->orphan_block_rsv + - Btrfs: fix unexpected -EEXIST when creating new inode + - 9p/trans_virtio: discard zero-length reply + - mtd: nand: vf610: set correct ooblayout + - ALSA: hda - Fix headset mic detection problem for two Dell machines + - ALSA: usb-audio: Fix UAC2 get_ctl request with a RANGE attribute + - ALSA: hda/realtek - Add headset mode support for Dell laptop + - ALSA: hda/realtek - Enable Thinkpad Dock device for ALC298 platform + - ALSA: hda/realtek: PCI quirk for Fujitsu U7x7 + - ALSA: usb-audio: add implicit fb quirk for Behringer UFX1204 + - ALSA: usb: add more device quirks for USB DSD devices + - ALSA: seq: Fix racy pool initializations (CVE-2018-7566) + - [armhf,arm64] mvpp2: fix multicast address filter + - usb: Move USB_UHCI_BIG_ENDIAN_* out of USB_SUPPORT + - [x86] mm, mm/hwpoison: Don't unconditionally unmap kernel 1:1 pages + - [armhf] dts: exynos: fix RTC interrupt for exynos5410 + - [arm64] dts: msm8916: Add missing #phy-cells + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.15.6 + - tun: fix tun_napi_alloc_frags() frag allocator + - ptr_ring: fail early if queue occupies more than KMALLOC_MAX_SIZE + - ptr_ring: try vmalloc() when kmalloc() fails + - selinux: ensure the context is NUL terminated in + security_context_to_sid_core() + - selinux: skip bounded transition processing if the policy isn't loaded + - media: pvrusb2: properly check endpoint types + - [x86] crypto: twofish-3way - Fix %rbp usage + - blk_rq_map_user_iov: fix error override + - [x86] KVM: fix escape of guest dr6 to the host + - kcov: detect double association with a single task + - netfilter: x_tables: fix int overflow in xt_alloc_table_info() + - netfilter: x_tables: avoid out-of-bounds reads in + xt_request_find_{match|target} + - netfilter: ipt_CLUSTERIP: fix out-of-bounds accesses in + clusterip_tg_check() + - netfilter: on sockopt() acquire sock lock only in the required scope + - netfilter: xt_cgroup: initialize info->priv in cgroup_mt_check_v1() + - netfilter: xt_RATEEST: acquire xt_rateest_mutex for hash insert + - rds: tcp: correctly sequence cleanup on netns deletion. + - rds: tcp: atomically purge entries from rds_tcp_conn_list during netns + delete + - net: avoid skb_warn_bad_offload on IS_ERR + - net_sched: gen_estimator: fix lockdep splat + - [arm64] dts: add #cooling-cells to CPU nodes + - dn_getsockoptdecnet: move nf_{get/set}sockopt outside sock lock + - xhci: Fix NULL pointer in xhci debugfs + - xhci: Fix xhci debugfs devices node disappearance after hibernation + - xhci: xhci debugfs device nodes weren't removed after device plugged out + - xhci: fix xhci debugfs errors in xhci_stop + - usbip: keep usbip_device sockfd state in sync with tcp_socket + - [x86] mei: me: add cannon point device ids + - [x86] mei: me: add cannon point device ids for 4th device + - vmalloc: fix __GFP_HIGHMEM usage for vmalloc_32 on 32b systems + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.15.7 + - netfilter: drop outermost socket lock in getsockopt() + - [arm64] mm: don't write garbage into TTBR1_EL1 register + - kconfig.h: Include compiler types to avoid missed struct attributes + - scsi: ibmvfc: fix misdefined reserved field in ibmvfc_fcp_rsp_info + - [mips*] Drop spurious __unused in struct compat_flock + - cfg80211: fix cfg80211_beacon_dup + - i2c: designware: must wait for enable + - [armhf,arm64] i2c: bcm2835: Set up the rising/falling edge delays + - X.509: fix BUG_ON() when hash algorithm is unsupported + - X.509: fix NULL dereference when restricting key with unsupported_sig + - PKCS#7: fix certificate chain verification + - PKCS#7: fix certificate blacklisting + - [x86] genirq/matrix: Handle CPU offlining proper + - RDMA/uverbs: Protect from races between lookup and destroy of uobjects + - RDMA/uverbs: Protect from command mask overflow + - RDMA/uverbs: Fix bad unlock balance in ib_uverbs_close_xrcd + - RDMA/uverbs: Fix circular locking dependency + - RDMA/uverbs: Sanitize user entered port numbers prior to access it + - iio: buffer: check if a buffer has been set up when poll is called + - Kbuild: always define endianess in kconfig.h + - [x86] apic/vector: Handle vector release on CPU unplug correctly + - mm, swap, frontswap: fix THP swap if frontswap enabled + - mm: don't defer struct page initialization for Xen pv guests + - uapi/if_ether.h: move __UAPI_DEF_ETHHDR libc define + - [armhf,arm64] irqchip/gic-v3: Use wmb() instead of smb_wmb() in + gic_raise_softirq() + - [mips*] irqchip/mips-gic: Avoid spuriously handling masked interrupts + - PCI/cxgb4: Extend T3 PCI quirk to T4+ devices + - [x86] net: thunderbolt: Tear down connection properly on suspend + - [x86] net: thunderbolt: Run disconnect flow asynchronously when logout is + received + - ohci-hcd: Fix race condition caused by ohci_urb_enqueue() and + io_watchdog_func() + - usb: ohci: Proper handling of ed_rm_list to handle race condition between + usb_kill_urb() and finish_unlinks() + - [arm64] Remove unimplemented syscall log message + - [arm64] Disable unhandled signal log messages by default + - [arm64] cpufeature: Fix CTR_EL0 field definitions + - USB: Add delay-init quirk for Corsair K70 RGB keyboards + - drm/edid: Add 6 bpc quirk for CPT panel in Asus UX303LA + - usb: host: ehci: use correct device pointer for dma ops + - usb: dwc3: gadget: Set maxpacket size for ep0 IN + - usb: dwc3: ep0: Reset TRB counter for ep0 IN + - usb: ldusb: add PIDs for new CASSY devices supported by this driver + - Revert "usb: musb: host: don't start next rx urb if current one failed" + - usb: gadget: f_fs: Process all descriptors during bind + - usb: gadget: f_fs: Use config_ep_by_speed() + - drm/cirrus: Load lut in crtc_commit + - drm/atomic: Fix memleak on ERESTARTSYS during non-blocking commits + - drm: Handle unexpected holes in color-eviction + - drm/amdgpu: disable MMHUB power gating on raven + - drm/amdgpu: fix VA hole handling on Vega10 v3 + - drm/amdgpu: Add dpm quirk for Jet PRO (v2) + - drm/amdgpu: only check mmBIF_IOV_FUNC_IDENTIFIER on tonga/fiji + - drm/amdgpu: add atpx quirk handling (v2) + - drm/amdgpu: Avoid leaking PM domain on driver unbind (v2) + - drm/amdgpu: add new device to use atpx quirk + - [arm64] __show_regs: Only resolve kernel symbols when running at EL1 + - [x86] drm/i915/breadcrumbs: Ignore unsubmitted signalers + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.15.8 + - vsprintf: avoid misleading "(null)" for %px + - hrtimer: Ensure POSIX compliance (relative CLOCK_REALTIME hrtimers) + - ipmi_si: Fix error handling of platform device + - [x86] platform: dell-laptop: Allocate buffer on heap rather than globally + - [powerpc*] pseries: Enable RAS hotplug events later + - Bluetooth: btusb: Use DMI matching for QCA reset_resume quirking + - ixgbe: fix crash in build_skb Rx code path + - [x86] tpm: st33zp24: fix potential buffer overruns caused by bit glitches + on the bus + - tpm: fix potential buffer overruns caused by bit glitches on the bus + - [x86] tpm_i2c_infineon: fix potential buffer overruns caused by bit + glitches on the bus + - [x86] tpm_i2c_nuvoton: fix potential buffer overruns caused by bit + glitches on the bus + - [x86] tpm_tis: fix potential buffer overruns caused by bit glitches on + the bus + - ALSA: usb-audio: Add a quirck for B&W PX headphones + - ALSA: control: Fix memory corruption risk in snd_ctl_elem_read + - [x86] ALSA: x86: Fix missing spinlock and mutex initializations + - ALSA: hda: Add a power_save blacklist + - ALSA: hda - Fix pincfg at resume on Lenovo T470 dock + - mmc: sdhci-pci: Fix S0i3 for Intel BYT-based controllers + - [armhf,arm64] mmc: dw_mmc-k3: Fix out-of-bounds access through DT alias + - [armhf,arm64] mmc: dw_mmc: Avoid accessing registers in runtime suspended + state + - [armhf,arm64] mmc: dw_mmc: Factor out dw_mci_init_slot_caps + - [armhf,arm64] mmc: dw_mmc: Fix out-of-bounds access for slot's caps + - timers: Forward timer base before migrating timers + - [hppa] Use cr16 interval timers unconditionally on qemu + - [hppa] Reduce irq overhead when run in qemu + - [hppa] Fix ordering of cache and TLB flushes + - [hppa] Hide virtual kernel memory layout + - btrfs: use proper endianness accessors for super_copy + - block: fix the count of PGPGOUT for WRITE_SAME + - block: kyber: fix domain token leak during requeue + - block: pass inclusive 'lend' parameter to truncate_inode_pages_range + - vfio: disable filesystem-dax page pinning + - dax: fix vma_is_fsdax() helper + - direct-io: Fix sleep in atomic due to sync AIO + - [x86] xen: Zero MSR_IA32_SPEC_CTRL before suspend + - [x86] cpu_entry_area: Sync cpu_entry_area to initial_page_table + - bridge: check brport attr show in brport_show + - fib_semantics: Don't match route with mismatching tclassid + - hdlc_ppp: carrier detect ok, don't turn off negotiation + - [arm64] net: amd-xgbe: fix comparison to bitshift when dealing with a mask + - [armhf] net: ethernet: ti: cpsw: fix net watchdog timeout + - net: fix race on decreasing number of TX queues + - net: ipv4: don't allow setting net.ipv4.route.min_pmtu below 68 + - netlink: ensure to loop over all netns in genlmsg_multicast_allns() + - net: sched: report if filter is too large to dump + - ppp: prevent unregistered channels from connecting to PPP units + - sctp: verify size of a new chunk in _sctp_make_chunk() (CVE-2018-5803) + - udplite: fix partial checksum initialization + - net/mlx5e: Fix TCP checksum in LRO buffers + - sctp: fix dst refcnt leak in sctp_v4_get_dst + - net/mlx5e: Specify numa node when allocating drop rq + - net: phy: fix phy_start to consider PHY_IGNORE_INTERRUPT + - tcp: Honor the eor bit in tcp_mtu_probe + - rxrpc: Fix send in rxrpc_send_data_packet() + - tcp_bbr: better deal with suboptimal GSO + - doc: Change the min default value of tcp_wmem/tcp_rmem. + - net/mlx5e: Fix loopback self test when GRO is off + - net_sched: gen_estimator: fix broken estimators based on percpu stats + - net/sched: cls_u32: fix cls_u32 on filter replace + - sctp: do not pr_err for the duplicated node in transport rhlist + - net: ipv4: Set addr_type in hash_keys for forwarded case + - sctp: fix dst refcnt leak in sctp_v6_get_dst() + - bridge: Fix VLAN reference count problem + - net/mlx5e: Verify inline header size do not exceed SKB linear size + - tls: Use correct sk->sk_prot for IPV6 + - [arm64] amd-xgbe: Restore PCI interrupt enablement setting on resume + - cls_u32: fix use after free in u32_destroy_key() + - netlink: put module reference if dump start fails + - tcp: purge write queue upon RST + - tuntap: correctly add the missing XDP flush + - tuntap: disable preemption during XDP processing + - virtio-net: disable NAPI only when enabled during XDP set + - cxgb4: fix trailing zero in CIM LA dump + - net/mlx5: Fix error handling when adding flow rules + - net: phy: Restore phy_resume() locking assumption + - tcp: tracepoint: only call trace_tcp_send_reset with full socket + - l2tp: don't use inet_shutdown on tunnel destroy + - l2tp: don't use inet_shutdown on ppp session destroy + - l2tp: fix races with tunnel socket close + - l2tp: fix race in pppol2tp_release with session object destroy + - l2tp: fix tunnel lookup use-after-free race + - [s390x] qeth: fix underestimated count of buffer elements + - [s390x] qeth: fix SETIP command handling + - [s390x] qeth: fix overestimated count of buffer elements + - [s390x] qeth: fix IP removal on offline cards + - [s390x] qeth: fix double-free on IP add/remove race + - [s390x] Revert "s390/qeth: fix using of ref counter for rxip addresses" + - [s390x] qeth: fix IP address lookup for L3 devices + - [s390x] qeth: fix IPA command submission race + - tcp: revert F-RTO middle-box workaround + - tcp: revert F-RTO extension to detect more spurious timeouts + - blk-mq: don't call io sched's .requeue_request when requeueing rq to + ->dispatch + - media: m88ds3103: don't call a non-initalized function + - [x86] EDAC, sb_edac: Fix out of bound writes during DIMM configuration on + KNL + - [s390x] KVM: take care of clock-comparator sign control + - [s390x] KVM: provide only a single function for setting the tod (fix SCK) + - [s390x] KVM: consider epoch index on hotplugged CPUs + - [s390x] KVM: consider epoch index on TOD clock syncs + - nospec: Allow index argument to have const-qualified type + - [x86] mm: Fix {pmd,pud}_{set,clear}_flags() + - [armhf] orion: fix orion_ge00_switch_board_info initialization + - [armhf] dts: rockchip: Remove 1.8 GHz operation point from phycore som + - [armhf] mvebu: Fix broken PL310_ERRATA_753970 selects + - [x86] KVM: Fix SMRAM accessing even if VM is shutdown + - KVM: mmu: Fix overlap between public and private memslots + - [x86] KVM: Remove indirect MSR op calls from SPEC_CTRL + - [x86] KVM: move LAPIC initialization after VMCS creation + - [x86] KVM/VMX: Optimize vmx_vcpu_run() and svm_vcpu_run() by marking the + RDMSR path as unlikely() + - [x86] KVM: fix vcpu initialization with userspace lapic + - [x86] KVM: remove WARN_ON() for when vm_munmap() fails + - [x86] ACPI / bus: Parse tables as term_list for Dell XPS 9570 and + Precision M5530 + - [armhf] dts: LogicPD SOM-LV: Fix I2C1 pinmux + - [armhf] dts: LogicPD Torpedo: Fix I2C1 pinmux + - [powerpc*] 64s/radix: Boot-time NULL pointer protection using a guard-PID + - md: only allow remove_and_add_spares when no sync_thread running. + - [x86] platform: dell-laptop: fix kbd_get_state's request value + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.15.9 + - bpf: fix mlock precharge on arraymaps + - bpf: fix memory leak in lpm_trie map_free callback function + - bpf: fix rcu lockdep warning for lpm_trie map_free callback + - [amd64] bpf: implement retpoline for tail call (CVE-2017-5715) + - [arm64] bpf: fix out of bounds access in tail call + - bpf: add schedule points in percpu arrays management + - bpf: allow xadd only on aligned memory + - [powerpc*] bpf, ppc64: fix out of bounds access in tail call + - scsi: mpt3sas: fix oops in error handlers after shutdown/unload + - scsi: mpt3sas: wait for and flush running commands on shutdown/unload + - [x86] KVM: fix backward migration with async_PF + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.15.10 + - RDMA/ucma: Limit possible option size + - RDMA/ucma: Check that user doesn't overflow QP state + - RDMA/mlx5: Fix integer overflow while resizing CQ + - bpf: cpumap: use GFP_KERNEL instead of GFP_ATOMIC in + __cpu_map_entry_alloc() + - IB/uverbs: Improve lockdep_check + - mac80211_hwsim: don't use WQ_MEM_RECLAIM + - [x86] drm/i915: Check for fused or unused pipes + - [x86] drm/i915/audio: fix check for av_enc_map overflow + - [x86] drm/i915: Fix rsvd2 mask when out-fence is returned + - [x86] drm/i915: Clear the in-use marker on execbuf failure + - [x86] drm/i915: Disable DC states around GMBUS on GLK + - [x86] drm/i915: Update watermark state correctly in sanitize_watermarks + - [x86] drm/i915: Try EDID bitbanging on HDMI after failed read + - [x86] drm/i915/perf: fix perf stream opening lock + - scsi: core: Avoid that ATA error handling can trigger a kernel hang or + oops (Closes: #891467) + - scsi: qla2xxx: Fix NULL pointer crash due to active timer for ABTS + - [x86] drm/i915: Always call to intel_display_set_init_power() in + resume_early. + - workqueue: Allow retrieval of current task's work struct + - drm: Allow determining if current task is output poll worker + - drm/nouveau: Fix deadlock on runtime suspend + - drm/radeon: Fix deadlock on runtime suspend + - drm/amdgpu: Fix deadlock on runtime suspend + - drm/nouveau: prefer XBGR2101010 for addfb ioctl + - drm/amd/powerplay/smu7: allow mclk switching with no displays + - drm/amd/powerplay/vega10: allow mclk switching with no displays + - Revert "drm/radeon/pm: autoswitch power state when in balanced mode" + - drm/amd/display: check for ipp before calling cursor operations + - drm/radeon: insist on 32-bit DMA for Cedar on PPC64/PPC64LE + - drm/amd/powerplay: fix power over limit on Fiji + - drm/amd/display: Default HDMI6G support to true. Log VBIOS table error. + - drm/amdgpu: used cached pcie gen info for SI (v2) + - drm/amdgpu: Notify sbios device ready before send request + - drm/radeon: fix KV harvesting + - drm/amdgpu: fix KV harvesting + - drm/amdgpu:Correct max uvd handles + - drm/amdgpu:Always save uvd vcpu_bo in VM Mode + - ovl: redirect_dir=nofollow should not follow redirect for opaque lower + - [mips*/octeon] irq: Check for null return on kzalloc allocation + - PCI: dwc: Fix enumeration end when reaching root subordinate + - Revert "Input: synaptics - Lenovo Thinkpad T460p devices should use RMI" + - bug: use %pB in BUG and stack protector failure + - lib/bug.c: exclude non-BUG/WARN exceptions from report_bug() + - mm/memblock.c: hardcode the end_pfn being -1 + - Documentation/sphinx: Fix Directive import error + - loop: Fix lost writes caused by missing flag + - virtio_ring: fix num_free handling in error case + - [x390x] KVM: fix memory overwrites when not using SCA entries + - [arm64] mm: fix thinko in non-global page table attribute check + - IB/core: Fix missing RDMA cgroups release in case of failure to register + device + - Revert "nvme: create 'slaves' and 'holders' entries for hidden + controllers" + - kbuild: Handle builtin dtb file names containing hyphens + - dm bufio: avoid false-positive Wmaybe-uninitialized warning + - IB/mlx5: Fix incorrect size of klms in the memory region + - bcache: fix crashes in duplicate cache device register + - bcache: don't attach backing with duplicate UUID + - [x86] MCE: Save microcode revision in machine check records + - [x86] MCE: Serialize sysfs changes (CVE-2018-7995) + - perf tools: Fix trigger class trigger_on() + - [x86] spectre_v2: Don't check microcode versions when running under + hypervisors + - ALSA: hda/realtek - Add support headset mode for DELL WYSE + - ALSA: hda/realtek - Add headset mode support for Dell laptop + - ALSA: hda/realtek: Limit mic boost on T480 + - ALSA: hda/realtek - Fix dock line-out volume on Dell Precision 7520 + - ALSA: hda/realtek - Make dock sound work on ThinkPad L570 + - ALSA: seq: Don't allow resizing pool in use + - ALSA: seq: More protection for concurrent write and ioctl races + - ALSA: hda - Fix a wrong FIXUP for alc289 on Dell machines + - ALSA: hda: add dock and led support for HP EliteBook 820 G3 + - ALSA: hda: add dock and led support for HP ProBook 640 G2 + - scsi: qla2xxx: Fix NULL pointer crash due to probe failure + - scsi: qla2xxx: Fix recursion while sending terminate exchange + - dt-bindings: Document mti,mips-cpc binding + - nospec: Kill array_index_nospec_mask_check() + - nospec: Include dependency + - [x86] entry: Reduce the code footprint of the 'idtentry' macro + - [x86] entry/64: Use 'xorl' for faster register clearing + - [x86] mm: Remove stale comment about KMEMCHECK + - [x86] asm: Improve how GEN_*_SUFFIXED_RMWcc() specify clobbers + - [x86] IO-APIC: Avoid warning in 32-bit builds + - [x86] LDT: Avoid warning in 32-bit builds with older gcc + - x86-64/realmode: Add instruction suffix + - Revert "x86/retpoline: Simplify vmexit_fill_RSB()" + - [x86] speculation: Use IBRS if available before calling into firmware + - [x86] retpoline: Support retpoline builds with Clang + - [x86] speculation, objtool: Annotate indirect calls/jumps for objtool + - [x86] speculation: Move firmware_restrict_branch_speculation_*() from C + to CPP + - [x86] paravirt, objtool: Annotate indirect calls + - [x86] boot, objtool: Annotate indirect jump in secondary_startup_64() + - [x86] mm/sme, objtool: Annotate indirect call in sme_encrypt_execute() + - objtool: Use existing global variables for options + - objtool: Add retpoline validation + - objtool: Add module specific retpoline rules + - objtool, retpolines: Integrate objtool with retpoline support more + closely + - objtool: Fix another switch table detection issue + - objtool: Fix 32-bit build + - [x86] kprobes: Fix kernel crash when probing .entry_trampoline code + - watchdog: hpwdt: SMBIOS check + - watchdog: hpwdt: Check source of NMI + - watchdog: hpwdt: fix unused variable warning + - watchdog: hpwdt: Remove legacy NMI sourcing. + - netfilter: add back stackpointer size checks (CVE-2018-1065) + - netfilter: ipt_CLUSTERIP: fix a race condition of proc file creation + - netfilter: xt_hashlimit: fix lock imbalance + - netfilter: x_tables: fix missing timer initialization in xt_LED + - netfilter: nat: cope with negative port range + - netfilter: IDLETIMER: be syzkaller friendly + - netfilter: ebtables: CONFIG_COMPAT: don't trust userland offsets + (CVE-2018-1068) + - netfilter: bridge: ebt_among: add missing match size checks + - netfilter: ipv6: fix use-after-free Write in nf_nat_ipv6_manip_pkt + - netfilter: use skb_to_full_sk in ip6_route_me_harder + - tpm_tis: Move ilb_base_addr to tpm_tis_data + - tpm: Keep CLKRUN enabled throughout the duration of transmit_cmd() + - tpm: delete the TPM_TIS_CLK_ENABLE flag + - tpm: remove unused variables + - tpm: only attempt to disable the LPC CLKRUN if is already enabled + - [x86] xen: Calculate __max_logical_packages on PV domains + - scsi: qla2xxx: Fix system crash for Notify ack timeout handling + - scsi: qla2xxx: Fix gpnid error processing + - scsi: qla2xxx: Move session delete to driver work queue + - scsi: qla2xxx: Skip IRQ affinity for Target QPairs + - scsi: qla2xxx: Fix re-login for Nport Handle in use + - scsi: qla2xxx: Retry switch command on time out + - scsi: qla2xxx: Serialize GPNID for multiple RSCN + - scsi: qla2xxx: Fix login state machine stuck at GPDB + - scsi: qla2xxx: Fix NPIV host cleanup in target mode + - scsi: qla2xxx: Relogin to target port on a cable swap + - scsi: qla2xxx: Fix Relogin being triggered too fast + - scsi: qla2xxx: Fix PRLI state check + - scsi: qla2xxx: Fix abort command deadlock due to spinlock + - scsi: qla2xxx: Replace fcport alloc with qla2x00_alloc_fcport + - scsi: qla2xxx: Fix scan state field for fcport + - scsi: qla2xxx: Clear loop id after delete + - scsi: qla2xxx: Defer processing of GS IOCB calls + - scsi: qla2xxx: Remove aborting ELS IOCB call issued as part of timeout. + - scsi: qla2xxx: Fix system crash in qlt_plogi_ack_unref + - scsi: qla2xxx: Fix memory leak in dual/target mode + - NFS: Fix an incorrect type in struct nfs_direct_req + - pNFS: Prevent the layout header refcount going to zero in pnfs_roc() + - NFS: Fix unstable write completion + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.15.11 + - [x86] Treat R_X86_64_PLT32 as R_X86_64_PC32 + - usb: host: xhci-rcar: add support for r8a77965 + - xhci: Fix front USB ports on ASUS PRIME B350M-A + - xhci: fix endpoint context tracer output + - [sh4] serial: sh-sci: prevent lockup on full TTY buffers + - tty/serial: atmel: add new version check for usart + - uas: fix comparison for error code + - [x86] staging: comedi: fix comedi_nsamples_left. + - USB: storage: Add JMicron bridge 152d:2567 to unusual_devs.h + - usbip: vudc: fix null pointer dereference on udc->lock + - usb: quirks: add control message delay for 1b1c:1b20 + - usb: usbmon: Read text within supplied buffer size + - usb: gadget: f_fs: Fix use-after-free in ffs_fs_kill_sb() + - [arm64,armhf] usb: dwc3: Fix lock-up on ID change during system + suspend/resume + - serial: 8250_pci: Add Brainboxes UC-260 4 port serial device + - serial: core: mark port as initialized in autoconfig + - earlycon: add reg-offset to physical address before mapping + - dm mpath: fix passing integrity data + - Revert "btrfs: use proper endianness accessors for super_copy" + - gfs2: Clean up {lookup,fillup}_metapath + - gfs2: Fixes to "Implement iomap for block_map" (2) + - [armhf] spi: imx: Fix failure path leak on GPIO request error correctly + - HID: multitouch: Only look at non touch fields in first packet of a + frame + - [powerpc*] KVM: Book3S HV: Avoid shifts by negative amounts + - drm/edid: set ELD connector type in drm_edid_to_eld() + - dma-buf/fence: Fix lock inversion within dma-fence-array + - video/hdmi: Allow "empty" HDMI infoframes + - [powerpc*] KVM: Book3S HV: Fix typo in kvmppc_hv_get_dirty_log_radix() + - HID: elo: clear BTN_LEFT mapping + - iwlwifi: mvm: rs: don't override the rate history in the search cycle + - [armhf] dts: exynos: Correct Trats2 panel reset line + - drm/amdgpu: fix get_max_engine_clock_in_mhz + - USB: ledtrig-usbport: fix of-node leak + - dt-bindings: serial: Add common rs485 binding for RTS polarity + - sched: Stop switched_to_rt() from sending IPIs to offline CPUs + - sched: Stop resched_cpu() from sending IPIs to offline CPUs + - crypto: chelsio - Fix an error code in chcr_hash_dma_map() + - crypto: keywrap - Add missing ULL suffixes for 64-bit constants + - crypto: cavium - fix memory leak on info + - test_firmware: fix setting old custom fw path back on exit + - drm/vblank: Fix vblank timestamp debugs + - net: ieee802154: adf7242: Fix bug if defined DEBUG + - perf report: Fix -D output for user metadata events + - net: xfrm: allow clearing socket xfrm policies. + - gpiolib: don't allow OPEN_DRAIN & OPEN_SOURCE flags simultaneously + - mtd: nand: fix interpretation of NAND_CMD_NONE in nand_command[_lp]() + - [arm64] net: thunderx: Set max queue count taking XDP_TX into account + - [armhf] dts: am335x-pepper: Fix the audio CODEC's reset pin + - [armhf] dts: omap3-n900: Fix the audio CODEC's reset pin + - mtd: nand: ifc: update bufnum mask for ver >= 2.0.0 + - userns: Don't fail follow_automount based on s_user_ns + - xfrm: Fix xfrm_replay_overflow_offload_esn + - leds: pm8058: Silence pointer to integer size warning + - bpf: fix stack state printing in verifier log + - [armhf] drm/etnaviv: make THERMAL selectable + - ath10k: update tdls teardown state to target + - cpufreq: Fix governor module removal race + - [x86] KVM: Restart the guest when insn_len is zero and SEV is enabled + - drm/amdgpu:fix random missing of FLR NOTIFY + - scsi: lpfc: Fix crash during driver unload with running nvme traffic + - scsi: ses: don't ask for diagnostic pages repeatedly during probe + - [armhf] drm/sun4i: Fix format mask in DE2 driver + - [s390x] perf annotate: Fix unnecessary memory allocation for s390x + - perf annotate: Fix objdump comment parsing for Intel mov dissassembly + - iwlwifi: mvm: avoid dumping assert log when device is stopped + - drm/amdgpu:fix virtual dce bug + - drm/amdgpu: fix amdgpu_sync_resv v2 + - bnxt_en: Uninitialized variable in bnxt_tc_parse_actions() + - [arm64] clk: qcom: msm8916: fix mnd_width for codec_digcodec + - mwifiex: cfg80211: do not change virtual interface during scan + processing + - ath10k: fix invalid STS_CAP_OFFSET_MASK + - tools/usbip: fixes build with musl libc toolchain + - [armhf] spi: sun6i: disable/unprepare clocks on remove + - bnxt_en: Don't print "Link speed -1 no longer supported" messages. + - scsi: core: scsi_get_device_flags_keyed(): Always return device flags + - scsi: devinfo: apply to HP XP the same flags as Hitachi VSP + - scsi: dh: add new rdac devices + - media: vsp1: Prevent suspending and resuming DRM pipelines + - dm raid: fix raid set size revalidation + - media: cpia2: Fix a couple off by one bugs + - [arm*] media: davinci: vpif_capture: add NULL check on devm_kzalloc + return value + - virtio_net: Disable interrupts if napi_complete_done rescheduled napi + - net: sched: drop qdisc_reset from dev_graft_qdisc + - veth: set peer GSO values + - [x86] drm/amdkfd: Fix memory leaks in kfd topology + - [powerpc*] modules: Don't try to restore r2 after a sibling call + - [powerpc/powerpc64,ppc64*] Don't trace irqs-off at interrupt return to + soft-disabled context + - [arm64] dts: renesas: salvator-common: Add EthernetAVB PHY reset + - agp/intel: Flush all chipset writes after updating the GGTT + - mac80211_hwsim: enforce PS_MANUAL_POLL to be set after PS_ENABLED + - mac80211: remove BUG() when interface type is invalid + - crypto: caam/qi - use correct print specifier for size_t + - mmc: mmc_test: Ensure command queue is disabled for testing + - Fix misannotated out-of-line _copy_to_user() + - ipvlan: add L2 check for packets arriving via virtual devices + - locking/locktorture: Fix num reader/writer corner cases + - ima: relax requiring a file signature for new files with zero length + - IB/mlx5: revisit -Wmaybe-uninitialized warning + - [arm64] dmaengine: qcom_hidma: check pending interrupts + - [x86] drm/i915/glk: Disable Guc and HuC on GLK + + [ Ben Hutchings ] + * aufs: gen-patch: Fix Subject generation to skip SPDX-License-Identifier + * aufs: Update support patchset to aufs4.15-20180219 (no functional change) + * debian/control: Point Vcs URLs to Salsa + * [x86] sound/soc/intel: Enable SND_SOC_INTEL_SST_TOPLEVEL, + SND_SOC_INTEL_HASWELL, SND_SOC_INTEL_BAYTRAIL, SND_SST_ATOM_HIFI2_PLATFORM, + SND_SOC_INTEL_SKYLAKE as modules; re-enable dependent board drivers + (Closes: #892629) + * firmware_class: Refer to Debian wiki page when logging missing firmware + (Closes: #888405) + * amdgpu: Abort probing if firmware is not installed, as we do in radeon + * Bump ABI to 2 + * [amd64] udeb: Add vmd to scsi-modules, required for NVMe on some systems + (Closes: #891482) + * udeb: Update patterns for PHY modules included in usb-modules + (Closes: #893154) + + [ Uwe Kleine-König ] + * netfilter: enable NFT_FIB_NETDEV as module + + [ Thadeu Lima de Souza Cascardo ] + * [powerpc,ppc64el,ppc64] Enable CRASH_DUMP (Closes: #883432) + + [ Bastian Blank ] + * Drop note about Xen from long descriptions. + + [ Vagrant Cascadian ] + * [arm64] Enable ROCKCHIP_IODOMAIN as a module, to enable PCIe reset. + * [arm64] Enable REGULATOR_FAN53555 as a module, enabling cpufreq to + work on rk3399 A72 cores. + * [arm64] Apply patch from linux-next to fix eMMC corruption on + Odroid-C2 (Closes: #879072). + + [ Salvatore Bonaccorso ] + * mac80211_hwsim: fix possible memory leak in hwsim_new_radio_nl() + (CVE-2018-8087) + + -- Salvatore Bonaccorso Tue, 20 Mar 2018 09:31:07 +0100 + +linux (4.15.4-1) unstable; urgency=medium + + * New upstream release: https://kernelnewbies.org/Linux_4.15 + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.15.1 + - Bluetooth: hci_serdev: Init hci_uart proto_lock to avoid oops + - tools/gpio: Fix build error with musl libc + - gpio: stmpe: i2c transfer are forbiden in atomic context + - gpio: Fix kernel stack leak to userspace + - scsi: storvsc: missing error code in storvsc_probe() + - staging: lustre: separate a connection destroy from free struct kib_conn + - staging: ccree: NULLify backup_info when unused + - staging: ccree: fix fips event irq handling build + - usb: option: Add support for FS040U modem + - serial: 8250_dw: Revert "Improve clock rate setting" + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.15.2 + - [x86] KVM: Make indirect calls in emulator speculation safe + - [x86] KVM: VMX: Make indirect call speculation safe + - module/retpoline: Warn about missing retpoline in module + - [x86] cpufeatures: Add CPUID_7_EDX CPUID leaf + - [x86] cpufeatures: Add Intel feature bits for Speculation Control + - [x86] cpufeatures: Add AMD feature bits for Speculation Control + - [x86] msr: Add definitions for new speculation control MSRs + - [x86] pti: Do not enable PTI on CPUs which are not vulnerable to + Meltdown + - [x86] cpufeature: Blacklist SPEC_CTRL/PRED_CMD on early Spectre v2 + microcodes + - [x86] speculation: Add basic IBPB (Indirect Branch Prediction Barrier) + support + - [x86] alternative: Print unadorned pointers + - [x86] nospec: Fix header guards names + - [x86] bugs: Drop one "mitigation" from dmesg + - [x86] cpu/bugs: Make retpoline module warning conditional + - [x86] cpufeatures: Clean up Spectre v2 related CPUID flags + - [x86] retpoline: Simplify vmexit_fill_RSB() + - [x86] speculation: Simplify indirect_branch_prediction_barrier() + - [x86] KVM: nVMX: Eliminate vmcs02 pool + - [x86] KVM: VMX: introduce alloc_loaded_vmcs + - objtool: Improve retpoline alternative handling + - objtool: Add support for alternatives at the end of a section + - objtool: Warn on stripped section symbol + - [x86] mm: Fix overlap of i386 CPU_ENTRY_AREA with FIX_BTMAP + - [x86] spectre: Check CONFIG_RETPOLINE in command line parser + - [x86] entry/64: Remove the SYSCALL64 fast path + - [x86] entry/64: Push extra regs right away + - [x86] asm: Move 'status' from thread_struct to thread_info + - Documentation: Document array_index_nospec + - array_index_nospec: Sanitize speculative array de-references + - [x86] Implement array_index_mask_nospec + - [x86] Introduce barrier_nospec + - [x86] Introduce __uaccess_begin_nospec() and uaccess_try_nospec + - [x86] usercopy: Replace open coded stac/clac with __uaccess_{begin, end} + - [x86] uaccess: Use __uaccess_begin_nospec() and uaccess_try_nospec + - [x86] get_user: Use pointer masking to limit speculation + - [x86] syscall: Sanitize syscall table de-references under speculation + - vfs, fdtable: Prevent bounds-check bypass via speculative execution + - nl80211: Sanitize array index in parse_txq_params + - [x86] spectre: Report get_user mitigation for spectre_v1 + - [x86] spectre: Fix spelling mistake: "vunerable"-> "vulnerable" + - [x86] cpuid: Fix up "virtual" IBRS/IBPB/STIBP feature bits on Intel + - [x86] speculation: Use Indirect Branch Prediction Barrier in context + switch + - [x86] paravirt: Remove 'noreplace-paravirt' cmdline option + - [x86] KVM: VMX: make MSR bitmaps per-VCPU + - [x86] kvm: Update spectre-v1 mitigation + - [x86] retpoline: Avoid retpolines for built-in __init functions + - [x86] spectre: Simplify spectre_v2 command line parsing + - [x86] pti: Mark constant arrays as __initconst + - [x86] speculation: Fix typo IBRS_ATT, which should be IBRS_ALL + - [x86] KVM: Update the reverse_cpuid list to include CPUID_7_EDX + - [x86] KVM: Add IBPB support + - [x86] KVM/VMX: Emulate MSR_IA32_ARCH_CAPABILITIES + - [x86] KVM/VMX: Allow direct access to MSR_IA32_SPEC_CTRL + - [x86] KVM/SVM: Allow direct access to MSR_IA32_SPEC_CTRL + - serial: core: mark port as initialized after successful IRQ change + - fpga: region: release of_parse_phandle nodes after use + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.15.3 + - ip6mr: fix stale iterator + - net: igmp: add a missing rcu locking section + - qlcnic: fix deadlock bug + - qmi_wwan: Add support for Quectel EP06 + - r8169: fix RTL8168EP take too long to complete driver initialization. + - tcp: release sk_frag.page in tcp_disconnect + - vhost_net: stop device during reset owner + - ipv6: addrconf: break critical section in addrconf_verify_rtnl() + - ipv6: change route cache aging logic + - Revert "defer call to mem_cgroup_sk_alloc()" + - net: ipv6: send unsolicited NA after DAD + - rocker: fix possible null pointer dereference in + rocker_router_fib_event_work + - tcp_bbr: fix pacing_gain to always be unity when using lt_bw + - cls_u32: add missing RCU annotation. + - ipv6: Fix SO_REUSEPORT UDP socket with implicit sk_ipv6only + - soreuseport: fix mem leak in reuseport_add_sock() + - net_sched: get rid of rcu_barrier() in tcf_block_put_ext() + - net: sched: fix use-after-free in tcf_block_put_ext + - crypto: tcrypt - fix S/G table for test_aead_speed() + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.15.4 + - cifs: Fix missing put_xid in cifs_file_strict_mmap + - cifs: Fix autonegotiate security settings mismatch + - CIFS: zero sensitive data when freeing + - cpufreq: mediatek: add mediatek related projects into blacklist + - [arm64] watchdog: gpio_wdt: set WDOG_HW_RUNNING in gpio_wdt_stop + - Revert "drm/i915: mark all device info struct with __initconst" + - sched/rt: Use container_of() to get root domain in + rto_push_irq_work_func() + - sched/rt: Up the root domain ref count when passing it around via IPIs + - [arm64] mm: Use non-global mappings for kernel space + - [arm64] mm: Temporarily disable ARM64_SW_TTBR0_PAN + - [arm64] mm: Move ASID from TTBR0 to TTBR1 + - [arm64] mm: Remove pre_ttbr0_update_workaround for Falkor erratum #E1003 + - [arm64] mm: Rename post_ttbr0_update_workaround + - [arm64] mm: Fix and re-enable ARM64_SW_TTBR0_PAN + - [arm64] mm: Allocate ASIDs in pairs + - [arm64] mm: Add arm64_kernel_unmapped_at_el0 helper + - [arm64] mm: Invalidate both kernel and user ASIDs when performing TLBI + - [arm64] entry: Add exception trampoline page for exceptions from EL0 + - [arm64] mm: Map entry trampoline into trampoline and kernel page tables + - [arm64] entry: Explicitly pass exception level to kernel_ventry macro + - [arm64] entry: Hook up entry trampoline to exception vectors + - [arm64] erratum: Work around Falkor erratum #E1003 in trampoline code + - [arm64] cpu_errata: Add Kryo to Falkor 1003 errata + - [arm64] tls: Avoid unconditional zeroing of tpidrro_el0 for native tasks + - [arm64] entry: Add fake CPU feature for unmapping the kernel at EL0 + - [arm64] kaslr: Put kernel vectors address in separate data page + - [arm64] use RET instruction for exiting the trampoline + - [arm64] Kconfig: Add CONFIG_UNMAP_KERNEL_AT_EL0 + - [arm64] Kconfig: Reword UNMAP_KERNEL_AT_EL0 kconfig entry + - [arm64] Take into account ID_AA64PFR0_EL1.CSV3 + - [arm64] capabilities: Handle duplicate entries for a capability + - [arm64] mm: Introduce TTBR_ASID_MASK for getting at the ASID in the TTBR + - [arm64] kpti: Fix the interaction between ASID switching and software PAN + - [arm64] cputype: Add MIDR values for Cavium ThunderX2 CPUs + - [arm64] Turn on KPTI only on CPUs that need it + - [arm64] kpti: Make use of nG dependent on arm64_kernel_unmapped_at_el0() + - [arm64] mm: Permit transitioning from Global to Non-Global without BBM + - [arm64] kpti: Add ->enable callback to remap swapper using nG mappings + - [arm64] Force KPTI to be disabled on Cavium ThunderX + - [arm64] entry: Reword comment about post_ttbr_update_workaround + - [arm64] idmap: Use "awx" flags for .idmap.text .pushsection directives + - [arm64] barrier: Add CSDB macros to control data-value prediction + - [arm64] Implement array_index_mask_nospec() + - [arm64] Make USER_DS an inclusive limit + - [arm64] Use pointer masking to limit uaccess speculation + - [arm64] entry: Ensure branch through syscall table is bounded under + speculation + - [arm64] uaccess: Prevent speculative use of the current addr_limit + - [arm64] uaccess: Don't bother eliding access_ok checks in __{get, + put}_user + - [arm64] uaccess: Mask __user pointers for __arch_{clear, copy_*}_user + - [arm64] futex: Mask __user pointers prior to dereference + - [arm64] cpufeature: __this_cpu_has_cap() shouldn't stop early + - [arm64] Run enable method for errata work arounds on late CPUs + - [arm64] cpufeature: Pass capability structure to ->enable callback + - drivers/firmware: Expose psci_get_version through psci_ops structure + - [arm64] Move post_ttbr_update_workaround to C code + - [arm64] Add skeleton to harden the branch predictor against aliasing + attacks + - [arm64] Move BP hardening to check_and_switch_context + - [arm64] KVM: Use per-CPU vector when BP hardening is enabled + - [arm64] entry: Apply BP hardening for high-priority synchronous + exceptions + - [arm64] entry: Apply BP hardening for suspicious interrupts from EL0 + - [arm64] cputype: Add missing MIDR values for Cortex-A72 and Cortex-A75 + - [arm64] Implement branch predictor hardening for affected Cortex-A CPUs + - [arm64] Implement branch predictor hardening for Falkor + - [arm64] Branch predictor hardening for Cavium ThunderX2 + - [arm64] KVM: Increment PC after handling an SMC trap + - [armhf,arm64] KVM: Consolidate the PSCI include files + - [armhf,arm64] KVM: Add PSCI_VERSION helper + - [armhf,arm64] KVM: Add smccc accessors to PSCI code + - [armhf,arm64] KVM: Implement PSCI 1.0 support + - [armhf,arm64] KVM: Advertise SMCCC v1.1 + - [arm64] KVM: Make PSCI_VERSION a fast path + - [armhf,arm64] KVM: Turn kvm_psci_version into a static inline + - [arm64] KVM: Report SMCCC_ARCH_WORKAROUND_1 BP hardening support + - [arm64] KVM: Add SMCCC_ARCH_WORKAROUND_1 fast handling + - firmware/psci: Expose PSCI conduit + - firmware/psci: Expose SMCCC version through psci_ops + - arm/arm64: smccc: Make function identifiers an unsigned quantity + - arm/arm64: smccc: Implement SMCCC v1.1 inline primitive + - [arm64] Add ARM_SMCCC_ARCH_WORKAROUND_1 BP hardening support + - [arm64] Kill PSCI_GET_VERSION as a variant-2 workaround + - mtd: cfi: convert inline functions to macros + - mtd: nand: brcmnand: Disable prefetch by default + - mtd: nand: Fix nand_do_read_oob() return value + - mtd: nand: sunxi: Fix ECC strength choice + - ubi: Fix race condition between ubi volume creation and udev + - ubi: fastmap: Erase outdated anchor PEBs during attach + - ubi: block: Fix locking for idr_alloc/idr_remove + - ubifs: free the encrypted symlink target + - nfs/pnfs: fix nfs_direct_req ref leak when i/o falls back to the mds + - nfs41: do not return ENOMEM on LAYOUTUNAVAILABLE + - NFS: Add a cond_resched() to nfs_commit_release_pages() + - NFS: Fix nfsstat breakage due to LOOKUPP + - NFS: commit direct writes even if they fail partially + - NFS: reject request for id_legacy key without auxdata + - NFS: Fix a race between mmap() and O_DIRECT + - nfsd: Detect unhashed stids in nfsd4_verify_open_stid() + - kernfs: fix regression in kernfs_fop_write caused by wrong type + - ahci: Annotate PCI ids for mobile Intel chipsets as such + - ahci: Add PCI ids for Intel Bay Trail, Cherry Trail and Apollo Lake AHCI + - ahci: Add Intel Cannon Lake PCH-H PCI ID + - crypto: hash - introduce crypto_hash_alg_has_setkey() + - crypto: cryptd - pass through absence of ->setkey() + - crypto: mcryptd - pass through absence of ->setkey() + - crypto: poly1305 - remove ->setkey() method + - crypto: hash - annotate algorithms taking optional key + - crypto: hash - prevent using keyed hashes without setting key + - media: v4l2-ioctl.c: use check_fmt for enum/g/s/try_fmt + - media: v4l2-ioctl.c: don't copy back the result for -ENOTTY + - media: v4l2-compat-ioctl32.c: add missing VIDIOC_PREPARE_BUF + - media: v4l2-compat-ioctl32.c: fix the indentation + - media: v4l2-compat-ioctl32.c: move 'helper' functions to __get/put_v4l2_format32 + - media: v4l2-compat-ioctl32.c: avoid sizeof(type) + - media: v4l2-compat-ioctl32.c: copy m.userptr in put_v4l2_plane32 + - media: v4l2-compat-ioctl32.c: fix ctrl_is_pointer + - media: v4l2-compat-ioctl32.c: copy clip list in put_v4l2_window32 + - media: v4l2-compat-ioctl32.c: drop pr_info for unknown buffer type + - media: v4l2-compat-ioctl32.c: don't copy back the result for certain errors + - media: v4l2-compat-ioctl32.c: refactor compat ioctl32 logic + - media: v4l2-compat-ioctl32.c: make ctrl_is_pointer work for subdevs + - crypto: caam - fix endless loop when DECO acquire fails + - crypto: sha512-mb - initialize pending lengths correctly + - crypto: talitos - fix Kernel Oops on hashing an empty file + - [armhf,arm64 KVM: Fix SMCCC handling of unimplemented SMC/HVC calls + - [x86] KVM: nVMX: Fix races when sending nested PI while dest + enters/leaves L2 + - [x86] KVM: nVMX: Fix bug of injecting L2 exception into L1 + - [powerpc*] KVM: PPC: Book3S HV: Make sure we don't re-enter guest + without XIVE loaded + - [powerpc*] KVM: PPC: Book3S HV: Drop locks before reading guest memory + - [armhf,arm64] KVM: Handle CPU_PM_ENTER_FAILED + - [powerpc*] KVM: PPC: Book3S PR: Fix broken select due to misspelling + - watchdog: imx2_wdt: restore previous timeout after suspend+resume + - afs: Add missing afs_put_cell() + - afs: Need to clear responded flag in addr cursor + - afs: Fix missing cursor clearance + - afs: Fix server list handling + - btrfs: Handle btrfs_set_extent_delalloc failure in fixup worker + - Btrfs: raid56: iterate raid56 internal bio with bio_for_each_segment_all + - kasan: don't emit builtin calls when sanitization is off + - kasan: rework Kconfig settings + - media: dvb_frontend: be sure to init dvb_frontend_handle_ioctl() return + code + - media: dvb-frontends: fix i2c access helpers for KASAN + - media: dt-bindings/media/cec-gpio.txt: mention the CEC/HPD max voltages + - media: ts2020: avoid integer overflows on 32 bit machines + - media: vivid: fix module load error when enabling fb and no_error_inj=1 + - media: cxusb, dib0700: ignore XC2028_I2C_FLUSH + - fs/proc/kcore.c: use probe_kernel_read() instead of memcpy() + - kernel/async.c: revert "async: simplify lowest_in_progress()" + - kernel/relay.c: revert "kernel/relay.c: fix potential memory leak" + - pipe: actually allow root to exceed the pipe buffer limits + - pipe: fix off-by-one error when checking buffer limits + - HID: quirks: Fix keyboard + touchpad on Toshiba Click Mini not working + - Bluetooth: btsdio: Do not bind to non-removable BCM43341 + - Revert "Bluetooth: btusb: fix QCA Rome suspend/resume" + - Bluetooth: btusb: Restore QCA Rome suspend/resume fix with a "rewritten" + version + - ipmi: use dynamic memory for DMI driver override + - signal/openrisc: Fix do_unaligned_access to send the proper signal + - signal/sh: Ensure si_signo is initialized in do_divide_error + - alpha: fix crash if pthread_create races with signal delivery + - alpha: osf_sys.c: fix put_tv32 regression + - alpha: Fix mixed up args in EXC macro in futex operations + - alpha: fix reboot on Avanti platform + - alpha: fix formating of stack content + - xtensa: fix futex_atomic_cmpxchg_inatomic + - EDAC, octeon: Fix an uninitialized variable warning + - genirq: Make legacy autoprobing work again + - pinctrl: intel: Initialize GPIO properly when used through irqchip + - pinctrl: mcp23s08: fix irq setup order + - pinctrl: sx150x: Unregister the pinctrl on release + - pinctrl: sx150x: Register pinctrl before adding the gpiochip + - pinctrl: sx150x: Add a static gpio/pinctrl pin range mapping + - pktcdvd: Fix pkt_setup_dev() error path + - pktcdvd: Fix a recently introduced NULL pointer dereference + - blk-mq: quiesce queue before freeing queue + - clocksource/drivers/stm32: Fix kernel panic with multiple timers + - lib/ubsan.c: s/missaligned/misaligned/ + - lib/ubsan: add type mismatch handler for new GCC/Clang + - objtool: Fix switch-table detection + - [arm64] dts: marvell: add Ethernet aliases + - drm/i915: Avoid PPS HW/SW state mismatch due to rounding + - ACPI: sbshc: remove raw pointer from printk() message (CVE-2018-5750) + - acpi, nfit: fix register dimm error handling + - ovl: force r/o mount when index dir creation fails + - ovl: fix failure to fsync lower dir + - ovl: take mnt_want_write() for work/index dir setup + - ovl: take mnt_want_write() for removing impure xattr + - ovl: hash directory inodes for fsnotify + - devpts: fix error handling in devpts_mntget() + - ftrace: Remove incorrect setting of glob search field + - scsi: core: Ensure that the SCSI error handler gets woken up + - scsi: lpfc: Fix crash after bad bar setup on driver attachment + - scsi: cxlflash: Reset command ioasc + - rcu: Export init_rcu_head() and destroy_rcu_head() to GPL modules + + [ Bastian Blank ] + * Add cloud-amd64 kernel flavour. + - Support Microsoft Azure. + - Support Amazon EC2. + - Support Google Compute Engine. + * Enable NUMA_BALANCING_DEFAULT_ENABLED, enabled by all others. + * Enable INET_ESP_OFFLOAD, INET6_ESP_OFFLOAD, IPV6_SEG6_LWTUNNEL, + IPV6_SEG6_HMAC, NF_LOG_NETDEV, IP_SET_HASH_IPMAC, NET_ACT_SAMPLE, + IPVTAP, VIRTIO_MMIO, CRYPTO_RSA, CRYPTO_DH, CRYPTO_ECDH. + * x86: Enable SCHED_MC_PRIO, HYPERV_VSOCKETS. + * Enable NVME_MULTIPATH, NVME_FC, NVME_TARGET_FC, move nvme module into + scsi-modules installer udeb. + * Switch to SLUB as kernel allocator. (Closes: #862718) + - Enable SLUB_DEBUG, SLAB_FREELIST_HARDENED except on armel/marvell. + (Closes: #883069) + * Fix building of liblockdep. + + [ Uwe Kleine-König ] + * [arm64] enable I2C_PXA for espressobin (Closes: #886983) + + [ Ben Hutchings ] + * Enable CGROUP_BPF (except for armel) (Closes: #872560) + * usb: Enable USBIP_CORE, USBIP_VHCI_HCD, USBIP_HOST, USBIP_VUDC as + modules on all architectures (Closes: #888042) + * [x86] Rewrite "Make x32 syscall support conditional on a kernel parameter" + to use a static key + + [ Salvatore Bonaccorso ] + * (Temporarily) disable armel kernel image build. + The armel/marvell kernel size is growing to large and the compressed + image is over the limit. + Given the armel architecture will most likely not be part of Buster, + disable the image build. + Cf. https://lists.debian.org/debian-kernel/2018/01/msg00278.html + * Set ABI to 1 + + -- Salvatore Bonaccorso Sun, 18 Feb 2018 09:36:49 +0100 + +linux (4.15~rc8-1~exp1) experimental; urgency=medium + + * New upstream release candidate + - RDS: Heap OOB write in rds_message_alloc_sgs() (CVE-2018-5332) + - RDS: null pointer dereference in rds_atomic_free_op (CVE-2018-5333) + - loop: fix concurrent lo_open/lo_release (CVE-2018-5344) + + [ Ben Hutchings ] + * [arm64] Update "add kernel config option to lock down when in Secure Boot + mode" for 4.15 + * efi: Enable LOCK_DOWN_IN_EFI_SECURE_BOOT, replacing + EFI_SECURE_BOOT_LOCK_DOWN + * iio: Enable AD5446 as module, replacing TI_DAC7512 + + -- Ben Hutchings Mon, 15 Jan 2018 04:43:14 +0000 + +linux (4.15~rc5-1~exp1) experimental; urgency=medium + + * New upstream release candidate + + [ Riku Voipio ] + * [arm64] udeb: add multifunction devices + * [arm64] udeb: add mvebu comphy for armada 8K + + [ Ben Hutchings ] + * aufs: Update support patchset to aufs4.x-rcN-20171218 + * lockdown: Update patchset to 2017-11-10 version + * lockdown: Update calls to kernel_is_locked_down() in "mtd: Disable slram and + phram when locked down" + * cpupower: Move library to multiarch directory + * [rt] Disable until it is updated for 4.15 or later + * linux-kbuild: Add objtool + + -- Ben Hutchings Wed, 27 Dec 2017 02:48:14 +0000 + +linux (4.14.17-1) unstable; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.14.14 + - dm bufio: fix shrinker scans when (nr_to_scan < retain_target) + - can: gs_usb: fix return value of the "set_bittiming" callback + - IB/srpt: Disable RDMA access by the initiator + - IB/srpt: Fix ACL lookup during login + - [mips*] Validate PR_SET_FP_MODE prctl(2) requests against the ABI of the + task + - [mips*] Factor out NT_PRFPREG regset access helpers + - [mips*] Guard against any partial write attempt with PTRACE_SETREGSET + - [mips*] Consistently handle buffer counter with PTRACE_SETREGSET + - [mips*] Fix an FCSR access API regression with NT_PRFPREG and MSA + - [mips*] Also verify sizeof `elf_fpreg_t' with PTRACE_SETREGSET + - [mips*] Disallow outsized PTRACE_SETREGSET NT_PRFPREG regset accesses + - cgroup: fix css_task_iter crash on CSS_TASK_ITER_PROC (Closes: #888954) + - [x86] kvm: vmx: Scrub hardware GPRs at VM-exit (partial mitigation of + CVE-2017-5715, CVE-2017-5753) + - [x86] platform: wmi: Call acpi_wmi_init() later + - iw_cxgb4: only call the cq comp_handler when the cq is armed + - iw_cxgb4: atomically flush the qp + - iw_cxgb4: only clear the ARMED bit if a notification is needed + - iw_cxgb4: reflect the original WR opcode in drain cqes + - iw_cxgb4: when flushing, complete all wrs in a chain + - [x86] acpi: Handle SCI interrupts above legacy space gracefully + - ALSA: pcm: Remove incorrect snd_BUG_ON() usages + - ALSA: pcm: Workaround for weird PulseAudio behavior on rewind error + - ALSA: pcm: Add missing error checks in OSS emulation plugin builder + - ALSA: pcm: Abort properly at pending signal in OSS read/write loops + - ALSA: pcm: Allow aborting mutex lock at OSS read/write loops + - ALSA: aloop: Release cable upon open error path + - ALSA: aloop: Fix inconsistent format due to incomplete rule + - ALSA: aloop: Fix racy hw constraints adjustment + - [x86] acpi: Reduce code duplication in mp_override_legacy_irq() + - 8021q: fix a memory leak for VLAN 0 device + - ip6_tunnel: disable dst caching if tunnel is dual-stack + - net: core: fix module type in sock_diag_bind + - RDS: Heap OOB write in rds_message_alloc_sgs() (CVE-2018-5332) + - RDS: null pointer dereference in rds_atomic_free_op (CVE-2018-5333) + - net: fec: restore dev_id in the cases of probe error + - net: fec: defer probe if regulator is not ready + - net: fec: free/restore resource in related probe error pathes + - sctp: do not retransmit upon FragNeeded if PMTU discovery is disabled + - sctp: fix the handling of ICMP Frag Needed for too small MTUs + - [arm64, armhf] net: stmmac: enable EEE in MII, GMII or RGMII only + - ipv6: fix possible mem leaks in ipv6_make_skb() + - net/sched: Fix update of lastuse in act modules implementing + stats_update + - ipv6: sr: fix TLVs not being copied using setsockopt + - sfp: fix sfp-bus oops when removing socket/upstream + - membarrier: Disable preemption when calling smp_call_function_many() + - crypto: algapi - fix NULL dereference in crypto_remove_spawns() + - rbd: reacquire lock should update lock owner client id + - rbd: set max_segments to USHRT_MAX + - iwlwifi: pcie: fix DMA memory mapping / unmapping + - [x86] microcode/intel: Extend BDW late-loading with a revision check + - [x86] KVM: Add memory barrier on vmcs field lookup + - [powerpc*] KVM: Book3S PR: Fix WIMG handling under pHyp + - [powerpc*] KVM: Book3S HV: Drop prepare_done from struct kvm_resize_hpt + - [powerpc*] KVM: Book3S HV: Fix use after free in case of multiple resize + requests + - [powerpc*] KVM: Book3S HV: Always flush TLB in kvmppc_alloc_reset_hpt() + - [x86] drm/vmwgfx: Don't cache framebuffer maps + - [x86] drm/vmwgfx: Potential off by one in vmw_view_add() + - [x86] drm/i915/gvt: Clear the shadow page table entry after post-sync + - [x86] drm/i915: Whitelist SLICE_COMMON_ECO_CHICKEN1 on Geminilake. + - [x86] drm/i915: Move init_clock_gating() back to where it was + - [x86] drm/i915: Fix init_clock_gating for resume + - bpf: prevent out-of-bounds speculation (partial mitigation of + CVE-2017-5753) + - bpf, array: fix overflow in max_entries and undefined behavior in + index_mask + - bpf: arsh is not supported in 32 bit alu thus reject it + - [arm64, armhf] usb: misc: usb3503: make sure reset is low for at least + 100us + - USB: fix usbmon BUG trigger + - USB: UDC core: fix double-free in usb_add_gadget_udc_release + - usbip: remove kernel addresses from usb device and urb debug msgs + - usbip: fix vudc_rx: harden CMD_SUBMIT path to handle malicious input + - usbip: vudc_tx: fix v_send_ret_submit() vulnerability to null xfer + buffer + - staging: android: ashmem: fix a race condition in ASHMEM_SET_SIZE ioctl + (CVE-2017-13216) + - mux: core: fix double get_device() + - kdump: write correct address of mem_section into vmcoreinfo + - apparmor: fix ptrace label match when matching stacked labels + - [x86] pti: Unbreak EFI old_memmap + - [x86] Documentation: Add PTI description + - [x86] cpufeatures: Add X86_BUG_SPECTRE_V[12] + - sysfs/cpu: Add vulnerability folder + - [x86] cpu: Implement CPU vulnerabilites sysfs functions + - [x86] tboot: Unbreak tboot with PTI enabled + - [x86] mm/pti: Remove dead logic in pti_user_pagetable_walk*() + - [x86] cpu/AMD: Make LFENCE a serializing instruction + - [x86] cpu/AMD: Use LFENCE_RDTSC in preference to MFENCE_RDTSC + - [x86] alternatives: Fix optimize_nops() checking + - [x86] pti: Make unpoison of pgd for trusted boot work for real + - [x86] retpoline: Add initial retpoline support (partial mitigation of + CVE-2017-5715) + - [x86] spectre: Add boot time option to select Spectre v2 mitigation + - [x86] retpoline/crypto: Convert crypto assembler indirect jumps + - [x86] retpoline/entry: Convert entry assembler indirect jumps + - [x86] retpoline/ftrace: Convert ftrace assembler indirect jumps + - [x86] retpoline/hyperv: Convert assembler indirect jumps + - [x86] retpoline/xen: Convert Xen hypercall indirect jumps + - [x86] retpoline/checksum32: Convert assembler indirect jumps + - [x86] retpoline/irq32: Convert assembler indirect jumps + - [x86] retpoline: Fill return stack buffer on vmexit + - [x86] pti: Fix !PCID and sanitize defines + - [x86] perf: Disable intel_bts when PTI + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.14.15 + - tools/objtool/Makefile: don't assume sync-check.sh is executable + - objtool: Fix seg fault with clang-compiled objects + - objtool: Fix Clang enum conversion warning + - objtool: Fix seg fault caused by missing parameter + - [powerpc*] pseries: Add H_GET_CPU_CHARACTERISTICS flags & wrapper + - [powerpc*] 64: Add macros for annotating the destination of rfid/hrfid + - [powerpc*] 64s: Simple RFI macro conversions + - [powerpc*] 64: Convert the syscall exit path to use RFI_TO_USER/KERNEL + - [powerpc*] 64: Convert fast_exception_return to use RFI_TO_USER/KERNEL + - [powerpc*] 64s: Convert slb_miss_common to use RFI_TO_USER/KERNEL + - [powerpc*] 64s: Add support for RFI flush of L1-D cache + - [powerpc*] 64s: Support disabling RFI flush with no_rfi_flush and nopti + - [powerpc*] pseries: Query hypervisor for RFI flush settings + - [powerpc*] powernv: Check device-tree for RFI flush settings + - futex: Avoid violating the 10th rule of futex + - futex: Prevent overflow by strengthen input validation (CVE-2018-6927) + - ALSA: seq: Make ioctls race-free (CVE-2018-1000004) + - ALSA: pcm: Remove yet superfluous WARN_ON() + - ALSA: hda - Apply headphone noise quirk for another Dell XPS 13 variant + - ALSA: hda - Apply the existing quirk to iMac 14,1 + - IB/hfi1: Prevent a NULL dereference + - RDMA/mlx5: Fix out-of-bound access while querying AH + - timers: Unconditionally check deferrable base + - af_key: fix buffer overread in verify_address_len() + - af_key: fix buffer overread in parse_exthdrs() + - iser-target: Fix possible use-after-free in connection establishment + error + - delayacct: Account blkio completion on the correct task + - objtool: Fix seg fault with gold linker + - [armhf] mmc: sdhci-esdhc-imx: Fix i.MX53 eSDHCv3 clock + - [x86] kasan: Panic if there is not enough memory to boot + - [x86] retpoline: Fill RSB on context switch for affected CPUs + - [x86] retpoline: Add LFENCE to the retpoline/RSB filling RSB macros + - objtool: Improve error message for bad file argument + - [x86] cpufeature: Move processor tracing out of scattered features + - [x86] intel_rdt/cqm: Prevent use after free + - [x86] mm/pkeys: Fix fill_sig_info_pkey + - [x86] idt: Mark IDT tables __initconst + - [x86] tsc: Future-proof native_calibrate_tsc() + - [x86] tsc: Fix erroneous TSC rate on Skylake Xeon + - pipe: avoid round_pipe_size() nr_pages overflow on 32-bit + - [x86] apic/vector: Fix off by one in error path + - [x86] mm: Clean up register saving in the __enc_copy() assembly code + - [x86] mm: Use a struct to reduce parameters for SME PGD mapping + - [x86] mm: Centralize PMD flags in sme_encrypt_kernel() + - [x86] mm: Prepare sme_encrypt_kernel() for PAGE aligned encryption + - [armhf] OMAP3: hwmod_data: add missing module_offs for MMC3 + - [x86] mm: Encrypt the initrd earlier for BSP microcode update + - Input: ALPS - fix multi-touch decoding on SS4 plus touchpads + - Input: synaptics-rmi4 - prevent UAF reported by KASAN + - [armhf] Input: twl6040-vibra - fix child-node lookup + - [armhf] Input: twl4030-vibra - fix sibling-node lookup + - tracing: Fix converting enum's from the map in trace_event_eval_update() + - phy: work around 'phys' references to usb-nop-xceiv devices + - [arm64] dts: marvell: armada-cp110: Fix clock resources for various node + - [armhf] sunxi_defconfig: Enable CMA + - [armel] dts: kirkwood: fix pin-muxing of MPP7 on OpenBlocks A7 + - can: peak: fix potential bug in packet fragmentation + - can: af_can: can_rcv(): replace WARN_ONCE by pr_warn_once + - can: af_can: canfd_rcv(): replace WARN_ONCE by pr_warn_once + - i2c: core-smbus: prevent stack corruption on read I2C_BLOCK_DATA + - proc: fix coredump vs read /proc/*/stat race + - libata: apply MAX_SEC_1024 to all LITEON EP1 series devices + - workqueue: avoid hard lockups in show_workqueue_state() + - [x86] drm/vmwgfx: fix memory corruption with legacy/sou connectors + - dm btree: fix serious bug in btree_split_beneath() + - dm thin metadata: THIN_MAX_CONCURRENT_LOCKS should be 6 + - dm integrity: don't store cipher request on the stack + - dm crypt: fix crash by adding missing check for auth key size + - dm crypt: wipe kernel key copy after IV initialization + - dm crypt: fix error return code in crypt_ctr() + - [x86] x86: Use __nostackprotect for sme_encrypt_kernel + - [alpha] PCI: Fix noname IRQ level detection + - [mips*] CM: Drop WARN_ON(vp != 0) + - [arm*] KVM: Check pagesize when allocating a hugepage at Stage 2 + - [arm64] KVM: Fix SMCCC handling of unimplemented SMC/HVC calls + - [x86] mce: Make machine check speculation protected + - retpoline: Introduce start/end markers of indirect thunk + - [x86] kprobes: Blacklist indirect thunk functions for kprobes + - [x86] kprobes: Disable optimizing on the function jumps to indirect + thunk + - [x86] retpoline: Optimize inline assembler for vmexit_fill_RSB + - [x86] mm: Rework wbinvd, hlt operation in stop_this_cpu() + - mm, page_vma_mapped: Drop faulty pointer arithmetics in check_pte() + - [arm64, armhf] net: mvpp2: do not disable GMAC padding + - [mips]: AR7: ensure the port type's FCR value is used + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.14.16 + - mm, page_alloc: fix potential false positive in __zone_watermark_ok + - xfrm: Fix a race in the xdst pcpu cache. + - Input: xpad - add support for PDP Xbox One controllers + - Input: trackpoint - force 3 buttons if 0 button is reported + - Input: trackpoint - only expose supported controls for Elan, ALPS and + NXP + - Btrfs: fix stale entries in readdir + - [s390x] KVM: add proper locking for CMMA migration bitmap + - [arm*] net: bpf: avoid 'bx' instruction on non-Thumb capable CPUs + - [arm*] net: bpf: fix tail call jumps + - [arm*] net: bpf: fix stack alignment + - [arm*] net: bpf: move stack documentation + - [arm*] net: bpf: correct stack layout documentation + - [arm*] net: bpf: fix register saving + - [arm*] net: bpf: fix LDX instructions + - [arm*] net: bpf: clarify tail_call index + - [arm64,armhf] drm/vc4: Fix NULL pointer dereference in + vc4_save_hang_state() + - net: Allow neigh contructor functions ability to modify the primary_key + - ipv4: Make neigh lookup keys for loopback/point-to-point devices be + INADDR_ANY + - dccp: don't restart ccid2_hc_tx_rto_expire() if sk in closed state + - ipv6: Fix getsockopt() for sockets with default IPV6_AUTOFLOWLABEL + - ipv6: fix udpv6 sendmsg crash caused by too small MTU + - ipv6: ip6_make_skb() needs to clear cork.base.dst + - lan78xx: Fix failure in USB Full Speed + - net: igmp: fix source address check for IGMPv3 reports + - net: qdisc_pkt_len_init() should be more robust + - net: tcp: close sock if net namespace is exiting + - net/tls: Fix inverted error codes to avoid endless loop + - net: vrf: Add support for sends to local broadcast address + - pppoe: take ->needed_headroom of lower device into account on xmit + - r8169: fix memory corruption on retrieval of hardware statistics. + - sctp: do not allow the v4 socket to bind a v4mapped v6 address + - sctp: return error if the asoc has been peeled off in + sctp_wait_for_sndbuf + - tipc: fix a memory leak in tipc_nl_node_get_link() + - {net,ib}/mlx5: Don't disable local loopback multicast traffic when + needed + - net/mlx5: Fix get vector affinity helper function + - ppp: unlock all_ppp_mutex before registering device + - be2net: restore properly promisc mode after queues reconfiguration + - ip6_gre: init dev->mtu and dev->hard_header_len correctly + - gso: validate gso_type in GSO handlers + - tun: fix a memory leak for tfile->tx_array + - flow_dissector: properly cap thoff field + - sctp: reinit stream if stream outcnt has been change by sinit in sendmsg + - netlink: extack needs to be reset each time through loop + - net/mlx5e: Fix fixpoint divide exception in mlx5e_am_stats_compare + - nfp: use the correct index for link speed table + - netlink: reset extack earlier in netlink_rcv_skb + - net/tls: Only attach to sockets in ESTABLISHED state + - tls: fix sw_ctx leak + - tls: return -EBUSY if crypto_info is already set + - tls: reset crypto_info when do_tls_setsockopt_tx fails + - net: ipv4: Make "ip route get" match iif lo rules again. + - vmxnet3: repair memory leak + - perf/x86/amd/power: Do not load AMD power module on !AMD platforms + - [x86] microcode/intel: Extend BDW late-loading further with LLC size + check + - [x86] microcode: Fix again accessing initrd after having been freed + - [x86] mm/64: Fix vmapped stack syncing on very-large-memory 4-level + systems + - hrtimer: Reset hrtimer cpu base proper on CPU hotplug + - bpf: introduce BPF_JIT_ALWAYS_ON config + - bpf: fix divides by zero + - bpf: fix 32-bit divide by zero + - bpf: reject stores into ctx via st and xadd + - [arm64] bpf: fix stack_depth tracking in combination with tail calls + - cpufreq: governor: Ensure sufficiently large sampling intervals + - nfsd: auth: Fix gid sorting when rootsquash enabled (CVE-2018-1000028) + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.14.17 + - futex: Fix OWNER_DEAD fixup + - loop: fix concurrent lo_open/lo_release (CVE-2018-5344) + - [x86] KVM: Fix CPUID function for word 6 (80000001_ECX) + - gpio: Fix kernel stack leak to userspace + - ALSA: hda - Reduce the suspend time consumption for ALC256 + - crypto: ecdh - fix typo in KPP dependency of CRYPTO_ECDH + - [x86] crypto: aesni - handle zero length dst buffer + - [x86] crypto: aesni - fix typo in generic_gcmaes_decrypt + - crypto: gcm - add GCM IV size constant + - [x86] crypto: aesni - Use GCM IV size constant + - [x86] crypto: aesni - add wrapper for generic gcm(aes) + - [x86] crypto: aesni - Fix out-of-bounds access of the data buffer in + generic-gcm-aesni + - [x86] crypto: aesni - Fix out-of-bounds access of the AAD buffer in + generic-gcm-aesni + - [arm64] crypto: inside-secure - fix hash when length is a multiple of a + block + - [arm64] crypto: inside-secure - avoid unmapping DMA memory that was not + mapped + - crypto: sha3-generic - fixes for alignment and big endian operation + - crypto: af_alg - whitelist mask and type + - HID: wacom: EKR: ensure devres groups at higher indexes are released + - HID: wacom: Fix reporting of touch toggle (WACOM_HID_WD_MUTE_DEVICE) + events + - igb: Free IRQs when device is hotplugged + - ima/policy: fix parsing of fsuuid + - scsi: aacraid: Fix udev inquiry race condition + - scsi: aacraid: Fix hang in kdump + - VFS: Handle lazytime in do_mount() + - [arm64,armhf] drm/vc4: Account for interrupts in flight + - btrfs: Fix transaction abort during failure in btrfs_rm_dev_item + - Btrfs: bail out gracefully rather than BUG_ON + - cpupowerutils: bench - Fix cpu online check + - cpupower : Fix cpupower working when cpu0 is offline + - [x86] KVM: nVMX/nSVM: Don't intercept #UD when running L2 + - [x86] KVM: emulator: Return to user-mode on L1 CPL=0 emulation failure + - [x86] KVM: Don't re-execute instruction when not passing CR2 value + - [x86] KVM: Fix operand/address-size during instruction decoding + - [x86] KVM: nVMX: Fix mmu context after VMLAUNCH/VMRESUME failure + - [x86] KVM: fix em_fxstor() sleeping while in atomic + - [x86] KVM: ioapic: Fix level-triggered EOI and IOAPIC reconfigure race + - [x86] KVM: ioapic: Clear Remote IRR when entry is switched to + edge-triggered + - [x86] KVM: ioapic: Preserve read-only values in the redirection table + - [x86] KVM: nVMX: Fix vmx_check_nested_events() return value in case an + event was reinjected to L2 + - nvme-fabrics: introduce init command check for a queue that is not alive + - nvme-fc: check if queue is ready in queue_rq + - nvme-loop: check if queue is ready in queue_rq + - nvme-pci: disable APST on Samsung SSD 960 EVO + ASUS PRIME B350M-A + - nvme-pci: avoid hmb desc array idx out-of-bound when hmmaxd set. + - nvmet-fc: correct ref counting error when deferred rcv used + - [s390x] topology: fix compile error in file arch/s390/kernel/smp.c + - [s390x] zcrypt: Fix wrong comparison leading to strange load balancing + - ACPI / bus: Leave modalias empty for devices which are not present + - null_blk: fix dev->badblocks leak + - [s390x] fix alloc_pgste check in init_new_context again + - rxrpc: The mutex lock returned by rxrpc_accept_call() needs releasing + - rxrpc: Provide a different lockdep key for call->user_mutex for kernel + calls + - rxrpc: Fix service endpoint expiry + - bcache: check return value of register_shrinker + - drm/amdgpu: Fix SDMA load/unload sequence on HWS disabled mode + - [x86] drm/amdkfd: Fix SDMA ring buffer size calculation + - [x86] drm/amdkfd: Fix SDMA oversubsription handling + - uapi: fix linux/kfd_ioctl.h userspace compilation errors + - nvme-rdma: don't complete requests before a send work request has + completed + - openvswitch: fix the incorrect flow action alloc size + - [armhf] drm/rockchip: dw-mipi-dsi: fix possible un-balanced runtime PM + enable + - mac80211: use QoS NDP for AP probing + - mac80211: fix the update of path metric for RANN frame + - btrfs: fix deadlock when writing out space cache + - sctp: only allow the asoc reset when the asoc outq is empty + - sctp: avoid flushing unsent queue when doing asoc reset + - sctp: set sender next_tsn for the old result with ctsn_ack_point plus 1 + - reiserfs: remove unneeded i_version bump + - [x86] KVM: Fix softlockup when get the current kvmclock + - [x86] KVM: VMX: Fix rflags cache during vCPU reset + - Btrfs: fix list_add corruption and soft lockups in fsync + - KVM: Let KVM_SET_SIGNAL_MASK work as advertised + - xfs: always free inline data before resetting inode fork during ifree + - xfs: log recovery should replay deferred ops in order + - xen-netfront: remove warning when unloading module + - nfsd: CLOSE SHOULD return the invalid special stateid for NFSv4.x (x>0) + - nfsd: Ensure we check stateid validity in the seqid operation checks + - grace: replace BUG_ON by WARN_ONCE in exit_net hook + - nfsd: check for use of the closed special stateid + - race of lockd inetaddr notifiers vs nlmsvc_rqst change + - lockd: fix "list_add double add" caused by legacy signal interface + - quota: propagate error from __dquot_initialize + - [arm64,armhf] net: mvpp2: fix the txq_init error path + - [arm64] net: phy: marvell10g: fix the PHY id mask + - bnxt_en: Fix an error handling path in 'bnxt_get_module_eeprom()' + - Btrfs: incremental send, fix wrong unlink path after renaming file + - nvme-pci: fix NULL pointer dereference in nvme_free_host_mem() + - xfs: fortify xfs_alloc_buftarg error handling + - drm/amdgpu: don't try to move pinned BOs + - quota: Check for register_shrinker() failure. + - SUNRPC: Allow connect to return EHOSTUNREACH + - kmemleak: add scheduling point to kmemleak_scan() + - [armhf] drm/omap: Fix error handling path in 'omap_dmm_probe()' + - [armhf] drm/omap: displays: panel-dpi: add backlight dependency + - xfs: ubsan fixes + - xfs: Properly retry failed dquot items in case of error during buffer + writeback + - perf/core: Fix memory leak triggered by perf --namespace + - scsi: aacraid: Prevent crash in case of free interrupt during scsi EH + path + - scsi: ufs: ufshcd: fix potential NULL pointer dereference in + ufshcd_config_vreg + - iwlwifi: mvm: fix the TX queue hang timeout for MONITOR vif type + - iwlwifi: fix access to prph when transport is stopped + - [arm*] dts: NSP: Disable AHCI controller for HR NSP boards + - [arm*] ARM: dts: NSP: Fix PPI interrupt types + - media: usbtv: add a new usbid + - [x86] xen: Support early interrupts in xen pv guests + - usb: gadget: don't dereference g until after it has been null checked + - staging: rtl8188eu: Fix incorrect response to SIOCGIWESSID + - [arm64,armhf] drm/vc4: Move IRQ enable to PM path + - [x86] KVM: emulate #UD while in guest mode + - [x86] staging: lustre: separate a connection destroy from free struct + kib_conn + - tty: fix data race between tty_init_dev and flush of buf + - USB: serial: pl2303: new device id for Chilitag + - USB: cdc-acm: Do not log urb submission errors on disconnect + - CDC-ACM: apply quirk for card reader + - USB: serial: io_edgeport: fix possible sleep-in-atomic + - usbip: prevent bind loops on devices attached to vhci_hcd + - usbip: list: don't list devices attached to vhci_hcd + - USB: serial: simple: add Motorola Tetra driver + - usb: f_fs: Prevent gadget unbind if it is already unbound + - usb: uas: unconditionally bring back host after reset + - usb/gadget: Fix "high bandwidth" check in usb_gadget_ep_match_desc() + - [x86] mei: me: allow runtime pm for platform with D0i3 + - serial: 8250_of: fix return code when probe function fails to get reset + - serial: 8250_uniphier: fix error return code in uniphier_uart_probe() + - [armhf] serial: imx: Only wakeup via RTSDEN bit if the system has + RTS/CTS + - [armhf] spi: imx: do not access registers while clocks disabled + - iio: adc: stm32: fix scan of multiple channels with DMA + - iio: chemical: ccs811: Fix output of IIO_CONCENTRATION channels + - test_firmware: fix missing unlock on error in + config_num_requests_store() + - Input: synaptics-rmi4 - unmask F03 interrupts when port is opened + - Input: synaptics-rmi4 - do not delete interrupt memory too early + - [x86] efi: Clarify that reset attack mitigation needs appropriate + userspace + + [ Salvatore Bonaccorso ] + * [rt] Update to 4.14.15-rt11 + * [rt] Update to 4.14.15-rt13 + * crypto: ecc - Fix NULL pointer deref. on no default_rng (Closes: #886556) + * mac80211: Avoid ABI change in 4.14.17 + * rxrpc: Avoid ABI change in 4.14.17 + + [ Ben Hutchings ] + * bpf: Avoid ABI change in 4.14.14 + * usbip: Reduce USBIP_VHCI_HC_PORTS to 15, the maximum allowed for SuperSpeed + hubs (Closes: #878866) + * [x86] Add versioned build-dependency on gcc-7 for retpoline support + * [x86] linux-compiler-gcc-7-x86: Add versioned dependency on gcc-7 for + retpoline support + * linux-compiler-gcc-7-{arm,s390,x86}: Remove specific (and wrong) compiler + version from description (Closes: #883363) + * [x86] linux-headers: Depend on updated linux-compiler-gcc-7-x86 + + [ Riku Voipio ] + * [arm64] build in reset drivers + * [arm64] enable COMMON_CLK_HI655X so wifi and bluetooth work on Hikey + + -- Salvatore Bonaccorso Wed, 14 Feb 2018 06:56:06 +0100 + +linux (4.14.13-1) unstable; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.14.13 + - [x86] mm: Set MODULES_END to 0xffffffffff000000 + - [x86] mm: Map cpu_entry_area at the same place on 4/5 level + - [x86] kaslr: Fix the vaddr_end mess + - [x86] events/intel/ds: Use the proper cache flush method for mapping ds + buffers + - [x86] alternatives: Add missing '\n' at end of ALTERNATIVE inline asm + - [x86] pti: Rename BUG_CPU_INSECURE to BUG_CPU_MELTDOWN + - kernel/acct.c: fix the acct->needcheck check in check_free_space() + - mm/mprotect: add a cond_resched() inside change_pmd_range() + - mm/sparse.c: wrong allocation for mem_section + - userfaultfd: clear the vma->vm_userfaultfd_ctx if UFFD_EVENT_FORK fails + - btrfs: fix refcount_t usage when deleting btrfs_delayed_nodes + - efi/capsule-loader: Reinstate virtual capsule mapping + - [sparc*] crypto: n2 - cure use after free + - crypto: chacha20poly1305 - validate the digest size + - crypto: pcrypt - fix freeing pcrypt instances + - crypto: chelsio - select CRYPTO_GF128MUL + - [x86] drm/i915: Disable DC states around GMBUS on GLK + - [x86] drm/i915: Apply Display WA #1183 on skl, kbl, and cfl + - fscache: Fix the default for fscache_maybe_release_page() + - [x86] CPU: Avoid unnecessary IPIs in arch_freq_get_on_cpu() + - [x86] CPU: Always show current CPU frequency in /proc/cpuinfo + - kernel/signal.c: protect the traced SIGNAL_UNKILLABLE tasks from SIGKILL + - kernel/signal.c: protect the SIGNAL_UNKILLABLE tasks from + !sig_kernel_only() signals + - kernel/signal.c: remove the no longer needed SIGNAL_UNKILLABLE check in + complete_signal() + - [arm64] iommu/arm-smmu-v3: Don't free page table ops twice + - [arm64] iommu/arm-smmu-v3: Cope with duplicated Stream IDs + - [powerpc* ]mm: Fix SEGV on mapped region to return SEGV_ACCERR + - Input: elantech - add new icbody type 15 + - [x86] microcode/AMD: Add support for fam17h microcode loading + - apparmor: fix regression in mount mediation when feature set is pinned + - [hppa/parisc] Fix alignment of pa_tlb_lock in assembly on 32-bit SMP + kernel + - [hppa/parisc] qemu idle sleep support + - mtd: nand: pxa3xx: Fix READOOB implementation + - [s390x] KVM: fix cmma migration for multiple memory slots + - [s390x] KVM: prevent buffer overrun on memory hotplug during migration + + [ Salvatore Bonaccorso ] + * libsas: Disable asynchronous aborts for SATA devices + * drm/nouveau/disp/gf119: add missing drive vfunc ptr (Closes: #880660) + + [ Riku Voipio ] + * [arm64] disable CONFIG_HW_RANDOM_OMAP until the IRQ storm bug is fixed + + [ Ben Hutchings ] + * abiupdate.py: Add support for security mirrors + * Fix dependencies related to objtool (Closes: #886474): + - linux-headers: Add versioned dependency on linux-kbuild + - Revert "objtool: Fix CONFIG_STACK_VALIDATION=y warning for out-of-tree + modules" + + -- Ben Hutchings Sun, 14 Jan 2018 19:45:05 +0000 + +linux (4.14.12-2) unstable; urgency=medium + + [ Ben Hutchings ] + * linux-kbuild: Add objtool + * linux-headers: Add symlink to linux-kbuild tools directory for objtool + + [ Salvatore Bonaccorso ] + * linux-headers: Add symlink to linux-kbuild tools directory for objtool in + architecture-specific headers package. + Thanks to Luca Boccassi (Closes: #886366) + + -- Salvatore Bonaccorso Sat, 06 Jan 2018 09:08:42 +0100 + +linux (4.14.12-1) unstable; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.14.8 + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.14.9 + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.14.10 + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.14.11 + - x86/cpufeatures: Add X86_BUG_CPU_INSECURE + - x86/mm/pti: Disable global pages if PAGE_TABLE_ISOLATION=y + - x86/mm/pti: Prepare the x86/entry assembly code for entry/exit CR3 + switching + - x86/mm/pti: Add infrastructure for page table isolation + - x86/pti: Add the pti= cmdline option and documentation + - x86/mm/pti: Add mapping helper functions + - x86/mm/pti: Allow NX poison to be set in p4d/pgd + - x86/mm/pti: Allocate a separate user PGD + - x86/mm/pti: Populate user PGD + - x86/mm/pti: Add functions to clone kernel PMDs + - x86/mm/pti: Force entry through trampoline when PTI active + - x86/mm/pti: Share cpu_entry_area with user space page tables + - x86/entry: Align entry text section to PMD boundary + - x86/mm/pti: Share entry text PMD + - x86/mm/pti: Map ESPFIX into user space + - x86/cpu_entry_area: Add debugstore entries to cpu_entry_area + - x86/events/intel/ds: Map debug buffers in cpu_entry_area + - x86/mm/64: Make a full PGD-entry size hole in the memory map + - x86/pti: Put the LDT in its own PGD if PTI is on + - x86/pti: Map the vsyscall page if needed + - x86/mm: Allow flushing for future ASID switches + - x86/mm: Abstract switching CR3 + - x86/mm: Use/Fix PCID to optimize user/kernel switches + - x86/mm: Optimize RESTORE_CR3 + - x86/mm: Use INVPCID for __native_flush_tlb_single() + - x86/mm: Clarify the whole ASID/kernel PCID/user PCID naming + - x86/dumpstack: Indicate in Oops whether PTI is configured and enabled + - x86/mm/pti: Add Kconfig + - net: Fix double free and memory corruption in get_net_ns_by_id() + (CVE-2017-15129) + * [amd64] Implement Kernel Page Table Isolation (KPTI, aka KAISER) + (CVE-2017-5754) + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.14.12 + - exec: Weaken dumpability for secureexec + - capabilities: fix buffer overread on very short xattr + - x86/cpu, x86/pti: Do not enable PTI on AMD processors + - x86/pti: Make sure the user/kernel PTEs match + - x86/dumpstack: Fix partial register dumps + - x86/dumpstack: Print registers for first stack frame + - x86/pti: Switch to kernel CR3 at early in entry_SYSCALL_compat() + - x86/process: Define cpu_tss_rw in same section as declaration + + [ Ben Hutchings ] + * e1000e: Fix e1000_check_for_copper_link_ich8lan return value. + (Closes: #885348) + + [ Vagrant Cascadian ] + * [arm64] Backport patch from linux-next to support SMP on tegra210 + systems. + + [ Salvatore Bonaccorso ] + * [rt] Update to 4.14.8-rt9 + * Bump ABI to 3 + * Revert "scsi: libsas: allow async aborts" + Fixes "Oops: NULL pointer dereference - RIP: + isci_task_abort_task+0x30/0x3e0 [isci]" (Closes: #882414) + * x86/tlb: Drop the _GPL from the cpu_tlbstate export + + -- Salvatore Bonaccorso Fri, 05 Jan 2018 21:20:26 +0100 + +linux (4.14.7-1) unstable; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.14.3 + - [s390x] fix transactional execution control register handling + - [s390x] noexec: execute kexec datamover without DAT + - [s390x] runtime instrumention: fix possible memory corruption + - [s390x] guarded storage: fix possible memory corruption + - [s390x] disassembler: add missing end marker for e7 table + - [s390x] disassembler: increase show_code buffer size + - ACPI / PM: Fix acpi_pm_notifier_lock vs flush_workqueue() deadlock + - ACPI / EC: Fix regression related to triggering source of EC event + handling + - cpufreq: schedutil: Reset cached_raw_freq when not in sync with next_freq + - serdev: fix registration of second slave + - sched: Make resched_cpu() unconditional + - lib/mpi: call cond_resched() from mpi_powm() loop + - [x86] boot: Fix boot failure when SMP MP-table is based at 0 + - [x86] decoder: Add new TEST instruction pattern + - [amd64] entry: Fix entry_SYSCALL_64_after_hwframe() IRQ tracing + - [x86] perf: intel: Hide TSX events when RTM is not supported + - [arm64] Implement arch-specific pte_access_permitted() + - [armhf/armmp-lpae] 8722/1: mm: make STRICT_KERNEL_RWX effective for LPAE + - [armhf/armmp-lpae] 8721/1: mm: dump: check hardware RO bit for LPAE + - uapi: fix linux/tls.h userspace compilation error + - uapi: fix linux/rxrpc.h userspace compilation errors + - [mips*/4kc-malta] cmpxchg64() and HAVE_VIRT_CPU_ACCOUNTING_GEN don't work + for 32-bit SMP + - [armhf,arm64] net: mvneta: fix handling of the Tx descriptor counter + - nbd: wait uninterruptible for the dead timeout + - nbd: don't start req until after the dead connection logic + - PM / OPP: Add missing of_node_put(np) + - PCI/ASPM: Account for downstream device's Port Common_Mode_Restore_Time + - PCI/ASPM: Use correct capability pointer to program LTR_L1.2_THRESHOLD + - [x86] PCI: hv: Use effective affinity mask + - [arm64] PCI: Set Cavium ACS capability quirk flags to assert RR/CR/SV/UF + - [arm64] PCI: Apply Cavium ThunderX ACS quirk to more Root Ports + - dm integrity: allow unaligned bv_offset + - dm cache: fix race condition in the writeback mode overwrite_bio + optimisation + - dm crypt: allow unaligned bv_offset + - dm zoned: ignore last smaller runt zone + - dm mpath: remove annoying message of 'blk_get_request() returned -11' + - dm bufio: fix integer overflow when limiting maximum cache size + - ovl: Put upperdentry if ovl_check_origin() fails + - dm: allocate struct mapped_device with kvzalloc + - sched/rt: Simplify the IPI based RT balancing logic + - dm: fix race between dm_get_from_kobject() and __dm_destroy() + - dm: discard support requires all targets in a table support discards + - [mips*] Fix odd fp register warnings with MIPS64r2 + - [mips*/4kc-malta] Fix MIPS64 FP save/restore on 32-bit kernels + - [mips*] dts: remove bogus bcm96358nb4ser.dtb from dtb-y entry + - [mips*] Fix an n32 core file generation regset support regression + - [mips*] math-emu: Fix final emulation phase for certain instructions + - rt2x00usb: mark device removed when get ENOENT usb error + - mm/z3fold.c: use kref to prevent page free/compact race + - autofs: don't fail mount for transient error + - nilfs2: fix race condition that causes file system corruption + - fscrypt: lock mutex before checking for bounce page pool + - eCryptfs: use after free in ecryptfs_release_messaging() + - libceph: don't WARN() if user tries to add invalid key + - bcache: check ca->alloc_thread initialized before wake up it + - fs: guard_bio_eod() needs to consider partitions + - fanotify: fix fsnotify_prepare_user_wait() failure + - isofs: fix timestamps beyond 2027 + - btrfs: change how we decide to commit transactions during flushing + - f2fs: expose some sectors to user in inline data or dentry case + - NFS: Fix typo in nomigration mount option + - NFS: Revert "NFS: Move the flock open mode check into nfs_flock()" + - nfs: Fix ugly referral attributes + - NFS: Avoid RCU usage in tracepoints + - NFS: revalidate "." etc correctly on "open". + - nfsd: deal with revoked delegations appropriately + - rtlwifi: rtl8192ee: Fix memory leak when loading firmware + - rtlwifi: fix uninitialized rtlhal->last_suspend_sec time + - iwlwifi: fix firmware names for 9000 and A000 series hw + - md: fix deadlock error in recent patch. + - md: don't check MD_SB_CHANGE_CLEAN in md_allow_write + - Bluetooth: btqcomsmd: Add support for BD address setup + - md/bitmap: revert a patch + - fsnotify: clean up fsnotify_prepare/finish_user_wait() + - fsnotify: pin both inode and vfsmount mark + - fsnotify: fix pinning group in fsnotify_prepare_user_wait() + - ata: fixes kernel crash while tracing ata_eh_link_autopsy event + - ext4: fix interaction between i_size, fallocate, and delalloc after a + crash + - ext4: prevent data corruption with inline data + DAX + - ext4: prevent data corruption with journaling + DAX + - ALSA: pcm: update tstamp only if audio_tstamp changed + - ALSA: usb-audio: Add sanity checks to FE parser + - ALSA: usb-audio: Fix potential out-of-bound access at parsing SU + - ALSA: usb-audio: Add sanity checks in v2 clock parsers + - ALSA: timer: Remove kernel warning at compat ioctl error paths + - ALSA: hda/realtek - Fix ALC275 no sound issue + - ALSA: hda: Fix too short HDMI/DP chmap reporting + - ALSA: hda - Fix yet remaining issue with vmaster 0dB initialization + - ALSA: hda/realtek - Fix ALC700 family no sound issue + - [x86] mfd: lpc_ich: Avoton/Rangeley uses SPI_BYT method + - fix a page leak in vhost_scsi_iov_to_sgl() error recovery + - 9p: Fix missing commas in mount options + - fs/9p: Compare qid.path in v9fs_test_inode + - net/9p: Switch to wait_event_killable() + - scsi: qla2xxx: Suppress a kernel complaint in qla_init_base_qpair() + - scsi: sd_zbc: Fix sd_zbc_read_zoned_characteristics() + - scsi: lpfc: fix pci hot plug crash in timer management routines + - scsi: lpfc: fix pci hot plug crash in list_add call + - scsi: lpfc: Fix crash receiving ELS while detaching driver + - scsi: lpfc: Fix FCP hba_wqidx assignment + - scsi: lpfc: Fix oops if nvmet_fc_register_targetport fails + - iscsi-target: Make TASK_REASSIGN use proper se_cmd->cmd_kref + - iscsi-target: Fix non-immediate TMR reference leak + - target: fix null pointer regression in core_tmr_drain_tmr_list + - target: fix buffer offset in core_scsi3_pri_read_full_status + - target: Fix QUEUE_FULL + SCSI task attribute handling + - target: Fix caw_sem leak in transport_generic_request_failure + - target: Fix quiese during transport_write_pending_qf endless loop + - target: Avoid early CMD_T_PRE_EXECUTE failures during ABORT_TASK + - mtd: Avoid probe failures when mtd->dbg.dfs_dir is invalid + - mtd: nand: atmel: Actually use the PM ops + - mtd: nand: omap2: Fix subpage write + - mtd: nand: Fix writing mtdoops to nand flash. + - mtd: nand: mtk: fix infinite ECC decode IRQ issue + - p54: don't unregister leds when they are not initialized + - block: Fix a race between blk_cleanup_queue() and timeout handling + - raid1: prevent freeze_array/wait_all_barriers deadlock + - genirq: Track whether the trigger type has been set + - [armhf,arm64] irqchip/gic-v3: Fix ppi-partitions lookup + - lockd: double unregister of inetaddr notifiers + - [powerpc*] KVM: Book3S HV: Don't call real-mode XICS hypercall handlers + if not enabled + - [x86] KVM: nVMX: set IDTR and GDTR limits when loading L1 host state + - [x86] KVM: SVM: obey guest PAT + - [x86] kvm: vmx: Reinstate support for CPUs without virtual NMI + (Closes: #884482) + - dax: fix PMD faults on zero-length files + - dax: fix general protection fault in dax_alloc_inode + - SUNRPC: Fix tracepoint storage issues with svc_recv and svc_rqst_status + - [armhf] clk: ti: dra7-atl-clock: fix child-node lookups + - libnvdimm, dimm: clear 'locked' status on successful DIMM enable + - libnvdimm, pfn: make 'resource' attribute only readable by root + - libnvdimm, namespace: fix label initialization to use valid seq numbers + - libnvdimm, region : make 'resource' attribute only readable by root + - libnvdimm, namespace: make 'resource' attribute only readable by root + - svcrdma: Preserve CB send buffer across retransmits + - IB/srpt: Do not accept invalid initiator port names + - IB/cm: Fix memory corruption in handling CM request + - IB/hfi1: Fix incorrect available receive user context count + - IB/srp: Avoid that a cable pull can trigger a kernel crash + - IB/core: Avoid crash on pkey enforcement failed in received MADs + - IB/core: Only maintain real QPs in the security lists + - NFC: fix device-allocation error return + - spi-nor: intel-spi: Fix broken software sequencing codes + - fm10k,i40e,i40evf,igb,igbvf,ixgbe,ixgbevf: Use smp_rmb rather than + read_barrier_depends + - [hppa] Fix validity check of pointer size argument in new CAS + implementation + - [powerpc*] Fix boot on BOOK3S_32 with CONFIG_STRICT_KERNEL_RWX + - [powerpc*] mm/radix: Fix crashes on Power9 DD1 with radix MMU and + STRICT_RWX + - [powerpc*] perf/imc: Use cpu_to_node() not topology_physical_package_id() + - [powerpc*] signal: Properly handle return value from uprobe_deny_signal() + - [powerpc*] 64s: Fix masking of SRR1 bits on instruction fault + - [powerpc*] 64s/radix: Fix 128TB-512TB virtual address boundary case + allocation + - [powerpc*] 64s/hash: Fix 512T hint detection to use >= 128T + - [powerpc*] 64s/hash: Fix 128TB-512TB virtual address boundary case + allocation + - [powerpc*] 64s/hash: Fix fork() with 512TB process address space + - [powerpc*] 64s/hash: Allow MAP_FIXED allocations to cross 128TB boundary + - media: Don't do DMA on stack for firmware upload in the AS102 driver + - media: rc: check for integer overflow + - media: rc: nec decoder should not send both repeat and keycode + - media: v4l2-ctrl: Fix flags field on Control events + - [arm64] media: venus: fix wrong size on dma_free + - [arm64] media: venus: venc: fix bytesused v4l2_plane field + - [arm64] media: venus: reimplement decoder stop command + - [arm64] dts: meson-gxl: Add alternate ARM Trusted Firmware reserved + memory zone + - iwlwifi: fix wrong struct for a000 device + - iwlwifi: fix PCI IDs and configuration mapping for 9000 series + - iwlwifi: mvm: support version 7 of the SCAN_REQ_UMAC FW command + - e1000e: Fix error path in link detection + - e1000e: Fix return value test + - e1000e: Separate signaling for link check/link up + - e1000e: Avoid receiver overrun interrupt bursts + - e1000e: fix buffer overrun while the I219 is processing DMA transactions + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.14.4 + - [x86]: platform: hp-wmi: Fix tablet mode detection for convertibles + - mm, memory_hotplug: do not back off draining pcp free pages from kworker + context + - mm, oom_reaper: gather each vma to prevent leaking TLB entry + - [armhf,arm64] mm/cma: fix alloc_contig_range ret code/potential leak + - mm: fix device-dax pud write-faults triggered by get_user_pages() + - mm, hugetlbfs: introduce ->split() to vm_operations_struct + - device-dax: implement ->split() to catch invalid munmap attempts + - mm: introduce get_user_pages_longterm + - mm: fail get_vaddr_frames() for filesystem-dax mappings + - v4l2: disable filesystem-dax mapping support + - IB/core: disable memory registration of filesystem-dax vmas + - exec: avoid RLIMIT_STACK races with prlimit() + - mm/madvise.c: fix madvise() infinite loop under special circumstances + - mm: migrate: fix an incorrect call of prep_transhuge_page() + - mm, memcg: fix mem_cgroup_swapout() for THPs + - fs/fat/inode.c: fix sb_rdonly() change + - autofs: revert "autofs: take more care to not update last_used on path + walk" + - autofs: revert "autofs: fix AT_NO_AUTOMOUNT not being honored" + - mm/hugetlb: fix NULL-pointer dereference on 5-level paging machine + - btrfs: clear space cache inode generation always + - nfsd: Fix stateid races between OPEN and CLOSE + - nfsd: Fix another OPEN stateid race + - nfsd: fix panic in posix_unblock_lock called from nfs4_laundromat + - crypto: algif_aead - skip SGL entries with NULL page + - crypto: af_alg - remove locking in async callback + - crypto: skcipher - Fix skcipher_walk_aead_common + - lockd: lost rollback of set_grace_period() in lockd_down_net() + - [s390x] revert ELF_ET_DYN_BASE base changes + - [armhf] drm: omapdrm: Fix DPI on platforms using the DSI VDDS + - [armhf] omapdrm: hdmi4: Correct the SoC revision matching + - [arm64] module-plts: factor out PLT generation code for ftrace + - [arm64] ftrace: emit ftrace-mod.o contents through code + - [powerpc*] powernv: Fix kexec crashes caused by tlbie tracing + - [powerpc*] kexec: Fix kexec/kdump in P9 guest kernels + - [x86] KVM: pvclock: Handle first-time write to pvclock-page contains + random junk + - [x86] KVM: Exit to user-mode on #UD intercept when emulator requires + - [x86] KVM: inject exceptions produced by x86_decode_insn + - [x86] KVM: lapic: Split out x2apic ldr calculation + - [x86] KVM: lapic: Fixup LDR on load in x2apic + - mmc: sdhci: Avoid swiotlb buffer being full + - mmc: block: Fix missing blk_put_request() + - mmc: block: Check return value of blk_get_request() + - mmc: core: Do not leave the block driver in a suspended state + - mmc: block: Ensure that debugfs files are removed + - mmc: core: prepend 0x to pre_eol_info entry in sysfs + - mmc: core: prepend 0x to OCR entry in sysfs + - ACPI / EC: Fix regression related to PM ops support in ECDT device + - eeprom: at24: fix reading from 24MAC402/24MAC602 + - eeprom: at24: correctly set the size for at24mac402 + - eeprom: at24: check at24_read/write arguments + - [alpha,x86] i2c: i801: Fix Failed to allocate irq -2147483648 error + - bcache: Fix building error on MIPS + - bcache: only permit to recovery read error when cache device is clean + - bcache: recover data from backing when data is clean + - hwmon: (jc42) optionally try to disable the SMBUS timeout + - nvme-pci: add quirk for delay before CHK RDY for WDC SN200 + - Revert "drm/radeon: dont switch vt on suspend" + - drm/amdgpu: potential uninitialized variable in amdgpu_vce_ring_parse_cs() + - drm/amdgpu: Potential uninitialized variable in + amdgpu_vm_update_directories() + - drm/amdgpu: correct reference clock value on vega10 + - drm/amdgpu: fix error handling in amdgpu_bo_do_create + - drm/amdgpu: Properly allocate VM invalidate eng v2 + - drm/amdgpu: Remove check which is not valid for certain VBIOS + - drm/ttm: fix ttm_bo_cleanup_refs_or_queue once more + - dma-buf: make reservation_object_copy_fences rcu save + - drm/amdgpu: reserve root PD while releasing it + - drm/ttm: Always and only destroy bo->ttm_resv in ttm_bo_release_list + - drm/vblank: Fix flip event vblank count + - drm/vblank: Tune drm_crtc_accurate_vblank_count() WARN down to a debug + - drm/tilcdc: Precalculate total frametime in tilcdc_crtc_set_mode() + - drm/radeon: fix atombios on big endian + - drm/panel: simple: Add missing panel_simple_unprepare() calls + - [arm64] drm/hisilicon: Ensure LDI regs are properly configured. + - drm/ttm: once more fix ttm_buffer_object_transfer + - drm/amd/pp: fix typecast error in powerplay. + - drm/fb_helper: Disable all crtc's when initial setup fails. + - drm/edid: Don't send non-zero YQ in AVI infoframe for HDMI 1.x sinks + - drm/amdgpu: move UVD/VCE and VCN structure out from union + - drm/amdgpu: Set adev->vcn.irq.num_types for VCN + - IB/core: Do not warn on lid conversions for OPA + - IB/hfi1: Do not warn on lid conversions for OPA + - e1000e: fix the use of magic numbers for buffer overrun issue + - md: forbid a RAID5 from having both a bitmap and a journal. + - [x86] drm/i915: Fix false-positive assert_rpm_wakelock_held in + i915_pmic_bus_access_notifier v2 + - [x86] drm/i915: Re-register PMIC bus access notifier on runtime resume + - [x86] drm/i915/fbdev: Serialise early hotplug events with async fbdev + config + - [x86] drm/i915/gvt: Correct ADDR_4K/2M/1G_MASK definition + - [x86] drm/i915: Don't try indexed reads to alternate slave addresses + - [x86] drm/i915: Prevent zero length "index" write + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.14.5 + - drm/amdgpu: Use unsigned ring indices in amdgpu_queue_mgr_map + - [s390x] runtime instrumentation: simplify task exit handling + - usbip: fix usbip attach to find a port that matches the requested speed + - usbip: Fix USB device hang due to wrong enabling of scatter-gather + - uas: Always apply US_FL_NO_ATA_1X quirk to Seagate devices + - usb: quirks: Add no-lpm quirk for KY-688 USB 3.1 Type-C Hub + - serial: 8250_early: Only set divisor if valid clk & baud + - [mips*] Add custom serial.h with BASE_BAUD override for generic kernel + - ima: fix hash algorithm initialization + - [s390x] vfio-ccw: Do not attempt to free no-op, test and tic cda. + - PM / Domains: Fix genpd to deal with drivers returning 1 from ->prepare() + - [s390x] pci: do not require AIS facility + - serial: 8250_fintek: Fix rs485 disablement on invalid ioctl() + - staging: rtl8188eu: avoid a null dereference on pmlmepriv + - [arm64] mmc: sdhci-msm: fix issue with power irq + - hwmon: (pmbus/core) Prevent unintentional setting of page to 0xFF + - perf/core: Fix __perf_read_group_add() locking + - [armhf] PCI: dra7xx: Create functional dependency between PCIe and PHY + - [x86] intel_rdt: Initialize bitmask of shareable resource if CDP enabled + - [x86] intel_rdt: Fix potential deadlock during resctrl mount + - serial: 8250: Preserve DLD[7:4] for PORT_XR17V35X + - kprobes: Use synchronize_rcu_tasks() for optprobe with CONFIG_PREEMPT=y + - [x86] entry: Use SYSCALL_DEFINE() macros for sys_modify_ldt() + - [armhf,arm64] clocksource/drivers/arm_arch_timer: Validate CNTFRQ after + enabling frame + - [x86] EDAC, sb_edac: Fix missing break in switch + - [arm64] cpuidle: Correct driver unregistration if init fails + - usb: xhci: Return error when host is dead in xhci_disable_slot() + - [armel,armhf] sysrq : fix Show Regs call trace on ARM + - [sh4] serial: sh-sci: suppress warning for ports without dma channels + - [armhf] serial: imx: Update cached mctrl value when changing RTS + - [x86] kprobes: Disable preemption in ftrace-based jprobes + - [x86] locking/refcounts, asm: Use unique .text section for refcount + exceptions + - [s390x] ptrace: fix guarded storage regset handling + - perf tools: Fix leaking rec_argv in error cases + - mm, x86/mm: Fix performance regression in get_user_pages_fast() + - iio: adc: ti-ads1015: add 10% to conversion wait time + - iio: multiplexer: add NULL check on devm_kzalloc() and devm_kmemdup() + return values + - [x86] locking/refcounts, asm: Enable CONFIG_ARCH_HAS_REFCOUNT + - [powerpc*] jprobes: Disable preemption when triggered through ftrace + - [powerpc*] kprobes: Disable preemption before invoking probe handler for + optprobes + - usb: hub: Cycle HUB power when initialization fails + - [armhf,arm64] USB: ulpi: fix bus-node lookup + - xhci: Don't show incorrect WARN message about events for empty rings + - usb: xhci: fix panic in xhci_free_virt_devices_depth_first + - USB: core: Add type-specific length check of BOS descriptors + - USB: usbfs: Filter flags passed in from user space + - usb: host: fix incorrect updating of offset + - locking/refcounts: Do not force refcount_t usage as GPL-only export + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.14.6 + - usb: gadget: core: Fix ->udc_set_speed() speed handling + - serdev: ttyport: add missing receive_buf sanity checks + - serdev: ttyport: fix NULL-deref on hangup + - serdev: ttyport: fix tty locking in close + - usb: f_fs: Force Reserved1=1 in OS_DESC_EXT_COMPAT + - can: peak/pci: fix potential bug when probe() fails + - can: kvaser_usb: free buf in error paths + - can: kvaser_usb: Fix comparison bug in kvaser_usb_read_bulk_callback() + - can: kvaser_usb: ratelimit errors if incomplete messages are received + - can: kvaser_usb: cancel urb on -EPIPE and -EPROTO + - can: ems_usb: cancel urb on -EPIPE and -EPROTO + - can: esd_usb2: cancel urb on -EPIPE and -EPROTO + - can: usb_8dev: cancel urb on -EPIPE and -EPROTO + - can: peak/pcie_fd: fix potential bug in restarting tx queue + - virtio: release virtio index when fail to device_register + - [arm64] pinctrl: armada-37xx: Fix direction_output() callback behavior + - [x86] Drivers: hv: vmbus: Fix a rescind issue + - [x86] hv: kvp: Avoid reading past allocated blocks from KVP file + - firmware: vpd: Destroy vpd sections in remove function + - firmware: vpd: Tie firmware kobject to device lifetime + - firmware: vpd: Fix platform driver and device registration/unregistration + - scsi: dma-mapping: always provide dma_get_cache_alignment + - scsi: use dma_get_cache_alignment() as minimum DMA alignment + - scsi: libsas: align sata_device's rps_resp on a cacheline + - efi: Move some sysfs files to be read-only by root + - efi/esrt: Use memunmap() instead of kfree() to free the remapping + - ASN.1: fix out-of-bounds read when parsing indefinite length item + - ASN.1: check for error from ASN1_OP_END__ACT actions + - KEYS: add missing permission check for request_key() destination + (CVE-2017-17807) + - KEYS: reject NULL restriction string when type is specified + - X.509: reject invalid BIT STRING for subjectPublicKey + - X.509: fix comparisons of ->pkey_algo + - [x86] idt: Load idt early in start_secondary + - [x86] PCI: Make broadcom_postcore_init() check acpi_disabled + - [x86] KVM: fix APIC page invalidation + - btrfs: fix missing error return in btrfs_drop_snapshot + - btrfs: handle errors while updating refcounts in update_ref_for_cow + - ALSA: pcm: prevent UAF in snd_pcm_info + - ALSA: seq: Remove spurious WARN_ON() at timer check + - ALSA: usb-audio: Fix out-of-bound error + - ALSA: usb-audio: Add check return value for usb_string() + - [x86] iommu/vt-d: Fix scatterlist offset handling + - smp/hotplug: Move step CPUHP_AP_SMPCFD_DYING to the correct place + - [s390x] always save and restore all registers on context switch + - [s390x] mm: fix off-by-one bug in 5-level page table handling + - [s390x] fix compat system call table + - [s390x] KVM: Fix skey emulation permission check + - [powerpc*] Revert "powerpc: Do not call ppc_md.panic in fadump panic + notifier" + - [powerpc*] 64s: Initialize ISAv3 MMU registers before setting partition + table + - iwlwifi: mvm: mark MIC stripped MPDUs + - iwlwifi: mvm: don't use transmit queue hang detection when it is not + possible + - iwlwifi: mvm: flush queue before deleting ROC + - iwlwifi: mvm: fix packet injection + - iwlwifi: mvm: enable RX offloading with TKIP and WEP + - brcmfmac: change driver unbind order of the sdio function devices + - md/r5cache: move mddev_lock() out of r5c_journal_mode_set() + - [armhf] drm/bridge: analogix dp: Fix runtime PM state in get_modes() + callback + - [armhf] drm/exynos: gem: Drop NONCONTIG flag for buffers allocated + without IOMMU + - [x86] drm/i915: Fix vblank timestamp/frame counter jumps on gen2 + - media: dvb: i2c transfers over usb cannot be done from stack + - media: rc: sir_ir: detect presence of port + - media: rc: partial revert of "media: rc: per-protocol repeat period" + - [arm64] KVM: fix VTTBR_BADDR_MASK BUG_ON off-by-one + - [armhf] KVM: Fix VTTBR_BADDR_MASK BUG_ON off-by-one + - [x86] KVM: VMX: remove I/O port 0x80 bypass on Intel hosts + (CVE-2017-1000407) + - [armhf,arm64] KVM: Fix broken GICH_ELRSR big endian conversion + - [armhf,arm64] KVM: vgic-irqfd: Fix MSI entry allocation + - [armhf,arm64] KVM: vgic: Preserve the revious read from the pending table + - [armhf,arm64] KVM: vgic-its: Check result of allocation before use + - [arm64] fpsimd: Prevent registers leaking from dead tasks + - [arm64] SW PAN: Point saved ttbr0 at the zero page when switching to + init_mm + - [arm64] SW PAN: Update saved ttbr0 value on enter_lazy_tlb + - [armhf] Revert "ARM: dts: imx53: add srtc node" + - [armhf] bus: arm-cci: Fix use of smp_processor_id() in preemptible context + - IB/core: Only enforce security for InfiniBand + - [armel,armhf] BUG if jumping to usermode address in kernel mode + - [armel,armhf] avoid faulting on qemu + - [arm64] irqchip/qcom: Fix u32 comparison with value less than zero + - [powerpc*] perf: Fix pmu_count to count only nest imc pmus + - apparmor: fix leak of null profile name if profile allocation fails + - mac80211_hwsim: Fix memory leak in hwsim_new_radio_nl() + - gre6: use log_ecn_error module parameter in ip6_tnl_rcv() + - route: also update fnhe_genid when updating a route cache + - route: update fnhe_expires for redirect when the fnhe exists + - rsi: fix memory leak on buf and usb_reg_buf + - pipe: match pipe_max_size data type with procfs + - lib/genalloc.c: make the avail variable an atomic_long_t + - NFS: Fix a typo in nfs_rename() + - sunrpc: Fix rpc_task_begin trace point + - nfp: inherit the max_mtu from the PF netdev + - nfp: fix flower offload metadata flag usage + - xfs: fix forgotten rcu read unlock when skipping inode reclaim + - block: wake up all tasks blocked in get_request() + - [sparc64] mm: set fields in deferred pages + - zsmalloc: calling zs_map_object() from irq is a bug + - slub: fix sysfs duplicate filename creation when slub_debug=O + - sctp: do not free asoc when it is already dead in sctp_sendmsg + - sctp: use the right sk after waking up from wait_buf sleep + - fcntl: don't leak fd reference when fixup_compat_flock fails + - geneve: fix fill_info when link down + - bpf: fix lockdep splat + - [arm64] clk: qcom: common: fix legacy board-clock registration + - [arm64] clk: hi3660: fix incorrect uart3 clock freqency + - atm: horizon: Fix irq release error + - xfrm: Copy policy family in clone_policy + - f2fs: fix to clear FI_NO_PREALLOC + - bnxt_re: changing the ip address shouldn't affect new connections + - IB/mlx4: Increase maximal message size under UD QP + - IB/mlx5: Assign send CQ and recv CQ of UMR QP + - afs: Fix total-length calculation for multiple-page send + - afs: Connect up the CB.ProbeUuid + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.14.7 + - net: realtek: r8169: implement set_link_ksettings() + - [s390x] qeth: fix early exit from error path + - tipc: fix memory leak in tipc_accept_from_sock() + - vhost: fix skb leak in handle_rx() + - rds: Fix NULL pointer dereference in __rds_rdma_map + - sit: update frag_off info + - tcp: add tcp_v4_fill_cb()/tcp_v4_restore_cb() + - packet: fix crash in fanout_demux_rollover() + - net/packet: fix a race in packet_bind() and packet_notifier() + - tcp: remove buggy call to tcp_v6_restore_cb() + - usbnet: fix alignment for frames with no ethernet header + - net: remove hlist_nulls_add_tail_rcu() + - stmmac: reset last TSO segment size after device open + - tcp/dccp: block bh before arming time_wait timer + - [s390x] qeth: build max size GSO skbs on L2 devices + - [s390x] qeth: fix thinko in IPv4 multicast address tracking + - [s390x] qeth: fix GSO throughput regression + - tcp: use IPCB instead of TCP_SKB_CB in inet_exact_dif_match() + - tipc: call tipc_rcv() only if bearer is up in tipc_udp_recv() + - tcp: use current time in tcp_rcv_space_adjust() + - net: sched: cbq: create block for q->link.block + - tap: free skb if flags error + - tcp: when scheduling TLP, time of RTO should account for current ACK + - tun: free skb in early errors + - net: ipv6: Fixup device for anycast routes during copy + - tun: fix rcu_read_lock imbalance in tun_build_skb + - net: accept UFO datagrams from tuntap and packet + - net: openvswitch: datapath: fix data type in queue_gso_packets + - cls_bpf: don't decrement net's refcount when offload fails + - sctp: use right member as the param of list_for_each_entry + - ipmi: Stop timers before cleaning up the module + - usb: gadget: ffs: Forbid usb_ep_alloc_request from sleeping + - fcntl: don't cap l_start and l_end values for F_GETLK64 in compat syscall + - fix kcm_clone() + - [armhf,arm64] KVM: vgic-its: Preserve the revious read from the pending + table + - kbuild: do not call cc-option before KBUILD_CFLAGS initialization + - [powerpc*] powernv/idle: Round up latency and residency values + - ipvlan: fix ipv6 outbound device + - blk-mq: Avoid that request queue removal can trigger list corruption + - nvmet-rdma: update queue list during ib_device removal + - audit: Allow auditd to set pid to 0 to end auditing + - audit: ensure that 'audit=1' actually enables audit for PID 1 + - dm raid: fix panic when attempting to force a raid to sync + - md: free unused memory after bitmap resize + - RDMA/cxgb4: Annotate r2 and stag as __be32 + - [x86] intel_rdt: Fix potential deadlock during resctrl unmount + + [ Salvatore Bonaccorso ] + * Add ABI reference for 4.14.0-1 + * xen/time: do not decrease steal time after live migration on xen + (Closes: #871608) + * crypto: salsa20 - fix blkcipher_walk API usage (CVE-2017-17805) + * crypto: hmac - require that the underlying hash algorithm is unkeyed + (CVE-2017-17806) + + [ Vagrant Cascadian ] + * [armhf, arm64] Backport patches from 4.15.x to support dwmac-sun8i. + + [ Ben Hutchings ] + * [rt] Update to 4.14.6-rt7: + - hrtimer: account for migrated timers + - crypto: mcryptd: protect the per-CPU queue with a lock + - tracing: Update inter-event hist trigger support to v7: + + Rename virtual "$common_timestamp" field to "common_timestamp" + + Fix use-after-free in trigger removal + - mm/slub: close possible memory-leak in kmem_cache_alloc_bulk() + - crypto: limit more FPU-enabled sections + * dccp: CVE-2017-8824: use-after-free in DCCP code + * netfilter: nfnetlink_cthelper: Add missing permission checks + (CVE-2017-17448) + * netlink: Add netns check on taps (CVE-2017-17449) + * netfilter: xt_osf: Add missing permission checks (CVE-2017-17450) + * USB: core: prevent malicious bNumInterfaces overflow (CVE-2017-17558) + * net: ipv4: fix for a race condition in raw_sendmsg (CVE-2017-17712) + * media: dvb-usb-v2: lmedm04: Improve logic checking of warm start + (CVE-2017-16538) + * media: dvb-usb-v2: lmedm04: move ts2020 attach to dm04_lme2510_tuner + (CVE-2017-16538) + * media: hdpvr: Fix an error handling path in hdpvr_probe() (CVE-2017-16644) + * [armhf,arm64,x86] KVM: Fix stack-out-of-bounds read in write_mmio + (CVE-2017-17741) + * bluetooth: Prevent stack info leak from the EFS element. + (CVE-2017-1000410) + * bpf/verifier: Fix multiple security issues (Closes: #883558): + - encapsulate verifier log state into a structure + - move global verifier log into verifier environment + - fix branch pruning logic + - fix bounds calculation on BPF_RSH + - fix incorrect sign extension in check_alu_op() (CVE-2017-16995) + - fix incorrect tracking of register size truncation (CVE-2017-16996) + - fix 32-bit ALU op verification + - fix missing error return in check_stack_boundary() + - force strict alignment checks for stack pointers + - don't prune branches when a scalar is replaced with a pointer + - fix integer overflows + * Bump ABI to 2 + + -- Ben Hutchings Fri, 22 Dec 2017 14:12:23 +0000 + +linux (4.14.2-1) unstable; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.14.1 + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.14.2 + - mm/pagewalk.c: report holes in hugetlb ranges (CVE-2017-16994) + + [ Ben Hutchings ] + * [rt] Update to 4.14-rt1 and reenable (Closes: #882192) + * i40e: Build for 32-bit targets again + - i40e/i40evf: organize and re-number feature flags + - i40e: fix flags declaration + - Revert "i40e: Build for 64-bit targets only" + * aufs: Update support patchset to aufs4.14-20171120 + * [armel] Change configuration to reduce image size (fixes FTBFS): + - Change CONNECTOR from built-in to module, and disable PROC_EVENTS + - Disable INTEGRITY and dependent options + - video: Disable USB_APPLEDISPLAY, BACKLIGHT_CLASS_DEVICE + * apparmor: fix oops in audit_signal_cb hook (regression in 4.14) + * leds: Enable LEDS_BRIGHTNESS_HW_CHANGED (Closes: #872862) + * [rt] Add new signing subkey for Steven Rostedt + * [rt] Update to 4.14.1-rt3 + * Set ABI to 1 + * mmap: Remember the MAP_FIXED flag as VM_FIXED + * [x86] mmap: Add an exception to the stack gap for Hotspot JVM compatibility + (Closes: #865303) + + [ Salvatore Bonaccorso ] + * mm, thp: Do not make page table dirty unconditionally in touch_p[mu]d() + (CVE-2017-1000405) + + -- Ben Hutchings Thu, 30 Nov 2017 12:33:47 +0000 + +linux (4.14-1~exp1) experimental; urgency=medium + + * New upstream release: https://kernelnewbies.org/Linux_4.14 + + [ Ben Hutchings ] + * debian/control: Set Rules-Requires-Root to no + * [armhf] drm: Enable DRM_SUN4I, DRM_SUN4I_HDMI, DRM_SUN4I_BACKEND, + DRM_SUN8I_MIXER as modules; and DRM_SUN4I_HDMI_CEC (Closes: #881570) + * media: dvb-core: always call invoke_release() in fe_free() + * dvb_frontend: don't use-after-free the frontend struct (CVE-2017-16648) + * Set ABI name to trunk + + [ Bastian Blank ] + * Enable CRYPTO_SHA3. + + [ Riku Voipio ] + * [arm64] enable generic server options. + - NUMA, ACPI_NUMA, CRASH_DUMP, VFIO, HOTPLUG_PCI, ACPI_CPPC_CPUFREQ, + MMC_SDHCI_ACPI, PL330_DMA + * [arm64] enable various server platform drivers + - NET_XGENE_V2, EDAC_THUNDERX, MMC_CAVIUM_THUNDER, + GPIO_XLP, I2C_XLP9XX, SPI_XLP, DRM_HISI_HIBMC, HISI_SAS_PCI, + GPIO_WATCHDOG, ARM_SP805_WATCHDOG, ARM_SBSA_WATCHDOG, DW_WATCHDOG + * [arm64] enable support for Marvell arm64 boards + - CRYPTO_DEV_MARVELL_CESA, MARVELL_PHY, MARVELL_10G_PHY, + PHY_MVEBU_CP110_COMPHY, RTC_DRV_MV, RTC_DRV_ARMADA38X, SPI_ARMADA_3700 + ARMADA_THERMAL, HW_RANDOM_OMAP, CRYPTO_DEV_SAFEXCE + * [arm64] 96boards Hikey and Dragonboard support + - PCIE_KIRIN, TEE, OPTEE, SND_I2S_HI6210_I2S, DRM_I2C_ADV7511_AUDIO, + CMA, USB_ISP176, USB_CHIPIDEA_ULPI, USB_DWC3_ULPI, NOP_USB_XCEIV + USB_ULPI, RPMSG_QCOM*, PHY_QCOM*, QCOM_IOMMU, QCOM_CLK*, etc + - SERIAL_DEV_BUS for HiKey bluetooth + * All options as modules when possible + + -- Ben Hutchings Fri, 17 Nov 2017 00:16:15 +0000 + +linux (4.14~rc7-1~exp1) experimental; urgency=medium + + * New upstream release candidate + + [ Ben Hutchings ] + * [mips*] Increase RELOCATION_TABLE_SIZE to 0x00120000 (fixes FTBFS) + * debian/bin/gencontrol.py: Set encoding to UTF-8 globally + * [alpha] udeb: Remove empty fb-modules package (fixes FTBFS) + * [armel] udeb: Remove fbcon from fb-modules package + + [ Uwe Kleine-König ] + * [arm64] add BRCMFMAC_SDIO for wifi on Raspberry Pi 3 (Closes: #877911) + + [ Vagrant Cascadian ] + * Enable SQUASHFS_LZ4 in default config. + + -- Ben Hutchings Mon, 30 Oct 2017 18:31:38 +0000 + +linux (4.14~rc5-1~exp1) experimental; urgency=medium + + * New upstream release candidate + + [ Ben Hutchings ] + * Update kconfig for 4.14: + - [alpha] fbdev: Re-enable FRAMEBUFFER_CONSOLE as built-in + - [armel] fbdev: Explicitly disable FRAMEBUFFER_CONSOLE, as it can no + longer be a module + - [arm64] Re-enable MMC_QCOM_DML + - Change RC_CORE back to being a module + - power/supply: Enable BATTERY_BQ27XXX and BATTERY_BQ27XXX_HDQ as modules, + replacing W1_SLAVE_BQ27000 + * net: Disable IRDA, which will soon be deleted upstream + * [mips*] Increase RELOCATION_TABLE_SIZE to 0x00110000 for all flavours + (fixes FTBFS) + * i40e: Build for 64-bit targets only (fixes FTBFS on hppa) + * Compile with gcc-7 on all architectures + + [ John Paul Adrian Glaubitz ] + * [m68k] udeb: Build ata-modules package, include libata + * [m68k] udeb: Add ide-cd_mod to cdrom-core-modules + * [m68k] udeb: Build ide-core-modules package, include ide-core + * [m68k] udeb: Build ide-modules package, include ide-gd_mod + * [m68k] udeb: Move old IDE drivers from pata-modules to ide-modules: + - buddha, falconide, gayle, macide, q40ide + * [m68k] udeb: Add missing SCSI drivers to scsi-modules: + - a2091, a3000, a4000t, bvme6000_scsi, gvp11, mvme16x_scsi, zorro7xx + * [m68k] Build uncompressed kernel image by default. + + [ Uwe Kleine-König ] + * media: drop explicit setting of DVB_MAX_ADAPTERS to follow upstream default + (Closes: #878846) + + -- Ben Hutchings Tue, 17 Oct 2017 23:37:52 +0100 + +linux (4.14~rc3-1~exp1) experimental; urgency=medium + + * New upstream release candidate + + [ Ben Hutchings ] + * aufs: Update support patchset to aufs4.x-rcN-20171002 + + -- Ben Hutchings Mon, 02 Oct 2017 04:47:08 +0100 + +linux (4.13.13-1) unstable; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.13.11 + - workqueue: replace pool->manager_arb mutex with a flag + - [x86] ALSA: hda/realtek - Add support for ALC236/ALC3204 + - [x86] ALSA: hda - fix headset mic problem for Dell machines with alc236 + - ceph: unlock dangling spinlock in try_flush_caps() + - [powerpc*] KVM: PPC: Fix oops when checking KVM_CAP_PPC_HTM + (CVE-2017-15306) + - [powerpc*] KVM: PPC: Book3S HV: POWER9 more doorbell fixes + - [powerpc*] KVM: PPC: Book3S: Protect kvmppc_gpa_to_ua() with SRCU + - [s390x] kvm: fix detection of guest machine checks + - nbd: handle interrupted sendmsg with a sndtimeo set + - spi: uapi: spidev: add missing ioctl header + - spi: a3700: Return correct value on timeout detection + - spi: bcm-qspi: Fix use after free in bcm_qspi_probe() in error path + - spi: armada-3700: Fix failing commands with quad-SPI + - ovl: add NULL check in ovl_alloc_inode + - ovl: fix EIO from lookup of non-indexed upper + - ovl: handle ENOENT on index lookup + - ovl: do not cleanup unsupported index entries + - fuse: fix READDIRPLUS skipping an entry + - xen/gntdev: avoid out of bounds access in case of partial gntdev_mmap() + - xen: fix booting ballooned down hvm guest + - cifs: Select all required crypto modules + - CIFS: Fix NULL pointer deref on SMB2_tcon() failure + - Input: elan_i2c - add ELAN0611 to the ACPI table + - Input: gtco - fix potential out-of-bound access (CVE-2017-16643) + - Fix encryption labels and lengths for SMB3.1.1 + - SMB3: Validate negotiate request must always be signed + - assoc_array: Fix a buggy node-splitting case (CVE-2017-12193) + - [s390x] scsi: zfcp: fix erp_action use-before-initialize in REC action + trace + - scsi: aacraid: Fix controller initialization failure + - scsi: qla2xxx: Initialize Work element before requesting IRQs + - scsi: sg: Re-fix off by one in sg_fill_request_table() + - [x86] cpu/AMD: Apply the Erratum 688 fix when the BIOS doesn't + - [x86] drm/amd/powerplay: fix uninitialized variable + - [x86] drm/i915/perf: fix perf enable/disable ioctls with 32bits + userspace + - [armhf] can: sun4i: fix loopback mode + - can: kvaser_usb: Correct return value in printout + - can: kvaser_usb: Ignore CMD_FLUSH_QUEUE_REPLY messages + - cfg80211: fix connect/disconnect edge cases + - ipsec: Fix aborted xfrm policy dump crash + - [armhf] regulator: fan53555: fix I2C device ids (Closes: #879768) + - [powerpc*] xive: Fix the size of the cpumask used in + xive_find_target_in_mask() + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.13.12 + - ALSA: timer: Add missing mutex lock for compat ioctls + - ALSA: seq: Fix nested rwsem annotation for lockdep splat + - cifs: check MaxPathNameComponentLength != 0 before using it + (Closes: #880504) + - KEYS: return full count in keyring_read() if buffer is too small + - KEYS: trusted: fix writing past end of buffer in trusted_read() + - KEYS: fix out-of-bounds read during ASN.1 parsing + - ASoC: adau17x1: Workaround for noise bug in ADC + - virtio_blk: Fix an SG_IO regression + - [arm64] ensure __dump_instr() checks addr_limit + - [arm64] KVM: its: Fix missing dynamic allocation check in scan_its_table + - [armhf, arm64] KVM: set right LR register value for 32 bit guest when + inject abort + - [armhf,arm64] kvm: Disable branch profiling in HYP code + - [armhf] dts: mvebu: pl310-cache disable double-linefill + - drm/amdgpu: return -ENOENT from uvd 6.0 early init for harvesting + - drm/amdgpu: allow harvesting check for Polaris VCE + - userfaultfd: hugetlbfs: prevent UFFDIO_COPY to fill beyond the end of + i_size + - ocfs2: fstrim: Fix start offset of first cluster group during fstrim + - fs/hugetlbfs/inode.c: fix hwpoison reserve accounting + - mm, swap: fix race between swap count continuation operations + - [x86] drm/i915: Do not rely on wm preservation for ILK watermarks + - [x86] drm/i915/edp: read edp display control registers unconditionally + - [mips*] bpf: Fix a typo in build_one_insn() + - [mips*] smp-cmp: Use right include for task_struct + - [mips*] SMP: Fix deadlock & online race + - Revert "x86: do not use cpufreq_quick_get() for /proc/cpuinfo "cpu MHz"" + - [powerpc*] kprobes: Dereference function pointers only if the address + does not belong to kernel text + - futex: Fix more put_pi_state() vs. exit_pi_state_list() races + - perf/cgroup: Fix perf cgroup hierarchy support + - [x86] mcelog: Get rid of RCU remnants + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.13.13 + - netfilter: nat: Revert "netfilter: nat: convert nat bysrc hash to + rhashtable" + - netfilter: nft_set_hash: disable fast_ops for 2-len keys (Closes: #880145) + - workqueue: Fix NULL pointer dereference + - crypto: ccm - preserve the IV buffer + - [x86] crypto: sha1-mb - fix panic due to unaligned access + - [x86] crypto: sha256-mb - fix panic due to unaligned access + - KEYS: fix NULL pointer dereference during ASN.1 parsing [ver #2] + - [x86] ACPI / PM: Blacklist Low Power S0 Idle _DSM for Dell XPS13 9360 + - ACPICA: Dispatch active GPEs at init time + - ACPICA: Make it possible to enable runtime GPEs earlier + - ACPI / scan: Enable GPEs before scanning the namespace + - [armel,armhf] 8720/1: ensure dump_instr() checks addr_limit + - ALSA: timer: Limit max instances per timer + - ALSA: usb-audio: support new Amanero Combo384 firmware version + - [x86] ALSA: hda - fix headset mic problem for Dell machines with alc274 + - ALSA: seq: Fix OSS sysex delivery in OSS emulation + - ALSA: seq: Avoid invalid lockdep class warning + - [mips*] Fix CM region target definitions + - [powerpc*] KVM: Book3S HV: Fix exclusion between HPT resizing and other + HPT updates + - Input: elan_i2c - add ELAN060C to the ACPI table + - rbd: use GFP_NOIO for parent stat and data requests + - [x86] drm/vmwgfx: Fix Ubuntu 17.10 Wayland black screen issue + - [armhf] can: sun4i: handle overrun in RX FIFO + - can: peak: Add support for new PCIe/M2 CAN FD interfaces + - [x86] debug: Handle warnings before the notifier chain, to fix KGDB crash + - [x86] smpboot: Make optimization of delay calibration work correctly + - [x86] oprofile/ppro: Do not use __this_cpu*() in preemptible context + + [ Salvatore Bonaccorso ] + * mac80211: accept key reinstall without changing anything (CVE-2017-13080) + * sctp: do not peel off an assoc from one netns to another one + (CVE-2017-15115) + + [ Ben Hutchings ] + * linux-image: Recommend apparmor, as systemd units with an AppArmor + profile will fail without it (Closes: #880441) + * [powerpc*] kvm: Ignore ABI change in 4.13.6 (fixes FTBFS) + * swap: Avoid ABI change in 4.13.12 + * mac80211: use constant time comparison with keys + * mac80211: don't compare TKIP TX MIC key in reinstall prevention + * usb: usbtest: fix NULL pointer dereference (CVE-2017-16532) + * media: cx231xx-cards: fix NULL-deref on missing association descriptor + (CVE-2017-16536) + * media: imon: Fix null-ptr-deref in imon_probe (CVE-2017-16537) + * media: dib0700: fix invalid dvb_detach argument (CVE-2017-16646) + * net: usb: asix: fill null-ptr-deref in asix_suspend (CVE-2017-16647) + * net: cdc_ether: fix divide by 0 on bad descriptors (CVE-2017-16649) + * net: qmi_wwan: fix divide by 0 on bad descriptors (CVE-2017-16650) + * nftables: Enable NFT_RT, NFT_SET_BITMAP, NFT_OBJREF as modules + (Closes: #881931) + * [powerpc*/*64*] drm: Enable DRM_AMDGPU as module (Closes: #881593) + * amdgpu: Enable DRM_AMDGPU_USERPTR on all architectures + * amdgpu: Enable DRM_AMDGPU_SI, CONFIG_DRM_AMDGPU_CIK (Closes: #847570) + * [arm64,x86] net/wireless: Enable RTL8723BS as module (Closes: #881568) + * [arm64] nvmem: Enable NVMEM_SUNXI_SID as module (Closes: #881567) + * [x86] rmi4: Disable RMI4_SMB (Closes: #880471) + * ALSA: timer: Avoid ABI change in 4.13.13 + * netfilter: nat: Avoid ABI change in 4.13.13 + + -- Ben Hutchings Thu, 16 Nov 2017 21:04:10 +0000 + +linux (4.13.10-1) unstable; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.13.5 + - cifs: check rsp for NULL before dereferencing in SMB2_open + - cifs: release cifs root_cred after exit_cifs + - cifs: release auth_key.response for reconnect. + - nvme-pci: fix host memory buffer allocation fallback + - nvme-pci: use appropriate initial chunk size for HMB allocation + - nvme-pci: propagate (some) errors from host memory buffer setup + - dax: remove the pmem_dax_ops->flush abstraction + - dm integrity: do not check integrity for failed read operations + - mmc: block: Fix incorrectly initialized requests + - fs/proc: Report eip/esp in /prod/PID/stat for coredumping + - scsi: scsi_transport_fc: fix NULL pointer dereference in + fc_bsg_job_timeout + - cifs: SMB3: Add support for multidialect negotiate (SMB2.1 and later) + - mac80211: fix VLAN handling with TXQs + - mac80211_hwsim: Use proper TX power + - mac80211: flush hw_roc_start work before cancelling the ROC + - genirq: Make sparse_irq_lock protect what it should protect + - genirq/msi: Fix populating multiple interrupts + - genirq: Fix cpumask check in __irq_startup_managed() + - [powerpc*] KVM: Book3S HV: Hold kvm->lock around call to + kvmppc_update_lpcr + - [powerpc*] KVM: Book3S HV: Fix bug causing host SLB to be restored + incorrectly + - [powerpc*] KVM: PPC: Book3S HV: Don't access XIVE PIPR register using + byte accesses + - tracing: Fix trace_pipe behavior for instance traces + - tracing: Erase irqsoff trace with empty write + - tracing: Remove RCU work arounds from stack tracer + - md/raid5: fix a race condition in stripe batch + - md/raid5: preserve STRIPE_ON_UNPLUG_LIST in break_stripe_batch_list + - scsi: aacraid: Fix 2T+ drives on SmartIOC-2000 + - scsi: aacraid: Add a small delay after IOP reset + - [armhf] drm/exynos: Fix locking in the suspend/resume paths + - [x86] drm/i915/gvt: Fix incorrect PCI BARs reporting + - Revert "drm/i915/bxt: Disable device ready before shutdown command" + - drm/amdgpu: revert tile table update for oland + - drm/radeon: disable hard reset in hibernate for APUs + - crypto: drbg - fix freeing of resources + - security/keys: properly zero out sensitive key material in big_key + - security/keys: rewrite all of big_key crypto + - KEYS: fix writing past end of user-supplied buffer in keyring_read() + - KEYS: prevent creating a different user's keyrings + - [x86] libnvdimm, namespace: fix btt claim class crash + - [powerpc*] eeh: Create PHB PEs after EEH is initialized + - [powerpc*] pseries: Fix parent_dn reference leak in add_dt_node() + - [powerpc*] tm: Flush TM only if CPU has TM feature + - [mips*] Fix perf event init + - [s390x] perf: fix bug when creating per-thread event + - [s390x] mm: make pmdp_invalidate() do invalidation only + - [s390x] mm: fix write access check in gup_huge_pmd() + - PM: core: Fix device_pm_check_callbacks() + - Revert "IB/ipoib: Update broadcast object if PKey value was changed in + index 0" + - cifs: Fix SMB3.1.1 guest authentication to Samba + - cifs: SMB3: Fix endian warning + - cifs: SMB3: Warn user if trying to sign connection that authenticated as + guest + - cifs: SMB: Validate negotiate (to protect against downgrade) even if + signing off + - cifs: SMB3: handle new statx fields + - cifs: SMB3: Don't ignore O_SYNC/O_DSYNC and O_DIRECT flags + - vfs: Return -ENXIO for negative SEEK_HOLE / SEEK_DATA offsets + - libceph: don't allow bidirectional swap of pg-upmap-items + - brd: fix overflow in __brd_direct_access + - gfs2: Fix debugfs glocks dump + - bsg-lib: don't free job in bsg_prepare_job + - iw_cxgb4: drop listen destroy replies if no ep found + - iw_cxgb4: remove the stid on listen create failure + - iw_cxgb4: put ep reference in pass_accept_req() + - rcu: Allow for page faults in NMI handlers + - mmc: sdhci-pci: Fix voltage switch for some Intel host controllers + - extable: Consolidate *kernel_text_address() functions + - extable: Enable RCU if it is not watching in kernel_text_address() + - seccomp: fix the usage of get/put_seccomp_filter() in seccomp_get_filter() + - [arm64] Make sure SPsel is always set + - [arm64] mm: Use READ_ONCE when dereferencing pointer to pte table + - [arm64] fault: Route pte translation faults via do_translation_fault + - [x86] KVM: VMX: extract __pi_post_block + - [x86] KVM: VMX: avoid double list add with VT-d posted interrupts + - [x86] KVM: VMX: simplify and fix vmx_vcpu_pi_load + - [x86] KVM: nVMX: fix HOST_CR3/HOST_CR4 cache + - [x86] kvm: Handle async PF in RCU read-side critical sections + - xfs: validate bdev support for DAX inode flag + - sched/sysctl: Check user input value of sysctl_sched_time_avg + - irq/generic-chip: Don't replace domain's name + - mtd: Fix partition alignment check on multi-erasesize devices + - [armhf] etnaviv: fix submit error path + - [armhf] etnaviv: fix gem object list corruption + - futex: Fix pi_state->owner serialization + - md: fix a race condition for flush request handling + - md: separate request handling + - PCI: Fix race condition with driver_override + - btrfs: fix NULL pointer dereference from free_reloc_roots() + - btrfs: clear ordered flag on cleaning up ordered extents + - btrfs: finish ordered extent cleaning if no progress is found + - btrfs: propagate error to btrfs_cmp_data_prepare caller + - btrfs: prevent to set invalid default subvolid + - [x86] platform: fujitsu-laptop: Don't oops when FUJ02E3 is not presnt + - PM / OPP: Call notifier without holding opp_table->lock + - [x86] mm: Fix fault error path using unsafe vma pointer + - [x86] fpu: Don't let userspace set bogus xcomp_bv (CVE-2017-15537) + - [x86] KVM: VMX: do not change SN bit in vmx_update_pi_irte() + - [x86] KVM: VMX: remove WARN_ON_ONCE in kvm_vcpu_trigger_posted_interrupt + - [x86] KVM: VMX: use cmpxchg64 + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.13.6 + - [armhf,arm64] usb: dwc3: ep0: fix DMA starvation by assigning req->trb on + ep0 + - mlxsw: spectrum: Fix EEPROM access in case of SFP/SFP+ + - net: bonding: Fix transmit load balancing in balance-alb mode if + specified by sysfs + - openvswitch: Fix an error handling path in + 'ovs_nla_init_match_and_action()' + - net: bonding: fix tlb_dynamic_lb default value + - net_sched: gen_estimator: fix scaling error in bytes/packets samples + - net: sched: fix use-after-free in tcf_action_destroy and tcf_del_walker + - sctp: potential read out of bounds in sctp_ulpevent_type_enabled() + - tcp: update skb->skb_mstamp more carefully + - bpf/verifier: reject BPF_ALU64|BPF_END + - tcp: fix data delivery rate + - udpv6: Fix the checksum computation when HW checksum does not apply + - ip6_gre: skb_push ipv6hdr before packing the header in ip6gre_header + - net: phy: Fix mask value write on gmii2rgmii converter speed register + - ip6_tunnel: do not allow loading ip6_tunnel if ipv6 is disabled in cmdline + - net/sched: cls_matchall: fix crash when used with classful qdisc + - 8139too: revisit napi_complete_done() usage + - bpf: do not disable/enable BH in bpf_map_free_id() + - tcp: fastopen: fix on syn-data transmit failure + - [powerpc*] net: emac: Fix napi poll list corruption + - net: ipv6: fix regression of no RTM_DELADDR sent after DAD failure + - packet: hold bind lock when rebinding to fanout hook (CVE-2017-15649) + - net: change skb->mac_header when Generic XDP calls adjust_head + - net_sched: always reset qdisc backlog in qdisc_reset() + - [armhf,arm64] net: stmmac: Cocci spatch "of_table" + - [arm64] net: qcom/emac: specify the correct size when mapping a DMA buffer + - vti: fix use after free in vti_tunnel_xmit/vti6_tnl_xmit + - l2tp: fix race condition in l2tp_tunnel_delete + - tun: bail out from tun_get_user() if the skb is empty + - [armhf,arm64] net: dsa: mv88e6xxx: Allow dsa and cpu ports in multiple + vlans + - [armhf,arm64] net: dsa: Fix network device registration order + - packet: in packet_do_bind, test fanout with bind_lock held (CVE-2017-15649) + - packet: only test po->has_vnet_hdr once in packet_snd + - [armhf,arm64] net: dsa: mv88e6xxx: lock mutex when freeing IRQs + - net: Set sk_prot_creator when cloning sockets to the right proto + - net/mlx5e: IPoIB, Fix access to invalid memory address + - netlink: do not proceed if dump's start() errs + - ip6_gre: ip6gre_tap device should keep dst + - ip6_tunnel: update mtu properly for ARPHRD_ETHER tunnel device in tx path + - IPv4: early demux can return an error code + - tipc: use only positive error codes in messages + - l2tp: fix l2tp_eth module loading + - socket, bpf: fix possible use after free + - net: rtnetlink: fix info leak in RTM_GETSTATS call + - [amd64] bpf: fix bpf_tail_call() x64 JIT + - usb: gadget: core: fix ->udc_set_speed() logic + - USB: gadgetfs: Fix crash caused by inadequate synchronization + - USB: gadgetfs: fix copy_to_user while holding spinlock + - usb: gadget: udc: atmel: set vbus irqflags explicitly + - usb-storage: unusual_devs entry to fix write-access regression for + Seagate external drives + - usb-storage: fix bogus hardware error messages for ATA pass-thru devices + - ALSA: usb-audio: Check out-of-bounds access by corrupted buffer descriptor + - usb: pci-quirks.c: Corrected timeout values used in handshake + - USB: cdc-wdm: ignore -EPIPE from GetEncapsulatedResponse + - USB: dummy-hcd: fix connection failures (wrong speed) + - USB: dummy-hcd: fix infinite-loop resubmission bug + - USB: dummy-hcd: Fix erroneous synchronization change + - USB: devio: Prevent integer overflow in proc_do_submiturb() + - USB: g_mass_storage: Fix deadlock when driver is unbound + - USB: uas: fix bug in handling of alternate settings + - USB: core: harden cdc_parse_cdc_header + - usb: Increase quirk delay for USB devices + - USB: fix out-of-bounds in usb_set_configuration + - usb: xhci: Free the right ring in xhci_add_endpoint() + - xhci: fix finding correct bus_state structure for USB 3.1 hosts + - xhci: fix wrong endpoint ESIT value shown in tracing + - usb: host: xhci-plat: allow sysdev to inherit from ACPI + - xhci: Fix sleeping with spin_lock_irq() held in ASmedia 1042A workaround + - xhci: set missing SuperSpeedPlus Link Protocol bit in roothub descriptor + - [x86] Revert "xhci: Limit USB2 port wake support for AMD Promontory hosts" + - [armhf] iio: adc: twl4030: Fix an error handling path in + 'twl4030_madc_probe()' + - [armhf] iio: adc: twl4030: Disable the vusb3v1 rugulator in the error + handling path of 'twl4030_madc_probe()' + - iio: core: Return error for failed read_reg + - uwb: properly check kthread_run return value + - uwb: ensure that endpoint is interrupt + - ksm: fix unlocked iteration over vmas in cmp_and_merge_page() + - mm, hugetlb, soft_offline: save compound page order before page migration + - mm, oom_reaper: skip mm structs with mmu notifiers + - mm: fix RODATA_TEST failure "rodata_test: test data was not read only" + - mm: avoid marking swap cached page as lazyfree + - mm: fix data corruption caused by lazyfree page + - userfaultfd: non-cooperative: fix fork use after free + - ALSA: compress: Remove unused variable + - Revert "ALSA: echoaudio: purge contradictions between dimension matrix + members and total number of members" + - ALSA: usx2y: Suppress kernel warning at page allocation failures + - [powerpc*] powernv: Increase memory block size to 1GB on radix + - [powerpc*] Fix action argument for cpufeatures-based TLB flush + - percpu: make this_cpu_generic_read() atomic w.r.t. interrupts + - [x86] intel_th: pci: Add Lewisburg PCH support + - driver core: platform: Don't read past the end of "driver_override" buffer + - cgroup: Reinit cgroup_taskset structure before cgroup_migrate_execute() + returns + - [x86] Drivers: hv: fcopy: restore correct transfer length + - [x86] vmbus: don't acquire the mutex in vmbus_hvsock_device_unregister() + - ftrace: Fix kmemleak in unregister_ftrace_graph + - ovl: fix error value printed in ovl_lookup_index() + - ovl: fix dput() of ERR_PTR in ovl_cleanup_index() + - ovl: fix dentry leak in ovl_indexdir_cleanup() + - ovl: fix missing unlock_rename() in ovl_do_copy_up() + - ovl: fix regression caused by exclusive upper/work dir protection + - [arm64] dt marvell: Fix AP806 system controller size + - [arm64] Ensure the instruction emulation is ready for userspace + - HID: rmi: Make sure the HID device is opened on resume + - HID: i2c-hid: allocate hid buffers for real worst case + - HID: wacom: leds: Don't try to control the EKR's read-only LEDs + - HID: wacom: Properly report negative values from Intuos Pro 2 Bluetooth + - HID: wacom: Correct coordinate system of touchring and pen twist + - HID: wacom: generic: Send MSC_SERIAL and ABS_MISC when leaving prox + - HID: wacom: generic: Clear ABS_MISC when tool leaves proximity + - HID: wacom: Always increment hdev refcount within wacom_get_hdev_data + - HID: wacom: bits shifted too much for 9th and 10th buttons + - btrfs: avoid overflow when sector_t is 32 bit + - Btrfs: fix overlap of fs_info::flags values + - dm crypt: reject sector_size feature if device length is not aligned to it + - dm ioctl: fix alignment of event number in the device list + - dm crypt: fix memory leak in crypt_ctr_cipher_old() + - [powerpc*] KVM: Book3S: Fix server always zero from kvmppc_xive_get_xive() + - [x86] kvm: Avoid async PF preempting the kernel incorrectly + - iwlwifi: mvm: use IWL_HCMD_NOCOPY for MCAST_FILTER_CMD + - scsi: sd: Implement blacklist option for WRITE SAME w/ UNMAP + - scsi: sd: Do not override max_sectors_kb sysfs setting + - brcmfmac: setup passive scan if requested by user-space + - [x86] drm/i915: always update ELD connector type after get modes + - [x86] drm/i915/bios: ignore HDMI on port A + - bsg-lib: fix use-after-free under memory-pressure + - nvme-pci: Use PCI bus address for data/queues in CMB + - mmc: core: add driver strength selection when selecting hs400es + - nl80211: Define policy for packet pattern attributes + - [armhf] clk: samsung: exynos4: Enable VPLL and EPLL clocks for + suspend/resume cycle + - udp: perform source validation for mcast early demux + - udp: fix bcast packet reception + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.13.7 + - watchdog: Revert "iTCO_wdt: all versions count down twice" + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.13.8 + - USB: dummy-hcd: Fix deadlock caused by disconnect detection + - [mips*] math-emu: Remove pr_err() calls from fpu_emu() + - [mips*] bpf: Fix uninitialised target compiler error + - [x86] mei: always use domain runtime pm callbacks. + - [armhf] dmaengine: edma: Align the memcpy acnt array size with the + transfer + - [armhf] dmaengine: ti-dma-crossbar: Fix possible race condition with + dma_inuse + - NFS: Fix uninitialized rpc_wait_queue + - nfs/filelayout: fix oops when freeing filelayout segment + - HID: usbhid: fix out-of-bounds bug + - crypto: skcipher - Fix crash on zero-length input + - crypto: shash - Fix zero-length shash ahash digest crash + - [x86] KVM: nVMX: fix guest CR4 loading when emulating L2 to L1 exit + - [x86] pinctrl/amd: Fix build dependency on pinmux code + - [x86] iommu/amd: Finish TLB flush in amd_iommu_unmap() + - device property: Track owner device of device property + - Revert "vmalloc: back off when the current task is killed" + - fs/mpage.c: fix mpage_writepage() for pages with buffers + - ALSA: usb-audio: Kill stray URB at exiting + - ALSA: seq: Fix copy_from_user() call inside lock + - ALSA: caiaq: Fix stray URB at probe error path + - ALSA: line6: Fix NULL dereference at podhd_disconnect() + - ALSA: line6: Fix missing initialization before error path + - ALSA: line6: Fix leftover URB at error-path during probe + - drm/atomic: Unref duplicated drm_atomic_state in + drm_atomic_helper_resume() + - [x86] drm/i915/edp: Get the Panel Power Off timestamp after panel is off + - [x86] drm/i915: Read timings from the correct transcoder in + intel_crtc_mode_get() + - [x86] drm/i915/bios: parse DDI ports also for CHV for HDMI DDC pin and DP + AUX channel + - [x86] drm/i915: Use crtc_state_is_legacy_gamma in intel_color_check + - usb: gadget: configfs: Fix memory leak of interface directory data + - usb: gadget: composite: Fix use-after-free in + usb_composite_overwrite_options + - [arm64] PCI: aardvark: Move to struct pci_host_bridge IRQ mapping + functions + - [armhf,armhf] Revert "PCI: tegra: Do not allocate MSI target memory" + - direct-io: Prevent NULL pointer access in submit_page_section + - fix unbalanced page refcounting in bio_map_user_iov (CVE-2017-12190) + - more bio_map_user_iov() leak fixes + - bio_copy_user_iov(): don't ignore ->iov_offset + - perf script: Add missing separator for "-F ip,brstack" (and brstackoff) + - genirq/cpuhotplug: Enforce affinity setting on startup of managed irqs + - genirq/cpuhotplug: Add sanity check for effective affinity mask + - USB: serial: cp210x: fix partnum regression + - USB: serial: console: fix use-after-free on disconnect + - USB: serial: console: fix use-after-free after failed setup + - RAS/CEC: Use the right length for "cec_disable" + - [x86] alternatives: Fix alt_max_short macro to really be a max() + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.13.9 + - [x86] apic: Silence "FW_BUG TSC_DEADLINE disabled due to Errata" on CPUs + without the feature + - [x86] apic: Silence "FW_BUG TSC_DEADLINE disabled due to Errata" on + hypervisors + - [armhf,arm64] perf pmu: Unbreak perf record for arm/arm64 with events + with explicit PMU + - mm: page_vma_mapped: ensure pmd is loaded with READ_ONCE outside of lock + - HID: hid-elecom: extend to fix descriptor for HUGE trackball + - [x86] Drivers: hv: vmbus: Fix rescind handling issues + - [x86] Drivers: hv: vmbus: Fix bugs in rescind handling + - [x86] vmbus: simplify hv_ringbuffer_read + - [x86] vmbus: refactor hv_signal_on_read + - [x86] vmbus: eliminate duplicate cached index + - [x86] vmbus: more host signalling avoidance + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.13.10 + - USB: core: fix out-of-bounds access bug in usb_get_bos_descriptor() + - usb: hub: Allow reset retry for USB2 devices on connect bounce + - ALSA: usb-audio: Add native DSD support for Pro-Ject Pre Box S2 Digital + - can: gs_usb: fix busy loop if no more TX context is available + - scsi: qla2xxx: Fix uninitialized work element + - nbd: don't set the device size until we're connected + - [s390x] cputime: fix guest/irq/softirq times after CPU hotplug + - [hppa/parisc] Fix double-word compare and exchange in LWS code on 32-bit + kernels + - [hppa] Fix detection of nonsynchronous cr16 cycle counters + - iio: dummy: events: Add missing break + - [armhf] usb: musb: sunxi: Explicitly release USB PHY on exit + - [armhf] USB: musb: fix session-bit runtime-PM quirk + - [armhf] USB: musb: fix late external abort on suspend + - [armhf] usb: musb: musb_cppi41: Fix the address of teardown and autoreq + registers + - [armhf] usb: musb: musb_cppi41: Fix cppi41_set_dma_mode() for DA8xx + - [armhf] usb: musb: musb_cppi41: Configure the number of channels for DA8xx + - [armhf] usb: musb: Check for host-mode using is_host_active() on reset + interrupt + - xhci: Identify USB 3.1 capable hosts by their port protocol capability + - xhci: Cleanup current_cmd in xhci_cleanup_command_queue() + - usb: xhci: Reset halted endpoint if trb is noop + - usb: xhci: Handle error condition in xhci_stop_device() + - can: esd_usb2: Fix can_dlc value for received RTR, frames + - can: af_can: can_pernet_init(): add missing error handling for kzalloc + returning NULL + - KEYS: encrypted: fix dereference of NULL user_key_payload + - mmc: sdhci-pci: Fix default d3_retune for Intel host controllers + - [x86] drm/i915: Use bdw_ddi_translations_fdi for Broadwell + - drm/nouveau/kms/nv50: fix oops during DP IRQ handling on non-MST boards + - drm/nouveau/bsp/g92: disable by default + - drm/nouveau/mmu: flush tlbs before deleting page tables + - media: cec: Respond to unregistered initiators, when applicable + - media: dvb: i2c transfers over usb cannot be done from stack + - ALSA: seq: Enable 'use' locking in all configurations + - ALSA: hda: Remove superfluous '-' added by printk conversion + - ALSA: hda: Abort capability probe at invalid register read + - [x86] i2c: ismt: Separate I2C block read from SMBus block read + - [x86] i2c: piix4: Fix SMBus port selection for AMD Family 17h chips + - Revert "tools/power turbostat: stop migrating, unless '-m'" + - brcmfmac: Add check for short event packets + - brcmsmac: make some local variables 'static const' to reduce stack size + - [armhf] dts: sun6i: Fix endpoint IDs in second display pipeline + - [i386] clockevents/drivers/cs5535: Improve resilience to spurious + interrupts + - rtlwifi: rtl8821ae: Fix connection lost problem + - [x86] microcode/intel: Disable late loading on model 79 + - lib/digsig: fix dereference of NULL user_key_payload + - fscrypt: fix dereference of NULL user_key_payload + - ecryptfs: fix dereference of NULL user_key_payload + - KEYS: Fix race between updating and finding a negative key + (CVE-2017-15951) + - FS-Cache: fix dereference of NULL user_key_payload + - KEYS: don't let add_key() update an uninstantiated key (CVE-2017-15299) + - pkcs7: Prevent NULL pointer dereference, since sinfo is not always set. + - [arm64] dts: rockchip: correct vqmmc voltage for rk3399 platforms + - ALSA: hda - Fix incorrect TLV callback check introduced during set_fs() + removal + - iomap_dio_rw: Allocate AIO completion queue before submitting dio + - xfs: don't unconditionally clear the reflink flag on zero-block files + - xfs: evict CoW fork extents when performing finsert/fcollapse + - fs/xfs: Use %pS printk format for direct addresses + - xfs: report zeroed or not correctly in xfs_zero_range() + - xfs: update i_size after unwritten conversion in dio completion + - xfs: perag initialization should only touch m_ag_max_usable for AG 0 + - xfs: Capture state of the right inode in xfs_iflush_done + - xfs: always swap the cow forks when swapping extents + - xfs: handle racy AIO in xfs_reflink_end_cow + - xfs: Don't log uninitialised fields in inode structures + - xfs: move more RT specific code under CONFIG_XFS_RT + - xfs: don't change inode mode if ACL update fails + - xfs: reinit btree pointer on attr tree inactivation walk + - xfs: handle error if xfs_btree_get_bufs fails + - xfs: cancel dirty pages on invalidation + - xfs: trim writepage mapping to within eof + - xfs: move two more RT specific functions into CONFIG_XFS_RT + + [ Ben Hutchings ] + * [arm64] brcmfmac: Enable BRCMFMAC_SDIO (Closes: #877911) + * Update build dependencies on libbabeltrace[,-ctf}-dev + * linux-kbuild: Include scripts/ld-version.sh, needed for powerpc 64-bit + modules + * dax: Avoid most ABI changes in 4.13.5 + * SCSI: Avoid ABI change in 4.13.6 + * [x86] kvm: Ignore ABI change in 4.13.6 + * inet, l2tp, snd-seq, usb/gadget: Ignore ABI changes + * [armel,armhf] mbus: Ignore ABI change in 4.13.10 + * Revert "bpf: one perf event close won't free bpf program attached ..." + to avoid an ABI change + * [armel] security: Enable SECURITY_APPARMOR and disable SECURITY_SELINUX + * security: Enable DEFAULT_SECURITY_APPARMOR + * mac80211: Avoid ABI change in 4.13.5 + * [x86] rmi4: Enable RMI4_SMB as module (Closes: #875621) + * KEYS: Limit ABI change in 4.13.10 + + -- Ben Hutchings Mon, 30 Oct 2017 15:32:11 +0000 + +linux (4.13.4-2) unstable; urgency=medium + + [ Ben Hutchings ] + * [armhf,arm64] thermal: Enable BCM2835_THERMAL as module (Closes: #877699) + + [ Salvatore Bonaccorso ] + * brcmfmac: add length check in brcmf_cfg80211_escan_handler() + (CVE-2017-0786) + * [powerpc*] Use emergency stack for kernel TM Bad Thing program + (CVE-2017-1000255) + * [powerpc*] Fix illegal TM state in signal handler + * mac80211: fix deadlock in driver-managed RX BA session start. + Thanks to Eric Côté (Closes: #878092) + * KEYS: prevent KEYCTL_READ on negative key (CVE-2017-12192) + * waitid(): Add missing access_ok() checks (CVE-2017-5123) + * ALSA: seq: Fix use-after-free at creating a port (CVE-2017-15265) + * [x86] KVM: nVMX: update last_nonleaf_level when initializing nested EPT + (CVE-2017-12188) + * [x86] KVM: MMU: always terminate page walks at level 1 (CVE-2017-12188) + + -- Salvatore Bonaccorso Sun, 15 Oct 2017 08:57:36 +0200 + +linux (4.13.4-1) unstable; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.13.3 + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.13.4 + + [ Ben Hutchings ] + * [armhf,arm64] mmc: Enable MMC_BCM2835 (Closes: #845422) + * [arm64ilp32] Build a linux-libc-dev package (Closes: #874536) + * [mips*r6*] Re-enable these architectures, now that dak knows about them + (Closes: #825024) + * [x86] Enable INTEL_CHT_INT33FE as module (Closes: #873164) + * [armhf] Enable AXP20X_ADC, CHARGER_AXP20X, BATTERY_AXP20X, GPIO_AXP209, + AXP288_CHARGER, AXP288_FUEL_GAUGE, EXTCON_AXP288, AXP288_ADC as modules + (Closes: #873038) + * thp: Enable TRANSPARENT_HUGEPAGE_ALWAYS instead of + TRANSPARENT_HUGEPAGE_MADVISE + * ALSA: Enable SND_OSSEMUL, a new dependency of SND_{MIXER,PCM}_OSS + * [armel] rtc: Disable RTC_NVMEM + * [x86] hyperv-daemons: Use pid file name in init script status operation + * Update policy version to 4.1.1: + - linux-doc: Build an empty package when the nodoc profile is used + - [x86] hyperv-daemons: Create pid files under /run, not /var/run + - Change all binary packages with priority: extra to priority: optional + - Install copyright file (and some other documentation) when the nodoc + profile is used + * debian/control: Move many build dependencies to Build-Depends-Arch field + * debian/control: Remove obsolete workarounds and alternate build deps + * usbip: Stop building broken libusbip-dev package + * Rename lintian-overrides template files to be consistent + * linux-image-dbg: Override lintian errors binary-from-other-architecture and + shlib-without-PT_GNU_STACK-section for vDSOs + * [armhf] dts: exynos: Add dwc3 SUSPHY quirk (Closes: #843448) + * liblockdep: Make missing function declarations fatal errors, to catch use + of missing kernel APIs + * liblockdep: Define pr_cont() + * Set ABI to 1 + + [ Uwe Kleine-König ] + * [arm64] really enable NET_DSA_MV88E6XXX for Espressobin + + [ John Paul Adrian Glaubitz ] + * [m68k] Enable CONFIG_PATA_FALCON as module. + + [ Salvatore Bonaccorso ] + * fix infoleak in waitid(2) (CVE-2017-14954) + + -- Ben Hutchings Sun, 01 Oct 2017 15:52:09 +0100 + +linux (4.13.2-1~exp1) experimental; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.13.2 + + [ Uwe Kleine-König ] + * USB/misc: reenable UCSI which got lost due to upstream changes + * update kernel config templates for upstream changes + * [amd64] enable CONFIG_SPI_PXA2XX for Apple MacBook Pro (Closes: #872004) + + -- Ben Hutchings Tue, 19 Sep 2017 18:35:42 +0100 + +linux (4.13.1-1~exp1) experimental; urgency=medium + + * New upstream release: https://kernelnewbies.org/Linux_4.13 + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.13.1 + + [ Roger Shimizu ] + * debian/bin/buildcheck.py: + Add check for uncompressed Image size, which is necessary for + armel/marvell flavour currently. + + [ Ben Hutchings ] + * [mips*/octeon] mmc: Enable MMC_CAVIUM_OCTEON as module (Closes: #800594) + + [ Uwe Kleine-König ] + * [arm64] enable NET_DSA_MV88E6XXX for Espressobin. + + -- Ben Hutchings Mon, 11 Sep 2017 05:40:04 +0100 + +linux (4.13~rc7-1~exp1) experimental; urgency=medium + + * New upstream release candidate + + [ Ben Hutchings ] + * [sh4] Do not use hyphen in exported variable names (fixes FTBFS) + * aufs: Update support patchset to aufs4.x-rcN-20170828 + + [ Roger Shimizu ] + * [armel] Disable CONFIG_STRICT_KERNEL_RWX, which will save about 3MB + on linux Image (before compression). (Closes: #870185) + * [armel] Change MTD_OF_PARTS, MTD_BLOCK, and MTD_PHYSMAP_OF from + built-in to modules. + Also change all RTC related except RTC_DRV_MV, which includes + RTC_DRV_DS1307, RTC_DRV_RS5C372, RTC_DRV_PCF8563, RTC_DRV_M41T80, + and RTC_DRV_S35390A, to modules. Because most marvell boards use + RTC_DRV_MV. (above two fix FTBFS) + + -- Ben Hutchings Wed, 30 Aug 2017 20:39:57 +0100 + +linux (4.13~rc5-1~exp1) experimental; urgency=medium + + * New upstream release candidate + + [ Ben Hutchings ] + * cpupower: Add/update definition of MSRHEADER macro for turbostat and + x86_energy_perf_policy + * Remove support for upstream DocBook-based documentation, including the + linux-manual package + * liblockdep: Re-enable liblockdep packages following upstream fixes + + -- Ben Hutchings Mon, 14 Aug 2017 23:20:50 +0100 + +linux (4.12.13-1) unstable; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.12.13 + - mtd: nand: make Samsung SLC NAND usable again + - mtd: nand: hynix: add support for 20nm NAND chips + - [armhf] mtd: nand: mxc: Fix mxc_v1 ooblayout + - nvme-fabrics: generate spec-compliant UUID NQNs + - btrfs: resume qgroup rescan on rw remount + - rtlwifi: btcoexist: Fix breakage of ant_sel for rtl8723be + - radix-tree: must check __radix_tree_preload() return value + - mm: kvfree the swap cluster info if the swap file is unsatisfactory + - mm/swapfile.c: fix swapon frontswap_map memory leak on error + - mm/memory.c: fix mem_cgroup_oom_disable() call missing + - [i386] ALSA: msnd: Optimize / harden DSP and MIDI loops + - [x86] KVM: SVM: Limit PFERR_NESTED_GUEST_PAGE error_code check to L1 guest + - rt2800: fix TX_PIN_CFG setting for non MT7620 chips + - Bluetooth: Properly check L2CAP config option output buffer length + (CVE-2017-1000251) (Closes: #875881) + - [arm64] dts: marvell: armada-37xx: Fix GIC maintenance interrupt + - [armel,armhf] 8692/1: mm: abort uaccess retries upon fatal signal + - NFS: Fix 2 use after free issues in the I/O code + - NFS: Sync the correct byte range during synchronous writes + - NFSv4: Fix up mirror allocation + - xfs: XFS_IS_REALTIME_INODE() should be false if no rt device present + (CVE-2017-14340) + + [ Salvatore Bonaccorso ] + * sctp: Avoid out-of-bounds reads from address storage (CVE-2017-7558) + * scsi: qla2xxx: Fix an integer overflow in sysfs code (CVE-2017-14051) + * Add ABI reference for 4.12.0-2 + + [ Ben Hutchings ] + * nl80211: check for the required netlink attributes presence (CVE-2017-12153) + * [x86] kvm: nVMX: Don't allow L2 to access the hardware CR8 (CVE-2017-12154) + * video: fbdev: aty: do not leak uninitialized padding in clk to userspace + (CVE-2017-14156) + * scsi: fix the issue that iscsi_if_rx doesn't parse nlmsg properly + (CVE-2017-14489) + * packet: Don't write vnet header beyond end of buffer (CVE-2017-14497) + * [x86] KVM: VMX: Do not BUG() on out-of-bounds guest IRQ (CVE-2017-1000252) + * nfs: Ignore ABI change + + -- Ben Hutchings Tue, 19 Sep 2017 01:59:17 +0100 + +linux (4.12.12-2) unstable; urgency=medium + + * debian/source/lintian-overrides: Override license-problem-gfdl-invariants + error triggered by a ReSTified copy of the GFDL + + -- Ben Hutchings Mon, 11 Sep 2017 04:35:28 +0100 + +linux (4.12.12-1) unstable; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.12.7 + - ppp: Fix false xmit recursion detect with two ppp devices + - ppp: fix xmit recursion detection on ppp channels + - tcp: avoid setting cwnd to invalid ssthresh after cwnd reduction states + - net: fix keepalive code vs TCP_FASTOPEN_CONNECT + - ipv6: set rt6i_protocol properly in the route when it is installed + - [s390x] bpf: fix jit branch offset related to ldimm64 + - net/mlx4_en: don't set CHECKSUM_COMPLETE on SCTP packets + - net: sched: set xt_tgchk_param par.net properly in ipt_init_target + - net: sched: set xt_tgchk_param par.nft_compat as 0 in ipt_init_target + - tcp: fastopen: tcp_connect() must refresh the route + - qmi_wwan: fix NULL deref on disconnect + - net: avoid skb_warn_bad_offload false positives on UFO + - igmp: Fix regression caused by igmp sysctl namespace code. + - scsi: sg: only check for dxfer_len greater than 256M + - btrfs: Remove false alert when fiemap range is smaller than on-disk + extent + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.12.8 + - mm: ratelimit PFNs busy info message + - mm: fix list corruptions on shmem shrinklist + - futex: Remove unnecessary warning from get_futex_key + - xfs: Fix leak of discard bio + - [armhf] pinctrl: armada-37xx: Fix number of pin in south bridge + - mtd: nand: Fix timing setup for NANDs that do not support SET FEATURES + - mtd: nand: Declare tBERS, tR and tPROG as u64 to avoid integer overflow + - iscsi-target: fix memory leak in iscsit_setup_text_cmd() + - iscsi-target: Fix iscsi_np reset hung task during parallel delete + - usb-storage: fix deadlock involving host lock and scsi_done + - target: Fix node_acl demo-mode + uncached dynamic shutdown regression + - fuse: initialize the flock flag in fuse_file on allocation + - i2c: designware: Some broken DSTDs use 1MiHz instead of 1MHz + - nand: fix wrong default oob layout for small pages using soft ecc + - mmc: mmc: correct the logic for setting HS400ES signal voltage + - nfs/flexfiles: fix leak of nfs4_ff_ds_version arrays + - [armhf] drm/etnaviv: Fix off-by-one error in reloc checking + - [x86] drm/i915: Fix out-of-bounds array access in bdw_load_gamma_lut + - [armhf] usb: musb: fix tx fifo flush handling again + - USB: hcd: Mark secondary HCD as dead if the primary one died + - [armhf] iio: accel: st_accel: add SPI-3wire support + - [x86] iio: accel: bmc150: Always restore device to normal mode after + suspend-resume + - iio: light: tsl2563: use correct event code + - staging: comedi: comedi_fops: do not call blocking ops when !TASK_RUNNING + - uas: Add US_FL_IGNORE_RESIDUE for Initio Corporation INIC-3069 + - firmware: fix batched requests - wake all waiters + - firmware: fix batched requests - send wake up on failure on direct lookups + - firmware: avoid invalid fallback aborts by using killable wait + - block: Make blk_mq_delay_kick_requeue_list() rerun the queue at a quiet + time + - USB: Check for dropped connection before switching to full speed + - usb: core: unlink urbs from the tail of the endpoint's urb_list + - usb: quirks: Add no-lpm quirk for Moshi USB to Ethernet Adapter + - usb:xhci:Add quirk for Certain failing HP keyboard on reset after resume + - PCI: Protect pci_error_handlers->reset_notify() usage with device_lock() + - xhci: Reset Renesas uPD72020x USB controller for 32-bit DMA issue + - pnfs/blocklayout: require 64-bit sector_t + - [x86] pinctrl: cherryview: Add Setzer models to the Chromebook DMI quirk + - [armhf] pinctrl: sunxi: add a missing function of A10/A20 pinctrl driver + - [x86] pinctrl: intel: merrifield: Correct UART pin lists + - [armhf] pinctrl: samsung: Remove bogus irq_[un]mask from resource + management + - [arm64] pinctrl: meson-gxbb: Add missing GPIODV_18 pin entry + - [arm64] pinctrl: meson-gxl: Add missing GPIODV_18 pin entry + - [mips*] Revert "MIPS: Don't unnecessarily include kmalloc.h into + ." + - [mips*/octeon] Fix broken EDAC driver. + - [ppc64el] Fix /proc/cpuinfo revision for POWER9 DD2 + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.12.9 + - audit: Fix use after free in audit_remove_watch_rule() + - [hppa] pci memory bar assignment fails with 64bit kernels on dino/cujo + - [x86] crypto: sha1 - Fix reads beyond the number of blocks passed + - [x86] drm/i915: Perform an invalidate prior to executing golden + renderstate + - drm/amdgpu: save list length when fence is signaled + - md: fix test in md_write_start() + - md: always clear ->safemode when md_check_recovery gets the mddev lock. + - MD: not clear ->safemode for external metadata array + - ALSA: seq: 2nd attempt at fixing race creating a queue + - ALSA: usb-audio: Apply sample rate quirk to Sennheiser headset + - ALSA: usb-audio: Add mute TLV for playback volumes on C-Media devices + - ALSA: usb-audio: add DSD support for new Amanero PID + - mm: discard memblock data later + - slub: fix per memcg cache leak on css offline + - mm: fix double mmap_sem unlock on MMF_UNSTABLE enforced SIGBUS + - mm/cma_debug.c: fix stack corruption due to sprintf usage + - mm/mempolicy: fix use after free when calling get_mempolicy + - mm/vmalloc.c: don't unconditonally use __GFP_HIGHMEM + - [amd64,arm64] mm: revert x86_64 and arm64 ELF_ET_DYN_BASE base changes + - xen: fix bio vec merging (CVE-2017-12134) (Closes: #866511) + - [armhf] ARM: dts: imx6qdl-nitrogen6_som2: fix PCIe reset + - blk-mq-pci: add a fallback when pci_irq_get_affinity returns NULL + - [powerpc*] Fix VSX enabling/flushing to also test MSR_FP and MSR_VEC + - xen-blkfront: use a right index when checking requests + - [x86] perf: Fix RDPMC vs. mm_struct tracking + - [amd64] asm: Clear AC on NMI entries + - [x86] Fix norandmaps/ADDR_NO_RANDOMIZE + - [x86] elf: Remove the unnecessary ADDR_NO_RANDOMIZE checks + - genirq: Restore trigger settings in irq_modify_status() + - genirq/ipi: Fixup checks against nr_cpu_ids + - kernel/watchdog: Prevent false positives with turbo modes + - Sanitize 'move_pages()' permission checks (CVE-2017-14140) + - pids: make task_tgid_nr_ns() safe + - debug: Fix WARN_ON_ONCE() for modules + - usb: optimize acpi companion search for usb port devices + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.12.10 + - [sparc64] remove unnecessary log message + - bonding: require speed/duplex only for 802.3ad, alb and tlb + - bonding: ratelimit failed speed/duplex update warning + - af_key: do not use GFP_KERNEL in atomic contexts + - dccp: purge write queue in dccp_destroy_sock() + - dccp: defer ccid_hc_tx_delete() at dismantle time + - ipv4: fix NULL dereference in free_fib_info_rcu() + - net_sched/sfq: update hierarchical backlog when drop packet + - net_sched: remove warning from qdisc_hash_add + - bpf: fix bpf_trace_printk on 32 bit archs + - net: igmp: Use ingress interface rather than vrf device + - openvswitch: fix skb_panic due to the incorrect actions attrlen + - ptr_ring: use kmalloc_array() + - ipv4: better IP_MAX_MTU enforcement + - nfp: fix infinite loop on umapping cleanup + - tun: handle register_netdevice() failures properly + - sctp: fully initialize the IPv6 address in sctp_v6_to_addr() + - tipc: fix use-after-free + - ipv6: reset fn->rr_ptr when replacing route + - ipv6: repair fib6 tree in failure case + - tcp: when rearming RTO, if RTO time is in past then fire RTO ASAP + - net/mlx4_core: Enable 4K UAR if SRIOV module parameter is not enabled + - irda: do not leak initialized list.dev to userspace + - net: sched: fix NULL pointer dereference when action calls some targets + - net_sched: fix order of queue length updates in qdisc_replace() + - bpf, verifier: add additional patterns to evaluate_reg_imm_alu + - bpf: fix mixed signed/unsigned derived min/max value bounds + - bpf/verifier: fix min/max handling in BPF_SUB + - Input: ALPS - fix two-finger scroll breakage in right side on ALPS + touchpad + - [s390x] KVM: sthyi: fix sthyi inline assembly + - [s390x] KVM: sthyi: fix specification exception detection + - [x86] KVM: simplify handling of PKRU + - [x86] KVM, pkeys: do not use PKRU value in vcpu->arch.guest_fpu.state + - [x86] KVM: block guest protection keys unless the host has them enabled + - ALSA: core: Fix unexpected error at replacing user TLV + - ALSA: firewire: fix NULL pointer dereference when releasing + uninitialized data of iso-resource + - ALSA: firewire-motu: destroy stream data surely at failure of card + initialization + - PM/hibernate: touch NMI watchdog when creating snapshot + - mm, shmem: fix handling /sys/kernel/mm/transparent_hugepage/shmem_enabled + - dax: fix deadlock due to misaligned PMD faults + - i2c: designware: Fix system suspend + - mm/madvise.c: fix freeing of locked page with MADV_FREE + - fork: fix incorrect fput of ->exe_file causing use-after-free + - mm/memblock.c: reversed logic in memblock_discard() + - [arm64] fpsimd: Prevent registers leaking across exec + - drm: Fix framebuffer leak + - drm: Release driver tracking before making the object available again + - [armhf] drm/sun4i: Implement drm_driver lastclose to restore fbdev + console + - drm/atomic: Handle -EDEADLK with out-fences correctly + - drm/atomic: If the atomic check fails, return its value first + - [x86] drm/i915/vbt: ignore extraneous child devices for a port + - [x86] drm/i915/gvt: Fix the kernel null pointer error + - Revert "drm/amdgpu: fix vblank_time when displays are off" + - ACPI: device property: Fix node lookup in + acpi_graph_get_child_prop_value() + - tracing: Call clear_boot_tracer() at lateinit_sync + - tracing: Missing error code in tracer_alloc_buffers() + - tracing: Fix kmemleak in tracing_map_array_free() + - tracing: Fix freeing of filter in create_filter() when set_str is false + - RDMA/uverbs: Initialize cq_context appropriately + - cifs: Fix df output for users with quota limits + - cifs: return ENAMETOOLONG for overlong names in + cifs_open()/cifs_lookup() + - nfsd: Limit end of page list when decoding NFSv4 WRITE + - ring-buffer: Have ring_buffer_alloc_read_page() return error on offline + CPU + - virtio_pci: fix cpu affinity support + - ftrace: Check for null ret_stack on profile function graph entry + function + - perf/core: Fix group {cpu,task} validation + - timers: Fix excessive granularity of new timers after a nohz idle + - [x86] mm: Fix use-after-free of ldt_struct + - net: sunrpc: svcsock: fix NULL-pointer exception + - netfilter: expect: fix crash when putting uninited expectation + - netfilter: nat: fix src map lookup + - netfilter: nfnetlink: Improve input length sanitization in nfnetlink_rcv + - Bluetooth: hidp: fix possible might sleep error in hidp_session_thread + - Bluetooth: cmtp: fix possible might sleep error in cmtp_session + - Bluetooth: bnep: fix possible might sleep error in bnep_session + - iio: hid-sensor-trigger: Fix the race with user space powering up + sensors + - iommu: Fix wrong freeing of iommu_device->dev + - Clarify (and fix) MAX_LFS_FILESIZE macros + - ACPI: EC: Fix regression related to wrong ECDT initialization order + - [powerpc*] mm: Ensure cpumask update is ordered + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.12.11 + - [arm64] mm: abort uaccess retries upon fatal signal + - [x86] io: Add "memory" clobber to insb/insw/insl/outsb/outsw/outsl + - [mips*] irqchip: mips-gic: SYNC after enabling GIC region + - Input: synaptics - fix device info appearing different on reconnect + - Input: xpad - fix PowerA init quirk for some gamepad models + - crypto: chacha20 - fix handling of chunked input + - [x86] i2c: ismt: Don't duplicate the receive length for block reads + - [x86] i2c: ismt: Return EMSGSIZE for block reads with bogus length + - crypto: algif_skcipher - only call put_page on referenced and used pages + - mm, uprobes: fix multiple free of ->uprobes_state.xol_area + - mm, madvise: ensure poisoned pages are removed from per-cpu lists + - ceph: fix readpage from fscache + - cpumask: fix spurious cpumask_of_node() on non-NUMA multi-node configs + - cpuset: Fix incorrect memory_pressure control file mapping + - CIFS: Fix maximum SMB2 header size + - CIFS: remove endian related sparse warning + - dm mpath: do not lock up a CPU with requeuing activity + - [x86] drm/vmwgfx: Fix F26 Wayland screen update issue + - [arm64, armhf] wl1251: add a missing spin_lock_init() + - [arm64] mmc: sdhci-xenon: add set_power callback + - lib/mpi: kunmap after finishing accessing buffer + - xfrm: policy: check policy direction value + - drm/ttm: Fix accounting error when fail to get pages for pool + - nvme: fix the definition of the doorbell buffer config support bit + - drm/nouveau/i2c/gf119-: add support for address-only transactions + - epoll: fix race between ep_poll_callback(POLLFREE) and + ep_free()/ep_remove() + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.12.12 + - usb: quirks: add delay init quirk for Corsair Strafe RGB keyboard + - USB: serial: option: add support for D-Link DWM-157 C1 + - usb: Add device quirk for Logitech HD Pro Webcam C920-C + - usb:xhci:Fix regression when ATI chipsets detected + - [armhf] USB: musb: fix external abort on suspend + - USB: core: Avoid race of async_completed() w/ usbdev_release() + - [x86] staging/rts5208: fix incorrect shift to extract upper nybble + - iio: adc: ti-ads1015: fix incorrect data rate setting update + - iio: adc: ti-ads1015: fix scale information for ADS1115 + - iio: adc: ti-ads1015: enable conversion when CONFIG_PM is not set + - iio: adc: ti-ads1015: avoid getting stale result after runtime resume + - iio: adc: ti-ads1015: don't return invalid value from buffer setup + callbacks + - iio: adc: ti-ads1015: add adequate wait time to get correct conversion + - driver core: bus: Fix a potential double free + - HID: wacom: Do not completely map WACOM_HID_WD_TOUCHRINGSTATUS usage + - [x86] intel_th: pci: Add Cannon Lake PCH-H support + - [x86] intel_th: pci: Add Cannon Lake PCH-LP support + - ath10k: fix memory leak in rx ring buffer allocation + - Input: trackpoint - assume 3 buttons when buttons detection fails + - rtlwifi: rtl_pci_probe: Fix fail path of _rtl_pci_find_adapter + - Bluetooth: Add support of 13d3:3494 RTL8723BE device + - iwlwifi: pci: add new PCI ID for 7265D + - dlm: avoid double-free on error path in dlm_device_{register,unregister} + - mwifiex: correct channel stat buffer overflows + - [s390x] mm: avoid empty zero pages for KVM guests to avoid postcopy + hangs + - [s390x] mm: fix BUG_ON in crst_table_upgrade + - drm/nouveau/pci/msi: disable MSI on big-endian platforms by default + - drm/nouveau: Fix error handling in nv50_disp_atomic_commit + - workqueue: Fix flag collision + - ahci: don't use MSI for devices with the silly Intel NVMe remapping + scheme + - cs5536: add support for IDE controller variant + - scsi: sg: protect against races between mmap() and SG_SET_RESERVED_SIZE + - scsi: sg: recheck MMAP_IO request length with lock held + - of/device: Prevent buffer overflow in of_device_modalias() + - rtlwifi: Fix memory leak when firmware request fails + - rtlwifi: Fix fallback firmware loading + + [ Ben Hutchings ] + * [alpha] udeb: Add i2c-modules (fixes FTBFS) + * cpupower: Add/update definition of MSRHEADER macro for turbostat and + x86_energy_perf_policy (Closes: #872414) + * Bump ABI to 2 + + [ Roger Shimizu ] + * [armel] Disable CONFIG_STRICT_KERNEL_RWX, which will save about 3MB + on linux Image (before compression). (Closes: #870185) + + [ Uwe Kleine-König ] + * mtd: nandsim: remove debugfs entries in error path + + -- Ben Hutchings Sun, 10 Sep 2017 19:42:51 +0100 + +linux (4.12.6-1) unstable; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.12.3 + - brcmfmac: fix possible buffer overflow in brcmf_cfg80211_mgmt_tx() + (CVE-2017-7541) + - [sparc64] Adding asm-prototypes.h for genksyms to generate crc + - [sparc64] sed regex in Makefile.build requires line break between + exported symbols + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.12.4 + - f2fs: sanity check checkpoint segno and blkoff (CVE-2017-10663) + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.12.5 + - dentry name snapshots (CVE-2017-7533) + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.12.6 + - saa7164: fix double fetch PCIe access condition (CVE-2017-8831) + - ipv6: avoid overflow of offset in ip6_find_1stfragopt (CVE-2017-7542) + + [ Ben Hutchings ] + * media: Enable USB_RAINSHADOW_CEC as module (see #868511) + * Clean up symbol version fixes for symbols exported from asm + (fixes FTBFS on sparc64): + - [alpha] Un-revert "alpha: move exports to actual definitions" + - [alpha] Restore symbol versions for symbols exported from assembly + - [m68k] Un-revert "m68k: move exports to definitions" + - [sparc64] Un-revert "sparc: move exports to definitions" + * [mips*/octeon] Fix broken EDAC driver (fixes FTBFS) + * [armhf] Revert "gpu: host1x: Add IOMMU support" + * [armhf] udeb: Replace imx-ipuv3-crtc with imxdrm in fb-modules + * [i386] perf tools: Fix unwind build (fixes FTBFS) + * debian/control: Fix version in dependencies on arch-independent + linux-headers-*-common* (Closes: #869511) + * xfrm: policy: check policy direction value (CVE-2017-11600) + * rtlwifi: Fix memory leak when firmware request fails + * rtlwifi: Fix fallback firmware loading (Closes: #869084) + * [arm64] video: Enable FRAMEBUFFER_CONSOLE (Closes: #870071) + * integrity: Enable INTEGRITY_SIGNATURE, INTEGRITY_ASYMMETRIC_KEYS + (Closes: #869565) + * [x86] sound: Enable SND_X86; enable HDMI_LPE_AUDIO as module + (Closes: #869372) + * blk-mq: Change MQ_IOSCHED_KYBER from built-in to module + * blk-mq: Enable IOSCHED_BFQ as module (Closes: #869028); enable + BFQ_GROUP_IOSCHED + * bfq: Enable auto-loading when built as a module + * netfilter: Enable NFT_FIB_IPV4, NFT_FIB_IPV6, NFT_FIB_INET as modules + (Closes: #868803) + * [amd64,arm64] mm: Revert x86_64 and arm64 ELF_ET_DYN_BASE base + (Closes: #869090) + + [ Salvatore Bonaccorso ] + * packet: fix tp_reserve race in packet_set_ring (CVE-2017-1000111) + * udp: consistently apply ufo or fragmentation (CVE-2017-1000112) + * Set ABI to 1 + + [ Uwe Kleine-König ] + * [arm64] enable MMC_SDHCI_XENON and MVNETA for Espressobin and enable + respective device in its device tree (Closes: #871049) + + [ Roger Shimizu ] + * [armel] Change NAND related stuff to modules (fixes FTBFS) + + -- Ben Hutchings Sat, 12 Aug 2017 23:09:26 +0100 + +linux (4.12.2-1~exp1) experimental; urgency=medium + + * New upstream release: https://kernelnewbies.org/Linux_4.12 + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.12.1 + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.12.2 + + [ Ben Hutchings ] + * Add script to regenerate lockdown patch series from git + * [rt] Disable until it is updated for 4.12 or later + * scripts/mod: Update modpost wrapper for 4.12 + * Set ABI name to trunk + + -- Ben Hutchings Tue, 18 Jul 2017 12:19:38 +0100 + +linux (4.11.11-1) unstable; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.11.7 + - fs: pass on flags in compat_writev + - configfs: Fix race between create_link and configfs_rmdir + - can: gs_usb: fix memory leak in gs_cmd_reset() + - ila_xlat: add missing hash secret initialization + - cpufreq: conservative: Allow down_threshold to take values from 1 to 10 + - vb2: Fix an off by one error in 'vb2_plane_vaddr' + - cec: race fix: don't return -ENONET in cec_receive() + - selinux: fix double free in selinux_parse_opts_str() + - mac80211: don't look at the PM bit of BAR frames + - mac80211/wpa: use constant time memory comparison for MACs + - [x86] drm/amdgpu: Fix overflow of watermark calcs at > 4k resolutions. + - [x86] drm/i915: Fix GVT-g PVINFO version compatibility check + - [x86] drm/i915: Fix scaling check for 90/270 degree plane rotation + - [x86] drm/i915: Do not sync RCU during shrinking + - mac80211: fix IBSS presp allocation size + - mac80211: strictly check mesh address extension mode + - mac80211: fix dropped counter in multiqueue RX + - mac80211: don't send SMPS action frame in AP mode when not needed + - [arm64, armhf] drm/vc4: Fix OOPSes from trying to cache a partially + constructed BO. + - serial: 8250_lpss: Unconditionally set PCI master for Quark + - [sh4] serial: sh-sci: Fix (AUTO)RTS in sci_init_pins() + - [sh4] serial: sh-sci: Fix late enablement of AUTORTS + - [x86] mm/32: Set the '__vmalloc_start_set' flag in initmem_init() + - [armhf] mfd: axp20x: Add support for dts property "xpowers,master-mode" + - [armhf] dt-bindings: mfd: axp20x: Add "xpowers,master-mode" property for + AXP806 PMICs + - [powerpc] mm: Add physical address to Linux page table dump + - staging: rtl8188eu: prevent an underflow in rtw_check_beacon_data() + - [armhf] iio: adc: ti_am335x_adc: allocating too much in probe + - [x86] ALSA: hda: Add Geminilake id to SKL_PLUS + - ALSA: usb-audio: fix Amanero Combo384 quirk on big-endian hosts + - USB: hub: fix SS max number of ports + - usb: core: fix potential memory leak in error path during hcd creation + - [x86] USB: usbip: fix nonconforming hub descriptor + - [arm64, armhf] usb: dwc3: gadget: Fix ISO transfer performance + - pvrusb2: reduce stack usage pvr2_eeprom_analyze() + - USB: gadget: dummy_hcd: fix hub-descriptor removable fields + - coda: restore original firmware locations + - usb: xhci: Fix USB 3.1 supported protocol parsing + - usb: xhci: ASMedia ASM1042A chipset need shorts TX quirk + - USB: gadget: fix GPF in gadgetfs + - USB: gadgetfs, dummy-hcd, net2280: fix locking for callbacks + - mm/memory-failure.c: use compound_head() flags for huge pages + - swap: cond_resched in swap_cgroup_prepare() + - mm: numa: avoid waiting on freed migrated pages + - userfaultfd: shmem: handle coredumping in handle_userfault() + - sched/core: Idle_task_exit() shouldn't use switch_mm_irqs_off() + - genirq: Release resources in __setup_irq() error path + - alarmtimer: Prevent overflow of relative timers + - alarmtimer: Rate limit periodic intervals + - virtio_balloon: disable VIOMMU support + - [mips*] Fix bnezc/jialc return address calculation + - [mips*] .its targets depend on vmlinux + - [sparc*] crypto: Work around deallocated stack frame reference gcc bug + on sparc. + - [armhf] dts: am335x-sl50: Fix card detect pin for mmc1 + - [armhf] dts: am335x-sl50: Fix cannot claim requested pins for spi0 + - mm: larger stack guard gap, between vmas + - Allow stack to grow up to address space limit + - mm: fix new crash in unmapped_area_topdown() + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.11.8 + - [armhf] clk: sunxi-ng: a31: Correct lcd1-ch1 clock register offset + - [armhf] clk: sunxi-ng: v3s: Fix usb otg device reset bit + - [armhf] clk: sunxi-ng: sun5i: Fix ahb_bist_clk definition + - xen/blkback: fix disconnect while I/Os in flight + - xen-blkback: don't leak stack data via response ring (XSA-216, + CVE-2017-10911) + - ALSA: firewire-lib: Fix stall of process context at packet error + - ALSA: pcm: Don't treat NULL chmap as a fatal error + - ALSA: hda - Add Coffelake PCI ID + - ALSA: hda - Apply quirks to Broxton-T, too + - fs/exec.c: account for argv/envp pointers (CVE-2017-1000365) + - [powerpc] perf: Fix oops when kthread execs user process + - autofs: sanity check status reported with AUTOFS_DEV_IOCTL_FAIL + - fs/dax.c: fix inefficiency in dax_writeback_mapping_range() + - lib/cmdline.c: fix get_options() overflow while parsing ranges + - [x86] perf/x86/intel: Add 1G DTLB load/store miss support for SKL + - perf probe: Fix probe definition for inlined functions + - [x86] KVM: fix singlestepping over syscall (CVE-2017-7518) + - [s390x] KVM gaccess: fix real-space designation asce handling for gmap + shadows + - [powerpc*] KVM: Book3S HV: Cope with host using large decrementer mode + - [powerpc*] KVM: Book3S HV: Preserve userspace HTM state properly + - [powerpc*] KVM: Book3S HV: Ignore timebase offset on POWER9 DD1 + - [powerpc*] KVM: Book3S HV: Context-switch EBB registers properly + - [powerpc*] KVM: Book3S HV: Restore critical SPRs to host values on guest + exit + - [powerpc*] KVM: Book3S HV: Save/restore host values of debug registers + - CIFS: Improve readdir verbosity + - CIFS: Fix some return values in case of error in 'crypt_message' + - cxgb4: notify uP to route ctrlq compl to rdma rspq + - HID: Add quirk for Dell PIXART OEM mouse + - random: silence compiler warnings and fix race + - signal: Only reschedule timers on signals timers have sent + - [powerpc] kprobes: Pause function_graph tracing during jprobes handling + - ]powerpc*] 64s: Handle data breakpoints in Radix mode + - Input: i8042 - add Fujitsu Lifebook AH544 to notimeout list + - brcmfmac: add parameter to pass error code in firmware callback + - brcmfmac: use firmware callback upon failure to load + - brcmfmac: unbind all devices upon failure in firmware callback + - time: Fix clock->read(clock) race around clocksource changes + - time: Fix CLOCK_MONOTONIC_RAW sub-nanosecond accounting + - [arm64] vdso: Fix nsec handling for CLOCK_MONOTONIC_RAW + - target: Fix kref->refcount underflow in transport_cmd_finish_abort + - iscsi-target: Fix delayed logout processing greater than + SECONDS_FOR_LOGOUT_COMP + - iscsi-target: Reject immediate data underflow larger than SCSI transfer + length + - drm/radeon: add a PX quirk for another K53TK variant + - drm/radeon: add a quirk for Toshiba Satellite L20-183 + - [x86] drm/amdgpu/atom: fix ps allocation size for EnableDispPowerGating + - [x86] drm/amdgpu: adjust default display clock + - [x86] drm/amdgpu: add Polaris12 DID + - ACPI / scan: Apply default enumeration to devices with ACPI drivers + - ACPI / scan: Fix enumeration for special SPI and I2C devices + - rxrpc: Fix several cases where a padded len isn't checked in ticket + decode (CVE-2017-7482) + - drm: Fix GETCONNECTOR regression + - usb: gadget: f_fs: avoid out of bounds access on comp_desc + - spi: double time out tolerance + - net: phy: fix marvell phy status reading + - netfilter: xtables: zero padding in data_to_user + - netfilter: xtables: fix build failure from COMPAT_XT_ALIGN outside + CONFIG_COMPAT + - brcmfmac: fix uninitialized warning in brcmf_usb_probe_phase2() + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.11.9 + - net: don't call strlen on non-terminated string in dev_set_alias() + - net: Fix inconsistent teardown and release of private netdev state. + - [s390x] net: fix up for "Fix inconsistent teardown and release of + private netdev state" + - mac80211: free netdev on dev_alloc_name() error + - decnet: dn_rtmsg: Improve input length sanitization in + dnrmg_receive_user_skb + - net: Zero ifla_vf_info in rtnl_fill_vfinfo() + - net: ipv6: Release route when device is unregistering + - net: vrf: Make add_fib_rules per network namespace flag + - af_unix: Add sockaddr length checks before accessing sa_family in bind + and connect handlers + - Fix an intermittent pr_emerg warning about lo becoming free. + - sctp: disable BH in sctp_for_each_endpoint + - net: caif: Fix a sleep-in-atomic bug in cfpkt_create_pfx + - net: tipc: Fix a sleep-in-atomic bug in tipc_msg_reverse + - net/mlx5: Remove several module events out of ethtool stats + - net/mlx5e: Added BW check for DIM decision mechanism + - net/mlx5e: Fix wrong indications in DIM due to counter wraparound + - net/mlx5: Enable 4K UAR only when page size is bigger than 4K + - proc: snmp6: Use correct type in memset + - igmp: acquire pmc lock for ip_mc_clear_src() + - igmp: add a missing spin_lock_init() + - qmi_wwan: new Telewell and Sierra device IDs + - net: don't global ICMP rate limit packets originating from loopback + - ipv6: fix calling in6_ifa_hold incorrectly for dad work + - sctp: return next obj by passing pos + 1 into sctp_transport_get_idx + - net/mlx5e: Fix min inline value for VF rep SQs + - net/mlx5e: Avoid doing a cleanup call if the profile doesn't have it + - net/mlx5: Wait for FW readiness before initializing command interface + - net/mlx5e: Fix timestamping capabilities reporting + - decnet: always not take dst->__refcnt when inserting dst into hash table + - net: 8021q: Fix one possible panic caused by BUG_ON in free_netdev + - ipv6: Do not leak throw route references + - rtnetlink: add IFLA_GROUP to ifla_policy + - netfilter: synproxy: fix conntrackd interaction + - NFSv4.x/callback: Create the callback service through svc_create_pooled + - xen/blkback: don't use xen_blkif_get() in xen-blkback kthread + - [mips*] head: Reorder instructions missing a delay slot + - [mips*] Avoid accidental raw backtrace + - [mips*] pm-cps: Drop manual cache-line alignment of ready_count + - [mips*] Fix IRQ tracing & lockdep when rescheduling + - ALSA: hda - Fix endless loop of codec configure + - ALSA: hda - set input_path bitmap to zero after moving it to new place + - NFSv4.2: Don't send mode again in post-EXCLUSIVE4_1 SETATTR with umask + - NFSv4.1: Fix a race in nfs4_proc_layoutget + - Revert "NFS: nfs_rename() handle -ERESTARTSYS dentry left behind" + - ovl: copy-up: don't unlock between lookup and link + - gpiolib: fix filtering out unwanted events + - [x86] intel_rdt: Fix memory leak on mount failure + - [x86] perf/x86/intel/uncore: Fix wrong box pointer check + - [x86] drm/vmwgfx: Free hash table allocated by cmdbuf managed res mgr + - dm thin: do not queue freed thin mapping for next stage processing + - [x86] mm: Fix boot crash caused by incorrect loop count calculation in + sync_global_pgds() + - [arm64] pinctrl/amd: Use regular interrupt instead of chained + - mm/vmalloc.c: huge-vmap: fail gracefully on unexpected huge vmap + mappings + - xen/blkback: don't free be structure too early + - xfrm6: Fix IPv6 payload_len in xfrm6_transport_finish + - xfrm: move xfrm_garbage_collect out of xfrm_policy_flush + - xfrm: fix stack access out of bounds with CONFIG_XFRM_SUB_POLICY + - xfrm: NULL dereference on allocation failure + - xfrm: Oops on error in pfkey_msg2xfrm_state() + - [arm64] PCI: Fix struct acpi_pci_root_ops allocation failure path + - [arm64] ACPI: Fix BAD_MADT_GICC_ENTRY() macro implementation + - [arm*] 8685/1: ensure memblock-limit is pmd-aligned + - [arm*] davinci: PM: Free resources in error handling path in + 'davinci_pm_init' + - [arm*] davinci: PM: Do not free useful resources in normal path in + 'davinci_pm_init' + - Revert "x86/entry: Fix the end of the stack for newly forked tasks" + - [x86] boot/KASLR: Fix kexec crash due to 'virt_addr' calculation bug + - [x86] perf: Fix spurious NMI with PEBS Load Latency event + - [x86] mpx: Correctly report do_mpx_bt_fault() failures to user-space + - [x86] mm: Fix flush_tlb_page() on Xen + - ocfs2: o2hb: revert hb threshold to keep compatible + - ocfs2: fix deadlock caused by recursive locking in xattr + - iommu/dma: Don't reserve PCI I/O windows + - [amd64] iommu/amd: Fix incorrect error handling in + amd_iommu_bind_pasid() + - [amd64] iommu/amd: Fix interrupt remapping when disable guest_mode + - mtd: nand: brcmnand: Check flash #WP pin status before nand + erase/program + - mtd: nand: fsmc: fix NAND width handling + - [x86] KVM: fix emulation of RSM and IRET instructions + - [x86] KVM: vPMU: fix undefined shift in intel_pmu_refresh() + - [x86] KVM: zero base3 of unusable segments + - KVM: nVMX: Fix exception injection + - esp4: Fix udpencap for local TCP packets. + - [armhf] hsi: Fix build regression due to netdev destructor fix. + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.11.10 + - fs: completely ignore unknown open flags + - driver core: platform: fix race condition with driver_override + - RDMA/uverbs: Check port number supplied by user verbs cmds + - ceph: choose readdir frag based on previous readdir reply + - tracing/kprobes: Allow to create probe with a module name starting with a + digit + - drm/virtio: don't leak bo on drm_gem_object_init failure (CVE-2017-10810) + - usb: dwc3: replace %p with %pK + - Add USB quirk for HVR-950q to avoid intermittent device resets + - usb: usbip: set buffer pointers to NULL after free + - usb: Fix typo in the definition of Endpoint[out]Request + - USB: core: fix device node leak + - [armhf] pinctrl: meson: meson8b: fix the NAND DQS pins + - [armhf,arm64] pinctrl: sunxi: Fix SPDIF function name for A83T + - pinctrl: core: Fix warning by removing bogus code + - [x86] xhci: Limit USB2 port wake support for AMD Promontory hosts + - gfs2: Fix glock rhashtable rcu bug + - Add "shutdown" to "struct class". + - tpm: Issue a TPM2_Shutdown for TPM2 devices. + - tpm: fix a kernel memory leak in tpm-sysfs.c + - [x86] uaccess: Optimize copy_user_enhanced_fast_string() for short strings + - xen: avoid deadlock in xenbus driver + - crypto: drbg - Fixes panic in wait_for_completion call + - [x86] rt286: add Thinkpad Helix 2 to force_combo_jack_table + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.11.11 + - mqueue: fix a use-after-free in sys_mq_notify() (CVE-2017-11176) + - proc: Fix proc_sys_prune_dcache to hold a sb reference + - locking/rwsem-spinlock: Fix EINTR branch in __down_write_common() + - [x86] staging: comedi: fix clean-up of comedi_class in comedi_init() + - crypto: rsa-pkcs1pad - use constant time memory comparison for MACs + - ext4: check return value of kstrtoull correctly in reserved_clusters_store + - [x86] mm/pat: Don't report PAT on CPUs that don't support it + + [ Ben Hutchings ] + * [m68k] udeb: Use only the common module list for nic-shared-modules + (fixes FTBFS) + * [sparc64] Update "Revert "sparc: move exports to definitions"" for the + addition of __multi3 (fixes FTBFS) + * binfmt_elf: use ELF_ET_DYN_BASE only for PIE (CVE-2017-1000370, + CVE-2017-1000371) + * [rt] Update to 4.11.9-rt7: + - smp/hotplug: Move unparking of percpu threads to the control CPU + - cpu_pm: replace raw_notifier to atomic_notifier + * media: Enable MEDIA_CEC_SUPPORT, VIDEO_VIVID_CEC; USB_PULSE8_CEC as module + (Closes: #868511) + * [armhf] udeb: Add sunxi_wdt to kernel-image (Closes: #866130) + * crypto: Enable CRYPTO_USER, CRYPTO_USER_API_RNG as modules (Closes: #868291) + * udeb: Add dm-raid to md-modules (Closes: #868251) + * [arm64] sound: Enable SND_HDA_INTEL as module (Closes: #867611) + * aufs: Update support patchset to aufs4.11.7+-20170703 (Closes: #867257) + * [x86] ideapad-laptop: Add various IdeaPad models to no_hw_rfkill list + (Closes: #866706) + * firmware: dmi: Add DMI_PRODUCT_FAMILY identification string + * [x86] pinctrl: cherryview: Extend the Chromebook DMI quirk to Intel_Strago + systems (Closes: #862723) + * [armhf] Add ARM Mali Midgard device tree bindings and gpu node for rk3288 + (thanks to Guillaume Tucker) (Closes: #865646) + + [ Uwe Kleine-König ] + * [arm64] enable FB_SIMPLE + + [ Vagrant Cascadian ] + * [arm64] Enable support for Rockchip systems (Closes: #860976). + + [ Salvatore Bonaccorso ] + * Bump ABI to 2 + * [rt] Update to 4.11.8-rt5 + + [ Cyril Brulebois ] + * [arm64,armhf] udeb: Ship usb3503 module in usb-modules, needed for + e.g. Arndale development boards, thanks to Wei Liu (Closes: #865645). + + -- Ben Hutchings Mon, 17 Jul 2017 03:01:21 +0100 + +linux (4.11.6-1) unstable; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.11.4 + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.11.5 + - [x86] drm/vmwgfx: limit the number of mip levels in + vmw_gb_surface_define_ioctl() (CVE-2017-7346) + - [x86] drm/vmwgfx: Make sure backup_handle is always valid (CVE-2017-9605) + - ALSA: timer: Fix race between read and ioctl (CVE-2017-1000380) + - ALSA: timer: Fix missing queue indices reset at SNDRV_TIMER_IOCTL_SELECT + (CVE-2017-1000380) + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.11.6 + + [ John Paul Adrian Glaubitz ] + * [m68k] udeb: Build affs-modules package + * [m68k] udeb: Build hfs-modules package + * [m68k] udeb: Build nic-modules package + * [m68k] udeb: Build pata-modules package + * [m68k] udeb: Build scsi-core-modules package + * [m68k] udeb: Move non-shared modules from nic-shared-modules to nic-modules + * [m68k] udeb: Add buddha, falconide, gayle, macide, q40ide to pata-modules + * [m68k] udeb: Add atari_scsi, mac_esp, mac_scsi to scsi-modules + + [ Ben Hutchings ] + * [x86] Enable SERIAL_8250_MID as built-in (Closes: #864368) + * Set ABI to 1 + * debian/rules.real: Include rules.defs before using architecture variables + (Closes: #862842) + * [rt] Update to 4.11.5-rt1 and reenable + * fs: Reenable HPFS_FS as module (Closes: #864878) + * USB: serial: option: add two Longcheer device ids (Closes: #864604) + * [armhf] PCI: Enable PCI_HOST_GENERIC (Closes: #864726) + * mm: larger stack guard gap, between vmas (CVE-2017-1000364) + + -- Ben Hutchings Tue, 20 Jun 2017 00:25:45 +0100 + +linux (4.11.3-1~exp1) experimental; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.11.1 + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.11.2 + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.11.3 + + [ Ben Hutchings ] + * [armel] udeb: Add af_packet. firmware_class, nls_base to kernel-image + (fixes FTBFS) + * [m68k] Update 'Revert "m68k: move exports to definitions"' for 4.11 + (fixes FTBFS) (Closes: #862393) + + -- Ben Hutchings Mon, 05 Jun 2017 14:13:41 +0100 + +linux (4.11-1~exp2) experimental; urgency=medium + + * [armel/marvell] Change MQ_IOSCHED_DEADLINE, FW_LOADER, HWMON, + INPUT_MOUSEDEV, THERMAL, SERIAL_8250_PCI, SERIAL_8250_EXAR, NLS, PACKET + from built-in to modules (fixes FTBFS) + * usbip: Fix potential format overflow in userspace tools (fixes FTBFS on + 64-bit architectures with gcc-7) + * [mips*/octeon] Increase RELOCATION_TABLE_SIZE to 0x00110000 (fixes FTBFS) + + -- Ben Hutchings Fri, 05 May 2017 04:35:12 +0100 + +linux (4.11-1~exp1) experimental; urgency=medium + + * New upstream release: https://kernelnewbies.org/Linux_4.11 + (thanks to Lukas Wunner for rebasing up to 4.11-rc6) + + [ Ben Hutchings ] + * aufs: Update support patchset to aufs4.x-rcN-20170410 + * [arm64,x86] Replace securelevel patch set with lockdown patch set + * [x86] Make hyperv-modules depends on nic-shared-modules, as hv_utils now + implements PTP clock + * [arm64] Enable ARCH_SUNXI, RTC_DRV_SUN6I as built-in, + MMC_SUNXI and PHY_SUN4I_USB as modules (Closes: #860855) + * [arm64] Enable REGULATOR_GPIO as module (Closes: #860222) + * block: Enable BLK_WBT, BLK_WBT_MQ (Closes: #859570) + + -- Ben Hutchings Tue, 02 May 2017 20:57:50 +0100 + +linux (4.10.7-1~exp1) experimental; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.10.1 + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.10.2 + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.10.3 + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.10.4 + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.10.5 + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.10.6 + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.10.7 + + [ Ben Hutchings ] + * netfilter: Enable NF_SOCKET_IPV4, NF_SOCKET_IPV6 as modules + (Closes: #858897) + * [s390x] Set NR_CPUS=256 (Closes: #858731) + * Enable BUG_ON_DATA_CORRUPTION + + -- Ben Hutchings Fri, 31 Mar 2017 00:41:15 +0100 + +linux (4.10-1~exp1) experimental; urgency=medium + + * New upstream release: https://kernelnewbies.org/Linux_4.10 + + [ Ben Hutchings ] + * aufs: Update support patchset to aufs4.x-rcN-20170206 + * Set ABI to trunk + + [ Roger Shimizu ] + * debian/copyright & debian/README.source: + - Prefer https URL than http for security merit. + + -- Ben Hutchings Wed, 22 Feb 2017 20:58:19 +0000 + +linux (4.10~rc6-1~exp2) experimental; urgency=medium + + * [s390x] Un-revert upstream change moving exports to assembly sources + (fixes FTBFS) + * [sparc64] topology_64.h: Fix condition for including cpudata.h + (might fix FTBFS) + * [powerpc*] Fix various build failures: + - Revert the initial stack protector support + - Fix missing CRC for _mcount + - [ppc64el] udeb: Exclude ehea from nic-modules + * debian/control: Fix compiler build-dependencies for cross-building + * [armel] Adjust configuration to reduce image size (fixes FTBFS): + - PCI: Disable PCIEAER, PCIEASPM + - net: Disable LWTUNNEL, IPV6_ILA + - trace: Disable UPROBE_EVENT + + -- Ben Hutchings Thu, 02 Feb 2017 03:44:51 +0000 + +linux (4.10~rc6-1~exp1) experimental; urgency=medium + + * New upstream release candidate + + [ Ben Hutchings ] + * [rt] Disable until it is updated for 4.10 or later + * [amd64] Enable LEGACY_VSYSCALL_NONE instead of LEGACY_VSYSCALL_EMULATE + (Closes: #852620). This breaks (e)glibc versions < 2.14 and dietlibc + versions < 0.33. It can be reverted using the kernel parameter: + vsyscall=emulate + * [arm64] Enable DRM_MESON, MMC_MESON_GX, DWMAC_MESON, MESON_GXL_PHY, + PHY_MESON8B_USB2, MESON_WATCHDOG as modules + * net: Enable SFC_FALCON as module; SFC_FALCON_MTD + * cpupower: Fix compiler options for turbostat on 4.10 + * linux-doc: Update documentation file list for 4.10 + * linux-doc: Fix up symlinks to gzipped docs + * debian/control: Add build-dependency on graphviz for documentation + * linux-doc: Copy source to build directory, to avoid creating files in + source directory + + [ Roger Shimizu ] + * debian/copyright: Add GPL/X11 Dual License + + -- Ben Hutchings Tue, 31 Jan 2017 15:33:20 +0000 + +linux (4.9.30-2) unstable; urgency=high + + * [x86] Enable SERIAL_8250_MID as built-in (Closes: #864368) + * Fix bugs introduced by original fix for CVE-2017-9074: + - ipv6: Check ip6_find_1stfragopt() return value properly. + - ipv6: xfrm: Handle errors reported by xfrm6_find_1stfragopt() + - ipv6: Fix leak in ipv6_gso_segment(). + * Revert "uapi: fix linux/if.h userspace compilation errors" (see #864269) + * [armhf] udeb: Add axp20x_usb_power to kernel-image; add i2c-modules + package including i2c-mv64xxx and i2c-rk3x (thanks to Karsten Merker) + (Closes: #856111) + * NFSv4.x/callback: Create the callback service through svc_create_pooled + (Closes: #862357) + + -- Ben Hutchings Mon, 12 Jun 2017 16:24:30 +0100 + +linux (4.9.30-1) unstable; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.9.26 + - [arm64] Revert "mmc: sdhci-msm: Enable few quirks" + - ping: implement proper locking + - [sparc64] kern_addr_valid regression + - [sparc64] Fix kernel panic due to erroneous #ifdef surrounding + pmd_write() + - net: neigh: guard against NULL solicit() method + - net: phy: handle state correctly in phy_stop_machine + - bpf: improve verifier packet range checks + - net/mlx5: Avoid dereferencing uninitialized pointer + - l2tp: hold tunnel socket when handling control frames in l2tp_ip + and l2tp_ip6 + - l2tp: purge socket queues in the .destruct() callback + - net/packet: fix overflow in check for tp_frame_nr + - net/packet: fix overflow in check for tp_reserve + - l2tp: take reference on sessions being dumped + - l2tp: fix PPP pseudo-wire auto-loading + - net: ipv4: fix multipath RTM_GETROUTE behavior when iif is given + - sctp: listen on the sock only when it's state is listening or + closed + - tcp: clear saved_syn in tcp_disconnect() + - ipv6: Fix idev->addr_list corruption + - net-timestamp: avoid use-after-free in ip_recv_error + - net: vrf: Fix setting NLM_F_EXCL flag when adding l3mdev rule + - dp83640: don't recieve time stamps twice + - gso: Validate assumption of frag_list segementation + - net: ipv6: RTF_PCPU should not be settable from userspace + - netpoll: Check for skb->queue_mapping + - ip6mr: fix notification device destruction + - net/mlx5: Fix driver load bad flow when having fw + initializing timeout + - net/mlx5e: Fix small packet threshold + - net/mlx5e: Fix ETHTOOL_GRXCLSRLALL handling + - macvlan: Fix device ref leak when purging bc_queue + - net: ipv6: regenerate host route if moved to gc list + - net: phy: fix auto-negotiation stall due to unavailable interrupt + - ipv6: check skb->protocol before lookup for nexthop + - tcp: memset ca_priv data to 0 properly + - ipv6: check raw payload size correctly in ioctl + - ALSA: oxfw: fix regression to handle Stanton SCS.1m/1d + - ALSA: firewire-lib: fix inappropriate assignment between + signed/unsigned type + - ALSA: seq: Don't break snd_use_lock_sync() loop by timeout + - [mips*] KGDB: Use kernel context for sleeping threads + - [mips*] Avoid BUG warning in arch_check_elf + - p9_client_readdir() fix + - [x86] ASoC: intel: Fix PM and non-atomic crash in bytcr drivers + - Input: i8042 - add Clevo P650RS to the i8042 reset list + - nfsd: check for oversized NFSv2/v3 arguments + - nfsd4: minor NFSv2/v3 write decoding cleanup + - nfsd: stricter decoding of write-like NFSv2/v3 ops + - ceph: fix recursion between ceph_set_acl() and __ceph_setattr() + - macsec: avoid heap overflow in skb_to_sgvec + - net: can: usb: gs_usb: Fix buffer on stack + - [x86] ftrace: Fix triple fault with graph tracing and suspend-to-ram + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.9.27 + - timerfd: Protect the might cancel mechanism proper + - Handle mismatched open calls + - [x86] tpm_tis: use default timeout value if chip reports it as zero + - scsi: storvsc: Workaround for virtual DVD SCSI version + - [powerpc, x86] hwmon: (it87) Avoid registering the same chip on both SIO + addresses + - 8250_pci: Fix potential use-after-free in error path + - ceph: try getting buffer capability for readahead/fadvise + - cpu/hotplug: Serialize callback invocations proper + - dm ioctl: prevent stack leak in dm ioctl call + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.9.28 + - 9p: fix a potential acl leak + - hwmon: (it87) Fix pwm4 detection for IT8620 and IT8628 + - [x86] tpm: fix RC value check in tpm2_seal_trusted + - [x86] tmp: use pdev for parent device in tpm_chip_alloc + - cpupower: Fix turbo frequency reporting for pre-Sandy Bridge cores + - [powerpc*] mm: Fixup wrong LPCR_VRMASD value + - [powerpc*] powernv: Fix opal_exit tracepoint opcode + - [powerpc*] Correctly disable latent entropy GCC plugin on + prom_init.o + - [x86] perf/x86/intel/pt: Add format strings for PTWRITE and power + event tracing + - [arm64] dts: r8a7795: Mark EthernetAVB device node disabled + - [arm64] dts: qcom: Fix ipq board clock rates + - [arm64] Improve detection of user/non-user mappings in + set_pte(_at) + - [armhf] OMAP5 / DRA7: Fix HYP mode boot for thumb2 build + - [armhf] dts: sun7i: lamobo-r1: Fix CPU port RGMII settings + - mwifiex: debugfs: Fix (sometimes) off-by-1 SSID print + - mwifiex: remove redundant dma padding in AMSDU + - mwifiex: Avoid skipping WEP key deletion for AP + - iwlwifi: fix MODULE_FIRMWARE for 6030 + - iwlwifi: mvm: don't restart HW if suspend fails with unified image + - iwlwifi: mvm: overwrite skb info later + - iwlwifi: pcie: don't increment / decrement a bool + - iwlwifi: pcie: trans: Remove unused 'shift_param' + - iwlwifi: pcie: fix the set of DMA memory mask + - iwlwifi: mvm: fix reorder timer re-arming + - iwlwifi: mvm: Use aux queue for offchannel frames in dqa + - iwlwifi: mvm/pcie: adjust A-MSDU tx_cmd length in PCIe + - iwlwifi: mvm: fix pending frame counter calculation + - iwlwifi: mvm: fix references to first_agg_queue in DQA mode + - iwlwifi: mvm: synchronize firmware DMA paging memory + - iwlwifi: mvm: writing zero bytes to debugfs causes a crash + - [x86] ioapic: Restore IO-APIC irq_chip retrigger callback + - [amd64] x86/pci-calgary: Fix iommu_free() comparison of unsigned + expression >= 0 + - [x86] kprobes/x86: Fix kernel panic when certain exception- + handling addresses are probed + - [x86] platform/intel-mid: Correct MSI IRQ line for watchdog device + - [x86] KVM: nVMX: initialize PML fields in vmcs02 + - [x86] KVM: nVMX: do not leak PML full vmexit to L1 + - [arm64, armhf] usb: dwc2: host: use msleep() for long delay + - [armhf] usb: host: ehci-exynos: Decrese node refcount on + exynos_ehci_get_phy() error paths + - [armhf] usb: host: ohci-exynos: Decrese node refcount on + exynos_ehci_get_phy() error paths + - [arm64, armhf] usb: chipidea: Only read/write OTGSC from one place + - [arm64, armhf] usb: chipidea: Handle extcon events properly + - USB: serial: keyspan_pda: fix receive sanity checks + - USB: serial: digi_acceleport: fix incomplete rx sanity check + - USB: serial: ssu100: fix control-message error handling + - USB: serial: io_edgeport: fix epic-descriptor handling + - USB: serial: ti_usb_3410_5052: fix control-message error handling + - USB: serial: ark3116: fix open error handling + - USB: serial: ftdi_sio: fix latency-timer error handling + - USB: serial: quatech2: fix control-message error handling + - USB: serial: mct_u232: fix modem-status error handling + - USB: serial: io_edgeport: fix descriptor error handling + - [armhf] clk: rockchip: add "," to + mux_pll_src_apll_dpll_gpll_usb480m_p on rk3036 + - phy: qcom-usb-hs: Add depends on EXTCON + - scsi: qla2xxx: Fix crash in qla2xxx_eh_abort on bad ptr + - scsi: mac_scsi: Fix MAC_SCSI=m option when SCSI=m + - scsi: smartpqi: fix time handling + - [mips*] R2-on-R6 MULTU/MADDU/MSUBU emulation bugfix + - brcmfmac: Ensure pointer correctly set if skb data location + changes + - brcmfmac: Make skb header writable before use + - [x86] staging/lustre/llite: move root_squash from sysfs to debugfs + - [x86] staging: wlan-ng: add missing byte order conversion + - ALSA: hda - Fix deadlock of controller device lock at unbinding + - [sparc64] fix fault handling in NGbzero.S and GENbzero.S + - macsec: dynamically allocate space for sglist + - tcp: do not underestimate skb->truesize in tcp_trim_head() + - bpf: enhance verifier to understand stack pointer arithmetic + - [arm64] bpf: fix jit branch offset related to ldimm64 + - tcp: fix wraparound issue in tcp_lp + - net: ipv6: Do not duplicate DAD on link up + - net: usb: qmi_wwan: add Telit ME910 support + - tcp: do not inherit fastopen_req from parent + - ipv4, ipv6: ensure raw socket message is big enough to hold + an IP header + - rtnetlink: NUL-terminate IFLA_PHYS_PORT_NAME string + - ipv6: initialize route null entry in addrconf_init() + - ipv6: reorder ip6_route_dev_notifier after ipv6_dev_notf + - bnxt_en: allocate enough space for ->ntp_fltr_bmap + - bpf: don't let ldimm64 leak map addresses on unprivileged + (CVE-2017-9150) + - f2fs: sanity check segment count + - xen: Revert commits da72ff5bfcb0 and 72a9b186292d + - [arm64, armhf] wlcore: Pass win_size taken from + ieee80211_sta to FW + - [arm64, armhf] wlcore: Add RX_BA_WIN_SIZE_CHANGE_EVENT event + - drm/ttm: fix use-after-free races in vm fault handling + - block: get rid of blk_integrity_revalidate() + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.9.29 + - [x86] xen: adjust early dom0 p2m handling to xen hypervisor behavior + - target: Fix compare_and_write_callback handling for non GOOD status + - target/fileio: Fix zero-length READ and WRITE handling + - iscsi-target: Set session_fall_back_to_erl0 when forcing reinstatement + - usb: xhci: bInterval quirk for TI TUSB73x0 + - usb: host: xhci: print correct command ring address + - USB: Proper handling of Race Condition when two USB class drivers try to + call init_usb_class simultaneously + - USB: Revert "cdc-wdm: fix "out-of-sync" due to missing notifications" + - [x86] staging: vt6656: use off stack for in buffer USB transfers. + - [x86] staging: vt6656: use off stack for out buffer USB transfers. + - [x86] staging: comedi: jr3_pci: fix possible null pointer dereference + - [x86] staging: comedi: jr3_pci: cope with jiffies wraparound + - usb: misc: add missing continue in switch + - usb: gadget: legacy gadgets are optional + - usb: Make sure usb/phy/of gets built-in + - usb: hub: Fix error loop seen after hub communication errors + - usb: hub: Do not attempt to autosuspend disconnected devices + - [x86] boot: Fix BSS corruption/overwrite bug in early x86 kernel startup + - [amd64] pmem: Fix cache flushing for iovec write < 8 bytes + - [x86] perf: Fix Broadwell-EP DRAM RAPL events + - [x86] KVM: fix user triggerable warning in kvm_apic_accept_events() + - [armhf,arm64] KVM: fix races in kvm_psci_vcpu_on + - [arm64] KVM: Fix decoding of Rt/Rt2 when trapping AArch32 CP accesses + - block: fix blk_integrity_register to use template's interval_exp if not 0 + - crypto: algif_aead - Require setkey before accept(2) + - [x86] crypto: ccp - Use only the relevant interrupt bits + - [x86] crypto: ccp - Disable interrupts early on unload + - [x86] crypto: ccp - Change ISR handler method for a v3 CCP + - [x86] crypto: ccp - Change ISR handler method for a v5 CCP + - dm era: save spacemap metadata root after the pre-commit + - dm rq: check blk_mq_register_dev() return value in + dm_mq_init_request_queue() + - dm thin: fix a memory leak when passing discard bio down + - vfio/type1: Remove locked page accounting workqueue + - iov_iter: don't revert iov buffer if csum error + - IB/core: Fix sysfs registration error flow + - IB/core: For multicast functions, verify that LIDs are multicast LIDs + - IB/IPoIB: ibX: failed to create mcg debug file + - IB/mlx4: Fix ib device initialization error flow + - IB/mlx4: Reduce SRIOV multicast cleanup warning message to debug level + - IB/hfi1: Prevent kernel QP post send hard lockups + - perf auxtrace: Fix no_size logic in addr_filter__resolve_kernel_syms() + - ext4: evict inline data when writing to memory map + - fs/xattr.c: zero out memory copied to userspace in getxattr + - ceph: fix memory leak in __ceph_setxattr() + - fs/block_dev: always invalidate cleancache in invalidate_bdev() + - mm: prevent potential recursive reclaim due to clearing PF_MEMALLOC + - Fix match_prepath() + - Set unicode flag on cifs echo request to avoid Mac error + - SMB3: Work around mount failure when using SMB3 dialect to Macs + - CIFS: fix mapping of SFM_SPACE and SFM_PERIOD + - cifs: fix leak in FSCTL_ENUM_SNAPS response handling + - cifs: fix CIFS_ENUMERATE_SNAPSHOTS oops + - CIFS: fix oplock break deadlocks + - cifs: fix CIFS_IOC_GET_MNT_INFO oops + - CIFS: add misssing SFM mapping for doublequote + - padata: free correct variable + - device-dax: fix cdev leak + - fscrypt: fix context consistency check when key(s) unavailable + - [armhf] serial: samsung: Use right device for DMA-mapping calls + - [armhf] serial: omap: fix runtime-pm handling on unbind + - [armhf] serial: omap: suspend device on probe errors + - tty: pty: Fix ldisc flush after userspace become aware of the data already + - Bluetooth: Fix user channel for 32bit userspace on 64bit kernel + - Bluetooth: hci_bcm: add missing tty-device sanity check + - Bluetooth: hci_intel: add missing tty-device sanity check + - ipmi: Fix kernel panic at ipmi_ssif_thread() + - libnvdimm, region: fix flush hint detection crash + - libnvdimm, pmem: fix a NULL pointer BUG in nd_pmem_notify + - libnvdimm, pfn: fix 'npfns' vs section alignment + - [powerpc*/*64*] pstore: Fix flags to enable dumps on powerpc + - pstore: Shut down worker when unregistering + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.9.30 + - usb: misc: legousbtower: Fix buffers on stack + - usb: misc: legousbtower: Fix memory leak + - USB: ene_usb6250: fix DMA to the stack + - watchdog: pcwd_usb: fix NULL-deref at probe + - char: lp: fix possible integer overflow in lp_setup() (CVE-2017-1000363) + - USB: core: replace %p with %pK + - tpm_tis_core: Choose appropriate timeout for reading burstcount + - ALSA: hda: Fix cpu lockup when stopping the cmd dmas + - [armhf] tegra: paz00: Mark panel regulator as enabled on boot + - fanotify: don't expose EOPENSTALE to userspace + - tpm_tis_spi: Use single function to transfer data + - tpm_tis_spi: Abort transfer when too many wait states are signaled + - tpm_tis_spi: Check correct byte for wait state indicator + - tpm_tis_spi: Remove limitation of transfers to MAX_SPI_FRAMESIZE bytes + - tpm_tis_spi: Add small delay after last transfer + - tpm: msleep() delays - replace with usleep_range() in i2c nuvoton driver + - tpm: add sleep only for retry in i2c_nuvoton_write_status() + - tpm_crb: check for bad response size + - mlx5: Fix mlx5_ib_map_mr_sg mr length + - infiniband: call ipv6 route lookup via the stub interface + - dm btree: fix for dm_btree_find_lowest_key() + - dm raid: select the Kconfig option CONFIG_MD_RAID0 + - dm bufio: avoid a possible ABBA deadlock + - dm bufio: check new buffer allocation watermark every 30 seconds + - dm mpath: split and rename activate_path() to prepare for its expanded use + - dm cache metadata: fail operations if fail_io mode has been established + - dm bufio: make the parameter "retain_bytes" unsigned long + - dm thin metadata: call precommit before saving the roots + - dm space map disk: fix some book keeping in the disk space map + - md: update slab_cache before releasing new stripes when stripes resizing + - md: MD_CLOSING needs to be cleared after called md_set_readonly or + do_md_stop + - rtlwifi: rtl8821ae: setup 8812ae RFE according to device type + - mwifiex: MAC randomization should not be persistent + - mwifiex: pcie: fix cmd_buf use-after-free in remove/reset + - ima: accept previously set IMA_NEW_FILE + - [x86] KVM: Fix load damaged SSEx MXCSR register + - [x86] KVM: Fix potential preemption when get the current kvmclock + timestamp + - [x86] KVM: Fix read out-of-bounds vulnerability in kvm pio emulation + - [i386] fix 32-bit case of __get_user_asm_u64() + - [armhf] regulator: rk808: Fix RK818 LDO2 + - [s390x] kdump: Add final note + - [s390x] cputime: fix incorrect system time + - ath9k_htc: Add support of AirTies 1eda:2315 AR9271 device + - ath9k_htc: fix NULL-deref at probe + - [x86] drm/amdgpu: Make display watermark calculations more accurate + - [x86] drm/amdgpu: Avoid overflows/divide-by-zero in latency_watermark + calculations. + - [x86] drm/amdgpu: Add missing lb_vblank_lead_lines setup to DCE-6 path. + - drm/nouveau/therm: remove ineffective workarounds for alarm bugs + - drm/nouveau/tmr: ack interrupt before processing alarms + - drm/nouveau/tmr: fix corruption of the pending list when rescheduling an + alarm + - drm/nouveau/tmr: avoid processing completed alarms when adding a new one + - drm/nouveau/tmr: handle races with hw when updating the next alarm time + - [armhf] gpio: omap: return error if requested debounce time is not + possible + - cdc-acm: fix possible invalid access when processing notification + - ohci-pci: add qemu quirk + - [powerpc*] cxl: Force context lock during EEH flow + - [powerpc*] cxl: Route eeh events to all drivers in + cxl_pci_error_detected() + - proc: Fix unbalanced hard link numbers + - of: fix sparse warning in of_pci_range_parser_one + - of: fix "/cpus" reference leak in of_numa_parse_cpu_nodes() + - of: fdt: add missing allocation-failure check + - [powerpc*/*64*] ibmvscsis: Do not send aborted task response + - [x86] IIO: bmp280-core.c: fix error in humidity calculation + - IB/hfi1: Return an error on memory allocation failure + - IB/hfi1: Fix a subcontext memory leak + - pid_ns: Sleep in TASK_INTERRUPTIBLE in zap_pid_ns_processes + - pid_ns: Fix race between setns'ed fork() and zap_pid_ns_processes() + - USB: serial: ftdi_sio: fix setting latency for unprivileged users + - USB: serial: ftdi_sio: add Olimex ARM-USB-TINY(H) PIDs + - USB: chaoskey: fix Alea quirk on big-endian hosts + - f2fs: check entire encrypted bigname when finding a dentry + - fscrypt: avoid collisions when presenting long encrypted filenames + - libnvdimm: fix clear length of nvdimm_forget_poison() + - xhci: remove GFP_DMA flag from allocation + - usb: host: xhci-plat: propagate return value of platform_get_irq() + - xhci: apply PME_STUCK_QUIRK and MISSING_CAS quirk for Denverton + - usb: host: xhci-mem: allocate zeroed Scratchpad Buffer + - net: irda: irda-usb: fix firmware name on big-endian hosts + - usbvision: fix NULL-deref at probe + - mceusb: fix NULL-deref at probe + - ttusb2: limit messages to buffer size + - [armhf,arm64] usb: dwc3: gadget: Prevent losing events in event cache + - [armhf] usb: musb: tusb6010_omap: Do not reset the other direction's + packet size + - [armhf] usb: musb: Fix trying to suspend while active for OTG + configurations + - USB: iowarrior: fix info ioctl on big-endian hosts + - usb: serial: option: add Telit ME910 support + - USB: serial: qcserial: add more Lenovo EM74xx device IDs + - USB: serial: mct_u232: fix big-endian baud-rate handling + - USB: serial: io_ti: fix div-by-zero in set_termios + - USB: hub: fix SS hub-descriptor handling + - USB: hub: fix non-SS hub-descriptor handling + - ipx: call ipxitf_put() in ioctl error path (CVE-2017-7487) + - iio: hid-sensor: Store restore poll and hysteresis on S3 + - gspca: konica: add missing endpoint sanity check + - dib0700: fix NULL-deref at probe + - zr364xx: enforce minimum size when reading header + - dvb-frontends/cxd2841er: define symbol_rate_min/max in T/C fe-ops + - digitv: limit messages to buffer size + - dw2102: limit messages to buffer size + - cx231xx-audio: fix init error path + - cx231xx-audio: fix NULL-deref at probe + - cx231xx-cards: fix NULL-deref at probe + - [powerpc*] mm: Ensure IRQs are off in switch_mm() + - [powerpc*] eeh: Avoid use after free in eeh_handle_special_event() + - [powerpc*] book3s/mce: Move add_taint() later in virtual mode + - [powerpc*] pseries: Fix of_node_put() underflow during DLPAR remove + - [powerpc*] iommu: Do not call PageTransHuge() on tail pages + - [powerpc*] tm: Fix FP and VMX register corruption + - [arm64] KVM: Do not use stack-protector to compile EL2 code + - [armhf] KVM: Do not use stack-protector to compile HYP code + - [armhf] KVM: plug potential guest hardware debug leakage + - [armel,armhf] 8662/1: module: split core and init PLT sections + - [armhf] dts: imx6sx-sdb: Remove OPP override + - [arm64] dts: hi6220: Reset the mmc hosts + - [arm64] xchg: hazard against entire exchange variable + - [arm64] ensure extension of smp_store_release value + - [arm64] armv8_deprecated: ensure extension of addr + - [arm64] uaccess: ensure extension of access_ok() addr + - [arm64] documentation: document tagged pointer stack constraints + - [x86] staging: rtl8192e: rtl92e_fill_tx_desc fix write to mapped out + memory. + - [x86] staging: rtl8192e: fix 2 byte alignment of register BSSIDR. + - [x86] staging: rtl8192e: rtl92e_get_eeprom_size Fix read size of + EPROM_CMD. + - [x86] staging: rtl8192e: GetTs Fix invalid TID 7 warning. + - [x86] iommu/vt-d: Flush the IOTLB to get rid of the initial kdump mappings + - stackprotector: Increase the per-task stack canary's random range from 32 + bits to 64 bits on 64-bit platforms + - uwb: fix device quirk on big-endian hosts + - genirq: Fix chained interrupt data ordering + - nvme: unmap CMB and remove sysfs file in reset path + - [alpha] osf_wait4(): fix infoleak + - tracing/kprobes: Enforce kprobes teardown after testing + - [x86] PCI: hv: Allocate interrupt descriptors with GFP_ATOMIC + - [x86] PCI: hv: Specify CPU_AFFINITY_ALL for MSI affinity when >= 32 CPUs + - PCI: Fix pci_mmap_fits() for HAVE_PCI_RESOURCE_TO_USER platforms + - PCI: Fix another sanity check bug in /proc/pci mmap + - PCI: Only allow WC mmap on prefetchable resources + - PCI: Freeze PME scan before suspending devices + - [armel,armhf] mtd: nand: orion: fix clk handling + - [armhf] mtd: nand: omap2: Fix partition creation via cmdline mtdparts + - mtd: nand: add ooblayout for old hamming layout + - [x86] drm/edid: Add 10 bpc quirk for LGD 764 panel in HP zBook 17 G2 + - NFSv4: Fix a hang in OPEN related to server reboot + - NFS: Fix use after free in write error path + - NFS: Use GFP_NOIO for two allocations in writeback + - nfsd: fix undefined behavior in nfsd4_layout_verify + - nfsd: encoders mustn't use unitialized values in error cases + - drivers: char: mem: Check for address space wraparound with mmap() + - [x86] drm/i915/gvt: Disable access to stolen memory as a guest + + [ Aurelien Jarno ] + * [mips*/*-malta] Enable POWER_RESET and POWER_RESET_SYSCON. + + [ Uwe Kleine-König ] + * [arm64] Enable DRM modules (Closes: #863344) + * Ignore ABI changes in chipidea driver + + [ Ben Hutchings ] + * Ignore ABI changes in ccp and hid-sensors + * [mips*el/loongson-3] Revert "MIPS: Loongson-3: Select + MIPS_L1_CACHE_SHIFT_6" to avoid ABI change + * SUNRPC: Refactor svc_set_num_threads() + * NFSv4: Fix callback server shutdown (CVE-2017-9059) (Closes: #862357) + * uapi: fix linux/if.h userspace compilation errors (see #822393, #824442) + * debian/control: Fix compiler build-dependencies for cross-building + (Closes: #863907) + * Add Debian package version to "hung task" log messages + * btrfs: warn about RAID5/6 being experimental at mount time (Closes: #863290) + * [x86] pinctrl: cherryview: Add a quirk to make Acer Chromebook keyboard + work again (Closes: #862723) + * [arm64] serial: pl011: add console matching function (Closes: #861898) + * [rt] Add new GPG subkeys for Sebastian Andrzej Siewior + * [rt] Update to 4.9.30-rt20: + - rtmutex: Deboost before waking up the top waiter + - sched/rtmutex/deadline: Fix a PI crash for deadline tasks + - sched/deadline/rtmutex: Dont miss the dl_runtime/dl_period update + - rtmutex: Clean up + - sched/rtmutex: Refactor rt_mutex_setprio() + - sched,tracing: Update trace_sched_pi_setprio() + - rtmutex: Fix PI chain order integrity + - rtmutex: Fix more prio comparisons + - rtmutex: Plug preempt count leak in rt_mutex_futex_unlock() + - futex: Avoid freeing an active timer + - futex: Fix small (and harmless looking) inconsistencies + - futex,rt_mutex: Fix rt_mutex_cleanup_proxy_lock() + - Revert "timers: Don't wake ktimersoftd on every tick" + - futex/rtmutex: Cure RT double blocking issue + - random: avoid preempt_disable()ed section + + [ Salvatore Bonaccorso ] + * tracing: Use strlcpy() instead of strcpy() in __trace_find_cmdline() + (CVE-2017-0605) + * dccp/tcp: do not inherit mc_list from parent (CVE-2017-8890) + * ipv6: Prevent overrun when parsing v6 header options (CVE-2017-9074) + * sctp: do not inherit ipv6_{mc|ac|fl}_list from parent (CVE-2017-9075) + * ipv6/dccp: do not inherit ipv6_mc_list from parent (CVE-2017-9076, + CVE-2017-9077) + * crypto: skcipher - Add missing API setkey checks (CVE-2017-9211) + * ipv6: fix out of bound writes in __ip6_append_data() (CVE-2017-9242) + + [ Cyril Brulebois ] + * udeb: Add efivarfs to efi-modules, which can be needed to retrieve + firmware or configuration bits from d-i. (Closes: #862555) + + [ John Paul Adrian Glaubitz ] + * [m68k] udeb: Build loop-modules package (Closes: #862813) + + -- Ben Hutchings Sun, 04 Jun 2017 03:03:01 +0100 + +linux (4.9.25-1) unstable; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.9.19 + - net/openvswitch: Set the ipv6 source tunnel key address attribute + correctly + - net: properly release sk_frag.page + - [arm64] amd-xgbe: Fix jumbo MTU processing on newer hardware + - openvswitch: Add missing case OVS_TUNNEL_KEY_ATTR_PAD + - net: unix: properly re-increment inflight counter of GC discarded + candidates + - net: vrf: Reset rt6i_idev in local dst after put + - net/mlx5: Add missing entries for set/query rate limit commands + - net/mlx5e: Use the proper UAPI values when offloading TC vlan actions + - net/mlx5: Increase number of max QPs in default profile + - net/mlx5e: Count GSO/LRO packets correctly + - ipv6: make sure to initialize sockc.tsflags before first use + - ipv4: provide stronger user input validation in nl_fib_input() + - socket, bpf: fix sk_filter use after free in sk_clone_lock + - tcp: initialize icsk_ack.lrcvtime at session start time + - Input: iforce,ims-pcu,hanwang,yealink,cm109,kbtab,sur40 - validate + number of endpoints before using them + - ALSA: seq: Fix racy cell insertions during snd_seq_pool_done() + - ALSA: ctxfi: Fix the incorrect check of dma_set_mask() call + - ALSA: hda - Adding a group of pin definition to fix headset problem + - ACM gadget: fix endianness in notifications + - usb: gadget: f_uvc: Fix SuperSpeed companion descriptor's + wBytesPerInterval + - USB: uss720,idmouse,wusbcore: fix NULL-deref at probe + - usb: musb: cppi41: don't check early-TX-interrupt for Isoch transfer + - usb: hub: Fix crash after failure to read BOS descriptor + - USB: usbtmc: add missing endpoint sanity check + - USB: usbtmc: fix probe error path + - uwb: i1480-dfu: fix NULL-deref at probe + - mmc: ushc: fix NULL-deref at probe + - [armhf[ iio: adc: ti_am335x_adc: fix fifo overrun recovery + - iio: sw-device: Fix config group initialization + - iio: hid-sensor-trigger: Change get poll value function order to avoid + sensor properties losing after resume from S3 + - parport: fix attempt to write duplicate procfiles + - ext4: mark inode dirty after converting inline directory + - ext4: lock the xattr block before checksuming it + - [powerpc*/*64*] Fix idle wakeup potential to clobber registers + - mmc: sdhci: Do not disable interrupts while waiting for clock + - mmc: sdhci-pci: Do not disable interrupts in sdhci_intel_set_power + - [x86] hwrng: amd - Revert managed API changes + - [x86] hwrng: geode - Revert managed API changes + - [armhf] clk: sunxi-ng: sun6i: Fix enable bit offset for hdmi-ddc module + clock + - [armhf] clk: sunxi-ng: mp: Adjust parent rate for pre-dividers + - mwifiex: pcie: don't leak DMA buffers when removing + - [x86] crypto: ccp - Assign DMA commands to the channel's CCP + - xen/acpi: upload PM state from init-domain to Xen + - [x86] iommu/vt-d: Fix NULL pointer dereference in device_to_iommu + - [arm64] kaslr: Fix up the kernel image alignment + - cpufreq: Restore policy min/max limits on CPU online + - cgroup, net_cls: iterate the fds of only the tasks which are being + migrated + - blk-mq: don't complete un-started request in timeout handler + - [x86] drm/amdgpu: reinstate oland workaround for sclk + - jbd2: don't leak memory if setting up journal fails + - [x86] intel_th: Don't leak module refcount on failure to activate + - [x86] Drivers: hv: vmbus: Don't leak channel ids + - [x86] Drivers: hv: vmbus: Don't leak memory when a channel is rescinded + - libceph: don't set weight to IN when OSD is destroyed + - [x86] device-dax: fix pmd/pte fault fallback handling + - [armhf] drm/bridge: analogix dp: Fix runtime PM state on driver bind + - nl80211: fix dumpit error path RTNL deadlocks + - drm: reference count event->completion + - fbcon: Fix vc attr at deinit + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.9.20 + - xfrm: policy: init locks early + - [x86] KVM: cleanup the page tracking SRCU instance + - virtio_balloon: init 1st buffer in stats vq + - [mips*] ptrace: Preserve previous registers for short regset write + - [sparc64] ptrace: Preserve previous registers for short regset write + - fscrypt: remove broken support for detecting keyring key revocation + (CVE-2017-7374) + - sched/rt: Add a missing rescheduling point + - [armhf] usb: musb: fix possible spinlock deadlock + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.9.21 + - libceph: force GFP_NOIO for socket allocations + - xen/setup: Don't relocate p2m over existing one + - xfs: only update mount/resv fields on success in __xfs_ag_resv_init + - xfs: use per-AG reservations for the finobt + - xfs: pull up iolock from xfs_free_eofblocks() + - xfs: sync eofblocks scans under iolock are livelock prone + - xfs: fix eofblocks race with file extending async dio writes + - xfs: fix toctou race when locking an inode to access the data map + - xfs: fail _dir_open when readahead fails + - xfs: filter out obviously bad btree pointers + - xfs: check for obviously bad level values in the bmbt root + - xfs: verify free block header fields + - xfs: allow unwritten extents in the CoW fork + - xfs: mark speculative prealloc CoW fork extents unwritten + - xfs: reset b_first_retry_time when clear the retry status of xfs_buf_t + - xfs: update ctime and mtime on clone destinatation inodes + - xfs: reject all unaligned direct writes to reflinked files + - xfs: don't fail xfs_extent_busy allocation + - xfs: handle indlen shortage on delalloc extent merge + - xfs: split indlen reservations fairly when under reserved + - xfs: fix uninitialized variable in _reflink_convert_cow + - xfs: don't reserve blocks for right shift transactions + - xfs: Use xfs_icluster_size_fsb() to calculate inode chunk alignment + - xfs: tune down agno asserts in the bmap code + - xfs: only reclaim unwritten COW extents periodically + - xfs: fix and streamline error handling in xfs_end_io + - xfs: Use xfs_icluster_size_fsb() to calculate inode alignment mask + - xfs: use iomap new flag for newly allocated delalloc blocks + - xfs: try any AG when allocating the first btree block when reflinking + - scsi: libsas: fix ata xfer length + - scsi: scsi_dh_alua: Check scsi_device_get() return value + - scsi: scsi_dh_alua: Ensure that alua_activate() calls the completion + function + - ALSA: seq: Fix race during FIFO resize + - ALSA: hda - fix a problem for lineout on a Dell AIO machine + - [x86] ASoC: Intel: Skylake: fix invalid memory access due to wrong + reference of pointer + - HID: wacom: Don't add ghost interface as shared data + - mmc: sdhci: Disable runtime pm when the sdio_irq is enabled + - NFSv4.1 fix infinite loop on IO BAD_STATEID error + - nfsd: map the ENOKEY to nfserr_perm for avoiding warning + - [hppa] Clean up fixup routines for get_user()/put_user() + - [hppa] Avoid stalled CPU warnings after system shutdown + - [hppa] Fix access fault handling in pa_memcpy() + - ACPI: Fix incompatibility with mcount-based function graph tracing + - ACPI: Do not create a platform_device for IOAPIC/IOxAPIC + - USB: fix linked-list corruption in rh_call_control() + - [x86] KVM: clear bus pointer when destroyed + - KVM: kvm_io_bus_unregister_dev() should never fail + - drm/radeon: Override fpfn for all VRAM placements in radeon_evict_flags + - [armhf,arm64] drm/vc4: Allocate the right amount of space for boot-time + CRTC state. + - [armhf] drm/etnaviv: (re-)protect fence allocation with GPU mutex + - [x86] mm/KASLR: Exclude EFI region from KASLR VA space randomization + - [x86] mce: Fix copy/paste error in exception table entries + - lib/syscall: Clear return values when no stack + - mm: rmap: fix huge file mmap accounting in the memcg stats + - mm, hugetlb: use pte_present() instead of pmd_present() in + follow_huge_pmd() + - qla2xxx: Allow vref count to timeout on vport delete. + - mm: workingset: fix premature shadow node shrinking with cgroups + - blk: improve order of bio handling in generic_make_request() + - blk: Ensure users for current->bio_list can see the full list. + - padata: avoid race in reordering + - nvme/core: Fix race kicking freed request_queue + - nvme/pci: Disable on removal when disconnected + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.9.22 + - ppdev: check before attaching port + - ppdev: fix registering same device name + - [x86] drm/vmwgfx: Type-check lookups of fence objects + - [x86] drm/vmwgfx: avoid calling vzalloc with a 0 size in + vmw_get_cap_3d_ioctl() + - drm/ttm, drm/vmwgfx: Relax permission checking when opening surfaces + - [x86] drm/vmwgfx: Remove getparam error message + - sysfs: be careful of error returns from ops->show() + - [armhf,arm64] KVM: Take mmap_sem in stage2_unmap_vm + - [armhf,arm64] KVM: Take mmap_sem in kvm_arch_prepare_memory_region + - [armhf,arm64] kvm: Fix locking for kvm_free_stage2_pgd + - [x86] iio: bmg160: reset chip when probing + - [arm64] mm: unaligned access by user-land should be received as SIGBUS + - cfg80211: check rdev resume callback only for registered wiphy + - CIFS: Reset TreeId to zero on SMB2 TREE_CONNECT + - mm/page_alloc.c: fix print order in show_free_areas() + - ptrace: fix PTRACE_LISTEN race corrupting task->state + - dm verity fec: limit error correction recursion + - dm verity fec: fix bufio leaks + - ACPI / gpio: do not fall back to parsing _CRS when we get a deferral + - xfs: Honor FALLOC_FL_KEEP_SIZE when punching ends of files + - ring-buffer: Fix return value check in test_ringbuffer() + - mac80211: unconditionally start new netdev queues with iTXQ support + - brcmfmac: use local iftype avoiding use-after-free of virtual interface + - [powerpc*] Disable HFSCR[TM] if TM is not supported + - [powerpc*] mm: Add missing global TLB invalidate if cxl is active + - [powerpc*/*64*]: Fix flush_(d|i)cache_range() called from modules + - [powerpc*] Don't try to fix up misaligned load-with-reservation + instructions + - [powerpc*] crypto/crc32c-vpmsum: Fix missing preempt_disable() + - dm raid: fix NULL pointer dereference for raid1 without bitmap + - [s390x] decompressor: fix initrd corruption caused by bss clear + - [s390x] uaccess: get_user() should zero on failure (again) + - [mips*el/loongson-3] Check TLB before handle_ri_rdhwr() for Loongson-3 + - [mips*el/loongson-3] Add MIPS_CPU_FTLB for Loongson-3A R2 + - [mips*el/loongson-3] Flush wrong invalid FTLB entry for huge page + - [mips*el/loongson-3] c-r4k: Fix Loongson-3's vcache/scache waysize + calculation + - mm/mempolicy.c: fix error handling in set_mempolicy and mbind + (CVE-2017-7616) + - random: use chacha20 for get_random_int/long + - [armhf] drm/sun4i: tcon: Move SoC specific quirks to a DT matched data + structure + - [armhf] drm/sun4i: Add compatible strings for A31/A31s display pipelines + - [armhf] drm/sun4i: Add compatible string for A31/A31s TCON (timing + controller) + - HID: i2c-hid: add a simple quirk to fix device defects + - usb: dwc3: gadget: delay unmap of bounced requests + - [x86] ASoC: Intel: bytct_rt5640: change default capture settings + - [armhf,arm64] clocksource/drivers/arm_arch_timer: Don't assume clock runs + in suspend + - scsi: ufs: introduce UFSHCD_QUIRK_PRDT_BYTE_GRAN quirk + - HID: multitouch: do not retrieve all reports for all devices + - [arm64] mmc: sdhci-msm: Enable few quirks + - scsi: ufs: ensure that host pa_tactivate is higher than device + - svcauth_gss: Close connection when dropping an incoming message + - scsi: ufs: add quirk to increase host PA_SaveConfigTime + - [x86] platform: acer-wmi: Only supports AMW0_GUID1 on acer family + - nvme: simplify stripe quirk + - ACPI / sysfs: Provide quirk mechanism to prevent GPE flooding + - HID: usbhid: Add quirk for the Futaba TOSD-5711BB VFD + - [x86] drm/i915: actually drive the BDW reserved IDs + - scsi: ufs: issue link starup 2 times if device isn't active + - [armhf] serial: 8250_omap: Add OMAP_DMA_TX_KICK quirk for AM437x + - ACPI / button: Change default behavior to lid_init_state=open + - [x86] ACPI: save NVS memory for Lenovo G50-45 + - HID: wacom: don't apply generic settings to old devices + - [arm64] firmware: qcom: scm: Fix interrupted SCM calls + - [armhf] watchdog: s3c2410: Fix infinite interrupt in soft mode + - [x86] platform: asus-wmi: Set specified XUSB2PR value for X550LB + - [x86] platform: asus-wmi: Detect quirk_no_rfkill from the DSDT + - [x86] reboot/quirks: Add ASUS EeeBook X205TA reboot quirk + - [x86] reboot/quirks: Add ASUS EeeBook X205TA/W reboot quirk + - usb-storage: Add ignore-residue quirk for Initio INIC-3619 + - [x86] reboot/quirks: Fix typo in ASUS EeeBook X205TA reboot quirk + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.9.23 + - [x86] drm/i915/gen9: Increase PCODE request timeout to 50ms + - [x86] drm/i915: Nuke debug messages from the pipe update critical section + - [x86] drm/i915: Avoid tweaking evaluation thresholds on Baytrail v3 + - [x86] drm/i915: Only enable hotplug interrupts if the display interrupts + are enabled + - [x86] drm/i915: Drop support for I915_EXEC_CONSTANTS_* execbuf parameters. + - [x86] drm/i915: Stop using RP_DOWN_EI on Baytrail + - [x86] drm/i915: Avoid rcu_barrier() from reclaim paths (shrinker) + - [armhf,arm64] i2c: bcm2835: Fix hang for writing messages larger than 16 + bytes + - rt2x00usb: fix anchor initialization + - rt2x00usb: do not anchor rx and tx urb's + - [mips*] Introduce irq_stack + - [mips*] Stack unwinding while on IRQ stack + - [mips*] Only change $28 to thread_info if coming from user mode + - [mips*] Switch to the irq_stack in interrupts + - [mips*] Select HAVE_IRQ_EXIT_ON_IRQ_STACK + - [mips*] IRQ Stack: Fix erroneous jal to plat_irq_dispatch + - [x86] Revert "drm/i915/execlists: Reset RING registers upon resume" + - blk-mq: Avoid memory reclaim when remapping queues + - usb: hub: Wait for connection to be reestablished after port reset + - net/mlx4_en: Fix bad WQE issue + - net/mlx4_core: Fix racy CQ (Completion Queue) free + - net/mlx4_core: Fix when to save some qp context flags for dynamic VST to + VGT transitions + - dma-buf: add support for compat ioctl + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.9.24 + - cgroup, kthread: close race window where new kthreads can be migrated to + non-root cgroups + - thp: fix MADV_DONTNEED vs. MADV_FREE race + - thp: fix MADV_DONTNEED vs clear soft dirty race + - zsmalloc: expand class bit + - drm/nouveau/mpeg: mthd returns true on success now + - drm/nouveau/mmu/nv4a: use nv04 mmu rather than the nv44 one + - [armhf] drm/etnaviv: fix missing unlock on error in etnaviv_gpu_submit() + - CIFS: reconnect thread reschedule itself + - CIFS: store results of cifs_reopen_file to avoid infinite wait + - Input: xpad - add support for Razer Wildcat gamepad + - [x86] perf: Avoid exposing wrong/stale data in intel_pmu_lbr_read_32() + - [x86] efi: Don't try to reserve runtime regions + - [x86] signals: Fix lower/upper bound reporting in compat siginfo + - [x86] pmem: fix broken __copy_user_nocache cache-bypass assumptions + - [x86] vdso: Ensure vdso32_enabled gets set to valid values only + - [x86] vdso: Plug race between mapping and ELF header setup + - [x86] acpi, nfit, libnvdimm: fix interleave set cookie calculation + (64-bit comparison) + - ACPI / scan: Set the visited flag for all enumerated devices + - [hppa] fix bugs in pa_memcpy + - efi/libstub: Skip GOP with PIXEL_BLT_ONLY format + - efi/fb: Avoid reconfiguration of BAR that covers the framebuffer + - iscsi-target: Fix TMR reference leak during session shutdown + - iscsi-target: Drop work-around for legacy GlobalSAN initiator + - scsi: sr: Sanity check returned mode data + - scsi: sd: Consider max_xfer_blocks if opt_xfer_blocks is unusable + - scsi: qla2xxx: Add fix to read correct register value for ISP82xx. + - scsi: sd: Fix capacity calculation with 32-bit sector_t + - target: Avoid mappedlun symlink creation during lun shutdown + - xen, fbfront: fix connecting to backend + - new privimitive: iov_iter_revert() + - make skb_copy_datagram_msg() et.al. preserve ->msg_iter on error + - [x86] libnvdimm: fix blk free space accounting + - [x86] libnvdimm: fix reconfig_mutex, mmap_sem, and jbd2_handle lockdep + splat + - [armhf] pwm: rockchip: State of PWM clock should synchronize with PWM + enabled state + - cpufreq: Bring CPUs up even if cpufreq_online() failed + - [armhf] irqchip/irq-imx-gpcv2: Fix spinlock initialization + - ftrace: Fix removing of second function probe + - zram: do not use copy_page with non-page aligned address + - ftrace: Fix function pid filter on instances + - crypto: algif_aead - Fix bogus request dereference in completion function + - crypto: ahash - Fix EINPROGRESS notification callback (CVE-2017-7618) + - [hppa] Fix get_user() for 64-bit value on 32-bit kernel + - dvb-usb-v2: avoid use-after-free (CVE-2017-8064) + - drm/nouveau/disp/mcp7x: disable dptmds workaround (Closes: #850219) + - [x86] mm: Tighten x86 /dev/mem with zeroing reads (CVE-2017-7889) + - dvb-usb-firmware: don't do DMA on stack (CVE-2017-8061) + - cxusb: Use a dma capable buffer also for reading (CVE-2017-8063) + - virtio-console: avoid DMA from stack (CVE-2017-8067) + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.9.25 + - KEYS: Disallow keyrings beginning with '.' to be joined as session + keyrings (CVE-2016-9604) + - KEYS: Change the name of the dead type to ".dead" to prevent user access + (CVE-2017-6951) + - KEYS: fix keyctl_set_reqkey_keyring() to not leak thread keyrings + (CVE-2017-7472) + - tracing: Allocate the snapshot buffer before enabling probe + - ring-buffer: Have ring_buffer_iter_empty() return true when empty + - mm: prevent NR_ISOLATE_* stats from going negative + - cifs: Do not send echoes before Negotiate is complete (Closes: #856843) + - CIFS: remove bad_network_name flag + - [s390x] mm: fix CMMA vs KSM vs others + - Input: elantech - add Fujitsu Lifebook E547 to force crc_enabled + - ACPI / power: Avoid maybe-uninitialized warning + - [armhf] mmc: sdhci-esdhc-imx: increase the pad I/O drive strength for + DDR50 card + - ubifs: Fix RENAME_WHITEOUT support + - ubifs: Fix O_TMPFILE corner case in ubifs_link() + - mac80211: reject ToDS broadcast data frames + - mac80211: fix MU-MIMO follow-MAC mode + - ubi/upd: Always flush after prepared for an update + - [powerpc*] kprobe: Fix oops when kprobed on 'stdu' instruction + - [x86] mce/AMD: Give a name to MCA bank 3 when accessed with legacy MSRs + - [x86] mce: Make the MCE notifier a blocking one + - device-dax: switch to srcu, fix rcu_read_lock() vs pte allocation + + [ Ben Hutchings ] + * w1: Really enable W1_MASTER_GPIO as module (Closes: #858975) + * debian/rules.real: Undefine $LANGUAGE, which can break debug symbols for + vDSOs (Closes: #859807) + * Bump ABI to 3 + * [s390x] Set NR_CPUS=256 (Closes: #858731) + * [x86] usbip: Increase USBIP_VHCI_NR_HCS to 8 and USBIP_VHCI_HC_PORTS to 31 + (Closes: #859641) + * [powerpc/powerpc64,ppc64*] target: Enable SCSI_IBMVSCSIS as module + * cpupower: Fix turbo frequency reporting for pre-Sandy Bridge cores + (Closes: #859978) + * udeb: Include all AHCI drivers in sata-modules (Closes: #860335) + * [powerpc/powerpc64,ppc64] Set NR_CPUS=2048, matching ppc64el + * [powerpc*/*64*] Enable CPUMASK_OFFSTACK to reduce stack usage + * [mips*el/loongson-3] Set NR_CPUS=16 to allow for Loongson 3B2000 + * [mips*/octeon] Set NR_CPUS=64 to allow for Cavium CN7890 + * [arm64] Set NR_CPUS=256 to allow for multi-SoC systems (Closes: #861209) + * [powerpc/powerpc-smp,powerpcspe] Explicitly set NR_CPUS=4 + * Move debug symbols back to the main archive, to avoid problems with the + current handling in dak + * linux-image: Disable signing until it's supported in dak + * [rt] Update to 4.9.20-rt16: + - rtmutex: Make lock_killable work + - rtmutex: Provide rt_mutex_lock_state() + - rtmutex: Provide locked slowpath + - rwsem/rt: Lift single reader restriction + * PCI: Enable PCIE_PTM (except on armel/marvell) + * 6lowpan: Enable Generic Header Compression modules + * net/sched: Enable NET_ACT_SKBMOD as module + * ethernet: Enable NFP_NETVF as module + * net/phy: Enable MICROSEMI_PHY as module + * input/tablet: Enable TABLET_USB_PEGASUS as module + * [x86] input/touchscreen: Enable TOUCHSCREEN_SURFACE3_SPI as module + * serial/8250: Enable SERIAL_8250_MOXA as module + * [x86] gpio: Enable GPIO_AMDPT as module + * [x86] thermal: Enable INT3406_THERMAL as module + * watchdog: Enable WATCHDOG_SYSFS + * integrity: Enable IMA, IMA_DEFAULT_HASH_SHA256, IMA_APPRAISE, + IMA_KEYRINGS_PERMIT_SIGNED_BY_BUILTIN_OR_SECONDARY, IMA_BLACKLIST_KEYRING + (except on armel/marvell) (Closes: #788290) + * media: Enable VIDEO_TW5864, VIDEO_TW686X as modules + * [x86] amdgpu,sound/soc: Enable DRM_AMD_ACP; enable SND_SOC_AMD_ACP as module + * hda: Set SND_HDA_PREALLOC_SIZE=2048 as recommended for PulseAudio + * HID: Enable HID_SENSOR_CUSTOM_SENSOR as module + * leds,USB: Enable USB_LEDS_TRIGGER_USBPORT as module + * usbip: Enable USBIP_VUDC as module + * USB/misc: Enable UCSI as module + * leds: Enable LEDS_TRIGGER_DISK, LEDS_TRIGGER_MTD, LEDS_TRIGGER_PANIC + * IB: Enable INFINIBAND_HFI1, INFINIBAND_I40IW, INFINIBAND_QEDR, RDMA_RXE + as modules + * [amd64] EDAC: Enable EDAC_SKX as module + * [x86] comedi: Enable COMEDI_ADV_PCI1720, COMEDI_ADV_PCI1760 as modules + * [x86] platform: Enable INTEL_HID_EVENT as module + * [x86] hwtracing: Enable INTEL_TH, INTEL_TH_PCI, INTEL_TH_GTH, INTEL_TH_MSU, + INTEL_TH_PTI as modules + * [rt] tracing: Enable HWLAT_TRACER + * [x86] crypto: Enable CRYPTO_DEV_QAT_C3XXX, CRYPTO_DEV_QAT_C62X, + CRYPTO_DEV_QAT_C3XXXVF, CRYPTO_DEV_QAT_C62XVF as modules + * crypto: Enable CRYPTO_DEV_CHELSIO as module + * [arm64] Enable ARMV8_DEPRECATED, SWP_EMULATION, CP15_BARRIER_EMULATION, + SETEND_EMULATION (Closes: #861384) + * udeb: Add tifm_7xx1 to mmc-modules (Closes: #861195) + * leds: Enable LEDS_GPIO as module for all configurations with GPIOs + (Closes: #860569) + * selinux: Set SECURITY_SELINUX_CHECKREQPROT_VALUE=0, per default. + This may break some old applications if SELinux is enabled, and can be + reverted using the kernel parameter: checkreqprot=1 + * udeb: Move mfd-core to kernel-image, as both input-modules and + mmc-modules need it + * crypto: Change CRYPTO_SHA256 from module to built-in, as required by IMA + + [ Salvatore Bonaccorso ] + * ping: implement proper locking (CVE-2017-2671) + * macsec: avoid heap overflow in skb_to_sgvec (CVE-2017-7477) + * macsec: dynamically allocate space for sglist + * nfsd: check for oversized NFSv2/v3 arguments (CVE-2017-7645) + * nfsd4: minor NFSv2/v3 write decoding cleanup + * nfsd: stricter decoding of write-like NFSv2/v3 ops (CVE-2017-7895) + + [ Aurelien Jarno ] + * [mips*/octeon] Drop obsolete patch adding support for the UBNT E200 + board. + * [mips*el/loongson-3] Disable PAGE_EXTENSION and PAGE_POISONING. + + [ John Paul Adrian Glaubitz ] + * [m68k] udeb: Enable suffix for kernel-image (Closes: #859366) + + -- Ben Hutchings Tue, 02 May 2017 16:21:44 +0100 + +linux (4.9.18-1) unstable; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.9.17 + - net/mlx5e: Register/unregister vport representors on interface + attach/detach + - net/mlx5e: Do not reduce LRO WQE size when not using build_skb + - net/mlx5e: Fix wrong CQE decompression + - vxlan: correctly validate VXLAN ID against VXLAN_N_VID + - vti6: return GRE_KEY for vti6 + - vxlan: don't allow overwrite of config src addr + - ipv4: mask tos for input route + - net sched actions: decrement module reference count after table flush. + - l2tp: avoid use-after-free caused by l2tp_ip_backlog_recv + - net: phy: Avoid deadlock during phy_error() + - vxlan: lock RCU on TX path + - geneve: lock RCU on TX path + - tcp/dccp: block BH for SYN processing + - net: bridge: allow IPv6 when multicast flood is disabled + - net: don't call strlen() on the user buffer in packet_bind_spkt() + - net: net_enable_timestamp() can be called from irq contexts + - ipv6: orphan skbs in reassembly unit + - dccp: Unlock sock before calling sk_free() + - strparser: destroy workqueue on module exit + - tcp: fix various issues for sockets morphing to listen state + - net: fix socket refcounting in skb_complete_wifi_ack() + - net: fix socket refcounting in skb_complete_tx_timestamp() + - net/sched: act_skbmod: remove unneeded rcu_read_unlock in tcf_skbmod_dump + - dccp: fix use-after-free in dccp_feat_activate_values + - vrf: Fix use-after-free in vrf_xmit + - net/tunnel: set inner protocol in network gro hooks + - act_connmark: avoid crashing on malformed nlattrs with null parms + - mpls: Send route delete notifications when router module is unloaded + - mpls: Do not decrement alive counter for unregister events + - ipv6: make ECMP route replacement less greedy + - ipv6: avoid write to a possibly cloned skb + - bridge: drop netfilter fake rtable unconditionally + - dccp/tcp: fix routing redirect race + - tun: fix premature POLLOUT notification on tun devices + - dccp: fix memory leak during tear-down of unsuccessful connection request + - bpf: Detect identical PTR_TO_MAP_VALUE_OR_NULL registers + - bpf: fix state equivalence + - bpf: fix regression on verifier pruning wrt map lookups + - bpf: fix mark_reg_unknown_value for spilled regs on map value marking + - dmaengine: iota: ioat_alloc_chan_resources should not perform sleeping + allocations. + - xen: do not re-use pirq number cached in pci device msi msg data + - igb: Workaround for igb i210 firmware issue + - igb: add i211 to i210 PHY workaround + - [x86] hyperv: Handle unknown NMIs on one CPU when unknown_nmi_panic + - PCI: Separate VF BAR updates from standard BAR updates + - PCI: Remove pci_resource_bar() and pci_iov_resource_bar() + - PCI: Decouple IORESOURCE_ROM_ENABLE and PCI_ROM_ADDRESS_ENABLE + - PCI: Don't update VF BARs while VF memory space is enabled + - PCI: Update BARs using property bits appropriate for type + - PCI: Ignore BAR updates on virtual functions + - PCI: Do any VF BAR updates before enabling the BARs + - [powerpc*] ibmveth: calculate gso_segs for large packets + - [x86] Drivers: hv: ring_buffer: count on wrap around mappings in + get_next_pkt_raw() (v2) + - vfio/spapr: Postpone allocation of userspace version of TCE table + - [powerpc*] iommu: Stop using @current in mm_iommu_xxx + - [powerpc*] vfio/spapr: Reference mm in tce_container + - [powerpc*] mm/iommu, vfio/spapr: Put pages on VFIO container shutdown + - [powerpc*] vfio/spapr: Add a helper to create default DMA window + - [powerpc*] vfio/spapr: Postpone default window creation + - drm/nouveau/disp/gp102: fix cursor/overlay immediate channel indices + - drm/nouveau/disp/nv50-: split chid into chid.ctrl and chid.user + - drm/nouveau/disp/nv50-: specify ctrl/user separately when constructing + classes + - block: allow WRITE_SAME commands with the SG_IO ioctl + - [s390x] zcrypt: Introduce CEX6 toleration + - uvcvideo: uvc_scan_fallback() for webcams with broken chain + - [x86] ACPI / blacklist: add _REV quirks for Dell Precision 5520 and 3520 + - [x86] ACPI / blacklist: Make Dell Latitude 3350 ethernet work + - serial: 8250_pci: Detach low-level driver during PCI error recovery + - [armhf] clk: bcm2835: Fix ->fixed_divider of pllh_aux + - [armhf] drm/vc4: Fix race between page flip completion event and clean-up + - [armhf] drm/vc4: Fix ->clock_select setting for the VEC encoder + - [arm64] KVM: VHE: Clear HCR_TGE when invalidating guest TLBs + - [armhf,arm64] irqchip/gicv3-its: Add workaround for QDF2400 ITS erratum + 0065 + - [x86] tsc: Fix ART for TSC_KNOWN_FREQ + - [x86] perf: Fix CR4.PCE propagation to use active_mm instead of mm + - futex: Fix potential use-after-free in FUTEX_REQUEUE_PI + - futex: Add missing error handling to FUTEX_REQUEUE_PI + - locking/rwsem: Fix down_write_killable() for + CONFIG_RWSEM_GENERIC_SPINLOCK=y + - [powerpc*] crypto: Fix initialisation of crc32c context + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.9.18 + - [armhf] drm/vc4: Fix termination of the initial scan for branch targets. + - [armhf] drm/vc4: Use runtime autosuspend to avoid thrashing V3D power + state. + - qla2xxx: Fix memory leak for abts processing + - qla2xxx: Fix request queue corruption. + - [hppa] Optimize flush_kernel_vmap_range and invalidate_kernel_vmap_range + - [hppa] Fix system shutdown halt + - perf/core: Fix use-after-free in perf_release() + - perf/core: Fix event inheritance on fork() + - NFS prevent double free in async nfs4_exchange_id + - cpufreq: Fix and clean up show_cpuinfo_cur_freq() + - [powerpc*] boot: Fix zImage TOC alignment + - md/raid1/10: fix potential deadlock + - target/pscsi: Fix TYPE_TAPE + TYPE_MEDIMUM_CHANGER export + - scsi: lpfc: Add shutdown method for kexec + - scsi: libiscsi: add lock around task lists to fix list corruption + regression + - target: Fix VERIFY_16 handling in sbc_parse_cdb + - isdn/gigaset: fix NULL-deref at probe + - gfs2: Avoid alignment hole in struct lm_lockname + - percpu: acquire pcpu_lock when updating pcpu_nr_empty_pop_pages + - cgroup/pids: remove spurious suspicious RCU usage warning + - [x86] drm/amdgpu/si: add dpm quirk for Oland + - ext4: fix fencepost in s_first_meta_bg validation (Closes: #856808) + + [ Ben Hutchings ] + * [powerpc*] Ignore ABI changes in cxl (fixes FTBFS) (Closes: #858530) + and IOMMU setup + * Ignore ABI changes in bpf, dccp, libiscsi + * [x86] Ignore ABI changes in kvm + * [rt] Update to 4.9.18-rt14: + - lockdep: Fix per-cpu static objects + - futex: Cleanup variable names for futex_top_waiter() + - futex: Use smp_store_release() in mark_wake_futex() + - futex: Remove rt_mutex_deadlock_account_*() + - futex,rt_mutex: Provide futex specific rt_mutex API + - futex: Change locking rules + - futex: Cleanup refcounting + - futex: Rework inconsistent rt_mutex/futex_q state + - futex: Pull rt_mutex_futex_unlock() out from under hb->lock + - futex,rt_mutex: Introduce rt_mutex_init_waiter() + - futex,rt_mutex: Restructure rt_mutex_finish_proxy_lock() + - futex: Rework futex_lock_pi() to use rt_mutex_*_proxy_lock() + - futex: Futex_unlock_pi() determinism + - futex: Drop hb->lock before enqueueing on the rtmutex + - futex: workaround migrate_disable/enable in different context + - Revert "kernel/futex: don't deboost too early" + * xfrm_user: validate XFRM_MSG_NEWAE XFRMA_REPLAY_ESN_VAL replay_window + (CVE-2017-7184) + * xfrm_user: validate XFRM_MSG_NEWAE incoming ESN size harder (CVE-2017-7184) + * scsi: sg: check length passed to SG_NEXT_CMD_LEN (CVE-2017-7187) + * [x86] vmwgfx: NULL pointer dereference in vmw_surface_define_ioctl() + (CVE-2017-7261) + * [x86] drm/vmwgfx: fix integer overflow in vmw_surface_define_ioctl() + (CVE-2017-7294) + * net/packet: Fix integer overflow in various range checks (CVE-2017-7308) + * [arm64] rtc: tegra: Implement clock handling (Closes: #858514) + * [armhf] sound/soc: Enable SND_SUN4I_SPDIF as module (Closes: #857410) + * [arm64,x86] Enable CROS_KBD_LED_BACKLIGHT as module (Closes: #856906) + * netfilter: nft_ct: add notrack support (Closes: #845500) + * w1: Enable W1_MASTER_GPIO as module (Closes: #858975) + + [ James Clarke ] + * [sparc64] udeb: Re-add ufs-modules (Closes: #858049) + + -- Ben Hutchings Thu, 30 Mar 2017 02:16:33 +0100 + +linux (4.9.16-1) unstable; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.9.14 + - [mips*] Fix special case in 64 bit IP checksumming. + - [mips*/octeon] Fix copy_from_user fault handling for large buffers + - mmc: sdhci-acpi: support deferred probe + - uvcvideo: Fix a wrong macro + - media: fix dm1105.c build error + - lirc_dev: LIRC_{G,S}ET_REC_MODE do not work + - media: Properly pass through media entity types in entity enumeration + - ext4: fix deadlock between inline_data and ext4_expand_extra_isize_ea() + - [x86] ALSA: hda/realtek - Cannot adjust speaker's volume on a Dell AIO + - [x86] ALSA: hda - fix Lewisburg audio issue + - ALSA: timer: Reject user params with too small ticks + - ALSA: ctxfi: Fallback DMA mask to 32bit + - ALSA: seq: Fix link corruption by event error handling + - [x86] ALSA: hda - Add subwoofer support for Dell Inspiron 17 7000 Gaming + - [x86] ALSA: hda - Fix micmute hotkey problem for a lenovo AIO machine + - hwmon: (it87) Do not overwrite bit 2..6 of pwm control registers + - hwmon: (it87) Ensure that pwm control cache is current before updating + values + - [x86] staging/lustre/lnet: Fix allocation size for sv_cpt_data + - staging: rtl: fix possible NULL pointer dereference + - regulator: Fix regulator_summary for deviceless consumers + - tpm_tis: fix the error handling of init_tis() + - [x86] iommu/vt-d: Fix some macros that are incorrectly specified in + intel-iommu + - [x86] iommu/vt-d: Tylersburg isoch identity map check is done too late. + - CIFS: Fix splice read for non-cached files + - [x86] mm, devm_memremap_pages: hold device_hotplug lock over + mem_hotplug_{begin, done} + - mm/page_alloc: fix nodes for reclaim in fast path + - mm: vmpressure: fix sending wrong events on underflow + - mm: do not access page->mapping directly on page_endio + - mm balloon: umount balloon_mnt when removing vb device + - mm, vmscan: cleanup lru size claculations + - mm, vmscan: consider eligible zones in get_scan_count + - sigaltstack: support SS_AUTODISARM for CONFIG_COMPAT + - PM / devfreq: Fix available_governor sysfs + - PM / devfreq: Fix wrong trans_stat of passive devfreq device + - dm cache: fix corruption seen when using cache > 2TB + - dm stats: fix a leaked s->histogram_boundaries array + - dm round robin: revert "use percpu 'repeat_count' and 'current_path'" + - dm raid: fix data corruption on reshape request + - [x86] scsi: storvsc: use tagged SRB requests if supported by the device + - [x86] scsi: storvsc: properly handle SRB_ERROR when sense message is + present + - [x86] scsi: storvsc: properly set residual data length on errors + - scsi: aacraid: Reorder Adapter status check + - scsi: use 'scsi_device_from_queue()' for scsi_dh + - Fix: Disable sys_membarrier when nohz_full is enabled + - jbd2: don't leak modified metadata buffers on an aborted journal + - block/loop: fix race between I/O and set_status + - loop: fix LO_FLAGS_PARTSCAN hang + - ext4: Include forgotten start block on fallocate insert range + - ext4: do not polute the extents cache while shifting extents + - ext4: trim allocation requests to group size + - ext4: fix data corruption in data=journal mode + - ext4: fix use-after-iput when fscrypt contexts are inconsistent + - ext4: fix inline data error paths + - ext4: preserve the needs_recovery flag when the journal is aborted + - ext4: return EROFS if device is r/o and journal replay is needed + - mei: remove support for broken parallel read + - ath10k: fix boot failure in UTF mode/testmode + - ath5k: drop bogus warning on drv_set_key with unsupported cipher + - ath9k: fix race condition in enabling/disabling IRQs + - ath9k: use correct OTP register offsets for the AR9340 and AR9550 + - [x86] PCI: hv: Fix wslot_to_devfn() to fix warnings on device removal + - [x86] Drivers: hv: vmbus: Raise retry/wait limits in vmbus_post_msg() + - perf callchain: Reference count maps + - crypto: testmgr - Pad aes_ccm_enc_tv_template vector + - fuse: add missing FR_FORCE + - [x86] pkeys: Check against max pkey to avoid overflows + - [armhf,arm64] KVM: Enforce unconditional flush to PoC when mapping to + stage-2 + - [arm64] dma-mapping: Fix dma_mapping_error() when bypassing SWIOTLB + - [arm64] fix erroneous __raw_read_system_reg() cases + - [armhf,arm64] KVM: vgic: Stop injecting the MSI occurrence twice + - can: gs_usb: Don't use stack memory for USB transfers + - can: usb_8dev: Fix memory leak of priv->cmd_msg_buffer + - w1: don't leak refcount on slave attach failure in + w1_attach_slave_device() + - w1: ds2490: USB transfer buffers need to be DMAable + - usb: dwc3: gadget: skip Set/Clear Halt when invalid + - usb: host: xhci: plat: check hcc_params after add hcd + - usb: gadget: udc-core: Rescan pending list on driver unbind + - usb: gadget: f_hid: fix: Free out requests + - usb: gadget: f_hid: fix: Prevent accessing released memory + - usb: gadget: f_hid: Use spinlock instead of mutex + - [x86] hv: allocate synic pages for all present CPUs + - [x86] hv: init percpu_list in hv_synic_alloc() + - [x86] hv: don't reset hv_context.tsc_page on crash + - [x86] Drivers: hv: vmbus: Prevent sending data on a rescinded channel + - [x86] Drivers: hv: vmbus: Fix a rescind handling bug + - [x86] Drivers: hv: util: kvp: Fix a rescind processing issue + - [x86] Drivers: hv: util: Fcopy: Fix a rescind processing issue + - [x86] Drivers: hv: util: Backup: Fix a rescind processing issue + - RDMA/core: Fix incorrect structure packing for booleans + - rdma_cm: fail iwarp accepts w/o connection params + - gfs2: Add missing rcu locking for glock lookup + - [arm64] remoteproc: qcom: mdt_loader: Don't overwrite firmware object + - rtlwifi: Fix alignment issues + - rtlwifi: rtl8192c-common: Fix "BUG: KASAN: + - [m68k] VME: restore bus_remove function causing incomplete module unload + - nfsd: minor nfsd_setattr cleanup + - nfsd: special case truncates some more + - NFSv4: Fix memory and state leak in _nfs4_open_and_get_state + - NFSv4: Fix reboot recovery in copy offload + - pNFS/flexfiles: If the layout is invalid, it must be updated before + retrying + - NFSv4: fix getacl head length estimation + - NFSv4: fix getacl ERANGE for some ACL buffer sizes + - f2fs: fix a problem of using memory after free + - f2fs: fix multiple f2fs_add_link() calls having same name + - f2fs: add ovp valid_blocks check for bg gc victim to fg_gc + - f2fs: avoid to issue redundant discard commands + - [armhf] rtc: sun6i: Disable the build as a module + - [armhf] rtc: sun6i: Add some locking + - [armhf] rtc: sun6i: Switch to the external oscillator + - md linear: fix a race between linear_add() and linear_congested() + - bcma: use (get|put)_device when probing/removing device driver + - [armhf] dmaengine: ipu: Make sure the interrupt routine checks all + interrupts. + - xprtrdma: Fix Read chunk padding + - xprtrdma: Per-connection pad optimization + - xprtrdma: Disable pad optimization by default + - xprtrdma: Reduce required number of send SGEs + - [powerpc*] xmon: Fix data-breakpoint + - [powerpc*] mm: Add MMU_FTR_KERNEL_RO to possible feature mask + - [powerpc*] mm/hash: Always clear UPRT and Host Radix bits when setting up + CPU + - scsi: lpfc: Correct WQ creation for pagesize + - ceph: update readpages osd request according to size of pages + - netfilter: conntrack: remove GC_MAX_EVICTS break + - netfilter: conntrack: refine gc worker heuristics, redux + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.9.15 + - tty: n_hdlc: get rid of racy n_hdlc.tbuf (CVE-2017-2636) + (Closes: #858122) + - serial: 8250_pci: Add MKS Tenta SCOM-0800 and SCOM-0801 cards + - [s390x] KVM: Disable dirty log retrieval for UCONTROL guests + - [x86] KVM: VMX: use correct vmcs_read/write for guest segment + selector/base + - Bluetooth: Add another AR3012 04ca:3018 device + - [s390x] qdio: clear DSCI prior to scanning multiple input queues + - [s390x] dcssblk: fix device size calculation in dcssblk_direct_access() + - [s390x] kdump: Use "LINUX" ELF note name instead of "CORE" + - [s390x] chsc: Add exception handler for CHSC instruction + - [s390x] TASK_SIZE for kernel threads + - [s390x] make setup_randomness work + - [s390x] use correct input data address for setup_randomness + - [armhf] net: mvpp2: fix DMA address calculation in mvpp2_txq_inc_put() + - [powerpc*] cxl: Prevent read/write to AFU config space while AFU not + configured + - [powerpc*] cxl: fix nested locking hang during EEH hotplug + - brcmfmac: fix incorrect event channel deduction + - mnt: Tuck mounts under others instead of creating shadow/side mounts. + - IB/ipoib: Fix deadlock between rmmod and set_mode + - IB/IPoIB: Add destination address when re-queue packet + - IB/mlx5: Fix out-of-bound access + - IB/SRP: Avoid using IB_MR_TYPE_SG_GAPS + - IB/srp: Avoid that duplicate responses trigger a kernel bug + - IB/srp: Fix race conditions related to task management + - fs: Better permission checking for submounts + - ceph: remove req from unsafe list when unregistering it + - [powerpc*] pci/hotplug/pnv-php: Remove WARN_ON() in pnv_php_put_slot() + - [powerpc*] pci/hotplug/pnv-php: Disable surprise hotplug capability on + conflicts + - target: Fix NULL dereference during LUN lookup + active I/O shutdown + - [powerpc*] drivers/pci/hotplug: Handle presence detection change + properly + - [powerpc*] drivers/pci/hotplug: Fix initial state for empty slot + - nlm: Ensure callback code also checks that the files match + - nfit, libnvdimm: fix interleave set cookie calculation + - mac80211: flush delayed work when entering suspend + - mac80211: don't reorder frames with SN smaller than SSN + - mac80211: don't handle filtered frames within a BA session + - mac80211: use driver-indicated transmitter STA only for data frames + - [x86] drm/amdgpu: add more cases to DCE11 possible crtc mask setup + - [arm64,powerpc*,x86] drm/ast: Fix test for VGA enabled + - [arm64,powerpc*,x86] drm/ast: Call open_key before enable_mmio in POST + code + - [arm64,powerpc*,x86] drm/ast: Fix AST2400 POST failure without BMC FW or + VBIOS + - drm/edid: Add EDID_QUIRK_FORCE_8BPC quirk for Rotel RSX-1058 + - [x86] drm/vmwgfx: Work around drm removal of control nodes + - [armhf] dmaengine: imx-sdma - correct the dma transfer residue + calculation + - drm/atomic: fix an error code in mode_fixup() + - [x86] drm/i915/gvt: Disable access to stolen memory as a guest + - drm: Cancel drm_fb_helper_dirty_work on unload + - drm: Cancel drm_fb_helper_resume_work on unload + - [x86] drm/i915: Avoid spurious WARNs about the wrong pipe in the PPS + code + - [x86] drm/i915: Fix not finding the VBT when it overlaps with + OPREGION_ASLE_EXT + - libceph: use BUG() instead of BUG_ON(1) + - [x86] mm: fix gup_pte_range() vs DAX mappings + - [x86] tlb: Fix tlb flushing when lguest clears PGE + - thp: fix another corner case of munlock() vs. THPs + - mm: do not call mem_cgroup_free() from within mem_cgroup_alloc() + - fat: fix using uninitialized fields of fat_inode/fsinfo_inode + - [x86] drivers: hv: Turn off write permission on the hypercall page + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.9.16 + - USB: serial: digi_acceleport: fix OOB data sanity check + - USB: serial: digi_acceleport: fix OOB-event processing + - crypto: improve gcc optimization flags for serpent and wp512 + - ucount: Remove the atomicity from ucount->count (CVE-2017-6874) + - dw2102: don't do DMA on stack + - i2c: add missing of_node_put in i2c_mux_del_adapters + - [ppc64el] Emulation support for load/store instructions on LE + - [powerpc*] xics: Work around limitations of OPAL XICS priority handling + - PCI: Prevent VPD access for QLogic ISP2722 + - usb: gadget: dummy_hcd: clear usb_gadget region before registration + - usb: dwc3: gadget: make Set Endpoint Configuration macros safe + - [armhf] usb: dwc3-omap: Fix missing break in dwc3_omap_set_mailbox() + - usb: gadget: function: f_fs: pass companion descriptor along + - Revert "usb: gadget: uvc: Add missing call for additional setup data" + - usb: host: xhci-plat: Fix timeout on removal of hot pluggable xhci + controllers + - USB: serial: safe_serial: fix information leak in completion handler + - USB: serial: omninet: fix reference leaks at open + - USB: iowarrior: fix NULL-deref at probe (CVE-2016-2188) + - USB: iowarrior: fix NULL-deref in write + - USB: serial: io_ti: fix NULL-deref in interrupt callback + - USB: serial: io_ti: fix information leak in completion handler + - [armhf] serial: samsung: Continue to work if DMA request fails + - [s390x] KVM: Fix guest migration for huge guests resulting in panic + - [armhf.arm64] KVM: Let vcpu thread modify its own active state + - dm: flush queued bios when process blocks to avoid deadlock + - rc: raw decoder for keymap protocol is not loaded on register + - ext4: don't BUG when truncating encrypted inodes on the orphan list + - IB/mlx5: Verify that Q counters are supported + + [ Ben Hutchings ] + * [media] dvb-usb: don't use stack for firmware load or reset + (Closes: #853894) + * Kbuild.include: addtree: Remove quotes before matching path + (regression in 4.8) (Closes: #856474) + * [rt] Update to 4.9.13-rt12: + - timer/hrtimer: check properly for a running timer + * [rt] Refresh one patch that had a textual conflict with 4.9.14 + * Ignore various ABI changes that shouldn't affect OOT modules + * userns: Avoid ABI change for CVE-2017-6874 fix + * [amd64] Don't WARN about expected W+X pages on Xen (see #852324) + * fjes: Disable auto-loading, as this driver matches a very common ACPI ID + (Closes: #853976) + + [ Salvatore Bonaccorso ] + * ACPI / EC: Use busy polling mode when GPE is not enabled. + Thanks to Jakobus Schurz (Closes: #846792) + * Ignore ABI changes for acpi_ec_{add,remove}_query_handler + * Ignore ABI change for first_ec (not declared in public header) + + [ Helge Deller ] + * [hppa] Switch to debian default config option for bonding, irda and atalk + + -- Salvatore Bonaccorso Wed, 22 Mar 2017 17:01:40 +0100 + +linux (4.9.13-1) unstable; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.9.11 + - can: Fix kernel panic at security_sock_rcv_skb + - net/mlx5e: Fix update of hash function/key via ethtool + - net/sched: matchall: Fix configuration race + - ipv6: fix ip6_tnl_parse_tlv_enc_lim() + - ipv6: pointer math error in ip6_tnl_parse_tlv_enc_lim() + - tcp: fix 0 divide in __tcp_select_window() + - stmmac: Discard masked flags in interrupt status register + - net: use a work queue to defer net_disable_timestamp() work + - netlabel: out of bound access in cipso_v4_validate() + - ip6_gre: fix ip6gre_err() invalid reads (CVE-2017-5897) + - ipv6: tcp: add a missing tcp_v6_restore_cb() + - tcp: avoid infinite loop in tcp_splice_read() (CVE-2017-6214) + - tun: read vnet_hdr_sz once + - macvtap: read vnet_hdr_size once + - rtl8150: Use heap buffers for all register access + - catc: Combine failure cleanup code in catc_probe() + - catc: Use heap buffer for memory size test + - mlx4: Invoke softirqs after napi_reschedule + - lwtunnel: valid encap attr check should return 0 when lwtunnel + is disabled + - sit: fix a double free on error path + - net: introduce device min_header_len + - packet: round up linear to header len + - ping: fix a null pointer dereference + - net: dsa: Do not destroy invalid network devices + - l2tp: do not use udp_ioctl() + - mld: do not remove mld souce list info when set link down + - igmp, mld: Fix memory leak in igmpv3/mld_del_delrec() + - tcp: fix mark propagation with fwmark_reflect enabled + - net/mlx5: Don't unlock fte while still using it + - tcp: don't annotate mark on control socket from + tcp_v6_send_response() + - [x86] fpu/xstate: Fix xcomp_bv in XSAVES header + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.9.12 + - vfs: fix uninitialized flags in splice_to_pipe() + - siano: make it work again with CONFIG_VMAP_STACK + - fuse: fix use after free issue in fuse_dev_do_read() + - fuse: fix uninitialized flags in pipe_buffer + - mmc: core: fix multi-bit bus width without high-speed mode + - [powerpc*/*64*] Disable use of radix under a hypervisor + - scsi: don't BUG_ON() empty DMA transfers + - Fix missing sanity check in /dev/sg + - [x86] Input: elan_i2c - add ELAN0605 to the ACPI table + - drm/radeon: Use mode h/vdisplay fields to hide out of bounds HW cursor + - drm/dp/mst: fix kernel oops when turning off secondary monitor + - futex: Move futex_init() to core_initcall + - [armel,armhf] 8658/1: uaccess: fix zeroing of 64-bit get_user() + - Revert "i2c: designware: detect when dynamic tar update is possible" + - PCI/PME: Restore pcie_pme_driver.remove + - printk: use rcuidle console tracepoint + - timekeeping: Use deferred printk() in debug code + - bcache: Make gc wakeup sane, remove set_task_state() + - videodev2.h: go back to limited range Y'CbCr for SRGB and, ADOBERGB + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.9.13 + - net/mlx5e: Disable preemption when doing TC statistics upcall + - net/llc: avoid BUG_ON() in skb_orphan() (CVE-2017-6345) + - net: ethernet: ti: cpsw: fix cpsw assignment in resume + (regression in 4.9) + - packet: fix races in fanout_add() (CVE-2017-6346) + - packet: Do not call fanout_release from atomic contexts + (regression in 4.9) + - net: neigh: Fix netevent NETEVENT_DELAY_PROBE_TIME_UPDATE notification + - dccp: fix freeing skb too early for IPV6_RECVPKTINFO (CVE-2017-6074) + - vxlan: fix oops in dev_fill_metadata_dst (regression in 4.6) + - irda: Fix lockdep annotations in hashbin_delete(). (CVE-2017-6348) + - ptr_ring: fix race conditions when resizing + - ip: fix IP_CHECKSUM handling (regression in 4.0) (CVE-2017-6347) + - net: socket: fix recvmmsg not returning error from sock_error + (regression in 4.6) + - USB: serial: mos7840: fix another NULL-deref at open + - USB: serial: ftdi_sio: fix modem-status error handling + - USB: serial: ftdi_sio: fix extreme low-latency setting + - USB: serial: ftdi_sio: fix line-status over-reporting + - USB: serial: spcp8x5: fix modem-status handling + - USB: serial: opticon: fix CTS retrieval at open + - USB: serial: ark3116: fix register-accessor error handling + - netfilter: nf_ct_helper: warn when not applying default helper assignment + - block: fix double-free in the failure path of cgwb_bdi_init() + - rtlwifi: rtl_usb: Fix for URB leaking when doing ifconfig up/down + - xfs: clear delalloc and cache on buffered write failure + + [ Ben Hutchings ] + * [armel] dts: kirkwood: Fix SATA pinmux-ing for TS419 (Closes: #855017) + * [armhf] Enable DRM_OMAP_PANEL_TPO_TD028TTEC1, PWM_OMAP_DMTIMER as modules + (Closes: #855472) + * net: Ignore ABI changes to can_rx_register(), ip6_xmit() + * net: Avoid ABI change for min_header_len + * udeb: Add more USB host and dual-role drivers to usb-modules + (Closes: #856111) + * [x86] kvm: fix page struct leak in handle_vmon (CVE-2017-2596) + * ipc/shm: Fix shmat mmap nil-page protection (CVE-2017-5669) + * time: Disable TIMER_STATS (CVE-2017-5967) + * sctp: deny peeloff operation on asocs with threads sleeping on it + (CVE-2017-6353) + * [rt] Update to 4.9.13-rt10: + - sched/rt: Add a missing rescheduling point + - lockdep: Handle statically initialized PER_CPU locks proper + - Change export of rt_mutex_destroy() back to GPL-only + + -- Ben Hutchings Mon, 27 Feb 2017 15:58:07 +0000 + +linux (4.9.10-1) unstable; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.9.7 + - drm: Schedule the output_poll_work with 1s delay if we have delayed event + - drm: Fix broken VT switch with video=1366x768 option + - [x86] drm/i915: Ignore bogus plane coordinates on SKL when the plane is + not visible + - [armhf,arm64] drm/vc4: Fix memory leak of the CRTC state. + - [armhf,arm64] drm/vc4: fix a bounds check + - Revert "drm/radeon: always apply pci shutdown callbacks" + - drm/atomic: clear out fence when duplicating state + - mm/huge_memory.c: respect FOLL_FORCE/FOLL_COW for thp + - mm/mempolicy.c: do not put mempolicy before using its nodemask + - mm, page_alloc: fix check for NULL preferred_zone + - mm, page_alloc: fix fast-path race with cpuset update or removal + - mm, page_alloc: move cpuset seqcount checking to slowpath + - mm, page_alloc: fix premature OOM when racing with cpuset mems update + - userns: Make ucounts lock irq-safe + - sysctl: fix proc_doulongvec_ms_jiffies_minmax() + - xfs: prevent quotacheck from overloading inode lru + - ISDN: eicon: silence misleading array-bounds warning + - Btrfs: remove old tree_root case in btrfs_read_locked_inode() + - Btrfs: disable xattr operations on subvolume directories + - Btrfs: remove ->{get, set}_acl() from btrfs_dir_ro_inode_operations + - RDMA/cma: Fix unknown symbol when CONFIG_IPV6 is not enabled + - [s390x] mm: Fix cmma unused transfer from pgste into pte + - [s390x] ptrace: Preserve previous registers for short regset write + - IB/cxgb3: fix misspelling in header guard + - IB/iser: Fix sg_tablesize calculation + - IB/srp: fix mr allocation when the device supports sg gaps + - IB/srp: fix invalid indirect_sg_entries parameter value + - can: c_can_pci: fix null-pointer-deref in c_can_start() - set device + pointer + - can: ti_hecc: add missing prepare and unprepare of the clock + - [hppa] Don't use BITS_PER_LONG in userspace-exported swab.h header + - nfs: Don't increment lock sequence ID after NFS4ERR_MOVED + - NFSv4.1: Fix a deadlock in layoutget + - NFSv4.0: always send mode in SETATTR after EXCLUSIVE4 + - SUNRPC: cleanup ida information when removing sunrpc module + - iw_cxgb4: free EQ queue memory on last deref + - pctv452e: move buffer to heap, no mutex + - v4l: tvp5150: Reset device at probe time, not in get/set format handlers + - v4l: tvp5150: Fix comment regarding output pin muxing + - v4l: tvp5150: Don't override output pinmuxing at stream on/off time + - [x86] drm/i915: Clear ret before unbinding in i915_gem_evict_something() + - [x86] drm/i915: prevent crash with .disable_display parameter + - [x86] drm/i915: Don't leak edid in intel_crt_detect_ddc() + - [x86] drm/i915: Don't init hpd polling for vlv and chv from + runtime_suspend() + - [x86] drm/i915: Fix calculation of rotated x and y offsets for planar + formats + - [x86] drm/i915: Check for NULL atomic state in + intel_crtc_disable_noatomic() + - IB/umem: Release pid in error and ODP flow + - [x86] pinctrl: baytrail: Rectify debounce support + - memory_hotplug: make zone_can_shift() return a boolean value + - virtio_mmio: Set DMA masks appropriately + - mm, memcg: do not retry precharge charges + - perf/core: Fix concurrent sys_perf_event_open() vs. 'move_group' race + (CVE-2017-6001) + - [x86] drm/i915: Remove WaDisableLSQCROPERFforOCL KBL workaround. + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.9.8 + - r8152: fix the sw rx checksum is unavailable + - [x86] netvsc: add rcu_read locking to netvsc callback + - net: lwtunnel: Handle lwtunnel_fill_encap failure + - net: ipv4: fix table id in getroute response + - tcp: fix tcp_fastopen unaligned access complaints on sparc + - openvswitch: maintain correct checksum state in conntrack actions + - mlx4: do not call napi_schedule() without care + - ip6_tunnel: Account for tunnel header in tunnel MTU + - ax25: Fix segfault after sock connection timeout + - net sched actions: fix refcnt when GETing of action after bind + - virtio: don't set VIRTIO_NET_HDR_F_DATA_VALID on xmit + - virtio-net: restore VIRTIO_HDR_F_DATA_VALID on receiving + - vxlan: fix byte order of vxlan-gpe port number + - net: fix harmonize_features() vs NETIF_F_HIGHDMA + - lwtunnel: fix autoload of lwt modules + - ipv6: addrconf: Avoid addrconf_disable_change() using RCU read-side lock + - tcp: initialize max window for a new fastopen socket + - net/mlx5e: Do not recycle pages from emergency reserve + - bridge: netlink: call br_changelink() during br_dev_newlink() + - net: mpls: Fix multipath selection for LSR use case + - r8152: don't execute runtime suspend if the tx is not empty + - af_unix: move unix_mknod() out of bindlock + - net: Specify the owning module for lwtunnel ops + - lwtunnel: Fix oops on state free after encap module unload + - [armhf] net: dsa: Bring back device detaching in dsa_slave_suspend() + - xfs: bump up reserved blocks in xfs_alloc_set_aside + - xfs: fix bogus minleft manipulations + - xfs: adjust allocation length in xfs_alloc_space_available + - xfs: don't rely on ->total in xfs_alloc_space_available + - xfs: don't print warnings when xfs_log_force fails + - xfs: make the ASSERT() condition likely + - xfs: sanity check directory inode di_size + - xfs: add missing include dependencies to xfs_dir2.h + - xfs: replace xfs_mode_to_ftype table with switch statement + - xfs: sanity check inode mode when creating new dentry + - xfs: sanity check inode di_mode + - xfs: don't wrap ID in xfs_dq_get_next_id + - xfs: fix xfs_mode_to_ftype() prototype + - xfs: fix COW writeback race + - xfs: verify dirblocklog correctly + - xfs: remove racy hasattr check from attr ops + - xfs: extsize hints are not unlikely in xfs_bmap_btalloc + - xfs: clear _XBF_PAGES from buffers when readahead page + - xfs: fix bmv_count confusion w/ shared extents + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.9.9 + - PCI/ASPM: Handle PCI-to-PCIe bridges as roots of PCIe hierarchies + - ext4: validate s_first_meta_bg at mount time (CVE-2016-10208) + - [x86] efi: Always map the first physical page into the EFI pagetables + - [arm64] efi/fdt: Avoid FDT manipulation after ExitBootServices() + (Closes: #853170) + - HID: cp2112: fix sleep-while-atomic + - HID: cp2112: fix gpio-callback error handling + - [x86] pinctrl: baytrail: Add missing spinlock usage in + byt_gpio_irq_handler + - [x86] drm/amdgpu/si: fix crash on headless asics + - drm/nouveau/disp/gt215: Fix HDA ELD handling (thus, HDMI audio) on gt215 + - drm/nouveau/nv1a,nv1f/disp: fix memory clock rate retrieval + - crypto: api - Clear CRYPTO_ALG_DEAD bit before registering an alg + - crypto: arm64/aes-blk - honour iv_out requirement in CBC and CTR modes + - perf/core: Fix use-after-free bug + - perf/core: Fix PERF_RECORD_MMAP2 prot/flags for anonymous memory + - ata: sata_mv:- Handle return value of devm_ioremap. + - libata: apply MAX_SEC_1024 to all CX1-JB*-HP devices + - libata: Fix ATA request sense + - [powerpc*] eeh: Fix wrong flag passed to eeh_unfreeze_pe() + - [powerpc*] Add missing error check to prom_find_boot_cpu() + - [powerpc*] mm: Use the correct pointer when setting a 2MB pte + - NFSD: Fix a null reference case in find_or_create_lock_stateid() + - svcrpc: fix oops in absence of krb5 module + - zswap: disable changing params if init fails + - cifs: initialize file_info_lock + - mm/memory_hotplug.c: check start_pfn in test_pages_in_a_zone() + - base/memory, hotplug: fix a kernel oops in show_valid_zones() + - mm, fs: check for fatal signals in do_generic_file_read() + - tracing: Fix hwlat kthread migration + - can: bcm: fix hrtimer/tasklet termination in bcm op removal + - cgroup: don't online subsystems before cgroup_name/path() are operational + - mmc: sdhci: Ignore unexpected CARD_INT interrupts + - vhost: fix initialization for vq->is_le + - [armhf] regulator: axp20x: AXP806: Fix dcdcb being set instead of dcdce + - percpu-refcount: fix reference leak during percpu-atomic transition + - [x86] pinctrl: baytrail: Debounce register is one per community + - [x86] pinctrl: intel: merrifield: Add missed check in mrfld_config_set() + - iwlwifi: fix double hyphen in MODULE_FIRMWARE for 8000 + - iwlwifi: mvm: avoid crash on restart w/o reserved queues + - HID: usbhid: Quirk a AMI virtual mouse and keyboard with ALWAYS_POLL + - HID: hid-lg: Fix immediate disconnection of Logitech Rumblepad 2 + - HID: wacom: Fix poor prox handling in 'wacom_pl_irq' + - [x86] perf/intel/uncore: Clean up hotplug conversion fallout + - [armhf] dmaengine: cppi41: Fix runtime PM timeouts with USB mass storage + - [armhf] dmaengine: cppi41: Fix oops in cppi41_runtime_resume + - [x86] KVM: do not save guest-unsupported XSAVE state + - USB: Add quirk for WORLDE easykey.25 MIDI keyboard + - usb: musb: Fix host mode error -71 regression + - usb: gadget: f_fs: Assorted buffer overflow checks. + - irqdomain: Avoid activating interrupts more than once + - [x86] irq: Make irq activate operations symmetric + - iw_cxgb4: set correct FetchBurstMax for QPs + - fs: break out of iomap_file_buffered_write on fatal signals + - [x86] drm/i915/execlists: Reset RING registers upon resume + (Closes: #855055) + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.9.10 + - [x86] cpufreq: intel_pstate: Disable energy efficiency optimization + - acpi, nfit: fix acpi_nfit_flush_probe() crash + - [x86] libnvdimm, namespace: do not delete namespace-id 0 + - [x86] libnvdimm, pfn: fix memmap reservation size versus 4K alignment + - dm rq: cope with DM device destruction while in dm_old_request_fn() + - crypto: algif_aead - Fix kernel panic on list_del + - [x86] crypto: qat - fix bar discovery for c62x + - [x86] crypto: qat - zero esram only for DH85x devices + - [x86] crypto: ccp - Fix DMA operations when IOMMU is enabled + - [x86] crypto: ccp - Fix double add when creating new DMA command + - Input: uinput - fix crash when mixing old and new init style + - selinux: fix off-by-one in setprocattr (CVE-2017-2618) + - [x86] Revert "x86/ioapic: Restore IO-APIC irq_chip retrigger callback" + - rtlwifi: rtl8192ce: Fix loading of incorrect firmware (Closes: #853073) + - cpumask: use nr_cpumask_bits for parsing functions (Closes: #848682) + - [armel,armhf] 8643/3: arm/ptrace: Preserve previous registers for short + regset write + - [x86] drm/i915: fix use-after-free in page_flip_completed() + - [x86] drm/i915/bxt: Add MST support when do DPLL calculation + - drm/atomic: Fix double free in drm_atomic_state_default_clear + - target: Don't BUG_ON during NodeACL dynamic -> explicit conversion + - target: Use correct SCSI status during EXTENDED_COPY exception + - target: Fix early transport_generic_handle_tmr abort scenario + - target: Fix multi-session dynamic se_node_acl double free OOPs + - target: Fix COMPARE_AND_WRITE ref leak for non GOOD status + - [armhf] dts: imx6dl: fix GPIO4 range + - [armhf] 8642/1: LPAE: catch pending imprecise abort on unmask + - [x86] drm/i915: Always convert incoming exec offsets to non-canonical + - nl80211: Fix mesh HT operation check + - mac80211: Fix adding of mesh vendor IEs + - net/mlx5e: Modify TIRs hash only when it's needed + - [x86] Drivers: hv: vmbus: Base host signaling strictly on the ring state + - [x86] Drivers: hv: vmbus: On write cleanup the logic to interrupt the host + - [x86] Drivers: hv: vmbus: On the read path cleanup the logic to interrupt + the host + - [x86] Drivers: hv: vmbus: finally fix hv_need_to_signal_on_read() + - [s390x] scsi: zfcp: fix use-after-free by not tracing WKA port open/close + on failed send + - scsi: aacraid: Fix INTx/MSI-x issue with older controllers + - scsi: mpt3sas: disable ASPM for MPI2 controllers + - scsi: qla2xxx: Avoid that issuing a LIP triggers a kernel crash + - btrfs: fix btrfs_compat_ioctl failures on non-compat ioctls + - [powerpc*] mm/radix: Update ERAT flushes when invalidating TLB + - [powerpc*] powernv: Fix CPU hotplug to handle waking on HVI + - xen-netfront: Delete rx_refill_timer in xennet_disconnect_backend() + - ALSA: hda - adding a new NV HDMI/DP codec ID in the driver + - ALSA: seq: Fix race at creating a queue + - ALSA: seq: Don't handle loop timeout at snd_seq_pool_done() + - Revert "ALSA: line6: Only determine control port properties if needed" + - [x86] mm/ptdump: Fix soft lockup in page table walker + - [x86] CPU/AMD: Bring back Compute Unit ID + - [x86] CPU/AMD: Fix Zen SMT topology + - IB/rxe: Fix resid update + - IB/rxe: Fix mem_check_range integer overflow (CVE-2016-8636) + - stacktrace, lockdep: Fix address, newline ugliness + - perf diff: Fix -o/--order option behavior (again) + - perf diff: Fix segfault on 'perf diff -o N' option + - perf/core: Fix crash in perf_event_read() + + [ Ben Hutchings ] + * Bump ABI to 2 + * [or1k] Remove configuration, as the port has been abandoned + * [arm64] Enable KEXEC (Closes: #852747) + * [arm64,armhf,x86] usb: gadget: Enable USB_CONFIGFS, USB_ETH, USB_GADGETFS, + USB_FUNCTIONFS, USB_G_SERIAL as modules; + USB_CONFIGFS_{SERIAL,ACM,OBEX,NCM,ECM,ECM_SUBSET,RNDIS,EEM,PHONET,MASS_STORAGE}, + USB_CONFIGFS_F_{LB_SS,LS,UAC1,UAC2,MIDI,HID,UVC,PRINTER}, USB_ETH_RNDIS, + USB_FUNCTIONFS_{ETH,RNDIS,GENERIC} (thanks to Riku Voipio) + * [ppc64el] Disable IBMEBUS; this bus does not exist on POWER8 systems + * aufs: Update support patchset to aufs4.9-20170206 + * [rt] Update to 4.9.9-rt6: + - Revert "btrfs: swap free() and trace point in run_ordered_work()" + - pinctrl: qcom: Use raw spinlock variants + - x86/mm/cpa: avoid wbinvd() for PREEMPT + - Revert "radix-tree: Make RT aware" + - radix-tree: use local locks + - softirq: wake the timer softirq if needed + - timers: Don't wake ktimersoftd on every tick + - rt: Drop mutex_disable() on !DEBUG configs and the GPL suffix from export + symbol + - cpuset: Convert callback_lock to raw_spinlock_t + * pegasus: Use heap buffers for all register access (Closes: #852556) + * test-patches: Use the pkg.linux.notools build profile + * test-patches: Set default number of jobs to number of available processors + * dccp: Disable auto-loading as mitigation against local exploits + * net: ipv6: check route protocol when deleting routes (Closes: #855153) + * [arm64] drm: Enable DRM_AST as module (Closes: #820168) + - udeb: Add ast to fb-modules + * [armel/marvell] hwmon: Enable SENSORS_G762 as module (Closes: #854662) + * [m68k] Change MAC8390, MAC_SCSI from built-in to modules (Closes: #826614) + - udeb: Add mac8390 to nic-shared-modules + * udeb: Add bcache to md-modules (Closes: #718548) + * [x86] platform: acer-wmi: setup accelerometer when machine has appropriate + notify event (Closes: #853067) + * [x86] xen: Fix APIC id mismatch warning on Intel (Closes: #853193) + * media: dvb-usb-dibusb-mc-common: Add MODULE_LICENSE (Closes: #853110) + + [ Roger Shimizu ] + * [armel] ARM: dts: orion5x-lschl: Fix model name + * [armel] ARM: dts: orion5x-lschl: More consistent naming on linkstation + series + * [armel] ARM: orion5x: fix Makefile for linkstation-lschl.dtb + + [ Salvatore Bonaccorso ] + * ipv4: keep skb->dst around in presence of IP options (CVE-2017-5970) + * sctp: avoid BUG_ON on sctp_wait_for_sndbuf (CVE-2017-5986) + + -- Ben Hutchings Fri, 17 Feb 2017 13:18:17 +0000 + +linux (4.9.6-3) unstable; urgency=medium + + * btree,musb,st_sensors: Ignore ABI changes (fixes FTBFS on armel,armhf) + + -- Ben Hutchings Sat, 28 Jan 2017 16:11:16 +0000 + +linux (4.9.6-2) unstable; urgency=medium + + * linux-cpupower: Use dh-exec architecture filtering for x86-specific files + (fixes FTBFS on !x86) + + -- Ben Hutchings Fri, 27 Jan 2017 22:09:50 +0000 + +linux (4.9.6-1) unstable; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.9.3 + - iio: common: st_sensors: fix channel data parsing + - [mips] staging: octeon: Call SET_NETDEV_DEV() + - ALSA: hda - Fix up GPIO for ASUS ROG Ranger + - ALSA: hda - Apply asus-mode8 fixup to ASUS X71SL + - ALSA: usb-audio: Fix irq/process data synchronization + - fscrypt: fix renaming and linking special files + - [hppa/parisc] Add line-break when printing segfault info + - [hppa/parisc] Mark cr16 clocksource unstable on SMP systems + - HID: sensor-hub: Move the memset to sensor_hub_get_feature() + - mac80211: initialize fast-xmit 'info' later + - asm-prototypes: Clear any CPP defines before declaring the functions + - [x86] drm/i915: Fix oopses in the overlay code due to i915_gem_active + stuff + - [x86] drm/i915: Fix oops in overlay due to frontbuffer tracking + - [x86] drm/i915: Force VDD off on the new power seqeuencer before + starting to use it + - [x86] drm/i915: Initialize overlay->last_flip properly + - [x86] KVM: reset MMU on KVM_SET_VCPU_EVENTS + - [armhf] usb: musb: core: add clear_ep_rxintr() to musb_platform_ops + - [armhf] usb: musb: dsps: implement clear_ep_rxintr() callback + - usb: storage: unusual_uas: Add JMicron JMS56x to unusual device + - usb: gadgetfs: restrict upper bound on device configuration size + - USB: gadgetfs: fix unbounded memory allocation bug + - USB: gadgetfs: fix use-after-free bug + - USB: gadgetfs: fix checks of wTotalLength in config descriptors + - USB: fix problems with duplicate endpoint addresses + - usb: gadget: composite: Test get_alt() presence instead of set_alt() + - [arm64, armhf] usb: dwc3: core: avoid Overflow events + - usb: xhci: fix possible wild pointer + - [x86] usb: xhci: apply XHCI_PME_STUCK_QUIRK to Intel Apollo Lake + - xhci: free xhci virtual devices with leaf nodes first + - usb: xhci: fix return value of xhci_setup_device() + - usb: host: xhci: Fix possible wild pointer when handling abort command + - xhci: Handle command completion and timeout race + - usb: xhci: hold lock over xhci_abort_cmd_ring() + - USB: serial: omninet: fix NULL-derefs at open and disconnect + - USB: serial: quatech2: fix sleep-while-atomic in close + - USB: serial: pl2303: fix NULL-deref at open + - USB: serial: keyspan_pda: verify endpoints at probe + - USB: serial: spcp8x5: fix NULL-deref at open + - USB: serial: io_ti: fix NULL-deref at open + - USB: serial: io_ti: fix another NULL-deref at open + - USB: serial: io_ti: fix I/O after disconnect + - USB: serial: iuu_phoenix: fix NULL-deref at open + - USB: serial: garmin_gps: fix memory leak on failed URB submit + - USB: serial: ti_usb_3410_5052: fix NULL-deref at open + - USB: serial: io_edgeport: fix NULL-deref at open + - USB: serial: oti6858: fix NULL-deref at open + - USB: serial: cyberjack: fix NULL-deref at open + - USB: serial: kobil_sct: fix NULL-deref in write + - USB: serial: mos7840: fix NULL-deref at open + - USB: serial: mos7720: fix NULL-deref at open + - USB: serial: mos7720: fix use-after-free on probe errors + - USB: serial: mos7720: fix parport use-after-free on probe errors + - USB: serial: mos7720: fix parallel probe + - usb: xhci-mem: use passed in GFP flags instead of GFP_KERNEL + - xhci: Use delayed_work instead of timer for command timeout + - xhci: Fix race related to abort operation + - [armhf] usb: musb: Fix trying to free already-free IRQ 4 + - usb: hub: Move hub_port_disable() to fix warning if PM is disabled + - usb: gadget: udc: core: fix return code of usb_gadget_probe_driver() + - ALSA: usb-audio: Fix bogus error return in snd_usb_create_stream() + - USB: serial: kl5kusb105: abort on open exception path + - usb: gadget: Fix second argument of percpu_ida_alloc() + - usb: gadget: fix request length error for isoc transfer + - [armhf] dts: sun7i: bananapi-m1-plus: Enable USB PHY for USB host + support + - dibusb: fix possible memory leak in dibusb_rc_query() + - USB: serial: io_ti: bind to interface after fw download + - [x86] mei: move write cb to completion on credentials failures + - iio: accel: st_accel: fix LIS3LV02 reading and scaling + - [arm64, armhf] usb: dwc3: ep0: add dwc3_ep0_prepare_one_trb() + - [arm64, armhf] usb: dwc3: ep0: explicitly call + dwc3_ep0_prepare_one_trb() + - [arm64, armhf] usb: dwc3: gadget: always unmap EP0 requests + - [x86] drm/i915/dp: add lane_count check in intel_dp_check_link_status + - [x86] drm/i915: tune down the fast link training vs boot fail + - mac80211: fix tid_agg_rx NULL dereference + - nl80211: Use different attrs for BSSID and random MAC addr in scan req + - ath10k: fix failure to send NULL func frame for 10.4 + - ath10k: use the right length of "background" + - efi/efivar_ssdt_load: Don't return success on allocation failure + - debugfs: improve DEFINE_DEBUGFS_ATTRIBUTE for !CONFIG_DEBUG_FS + - [x86] prctl/uapi: Remove #ifdef for CHECKPOINT_RESTORE + - [x86] cpu: Probe CPUID leaf 6 even when cpuid_level == 6 + - [x86] platform/x86: fujitsu-laptop: use brightness_set_blocking for + LED-setting callbacks + - hwmon: (amc6821) sign extension temperature + - hwmon: (ds620) Fix overflows seen when writing temperature limits + - [armhf] hwmon: (g762) Fix overflows and crash seen when writing limit + attributes + - hwmon: (lm90) fix temp1_max_alarm attribute + - Input: synaptics-rmi4 - unlock on error + - [armhf] clk: ti: dra7: fix "failed to lookup clock node + gmac_gmii_ref_clk_div" boot message + - [amd64] iommu/amd: Missing error code in amd_iommu_init_device() + - [amd64] iommu/amd: Fix the left value check of cmd buffer + - [x86] iommu/vt-d: Fix pasid table size encoding + - [x86] iommu/vt-d: Flush old iommu caches for kdump when the device gets + context mapped + - [x86] ASoC: cht_bsw_rt5645: Fix leftover kmalloc + - [x86] ASoC: Intel: Skylake: Fix a shift wrapping bug + - scsi: mvsas: fix command_active typo + - target/iscsi: Fix double free in lio_target_tiqn_addtpg() + - sbp-target: Fix second argument of percpu_ida_alloc() + - relay: check array offset before using it + - PCI/MSI: Check for NULL affinity mask in pci_irq_get_affinity() + - PM / wakeirq: Fix dedicated wakeirq for drivers not using autosuspend + - genirq/affinity: Fix node generation from cpumask + - mm/hugetlb.c: use the right pte val for compare in hugetlb_cow + - docs-rst: fix LaTeX \DURole renewcommand with Sphinx 1.3+ + - mm: khugepaged: close use-after-free race during shmem collapsing + - mm: khugepaged: fix radix tree node leak in shmem collapse error path + - mm, compaction: fix NR_ISOLATED_* stats for pfn based migration + - [s390x] crypto: unlock on error in prng_tdes_read() + - [arm64] crypto: sha2-ce - fix for big endian + - [arm64] crypto: ghash-ce - fix for big endian + - [arm64] crypto: aes-ccm-ce: fix for big endian + - [arm64] crypto: sha1-ce - fix for big endian + - [arm64] crypto: aes-xts-ce: fix for big endian + - [arm64] crypto: aes-ce - fix for big endian + - md: MD_RECOVERY_NEEDED is set for mddev->recovery + - md: fix refcount problem on mddev when stopping array. + - f2fs: remove percpu_count due to performance regression + - f2fs: hide a maybe-uninitialized warning + - PCI: Add Mellanox device IDs + - PCI: Convert broken INTx masking quirks from HEADER to FINAL + - PCI: Convert Mellanox broken INTx quirks to be for listed devices only + - PCI: Support INTx masking on ConnectX-4 with firmware x.14.1100+ + - PCI: Enable access to non-standard VPD for Chelsio devices (cxgb3) + - [powerpc/powerpc64,ppc64*] pci/rpadlpar: Fix device reference leaks + - [s390x] topology: always use s390 specific sched_domain_topology_level + - [s390x] pci: fix dma address calculation in map_sg + - drm/radeon: Always store CRTC relative radeon_crtc->cursor_x/y values + - [x86] drm/i915: disable PSR by default on HSW/BDW + - [x86] drm/i915/gen9: unconditionally apply the memory bandwidth WA + - [x86] drm/i915/gen9: fix the WM memory bandwidth WA for Y tiling cases + - xfs: don't call xfs_sb_quota_from_disk twice + - xfs: check return value of _trans_reserve_quota_nblks + - xfs: don't skip cow forks w/ delalloc blocks in cowblocks scan + - xfs: don't BUG() on mixed direct and mapped I/O + - xfs: provide helper for counting extents from if_bytes + - xfs: check minimum block size for CRC filesystems + - xfs: fix unbalanced inode reclaim flush locking + - xfs: new inode extent list lookup helpers + - xfs: factor rmap btree size into the indlen calculations + - xfs: always succeed when deduping zero bytes + - xfs: remove prev argument to xfs_bmapi_reserve_delalloc + - xfs: track preallocation separately in xfs_bmapi_reserve_delalloc() + - xfs: use new extent lookup helpers in __xfs_reflink_reserve_cow + - xfs: clean up cow fork reservation and tag inodes correctly + - xfs: use new extent lookup helpers xfs_file_iomap_begin_delay + - xfs: pass post-eof speculative prealloc blocks to bmapi + - xfs: Move AGI buffer type setting to xfs_read_agi + - xfs: pass state not whichfork to trace_xfs_extlist + - xfs: handle cow fork in xfs_bmap_trace_exlist + - xfs: forbid AG btrees with level == 0 + - xfs: check for bogus values in btree block headers + - xfs: complain if we don't get nextents bmap records + - xfs: don't crash if reading a directory results in an unexpected hole + - xfs: error out if trying to add attrs and anextents > 0 + - xfs: don't allow di_size with high bit set + - xfs: don't cap maximum dedupe request length + - xfs: ignore leaf attr ichdr.count in verifier during log replay + - xfs: use GPF_NOFS when allocating btree cursors + - xfs: fix double-cleanup when CUI recovery fails + - xfs: use the actual AG length when reserving blocks + - xfs: fix crash and data corruption due to removal of busy COW extents + - xfs: fix max_retries _show and _store functions + - clocksource/dummy_timer: Move hotplug callback after the real timers + - tick/broadcast: Prevent NULL pointer dereference + - Revert "rtlwifi: Fix enter/exit power_save" + - Revert "usb: gadget: composite: always set ep->mult to a sensible value" + - usb: gadget: composite: always set ep->mult to a sensible value + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.9.4 + - net: vrf: Fix NAT within a VRF + - net: vrf: Drop conntrack data after pass through VRF device on Tx + - sctp: sctp_transport_lookup_process should rcu_read_unlock when transport + is null + - inet: fix IP(V6)_RECVORIGDSTADDR for udp sockets + - ipv6: handle -EFAULT from skb_copy_bits + - net, sched: fix soft lockup in tc_classify + - [arm64, armhf] net: stmmac: Fix race between stmmac_drv_probe and + stmmac_open + - net/sched: cls_flower: Fix missing addr_type in classify + - net/mlx5: Check FW limitations on log_max_qp before setting it + - net/mlx5: Cancel recovery work in remove flow + - net/mlx5: Avoid shadowing numa_node + - net/mlx5: Mask destination mac value in ethtool steering rules + - net/mlx5: Prevent setting multicast macs for VFs + - net/mlx5e: Don't sync netdev state when not registered + - net/mlx5e: Disable netdev after close + - rtnl: stats - add missing netlink message size checks + - net: fix incorrect original ingress device index in PKTINFO + - net: ipv4: dst for local input routes should use l3mdev if relevant + - drop_monitor: add missing call to genlmsg_end + - drop_monitor: consider inserted data in genlmsg_end + - flow_dissector: Update pptp handling to avoid null pointer deref. + - igmp: Make igmp group member RFC 3376 compliant + - ipv4: Do not allow MAIN to be alias for new LOCAL w/ custom rules + - net: vrf: Add missing Rx counters + - [x86] bpf: change back to orig prog on too many passes + - [armhf] net: dsa: bcm_sf2: Do not clobber b53_switch_ops + - [armhf] net: dsa: bcm_sf2: Utilize nested MDIO read/write + - r8152: split rtl8152_suspend function + - r8152: fix rx issue for runtime suspend + - [armhf] net: dsa: Ensure validity of dst->ds[0] + - net: add the AF_QIPCRTR entries to family name tables + - gro: Enter slow-path if there is no tailroom + - gro: use min_t() in skb_gro_reset_offset() + - gro: Disable frag0 optimization on IPv6 ext headers + - net/mlx5e: Remove WARN_ONCE from adaptive moderation code + - net: ipv4: Fix multipath selection with vrf + - net: vrf: do not allow table id 0 + - HID: hid-cypress: validate length of report + - ALSA: firewire-tascam: Fix to handle error from initialization of stream + data + - [powerpc] Fix build warning on 32-bit PPC + - [arm64] dts: mt8173: Fix auxadc node + - [arm64] dts: bcm2837-rpi-3-b: remove incorrect pwr LED + - [arm64] dts: bcm2835: Fix bcm2837 compatible string + - svcrdma: Clear xpt_bc_xps in xprt_setup_rdma_bc() error exit arm + - [armhf] OMAP5: Fix mpuss_early_init + - [armhf] OMAP5: Fix build for PM code + - [armhf] OMAP4+: Fix bad fallthrough for cpuidle + - [armhf] omap2+: am437x: rollback to use omap3_gptimer_timer_init() + - [armel/marvell, armhf] spi: mvebu: fix baudrate calculation for armada + variant + - ALSA: usb-audio: Add a quirk for Plantronics BT600 + - [x86] drm/i915/gen9: Fix PCODE polling during CDCLK change notification + - rtlwifi: Fix enter/exit power_save + - rtlwifi: rtl_usb: Fix missing entry in USB driver's private data + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.9.5 + - Input: xpad - use correct product id for x360w controllers + - Input: i8042 - add Pegatron touchpad to noloop table + - [armhf] regulator: axp20x: Fix axp809 ldo_io registration error on cold + boot + - [arm64, armhf] drm/tegra: dpaux: Fix error handling + - [arm64, armhf] drm/vc4: Fix a couple error codes in vc4_cl_lookup_bos() + - drm/savage: dereferencing an error pointer + - zram: revalidate disk under init_lock + - zram: support BDI_CAP_STABLE_WRITES + - dax: fix deadlock with DAX 4k holes + - mm: pmd dirty emulation in page fault handler + - mm: fix devm_memremap_pages crash, use mem_hotplug_{begin, done} + - ocfs2: fix crash caused by stale lvb with fsdlm plugin + - mm, memcg: fix the active list aging for lowmem requests when memcg is + enabled + - mm: support anonymous stable page + - mm/slab.c: fix SLAB freelist randomization duplicate entries + (CVE-2017-5546) + - mm/hugetlb.c: fix reservation race when freeing surplus pages + - [x86] KVM: fix emulation of "MOV SS, null selector" (CVE-2017-2583) + - KVM: eventfd: fix NULL deref irqbypass consumer + - jump_labels: API for flushing deferred jump label updates + - [x86] KVM: flush pending lapic jump label updates on module unload + - [x86] KVM: fix NULL deref in vcpu_scan_ioapic + - [x86] KVM: add Align16 instruction flag + - [x86] KVM: add asm_safe wrapper + - [x86] KVM: emulate FXSAVE and FXRSTOR + - [x86] KVM: Introduce segmented_write_std (CVE-2017-2584) + - efi/libstub/arm*: Pass latest memory map to the kernel + - [x86] efi: Prune invalid memory map entries and fix boot regression + - [x86] efi: Don't allocate memmap through memblock after mm_init() + (Closes: #851928) + - nl80211: fix sched scan netlink socket owner destruction + - gpio: Move freeing of GPIO hogs before numbing of the device + - xfs: Timely free truncated dirty pages + - bridge: netfilter: Fix dropping packets that moving through bridge + interface + - [x86] cpu/AMD: Clean up cpu_llc_id assignment per topology feature + - [x86] bugs: Separate AMD E400 erratum and C1E bug + - [x86] CPU/AMD: Fix Bulldozer topology + - wusbcore: Fix one more crypto-on-the-stack bug + - [armhf] usb: musb: fix runtime PM in debugfs + - USB: serial: kl5kusb105: fix line-state error handling (CVE-2017-5549) + - USB: serial: ch341: fix initial modem-control state + - USB: serial: ch341: fix resume after reset + - USB: serial: ch341: fix open error handling + - USB: serial: ch341: fix control-message error handling + - USB: serial: ch341: fix open and resume after B0 + - i2c: print correct device invalid address + - i2c: fix kernel memory disclosure in dev interface + - fix a fencepost error in pipe_advance() (CVE-2017-5550) + - xhci: fix deadlock at host remove by running watchdog correctly + - btrfs: fix crash when tracepoint arguments are freed by wq callbacks + - ASoC: hdmi-codec: use unsigned type to structure members with bit-field + - Revert "tty: serial: 8250: add CON_CONSDEV to flags" + - pid: fix lockdep deadlock warning due to ucount_lock + - mnt: Protect the mountpoint hashtable with mount_lock + - drivers: char: mem: Fix thinkos in kmem address checks + - [armhf] dmaengine: omap-dma: Fix dynamic lch_map allocation + - virtio_blk: avoid DMA to stack for the sense buffer + - orinoco: Use shash instead of ahash for MIC calculations + - sysrq: attach sysrq handler correctly for 32-bit kernel + - [arm64, armhf] extcon: return error code on failure + - Clearing FIFOs in RS485 emulation mode causes subsequent transmits to + break + - sysctl: Drop reference added by grab_header in proc_sys_readdir + (CVE-2016-9191) + - [s390x] net/af_iucv: don't use paged skbs for TX on HiperSockets + - [x86] drm/i915/gen9: Fix PCODE polling timeout in stable backport + - drm: Clean up planes in atomic commit helper failure path + - drm/radeon: update smc firmware selection for SI + - drm/radeon: drop verde dpm quirks + - [x86] drm/amdgpu: update si kicker smc firmware + - [x86] drm/amdgpu: drop verde dpm quirks + - USB: serial: ch341: fix modem-control and B0 handling + - net/mlx5: Only cancel recovery work when cleaning up device + - i2c: piix4: Avoid race conditions with IMC + - [x86] cpu: Fix bootup crashes by sanitizing the argument of the + 'clearcpuid=' command-line option + - nvme: apply DELAY_BEFORE_CHK_RDY quirk at probe time too + - btrfs: fix locking when we put back a delayed ref that's too new + - btrfs: fix error handling when run_delayed_extent_op fails + - NFS: fix typo in parameter description + - pNFS: Fix race in pnfs_wait_on_layoutreturn + - NFS: Fix a performance regression in readdir + - NFSv4.1: nfs4_fl_prepare_ds must be careful about reporting success. + - [armhf] i2c: mux: pca954x: fix i2c mux selection caching + - [x86] drm/i915/gen9: Fix PCODE polling during SAGV disabling + - drm: avoid uninitialized timestamp use in wait_vblank + - [arm64, armhf] drm/panel: simple: Check against num_timings when setting + preferred for timing + - [x86] drm/i915: Move the min_pixclk[] handling to the end of readout + - drm: Initialise drm_mm.head_node.allocated + - block: Change extern inline to static inline + - block: cfq_cpd_alloc() should use @gfp + - [x86] ACPI / APEI: Fix NMI notification handling + - [x86] powercap/intel_rapl: fix and tidy up error handling + - iw_cxgb4: Fix error return code in c4iw_rdev_open() + - [arm64, armhf] power: supply: bq27xxx_battery: Fix register map for + BQ27510 and BQ27520 + - blk-mq: Always schedule hctx->next_cpu + - [powerpc] mm: Correct process and partition table max size + - [powerpc*] ibmebus: Fix further device reference leaks + - [powerpc*] ibmebus: Fix device reference leaks in sysfs interface + - [powerpc*] powernv: Don't warn on PE init if unfreeze is unsupported + - [arm64] hugetlb: fix the wrong address for several functions + - [arm64] hugetlb: remove the wrong pmd check in find_num_contig() + - [arm64] hugetlb: fix the wrong return value for + huge_ptep_set_access_flags + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.9.6 + - IB/core: Release allocated memory in cache setup failure + - IB/rxe: Increase max number of completions to 32k + - IB/rxe: avoid putting a large struct rxe_qp on stack + - IB/mlx5: Avoid system crash when enabling many VFs + - IB/mlx5: Fix reported max SGE calculation + - IB/mlx5: Assign SRQ type earlier + - IB/mlx5: Wait for all async command completions to complete + - IB/mlx4: Set traffic class in AH + - IB/mlx4: Fix out-of-range array index in destroy qp flow + - IB/mlx4: Handle well-known-gid in mad_demux processing + - IB/mlx4: Fix port query for 56Gb Ethernet links + - IB/mlx4: When no DMFS for IPoIB, don't allow NET_IF QPs + - IB/mlx4: Check if GRH is available before using it + - IB/IPoIB: Remove can't use GFP_NOIO warning + - perf trace: Use the syscall raw_syscalls:sys_enter timestamp + - perf mem: Fix --all-user/--all-kernel options + - perf trace: Check if MAP_32BIT is defined (again) + - perf diff: Do not overwrite valid build id + - perf callchain: Fixup help/config for no-unwinding + - perf scripting: Avoid leaking the scripting_context variable + - perf jit: Enable jitdump support without dwarf + - [armhf] dts: bcm283x: fix typo in mailbox address + - [armhf] dts: imx6q-cm-fx6: fix fec pinctrl + - [armhf] dts: omap3: Add DTS for Logic PD SOM-LV 37xx Dev Kit + - tmpfs: clear S_ISGID when setting posix ACLs (CVE-2017-5551) + - [x86] PCI: Ignore _CRS on Supermicro X8DTH-i/6/iF/6F + - rcu: Narrow early boot window of illegal synchronous grace periods + - sunrpc: don't call sleeping functions from the notifier block callbacks + - svcrpc: don't leak contexts on PROC_DESTROY + - libnvdimm, namespace: fix pmem namespace leak, delete when size set to + zero + - fuse: clear FR_PENDING flag when moving requests out of pending queue + - fuse: fix time_to_jiffies nsec sanity check + - PCI: Enumerate switches below PCI-to-PCIe bridges + - HID: corsair: fix DMA buffers on stack (CVE-2017-5547) + - HID: corsair: fix control-transfer error handling + - mmc: sdhci-acpi: Only powered up enabled acpi child devices + - ieee802154: atusb: do not use the stack for buffers to make them DMA able + (CVE-2017-5548) + - [s390x] KVM: do not expose random data via facility bitmap + - [armhf,arm64] KVM: vgic: Fix deadlock on error handling + - [powerpc*] icp-opal: Fix missing KVM case and harden replay + - [powerpc*] perf: Fix PM_BRU_CMPL event code for power9 + - [powerpc*] ptrace: Preserve previous fprs/vsrs on short regset write + - [powerpc*] ptrace: Preserve previous TM fprs/vsrs on short regset write + - [powerpc*] Ignore reserved field in DCSR and PVR reads and writes + - [x86] ioapic: Restore IO-APIC irq_chip retrigger callback + - qla2xxx: Fix crash due to null pointer access + - mac80211: implement multicast forwarding on fast-RX path + - ubifs: Fix journal replay wrt. xattr nodes + - [armhf] clocksource/exynos_mct: Clear interrupt when cpu is shut down + - svcrdma: avoid duplicate dma unmapping during error recovery + - ceph: fix bad endianness handling in parse_reply_info_extra + - [armhf] dts: OMAP5 / DRA7: indicate that SATA port 0 is available. + - [arm64] avoid returning from bad_mode + - [arm64] ptrace: Preserve previous registers for short regset write + - [arm64] ptrace: Avoid uninitialised struct padding in fpr_set() + - [arm64] ptrace: Reject attempts to set incomplete hardware breakpoint + fields + - Input: ALPS - fix TrackStick support for SS5 hardware + - libceph: ceph_x_encrypt_buflen() takes in_len + - libceph: old_key in process_one_ticket() is redundant + - libceph: introduce ceph_x_encrypt_offset() + - libceph: introduce ceph_crypt() for in-place en/decryption + (CVE-2016-10153) + - libceph: rename and align ceph_x_authorizer::reply_buf + - libceph: tweak calcu_signature() a little + - libceph: switch ceph_x_encrypt() to ceph_crypt() + - libceph: switch ceph_x_decrypt() to ceph_crypt() + - libceph: remove now unused ceph_*{en,de}crypt*() functions + - [armhf] dts: Add an empty chosen node to top level DTSI + - [armel,armhf] 8613/1: Fix the uaccess crash on PB11MPCore + - ceph: fix scheduler warning due to nested blocking + - ceph: fix ceph_get_caps() interruption + - ceph: fix endianness of getattr mask in ceph_d_revalidate + - ceph: fix endianness bug in frag_tree_split_cmp + - libceph: make sure ceph_aes_crypt() IV is aligned + - xprtrdma: Make FRWR send queue entry accounting more accurate + - xprtrdma: Squelch "max send, max recv" messages at connect time + - [arm64] mm: avoid name clash in __page_to_voff() + - [arm64] Fix swiotlb fallback allocation + - swiotlb: Convert swiotlb_force from int to enum + - swiotlb: Add swiotlb=noforce debug option + - scsi: ses: Fix SAS device detection in enclosure + - scsi: mpt3sas: fix hang on ata passthrough commands + - [armhf] PM / devfreq: exynos-bus: Fix the wrong return value + - PM / devfreq: Fix the bug of devfreq_add_device when governor is NULL + - mtd: spi-nor: Off by one in cqspi_setup_flash() + - mtd: spi-nor: Fix some error codes in cqspi_setup_flash() + - [x86] ite-cir: initialize use_demodulator before using it + - [armhf] dmaengine: pl330: Fix runtime PM support for terminated transfers + - [armhf] soc: ti: wkup_m3_ipc: Fix error return code in wkup_m3_ipc_probe() + - libceph: uninline ceph_crypto_key_destroy() + - libceph: stop allocating a new cipher on every crypto request + + [ Ben Hutchings ] + * [armel,armhf,s390x,x86] linux-headers: Fix regression of multilib compiler + support (Closes: #851481) + * nbd: use loff_t for blocksize and nbd_set_size args (Closes: #851533) + * ath9k: fix NULL pointer dereference (Closes: #851621) + * cfg80211,memcg,power: Avoid ABI changes + * bq27xxx_battery,cpuhp,libceph,orinoco,xhci: Ignore ABI changes + * linux-image: Increase minimum version of initramfs-tools (Closes: #808038) + * [x86] linux-cpupower: Add turbostat and x86_energy_perf_policy commands + (Closes: #778249) + * [arm64] Enable ARCH_MESON and related drivers (Closes: #852132) + * [arm64] dts: meson-gx: Add firmware reserved memory zones + * [x86] ASoC: Intel: select DW_DMAC_CORE since it's mandatory + * [x86] sound/soc/intel: Enable SND_SOC_INTEL_BDW_RT5677_MACH as module + (Closes: #851916) + * [arm64] video/fbdev: Change FB from module to built-in + * [arm64,armhf] video/fbdev: Enable FB_EFI (Closes: #851778) + * fs: Disable LOGFS, as it is unmaintained and will be removed in 4.10 + * [rt] genpatch.py: Verify tag and tarball signatures + * fbdev: color map copying bounds checking (CVE-2016-8405) + * [armhf,arm64] drm/vc4: Fix an integer overflow in temporary allocation + layout. (CVE-2017-5576) + * [armhf,arm64] drm/vc4: Return -EINVAL on the overflow checks failing. + (CVE-2017-5577) + * [arm64] ptrace: Avoid ABI change in 4.9.6 + * [arm64] Enable ARM64_ACPI_PARKING_PROTOCOL, ARCH_THUNDER, GPIO_PL061, + GPIO_XGENE, ARM_SMMU, ARM_SMMU_V3, PCI_HOST_THUNDER_PEM, and + PCI_HOST_THUNDER_ECAM; PINCTRL_AMD as built-in; SATA_AHCI_SEATTLE, + HW_RANDOM_XGENE, HW_RANDOM_CAVIUM, CPUFREQ_DT, K3_DMA, GPIO_XGENE_SB, + SENSORS_XGENE, I2C_THUNDERX, KEYBOARD_GPIO, TI_ST, THUNDER_NIC_PF, + THUNDER_NIC_VF (Closes: #852493), THUNDER_NIC_BGX, THUNDER_NIC_RGX, + MDIO_THUNDER, MDIO_XGENE, SPI_THUNDERX, and SND_SOC_APQ8016_SBC as + modules (thanks to Riku Voipio) + + [ Roger Shimizu ] + * [armel] Add DT support of Buffalo Linkstation Live v3 (LS-CHL) + * drivers/input: Enable TOUCHSCREEN_GOODIX as module (Closes: #851821). + * [mips/octeon] hwmon: Enable SENSORS_ADM1031 as module (Closes: #851963). + Thanks to James Cowgill. + * nbd: fix 64-bit division. + + -- Ben Hutchings Fri, 27 Jan 2017 07:44:54 +0000 + +linux (4.9.2-2) unstable; urgency=medium + + * [sparc64] Export memcpy and memset to modules again (fixes FTBFS) + * Revert "Remove debug symbol packages from debian/control to work around dak + bug", which caused most binary uploads to be rejected + + -- Ben Hutchings Thu, 12 Jan 2017 15:52:37 +0000 + +linux (4.9.2-1) unstable; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.9.2 + + [ Ben Hutchings ] + * abiupdate.py: Use current config instead of downloading previous config + * abiupdate.py: Update base URLs + * abiupdate.py: Add support for incoming.ports.debian.org + * Make the pickled config (config.defines.dump) reproducible + * Remove debug symbol packages from debian/control to work around dak bug + * udeb: Add switch (DSA) drivers to nic-modules (Closes: #845075) + * netfilter: Enable NFT_NUMGEN, NFT_QUOTA as modules + * net/sched: Enable NET_ACT_TUNNEL_KEY, NET_IFE_SKBTCINDEX as modules + * vsock: Enable VSOCKETS, VHOST_VSOCK, VIRTIO_VSOCKETS as modules + * hci_uart: Enable BT_HCIUART_MRVL + * rxrpc: Enable AF_RXRPC_IPV6 + * net: Enable NET_DEVLINK, MACSEC as modules + * SCSI: Enable SCSI_SMARTPQI as module + * target: Enable ISCSI_TARGET_CXGB4 as module + * cxgb4: Enable CHELSIO_T4_FCOE + * drm: Enable DRM_LEGACY; re-enable DRM_TDFX, DRM_R128, DRM_MGA, DRM_SIS, + DRM_VIA, DRM_SAVAGE as modules for some architectures + * 8250: Disable SERIAL_8250_LPSS, since it causes DW_DMAC_CORE to be built-in + * Partially revert "usb: Kconfig: using select for USB_COMMON dependency", + since it causes USB_COMMON to be built-in + * Set ABI to 1 + + [ John Paul Adrian Glaubitz ] + * [sh3] Build a linux-libc-dev package (Closes: #850732) + + [ Martin Michlmayr ] + * [arm64] Enable MV_XOR and MV_XOR_V2. + + -- Ben Hutchings Wed, 11 Jan 2017 04:41:33 +0000 + +linux (4.9.1-1~exp1) experimental; urgency=medium + + * New upstream release: https://kernelnewbies.org/Linux_4.9 + - Revert "default exported asm symbols to zero" + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.9.1 + + [ Ben Hutchings ] + * Set ABI to trunk + * Enable USERFAULTFD (except on armel/marvell) + * [x86] PCI: Enable VMD as module + * mm: Enable PAGE_POISONING (Closes: #849450), PAGE_POISONING_NO_SANITY + (except on armel/marvell) + * ieee802154: Enable IEEE802154_FAKELB as module + * [armhf] leds,gpio: Enable LEDS_TCA6507 as module (Closes: #847770) + * [x86] iio,HID: Enable INTEL_ISH_HID as module + * hwmon,watchdog: Enable SENSORS_FTSTEUTATES as module (together with the + previous, Closes: #847017) + * net: Enable GTP as module (Closes: #846913) + * [armhf] gpio: Enable GPIO_MCP23S08 as module (Closes: #845064) + * aufs: Update support patchset to aufs4.9-20161219 + * Use debhelper compatibility level 9 + * [arm64] Revert "arm64/mm: Limit TASK_SIZE_64 ..." and add breaks on + incompatible mozjs + * genorig.py: Verify tag signatures (based on work by Yves-Alexis Perez) + + [ Uwe Kleine-König ] + * enable `perf data' support; patch by Sebastian Andrzej Siewior + (Closes: #846597) + * [rt] Update to 4.9-rt1 and reenable + * [armhf] Add support for switch hardware on Turris Omnia + + [ Aurelien Jarno ] + * [arm64] Enable RTC_DRV_DS1307. + + -- Ben Hutchings Sat, 07 Jan 2017 03:44:26 +0000 + +linux (4.9~rc8-1~exp1) experimental; urgency=medium + + * New upstream release candidate + + [ Ben Hutchings ] + * radeon: Update package name in error message for missing firmware + * [amd64] Remove xen-linux-system- package + * debian/control: Fix build-dependency on flex to work with new versions + that have M-A: allowed + * Revert "default exported asm symbols to zero" + * [arm64] remoteproc: Disable QCOM_WCNSS_PIL (fixes FTBFS) + * [sparc64] Don't re-add exports of string functions that are now only + defined as macros (fixes FTBFS, after other fixes) + + -- Ben Hutchings Mon, 05 Dec 2016 05:02:30 +0000 + +linux (4.9~rc7-1~exp1) experimental; urgency=medium + + * New upstream release candidate: + - [armhf,armel] Revert "arm: move exports to definitions" (Closes: #844530) + + [ Martin Michlmayr ] + * [arm64] Enable more QCOM options: BT_QCOMSMD, QCOM_EBI2, QCOM_TSENS, + QCOM_WCNSS_PIL and EXTCON_QCOM_SPMI_MISC. + * [arm64] Enable ARCH_MVEBU and related options. + + [ Ben Hutchings ] + * linux-headers-common: Make these packages architecture-independent by + including headers for all architectures that we build a kernel for + * Fix exported symbol versions: + - Revert upstream changes moving exports to assembly sources + - [x86] kbuild: enable modversions for symbols exported from assembly + - [powerpc] Remove Mac-on-Linux hooks + - [powerpc*] Fix missing CRCs, add yet more asm-prototypes.h declarations + - Re-enable CONFIG_MODVERSIONS in a slightly weaker form + - module: Disable matching missing version CRC + * debian/bin/buildcheck.py: Add check for symbols with version CRC of 0 + + -- Ben Hutchings Sat, 03 Dec 2016 01:46:12 +0000 + +linux (4.9~rc5-1~exp1) experimental; urgency=medium + + * New upstream release candidate + + [ Aurelien Jarno ] + * Enable MAC802154, IEEE802154_ADF7242, IEEE802154_AT86RF230, + IEEE802154_ATUSB, IEEE802154_CC2520 and IEEE802154_MRF24J40. + * [arm64] Enable VIRTUALIZATION and KVM. + + [ Ben Hutchings ] + * [hppa] Update build-dependencies for 64-bit kernel (fixes FTBFS) + * linux-perf: Exclude perf-read-vdso* from shared library dependency + check (fixes FTBFS on sparc64) + * [x86] kexec: add -fno-PIE + * wireless: Enable RTL8XXXU as module, replacement for R8723AU + * netfilter: Enable NFT_SET_RBTREE and NFT_SET_HASH as modules, + renamed from NFT_RBTREE and NFT_HASH + * tcp: Enable TCP_CONG_BBR as module + * [armel] Drop versatile flavour, which has been broken since version + 4.5~rc4-1~exp1 + * [x86] ethernet: Enable ENA_ETHERNET as module + * [x86] efi: Prevent mixed mode boot corruption with CONFIG_VMAP_STACK=y + * w1: Disable W1_MASTER_MATROX + + -- Ben Hutchings Mon, 14 Nov 2016 05:19:31 +0000 + +linux (4.9~rc3-1~exp1) experimental; urgency=medium + + * New upstream release candidate + + [ Ben Hutchings ] + * [rt] Disable until it is updated for 4.9 or later + * kbuild: add -fno-PIE (Closes: #841368) + * Compile with gcc-6 on all architectures + * debian/control: Fix build-dependency on openssl to work with new + versions that have M-A: allowed (Closes: #839145) + + -- Ben Hutchings Thu, 03 Nov 2016 16:51:55 -0600 + +linux (4.8.15-2) unstable; urgency=medium + + [ Ben Hutchings ] + * [x86] Enable INTEL_VBTN as module (Closes: #848967) + * debian/control: Change build-dependency on asciidoc to prefer the new + asciidoc-base, so we don't pull in LaTeX unnecessarily + * [x86] Enable LEDS_DELL_NETBOOKS and DELL_SMBIOS as modules; re-enable + DELL_LAPTOP and DELL_WMI as modules (Closes: #849674) + * [powerpc*] boot: Request no dynamic linker for boot wrapper + (Closes: #848851, FTBFS on ppc6el) + * cpufreq: Enable CPU_FREQ_GOV_SCHEDUTIL as module + * [x86] ACPI: Enable DPTF_POWER as module + * [x86] perf: Enable PERF_EVENTS_AMD_POWER as module + * [x86] perf: Change PERF_EVENTS_INTEL_{CSTATE,RAPL,UNCORE} from built-in + to modules + * PCI: Enable PCIE_DPC (except for armel/versatile) + * [amd64] PCI: Enable PCI_HYPERV as module + * inet: Enable INET_DIAG_DESTROY + * tcp: Enable TCP_CONG_NV as module + * ipv6: Enable IPV6_ILA as module + * net/sched: Enable NET_CLS_MATCHALL, NET_ACT_IFE, NET_IFE_SKBMARK, + NET_IFE_SKBPRIO as modules + * hci_uart: Enable BT_HCIUART_AG6XX + * nvme: Enable NVME_RDMA, NVME_TARGET, NVME_TARGET_RDMA as modules + * [amd64] mic: Enable VOP_BUS and VOP as modules; re-enable INTEL_MIC_HOST as + module + * debian/control: Add Salvatore Bonaccorso to Uploaders + * [rt] Update to 4.8.15-rt10 (no functional change) + + [ Salvatore Bonaccorso ] + * sg_write()/bsg_write() is not fit to be called under KERNEL_DS + (CVE-2016-10088) + * kvm: nVMX: Allow L1 to intercept software exceptions (#BP and #OF) + (CVE-2016-9588) + + -- Ben Hutchings Wed, 04 Jan 2017 19:39:36 +0000 + +linux (4.8.15-1) unstable; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.8.12 + - [x86] iommu/vt-d: Fix PASID table allocation + - [x86] iommu/vt-d: Fix IOMMU lookup for SR-IOV Virtual Functions + - [x86] KVM: fix out-of-bounds access in lapic + - [x86] KVM: x86: drop error recovery in em_jmp_far and em_ret_far + (CVE-2016-9756) + - [x86] KVM: fix out-of-bounds accesses of rtc_eoi map (CVE-2016-9777) + - [x86] KVM: check for pic and ioapic presence before use + - [arm64, armhf] usb: chipidea: move the lock initialization to core file + - USB: serial: cp210x: add ID for the Zone DPMX + - USB: serial: ftdi_sio: add support for TI CC3200 LaunchPad + - scsi: mpt3sas: Fix secure erase premature termination + - cfg80211: limit scan results cache size + - apparmor: fix change_hat not finding hat after policy replacement + - NFSv4.x: hide array-bounds warning + - [x86] fpu: Fix invalid FPU ptrace state after execve() + - [x86] traps: Ignore high word of regs->cs in early_fixup_exception() + - perf/core: Fix address filter parser + - perf/x86/intel: Cure bogus unwind from PEBS entries + - [x86] thermal/powerclamp: add back module device table + - [hppa/parisc] Fix races in parisc_setup_cache_timing() + - [hppa/parisc] Switch to generic sched_clock implementation + - [hppa/parisc] Fix race in pci-dma.c + - [hppa/parisc] Also flush data TLB in flush_icache_page_asm + - mpi: Fix NULL ptr dereference in mpi_powm() + - X.509: Fix double free in x509_cert_parse() + - xc2028: Fix use-after-free bug properly + - [powerpc] Set missing wakeup bit in LPCR on POWER9 + - [powerpc] mm: Fixup kernel read only mapping + - [powerpc] boot: Fix the early OPAL console wrappers + - can: bcm: fix support for CAN FD frames + - mm, oom: stop pre-mature high-order OOM killer invocations + - flow_dissect: call init_default_flow_dissectors() earlier + - scsi: mpt3sas: Unblock device after controller reset + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.8.13 + - libata-scsi: Fixup ata_gen_passthru_sense() + - scsi: hpsa: use bus '3' for legacy HBA devices + - scsi: libfc: fix seconds_since_last_reset miscalculation + - mm, thp: propagation of conditional compilation in khugepaged.c + - thp: fix corner case of munlock() of PTE-mapped THPs + - zram: fix unbalanced idr management at hot removal + - mm: fix false-positive WARN_ON() in truncate/invalidate for hugetlb + - ovl: fix d_real() for stacked fs + - Input: change KEY_DATA from 0x275 to 0x277 + - Input: psmouse - disable automatic probing of BYD touchpads + - rcu: Fix soft lockup for rcu_nocb_kthread + - mm: workingset: fix NULL ptr in count_shadow_nodes + - PCI: Export pcie_find_root_port + - PCI: Set Read Completion Boundary to 128 iff Root Port supports it + (_HPX) + - mwifiex: printk() overflow with 32-byte SSIDs + - [arm64] KVM: vgic: Don't notify EOI for non-SPIs + - [x86] drm/i915: Don't touch NULL sg on i915_gem_object_get_pages_gtt() + error + - [x86] drm/i915: drop the struct_mutex when wedged or trying to reset + - [x86] drm/amdgpu: fix power state when port pm is unavailable + - drm/radeon: fix power state when port pm is unavailable + - [x86] drm/amdgpu: fix check for port PM availability + - drm/radeon: fix check for port PM availability + - [arm64] dts: juno: fix cluster sleep state entry latency on all SoC + versions + - KVM: use after free in kvm_ioctl_create_device() + - pwm: Fix device reference leak + - [x86] perf: Restore TASK_SIZE check on frame pointer + - [armhf] clk: sunxi: Fix M factor computation for APB1 + - batman-adv: Detect missing primaryif during tp_send as error + - [arm64] cpufeature: Schedule enable() calls instead of calling them via + IPI + - [arm64] mm: Set PSTATE.PAN from the cpu_enable_pan() call + - [arm64] suspend: Reconfigure PSTATE after resume from idle + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.8.14 + - gro_cells: mark napi struct as not busy poll candidates + - virtio-net: add a missing synchronize_net() + - [armhf] net: dsa: b53: Fix VLAN usage and how we treat CPU port + - net: check dead netns for peernet2id_alloc() + - ip6_tunnel: disable caching when the traffic class is inherited + - net: sky2: Fix shutdown crash + - af_unix: conditionally use freezable blocking calls in read + - rtnetlink: fix FDB size computation + - l2tp: fix racy SOCK_ZAPPED flag check in l2tp_ip{,6}_bind() + - rtnl: fix the loop index update error in rtnl_dump_ifinfo() + - ipv6: bump genid when the IFA_F_TENTATIVE flag is clear + - udplite: call proper backlog handlers + - [armhf] net: dsa: bcm_sf2: Ensure we re-negotiate EEE during after link + change + - net, sched: respect rcu grace period on cls destruction + - [armhf] net: dsa: fix unbalanced dsa_switch_tree reference counting + - net/sched: pedit: make sure that offset is valid + - netlink: Call cb->done from a worker thread + - netlink: Do not schedule work from sk_destruct + - net/dccp: fix use-after-free in dccp_invalid_packet + - GSO: Reload iph after pskb_may_pull + - packet: fix race condition in packet_set_ring (CVE-2016-8655) + - ip6_offload: check segs for NULL in ipv6_gso_segment. + - cdc_ether: Fix handling connection notification + - tipc: check minimum bearer MTU (CVE-2016-8632) + - geneve: avoid use-after-free of skb->data + - net: avoid signed overflows for SO_{SND|RCV}BUFFORCE (CVE-2016-9793) + - net: ping: check minimum size on ICMP header length (CVE-2016-8399) + - ipv4: Restore fib_trie_flush_external function and fix call ordering + - ipv4: Fix memory leak in exception case for splitting tries + - ipv4: Drop leaf from suffix pull/push functions + - ipv4: Drop suffix update from resize code + - [sparc64] Fix find_node warning if numa node cannot be found + - [sparc64] fix compile warning section mismatch in find_node() + - [sparc] Fix inverted invalid_frame_pointer checks on sigreturns + - constify iov_iter_count() and iter_is_iovec() + - Don't feed anything but regular iovec's to blk_rq_map_user_iov + (CVE-2016-9576) + - ipv6: Set skb->protocol properly for local output + - ipv4: Set skb->protocol properly for local output + - Revert: "ip6_tunnel: Update skb->protocol to ETH_P_IPV6 in + ip6_tnl_xmit()" + - flowcache: Increase threshold for refusing new allocations + - esp4: Fix integrity verification when ESN are used + - esp6: Fix integrity verification when ESN are used + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.8.15 + - [powerpc] eeh: Fix deadlock when PE frozen state can't be cleared + - [powerpc] mm: Fix lazy icache flush on pre-POWER5 + - [powerpc] boot: Fix build failure in 32-bit boot wrapper + - fuse: fix clearing suid, sgid for chown() + - [hppa/parisc] Purge TLB before setting PTE + - [hppa/parisc] Remove unnecessary TLB purges from flush_dcache_page_asm + and flush_icache_page_asm + - [hppa/parisc] Fix TLB related boot crash on SMP machines + - zram: restrict add/remove attributes to root only + - locking/rtmutex: Prevent dequeue vs. unlock race + - locking/rtmutex: Use READ_ONCE() in rt_mutex_owner() + - device-dax: fix private mapping restriction, permit read-only + - scsi: lpfc: fix oops/BUG in lpfc_sli_ringtxcmpl_put() + - sched/autogroup: Fix 64-bit kernel nice level adjustment + - [x86] perf: Fix full width counter, counter overflow + - acpi, nfit: fix extended status translations for ACPI DSMs + - acpi, nfit, libnvdimm: fix / harden ars_status output length handling + - acpi, nfit: validate ars_status output buffer size + - acpi, nfit: fix bus vs dimm confusion in xlat_status + - [armel, armhf] crypto: marvell - Don't copy hash operation twice into + the SRAM + - crypto: caam - fix pointer size for AArch64 boot loader, AArch32 kernel + - [armel, armhf] crypto: marvell - Don't corrupt state of an STD req for + re-stepped ahash + - can: raw: raw_setsockopt: limit number of can_filter that can be set + - can: peak: fix bad memory access and free sequence + - [armel] dts: orion5x: fix number of sata port for linkstation ls-gl + (Closes: #845611) + - ceph: don't set req->r_locked_dir in ceph_d_revalidate + - [m68k] Fix ndelay() macro + - batman-adv: Check for alloc errors when preparing TT local data + - hotplug: Make register and unregister notifier API symmetric + + [ Uwe Kleine-König ] + * [armhf] dts: armada-385: add support for Turris Omnia + + [ Salvatore Bonaccorso ] + * Add ABI reference for 4.8.0-2 + * Ignore ABI changes in KVM + * net: handle no dst on skb in icmp6_send (CVE-2016-9919) + * [rt] Update to 4.8.11-rt7 + * [rt] Update to 4.8.14-rt9 + * netfilter: ipv6: nf_defrag: drop mangled skb on ream error (CVE-2016-9755) + * Ignore ABI changes in libnvdimm + * docs: sphinx-extensions: make rstFlatTable work with docutils 0.13. + Thanks to Dmitry Shachnev (Closes: #848349) + + [ Ben Hutchings ] + * [amd64] Re-enable LEGACY_VSYSCALL_EMULATE instead of LEGACY_VSYSCALL_NONE. + There are still binaries in stable that use vsyscall (via dietlibc). + (Closes: #847154) + * debian/rules.real: Exclude *.pyc from featureset diffs + * debian/control: Fix build-dependency on flex to work with new versions that + have M-A: foreign + * debian/rules: Use dpkg-parsechangelog -S option to select fields + * debian/rules: Tighten binNMU version matching, consistent with linux-latest + + -- Salvatore Bonaccorso Mon, 19 Dec 2016 12:35:29 +0100 + +linux (4.8.11-1) unstable; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.8.8 + - net: fec: set mac address unconditionally + - net: pktgen: fix pkt_size + - net/sched: act_vlan: Push skb->data to mac_header prior calling + skb_vlan_*() functions + - net: Add netdev all_adj_list refcnt propagation to fix panic + - packet: call fanout_release, while UNREGISTERING a netdev + - netlink: do not enter direct reclaim from netlink_dump() + - drivers/ptp: Fix kernel memory disclosure + - net_sched: reorder pernet ops and act ops registrations + - ipv6: tcp: restore IP6CB for pktoptions skbs + - net: phy: Trigger state machine on state change and not polling. + - ip6_tunnel: fix ip6_tnl_lookup + - ipv6: correctly add local routes when lo goes up + - IB/ipoib: move back IB LL address into the hard header + - net/mlx4_en: fixup xdp tx irq to match rx + - net: pktgen: remove rcu locking in pktgen_change_name() + - bridge: multicast: restore perm router ports on multicast enable + - switchdev: Execute bridge ndos only for bridge ports + - rtnetlink: Add rtnexthop offload flag to compare mask + - net: core: Correctly iterate over lower adjacency list + - net: add recursion limit to GRO + - ipv4: disable BH in set_ping_group_range() + - ipv4: use the right lock for ping_group_range + - net: fec: Call swap_buffer() prior to IP header alignment + - net: sctp, forbid negative length + - sctp: fix the panic caused by route update + - udp: fix IP_CHECKSUM handling + - [x86] netvsc: fix incorrect receive checksum offloading + - net: ipv6: Do not consider link state for nexthop validation + - net sched filters: fix notification of filter delete with proper handle + - sctp: validate chunk len before actually using it (CVE-2016-9555) + - ip6_tunnel: Update skb->protocol to ETH_P_IPV6 in ip6_tnl_xmit() + - packet: on direct_xmit, limit tso and csum to supported devices + - [powerpc] Update parameters for csum_tcpudp_magic & csum_tcpudp_nofold + - [arm64, armhf] usb: dwc3: gadget: properly account queued requests + - scsi: megaraid_sas: Fix data integrity failure for JBOD (passthrough) + devices + - scsi: megaraid_sas: fix macro MEGASAS_IS_LOGICAL to avoid regression + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.8.9 + - ALSA: info: Return error for invalid read/write + - ALSA: info: Limit the proc text input size + - dib0700: fix nec repeat handling + - mm, frontswap: make sure allocated frontswap map is assigned + - shmem: fix pageflags after swapping DMA32 object + - swapfile: fix memory corruption via malformed swapfile + - mm: hwpoison: fix thp split handling in memory_failure() + - mm/hugetlb: fix huge page reservation leak in private mapping error paths + - coredump: fix unfreezable coredumping task + - [s390x] hypfs: Use get_free_page() instead of kmalloc to ensure page + alignment + - PCI: Don't attempt to claim shadow copies of ROM + - [x86] pinctrl: cherryview: Serialize register access in suspend/resume + - [x86] pinctrl: cherryview: Prevent possible interrupt storm on resume + - cpupower: Correct return type of cpu_power_is_cpu_online() in cpufreq-set + - mmc: sdhci: Fix CMD line reset interfering with ongoing data transfer + - mmc: sdhci: Fix unexpected data interrupt handling + - mmc: mmc: Use 500ms as the default generic CMD6 timeout + - [arm64, armhf] usb: dwc3: Fix error handling for core init + - USB: cdc-acm: fix TIOCMIWAIT + - usb: gadget: u_ether: remove interrupt throttling + - drbd: Fix kernel_sendmsg() usage - potential NULL deref + - cdc-acm: fix uninitialized variable + - scsi: qla2xxx: Fix scsi scan hang triggered if adapter fails during init + - scsi: mpt3sas: Fix for block device of raid exists even after deleting + raid disk + - scsi: scsi_dh_alua: fix missing kref_put() in alua_rtpg_work() + - scsi: scsi_dh_alua: Fix a reference counting bug + - [arm64] KVM: vgic: Prevent access to invalid SPIs + - drm/radeon: disable runtime pm in certain cases + - [x86] drm/i915: Respect alternate_ddc_pin for all DDI ports + - [x86] drm/i915/dp: BDW cdclk fix for DP audio + - [x86] drm/i915/dp: Extend BDW DP audio workaround to GEN9 platforms + - [x86] drm/amdgpu: disable runtime pm in certain cases + - xprtrdma: use complete() instead complete_all() + - xprtrdma: Fix DMAR failure in frwr_op_map() after reconnect + - [amd64] iommu/amd: Free domain id when free a domain of struct + dma_ops_domain + - [x86] iommu/vt-d: Fix dead-locks in disable_dmar_iommu() path + - [x86] agp/intel: Flush chipset writes after updating a single PTE + - watchdog: core: Fix devres_alloc() allocation size + - perf top: Fix refreshing hierarchy entries on TUI + - [x86] mei: bus: fix received data size check in NFC fixup + - svcrdma: Skip put_page() when send_reply() fails + - svcrdma: Tail iovec leaves an orphaned DMA mapping + - nvme: Delete created IO queues on reset + - [s390x] dumpstack: restore reliable indicator for call traces + - hwrng: core - Don't use a stack buffer in add_early_randomness() + - i40e: fix call of ndo_dflt_bridge_getlink() + - [arm64] mmc: sdhci-msm: Fix error return code in sdhci_msm_probe() + - [x86] ACPI / APEI: Fix incorrect return value of ghes_proc() + - ACPI/PCI/IRQ: assign ISA IRQ directly during early boot stages + - ACPI/PCI: pci_link: penalize SCI correctly + - ACPI/PCI: pci_link: Include PIRQ_PENALTY_PCI_USING for ISA IRQs + - batman-adv: Modify neigh_list only with rcu-list functions + - [armel, armhf] gpio/mvebu: Use irq_domain_add_linear + - ASoC: Intel: Skylake: Always acquire runtime pm ref on unload + - [armhf] ASoC: sun4i-codec: return error code instead of NULL when + create_card fails + - memcg: prevent memcg caches to be both OFF_SLAB & OBJFREELIST_SLAB + - libceph: fix legacy layout decode with pool 0 + - [x86] drm/amdgpu: fix fence slab teardown + - [x86] drm/amdgpu: fix a vm_flush fence leak + - [x86] drm/i915: Fix mismatched INIT power domain disabling during + suspend + - netfilter: fix namespace handling in nf_log_proc_dostring + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.8.10 + - dctcp: avoid bogus doubling of cwnd after loss + - net: clear sk_err_soft in sk_clone_lock() + - net: mangle zero checksum in skb_checksum_help() + - ip6_tunnel: Clear IP6CB in ip6tunnel_xmit() + - tcp: fix potential memory corruption + - ipv4: allow local fragmentation in ip_finish_output_gso() + - tcp: fix return value for partial writes + - dccp: do not release listeners too soon + - dccp: do not send reset to already closed sockets + - dccp: fix out of bound access in dccp_v4_err() + - ipv6: dccp: fix out of bound access in dccp_v6_err() + - ipv6: dccp: add missing bind_conflict to dccp_ipv6_mapped + - sctp: assign assoc_id earlier in __sctp_connect + - bpf: fix htab map destruction when extra reserve is in use + - net: icmp6_send should use dst dev to determine L3 domain + - fib_trie: Correct /proc/net/route off by one error + - sock: fix sendmmsg for partial sendmsg + - net: icmp_route_lookup should use rt dev to determine L3 domain + - net: __skb_flow_dissect() must cap its return value + - ipv4: use new_gw for redirect neigh lookup + - tcp: take care of truncations done by sk_filter() (CVE-2016-8645) + - Revert "include/uapi/linux/atm_zatm.h: include linux/time.h" + (Closes: #844491) + - Revert "bnx2: Reset device during driver initialization" + - bnx2: Wait for in-flight DMA to complete at probe stage + - sctp: change sk state only when it has assocs in sctp_shutdown + - [arm64, armhf] net: stmmac: Fix lack of link transition for fixed PHYs + - [sparc] Handle negative offsets in arch_jump_label_transform + - [sparc64] Handle extremely large kernel TSB range flushes sanely. + - [sparc64] Fix illegal relative branches in hypervisor patched TLB code. + - [sparc64] Fix instruction count in comment for + __hypervisor_flush_tlb_pending. + - [sparc64] Fix illegal relative branches in hypervisor patched TLB + cross-call code. + - [sparc64] Handle extremely large kernel TLB range flushes more + gracefully. + - [sparc64] Delete __ret_efault. + - [sparc64] Prepare to move to more saner user copy exception handling. + - [sparc64] Convert copy_in_user to accurate exception reporting. + - [sparc64] Convert GENcopy_{from,to}_user to accurate exception + reporting. + - [sparc64] Convert U1copy_{from,to}_user to accurate exception reporting. + - [sparc64] Convert NG4copy_{from,to}_user to accurate exception + reporting. + - [sparc64] Convert NGcopy_{from,to}_user to accurate exception reporting. + - [sparc64] Convert NG2copy_{from,to}_user to accurate exception + reporting. + - [sparc64] Convert U3copy_{from,to}_user to accurate exception reporting. + - [sparc64] Delete now unused user copy assembler helpers. + - [sparc64] Delete now unused user copy fixup functions. + - usb: gadget: f_fs: edit epfile->ep under lock + - usb: gadget: f_fs: stop sleeping in ffs_func_eps_disable + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.8.11 + - [x86] cpu/AMD: Fix cpu_llc_id for AMD Fam17h systems + - [x86] KVM: fix missed SRCU usage in kvm_lapic_set_vapic_addr + - [x86] KVM: Disable irq while unregistering user notifier + - ftrace: Ignore FTRACE_FL_DISABLED while walking dyn_ftrace records + - ftrace: Add more checks for FTRACE_FL_DISABLED in processing ip records + - genirq: Use irq type from irqdata instead of irqdesc + - fuse: fix fuse_write_end() if zero bytes were copied + - IB/rdmavt: rdmavt can handle non aligned page maps + - IB/hfi1: Fix rnr_timer addition + - [x86] mfd: intel-lpss: Do not put device in reset state on suspend + - [armhf] mfd: stmpe: Fix RESET regression on STMPE2401 + - can: bcm: fix warning in bcm_connect/proc_register + - gpio: do not double-check direction on sleeping chips + - [x86] ALSA: usb-audio: Fix use-after-free of usb_device at disconnect + - [x86] ALSA: hda - add a new condition to check if it is thinkpad + - ALSA: hda - Fix mic regression by ASRock mobo fixup + - [armhf] i2c: mux: fix up dependencies + - [armhf] i2c: i2c-mux-pca954x: fix deselect enabling for device-tree + - kbuild: add -fno-PIE + - scripts/has-stack-protector: add -fno-PIE + - x86/kexec: add -fno-PIE + - kbuild: Steal gcc's pie from the very beginning + - ext4: sanity check the block and cluster size at mount time + - [armhf] dts: imx53-qsb: Fix regulator constraints + - crypto: caam - do not register AES-XTS mode on LP units + - [powerpc*] Fix setting of AIL in hypervisor mode + - [x86] drm/amdgpu: Attach exclusive fence to prime exported bo's. + - [x86] drm/i915: Refresh that status of MST capable connectors in + ->detect() + - [x86] drm/i915: Assume non-DP++ port if dvo_port is HDMI and there's no + AUX ch specified in the VBT + - virtio-net: drop legacy features in virtio 1 mode + - [armhf] clk: imx: fix integer overflow in AV PLL round rate + - [armhf] rtc: omap: Fix selecting external osc + - iwlwifi: pcie: fix SPLC structure parsing + - iwlwifi: pcie: mark command queue lock with separate lockdep class + - iwlwifi: mvm: fix netdetect starting/stopping for unified images + - iwlwifi: mvm: fix d3_test with unified D0/D3 images + - iwlwifi: mvm: wake the wait queue when the RX sync counter is zero + - mfd: core: Fix device reference leak in mfd_clone_cell + - sunrpc: svc_age_temp_xprts_now should not call setsockopt non-tcp + transports + - uwb: fix device reference leaks + - PM / sleep: fix device reference leak in test_suspend + - PM / sleep: don't suspend parent when async child suspend_{noirq, + late} fails + - perf hists: Fix column length on --hierarchy + - IB/mlx4: Check gid_index return value + - IB/mlx4: Fix create CQ error flow + - IB/mlx5: Validate requested RQT size + - IB/mlx5: Use cache line size to select CQE stride + - IB/mlx5: Fix memory leak in query device + - IB/mlx5: Fix fatal error dispatching + - IB/mlx5: Fix NULL pointer dereference on debug print + - IB/core: Avoid unsigned int overflow in sg_alloc_table + - IB/hfi1: Remove incorrect IS_ERR check + - IB/uverbs: Fix leak of XRC target QPs + - IB/cm: Mark stale CM id's whenever the mad agent was unregistered + - netfilter: nft_dynset: fix element timeout for HZ != 1000 + - [arm64, armhf] gpio: pca953x: Move memcpy into mutex lock for set + multiple + - [arm64, armhf] gpio: pca953x: Fix corruption of other gpios in + set_multiple. + + [ Salvatore Bonaccorso ] + * Bump ABI to 2 and remove ABI reference for 4.8.0-1 + * xfs: Propagate dentry down to inode_change_ok() + * ceph: Propagate dentry down to inode_change_ok() + * fuse: Propagate dentry down to inode_change_ok() + * fs: Give dentry to inode_change_ok() instead of inode + * fs: Avoid premature clearing of capabilities (CVE-2015-1350) + (Closes: #770492) + * mpi: Fix NULL ptr dereference in mpi_powm() (CVE-2016-8650) + * vfio/pci: Fix integer overflows, bitmask check (CVE-2016-9083 + CVE-2016-9084) + * mnt: Add a per mount namespace limit on the number of mounts + (CVE-2016-6213) + + [ Ben Hutchings ] + * [arm64] Enable more drivers for X-Gene (Really closes: #840061): + - DMA: Enable XGENE_DMA as module + - EDAC: Enable EDAC and EDAC_MM_EDAC, EDAC_XGENE as modules + * [x86] video: Disable X86_SYSFB, FB_SIMPLE (Closes: #822575) + + -- Salvatore Bonaccorso Fri, 02 Dec 2016 06:35:22 +0100 + +linux (4.8.7-1) unstable; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.8.6 + - [armhf,arm64] drm/vc4: Fix races when the CS reads from render targets. + - [x86] drm/i915/backlight: setup and cache pwm alternate increment value + - [x86] drm/i915/backlight: setup backlight pwm alternate increment on + backlight enable + - [x86] drm/amdgpu: fix IB alignment for UVD + - [x86] drm/amdgpu/dce10: disable hpd on local panels + - [x86] drm/amdgpu/dce8: disable hpd on local panels + - [x86] drm/amdgpu/dce11: disable hpd on local panels + - [x86] drm/amdgpu/dce11: add missing drm_mode_config_cleanup call + - [x86] drm/amdgpu: initialize the context reset_counter in amdgpu_ctx_init + - [x86] drm/amdgpu: change vblank_time's calculation method to reduce + computational error. + - drm/radeon: narrow asic_init for virtualization + - drm/radeon/si/dpm: fix phase shedding setup + - drm/radeon: change vblank_time's calculation method to reduce + computational error. + - [x86] drm/vmwgfx: Limit the user-space command buffer size + - [x86] drm/amd/powerplay: fix mclk not switching back after multi-head + was disabled + - [x86] drm/i915/skl: Fix FIFO underrun (Closes: #844113) + + Update plane watermarks atomically during plane updates + + Move CRTC updating in atomic_commit into it's own hook + + Update DDB values atomically with wms/plane attrs + + Don't try to update plane watermarks if they haven't changed + - [x86] drm/i915/gen9: only add the planes actually affected by ddb changes + - [x86] drm/i915/gen9: fix the WaWmMemoryReadLatency implementation + - [x86] drm/i915/gen9: minimum scanlines for Y tile is not always 4 + - [x86] drm/i915/gen9: fix plane_blocks_per_line on watermarks calculations + - [x86] drm/i915/gen9: fix the watermark res_blocks value + - [x86] drm/i915: SAGV is not SKL-only, so rename a few things + - [x86] drm/i915: introduce intel_has_sagv() + - [x86] drm/i915/kbl: KBL also needs to run the SAGV code + - [x86] Revert "drm/i915: Check live status before reading edid" + - [x86] drm/i915: Account for TSEG size when determining 865G stolen base + - [x86] drm/i915/skl: Ensure pipes with changed wms get added to the state + - [x86] drm/i915: Allow PCH DPLL sharing regardless of DPLL_SDVO_HIGH_SPEED + - [x86] drm/i915: Move long hpd handling into the hotplug work + - [x86] drm/i915: Allow DP to work w/o EDID + - [x86] drm/i915: Just clear the mmiodebug before a register access + - [x86] drm/i915: Unalias obj->phys_handle and obj->userptr + - rt2x00usb: Fix error return code + - uio: fix dmem_region_start computation + - i40e: remove a stray unlock + - i40e: fix broken i40e_config_rss_aq function + - mwifiex: correct aid value during tdls setup + - mwifiex: fix failed to reconnect after interface disabled/enabled + - ath10k: Add WMI_SERVICE_PERIODIC_CHAN_STAT_SUPPORT wmi service + - ath10k: fix sending frame in management path in push txq logic + - ath10k: fix reporting channel survey data + - ath10k: fix throughput regression in multi client mode + - [armel/marvell,armhf] crypto: marvell - Don't overwrite default + creq->state during initialization + - crypto: gcm - Fix IV buffer size in crypto_gcm_setkey + - [armel/marvell,armhf] crypto: marvell - Update transformation context for + each dequeued req + - [x86] crypto: ccp - Fix return value check in ccp_dmaengine_register() + - [armhf] hwrng: omap - Only fail if pm_runtime_get_sync returns < 0 + - ASoC: topology: Fix error return code in soc_tplg_dapm_widget_create() + - ASoC: dapm: Fix possible uninitialized variable in + snd_soc_dapm_get_volsw() + - ASoC: dapm: Fix value setting for _ENUM_DOUBLE MUX's second channel + - ASoC: dapm: Fix kcontrol creation for output driver widget + - staging: r8188eu: Fix scheduling while atomic splat + - IB/qib: Remove qpt_mask global + - IB/mlx5: Fix steering resource leak + - mm/hugetlb: check for reserved hugepages during memory offline + - mm/hugetlb: improve locking in dissolve_free_huge_pages() + - [x86] drm/vmwgfx: Avoid validating views on view destruction + - [s390x] cio: fix accidental interrupt enabling during resume + - [s390x] con3270: fix use of uninitialised data + - [s390x] con3270: fix insufficient space padding + - [armhf,arm64] clk: bcm2835: Skip PLLC clocks when deciding on a new + clock parent + - [arm64] clk: gcc-msm8996: Fix pcie 2 pipe register offset + - [arm64] clk: qcom: select GDSC for msm8996 gcc and mmcc + - clk: Return errors from clk providers in __of_clk_get_from_provider() + - clk: core: Force setting the phase delay when no change + - clk: divider: Fix clk_divider_round_rate() to use clk_readl() + - perf hists browser: Fix event group display + - perf ui/tui: Reset output width for hierarchy + - perf ui/stdio: Always reset output width for hierarchy + - perf symbols: Check symbol_conf.allow_aliases for kallsyms loading too + - perf symbols: Fixup symbol sizes before picking best ones + - iwlwifi: check for valid ethernet address provided by OEM + - iwlwifi: mvm: fix pending frames tracking on tx resp + - iwlwifi: mvm: call a different txq_enable function + - iwlwifi: mvm: free reserved queue on STA removal + - iwlwifi: mvm: support BAR in reorder buffer + - iwlwifi: mvm: disable P2P queue on mac context release + - iwlwifi: mvm: bail out if CTDP start operation fails + - [armhf,arm64] pinctrl: qcom: fix masking of pinmux functions + - mpt3sas: Don't spam logs if logging level is 0 + - [powerpc*] Always restore FPU/VEC/VSX if hardware transactional memory + in use + - [powerpc*] Add check_if_tm_restore_required() to giveup_all() + - [powerpc*] nvram: Fix an incorrect partition merge + - [powerpc*] Fix usage of _PAGE_RO in hugepage + - [armhf] dts: omap3: overo: add missing unit name for lcd35 display + - PCI: generic: Fix pci_remap_iospace() failure path + - [armhf] PCI: tegra: Fix pci_remap_iospace() failure path + - libnvdimm: clear the internal poison_list when clearing badblocks + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.8.7 + - [armhf] i2c: rk3x: Give the tuning value 0 during + rk3x_i2c_v0_calc_timings + - i2c: core: fix NULL pointer dereference under race condition + - drm/dp/mst: Clear port->pdt when tearing down the i2c adapter + - gpio / ACPI: fix returned error from acpi_dev_gpio_irq_get() + - gpio: GPIO_GET_CHIPINFO_IOCTL: Fix line offset validation + - gpio: GPIO_GET_CHIPINFO_IOCTL: Fix information leak + - gpio: GPIO_GET_LINEHANDLE_IOCTL: Validate line offset + - gpio: GPIOHANDLE_GET_LINE_VALUES_IOCTL: Fix information leak + - gpio: GPIO_GET_LINEEVENT_IOCTL: Validate line offset + - gpio: GPIO_GET_LINEHANDLE_IOCTL: Reject invalid line flags + - gpio: GPIO_GET_LINEEVENT_IOCTL: Reject invalid line and event flags + - gpio: GPIOHANDLE_GET_LINE_VALUES_IOCTL: Fix another information leak + - gpio: GPIO_GET_LINE{HANDLE,EVENT}_IOCTL: Fix file descriptor leak + - libxfs: clean up _calc_dquots_per_chunk + - mm/list_lru.c: avoid error-path NULL pointer deref + - mm/slab: fix kmemcg cache creation delayed issue + - mm: memcontrol: do not recurse in direct reclaim + - [x86] thermal/powerclamp: correct cpu support check + - KEYS: Fix short sprintf buffer in /proc/keys show function + - ALSA: usb-audio: Add quirk for Syntek STK1160 + - ALSA: seq: Fix time account regression + - ALSA: hda - allow 40 bit DMA mask for NVidia devices + - ALSA: hda - Adding a new group of pin cfg into ALC295 pin quirk table + - ALSA: hda - Fix surround output pins for ASRock B150M mobo + - ALSA: hda - Fix headset mic detection problem for two Dell laptops + - [powerpc*] cxl: Fix leaking pid refs in some error paths + - btrfs: fix races on root_log_ctx lists + - [powerpc] Convert cmp to cmpd in idle enter sequence + - [powerpc] mm/radix: Use tlbiel only if we ever ran on the current cpu + - [powerpc] Re-fix race condition between going idle and entering guest + - [powerpc] Fix race condition in setting lock bit in idle/wakeup code + - [amd64] x86/microcode/AMD: Fix more fallout from + CONFIG_RANDOMIZE_MEMORY=y + - timers: Prevent base clock rewind when forwarding clock + - timers: Prevent base clock corruption when forwarding + - timers: Plug locking race vs. timer migration + - timers: Lock base for same bucket optimization + - mei: txe: don't clean an unprocessed interrupt cause. + - USB: serial: fix potential NULL-dereference at probe + - USB: serial: cp210x: fix tiocmget error handling + - USB: serial: ftdi_sio: add support for Infineon TriBoard TC2X7 + - xhci: use default USB_RESUME_TIMEOUT when resuming ports. + - usb: increase ohci watchdog delay to 275 msec (Closes: #842863) + - [powerpc] GenWQE: Fix bad page access during abort of resource + allocation + - [x86] smpboot: Init apic mapping before usage + - vt: clear selection before resizing + - [x86] hv: do not lose pending heartbeat vmbus packets + - xhci: add restart quirk for Intel Wildcatpoint PCH + - xhci: workaround for hosts missing CAS bit + - tty: limit terminal size to 4M chars + - [arm64] dts: marvell: fix clocksource for CP110 master SPI0 + - dm: free io_barrier after blk_cleanup_queue call + - [x86] KVM: fix wbinvd_dirty_mask use-after-free + - [s390] KVM: Fix STHYI buffer alignment for diag224 + - [armhf] mvebu: Select corediv clk for all mvebu v7 SoC + - nfsd: Fix general protection fault in release_lock_stateid() + - [mips*] KASLR: Fix handling of NULL FDT + - ovl: fix get_acl() on tmpfs + - ovl: update S_ISGID when setting posix ACLs + - ovl: fsync after copy-up + - virtio_ring: Make interrupt suppression spec compliant + - virtio_pci: Limit DMA mask to 44 bits for legacy virtio devices + - virtio: console: Unlock vqs while freeing buffers + - dm mirror: fix read error on recovery after default leg failure + - dm table: fix missing dm_put_target_type() in dm_table_add_target() + - dm rq: clear kworker_task if kthread_run() returned an error + - dm raid: fix compat_features validation (Closes: #843572) + - dm raid: fix activation of existing raid4/10 devices + - firewire: net: guard against rx buffer overflows (CVE-2016-8633) + - firewire: net: fix fragmented datagram_size off-by-one + - mac80211: discard multicast and 4-addr A-MSDUs + - ath10k: cache calibration data when the core is stopped + - scsi: scsi_debug: Fix memory leak if LBP enabled and module is unloaded + - scsi: arcmsr: Send SYNCHRONIZE_CACHE command to firmware + - [arm64, armhf] mmc: dw_mmc-pltfm: fix the potential NULL pointer + dereference + - RAID1: ignore discard error + - RAID10: ignore discard error + - md: be careful not lot leak internal curr_resync value into metadata. + - Revert "drm/radeon: fix DP link training issue with second 4K monitor" + - [armhf] drm/imx: ipuv3-plane: Switch EBA buffer only when we don't need + modeset + - [armhf] drm/imx: ipuv3-plane: Access old u/vbo properly in + ->atomic_check for YU12/YV12 + - drm/radeon/si_dpm: Limit clocks on HD86xx part + - drm/radeon/si_dpm: workaround for SI kickers + - drm/radeon: drop register readback in cayman_cp_int_cntl_setup + - drm/nouveau/acpi: fix check for power resources support + - drm/fb-helper: Don't call dirty callback for untouched clips + - drm/fb-helper: Fix connector ref leak on error + - drm/fb-helper: Keep references for the current set of used connectors + - drm/i915/gen9: fix DDB partitioning for multi-screen cases + - drm/i915/gen9: fix watermarks when using the pipe scaler + - drm/dp/mst: Check peer device type before attempting EDID read + - drm: Release reference from blob lookup after replacing property + - drm/i915: Respect alternate_aux_channel for all DDI ports + - drm/i915: Clean up DDI DDC/AUX CH sanitation + - drm/i915/fbc: fix CFB size calculation for gen8+ + - drm: i915: Wait for fences on new fb, not old + - i2c: mark device nodes only in case of successful instantiation + - netfilter: xt_NFLOG: fix unexpected truncated packet + - [arm64, armhf] pwm: Unexport children before chip removal + - [arm64, armhf] usb: dwc3: Fix size used in dma_free_coherent() + - [arm64, armhf] usb: chipidea: host: fix NULL ptr dereference during + shutdown + - [armhf] usb: musb: Fix hardirq-safe hardirq-unsafe lock order error + - tty: vt, fix bogus division in csi_J + - [x86] kvm: Check memopp before dereference (CVE-2016-8630) + - btrfs: qgroup: Prevent qgroup->reserved from going subzero + - [x86] cpufreq: intel_pstate: Set P-state upfront in performance mode + - HID: usbhid: add ATEN CS962 to list of quirky devices + + [ Ben Hutchings ] + * debian/control: Fix build-dependency on openssl to work with new + versions that have M-A: allowed (Closes: #839145) + * [rt] Update to 4.8.6-rt5: + - [i386] entry: Fix preempt_lazy_count check in resume_kernel() + - sched: Use mmdrop_delayed() in sched_cpu_dying() + - Revert "mm/zsmalloc: Use get/put_cpu_light in + zs_map_object()/zs_unmap_object()" + - mm/zsmalloc: copy with get_cpu_var() and locking + - NFSv4: replace seqcount_t with a seqlock_t + - ftrace: Fix trace header alignment + - connector/cn_proc: Protect send_msg() with a local lock on RT + - drivers/zram: Don't disable preemption in zcomp_stream_get/put() + * HID: Enable HID_ALPS, HID_ASUS (Closes: #843085), HID_CMEDIA as modules + * cpupower: Fix checks for CPU existence (Closes: #843071) + * perf: Disable use of libcrypto (Closes: #843199) + * IB: Enable INFINIBAND_RDMAVT as module, re-enabling INFINIBAND_HFI1 + and INFINIBAND_QIB (Closes: #843792) + * libcpupower-dev: Depend on libcpupower1 (Closes: #840852) + * [arm64] Enable more drivers for X-Gene (Closes: #840061): + - ipmi: Enable IPMI_HANDLER, IPMI_DEVICE_INTERFACE, IPMI_SSIF as modules + - i2c: Enable I2C_XGENE_SLIMPRO as module + - mailbox: Enable XGENE_SLIMPRO_MBOX as module + * debian/control: Build-Depend on a recent debhelper instead of dh-systemd + + -- Ben Hutchings Sun, 13 Nov 2016 04:38:09 +0000 + +linux (4.8.5-1) unstable; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.8.5 + - [x86] boot/smp: Don't try to poke disabled/non-existent APIC + (Closes: #841850) + - [x86] Input: i8042 - skip selftest on ASUS laptops + - [x86] Input: elantech - add Fujitsu Lifebook E556 to force crc_enabled + (Closes: #835160) + + [ Ben Hutchings ] + * cpufreq: Re-enable CPU_FREQ_STAT, which can no longer be modular + * [armhf] dts: imx53: add support for USB armory board (Closes: #840137) + * kconfig: Renumber SYMBOL_NEW, fixing regression of allnoconfig + (Closes: #841357) + * netfilter: xt_NFLOG: fix unexpected truncated packet (Closes: #841261) + * Set ABI to 1 + + -- Ben Hutchings Fri, 28 Oct 2016 20:34:09 +0100 + +linux (4.8.4-1~exp1) experimental; urgency=medium + + * New upstream release: https://kernelnewbies.org/Linux_4.8 + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.8.1 + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.8.2 + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.8.3 + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.8.4 + + [ Ben Hutchings ] + * [amd64] Enable LEGACY_VSYSCALL_NONE instead of LEGACY_VSYSCALL_EMULATE. + This breaks (e)glibc 2.13 and earlier, and can be reverted using the kernel + parameter: vsyscall=emulate + * [arm*] Enable STRICT_DEVMEM + * [arm*,powerpc*,s390x,x86] Enable IO_STRICT_DEVMEM. This breaks dosemu and + some old graphics drivers, and can be reverted using the kernel parameter: + iomem=relaxed + * [mips*] Enable RANDOMIZE_BASE and RELOCATABLE. + * Enable SLAB_FREELIST_RANDOM + * [arm*,powerpc*,s390x,sparc64,x86] Enable HARDENED_USERCOPY + * security,perf: Replace GRKERNSEC_PERF_HARDEN patch with the version + submitted upstream + * [amd64] Enable RANDOMIZE_MEMORY + * [powerpc*/*64*] Enable OPAL_PRD, MTD, MTD_POWERNV_FLASH as modules + (Closes: #838604, #838605) + * security,printk: Enable SECURITY_DMESG_RESTRICT, preventing non-root users + reading the kernel log by default (sysctl: kernel.dmesg_restrict) + * bug script: Optionally use sudo to read a restricted kernel log, and fall + back to writing a placeholder + * [rt] Update to 4.8.2-rt2 and re-enable + * aufs: Update support patchest to aufs4.8-20161010 (no functional change) + + [ Aurelien Jarno ] + * [arm64] Enable SERIAL_8250_EXTENDED, SERIAL_8250_SHARE_IRQ and + SERIAL_8250_BCM2835AUX, needed for Raspberry Pi 3. + + -- Ben Hutchings Sun, 23 Oct 2016 17:21:13 +0100 + +linux (4.8~rc8-1~exp1) experimental; urgency=medium + + * New upstream release candidate + + [ Héctor Orón ] + * [arm64] Enable ACPI, ARM64_VA_BITS_48 (Closes: #834505) + + [ Ben Hutchings ] + * Fix some new reproducibility issues: + - linux-source: Exclude Python bytecode generated when running Sphinx + - Set -fdebug-prefix-map=... in compiler options for kernel and userland + - linux-headers: Stop including unused arch/*/kernel/asm-offsets.s files + * linux-doc: Exclude Sphinx support code and Makefiles + * [arm64] mm: Limit TASK_SIZE_64 for compatibility + * [armhf] udeb: Replace dwmac-socfpga with dwmac-altr-socfpga in + nic-modules (Closes: #837110, thanks to Vagrant Cascadian) + * [armhf] Enable drivers for ASUS Chromebook C201 (veyron-speedy): + MFD_RK808, POWER_AVS, POWER_RESET_GPIO_RESTART, RTC_DRV_RK808, + ROCKCHIP_PM_DOMAINS as built-in; DRM_PANEL_SIMPLE, ROCKCHIP_ANALOGIX_DP, + ROCKCHIP_DW_MIPI_DSI, I2C_CROS_EC_TUNNEL, KEYBOARD_CROS_EC, OUSE_ELAN_I2C, + MFD_CROS_EC, MFD_CROS_EC_SPI, MFD_RK808, PHY_ROCKCHIP_EMMC, PHY_ROCKCHIP_DP, + BATTERY_SBS, CHARGER_GPIO, REGULATOR_RK808, BACKLIGHT_PWM as modules + (Closes: #836251, thanks to Vagrant Cascadian) + * [armhf] dsa: Enable drivers for Lamobo R1 (aka BPi-R1): B53, + B53_MDIO_DRIVER as modules (Closes: #836231, thanks to Vagrant Cascadian) + * [armhf] media: Enable VIDEO_V4L2_SUBDEV_API and VIDEO_OMAP3 as module + + -- Ben Hutchings Mon, 26 Sep 2016 04:27:06 +0100 + +linux (4.8~rc5-1~exp1) experimental; urgency=medium + + * New upstream release candidate + + [ Martin Michlmayr ] + * [arm64] Enable more Tegra options: TEGRA_ACONNECT. + * [arm64] Enable more QCOM options: MSM_GCC_8996, MSM_MMCC_8996, QCOM_HIDMA, + QCOM_HIDMA_MGMT, PCIE_QCOM, PINCTRL_MSM8996, QCOM_Q6V5_PIL. + * [arm64] Enable support for BCM2837 (Raspberry Pi 3): + - Enable ARCH_BCM2835, DMA_BCM2835, BCM2835_MBOX, RASPBERRYPI_FIRMWARE, + RASPBERRYPI_POWER + - Enable DRM_VC4, I2C_BCM2835, PWM_BCM2835, SPI_BCM2835, SPI_BCM2835AUX, + BCM2835_WDT, SND_BCM2835_SOC_I2S, MMC_SDHCI_IPROC, HW_RANDOM_BCM2835 + as modules + * [arm64] Enable USB_DWC2 and USB_DWC3. + * [arm64] Enable more HISI options: MFD_HI655X_PMIC, REGULATOR_HI655X, + STUB_CLK_HI6220, HI6220_MBOX, COMMON_RESET_HI6220, PHY_HI6220_USB, + HW_RANDOM_HISI, DRM_HISI_KIRIN, INPUT_HISI_POWERKEY, PCI_HISI, + SPI_HISI_SFC, SCSI_HISI_SAS (Closes: #821027). + * [arm64] Enable TI WLAN (WLAN_VENDOR_TI): WL1251, WL12XX, WL18XX + * [arm64] Enable Hisilicon Ethernet devices: HIX5HD2_GMAC, HISI_FEMAC, + HIP04_ETH, HNS_MDIO, HNS, HNS_DSAF, HNS_ENET, MDIO_HISI_FEMAC + + [ Ben Hutchings ] + * Update config for 4.8: + - Enable HID_LED as module instead of USB_LED + - Enable BH1780 as module instead of SENSORS_BH1780 + - [alpha] Enable RTC_CLASS and RTC_DRV_ALPHA instead of GEN_RTC + - [armhf] Rename omapdrm display config symbols + - [armhf] Enable IIO_ST_ACCEL_3AXIS as module instead of LIS3L02DQ + - [hppa] Enable RTC_CLASS and RTC_DRV_GENERIC instead of GEN_RTC + * liblockdep: Stop trying to build packages, as it failed to build again + * linux-doc: Build and install HTML pages from reStructuredText sources + - Add python-sphinx and python-sphinx-rtd-theme to Build-Depends-Indep + - Install files from both HTML output directories into the package + - Exclude RST sources from the package + + -- Ben Hutchings Wed, 07 Sep 2016 21:52:47 +0100 + +linux (4.7.8-1) unstable; urgency=high + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.7.7 + - cpuset: handle race between CPU hotplug and cpuset_hotplug_work + - cgroup: fix invalid controller enable rejections with cgroup namespace + - scripts/recordmcount.c: account for .softirqentry.text + - mm,ksm: fix endless looping in allocating memory when ksm enable + - can: dev: fix deadlock reported after bus-off + - [x86] init: Fix cr4_init_shadow() on CR4-less machines + - drm/udl: fix line iterator in damage handling + - drm/nouveau/fifo/nv04: avoid ramht race against cookie insertion + - drm/radeon/si/dpm: add workaround for for Jet parts + - [armel,armhf] 8616/1: dt: Respect property size when parsing CPUs + - [armel,armhf] 8617/1: dma: fix dma_max_pfn() + - mwifiex: illegal assignment + - i40e: avoid null pointer dereference + - pinctrl: Flag strict is a field in struct pinmux_ops + - i2c: mux: demux-pinctrl: run properly with multiple instances + - rcuperf: Don't treat gp_exp mis-setting as a WARN + - [armhf,arm64] drivers/perf: arm_pmu: Fix leak in error path + - perf/core: Use this_cpu_ptr() when stopping AUX events + - [armhf,arm64] mmc: tegra: Only advertise UHS modes if IO regulator is + present + - nvmem: Declare nvmem_cell_read() consistently + - hwmon: (adt7411) set bit 3 in CFG1 register + - sched/cputime: Fix prev steal time accouting during CPU hotplug + - iwlwifi: mvm: checksum IPv6 fragmented packet + - iwlwifi: mvm: fix txq aggregation bug + - iwlwifi: mvm: write the correct internal TXF index + - iwlwifi: mvm: unmap the paging memory before freeing it + - iwlwifi: pcie: fix access to scratch buffer + - iwlwifi: mvm: free RX reorder buffer on restart + - iwlwifi: mvm: avoid harmless -Wmaybe-uninialized warning + - iwlwifi: mvm: don't use ret when not initialised + - [armhf] usb: gadget: fsl_qe_udc: signedness bug in qe_get_frame() + - mac80211: check skb_linearize() return value + - i40iw: Protect req_resource_num update + - i40iw: Add missing check for interface already open + - i40iw: Change mem_resources pointer to a u8 + - i40iw: Fix double free of allocated_buffer + - i40iw: Do not set self-referencing pointer to NULL after kfree + - i40iw: Avoid writing to freed memory + - i40iw: Add missing NULL check for MPA private data + - i40iw: Send last streaming mode message for loopback connections + - i40iw: Update hw_iwarp_state + - i40iw: Receive notification events correctly + - batman-adv: Add missing refcnt for last_candidate + - batman-adv: fix elp packet data reservation + - [armhf,arm64] irqchip/gicv3: Silence noisy DEBUG_PER_CPU_MAPS warning + - [armhf] 8618/1: decompressor: reset ttbcr fields to use TTBR0 on ARMv7 + - [arm64] debug: avoid resetting stepping state machine when TIF_SINGLESTEP + - [mips*] uprobes: remove incorrect set_orig_insn + - [mips*] fix uretprobe implementation + - [mips*/*-malta] Fix IOCU disable switch read for MIPS64 + - [mips*] uprobes: fix use of uninitialised variable + - printk: fix parsing of "brl=" option + - Bluetooth: split sk_filter in l2cap_sock_recv_cb + - tpm: fix byte-order for the value read by tpm2_get_tpm_pt + - regulator: pwm: Fix regulator ramp delay for continuous mode + - [arm64] regulator: qcom_spmi: Add support for S4 supply on pm8941 + - [arm64] regulator: qcom_spmi: Add support for get_mode/set_mode on + switches + - [arm64] regulator: qcom_spmi: Update mvs1/mvs2 switches on pm8941 + - [arm64] regulator: qcom_smd: Fix voltage ranges for pm8x41 + - [arm64] regulator: qcom_smd: Fix voltage ranges for pma8084 ftsmps and + pldo + - [armhf] dts: imx6sx-sabreauto: Fix misspelled property + - [armhf] sun5i: Fix typo in trip point temperature + - pcmcia: ds: fix suspend/resume + - [armhf] hwrng: omap - Fix assumption that runtime_get_sync will always + succeed + - blk-mq: actually hook up defer list when running requests + - pstore: drop file opened reference count + - fm10k: fix incorrect index calculation in fm10k_write_reta + - iwlmvm: mvm: set correct state in smart-fifo configuration + - [armhf,arm64] em28xx-i2c: rt_mutex_trylock() returns zero on failure + - gspca: avoid unused variable warnings + - ath9k: Fix programming of minCCA power threshold + - qla2xxx: Fix BBCR offset + - fnic: pci_dma_mapping_error() doesn't return an error code + - tracing: Have HIST_TRIGGERS select TRACING + - NFS/pnfs: Do not clobber existing pgio_done_cb in nfs4_proc_read_setup + - svc: Avoid garbage replies when pc_func() returns rpc_drop_reply + - NFS: Don't drop CB requests with invalid principals + - pNFS/files: Fix layoutcommit after a commit to DS + - pNFS/flexfiles: Fix layoutcommit after a commit to DS + - watchdog: core: Clear WDOG_HW_RUNNING before calling the stop function + - xprtrdma: Remove FMRs from the unmap list after unmapping + - [x86] ASoC: Intel: Skylake: Fix error return code in skl_probe() + - brcmfmac: Fix glob_skb leak in brcmf_sdiod_recv_chain + - brcmsmac: Free packet if dma_mapping_error() fails in dma_rxfill + - brcmsmac: Initialize power in brcms_c_stf_ss_algo_channel_get() + - [powerpc*] prom: Fix sub-processor option passed to ibm, + client-architecture-support + - sysctl: handle error writing UINT_MAX to u32 fields + - IB/core: Fix possible memory leak in cma_resolve_iboe_route() + - kernel/fork: fix CLONE_CHILD_CLEARTID regression in nscd + - SUNRPC: Silence WARN_ON when NFSv4.1 over RDMA is in use + - pNFS/flexfiles: Fix layoutstat periodic reporting + - lib/test_hash.c: fix warning in preprocessor symbol evaluation + - [x86] KVM: nVMX: postpone VMCS changes on MSR_IA32_APICBASE write + - ceph: do not modify fi->frag in need_reset_readdir() + - IB/ipoib: Fix memory corruption in ipoib cm mode connect flow + - ath10k: fix get rx_status from htt context + - IB/core: Fix use after free in send_leave function + - regmap: rbtree: Avoid overlapping nodes + - scsi: ses: use scsi_is_sas_rphy instead of is_sas_attached + - IB/ipoib: Don't allow MC joins during light MC flush + - IB/mlx4: Fix incorrect MC join state bit-masking on SR-IOV + - IB/mlx4: Fix code indentation in QP1 MAD flow + - IB/mlx4: Use correct subnet-prefix in QP1 mads under SR-IOV + - IB/mlx5: Enable MAD_IFC commands for IB ports only + - IB/mlx5: Set source mac address in FTE + - batman-adv: remove unused callback from batadv_algo_ops struct + - aio: mark AIO pseudo-fs noexec + - dm log writes: fix bug with too large bios + - usb: misc: legousbtower: Fix NULL pointer deference + - [x86] usb: usbip: vudc: fix left shift overflow + - Revert "usbtmc: convert to devm_kzalloc" + - [x86] ALSA: hda - Adding one more ALC255 pin definition for headset + problem + - [x86] ALSA: hda - Fix headset mic detection problem for several Dell + laptops + - [x86] ALSA: hda - Add the top speaker pin config for HP Spectre x360 + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.7.8 + - [powerpc*] pseries: use pci_host_bridge.release_fn() to kfree(phb) + - [powerpc*] cxl: use pcibios_free_controller_deferred() when removing + vPHBs + - timekeeping: Fix __ktime_get_fast_ns() regression + - ALSA: ali5451: Fix out-of-bound position reporting + - ALSA: usb-audio: Extend DragonFly dB scale quirk to cover other variants + - mfd: rtsx_usb: Avoid setting ucr->current_sg.status + - [x86] xen: Update topology map for PV VCPUs + - [powerpc*] KVM: PPC: Book3s PR: Allow access to unprivileged MMCR2 + register + - [arm64] KVM: arm64: Require in-kernel irqchip for PMU support + - [arm64] KVM: arm/arm64: vgic: Don't flush/sync without a working vgic + - [powerpc*] KVM: PPC: BookE: Fix a sanity check + - [arm64] fix dump_backtrace/unwind_frame with NULL tsk + - [x86] boot: Fix kdump, cleanup aborted E820_PRAM max_pfn manipulation + - [x86] irq: Prevent force migration of irqs which are not in the vector + domain + - [x86] apic: Get rid of apic_version[] array + - [x86] arch/x86: Handle non enumerated CPU after physical hotplug + - [x86] dumpstack: Fix x86_32 kernel_stack_pointer() previous stack access + - [armhf] dts: mvebu: armada-390: add missing compatibility string and + bracket + - [arm64] dts: MSM8064 remove flags from SPMI/MPP IRQs + - [arm64] cpuidle: Fix error return code + - [x86] tpm: fix a race condition in tpm2_unseal_trusted() + - [x86] tpm_crb: fix crb_req_canceled behavior + + [ Ben Hutchings ] + * net: add recursion limit to GRO (CVE-2016-7039) + * posix_acl: Clear SGID bit when setting file permissions (CVE-2016-7097) + * scsi: arcmsr: Buffer overflow in arcmsr_iop_message_xfer() (CVE-2016-7425) + + [ Salvatore Bonaccorso ] + * KEYS: Fix short sprintf buffer in /proc/keys show function (CVE-2016-7042) + * mm: remove gup_flags FOLL_WRITE games from __get_user_pages() + (CVE-2016-5195) + + -- Salvatore Bonaccorso Wed, 19 Oct 2016 17:56:57 +0200 + +linux (4.7.6-1) unstable; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.7.6 + - [arm64] crypto: arm64/aes-ctr - fix NULL dereference in tail processing + - [armhf] crypto: arm/aes-ctr - fix NULL dereference in tail processing + - crypto: skcipher - Fix blkcipher walk OOM crash + - crypto: echainiv - Replace chaining with multiplication + - ocfs2/dlm: fix race between convert and migration + - ocfs2: fix start offset to ocfs2_zero_range_for_truncate() + - Revert "ocfs2: bump up o2cb network protocol version" + - autofs: use dentry flags to block walks during expire + - xfs: prevent dropping ioend completions during buftarg wait + - mm: fix the page_swap_info() BUG_ON check + - fsnotify: add a way to stop queueing events on group shutdown + - fanotify: fix list corruption in fanotify_get_response() + - mm: memcontrol: make per-cpu charge cache IRQ-safe for socket accounting + - cgroup: duplicate cgroup reference when cloning sockets + - fix fault_in_multipages_...() on architectures with no-op access_ok() + - KEYS: Fix skcipher IV clobbering + - [arm64] Call numa_store_cpu_info() earlier. + - configfs: Return -EFBIG from configfs_write_bin_file. + - [armhf] mtd: nand: mxc: fix obiwan error in + mxc_nand_v[12]_ooblayout_free() functions + - mtd: spi-nor: fix wrong "fully unlocked" test + - reset: Return -ENOTSUPP when not configured + - rtc: ds1307: Fix relying on reset value for weekday + - [arm64] power: reset: hisi-reboot: Unmap region obtained by of_iomap + - mac80211: reject TSPEC TIDs (TSIDs) for aggregation + - fix memory leaks in tracing_buffers_splice_read() + - tracing: Move mutex to protect against resetting of seq data + - mm: delete unnecessary and unsafe init_tlb_ubc() + - iwlwifi: mvm: update TX queue before making a copy of the skb + - nl80211: validate number of probe response CSA counters + - btrfs: ensure that file descriptor used with subvol ioctls is a dir + - [x86] efi: Only map RAM into EFI page tables if in mixed-mode + - [x86] i2c-eg20t: fix race between i2c init and interrupt enable + - [armhf] i2c: mux: pca954x: retry updating the mux selection on failure + - [arm64] i2c: qup: skip qup_i2c_suspend if the device is already runtime + suspended + - [mips*] SMP: Fix possibility of deadlock when bringing CPUs online + - [mips*] Avoid a BUG warning during prctl(PR_SET_FP_MODE, ...) + - [mips*] Add a missing ".set pop" in an early commit + - [x86] mm/pat: Prevent hang during boot when mapping pages + - libceph: add an ONSTACK initializer for oids + - ceph: fix symbol versioning for ceph_monc_do_statfs + - ceph: Correctly return NXIO errors from ceph_llseek + - libceph: fix return value check in alloc_msg_with_page_vector() + - PM / hibernate: Restore processor state before using per-CPU variables + - PM / hibernate: Fix rtree_next_node() to avoid walking off list ends + - ixgbe: Force VLNCTRL.VFE to be set in all VMDq paths + - ixgbe: Re-enable ability to toggle VLAN filtering + - igb: fix adjusting PTP timestamps for Tx/Rx latency + - [armhf,arm64] soc/tegra: pmc: Don't probe PMC if early initialisation + fails + - qxl: check for kmap failures + - hostfs: Freeing an ERR_PTR in hostfs_fill_sb_common() + - iw_cxgb4: stop MPA_REPLY timer when disconnecting + + [ Ben Hutchings ] + * debian/bin/gencontrol.py: Fix cross-build-dependencies if invoked under + dpkg-buildpackage + * linux-image: Exclude vmlinux from stripping by dh_strip (fixes FTBFS + on hppa) + * udeb: Fold core-modules into kernel-image + * udeb: Move nls_utf8 from fat-modules to kernel-image, as many other + filesystems need it but vfat no longer does + * of_mdio: Enable fixed PHY support if driver is a module + * of_mdio: select fixed phy support unconditionally + * [armhf] Enable driver for SolidRun ClearFog: USB_XHCI_MVEBU as module + * mm: memcontrol: use special workqueue for creating per-memcg caches + + [ Cyril Brulebois ] + * Add nls_ascii to the fat-modules udeb, following the change of + iocharset default in 4.7.2-1. This fixes a regression with EFI-related + mounts within the Debian Installer. (Closes: #839552) + + -- Ben Hutchings Fri, 07 Oct 2016 02:11:50 +0100 + +linux (4.7.5-1) unstable; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.7.5 + - [armhf] clocksource/drivers/sun4i: Clear interrupts after stopping timer + in probe function + - fscrypto: require write access to mount to set encryption policy + - [arm64] drm/msm: protect against faults from copy_from_user() in submit + ioctl + - bpf: fix method of PTR_TO_PACKET reg id generation + - ipv4: panic in leaf_walk_rcu due to stale node pointer + - vti: flush x-netns xfrm cache when vti interface is removed + - bpf: fix write helpers with regards to non-linear parts + - net/irda: handle iriap_register_lsap() allocation failure + - net/sctp: always initialise sctp_ht_iter::start_fail + - net: ipv6: Do not keep IPv6 addresses when IPv6 is disabled + - tipc: fix NULL pointer dereference in shutdown() + - net/mlx5: Fix pci error recovery flow + - net/mlx5: Added missing check of msg length in verifying its signature + - net/mlx5e: Use correct flow dissector key on flower offloading + - net sched: fix encoding to use real length + - udp: fix poll() issue with zero sized packets + - tcp: properly scale window in tcp_v[46]_reqsk_send_ack() + - sctp: fix overrun in sctp_diag_dump_one() + - tun: fix transmit timestamp support + - [armhf] net: dsa: bcm_sf2: Fix race condition while unmasking interrupts + - Revert "phy: IRQ cannot be shared" + - net: smc91x: fix SMC accesses + - bridge: re-introduce 'fix parsing of MLDv2 reports' + - bonding: Fix bonding crash + - Revert "af_unix: Fix splice-bind deadlock" + - af_unix: split 'u->readlock' into two: 'iolock' and 'bindlock' + - ipv6: release dst in ping_v6_sendmsg + - [arm64] bnxt_en: Fix TX push operation on ARM64. + - ipv6: addrconf: fix dev refcont leak when DAD failed + - tcp: fastopen: avoid negative sk_forward_alloc + - net/mlx5e: Fix parsing of vlan packets when updating lro header + - tcp: cwnd does not increase in TCP YeAH + - [powerpc*] tm: do not use r13 for tabort_syscall + - [powerpc*] powernv : Drop reference added by kset_find_obj() + - [powerpc*] sysdev: cpm: fix gpio save_regs functions + - [powerpc*] mm: Don't alias user region to other regions below PAGE_OFFSET + - [powerpc*] powernv: Fix corrupted PE allocation bitmap on releasing PE + - kernfs: don't depend on d_find_any_alias() when generating notifications + - pNFS/flexfiles: Fix an Oopsable condition when connection to the DS fails + - pNFS: The client must not do I/O to the DS if it's lease has expired + - NFSv4.1: Fix Oopsable condition in server callback races + - NFSv4.x: Fix a refcount leak in nfs_callback_up_net + - nfsd: Close race between nfsd4_release_lockowner and nfsd4_lock + - pNFS: Ensure LAYOUTGET and LAYOUTRETURN are properly serialised + - NFSv4.1: Fix the CREATE_SESSION slot number accounting + - kexec: fix double-free when failing to relocate the purgatory + - mm, mempolicy: task->mempolicy must be NULL before dropping final + reference + - ahci: disable correct irq for dummy ports + - audit: fix exe_file access in audit_exe_compare + - dm flakey: fix reads to be issued if drop_writes configured + - IB/hfi1,IB/qib: Fix qp_stats sleep with rcu read lock held + - IB/uverbs: Fix race between uverbs_close and remove_one + - IB/hfi1: Reset QSFP on every run through channel tuning + - [amd64] mm: fix cache mode of dax pmd mappings + - [x86] paravirt: Do not trace _paravirt_ident_*() functions + - [x86] AMD: Apply erratum 665 on machines without a BIOS fix + - [s390x] KVM: don't use current->thread.fpu.* when accessing registers + - [armhf,arm64] kvm-arm: Unmap shadow pagetables properly + - [x86] kvm: correctly reset dest_map->vector when restoring LAPIC state + - iio: sw-trigger: Fix config group initialization + - [armhf] iio: adc: rockchip_saradc: reset saradc controller before + programming it + - [armhf] iio: adc: ti_am335x_adc: Protect FIFO1 from concurrent access + - [armhf] iio: adc: ti_am335x_adc: Increase timeout value waiting for ADC + sample + - iio:ti-ads1015: fix a wrong pointer definition. + - [x86] iio: accel: bmc150: reset chip at init time + - iio: fix pressure data output unit in hid-sensor-attributes + - iio:core: fix IIO_VAL_FRACTIONAL sign handling + - iio: ensure ret is initialized to zero before entering do loop + - serial: 8250_mid: fix divide error bug if baud rate is 0 + - serial: 8250: added acces i/o products quad and octal serial cards + - [armhf,arm64] usb: chipidea: udc: fix NULL ptr dereference in + isr_setup_status_phase + - USB: change bInterval default to 10 ms + - devpts: return NULL pts 'priv' entry for non-devpts nodes + - cpuset: make sure new tasks conform to the current config of the cpuset + - [armhf] dts: rockchip: add reset node for the exist saradc SoCs + - [armhf] imx6: add missing BM_CLPCR_BYP_MMDC_CH0_LPM_HS setting for imx6ul + - [armhf] imx6: add missing BM_CLPCR_BYPASS_PMIC_READY setting for imx6sx + - [armel] kirkwood: ib62x0: fix size of u-boot environment partition + - [armhf] OMAP3: hwmod data: Add sysc information for DSI + - [armel] dts: kirkwood: Fix PCIe label on OpenRD + - [armhf] dts: imx6qdl: Fix SPDIF regression + - [armhf] dts: armada-388-clearfog: number LAN ports properly + - dm log writes: fix check of kthread_run() return value + - dm crypt: fix free of bad values after tfm allocation failure + - dm log writes: move IO accounting earlier to fix error path + - dm crypt: fix error with too large bios + - [armhf] pinctrl: sunxi: fix uart1 CTS/RTS pins at PG on A23/A33 + - [armhf] memory: omap-gpmc: allow probe of child nodes to fail + - [arm64] spinlocks: implement smp_mb__before_spinlock() as smp_mb() + - crypto: cryptd - initialize child shash_desc on import + - Btrfs: remove root_log_ctx from ctx list before btrfs_sync_log returns + - fuse: direct-io: don't dirty ITER_BVEC pages + - xhci: fix null pointer dereference in stop command timeout function + - brcmfmac: avoid potential stack overflow in brcmf_cfg80211_start_ap() + - md-cluster: make md-cluster also can work when compiled into kernel + - ath9k: fix using sta->drv_priv before initializing it + - ath9k: bring back direction setting in ath9k_{start_stop} + - [x86] perf/intel: Fix PEBSv3 record drain + - [x86] perf/intel/cqm: Check cqm/mbm enabled state in event init + - [x86] perf/amd: Make HW_CACHE_REFERENCES and HW_CACHE_MISSES measure L2 + - [x86] perf/intel/pt: Fix an off-by-one in address filter configuration + - [x86] perf/intel/pt: Fix kernel address filter's offset validation + - [x86] perf/intel/pt: Do validate the size of a kernel address filter + - Revert "wext: Fix 32 bit iwpriv compatibility issue with 64 bit Kernel" + - sched/core: Fix a race between try_to_wake_up() and a woken up task + - ipv6: Don't unset flowi6_proto in ipxip6_tnl_xmit() + - efi: Make for_each_efi_memory_desc_in_map() cope with running on Xen + - efi/libstub: Allocate headspace in efi_get_memory_map() + - efi/libstub: Introduce ExitBootServices helper + - efi/libstub: Use efi_exit_boot_services() in FDT + - [x86] efi: Use efi_exit_boot_services() + - [powerpc,powerpcspe] Fix csum_partial_copy_generic() + - [powerpc,powerpcspe] Fix again csum_partial_copy_generic() + - [x86] drm/i915: Ignore OpRegion panel type except on select machines + - [x86] drm: Only use compat ioctl for addfb2 on X86/IA64 + - svcauth_gss: Revert 64c59a3726f2 ("Remove unnecessary allocation") + - genirq: Provide irq_gc_{lock_irqsave,unlock_irqrestore}() helpers + - fix iov_iter_fault_in_readable() + - [x86] fix minor infoleak in get_user_ex() + - [s390x] get_user() should zero on failure + - asm-generic: make get_user() clear the destination on errors + - asm-generic: make copy_from_user() zero the destination properly + - [alpha,hppa,mips*,powerpc,powerpcspe,sh4] make copy_from_user() zero the + destination properly + + [ Ben Hutchings ] + * [hppa,mips*,powerpc*] linux-image: Strip debug symbols from vmlinux + (really closes: #837588) + * [hppa] tracing: Re-enable FTRACE + * [powerpc,powerpcspe,ppc64] linux-image: Suppress automatic dbgsym packages + * uaccess,uio: Fix ABI changes in 4.7.5 + * ext4: Fix checksum validation for inodes with small i_extra_isize + (Closes: #838544, regression in 4.7.4) + + -- Ben Hutchings Mon, 26 Sep 2016 01:48:21 +0100 + +linux (4.7.4-2) unstable; urgency=medium + + * [arm64] Revert "arm64: Define AT_VECTOR_SIZE_ARCH for ARCH_DLINFO" + (fixes FTBFS) + * [armhf] media: Disable VIDEO_V4L2_SUBDEV_API and VIDEO_OMAP3 to avoid ABI + change (fixes FTBFS) + * [hppa] Ignore ABI changes caused by disabling CONFIG_FTRACE (fixes FTBFS) + + -- Ben Hutchings Mon, 19 Sep 2016 22:09:42 +0100 + +linux (4.7.4-1) unstable; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.7.3 + - [x86] mm: Disable preemption during CR3 read+write + - [x86] uprobes: Fix RIP-relative handling of EVEX-encoded instructions + - [x86] platform/uv: Skip UV runtime services mapping in the + efi_runtime_disabled case + - SUNRPC: Handle EADDRNOTAVAIL on connection failures + - SUNRPC: allow for upcalls for same uid but different gss service + - [x86] ALSA: hda - Manage power well properly for resume + - efi/capsule: Allocate whole capsule into virtual memory + - virtio: fix memory leak in virtqueue_add() + - vfio/pci: Fix NULL pointer oops in error interrupt setup handling + - tracing: Fix tick_stop tracepoint symbols for user export + - [x86] perf intel-pt: Fix occasional decoding errors when tracing + system-wide + - [amd64] libnvdimm, nd_blk: mask off reserved status bits + - ACPI: CPPC: Return error if _CPC is invalid on a CPU + - ACPI / CPPC: Prevent cpc_desc_ptr points to the invalid data + - genirq/msi: Remove unused MSI_FLAG_IDENTITY_MAP + - genirq/msi: Make sure PCI MSIs are activated early + - usb: ehci: change order of register cleanup during shutdown + - usb: devio, do not warn when allocation fails + - usb: misc: usbtest: add fix for driver hang + - usb: misc: usbtest: usbtest_do_ioctl may return positive integer + - usb: dwc3: gadget: increment request->actual once + - usb: dwc3: gadget: fix for short pkts during chained xfers + - usb: dwc3: gadget: always cleanup all TRBs + - usb: hub: Fix unbalanced reference count/memory leak/deadlocks + - USB: hub: fix up early-exit pathway in hub_activate + - USB: hub: change the locking in hub_activate + - USB: validate wMaxPacketValue entries in endpoint descriptors + - usb/gadget: fix gadgetfs aio support. + - xhci: always handle "Command Ring Stopped" events + - usb: xhci: Fix panic if disconnect + - xhci: don't dereference a xhci member after removing xhci + - USB: serial: fix memleak in driver-registration error path + - uprobes: Fix the memcg accounting + - perf symbols: Fix annotation of objects with debuginfo files + - perf/core: Fix event_function_local() + - perf tools mem: Fix -t store option for record command + - iommu/dma: Don't put uninitialised IOVA domains + - [armhf] iommu/io-pgtable-arm-v7s: Fix attributes when splitting blocks + - [armhf,arm64] iommu/arm-smmu: Fix CMDQ error handling + - [armhf,arm64] iommu/arm-smmu: Disable stalling faults for all endpoints + - [armhf,arm64] iommu/arm-smmu: Don't BUG() if we find aborting STEs with + disable_bypass + - [x86] pinctrl/amd: Remove the default de-bounce time + - i2c: mux: demux-pinctrl: properly roll back when adding adapter fails + - [s390x] dasd: fix hanging device after clear subchannel + - mac80211: fix purging multicast PS buffer queue + - [arm64] kernel: avoid literal load of virtual address with MMU off + - [arm64] avoid TLB conflict with CONFIG_RANDOMIZE_BASE + - [arm64] dts: rockchip: add reset saradc node for rk3368 SoCs + - [arm64] kernel: Fix unmasked debug exceptions when restoring mdscr_el1 + - of: fix reference counting in of_graph_get_endpoint_by_regs + - iio: fix sched WARNING "do not call blocking ops when !TASK_RUNNING" + - [x86] drm/amdgpu: Change GART offset to 64-bit + - [x86] drm/amdgpu: fix amdgpu_move_blit on 32bit systems + - [x86] drm/amdgpu: fix lru size grouping v2 + - [x86] drm/amdgpu: avoid a possible array overflow + - [x86] drm/amdgpu: skip TV/CV in display parsing + - [x86] drm/amd/amdgpu: sdma resume fail during S4 on CI + - [x86] drm/amd/amdgpu: compute ring test fail during S4 on CI + - [x86] drm/amdgpu: record error code when ring test failed + - [x86] drm/i915: Fix iboost setting for DDI with 4 lanes on SKL + - [x86] drm/i915: Program iboost settings for HDMI/DVI on SKL + - [x86] drm/i915: Fix iboost setting for SKL Y/U DP DDI buffer translation + entry 2 + - [x86] drm/i915: Acquire audio powerwell for HD-Audio registers + - [x86] drm/i915: fix aliasing_ppgtt leak + - [x86] drm/i915/vlv: Make intel_crt_reset() per-encoder + - [x86] drm/i915/vlv: Reset the ADPA in vlv_display_power_well_init() + - [x86] drm/i915/vlv: Disable HPD in valleyview_crt_detect_hotplug() + - [x86] drm/i915: Enable polling when we don't have hpd + - [arm64] mfd: cros_ec: Add cros_ec_cmd_xfer_status() helper + - [arm64] i2c: cros-ec-tunnel: Fix usage of cros_ec_cmd_xfer() + - cdc-acm: fix wrong pipe type on rx interrupt xfers + - mpt3sas: Fix resume on WarpDrive flash cards + - megaraid_sas: Fix probing cards without io port + - dm round robin: do not use this_cpu_ptr() without having preemption + disabled + - gpio: Fix OF build problem on UM + - fs/seq_file: fix out-of-bounds read + - soft_dirty: fix soft_dirty during THP split + - [amd64] dax: fix device-dax region base + - [amd64] mm: silently skip readahead for DAX inodes + - btrfs: waiting on qgroup rescan should not always be interruptible + - btrfs: properly track when rescan worker is running + - btrfs: don't create or leak aliased root while cleaning up orphans + - Revert "floppy: fix open(O_ACCMODE) for ioctl-only open" + - Input: synaptics-rmi4 - fix register descriptor subpacket map construction + - [x86] crypto: qat - fix aes-xts key sizes + - USB: avoid left shift by -1 + - usb: chipidea: udc: don't touch DP when controller is in host mode + - USB: fix typo in wMaxPacketSize validation + - usb: gadget: udc: core: don't starve DMA resources + - USB: serial: mos7720: fix non-atomic allocation in write path + - USB: serial: mos7840: fix non-atomic allocation in write path + - [x86] staging/lustre/llite: Close atomic_open race with several openers + - [x86] staging: comedi: daqboard2000: bug fix board type matching code + - [x86] staging: comedi: comedi_test: fix timer race conditions + - [x86] staging: comedi: ni_mio_common: fix AO inttrig backwards + compatibility + - [x86] staging: comedi: ni_mio_common: fix wrong insn_write handler + - ACPI / drivers: fix typo in ACPI_DECLARE_PROBE_ENTRY macro + - ACPI / drivers: replace acpi_probe_lock spinlock with mutex + - ALSA: line6: Remove double line6_pcm_release() after failed acquire. + - ALSA: line6: Give up on the lock while URBs are released. + - ALSA: line6: Fix POD sysfs attributes segfault + - hwmon: (it87) Add missing sysfs attribute group terminator + - hwmon: (iio_hwmon) fix memory leak in name attribute + - sysfs: correctly handle read offset on PREALLOC attrs + - SUNRPC: Fix infinite looping in rpc_clnt_iterate_for_each_xprt + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.7.4 + - Revert "floppy: refactor open() flags handling" + - apparmor: fix refcount race when finding a child profile + - fs: Check for invalid i_uid in may_follow_link() + - cred: Reject inodes with invalid ids in set_create_file_as() + - ext4: validate that metadata blocks do not overlap superblock + - ext4: fix xattr shifting when expanding inodes + - ext4: fix xattr shifting when expanding inodes part 2 + - ext4: properly align shifted xattrs when expanding inodes + - ext4: avoid deadlock when expanding inode size + - ext4: avoid modifying checksum fields directly during checksum + verification + - block: Fix race triggered by blk_set_queue_dying() + - block: make sure a big bio is split into at most 256 bvecs + - cgroup: reduce read locked section of cgroup_threadgroup_rwsem during fork + - cdc-acm: added sanity checking for probe() + - drm/radeon: fix radeon_move_blit on 32bit systems + - drm/radeon: only apply the SS fractional workaround to RS[78]80 + - drm/atomic: Don't potentially reset color_mgmt_changed on successive + property updates. + - drm: Reject page_flip for !DRIVER_MODESET + - [arm64] drm/msm: fix use of copy_from_user() while holding spinlock + - [armhf] drm/vc4: Use drm_free_large() on handles to match its allocation. + - [armhf] drm/vc4: Fix overflow mem unreferencing when the binner runs dry. + - [armhf] drm/vc4: Fix oops when userspace hands in a bad BO. + - xfs: fix superblock inprogress check + - timekeeping: Cap array access in timekeeping_debug + - xenbus: don't look up transaction IDs for ordinary writes + - ovl: proper cleanup of workdir + - ovl: don't copy up opaqueness + - ovl: remove posix_acl_default from workdir + - ovl: listxattr: use strnlen() + - ovl: fix workdir creation + - mei: me: disable driver on SPT SPS firmware + - ubifs: Fix xattr generic handler usage + - ubifs: Fix assertion in layout_in_gaps() + - bdev: fix NULL pointer dereference + - bcache: RESERVE_PRIO is too small by one when prio_buckets() is a power + of two. + - [mips*/*-malta] irqchip/mips-gic: Implement activate op for device domain + - vhost/scsi: fix reuse of &vq->iov[out] in response + - [x86] apic: Do not init irq remapping if ioapic is disabled + - xprtrdma: Create common scatterlist fields in rpcrdma_mw + - crypto: caam - fix IV loading for authenc (giv)decryption + - fscrypto: add authorization check for setting encryption policy + - fscrypto: only allow setting encryption policy on directories + - ALSA: firewire-tascam: accessing to user space outside spinlock + - ALSA: fireworks: accessing to user space outside spinlock + - ALSA: rawmidi: Fix possible deadlock with virmidi registration + - ALSA: timer: fix NULL pointer dereference in read()/ioctl() race + - ALSA: timer: fix division by zero after SNDRV_TIMER_IOCTL_CONTINUE + - ALSA: timer: fix NULL pointer dereference on memory allocation failure + - ALSA: timer: Fix zero-division by continue of uninitialized instance + - scsi: fix upper bounds check of sense key in scsi_sense_key_string() + - cpufreq: dt: Add terminate entry for of_device_id tables + + [ Ben Hutchings ] + * [arm64] Add cpu_to_fdt32() when setting Secure Boot flag in FDT + * [amd64] Enable SIGNED_PE_FILE_VERIFICATION, KEXEC_FILE, + KEXEC_VERIFY_SIG, KEXEC_BZIMAGE_VERIFY_SIG + * i8042: Revert ABI break in 4.7.3 + * mm, oom: prevent premature OOM killer invocation for high order request + (regression in 4.7) + * [arm64] pinctrl: Enable PINCTRL_SINGLE as built-in, needed for HiKey SoCs + * [hppa] Disable FTRACE due to huge size cost (Closes: #837588) + * [powerpcspe] xmon: Don't use ld on 32-bit (Closes: #836741) + * liblockdep-dev: Add dependency on liblockdep (Closes: #837710) + * xen-linux-system: Relax dependency on linux-image to allow for version + suffix added by linux-signed + * [armhf] Enable drivers for Novena: MFD_STMPE as built-in; DRM_PANEL_SIMPLE, + MMA8452, TOUCHSCREEN_STMPE, BATTERY_SBS, BACKLIGHT_PWM, SND_SOC_IMX_ES8328 + as modules (Closes: #837627, thanks to Vagrant Cascadian) + * linux-image: postrm: Make failure of rmdir on purge non-fatal + (Closes: #836282) + * [armhf] Enable drivers and options for OpenPandora console: POWER_AVS_OMAP + as built-in; DISPLAY_CONNECTOR_ANALOG_TV, DISPLAY_PANEL_TPO_TD043MTEA1, + SENSORS_TWL4030_MADC, VIDEO_OMAP3, BATTERY_TWL4030_MADC, BACKLIGHT_PANDORA, + HDQ_MASTER_OMAP as modules; OMAP2_DSS_DSI (Closes: #835893, thanks to + Vagrant Cascadian) + * bug script: Stop describing TAINT_UNSIGNED_MODULE as expected + + -- Ben Hutchings Sun, 18 Sep 2016 14:56:01 +0100 + +linux (4.7.2-1) unstable; urgency=medium + + * New upstream release: https://kernelnewbies.org/Linux_4.7 + - media: fix airspy usb probe error path (CVE-2016-5400) + - libata: LITE-ON CX1-JB256-HP needs lower max_sectors (Closes: #830971) + - tcp: make challenge acks less predictable (CVE-2016-5696) + * New stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.7.1 + - vfs: ioctl: prevent double-fetch in dedupe ioctl (CVE-2016-6516) + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.7.2 + - [powerpc*] KVM: Book3S HV: Save/restore TM state in H_CEDE (CVE-2016-5412) + - audit: fix a double fetch in audit_log_single_execve_arg() (CVE-2016-6136) + + [ Ben Hutchings ] + * sched: Enable SCHEDSTATS (Closes: #796674) + * Re-enable various config options disabled by name and type changes in 4.7: + - nfc: NFC_PN533_USB replaced NFC_PN533 + - [armhf] dsa: NET_DSA_MV88E6XXX replaced NET_DSA_MV88E6{123,131,171} + - [x86] ACPI: ACPI_TABLE_UPGRADE replaced ACPI_INITRD_TABLE_OVERRIDE + - rxrpc: Enable RXKAD as part of af_rxrpc module + - [x86] 8250: Enable SERIAL_8250_FINTEK as built-in + * cgroups: Enable memory controller by default + * [armfh] udeb: Add efi-modules + * linux-kbuild: Include headers_install.sh and unifdef (Closes: #832359) + * udeb: Include cdc_ncm in nic-usb-modules (Closes: #833918) + * usbip: Use the locally-installed + * Exclude redundant and unreproducible files from binary packages + (Closes: #830268) + - usbip: Put all autotools-generated files in the build directory + - linux-headers: Exclude all .cmd files + * [arm*] Enable SECCOMP (Closes: #833183) + * [hppa] Fix automatic selection of cr16 clocksource + * [hppa] Fix order of EREFUSED define in errno.h + * aufs: Update support patches to aufs4.7-20160822 (Closes: #834764) + * [powerpc*] ipmi: Enable IPMI_POWERNV as module (Closes: #833861) + * kbuild: Do not use hyphen in exported variable name (Closes: #833561) + * fat: Mitigate the lack of UTF-8 case folding by enabling + FAT_DEFAULT_UTF8 and setting FAT_DEFAULT_IOCHARSET to "ascii" + (Closes: #833238) + * [arm64] Add support for securelevel and Secure Boot (Closes: #831827, + thanks to Linn Crosetto): + - efi: Disable secure boot if shim is in insecure mode + - Add kernel config option to set securelevel when in Secure Boot mode + - Enable EFI_SECURE_BOOT_SECURELEVEL + * tcp: fix use after free in tcp_xmit_retransmit_queue() (CVE-2016-6828) + * aacraid: Check size values after double-fetch from user (CVE-2016-6480) + * liblockdep: Move dummy definition of prandom_u32() to fix missing + declaration + * debian/rules.real: Avoid error message when usbip's config.h doesn't exist + + [ Martin Michlmayr ] + * [armhf] Enable MMC_SDHCI_IPROC and HW_RANDOM_BCM2835 for BCM2835. + * [arm64] Add USB support for NVIDIA Jetson TX1 Developer Kit: + - pinctrl: max77620: add pincontrol driver for MAX77620/MAX20024 + - gpio: max77620: add gpio driver for MAX77620/MAX20024 + - gpio: max77620: Configure interrupt trigger level + - gpio: max77620: use the new open drain callback + - gpio: max77620: get gpio value based on direction + - arm64: tegra: Add PMIC support on Jetson TX1 + - arm64: tegra: p2597: Add SDMMC power supplies + - arm64: tegra: Add DSI panel on Jetson TX1 + - arm64: tegra: Add Tegra210 XUSB pad controller + - arm64: tegra: Add Tegra210 XUSB controller + - arm64: tegra: Enable debug serial on Jetson TX1 + - arm64: tegra: Enable XUSB controller on Jetson TX1 + - arm64: tegra: Correct Tegra210 XUSB mailbox interrupt + * [arm64] Enable REGULATOR_FIXED_VOLTAGE. + * [arm64] Enable ARM64_ERRATUM_834220. + * [arm64] Build in SERIAL_TEGRA. + * [arm64] Enable REGULATOR_PWM, DRM_PANEL_SIMPLE, BACKLIGHT_GENERIC + and BACKLIGHT_LP855X for Jetson TX1. + * [arm64] Enable BATTERY_BQ27XXX, MFD_CROS_EC_I2C, I2C_CROS_EC_TUNNEL + for Google Pixel C. + * [arm64] Enable more Qualcomm options: PINCTRL_QCOM_SPMI_PMIC, + SPMI_MSM_PMIC_ARB, QCOM_SPMI_IADC, QCOM_SPMI_VADC, MFD_SPMI_PMIC, + REGULATOR_QCOM_SPMI, QCOM_SPMI_TEMP_ALARM, CHARGER_QCOM_SMBB, + USB_CHIPIDEA, USB_HSIC_USB3503, RTC_DRV_PM8XXX, EXTCON_USB_GPIO, + QCOM_COINCELL, and INPUT_PM8941_PWRKEY. + + [ Uwe Kleine-König ] + * Fix perf to be able to find debug info based on build-id. (Closes: + #833096) + + [ Nicolas LE CAM ] + * [amd64] Suggest grub-efi-amd64 instead of grub-efi dummy transitionnal + package (Closes: #835459) + + -- Ben Hutchings Sun, 28 Aug 2016 15:56:10 +0100 + +linux (4.7~rc7-1~exp1) experimental; urgency=medium + + * New upstream release candidate + + [ Aurelien Jarno ] + * [mipsel] Remove loongson-2e and loongson-2f flavours (Closes: #827790). + * [mipsel/4kc-malta, mipsel/5kc-malta] Build for R2 ISA. + + [ Martin Michlmayr ] + * [armhf, arm64] Enable DRM_TEGRA_STAGING. + + [ Ben Hutchings ] + * [x86] KASLR, power: Remove x86 hibernation restrictions + * fanotify: Enable FANOTIFY_ACCESS_PERMISSIONS (Closes: #690737) + - Warn and taint kernel if this feature is actually used + * Define Auto-Built-Package field when running dpkg-gencontrol, as dpkg-source + doesn't like to see it in debian/control + * debian/lib/python/debian_linux/debian.py: Handle packages with only short + descriptions + * Change names and descriptions of linux-image debug symbol packages to match + debhelper + + [ Bastian Blank ] + * Mark debug symbols packages to move them into the debug archive. + * Build debug symbols for all images. + + -- Ben Hutchings Thu, 14 Jul 2016 13:35:22 +0100 + +linux (4.7~rc4-1~exp1) experimental; urgency=medium + + * New upstream release candidate + + [ Ben Hutchings ] + * [armel] Disable module signing for all flavours (fixes FTBFS) + + -- Ben Hutchings Tue, 21 Jun 2016 00:41:23 +0100 + +linux (4.7~rc3-1~exp1) experimental; urgency=medium + + * New upstream release candidate + + [ Ben Hutchings ] + * bug script: Put binary package name and version in the info file so + linux-signed can easily replace them + * Move merge_packages function from debian/bin/gencontrol.py to + gencontrol module + * udeb: Drop packages for modules that will later be signed + * linux-image: Add '-unsigned' suffix to packages with modules that will + later be signed + - Add Conflicts and Replaces relations to signed packages (Closes: #827618) + * [rt] Disable until it is updated for 4.7 or later + * cpupower: Bump soname version and rename library package accordingly + * debian/rules.d/Makefile: Override architecture detection when building + userland headers + * linux-cpupower: Define PACKAGE_BUGREPORT to refer to reportbug, not upstream + * debian/README.source: Document the supported build profiles + * debian/control: Fix build-dependencies for cross-building + - Add workaround for libdpkg-perl bugs #827628, #827633 + * Add support for the nopython build profile, disabling the linux-perf package + * Fix build rules for userland tools to support cross-building + + [ Martin Michlmayr ] + * [armhf, arm64] Enable PHY_TEGRA_XUSB and USB_XHCI_TEGRA. + * [arm64] Enable MAX77620 and PCA9539 which are required by Jetson TX1. + * [arm64] Enable TEGRA210_ADMA. + * [arm64] Enable THERMAL. + * [armhf] Enable TEGRA_SOCTHERM. + * [armhf] Enable SPI_TEGRA114. + * [arm64] Enable more QCOM options (QCOM_SMP2P, QCOM_SMSM, QCOM_WCNSS_CTRL, + PHY_QCOM_UFS, QCOM_QFPROM). + + [ Aurelien Jarno ] + * [ppc64*] Enable SPAPR_TCE_IOMMU, VFIO and VFIO_PCI (Closes: #826367). + + -- Ben Hutchings Sat, 18 Jun 2016 23:50:39 +0100 + +linux (4.6.4-1) unstable; urgency=medium + + * Team upload. + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.6.4 + - net_sched: fix pfifo_head_drop behavior vs backlog + - act_ipt: fix a bind refcnt leak + - net: Don't forget pr_fmt on net_dbg_ratelimited for CONFIG_DYNAMIC_DEBUG + - sit: correct IP protocol used in ipip6_err + - esp: Fix ESN generation under UDP encapsulation + - netem: fix a use after free + - ipmr/ip6mr: Initialize the last assert time of mfc entries. + - Bridge: Fix ipv6 mc snooping if bridge has no ipv6 address + - sock_diag: do not broadcast raw socket destruction + - bpf, perf: delay release of BPF prog after grace period + - neigh: Explicitly declare RCU-bh read side critical section in neigh_xmit() + - AX.25: Close socket connection on session completion + - [powerpc] crypto: vmx - Increase priority of aes-cbc cipher + - crypto: user - re-add size check for CRYPTO_MSG_GETALG + - USB: uas: Fix slave queue_depth not being set + - usb: quirks: Fix sorting + - usb: quirks: Add no-lpm quirk for Acer C120 LED Projector + - [armhf] usb: musb: only restore devctl when session was set in backup + - [armhf] usb: musb: Stop bulk endpoint while queue is rotated + - [armhf] usb: musb: Ensure rx reinit occurs for shared_fifo endpoints + - [armhf] usb: musb: host: correct cppi dma channel for isoch transfer + - xhci: Cleanup only when releasing primary hcd + - usb: xhci-plat: properly handle probe deferral for devm_clk_get() + - USB: xhci: Add broken streams quirk for Frescologic device id 1009 + - xhci: Fix handling timeouted commands on hosts in weird states. + - USB: mos7720: delete parport + - usb: gadget: fix spinlock dead lock in gadgetfs + - [arm64, armhf] usb: host: ehci-tegra: Grab the correct UTMI pads reset + - usb: dwc3: exynos: Fix deferred probing storm. + + [ Uwe Kleine-König ] + * Cherry pick patches for rtc-s35390a from next. (Closes: #794266) + + [ Salvatore Bonaccorso ] + * apparmor: fix oops, validate buffer size in apparmor_setprocattr() + (CVE-2016-6187) + + [ Ben Hutchings ] + * bridge: Fix ABI change in 4.6.4 + * [rt] Update to 4.6.4-rt6 (no functional change) + + -- Salvatore Bonaccorso Mon, 18 Jul 2016 21:57:31 +0200 + +linux (4.6.3-1) unstable; urgency=medium + + [ Ben Hutchings ] + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.6.3 + - scsi_lib: correctly retry failed zero length REQ_TYPE_FS commands + - scsi: Add QEMU CD-ROM to VPD Inquiry Blacklist + - netlink: Fix dump skb leak/double free + - tipc: fix nametable publication field in nl compat + - switchdev: pass pointer to fib_info instead of copy + - tuntap: correctly wake up process during uninit + - bpf: Use mount_nodev not mount_ns to mount the bpf filesystem + - udp: prevent skbs lingering in tunnel socket queues + - uapi glibc compat: fix compilation when !__USE_MISC in glibc + - bpf, inode: disallow userns mounts + - [armhf] net: mvneta: Fix lacking spinlock initialization + - net: hwbm: Fix unbalanced spinlock in error case + - sfc: on MC reset, clear PIO buffer linkage in TXQs + - team: don't call netdev_change_features under team->lock + - net: alx: use custom skb allocator + - net: stmmac: Fix incorrect memcpy source memory + - vxlan: Accept user specified MTU value when create new vxlan link + - net: nps_enet: Disable interrupts before napi reschedule + - bpf, trace: use READ_ONCE for retrieving file ptr + - tcp: record TLP and ER timer stats in v6 stats + - bridge: Don't insert unnecessary local fdb entry on changing mac address + - l2tp: fix configuration passed to setup_udp_tunnel_sock() + - ipv6: Skip XFRM lookup if dst_entry in socket cache is valid + - [armhf,arm64] KVM: vgic-v2: Clear all dirty LRs + - [armhf,arm64] KVM: vgic-v3: Clear all dirty LRs + - [x86] KVM: fix OOPS after invalid KVM_SET_DEBUGREGS + - KVM: irqfd: fix NULL pointer dereference in kvm_irq_map_gsi + - [arm*] drivers/perf: arm_pmu: Defer the setting of __oprofile_cpu_pmu + - [x86] ALSA: hda - Add PCI ID for Kabylake + - [x86] ALSA: hda - Fix headset mic detection problem for Dell machine + - ALSA: hda/realtek - ALC256 speaker noise issue + - ALSA: hda/realtek - Add support for new codecs ALC700/ALC701/ALC703 + - [x86] ALSA: hda/realtek: Add T560 docking unit fixup + - [armhf] fix PTRACE_SETVFPREGS on SMP systems + - gpio: bail out silently on NULL descriptors + - gpiolib: Fix NULL pointer deference + - gpiolib: Fix unaligned used of reference counters + - [s390x] bpf: fix recache skb->data/hlen for skb_vlan_push/pop + - [s390x] bpf: reduce maximum program size to 64 KB + - [armhf,arm64] irqchip/gic-v3: Fix ICC_SGI1R_EL1.INTID decoding mask + - [x86] crypto: ccp - Fix AES XTS error for request sizes above 4096 + - [arm64] Provide "model name" in /proc/cpuinfo for PER_LINUX32 tasks + - [arm64] mm: always take dirty state from new pte in ptep_set_access_flags + - [powerpc*] pseries/eeh: Handle RTAS delay requests in configure_bridge + - [powerpc*] Fix definition of SIAR and SDAR registers + - [powerpc*] Use privileged SPR number for MMCR2 + - [powerpc*] pseries: Add POWER8NVL support to + ibm,client-architecture-support call + - [powerpc*] mm/hash: Fix the reference bit update when handling hash fault + - [hppa] Fix pagefault crash in unaligned __get_user() call + - memcg: add RCU locking around css_for_each_descendant_pre() in + memcg_offline_kmem() + - wext: Fix 32 bit iwpriv compatibility issue with 64 bit Kernel + - mm: thp: broken page count after commit aa88b68c3b1d + - [x86] entry/traps: Don't force in_interrupt() to return true in IST + handlers + - fix d_walk()/non-delayed __d_free() race + - [sparc64] Reduce TLB flushes during hugepte changes + - [sparc64] Take ctx_alloc_lock properly in hugetlb_setup(). + - [sparc64] Harden signal return frame checks. + - [sparc64] Fix return from trap window fill crashes. + - drm/core: Do not preserve framebuffer on rmfb, v4. + - [x86] Revert "drm/i915: Exit cherryview_irq_handler() after one pass" + - gpio: make sure gpiod_to_irq() returns negative on NULL desc + * [powerpc*] tm: Always reclaim in start_thread() for exec() class syscalls + (CVE-2016-5828) + + [ Salvatore Bonaccorso ] + * HID: hiddev: validate num_values for HIDIOCGUSAGES, HIDIOCSUSAGES commands + (CVE-2016-5829) + + -- Ben Hutchings Mon, 04 Jul 2016 20:10:24 +0200 + +linux (4.6.2-2) unstable; urgency=medium + + * [mips*] Fix ABI changes in 4.6.2 + * [rt] Update to 4.6.2-rt5: + - mm/memcontrol: mem_cgroup_migrate() - replace another local_irq_disable() + w. local_lock_irq() + * KEYS: potential uninitialized variable (CVE-2016-4470) + * percpu: fix synchronization between chunk->map_extend_work and chunk + destruction (CVE-2016-4794) + * percpu: fix synchronization between synchronous map extension and + chunk destruction (CVE-2016-4794) + * netfilter: x_tables: Fix parsing of IPT_SO_SET_REPLACE blobs + (CVE-2016-4997, CVE-2016-4998) + - don't move to non-existent next rule + - validate targets of jumps + - add and use xt_check_entry_offsets + - kill check_entry helper + - assert minimum target size + - add compat version of xt_check_entry_offsets + - check standard target size too + - check for bogus target offset + - validate all offsets and sizes in a rule + - don't reject valid target size on some + - arp_tables: simplify translate_compat_table args + - ip_tables: simplify translate_compat_table args + - ip6_tables: simplify translate_compat_table args + - xt_compat_match_from_user doesn't need a retval + - do compat validation via translate_table + - introduce and use xt_copy_counters_from_user + * Ignore ABI change in x_tables + * nfsd: check permissions when setting ACLs (CVE-2016-1237) + + -- Ben Hutchings Sat, 25 Jun 2016 11:22:27 +0200 + +linux (4.6.2-1) unstable; urgency=medium + + * Team upload. + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.6.2 + - f2fs: fix deadlock when flush inline data + - [mips*] math-emu: Fix jalr emulation when rd == $0 + - [mips*] Avoid using unwind_stack() with usermode + - [mips*] Fix siginfo.h to use strict posix types + - [mips*] Fix uapi include in exported asm/siginfo.h + - [mips*] Fix watchpoint restoration + - [mips*] Flush highmem pages in __flush_dcache_page + - [mips*] Handle highmem pages in __update_cache + - [mips*] Sync icache & dcache in set_pte_at + - [mips*] Reserve nosave data for hibernation + - [mips*el/loongson-3] Reserve 32MB for RS780E integrated GPU + - [mips*] Use copy_s.fmt rather than copy_u.fmt + - [mips*] Prevent "restoration" of MSA context in non-MSA kernels + - [mips*] ptrace: Fix FP context restoration FCSR regression + - [mips*] ptrace: Prevent writes to read-only FCSR bits + - [mips*] lib: Mark intrinsics notrace + - [mips*] VDSO: Build with `-fno-strict-aliasing' + - affs: fix remount failure when there are no options changed + - ASoC: ak4642: Enable cache usage to fix crashes on resume + - Input: uinput - handle compat ioctl for UI_SET_PHYS + - Input: xpad - move pending clear to the correct location + - Input: xpad - prevent spurious input from wired Xbox 360 controllers + - [armhf] sun4i: dt: Enable dram gate 5 (tve0 clock) for simplefb TV output + - [armhf] sun7i: dt: Enable dram gate 5 (tve0 clock) for simplefb TV output + - [armhf] mvebu: fix GPIO config on the Linksys boards + - [armhf] dts: exynos: Add interrupt line to MAX8997 PMIC on + exynos4210-trats + - ath9k: Fix LED polarity for some Mini PCI AR9220 MB92 cards. + - ath10k: fix firmware assert in monitor mode + - ath10k: fix rx_channel during hw reconfigure + - ath10k: fix kernel panic, move arvifs list head init before htt init + - ath5k: Change led pin configuration for compaq c700 laptop + - [armhf] hwrng: exynos - Fix unbalanced PM runtime put on timeout + error path + - rtlwifi: Fix logic error in enter/exit power-save mode + - rtlwifi: pci: use dev_kfree_skb_irq instead of kfree_skb in + rtl_pci_reset_trx_ring + - Revert "lpfc: Delete unnecessary checks before the function call + mempool_destroy" + - aacraid: Start adapter after updating number of MSIX vectors + - aacraid: Relinquish CPU during timeout wait + - aacraid: Fix for aac_command_thread hang + - aacraid: Fix for KDUMP driver hang + - regulator: Try to resolve regulators supplies on registration + - hwmon: (ads7828) Enable internal reference + - [x86] mfd: intel_quark_i2c_gpio: Remove clock tree on error path + - [x86] mfd: intel-lpss: Save register context on suspend + - [x86] mfd: intel_soc_pmic_core: Terminate panel control GPIO lookup + table correctly + - PM / Runtime: Fix error path in pm_runtime_force_resume() + - cpuidle: Indicate when a device has been unregistered + - cpuidle: Fix cpuidle_state_is_coupled() argument in cpuidle_enter() + - [armhf] clk: bcm2835: Fix PLL poweron + - [armhf] clk: bcm2835: pll_off should only update CM_PLL_ANARST + - [armhf] clk: bcm2835: divider value has to be 1 or more + - [armhf] clk: bcm2835: correctly enable fractional clock support + - [armhf] pinctrl: exynos5440: Use off-stack memory for pinctrl_gpio_range + - PCI: Disable all BAR sizing for devices with non-compliant BARs + - media: v4l2-compat-ioctl32: fix missing reserved field copy in + put_v4l2_create32 + - PKCS#7: fix missing break on OID_sha224 case + - mm: use phys_addr_t for reserve_bootmem_region() arguments + - mm/compaction.c: fix zoneindex in kcompactd() + - wait/ptrace: assume __WALL if the child is traced + - batman-adv: Fix double neigh_node_put in batadv_v_ogm_route_update + - [powerpc*] book3s64: Fix branching to OOL handlers in relocatable kernel + - [powerpc*] eeh: Don't report error in eeh_pe_reset_and_recover() + - [powerpc*] Revert "powerpc/eeh: Fix crash in eeh_add_device_early() + on Cell" + - [powerpc*] eeh: Restore initial state in eeh_pe_reset_and_recover() + - xen/events: Don't move disabled irqs + - xen: use same main loop for counting and remapping pages + - sunrpc: fix stripping of padded MIC tokens + - [x86] drm/gma500: Fix possible out of bounds read + - [x86] drm/vmwgfx: Kill some lockdep warnings + - [x86] drm/amdgpu: use drm_mode_vrefresh() rather than mode->vrefresh + - [x86] drm/amdgpu: Fix hdmi deep color support. + - [x86] drm/i915/fbdev: Fix num_connector references in + intel_fb_initial_config() + - drm/fb_helper: Fix references to dev->mode_config.num_connector + - [x86] drm/i915: Discard previous atomic state on resume if connectors + change + - drm/atomic: Verify connector->funcs != NULL when clearing states + - Bluetooth: 6lowpan: Fix memory corruption of ipv6 destination address + - [x86] drm/i915/psr: Try to program link training times correctly + - [x86] drm/i915: Respect DP++ adaptor TMDS clock limit + - [x86] drm/i915: Enable/disable TMDS output buffers in DP++ adaptor + as needed + - [x86] drm/i915: Don't leave old junk in ilk active watermarks on readout + - [x86] drm/i915: Fix watermarks for VLV/CHV + - [armhf] drm/imx: Match imx-ipuv3-crtc components using device node in + platform data + - [x86] drm/i915: Pass the correct crtc state to .update_plane() + - ext4: fix data exposure after a crash + - ext4: fix hang when processing corrupted orphaned inode list + - ext4: clean up error handling when orphan list is corrupted + - ext4: fix check of dqget() return value in ext4_ioctl_setproject() + - ext4: fix oops on corrupted filesystem + - ext4: address UBSAN warning in mb_find_order_for_block() + - nfs: avoid race that crashes nfs_init_commit + - PM / sleep: Handle failures in device_suspend_late() consistently + - mm: thp: avoid false positive VM_BUG_ON_PAGE in page_move_anon_rmap() + - xfs: disallow rw remount on fs with unknown ro-compat features + - xfs: Don't wrap growfs AGFL indexes + - xfs: remove xfs_fs_evict_inode() + - xfs: xfs_iflush_cluster fails to abort on error + - xfs: fix inode validity check in xfs_iflush_cluster + - xfs: skip stale inodes in xfs_iflush_cluster + - [armhf] drm: msm: remove unused variable + - IB/hfi1: Fix hard lockup due to not using save/restore spin lock + - regulator: Fix deadlock during regulator registration + + [ Ben Hutchings ] + * [armel,armhf,sh4] linux-image: Do not suggest fdutils + * liblockdep: Reduce MAX_LOCK_DEPTH to avoid overflowing lock_chain::depth + * liblockdep: Fix 'unused value' warnings + * liblockdep: Fix 'set but not used' warnings + * liblockdep: Fix 'defined but not used' warning for init_utsname() + + [ Salvatore Bonaccorso ] + * Stack overflow via ecryptfs and /proc/$pid/environ (CVE-2016-1583) + - proc: prevent stacking filesystems on top + - ecryptfs: forbid opening files without mmap handler + - sched: panic on corrupted stack end + * tipc: fix an infoleak in tipc_nl_compat_link_dump (CVE-2016-5243) + * rds: fix an infoleak in rds_inc_info_copy (CVE-2016-5244) + + -- Salvatore Bonaccorso Wed, 15 Jun 2016 21:32:54 +0200 + +linux (4.6.1-1) unstable; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.6.1 + + [ Ben Hutchings ] + * [mips*r6*] Disable these architectures until dak recognises them as valid + in the control file + * linux-image: Rewrite maintainer scripts in shell, using the new + linux-update-symlinks and linux-check-removal commands + (Closes: #692333, #815850). Drop support for minimal_swap, no_symlinks, + use_hard_links and *_hook parameters in /etc/kernel-img.conf + (Closes: #730073). Remove now-redundant debconf templates. + * linux-image: postrm: Update default symlinks before running hook scripts + * linux-image: Make a newly installed kernel the default if the package + was previously removed + * mtd: Disable slram and phram when securelevel is enabled + * debian/patches/features/all/rt/genpatch.py: Use Python 3 + * debian/patches/features/all/rt/genpatch.py: Fix mapping of -rt version to + upstream version + * debian/patches/features/all/rt/genpatch.py: Use upstream tarball directly + * debian/patches/features/all/rt/genpatch.py: Use stable URLs in patch Origin + headers + * [rt] Update to 4.6.1-rt3: + - trace: correct off by one while recording the trace-event + - sched,preempt: Fix preempt_count manipulations + - kernel/rtmutex: only warn once on a try lock from bad + - locallock: add local_lock_on() + - kernel/printk: Don't try to print from IRQ/NMI region + - mm: perform lru_add_drain_all() remotely + * debian/control: Drop obsolete versioned Depends and Breaks + * linux-libc-dev: Drop obsolete Replaces/Conflicts with linux-kernel-headers + * debian/control: Update policy version to 3.9.8; no changes required + * Disable MODULE_SIG for architectures not supported by linux-signed + * Set ABI to 1 + + -- Ben Hutchings Mon, 06 Jun 2016 18:13:57 +0100 + +linux (4.6-1~exp2) experimental; urgency=medium + + [ Ben Hutchings ] + * [tilegx] Build a linux-libc-dev package (Closes: #824524; thanks to + Helmut Grohne) + * [tilegx] linux-libc-dev: Install headers in arch-specific + directory (Closes: #823632; thanks to Helmut Grohne) + * [rt] Update to 4.6-rc7-rt1 and re-enable + - Override SYSTEM_TRUSTED_KEYS to work from the source_rt directory + * Fold debian/config/README into debian/README.source + * debian/README.source: Rewrite and expand explanation of kernel config file + construction + * aufs: Update support patches to aufs4.6-20160523 + - mmap: Fix use-after-free in remap_file_pages(2) + * [mips*] Change NFS and various storage and network drivers from built-in + to modules + * 8139too: Use same configuration on all architectures: enable + 8139TOO_TUNE_TWISTER, 8139TOO_8129 and disable 8139TOO_PIO + * [mipsn32{,r6}{,el}] Build linux-libc-dev and tools packages + * [mips{,64}r6{,el}] Add kernel flavours for the Malta platform; build + linux-libc-dev and tools packages (Closes: #825024; thanks to YunQiang Su) + * [mips*/*-malta] udeb: Add ata-modules package + * linux-image: Stop setting $STEM in environment for maintainer script hooks + * linux-image: Add workaround for bug #817083 in debconf + * linux-image: prerm: Allow removal of running kernel if we can't ask debconf + questions (Closes: #825423) + * linux-image: prerm: Ignore version of running kernel inside a container or + chroot + * [s390] udeb: Drop all packages, since s390 no longer has its own kernel + * udeb: Drop packages for modules that will later be signed; these packages + will be taken over by src:linux-signed + + [ Aurelien Jarno ] + * [mips64{,el}] Set CPU to MIPS64 R2. + * [mips] Set CPU to MIPS32/64 R2. + + [ Martin Michlmayr ] + * [armhf] Enable more NVIDIA Tegra options (TEGRA_IOMMU_SMMU, + ARM_TEGRA_DEVFREQ, SND_SOC_TEGRA_*). + + -- Ben Hutchings Mon, 30 May 2016 04:44:45 +0100 + +linux (4.6-1~exp1) experimental; urgency=medium + + * New upstream release: http://kernelnewbies.org/Linux_4.6 + + [ Ben Hutchings ] + * Re-apply "[media] videobuf2-v4l2: Verify planes array in buffer dequeueing", + reverted upstream in 4.6 + * [arm64] Enable RANDOMIZE_BASE (kASLR) + * [armhf] dsa: Enable NET_DSA_MV88E6123 as module, replacing + NET_DSA_MV88E6123_61_65 + + -- Ben Hutchings Tue, 17 May 2016 02:39:47 +0100 + +linux (4.6~rc7-1~exp1) experimental; urgency=medium + + * New upstream release candidate + + [ Ben Hutchings ] + * [hppa] Enable MLONGCALLS (fixes FTBFS) + * [alpha] fs: Disable BINFMT_EM86 (obsoleted by binfmt_misc; fixes FTBFS) + + [ Aurelien Jarno ] + * [mips*/octeon] Enable EDAC, EDAC_MM_EDAC, EDAC_OCTEON_L2C, + EDAC_OCTEON_LMC, EDAC_OCTEON_PC, EDAC_OCTEON_PCI. + + -- Ben Hutchings Mon, 09 May 2016 03:39:32 +0100 + +linux (4.6~rc5-1~exp1) experimental; urgency=medium + + * New upstream release candidate + + [ Ben Hutchings ] + * [armhf] Enable EFI, RTC_DRV_EFI + * Update config for renaming/removal/replacement/merging/splitting of various + symbols + * *lockdep*,linux-perf: Remove '-rcN' from installation paths + + [ Martin Michlmayr ] + * [armel, armhf] Use new Marvell CESA driver. + * [arm64] Enable support for NVIDIA Tegra. + * [arm64] udeb: Create fb-modules. + + -- Ben Hutchings Fri, 29 Apr 2016 10:40:36 +0200 + +linux (4.6~rc3-1~exp1) experimental; urgency=medium + + * New upstream release candidate + + [ Ben Hutchings ] + * aufs: Update support patches to aufs4.x-rcN-20160328 + + -- Ben Hutchings Thu, 14 Apr 2016 23:55:15 +0100 + +linux (4.5.5-1) unstable; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.5.5 + - decnet: Do not build routes to devices without decnet private data. + - route: do not cache fib route info on local routes with oif + - packet: fix heap info leak in PACKET_DIAG_MCLIST sock_diag interface + - net: sched: do not requeue a NULL skb + - bpf/verifier: reject invalid LD_ABS | BPF_DW instruction + - cdc_mbim: apply "NDP to end" quirk to all Huawei devices + - soreuseport: fix ordering for mixed v4/v6 sockets + - net: use skb_postpush_rcsum instead of own implementations + - vlan: pull on __vlan_insert_tag error path and fix csum correction + - openvswitch: Orphan skbs before IPv6 defrag + - openvswitch: use flow protocol when recalculating ipv6 checksums + - net/mlx5_core: Fix soft lockup in steering error flow + - net/mlx5e: Device's mtu field is u16 and not int + - net/mlx5e: Fix minimum MTU + - net/mlx5e: Use vport MTU rather than physical port MTU + - ipv4/fib: don't warn when primary address is missing if in_dev is dead + - net/mlx4_en: fix spurious timestamping callbacks + - net: Implement net_dbg_ratelimited() for CONFIG_DYNAMIC_DEBUG case + - gre: do not pull header in ICMP error processing + - net_sched: introduce qdisc_replace() helper + - net_sched: update hierarchical backlog too + - sch_htb: update backlog as well + - sch_dsmark: update backlog as well + - netem: Segment GSO packets on enqueue + - ipv6/ila: fix nlsize calculation for lwtunnel + - net/mlx4_en: Fix endianness bug in IPV6 csum calculation + - [x86] VSOCK: do not disconnect socket when peer has shutdown SEND only + - net: bridge: fix old ioctl unlocked net device walk + - bridge: fix igmp / mld query parsing + - net: fix a kernel infoleak in x25 module (CVE-2016-4580) + - net: thunderx: avoid exposing kernel stack + - tcp: refresh skb timestamp at retransmit time + - net/route: enforce hoplimit max value + - ocfs2: revert using ocfs2_acl_chmod to avoid inode cluster lock hang + - ocfs2: fix posix_acl_create deadlock + - zsmalloc: fix zs_can_compact() integer overflow + - mm: thp: calculate the mapcount correctly for THP pages during WP faults + - [x86] crypto: qat - fix invalid pf2vf_resp_wq logic + - crypto: testmgr - Use kmalloc memory for RSA input + - ALSA: usb-audio: Quirk for yet another Phoenix Audio devices (v2) + - ALSA: usb-audio: Yet another Phoneix Audio device quirk + - ALSA: hda - Fix subwoofer pin on ASUS N751 and N551 + - ALSA: hda - Fix white noise on Asus UX501VW headset + - ALSA: hda - Fix broken reconfig + - [armhf] spi: spi-ti-qspi: Fix FLEN and WLEN settings if bits_per_word is + overridden + - [armhf] spi: spi-ti-qspi: Handle truncated frames properly + - perf diff: Fix duplicated output column + - perf/core: Disable the event on a truncated AUX record + - vfs: rename: check backing inode being equal + - workqueue: fix rebind bound workers warning + - [armhf] regulator: s2mps11: Fix invalid selector mask and voltages + for buck9 + - [armhf] regulator: axp20x: Fix axp22x ldo_io voltage ranges + - atomic_open(): fix the handling of create_error + - qla1280: Don't allocate 512kb of host tags + - tools lib traceevent: Do not reassign parg after collapse_tree() + - [x86] drm/i915: Update CDCLK_FREQ register on BDW after changing cdclk + frequency + - drm/radeon: fix PLL sharing on DCE6.1 (v2) + - [x86] drm/i915: Bail out of pipe config compute loop on LPT + - [x86] Revert "drm/i915: start adding dp mst audio" + - [x86] drm/i915/bdw: Add missing delay during L3 SQC credit programming + - drm/radeon: fix DP link training issue with second 4K monitor + - drm/radeon: fix DP mode validation + - [x86] drm/amdgpu: fix DP mode validation + - btrfs: reada: Fix in-segment calculation for reada + - Btrfs: fix truncate_space_check + - btrfs: remove error message from search ioctl for nonexistent tree + - btrfs: change max_inline default to 2048 + - Btrfs: fix unreplayable log after snapshot delete + parent dir fsync + - Btrfs: fix file loss on log replay after renaming a file and fsync + - Btrfs: fix extent_same allowing destination offset beyond i_size + - Btrfs: fix deadlock between direct IO reads and buffered writes + - Btrfs: fix race when checking if we can skip fsync'ing an inode + - Btrfs: do not collect ordered extents when logging that inode exists + - btrfs: csum_tree_block: return proper errno value + - btrfs: do not write corrupted metadata blocks to disk + - Btrfs: fix invalid reference in replace_path + - btrfs: handle non-fatal errors in btrfs_qgroup_inherit() + - btrfs: fallback to vmalloc in btrfs_compare_tree + - Btrfs: don't use src fd for printk + - btrfs: Reset IO error counters before start of device replacing + + [ Salvatore Bonaccorso ] + * tipc: check nl sock before parsing nested attributes (CVE-2016-4951) + + [ Ben Hutchings ] + * aufs: Update support patches to aufs4.5-20160523 + - mmap: Fix use-after-free in remap_file_pages(2) + * Revert "stmmac: Fix 'eth0: No PHY found' regression" (Closes: #823493) + * [x86] kvm:vmx: more complete state update on APICv on/off (CVE-2016-4440) + * USB: usbfs: fix potential infoleak in devio (CVE-2016-4482) + * ALSA: timer: Fix leak in SNDRV_TIMER_IOCTL_PARAMS (CVE-2016-4569) + * ALSA: timer: Fix leak in events via snd_timer_user_ccallback or + snd_timer_user_tinterrupt (CVE-2016-4578) + * dwc3-exynos: Fix deferred probing storm (Closes: #823552; thanks to + Steinar H. Gunderson) + * Re-apply "[media] videobuf2-v4l2: Verify planes array in buffer dequeueing", + reverted upstream in 4.5.5 + + [ Roger Shimizu ] + * [armhf] Enable SENSORS_PWM_FAN / PWM_SAMSUNG as module, as recommended by + Steinar H. Gunderson. (Closes: #824941) + * [armhf] For Odroid-U3 (Exynos4) support, enable ARCH_EXYNOS4 / MFD_MAX77686 + / RTC_DRV_MAX77686 as built-in, and COMMON_CLK_MAX77686 + / REGULATOR_MAX77686 / MMC_SDHCI_S3C as module. Thanks to + Vagrant Cascadian. (Closes: #825139) + + -- Ben Hutchings Sun, 29 May 2016 22:21:11 +0100 + +linux (4.5.4-1) unstable; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.5.4 + - RDMA/iw_cxgb4: Fix bar2 virt addr calculation for T4 chips + - net/mlx5_core: Fix caching ATOMIC endian mode capability + - ipvs: handle ip_vs_fill_iph_skb_off failure + - ipvs: correct initial offset of Call-ID header search in SIP persistence + engine + - ipvs: drop first packet to redirect conntrack + - rtlwifi: Fix size of wireless mode variable + - [x86] mfd: intel-lpss: Remove clock tree on error path + - nbd: ratelimit error msgs after socket close + - null_blk: add lightnvm null_blk device to the nullb_list + - [arm64] ata: ahci_xgene: dereferencing uninitialized pointer in probe + - [armhf] wlcore: fix error handling in wlcore_event_fw_logger + - ath10k: fix pktlog in QCA99X0 + - mwifiex: fix corner case association failure + - clk-divider: make sure read-only dividers do not write to their register + - [armhf] clk: rockchip: fix wrong mmc phase shift for rk3228 + - [armhf] clk: rockchip: free memory in error cases when registering clock + branches + - [armel/versatile] clk: versatile: sp810: support reentrance + - [armhf] clk: sunxi: Fix sun8i-a23-apb0-clk divider flags + - [arm64] clk: xgene: Add missing parenthesis when clearing divider value + - [armhf] clk: bcm2835: fix check of error code returned by + devm_ioremap_resource() + - [armhf] pwm: omap-dmtimer: Fix inaccurate period and duty cycle + calculations + - [armhf] pwm: omap-dmtimer: Add sanity checking for load and match values + - [armhf] pwm: omap-dmtimer: Round load and match values rather than + truncate + - lpfc: fix misleading indentation + - gpiolib-acpi: Duplicate con_id string when adding it to the crs lookup + list + - ath9k: ar5008_hw_cmn_spur_mitigate: add missing mask_m & mask_p + initialisation + - mac80211: fix statistics leak if dev_alloc_name() fails + - tracing: Don't display trigger file for events that can't be enabled + - MD: make bio mergeable + - Minimal fix-up of bad hashing behavior of hash_64() + - mm: memcontrol: let v2 cgroups follow changes in system swappiness + - [armhf] mm, cma: prevent nr_isolated_* counters from going negative + - mm/zswap: provide unique zpool name + - propogate_mnt: Handle the first propogated copy being a slave + (CVE-2016-4581) + - modpost: fix module autoloading for OF devices with generic compatible + property + - [armhf] EXYNOS: Properly skip unitialized parent clock in power domain on + - [armhf] SoCFPGA: Fix secondary CPU startup in thumb2 kernel + - xen: Fix page <-> pfn conversion on 32 bit systems + - xen/balloon: Fix crash when ballooning on x86 32 bit PAE + - xen/evtchn: fix ring resize when binding new events + - HID: wacom: Add support for DTK-1651 + - proc: prevent accessing /proc//environ until it's ready + - mm: update min_free_kbytes from khugepaged after core initialization + - batman-adv: fix DAT candidate selection (must use vid) + - batman-adv: Check skb size before using encapsulated ETH+VLAN header + - batman-adv: Fix broadcast/ogm queue limit on a removed interface + - batman-adv: Reduce refcnt of removed router when updating route + - [x86] libnvdimm, pfn: fix memmap reservation sizing + - writeback: Fix performance regression in wb_over_bg_thresh() + - [x86] tsc: Read all ratio bits from MSR_PLATFORM_INFO + - [arm64] cpuidle: Pass on arm_cpuidle_suspend()'s return value + - [x86] sysfb_efi: Fix valid BAR address range check + - [arm64] dts: apq8064: add ahci ports-implemented mask + - ACPICA: Dispatcher: Update thread ID for recursive method calls + - [powerpc*] Fix bad inline asm constraint in create_zero_mask() + - libahci: save port map for forced port map + - ata: ahci-platform: Add ports-implemented DT bindings. + - USB: serial: cp210x: add ID for Link ECU + - USB: serial: cp210x: add Straizona Focusers device ids + - Revert "USB / PM: Allow USB devices to remain runtime-suspended when + sleeping" + - nvmem: mxs-ocotp: fix buffer overflow in read + - [x86] Drivers: hv: vmbus: Fix signaling logic in + hv_need_to_signal_on_read() + - [armhf] gpu: ipu-v3: Fix imx-ipuv3-crtc module autoloading + - [x86] drm/amdgpu: make sure vertical front porch is at least 1 + - [x86] drm/amdgpu: set metadata pointer to NULL after freeing. + - [x86] iio: ak8975: Fix NULL pointer exception on early interrupt + - [x86] iio: ak8975: fix maybe-uninitialized warning + - drm/radeon: make sure vertical front porch is at least 1 + - [x86] drm/i915: Avoid stalling on pending flips for legacy cursor updates + - [x86] drm/i915/ddi: Fix eDP VDD handling during booting and suspend/resume + - [x86] drm/i915: Fix system resume if PCI device remained enabled + - [x86] drm/i915: Fix eDP low vswing for Broadwell + - [x86] drm/i915: Make RPS EI/thresholds multiple of 25 on SNB-BDW + - [x86] drm/i915: Fake HDMI live status + - [x86] ACPI / processor: Request native thermal interrupt handling via _OSC + + [ Aurelien Jarno ] + * [mips*] Fix PR_SET_FPMODE issues with multi-threaded programs. + * [i386] Stop recommending libc6-i686. + * [arm,x86] Fix memory corruption in KVM with THP enabled. (Closes: #821225) + * [mips*/octeon] Add support for byte swapped initramfs to handle u-boot and + kernel running with a different endianness. + * [mipsel/octeon] Activate flavour on mipsel. + + [ Roger Shimizu ] + * netfilter: Enable NF_DUP_NETDEV / NFT_DUP_NETDEV / NFT_FWD_NETDEV + as module, as recommended by Arturo Borrero Gonzalez. (Closes: #824162) + + [ Salvatore Bonaccorso ] + * KEYS: Fix ASN.1 indefinite length object parsing (CVE-2016-0758) + * net: fix infoleak in llc (CVE-2016-4485) + * KVM: MTRR: remove MSR 0x2f8 (CVE-2016-3713) + + [ Ben Hutchings ] + * gencontrol.py: Fix implementation of [packages]tools config option, + thanks to Yves-Alexis Perez + * debian/control: Exclude tools from 'stage1' build profile + * debian/control,debian/rules: Support a 'pkg.linux.notools' build profile + which does not build tools packages + * debian/control,debian/rules,debian/rules.d: Support the 'nodoc' build + profile + * debian/control: Remove alternate build-dependency on binutils-dev that was + used for backports to wheezy + * net: fix infoleak in rtnetlink (CVE-2016-4486) + * nf_conntrack: avoid kernel pointer value leak in slab name + * vfs: do_splice_to(): cap the size before passing to ->splice_read() + * crypto: hash - Fix page length clamping in hash walk + * isofs: get_rock_ridge_filename(): handle malformed NM entries + * uapi glibc compat: fix compile errors when glibc net/if.h included + before linux/if.h (Closes: #822393) + * videobuf2-core: Fix crash after fixing CVE-2016-4568 + * [armhf] Enable more Exynos drivers (Closes: #824435): + - drm: Enable DRM_EXYNOS as module, DRM_EXYNOS_MIXER, DRM_EXYNOS_FIMD, + DRM_EXYNOS_DSI, DRM_EXYNOS_DP, DRM_EXYNOS_HDMI + - phy: Enable PHY_EXYNOS_MIPI_VIDEO, PHY_EXYNOS_DP_VIDEO as modules + - cpuidle: Enable ARM_EXYNOS_CPUIDLE + - iio: Enable EXYNOS_ADC as module + + -- Ben Hutchings Mon, 16 May 2016 19:17:22 +0100 + +linux (4.5.3-2) unstable; urgency=medium + + * [s390x] PCI: Ignore zpci ABI changes; these functions are not used by + modules + * [powerpc*] Fix sstep compile on powerpcspe (Closes: #823526; thanks to + Lennart Sorensen) + + -- Ben Hutchings Sun, 08 May 2016 15:03:45 +0100 + +linux (4.5.3-1) unstable; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.5.3 + - mmc: block: Use the mmc host device index as the mmcblk device index + - block: partition: initialize percpuref before sending out KOBJ_ADD + - block: loop: fix filesystem corruption in case of aio/dio + - [arm64] efi: Don't apply MEMBLOCK_NOMAP to UEFI memory map mapping + - [x86] mce: Avoid using object after free in genpool + - [x86] kvm: do not leak guest xcr0 into host interrupt handlers + - [arm*] KVM: Handle forward time correction gracefully + - [armhf] mvebu: Correct unit address for linksys + - [armhf] OMAP2: Fix up interconnect barrier initialization for DRA7 + - [armhf] OMAP2+: hwmod: Fix updating of sysconfig register + - assoc_array: don't call compare_object() on a node + - [x86] usb: xhci: applying XHCI_PME_STUCK_QUIRK to Intel BXT B0 host + - xhci: resume USB 3 roothub first + - usb: host: xhci: add a new quirk XHCI_NO_64BIT_SUPPORT + - usb: xhci: fix wild pointers in xhci_mem_cleanup + - xhci: fix 10 second timeout on removal of PCI hotpluggable xhci + controllers + - usb: host: xhci-plat: Make enum xhci_plat_type start at a non zero value + - usb: hcd: out of bounds access in for_each_companion + - usb: gadget: f_fs: Fix use-after-free + - dm cache metadata: fix READ_LOCK macros and cleanup WRITE_LOCK macros + - dm cache metadata: fix cmd_read_lock() acquiring write lock + - lib: lz4: fixed zram with lz4 on big endian machines + - debugfs: Make automount point inodes permanently empty + - dmaengine: dw: fix master selection + - [armhf] dmaengine: omap-dma: Fix polled channel completion detection + and handling + - dmaengine: edma: Remove dynamic TPTC power management feature + - mtd: nand: pxa3xx_nand: fix dmaengine initialization + - sched/cgroup: Fix/cleanup cgroup teardown/init + - [x86] EDAC, sb_edac.c: Repair damage introduced when "fixing" + channel address + - [x86] EDAC, sb_edac.c: Take account of channel hashing when needed + - ALSA: hda - Don't trust the reported actual power state + - [x86] ALSA: hda/realtek - Add ALC3234 headset mode for Optiplex 9020m + - ALSA: hda - Keep powering up ADCs on Cirrus codecs + - [x86] ALSA: hda - add PCI ID for Intel Broxton-T + - ALSA: pcxhr: Fix missing mutex unlock + - [x86] ALSA: hda - Add dock support for ThinkPad X260 + - [x86] ALSA: hda - Update BCLK also at hotplug for i915 HSW/BDW + - asm-generic/futex: Re-enable preemption in futex_atomic_cmpxchg_inatomic() + - futex: Handle unlock_pi race gracefully + - futex: Acknowledge a new waiter in counter before plist + - drm/nouveau/core: use vzalloc for allocating ramht + - drm/qxl: fix cursor position with non-zero hotspot + - [x86] drm/i915: Fix race condition in intel_dp_destroy_mst_connector() + - Revert "drm/radeon: disable runtime pm on PX laptops without dGPU + power control" + - [armhf] Revert "PCI: imx6: Add support for active-low reset GPIO" + - usbvision: revert commit 588afcc1 + - [x86] Revert "drm/amdgpu: disable runtime pm on PX laptops without dGPU + power control" + - cpufreq: intel_pstate: Fix processing for turbo activation ratio + - [s390x] pci: add extra padding to function measurement block + - iwlwifi: pcie: lower the debug level for RSA semaphore access + - iwlwifi: mvm: fix memory leak in paging + - crypto: rsa-pkcs1pad - fix dst len + - [x86] crypto: ccp - Prevent information leakage on export + - crypto: sha1-mb - use corrcet pointer while completing jobs + - [powerpc*] scan_features() updates incorrect bits for REAL_LE + - [powerpc*] Update cpu_user_features2 in scan_features() + - [powerpc*] Update TM user feature bits in scan_features() + - nl80211: check netlink protocol in socket release notification + - netlink: don't send NETLINK_URELEASE for unbound sockets + - pinctrl: single: Fix pcs_parse_bits_in_pinctrl_entry to use __ffs than ffs + - [x86] iommu/amd: Fix checking of pci dma aliases + - iommu/dma: Restore scatterlist offsets correctly + - [x86] drm/amdgpu: when suspending, if uvd/vce was running. need to cancel + delay work. + - [x86] drm/amdgpu: use defines for CRTCs and AMFT blocks + - [x86] drm/amdgpu: bump the afmt limit for CZ, ST, Polaris + - [x86] amdgpu/uvd: add uvd fw version for amdgpu + - [x86] drm/amdgpu: fix regression on CIK (v2) + - drm/radeon: add a quirk for a XFX R9 270X + - drm/radeon: fix initial connector audio value + - drm/radeon: forbid mapping of userptr bo through radeon device file + - drm/radeon: fix vertical bars appear on monitor (v2) + - [mips*el/loongson-3] drm: Loongson-3 doesn't fully support wc memory + - drm/nouveau/gr/gf100: select a stream master to fixup tfb offset queries + - drm/dp/mst: Validate port in drm_dp_payload_send_msg() + - drm/dp/mst: Restore primary hub guid on resume + - drm/dp/mst: Get validated port ref in drm_dp_update_payload_part1() + - [x86] drm/i915: Pass the correct encoder to intel_ddi_clk_select() + with MST + - [x86] drm/i915: Cleanup phys status page too + - [x86] drm/i915: Use the active wm config for merging on ILK-BDW + - [x86] drm/i915: Start WM computation from scratch on ILK-BDW + - [x86] drm/i915: skl_update_scaler() wants a rotation bitmask instead of + bit number + - [x86] drm/amdkfd: uninitialized variable in + dbgdev_wave_control_set_registers() + - [x86] drm/i915/skl: Fix DMC load on Skylake J0 and K0 + - [x86] drm/i915/skl: Fix spurious gpu hang with gt3/gt4 revs + - [x86] drm/i915: Fixup the free space logic in ring_prepare + - [x86] drm/i915: Force ringbuffers to not be at offset 0 + - [x86] drm/i915: Use fw_domains_put_with_fifo() on HSW + - drm/ttm: fix kref count mess in ttm_bo_move_to_lru_tail + - [x86] perf intel-pt: Fix segfault tracing transactions + - [armhf] i2c: exynos5: Fix possible ABBA deadlock by keeping I2C + clock prepared + - ACPICA / Interpreter: Fix a regression triggered because of wrong Linux + ECDT support + - [x86] mmc: sdhci-acpi: Reduce Baytrail eMMC/SD/SDIO hangs + - [x86] toshiba_acpi: Fix regression caused by hotkey enabling value + - [x86] EDAC: i7core, sb_edac: Don't return NOTIFY_BAD from mce_decoder + callback + - [x86] ASoC: ssm4567: Reset device before regcache_sync() + - [x86] ASoC: rt5640: Correct the digital interface data select + - vb2-memops: Fix over allocation of frame vectors + - media: vb2: Fix regression on poll() for RW mode + - videobuf2-core: Check user space planes array in dqbuf + - videobuf2-v4l2: Verify planes array in buffer dequeueing (CVE-2016-4568) + - v4l2-dv-timings.h: fix polarity for 4k formats + - IB/core: Fix oops in ib_cache_gid_set_default_gid + - mwifiex: fix IBSS data path issue. + - IB/mlx5: Expose correct max_sge_rd limit + - IB/security: Restrict use of the write() interface (CVE-2016-4565) + - efi: Fix out-of-bounds read in variable_matches() + - efi: Expose non-blocking set_variable() wrapper to efivars + - [x86] apic: Handle zero vector gracefully in clear_vector_irq() + - workqueue: fix ghost PENDING flag while doing MQ IO + - slub: clean up code for kmem cgroup support to kmem_cache_free_bulk + - cgroup, cpuset: replace cpuset_post_attach_flush() with + cgroup_subsys->post_attach callback + - memcg: relocate charge moving from ->attach to ->post_attach + - mm: exclude HugeTLB pages from THP page_mapped() logic + - mm/huge_memory: replace VM_NO_THP VM_BUG_ON with actual VMA check + - numa: fix /proc//numa_maps for THP + - mm: vmscan: reclaim highmem zone if buffer_heads is over limit + - mm/hwpoison: fix wrong num_poisoned_pages accounting + - locking/mcs: Fix mcs_spin_lock() ordering + - [armhf] spi/rockchip: Make sure spi clk is on in rockchip_spi_set_cs + - [armhf] irqchip/sunxi-nmi: Fix error check of of_io_request_and_map() + - [armhf] regulator: s5m8767: fix get_register() error handling + - scsi_dh: force modular build if SCSI is a module + - lib/mpi: Endianness fix + - [x86] misc: mic/scif: fix wrap around tests + - PM / OPP: Initialize u_volt_min/max to a valid value + - PM / Domains: Fix removal of a subdomain + - drivers/misc/ad525x_dpot: AD5274 fix RDAC read back errors + - perf evlist: Reference count the cpu and thread maps at set_maps() + - perf tools: Fix perf script python database export crash + - [x86] mm/kmmio: Fix mmiotrace for hugepages + - ext4: fix NULL pointer dereference in ext4_mark_inode_dirty() + - f2fs crypto: fix corrupted symlink in encrypted case + - f2fs: slightly reorganize read_raw_super_block + - f2fs: cover large section in sanity check of super + - ext4/fscrypto: avoid RCU lookup in d_revalidate + - f2fs: do f2fs_balance_fs when block is allocated + - f2fs: don't need to call set_page_dirty for io error + - f2fs crypto: handle unexpected lack of encryption keys + - f2fs crypto: make sure the encryption info is initialized on opendir(2) + - bus: uniphier-system-bus: fix condition of overlap check + - mtd: spi-nor: remove micron_quad_enable() + - mtd: brcmnand: Fix v7.1 register offsets + - mtd: nand: Drop mtd.owner requirement in nand_scan + - perf hists browser: Only offer symbol scripting when a symbol is under + the cursor + - perf hists browser: Fix dump to show correct callchain style + - perf tools: handle spaces in file names obtained from /proc/pid/maps + - NTB: Remove _addr functions from ntb_hw_amd + - perf/core: Don't leak event in the syscall error path + - perf/core: Fix time tracking bug with multiplexing + - perf hists: Fix determination of a callchain node's childlessness + - [armhf] OMAP3: Add cpuidle parameters table for omap3430 + - [armhf] dts: armada-375: use armada-370-sata for SATA + - [armhf] dts: am33xx: Fix GPMC dma properties + - btrfs: fix memory leak of fs_info in block group cache + - btrfs: cleaner_kthread() doesn't need explicit freeze + - [armhf] thermal: rockchip: fix a impossible condition caused by the + warning + - sunrpc/cache: drop reference when sunrpc_cache_pipe_upcall() detects + a race + - megaraid_sas: add missing curly braces in ioctl handler + - tpm: fix checks for policy digest existence in tpm2_seal_trusted() + - tpm: fix: set continueSession attribute for the unseal operation + + [ Uwe Kleine-König ] + * [armhf] enable I2C_MUX_PCA954x, MMC_SDHCI_PXAV3, AHCI_MVEBU + + [ Ben Hutchings ] + * bug control: Update list of related firmware packages + * Revert "sp5100_tco: fix the device check for SB800 and later chipsets" + (Closes: #823146; probably fixes #822651) + * bpf: fix double-fdput in replace_map_fd_with_map_ptr() (CVE-2016-4557) + (Closes: #823603) + * bpf: fix refcnt overflow (CVE-2016-4558) + * bpf: fix check_map_func_compatibility logic + * stable-update: Rewrite stable-update.sh in Python + + -- Ben Hutchings Sat, 07 May 2016 21:59:15 +0100 + +linux (4.5.2-1) unstable; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.5.2 + - hwmon: (max1111) Return -ENODEV from max1111_read_channel if not + instantiated + - PKCS#7: pkcs7_validate_trust(): initialize the _trusted output argument + - [hppa] Fix SIGSYS signals in compat case + - [hppa] Fix and enable seccomp filter support + - [hppa] Avoid function pointers for kernel exception routines + - [hppa] Fix kernel crash with reversed copy_from_user() + - [hppa] Unbreak handling exceptions from kernel modules + - ALSA: timer: Use mod_timer() for rearming the system timer + - mm: fix invalid node in alloc_migrate_target() + - [powerpc*] mm: Fixup preempt underflow with huge pages + - [s390x] /mm: handle PTE-mapped tail pages in fast gup + - [x86] libnvdimm: fix smart data retrieval + - [x86] libnvdimm, pfn: fix uuid validation + - [powerpc*] process: Fix altivec SPR not being saved + - compiler-gcc: disable -ftracer for __noclone functions + - drm/dp: move hw_mutex up the call stack + - drm/udl: Use unlocked gem unreferencing + - [x86] drm/amd/powerplay: fix segment fault issue in multi-display case. + - [x86] drm/amdgpu/gmc: move vram type fetching into sw_init + - [x86] drm/amdgpu/gmc: use proper register for vram type on Fiji + - xen/events: Mask a moving irq + - net: validate variable length ll headers + - ax25: add link layer header validation function + - packet: validate variable length ll headers + - bpf: avoid copying junk bytes in bpf_get_current_comm() + - qlcnic: Remove unnecessary usage of atomic_t + - qlcnic: Fix mailbox completion handling during spurious interrupt + - macvtap: always pass ethernet header in linear + - bridge: allow zero ageing time + - ipv4: Don't do expensive useless work during inetdev destroy. + - net: Fix use after free in the recvmmsg exit path + - mlx4: add missing braces in verify_qp_parameters + - farsync: fix off-by-one bug in fst_add_one + - ath9k: fix buffer overrun for ar9287 + - [armhf] net: mvneta: Fix spinlock usage + - ppp: ensure file->private_data can't be overridden + - tcp/dccp: remove obsolete WARN_ON() in icmp handlers + - qlge: Fix receive packets drop. + - bonding: fix bond_get_stats() + - ipv4: fix broadcast packets reception + - ipv4: initialize flowi4_flags before calling fib_lookup() + - ppp: take reference on channels netns + - xfrm: Fix crash observed during device unregistration and decryption + - ipv6: udp: fix UDP_MIB_IGNOREDMULTI updates + - bridge: Allow set bridge ageing time when switchdev disabled + - rtnl: fix msg size calculation in if_nlmsg_size() + - tun, bpf: fix suspicious RCU usage in tun_{attach, detach}_filter + - tuntap: restore default qdisc + - ipv4: l2tp: fix a potential issue in l2tp_ip_recv + - ipv6: l2tp: fix a potential issue in l2tp_ip6_recv + - ip6_tunnel: set rtnl_link_ops before calling register_netdevice + - ipv6: Count in extension headers in skb->network_header + - mpls: find_outdev: check for err ptr in addition to NULL check + - USB: uas: Limit qdepth at the scsi-host level + - USB: uas: Add a new NO_REPORT_LUNS quirk + - [x86] KVM: Inject pending interrupt even if pending nmi exist + - [x86] KVM: reduce default value of halt_poll_ns parameter + - pinctrl: pistachio: fix mfio84-89 function description and pinmux. + - pinctrl: sunxi: Fix A33 external interrupts not working + - pinctrl: freescale: imx: fix bogus check of of_iomap() return value + - au0828: fix au0828_v4l2_close() dev_state race condition + - au0828: Fix dev_state handling + - coda: fix error path in case of missing pdata on non-DT platform + - v4l: vsp1: Set the SRU CTRL0 register when starting the stream + - pcmcia: db1xxx_ss: fix last irq_to_gpio user + - rbd: use GFP_NOIO consistently for request allocations + - mac80211: properly deal with station hashtable insert errors + - mac80211: avoid excessive stack usage in sta_info + - mac80211: fix ibss scan parameters + - mac80211: fix unnecessary frame drops in mesh fwding + - mac80211: fix txq queue related crashes + - [armhf] gpio: pca953x: Use correct u16 value for register word write + - scsi: Do not attach VPD to devices that don't support it + - [armel,armhf]: 8550/1: protect idiv patching against undefined + gcc behavior + - iio: fix config watermark initial value + - iio: st_magn: always define ST_MAGN_TRIGGER_SET_STATE + - iio: accel: bmc150: fix endianness when reading axes + - iio: gyro: bmg160: fix buffer read values + - iio: gyro: bmg160: fix endianness when reading axes + - sd: Fix excessive capacity printing on devices with blocks bigger than + 512 bytes + - fs: add file_dentry() (Closes: #821442) + + nfs: use file_dentry() + + ext4 crypto: use dget_parent() in ext4_d_revalidate() + + ext4: use dget_parent() in ext4_file_open() + + ext4: use file_dentry() + - btrfs: fix crash/invalid memory access on fsync when using overlayfs + - ext4: ignore quota mount options if the quota feature is enabled + - iommu: Don't overwrite domain pointer when there is no default_domain + - Btrfs: fix file/data loss caused by fsync after rename and new inode + - [arm64] replace read_lock to rcu lock in call_step_hook + - mmc: sdhci: Fix regression setting power on Trats2 board + - ALSA: hda - Fix regression of monitor_present flag in eld proc file + - [x86] ALSA: usb-audio: Skip volume controls triggers hangup on Dell + USB Dock + - HID: wacom: fix Bamboo ONE oops + - HID: usbhid: fix inconsistent reset/resume/reset-resume behavior + + [ Salvatore Bonaccorso ] + * [x86] xen: suppress hugetlbfs in PV guests (CVE-2016-3961) + * [x86] USB: usbip: fix potential out-of-bounds write (CVE-2016-3955) + + [ Ben Hutchings ] + * fs: Consolidate softdep declarations in each module + * Bump ABI to 2 + * [armel/marvell] dts: kirkwood: fix SD slot default configuration for OpenRD + (Closes: #811351) + * atl2: Disable unimplemented scatter/gather feature (CVE-2016-2117) + * [x86] sound/soc/intel: Enable SND_SOC_INTEL_BYTCR_RT5640_MACH (replacing + SND_SOC_INTEL_BYT_RT5640_MACH; closes: #822267), + SND_SOC_INTEL_BYTCR_RT5651_MACH, SND_SOC_INTEL_CHT_BSW_RT5672_MACH, + SND_SOC_INTEL_CHT_BSW_RT5645_MACH, SND_SOC_INTEL_CHT_BSW_MAX98090_TI_MACH, + SND_SOC_INTEL_SKL_RT286_MACH, SND_SOC_INTEL_SKL_NAU88L25_SSM4567_MACH, + SND_SOC_INTEL_SKL_NAU88L25_MAX98357A_MACH as modules + * module: Invalidate signatures on force-loaded modules + * linux-source: Fix up module signing configuration in included kernel + config files + * README.Debian: Change more URLs to use https: scheme + * [sparc] Implement and wire up hotplug and modalias_show for vio, thanks to + Adrian Glaubitz (Closes: #815977) + * linux-headers: Avoid mixed implicit and normal rules in Makefile, thanks to + Thierry Herbelot (Closes: #822666) + * memcg: remove lru_add_drain_all() invocation from mem_cgroup_move_charge() + (Closes: #822084) + * linux-perf: Add build-time check for unversioned files that are likely to + result in file conflicts + * linux-perf: Move tips.txt to /usr/share/doc/linux-perf- + (Closes: #821741) + * tools/build: Fix bpf(2) feature test (fixes FTBFS on alpha, sh4; + closes: #822364) + * [armhf] Disable FB_OMAP2; it is redundant and conflicting with DRM_OMAP + * [armhf] mm: Enable CMA, DMA_CMA + * Input: gtco - fix crash on detecting device without endpoints + (CVE-2016-2187) + + [ Aurelien Jarno ] + * [mips*] Emulate unaligned LDXC1 and SDXC1 instructions. + + [ Uwe Kleine-König ] + * [armhf] enable NET_DSA and available switch drivers as modules. + + -- Ben Hutchings Thu, 28 Apr 2016 18:03:18 +0200 + +linux (4.5.1-1) unstable; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.5.1 + - [x86] entry/compat: Keep TS_COMPAT set during signal delivery + - [x86] perf/intel: Add definition for PT PMI bit + - [x86] KVM: fix missed hardware breakpoints + - [x86] KVM: i8254: change PIT discard tick policy + - [x86] KVM: fix spin_lock_init order on x86 + - [x86] KVM: VMX: avoid guest hang on invalid invept instruction + - [x86] KVM: VMX: avoid guest hang on invalid invvpid instruction + - [x86] KVM: VMX: fix nested vpid for old KVM guests + - perf/core: Fix perf_sched_count derailment + - perf tools: Fix checking asprintf return value + - Thermal: Ignore invalid trip points + - sched/cputime: Fix steal_account_process_tick() to always return jiffies + - sched/fair: Avoid using decay_load_missed() with a negative value + - [x86] EDAC/sb_edac: Fix computation of channel address + - [x86] EDAC, amd64_edac: Shift wrapping issue in f1x_get_norm_dct_addr() + - [s390x] fix floating pointer register corruption (again) + - [s390x] cpumf: add missing lpp magic initialization + - [s390x] pci: enforce fmb page boundary rule + - [armhf] pinctrl-bcm2835: Fix cut-and-paste error in "pull" parsing + - [x86] irq: Cure live lock in fixup_irqs() (Closes: #817816) + - [x86] apic: Fix suspicious RCU usage in + smp_trace_call_function_interrupt() + - [amd64] iopl: Properly context-switch IOPL on Xen PV (CVE-2016-3157) + - [x86] mm: TLB_REMOTE_SEND_IPI should count pages + - sg: fix dxferp in from_to case + - aacraid: Fix RRQ overload + - aacraid: Fix memory leak in aac_fib_map_free + - aacraid: Set correct msix count for EEH recovery + - sd: Fix discard granularity when LBPRZ=1 + - ncr5380: Correctly clear command pointers and lists after bus reset + - ncr5380: Dont release lock for PIO transfer + - ncr5380: Dont re-enter NCR5380_select() + - ncr5380: Forget aborted commands + - ncr5380: Fix NCR5380_select() EH checks and result handling + - ncr5380: Call scsi_eh_prep_cmnd() and scsi_eh_restore_cmnd() as and when + appropriate + - scsi: storvsc: fix SRB_STATUS_ABORTED handling + - be2iscsi: set the boot_kset pointer to NULL in case of failure + - aic7xxx: Fix queue depth handling + - libnvdimm: Fix security issue with DSM IOCTL. + - libnvdimm, pmem: fix kmap_atomic() leak in error path + - dm snapshot: disallow the COW and origin devices from being identical + - dm: fix excessive dm-mq context switching + - dm thin metadata: don't issue prefetches if a transaction abort + has failed + - dm cache: make sure every metadata function checks fail_io + - dm: fix rq_end_stats() NULL pointer in dm_requeue_original_request() + - usb: retry reset if a device times out + - usb: hub: fix a typo in hub_port_init() leading to wrong logic + - USB: cdc-acm: more sanity checking (CVE-2016-3138) + - USB: iowarrior: fix oops with malicious USB descriptors (incomplete fix + for CVE-2016-2188) + - USB: usb_driver_claim_interface: add sanity checking + - USB: mct_u232: add sanity checking in probe (CVE-2016-3136) + - USB: digi_acceleport: do sanity checking for the number of ports + (CVE-2016-3140) + - USB: cypress_m8: add endpoint sanity check (CVE-2016-3137) + - Input: powermate - fix oops with malicious USB descriptors + (CVE-2016-2186) + - ALSA: usb-audio: Fix NULL dereference in create_fixed_stream_quirk() + (CVE-2016-2184) + - ALSA: usb-audio: Add sanity checks for endpoint accesses (CVE-2016-2184) + - ALSA: usb-audio: Minor code cleanup in create_fixed_stream_quirk() + - ALSA: usb-audio: Fix double-free in error paths after + snd_usb_add_audio_stream() call + - crypto: ccp - Add hash state import and export support + - crypto: ccp - Limit the amount of information exported + - crypto: ccp - Don't assume export/import areas are aligned + - crypto: ccp - memset request context to zero during import + - crypto: keywrap - memzero the correct memory + - [armel/marvell,armhf] crypto: marvell/cesa - forward + devm_ioremap_resource() error code + - [x86] mei: bus: check if the device is enabled before data transfer + - tpm: fix the rollback in tpm_chip_register() + - tpm_crb: tpm2_shutdown() must be called before tpm_chip_unregister() + - tpm_eventlog.c: fix binary_bios_measurements + - tpm: fix the cleanup of struct tpm_chip + - HID: logitech: fix Dual Action gamepad support + - HID: i2c-hid: fix OOB write in i2c_hid_set_or_send_report() + - HID: multitouch: force retrieving of Win8 signature blob + - HID: fix hid_ignore_special_drivers module parameter + - staging: comedi: ni_tiocmd: change mistaken use of start_src for start_arg + - staging: comedi: ni_mio_common: fix the ni_write[blw]() functions + - tty: Fix GPF in flush_to_ldisc(), part 2 + - net: irda: Fix use-after-free in irtty_open() + - 8250: use callbacks to access UART_DLL/UART_DLM + - saa7134: Fix bytesperline not being set correctly for planar formats + - adv7511: TX_EDID_PRESENT is still 1 after a disconnect + - bttv: Width must be a multiple of 16 when capturing planar formats + - coda: fix first encoded frame payload + - media: v4l2-compat-ioctl32: fix missing length copy in put_v4l2_buffer32 + - mtip32xx: Avoid issuing standby immediate cmd during FTL rebuild + - mtip32xx: Fix broken service thread handling + - mtip32xx: Remove unwanted code from taskfile error handler + - mtip32xx: Fix for rmmod crash when drive is in FTL rebuild + - mtip32xx: Handle safe removal during IO + - mtip32xx: Handle FTL rebuild failure state during device initialization + - mtip32xx: Implement timeout handler + - mtip32xx: Cleanup queued requests after surprise removal + - ALSA: hda - Fix unexpected resume through regmap code path + - ALSA: hda - Apply reboot D3 fix for CX20724 codec, too + - [x86] ALSA: intel8x0: Add clock quirk entry for AD1981B on IBM + ThinkPad X41. + - ALSA: hda - Don't handle ELD notify from invalid port + - [x86] ALSA: hda - fix the mic mute button and led problem for a Lenovo AIO + - ALSA: hda - Fix unconditional GPIO toggle via automute + - [x86] ALSA: hda - Limit i915 HDMI binding only for HSW and later + - [x86] ALSA: hda - Fix spurious kernel WARNING on Baytrail HDMI + - [x86] ALSA: hda - Really restrict i915 notifier to HSW+ + - ALSA: hda - Fix forgotten HDMI monitor_present update + - [x86] ALSA: hda - Workaround for unbalanced i915 power refcount by + concurrent probe + - ALSA: hda - Fix missing ELD update at unplugging + - jbd2: fix FS corruption possibility in jbd2_journal_destroy() on + umount path + - [arm64] Update PTE_RDONLY in set_pte_at() for PROT_NONE permission + - brd: Fix discard request processing + - IB/srpt: Simplify srpt_handle_tsk_mgmt() + - bcache: cleaned up error handling around register_cache() + - bcache: fix race of writeback thread starting before complete + initialization + - bcache: fix cache_set_flush() NULL pointer dereference on OOM + - mm: memcontrol: reclaim when shrinking memory.high below usage + - mm: memcontrol: reclaim and OOM kill when shrinking memory.max below usage + - watchdog: don't run proc_watchdog_update if new value is same as old + - Bluetooth: Fix potential buffer overflow with Add Advertising + - cgroup: ignore css_sets associated with dead cgroups during migration + - [amrhf] net: mvneta: enable change MAC address when interface is up + - brcmfmac: Increase nr of supported flowrings. + - of: alloc anywhere from memblock if range not specified + - vfs: show_vfsstat: do not ignore errors from show_devname method + - splice: handle zero nr_pages in splice_to_pipe() + - quota: Fix possible GPF due to uninitialised pointers + - xfs: fix two memory leaks in xfs_attr_list.c error paths + - raid1: include bio_end_io_list in nr_queued to prevent freeze_array hang + - md/raid5: Compare apples to apples (or sectors to sectors) + - RAID5: check_reshape() shouldn't call mddev_suspend + - RAID5: revert e9e4c377e2f563 to fix a livelock + - raid10: include bio_end_io_list in nr_queued to prevent freeze_array hang + - md/raid5: preserve STRIPE_PREREAD_ACTIVE in break_stripe_batch_list + - md: multipath: don't hardcopy bio in .make_request path + - fuse: do not use iocb after it may have been freed + - fuse: Add reference counting for fuse_io_priv + - fs/coredump: prevent fsuid=0 dumps into user-controlled directories + - [armhf] drm/vc4: Return -EFAULT on copy_from_user() failure + - [x86] drm/radeon: disable runtime pm on PX laptops without dGPU + power control + - drm/radeon: Don't drop DP 2.7 Ghz link setup on some cards. + - drm/radeon: rework fbdev handling on chips with no connectors + - drm/radeon/mst: fix regression in lane/link handling. + - [x86] drm/amdgpu: disable runtime pm on PX laptops without dGPU + power control + - drm/amdgpu: include the right version of gmc header files for iceland + - drm/amd/powerplay: add uvd/vce dpm enabling flag to fix the performance + issue for CZ + - tracing: Have preempt(irqs)off trace preempt disabled functions + - tracing: Fix crash from reading trace_pipe with sendfile + - tracing: Fix trace_printk() to print when not using bprintk() + - bitops: Do not default to __clear_bit() for __clear_bit_unlock() + - [x86] ideapad-laptop: Add ideapad Y700 (15) to the no_hw_rfkill DMI list + - mmc: block: fix ABI regression of mmc_blk_ioctl + - mmc: mmc_spi: Add Card Detect comments and fix CD GPIO case + - mmc: sdhci: move initialisation of command error member + - mmc: sdhci: clean up command error handling + - mmc: sdhci: fix command response CRC error handling + - mmc: sdhci: further fix for DMA unmapping in sdhci_post_req() + - mmc: sdhci: avoid unnecessary mapping/unmapping of align buffer + - mmc: sdhci: plug DMA mapping leak on error + - mmc: sdhci: fix data timeout + - [armhf] mmc: tegra: Disable UHS-I modes for tegra114 + - [armhf] mmc: tegra: properly disable card clock + - mmc: sdhci: Fix override of timeout clk wrt max_busy_timeout + - [armhf] clk: rockchip: rk3368: fix cpuclk mux bit of big cpu-cluster + - [armhf] clk: rockchip: rk3368: fix cpuclk core dividers + - [armhf] clk: rockchip: rk3368: fix parents of video encoder/decoder + - [armhf] clk: rockchip: rk3368: fix hdmi_cec gate-register + - [armhf] clk: rockchip: add hclk_cpubus to the list of rk3188 + critical clocks + - [armhf] clk: bcm2835: Fix setting of PLL divider clock rates + - target: Fix target_release_cmd_kref shutdown comp leak + - iser-target: Fix identification of login rx descriptor type + - iser-target: Separate flows for np listeners and connections cma events + - iser-target: Rework connection termination + - nfsd4: fix bad bounds checking + - nfsd: fix deadlock secinfo+readdir compound + - ACPI / PM: Runtime resume devices when waking from hibernate + - writeback, cgroup: fix premature wb_put() in + locked_inode_to_wb_and_lock_list() + - writeback, cgroup: fix use of the wrong bdi_writeback which mismatches + the inode + - Input: synaptics - handle spurious release of trackstick buttons, again + - Input: ati_remote2 - fix crashes on detecting device with invalid + descriptor (CVE-2016-2185) + - ocfs2: o2hb: fix double free bug + - ocfs2/dlm: fix race between convert and recovery + - ocfs2/dlm: fix BUG in dlm_move_lockres_to_recovery_list + - mm/page_alloc: prevent merging between isolated and other pageblocks + - mtd: onenand: fix deadlock in onenand_block_markbad + - [x86] intel_idle: prevent SKL-H boot failure when C8+C9+C10 enabled + - PM / sleep: Clear pm_suspend_global_flags upon hibernate + - scsi_common: do not clobber fixed sense information + - sched/cputime: Fix steal time accounting vs. CPU hotplug + - [x86] perf/pebs: Add workaround for broken OVFL status on HSW+ + - [x86] perf/intel/uncore: Remove SBOX support for BDX-DE + - [x86] perf/intel: Fix PEBS warning by only restoring active PMU in pmi + - [x86] perf/intel: Use PAGE_SIZE for PEBS buffer size on Core2 + - [x86] perf/intel: Fix PEBS data source interpretation on Nehalem/Westmere + + [ Ben Hutchings ] + * mm: exclude ZONE_DEVICE from GFP_ZONE_TABLE + * mm: ZONE_DEVICE depends on SPARSEMEM_VMEMMAP + * [amd64] Re-enable ZONE_DMA and sound drivers that depend on it + (Closes: #814855, #819385, #820890) + * ntfs: Disable NTFS_RW (Closes: #566356); ntfs-3g has much more complete + write support + * Merge linux-tools source package into linux + (Closes: #550379, #573483, #816500) + * Add support for securelevel and prepare for Secure Boot (Closes: #820008): + - Add Matthew Garrett's securelevel patchset (see + Documentation/security/securelevel.txt) + - modules: Enable MODULE_SIG and MODULE_SIG_SHA256, but not MODULE_SIG_ALL + as signatures will be packaged separately + - debian/control: Add build-dependencies on libssl-dev, openssl + - debian/copyright: Note that extract-cert and sign-file are under LGPL 2.1 + - linux-kbuild: Add extract-cert and sign-file programs + - scripts: Fix X.509 PEM support in sign-file + - certs: Set SYSTEM_TRUSTED_KEYS to my own personal certificate to support + initial testing of signed modules + * Disable UNUSED_SYMBOLS; it is now itself unused + * linux-support: Include udeb configuration from debian/installer for use + by the linux-signed package + * Set ABI to 1 + * netfilter: x_tables: Fix parsing of IPT_SO_SET_REPLACE blobs (CVE-2016-3134) + - validate e->target_offset early + - make sure e->next_offset covers remaining blob size + * ipv4: Don't do expensive useless work during inetdev destroy (CVE-2016-3156) + * [x86] mm/32: Enable full randomization on i386 and X86_32 (CVE-2016-3672) + * fs: Add MODULE_SOFTDEP declarations for hard-coded crypto drivers + (Closes: #819725) + * aufs: Update support patches to aufs4.5-20160328 (Closes: #819748) + * [x86] ACPI / processor: Request native thermal interrupt handling via _OSC + (Closes: #817016, #819336) + * [armhf] Add support for octa-core big.LITTLE systems including Exynos + (Closes: #819379) + * [armhf] watchdog: Enable S3C2410_WATCHDOG as module (Closes: #819377) + * nbd: Create size change events for userspace (Closes: #812487) + * [armhf] usb-modules: Add modules required for BeagleBoard-X15, thanks to + Vagrant Cascadian (Closes: #815848) + + [ Aurelien Jarno ] + * [mipsel/mips/config.loongson-2f] Disable VIDEO_CX23885, VIDEO_IVTV, + VIDEO_CX231XX, VIDEO_PVRUSB2 (fixes FTBFS). + * [mips*/octeon] Backport OCTEON SATA controller support from 4.6-rc1. + Enable AHCI_OCTEON and SATA_AHCI_PLATFORM. + * [mips*/octeon] Backport Octeon III CN7xxx interface detection from + 4.7 queue. + * [mips*/octeon] Enable SPI_OCTEON. + * [mips*/octeon] udeb: Add ahci_octeon and ahci_platform modules to + sata-modules. + * [mips*/octeon] Bump CONFIG_NR_CPUS to 32 to accomodate recent Octeon + III SoCs. + * [mips*/octeon] Enable CRYPTO_MD5_OCTEON, CRYPTO_SHA1_OCTEON, CRYPTO_SHA256 + and CRYPTO_SHA512_OCTEON. + + [ Roger Shimizu ] + * [armel/marvell] Change MTD_CFI_AMDSTD from module to built-in + because orion5x-based Buffalo Linkstation devices still need it + (Closes: #818598) + * [armel/marvell] Add DT support for "Synology DS112" and "Zyxel NSA320". + Thanks to Heinrich Schuchardt. (Closes: #819393) + * [armel/marvell] Add DT support for "Buffalo/Revogear Kurobox Pro" + * [armhf/armmp] Enable DW_WATCHDOG as module, used on Firefly-RK3288. + Patch by Vagrant Cascadian. (Closes: #820834) + + -- Ben Hutchings Thu, 14 Apr 2016 09:49:24 +0100 + +linux-tools (4.5-1~exp1) experimental; urgency=medium + + * New upstream release + + [ Ben Hutchings ] + * linux-perf: Fix use of uninitialized variables + + -- Ben Hutchings Sun, 20 Mar 2016 21:20:22 +0000 + +linux (4.5-1~exp1) experimental; urgency=medium + + * New upstream release: http://kernelnewbies.org/Linux_4.5 + + [ Martin Michlmayr ] + * [arm64] Enable LEDS_GPIO. + * [arm64] Enable more QCOM options. (Closes: #815627) + * [arm64] udeb: Add leds-modules package containing leds-gpio driver. + * [arm64] udeb: Add regulators and SoC modules to core-modules. + + [ Uwe Kleine-König ] + * [armhf] Enable DRM_ETNAVIV. + + [ Ben Hutchings ] + * [armel/versatile] Enable GPIOLIB, new dependency of SMC91X (fixes FTBFS) + * [x86] input: Enable ASUS_WIRELESS as module (Closes: #818487) + * [x86] amdgpu: Enable DRM_AMD_POWERPLAY (Closes: #818174) + * [x86] Enable RANDOMIZE_BASE (kASLR). This is incompatible with hibernation, + so you must use the kernel parameter "kaslr" to enable kASLR and disable + hibernation at boot time. (Closes: #816067) + * [x86] vmxnet3: fix lock imbalance in vmxnet3_tq_xmit() (regression in 4.5) + + -- Ben Hutchings Sun, 20 Mar 2016 12:06:57 +0000 + +linux (4.5~rc7-1~exp1) experimental; urgency=medium + + * New upstream release candidate + + -- Ben Hutchings Mon, 07 Mar 2016 22:20:48 +0000 + +linux-tools (4.5~rc7-1~exp1) experimental; urgency=medium + + * New upstream release candidate + + [ Ben Hutchings ] + * Makefile.inc: Add support for wildcards in $(SCRIPTS) and $(DATA) + * linux-kbuild: Include scripts/Makefile.* (Closes: #815593) + * Makefile.inc, rules.real: Fix conflation of $(DESTDIR) and $(prefix) + * hyperv-daemons: Fix rule redefinition that 'make' warns about + * debian/control: Build-Depend on dh-python, as dh_python2 warns we should + * lockdep: Add '+' prefix to make invocation, so it can be parallelised + * tools/build: Fix 'unused variable' warning in the bpf() feature check + * lockdep: Add more missing macros + + -- Ben Hutchings Mon, 07 Mar 2016 03:07:00 +0000 + +linux-tools (4.5~rc5-1~exp3) experimental; urgency=medium + + * Adjust build fix from unstable + + -- Ben Hutchings Sun, 21 Feb 2016 23:45:04 +0000 + +linux-tools (4.5~rc5-1~exp2) experimental; urgency=medium + + * Merge build fix from unstable + + -- Ben Hutchings Sun, 21 Feb 2016 17:40:52 +0000 + +linux-tools (4.5~rc5-1~exp1) experimental; urgency=medium + + * New upstream release candidate + + [ Ben Hutchings ] + * lockdep: Add missing macros + * Adjust VPATH to work for check-hyperv (and simplify the modpost wrapper) + * tools/build: Remove bpf() run-time check at build time + + -- Ben Hutchings Sun, 21 Feb 2016 16:45:52 +0000 + +linux (4.5~rc5-1~exp1) experimental; urgency=medium + + * New upstream release candidate + + [ Ben Hutchings ] + * [armel/versatile] Enable GPIOLIB, needed to build smc91x driver with + OF enabled (fixes FTBFS) + * [powerpc] mm: Fix HAVE_ARCH_SOFT_DIRTY dependencies (fixes FTBFS) + + -- Ben Hutchings Sun, 21 Feb 2016 13:17:27 +0000 + +linux (4.5~rc4-1~exp1) experimental; urgency=medium + + * New upstream release candidate + + [ Roger Shimizu ] + * Enable TTY_PRINTK as module (Closes: #814540). + + [ Ben Hutchings ] + * [rt] Disable until it is updated for 4.5 or later + * aufs: Update support patches to aufs4.x-rcN-20160215 + * Compile with gcc-5 on all architectures + * [hppa] Update build-dependencies for renaming of binutils-hppa64 + * [x86] udeb: Move scsi_transport_fc to scsi-core-modules, since hv_storvsc + now depends on it + + -- Ben Hutchings Thu, 18 Feb 2016 01:57:20 +0000 + +linux-tools (4.4.6-1) unstable; urgency=medium + + * New upstream stable update: + - tools lib traceevent: Fix output of %llu for 64 bit values read on + 32 bit machines + - perf tools: tracepoint_error() can receive e=NULL, robustify it + - perf kvm record/report: 'unprocessable sample' error while + recording/reporting guest data + - tools: hv: vss: fix the write()'s argument: error -> vss_msg + - uapi: update install list after nvme.h rename + - perf stat: Do not clean event's private stats + + [ Mattia Dongili ] + * Build linux-cpupower. + + [ Ben Hutchings ] + * debian/control: Update policy version to 3.9.7; no changes required + * linux-perf: Override lintian errors for perf-read-vdso{,x}32 in + 64-bit packages + * debian/copyright: Move GPL-2 boilerplate to its own paragraph + + -- Ben Hutchings Sun, 20 Mar 2016 16:23:48 +0000 + +linux (4.4.6-1) unstable; urgency=medium + + [ Salvatore Bonaccorso ] + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.4.5 + - Btrfs: fix deadlock running delayed iputs at transaction commit time + (regression in 4.1) + - btrfs: Fix no_space in write and rm loop + (regression in 4.4) + - btrfs: async-thread: Fix a use-after-free error for trace + - [x86] drm/amdgpu: mask out WC from BO on unsupported arches + - block: Initialize max_dev_sectors to 0 + - [hppa] Fix ptrace syscall number and return value modification + - [x86] kvm: Update tsc multiplier on change. + (regression in 4.4) + - fbcon: set a default value to blink interval + - cifs: fix out-of-bounds access in lease parsing + - CIFS: Fix SMB2+ interim response processing for read requests + - [x86] vfio: fix ioctl error handling + - [x86] KVM: fix root cause for missed hardware breakpoints + - [arm*] KVM: Fix ioctl error handling + - [amd64] iommu: Apply workaround for ATS write permission check + - [amd64] iommu: Fix boot warning when device 00:00.0 is not iommu covered + - [x86] iommu/vt-d: Use BUS_NOTIFY_REMOVED_DEVICE in hotplug path + - target: Fix WRITE_SAME/DISCARD conversion to linux 512b sectors + - [x86,powerpc*] drm/ast: Fix incorrect register check for DRAM width + - drm/radeon/pm: update current crtc info after setting the powerstate + - [x86] drm/amdgpu/pm: update current crtc info after setting the powerstate + - [x86] drm/amdgpu: apply gfx_v8 fixes to gfx_v7 as well + - [x86] drm/amdgpu/gfx8: specify which engine to wait before vm flush + - [x86] drm/amdgpu: return from atombios_dp_get_dpcd only when error + - libata: fix HDIO_GET_32BIT ioctl + - writeback: flush inode cgroup wb switches instead of pinning super_block + - Adding Intel Lewisburg device IDs for SATA + - [arm64] vmemmap: use virtual projection of linear region + (regression in 4.1) + - ata: ahci: don't mark HotPlugCapable Ports as external/removable + - tracing: Do not have 'comm' filter override event 'comm' field + (regression in 4.3) + - Btrfs: fix loading of orphan roots leading to BUG_ON + - Revert "jffs2: Fix lock acquisition order bug in jffs2_write_begin" + - jffs2: Fix page lock / f->sem deadlock + - jffs2: Fix directory hardlinks from deleted directories + - ALSA: usb-audio: Add a quirk for Plantronics DA45 + - [amd64] ALSA: ctl: Fix ioctls for X32 ABI + - [x86] ALSA: hda - Fix mic issues on Acer Aspire E1-472 + - [amd64] ALSA: rawmidi: Fix ioctls X32 ABI + - [amd64] ALSA: timer: Fix ioctls for X32 ABI + - [amd64] ALSA: pcm: Fix ioctls for X32 ABI + - ALSA: seq: oss: Don't drain at closing a client + - ALSA: hdspm: Fix wrong boolean ctl value accesses + - ALSA: hdsp: Fix wrong boolean ctl value accesses + - ALSA: hdspm: Fix zero-division + - ALSA: timer: Fix broken compat timer user status ioctl + - [armhf] usb: chipidea: otg: change workqueue ci_otg as freezable + - USB: cp210x: Add ID for Parrot NMEA GPS Flight Recorder + - USB: qcserial: add Dell Wireless 5809e Gobi 4G HSPA+ (rev3) + - USB: qcserial: add Sierra Wireless EM74xx device ID + - USB: serial: option: add support for Telit LE922 PID 0x1045 + - USB: serial: option: add support for Quectel UC20 + - [mips*] scache: Fix scache init with invalid line size. + - [mips*] traps: Fix SIGFPE information leak from `do_ov' and + `do_trap_or_bp' + - ubi: Fix out of bounds write in volume update code + - thermal: cpu_cooling: fix out of bounds access in time_in_idle + - [x86] drm/amdgpu: Use drm_calloc_large for VM page_tables array + - block: check virt boundary in bio_will_gap() + - [x86] drm/i915: more virtual south bridge detection + - [x86] drm/i915: refine qemu south bridge detection + - modules: fix longstanding /proc/kallsyms vs module insertion race. + - [x86] drm/amdgpu: fix topaz/tonga gmc assignment in 4.4 stable + + [ Ben Hutchings ] + * [x86] drm/i915: Fix oops caused by fbdev initialization failure + * module: Fix ABI change in 4.4.5 + * Revert "libata: Align ata_device's id on a cacheline" to avoid ABI change + * [amd64] Fix more regressions due to "efi: Build our own page table + structure": + - efi: Fix boot crash by always mapping boot service regions into new EFI + page tables (Closes: #815125) + - mm/pat: Fix boot crash when 1GB pages are not supported by cpu + * [armhf] gpio: Enable GPIO_PCF857X as module, needed by TI DRA7xx EVMs + (Closes: #818386) + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.4.6 + - [arm64] account for sparsemem section alignment when choosing vmemmap + offset + - [armel,armhf] mvebu: fix overlap of Crypto SRAM with PCIe memory window + - [armhf] dts: dra7: do not gate cpsw clock due to errata i877 + - [armhf] OMAP2+: hwmod: Introduce ti,no-idle dt property + - PCI: Allow a NULL "parent" pointer in pci_bus_assign_domain_nr() + - kvm: cap halt polling at exactly halt_poll_ns + - [x86] KVM: VMX: disable PEBS before a guest entry + - [s390x] KVM: correct fprs on SIGP (STOP AND) STORE STATUS + - [powerpc*] KVM: Book3S HV: Sanitize special-purpose register values on + guest exit + - [x86] KVM: MMU: fix ept=0/pte.u=1/pte.w=0/CR0.WP=0/CR4.SMEP=1/EFER.NX=0 + combo + - [x86] KVM: MMU: fix reserved bit check for + ept=0/CR0.WP=0/CR4.SMEP=1/EFER.NX=0 + - [s390x] mm: four page table levels vs. fork (CVE-2016-2143) + - [s390x] dasd: fix diag 0x250 inline assembly + - tracing: Fix check for cpu online when event is disabled + - jffs2: reduce the breakage on recovery from halfway failed rename() + - ncpfs: fix a braino in OOM handling in ncp_fill_cache() + - ASoC: dapm: Fix ctl value accesses in a wrong type + - ovl: ignore lower entries when checking purity of non-directory entries + - ovl: fix working on distributed fs as lower layer + - wext: fix message delay/ordering + - cfg80211/wext: fix message ordering + - can: gs_usb: fixed disconnect bug by removing erroneous use of kfree() + - iwlwifi: mvm: inc pending frames counter also when txing non-sta + - mac80211: minstrel: Change expected throughput unit back to Kbps + - mac80211: fix use of uninitialised values in RX aggregation + - mac80211: minstrel_ht: set default tx aggregation timeout to 0 + - mac80211: minstrel_ht: fix a logic error in RTS/CTS handling + - mac80211: check PN correctly for GCMP-encrypted fragmented MPDUs + - mac80211: Fix Public Action frame RX in AP mode + - [armhf] gpu: ipu-v3: Do not bail out on missing optional port nodes + - [i386/686-pae] mm: Fix slow_virt_to_phys() for X86_PAE again + - Revert "drm/radeon: call hpd_irq_event on resume" + - [x86] drm/amdgpu: Fix error handling in amdgpu_flip_work_func. + - drm/radeon: Fix error handling in radeon_flip_work_func. + - Revert "drm/radeon/pm: adjust display configuration after powerstate" + - [powerpc*] powernv: Add a kmsg_dumper that flushes console output on panic + - [powerpc*] powernv: Fix OPAL_CONSOLE_FLUSH prototype and usages + - userfaultfd: don't block on the last VM updates at exit time + - ovl: copy new uid/gid into overlayfs runtime inode + - ovl: fix getcwd() failure after unsuccessful rmdir + - [mips*] smp.c: Fix uninitialised temp_foreign_map + - block: don't optimize for non-cloned bio in bio_get_last_bvec() + - target: Drop incorrect ABORT_TASK put for completed commands + * netfilter: x_tables: check for size overflow (CVE-2016-3135) + + [ Ian Campbell ] + * [arm64] Enable ARCH_HISI (Hisilicon) and the set of currently available + drivers (Power, Thermal, MMC) (Closes: #812540) + + -- Ben Hutchings Thu, 17 Mar 2016 01:25:23 +0000 + +linux (4.4.4-2) unstable; urgency=medium + + * Ignore ABI changes in sdhci* modules (fixes FTBFS on armhf) + * udeb: Add dependency from mmc-modules to crc-modules (fixes FTBFS on arm64) + * [hppa] Ignore ABI changes in built-in drm_kms_helper code (fixes FTBFS) + * [powerpc*] Revert "powerpc: Simplify module TOC handling"; it is not needed + to fix #808043 and causes a regression on ppc64el + + -- Ben Hutchings Wed, 09 Mar 2016 02:15:48 +0000 + +linux (4.4.4-1) unstable; urgency=medium + + [ Salvatore Bonaccorso ] + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.4.3 + - [x86] mm: Fix types used in pgprot cacheability flags translations + - [x86] mm/pat: Avoid truncation when converting cpa->numpages to address + - [x86] uaccess/64: Make the __copy_user_nocache() assembly code + more readable + - [x86] uaccess/64: Handle the caching of 4-byte nocache copies + properly in __copy_user_nocache() + - [x86] mm: Fix vmalloc_fault() to handle large pages properly + - ALSA: hda - Cancel probe work instead of flush at remove + - ALSA: pcm: Fix rwsem deadlock for non-atomic PCM stream + - ALSA: seq: Fix leak of pool buffer at concurrent writes + - ALSA: seq: Fix double port list deletion + - [armhf] phy: twl4030-usb: Relase usb phy on unload + - [armhf] phy: twl4030-usb: Fix unbalanced pm_runtime_enable on + module reload + - staging/speakup: Use tty_ldisc_ref() for paste kworker + - pty: fix possible use after free of tty->driver_data + - pty: make sure super_block is still valid in final /dev/tty close + - tty: Add support for PCIe WCH382 2S multi-IO card + - [x86] serial: 8250_pci: Add Intel Broadwell ports + - [armhf] serial: omap: Prevent DoS using unprivileged ioctl(TIOCSRS485) + - ext4: fix scheduling in atomic on group checksum failure + - ext4: fix potential integer overflow + - ext4: don't read blocks from disk after extents being swapped + - btrfs: handle invalid num_stripes in sys_array + - Btrfs: fix fitrim discarding device area reserved for boot loader's use + - Revert "btrfs: clear PF_NOFREEZE in cleaner_kthread()" + - btrfs: properly set the termination value of ctx->pos in readdir + - Btrfs: fix invalid page accesses in extent_same (dedup) ioctl + - Btrfs: fix page reading in extent_same ioctl leading to csum errors + - Btrfs: fix hang on extent buffer lock caused by the inode_paths ioctl + - Btrfs: fix direct IO requests not reporting IO error to user space + - ptrace: use fsuid, fsgid, effective creds for fs access checks + - tracing: Fix freak link error caused by branch tracer + - tracepoints: Do not trace when cpu is offline + - klist: fix starting point removed bug in klist iterators + - scsi: add Synology to 1024 sector blacklist + - iscsi-target: Fix potential dead-lock during node acl delete + - SCSI: fix crashes in sd and sr runtime PM + - drivers/scsi/sg.c: mark VMA as VM_IO to prevent migration + - scsi_dh_rdac: always retry MODE SELECT on command lock violation + - SCSI: Add Marvell Console to VPD blacklist + - scsi: fix soft lockup in scsi_remove_target() on module removal + - iio: adis_buffer: Fix out-of-bounds memory access + - iio:adc:ti_am335x_adc Fix buffered mode by identifying as software buffer. + - iio-light: Use a signed return type for ltr501_match_samp_freq() + - iio: add HAS_IOMEM dependency to VF610_ADC + - iio: add IIO_TRIGGER dependency to STK8BA50 + - iio: dac: mcp4725: set iio name property in sysfs + - iio: light: acpi-als: Report data as processed + - iio: pressure: mpl115: fix temperature offset sign + - iio: inkern: fix a NULL dereference on error + - cifs: Ratelimit kernel log messages + - cifs: fix race between call_async() and reconnect() + - cifs_dbg() outputs an uninitialized buffer in cifs_readdir() + - cifs: fix erroneous return value + - NFS: Fix attribute cache revalidation + - pNFS/flexfiles: Fix an Oopsable typo in ff_mirror_match_fh() + - nfs: Fix race in __update_open_stateid() + - pNFS/flexfiles: Fix an XDR encoding bug in layoutreturn + - udf: limit the maximum number of indirect extents in a row + - udf: Prevent buffer overrun with multi-byte characters + - udf: Check output buffer length when converting name to CS0 + - SUNRPC: Fixup socket wait for memory + - [powerpc] eeh: Fix PE location code + - [powerpc] eeh: Fix stale cached primary bus + - [powerpc] powernv: Fix stale PE primary bus + - [powerpc] ioda: Set "read" permission when "write" is set + - [armhf] mvebu: remove duplicated regulator definition in Armada 388 GP + - [arm64] mm: avoid calling apply_to_page_range on empty range + - [armel,armhf] 8519/1: ICST: try other dividends than 1 + - [armel,armhf] 8517/1: ICST: avoid arithmetic overflow in icst_hz() + - [armhf] dts: Fix wl12xx missing clocks that cause hangs + - [armhf] dts: Fix omap5 PMIC control lines for RTC writes + - [armhf] dts: omap5-board-common: enable rtc and charging of backup battery + - [armhf] OMAP2+: Fix wait_dll_lock_timed for rodata + - [armhf] OMAP2+: Fix l2_inv_api_params for rodata + - [armhf] OMAP2+: Fix l2dis_3630 for rodata + - [armhf] OMAP2+: Fix save_secure_ram_context for rodata + - [armhf] OMAP2+: Fix ppa_zero_params and ppa_por_params for rodata + - [arm64] dma-mapping: fix handling of devices registered before + arch_initcall + - [arm,arm64] KVM: Fix reference to uninitialised VGIC + - [powerpc*] KVM: PPC: Fix emulation of H_SET_DABR/X on POWER8 + - [powerpc*] KVM: PPC: Fix ONE_REG AltiVec support + - mm: soft-offline: check return value in second __get_any_page() call + - libnvdimm: fix namespace object confusion in is_uuid_busy() + - mm: fix mlock accouting + - mm: replace vma_lock_anon_vma with anon_vma_lock_read/write + - mm: fix regression in remap_file_pages() emulation + - Input: elantech - mark protocols v2 and v3 as semi-mt + - [x86] Input: i8042 - add Fujitsu Lifebook U745 to the nomux list + - string_helpers: fix precision loss for some inputs + - Input: vmmouse - fix absolute device registration + - [x86] iommu/vt-d: Don't skip PCI devices when disabling IOTLB + - [x86] iommu/amd: Correct the wrong setting of alias DTE in do_attach + - [x86] iommu/vt-d: Fix mm refcounting to hold mm_count not mm_users + - [x86] iommu/vt-d: Fix 64-bit accesses to 32-bit DMAR_GSTS_REG + - [x86] iommu/vt-d: Clear PPR bit to ensure we get more page + request interrupts + - Revert "xhci: don't finish a TD if we get a short-transfer event mid TD" + - xhci: Fix list corruption in urb dequeue at host removal + - fs/hugetlbfs/inode.c: fix bugs in hugetlb_vmtruncate_list() + - [s390x] numa: fix /proc//numa_maps for hugetlbfs on s390 + - memcg: only free spare array when readers are done + - radix-tree: fix race in gang lookup + - drivers/hwspinlock: fix race between radix tree insertion and lookup + - radix-tree: fix oops after radix_tree_iter_retry + - dump_stack: avoid potential deadlocks + - mm,thp: khugepaged: call pte flush at the time of collapse + - [x86] intel_scu_ipcutil: underflow in scu_reg_access() + - ipc/shm: handle removed segments gracefully in shm_mmap() + - devm_memremap_release(): fix memremap'd addr handling + - futex: Drop refcount if requeue_pi() acquired the rtmutex + - ovl: allow zero size xattr + - ovl: use a minimal buffer in ovl_copy_xattr + - ovl: check dentry positiveness in ovl_cleanup_whiteouts() + - ovl: root: copy attr + - ovl: setattr: check permissions before copy-up + - libxfs: pack the agfl header structure so XFS_AGFL_SIZE is correct + - xfs: inode recovery readahead can race with inode buffer creation + - Revert "xfs: clear PF_NOFREEZE for xfsaild kthread" + - xfs: log mount failures don't wait for buffers to be released + - prctl: take mmap sem for writing to protect against others + - timerfd: Handle relative timers with CONFIG_TIME_LOW_RES proper + - posix-timers: Handle relative timers with CONFIG_TIME_LOW_RES proper + - itimers: Handle relative timers with CONFIG_TIME_LOW_RES proper + - modules: fix modparam async_probe request + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.4.4 + - af_iucv: Validate socket address length in iucv_sock_bind() + - gro: Make GRO aware of lightweight tunnels. + - tunnels: Allow IPv6 UDP checksums to be correctly controlled. + - lwt: fix rx checksum setting for lwt devices tunneling over ipv6 + - tcp: fix NULL deref in tcp_v4_send_ack() + - af_unix: fix struct pid memory leak + - pptp: fix illegal memory access caused by multiple bind()s + - sctp: allow setting SCTP_SACK_IMMEDIATELY by the application + - tipc: fix connection abort during subscription cancel + - inet: frag: Always orphan skbs inside ip_defrag() + - tcp: beware of alignments in tcp_get_info() + - ipv6: enforce flowi6_oif usage in ip6_dst_lookup_tail() + - ipv6/udp: use sticky pktinfo egress ifindex on connect() + - ipv6: addrconf: Fix recursive spin lock call + - ipv6: fix a lockdep splat + - unix: correctly track in-flight fds in sending process user_struct + (regression in 4.3.3-6; CVE-2016-2550) + - tcp: do not drop syn_recv on all icmp reports + - net:Add sysctl_max_skb_frags + - tg3: Fix for tg3 transmit queue 0 timed out when too many gso_segs + - enic: increment devcmd2 result ring in case of timeout + - sctp: translate network order to host order when users get a hmacid + - net: Copy inner L3 and L4 headers as unaligned on GRE TEB + - flow_dissector: Fix unaligned access in __skb_flow_dissector when used by + eth_get_headlen + - bpf: fix branch offset adjustment on backjumps after patching + ctx expansion + - bonding: Fix ARP monitor validation + - ipv4: fix memory leaks in ip_cmsg_send() callers + - af_unix: Don't set err in unix_stream_read_generic unless there was + an error + - af_unix: Guard against other == sk in unix_dgram_sendmsg + - tipc: fix premature addition of node to lookup table + - tcp: md5: release request socket instead of listener + - qmi_wwan: add "4G LTE usb-modem U901" + - net/mlx4_en: Count HW buffer overrun only once + - net/mlx4_en: Choose time-stamping shift value according to HW frequency + - net/mlx4_en: Avoid changing dev->features directly in run-time + - l2tp: Fix error creating L2TP tunnels + - pppoe: fix reference counting in PPPoE proxy + - net_sched fix: reclassification needs to consider ether protocol changes + - route: check and remove route cache when we get route + - tcp/dccp: fix another race at listener dismantle + - IFF_NO_QUEUE: Fix for drivers not calling ether_setup() + - rtnl: RTM_GETNETCONF: fix wrong return value + - tipc: unlock in error path + - unix_diag: fix incorrect sign extension in unix_lookup_by_ino + - sctp: Fix port hash table size computation + - ext4: fix bh->b_state corruption + - [s390x] KVM: fix guest fprs memory leak + - devm_memremap: Fix error value when memremap failed + - efi: Make efivarfs entries immutable by default + - efi: Add pstore variables to the deletion whitelist + - bcache: fix a livelock when we cause a huge number of cache misses + - bcache: Add a cond_resched() call to gc + - bcache: clear BCACHE_DEV_UNLINK_DONE flag when attaching a backing device + - bcache: fix a leak in bch_cached_dev_run() + - bcache: unregister reboot notifier if bcache fails to unregister device + - bcache: allows use of register in udev to avoid "device_busy" error. + - bcache: prevent crash on changing writeback_running + - bcache: Change refill_dirty() to always scan entire disk if necessary + - dm thin: fix race condition when destroying thin pool workqueue + - can: ems_usb: Fix possible tx overflow + - usb: dwc3: Fix assignment of EP transfer resources + - USB: cp210x: add IDs for GE B650V3 and B850V3 boards + - USB: option: add support for SIM7100E + - USB: option: add "4G LTE usb-modem U901" + - [armhf] spi: omap2-mcspi: Prevent duplicate gpio_request + - iw_cxgb3: Fix incorrectly returning error on success + - [x86] drm/i915: shut up gen8+ SDE irq dmesg noise + - ocfs2: unlock inode if deleting inode from orphan fails + - mm: thp: fix SMP race condition between THP page fault and MADV_DONTNEED + - mm: numa: quickly fail allocations for NUMA balancing on full nodes + - genirq: Validate action before dereferencing it in + handle_irq_event_percpu() + - [s390x] KVM: fix memory overwrites when vx is disabled + - Btrfs: add missing brelse when superblock checksum fails + - Btrfs: igrab inode in writepage + - btrfs: statfs: report zero available if metadata are exhausted + - Btrfs: send, don't BUG_ON() when an empty symlink is found + - Btrfs: fix number of transaction units required to create symlink + - Btrfs: fix transaction handle leak on failure to create hard link + - Btrfs: Initialize btrfs_root->highest_objectid when loading tree root and + subvolume roots + - btrfs: initialize the seq counter in struct btrfs_device + - [s390x] fix normalization bug in exception table sorting + - [s390x] dasd: prevent incorrect length error under z/VM after PAV changes + - [s390x] dasd: fix refcount for PAV reassignment + - [s390x] dasd: fix performance drop + - [s390x] compat: correct restore of high gprs on signal return + - [s390x] fpu: signals vs. floating point control register + - locks: fix unlock when fcntl_setlk races with a close + - rtlwifi: rtl8192cu: Add missing parameter setup + - rtlwifi: rtl8192ce: Fix handling of module parameters + - rtlwifi: rtl8192de: Fix incorrect module parameter descriptions + - rtlwifi: rtl8723ae: Fix initialization of module parameters + - rtlwifi: rtl8192se: Fix module parameter initialization + - rtlwifi: rtl8188ee: Fix module parameter initialization + - rtlwifi: rtl8723be: Fix module parameter initialization + - [x86] mei: fix fasync return value on error + - [x86] mei: validate request value in client notify request ioctl + - namei: ->d_inode of a pinned dentry is stable only for positives + - [armhf] rc: sunxi-cir: Initialize the spinlock properly + - gspca: ov534/topro: prevent a division by 0 + - vb2: fix a regression in poll() behavior for output,streams + - tda1004x: only update the frontend properties if locked + - dm snapshot: fix hung bios when copy error occurs + - dm: fix dm_rq_target_io leak on faults with .request_fn DM w/ blk-mq paths + - posix-clock: Fix return code on the poll method's error path + - mmc: sdhci-pci: Do not default to 33 Ohm driver strength for Intel SPT + - mmc: sdhci: Fix DMA descriptor with zero data length + - mmc: sdio: Fix invalid vdd in voltage switch power cycle + - mmc: mmc: Fix incorrect use of driver strength switching HS200 and HS400 + - mmc: sdhci: Fix sdhci_runtime_pm_bus_on/off() + - mmc: core: Enable tuning according to the actual timing + - [armhf, arm64] mmc: mmci: fix an ages old detection error + - [x86] mmc: sdhci-acpi: Fix card detect race for Intel BXT/APL + - [x86] mmc: sdhci-pci: Fix card detect race for Intel BXT/APL + - mmc: sdhci: Allow override of mmc host operations + - mmc: sdhci: Allow override of get_cd() called from sdhci_request() + - [x86] Drivers: hv: vmbus: Fix a Host signaling bug + - Bluetooth: Use continuous scanning when creating LE connections + - Bluetooth: Add support of Toshiba Broadcom based devices + - Bluetooth: Fix incorrect removing of IRKs + - Bluetooth: 6lowpan: Fix kernel NULL pointer dereferences + - Bluetooth: 6lowpan: Fix handling of uncompressed IPv6 packets + - time: Avoid signed overflow in timekeeping_get_ns() + - cputime: Prevent 32bit overflow in time[val|spec]_to_cputime() + - [mips*] Revert "MIPS: Fix PAGE_MASK definition" + - [mips*el/loongson-3] Loongson-3: Fix SMP_ASK_C0COUNT IPI handler + - [mips*] hpet: Choose a safe value for the ETIME check + - [mips*] Fix buffer overflow in syscall_get_arguments() + - EDAC: Robustify workqueues destruction + - EDAC, mc_sysfs: Fix freeing bus' name + - [sparc64] fix incorrect sign extension in sys_sparc64_personality + - [armhf] clk: exynos: use irqsave version of spin_lock to avoid deadlock + with irqs + - [armhf] regulator: axp20x: Fix GPIO LDO enable value for AXP22x + - virtio_balloon: fix race by fill and leak + - virtio_balloon: fix race between migration and ballooning + - virtio_pci: fix use after free on release + - [x86] drm/vmwgfx: Fix an incorrect lock check + - [x86] drm/vmwgfx: Fix a width / pitch mismatch on framebuffer updates + - [x86] drm/vmwgfx: respect 'nomodeset' + - [x86] drm/amdgpu: Fix off-by-one errors in amdgpu_vm_bo_map + - [x86] drm/amdgpu: call hpd_irq_event on resume + - [x86] drm/amdgpu: fix lost sync_to if scheduler is enabled. + - [x86] drm/amdgpu: fix tonga smu resume + - [x86] drm/amdgpu: fix amdgpu_bo_pin_restricted VRAM placing v2 + - [x86] drm/amdgpu: no need to load MC firmware on fiji + - [x86] drm/amdgpu: move gmc7 support out of CIK dependency + - [x86] drm/amdgpu: iceland use CI based MC IP + - [x86] drm/amdgpu: The VI specific EXE bit should only apply to GMC + v8.0 above + - [x86] drm/amdgpu: pull topaz gmc bits into gmc_v7 + - [x86] drm/amdgpu: drop topaz support from gmc8 module + - [x86] drm/amdgpu: don't load MEC2 on topaz + - [x86] drm/amdgpu: remove exp hardware support from iceland + - [x86] drm/amdgpu: fix s4 resume + - [x86] drm/amdgpu: remove unnecessary forward declaration + - [x86] drm/amdgpu: hold reference to fences in amdgpu_sa_bo_new (v2) + - [x86] drm/amdgpu: fix issue with overlapping userptrs + - [x86] drm/amdgpu: use post-decrement in error handling + - [x86] drm/amdgpu: Don't hang in amdgpu_flip_work_func on disabled crtc. + - [x86] drm/amdgpu/pm: adjust display configuration after powerstate + - drm/nouveau/kms: take mode_config mutex in connector hotplug path + - drm/nouveau/display: Enable vblank irqs after display engine is on again. + (regression in 4.4) + - drm/nouveau/disp/dp: ensure sink is powered up before attempting + link training + - drm/nouveau: platform: Fix deferred probe + - drm/radeon: Fix off-by-one errors in radeon_vm_bo_set_addr + - drm/radeon: Fix "slow" audio over DP on DCE8+ + - drm/radeon: clean up fujitsu quirks + - drm/radeon: properly byte swap vce firmware setup + - drm/radeon: cleaned up VCO output settings for DP audio + - drm/radeon: Add a common function for DFS handling + - drm/radeon: fix DP audio support for APU with DCE4.1 display engine + - drm/radeon: mask out WC from BO on unsupported arches + - drm/radeon: hold reference to fences in radeon_sa_bo_new + - drm: fix missing reference counting decrease + - [x86] drm/i915: Restore inhibiting the load of the default context + - [x86] drm/i915: intel_hpd_init(): Fix suspend/resume reprobing + - [x86] drm/i915: Init power domains early in driver load + - [x86] drm/i915: Make sure DC writes are coherent on flush. + - [x86] drm/i915/dp: fall back to 18 bpp when sink capability is unknown + - [x86] drm/i915: Don't reject primary plane windowing with color keying + enabled on SKL+ + - [x86] drm/i915/skl: Don't skip mst encoders in skl_ddi_pll_select() + - [x86] drm/i915/dsi: defend gpio table against out of bounds access + - [x86] drm/i915/dsi: don't pass arbitrary data to sideband + - [x86] drm/i915: fix error path in intel_setup_gmbus() + - drm/qxl: use kmalloc_array to alloc reloc_info in + qxl_process_single_command + - drm/radeon: use post-decrement in error handling + - drm: No-Op redundant calls to drm_vblank_off() (v2) + - drm: Prevent vblank counter bumps > 1 with active vblank clients. (v2) + (regression in 4.4) + - drm: Fix drm_vblank_pre/post_modeset regression from Linux 4.4 + - drm: Fix treatment of drm_vblank_offdelay in drm_vblank_on() (v2) + - drm/radeon: Don't hang in radeon_flip_work_func on disabled crtc. (v2) + - drm/radeon/pm: adjust display configuration after powerstate + - make sure that freeing shmem fast symlinks is RCU-delayed + - [x86] toshiba_acpi: Fix blank screen at boot if transflective backlight is + supported + - [x86] ideapad-laptop: Add Lenovo ideapad Y700-17ISK to no_hw_rfkill + dmi list + - [x86] ideapad-laptop: Add Lenovo Yoga 700 to no_hw_rfkill dmi list + - [x86] ACPI / video: Add disable_backlight_sysfs_if quirk for the Toshiba + Portege R700 + - [x86] ACPI / video: Add disable_backlight_sysfs_if quirk for the Toshiba + Satellite R830 + - [x86] ACPI: Revert "ACPI / video: Add Dell Inspiron 5737 to the blacklist" + - [x86] ACPI / PCI / hotplug: unlock in error path in acpiphp_enable_slot() + - nfit: fix multi-interface dimm handling, acpi6.1 compatibility + - dmaengine: dw: fix cyclic transfer setup + - dmaengine: dw: fix cyclic transfer callbacks + - dmaengine: dw: disable BLOCK IRQs for non-cyclic xfer + - IB/cm: Fix a recently introduced deadlock + - IB/qib: fix mcast detach when qp not attached + - IB/qib: Support creating qps with GFP_NOIO flag + - IB/mlx5: Expose correct maximum number of CQE capacity + - Thermal: initialize thermal zone device correctly + - Thermal: handle thermal zone device properly during system sleep + - Thermal: do thermal zone update after a cooling device registered + - hwmon: (dell-smm) Blacklist Dell Studio XPS 8000 + - hwmon: (gpio-fan) Remove un-necessary speed_index lookup for thermal hook + - hwmon: (ads1015) Handle negative conversion values correctly + - cpufreq: pxa2xx: fix pxa_cpufreq_change_voltage prototype + - cpufreq: Fix NULL reference crash while accessing policy->governor_data + - seccomp: always propagate NO_NEW_PRIVS on tsync + - libceph: fix ceph_msg_revoke() + - libceph: don't bail early from try_read() when skipping a message + - libceph: use the right footer size when skipping a message + - libceph: don't spam dmesg with stray reply warnings + - sd: Optimal I/O size is in bytes, not sectors + - Staging: speakup: Fix getting port information + - cdc-acm:exclude Samsung phone 04e8:685d + - tick/nohz: Set the correct expiry when switching to nohz/lowres mode + - rfkill: fix rfkill_fop_read wait_event usage + - mac80211: Requeue work after scan complete for all VIF types. + - workqueue: handle NUMA_NO_NODE for unbound pool_workqueue lookup + - Revert "workqueue: make sure delayed work run in local cpu" + - ALSA: hda - Apply clock gate workaround to Skylake, too + - ALSA: hda - Fixing background noise on Dell Inspiron 3162 + - target: Fix LUN_RESET active I/O handling for ACK_KREF + - target: Fix LUN_RESET active TMR descriptor handling + - target: Fix TAS handling for multi-session se_node_acls + - target: Fix remote-port TMR ABORT + se_cmd fabric stop + - target: Fix race with SCF_SEND_DELAYED_TAS handling + - qla2xxx: Fix stale pointer access. + - libata: fix sff host state machine locking while polling + - PCI/AER: Flush workqueue on device remove to avoid use-after-free + - cpuset: make mm migration asynchronous + - cgroup: make sure a parent css isn't offlined before its children + - writeback: keep superblock pinned during cgroup writeback + association switches + - phy: core: fix wrong err handle for phy_power_on + - [x86] i2c: i801: Adding Intel Lewisburg support for iTCO + - bio: return EINTR if copying to user space got interrupted + - block: fix use-after-free in dio_bio_complete + - nfs: fix nfs_size_to_loff_t + - NFSv4: Fix a dentry leak on alias use + - KVM: async_pf: do not warn on page allocation failures + - [armhf,arm64] KVM: vgic: Ensure bitmaps are long enough + - [x86] KVM: fix missed hardware breakpoints + - [x86] KVM: fix conversion of addresses to linear in 32-bit protected mode + - [x86] KVM: MMU: fix ubsan index-out-of-range warning + - [powerpc] eeh: Fix partial hotplug criterion + - tracing: Fix showing function event in available_events + - sunrpc/cache: fix off-by-one in qword_get() + - kernel/resource.c: fix muxed resource handling in __request_region() + - do_last(): don't let a bogus return value from ->open() et.al. to + confuse us + - [armhf] OMAP2+: Fix onenand initialization to avoid filesystem corruption + - [armhf] xen: correctly handle DMA mapping of compound pages + - xen/scsiback: correct frontend counting + - xen/pciback: Check PF instead of VF for PCI_COMMAND_MEMORY + - xen/pciback: Save the number of MSI-X entries to be copied later. + - xen/pcifront: Fix mysterious crashes when NUMA locality information + was extracted. + - should_follow_link(): validate ->d_seq after having decided to follow + - do_last(): ELOOP failure exit should be done after leaving RCU mode + - [x86] mpx: Fix off-by-one comparison with nr_registers + - [x86] entry/compat: Add missing CLAC to entry_INT80_32 + - [x86] irq: Call chip->irq_set_affinity in proper context + - [x86] irq: Fix a race in x86_vector_free_irqs() + - [x86] irq: Validate that irq descriptor is still active + - [x86] irq: Do not use apic_chip_data.old_domain as temporary buffer + - [x86] irq: Reorganize the return path in assign_irq_vector + - [x86] irq: Reorganize the search in assign_irq_vector + - [x86] irq: Check vector allocation early + - [x86] irq: Copy vectormask instead of an AND operation + - [x86] irq: Remove offline cpus from vector cleanup + - [x86] irq: Clear move_in_progress before sending cleanup IPI + - [x86] irq: Remove the cpumask allocation from send_cleanup_vector() + - [x86] irq: Remove outgoing CPU from vector cleanup mask + - [x86] irq: Call irq_force_move_complete with irq descriptor + - [x86] irq: Plug vector cleanup race + - IB/cma: Fix RDMA port validation for iWarp + - security: let security modules use PTRACE_MODE_* with bitmasks + - iwlwifi: dvm: fix WoWLAN + - iwlwifi: pcie: properly configure the debug buffer size for 8000 + - iwlwifi: update and fix 7265 series PCI IDs + - iwlwifi: mvm: don't allow sched scans without matches to be started + + [ Roger Shimizu ] + * [armhf] dts: imx6dlq-wandboard-revb1: use unique model id + (Closes: #813881). + * [armel] dts: Add various device-tree fixes and improvements for + Buffalo Linkstation devices. + + [ Ben Hutchings ] + * udeb: Include more modules, including those needed on Firefly-RK3288, + thanks to Vagrant Cascadian (Closes: #815476) + - [armhf] core-modules: Include regulator drivers by default + - mmc-modules: Include MMC controller drivers by default + - mmc-modules: Depends on usb-modules + - usb-modules: Include USB PHY drivers by default + * uas: Fix high-order alloc + * Fix/ignore module ABI changes in 4.4.4 as appropriate + * Revert "drm/radeon: call hpd_irq_event on resume", reported to cause + regressions (crash/hang) on some systems + * [powerpc*] Fix module linking to work with binutils 2.26 (Closes: #808043): + - Simplify module TOC handling + - Fix dedotify for binutils >= 2.26 + + [ Ian Campbell ] + * [armhf] dts: Add DTB for Novena, patches from Vagrant Cascadian + (Closes: #815324) + + [ Uwe Kleine-König ] + * [armhf] enable AXP20X_POWER (Closes: #815971) + * [rt] Update to 4.4.3-rt9 + + -- Ben Hutchings Mon, 07 Mar 2016 19:27:18 +0000 + +linux-tools (4.4-4) unstable; urgency=medium + + * hyperv-daemons: Only build the progarams on x86 (fixes FTBFS) + + -- Ben Hutchings Sun, 21 Feb 2016 16:57:55 +0000 + +linux-tools (4.4-3) unstable; urgency=medium + + * hyperv-daemons: Add init scripts + + -- Ben Hutchings Sun, 21 Feb 2016 15:07:55 +0000 + +linux (4.4.2-3) unstable; urgency=medium + + * [x86] efi-bgrt: Fix kernel panic when mapping BGRT data (Closes: #815125) + * [x86] efi-bgrt: Replace early_memremap() with memremap() + + -- Ben Hutchings Sun, 21 Feb 2016 13:11:18 +0000 + +linux-tools (4.4-2) unstable; urgency=medium + + * linux-perf: Include version number in strace groups installation directory + (Closes: #813080) + * [alpha,sh4] Attempt to fix build failures + * Build fixdep under debian/build and clean it up properly + + -- Ben Hutchings Fri, 19 Feb 2016 17:11:29 +0000 + +linux (4.4.2-2) unstable; urgency=medium + + [ Ben Hutchings ] + * udeb: Make DAC960 and cciss optional in scsi-modules again + (fixes FTBFS on armhf, arm64) + * [armel,armhf] net: mv643xx_eth: fix packet corruption with TSO and tiny + unaligned packets. (Closes: #814681) + * [mipsel/loongson-2f] udeb: Add i2c-modules to avoid duplicate modules + + [ Martin Michlmayr ] + * [arm64] Create i2c-modules udeb to avoid duplicate modules. + + -- Ben Hutchings Fri, 19 Feb 2016 14:48:52 +0000 + +linux-tools (4.4-1) unstable; urgency=medium + + * Upload to unstable + + -- Ben Hutchings Thu, 18 Feb 2016 01:30:50 +0000 + +linux (4.4.2-1) unstable; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.4.2 + - ALSA: usb-audio: avoid freeing umidi object twice (CVE-2016-2384) + + [ Ben Hutchings ] + * Set ABI to 1 + * iw_cxgb3: Fix incorrectly returning error on success (CVE-2015-8812) + * fs/hugetlbfs/inode.c: fix bugs in hugetlb_vmtruncate_list() (CVE-2016-0617) + (regression in 4.3) + * af_unix: Guard against other == sk in unix_dgram_sendmsg + (regression in 4.2.6-2) + * Revert "workqueue: make sure delayed work run in local cpu" + (regression in 4.3) + * af_unix: Don't set err in unix_stream_read_generic unless there was an error + (regression in 4.4, 4.3.4) + * bpf: fix branch offset adjustment on backjumps after patching ctx expansion + (CVE-2016-2383) + * udeb: Combine scsi-{common,extra}-modules with scsi-modules + * udeb: Use wildcards to include entire classes of drivers: + - input-modules: Include HID drivers by default + - nic{,-pcmcia,-usb,-wireless}-modules: Include Ethernet, USB and wireless + drivers by default + - {pata,sata}-modules: Include ATA drivers by default + - sound-modules: Include sound drivers by default + - scsi-modules: Include SCSI drivers by default + - usb-modules: Include USB host drivers by default + - usb-serial-modules: Include USB serial drivers by default + - usb-storage-modules: Include USB storage drivers by default + * udeb: Remove some obsolete drivers: + - nic-modules: Remove FDDI and HIPPI drivers, and inet_lro module + - nic-pcmcia-modules: Remove Arcnet drivers + * udeb: Move most USB wireless drivers from nic-usb-modules to + nic-wireless-modules + * udeb: Really add virtio_input to virtio-modules (not input-modules) + * [x86] Fix issues resulting in W+X pages: + - [amd64] efi: Build our own page table structure + - [i386/686-pae] mm: Fix types used in pgprot cacheability flags + translations + - [i386/686-pae] PCI: Set pci=nobios by default + * IFF_NO_QUEUE: Fix for drivers not calling ether_setup() (regression in 4.3) + * udeb: Fix issues with wildcards that caused FTBFS on armhf, thanks to + Karsten Merker + + [ Roger Shimizu ] + * Enable TTY_PRINTK as module (Closes: #814540). + + [ Uwe Kleine-König ] + * [rt] Update to 4.4.1-rt6 + + -- Ben Hutchings Wed, 17 Feb 2016 21:20:12 +0000 + +linux (4.4.1-1~exp1) experimental; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.4.1 + + [ Ricardo Salveti ] + * Extending ARM64 support: + - config: enabling support for the AMD Seattle platform + - nic-modules: adding amd-xgbe + - sata-modules: adding ahci_platform, required by AMD Overdrive + - config: enabling the cpuidle ARM driver + - config: enable multi-core scheduler support by default + - config: enable PCI generic host bridge by default + - config: enable CRYPTO_CRC32_ARM64 by default + + [ Ian Campbell ] + * [arm64] Enabled support for QCOM platforms, options recommended by Martin + Michlmayr. (Closes: #812386) + * [armel/marvell] Declare breaks against flash-kernel << 3.57~ in order to + force a version which understands about the merge of kirkwood and orion5x + flavours into marvell. + + [ Ben Hutchings ] + * linux-image: Make failure of depmod fatal, rather than asking what to do + * [mips*] linux-image: Remove debconf question for requirement of initramfs + * linux-image: Remove unnecessary debconf initialisations + * linux-{headers,image}: Remove support for version-specific hooks + * linux-headers: Make postinst script less verbose (see: #734266) + * [armel] Replace kirkwood and orion5x flavours with a 'marvell' flavour + * [armel/marvell] Adjust configuration to reduce image size: + - Disable support for DNS-323 as the kernel image was already too large + for this machine + + Disable MACH_DNS323 + + Change MTD_CFI_AMDSTD from built-in to module + - input: Disable KEYBOARD_ATKBD + - mtd: Change JFFS2_FS, MTD_SPI_NOR, and M25P80 from built-in to modules + * [rt] Update to 4.4.1-rt5: + - genirq: Add default affinity mask command line option + - latencyhist: disable jump-labels + - kernel/perf: mark perf_cpu_context's timer as irqsafe + * bnx2x: Enable BNX2X_VXLAN + * cgroups: Enable CGROUP_PIDS + * crypto: Enable CRYPTO_CHACHA20, CRYPTO_POLY1305, CRYPTO_CHACHA20POLY1305, + CRYPTO_USER_API_AEAD as modules + * [x86] crypto: Enable CRYPTO_DEV_QAT_DH895xCC, CRYPTO_DEV_QAT_DH895xCCVF + as modules + * [amd64] crypto: Enable CRYPTO_CHACHA20_X86_64, CRYPTO_DES3_EDE_X86_64, + CRYPTO_POLY1305_X86_64 as modules + * [x86] dmaengine: Enable INTEL_IDMA64 as module + * debug: Enable SCHED_STACK_END_CHECK + * dm-cache: Enable DM_CACHE_SMQ as module + * ethernet: Enable BNXT, QED, QEDE as modules + * hci_uart: Enable BT_HCIUART_QCA + * HID: Enable HID_CORSAIR, HID_GEMBIRD as modules + * [x86] hwmon: Enable SENSORS_I5500 as module + * [x86] IB: Enable INFINIBAND_USNIC as module + * iio/light: Enable ACPI_ALS as module + * [x86] input: Enable SURFACE_PRO3_BUTTON as module + * [x86] iommu: Enable INTEL_IOMMU_SVM + * ipvs: Enable IP_VS_OVF as module + * media: Enable DVB_NETUP_UNIDVB, USB_GSPCA_TOUPTEK,_VIDEO_DT3155 as modules + * [x86] mfd: Enable MFD_INTEL_LPSS_ACPI, MFD_INTEL_LPSS_PCI as modules + * [amd64] mic: Enable INTEL_MIC_X100_DMA, MIC_COSM, SCIF, SCIF_BUS as modules + * [powerpc*/*64*] misc: Enable GENWQE as module + * net: Enable LWTUNNEL, NET_L3_MASTER_DEV; and MPLS_IPTUNNEL, NET_VRF + as modules + * [amd64] net: Enable FUJITSU_ES as module + * netfilter: Really enable NF_TABLES_NETDEV, NFT_REDIR_IPV4, NFT_REDIR_IPV6 + as modules + * net/phy: Enable AQUANTIA_PHY, DP83848_PHY, MICROCHIP_PHY, TERANETICS_PHY + as modules + * net/sched: Really enable NET_CLS_FLOWER as module + * net/usb: Enable USB_LAN78XX, USB_NET_CH9200 as modules + * nfsd: Enable NFSD_PNFS + * [x86] pinctrl: Enable PINCTRL_BROXTON, PINCTRL_SUNRISEPOINT + * [x86] rfkill: Enable DELL_RBTN as module + * serial: Enable SERIAL_OF_PLATFORM as module + * sound/firewire: Enable SND_FIREWIRE_DIGI00X, SND_FIREWIRE_TASCAM as modules + * [x86] thermal: Enable INTEL_PCH_THERMAL, INTEL_SOC_DTS_THERMAL as modules; + disable THERMAL_OF + * [x86] Enable INTEL_PMC_IPC as module + * vfs,nvdimm: Really enable FS_DAX + * [amd64] mm,nvdimm: Disable ZONE_DMA; enable ZONE_DEVICE, NVDIMM_PFN + - This disables drivers for some AC'97 sound cards + + -- Ben Hutchings Wed, 10 Feb 2016 02:02:14 +0000 + +linux (4.4-1~exp1) experimental; urgency=medium + + * New upstream release: http://kernelnewbies.org/Linux_4.4 + + [ Ben Hutchings ] + * [armhf] Enable EXTCON_USB_GPIO, ENSORS_GPIO_FAN as modules, and + USB_DWC3_DUAL_ROLE instead of USB_DWC3_HOST (Closes: #810048) + * [rt] Update to 4.4-rt2 + + -- Ben Hutchings Tue, 19 Jan 2016 22:25:06 +0000 + +linux-tools (4.4-1~exp2) experimental; urgency=medium + + * linux-perf: Fix FTBFS with gcc 6 (used on hppa, sparc64) + + -- Ben Hutchings Tue, 19 Jan 2016 22:11:13 +0000 + +linux-tools (4.4-1~exp1) experimental; urgency=medium + + * New upstream release + + [ Ben Hutchings ] + * linux-perf: Fix reading of build-id from vDSO + * linux-perf: Leave -rc suffix out of version in package description + * debian.py: Implement stable order of fields not in the predefined order + * genorig.py: Make orig tarballs really reproducible: + - Override umask while extracting/exporting files + - Override user and group names in tarball + + -- Ben Hutchings Tue, 19 Jan 2016 00:31:02 +0000 + +linux (4.4~rc8-1~exp1) experimental; urgency=medium + + * New upstream release candidate + + [ Ben Hutchings ] + * [rt] Update to 4.4-rc6-rt1 and re-enable + * [rt] Fix build error in kernel/time/hrtimer.c + * [rt] latency_hist: Update sched_switch probe + * [armhf] Add support for BCM2836 and Raspberry Pi 2: + - pwm: bcm2835: Calculate scaler in ->config() + - pwm: bcm2835: Prevent division by zero + - drm: Create a driver hook for allocating GEM object structs + - drm/vc4: Add a BO cache + - drm/vc4: Add create and map BO ioctls + - drm/vc4: Add an API for creating GPU shaders in GEM BOs + - drm/vc4: Fix a typo in a V3D debug register + - drm/vc4: Bind and initialize the V3D engine + - drm/vc4: Add support for drawing 3D frames + - drm/vc4: Add support for async pageflips + - drm/vc4: Add an interface for capturing the GPU state after a hang + - drm/vc4: copy_to_user() returns the number of bytes remaining + - drm/vc4: allocate enough memory in vc4_save_hang_state() + - drm/vc4: fix an error code + - bcm2835: Add a compat string for bcm2836 machine probe + - bcm2835: Add Kconfig support for bcm2836 + - bcm2835: Define two new packets from the latest firmware + - bcm2835: add rpi power domain driver + - bcm2835: Split the DT for peripherals from the DT for the CPU + - bcm2835: Move the CPU/peripheral include out of common RPi DT + - bcm2835: Add devicetree for bcm2836 and Raspberry Pi 2 B + - bcm2835: Add the auxiliary clocks to the device tree + - Enable ARCH_BCM, ARCH_BCM2835, DMA_BCM2835, BCM2835_MBOX, + RASPBERRYPI_FIRMWARE, RASPBERRYPI_POWER + - Enable DRM_VC4, I2C_BCM2835, MMC_SDHCI_BCM2835, PWM_BCM2835, SPI_BCM2835, + SPI_BCM2835AUX, USB_DWC2, BCM2835_WDT, SND_BCM2835_SOC_I2S as modules + - udeb: Add sdhci-bcm2835 to mmc-modules, dwc2 to usb-modules + * [armhf] Enable INPUT_AXP20X_PEK, CAN_SUN4I, SND_SUN4I_CODEC as modules + (Closes: #808623) + * [x86] nvdimm: Change X86_PMEM_LEGACY from built-in to module + * [x86] Enable DEBUG_WX, X86_INTEL_MPX + + [ Ian Campbell ] + * [armel/kirkwood] Updates/clarifications to kernel size limitations from + Martin Michlmayr. (Closes: #809528) + * [armhf] Enable support for Rockchip devices. (Closes: #809083) + * [armhf] Enable basic support for DRA7XX systems, such as Beagle-x15. + (Closes: #807624) + + -- Ben Hutchings Mon, 04 Jan 2016 17:23:28 +0000 + +linux (4.4~rc6-1~exp1) experimental; urgency=medium + + * New upstream release candidate + - include/linux/mmdebug.h: should include linux/bug.h + (fixes FTBFS on arm64) + + [ Ben Hutchings ] + * [sparc64] udeb: Replace mpt2sas with mpt3sas in scsi-common-modules + (fixes FTBFS) + + -- Ben Hutchings Mon, 21 Dec 2015 17:30:10 +0000 + +linux (4.4~rc5-1~exp1) experimental; urgency=medium + + * New upstream release candidate + + [ Ben Hutchings ] + * [arm64] Drop now-redundant patches for X-Gene (fixes FTBFS) + * [s390x] udeb: Add crc-modules package (fixes FTBFS) + * cirrus,mgag200: Drop patches for compatibility with wheezy userland + + -- Ben Hutchings Wed, 16 Dec 2015 17:16:09 +0000 + +linux-tools (4.4~rc4-1~exp1) experimental; urgency=medium + + * New upstream release candidate + + -- Ben Hutchings Mon, 14 Dec 2015 01:28:50 +0000 + +linux (4.4~rc4-1~exp1) experimental; urgency=medium + + * New upstream release candidate + + [ Ben Hutchings ] + * aufs: Update support patches to aufs4.x-rcN-20151123 + * udeb: Make md-modules depend on crc-modules (Closes: #807661) + * [armel/kirkwood,armhf] crypto: Enable CRYPTO_DEV_MARVELL_CESA as module + (Closes: #807634) + + -- Ben Hutchings Sun, 13 Dec 2015 16:25:45 +0000 + +linux (4.3.5-1) unstable; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.3.4 + - toshiba_acpi: Initialize hotkey_event_type variable (regression in 4.3) + - USB: add quirk for devices with broken LPM + - usb: core : hub: Fix BOS 'NULL pointer' kernel panic + - pppoe: fix memory corruption in padt work structure (regression in 4.1) + - ipv6: keep existing flags when setting IFA_F_OPTIMISTIC + (regression in 4.1) + - vxlan: fix incorrect RCO bit in VXLAN header (regression in 4.0) + - sctp: update the netstamp_needed counter when copying sockets + - sctp: also copy sk_tsflags when copying the socket (regression in 3.17) + - r8152: fix lockup when runtime PM is enabled (regression in 4.2) + - ipv6: sctp: clone options to avoid use after free + - phy: micrel: Fix finding PHY properties in MAC node. (regression in 4.2) + - openvswitch: Fix helper reference leak + - openvswitch: Respect conntrack zone even if invalid + - net: fix IP early demux races + - vlan: Fix untag operations of stacked vlans with REORDER_HEADER off + - skbuff: Fix offset error in skb_reorder_vlan_header + - net: check both type and procotol for tcp sockets + - net_sched: make qdisc_tree_decrease_qlen() work for non mq + (regression in 4.3.3) + - net: fix uninitialized variable issue + - ipv6: automatically enable stable privacy mode if stable_secret set + - inet: tcp: fix inetpeer_set_addr_v4() (regression in 4.3) + - rhashtable: Enforce minimum size on initial hash table (regression in 4.1) + - fou: clean up socket with kfree_rcu + - af_unix: Revert 'lock_interruptible' in stream receive code + - tcp: restore fastopen with no data in SYN packet (regression in 4.0) + - rhashtable: Fix walker list corruption (regression in 4.1) + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.3.5 + - [x86] mpx: Fix instruction decoder condition + - [x86] signal: Fix restart_syscall number for x32 tasks + - [x86] paravirt: Prevent rtc_cmos platform device init on PV guests + (regression in 4.2) + - [powerpc*] KVM: Book3S HV: Don't dynamically split core when already split + (regression in 4.3) + - [powerpc*] KVM: Book3S HV: Prohibit setting illegal transaction state + in MSR + - [x86] boot: Double BOOT_HEAP_SIZE to 64KB + - [x86] mm: Add barriers and document switch_mm()-vs-flush synchronization + (CVE-2016-2069) + - timers: Use proper base migration in add_timer_on() + - ipmi: move timer init to before irq is setup + - ALSA: hda - Disable 64bit address for Creative HDA controllers + - ALSA: hda - Fix lost 4k BDL boundary workaround (regression in 4.2) + - [x86] ALSA: hda - Fix noise on Dell Latitude E6440 (regression in 4.1) + - ALSA: hda - Skip ELD notification during system suspend + (regression in 4.3) + - ALSA: seq: Fix missing NULL check at remove_events ioctl + - ALSA: usb-audio: Avoid calling usb_autopm_put_interface() at disconnect + - ALSA: seq: Fix race at timer setup and close + - [x86] ALSA: hda - Fix white noise on Dell Latitude E5550 + (regression in 4.1) + - ALSA: usb-audio: Fix mixer ctl regression of Native Instrument devices + (regression in 3.19) + - ALSA: timer: Harden slave timer list handling + - ALSA: timer: Fix race among timer ioctls + - ALSA: timer: Fix double unlink of active_list + - [x86] ALSA: hda - Add fixup for Dell Latitidue E6540 (regression in 4.1) + - ALSA: seq: Fix snd_seq_call_port_info_ioctl in compat mode + - ALSA: pcm: Fix snd_pcm_hw_params struct copy in compat mode + - ALSA: control: Avoid kernel warnings from tlv ioctl with numid 0 + - ALSA: timer: Handle disconnection more safely + - ASoC: rt286: Fix run time error while modifying const data + (regression in 4.3) + - airspy: increase USB control message buffer size (regression in 3.17) + - USB: fix invalid memory access in hub_activate() + - openvswitch: correct encoding of set tunnel action attributes + (regression in 4.3) + - veth: don’t modify ip_summed; doing so treats packets with bad checksums + as good. + - ipv6/addrlabel: fix ip6addrlbl_get() + - addrconf: always initialize sysctl table data + - connector: bump skb->users before callback invocation + - af_unix: Fix splice-bind deadlock + - bridge: Only call /sbin/bridge-stp for the initial network namespace + - net: filter: make JITs zero A for SKF_AD_ALU_XOR_X (regression in 3.16) + - net: sched: fix missing free per cpu on qstats (regression in 3.18) + - net: possible use after free in dst_release + - tcp: fix zero cwnd in tcp_cwnd_reduction (CVE-2016-2070) + (regression in 4.3) + - net: sctp: prevent writes to cookie_hmac_alg from accessing invalid memory + - ipv6: tcp: add rcu locking in tcp_v6_send_synack() + - tcp_yeah: don't set ssthresh below 2 + - udp: disallow UFO for sockets with SO_NO_CHECK option (regression in 4.0) + - net: preserve IP control block during GSO segmentation + - phonet: properly unshare skbs in phonet_rcv() (regression in 4.0) + - net: bpf: reject invalid shifts + - ipv6: update skb->csum when CE mark is propagated + - batman-adv: Avoid recursive call_rcu for batadv_bla_claim + - batman-adv: Avoid recursive call_rcu for batadv_nc_node + - batman-adv: Drop immediate batadv_orig_ifinfo free function + - batman-adv: Drop immediate batadv_neigh_node free function + - batman-adv: Drop immediate neigh_ifinfo free function + - batman-adv: Drop immediate batadv_hard_iface free function + - batman-adv: Drop immediate orig_node free function + - team: Replace rcu_read_lock with a mutex in team_vlan_rx_kill_vid + - xfrm: dst_entries_init() per-net dst_ops + - [powerpc*] tm: Block signal return setting invalid MSR state + - [powerpc*] tm: Check for already reclaimed tasks + - [ppc64el] opal-irqchip: Fix double endian conversion (regression in 4.2) + - [powerpc*] opal-irqchip: Fix deadlock introduced by "Fix double endian + conversion" + - [powerpc*] powernv: pr_warn_once on unsupported OPAL_MSG type + - [powerpc*] Make value-returning atomics fully ordered + - [powerpc*] Make {cmp}xchg* and their atomic_ versions fully ordered + - [arm64] bpf: fix div-by-zero case + - [arm64] bpf: fix mod-by-zero case + - [arm64] cmpxchg_dbl: fix return value type (regression in 4.3) + - [arm*] KVM: test properly for a PTE's uncachedness + - [arm64] KVM: Fix AArch32 to AArch64 register mapping + - [arm*] KVM: correct PTE uncachedness check + - [arm64] kernel: enforce pmuserenr_el0 initialization and restore + - [arm*] iommu/arm-smmu: Fix error checking for ASID and VMID allocation + - HID: wacom: Tie cached HID_DG_CONTACTCOUNT indices to report ID + (regression in 4.3) + - HID: wacom: Expect 'touch_max' touches if HID_DG_CONTACTCOUNT not present + (regression in 4.3) + - HID: core: Avoid uninitialized buffer access + - staging: lustre: echo_copy.._lsm() dereferences userland pointers directly + - direct-io: Fix negative return from dio read beyond eof + - fix the regression from "direct-io: Fix negative return from dio read + beyond eof" + - [arm64] KVM: Add workaround for Cortex-A57 erratum 834220 + - [arm64] kernel: fix architected PMU registers unconditional access + + [ Ben Hutchings ] + * fuse: break infinite loop in fuse_fill_write_pages() (CVE-2015-8785) + * SCSI: fix crashes in sd and sr runtime PM (Closes: #801925) + * rt2x00: fix monitor mode regression (regression in 4.2) + * pipe: limit the per-user amount of pages allocated in pipes (CVE-2013-4312) + [Original reference is incorrect; should be CVE-2016-2847.] + * [powerpc*] Enable CRYPTO_DEV_VMX and enable CRYPTO_DEV_VMX_ENCRYPT as + module (Closes: #813640) + * debian/copyright: Add licence information for drivers/crypto/vmx/*.pl + * udeb: Add hid-logitech-hidpp to input-modules (Closes: #796096) + * hwrng: n2 - Attach on T5/M5, T7/M7 SPARC CPUs (Closes: #809815) + + [ Salvatore Bonaccorso ] + * netfilter: nf_nat_redirect: add missing NULL pointer check (CVE-2015-8787) + + [ Aurelien Jarno ] + * [mips*] Backport math emulation fix from 4.5. + * [arm64] Enable RTC_DRV_EFI. + + [ Hendrik Brueckner ] + * [s390x] udeb: include modules to mount ISOs (loop device) + (Closes: #812336) + * [s390x] udeb: include btrfs-modules (Closes: #812340) + + [ Martin Michlmayr ] + * Include Device Tree model in reportbug script + + -- Ben Hutchings Sat, 06 Feb 2016 23:25:14 +0000 + +linux (4.3.3-7) unstable; urgency=medium + + * linux-image-dbg: Don't rely on upstream makefile to make .build-id + links to vDSO debuginfo (fixes FTBFS on arm64, s390) + + -- Ben Hutchings Tue, 19 Jan 2016 17:29:21 +0000 + +linux (4.3.3-6) unstable; urgency=medium + + [ Ben Hutchings ] + * debian.py: Implement stable order of fields in debian/tests/control + * debian.py: Implement stable order of fields not in the predefined order + * genorig.py: Make orig tarballs really reproducible: + - Override umask while extracting/exporting files + - Override user and group names in tarball + * xen/gntdev: Grant maps should not be subject to NUMA balancing + (Closes: #810472) + * gpio: Enable GPIO_SYSFS wherever GPIOLIB is enabled (Closes: #810085) + * [armhf] udeb: Include usbhid in input-modules (Closes: #809521) + * linux-image-dbg: Include debugging symbols for VDSOs + * [armel/kirkwood] power/reset: Re-enable POWER_RESET, POWER_RESET_GPIO + (regression in 3.17~rc5-1~exp1) + * usb: serial: visor: fix crash on detecting device without write_urbs + (CVE-2015-7566) + * tty: Fix unsafe ldisc reference via ioctl(TIOCGETD) (CVE-2016-0723) + * [x86] drm/vmwgfx: Fix a width / pitch mismatch on framebuffer updates + * bcache: Add upstream fixes marked for stable: + - fix a livelock when we cause a huge number of cache misses + - Add a cond_resched() call to gc + - clear BCACHE_DEV_UNLINK_DONE flag when attaching a backing device + - fix a leak in bch_cached_dev_run() + - unregister reboot notifier if bcache fails to unregister device + - allows use of register in udev to avoid "device_busy" error. + - prevent crash on changing writeback_running + - Change refill_dirty() to always scan entire disk if necessary + * KEYS: Fix keyring ref leak in join_session_keyring() (CVE-2016-0728) + + [ Salvatore Bonaccorso ] + * unix: properly account for FDs passed over unix sockets (CVE-2013-4312) + + -- Ben Hutchings Tue, 19 Jan 2016 00:41:31 +0000 + +linux (4.3.3-5) unstable; urgency=medium + + * [armhf] udeb: Fix duplication and circular dependency between core-modules + and usb-modules (really fixes FTBFS) + - Add core-modules as a dependency of usb-modules + - Remove gpio-viperboard from core-modules as it is unlikely to be needed + + -- Ben Hutchings Mon, 04 Jan 2016 00:45:27 +0000 + +linux (4.3.3-4) unstable; urgency=medium + + * [armhf] udeb: Remove pbias-regulator module from mmc-modules as it's now + in core-modules (fixes FTBFS) + + -- Ben Hutchings Sun, 03 Jan 2016 01:50:52 +0000 + +linux (4.3.3-3) unstable; urgency=medium + + [ Ben Hutchings ] + * [ppc64*] drm: Enable DRM_AST as module (Closes: #808338) + * block: ensure to split after potentially bouncing a bio (Closes: #809082) + * pptp: verify sockaddr_len in pptp_bind() and pptp_connect() (CVE-2015-8569) + * bluetooth: Validate socket address length in sco_sock_bind() (CVE-2015-8575) + * [xen] Fix race conditions in back-end drivers (CVE-2015-8550, XSA-155) + * [xen] pciback: Fix state validation in MSI control operations + (CVE-2015-8551, CVE-2015-8852, XSA-157) + * ptrace: being capable wrt a process requires mapped uids/gids + (CVE-2015-8709) + * KEYS: Fix race between read and revoke (CVE-2015-7550) + * [armhf] udeb: Add modular clock, GPIO, PCIe PHY and regulator drivers to + core-modules (Closes: #809521) + * [armhf] udeb: Add more USB PHY drivers to usb-modules + * drm/nouveau/pmu: do not assume a PMU is present (Closes: #809481) + * [x86] drm/i915: Don't compare has_drrs strictly in pipe config + (Closes: #808720) + * [armhf] crypto: sun4i-ss - add missing statesize (Closes: #808625) + * Revert "xhci: don't finish a TD if we get a short transfer event mid TD" + (Closes: #808602, #808953, regression in 4.3-rc7) + * [x86] pinctrl: Enable PINCTRL_CHERRYVIEW (Closes: #808044) + * [s390x] udeb: Add crc-modules package (Closes: #808051) + + [ Salvatore Bonaccorso ] + * ovl: fix permission checking for setattr (CVE-2015-8660) + * [x86] kvm: Reload pit counters for all channels when restoring state + (CVE-2015-7513) + + -- Ben Hutchings Sat, 02 Jan 2016 16:45:46 +0000 + +linux-tools (4.3.1-2) unstable; urgency=medium + + * Upload for Perl 5.22 transition (Closes: #808329) + * debian/rules: Fix check for binNMU, broken since 4.1.4-1 + + -- Ben Hutchings Sat, 19 Dec 2015 03:47:10 +0000 + +linux (4.3.3-2) unstable; urgency=medium + + * [armhf,sparc64] Force ZONE_DMA to be enabled, reversing ABI change in + 4.3.3 (fixes FTBFS) + * [sh4] Disable CC_STACKPROTECTOR_STRONG temporarily (fixes FTBFS) + + -- Ben Hutchings Thu, 17 Dec 2015 18:21:52 +0000 + +linux (4.3.3-1) unstable; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.3.2 + - X.509: Fix the time validation [ver #2] + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.3.3 + - r8169: fix kasan reported skb use-after-free. (regression in 4.3) + - af-unix: fix use-after-free with concurrent readers while splicing + (regression in 4.2) + - af_unix: don't append consumed skbs to sk_receive_queue + (regression in 4.2) + - af_unix: take receive queue lock while appending new skb + (regression in 4.2) + - af-unix: passcred support for sendpage (regression in 4.2) + - ipv6: Avoid creating RTF_CACHE from a rt that is not managed by fib6 tree + (regression in 4.2) + - ipv6: Check expire on DST_NOCACHE route + - ipv6: Check rt->dst.from for the DST_NOCACHE route (regression in 4.3) + - Revert "ipv6: ndisc: inherit metadata dst when creating ndisc requests" + (regression in 4.3) + - packet: only allow extra vlan len on ethernet devices + - packet: infer protocol from ethernet header if unset + - packet: fix tpacket_snd max frame len + - sctp: translate host order to network order when setting a hmacid + - net/mlx5e: Added self loopback prevention (regression in 4.3) + - net/mlx4_core: Fix sleeping while holding spinlock at rem_slave_counters + (regression in 4.2) + - ip_tunnel: disable preemption when updating per-cpu tstats + - net/ip6_tunnel: fix dst leak (regression in 4.3) + - tcp: disable Fast Open on timeouts after handshake + - tcp: fix potential huge kmalloc() calls in TCP_REPAIR + - tcp: initialize tp->copied_seq in case of cross SYN connection + - net, scm: fix PaX detected msg_controllen overflow in scm_detach_fds + - net: ipmr: fix static mfc/dev leaks on table destruction + - net: ip6mr: fix static mfc/dev leaks on table destruction + - vrf: fix double free and memory corruption on register_netdevice failure + - tipc: fix error handling of expanding buffer headroom (regression in 4.3) + - ipv6: distinguish frag queues by device for multicast and link-local + packets + - bpf, array: fix heap out-of-bounds access when updating elements + - ipv6: add complete rcu protection around np->opt + - net/neighbour: fix crash at dumping device-agnostic proxy entries + - ipv6: sctp: implement sctp_v6_destroy_sock() + - openvswitch: fix hangup on vxlan/gre/geneve device deletion + - net_sched: fix qdisc_tree_decrease_qlen() races + - btrfs: fix resending received snapshot with parent (regression in 4.2) + - Btrfs: fix file corruption and data loss after cloning inline extents + - Btrfs: fix regression when running delayed references (regression in 4.2) + - Btrfs: fix race leading to incorrect item deletion when dropping extents + - Btrfs: fix race leading to BUG_ON when running delalloc for nodatacow + - Btrfs: fix race when listing an inode's xattrs + - rbd: don't put snap_context twice in rbd_queue_workfn() + - ext4 crypto: fix memory leak in ext4_bio_write_page() + - ext4 crypto: fix bugs in ext4_encrypted_zeroout() + - ext4: fix potential use after free in __ext4_journal_stop + (regression in 4.2) + - ext4, jbd2: ensure entering into panic after recording an error in + superblock + - nfsd: serialize state seqid morphing operations + - nfsd: eliminate sending duplicate and repeated delegations + - nfs4: start callback_ident at idr 1 + - nfs4: resend LAYOUTGET when there is a race that changes the seqid + - nfs: if we have no valid attrs, then don't declare the attribute cache + valid + - ocfs2: fix umask ignored issue + - block: fix segment split (regression in 4.3) + - ceph: fix message length computation + - Btrfs: fix regression running delayed references when using qgroups + (regression in 4.2) + + [ Ben Hutchings ] + * net: add validation for the socket syscall protocol argument (CVE-2015-8543) + * [armel/kirkwood] udeb: Override inclusion of gpio_keys in input-modules + (fixes FTBFS) + * vrf: Fix broken backport of "vrf: fix double free and memory corruption on + register_netdevice failure" in 4.3.3 + * net: Ignore ABI changes due to "ipv6: add complete rcu protection around + np->opt", which don't appear to affect out-of-tree modules + * tipc: Fix kfree_skb() of uninitialised pointer (regression in 4.3.3) + + -- Ben Hutchings Tue, 15 Dec 2015 21:25:26 +0000 + +linux-tools (4.3.1-1) unstable; urgency=medium + + * New upstream stable update + - [x86] Add #AC to SVM_EXIT_REASONS + + [ Ben Hutchings ] + * debian/bin/genorig.py: Add more files under arch/*/include/asm to file list + (fixes FTBFS on several architectures) + + -- Ben Hutchings Mon, 14 Dec 2015 00:43:39 +0000 + +linux-tools (4.3-1) unstable; urgency=medium + + * New upstream release + + -- Ben Hutchings Sun, 13 Dec 2015 03:47:05 +0000 + +linux (4.3.1-1) unstable; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.3.1 + + [ Ben Hutchings ] + * Set ABI to 1 + * [armhf] rtc: Enable RTC_DRV_DS1307, RTC_DRV_PCF8563, RTC_DRV_ARMADA38X + (Closes: #807632) + * [armhf] Enable MACH_ARMADA_375, MACH_ARMADA_38X, MACH_ARMADA_39X + (Closes: #807633) + * [armhf] net: Enable MVPP2 as module + * [armel/kirkwood] dts: Fix QNAP TS219 power-off (Closes: #807696) + * [armhf] udeb: Add leds-modules package containing leds-gpio driver + (Closes: #807721) + * [x86] drm/i915: Mark uneven memory banks on gen4 desktop as unknown + swizzling (Closes: #780363) + * Enable CC_STACKPROTECTOR_STRONG (Closes: #805652) + * [x86] input: Enable KEYBOARD_GPIO, INPUT_SOC_BUTTON_ARRAY (Closes: #804864) + * [x86] nouveau: bios: return actual size of the buffer retrieved via _ROM + (Closes: #772716) + * [armhf] Add support for Odroid-XU4 (Closes: #804850) + - mfd: s2mps11: Add manual shutdown method for Odroid XU3 + - dts: Fix power off method for exynos5422-odroidxu3-common + - dts: Split audio configuration to separate exynos5422-odroidxu3-audio + - dts: Add support Odroid XU4 board for exynos5422-odroidxu4 + * udeb: Add hid-chicony to input-modules (Closes: #766570) + * sched: Enable CFS_BANDWIDTH (Closes: #802746) + + -- Ben Hutchings Sun, 13 Dec 2015 00:38:54 +0000 + +linux (4.3-1~exp2) experimental; urgency=medium + + [ Ben Hutchings ] + * mv643xx_eth: Re-enable TSO, fixed upstream in 4.3 + * debian/control: Move patchutils from Build-Depends to Build-Depends-Indep, + as we only use filterdiff when building linux-source- + * debian/control,debian/rules: Support a 'stage1' build profile which + builds only linux-libc-dev (Closes: #695243) + * debian/control: Add ':any' to Build-Depends on python3, to support cross- + bootstrap + * [armhf] Enable new drivers for Allwinner chips (Closes: #804856) + - crypto: Enable CRYPTO_DEV_SUN4I_SS as module + - musb: Enable USB_MUSB_SUNXI as module + * aufs: Update support patches to aufs4.3-20151116 + * [armhf] USB: Change USB, USB_GADGET, and various drivers from built-in to + modules + - musb: Enable USB_MUSB_DUAL_ROLE + * [armhf] musb: Disable MUSB_PIO_ONLY and enable USB_INVENTRA_DMA, + USB_TI_CPPI41_DMA, USB_TUSB_OMAP_DMA + + [ Ian Campbell ] + * [armel/orion5x] Enable Device Tree for orion5x. Patch from Roger Shimizu + (Closes: #803159) + * [armel/orion5x] Enable CONFIG_DEBUG_LL_UART_8250. + + -- Ben Hutchings Fri, 04 Dec 2015 19:36:10 +0000 + +linux (4.3-1~exp1) experimental; urgency=medium + + * New upstream release + + [ Ben Hutchings ] + * netfilter: Enable NFT_DUP_IPV4, NFT_DUP_IPV6 as modules (Closes: #803370) + * tests: Add autopkgtest support + * [x86] Compile with gcc-5 + * [x86] Enable PINCTRL_BAYTRAIL (Closes: #797949) + + [ Salvatore Bonaccorso ] + * Fix typo in image.plain.postinst template. + Add missing space in warn message causing typo "dangling linkto". + Thanks to Jakub Wilk (Closes: #803323) + + -- Ben Hutchings Wed, 04 Nov 2015 07:45:13 +0000 + +linux (4.3~rc7-1~exp1) experimental; urgency=medium + + * New upstream release candidate + - [x86] smpboot: Fix CPU #1 boot timeout (Closes: #802464) + + -- Ben Hutchings Wed, 28 Oct 2015 11:04:27 +0900 + +linux-tools (4.3~rc5-1~exp2) experimental; urgency=medium + + * Fix the build-indep and binary-indep targets (fixes FTBFS for arch:all) + + -- Ben Hutchings Wed, 14 Oct 2015 02:08:09 +0100 + +linux-tools (4.3~rc5-1~exp1) experimental; urgency=medium + + * New upstream release candidate + - perf: Fix build on architectures without CONFIG_PERF_REGS + + -- Ben Hutchings Wed, 14 Oct 2015 00:49:38 +0100 + +linux (4.3~rc5-1~exp1) experimental; urgency=medium + + * New upstream release candidate + + -- Ben Hutchings Wed, 14 Oct 2015 00:48:41 +0100 + +linux-tools (4.3~rc4-1~exp1) experimental; urgency=medium + + * New upstream release candidate + + -- Ben Hutchings Wed, 07 Oct 2015 01:15:46 +0100 + +linux (4.3~rc4-1~exp1) experimental; urgency=medium + + * New upstream release candidate + + [ Ben Hutchings ] + * [armhf] dts: Fix Makefile target for sun4i-a10-itead-iteaduino-plus + (fixes FTBFS) + * [mips*] io: Define ioremap_uc (fixes FTBFS) + + -- Ben Hutchings Tue, 06 Oct 2015 23:27:45 +0100 + +linux (4.3~rc3-1~exp1) experimental; urgency=medium + + * New upstream release candidate + + [ Ben Hutchings ] + * Disable CRAMFS; it was obsoleted by squashfs and initramfs + * [i386] Replace 586 flavour with 686 + - Enable support for OLPC and other Geode-based systems in the 686 flavour + - udeb: Update kernel-versions + + -- Ben Hutchings Sun, 27 Sep 2015 21:02:54 +0100 + +linux (4.2.6-3) unstable; urgency=medium + + * Ignore some gpiochip ABI changes (fixes FTBFS on i386) + + -- Ben Hutchings Sun, 06 Dec 2015 02:12:41 +0000 + +linux (4.2.6-2) unstable; urgency=medium + + [ Salvatore Bonaccorso ] + * [x86] KVM: svm: unconditionally intercept #DB (CVE-2015-8104) + * [x86] KVM: rename update_db_bp_intercept to update_bp_intercept + + [ Ian Campbell ] + * [x86] Xen: expose a more realistic max p2m size in the shared info, fixes + migration (Closes: #797205) + + [ Ben Hutchings ] + * media: usbvision: fix crash on detecting device with invalid configuration + (CVE-2015-7833, partly fixed in 4.2.6-1) + * udeb: Add dm-service-time to multipath-modules (Closes: #806131) + * unix: avoid use-after-free in ep_remove_wait_queue (CVE-2013-7446) + * isdn_ppp: Add checks for allocation failure in isdn_ppp_open() + * ppp, slip: Validate VJ compression slot parameters completely + (CVE-2015-7799) + * Btrfs: fix truncation of compressed and inlined extents (CVE-2015-8374) + * netfilter: Enable NFT_DUP_IPV4, NFT_DUP_IPV6 as modules (Closes: #803370) + * [x86] Enable PINCTRL_BAYTRAIL (Closes: #797949) + * qxl: Enable by default (Closes: #779515) + * [s390*] Update linux-compiler metapackage to gcc-4.9 + * firmware_class: Fix condition in directory search loop (Closes: #804862) + * [x86] input: Enable MOUSE_ELAN_I2C as module, MOUSE_ELAN_I2C_I2C and + MOUSE_ELAN_I2C_SMBUS (Closes: #791631) + * [armhf] hsi: Enable CMT_SPEECH as module (Closes: #791819) + * [armhf] power: Enable BATTERY_RX51 as module (Closes: #791820) + * [x86] psmouse: Enable MOUSE_PS2_VMMOUSE (Closes: #802929) + - linux-image: Add versioned Breaks on xserver-xorg-input-vmmouse to + avoid driver conflicts + * [armhf] udeb: Add stmmac platform modules dwmac-generic, dwmac-socfpga + and dwmac-sunxi to nic-modules (Closes: #805098) + * wireless: Enable WL_MEDIATEK, MT7601U as module + * [x86] drm/i915: shut up gen8+ SDE irq dmesg noise (Closes: #806304) + * [armhf] regulator: Enable REGULATOR_PFUZE100 as module (Closes: #806284) + + -- Ben Hutchings Fri, 04 Dec 2015 02:26:51 +0000 + +linux (4.2.6-1) unstable; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.2.6 + - mmc: core: Fix init_card in 52Mhz (regression in 4.2) + - rtlwifi: rtl8821ae: Fix system lockups on boot (regression in 4.2) + - iwlwifi: mvm: init card correctly on ctkill exit check + (regression in 3.18) + - iwlwifi: mvm: flush fw_dump_wk when mvm fails to start + (regression in 3.18) + - [x86] iommu/vt-d: fix range computation when making room for large pages + - [x86] iommu/amd: Fix BUG when faulting a PROT_NONE VMA + - [x86] iommu/amd: Don't clear DTE flags when modifying it + - drm: fix mutex leak in drm_dp_get_mst_branch_device + - drm: Correct arguments to list_tail_add in create blob ioctl + - drm: crtc: integer overflow in drm_property_create_blob() + - rtl28xxu: fix control message flaws (regression in 4.0) + - ALSA: hda - Fix deadlock at error in building PCM + - [x86] ioapic: Prevent NULL pointer dereference in setup_ioapic_dest() + (regression in 4.2.4) + - mm: make sendfile(2) killable + - drm/radeon/dpm: don't add pwm attributes if DPM is disabled + (regression in 4.0) + - [x86] drm/i915: Restore lost DPLL register write on gen2-4 + (regression in 3.18) + - [x86] drm/i915: Deny wrapping an userptr into a framebuffer + - drm/radeon: don't try to recreate sysfs entries on resume + (regression in 4.2.5) + - drm/radeon: fix dpms when driver backlight control is disabled + (regression in 4.2.4) + - drm/radeon: move bl encoder assignment into bl init + - rbd: require stable pages if message data CRCs are enabled + - rbd: don't leak parent_spec in rbd_dev_probe_parent() + - rbd: prevent kernel stack blow up on rbd map + - [armhf] EXYNOS: Fix double of_node_put() when parsing child power domains + (regression in 4.2) + - [armhf] dts: Fix audio card detection on Peach boards (regression in 4.1) + - [arm64] Revert "ARM64: unwind: Fix PC calculation" + - block: don't release bdi while request_queue has live references + (regression in 4.2) + - dm btree remove: fix a bug when rebalancing nodes after removal + - dm cache: the CLEAN_SHUTDOWN flag was not being set + - dm btree: fix leak of bufio-backed block in btree_split_beneath error path + - Revert "serial: 8250_dma: don't bother DMA with small transfers" + (regression in 4.0) + - [armel] i2c: mv64xxx: really allow I2C offloading (regression in 3.19) + - clkdev: fix clk_add_alias() with a NULL alias device name + (regression in 4.2) + - fbcon: initialize blink interval before calling fb_set_par + (regression in 4.2) + - PCI: Prevent out of bounds access in numa_node override + - ovl: free stack of paths in ovl_fill_super (regression in 4.0) + - ovl: free lower_mnt array in ovl_put_super (regression in 4.0) + - ovl: fix dentry reference leak + - ovl: fix open in stacked overlay (regression in 4.2) + - [x86] Input: alps - only the Dell Latitude D420/430/620/630 have separate + stick button bits (regression in 4.1) + - crypto: api - Only abort operations on fatal signal + - md/raid1: submit_bio_wait() returns 0 on success (regression in 3.10) + - md/raid10: submit_bio_wait() returns 0 on success (regression in 3.10) + - md/raid5: fix locking in handle_stripe_clean_event() (regression in 3.13) + - Revert "md: allow a partially recovered device to be hot-added to an + array." (regression in 3.14) + - [amd64] EDAC, sb_edac: Fix TAD presence check for sbridge_mci_bind_devs() + (regression in 4.2) + - mvsas: Fix NULL pointer dereference in mvs_slot_task_free + - netfilter: ipset: Fix sleeping memory allocation in atomic context + (regression in 4.2) + - btrfs: fix possible leak in btrfs_ioctl_balance() (regression in 4.2.5) + - kvm: irqchip: fix memory leak (regression in 4.2) + - [armhf] thermal: exynos: Fix register read in TMU (regression in 4.2) + - blk-mq: fix use-after-free in blk_mq_free_tag_set() (regression in 4.2) + - IB/cm: Fix rb-tree duplicate free and use-after-free + - sched/deadline: Fix migration of SCHED_DEADLINE tasks (regression in 4.2) + - [arm64] compat: fix stxr failure case in SWP emulation + - NVMe: Fix memory leak on retried commands + - [x86] drm/vmwgfx: Fix up user_dmabuf refcounting + - thp: use is_zero_pfn() only after pte_present() check (regression in 4.1) + - xen: fix backport of previous kexec patch + + [ Ben Hutchings ] + * usbvision: fix overflow of interfaces array (CVE-2015-7833) + * RDS: fix race condition when sending a message on unbound socket + (CVE-2015-7990) + * media/vivid-osd: fix info leak in ioctl (CVE-2015-7884) + * [x86] KVM: Intercept #AC to avoid guest->host denial-of-service + (CVE-2015-5307) + + -- Ben Hutchings Tue, 10 Nov 2015 14:35:05 +0000 + +linux (4.2.5-1) unstable; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.2.4 + - [armhf] KVM: Fix incorrect device to IPA mapping + - [x86] KVM: vmx: fix VPID is 0000H in non-root operation + - kvm: don't try to register to KVM_FAST_MMIO_BUS for non mmio eventfd + - kvm: fix zero length mmio searching + - kvm: factor out core eventfd assign/deassign logic + - kvm: fix double free for fast mmio eventfd + - [armhf] KVM: Disable virtual timer even if the guest is not using it + - kvm: svm: reset mmu on VCPU reset + - [x86] KVM: trap AMD MSRs for the TSeg base and mask + - [powerpc*] KVM: Book3S: Take the kvm->srcu lock in + kvmppc_h_logical_ci_load/store() + - [powerpc*] KVM: Book3S HV: Pass the correct trap argument to + kvmhv_commence_exit + - [x86] Revert "KVM: x86: apply guest MTRR virtualization on host reserved + pages" + - [x86] Revert "KVM: SVM: use NPT page attributes" + - [x86] Revert "KVM: SVM: Sync g_pat with guest-written PAT value" + - time: Fix timekeeping_freqadjust()'s incorrect use of abs() instead of + abs64() + - target/iscsi: Fix np_ip bracket issue by removing np_ip + - scsi: fix scsi_error_handler vs. scsi_host_dev_release race + - target: Attach EXTENDED_COPY local I/O descriptors to xcopy_pt_sess + - target: Fix PR registration + APTPL RCU conversion regression + - iser-target: remove command with state ISTATE_REMOVE + - iser-target: Put the reference on commands waiting for unsol data + - toshiba_acpi: Fix hotkeys registration on some toshiba models + - [x86] perf/intel: Fix constraint access + - [x86] locking/qspinlock: Fix performance regression under unaccelerated + VMs + - [x86] locking/qspinlock: Only emit the test-and-set fallback when + building guest support + - [armhf] 8401/1: perf: Set affinity for PPI based PMUs + - perf hists: Update the column width for the "srcline" sort key + - perf stat: Get correct cpu id for print_aggr + - perf tools: Add missing forward declaration of struct map to probe-event.h + - perf tools: Add empty Build files for architectures lacking them + - perf tools: Fix parse_events_add_pmu caller + - perf header: Fixup reading of HEADER_NRCPUS feature + - perf probe: Use existing routine to look for a kernel module by + dso->short_name + - watchdog: sunxi: fix activation of system reset + - watchdog: imgpdc: Unregister restart handler on remove + - sched: access local runqueue directly in single_task_running + - hwmon: (nct6775) Swap STEP_UP_TIME and STEP_DOWN_TIME registers for most + chips + - [armhf] fix Thumb2 signal handling when ARMv6 is enabled + - [armel,armhf] 8429/1: disable GCC SRA optimization + - [powerpc*] windfarm: decrement client count when unregistering + - [armhf] dts: omap5-uevm.dts: fix i2c5 pinctrl offsets + - [armhf] dts: omap3-beagle: make i2c3, ddc and tfp410 gpio work again + - [armhf] EXYNOS: reset Little cores when cpu is up + - [armhf] dts: sunxi: Raise minimum CPU voltage for sun7i-a20 to meet SoC + specifications + - [armhf] dts: Fix wrong clock binding for sysmmu_fimd1_1 on exynos5420 + - [armhf] dts: fix usb pin control for imx-rex dts + - dax: fix O_DIRECT I/O to the last block of a blockdev + - blockdev: don't set S_DAX for misaligned partitions + - block: blkg_destroy_all() should clear q->root_blkg and ->root_rl.blkg + - dmaengine: at_xdmac: change block increment addressing mode + - dmaengine: at_xdmac: clean used descriptor + - dmaengine: dw: properly read DWC_PARAMS register + - dmaengine: at_xdmac: fix bug in prep_dma_cyclic + - pmem: add proper fencing to pmem_rw_page() + - [x86] apic: Serialize LVTT and TSC_DEADLINE writes + - [x86] alternatives: Make optimize_nops() interrupt safe and synced + - [i386] platform: Fix Geode LX timekeeping in the generic x86 build + - [x86] ioapic: Force affinity setting in setup_ioapic_dest() + - [x86] pci/intel_mid_pci: Work around for IRQ0 assignment + - [x86] paravirt: Replace the paravirt nop with a bona fide empty function + - [amd64] nmi: Fix a paravirt stack-clobbering bug in the NMI code + - [x86] Use WARN_ON_ONCE for missing X86_FEATURE_NRIPS + - [x86] efi: Fix boot crash by mapping EFI memmap entries bottom-up at + runtime, instead of top-down + - [x86] kexec: Fix kexec crash in syscall kexec_file_load() + - [x86] process: Add proper bound checks in 64bit get_wchan() + - [x86] mm: Set NX on gap between __ex_table and rodata + - [x86] xen: Support kexec/kdump in HVM guests by doing a soft reset + - leds:lp55xx: Correct Kconfig dependency for f/w user helper + - leds/led-class: Add missing put_device() + - sched/core: Fix TASK_DEAD race in finish_task_switch() + - [s390x] compat: correct uc_sigmask of the compat signal frame + - [s390x] boot/decompression: disable floating point in decompressor + - Revert "cgroup: simplify threadgroup locking" + - Revert "sched, cgroup: replace signal_struct->group_rwsem with a global + percpu_rwsem" + - memcg: make mem_cgroup_read_stat() unsigned + - spi: Fix documentation of spi_alloc_master() + - spi: bcm2835: BUG: fix wrong use of PAGE_MASK + - spi: spidev: fix possible NULL dereference + - mm: migrate: hugetlb: putback destination hugepage to active list + - lib/iommu-common.c: do not try to deref a null iommu->lazy_flush() + pointer when n < pool->hint + - ocfs2/dlm: fix deadlock when dispatch assert master + - mm: hugetlbfs: skip shared VMAs when unmapping private pages to satisfy a + fault + - memcg: fix dirty page migration + - [armhf] ALSA: hda/tegra - async probe for avoiding module loading deadlock + - ALSA: synth: Fix conflicting OSS device registration on AWE32 + - ALSA: hda: Add dock support for ThinkPad T550 + - ALSA: hda - Apply SPDIF pin ctl to MacBookPro 12,1 + - ALSA: hda - Disable power_save_node for IDT 92HD73xx chips + - ASoC: pxa: pxa2xx-ac97: fix dma requestor lines + - ASoC: dwc: correct irq clear method + - ASoC: db1200: Fix DAI link format for db1300 and db1550 + - ASoC: sgtl5000: fix wrong register MIC_BIAS_VOLTAGE setup on probe + - ASoC: tas2552: fix dBscale-min declaration + - btrfs: skip waiting on ordered range for special files + - Btrfs: fix read corruption of compressed and shared extents + - Btrfs: update fix for read corruption of compressed and shared extents + - PCI: Fix devfn for VPD access through function 0 + - PCI: Use function 0 VPD for identical functions, regular VPD for others + - PCI: Clear IORESOURCE_UNSET when clipping a bridge window + - dm thin: disable discard support for thin devices if pool's is disabled + - dm crypt: constrain crypt device's max_segment_size to PAGE_SIZE + - ath10k: fix dma_mapping_error() handling + - svcrdma: Fix send_reply() scatter/gather set-up + - md/raid0: update queue parameter in a safer location. + - md/raid0: apply base queue limits *before* disk_stack_limits + - dm raid: fix round up of default region size + - netfilter: nfnetlink: work around wrong endianess in res_id field + - netfilter: nf_tables: Use 32 bit addressing register from + nft_type_to_reg() + - netfilter: ipset: Out of bound access in hash:net* types fixed + - netfilter: ipset: Fixing unnamed union init + - netfilter: nf_log: wait for rcu grace after logger unregistration + - netfilter: nft_compat: skip family comparison in case of NFPROTO_UNSPEC + - netfilter: nf_log: don't zap all loggers on unregister + - regulator: core: Correct return value check in regulator_resolve_supply + - regulator: axp20x: Fix enable bit indexes for DCDC4 and DCDC5 + - regulator: core: Handle probe deferral from DT when resolving supplies + - Bluetooth: Delay check for conn->smp in smp_conn_security() + - nfs: fix v4.2 SEEK on files over 2 gigs + - NFS: Do cleanup before resetting pageio read/write to mds + - NFSv4: Recovery of recalled read delegations is broken + - nfs: fix pg_test page count calculation + - NFS: Fix a write performance regression + - cifs: Fix sec=krb5 on smb3 mounts + - cifs: disabling oplocks/leases via module parm enable_oplocks broken for + SMB3 + - cifs: Do not fall back to SMBWriteX in set_file_size error cases + - drm/qxl: only report first monitor as connected if we have no state + - drm/qxl: recreate the primary surface when the bo is not primary + - drm/amdgpu: fix overflow on 32bit systems + - drm/amdgpu: Disable UVD PG + - drm/amdgpu: fix the UVD suspend sequence order + - drm/amdgpu: make UVD handle checking more strict + - drm/amdgpu: Fix max_vblank_count value for current display engines + - drm/amdgpu: Restore LCD backlight level on resume + - [x86] drm/i915/bios: handle MIPI Sequence Block v3+ gracefully + - drm: Reject DRI1 hw lock ioctl functions for kms drivers + - drm/radeon: Restore LCD backlight level on resume (>= R5xx) + - drm/dp/mst: fixup handling hotplug on port removal. + - drm/dp/mst: drop cancel work sync in the mstb destroy path (v2) + - xhci: give command abortion one more chance before killing xhci + - xhci: Move xhci_pme_quirk() behind #ifdef CONFIG_PM + - usb: xhci: lock mutex on xhci_stop + - usb: xhci: Clear XHCI_STATE_DYING on start + - usb: xhci: stop everything on the first call to xhci_stop + - usb: xhci: exit early in xhci_setup_device() if we're halted or dying + - xhci: change xhci 1.0 only restrictions to support xhci 1.1 + - xhci: init command timeout timer earlier to avoid deleting it + uninitialized + - usb: xhci: Add support for URB_ZERO_PACKET to bulk/sg transfers + - batman-adv: Make DAT capability changes atomic + - thermal: cpu_cooling: don't call kcalloc() under rcu_read_lock + - thermal: cpu_cooling: free power table on error or when unregistering + - [x86] hv: util: checking the wrong variable + - mmc: dw_mmc: handle data blocks > than 4kB if IDMAC is used + - usb: chipidea: imx: fix a typo for imx6sx + - cifs: use server timestamp for ntlmv2 authentication + - [armhf] irqchip/gic-v3-its: Add missing cache flushes + - docs: update HOWTO for 3.x -> 4.x versioning + - extcon: Fix signedness bugs about break error handling + - extcon: Fix attached value returned by is_extcon_changed + - [armhf] mtd: pxa3xx_nand: add a default chunk size + - mtd: nand: sunxi: fix sunxi_nand_chips_cleanup() + - mtd: nand: sunxi: fix OOB handling in ->write_xxx() functions + - hpsa: fix an sprintf() overflow in the reset handler + - PM / AVS: rockchip-io: depend on CONFIG_POWER_AVS + - device property: fix potential NULL pointer dereference + - ath10k: fix per-vif queue locking + - ath10k: reject 11b tx fragmentation configuration + - ath10k: fix peer limit enforcement + - ath10k: wake up offchannel queue properly + - ath10k: wake up queue upon vif creation + - pcmcia: sa11x0: fix missing clk_put() in sa11x0 socket drivers + - ipr: Enable SIS pipe commands for SIS-32 devices. + - regmap: debugfs: Ensure we don't underflow when printing access masks + - regmap: debugfs: Don't bother actually printing when calculating max + length + - security: fix typo in security_task_prctl + - usb: musb: dsps: fix polling in device-only mode + - usb: chipidea: udc: using the correct stall implementation + - usb: Use the USB_SS_MULT() macro to get the burst multiplier. + - usb: phy: phy-generic: Fix reset behaviour on legacy boot + - usb: musb: cppi41: allow it to work again + - USB: chaoskey read offset bug + - usb: Add device quirk for Logitech PTZ cameras + - USB: Add reset-resume quirk for two Plantronics usb headphones. + - [armel,armhf] crypto: marvell - properly handle + CRYPTO_TFM_REQ_MAY_BACKLOG-flagged requests + - cpu/cacheinfo: Fix teardown path + - cpufreq: dt: Tolerance applies on both sides of target voltage + - [mips*] Fix console output for Fulong2e system + - [mips*] bootmem: Fix mapstart calculation for contiguous maps + - [mips*] dma-default: Fix 32-bit fall back to GFP_DMA + - [mips*] CPS: Stop dangling delay slot from has_mt. + - [mips*] CPS: Don't include MT code in non-MT kernels. + - [mips*] CPS: #ifdef on CONFIG_MIPS_MT_SMP rather than CONFIG_MIPS_MT + - batman-adv: Make NC capability changes atomic + - batman-adv: Make TT capability changes atomic + - batman-adv: Make MCAST capability changes atomic + - batman-adv: Fix potential synchronization issues in mcast tvlv handler + - batman-adv: Fix potentially broken skb network header access + - [powerpc*] MSI: Fix race condition in tearing down MSI interrupts + - rsi: Fix possible leak when loading firmware + - UBIFS: Kill unneeded locking in ubifs_init_security + - UBI: Validate data_size + - UBI: return ENOSPC if no enough space available + - net: via/Kconfig: GENERIC_PCI_IOMAP required if PCI not selected + - iscsi-target: Avoid OFMarker + IFMarker negotiation + - mmc: core: Don't return an error for CD/WP GPIOs when GPIOLIB is unset + - mmc: core: fix dead loop of mmc_retune + - [arm64] efi: Fix boot crash by not padding between EFI_MEMORY_RUNTIME + regions + - [arm64] ftrace: fix function_graph tracer panic + - [arm64] readahead: fault retry breaks mmap file read random detection + - [m68k] Define asmlinkage_protect + - xen/blkback: free requests on disconnection + - net/xen-netfront: only napi_synchronize() if running + - igb: do not re-init SR-IOV during probe + - genirq: Fix race in register_irq_proc() + - clocksource: Fix abs() usage w/ 64bit values + - md/bitmap: don't pass -1 to bitmap_storage_alloc. + - nfs/filelayout: Fix NULL reference caused by double freeing of fh_array + - cpufreq: acpi_cpufreq: prevent crash on reading freqdomain_cpus + - [armhf] clk: ti: fix dual-registration of uart4_ick + - [armhf] clk: ti: clk-7xx: Remove hardwired ABE clock configuration + - [armhf] clk: samsung: fix cpu clock's flags checking + - namei: results of d_is_negative() should be checked after dentry + revalidation + - dm: fix AB-BA deadlock in __dm_destroy() + - dm cache: fix NULL pointer when switching from cleaner policy + - staging: speakup: fix speakup-r regression + - tty: fix stall caused by missing memory barrier in drivers/tty/n_tty.c + - drivers/tty: require read access for controlling terminal + - serial: 8250: add uart_config entry for PORT_RT2880 + - serial: atmel: fix error path of probe function + - mm/slab: fix unexpected index mapping result of kmalloc_size(INDEX_NODE+1) + - blk-mq: avoid setting hctx->tags->cpumask before allocation + - sched/preempt: Fix cond_resched_lock() and cond_resched_softirq() + - 3w-9xxx: don't unmap bounce buffered commands + - sched/preempt, xen: Use need_resched() instead of should_resched() + - sched/preempt, powerpc, kvm: Use need_resched() instead of + should_resched() + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.2.5 + - [powerpc*] net/ibm/emac: bump version numbers for correct work with + ethtool + - l2tp: protect tunnel->del_work by ref_count + - af_unix: Convert the unix_sk macro to an inline function for type safety + - af_unix: return data from multiple SKBs on recv() with MSG_PEEK flag + - net/unix: fix logic about sk_peek_offset + - skbuff: Fix skb checksum flag on skb pull + - skbuff: Fix skb checksum partial check. + - inet: fix races in reqsk_queue_hash_req() + - net: add pfmemalloc check in sk_add_backlog() + - ppp: don't override sk->sk_state in pppoe_flush_dev() + - inet: fix race in reqsk_queue_unlink() + - bpf: fix panic in SO_GET_FILTER with native ebpf programs + - ovs: do not allocate memory from offline numa node + - act_mirred: clear sender cpu before sending to tx + - bpf: clear sender_cpu before xmit + - ipv6: Don't call with rt6_uncached_list_flush_dev + - ethtool: Use kcalloc instead of kmalloc for ethtool_get_strings + - tipc: move fragment importance field to new header position + - netlink: Trim skb to alloc size to avoid MSG_TRUNC + - drm: Fix locking for sysfs dpms file + - [sparc*] crypto: initialize blkcipher.ivsize + - crypto: ahash - ensure statesize is non-zero + - memcg: convert threshold to bytes + - btrfs: check unsupported filters in balance arguments + - btrfs: fix use after free iterating extrefs + - [arm64] errata: use KBUILD_CFLAGS_MODULE for erratum #843419 + - nfsd/blocklayout: accept any minlength + - [armhf] i2c: s3c2410: enable RuntimePM before registering to the core + - i2c: designware: Do not use parameters from ACPI on Dell Inspiron 7348 + - i2c: designware-platdrv: enable RuntimePM before registering to the core + - workqueue: make sure delayed work run in local cpu + - [x86] KVM: fix SMI to halted VCPU + - [x86] KVM: fix RSM into 64-bit protected mode + - drm/qxl: fix framebuffer dirty rectangle tracking. + - drm/nouveau/fbcon: take runpm reference when userspace has an open fd + - drm/dp/mst: make mst i2c transfer code more robust. + - drm/radeon: attach tile property to mst connector + - drm/radeon: add pm sysfs files late + - dm thin: fix missing pool reference count decrement in pool_ctr error + path + - rbd: fix double free on rbd_dev->header_name + - timekeeping: Increment clock_was_set_seq in timekeeping_init() + - [arm64] Fix THP protection change logic + - svcrdma: handle rdma read with a non-zero initial page offset + + [ Salvatore Bonaccorso ] + * KEYS: Fix race between key destruction and finding a keyring by name + * KEYS: Fix crash when attempt to garbage collect an uninstantiated keyring + (CVE-2015-7872) + * KEYS: Don't permit request_key() to construct a new keyring + + [ Ben Hutchings ] + * [x86] drm: Enable DRM_AMDGPU and HSA_AMD as modules (Closes: #797752) + * media: Enable DVB_AS102, VIDEO_GO7007, VIDEO_GO7007_USB, + VIDEO_GO7007_LOADER, VIDEO_GO7007_USB_S2250_BOARD as modules + * net: Enable LIQUIDIO and MLX5_CORE as modules; enable MLX5_CORE_EN + * [x86] Enable X86_AMD_PLATFORM_DEVICE + * linux-manual: Fix regression in reproducibility in 4.2~rc8-1~exp1 + * net: Enable GENEVE_CORE as module + - Re-enable GENEVE and OPENVSWITCH_GENEVE + * bpf: Enable BPF_SYSCALL + * ACPI: Enable ACPI_NFIT as module + * tcp: Enable TCP_CONG_CDG as module + * nftables: Enable NF_TABLES_NETDEV, NFT_REDIR_IPV4, NFT_REDIR_IPV6 as + modules + [This change was accidentally omitted] + * net/sched: Enable NET_CLS_FLOWER as module + [This change was accidentally omitted] + * SCSI: Enable SCSI_SNIC as module + * target: Enable TCM_USER2 as module + * net/phy: Enable DP83867_PHY as module + * drm: Enable DRM_VIRTIO_GPU as module + * HID: Enable HID_BETOP_FF, HID_PLANTRONICS as modules + * hwrng: Enable USB_CHAOSKEY as module + * ext4: Enable EXT4_ENCRYPTION + * f2fs: Enable F2FS_FS_ENCRYPTION + * vfs,nvdimm: Enable FS_DAX + [This change was accidentally omitted] + + -- Ben Hutchings Wed, 28 Oct 2015 05:46:49 +0900 + +linux (4.2.3-2) unstable; urgency=medium + + * nbd: Restore request timeout detection (Closes: #770479) + * Ignore ABI changes in all mmc host drivers (fixes FTBFS on armhf) + + -- Ben Hutchings Wed, 14 Oct 2015 19:09:49 +0100 + +linux (4.2.3-1) unstable; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.2.2 + - nfc: netlink: Add check on NFC_ATTR_VENDOR_DATA + - nfc: nci: hci: Add check on skb nci_hci_send_cmd parameter + - blk-mq: fix buffer overflow when reading sysfs file of 'pending' + - blk-mq: fix race between timeout and freeing request + - mac80211: enable assoc check for mesh interfaces + - [powerpc*] cxl: Allow release of contexts which have been OPENED but not + STARTED (regression in 4.2) + - ext4: don't manipulate recovery flag when freezing no-journal fs + (regression in 3.18) + - Revert "ext4: remove block_device_ejected" (regression in 4.1) + - [arm64] kconfig: Move LIST_POISON to a safe value + - [arm64] entry: always restore x0 from the stack on syscall return + - [arm64] flush FP/SIMD state correctly after execve() + - [arm64] head.S: initialise mdcr_el2 in el2_setup + - [armhf,arm64] KVM: vgic: Check for !irqchip_in_kernel() when mapping + resources (regression in 4.0) + - [arm64] KVM: add workaround for Cortex-A57 erratum #852523 + - [powerpc*] pseries: Fix corrupted pdn list (regression in 4.1) + - [powerpc*] eeh: Probe after unbalanced kref check (regression in 4.1) + - [powerpc*] eeh: Fix fenced PHB caused by eeh_slot_error_detail() + (regression in 3.18) + - [powerpc*] powernv/pci-ioda: fix 32-bit TCE table init in kdump kernel + (regression in 4.2) + - [powerpc*] powernv/pci-ioda: fix kdump with non-power-of-2 crashkernel= + (regression in 4.2) + - [powerpc*] pseries: Release DRC when configure_connector fails + (regression in 4.1) + - [powerpc*] mm: Recompute hash value after a failed update + - CIFS: fix type confusion in copy offload ioctl + - mm: check if section present during memory block registering + (regression in 3.19) + - [i386] mm: Initialize pmd_idx in page_table_range_init_count() + - [x86] i915: Set ddi_pll_sel in DP MST path (regression in 4.2) + - Btrfs: check if previous transaction aborted to avoid fs corruption + - nfsd: Fix an FS_LAYOUT_TYPES/LAYOUT_TYPES encode bug + - nfsd: ensure that the ol stateid hash reference is only put once + - nfsd: ensure that delegation stateid hash references are only put once + - NFSv4.1/pnfs: Fix atomicity of commit list updates (regression in 4.0) + - NFSv4: don't set SETATTR for O_RDONLY|O_EXCL + - NFSv4.1/pNFS: Fix borken function _same_data_server_addrs_locked() + - NFS: Fix a NULL pointer dereference of migration recovery ops for v4.2 + client + - NFS: nfs_set_pgio_error sometimes misses errors + - NFS41/flexfiles: update inode after write finishes + - NFSv4: Force a post-op attribute update when holding a delegation + - NFS41/flexfiles: zero out DS write wcc + - NFSv4.1/flexfiles: Fix a protocol error in layoutreturn + - NFSv4.1: Fix a protocol issue with CLOSE stateids + - nfs: Fix truncated client owner id without proto type (regression in 4.2) + - Revert "NFSv4: Remove incorrect check in can_open_delegated()" + (regression in 3.19) + - svcrdma: Change maximum server payload back to RPCSVC_MAXPAYLOAD + (regression in 4.2) + - SUNRPC: Ensure that we wait for connections to complete before retrying + (regression in 4.0) + - SUNRPC: Lock the transport layer on shutdown + - [hppa] PCI: Enable 64-bit bus addresses on PA-RISC (regression in 4.2) + - [hppa] Use double word condition in 64bit CAS operation + - fs: if a coredump already exists, unlink and recreate with O_EXCL + - fs: Don't dump core if the corefile would become world-readable. + - mmc: sdhci-of-esdhc: add workaround for pre divider initial value + (regression in 4.2) + - mmc: sdhci: also get preset value and driver type for MMC_DDR52 + (regression in 3.16) + - mmc: sdhci: fix dma memory leak in sdhci_pre_req() (regression in 4.0) + - mmc: core: fix race condition in mmc_wait_data_done + - [armhf] iommu/fsl: Really fix init section(s) content (regression in 4.0) + - [armhf] iommu/io-pgtable-arm: Unmap and free table when overwriting with + block + - [x86] iommu/vt-d: Really use upper context table when necessary + (regression in 4.1) + - eCryptfs: Invalidate dcache entries when lower i_nlink is zero + - hfs: fix B-tree corruption after insertion at position 0 + - IB/srp: Handle partial connection success correctly + - IB/srp: Stop the scsi_eh_ and scsi_tmf_ threads if login fails + (regression in 4.2) + - IB/uverbs: reject invalid or unknown opcodes + - IB/uverbs: Fix race between ib_uverbs_open and remove_one + - IB/iser: Fix missing return status check in iser_send_data_out + (regression in 3.19) + - IB/iser: Fix possible bogus DMA unmapping (regression in 3.19) + - IB/mlx5: avoid destroying a NULL mr in reg_user_mr error flow + (regression in 3.19) + - IB/mlx4: Fix incorrect cq flushing in error state (regression in 4.0) + - hfs,hfsplus: cache pages correctly between bnode_create and bnode_free + - jbd2: avoid infinite loop when destroying aborted journal + (regression in 4.2) + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.2.3 + - phylib: fix device deletion order in mdiobus_unregister() + (regression in 4.2) + - sock, diag: fix panic in sock_diag_put_filterinfo + (regression in 3.19) + - net/ipv6: Correct PIM6 mrt_lock handling + - ipv6: fix multipath route replace error recovery (regression in 4.1) + - netlink, mmap: transform mmap skb into full skb on taps + - bridge: fix igmpv3 / mldv2 report parsing (regression in 4.2) + - [armhf] net: mvneta: fix DMA buffer unmapping in mvneta_rx() + (regression in 4.2) + - rtnetlink: catch -EOPNOTSUPP errors from ndo_bridge_getlink + (regression in 4.2) + - macvtap: fix TUNSETSNDBUF values > 64k (regression in 3.19) + - netlink: Fix autobind race condition that leads to zero port ID + (regression in 4.1) + - netlink: Replace rhash_portid with bound + - openvswitch: Zero flows on allocation. + - tcp: add proper TS val into RST packets (regression in 3.18) + - packet: Fix AF_PACKET ABI breakage in 4.2 + - net: revert "net_sched: move tp->root allocation into fw_init()" + (regression in 4.1) + - fib_rules: fix fib rule dumps across multiple skbs + - ppp: fix lockdep splat in ppp_dev_uninit() (regression in 4.2) + - [armhf] mvneta: use inband status only when explicitly enabled + (regression in 4.1) + - net/mlx4_core: Capping number of requested MSIXs to MAX_MSIX + - zram: fix possible use after free in zcomp_create() + - [x86] hp-wmi: limit hotkey enable + + [ Ben Hutchings ] + * ovl: conditionally use O_LARGEFILE in ovl_copy_up() (Closes: #800724) + * [x86] ALSA: hda - Disable power_save_node for Thinkpads (Closes: #800694) + * i2c: Enable I2C_CHARDEV as a module in all configurations with I2C + support (Closes: #800597) + * [mips*/octeon] Enable CAVIUM_CN63XXP1 (Closes: #800595) + * [mips*/octeon] Enable MMC, MMC_BLOCK, OCTEON_MMC and other drivers as + modules (Closes: #800594) + * ath10k: add qca6164 support (Closes: #800703) + * [!x86] net: Disable VMXNET3, only useful in VMware x86 virtual machines + * netfilter: conntrack: use nf_ct_tmpl_free in CT/synproxy error paths + (Closes: #800445) + * [arm64] Defer workaround for erratum #843419 + * [x86] crypto camellia_aesni_avx: Fix CPU feature checks (Closes: #800934) + + [ Salvatore Bonaccorso ] + * ipc: Initialize msg/shm IPC objects before doing ipc_addid() + (CVE-2015-7613) + + [ Ian Campbell ] + * [armel] Update breaks on flash-kernel to anything earlier than 3.37 since + that version adds the knowledge that various additional kirkwood systems + need a DTB appending as of v3.17-rc1. (Closes: #797878) + + -- Ben Hutchings Tue, 06 Oct 2015 17:44:55 +0100 + +linux-tools (4.2-2) unstable; urgency=medium + + * [x32] Don't attempt to build linux-perf (fixes FTBFS) + * [x32] Build hyperv-daemons package + * [alpha] uapi: Add support for __SANE_USERSPACE_TYPES__(fixes FTBFS) + + -- Ben Hutchings Fri, 02 Oct 2015 18:41:22 +0100 + +linux (4.2.1-2) unstable; urgency=medium + + * media: uvcvideo: Disable hardware timestamps by default (Closes: #794327) + * [mips*] udeb: Remove 'Provides: ata-modules' from kernel-image + * [hppa/parisc64-smp,mips*el/loongson-3] udeb: Remove i2c-modules again, as + the drivers that belong in it are actually built-in (fixes FTBFS) + * sctp: fix race on protocol/netns initialization (CVE-2015-5283) + * [mips*] pgtable-bits.h: Correct _PAGE_GLOBAL_SHIFT build failure + (regression in 4.0, but not a build failure for us) + + -- Ben Hutchings Sun, 27 Sep 2015 14:17:34 +0100 + +linux-tools (4.2-1) unstable; urgency=medium + + * New upstream release + + [ Ben Hutchings ] + * debian/bin,debian/control,debian/lib/python,debian/rules: Use Python 3 + - debian/lib/python: Sync with linux package + * debian/bin/genorig.py: Make orig tarballs reproducible + * linux-perf: Fix installation directory for bash completions + * linux-perf: Remove shebang lines from perf scripts + * Set compiler flags according to dpkg-buildflags + * hyperv-daemons: Fix fortify format warning + * debian/rules: Add support for DEB_BUILD_OPTIONS=parallel=N + * debian/control: Update policy version to 3.9.6; no changes required + * linux-perf: Revert "perf build: Fix libunwind feature detection on 32-bit + x86", which was a regression for us + + -- Ben Hutchings Fri, 25 Sep 2015 22:55:41 +0100 + +linux (4.2.1-1) unstable; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.2.1 + + [ Ben Hutchings ] + * [mips*el/loongson-3] udeb: Add fb-modules containing radeon driver + (Closes: #776274) + * [hppa/parisc64-smp,[mips*el/loongson-3] udeb: Add i2c-modules and + make fb-modules depend on it rather than including I2C modules + directly + * workqueue: Make flush_workqueue() available again to non GPL modules + (Closes: #798311) + * vfs: Fix possible escape from mount namespace (CVE-2015-2925): + - dcache: Handle escaped paths in prepend_path + - dcache: Reduce the scope of i_lock in d_splice_alias + - vfs: Test for and handle paths that are unreachable from their mnt_root + * aufs: Update support patches to aufs4.x-rcN-20150921 + - mmap: Fix races in madvise_remove() and sys_msync() (Closes: #796036) + * RDS: verify the underlying transport exists before creating a connection + (CVE-2015-6937) + * Set ABI to 1 + * e1000e: Fix tight loop implementation of systime read algorithm + * mmc: Drop "eMMC: Don't initialize partitions on RPMB flagged areas", as + upstream commit 4e93b9a6abc0 ("mmc: card: Don't access RPMB partitions for + normal read/write") looks like a cleaner solution + * mm: Change ZBUD back to built-in, as it's not really useful as a module + * USB: whiteheat: fix potential null-deref at probe (CVE-2015-5257) + + [ Aurelien Jarno ] + * [mips*el] Fix BPF assembly code for pre-R2 CPUs. (fixes FTBFS) + + -- Ben Hutchings Fri, 25 Sep 2015 18:18:01 +0100 + +linux (4.2-1~exp1) experimental; urgency=medium + + * New upstream release: http://kernelnewbies.org/Linux_4.2 + + [ Ben Hutchings ] + * Remove all support for ia64 (Closes: #679545, #691576, #728706) + * [s390x] Compile with gcc-4.9 (Closes: #796845) + * linux-source: Depend on xz-utils, not bzip2 (Closes: #796940) + * gfs2: Make statistics unsigned, suitable for use with do_div() + (fixes FTBFS on mipsel,m68k) + * [amd64] Enable KALLSYMS_ALL (Closes: #660288), LIVEPATCH + * Re-enable various config options disabled by name changes in 4.2: + - SUNRPC_XPRT_RDMA replaced SUNRPC_XPRT_RDMA_{CLIENT,SERVER} + - [mips*el/loongson*] LOONGSON64 replaced LOONGSON + - [x86] COMEDI_8255_SA replaced COMEDI_8255 + * [sparc] Remove linux-image, linux-header and udeb packages, as they + are redundant with sparc64 and neither is an official port + * Fix last issue that prevents a reproducible build (Closes: #769844): + - DocBook: Use a fixed encoding for output + * debian/bin,debian/control,debian/lib/python,debian/rules.real, + linux-support: Use Python 3 + * debian/bin/genorig.py: Make orig tarballs reproducible + + -- Ben Hutchings Mon, 31 Aug 2015 02:08:19 +0100 + +linux (4.2~rc8-1~exp1) experimental; urgency=medium + + * New upstream release candidate + + [ Aurelien Jarno ] + * [mips*] Build ext4 as module. Add core-modules and ext4-modules udeb. + Fixes FTBFS. + * [mips,mips64] Remove r4k-ip22, r5k-ip32 and sb1-bcm91250a flavours. + * [mipsel,mips64el] Remove sb1-bcm91250a flavour. + + [ Ben Hutchings ] + * debian/control: Correct build-dependency on xz-utils, needed on all arches + * Fix more issues that prevent a reproducible build: + - Set LC_ALL=C.UTF-8 + - Avoid creating man pages in source tree + + -- Ben Hutchings Mon, 24 Aug 2015 12:00:54 +0100 + +linux-tools (4.2~rc7-1~exp1) experimental; urgency=medium + + * New upstream release candidate + + [ Ben Hutchings ] + * genorig: Include more mips makefiles (fixes FTBFS) + + -- Ben Hutchings Mon, 17 Aug 2015 10:42:08 +0200 + +linux-tools (4.2~rc6-1~exp1) experimental; urgency=medium + + * New upstream release candidate + + [ Ben Hutchings ] + * Adjust for migration to git: + - Update .gitignore files + - debian/control: Update Vcs-* fields + - debian/rules: Exclude .git from maintainerclean rule + * Add packages of liblockdep (lockdep, liblockdep, liblockdep-dev) + + -- Ben Hutchings Fri, 14 Aug 2015 14:58:57 +0200 + +linux (4.2~rc6-1~exp1) experimental; urgency=medium + + * New upstream release candidate + + [ Ben Hutchings ] + * Adjust for migration to git: + - Update .gitignore files + - debian/control: Update Vcs-* fields + - README.Debian, README.source: Update references to svn + * [rt] Disable until it is updated for 4.2 or later + * debian/control: Drop Frederik Schüler from Uploaders + + -- Ben Hutchings Wed, 12 Aug 2015 20:48:00 +0200 + +linux (4.1.6-1) unstable; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.1.6 + - [mips*/*-malta] Don't reinitialise RTC (regression in 3.14) + - [mips*] Make set_pte() SMP safe. + - fsnotify: fix oops in fsnotify_clear_marks_by_group_flags() + - [x86] drm/i915: Declare the swizzling unknown for L-shaped configurations + - [x86] drm/i915: Replace WARN inside I915_READ64_2x32 with retry loop + - drm/radeon: rework audio detect (v4) (regression in 4.0) + - drm/radeon/combios: add some validation of lvds values + (regression in 4.0) + - ipr: Fix incorrect trace indexing + - ipr: Fix invalid array indexing for HRRQ + - Bluetooth: Fix NULL pointer dereference in smp_conn_security + - [armhf] dmaengine: pl330: Fix overflow when reporting residue in memcpy + (regression in 4.0) + - [armhf] dmaengine: pl330: Really fix choppy sound because of wrong residue + calculation (regression in 4.0) + - xhci: fix off by one error in TRB DMA address boundary check + - ath10k: fix qca61x4 hw2.1 support + - [sparc*] Fix userspace FPU register corruptions. (Closes: #789180) + - ASoC: dapm: Lock during userspace access + - ASoC: dapm: Don't add prefix to widget stream name (regression in 4.1) + - [x86] xen: Probe target addresses in set_aliased_prot() before the + hypercall + - xen/gntdevt: Fix race condition in gntdev_release() + - hwrng: core - correct error check of kthread_run call + - [x86] crypto: qat - Fix invalid synchronization between + register/unregister sym algs + - rbd: fix copyup completion race + - [armhf] OMAP2+: hwmod: Fix _wait_target_ready() for hwmods without sysc + - [x86] hwmon: (dell-smm) Blacklist Dell Studio XPS 8100 + - ocfs2: fix BUG in ocfs2_downconvert_thread_do_work() + - ocfs2: fix shift left overflow + - nfsd: Drop BUG_ON and ignore SECLABEL on absent filesystem + - md/raid1: extend spinlock to protect raid1_end_read_request against + inconsistencies + - dm: fix dm_merge_bvec regression on 32 bit systems (regression in 3.19 + - [x86] Input: alps - only Dell laptops have separate button bits for v2 + dualpoint sticks (regression in 4.1) + - mm, vmscan: Do not wait for page writeback for GFP_NOFS allocations + - signalfd: fix information leak in signalfd_copyinfo + - signal: fix information leak in copy_siginfo_to_user + - signal: fix information leak in copy_siginfo_from_user32 + - nfsd: do nfs4_check_fh in nfs4_check_file instead of nfs4_check_olstateid + + [ Aurelien Jarno ] + * [mips*] Build ext4 as module. Add core-modules and ext4-modules udeb. + Fixes FTBFS. + + [ Ben Hutchings ] + * [i386] udeb: Make gpio_keys_polled and leds-gpio optional in input-modules + as they are not built for the 686-pae flavour (fixes FTBFS) + * perf: Fix AUX buffer refcounting + * ovl: Revert changes in 4.1.5-1 due to regression (Reopens: #786925) + + -- Ben Hutchings Sun, 23 Aug 2015 12:19:22 +0200 + +linux (4.1.5-1) unstable; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.1.4 + - Bluetooth: btbcm: allow btbcm_read_verbose_config to fail on Apple + (regression in 4.1) + - ath9k_htc: memory corruption calling set_bit() + - ieee802154: Fix sockaddr_ieee802154 implicit padding information leak. + - staging: vt6656: check ieee80211_bss_conf bssid not NULL + - staging: vt6655: check ieee80211_bss_conf bssid not NULL + - staging: vt6655: device_rx_srv check sk_buff is NULL + - staging: rtl8712: prevent buffer overrun in recvbuf2recvframe + - hid-sensor: Fix suspend/resume delay (regression in 4.0) + - ext4: fix race between truncate and __ext4_journalled_writepage() + - ext4: call sync_blockdev() before invalidate_bdev() in put_super() + - ext4: don't retry file block mapping on bigalloc fs with non-extent file + - ext4: fix fencepost error in lazytime optimization + - ext4: avoid deadlocks in the writeback path by using sb_getblk_gfp + - ext4: fix reservation release on invalidatepage for delalloc fs + - ext4: be more strict when migrating to non-extent based file + - ext4: correctly migrate a file with a hole at the beginning + - jbd2: use GFP_NOFS in jbd2_cleanup_journal_tail() + - jbd2: fix ocfs2 corrupt when updating journal superblock fails + - [armhf] rtc: snvs: fix wakealarm by call enable_irq_wake earlier + (regression in 3.19) + - i2c: mux: Use __i2c_transfer() instead of calling parent's master_xfer() + (regression in 4.1) + - i2c: use parent adapter quirks in mux (regression in 4.1) + - vb2: Don't WARN when v4l2_buffer.bytesused is 0 for multiplanar buffers + (regression in 4.1) + - media: Fix regression in some more dib0700 based devices + (regression in 3.17) + - rc-core: fix dib0700 scancode generation for RC5 (regression in 3.17) + - cx24117: fix a buffer overflow when checking userspace params + - af9013: Don't accept invalid bandwidth + - s5h1420: fix a buffer overflow when checking userspace params + - cx24116: fix a buffer overflow when checking userspace params + - libata: Fall back to unqueued READ LOG EXT if the DMA variant fails + (regression in 4.1) + - libata: Expose TRIM capability in sysfs + - libata: add ATA_HORKAGE_NOTRIM + - libata: add ATA_HORKAGE_MAX_SEC_1024 to revert back to previous + max_sectors limit (regression in 3.19) + - libata: force disable trim for SuperSSpeed S238 + - [armhf] usb: dwc3: gadget: don't clear EP_BUSY too early + (regression in 3.15) + - USB: devio: fix a condition in async_completed() + - [armhf] phy: twl4030-usb: remove incorrect pm_runtime_get_sync() in + probe function. (regression in 3.17) + - usb: gadget: composite: Fix NULL pointer dereference (regression in 4.1) + - usb: gadget: f_fs: do not set cancel function on synchronous {read,write} + (regression in 4.0) + - USB: OHCI: Fix race between ED unlink and URB submission + (regression in 3.17) + - usb: core: lpm: set lpm_capable for root hub device (regression in 3.15) + - usb: xhci: Bugfix for NULL pointer deference in xhci_endpoint_init() + function + - dm cache: fix race when issuing a POLICY_REPLACE operation + - dm btree remove: fix bug in redistribute3 + - block: loop: convert to per-device workqueue (regression in 4.0) + - block: loop: avoiding too many pending per work I/O (regression in 4.0) + - block: Do a full clone when splitting discard bios (Closes: #793326) + (regression in 3.14) + - [armhf] drm/tegra: dpaux: Fix transfers larger than 4 bytes + (regression in 3.15) + - drm/qxl: Do not cause spice-server to clean our objects + - drm/atomic: fix out of bounds read in for_each_*_in_state helpers + (regression in 4.1) + - drm/radeon: take the mode_config mutex when dealing with hpds (v2) + - [x86] drm/i915/ppgtt: Break loop in gen8_ppgtt_clear_range failure path + (regression in 4.1) + - [x86] drm/i915: fix backlight after resume on 855gm (regression in 3.19) + - [x86] drm/i915: Snapshot seqno of most recently submitted request. + (regression in 4.0) + - Revert "drm/radeon: dont switch vt on suspend" (regression in 4.1) + - drm/radeon: unpin cursor BOs on suspend and pin them again on resume (v2) + (regression in 4.1) + - drm/radeon: fix user ptr race condition + - drm/radeon/ci: silence a harmless PCC warning + - drm: add a check for x/y in drm_mode_setcrtc + - drm: Stop resetting connector state to unknown (regression in 4.1) + - libata: Fix regression when the NCQ Send and Receive log page is absent + - xfs: fix remote symlinks on V5/CRC filesystems + - xfs: don't truncate attribute extents if no extents exist + (regression in 4.1) + - tpm: Fix initialization of the cdev (regression in 4.0) + - tpm, tpm_crb: fail when TPM2 ACPI table contents look corrupted + (regression in 4.1) + - [armel,armhf] dmaengine: mv_xor: bug fix for racing condition in + descriptors cleanup + - md: clear mddev->private when it has been freed. (regression in 4.0) + - md: unlock mddev_lock on an error path. (regression in 4.0) + - md: Skip cluster setup for dm-raid (regression in 4.1) + - Btrfs: don't invalidate root dentry when subvolume deletion fails + (regression in 3.18) + - Btrfs: use kmem_cache_free when freeing entry in inode cache + - Btrfs: fix race between caching kthread and returning inode to inode + cache (regression in 3.15) + - Btrfs: fix fsync data loss after append write + - Btrfs: fix list transaction->pending_ordered corruption + (regression in 3.19) + - Btrfs: fix file corruption after cloning inline extents + - selinux: fix mprotect PROT_EXEC regression caused by mm change + (regression in 4.1) + - ceph/crush: fix a bug in tree bucket decode + - ACPI / PNP: Reserve ACPI resources at the fs_initcall_sync stage + (regression in 4.1) + - ACPI / LPSS: Fix up acpi_lpss_create_device() (regression in 4.0) + - ACPICA: Tables: Enable both 32-bit and 64-bit FACS (regression in 3.14) + - ACPICA: Tables: Enable default 64-bit FADT addresses favor + - ACPI / PCI: Fix regressions caused by resource_size_t overflow with + 32-bit kernel (regression in 4.0) + - mmc: sdhci: Restore behavior while creating OCR mask (regression in 3.17) + - PM / clk: Fix clock error check in __pm_clk_add() (regression in 3.19) + - RDMA/ocrdma: fix double free on pd (regression in 4.0) + - mm/hugetlb: introduce minimum hugepage order (regression in 3.12) + - PM / sleep: Increase default DPM watchdog timeout to 60 + (regression in 3.13) + - firmware: dmi_scan: Only honor end-of-table for 64-bit tables + (regression in 3.19) + - mac80211: fix the beacon csa counter for mesh and ibss + (regression in 3.17) + - iwlwifi: mvm: fix ROC reference accounting (regression in 3.17) + - cfg80211: ignore netif running state when changing iftype + - e1000e: Cleanup handling of VLAN_HLEN as a part of max frame size + (regression in 3.15) + - ovl: lookup whiteouts outside iterate_dir() (regression in 4.0) + - pNFS: Fix a memory leak when attempted pnfs fails + - pNFS/flexfiles: Fix the reset of struct pgio_header when resending + - nfs: fixing infinite OPEN loop in 4.0 stateid recovery + - NFS: Ensure we set NFS_CONTEXT_RESEND_WRITES when requeuing writes + - nfs: fix potential credential leak in ff_layout_update_mirror_cred + - nfs: always update creds in mirror, even when we have an already + connected ds + - 9p: forgetting to cancel request on interrupted zero-copy RPC + - 9p: don't leave a half-initialized inode sitting around + - p9_client_write(): avoid double p9_free_req() + - [arm64] bpf: fix out-of-bounds read in bpf2a64_offset() + - [arm64] bpf: fix endianness conversion bugs + - [arm64] Don't report clear pmds and puds as huge + - mm: avoid setting up anonymous pages into file mapping + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.1.5 + - [powerpc*] powernv: Fix race in updating core_idle_state + (regression in 3.19) + - Revert "Input: synaptics - allocate 3 slots to keep stability in image + sensors" (regression in 4.1) + - [hppa] Fix some PTE/TLB race conditions and optimize __flush_tlb_range + based on timing results + - [hppa] mm: Fix a memory leak related to pmd not attached to the pgd + (regression in 4.0) + - [armel,armhf] 8404/1: dma-mapping: fix off-by-one error in bitmap size + check (regression in 3.15) + - [mips*] c-r4k: Fix cache flushing for MT cores + - can: replace timestamp as unique skb attribute (regression in 4.1) + - vfs: freeing unlinked file indefinitely delayed + - [armhf] crypto: omap-des - Fix unmapping of dma channels + - [s390x] nmi: fix vector register corruption + - [s390x] bpf: clear correct BPF accumulator register + - genirq: Prevent resend to interrupts marked IRQ_NESTED_THREAD + - [x86] perf: Fix static_key bug in load_mm_cr4() (regression in 4.0) + - Revert "dm: only run the queue on completion if congested or no requests + pending" (regression in 4.1) + - scsi: fix host max depth checking for the 'queue_depth' sysfs interface + (regression in 3.19) + - scsi: fix memory leak with scsi-mq (regression in 3.17) + - mnt: Clarify and correct the disconnect logic in umount_tree + (regressions in 4.0.2, 4.1) + - mnt: In detach_mounts detach the appropriate unmounted mount + (regression in 4.1) + - ftrace: Fix breakage of set_ftrace_pid (regression in 3.16) + - [x86] iommu/vt-d: Fix VM domain ID leak (regression in 3.17) + - mmc: sdhci check parameters before call dma_free_coherent + (regression in 3.16) + - iwlwifi: mvm: fix antenna selection when BT is active + (regression in 3.17) + - md/raid1: fix test for 'was read error from last working device'. + - [armhf] spi: imx: Fix small DMA transfers (regression in 3.18) + - [armhf] regulator: s2mps11: Fix GPIO suspend enable shift wrapping bug + - usb-storage: ignore ZTE MF 823 card reader in mode 0x1225 + - [armhf] Revert "serial: imx: initialized DMA w/o HW flow enabled" + (regression in 4.0) + - serial: core: Fix crashes while echoing when closing (regression in 3.19) + - efi: Handle memory error structures produced based on old versions of + standard (regression in 3.13) + - [x86] efi: Use all 64 bit of efi_memmap in setup_e820() + - rds: rds_ib_device.refcount overflow + - n_tty: signal and flush atomically (regression in 4.0) + - [x86] perf/intel/cqm: Return cached counter value from IRQ context + (regression in 4.1)f + - NFS: Don't revalidate the mapping if both size and change attr are up to + date (regression in 3.16) + - NFSv4: We must set NFS_OPEN_STATE flag in nfs_resync_open_stateid_locked + (regression in 4.0) + - NFS: Fix a memory leak in nfs_do_recoalesce (regression in 4.0) + - iscsi-target: Fix use-after-free during TPG session shutdown + - iscsi-target: Fix iscsit_start_kthreads failure OOPs (regression in 4.0) + - iscsi-target: Fix iser explicit logout TX kthread leak + (regression in 4.0) + - qla2xxx: Fix hardware lock/unlock issue causing kernel panic. + (regression in 3.18) + - qla2xxx: release request queue reservation. (regression in 3.18) + - qla2xxx: Remove msleep in qlt_send_term_exchange (regression in 3.18) + - qla2xxx: fix command initialization in target mode. (regression in 3.18) + - qla2xxx: kill sessions/log out initiator on RSCN and port down efvents + (regression in 3.18) + - drm/nouveau/fbcon/nv11-: correctly account for ring space usage + - drm/nouveau/kms/nv50-: guard against enabling cursor on disabled heads + - drm/nouveau: hold mutex when calling nouveau_abi16_fini() + - drm/nouveau/drm/nv04-nv40/instmem: protect access to priv->heap by mutex + - xfs: remote attribute headers contain an invalid LSN + - xfs: remote attributes need to be considered data + + [ Ian Campbell ] + * [armhf] Enable cpufreq on some sunxi platforms (Closes: #793185) + - Enable autoloading of the cpufreq-dt driver. + - Enable autoloading of AXP20x regulator driver. + + [ Ben Hutchings ] + * [x86] iio: Enable drivers for ACPI-discoverable devices as modules: + AK8975, BMC150_ACCEL, BMG160, BMP280, INV_MPU6050_IIO, JSA1212, KMX61, + KXCJK1013, MMA9551, MMA9553, SX9500 + * Adjust for migration to git: + - Update .gitignore files + - debian/control: Update Vcs-* fields + - README.Debian, README.source: Update references to svn + * Bump ABI to 2 + * virtio-net: drop NETIF_F_FRAGLIST (CVE-2015-5156) + * ovl: Add support for NFS as lower filesystem (Closes: #786925) + * perf: Fix double-free of the AUX buffer + * linux-source: Fix compression of the source tarball (Closes: #795199) + * udeb: Add newly enabled drivers: + - [i386] Add gpio_keys_polled, leds-gpio to input-modules + - Add virtio-input to input-modules + - Add toshsd to mmc-modules + - Add wd719x to scsi-extra-modules + - Move eeprom_93cx6 to core-modules; make scsi-extra-modules depend on it + + -- Ben Hutchings Sat, 15 Aug 2015 23:37:20 +0200 + +linux-tools (4.1.4-2) unstable; urgency=medium + + * [mips*,alpha,hppa] linux-perf: Add empty Build files for these architectures + (fixes FTBFS) + + -- Ben Hutchings Tue, 04 Aug 2015 17:11:46 +0100 + +linux-tools (4.1.4-1) unstable; urgency=medium + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.1.4 + - perf bench numa: Fix to show proper convergence stats + + [ Ben Hutchings ] + * linux-tools: Set $KBUILD_BUILD_TIMESTAMP from changelog and use it as man + page date + * hyperv-daemons: Only attempt to build package on i386, amd64 + (fixes FTBFS on other architectures) + * linux-tools: Rename to linux-perf-, since other tools are + in other binary packages + + -- Ben Hutchings Tue, 04 Aug 2015 00:47:58 +0100 + +linux (4.1.3-1) unstable; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.1.3 + + [ Ben Hutchings ] + * [armel/kirkwood] ubi: Change UBIFS_FS and MTD_UBI from built-in to + modules, to reduce kernel image size (fixes FTBFS) + * debian/rules.real: Use dpkg-parsechangelog -S + * [rt] Update to 4.1.3-rt3 and re-enable + * KEYS: ensure we free the assoc array edit if edit is valid (CVE-2015-1333) + * [armel,sh4] linux-image: Recommend u-boot-tools rather than the obsolete + uboot-mkimage package (Closes: #793608) + * [i386/586] Enable KEYBOARD_GPIO_POLLED and LEDS_GPIO as modules, and + ALIX, NET5501, GEOS (Closes: #734204) + * [s390x] cachinfo: add missing facility check to init_cache_level() + (Closes: #793929) + * md: use kzalloc() when bitmap is disabled (CVE-2015-5697) + * inet: Enable IPVLAN, NET_FOU as modules; enable NET_FOU_IP_TUNNELS + * netfilter: Enable NFT_REDIR as module + * net/sched: Enable NET_ACT_VLAN, NET_ACT_BPF, NET_ACT_CONNMARK as modules + * mpls: Enable MPLS_ROUTING as module + * hci_uart: Enable BT_HCIUART_INTEL, BT_HCIUART_BCM + * SCSI: Enable SCSI_WD719X as module + * dm: Enable DM_LOG_WRITES as module + * cxgb4: Enable CHELSIO_T4_DCB + * ixgbe: Enable IXGBE_VXLAN + * i40e: Enable I40E_FCOE + * drm: Enable DRM_VGEM as module + * virtio: Enable VIRTIO_INPUT as module + * mmc: Enable MMC_TOSHIBA_PCI as module + * [x86] block: Enable BLK_DEV_PMEM as module; enable X86_PMEM_LEGACY + * [x86] tpm: Enable TCG_CRB as module + * debug: Enable DEBUG_LIST + * security: Apply and enable GRKERNSEC_PERF_HARDEN feature from Grsecurity, + disabling use of perf_event_open() by unprivileged users by default + (sysctl: kernel.perf_event_paranoid) + * Set ABI to 1 + + [ Ian Campbell ] + * [armhf] Set CONFIG_ARM_TEGRA_CPUFREQ as builtin. + * [armhf] Enable new drivers for sunxi platforms (Closes: #792388) + + -- Ben Hutchings Mon, 03 Aug 2015 22:17:15 +0100 + +linux-tools (4.1.2-1~exp1) experimental; urgency=medium + + * New upstream release + + [ Bastian Blank ] + * Add hyperv-daemons package, thanks to Hideki Yamane (closes: #782761) + + [ Ben Hutchings ] + * hyperv-daemons: Rewrite description + + -- Ben Hutchings Mon, 13 Jul 2015 01:33:27 +0100 + +linux (4.1.2-1~exp1) experimental; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.1.2 + + [ Ben Hutchings ] + * Fix more issues that prevent a reproducible build: + - linux-doc: DocBook: generate consistent IDs + - linux-manual: DocBook: Fix duplicate man pages + - linux-manual: kernel-doc: Use $KBUILD_BUILD_TIMESTAMP as man page date + * [i386] Disable VM86 (Closes: #792003) + + -- Ben Hutchings Sat, 11 Jul 2015 18:01:42 +0100 + +linux (4.1.1-1~exp1) experimental; urgency=medium + + * New upstream release: http://kernelnewbies.org/Linux_4.1 + - i40e: start up in VEPA mode by default (Closes: #790953) + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.1.1 + + [ Ben Hutchings ] + * Fix some issues that prevent a reproducible build (thanks to + Jérémy Bobbio): + - linux-image: Fix timestamps in the built-in initramfs + - linux-source: Fix timestamps and sort files in the tarball + - linux-doc,linux-manual: Drop original timestamp (and name) when + compressing + - linux-doc: Parse kernel-doc deterministically + * aufs: Apply patches to enable building aufs out-of-tree + * [x86] Enable MMIOTRACE (Closes: #790808) + + [ maximilian attems ] + * [x86] Enable SND_SOC_INTEL_BROADWELL_MACH. (closes: #785422) + + [ Ian Campbell ] + * [arm64+armhf] Enable SYSCON poweroff driver. + + -- Ben Hutchings Tue, 07 Jul 2015 09:15:45 +0100 + +linux (4.0.8-2) unstable; urgency=high + + [ Uwe Kleine-König ] + * [rt] Update to 4.0.8-rt6 + + [ Ben Hutchings ] + * [amd64] Fix nested NMI handling (CVE-2015-3290, CVE-2015-3291, + CVE-2015-5157) + - Enable nested do_nmi handling for 64-bit kernels + - Remove asm code that saves cr2 + - Switch stacks on userspace NMI entry + - Reorder nested NMI checks + - Use DF to avoid userspace RSP confusing nested NMI detection + + -- Ben Hutchings Wed, 22 Jul 2015 21:45:07 +0100 + +linux (4.0.8-1) unstable; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.0.8 + - netfilter: nft_rbtree: fix locking + - [armhf] clk-imx6q: refine sata's parent + - KVM: nSVM: Check for NRIPS support before updating control field + - [sparc*] Use GFP_ATOMIC in ldc_alloc_exp_dring() as it can be called in + softirq context + - bridge: fix multicast router rlist endless loop + - net: igb: fix the start time for periodic output signals + - net: don't wait for order-3 page allocation + - sctp: fix ASCONF list handling (CVE-2015-3212) + - bridge: fix br_stp_set_bridge_priority race conditions + - packet: read num_members once in packet_rcv_fanout() + - packet: avoid out of bounds read in round robin fanout + - neigh: do not modify unlinked entries + - tcp: Do not call tcp_fastopen_reset_cipher from interrupt context + - ip: report the original address of ICMP messages + - net/mlx4_en: Release TX QP when destroying TX ring + - net/mlx4_en: Wake TX queues only when there's enough room + - net/mlx4_en: Fix wrong csum complete report when rxvlan offload is + disabled + - mlx4: Disable HA for SRIOV PF RoCE devices + - net: phy: fix phy link up when limiting speed via device tree + - bnx2x: fix lockdep splat + - sctp: Fix race between OOTB responce and route removal + - [armhf] net: mvneta: introduce compatible string "marvell, armada-xp-neta" + - [armhf] mvebu: update Ethernet compatible string for Armada XP + - [armhf] net: mvneta: disable IP checksum with jumbo frames for Armada 370 + - usb: gadget: f_fs: fix check in read operation + - usb: gadget: f_fs: add extra check before unregister_gadget_item + - crypto: talitos - avoid memleak in talitos_alg_alloc() + - Revert "crypto: talitos - convert to use be16_add_cpu()" + - [armhf/armmp-lpae] iommu/arm-smmu: Fix broken ATOS check + - [x86] iommu/amd: Handle large pages correctly in free_pagetable + - mmc: sdhci: fix low memory corruption + - [x86] intel_pstate: set BYT MSR with wrmsrl_on_cpu() + - selinux: fix setting of security labels on NFS + - [armhf] KVM: force execution of HCPTR access on VM exit + - [armhf] kvm: psci: fix handling of unimplemented functions + - [armhf] tegra20: Store CPU "resettable" status in IRAM + - [powerpc*] tick/idle: Do not register idle states with + CPUIDLE_FLAG_TIMER_STOP set in periodic mode + - [powerpc*] perf: Fix book3s kernel to userspace backtraces + - [x86] PCI: Use host bridge _CRS info on systems with >32 bit addressing + - [x86] PCI: Use host bridge _CRS info on Foxconn K8M890-8237A + - [s390x] KVM: fix external call injection without sigp interpretation + - [s390x] kdump: fix REGSET_VX_LOW vector register ELF notes + - [s390x] KVM: virtio-ccw: don't overwrite config space values + - [x86] KVM: properly restore LVT0 + - [x86] KVM: make vapics_in_nmi_mode atomic + - fs: Fix S_NOSEC handling + - fs/ufs: revert "ufs: fix deadlocks introduced by sb mutex merge" + - fs/ufs: restore s_lock mutex + - vfs: Remove incorrect debugging WARN in prepend_path + - vfs: Ignore unlocked mounts in fs_fully_visible + - ufs: Fix warning from unlock_new_inode() + - ufs: Fix possible deadlock when looking up directories + - fs/ufs: restore s_lock mutex_init() + + [ Ben Hutchings ] + * [ppc64el] Ignore ABI changes due to disabling HIBERNATION (fixes FTBFS) + * [x86] kvm: fix kvm_apic_has_events to check for NULL pointer (CVE-2015-4692) + + -- Ben Hutchings Sat, 11 Jul 2015 04:58:05 +0100 + +linux (4.0.7-1) unstable; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.0.6 + - crush: ensuring at most num-rep osds are selected + - aio: fix serial draining in exit_aio() + - net: core: Correct an over-stringent device loop detection. + - [x86] bpf_jit: fix FROM_BE16 and FROM_LE16/32 instructions + - [x86] bpf_jit: fix compilation of large bpf programs + - net: phy: Allow EEE for all RGMII variants + - netlink: Reset portid after netlink_insert failure + - rtnl/bond: don't send rtnl msg for unregistered iface + - tcp/ipv6: fix flow label setting in TIME_WAIT state + - net/ipv6/udp: Fix ipv6 multicast socket filter regression + - net: sched: fix call_rcu() race on classifier module unloads + - ipv4: Avoid crashing in ip_error + - cdc_ncm: Fix tx_bytes statistics + - bridge: fix parsing of MLDv2 reports + - net: dp83640: fix broken calibration routine. + - net: dp83640: reinforce locking rules. + - net: dp83640: fix improper double spin locking. + - unix/caif: sk_socket can disappear when state is unlocked + - xen/netback: Properly initialize credit_bytes + - net_sched: invoke ->attach() after setting dev->qdisc + - sctp: Fix mangled IPv4 addresses on a IPv6 listening socket + - bridge: fix br_multicast_query_expired() bug + - udp: fix behavior of wrong checksums (CVE-2015-5364) + - tcp: fix child sockets to use system default congestion control if not set + - xen: netback: read hotplug script once at start of day. + - ipv4/udp: Verify multicast group is ours in upd_v4_early_demux() + - be2net: Replace dma/pci_alloc_coherent() calls with dma_zalloc_coherent() + - bridge: disable softirqs around br_fdb_update to avoid lockup + - netlink: Disable insertions/removals during rehash + - drivers/base: cacheinfo: handle absence of caches + - n_tty: Fix auditing support for cannonical mode + - [x86] iommu/vt-d: Allow RMRR on graphics devices too + - [x86] iommu/vt-d: Fix passthrough mode with translation-disabled devices + - ALSA: hda/realtek - Add a fixup for another Acer Aspire 9420 + - ALSA: usb-audio: Add mic volume fix quirk for Logitech Quickcam Fusion + - ALSA: usb-audio: don't try to get Outlaw RR2150 sample rate + - ALSA: usb-audio: add MAYA44 USB+ mixer control names + - ALSA: usb-audio: fix missing input volume controls in MAYA44 USB(+) + - ALSA: usb-audio: add native DSD support for JLsounds I2SoverUSB + - [armhf] dmaengine: pl330: Fix hang on dmaengine_terminate_all on certain + boards + - dmaengine: Fix choppy sound because of unimplemented resume + - Input: alps - do not reduce trackpoint speed by half + - Input: synaptics - add min/max quirk for Lenovo S540 + - Input: elantech - fix detection of touchpads where the revision matches + a known rate + - Input: elantech - add new icbody type + - block: fix ext_dev_lock lockdep report + - block: discard bdi_unregister() in favour of bdi_destroy() + - USB: cp210x: add ID for HubZ dual ZigBee and Z-Wave dongle + - USB: serial: ftdi_sio: Add support for a Motion Tracker Development Board + - usb: host: xhci: add mutex for non-thread-safe data + - usb: make module xhci_hcd removable + - [x86] asm/irq: Stop relying on magic JMP behavior for early_idt_handlers + - [armhf] dts: am335x-boneblack: disable RTC-only sleep to avoid hardware + damage + - [x86] drm/amdkfd: fix topology bug with capability attr. + - drm/radeon: use proper ACR regisiter for DCE3.2 + - [x86] drm/i915/hsw: Fix workaround for server AUX channel clock divisor + - [x86] drm/i915: Don't skip request retirement if the active list is empty + - [x86] drm/i915: Fix DDC probe for passive adapters + - drm/radeon: fix freeze for laptop with Turks/Thames GPU. + - Revert "drm/radeon: don't share plls if monitors differ in audio support" + - Revert "drm/radeon: adjust pll when audio is not enabled" + - drm/radeon: Make sure radeon_vm_bo_set_addr always unreserves the BO + - serial: imx: Fix DMA handling for IDLE condition aborts + - [powerpc*] of/dynamic: Fix test for PPC_PSERIES + - virtio_pci: Clear stale cpumask when setting irq affinity + - [armel,armhf] bus: mvebu-mbus: do not set WIN_CTRL_SYNCBARRIER on non + io-coherent platforms. + - [armel,armhf] Revert "bus: mvebu-mbus: make sure SDRAM CS for DMA don't + overlap the MBus bridge window" + - [arm64] dts: mt8173-evb: fix model name + - mm/memory_hotplug.c: set zone->wait_table to null after freeing it + - md: Close race when setting 'action' to 'idle'. + - md: don't return 0 from array_state_store + - sched, numa: do not hint for NUMA balancing on VM_MIXEDMAP mappings + - blk-mq: free hctx->ctxs in queue's release handler + - cfg80211: wext: clear sinfo struct before calling driver + - [armhf] irqchip: sunxi-nmi: Fix off-by-one error in irq iterator + - Btrfs: send, add missing check for dead clone root + - Btrfs: send, don't leave without decrementing clone root's send_progress + - btrfs: incorrect handling for fiemap_fill_next_extent return + - btrfs: cleanup orphans while looking up default subvolume + - Btrfs: fix range cloning when same inode used as source and destination + - Btrfs: fix uninit variable in clone ioctl + - Btrfs: fix regression in raid level conversion + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.0.7 + - crypto: caam - improve initalization for context state saves + - crypto: caam - fix RNG buffer cache alignment + - [x86] KVM: fix lapic.timer_mode on restore + - ALSA: hda - adding a DAC/pin preference map for a HP Envy TS machine + - tracing: Have filter check for balanced ops + - iser-target: Fix variable-length response error completion + - iser-target: Fix possible use-after-free + - drm/mgag200: Reject non-character-cell-aligned mode widths + - [x86] drm/i915: Always reset vma->ggtt_view.pages cache on unbinding + - [x86] Revert "drm/i915: Don't skip request retirement if the active list + is empty" + - drm/radeon: Add RADEON_INFO_VA_UNMAP_WORKING query + - ath3k: Add support of 0489:e076 AR3012 device + - ath3k: add support of 13d3:3474 AR3012 device + - b43: fix support for 14e4:4321 PCI dev with BCM4321 chipset + - cdc-acm: Add support of ATOL FPrint fiscal printers + - [armhf] EXYNOS: Fix failed second suspend on Exynos4 + - [x86] kprobes: Return correct length in __copy_instruction() + - dm: fix NULL pointer when clone_and_map_rq returns !DM_MAPIO_REMAPPED + - [x86] drm/i915: Avoid GPU hang when coming out of s3 or s4 + - [powerpc*] powernv: Restore non-volatile CRs after nap + + [ Ben Hutchings ] + * mm: Re-enable ZBUD as module (Closes: #789094) + * mm: Change ZSMALLOC from built-in to module + * Revert "tcp: fix child sockets to use system default congestion control if + not set" to avoid ABI change + * [ppc64el] Disable HIBERNATION (Closes: #789070) + * [mips*] Correct FP ISA requirements (Closes: #781892) + * udeb: Add more drivers to sound-modules, thanks to Samuel Thibault + (Closes: #782495) + + -- Ben Hutchings Mon, 06 Jul 2015 02:57:42 +0100 + +linux (4.0.5-1) unstable; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.0.5 + - [x86] iommu/amd: Fix bug in put_pasid_state_wait (regression in 4.0) + - [x86] fpu: Disable XSAVES* support for now (regression in 3.17) + - [x86] KVM: MMU: fix smap permission check + - [x86] kvm: fix crash in kvm_vcpu_reload_apic_access_page + - [x86] KVM: MMU: fix SMAP virtualization + - ktime: Fix ktime_divns to do signed division (regression in 3.17) + - omfs: fix sign confusion for bitmap loop counter (regression in 3.18) + - xfs: xfs_attr_inactive leaves inconsistent attr fork state behind + - xfs: xfs_iozero can return positive errno (regression in 3.17) + - ovl: don't remove non-empty opaque directory (regression in 4.0) + - [armhf] mfd: da9052: Fix broken regulator probe (regression in 3.19) + - libceph: request a new osdmap if lingering request maps to no osd + - Revert "libceph: clear r_req_lru_item in __unregister_linger_request()" + (regression in 3.18) + - Btrfs: fix racy system chunk allocation when setting block group ro + (regression in 4.0) + - xen/events: don't bind non-percpu VIRQs with percpu chip + - hwmon: (tmp401) Do not auto-detect chip on I2C address 0x37 + - clk: add missing lock when call clk_core_enable in clk_set_parent + (regression in 4.0) + - brcmfmac: avoid null pointer access when brcmf_msgbuf_get_pktid() fails + - lib: Fix strnlen_user() to not touch memory after specified maximum + - vfs: d_walk() might skip too much + - module: Call module notifier on failure after complete_formation() + (regression in 3.16) + - Revert "ALSA: hda - Add mute-LED mode control to Thinkpad" + (regression in 4.0.3) + - xhci: Solve full event ring by increasing TRBS_PER_SEGMENT to 256 + - [powerpc*] mce: fix off by one errors in mce event handling + (regression in 3.19) + - pty: Fix input race when closing (regression in 3.19) + - ext4: fix lazytime optimization + - ext4: fix NULL pointer dereference when journal restart fails + - ext4: check for zero length extent explicitly + - jbd2: fix r_count overflows leading to buffer overflow in journal recovery + - libata: Ignore spurious PHY event on LPM policy change + - libata: Blacklist queued TRIM on all Samsung 800-series + - [arm64] bpf: fix signedness bug in loading 64-bit immediate + (regression in 3.18) + - [x86] gpio: gpio-kempld: Fix get_direction return value + - [s390x] crypto: ghash - Fix incorrect ghash icv buffer handling. + - mac80211: move WEP tailroom size check + - mac80211: don't use napi_gro_receive() outside NAPI context + - [s390x] mm: correct return value of pmd_pfn (regression in 3.17) + - [armhf] EXYNOS: Fix dereference of ERR_PTR returned by + of_genpd_get_from_provider (regression in 4.0) + - [arm*] fix missing syscall trace exit + - [hppa] Fix crashes due to stack randomization on stack-grows-upwards + architectures + - kernfs: do not account ino_ida allocations to memcg + - nfsd: fix the check for confirmed openowner in nfs4_preprocess_stateid_op + - md/raid5: don't record new size if resize_stripes fails. + - Revert "HID: logitech-hidpp: support combo keyboard touchpad TK820" + (regression in 3.19) + - [mips*] fix FP mode selection in lieu of .MIPS.abiflags data + (regression in 4.0) + - ACPI / init: Fix the ordering of acpi_reserve_resources() + - iwlwifi: mvm: Free fw_status after use to avoid memory leak + (regression in 3.19) + - iwlwifi: pcie: prevent using unmapped memory in fw monitor + - drm/plane-helper: Adapt cursor hack to transitional helpers + (regression in 4.0) + - drm/radeon/audio: make sure connector is valid in hotplug case + - Revert "drm/radeon: only mark audio as connected if the monitor supports + it (v3)" (regression in 4.0.3) + - dm: fix casting bug in dm_merge_bvec() (regression in 3.19) + - dm: fix reload failure of 0 path multipath mapping on blk-mq devices + (regression in 4.0) + - UBI: block: Add missing cache flushes + - md: fix race when unfreezing sync_action (regression in 4.0) + - fs/binfmt_elf.c:load_elf_binary(): return -EINVAL on zero-length mappings + (regression in 4.0.2) + + [ Ben Hutchings ] + * udeb: Remove i2o modules (fixes FTBFS on amd64) (Closes: #787004) + * Revert "libata: Ignore spurious PHY event on LPM policy change" to avoid + ABI change + + [ Ian Campbell ] + * [armhf] Enable PCIe support for IMX6 boards. Patch from Vagrant + Cascadian (Closes: #787029) + * [armhf] Add stmmac-platform module to nic-modules udeb. (Closes: #786716) + * [arm] Fix mvebu-mbus for non-io-coherent platforms. In particular + armel/{orion5x,kirkwood}. + * [armel/kirkwood]: Enable CONFIG_ARM_KIRKWOOD_CPUIDLE. (Closes: #787716) + + [ Uwe Kleine-König ] + * [rt] Update to 4.0.5-rt3 + + -- Ben Hutchings Tue, 16 Jun 2015 15:40:49 +0100 + +linux (4.0.4-1) unstable; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.0.3 + - bpf: fix 64-bit divide + - route: Use ipv4_mtu instead of raw rt_pmtu (regression in 3.19) + - cxgb4: Fix MC1 memory offset calculation (regression in 3.19) + - [mips*] Revert "MIPS: Remove race window in page fault handling" + (regression in 3.17) + - [mips*] Fix race condition in lazy cache flushing. + - [mips*/octeon] Remove udelay() causing huge IRQ latency + - [mips*] Fix cpu_has_mips_r2_exec_hazard. + - [mips*] asm: elf: Set O32 default FPU flags (regression in 4.0) + - ALSA: emux: Fix mutex deadlock in OSS emulation + - cdc-acm: prevent infinite loop when parsing CDC headers. + (regression in 4.0) + - [arm64] dma-mapping: always clear allocated buffers + - [arm64] add missing PAGE_ALIGN() to __dma_free() + - [armhf] usb: chipidea: otg: remove mutex unlock and lock while stop and + start role (regression in 3.16) + - btrfs: unlock i_mutex after attempting to delete subvolume during send + (regression in 3.16) + - [x86] ACPI / SBS: Enable battery manager when present (regression in 3.18) + - rbd: end I/O the entire obj_request on error + - ext4: fix data corruption caused by unwritten and delayed extents + (Closes: #785672) + - ext4: move check under lock scope to close a race. + - SCSI: add 1024 max sectors black list flag (regression in 3.19) + - 3w-xxxx: fix command completion race + - 3w-9xxx: fix command completion race + - 3w-sas: fix command completion race + - drm/radeon: fix lockup when BOs aren't part of the VM on release + - drm/radeon: reset BOs address after clearing it. + - drm/radeon: check new address before removing old one + - hfsplus: don't store special "osx" xattr prefix on-disk + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.0.4 + - [x86] spinlocks: Fix regression in spinlock contention detection + (regression in 4.0) + - [x86] ACPI / SBS: Add 5 us delay to fix SBS hangs on MacBook + (regression in 3.18) + - [x86] PCI/ACPI: Make all resources except [io 0xcf8-0xcff] available on + PCI bus (regression in 4.0) + - ACPI / PNP: add two IDs to list for PNPACPI device enumeration + (regression in 3.16) + - ocfs2: dlm: fix race between purge and get lock resource + - nilfs2: fix sanity check of btree level in nilfs_btree_root_broken() + - mnt: Fix fs_fully_visible to verify the root directory is visible + - mm/memory-failure: call shake_page() when error hits thp tail page + - vfio: Fix runaway interruptible timeout (regression in 4.0) + - Revert "dm crypt: fix deadlock when async crypto algorithm returns -EBUSY" + (regression in 4.0.2) + - block: destroy bdi before blockdev is unregistered. (regression in 4.0) + - blk-mq: fix race between timeout and CPU hotplug + - blk-mq: fix CPU hotplug handling + - [armhf] dts: imx6: phyFLEX: USB VBUS control is active-high + (regression in 3.16) + - [armhf] mvebu: armada-xp-openblocks-ax3-4: Disable internal RTC + - [armhf] OMAP2+: Fix omap off idle power consumption creeping up + (regression in 3.16) + - [armel,armhf] net fix emit_udiv() for BPF_ALU | BPF_DIV | BPF_K + intruction. + - drm: Zero out invalid vblank timestamp in drm_update_vblank_count. + (regression in 3.17) + - [x86] drm/i915/dp: there is no audio on port A + - [x86] drm/amdkfd: allow unregister process with queues + - drm/radeon: disable semaphores for UVD V1 (v2) + - drm/radeon: don't setup audio on asics that don't support it + - drm/radeon: fix userptr BO unpin bug v3 + - drm/radeon: make VCE handle check more strict + - drm/radeon: make UVD handle checking more strict + - drm/radeon: more strictly validate the UVD codec + - pinctrl: Don't just pretend to protect pinctrl_maps, do it for real + - mmc: card: Don't access RPMB partitions for normal read/write + + [ Ben Hutchings ] + * Fix error messages at boot on systems without an RTC (Closes: #784146): + - rtc: hctosys: do not treat lack of RTC device as error + - rtc: hctosys: use function name in the error log + * [rt] Update to 4.0.4-rt1 and re-enable + * linux-image: Depend on kmod without an alternative of module-init-tools + * linux-image: Add versioned Breaks on udev (<< 208-8~) due to #752742 and + #756312 + * [i386] pnp: Disable PNPBIOS_PROC_FS + * [arm64] USB: Add support for XHCI on APM Mustang (Closes: #785707) + - Change USB_XHCI_HCD to built-in and enable USB_XHCI_PLATFORM as built-in + - Make xhci platform driver use 64 bit or 32 bit DMA + - Add support for ACPI identification to xhci-platform + * md/raid0: fix restore to sector variable in raid0_make_request + (Closes: #786372) (regression in 4.0.2) + * [x86] e1000e: Add support for Sunrise Point (i219) (Closes: #784546) + * [x86] config: Enable NEED_DMA_MAP_STATE by default when SWIOTLB is selected + (Closes: #786551) + * cdc_ncm: Fix tx_bytes statistics (regression in 4.0) + * [armhf] USB: musb: Fix order of conditions for assigning end point + operations (regression in 3.19) + * [armel/{kirkwood,orion5x}] Disable PM again to reduce kernel image size + * [armel/kirkwood] Enable DEBUG_MVEBU_UART0_ALTERNATE, replacing + DEBUG_MVEBU_UART_ALTERNATE + * i2o: Disable I2O + * [x86] vmwgfx: Enable DRM_VMWGFX_FBCON (Closes: #714929) + * media: Enable DVB_SMIPCIE as module (Closes: #785153) + * Bump ABI to 2 + * [x86] i2c: Change I2C to built-in and enable ACPI_I2C_OPREGION + (Closes: #778896) + * usb-storage: Enable USB_UAS for the third time, hoping that it's finally + robust enough (Closes: #749014) + * zram: Enable ZRAM_LZ4_COMPRESS (Closes: #770958) + * HID: Enable HID_BATTERY_STRENGTH (Closes: #783214) + * [x86] ALSA: Enable SND_SOC_INTEL_BROADWELL_MACH as module (Closes: #785422) + + [ Ian Campbell ] + * [armhf+arm64] Enabled generic SYSCON regmap reset driver + * [arm64] Enable PCI support and related modules, adjusting udeb module lists + for new modules. + * [arm64] Build XHCI platform drivers as a module. + + -- Ben Hutchings Tue, 26 May 2015 02:30:06 +0100 + +linux (4.0.2-1) unstable; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.0.1 + - udptunnels: Call handle_offloads after inserting vlan tag. + - tcp: tcp_make_synack() should clear skb->tstamp + - bnx2x: Fix busy_poll vs netpoll + - bpf: fix verifier memory corruption + - Revert "net: Reset secmark when scrubbing packet" + - skbuff: Do not scrub skb mark within the same name space + - fs: take i_mutex during prepare_binprm for set[ug]id executables + (CVE-2015-3339) + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.0.2 + - tcp: fix possible deadlock in tcp_send_fin() + - tcp: avoid looping in tcp_send_fin() (regression in 4.0) + - net: do not deplete pfmemalloc reserve + - net: fix crash in build_skb() + - net: rfs: fix crash in get_rps_cpus() (regression in 4.0) + - md: fix md io stats accounting broken (regression in 3.19) + - [x86] perf/intel: Fix Core2,Atom,NHM,WSM cycles:pp events + (regression in 3.19) + - [x86] fix special __probe_kernel_write() tail zeroing case + (regression in 4.0) + - Btrfs: fix log tree corruption when fs mounted with -o discard + - btrfs: don't accept bare namespace as a valid xattr + - Btrfs: fix inode eviction infinite loop after cloning into it + - Btrfs: fix inode eviction infinite loop after extent_same ioctl + - mm/hugetlb: use pmd_page() in follow_huge_pmd() (regression in 4.0) + - [powerpc] hugetlb: Call mm_dec_nr_pmds() in hugetlb_free_pmd_range() + (regression in 4.0) + - [s390x] KVM: fix handling of write errors in the tpi handler + - [s390x] KVM: reinjection of irqs can fail in the tpi handler + - [s390x] KVM: fix get_all_floating_irqs (regression in 3.15) + - [s390x] hibernate: fix save and restore of kernel text section + - KVM: use slowpath for cross page cached accesses + - [arm*] KVM: check IRQ number on userland injection + - [x86] KVM: VMX: Preserve host CR4.MCE value while in guest mode. + - [mips*el] Loongson-3: Add IRQF_NO_SUSPEND to Cascade irqaction + (regression in 3.19) + - [mips*] Hibernate: flush TLB entries earlier + - md/raid0: fix bug with chunksize not a power of 2. + - [armhf] spi: imx: read back the RX/TX watermark levels earlier + (regression in 3.18) + - ring-buffer: Replace this_cpu_*() with __this_cpu_*() + - NFS: fix BUG() crash in notify_change() with patch to chown_common() + - [armhf] fix broken hibernation (regression in 3.16) + - [armel,armhf] 8320/1: fix integer overflow in ELF_ET_DYN_BASE + - ALSA: emu10k1: don't deadlock in proc-functions + - Input: alps - fix touchpad buttons getting stuck when used with trackpoint + (regression in 4.0) + - mfd: core: Fix platform-device name collisions (regression in 3.19) + - fs/binfmt_elf.c: fix bug in loading of PIE binaries + - ptrace: fix race between ptrace_resume() and wait_task_stopped() + - ext4: make fsync to sync parent dir in no-journal for real this time + - mnt: Prevent circumvention of locked mounts using umount(MNT_DETACH) + (CVE-2014-9717) + - tpm: fix: sanitized code paths in tpm_chip_register() (regression in 4.0) + - [powerpc/powerpc64,ppc64*] perf: Cap 64bit userspace backtraces to + PERF_MAX_STACK_DEPTH (Closes: #784278) + - UBI: account for bitflips in both the VID header and data + - UBI: fix out of bounds write + - UBI: fix check for "too many bytes" + - target: Fix COMPARE_AND_WRITE with SG_TO_MEM_NOALLOC handling + - target/file: Fix SG table for prot_buf initialization + - [arm64] head.S: ensure visibility of page tables (regression in 3.15) + - [arm64] errata: add workaround for cortex-a53 erratum #845719 + - [powerpc/powerpc64,ppc64*] powernv: Don't map M64 segments using M32DT + (regression in 3.17) + - [powerpc/powerpc64,ppc64] cell: Fix crash in iic_setup_cpu() after per_cpu + changes (regression in 3.19) + - [powerpc/powerpc64,ppc64] cell: Fix cell iommu after it_page_shift changes + - [i386/686-pae] ACPICA: Utilities: split IO address types from data type + models. + - ACPICA: Store GPE register enable masks upfront (regression in 3.19) + - [armhf] clk: samsung: exynos4: Disable ARMCLK down feature on Exynos4210 + SoC (regression in 3.17) + - [armhf] clk: tegra: Use the proper parent for plld_dsi (regression in 4.0) + - [armhf] serial: imx: Fix clearing of receiver overrun flag + - serial: 8250: Check UART_SCR is writable (regression in 4.0) + - sd: Unregister integrity profile (regression in 3.18) + - sd: Fix missing ATO tag check (regression in 3.18) + - [x86] Drivers: hv: vmbus: Fix a bug in the error path in vmbus_open() + - IB/core: disallow registering 0-sized memory region + - IB/iser: Fix wrong calculation of protection buffer length + (regression in 3.16) + - i2c: Mark adapter devices with pm_runtime_no_callbacks (regression in 4.0) + - [armhf] drm/exynos: Enable DP clock to fix display on Exynos5250 and other + (regression in 4.0) + - [x86] drm/i915: vlv: fix save/restore of GFX_MAX_REQ_COUNT reg + (regression in 3.16) + - [x86] drm/i915: cope with large i2c transfers + - vfs: RCU pathwalk breakage when running into a symlink overmounting + something + - Revert "nfs: replace nfs_add_stats with nfs_inc_stats when add one" + (regression in 3.19) + - nfsd4: disallow ALLOCATE with special stateids (regression in 3.19) + - nfsd4: fix READ permission checking (regression in 3.16) + - nfsd4: disallow SEEK with special stateids (regression in 3.18) + - nfsd: eliminate NFSD_DEBUG (regression of linux-libc-dev in 3.19) + - nfs: fix high load average due to callback thread sleeping + (regression in 4.0) + - nfs: fix DIO good bytes calculation (regression in 4.0) + - nfs: remove WARN_ON_ONCE from nfs_direct_good_bytes + - NFS: Add a stub for GETDEVICELIST (regression in 3.18) + - sched/deadline: Always enqueue on previous rq when dl_task_timer() fires + (regression in 4.0) + - mac80211: send AP probe as unicast again (regression in 3.19) + - lib: memzero_explicit: use barrier instead of OPTIMIZER_HIDE_VAR + - [armhf] crypto: omap-aes - Fix support for unequal lengths + - memstick: mspro_block: add missing curly braces + - drivers: platform: parse IRQ flags from resources (regression in 3.18) + + [ Ben Hutchings ] + * debian.py,gencontrol.py: Fix the version sanity checks for backports and + security/LTS uploads + * ipv4: Missing sk_nulls_node_init() in ping_unhash() (CVE-2015-3636) + * [armel/orion5x] Increase maximum kernel image size to ~2 MB, removing + support for DNS-323 (fixes FTBFS) + - Re-enable BLK_DEV_INTEGRITY, SCSI_UFSHCD, TCM_IBLOCK, AUDIT, USER_NS, + PCI_QUIRKS, FTRACE, DEBUG_BUGVERBOSE, SECURITY + - Enable DYNAMIC_DEBUG, FRONTSWAP + * [arm64,armhf,powerpcspe,x86] gpio: Explicitly enable GPIOLIB, as some + drivers now depend on rather than selecting it (fixes FTBFS on i386) + * [x86] thermal: Enable INT340X_THERMAL as module, replacing + ACPI_INT3403_THERMAL + * [x86] Re-enable IOSF_MBI and INTEL_RAPL as modules + * sound: Enable SND_USB_POD, SND_USB_PODHD, SND_USB_TONEPORT, + SND_USB_VARIAX as modules, replacing LINE6_USB + * media/rc: Enable IR_IGORPLUGUSB as module, replacing LIRC_IGORPLUGUSB + * [amd64] misc: Enable INTEL_MIC_BUS and re-enable INTEL_MIC_HOST as modules + * sound/firewire: Enable SND_OXFW as module, replacing SND_FIREWIRE_SPEAKERS + * [x86] Enable DW_DMAC and re-enable SND_SOC_INTEL_HASWELL_MACH, + SND_SOC_INTEL_BYT_RT5640_MACH, SND_SOC_INTEL_BYT_MAX98090_MACH as modules + * [x86] tpm: Enable TCG_TIS_I2C_ST33 as module, replacing TCG_ST33_I2C + * [armel/kirkwood] regulator: Re-enable REGULATOR, REGULATOR_FIXED_VOLTAGE + * [armel/kirkwood] sound: Enable SND_SIMPLE_CARD as module, replacing + SND_KIRKWOOD_SOC_OPENRD, SND_KIRKWOOD_SOC_T5325; re-enable + SND_SOC_ALC5623, SND_SOC_CS42L51_I2C as modules + * [alpha,armel/kirkwood,hppa,ia64,mips*/{octeon,sb1-bcm91250a}] Re-enable PM + * [armel/orion5x] Enable PM + * [armhf] sound: Enable SND_SIMPLE_CARD as module + * path_openat(): fix double fput() + * [x86] serial: Enable SERIAL_8250_DW as built-in + * [armhf] Enable ARM_ERRATA_430973 (Closes: #768890), ARM_ERRATA_643719, + ARM_ERRATA_754327, ARM_ERRATA_773022 + * [x86] nfc: Enable NFC_HCI, NFC_MEI_PHY, NFC_PN544, NFC_PN544_MEI as + modules (Closes: #770323) + * Set ABI to 1 + * mnt: Add missing pieces of fix for CVE-2014-9717: + - mnt: Fail collect_mounts when applied to unmounted mounts + - fs_pin: Allow for the possibility that m_list or s_list go unused. + + [ Ian Campbell ] + * [armhf] Enable support for Freescale SNVS RTC. (Closes: #782364) + * [armhf] Add ehci-orion module to usb-modules udeb. (Closes: #783324) + * [armhf] imx-hdmi module is now called dw_hdmi-imx, so update fb-modules + udeb. Patches from both Vagrant Cascadian and Wookey. (Closes: #783275) + * [arm*] Install DTBS using dtbs_install target. (Closes: #784761) + + -- Ben Hutchings Mon, 11 May 2015 04:29:06 +0100 + +linux-tools (4.0.2-1) unstable; urgency=medium + + * New upstream release + * Thanks to Luca Boccassi and Lukas Wunner for some hints on upgrading + to 4.0 (Closes: #778588) + * debian/control: Add gcc-multilib to Build-Depends in order to build + perf-read-vdso{,x}32 + * linux-tools: Install perf-read-vdso{,x}32 in versioned directory + under /usr/lib + * linux-tools: Set ARCH=x86 when building perf for amd64, i386 or x32 + * linux-kbuild: Include Makefile.kasan (Closes: #783681) + * linux-kbuild: Enable Large File Support (Closes: #778942) + + -- Ben Hutchings Mon, 11 May 2015 03:53:12 +0100 + +linux (4.0-1~exp1) experimental; urgency=medium + + * New upstream release: http://kernelnewbies.org/Linux_4.0 + + [ Ben Hutchings ] + * [i386,s390] Remove 64-bit kernel flavours, which are also available + through multiarch + * [x86] Enable PARAVIRT_SPINLOCKS + + -- maximilian attems Tue, 21 Apr 2015 21:46:47 +0200 + +linux (3.19.3-1~exp1) experimental; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.19.2 + https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.19.3 + + -- maximilian attems Sun, 29 Mar 2015 20:14:33 +0200 + +linux (3.19.1-1~exp1) experimental; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.19.1 + - Bluetooth: ath3k: workaround the compatibility issue with xHCI controller + (Closes: #778463) + - random: Fix fast_mix() function (regression in 3.17) + - xfs: inode unlink does not set AGI buffer type + - xfs: set buf types when converting extent formats + - xfs: set superblock buffer type correctly + - iwlwifi: mvm: validate tid and sta_id in ba_notif + - iwlwifi: mvm: fix failure path when power_update fails in add_interface + (regression in 3.15) + - HID: i2c-hid: Limit reads to wMaxInputLength bytes for input events + (regression in 3.19) + - cpufreq: Set cpufreq_cpu_data to NULL before putting kobject + - [xen] manage: Fix USB interaction issues when resuming (regression in + 3.17) + - [xen] xen-scsiback: mark pvscsi frontend request consumed only after last + read + - megaraid_sas: endianness related bug fixes and code optimization + - rc-main: Re-apply filter for no-op protocol change (regression in 3.17) + - proc/pagemap: walk page tables under pte lock + - NFS: struct nfs_commit_info.lock must always point to inode->i_lock + (regression in 3.17) + - [mips*] asm: asmmacro: Replace "add" instructions with "addu" + - mm/hugetlb: pmd_huge() returns true for non-present hugepage + - blk-mq: fix double-free in error path + - nfs41: .init_read and .init_write can be called with valid pg_lseg + (regression in 3.15) + - SUNRPC: NULL utsname dereference on NFS umount during namespace cleanup + - NFSv4: Ensure we reference the inode for return-on-close in delegreturn + - NFSv4.1: Fix a kfree() of uninitialised pointers in + decode_cb_sequence_args + - sg: fix unkillable I/O wait deadlock with scsi-mq + - sg: fix EWOULDBLOCK errors with scsi-mq + - iscsi-target: Drop problematic active_ts_list usage + - cipso: don't use IPCB() to locate the CIPSO IP option (regression in 3.18) + - ring-buffer: Do not wake up a splice waiter when page is not full + (regression in 3.18) + - tty: Remove warning in tty_lock_slave() (regression in 3.19) + - tty: Prevent untrappable signals from malicious program + - USB: fix use-after-free bug in usb_hcd_unlink_urb() + - [armhf] usb: dwc3: gadget: add missing spin_lock() (regression in 3.19) + - usb: core: buffer: smallest buffer should start at ARCH_DMA_MINALIGN + - cdc-acm: add sanity checks + - ntp: Fixup adjtimex freq validation on 32-bit systems (regression in 3.19) + - udf: Check length of extended attributes and allocation descriptors + - [s390*] KVM: forward hrtimer if guest ckc not pending yet + (regression in 3.17) + - [s390*] KVM: base hrtimer on a monotonic clock + - [s390*] KVM: floating irqs: fix user triggerable endless loop + - [s390*] KVM: avoid memory leaks if __inject_vm() fails + - gpiolib: of: allow of_gpiochip_find_and_xlate to find more than one chip + per node (regression in 3.19) + - sb_edac: Fix detection on SNB machines (regression in 3.18) + - jffs2: fix handling of corrupted summary length + - samsung-laptop: Add use_native_backlight quirk, and enable it on some + models (regression in 3.16) + - libceph: fix double __remove_osd() problem + - btrfs: fix leak of path in btrfs_find_item + - Btrfs: fix fsync data loss after adding hard link to inode + - blk-throttle: check stats_cpu before reading it from sysfs + - [x86] efi: Avoid triple faults during EFI mixed mode calls + - [x86][xen] irq: Fix regression in 3.19 + - Replace ACCESS_ONCE of non-scalar types with READ_ONCE + - kernel: tighten rules for ACCESS_ONCE + - [x86] spinlocks/paravirt: Fix memory corruption on unlock + - quota: Store maximum space limit in bytes + + [ Ben Hutchings ] + * [armhf] Drop sun7i device tree patches which are included in 3.19 + (fixes FTBFS) (Closes: #779799) + * nfsd: Enable NFSD_V4_SECURITY_LABEL + + [ Helge Deller ] + * [hppa] Add virtio udeb modules + * [alpha] Add debian-installer udeb packages + * [alpha] Drop alpha-legacy kernel image + + -- Ben Hutchings Sun, 08 Mar 2015 15:29:45 +0000 + +linux (3.19-1~exp1) experimental; urgency=medium + + * New upstream release: http://kernelnewbies.org/Linux_3.19 + * Enable SCSI_AM53C974 where tmscim was enabled. + + -- maximilian attems Thu, 12 Feb 2015 23:41:05 +0100 + +linux (3.18.6-1~exp1) experimental; urgency=medium + + [ Ben Hutchings ] + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.18.6 + + -- maximilian attems Sat, 07 Feb 2015 22:38:37 +0100 + +linux-tools (3.18.5-1~exp1) experimental; urgency=medium + + * New upstream release + * linux-tools: Fix build configuration to avoid linking perf with libbfd + (Closes: #763002) + * linux-tools: Add a check that perf is not linked with libbfd + * [arm64] Enable building linux-tools, thanks to Steve Capper + (Closes: #771340) + * [armel,armhf] linux-tools: Enable use of libunwind + * [hppa,sparc] linux-tools: Enable use of libnuma + * [mips*,powerpcspe,x32] Enable building linux-tools + + -- Ben Hutchings Sun, 01 Feb 2015 02:53:07 +0100 + +linux (3.18.5-1~exp1) experimental; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.18.4 + - [hppa] fix out-of-register compiler error in ldcw inline assembler + function + https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.18.5 + + [ Helge Deller ] + * [hppa] Enable CONFIG_PPDEV to avoid CUPS complaining with systemd + + -- maximilian attems Sat, 31 Jan 2015 22:20:40 +0100 + +linux (3.18.3-1~exp1) experimental; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.18.1 + https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.18.2 + https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.18.3 + + [ Ian Campbell ] + * [armel/kirkwood]: Enable DEBUG_MVEBU_UART_ALTERNATE to match the behaviour + of previous boardfile based kirkwood kernels. Otherwise the kernel silently + crashes during boot. + * [armel/kirkwood]: Add versioned breaks on flash-kernel << 3.30~, versions + before this do not append a DTB on all platforms. This is required now that + board file support is removed. + * Add xhci-pci and xhci-plat-hcd to usb-modules udeb. (Inspired by #770912). + * [armhf/armmp]: Enable support for Tegra124 based platforms. + + [ Helge Deller ] + * [hppa] udeb: Fix duplicate modules in ata-modules, pata-modules + (Closes: #770102) + * [hppa] Create build-dependencies on binutils-hppa64 and gcc-4.9-hppa64 + + [ Ben Hutchings ] + * [sh4] ftrace: Remove -m32 option from recordmcount.pl (Closes: #775611) + + -- Ben Hutchings Sun, 18 Jan 2015 20:48:06 +0000 + +linux (3.18-1~exp1) experimental; urgency=medium + + * New upstream release: http://kernelnewbies.org/Linux_3.18 + + [ Ben Hutchings ] + * Remove aufs + * vfs: Enable OVERLAY_FS as module + * drivers/base: Disable UEVENT_HELPER, only needed for compatibility + with wheezy's udev package + * net: Enable 6LOWPAN as module; re-enable BT_6LOWPAN and + IEEE802154_6LOWPAN as modules + * net: Enable GENEVE as module; enable OPENVSWITCH_GENEVE + * ipv4: Enable TCP_CONG_DCTCP as module + * netfilter: Enable IP6_NF_NAT, IP_SET_HASH_MAC, IP_VS_FO, NF_LOG_ARP, + NF_LOG_BRIDGE, NFT_BRIDGE_REJECT, NFT_MASQ, NFT_MASQ_IPV4, NFT_MASQ_IPV6 + as modules + * SCSI,xen: Enable XEN_SCSI_FRONTEND, XEN_SCSI_BACKEND as modules + * SCSI: Re-enable LIBFCOE, FCOE, FCOE_FNIC, SCSI_BNX2X_FCOE as modules + * drivers/net: Enable ET131X as module for all architectures + * wireless: Enable BRCMFMAC as module for all architectures; + enable BRCMFMAC_USB and BRCMFMAC_PCIE + * wireless: Enable RTL8192EE, RTL8821AE as modules for all architectures + (replacing R8192EE, R8821AE for x86 only) + * media: Enable VIDEO_VIVID as module (replacing VIDEO_VIVI) + * [armel/kirkwood] Enable ARCH_MULTI_V5, ARCH_MVEBU, MACH_KIRKWOOD and + MACH_NETXBIG, replacing ARCH_KIRKWOOD etc. + * [powerpc/powerpc64,ppc64*] Enable SCSI_IBMVFC as module, replacing + SCSI_IBMVSCSIS + * input/tablet: Enable TABLET_SERIAL_WACOM4 as module + * media: Enable MEDIA_SDR_SUPPORT; enable DVB_PT3, DVB_USB_DVBSKY, + USB_AIRSPY, USB_HACKRF, VIDEO_TW68 as modules; enable VIDEO_SOLO6X10 as + module on all architectures (replacing SOLO6X10 on x86); + enable USB_MSI2500 on all architectures (replacing USB_MSI3101 on x86) + * au0828: Enable VIDEO_AU0828_RC + * HID,gpio,i2c: Enable HID_CP2112 as module + * HID: Enable HID_PENMOUNT as module + * USB,leds: Enable USB_LED_TRIG + * leds: Disable LEDS_PCA9532, apparently only needed on armel/iop32x + * [x86] platform: Enable TOSHIBA_HAPS as module + * [x86] serial: Enable SERIAL_8250_FINTEK as module + * [x86] Enable MFD_MENF21BMC, LEDS_MENF21BMC, SENSORS_MENF21BMC_HWMON, + MENF21BMC_WATCHDOG as modules + * [x86] edac: Enable EDAC_IE31200 as module + * [x86] drivers/crypto: Enable CRYPTO_DEV_QAT_DH895xCC as module + * [x86] comedi: Enable COMEDI_NI_USB6501 as module + * [armel] Change configuration to reduce kernel image size (fixes FTBFS) + - [/kirkwood] netlink: Disable NETLINK_MMAP + - [/kirkwood] cgroups: Disable MEMCG + - [/kirkwood] Disable CHECKPOINT_RESTORE + - [/kirkwood] mm: Disable COMPACTION, KSM + - [/kirkwood] crypto: Disable CRYPTO_FIPS + - [/kirkwood] power: Disable HIBERNATION, PM_RUNTIME + - [/orion5x] mm: Disable COMPACTION, MIGRATION + - [/orion5x] block: Disable BLK_DEV_INTEGRITY + - [/orion5x] SCSI: Disable SCSI_UFSHCD + - [/orion5x] target: Disable TCM_IBLOCK + - [/orion5x] Disable AUDIT, DEBUG_BUGVERBOSE, PROFILING, OPROFILE, RD_LZO + * [armel] Include size of appended DTBs in image size check + + -- Ben Hutchings Thu, 11 Dec 2014 00:43:21 +0000 + +linux (3.17.4-1~exp1) experimental; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.17.1 + https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.17.2 + https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.17.3 + https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.17.4 + + [ Ben Hutchings ] + * Set ABI to trunk + * aufs: Update to aufs3.17-20141020: + - support for AT_EMPTY_PATH/LOOKUP_EMPTY + - Show union filesystem paths in /proc/*/map_files/* + - bugfix, fix the returning size of the branch attr + * Compile with gcc-4.9 (except for ia64,m68k,s390*,sh4) + + -- maximilian attems Mon, 24 Nov 2014 00:00:27 +0100 + +linux-tools (3.17-1~exp1) experimental; urgency=medium + + * New upstream release + - usbip userspace moved to tools/usb/usbip + + -- Ben Hutchings Fri, 17 Oct 2014 14:58:51 +0200 + +linux (3.17-1~exp1) experimental; urgency=medium + + * New upstream release: http://kernelnewbies.org/Linux_3.17 + + * armel: Drop ixp4xx image. + * topconfig: Reenable renamed IP_NF_NAT. (closes #762458) + * udeb: refix renamed i2c-core. + + -- maximilian attems Tue, 14 Oct 2014 23:01:39 +0200 + +linux (3.17~rc5-1~exp1) experimental; urgency=medium + + * New upstream release candidate + + [ Ben Hutchings ] + * aufs: Update to aufs3.x-rcN-20140908 + + [ maximilian attems ] + * udeb: fix renamed i2ccore. + + -- maximilian attems Thu, 18 Sep 2014 23:50:00 +0200 + +linux (3.16.7-ckt9-3) unstable; urgency=high + + [ Ben Hutchings ] + * [x86] crypto: aesni - fix memory usage in GCM decryption (Closes: #782561) + (CVE-2015-3331) + * tcp: Fix crash in TCP Fast Open (Closes: #782515) (CVE-2015-3332) + * kernel: Provide READ_ONCE and ASSIGN_ONCE + * Replace use of ACCESS_ONCE on non-scalar types with READ_ONCE or barriers + as appropriate + * kernel: tighten rules for ACCESS ONCE + * kernel: Change ASSIGN_ONCE(val, x) to WRITE_ONCE(x, val) + * fs: take i_mutex during prepare_binprm for set[ug]id executables + (CVE-2015-3339) + + [ Ian Campbell ] + * [xen] release per-queue Tx and Rx resource when disconnecting, fixing + network after save/restore or migration. (Closes: #782698) + + -- Ben Hutchings Thu, 23 Apr 2015 16:41:27 +0100 + +linux (3.16.7-ckt9-2) unstable; urgency=medium + + * btrfs: simplify insert_orphan_item (Closes: #782362) + + -- Ben Hutchings Mon, 13 Apr 2015 02:01:54 +0100 + +linux (3.16.7-ckt9-1) unstable; urgency=medium + + * New upstream stable update: + http://kernel.ubuntu.com/stable/ChangeLog-3.16.7-ckt8 + - usb: core: buffer: smallest buffer should start at ARCH_DMA_MINALIGN + - btrfs: fix leak of path in btrfs_find_item + - tpm_tis: verify interrupt during init + - xfs: ensure buffer types are set correctly + - xfs: inode unlink does not set AGI buffer type + - xfs: set buf types when converting extent formats + - xfs: set superblock buffer type correctly + - [s390*] KVM: avoid memory leaks if __inject_vm() fails + - samsung-laptop: Add use_native_backlight quirk, and enable it on some + models (regression in 3.14) + - staging: comedi: comedi_compat32.c: fix COMEDI_CMD copy back + - nfs: don't call blocking operations while !TASK_RUNNING + - cdc-acm: add sanity checks + - USB: fix use-after-free bug in usb_hcd_unlink_urb() + - iwlwifi: mvm: fix failure path when power_update fails in add_interface + - tty: Prevent untrappable signals from malicious program + - cpufreq: Set cpufreq_cpu_data to NULL before putting kobject + - nfs41: .init_read and .init_write can be called with valid pg_lseg + (regression in 3.15) + - mei: mask interrupt set bit on clean reset bit (regression in + 3.16.7-ckt5) + - [s390*] KVM: floating irqs: fix user triggerable endless loop + - cfq-iosched: handle failure of cfq group allocation + - tracing: Fix unmapping loop in tracing_mark_write + - fsnotify: fix handling of renames in audit + - blk-mq: fix double-free in error path + - NFSv4.1: Fix a kfree() of uninitialised pointers in + decode_cb_sequence_args + - mm/hugetlb: pmd_huge() returns true for non-present hugepage + - mm/hugetlb: take page table lock in follow_huge_pmd() + - mm/hugetlb: fix getting refcount 0 page in hugetlb_fault() + - mm/hugetlb: add migration/hwpoisoned entry check in + hugetlb_change_protection + - mm/hugetlb: add migration entry check in __unmap_hugepage_range + - iscsi-target: Drop problematic active_ts_list usage + - mm/memory.c: actually remap enough memory + - mm: hwpoison: drop lru_add_drain_all() in __soft_offline_page() + (regression in 3.11) + - jffs2: fix handling of corrupted summary length + - dm mirror: do not degrade the mirror on discard error + - dm io: reject unsupported DISCARD requests with EOPNOTSUPP + - NFS: struct nfs_commit_info.lock must always point to inode->i_lock + (regression in 3.16.4) + - target: Add missing WRITE_SAME end-of-device sanity check + - target: Check for LBA + sectors wrap-around in sbc_parse_cdb + - Btrfs: fix fsync data loss after adding hard link to inode + - sg: fix read() error reporting + - IB/qib: Do not write EEPROM + - [amd64] EDAC, amd64_edac: Prevent OOPS with >16 memory controllers + (regression in 3.11) + - md/raid5: Fix livelock when array is both resyncing and degraded. + - locking/rtmutex: Avoid a NULL pointer dereference on deadlock + (regression in 3.16) + - time: adjtimex: Validate the ADJ_FREQUENCY values + - ntp: Fixup adjtimex freq validation on 32-bit systems + - dm: fix a race condition in dm_get_md + - dm snapshot: fix a possible invalid memory access on unload + - libceph: fix double __remove_osd() problem + - blk-throttle: check stats_cpu before reading it from sysfs + - debugfs: leave freeing a symlink body until inode eviction + - procfs: fix race between symlink removals and traversals + - autofs4 copy_dev_ioctl(): keep the value of ->size we'd used for + allocation + - clk-gate: fix bit # check in clk_register_gate() (regression in 3.11) + - [powerpc*] kernel: Avoid memory corruption at early stage + (regression in 3.14) + - GFS2: Fix crash during ACL deletion in acl max entry check in + gfs2_set_acl() (regression in 3.14) + - net: llc: use correct size for sysctl timeout entries (CVE-2015-2041) + - net: rds: use correct size for max unacked packets and bytes + (CVE-2015-2042) + - HID: i2c-hid: Limit reads to wMaxInputLength bytes for input events + (regression in 3.16.7-ckt4) + - net: sctp: fix race for one-to-many sockets in sendmsg's auto associate + - ipv6: mld: fix add_grhead skb_over_panic for devs with large MTUs + - IB/core: When marshaling ucma path from user-space, clear unused fields + (regression in 3.14) + - IB/core: Fix deadlock on uverbs modify_qp error flow (regression in 3.14) + - IB/mlx4: Fix wrong usage of IPv4 protocol for multicast attach/detach + (regression in 3.14) + - IB/iser: Use correct dma direction when unmapping SGs + (regression in 3.15) + - staging: comedi: cb_pcidas64: fix incorrect AI range code handling + - target: Fix R_HOLDER bit usage for AllRegistrants + - target: Avoid dropping AllRegistrants reservation during unregister + - target: Allow AllRegistrants to re-RESERVE existing reservation + - target: Allow Write Exclusive non-reservation holders to READ + - vhost/scsi: potential memory corruption + - mm: softdirty: unmapped addresses between VMAs are clean + - proc/pagemap: walk page tables under pte lock + http://kernel.ubuntu.com/stable/ChangeLog-3.16.7-ckt9 + - netfilter: nft_compat: fix module refcount underflow + - netfilter: xt_socket: fix a stack corruption bug + - ipvs: add missing ip_vs_pe_put in sync code + - flowcache: Fix kernel panic in flow_cache_flush_task (regression in 3.15) + - tcp: make sure skb is not shared before using skb_get() + (regression in 3.16) + - gen_stats.c: Duplicate xstats buffer for later use + - ematch: Fix auto-loading of ematch modules. + - openvswitch: Fix net exit. + - net: reject creation of netdev names with colons + - macvtap: make sure neighbour code can push ethernet header + - udp: only allow UFO for packets from SOCK_DGRAM sockets + - gpiolib: of: allow of_gpiochip_find_and_xlate to find more than one chip + per node (regression in 3.16.7-ckt6) + - [x86] drm/i915: Check obj->vma_list under the struct_mutex + (regression in 3.15) + - ALSA: hda - Disable runtime PM for Panther Point again + (regression in 3.14) + - nilfs2: fix potential memory overrun on inode + - [armhf] usb: dwc3: dwc3-omap: Fix disable IRQ + - [i386] KVM: emulate: fix CMPXCHG8B on 32-bit hosts + - xhci: Allocate correct amount of scratchpad buffers + - USB: usbfs: don't leak kernel data in siginfo + - efi/libstub: Fix boundary checking in efi_high_alloc() + - USB: serial: fix potential use-after-free after failed probe + - USB: serial: fix tty-device error handling at probe + - staging: comedi: adv_pci1710: fix AI INSN_READ for non-zero channel + - mei: make device disabled on stop unconditionally + - NFSv4: Don't call put_rpccred() under the rcu_read_lock() + - btrfs: fix lost return value due to variable shadowing + - eCryptfs: don't pass fs-specific ioctl commands through + - drm/radeon: fix DRM_IOCTL_RADEON_CS oops + - [armhf] ASoC: omap-pcm: Correct dma mask + - [amd64] x86/asm/entry/64: Remove a bogus 'ret_from_fork' optimization + (CVE-2015-2830) + - Btrfs: fix data loss in the fast fsync path + - Btrfs:__add_inode_ref: out of bounds memory read when looking for + extended ref. + - svcrpc: fix memory leak in gssp_accept_sec_context_upcall + (regression in 3.12) + - SUNRPC: Always manipulate rpc_rqst::rq_bc_pa_list under xprt->bc_pa_lock + (regression in 3.15) + - net: cls_bpf: fix size mismatch on filter preparation + - net: cls_bpf: fix auto generation of per list handles + - qlge: Fix qlge_update_hw_vlan_features to handle if interface is down + (regression in 3.13) + - libsas: Fix Kernel Crash in smp_execute_task + - ALSA: hda - Fix regression of HD-audio controller fallback modes + (regression in 3.11) + - can: add missing initialisations in CAN related skbuffs + - ftrace: Fix en(dis)able graph caller when en(dis)abling record via sysctl + - ftrace: Fix ftrace enable ordering of sysctl ftrace_enabled + - [armhf] imx6qdl-sabresd: set swbst_reg as vbus's parent reg + - [armhf] imx6sl-evk: set swbst_reg as vbus's parent reg + - xen-pciback: limit guest control of command register (CVE-2015-2150) + - drm/vmwgfx: Reorder device takedown somewhat + - ALSA: control: Add sanity checks for user ctl id name string + - Revert "i2c: core: Dispose OF IRQ mapping at client removal time" + (regression in 3.16.7-ckt2) + - nilfs2: fix deadlock of segment constructor during recovery + (regression in 3.16.7-ckt7) + - clk: divider: fix calculation of maximal parent rate for a given divider + (regression in 3.15) + - [sparc*] Fix several bugs in memmove(). + - net: sysctl_net_core: check SNDBUF and RCVBUF for min length + - inet_diag: fix possible overflow in inet_diag_dump_one_icsk() + - caif: fix MSG_OOB test in caif_seqpkt_recvmsg() + - rxrpc: bogus MSG_PEEK test in rxrpc_recvmsg() + - tcp: fix tcp fin memory accounting + - net: compat: Update get_compat_msghdr() to match copy_msghdr_from_user() + behaviour (regression in 3.13) + - tcp: make connect() mem charging friendly + + [ Ian Campbell ] + * Initialise framebuffer console earlier. (Closes: #779935) + * [xen] Enable Xen MCE log support. (Closes: #779698) + * [armhf] mvebu: do not register custom DMA operations when coherency is + disabled (Closes: #780858) + * [armhf] Enable power control on various sunxi platforms, enable MFD_AXP20X + and REGULATOR_AXP20X and adding the necessary DTB nodes. (Closes: #781576) + + [ Ben Hutchings ] + * [armel/kirkwood] linux-image: Add versioned Breaks against flash-kernel, + to ensure that an FDT is appended to the image if needed (Closes: #781193) + * Revert "quota: Store maximum space limit in bytes" to avoid ABI change + * IB/core: Prevent integer overflow in ib_umem_get address arithmetic + (CVE-2014-8159) + * Btrfs: make xattr replace operations atomic (CVE-2014-9710) + * ext4: fix ZERO_RANGE bug hidden by flag aliasing + * ext4: fix accidental flag aliasing in ext4_map_blocks flags + * ext4: allocate entire range in zero range (CVE-2015-0275) + * [x86] microcode/intel: Guard against stack overflow in the loader + (CVE-2015-2666) + * ipv6: Don't reduce hop limit for an interface (CVE-2015-2922) + * [powerpc/powerpc64,ppc64] Disable THERM_PM72 and enable its replacements + WINDFARM_PM72 and WINDFARM_RM31 as modules. Update the udeb config + accordingly. Thanks to Milan Kupcevic. (Closes: #781934) + * psmouse: Add support for FocalTech touchpads, thanks to Rafal Ramocki + (Closes: #780971) + * [x86] drm/i915: Add limited color range readout for HDMI/DP ports on + g4x/vlv/chv (Closes: #775217) + * HID: thingm: fix workqueue race on remove (Closes: #780055) + * [x86] Disable X86_VERBOSE_BOOTUP (Closes: #781953) + * eMMC: Don't initialize partitions on RPMB flagged areas (Closes: #782038) + * [x86] powercap / RAPL: change domain detection message (Closes: #781418) + * procfs: Avoid ABI change in 3.16.7-ckt8 + * [powerpc/powerpc] udeb: Add fb-modules package containing radeonfb driver + (Closes: #782058) + + -- Ben Hutchings Wed, 08 Apr 2015 01:03:08 +0100 + +linux (3.16.7-ckt7-1) unstable; urgency=medium + + * New upstream stable update: + http://kernel.ubuntu.com/stable/ChangeLog-3.16.7-ckt5 + - [x86] vdso: Use asm volatile in __getcpu + - SCSI: fix regression in scsi_send_eh_cmnd() (regression in 3.16) + - Btrfs: don't delay inode ref updates during log replay + (regression in 3.16.7) + - mm: propagate error from stack expansion even for guard page + - vfio-pci: Fix the check on pci device type in vfio_pci_probe() + - rpc: fix xdr_truncate_encode to handle buffer ending on page boundary + (regression in 3.16) + - [arm64] efi: add missing call to early_ioremap_reset() + (regression in 3.16) + - exit: fix race between wait_consider_task() and wait_task_zombie() + (regression in 3.15) + - mm: prevent endless growth of anon_vma hierarchy + - mm: protect set_page_dirty() from ongoing truncation + - mm, vmscan: prevent kswapd livelock due to pfmemalloc-throttled process + being killed + - sched/deadline: Fix migration of SCHED_DEADLINE tasks + - HID: roccat: potential out of bounds in pyra_sysfs_write_settings() + - mm: Don't count the stack guard page towards RLIMIT_STACK + - mm: fix corner case in anon_vma endless growing prevention + - [arm*][xen] introduce xen_arch_need_swiotlb + - fsnotify: next_i is freed during fsnotify_unmount_inodes. + - [armhf] ASoC: eukrea-tlv320: Fix of_node_put() call with uninitialized + object (regression in 3.15) + - HID: i2c-hid: Do not free buffers in i2c_hid_stop() (regression in 3.15) + - ALSA: fireworks: fix an endianness bug for transaction length + (regression in 3.16) + - [armhf] mtd: nand: omap: Fix NAND enumeration on 3430 LDP + (regression in 3.13) + - ocfs2: fix the wrong directory passed to ocfs2_lookup_ino_from_name() + when link file (regression in 3.14) + - [powerpc*] Fix bad NULL pointer check in udbg_uart_getc_poll() + (regression in 3.12) + - nilfs2: fix the nilfs_iget() vs. nilfs_new_inode() races + - [armhf] OMAP4: PM: Only do static dependency configuration in + omap4_init_static_deps (regression in 3.11) + - [armel,armhf] Revert "ARM: 7830/1: delay: don't bother reporting bogomips + in /proc/cpuinfo" (regression in 3.12) + - gre: fix the inner mac header in nbma tunnel xmit path + (regression in 3.16.7-ckt3) + - netlink: Always copy on mmap TX. + - netlink: Don't reorder loads/stores before marking mmap netlink frame as + available + - batman-adv: Unify fragment size calculation (regression in 3.13) + - batman-adv: avoid NULL dereferences and fix if check (regression in 3.13) + - net: Fix stacked vlan offload features computation + - net: Reset secmark when scrubbing packet + - xen-netback: fixing the propagation of the transmit shaper timeout + (regression in 3.16) + - team: avoid possible underflow of count_pending value for notify_peers + and mcast_rejoin (regression in 3.12) + - usb: gadget: gadgetfs: Free memory allocated by memdup_user() + (regression in 3.15) + - iwlwifi: mvm: fix Rx with both chains (regression in 3.16) + - LOCKD: Fix a race when initialising nlmsvc_timeout (regression in 3.11) + - NFSv4.1: Fix client id trunking on Linux + - vhost-scsi: Add missing virtio-scsi -> TCM attribute conversion + - xhci: Check if slot is already in default state before moving it there + (regression in 3.14) + - USB: console: fix uninitialised ldisc semaphore (regression in 3.12) + - USB: console: fix potential use after free + - [armhf] usb: dwc3: gadget: Fix TRB preparation during SG + - [x86] ftrace/jprobes: Fix conflict between jprobes and function graph + tracing + - clk: Don't try to use a struct clk* after it could have been freed + - [x86] drm/i915: Evict CS TLBs between batches + - [xen] Revert "swiotlb-xen: pass dev_addr to swiotlb_tbl_unmap_single" + (regression in 3.16.7-ckt4) + http://kernel.ubuntu.com/stable/ChangeLog-3.16.7-ckt6 + - ipvs: uninitialized data with IP_VS_IPV6 + - netfilter: nfnetlink: validate nfnetlink header from batch + - time: settimeofday: Validate the values of tv from user + - drm/radeon: fix VM flush on cayman/aruba (v3) + - drm/radeon: fix VM flush on SI (v3) + - drm/radeon: fix VM flush on CIK (v3) + - drm/radeon: add a dpm quirk list (regression around 3.14) + - can: dev: fix crtlmode_supported check + - can: kvaser_usb: Don't free packets when tight on URBs + - drm/radeon: use rv515_ring_start on r5xx (regression in 3.12) + - PCI: Mark Atheros AR93xx to avoid bus reset (regression in 3.14) + - [x86] PCI: Clip bridge windows to fit in upstream windows + (regression in 3.16) + - [armhf] mvebu: completely disable hardware I/O coherency + - cifs: fix deadlock in cifs_ioctl_clone() + - ipr: wait for aborted command responses + - libata: allow sata_sil24 to opt-out of tag ordered submission + (regression in 3.14.4, 3.15) + - [media] vb2: fix vb2_thread_stop race conditions + - [i386/586] apic: Re-enable PCI_MSI support for non-SMP X86_32 + (regression in 3.12) + - dm cache: share cache-metadata object across inactive and active DM + tables + - dm cache: fix problematic dual use of a single migration count variable + - Input: evdev - fix EVIOCG{type} ioctl + - tty: Fix pty master poll() after slave closes v2 (regression in 3.12) + - [armhf] bus: omap_l3_noc: Add resume hook to restore context + (regression in 3.16) + - decompress_bunzip2: off by one in get_next_block() + - kbuild: Fix removal of the debian/ directory (regression in 3.16) + - mm: get rid of radix tree gfp mask for pagecache_get_page + (regression in 3.16) + - regulator: core: fix race condition in regulator_put() + - ASoC: simple-card: Fix crash in asoc_simple_card_unref() + (regression in 3.15) + - [ppc64el] xmon: Fix another endiannes issue in RTAS call from xmon + - nfs: fix dio deadlock when O_DIRECT flag is flipped + - mac80211: properly set CCK flag in radiotap (regression in 3.12) + - [x86] drm/i915: Only fence tiled region of object. + - can: kvaser_usb: Do not sleep in atomic context + - can: kvaser_usb: Send correct context to URB completion + - rbd: fix rbd_dev_parent_get() when parent_overlap == 0 + - rbd: drop parent_ref in rbd_dev_unprobe() unconditionally + - dm cache: fix missing ERR_PTR returns and handling + - dm thin: don't allow messages to be sent to a pool target in READ_ONLY + or FAIL mode + - [armhf] mvebu: don't set the PL310 in I/O coherency mode when I/O + coherency is disabled + - vm: add VM_FAULT_SIGSEGV handling support + - vm: make stack guard page errors return VM_FAULT_SIGSEGV rather than + SIGBUS + - perf: Tighten (and fix) the grouping condition + - iwlwifi: mvm: drop non VO frames when flushing (regression in 3.16) + - memcg: remove extra newlines from memcg oom kill log (regression in 3.15) + - ipv4: try to cache dst_entries which would cause a redirect + (regression in 3.16) (CVE-2015-1465) + http://kernel.ubuntu.com/stable/ChangeLog-3.16.7-ckt7 + - [ppc64el] powerpc: add little endian flag to syscall_get_arch() + - [arm64] Fix up /proc/cpuinfo + - cifs: Complete oplock break jobs before closing file handle + (regression in 3.15) + - [arm64,or1k] lib/checksum.c: fix carry in csum_tcpudp_nofold + - [mips*] Fix kernel lockup or crash after CPU offline/online + - md/raid5: fix another livelock caused by non-aligned writes. + (regression in 3.16) + - drm/radeon: fix PLLs on RS880 and older v2 (regression in 3.15) + (Closes: #770790) + - [armhf/armmp-lpae] 8299/1: mm: ensure local active ASID is marked as + allocated on rollover + - PCI: Handle read-only BARs on AMD CS553x devices + (regression in 3.16.7-ckt4) + - mm: pagewalk: call pte_hole() for VM_PFNMAP during walk_page_range + - nilfs2: fix deadlock of segment constructor over I_SYNC flag + - ip: zero sockaddr returned on error queue + - net: rps: fix cpu unplug + - ipv6: stop sending PTB packets for MTU < 1280 + - udp_diag: Fix socket skipping within chain + - ping: Fix race in free in receive path + - net: don't OOPS on socket aio + - ipv4: tcp: get rid of ugly unicast_sock + - ppp: deflate: never return len larger than output buffer + - [x86] hyperv: Fix the error processing in netvsc_send() + - Bluetooth: ath3k: workaround the compatibility issue with xHCI controller + - ceph: introduce global empty snap context + - drm/vmwgfx: Don't use memory accounting for kernel-side fence objects + - net:socket: set msg_namelen to 0 if msg_name is passed as NULL in msghdr + struct from userland. + - virtio_pci: defer kfree until release callback + + [ Ian Campbell ] + * [armhf] Add DTB for Olimex A20-OLinuXino-LIME2. (Closes: #777455) + * [armhf] Enable CONFIG_BACKLIGHT_GPIO as a module. (Closes: #778783) + * [armhf] Enable FB_SIMPLE on sunxi platform, backporting fixes and DTS + entries. + + [ Ben Hutchings ] + * shm: add memfd.h to UAPI export list, so kdbus will build + * [x86] HPET force enable for e6xx based systems (Closes: #772951) + * vfs: read file_handle only once in handle_to_path (CVE-2015-1420) + * ASLR: fix stack randomization on 64-bit systems (CVE-2015-1593) + * Revert "quota: Switch ->get_dqblk() and ->set_dqblk() to use bytes as + space units" to avoid ABI change + * rmap: Fix ABI change in 3.16.7-ckt5 + * perf: Fix ABI change in 3.16.7-ckt6 + * mm: Fix pagecache_get_page() ABI change in 3.16.7-ckt6 + * tcp: Fix ABI change in 3.16.7-ckt7 + * [x86] ACPI / video: Add disable_native_backlight quirk for various + Samsung models and Dell XPS15 L521X (Closes: #772440) + * [x86] ALSA: Enable SND_SOC, SND_SOC_INTEL_SST, SND_SOC_INTEL_HASWELL_MACH, + SND_SOC_INTEL_BYT_RT5640_MACH, SND_SOC_INTEL_BYT_MAX98090_MACH as modules + (Closes: #773835) + * arcmsr: Backport changes up to Linux 3.18 (Closes: #698821) + * [x86] drm/i915: Quietly reject attempts to create non-pagealigned stolen + objects (Closes: #763155) + * KEYS: request_key() should reget expired keys rather than give EKEYEXPIRED + (Closes: #758870) + * drm: Enable DRM_BOCHS, DRM_QXL as modules + - qxl: Disable by default, as it is incompatible with wheezy's + xserver-xorg-video-qxl. It can be forced to load with module + parameter modeset=1. + * of.h: Keep extern declaration of of_* variables when !CONFIG_OF + (for simplefb) + + [ Helge Deller ] + * [alpha] build debian-installer udeb packages + * [hppa] build virtio udeb packages + + [ Uwe Kleine-König ] + * Add support for Bananapro board, thanks Karsten Merker for the patch. + (Closes: 779311) + + -- Ben Hutchings Sun, 01 Mar 2015 15:13:40 +0000 + +linux (3.16.7-ckt4-3) unstable; urgency=medium + + [ Ben Hutchings ] + * [sh4] ftrace: Remove -m32 option from recordmcount.pl (Closes: #775611) + * [x86] Revert "KVM: Fix of previously incomplete fix for CVE-2014-8480" + as that issue does not affect 3.16 + * [amd64] tls, ldt: Stop checking lm in LDT_empty (regression in 3.16.7-ckt4) + * [x86] tls: Interpret an all-zero struct user_desc as "no segment" + (regression in 3.16.7-ckt4) + * net: sctp: fix slab corruption from use after free on INIT collisions + (CVE-2015-1421) + + [ Ian Campbell ] + * [xen] cancel ballooning if adding new memory failed (Closes: #776448) + * [arm64] Only use the virtual counter (CNTVCT) on arm64. (Closes: #776957) + + -- Ben Hutchings Tue, 03 Feb 2015 20:07:06 +0000 + +linux-tools (3.16-3) unstable; urgency=medium + + * linux-tools: Fix build configuration to avoid linking perf with libbfd + (Closes: #763002) + * linux-tools: Add a check that perf is not linked with libbfd + * [arm64] Enable building linux-tools, thanks to Steve Capper + (Closes: #771340) + + -- Ben Hutchings Mon, 02 Feb 2015 22:05:59 +0000 + +linux (3.16.7-ckt4-2) unstable; urgency=medium + + [ Ian Campbell ] + * [arm64] udeb: Remove zlib-modules, as ZLIB_DEFLATE is now + built-in (fixes FTBFS) + * [xen] Revert "swiotlb-xen: pass dev_addr to swiotlb_tbl_unmap_single" + (Closes: #776237) + + [ Helge Deller ] + * [hppa] udeb: Fix duplicate modules in ata-modules, pata-modules + (Closes: #770102) + * [hppa] Enable CONFIG_PPDEV to avoid CUPS complaining with systemd + + [ Ben Hutchings ] + * crypto: Fix unprivileged arbitrary module loading (CVE-2013-7421, + CVE-2014-9644) + - prefix module autoloading with "crypto-" + - include crypto- module prefix in template + - add missing crypto module aliases + * [x86] KVM: Fix of previously incomplete fix for CVE-2014-8480 + * [x86] KVM: SYSENTER emulation is broken (CVE-2015-0239) + + -- Ben Hutchings Tue, 27 Jan 2015 03:57:26 +0000 + +linux (3.16.7-ckt4-1) unstable; urgency=medium + + * New upstream stable update: + http://kernel.ubuntu.com/stable/ChangeLog-3.16.7-ckt3 + - [x86] kvm: use alternatives for VMCALL vs. VMMCALL if kernel text is + read-only + - [sparc*] Fix constraints on swab helpers. + - inetdevice: fixed signed integer overflow + - ieee802154: fix error handling in ieee802154fake_probe() + - bonding: fix curr_active_slave/carrier with loadbalance arp monitoring + (regression in 3.14) + - pptp: fix stack info leak in pptp_getname() + - ipx: fix locking regression in ipx_sendmsg and ipx_recvmsg + - net/mlx4_en: Add VXLAN ndo calls to the PF net device ops too + (regression in 3.15) + - net/mlx4_en: Advertize encapsulation offloads features only when VXLAN + tunnel is set (regression in 3.15) + - target: Don't call TFO->write_pending if data_length == 0 + - vhost-scsi: Take configfs group dependency during VHOST_SCSI_SET_ENDPOINT + - iser-target: Handle DEVICE_REMOVAL event on network portal listener + correctly + - ASoC: dpcm: Fix race between FE/BE updates and trigger + - mac80211: Fix regression that triggers a kernel BUG with CCMP + (regression in 3.13) + - rt2x00: do not align payload on modern H/W + - bitops: Fix shift overflow in GENMASK macros + - [x86] Require exact match for 'noxsave' command line option + - [x86] drm/i915: Kick fbdev before vgacon (regression in 3.16) + - can: dev: avoid calling kfree_skb() from interrupt context + - [x86] mm: Set NX across entire PMD at boot + - of: Fix crash if an earlycon driver is not found + - btrfs: fix lockups from btrfs_clear_path_blocking + - [i386/686-pae,armhf/armmp-lpae] PCI: Support 64-bit bridge windows if we + have 64-bit dma_addr_t (regression in 3.14) + - ACPI / PM: Ignore wakeup setting if the ACPI companion can't wake up + (regression in 3.13) + - drm/radeon: fix endian swapping in vbios fetch for tdp table + - Bluetooth: Fix endian and alignment issue with ath3k version handling + - nfs: Don't busy-wait on SIGKILL in __nfs_iocounter_wait + - [armhf] 8109/1: mm: Modify pte_write and pmd_write logic for LPAE + - aio: fix incorrect dirty pages accouting when truncating AIO ring buffer + (regression in 3.12) + - [armel,armhf] mvebu: add missing of_node_put() call in coherency.c + (regression in 3.16) + - iio: Fix IIO_EVENT_CODE_EXTRACT_DIR bit mask + - spi: Fix mapping from vmalloc-ed buffer to scatter list + - SUNRPC: Fix locking around callback channel reply receive + - nfsd: Fix slot wake up race in the nfsv4.1 callback code + - bnx2fc: do not add shared skbs to the fcoe_rx_list + - Revert "xhci: clear root port wake on bits if controller isn't wake-up + capable" (regression in 3.16) + - usb: xhci: rework root port wake bits if controller isn't allowed to + wakeup + - ixgbe: Correctly disable VLAN filter in promiscuous mode + (regression in 3.16) + - ixgbe: fix use after free adapter->state test in ixgbe_remove/ixgbe_probe + (regression in 3.15) + - ALSA: hda - Limit 40bit DMA for AMD HDMI controllers + - PCI/MSI: Add device flag indicating that 64-bit MSIs don't work + - gpu/radeon: Set flag to indicate broken 64-bit MSI + - sound/radeon: Move 64-bit MSI quirk from arch to driver + - [powerpc*] pseries: Honor the generic "no_64bit_msi" flag + - [mips*] fix EVA & non-SMP non-FPU FP context signal handling + (regression in 3.15) + - [x86] drm/i915: Ignore SURFLIVE and flip counter when the GPU gets reset + (regression in 3.16) + - [powerpc*] 32 bit getcpu VDSO function uses 64 bit instructions + - [armhf] 8222/1: mvebu: enable strex backoff delay + - [armel,armhf] 8226/1: cacheflush: get rid of restarting block + - btrfs: zero out left over bytes after processing compression streams + - [armhf] net: sun4i-emac: fix memory leak on bad packet + - [armhf] i2c: omap: fix NACK and Arbitration Lost irq handling + - [media] s2255drv: fix payload size for JPG, MJPEG (regression in 3.15) + - nouveau: move the hotplug ignore to correct place. (regression in 3.16.4) + - mm: frontswap: invalidate expired data on a dup-store failure + - mm/vmpressure.c: fix race in vmpressure_work_fn() + - xen-netfront: Remove BUGs on paged skb data which crosses a page boundary + - drivers/input/evdev.c: don't kfree() a vmalloc address + (regression in 3.13) + - mm: fix anon_vma_clone() error treatment (regression in 3.12) + - ip_tunnel: the lack of vti_link_ops' dellink() cause kernel panic + - vxlan: Fix race condition between vxlan_sock_add and vxlan_sock_release + - bond: Check length of IFLA_BOND_ARP_IP_TARGET attributes + - gre: Set inner mac header in gro complete (regression in 3.16.7-ckt1) + - [mips*] bpf: Fix broken BPF_MOD + http://kernel.ubuntu.com/stable/ChangeLog-3.16.7-ckt4 + - [x86] drm/i915: don't warn if backlight unexpectedly enabled + (Closes: #757805) + - [x86] drm/i915/dp: only use training pattern 3 on platforms that + support it (regression in 3.15) + - btrfs: don't go readonly on existing qgroup items + - writeback: fix a subtle race condition in I_DIRTY clearing + - [s390*] KVM: flush CPU on load control + - UBI: Fix double free after do_sync_erase() + - [x86] Drivers: hv: util: make struct hv_do_fcopy match Hyper-V host + messages (regression for amd64 in 3.16.7) + - Drivers: hv: vmbus: Fix a race condition when unregistering a device + - misc: genwqe: check for error from get_user_pages_fast() + - drbd: merge_bvec_fn: properly remap bvm->bi_bdev + - PCI: Restore detection of read-only BARs + - scsi: correct return values for .eh_abort_handler implementations + - genhd: check for int overflow in disk_expand_part_tbl() + - Btrfs: make sure we wait on logged extents when fsycning two subvols + - Btrfs: make sure logged extents complete in the current transaction V3 + - Btrfs: do not move em to modified list when unpinning + - [armhf] mvebu: disable I/O coherency on non-SMP situations on + Armada 370/375/38x/XP + - nfs41: fix nfs4_proc_layoutget error handling + - USB: cdc-acm: check for valid interfaces + - HID: i2c-hid: fix race condition reading reports + - [armhf] mfd: twl4030-power: Fix regression with missing compatible flag + (regression in 3.16) + - [armhf] serial: samsung: wait for transfer completion before clock + disable + - n_tty: Fix read_buf race condition, increment read_head after pushing + data (regression in 3.12) + - dm cache: only use overwrite optimisation for promotion when in + writeback mode + - dm cache: dirty flag was mistakenly being cleared when promoting via + overwrite + - dm bufio: fix memleak when using a dm_buffer's inline bio + - iwlwifi: dvm: fix flush support for old firmware (regression in + 3.16.7-ckt1) + - iwlwifi: mvm: update values for Smart Fifo (regression in 3.14) + - iommu/vt-d: Fix an off-by-one bug in __domain_mapping() + - dm crypt: use memzero_explicit for on-stack buffer + - mnt: Implicitly add MNT_NODEV on remount when it was implicitly added by + mount (regression in 3.16.3) + - umount: Disallow unprivileged mount force + - md/raid5: fetch_block must fetch all the blocks handle_stripe_dirtying + wants. + - [x86] drm/i915: Only warn the first time we attempt to mmio whilst + suspended (regression in 3.15) + - drm/vmwgfx: Fix error printout on signals pending + - drm/radeon: check the right ring in radeon_evict_flags() + - swiotlb-xen: pass dev_addr to xen_dma_unmap_page and + xen_dma_sync_single_for_cpu + - [armhf/armmp] swiotlb-xen: remove BUG_ON in xen_bus_to_phys + - swiotlb-xen: call xen_dma_sync_single_for_device when appropriate + - swiotlb-xen: pass dev_addr to swiotlb_tbl_unmap_single + - [powerpc] book3s: Fix partial invalidation of TLBs in MCE code. + - [armhf] clocksource: arch_timer: Fix code to use physical timers when + requested (regression in 3.11) + - userns: Prevent evasion of group negative permissions through a userns + (CVE-2014-8989): + + Don't allow setgroups until a gid mapping has been setablished + + Don't allow unprivileged creation of gid mappings + + Add a knob to disable setgroups on a per user namespace basis + + Allow setting gid_maps without privilege when setgroups is disabled + - KEYS: Fix stale key registration at error path + - blk-mq: Fix a use-after-free + - blk-mq: Fix a race between bt_clear_tag() and bt_get() + - nfsd4: fix xdr4 count of server in fs_location4 (regression in 3.16) + - [x86] drm/i915: Don't complain about stolen conflicts on gen3 + (regression in 3.12) + - [x86] kvm: Clear paravirt_enabled on KVM guests for espfix32's benefit + (CVE-2014-8134) + - blk-mq: Fix uninitialized kobject at CPU hotplugging + - ncpfs: return proper error from NCP_IOC_SETROOT ioctl + - [armhf] rtc: omap: fix clock-source configuration (regression in 3.16) + - exit: pidns: alloc_pid() leaks pid_namespace if child_reaper is exiting + - [amd64] switch_to(): Load TLS descriptors before switching DS and ES + (CVE-2014-9419) + - [x86] KVM: nVMX: Disable unrestricted mode if ept=0 (regression in 3.13) + - [x86] KVM: em_ret_far overrides cpl (follow-up to CVE-2014-3647 fix) + - pstore-ram: Fix hangs by using write-combine mappings + - HID: i2c-hid: prevent buffer overflow in early IRQ + - mac80211: fix multicast LED blinking and counter (regression in + 3.16.7-ckt2) + - cfg80211: avoid mem leak on driver hint set + - nl80211: check matches array length before acessing it + - cfg80211: don't WARN about two consecutive Country IE hint + (regression in 3.14) + - tracing/sched: Check preempt_count() for current when reading task->state + (regression in 3.13) + - [x86] tls: Validate TLS entries to protect espfix (CVE-2014-8133) + - [x86] tls: Disallow unusual TLS segments + - isofs: Fix infinite looping over CE entries (CVE-2014-9420) + - mac80211: free management frame keys when removing station + - ceph: do_sync is never initialized (regression in 3.12) + - mnt: Fix a memory stomp in umount (regression in 3.14) + - ocfs2: fix journal commit deadlock + - md/bitmap: always wait for writes on unplug. + - [armhf] mmc: omap_hsmmc: Fix UHS card with DDR50 support (regression in + 3.16) + - [x86] mmc: sdhci-pci-o2micro: Fix Dell E5440 issue (regression in 3.14) + - dm space map metadata: fix sm_bootstrap_get_nr_blocks() + - dm thin: fix a race in thin_dtr + - eCryptfs: Force RO mount when encrypted view is enabled + - eCryptfs: Remove buggy and unnecessary write in file name decode routine + - tcm_loop: Fix wrong I_T nexus association + - Btrfs: fix fs corruption on transaction abort if device supports discard + - [x86] perf/intel/uncore: Make sure only uncore events are collected + - perf: Fix events installation during moving group + - iscsi,iser-target: Initiate termination only once (regression in 3.16.4) + - iser-target: Fix flush + disconnect completion handling + - iser-target: Parallelize CM connection establishment + - iser-target: Fix connected_handler + teardown flow race + - iser-target: Handle ADDR_CHANGE event for listener cm_id + - iser-target: Fix implicit termination of connections + - iser-target: Allocate PI contexts dynamically + - iser-target: Fix NULL dereference in SW mode DIF + - iscsi,iser-target: Expose supported protection ops according to t10_pi + - genirq: Prevent proc race against freeing of irq descriptors + - [powerpc] powernv: Switch off MMU before entering nap/sleep/rvwinkle mode + - [x86] storvsc: ring buffer failures may result in I/O freeze + - iscsi-target: Fail connection on short sendmsg writes + - [x86] drm/i915: Invalidate media caches on gen7 + - [x86] drm/i915: Force the CS stall for invalidate flushes + - dm thin: fix inability to discard blocks when in out-of-data-space mode + - dm thin: fix missing out-of-data-space to write mode transition if blocks + are released + - dm: fix missed error code if .end_io isn't implemented by target_type + - [armhf] i2c: mv64xxx: rework offload support to fix several problems + (regression in 3.12) + - [x86] tls: Don't validate lm in set_thread_area() after all + - ALSA: usb-audio: extend KEF X300A FU 10 tweak to Arcam rPAC + - tick/powerclamp: Remove tick_nohz_idle abuse + - audit: don't attempt to lookup PIDs when changing PID filtering audit + rules (regression in 3.15) + - audit: use supplied gfp_mask from audit_buffer in + kauditd_send_multicast_skb (regression in 3.16) + - [arm64] kernel: fix __cpu_suspend mm switch on warm-boot + - audit: restore AUDIT_LOGINUID unset ABI (regression in 3.10) + - Btrfs: fix loop writing of async reclaim + - isofs: Fix unchecked printing of ER records (CVE-2014-9584) + - crypto: af_alg - fix backlog handling + - udf: Check path length when reading symlink + - udf: Verify i_size when loading inode + - udf: Verify symlink size before loading it + - udf: Check component length before reading it + - [x86] platform/chrome: chromeos_laptop - Add support for Acer C720 + (Closes: #774209) + - batman-adv: Calculate extra tail size based on queued fragments + (Closes: #774155) (CVE-2014-9428) + - vfs: move d_rcu from overlapping d_child to overlapping d_alias + - vfs: deal with deadlock in d_walk() (CVE-2014-8559) + - KEYS: close race between key lookup and freeing (CVE-2014-9529) + + [ Ben Hutchings ] + * [sh4] Build with gcc-4.8 (Closes: #772602) + * Fix inconsistent ABI name generation in + debian/bin/{abiupdate,buildcheck,gencontrol}.py (Closes: #773233) + * iov: Revert unwanted ABI 'fix' in 3.16.7-ckt2-1 + * [armel,armhf] thread_info: Fix ABI change in 3.16.7-ckt3 + * PCI: Fix ABI change in 3.16.7-ckt3 + * Ignore some ABI changes that don't appear to affect OOT modules: + - Removal of __add_pages(), __remove_pages(), of_device_is_stdout_path(), + clk_divider_ro_ops, tick_nohz_idle_enter, tick_nohz_idle_exit + - Changes to ASoC functions + * [arm64] Enable PSTORE as built-in and EFI_VARS_PSTORE as module; + ensure efivars and efi-pstore are loaded on EFI systems (Closes: #773309) + * hwmon: Enable SENSORS_NCT6683 as module (Closes: #774372) + * udeb: Add i2c-designware-{core,platform} to i2c-modules and i2c-hid to + input-modules (Closes: #772578) + * [x86] ACPI / video: Run _BCL before deciding registering backlight + (regression in 3.16) (Closes: #762285) + * [amd64] Enable EFI_MIXED to support Bay Trail systems + * efi: Expose underlying UEFI firmware platform size to userland, to + support installation on Bay Trail systems (Closes: #775191) + * vfs: Changes for compatibility with CVE-2014-8559 fix: + - aufs: move d_rcu from overlapping d_child to overlapping d_alias + - vfs: Avoid ABI change for dentry union changes + * [powerpc/powerpc{,-smp}] video/fb: Change FB_RADEON back to module + (Closes: #748398) (thanks to John Paul Adrian Glaubitz for thoroughly + testing this change) + * userns: Fix ABI change in 3.16.7-ckt4 + * netfilter: conntrack: disable generic tracking for known protocols + (CVE-2014-8160) + * [amd64] vdso: Fix the vdso address randomization algorithm (CVE-2014-9585) + + [ Ian Campbell ] + * [armhf] Enable support for support OMAP5432 uEVM by enabling: + TI_SOC_THERMAL, MFD_PALMAS, REGULATOR_PALMAS, REGULATOR_PBIAS, + REGULATOR_TI_ABB, PINCTRL_PALMAS, GPIO_PALMAS, RTC_DRV_PALMAS, + OMAP5_DSS_HDMI, DISPLAY_ENCODER_TPD12S015, DISPLAY_CONNECTOR_HDMI, + USB_DWC3_OMAP, EXTCON_PALMAS, TI_EMIF and DDR. + Based on a patch from Chen Baozi (Closes: #772953) + * [armel] Change configuration to reduce kernel image size + - Warn if image size leaves less than 1% spare capacity in the flash. This + allows some slack for growth over the lifetime of a stable release. + - [/kirkwood] Disable RD_LZO and RD_LZ4 + - [/kirkwood] mm: Disable KSM + - [/kirkwood] Disable CHECKPOINT_RESTORE + - [/kirkwood] Disable ZSMALLOC + - [/kirkwood] Disable CRYPTO_FIPS + - [/kirkwood] Disable NET_MPLS_GSO + - [/kirkwood] Disable NETLINK_MMAP + - [/kirkwood] Disable PROFILING + - [/kirkwood] Disable BPF_JIT + - [/kirkwood] Disable KPROBES + - [/ixp4xx,orion5x]: Disable RD_LZO + - [/ixp4xx,orion5x]: Disable PROFILING + - [/orion5x]: Make SERIO and dependants modular + * [arhmf] Add device-tree for LinkSprite pcDuino V3. Patch from Karsten + Merker (Closes: #774067) + * [xen] More netback fixes (including reintroducing support for + feature-rx-notify, which was regressed by the fix to #767261). + * Disable TSO in mv643xx_eth driver by default again, since previous fix + appears to not work on all platforms (Closes: #764162). + + -- Ben Hutchings Fri, 16 Jan 2015 00:15:12 +0000 + +linux (3.16.7-ckt2-1) unstable; urgency=high + + * New upstream stable update: + http://kernel.ubuntu.com/stable/ChangeLog-3.16.7-ckt1 + - drm/tilcdc: Fix the error path in tilcdc_load() + - usb: phy: return -ENODEV on failure of try_module_get + - PM / clk: Fix crash in clocks management code if !CONFIG_PM_RUNTIME + - rt2x00: support Ralink 5362. + - wireless: rt2x00: add new rt2800usb devices + - NFS: Fix /proc/fs/nfsfs/servers and /proc/fs/nfsfs/volumes + - nfs: fix duplicate proc entries + - mm: page_alloc: fix zone allocation fairness on UP + - ext4: check EA value offset when loading + - jbd2: free bh when descriptor block checksum fails + - ext4: don't check quota format when there are no quota files + - target: Fix queue full status NULL pointer for SCF_TRANSPORT_TASK_SENSE + - vfs: fix data corruption when blocksize < pagesize for mmaped data + - ext4: fix mmap data corruption when blocksize < pagesize + - ext4: grab missed write_count for EXT4_IOC_SWAP_BOOT + - qla_target: don't delete changed nacls + - target: Fix APTPL metadata handling for dynamic MappedLUNs + - iser-target: Disable TX completion interrupt coalescing + - ext4: don't orphan or truncate the boot loader inode + - ext4: add ext4_iget_normal() which is to be used for dir tree lookups + - ext4: fix reservation overflow in ext4_da_write_begin + - ext4: Replace open coded mdata csum feature to helper function + - ext4: move error report out of atomic context in ext4_init_block_bitmap() + - ext4: check s_chksum_driver when looking for bg csum presence + - drm/radeon: fix speaker allocation setup + - drm/radeon: use gart memory for DMA ring tests + - random: add and use memzero_explicit() for clearing data + - freezer: Do not freeze tasks killed by OOM killer + - OOM, PM: OOM killed task shouldn't escape PM suspend + - [mips*/loongson-2f] loongson2_cpufreq: Fix CPU clock rate setting mismerge + - drm/cirrus: bind also to qemu-xen-traditional + - cpufreq: intel_pstate: Fix setting max_perf_pct in performance policy + - cpufreq: expose scaling_cur_freq sysfs file for set_policy() drivers + - cpufreq: intel_pstate: Reflect current no_turbo state correctly + - [x86] intel_pstate: Don't lose sysfs settings during cpu offline + - [x86] intel_pstate: Fix BYT frequency reporting + - [x86] intel_pstate: Correct BYT VID values. + - [x86] kvm: don't kill guest on unknown exit reason + - kvm: fix excessive pages un-pinning in kvm_iommu_map error path. + (CVE-2014-8369) + - vfs: be careful with nd->inode in path_init() and follow_dotdot_rcu() + - pstore: Fix duplicate {console,ftrace}-efi entries + - [x86] bpf_jit: fix two bugs in eBPF JIT compiler (regression in 3.16) + - vxlan: fix a use after free in vxlan_encap_bypass + - vxlan: using pskb_may_pull as early as possible + - vxlan: fix a free after use + - ipv4: dst_entry leak in ip_send_unicast_reply() + - ipv4: fix a potential use after free in ip_tunnel_core.c + (regression in 3.11) + - net: tso: fix unaligned access to crafted TCP header in helper API + - [x86] hyperv: Fix the total_data_buflen in send path + - tcp: md5: do not use alloc_percpu() + - macvlan: fix a race on port dismantle and possible skb leaks + (regression in 3.16) + - net/mlx4_en: Don't attempt to TX offload the outer UDP checksum for VXLAN + (regression in 3.14) + - gre: Use inner mac length when computing tunnel length + (regression in 3.14) + - [armhf] spi: pl022: Fix incorrect dma_unmap_sg + - mac80211: fix typo in starting baserate for rts_cts_rate_idx + - staging: comedi: (regression) channel list must be set for COMEDI_CMD + ioctl (regression in 3.15) + - nfsd4: fix response size estimation for OP_SEQUENCE (regression in 3.16) + - quota: Properly return errors from dquot_writeback_dquots() + - i3200_edac: Report CE events properly + - i82860_edac: Report CE events properly + - cpc925_edac: Report UE events properly + - e7xxx_edac: Report CE events properly + - scsi: Fix error handling in SCSI_IOCTL_SEND_COMMAND + - usb: serial: ftdi_sio: add "bricked" FTDI device PID + - [armhf] Revert "usb: dwc3: dwc3-omap: Disable/Enable only wrapper + interrupts in prepare/complete" (regression in 3.16) + - usb: gadget: f_fs: remove redundant ffs_data_get() (regression in 3.14) + - [armhf] usb: ffs: fix regression when quirk_ep_out_aligned_size flag is + set (regression in 3.15) + - [armhf] usb: musb: dsps: start OTG timer on resume again + (regression in 3.16.6) + - usb: gadget: udc: core: fix kernel oops with soft-connect + - nfsd4: fix crash on unknown operation number + - Revert "iwlwifi: mvm: treat EAPOLs like mgmt frames wrt rate" + (regression in 3.16.4) + - [armhf] usb: dwc3: gadget: Properly initialize LINK TRB + - posix-timers: Fix stack info leak in timer_create() + - futex: Fix a race condition between REQUEUE_PI and task death + - ALSA: bebob: Uninitialized id returned by saffirepro_both_clk_src_get + - PM / Sleep: fix async suspend_late/freeze_late error handling + (regression in 3.15) + - Revert "block: all blk-mq requests are tagged" (regression in 3.16) + - ALSA: pcm: Zero-clear reserved fields of PCM status ioctl in compat mode + - zap_pte_range: update addr when forcing flush after TLB batching faiure + - staging: comedi: fix memory leak / bad pointer freeing for chanlist + (regression in 3.15) + - [x86] drm/i915: Ignore VBT backlight check on Macbook 2, 1 + (regression in 3.15) + - [i386/686-pae] pageattr: Prevent overflow in slow_virt_to_phys() for + X86_PAE + - [x86] ACPI / EC: Fix regression due to conflicting firmware behavior + between Samsung and Acer. (regression in 3.16.3) + - mm: free compound page with correct order + - lib/bitmap.c: fix undefined shift in __bitmap_shift_{left|right}() + - ext4: fix overflow when updating superblock backups after resize + - ext4: fix oops when loading block bitmap failed + - ext4: enable journal checksum when metadata checksum feature enabled + - ext4: prevent bugon on race between write/fcntl + - ext4: bail out from make_indexed_dir() on first error + - PCI: Rename sysfs 'enabled' file back to 'enable' (regression in 3.13) + - fs: allow open(dir, O_TMPFILE|..., 0) with mode 0 + - [arm*] tracing/syscalls: Ignore numbers outside NR_syscalls' range + - nfs: fix kernel warning when removing proc entry + http://kernel.ubuntu.com/stable/ChangeLog-3.16.7-ckt2 + - rbd: Fix error recovery in rbd_obj_read_sync() + - regulator: max77693: Fix use of uninitialized regulator config + - xhci: no switching back on non-ULT Haswell (regression in 3.12) + - Btrfs: fix kfree on list_head in btrfs_lookup_csums_range error cleanup + - ocfs2: fix breakage in o2net_send_tcp_msg() (regression in 3.15) + - [armhf] phy: omap-usb2: Enable runtime PM of omap-usb2 phy properly + (regression in 3.16) + - USB: cdc-acm: add quirk for control-line state requests + (regression in 3.16) + - sysfs: driver core: Fix glue dir race condition by gdp_mutex + - drm/nouveau: make sure display hardware is reinitialised on runtime + resume (regression in 3.15) + - drm/nv50/disp: fix dpms regression on certain boards + - drm/nouveau/bios: memset dcb struct to zero before parsing + - GFS2: Make rename not save dirent location (regression in 3.14) + - netfilter: ipset: off by one in ip_set_nfnl_get_byindex() + - netfilter: nf_tables: check for NULL in nf_tables_newchain pcpu stats + allocation (regression in 3.16) + - netfilter: nfnetlink_log: fix maximum packet length logged to userspace + - netfilter: nft_compat: fix wrong target lookup in nft_target_select_ops() + - mmc: core: sdio: Fix unconditional wake_up_process() on sdio thread + (regression in 3.16) + - mmc: don't request CD IRQ until mmc_start_host() + - fs: make cont_expand_zero interruptible + - UBIFS: fix a race condition + - [x86] fpu: __restore_xstate_sig()->math_state_restore() needs + preempt_disable() + - [x86] fpu: shift drop_init_fpu() from save_xstate_sig() to + handle_signal() + - perf: Fix unclone_ctx() vs. locking + - evm: properly handle INTEGRITY_NOXATTRS EVM status + - [alpha] vfs: missing data dependency barrier in prepend_name() + - jffs2: kill wbuf_queued/wbuf_dwork_lock + - fix misuses of f_count() in ppp and netlink + - sched: Use dl_bw_of() under RCU read lock + - [s390*] topology: call set_sched_topology early + - [armhf] mfd: ti_am335x_tscadc: Fix TSC operation after ADC continouous + mode (regression in 3.14) + - [armhf] mfd: ti_am335x_tscadc: Fix TSC resume (regression in 3.14) + - selinux: fix inode security list corruption + - blk-mq: fix potential hang if rolling wakeup depth is too high + (regression in 3.16) + - block: fix alignment_offset math that assumes io_min is a power-of-2 + - drm/nouveau/gpio: rename g92 class to g94 (regression in 3.16) + - [x86] drm/i915: Do not leak pages when freeing userptr objects + - media: v4l2-common: fix overflow in v4l_bound_align_image() + - sched: Use rq->rd in sched_setaffinity() under RCU read lock + - [powerpc*] use device_online/offline() instead of cpu_up/down() + (regression in 3.11) + - xen-blkback: fix leak on grant map error path + - net: skb_fclone_busy() needs to detect orphaned skb (regression in 3.16) + - rbd: avoid format-security warning inside alloc_workqueue() + - rbd: fix error return code in rbd_dev_device_setup() + - media: ttusb-dec: buffer overflow in ioctl (CVE-2014-8884) + - dm raid: ensure superblock's size matches device's logical block size + - ahci: disable MSI instead of NCQ on Samsung pci-e SSDs on macbooks + (Closes: #772435) + - mac80211: properly flush delayed scan work on interface removal + - [i386] microcode, AMD: Fix early ucode loading on 32-bit + (regression in 3.14) + - [armhf] mvebu: armada xp: Generalize use of i2c quirk + (regression in 3.12) + - mac80211: fix use-after-free in defragmentation + - iwlwifi: fix RFkill while calibrating (regression in 3.16) + - tun: Fix csum_start with VLAN acceleration (regression in 3.12) + - macvtap: Fix csum_start when VLAN tags are present + - dm thin: grab a virtual cell before looking up the mapping + - [x86] KVM: Fix uninitialized op->type for some immediate values + - [powerpc*] hwrng: pseries - port to new read API and fix stack corruption + - drm/radeon: set correct CE ram size for CIK + - drm/radeon: make sure mode init is complete in bandwidth_update + - cpufreq: Avoid crash in resume on SMP without OPP (regresion in 3.12) + - [i386] microcode, AMD: Fix ucode patch stashing on 32-bit + (regression in 3.14) + - [armhf] mfd: twl4030-power: Fix poweroff with PM configuration enabled + (regression in 3.16) + - [hppa] Use compat layer for msgctl, shmat, shmctl and semtimedop syscalls + - tracing: Do not busy wait in buffer splice (regresion in 3.16) + - param: fix crash on bad kernel arguments (regression in 3.16) + - audit: keep inode pinned + - drm/radeon: add locking around atombios scratch space usage + - nfs: fix pnfs direct write memory leak + - nfs: Fix use of uninitialized variable in nfs_getattr() + - NFSv4: Ensure that we remove NFSv4.0 delegations when state has expired + - NFSv4.1: nfs41_clear_delegation_stateid shouldn't trust + NFS_DELEGATED_STATE + - NFSv4: Fix races between nfs_remove_bad_delegation() and delegation + return + - NFSv4: Ensure that we call FREE_STATEID when NFSv4.x stateids are revoked + - NFS: Don't try to reclaim delegation open state if recovery failed + - [arm64] efi: Fix stub cache maintenance + - [arm64] __clear_user: handle exceptions on strb (CVE-2014-7843) + - [arm64] Correct the race condition in aarch64_insn_patch_text_sync() + - Fix thinko in iov_iter_single_seg_count + - libceph: do not crash on large auth tickets + - [armel,armhf] 8191/1: decompressor: ensure I-side picks up relocated code + - zram: avoid kunmap_atomic() of a NULL pointer + - firewire: cdev: prevent kernel stack leaking into ioctl arguments + - md: Always set RECOVERY_NEEDED when clearing RECOVERY_FROZEN + (regression in 3.13) + - vxlan: Do not reuse sockets for a different address family + - net: sctp: fix NULL pointer dereference in af->from_addr_param on + malformed packet (CVE-2014-7841) + - net: sctp: fix memory leak in auth key management + - [armel,m68k] ipv6: fix IPV6_PKTINFO with v4 mapped (regression in 3.15) + - netlink: Properly unbind in error conditions. (regression in 3.16) + - smsc911x: power-up phydev before doing a software reset. + (regression in 3.14) + - [sparc*] sunvdc: limit each sg segment to a page + - [sparc*] vio: fix reuse of vio_dring slot + - drm/radeon: initialize sadb to NULL in the audio code + - [x86] KVM: Don't report guest userspace emulation error to userspace + - crypto: caam - remove duplicated sg copy functions + - audit: correct AUDIT_GET_FEATURE return message type + - memory-hotplug: Remove "weak" from memory_block_size_bytes() declaration + (regression in 3.14) + - [s390*] vmcore: Remove "weak" from function declarations + - [s390*] clocksource: Remove "weak" from clocksource_default_clock() + declaration + - IB/core: Clear AH attr variable to prevent garbage data + - [amd64] x32, audit: Fix x32's AUDIT_ARCH wrt audit + - [armhf] dts: am335x-evm: Fix 5th NAND partition's name + (regression in 3.15) + - dell-wmi: Fix access out of memory + + [ Ben Hutchings ] + * [x86] Complete Thunderbolt support on Apple computers (Closes: #768653) + - PCI: Add pci_fixup_suspend_late quirk pass + - PCI: Suspend/resume quirks for Apple thunderbolt + - Enable THUNDERBOLT as module + * [amd64] traps: Stop using IST for #SS (CVE-2014-9090) + * [amd64] traps: Fix the espfix64 #DF fixup and rewrite it in C + * [amd64] traps: Rework bad_iret + * [amd64] asm/traps: Disable tracing and kprobes in fixup_bad_iret and + sync_regs + * Fix ABI changes in iovec, of, perf and truncate + * Ignore ABI changes in iwlwifi, KVM and spi-nor + * Revert "drivers/net: Disable UFO through virtio" in macvtap and tun. + This removes the need to shut down VMs if migrating to a patched + host. + + [ Ian Campbell ] + * [xen] Backport various netback fixes (Closes: #767261). + * Backport fix for TSO with mv643xx_eth driver, replacing previous workaround + (#764162) + * [armhf] Increase Ethernet phy startup delay on Banana-Pi. Patch from + Karsten Merker (Closes: #767042) + * [armhf] Enable FB_SIMPLE, used on some Exynos platforms and elsewhere. + * [arm64] Backport various upstream fixes and improvements to the APM X-gene + Ethernet driver. + * Honour stdout-path from Device Tree, along with supporting any supplied + options. (Closes: #770212) + * [armhf] Add udeb modules to support video and keyboard for imx6. Patch from + Vagrant Cascadian (Closes: #770635) + * [device-tree] Reserve memreserve regions even if they partially overlap + with an existing reservation. Fixes boot on Midway. + * [arm64] Enable reboot on the Xgene platform. + + -- Ben Hutchings Mon, 08 Dec 2014 20:03:18 +0000 + +linux (3.16.7-2) unstable; urgency=medium + + [ Ian Campbell ] + * Disable TSO in mv643xx_eth driver by default (Closes: #764162). + + [ Aurelien Jarno ] + * [i386] Rename 486 flavour to 586 for udebs. (Closes: #768288) + + [ Ben Hutchings ] + * [hppa] udeb: Fix modules in multiple packages (Closes: 768297) + + -- Ben Hutchings Thu, 06 Nov 2014 17:42:26 +0000 + +linux (3.16.7-1) unstable; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.16.6 + - rtnetlink: fix VF info size (regression in 3.11) + - myri10ge: check for DMA mapping errors + - Revert "macvlan: simplify the structure port" (regression in 3.16) + - tcp: don't use timestamp from repaired skb-s to calculate RTT (v2) + (regression in 3.15) + - tcp: fix tcp_release_cb() to dispatch via address family for + mtu_reduced() + - tipc: fix message importance range check (regression in 3.15) + - packet: handle too big packets for PACKET_V3 + - bnx2x: Revert UNDI flushing mechanism (regression in 3.14) + - net: ipv6: fib: don't sleep inside atomic lock (regression in 3.15) + - openvswitch: fix panic with multiple vlan headers + - ipv6: fix rtnl locking in setsockopt for anycast and multicast + - l2tp: fix race while getting PMTU on PPP pseudo-wire (regression in 3.15) + - ipv6: restore the behavior of ipv6_sock_ac_drop() + - bonding: fix div by zero while enslaving and transmitting + (regression in 3.12) + - net: filter: fix possible use after free (regression in 3.15) + - net: allow macvlans to move to net namespace (regression in 3.13) + - macvlan: allow to enqueue broadcast pkt on virtual device + (regression in 3.16) + - xfrm: Generate blackhole routes only from route lookup functions + - xfrm: Generate queueing routes only from route lookup functions + - macvtap: Fix race between device delete and open. + - net/mlx4_core: Allow not to specify probe_vf in SRIOV IB mode + (regression in 3.15) + - net/mlx4: Correctly configure single ported VFs from the host + (regression in 3.15) + - gro: fix aggregation for skb using frag_list (regression in 3.13) + - hyperv: Fix bug in netvsc_start_xmit() (potential use-after-free) + - team: avoid race condition in scheduling delayed work + - hyperv: Fix bug in netvsc_send() (potential use-after-free) + - sctp: handle association restarts when the socket is closed. + - net_sched: copy exts->type in tcf_exts_change() (regression in 3.14) + - crypto: caam - fix addressing of struct member + - driver/base/node: remove unnecessary kfree of node struct from + unregister_one_node (regression in 3.15) + https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.16.7 + - btrfs: wake up transaction thread from SYNC_FS ioctl + - Btrfs: fix up bounds checking in lseek + - Btrfs: don't do async reclaim during log replay + - Btrfs: cleanup error handling in build_backref_tree + - Btrfs: fix build_backref_tree issue with multiple shared blocks + - Btrfs: fix race in WAIT_SYNC ioctl + - fs: Add a missing permission check to do_umount (CVE-2014-7975) + - kvm: fix potentially corrupt mmio cache + - [x86] kvm,vmx: Preserve CR4 across VM entry (CVE-2014-3690) + - be2iscsi: check ip buffer before copying (stack buffer overflow) + - mptfusion: enable no_write_same for vmware scsi disks + - qla2xxx: fix kernel NULL pointer access (regression in 3.16) + (Closes: #764804) + - qla2xxx: Fix shost use-after-free on device removal (regression in 3.14) + - dmaengine: fix xor sources continuation + - [arm64] debug: don't re-enable debug exceptions on return from el1_dbg + - mei: bus: fix possible boundaries violation + - nfsv4: Fixing lease renewal (regression in 3.13) + - lzo: check for length overrun in variable length encoding. + - [armhf] tty: omap-serial: fix division by zero + - NFSv4: Fix lock recovery when CREATE_SESSION/SETCLIENTID_CONFIRM fails + - NFSv4: fix open/lock state recovery error handling + - NFSv4.1: Fix an NFSv4.1 state renewal regression + - nfsd4: reserve adequate space for LOCK op (regression in 3.16) + - NFS: Fix an uninitialised pointer Oops in the writeback error path + - NFS: Fix a bogus warning in nfs_generic_pgio (regression in 3.16.4) + - iwlwifi: mvm: disable BT Co-running by default + - [armel,armhf] PCI: mvebu: Fix uninitialized variable in + mvebu_get_tgt_attr() + - Revert "ath9k_hw: reduce ANI firstep range for older chips" + (regression in 3.15) + - fanotify: enable close-on-exec on events' fd when requested in + fanotify_init() + - futex: Ensure get_futex_key_refs() always implies a barrier + (regression in 3.14) + - [ppc64el] iommu/ddw: Fix endianness + - [arm64] compat: fix compat types affecting struct compat_elf_prpsinfo + - ALSA: emu10k1: Fix deadlock in synth voice lookup + - ALSA: hda - Add missing terminating entry to SND_HDA_PIN_QUIRK macro + - [armhf] mvebu: Netgear RN104: Use Hardware BCH ECC + - [armhf] mvebu: Netgear RN2120: Use Hardware BCH ECC + - [armhf] mvebu: Netgear RN102: Use Hardware BCH ECC + - ecryptfs: avoid to access NULL pointer when write metadata in xattr + - xfs: ensure WB_SYNC_ALL writeback handles partial pages correctly + - [sparc*] Do not disable interrupts in nmi_cpu_busy() + - [sparc*] Fix pcr_ops initialization and usage bugs. + - [sparc*] sun4v TLB error power off events + - [sparc*] Fix corrupted thread fault code. + - [sparc*] find_node adjustment + - [sparc*] Let memset return the address argument + - [sparc*] bpf_jit: fix support for ldx/stx mem and SKF_AD_VLAN_TAG + - [sparc*] bpf_jit: fix loads from negative offsets + - [sparc*] Fix FPU register corruption with AES crypto offload. + - [sparc*] Do not define thread fpregs save area as zero-length array. + - [sparc*] Fix hibernation code refrence to PAGE_OFFSET. + - [sparc*] correctly recognise M6 and M7 cpu type + - [sparc*] T5 PMU + - [sparc*] Switch to 4-level page tables. + - [sparc*] Adjust KTSB assembler to support larger physical addresses. + - [sparc*] Fix physical memory management regressions with large + max_phys_bits. + - [sparc*] Use kernel page tables for vmemmap. + - [sparc*] Increase MAX_PHYS_ADDRESS_BITS to 53. + - [sparc*] sparse irq + - [sparc*] Fix register corruption in top-most kernel stack frame during + boot. + - [sparc*] Implement __get_user_pages_fast(). + + [ Ben Hutchings ] + * [i386] Rename 486 flavour to 586, as it has not worked on 486 processors + since we enabled CC_STACKPROTECTOR (Closes: #766105) + - Select M586TSC instead of M486 + * [x86] r8723au: Backport changes up to Linux 3.17 (Closes: #765685) + * mmc_block: Increase max_devices and set MMC_BLOCK_MINORS to 256 + (Closes: #765621) + * [x86] drm/i915: Initialise userptr mmu_notifier serial to 1 + (Closes: #765590) + * rtsx_usb_ms: Use msleep_interruptible() in polling loop (Closes: #765717) + * Bump ABI to 4 + * Add '.0' to the kernel version string (Closes: #742226, #745984) + * vfs,fuse: Change iov_iter_get_pages() to take both maxsize and maxpages + parameters (Closes: #764285) + * lockd: Try to reconnect if statd has moved (Closes: #767219) + * m25p80: Fix module device ID table + * HID: i2c-hid: call the hid driver's suspend and resume callbacks + (Closes: #767204) + * [x86] drm/i915: Add some L3 registers to the parser whitelist + (Closes: #767148) + * wireless: rt2x00: add new rt2800usb device (thanks to Cyril Brulebois) + (Closes: #766802) + * drivers/net,ipv6: Fix virtio/IPv6 regression in 3.16: + - drivers/net: Disable UFO through virtio + - drivers/net,ipv6: Select IPv6 fragment idents for virtio UFO packets + * [x86] KVM: Check non-canonical addresses upon WRMSR (CVE-2014-3610) + * [x86] KVM: Prevent host from panicking on shared MSR writes. + (CVE-2014-3610) + * [x86] KVM: Improve thread safety in pit (CVE-2014-3611) + * [x86] kvm: vmx: handle invvpid vm exit gracefully (CVE-2014-3646) + * [x86] KVM: Fix wrong masking on relative jump/call + * [x86] KVM: Emulator fixes for eip canonical checks on near branches + (CVE-2014-3647) + * [x86] KVM: Handle errors when RIP is set during far jumps (CVE-2014-3647) + * [x86] KVM: Fix far-jump to non-canonical check + * net: sctp: fix skb_over_panic when receiving malformed ASCONF chunks + (CVE-2014-3673) + * net: sctp: fix panic on duplicate ASCONF chunks (CVE-2014-3687) + * net: sctp: fix remote memory pressure from excessive queueing + (CVE-2014-3688) + * mnt: Prevent pivot_root from creating a loop in the mount tree + (CVE-2014-7970) + * linux-image: Recommend irqbalance if CONFIG_SMP is enabled + (Closes: #577788) + * [armhf] leds: Enable LEDS_PWM as module (for Cubox-i) + * [x86] Backport Thunderbolt support on Apple computers from 3.17 + * [x86] linux-image: Remove lilo from suggested boot loaders + * [amd64] linux-image: Add grub-efi to suggested boot loaders + * [hppa] Reduce SIGRTMIN from 37 to 32 to behave like other Linux + architectures (Closes: #766635) + * [hppa] udeb: Add many more module packages (Closes: #766793) + * iwlwifi: Backport firmware monitor from 3.17 (Closes: #767088) + * bug script: Warn if the running kernel matches the ABI name of the + package but is not the installed version + + [ Mauricio Faria de Oliveira ] + * [ppc64el] Disable CONFIG_CMDLINE{,_BOOL} usage for setting consoles + (Closes: #764745) + + [ Uwe Kleine-König ] + * [armhf] enable rtc driver for i.MX6 + * [armhf] add chipidea usb host driver to usb-modules-$version-armmmp-di + for i.MX6 + * [armhf] enable PCI and NAND driver for Armada 370 + * [armhf] enable RTC, GPIO_PCA953X, SENSORS_G762 and watchdog driver for + Netgear ReadyNAS 102/104 + + [ Ian Campbell ] + * [armhf] Build i2c-s3c2410 statically, it is used by the arndale power + controller. + * [armhf] Backport device tree file for Olimex A20-OLinuXino-LIME. (Closes: #764967) + * [armhf] Enable various drivers for the Nokia N900. Patch from Sebastian + Reichel. (Closes: #766070) + * [arm64] Enable EHCI and OHCI platform USB HCD drivers. + * Enable MTD and MTDBLOCK in top-level config. + * [armhf] Add mtd-modules udeb. Patch from Uwe Kleine-Koenig. + + [ Aurelien Jarno ] + * [mips*] Backport a hugetlb fix for Octeon from 3.18. + * [mips*] Backport math emulation fix for MIPS32r2 from 3.18. + * [mips*] Only define MAX_PHYSMEM_BITS on Loongson-3, until a better fix + is committed upstream. Fixes Loongson-2 kernel and maybe more. Closes: + #764223. + * [mips*/octeon] Add support for the UBNT E200 board (EdgeRouter/EdgeRouter + Pro 8 port). + * [mips*/octeon] Enable SERIAL_8250_DW. Disable KEYBOARD_ATKBD, MOUSE_PS2, + SERIO_I8042. + * [mips*/octeon] Really enable USB_OCTEON_EHCI and USB_OCTEON_OHCI. Closes: + Closes: #762066. + + -- Ben Hutchings Tue, 04 Nov 2014 09:47:27 +0000 + +linux (3.16.5-1) unstable; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.16.4 + - module: Clean up ro/nx after early module load failures + (regression in 3.16) + - [armhf] cpufreq: OPP: Avoid sleeping while atomic + - [armhf] drm/tilcdc: Fix various bugs in removal path + - drm/ttm: Fix possible stack overflow by recursive shrinker calls. + - [x86] drm/i915: Fix crash when failing to parse MIPI VBT + (regression in 3.16) + - [x86] drm/i915: read HEAD register back in init_ring_common() to enforce + ordering (Closes: #763583) + - libata: widen Crucial M550 blacklist matching + - pata_scc: propagate return value of scc_wait_after_reset + - pwm: Fix period and polarity in pwm_get() for non-perfect matches + - aio: add missing smp_rmb() in read_events_ring + - [arm64] flush TLS registers during exec + - [arm64] use irq_set_affinity with force=false when migrating irqs + (regression in 3.15) + - [arm*] KVM: Nuke Hyp-mode tlbs before enabling MMU + - [x86] i2c: ismt: use correct length when copy buffer + - ftrace: Use current addr when converting to nop in + __ftrace_replace_code() (regression in 3.16) + - ALSA: core: fix buffer overflow in snd_info_get_line() + - ALSA: firewire-lib/dice: add arrangements of PCM pointer and interrupts + for Dice quirk (regression in 3.16) + - HID: picolcd: sanity check report size in raw_event() callback + (CVE-2014-3186) + - HID: magicmouse: sanity check report size in raw_event() callback + (CVE-2014-3181) + - HID: logitech-dj: prevent false errors to be shown (regression in 3.16.2) + - [x86] drm/i915: Skip load detect when intel_crtc->new_enable==true + (regression in 3.16) + - [x86] drm/i915: fix plane/cursor handling when runtime suspended + (regression in 3.14) + - [x86] drm/i915: Ignore VBT backlight presence check on Acer C720 (4005U) + (regression in 3.15) + - [x86] drm/i915: Wait for vblank before enabling the TV encoder + (regression in 3.16) + - [x86] drm/i915/hdmi: fix hdmi audio state readout (regression in 3.16) + - drm/radeon: Add ability to get and change dpm state when radeon PX card + is turned off (regression in 3.15) + - locks: pass correct "before" pointer to locks_unlink_lock in + generic_add_lease + - ufs: fix deadlocks introduced by sb mutex merge (regression in 3.16) + - USB: serial: fix potential stack buffer overflow + - USB: serial: fix potential heap buffer overflow + - USB: option: reduce interrupt-urb logging verbosity (regression in 3.16) + - [armhf] usb: phy: twl4030-usb: Fix lost interrupts after ID pin goes down + (regression in 3.13) + - [armhf] usb: phy: twl4030-usb: Fix regressions to runtime PM on omaps + (regressions in 3.14, 3.15) + - uwb: init beacon cache entry before registering uwb device + - usb: hub: take hub->hdev reference when processing from eventlist + - USB: EHCI: unlink QHs even after the controller has stopped + - Revert "ACPI / battery: fix wrong value of capacity_now reported when + fully charged" (regression in 3.16) + - [x86] iommu/vt-d: Check return value of acpi_bus_get_device() + (regression in 3.15) + - [armhf/armmp-lpae] iommu/arm-smmu: fix programming of SMMU_CBn_TCR for + stage 1 + - cgroup: check cgroup liveliness before unbreaking kernfs + (regression in 3.15) + - NFSv4: Fix another bug in the close/open_downgrade code + (regression in 3.16.2) + - nfsd4: fix corruption of NFSv4 read data (regression in 3.16) + - nfs: check wait_on_bit_lock err in page_group_lock + - nfs: clear_request_commit while holding i_lock + - nfs: fix nonblocking calls to nfs_page_group_lock + - nfs: use blocking page_group_lock in add_request + - nfs: fix error handling in lock_and_join_requests + - nfs: don't sleep with inode lock in lock_and_join_requests + - nfs: disallow duplicate pages in pgio page vectors + - nfs: can_coalesce_requests must enforce contiguity + - [armhf] 8129/1: errata: work around Cortex-A15 erratum 830321 using dummy + strex + - [armhf] 8133/1: use irq_set_affinity with force=false when migrating irqs + (regression in 3.15) + - [armel,armhf] 8148/1: flush TLS and thumbee register state during exec + - [armel,armhf] 8149/1: perf: Don't sleep while atomic when enabling + per-cpu interrupts (regression in 3.15) + - [armhf] imx: fix .is_enabled() of shared gate clock (regression in 3.16) + - [armhf] 8165/1: alignment: don't break misaligned NEON load/store + - [mips*] Fix MFC1 & MFHC1 emulation for 64-bit MIPS systems + (regression in 3.15) + - ACPICA: Update to GPIO region handler interface. + - gpio / ACPI: Use pin index and bit length + - ACPI / platform / LPSS: disable async suspend/resume of LPSS devices + (regression in 3.16) + - ACPI / hotplug: Generate online uevents for ACPI containers + (regression in 3.14) + - ACPI / video: disable native backlight for ThinkPad X201s + (regression in 3.16) + - regmap: Fix regcache debugfs initialization (regression in 3.15) + - regmap: Fix handling of volatile registers for format_write() chips + - regmap: Don't attempt block writes when syncing cache on single_rw + devices + - cgroup: reject cgroup names with '\n' + - cgroup: delay the clearing of cgrp->kn->priv + - cgroup: fix unbalanced locking (regression in 3.14) + - [s390*] KVM: Fix user triggerable bug in dead code + - [s390*] KVM: mm: try a cow on read only pages for key ops + - [s390*] KVM: mm: Fix storage key corruption during swapping + - [s390*] KVM: mm: Fix guest storage key corruption in + ptep_set_access_flags + - [x86] xen: don't copy bogus duplicate entries into kernel page tables + - [x86] early_ioremap: Increase FIX_BTMAPS_SLOTS to 8 (regression in 3.16) + - shmem: fix nlink for rename overwrite directory + - SMB3: Fix oops when creating symlinks on smb3 + - iio: Fix indio_dev->trig assignment in several drivers + - Target/iser: Don't put isert_conn inside disconnected handler + - target: Fix inverted logic in SE_DEV_ALUA_SUPPORT_STATE_STORE + (regression in 3.13) + - iscsi-target: Fix memory corruption in iscsit_logout_post_handler_diffcid + - SCSI: libiscsi: fix potential buffer overrun in __iscsi_conn_send_pdu + - Revert "iwlwifi: dvm: don't enable CTS to self" (regression in 3.16) + - iwlwifi: mvm: fix endianity issues with Smart Fifo commands + (regression in 3.14) + - iwlwifi: mvm: set MAC_FILTER_IN_BEACON correctly for STA/P2P client + (regression in 3.16) + - workqueue: apply __WQ_ORDERED to create_singlethread_workqueue() + (regression in 3.10) + - futex: Unlock hb->lock in futex_wait_requeue_pi() error path + - block: Fix dev_t minor allocation lifetime + - dm cache: fix race causing dirty blocks to be marked as clean + - percpu: fix pcpu_alloc_pages() failure path + - percpu: perform tlb flush after pcpu_map_pages() failure + - regulatory: add NUL to alpha2 + - lockd: fix rpcbind crash on lockd startup failure (regression in 3.15) + - genhd: fix leftover might_sleep() in blk_free_devt() + - eventpoll: fix uninitialized variable in epoll_ctl + - kcmp: fix standard comparison bug + - fs/notify: don't show f_handle if exportfs_encode_inode_fh failed + - nilfs2: fix data loss with mmap() + - mm, slab: initialize object alignment on cache creation + - fs/cachefiles: add missing \n to kerror conversions (regression in 3.16) + - mm: softdirty: keep bit when zapping file pte + - sched: Fix unreleased llc_shared_mask bit during CPU hotplug + - brcmfmac: handle IF event for P2P_DEVICE interface (regression in 3.12) + - ath9k_htc: fix random decryption failure (regression in 3.15) + - [powerpc,ppc*] Add smp_mb() to arch_spin_is_locked() + - [powerpc,ppc*] Add smp_mb()s to arch_spin_unlock_wait() + - [hppa] Implement new LWS CAS supporting 64 bit operations. + - alarmtimer: Return relative times in timer_gettime + - alarmtimer: Do not signal SIGEV_NONE timers + - alarmtimer: Lock k_itimer during timer callback + - GFS2: fix d_splice_alias() misuses + - IB/qib: Correct reference counting in debugfs qp_stats + - IB/mlx4: Avoid null pointer dereference in mlx4_ib_scan_netdevs() + (regression in 3.14) + - IB/mlx4: Don't duplicate the default RoCE GID (regression in 3.14) + - IB/core: When marshaling uverbs path, clear unused fields + (regression in 3.14) + - mm: Fix unbalanced mutex in dma_pool_create(). (regression in 3.16) + - PCI: Add pci_ignore_hotplug() to ignore hotplug events for a device + (regression in 3.15) + - Revert "PCI: Don't scan random busses in pci_scan_bridge()" + (regression in 3.15) + - drm/nouveau/runpm: fix module unload + - drm/radeon/px: fix module unload + - fs: Fix nasty 32-bit overflow bug in buffer i/o code. + - blk-mq: Avoid race condition with uninitialized requests + - [x86] crypto: ccp - Check for CCP before registering crypto algs + - nl80211: clear skb cb before passing to netlink + - Revert "PCI: Make sure bus number resources stay within their parents + bounds" (regression in 3.15) + - cpufreq: release policy->rwsem on error (regression in 3.14) + - cpufreq: fix cpufreq suspend/resume for intel_pstate (regression in 3.15) + - media: it913x: init tuner on attach (regression in 3.15) + - media: videobuf2-dma-sg: fix for wrong GFP mask to + sg_alloc_table_from_pages (regression in 3.13) + - media: vb2: fix vb2 state check when start_streaming fails + (regression in 3.16.3) + - media: vb2: fix plane index sanity check in vb2_plane_cookie() + - md/raid1: clean up request counts properly in close_sync() + (regression in 3.13) + - md/raid1: be more cautious where we read-balance during resync. + (regression in 3.13) + - md/raid1: make sure resync waits for conflicting writes to complete. + (regression in 3.13) + - md/raid1: Don't use next_resync to determine how far resync has + progressed (regression in 3.13) + - md/raid1: update next_resync under resync_lock. (regression in 3.13) + - md/raid1: count resync requests in nr_pending. (regression in 3.13) + - md/raid1: fix_read_error should act on all non-faulty devices. + - md/raid1: intialise start_next_window for READ case to avoid hang + (regression in 3.13) + - netfilter: xt_hashlimit: perform garbage collection from process context + - mmc: mmci: Reverse IRQ handling for the arm_variant (regression in 3.15) + - partitions: aix.c: off by one bug (regression in 3.11) + - cpufreq: update 'cpufreq_suspended' after stopping governors + - aio: block exit_aio() until all context requests are completed + - ext4: propagate errors up to ext4_find_entry()'s callers + - ext4: avoid trying to kfree an ERR_PTR pointer + https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.16.5 + - udf: Avoid infinite loop when processing indirect ICBs (CVE-2014-6410) + - ASoC: core: fix possible ZERO_SIZE_PTR pointer dereferencing error. + - perf: fix perf bug in fork() + - mm: memcontrol: do not iterate uninitialized memcgs (regression in 3.14) + - mm: migrate: Close race between migration completion and mprotect + - [x86] ACPI / i915: Update the condition to ignore firmware backlight + change request (regression in 3.16) + - [x86] cpufreq: pcc-cpufreq: Fix wait_event() under spinlock + (regression in 3.15) + - md/raid5: disable 'DISCARD' by default due to safety concerns. + - [x86] drm/i915: Flush the PTEs after updating them before suspend + (regression in 3.12) + - cifs: Fix problem recognizing symlinks (regression in 3.13) + - ring-buffer: Fix infinite spin in reading buffer (regression in 3.16.3) + - mm: numa: Do not mark PTEs pte_numa when splitting huge pages + - media: vb2: fix VBI/poll regression + + [ Ian Campbell ] + * [armhf] Add Exynos5 disk/usb/nic modules to udebs. + * [armhf] Backport BananaPi device tree files. Patch from Karsten + Merker (Closes: #763897). + + [ Ben Hutchings ] + * [hppa/parisc64-smp] Work around gcc 4.8 miscompilation (Closes: #762390) + * [powerpc/powerpc64,ppc64*] video/fb: Change FB_MATROX, FB_RADEON, FB_ATY, + FB_SIS, FB_3DFX, FB_VOODOO1 back to modules (Closes: #748398) + * udeb: Add pata_rdc to pata-modules (Closes: #633128) + * [s390*] 3215: fix tty output containing tabs (Closes: #758264) + * radeon: Don't check for installed firmware if driver is built-in + (Closes: #763305) + * Bump ABI to 3 + * vfs: fold swapping ->d_name.hash into switch_names() + * vfs: Don't exchange "short" filenames unconditionally. (Closes: #763700) + * [hppa,m68k,mips/r4k-ip22,sparc*] bluetooth: Enable BT as module + (Closes: #764524) + + [ Aurelien Jarno ] + * [arm64] Change RTC_DRV_PL031 and RTC_DRV_XGENE from modules to built-ins + as the kernel isn't able to initialize the system clock from a hardware + clock whose driver is a module, and as there is no initramfs mechanism + to do that. + * [armhf] Change RTC_DRV_DA9052, RTC_DRV_IMXDI, RTC_DRV_MC13XXX, + RTC_DRV_MV, RTC_DRV_MXC, RTC_DRV_OMAP, RTC_DRV_PL030, RTC_DRV_PL031, + RTC_DRV_S5M, RTC_DRV_SUNXI, RTC_DRV_VT8500 from modules to built-ins for + the same reason as above. + + -- Ben Hutchings Fri, 10 Oct 2014 09:15:17 +0100 + +linux (3.16.3-2) unstable; urgency=medium + + [ Ben Hutchings ] + * [s390*] syscall: Fix unimplented-syscall entries added before + memfd_create() (fixes FTBFS) (Closes: #762221) + * [armel/kirkwood] Change configuration to reduce kernel image size + (fixes FTBFS) (Closes: #762219) + - block: Change IOSCHED_DEADLINE to module + - gpu: Disable VGA_ARB + + [ Aurelien Jarno ] + * [mips*/octeon] Enable OCTEON_USB, USB_EHCI_HCD, USB_OHCI_HCD, + and USB_OCTEON_EHCI, USB_OCTEON_OHCI (Closes: #762066). + + -- Bastian Blank Sat, 20 Sep 2014 11:43:05 +0200 + +linux (3.16.3-1) unstable; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.16.3 + - reiserfs: fix corruption introduced by balance_leaf refactor + (regression in 3.16) (Closes: #761457) + - reiserfs: Fix use after free in journal teardown + - media: v4l: vb2: Fix stream start and buffer completion race + - [x86] iommu/vt-d: Exclude devices using RMRRs from IOMMU API domains + - [powerpc*] powerpc/powernv: Fix IOMMU group lost (regression in 3.15) + - [x86] iommu/vt-d: Defer domain removal if device is assigned to a driver + - [x86] iommu/amd: Fix cleanup_domain for mass device removal + - [s390*] locking: Reenable optimistic spinning + - firmware: Do not use WARN_ON(!spin_is_locked()) + - CAPABILITIES: remove undefined caps from all processes + - fanotify: fix double free of pending permission events + - ocfs2: do not write error flag to user structure we cannot copy from/to + - [powerpc*] mm: fix potential infinite loop in dissolve_free_huge_pages() + - drivers/mfd/rtsx_usb.c: export device table (Closes: #761428) + - [powerpc*] mm: Use read barrier when creating real_pte + - [powerpc*] thp: Add write barrier after updating the valid bit + - [powerpc*] thp: Invalidate old 64K based hash page mapping before insert + of 4k pte + - [powerpc*] thp: Handle combo pages in invalidate + - [powerpc*] thp: Invalidate with vpn in loop + - [powerpc*] thp: Use ACCESS_ONCE when loading pmdp + - SCSI: save command pool address of Scsi_Host (regression in 3.15) + - fix regression in SCSI_IOCTL_SEND_COMMAND (regression in 3.16) + - [mips*] GIC: Prevent array overrun + - [mips*] ptrace: Test correct task's flags in task_user_regset_view() + - [mips*] ptrace: Change GP regset to use correct core dump register layout + - [mips*] ptrace: Avoid smp_processor_id() when retrieving FPU IR + - [mips*] syscall: Fix AUDIT value for O32 processes on MIPS64 + - [mips*] scall64-o32: Fix indirect syscall detection + - [mips,powerpc] bfa: Fix undefined bit shift on big-endian architectures + with 32-bit DMA address + - ACPI / hotplug: Check scan handlers in acpi_scan_hot_remove() + (regression in 3.14) + - ACPI: Run fixed event device notifications in process context + (regression in 3.15) + - ACPI / scan: Allow ACPI drivers to bind to PNP device objects + (regression in 3.16) + - ACPI / EC: Add support to disallow QR_EC to be issued when SCI_EVT isn't + set (regression in 3.14.13, 3.16) + - ACPI / EC: Add support to disallow QR_EC to be issued before completing + previous QR_EC (regression in 3.14.13, 3.16) + - ACPI / scan: not cache _SUN value in struct acpi_device_pnp + (regression in 3.14) + - ACPI / video: Add a disable_native_backlight quirk + - ACPI / video: Disable native_backlight on HP ENVY 15 Notebook PC + - ring-buffer: Always reset iterator to reader page + - ring-buffer: Up rb_iter_peek() loop count to 3 + - vfs: get rid of propagate_umount() mistakenly treating slaves as busy. + (regression in 3.15) + - Bluetooth: Fix tracking local SSP authentication requirement + - Bluetooth: Avoid use of session socket after the session gets freed + - vfs: __generic_file_write_iter(): fix handling of sync error after DIO + (regression in 3.16) + - rbd: rework rbd_request_fn() (regression in 3.15) + - vfs: fix copy_tree() regression (regression in 3.14) + - md/raid1,raid10: always abort recover on write error. + - md/raid5: avoid livelock caused by non-aligned writes. + (regression in 3.16) + - md/raid6: avoid data corruption during recovery of double-degraded RAID6 + - md/raid10: fix memory leak when reshaping a RAID10. + - xfs: ensure verifiers are attached to recovered buffers + - xfs: quotacheck leaves dquot buffers without verifiers + - xfs: don't dirty buffers beyond EOF + - xfs: don't zero partial page cache pages during O_DIRECT writes + - xfs: don't zero partial page cache pages during O_DIRECT reads + - libceph: set last_piece in ceph_msg_data_pages_cursor_init() correctly + - libceph: gracefully handle large reply messages from the mon + - libceph: do not hard code max auth ticket len (CVE-2014-6416, + CVE-2014-6417, CVE-2014-6418) + - CIFS: Fix async reading on reconnects + - CIFS: Possible null ptr deref in SMB2_tcon + - CIFS: Fix wrong directory attributes after rename + - mtd/ftl: fix the double free of the buffers allocated in build_maps() + - mtd: nand: omap: Fix 1-bit Hamming code scheme, omap_calculate_ecc() + - dm table: propagate QUEUE_FLAG_NO_SG_MERGE (regression in 3.16) + - KEYS: Fix use-after-free in assoc_array_gc() + - KEYS: Fix termination condition in assoc array garbage collection + (CVE-2014-3631) + + [ Ben Hutchings ] + * sfc: Adding PCI ID for Solarflare 7000 series 40G network adapter. + * sfc: Add 40G link capability decoding + * Bump ABI to 2 (Closes: #761874) + * ata: Enable SATA_ZPODD + * tracing: Enable TRACER_SNAPSHOT + * Add memfd_create() and shared memory sealing (Closes: #760702): + - mm: allow drivers to prevent new writable mappings + - shm: add sealing API + - shm: add memfd_create() syscall + - shm: wait for pins to be released when sealing + - mm: Add memfd_create() system call + - [arm*,m68k,mips*,powerpc*,s390*,sparc*] Wire up memfd_create() + * udeb: Add ccm, ctr to crypto-modules (Closes: #761902) + * [armhf] udeb: Add ehci-platform, ohci-platform and phy-sun4i-usb to + usb-modules (Closes: #761591) + + [ Ian Campbell ] + * [armhf] Enable support for Exynos5 systems. (Closes: #759291) + * [arm64] Enable crypto accelerator modules + * [arm64] Add cdrom-core-modules udeb + + [ Aurelien Jarno ] + * [powerpc/powerpc64,ppc64el] Backport more KVM patches from 3.17. Enable + KVM_BOOK3S_64, KVM_BOOK3S_64_HV, KVM_BOOK3S_64_PR and KVM_XICS. (Closes: + #761656). + + -- Ben Hutchings Thu, 18 Sep 2014 03:32:47 +0100 + +linux (3.16.2-3) unstable; urgency=medium + + [ Ben Hutchings ] + * [armhf] udeb: Remove efi-modules, as EFI is not yet supported on ARM! + * [arm64] ata: Enable PHY_XYGENE, AHCI_XGENE as modules + - udeb: Add ahci_xgene to sata-modules (fixes FTBFS) + * [arm64] rtc: Enable RTC_DRV_XGENE as module + * mfd,mmc,memstick: Enable MFD_RTSX_USB, MMC_REALTEK_USB, + MEMSTICK_REALTEK_USB as modules (Closes: #761099) + * [mips64,mips64el] Properly add the 5kc-malta flavour (should fix FTBFS) + * batman-adv: Enable BATMAN_ADV_MCAST + * can: Enable CAN_GS_USB as module + * bluetooth: Enable BT_6LOWPAN + * ubi: Enable MTD_UBI_BLOCK + * md: Enable DM_ERA as module + * qlcnic: Enable QLCNIC_VXLAN + * net/wireless: Enable RSI_91X, RSI_USB as modules + - udeb: Add rsi_usb to nic-wireless-modules + * i2c: Enable I2C_ROBOTFUZZ_OSIF as module + * mfd,gpio,i2c,iio: Enable MFD_VIPERBOARD, GPIO_VIPERBOARD, I2C_VIPERBOARD, + VIPERBOARD_ADC as modules + * media/usb/gspca: Enable USB_GSPCA_DTCS033 as module + * media/pci/cx23885: Enable MEDIA_ALTERA_CI as module + * sound/usb: Enable SND_USB_HIFACE, SND_BCD2000 as modules + * usb/misc: Enable USB_EHSET_TEST_FIXTURE as module + * usb/gadget: Enable USB_NET2280 as module + * leds: Enable LEDS_TRIGGER_CPU as built-in and LEDS_TRIGGER_ONESHOT, + LEDS_TRIGGER_GPIO, LEDS_TRIGGER_TRANSIENT, LEDS_TRIGGER_CAMERA as modules + * uio: Enable UIO_MF624 as module + * iio: Enable HID_SENSOR_PROX, HID_SENSOR_DEVICE_ROTATION, HID_SENSOR_PRESS + as modules + * ecryptfs: Enable ECRYPT_FS_MESSAGING + * ceph: Enable CEPH_FSCACHE + * crypto: Enable CRYPTO_LZ4, CRYPTO_LZ4HC as modules + * [x86] mfd,gpio,i2c,watchdog: Enable KEMPLD_MFD, GPIO_KEMPLD, I2C_KEMPLD, + KEMPLD_WDT as modules + * [x86] staging: Enable R8723AU as module + * [x86] staging: Enable WIMAX_GDM72XX as modules + - gdmwm: Enable WIMAX_GDM72XX_USB, WIMAX_GDM72XX_USB_PM + * [x86] staging/media: Enable DVB_AS102, USB_MSI3101, MEDIA_TUNER_MSI001, + SOLO6X10 as modules + * [x86] dvb-usb-rtl28xxu: Enable DVB_RTL2832_SDR + * [x86] platform: Enable ALIENWARE_WMI, DELL_SMO8800, IBM_RTL, + SAMSUNG_Q10, INTEL_RST, INTEL_SMARTCONNECT (Closes: #749273), PVPANIC + as modules + * [x86] sony-laptop: Enable SONYPI_COMPAT + * [x86,ia64] firmware: Enable DMI_SYSFS + * [x86] Disable USB_SN9C102; this driver is deprecated in favour of the + gspca drivers + * [i386] usb/gadget: Enable USB_AMD5536UDC as module + * [i386] comedi: Enable COMEDI_AMPLC_DIO200_ISA, COMEDI_AMPLC_PC236_ISA, + COMEDI_AMPLC_PC263_ISA, COMEDI_DAS08_ISA, COMEDI_NI_LABPC_ISA as modules + * [i386] speakup: Enable SPEAKUP_SYNTH_DECPC as module + * [!x86] staging: Enable R8712U, R8188EU as modules (Closes: #742055, #760859) + * i2o: Disable I2O_EXT_ADAPTEC on 64-bit, as it assumes 32-bit virtual + addresses + * SCSI: aic94xx: Remove broken fallback for missing 'Ctrl-A' user settings + * udeb: Add ath6kl_sdio, libertas_cs, libertas_sdio, mwifiex_sdio, + r8192u_usb, r8723au, rtl8188eu, rtl818x_pci, rtl8723be, rtl8821ae, + spectrum_cs to nic-wireless-modules + * builddeb: put the dbg files into the correct directory + * [ppc64el] deb-pkg: Add support for powerpc little endian + * [armhf] deb-pkg: Add automatic support for armhf architecture + * debian/rules.real: Never make kernel-wedge errors non-fatal, as in + practice this meant we didn't see them until they appeared in unstable + * udeb: Fix typo in dependencies of speakup-modules (fixes FTBFS on + mips64el due to interaction with another bug in kernel-wedge) + * libceph: Apply critical fixes: + - set last_piece in ceph_msg_data_pages_cursor_init() correctly + - gracefully handle large reply messages from the mon + - add process_one_ticket() helper + - do not hard code max auth ticket len + + [ Ian Campbell ] + * [armel/orion5x] udeb: Include mvmdio in nic-modules udeb. + * [arm64] Backport X-GENE Ethernet driver from v3.17-rcs + * [arm64] Including phy-xgene in sata-modules udeb since it is needed by + ahci_xgene. + + [ Aurelien Jarno ] + * [mips64el] Drop loongson-2e and loongson-2f flavour as the minimum + supported ISA will be at least MIPS64. + + -- Ben Hutchings Sat, 13 Sep 2014 03:49:53 +0100 + +linux-tools (3.16-2) unstable; urgency=medium + + * linux-kbuild: Change the type headers used for devicetable-offsets.c + to avoid depending on UAPI headers or . This really + closes: #754213. It also fixes modpost handling of input device IDs + when host and target have differing word size. + + -- Ben Hutchings Tue, 09 Sep 2014 13:21:05 +0100 + +linux-tools (3.16-1) unstable; urgency=medium + + * New upstream release + + [ Mauricio Faria de Oliveira ] + * [ppc64el] Build linux-tools binary package (Closes: #754213) + + [ Ben Hutchings ] + * linux-kbuild: Build and install recordmcount and recordmcount.pl, + needed for kernels with DYNAMIC_FTRACE enabled + * linux-kbuild: Fix recordmcount dependency for OOT modules + + -- Ben Hutchings Mon, 08 Sep 2014 18:45:06 +0100 + +linux (3.16.2-2) unstable; urgency=medium + + [ Ben Hutchings ] + * [armel,mips*] udeb: Remove lzo-modules, as LZO_COMPRESS is now built-in + (fixes FTBFS) + + -- Ben Hutchings Mon, 08 Sep 2014 18:39:25 +0100 + +linux (3.16.2-1) unstable; urgency=medium + + * New upstream stable update (closes: #748615): + https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.16.1 + https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.16.2 + - isofs: Fix unbounded recursion when processing relocated directories + (CVE-2014-5471, CVE-2014-5472) + - kvm: iommu: fix the third parameter of kvm_iommu_put_pages + (CVE-2014-3601) + + [ Ben Hutchings ] + * HID: Enable HID_RMI as module (Closes: #754519) + * Set ABI to 1 + * [armhf,arm64] udeb: Add efi-modules + * ftrace: Enable more tracers (Closes: #563847, #758469): + - Enable FUNCTION_TRACER and DYNAMIC_FTRACE + - Enable FUNCTION_GRAPH_TRACER, FTRACE_SYSCALLS and STACK_TRACER + (except on armel/kirkwood) + * [powerpc] drm: Disable DRM_RADEON_UMS, as radeon X driver now requires KMS + * aio: fix reqs_available handling (regression in 3.14.10) + * mm: Enable FRONTSWAP, ZSWAP (except armel/{ixp4xx,orion5x}) + (Closes: #725703) + * [x86] mgag200: Enable auto-loading, but require mode-setting to be + explicitly enabled (as xserver-xorg-video-modesetting does) + * [armel] Remove obsolete mv78xx0 flavour + * virtio-scsi: Implement change_queue_depth for virtscsi targets + (Closes: #760324) + * sound/firewire: Enable SND_DICE, SND_FIREWORKS, SND_BEBOB as modules + (Closes: #756842) + * hid-sony: Enable SONY_FF (Closes: #760684) + * mtd: Enable MTD_SPI_NOR as module, since M25P80 now depends on it + * [m68k] Enable CGROUPS, required by systemd + * [armhf] Re-enable SPI_IMX as module + * [i386] comedi: Enable COMEDI_DAC02 as module, replacing COMEDI_POC + * sound: Disable SND_CS5535AUDIO on all but i386 and mips*/loongson-2f + * [mips*/loongson-2f] video: Re-add and enable sm7xxfb driver, removed + upstream in 3.15 + * mnt: Fix flag handling on remount (CVE-2014-5206, CVE-2014-5207) + - mnt: Only change user settable mount flags in remount + - mnt: Move the test for MNT_LOCK_READONLY from change_mount_flags into + do_remount + - mnt: Correct permission checks in do_remount + - mnt: Change the default remount atime from relatime to the existing value + - mnt: Add tests for unprivileged remount cases that have found to be + faulty + * [armel/kirkwood] mm: Enable HIGHMEM (Closes: #760786) + * aufs: Update to aufs3.16-20140908: + - bugfix, missing mnt_want_write in moo + - new ioctl BRINFO + - bugfix, restore the lost unlock in an error path + - allow deleting a branch who has an opened dir + - bugfix, stop passing an error code to dput() + - possible bugfix, ptr in an array + - implement fhsm (not enabled) + - si_files has all opened files + - bugfix, use id instead of index to identify a branch + - new move-down flag AUFS_MVDOWN_FHSM_LOWER + - branch attr 'fhsm' is independent from rw/ro attrib + - support for a branch ro+fhsm + - fhsm notify after fixing inode attrib + - bugfix, hfile test in br_del_file() + - bugfix, pinning in mvdown + - bugfix, instantiate-revalidate race + - possible bugfix, temporary d_inode + - fhsm and br_del, allow the root dir only + - bugfix, get a removed dentry from an inode + * MAINTAINERS: Change aufs entry to say it's not upstream + + [ Vagrant Cascadian ] + * [armmp] Enable IMX_IPUV3_CORE (closes: #756810). + + [ Aurelien Jarno ] + * [mips*] Fix FP emulation for unaligned accesses. + * Update Spanish debconf template translations (Matias A. Bellone) + (Closes: #758591). + * [mips*/loongson3] Backport Loongson 3B support from 3.17. + * [powerpc,ppc64el] Backport KVM little endian support from 3.17. + + [ maximilian attems ] + * Redisable UAS due to trouble with Seagate expansion drives + (closes: #755995, #759662), (reopen: #749014). + + [ Ian Campbell ] + * [armhf] Remove incomplete list of hardware from image description. See + https://wiki.debian.org/DebianKernel/ARMMP for details. + * [armel/kirkwood] Enable CONFIG_MTD_SPI_NOR for flash access. + + * [ppc64el] debian/patches/debian/ppc64el-disable-zImage.patch: remove patch. + The 'powerpc/boot: 64bit little endian wrapper' patch-set is in linux 3.16, + thus the default make/image-y target is OK now. + + -- Ben Hutchings Mon, 08 Sep 2014 03:17:11 +0100 + +linux (3.16-1~exp1) experimental; urgency=medium + + * New upstream release: http://kernelnewbies.org/Linux_3.16 + + [ Aurelien Jarno ] + * [x86] vfio: Enable VFIO_PCI_VGA. + * udeb: rename crc32c.ko into crc32c_generic.ko in crc-modules. + * [mips*] Fix FP emulation. + * [mips*/loongson3] Enable TRANSPARENT_HUGEPAGE. + + [ Bastian Blank ] + * [x86] Enable Xen PVH support. + * Enable more Nftables modules. + * [x86] Enable EARLY_PRINTK_EFI. + * Enable stack protector on all supported architectures. (closes: #756898) + * [powerpc64, s390x] Enable PCI hotplug. + * Enable RTL8723BE. + * Enable OPROFILE. + * [ppc64] Enable 64KiB pages. + + [ Ben Hutchings ] + * udeb: Add new sound drivers to sound-modules (thanks to Samuel Thibault) + (Closes: #756998) + * [armhf] touchscreen: Enable TOUCHSCREEN_SUN4I as module (Closes: #757086) + * [!alpha,m68k,x86] Disable USELIB, only needed by libc5 + * [arm*,ia64,ppc64el,s390*,sh4] Disable SYSFS_SYSCALL, only needed for + SVR4 compatibility + * [armel] Disable BINFMT_AOUT + * [armel] Re-enable ixp4xx flavour + * [armel] Change configuration to reduce kernel image size + - [/kirkwood] Change IPV6 to module + - [/ixp4xx,orion5x] Change IOSCHED_DEADLINE to module + - [/ixp4xx,orion5x] Disable SECURITY (i.e. Linux Security Modules, + including SELinux) + + -- Ben Hutchings Sat, 09 Aug 2014 21:58:12 +0100 + +linux-tools (3.16~rc7-1~exp1) experimental; urgency=medium + + * New upstream release candidate + + [ Ben Hutchings ] + * genorig: Include new directory for usbip UAPI header + * debian/control: Update Build-Depends for usbip switching from + libsysfs to libudev + * perf: Build with V=1 as V=2 no longer works + * perf: Change build command to avoid a rebuild during 'make install' + * linux-tools: Install traceevent plugins in + /usr/lib/traceevent_/plugins (Closes: #756429) + * linux-kbuild: Install scripts/Makefile.extrawarn + + -- Ben Hutchings Tue, 29 Jul 2014 21:11:10 +0100 + +linux (3.16~rc6-1~exp1) experimental; urgency=medium + + * New upstream rc + + [ Aurelien Jarno ] + * [mipsel/loongson3] Enable SND_HDA_INTEL. + * [mips/4kc-malta, mips/5kc-malta] Cleanup configuration file. + * [mips/sb1-bcm91250a] Cleanup configuration file. + * [mips/r4k-ip22] Cleanup configuration file. + * [mips/r5k-ip32] Cleanup configuration file. + * [mips64,mips64el] Add a 5kc-malta flavour. + + [ Ben Hutchings ] + * [x86] wireless: Enable R8192EE as module (Closes: #755310) + * net: Re-enable CGROUP_NET_PRIO as builtin + + -- maximilian attems Mon, 21 Jul 2014 21:51:45 +0200 + +linux (3.16~rc5-1~exp1) experimental; urgency=medium + + [ maximilian attems ] + * New upstream rc + + [ Ben Hutchings ] + * aufs: Update to aufs3.x-rcN-20140714: + - tiny, no msg in spinlock regeion + - minor bugfix, correct error value in link(2) + - O_TMPFILE support + - bugfix, handling an error in opening a FIFO + - propagate aufs file references to new vmas created by remap_file_pages() + - begin supporting fallocate(2) + - linux-3.16, convert iovec into iov_iter + - allow an unprivileged mount under user_ns (enabled by module parameter) + - simply handing attribute string + - add mount option for copy-up on open + - add mount option for move-up on open + - add dirperm1 mount option + - mvdown, return a subset of statfs(2) optionally + - mvdown, tell about the branch is at the bottom + + -- maximilian attems Tue, 15 Jul 2014 22:57:31 +0200 + +linux (3.15.5-1~exp1) experimental; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.15.4 + https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.15.5 + + -- maximilian attems Thu, 10 Jul 2014 16:02:29 +0200 + +linux (3.15.3-1~exp1) experimental; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.15.2 + https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.15.3 + + [ Yunqiang Su ] + * [mips,mipsel] Move common MIPS kernel config files to kernelarch-mips. + * [mips,mipsel] Clean mipsel installer by using symlinks to the mips + versions. + * [mips,mipsel] Add mips64 and mips64el support (Closes: #749688). + + -- maximilian attems Wed, 02 Jul 2014 20:30:41 +0200 + +linux (3.15.1-1~exp1) experimental; urgency=medium + + * New upstream release: http://kernelnewbies.org/Linux_3.15 + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.15.1 + + [ maximilian attems ] + * Update policy version to 3.9.5 without changes + + [ Ian Campbell ] + * [armhf] Enable HDMI on imx6qdl-wandboard, SolidRun HummingBoard and + Cubox -i. (Closes: #750406) + + [ Ben Hutchings ] + * [powerpc] Build-depend on gcc-4.8 (>= 4.8.2-1) to ensure that + JUMP_LABEL works + + -- maximilian attems Fri, 20 Jun 2014 23:13:13 +0200 + +linux (3.15~rc8-1~exp1) experimental; urgency=medium + + * New upstream release candidate + + [ Ian Campbell ] + * [armhf] Enable Broadcom IEEE802.11n embedded FullMAC WLAN driver + (Closes: #734430) + * [armhf] Backport and enable sunxi MMC driver (Closes: #749484) + + -- maximilian attems Tue, 03 Jun 2014 11:43:26 +0200 + +linux (3.15~rc7-1~exp1) experimental; urgency=medium + + * New upstream release candidate + + [ maximilian attems ] + * Enable USB_UAS in topconfig (closes: #749014) + + [ Ian Campbell ] + * [armhf] Enable SERIAL_OF_PLATFORM. + * [armhf] Enable DRM drivers DRM_IMX_* for IMX platform (Closes: #748406) + * [armhf] Enable SND_SOC_IMX_SPDIF (Closes: #748890) + + -- maximilian attems Tue, 27 May 2014 10:55:32 +0200 + +linux (3.15~rc5-1~exp1) experimental; urgency=medium + + * New upstream release candidate + + [ Ben Hutchings ] + * aufs: Update to aufs3.x-rcN-20140421 + * [rt] Disable until it is updated for 3.15 or later + + [ Aurelien Jarno ] + * [mipsel] Add a loongson-3 flavour to support Loongson 3A/3B machines. + * [mips/mipsel] Remove the sb1a-bcm91480b flavour. + + [ Ian Campbell ] + * [armel/orion5x] Disable BPF_JIT, MEMCG, USER_NS to reduce kernel + size. + * [armel/kirkwood] Enable PCI_MVEBU for PCI support when booted via Device + Tree. + + -- maximilian attems Fri, 16 May 2014 14:33:57 +0200 + +linux (3.14.15-2) unstable; urgency=medium + + [ Aurelien Jarno ] + * [mips*/4kc-malta] Remove ABI reference as previous kernels were not + really usable, and the fix changes the ABI. + + -- Ben Hutchings Sat, 09 Aug 2014 01:09:38 +0100 + +linux (3.14.15-1) unstable; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.14.14 + - Bluetooth: Ignore H5 non-link packets in non-active state + - fuse: timeout comparison fix + - tracing: instance_rmdir() leaks ftrace_event_file->filter + (regression in 3.11) + - xen/balloon: set ballooned out pages as invalid in p2m + (regression in 3.12) + - quota: missing lock in dqcache_shrink_scan() (regression in 3.12) + - shmem: fix faulting into a hole, not taking i_mutex (CVE-2014-4171) + - shmem: fix splicing from a hole while it's punched (CVE-2014-4171) + - e1000e: Fix SHRA register access for 82579 (regression in 3.12) + - ip_tunnel: fix ip_tunnel_lookup + - net: sctp: check proc_dointvec result in proc_sctp_do_auth + - 8021q: fix a potential memory leak + - net: fix UDP tunnel GSO of frag_list GRO packets + - ipv4: fix dst race in sk_dst_get() + - ipv4: irq safe sk_dst_[re]set() and ipv4_sk_update_pmtu() fix + - bnx2x: fix possible panic under memory stress + - tcp: Fix divide by zero when pushing during tcp-repair + - ipv4: icmp: Fix pMTU handling for rare case + - net: Fix NETDEV_CHANGE notifier usage causing spurious arp flush + (regression in 3.11) + - igmp: fix the problem when mc leave group + - appletalk: Fix socket referencing in skb + - netlink: Fix handling of error from netlink_dump(). + - tipc: clear 'next'-pointer of message fragments before reassembly + (regression in 3.13) + - net: sctp: fix information leaks in ulpevent layer + - bonding: fix ad_select module param check (regression in 3.14) + - net-gre-gro: Fix a bug that breaks the forwarding path + (regression in 3.14) + - perf/x86/intel: ignore CondChgd bit to avoid false NMI handling + - mwifiex: fix Tx timeout issue + - [x86] tsc: Fix cpufreq lockup (regression in 3.14) + - dm thin metadata: do not allow the data block size to change + - dm cache metadata: do not allow the data block size to change + - locking/mutex: Disable optimistic spinning on some architectures + - sched: Fix possible divide by zero in avg_atom() calculation + - aio: protect reqs_available updates from changes in interrupt handlers + (regression in 3.14.10) + - Don't trigger congestion wait on dirty-but-not-writeout pages + (regression in 3.11) + https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.14.15 + - nfs: only show Posix ACLs in listxattr if actually present + (regression in 3.14) + - block: don't assume last put of shared tags is for the host + - libata: support the ata host which implements a queue depth less than 32 + (regression in 3.14.4) + - libata: introduce ata_host->n_tags to avoid oops on SAS controllers + - blkcg: don't call into policy draining if root_blkg is already gone + - coredump: fix the setting of PF_DUMPCORE + - [hppa] Remove SA_RESTORER define + - hwmon: (smsc47m192) Fix temperature limit and vrm write operations + - fs: umount on symlink leaks mnt count (CVE-2014-5045) + - [x86] x86_32, entry: Store badsys error code in %eax + (regression in 3.14.10) + - drm/radeon: fix irq ring buffer overflow handling (regression in 3.14) + - mm: hugetlb: fix copy_hugetlb_page_range() (regression in 3.14.12) + - [x86] efi: Include a .bss section within the PE/COFF headers + - nl80211: move set_qos_map command into split state (regression in 3.14) + - platform_get_irq: Revert to platform_get_resource if of_irq_get fails + (regression in 3.14.6) + + [ Aurelien Jarno ] + * Update German debconf template translations (Holger Wansing) (Closes: + #756049). + * Update French debconf template translations (David Prévot) (Closes: + #756134). + * Rewrite postinst to not require File::stat perl module (Closes: #756207). + * [mips*] Avoid smp_processor_id() in preemptible code. + * [mips*/octeon] Fix /proc/cpuinfo issues. + * [mips,mipsel/4kc-malta] Fix bug which can cause incorrect system call + restarts (fix hang on boot). + * [mips*] Fix hugepage support on machines with R4K like TLB. + * [mips*] Prevent user from setting FCSR cause bits and cause possible + kernel oops. + * Update Japanese debconf template translations (Victory). + + [ Ben Hutchings ] + * [amd64] Reject x32 executables if x32 ABI not supported + * [amd64] Make x32 syscall support conditional on a kernel parameter + * [amd64] Enable X86_X32 (Closes: #708070) and X86_X32_DISABLED. + Use the kernel parameter "syscall.x32=y" to enable support for x32. + * [s390,s390x] 3215: fix hanging console issue (Closes: #747922) + * [armhf] Enable BRCMFMAC, BRCMFMAC_SDIO as modules (Closes: #734430) + * net: sctp: inherit auth_capable on INIT collisions (CVE-2014-5077) + + -- Ben Hutchings Thu, 07 Aug 2014 16:47:21 +0100 + +linux (3.14.13-2) unstable; urgency=medium + + [ Aurelien Jarno ] + * [mips64,mips64el] Really enable mips64 and mips64el architectures. + * [mips64,mips64el] Build udebs for 5kc-malta flavour. + * [mipsel,mips64el/loongson-3] Disable not built modules in nic-modules, + scsi-common-modules, scsi-extra-modules, scsi-modules (fixes FTBFS). + * Add scsi_transport_sas and scsi_transport_spi to scsi-core-modules udeb + as optional so that these modules do not end up in two different udebs + as dependencies. Remove them from the i386, ia64, powerpc and sparc + definition. + * [mipsel,mips64el/loongson-2e,2f] Enable CONFIG_RTC_DRV_CMOS as built-in. + * [mips*] Add few new udebs and use standard udebs configuration when + possible. + * [s390,s390x] ptrace: fix PSW mask check (CVE-2014-3534). + * [mipsel,mips64el/loongson-3] Enable PREEMPT instead of PREEMPT_VOLUNTARY + as it workarounds SMP issues. + + -- Aurelien Jarno Thu, 24 Jul 2014 21:05:08 +0200 + +linux (3.14.13-1) unstable; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.14.13 + - iio: ti_am335x_adc: Fix: Use same step id at FIFOs both ends + (regression in 3.11) + - [hppa] Do not hardcode maximum userspace stack size (regression in 3.14) + - workqueue: fix dev_set_uevent_suppress() imbalance (regression in 3.10) + - workqueue: zero cpumask of wq_numa_possible_cpumask on init + (regression in 3.10) + - i8k: Fix non-SMP operation (regression in 3.14) + - Revert "ACPI / AC: Remove AC's proc directory." (regression in 3.13) + - ACPI / resources: only reject zero length resources based at address zero + (regression in 3.14) + - ACPI / EC: Avoid race condition related to advance_transaction() + - ACPI / EC: Fix race condition in ec_transaction_completed() + - [x86] crypto: sha512_ssse3 - fix byte count to bit count conversion + - [arm64] implement TASK_SIZE_OF + - phy: core: Fix error path in phy_create() + - dm io: fix a race condition in the wake up code for sync_io + - [x86] intel_pstate: Fix setting VID (regression in 3.14.6) + - PCI: Fix unaligned access in AF transaction pending test + (regression in 3.14) + - ext4: fix unjournalled bg descriptor while initializing inode bitmap + - ext4: fix a potential deadlock in __ext4_es_shrink() + - drm/radeon: stop poisoning the GART TLB + - [x86] drm/i915: Don't clobber the GTT when it's within stolen memory + + [ Ian Campbell ] + * [armel] Remove drivers/net/phy configs which are redundant with toplevel. + * [armhf] Add MMC and NIC modules for BeagleBone Black to udebs. + (Closes: #754491) + * [arm64] Add xfs-modules udeb and add xen-netfront to nic-modules udeb. + * aufs: Fix build on arm64. + + [ Aurelien Jarno ] + * [mips,mipsel] Add a debconf note to warn users that they have to + configure the system bootloader to load initramfs. + * Update Polish debconf template translations (Łukasz Dulny). + * Update Czech debconf template translations (Michal Simunek) (Closes: + #755060). + * Update Russian debconf template translations (Yuri Kozlov) (Closes: + #755085). + * Update Portuguese debconf template translations (Américo Monteiro) + (Closes: #755100). + * Update Swedish debconf template translations (Martin Bagge) (Closes: + #755145). + * Update Slovak debconf template translation (Slavko) (Closes: #755152). + * Update Turkish debconf template translation (Mert Dirik) (Closes: + #755223). + * Update Danish debconf template translation (Joe Dalton) (Closes: + #755400). + * [mips,mipsel] Cleanup configuration files. + * [mips,mipsel] Move common MIPS kernel config files to kernelarch-mips. + * [mips,mipsel] Clean mipsel installer by using symlinks to the mips + versions. + * [mipsel] Backport Loongson 3A/3B support from 3.15 and add the + corresponding flavour. + * [mips,mipsel] Remove the sb1a-bcm91480b flavour. + * [mips,mipsel] Add mips64 and mips64el support (Closes: #749688). + * [mips/octeon] Backport from upstream PCIe2 support and interface + mode detection for Octeon. + * [mips/sb1-91250a] Backport from upstream additional build flags + to fix excessive kernel warnings. + * [mips/malta] Backport from upstream power management support for + Malta. + * [mipsel/loongson3] Add support for Loongson 3 LS3A RS780E 1-way + boards. + + [ Ben Hutchings ] + * net/l2tp: don't fall back on UDP [get|set]sockopt (CVE-2014-4943) + * Bump ABI to 2 (Closes: #754902) + * [powerpc/powerpc64] Re-enable JUMP_LABEL + * [powerpc/powerpc64,ppc64] Enable PPC_TRANSACTIONAL_MEM + * Enable DYNAMIC_DEBUG (except for armel/orion5x) (Closes: #694884) + * [rt] Update to 3.14.12-rt9 (no functional changes) + * udeb: Add sdhci-acpi to mmc-modules (Closes: #747284) + + -- Ben Hutchings Mon, 21 Jul 2014 14:02:14 +0100 + +linux (3.14.12-1) unstable; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.14.11 + - iscsi-target: Avoid rejecting incorrect ITT for Data-Out + - iscsi-target: Explicily clear login response PDU in exception path + (regression in 3.10) + - iscsi-target: fix iscsit_del_np deadlock on unload (regression in 3.13) + - Input: synaptics - fix resolution for manually provided min/max + (regression in 3.14) + - [mips] MSC: Prevent out-of-bounds writes to MIPS SC ioremap'd region + - UBIFS: fix an mmap and fsync race condition + - UBIFS: Remove incorrect assertion in shrink_tnc() + - IB/ipath: Translate legacy diagpkt into newer extended diagpkt + - IB/srp: Fix a sporadic crash triggered by cable pulling + - IB/umad: Fix error handling + - IB/umad: Fix use-after-free on close + - nfsd4: fix FREE_STATEID lockowner leak (regression in 3.14.6) + - nfsd: getattr for FATTR4_WORD0_FILES_AVAIL needs the statfs buffer + - NFS: Don't declare inode uptodate unless all attributes were checked + - nfs: Fix cache_validity check in nfs_write_pageuptodate() + - [powerpc] mm: Check paca psize is up to date for huge mappings + - [powerpc] perf: Ensure all EBB register state is cleared on fork() + - xfs: xfs_readsb needs to check for magic numbers (regression in 3.14) + - reiserfs: call truncate_setsize under tailpack mutex + - ipvs: Fix panic due to non-linear skb + - tracing: Fix syscall_*regfunc() vs copy_process() race + - ALSA: usb-audio: Fix races at disconnection and PCM closing + https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.14.12 + - [powerpc] ibmvscsi: Abort init sequence during error recovery + - [powerpc] ibmvscsi: Add memory barriers for send / receive + - virtio-scsi: avoid cancelling uninitialized work items + - scsi_error: fix invalid setting of host byte + - virtio-scsi: fix various bad behavior on aborted requests + - xhci: Use correct SLOT ID when handling a reset device command + (regression in 3.13) + - usb: chipidea: udc: delete td from req's td list at ep_dequeue + - mtd: eLBC NAND: fix subpage write support (regression in 3.10) + - mtd: nand: omap: fix BCHx ecc.correct to return detected bit-flips in + erased-page + - [x86] drm/i915: Avoid div-by-zero when pixel_multiplier is zero + (regression in 3.13) + - [x86] drm/i915: set backlight duty cycle after backlight enable for gen4 + (regression in 3.14) + - Bluetooth: Fix SSP acceptor just-works confirmation without MITM + - Bluetooth: Fix check for connection encryption + - rbd: use reference counts for image requests + - rbd: handle parent_overlap on writes correctly + - mac80211: fix a memory leak on sta rate selection table + (regression in 3.10) + - hugetlb: fix copy_hugetlb_page_range() to handle migration/hwpoisoned + entry + - [arm64] mm: Make icache synchronisation logic huge page aware + - [arm64] Bug fix in stack alignment exception + - fs/cifs: fix regression in cifs_create_mf_symlink() (regression in 3.14) + - blkcg: fix use-after-free in __blkg_release_rcu() by making + blkcg_gq refcnt an atomic_t + - ext4: Fix buffer double free in ext4_alloc_branch() + - ext4: Fix hole punching for files with indirect blocks + - [x86] KVM: preserve the high 32-bits of the PAT register + - [x86] kvm: fix wrong address when writing Hyper-V tsc page + - nfsd: fix rare symlink decoding bug + - tracing: Remove ftrace_stop/start() from reading the trace file + - md: flush writes before starting a recovery. + - mlx4_core: Fix incorrect FLAGS1 bitmap test in mlx4_QUERY_FUNC_CAP + (regression in 3.14) + - netfilter: nf_nat: fix oops on netns removal + - brcmfmac: Fix brcmf_chip_ai_coredisable not applying reset bits to + BCMA_IOCTL (regression in 3.14) + - mmc: rtsx: add R1-no-CRC mmc command type handle (regression in 3.13) + - aio: block io_destroy() until all context requests are completed + (regression in 3.11) + - audit: remove superfluous new- prefix in AUDIT_LOGIN messages + (regression in 3.14) + - mm/numa: Remove BUG_ON() in __handle_mm_fault() (regression in 3.13) + - slab: fix oops when reading /proc/slab_allocators + - sym53c8xx_2: Set DID_REQUEUE return code when aborting squeue + - mm: fix crashes from mbind() merging vmas + + [ Ben Hutchings ] + * [rt] Update to 3.14.10-rt7: + - rtmutex: Resolve conflicts with changes in 3.14.10 + - sched: Do not clear PF_NO_SETAFFINITY flag in select_fallback_rq() + - workqueue: Prevent deadlock/stall on RT + * [rt] random: Restore interrupt randomness dropped in 3.14.10-rt6 + * [s390,s390x] Ignore ABI change in lowcore structure (fixes FTBFS) + * [m68k] block: Change IOSCHED_CFQ to built-in and make it the default + I/O scheduler, consistent with other architectures + + -- Ben Hutchings Fri, 11 Jul 2014 17:56:20 +0100 + +linux (3.14.10-1) unstable; urgency=high + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.14.10 + - [s390] af_iucv: wrong mapping of sent and confirmed skbs + - Staging: rtl8188eu: overflow in update_sta_support_rate() + - USB: option: fix runtime PM handling + - hugetlb: restrict hugepage_migration_support() to x86_64 + - kthread: fix return value of kthread_create() upon SIGKILL. + - mm/memory-failure.c-failure: send right signal code to correct thread + - mm/memory-failure.c: don't let collect_procs() skip over processes for + MF_ACTION_REQUIRED + - ptrace: fix fork event messages across pid namespaces + - idr: fix overflow bug during maximum ID calculation at maximum height + - [s390] time: cast tv_nsec to u64 prior to shift in update_vsyscall + (regression in 3.13) + - [s390] lowcore: reserve 96 bytes for IRB in lowcore + - ext4: fix data integrity sync in ordered mode + - ext4: fix zeroing of page during writeback + - ext4: fix wrong assert in ext4_mb_normalize_request() + - USB: usb_wwan: fix race between write and resume + - USB: usb_wwan: fix write and suspend race + - USB: usb_wwan: fix urb leak at shutdown + - USB: sierra: fix use after free at suspend/resume + - USB: sierra: fix remote wakeup + - USB: serial: fix potential runtime pm imbalance at device remove + - media: stk1160: Avoid stack-allocated buffer for control URBs + - rtmutex: Detect changes in the pi lock chain + - rtmutex: Handle deadlock detection smarter + - rtmutex: Plug slow unlock race + - media: uvcvideo: Fix clock param realtime setting + - media: saa7134: fix regression with tvtime (regression in 3.14) + - Bluetooth: Fix L2CAP deadlock + - Target/iser: Wait for proper cleanup before unloading + - target: Set CMD_T_ACTIVE bit for Task Management Requests + - target: Use complete_all for se_cmd->t_transport_stop_comp + - iscsi-target: Fix ABORT_TASK + connection reset iscsi_queue_req memory + leak + - target: Explicitly clear ramdisk_mcp backend pages + - [x86] x86-32, espfix: Remove filter for espfix32 due to race + - aio: fix aio request leak when events are reaped by userspace + - aio: fix kernel memory disclosure in io_getevents() introduced in v3.10 + (CVE-2014-0206) + - CIFS: Fix memory leaks in SMB2_open + - Btrfs: fix double free in find_lock_delalloc_range + - Btrfs: make sure there are not any read requests before stopping workers + - Btrfs: mark mapping with error flag to report errors to userspace + - Btrfs: set right total device count for seeding support + - fs: btrfs: volumes.c: Fix for possible null pointer dereference + - Btrfs: don't check nodes for extent items + - Btrfs: fix scrub_print_warning to handle skinny metadata extents + - btrfs: fix use of uninit "ret" in end_extent_writepage() + - btrfs: allocate raid type kobjects dynamically + - lz4: fix another possible overrun + - epoll: fix use-after-free in eventpoll_release_file + - builddeb: use $OBJCOPY variable instead of objcopy (regression in 3.12) + - [i386] efi-pstore: Fix an overflow on 32-bit builds + + [ Ben Hutchings ] + * [amd64] ptrace,x86: force IRET path after a ptrace_stop() (CVE-2014-4699) + * shmem: fix faulting into a hole while it's punched (CVE-2014-4171) + + -- Ben Hutchings Mon, 07 Jul 2014 09:54:10 +0100 + +linux (3.14.9-1) unstable; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.14.8 + - Target/iscsi,iser: Avoid accepting transport connections during stop + stage + - iser-target: Fix multi network portal shutdown regression + https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.14.9 + - target: Fix NULL pointer dereference for XCOPY in target_put_sess_cmd + (regression in 3.14.6) + - iscsi-target: Reject mutual authentication with reflected CHAP_C + - ima: audit log files opened with O_DIRECT flag + - ima: introduce ima_kernel_read() (regression in 3.10) + - evm: prohibit userspace writing 'security.evm' HMAC value + - net: Use netlink_ns_capable to verify the permisions of netlink messages + (CVE-2014-0181) + - netlink: Only check file credentials for implicit destinations + - qlcnic: info leak in qlcnic_dcb_peer_app_info() + - ipv6: Fix regression caused by efe4208 in udp_v6_mcast_next() + (regression in 3.13) + - netlink: rate-limit leftover bytes warning and print process name + - bridge: Prevent insertion of FDB entry with disallowed vlan + - net: tunnels - enable module autoloading + - [sparc] net: filter: fix typo in sparc BPF JIT + - sfc: PIO:Restrict to 64bit arch and use 64-bit writes. + (regression in 3.13) + - ipv4: fix a race in ip4_datagram_release_cb() + - sctp: Fix sk_ack_backlog wrap-around problem + - udp: ipv4: do not waste time in __udp4_lib_mcast_demux_lookup + (regression in 3.13) + - USB: cdc-acm: Fix various bugs in power management + - USB: cdc-acm: fix I/O after failed open + - [x86] hv: use correct order when freeing monitor_pages + - ASoC: dapm: Make sure to always update the DAPM graph in _put_volsw() + (regression in 3.12) + - lzo: properly check for overruns (CVE-2014-4608) + - lz4: ensure length does not wrap (CVE-2014-4608) + - ALSA: compress: Cancel the optimization of compiler and fix the size of + struct for all platform. + - ALSA: control: Protect user controls against concurrent access + (CVE-2014-4652) + - ALSA: control: Fix replacing user controls (CVE-2014-4654, CVE-2014-4655) + - ALSA: control: Don't access controls outside of protected regions + (CVE-2014-4653) + - ALSA: control: Make sure that id->index does not overflow; + Handle numid overflow (CVE-2014-4656) + + [ Ben Hutchings ] + * aufs: Update to aufs3.14-20140616: + - tiny, no msg in spinlock regeion + - minor bugfix, correct error value in link(2) + - O_TMPFILE support + - bugfix, handling an error in opening a FIFO + - propagate aufs file references to new vmas created by remap_file_pages() + * linux-image: Make initramfs support unconditional + * [x86] x86_32, entry: Do syscall exit work on badsys (CVE-2014-4508) + * [rt] Fix latency histogram after "hrtimer: Set expiry time before + switch_hrtimer_base()" in 3.14.6 + + [ Aurelien Jarno ] + * [arm64] Enable COMPAT to support 32-bit binaries. + * [mips,mipsel] Enable initramfs for all flavours, but keep the disk + related drivers built-in for now. + + -- Ben Hutchings Mon, 30 Jun 2014 13:57:11 +0100 + +linux (3.14.7-1) unstable; urgency=medium + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.14.6 + - [mipsel] loongson2_cpufreq: Fix CPU clock rate setting + (regression in 3.14) + - rtmutex: Fix deadlock detector for real + - kernfs: add back missing error check in kernfs_fop_mmap() + (regression in 3.14) + - coredump: fix va_list corruption (regression in 3.11) + - mm: make fixup_user_fault() check the vma access rights too + - serial: 8250: Fix thread unsafe __dma_tx_complete function + - 8250_core: Fix unwanted TX chars write + - iwlwifi: 7000: bump API to 9 + - timer: Prevent overflow in apply_slack + - cfg80211: free sme on connection failures (regression in 3.11) + - cfg80211: add cfg80211_sched_scan_stopped_rtnl (regression in 3.14) + - mac80211: fix nested rtnl locking on ieee80211_reconfig + (regression in 3.14) + - mm, thp: close race between mremap() and split_huge_page() + - [x86] mm, hugetlb: Add missing TLB page invalidation for hugetlb_cow() + - hwpoison, hugetlb: lock_page/unlock_page does not match for handling a + free hugepage + - iwlwifi: mvm: delay enabling smart FIFO until after beacon RX + (regression in 3.14) + - aio: fix potential leak in aio_run_iocb(). + - Revert "hwmon: (coretemp) Refine TjMax detection" + - hrtimer: Prevent remote enqueue of leftmost timers + - hrtimer: Set expiry time before switch_hrtimer_base() + - dm verity: fix biovecs hash calculation regression (regression in 3.14) + - dm cache: fix writethrough mode quiescing in cache_map + (regression in 3.13) + - md/raid10: call wait_barrier() for each request submitted. + (regression in 3.14) + - PNP / ACPI: Do not return errors if _DIS or _SRS are not present + (regression in 3.14) + - ACPI / EC: Process rather than discard events in acpi_ec_clear + (regression in 3.13.7, 3.14) + - irqchip: armada-370-xp: fix invalid cast of signed value into unsigned + variable (regression in 3.13) + - irqchip: armada-370-xp: implement the ->check_device() msi_chip + operation (regression in 3.13) + - irqchip: armada-370-xp: Fix releasing of MSIs (regression in 3.13) + - [x86] drm/i915: Allow user modes to exceed DVI 165MHz limit + (regression in 3.14) + - [x86] drm/i915: Don't check gmch state on inherited configs + (regression in 3.13?) + - [x86] drm/i915: Don't WARN nor handle unexpected hpd interrupts on gmch + platforms (regression in 3.13) + - [x86] drm/radeon: fix runpm handling on APUs (v4) (regression in 3.13) + - drm/radeon: disable mclk dpm on R7 260X (regression in 3.14) + - drm/radeon: add support for newer mc ucode on SI (v2) + - drm/radeon: add support for newer mc ucode on CI (v2) + - drm/radeon: re-enable mclk dpm on R7 260X asics + - drm/radeon/uvd: use lower clocks on old UVD to boot v2 + (regression in 3.13) + - drm/radeon: check buffer relocation offset + - USB: Nokia 305 should be treated as unusual dev + - USB: Nokia 5300 should be treated as unusual dev + - Revert "Bluetooth: Enable autosuspend for Intel Bluetooth device" + (regression in 3.14) + - posix_acl: handle NULL ACL in posix_acl_equiv_mode + - fs/affs/super.c: bugfix / double free (regression in 3.14) + - [armel/orion5x] fix target ID for crypto SRAM window + (regression in 3.12) + - [armel/kirkwood]: dts: fix mislocated pcie-controller nodes + (regression in 3.12) + - [armhf/armmp-lpae] 8012/1: kdump: Avoid overflow when converting pfn to + physaddr + - drm/nouveau: fix another lock unbalance in nouveau_crtc_page_flip + (regression in 3.11) + - drm/i915/vlv: reset VLV media force wake request register + (regression in 3.14?) + - i40e: potential array underflow in i40e_vc_process_vf_msg() + - igb: Fix Null-pointer dereference in igb_reset_q_vector + (regression in 3.14) + - igb: Unset IGB_FLAG_HAS_MSIX-flag when falling back to msi-only + (regression in 3.14) + - leds: leds-pwm: properly clean up after probe failure + - device_cgroup: rework device access check and exception checking + - device_cgroup: check if exception removal is allowed + - media: media-device: fix infoleak in ioctl media_enum_entities() + (CVE-2014-1739) + - Input: Add INPUT_PROP_TOPBUTTONPAD device property + - Input: synaptics - report INPUT_PROP_TOPBUTTONPAD property + - e1000e: Fix no connectivity when driver loaded with cable out + (regression in 3.12) + - autofs: fix lockref lookup + - vfs: fix races between __d_instantiate() and checks of dentry flags + - ALSA: hda - hdmi: Set converter channel count even without sink + (regression in 3.13) + - NFSd: Move default initialisers from create_client() to alloc_client() + - NFSd: call rpc_destroy_wait_queue() from free_client() + - NFSD: Call ->set_acl with a NULL ACL structure if no entries + - nfsd4: remove lockowner when removing lock stateid + - workqueue: fix bugs in wq_update_unbound_numa() failure path + - workqueue: fix a possible race condition between rescuer and pwq-release + - [arm] mvebu: mvebu-soc-id: add missing clk_put() call + (regression in 3.14) + - [arm] mvebu: mvebu-soc-id: keep clock enabled if PCIe unit is enabled + (regression in 3.14) + - ASoC: dapm: Skip CODEC<->CODEC links in connect_dai_link_widgets() + (regression in 3.14) + - [hppa] ratelimit userspace segfault printing + - [amd64] modify_ldt: Make support for 16-bit segments a runtime option + - sysfs: make sure read buffer is zeroed (possible regression in 3.13) + - Target/iser: Fix wrong connection requests list addition + - Target/iser: Fix iscsit_accept_np and rdma_cm racy flow + - iscsi-target: Change BUG_ON to REJECT in iscsit_process_nop_out + (regression in 3.11) + - target: fix memory leak on XCOPY + - [x86] drm/i915: Disable self-refresh for untiled fbs on i915gm + (regression in 3.14) + - [x86] drm/i915: move power domain init earlier during system resume + (regression in 3.14?) + - [x86] drm/i915: Fix unsafe loop iteration over vma whilst unbinding them + (regression in 3.12) + - iwlwifi: mvm: BT Coex - fix Look Up Table (regression in 3.13) + - PCI: Wrong register used to check pending traffic (regression in 3.14) + - dm crypt: fix cpu hotplug crash by removing per-cpu structure + - dm thin: allow metadata commit if pool is in PM_OUT_OF_DATA_SPACE mode + (regression in 3.14) + - dm thin: add timeout to stop out-of-data-space mode holding IO forever + - dmaengine: fix dmaengine_unmap failure + - dma: mv_xor: Flush descriptors before activating a channel + - tcm_fc: Fix free-after-use regression in ft_free_cmd + (regression in 3.13) + - ACPICA: Tables: Restore old behavor to favor 32-bit FADT addresses. + (regression in 3.14) + - ACPI: Revert "ACPI: Remove CONFIG_ACPI_PROCFS_POWER and cm_sbsc.c" + (regression in 3.13) + - ACPI: Revert "ACPI / Battery: Remove battery's proc directory" + (regression in 3.13) + - [x86] ACPI / video: Add use_native_backlight quirks for more systems + - ACPI: Revert "ACPI / AC: convert ACPI ac driver to platform bus" + (regression in 3.13) + - [x86] ACPI / TPM: Fix resume regression on Chromebooks + (regression in 3.14) + - i2c: s3c2410: resume race fix + - [x86] intel_pstate: Set turbo VID for BayTrail + - [s390] crypto: fix aes,des ctr mode concurrency finding. + - clk: Fix double free due to devm_clk_register() + - clk: Fix slab corruption in clk_unregister() + - [powerpc] powernv: Reset root port in firmware (regression in 3.14) + - [powerpc] irq work racing with timer interrupt can result in timer + interrupt hang (regression in 3.14) + - [powerpc] kexec: Fix "Processor X is stuck" issue during kexec from ST + mode (regression in 3.13) + - spi: core: Ignore unsupported Dual/Quad Transfer Mode bits + (regression in 3.12) + - libceph: fix corruption when using page_count 0 page in rbd + - media: V4L2: ov7670: fix a wrong index, potentially Oopsing the kernel + from user-space + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.14.7 + - perf: Limit perf_event_attr::sample_period to 63 bits + - perf: Fix race in removing an event + - SCSI: scsi_transport_sas: move bsg destructor into sas_rphy_remove + (regression in 3.13) + - [arm] 8051/1: put_user: fix possible data corruption in put_user + - [arm] 8064/1: fix v7-M signal return (regression in 3.11) + - cpufreq: remove race while accessing cur_policy + - firewire: revert to 4 GB RDMA, fix protocols using Memory Space + (regression in 3.14) + - [mips] Fix typo when reporting cache and ftlb errors for ImgTec cores + (regression in 3.14) + - dm cache: always split discards on cache block boundaries + - virtio_blk: fix race between start and stop queue + - sched/deadline: Restrict user params max value to 2^63 ns + - sched/dl: Fix race in dl_task_timer() + - drm/radeon: avoid crash if VM command submission isn't available + - [x86] drm/i915: Only copy back the modified fields to userspace from + execbuffer + - drm/radeon/dpm: resume fixes for some systems (regression in 3.14) + - libata: Blacklist queued trim for Crucial M500 (regression in 3.14.4) + - md: always set MD_RECOVERY_INTR when aborting a reshape or other + "resync". + - md: always set MD_RECOVERY_INTR when interrupting a reshape thread. + (regression in 3.12.9, 3.13) + - xhci: delete endpoints from bandwidth list before freeing whole device + - staging: comedi: ni_daq_700: add mux settling delay + - staging: r8192e_pci: fix htons error (regression in 3.14) + - ALSA: hda/analog - Fix silent output on ASUS A8JN (regression in 3.12) + - USB: io_ti: fix firmware download on big-endian machines (part 2) + - usb: pci-quirks: Prevent Sony VAIO t-series from switching usb ports + (regression in 3.12) + - percpu-refcount: fix usage of this_cpu_ops + - [x86] intel_pstate: Remove C0 tracking (regression in 3.14) + - [x86] intel_pstate: Correct rounding in busy calculation + (regression in 3.14) + - [x86] intel_pstate: add sample time scaling + - [x86] intel_pstate: Improve initial busy calculation + - mm: add !pte_present() check on existing hugetlb_entry callbacks + (CVE-2014-3940) + - mm: rmap: fix use-after-free in __put_anon_vma + - iser-target: Add missing target_put_sess_cmd for ImmedateData failure + - iscsi-target: Fix wrong buffer / buffer overrun in + iscsi_change_param_value() + - target: Fix alua_access_state attribute OOPs for un-configured devices + - netfilter: Fix potential use after free in ip6_route_me_harder() + - netfilter: nfnetlink: Fix use after free when it fails to process batch + - [x86] iommu/vt-d: Fix missing IOTLB flush in intel_iommu_unmap() + + [ Ian Campbell ] + * [armhf] Enable VIRTIO_BALLOON and VIRTIO_PCI (Closes: #750742) + * [arm64] Update modules included in installer udebs. + * Include virtio_mmio in virtio-modules udeb when available. + + [ Aurelien Jarno ] + * topconfig: Enable modular HW_RANDOM. + * [kernelarch-powerpc] Remove HW_RANDOM. + * [kernelarch-x86] Remove HW_RANDOM. + * [mips/4kc-malta] Remove HW_RANDOM. + * [mips/5kc-malta] Remove HW_RANDOM. + * [mips/octeon] Remove HW_RANDOM. + * [arm64] Enable modular RTC_DRV_PL031. + + [ Ben Hutchings ] + * [ppc64el] Add kernel image, thanks to Mauricio Faria de Oliveira: + - Split common/big-endian powerpc64 options + - Add little-endian powerpc64 options + - Temporarily disable zImage + - powerpc/powernv: Add calls to support little endian host + - Add 'ppc64le' (uname output) to bug/include-model script + - udeb: Add packages based on ppc64 configuration + * netfilter: ipv4: defrag: set local_df flag on defragmented skb + (regression in 3.14.5) + * [mips] seccomp: Check system calls whenever seccomp is enabled, + even if audit and trace are disabled (Closes: #751417) + * auditsc: audit_krule mask accesses need bounds checking (CVE-2014-3917) + * fs,userns: Change inode_capable to capable_wrt_inode_uidgid + (CVE-2014-4014) + * SCSI: Fix spurious request sense in error handling (regression in 3.14) + * PCI/MSI: Fix memory leak in free_msi_irqs() (regression in 3.14) + * [rt] hrtimer: Disable MISSED_TIMER_OFFSETS_HIST as it will currently + result in a panic + + -- Ben Hutchings Mon, 16 Jun 2014 09:51:49 +0100 + +linux (3.14.5-1) unstable; urgency=high + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.14.5 + - SCSI: dual scan thread bug fix + - SCSI: megaraid: missing bounds check in mimd_to_kioc() + - [x86] KVM: remove WARN_ON from get_kernel_ns() + - audit: convert PPIDs to the inital PID namespace. + - netfilter: nf_tables: fix nft_cmp_fast failure on big endian for size < 4 + - netfilter: nf_conntrack: reserve two bytes for nf_ct_ext->len + (Closes: #741667) + - netfilter: Can't fail and free after table replacement + - [i386] x86,preempt: Fix preemption for i386 + - rbd: fix error paths in rbd_img_request_fill() + - [x86] drm/i915: restore QUIRK_NO_PCH_PWM_ENABLE (regression in 3.14) + - tick-sched: Don't call update_wall_time() when delta is lesser than + tick_period (regression in 3.14) + - tick-sched: Check tick_nohz_enabled in tick_nohz_switch_to_nohz() + (regression in 3.13) + - [hppa] change value of SHMLBA from 0x00400000 to PAGE_SIZE + - [hppa] fix epoll_pwait syscall on compat kernel + - [hppa] remove _STK_LIM_MAX override + - vfs: don't bother with {get,put}_write_access() on non-regular files + - cifs: Wait for writebacks to complete before attempting write. + - xen/spinlock: Don't enable them unconditionally. (regression in 3.12) + - thp: close race between split and zap huge pages (regression in 3.13) + - mm/hugetlb.c: add cond_resched_lock() in return_unused_surplus_pages() + - mm: use paravirt friendly ops for NUMA hinting ptes + - USB: io_ti: fix firmware download on big-endian machines + - fs: Don't return 0 from get_anon_bdev (regression in 3.14) + - [x86] drm/vmwgfx: Make sure user-space can't DMA across buffer object + boundaries v2 + - [x86] drm/i915: Do not dereference pointers from ring buffer in evict + event (regression in 3.13) + - net: core: don't account for udp header size when computing seglen + (regression in 3.14) + - bridge: Fix double free and memory leak around br_allowed_ingress + - filter: prevent nla extensions to peek beyond the end of the message + (CVE-2014-3144, CVE-2014-3145) + - Revert "net: sctp: Fix a_rwnd/rwnd management to reflect real state of + the receiver's buffer" (regression in 3.14) + - ip6_gre: don't allow to remove the fb_tunnel_dev + - net: sctp: cache auth_enable per endpoint + - net: Fix ns_capable check in sock_diag_put_filterinfo + - rtnetlink: Warn when interface's information won't fit in our packet + - rtnetlink: Only supply IFLA_VF_PORTS information when RTEXT_FILTER_VF + is set + - tcp_cubic: fix the range of delayed_ack + - net: cdc_ncm: fix buffer overflow (regression in 3.13) + - ip_tunnel: Set network header properly for IP_ECN_decapsulate() + (regression in 3.11) + - ipv4: ip_tunnels: disable cache for nbma gre tunnels (regression in 3.14) + - net: cdc_mbim: __vlan_find_dev_deep need rcu_read_lock + (regression in 3.13) + - net: ipv4: ip_forward: fix inverted local_df test (regression in 3.14) + - net: ipv6: send pkttoobig immediately if orig frag size > mtu + (regression in 3.14) + - ip6_tunnel: fix potential NULL pointer dereference + - neigh: set nud_state to NUD_INCOMPLETE when probing router reachability + (regression in 3.14) + - batman-adv: fix neigh_ifinfo imbalance (regression in 3.14) + - batman-adv: fix neigh reference imbalance (regression in 3.14) + - batman-adv: always run purge_orig_neighbors (regression in 3.14) + - batman-adv: fix removing neigh_ifinfo (regression in 3.14) + - [s390,x86] net: filter: fix JIT address randomization + - net: avoid dependency of net_get_random_once on nop patching + (regression in 3.13) + - ipv6: fix calculation of option len in ip6_append_data + (regression in 3.13) + - rtnetlink: wait for unregistering devices in rtnl_link_unregister() + - bonding: fix out of range parameters for bond_intmax_tbl + (regression in 3.14) + - net: gro: make sure skb->cb[] initial content has not to be zero + (regression in 3.13) + - batman-adv: fix indirect hard_iface NULL dereference (regression in 3.14) + - batman-adv: fix reference counting imbalance while sending fragment + (regression in 3.14) + - batman-adv: increase orig refcount when storing ref in gw_node + - batman-adv: fix local TT check for outgoing arp requests in DAT + (regression in 3.13) + - net_sched: fix an oops in tcindex filter (regression in 3.14) + - ipv6: gro: fix CHECKSUM_COMPLETE support (regression in 3.14) + - ipv4: initialise the itag variable in __mkroute_input + - net-gro: reset skb->truesize in napi_reuse_skb() + + [ Ben Hutchings ] + * [x86] ACPICA: Tables: Fix invalid pointer accesses in + acpi_tb_parse_root_table(). (Closes: #748574) + * net: Revert lockdep changes in 3.14.5 to avoid an ABI change + * futex: Add another early deadlock detection check + * futex: Prevent attaching to kernel threads + * futex: Forbid uaddr == uaddr2 in futex_requeue(..., requeue_pi=1) + (CVE-2014-3153) + * futex: Validate atomic acquisition in futex_lock_pi_atomic() + * futex: Always cleanup owner tid in unlock_pi + * futex: Make lookup_pi_state more robust + + [ Ian Campbell ] + * [arm64] Initial kernel configuration and packaging (Closes: #745349). + * [armhf] Add virtio-modules udeb. + + [ Aurelien Jarno ] + * [mips,mipsel] Fix branch emulation of branch likely instructions. + + -- Ben Hutchings Thu, 05 Jun 2014 13:49:15 +0100 + +linux (3.14.4-1) unstable; urgency=high + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.14.3 + - ASoC: pcm: Drop incorrect double/extra frees + - [s390] KVM: Optimize ucontrol path (regression in 3.11) + - [s390] bitops,atomic: add missing memory barriers + - [s390] fix control register update (regression in 3.14) + - mei: me: do not load the driver if the FW doesn't support MEI interface + - staging: comedi: usbdux: bug fix for accessing 'ao_chanlist' in private + data + - [x86] AVX-512: AVX-512 Feature Detection + - [x86] AVX-512: Enable AVX-512 States Context Switch + - [x86] ftrace: One more missing sync after fixup of function modification + failure + - [amd64] modify_ldt: Ban 16-bit segments on 64-bit kernels + - [armhf] PCI: imx6: Wait for retraining (regression in 3.14) + - [arm] PCI: mvebu: Fix potential issue in range parsing + (regression in 3.12) + - NFSv4: Fix a use-after-free problem in open() + - nfsd: revert v2 half of "nfsd: don't return high mode bits" + (regression in 3.14) + - nfsd4: buffer-length check for SUPPATTR_EXCLCREAT + - nfsd4: fix test_stateid error reply encoding + - nfsd: notify_change needs elevated write count + - nfsd: check passed socket's net matches NFSd superblock's one + - nfsd4: fix memory leak in nfsd4_encode_fattr() + - nfsd4: fix setclientid encode size + - NFSD: Traverse unconfirmed client through hash-table + - IB/ipath: Fix potential buffer overrun in sending diag packet routine + - IB/nes: Return an error on ib_copy_from_udata() failure instead of NULL + - IB/mthca: Return an error on ib_copy_to_udata() failure + - IB/ehca: Returns an error on ib_copy_to_udata() failure + - IB/core: Don't resolve passive side RoCE L2 address in CMA REQ handler + (regression in 3.14) + - ib_srpt: Use correct ib_sg_dma primitives + - SCSI: arcmsr: upper 32 of dma address lost + - iscsi-target: Fix ERL=2 ASYNC_EVENT connection pointer bug + - target/iblock: Fix double bioset_integrity_free bug + - target/tcm_fc: Fix use-after-free of ft_tpg + - [x86] efi: Correct EFI boot stub use of code32_start + - efi: Pass correct file handle to efi_file_{read,close} + - reiserfs: fix race in readdir + - media: v4l2-dv-timings: add module name, description, license + - media: em28xx-audio: fix user counting in snd_em28xx_capture_open() + - [armhf] usb: musb: fix PHY power on/off (regression in 3.14) + - mtip32xx: Unmap the DMA segments before completing the IO request + - mtip32xx: mtip_async_complete() bug fixes + - iser-target: Match FRMR descriptors to available session tags + - iser-target: Add missing se_cmd put for WRITE_PENDING in tx_comp_err + - [sh] fix format string bug in stack tracer + - mm: page_alloc: spill to remote nodes before waking kswapd + (regression in 3.12/3.13) + - mm: try_to_unmap_cluster() should lock_page() before mlocking + (CVE-2014-3122) (Closes: #747326) + - xattr: guard against simultaneous glibc header inclusion + - ocfs2: do not put bh when buffer_uptodate failed + - ocfs2: fix panic on kfree(xattr->name) + - vfs: smarter propagate_mnt() + - block: Fix for_each_bvec() + - ext4: FIBMAP ioctl causes BUG_ON due to handle EXT_MAX_BLOCKS + - ext4: note the error in ext4_end_bio() + - ext4: move ext4_update_i_disksize() into mpage_map_and_submit_extent() + - ext4: use i_size_read in ext4_unaligned_aio() + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.14.4 + - tty: Fix lockless tty buffer race + - n_tty: Fix n_tty_write crash when echoing in raw mode (CVE-2014-0196) + (Closes: #747166) + - floppy: ignore kernel-only members in FDRAWCMD ioctl input (CVE-2014-1737) + - floppy: don't write kernel-only members to FDRAWCMD ioctl output + (CVE-2014-1738) + - KVM: async_pf: mm->mm_users can not pin apf->mm + - KVM: ioapic: fix assignment of ioapic->rtc_status.pending_eoi + (CVE-2014-0155) + - [powerpc] KVM: Book3S HV: Fix KVM hang with CONFIG_KVM_XICS=n + (regression in 3.14) + - [mips] Hibernate: Flush TLB entries in swsusp_arch_resume() + - [powerpc] Fix Oops in rtas_stop_self() (regression in 3.14) + - [s390] bpf,jit: initialize A register if 1st insn is BPF_S_LDX_B_MSH + - SUNRPC: Ensure that call_connect times out correctly (regression in 3.13) + - SUNRPC: Ensure call_connect_status() deals correctly with SOFTCONN tasks + (regression in 3.13) + - Revert "net: mvneta: fix usage as a module on RGMII configurations" + (regression in 3.14) + - iwlwifi: dvm: take mutex when sending SYNC BT config command + - mac80211: fix potential use-after-free + - mac80211: fix WPA with VLAN on AP side with ps-sta again + - locks: allow __break_lease to sleep even when break_time is 0 + - rtlwifi: rtl8192se: Fix regression due to commit 1bf4bbb + (regression in 3.13) + - dm cache: prevent corruption caused by discard_block_size > + cache_block_size + - dm transaction manager: fix corruption due to non-atomic transaction + commit + - dm: take care to copy the space map roots before locking the superblock + - dm thin: fix dangling bio in process_deferred_bios error path + - aio: v4 ensure access to ctx->ring_pages is correctly serialised for + migration + - cpufreq: loongson2_cpufreq: don't declare local variable as static + (regression in 3.14) + + [ Ben Hutchings ] + * [or1k] Build a linux-libc-dev package (Closes: #746309) + * net: Start with correct mac_len in skb_network_protocol (Closes: #746453) + * [x86] ACPI/Processor: Fix failure of loading acpi-cpufreq driver + (Closes: #746448) + * [armhf] ARM: sun4i: dt: Add bindings for USB clocks (fixes FTBFS, + Closes: #746420) + * [x86] udeb: Add hyperv-keyboard to hyperv-modules + * drm: Enable auto-loading of ast, udl + * [ppc64el] Build a linux-libc-dev package (Closes: #747367) + * net: ipv4: current group_info should be put after using. (CVE-2014-2851) + * filter: prevent nla extensions to peek beyond the end of the message + (CVE-2014-3144, CVE-2014-3145) + * [powerpc,ppc64] Add versioned build-dependency on gcc-4.8, as compiler + changes have resulted in a different kernel module ABI + - [powerpc] Bump ABI to 1a as 3.14.2-1 was built with an older compiler + * [armhf] Enable IR_GPIO_CIR as module (Closes: #747762) + * [hppa/parisc64-smp] ipmi: Enable IPMI_HANDLER, IPMI_DEVICE_INTERFACE, + IPMI_SI, IPMI_WATCHDOG, IPMI_POWEROFF as modules (Closes: #747482) + * [armhf] Enable various drivers to support BeagleBone Black + (Closes: #747364) + * [hppa] udeb: Add xfs-modules (Closes: #746506) + * udeb: Add mtip32xx, nvme to sata-modules + * [rt] Update to 3.14.3-rt5: + - tracing: use migrate_disable() to prevent beeing pushed off the cpu + - rwsem-rt: Do not allow readers to nest + - Revert "migrate_disable pushd down in atomic_dec_and_spin_lock" + - rwlock: disable migration before taking a lock + - timer: do not spin_trylock() on UP + - stomp-machine: Fix wait for completion + - stomp-machine: create lg_global_trylock_relax() primitive + - stomp-machine: use lg_global_trylock_relax() to dead with + stop_cpus_lock lglock + - blk-mq: revert raw locks, post pone notifier to POST_DEAD + - use EXPORT_SYMBOL() on __rt_mutex_init() and rt_down_write_nested_lock() + - netconsole: Allow use with PREEMPT_RT_FULL + * aufs: Update to aufs3.14-20140512: + - bugfix, stop calling security_mmap_file() again + + -- Ben Hutchings Wed, 14 May 2014 00:46:05 +0100 + +linux-tools (3.14-1) unstable; urgency=medium + + * New upstream release + + -- Ben Hutchings Mon, 28 Apr 2014 17:46:24 +0100 + +linux (3.14.2-1) unstable; urgency=medium + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.14.2 + + [ Ian Campbell ] + * [armhf] Drop suffix from kernel udeb. + * [armhf] Backport sunxi AHCI and GMAC drivers from v3.15-rc1 + + [ Ben Hutchings ] + * [x86] Enable X86_INTEL_LPSS (Closes: #745331) + * [x86] thinkpad_acpi: Add support for X1 Carbon 2nd generation's adaptive + keyboard (Closes: #745252) + * [armhf] Enable more Allwinner/sunxi drivers (Closes: #745972): + - spi: sunxi: Add Allwinner A31 SPI controller driver + - ARM: dt: sun4i: Add A10 SPI controller nodes + - PHY: sunxi: Add driver for sunxi usb phy + - ARM: sun4i: dt: Add USB host bindings + - Enable PHY_SUN4I_USB, RTC_DRV_SUNXI, SPI_SUN6I, USB_EHCI_HCD_PLATFORM, + USB_OHCI_HCD_PLATFORM and CONFIG_SUNXI_WATCHDOG as modules + * Set ABI to 1 + * Staging: speakup: Move pasting into a work item and update it to match vt + (Closes: #735202, #744015) + + -- Ben Hutchings Mon, 28 Apr 2014 17:12:03 +0100 + +linux (3.14.1-1~exp1) experimental; urgency=medium + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.14.1 + + [ Ben Hutchings ] + * [armel] Disable ixp4xx flavour (fixes FTBFS) + * [armhf] Enable SECURITY_APPARMOR, SECURITY_TOMOYO + * [rt] Update to 3.14.0-rt1 and reenable + + -- Ben Hutchings Thu, 17 Apr 2014 13:17:18 +0100 + +linux (3.14-1~exp1) experimental; urgency=medium + + * New upstream release: http://kernelnewbies.org/Linux_3.14 + + [ Ben Hutchings ] + * nftables: Enable NF_TABLES_BRIDGE, NF_TABLES_IPV4, NFT_CHAIN_ROUTE_IPV4, + NFT_CHAIN_NAT_IPV4, NF_TABLES_ARP, NF_TABLES_IPV6, NFT_CHAIN_ROUTE_IPV6, + NFT_CHAIN_NAT_IPV6 as modules (Closes: #742763) + * udeb: Update sound-modules, thanks to Samuel Thibault (Closes: #743319) + * aufs: Update to aufs3.14-20140407 (no functional changes) + * mtd: Enable MTD_NAND_ECC_BCH (Closes: #743933) + * drm: Enable DRM_LOAD_EDID_FIRMWARE (Closes: #728275) + + -- Ben Hutchings Wed, 09 Apr 2014 09:53:05 +0100 + +linux-tools (3.14~rc7-1~exp1) experimental; urgency=medium + + * New upstream release candidate + + -- Ben Hutchings Mon, 17 Mar 2014 19:31:14 +0000 + +linux (3.14~rc7-1~exp1) experimental; urgency=medium + + * New upstream release candidate + + [ Ben Hutchings ] + * bfa,bna: Replace large udelay() with mdelay() (fixes FTBFS on arm) + (Closes: #741142) + * aufs: Update to aufs3.x-rcN-20140310 + - bugfix, Fix unmount to properly free anonymous block devices + + -- Ben Hutchings Mon, 17 Mar 2014 13:30:03 +0000 + +linux (3.14~rc5-1~exp1) experimental; urgency=medium + + * New upstream release candidate + + [ Ben Hutchings ] + * mm: Enable ZSMALLOC as built-in, ZRAM as module (except for + armel/{ixp4xx,orion5x}) (Closes: #676779) + * iio,HID: Enable HID_SENSOR_INCLINOMETER_3D as module + * media/radio: Enable USB_RAREMONO as module + * i40e: Enable I40E_VXLAN, I40E_DCB + * net: Enable I40EVF, USB_NET_SR9800 as modules + * serial: Enable USB_SERIAL_MXUPORT as module + * ceph: Enable CEPH_FS_POSIX_ACL + * netfilter: Enable NF_TABLES_INET, NFT_QUEUE, NFT_REJECT, + NETFILTER_XT_MATCH_CGROUP, NETFILTER_XT_MATCH_IPCOMP as modules + * net/sched: Enable NET_SCH_HHF, NET_SCH_PIE as modules + * [x86] crypto: Enable CRYPTO_DEV_CCP, CRYPTO_DEV_CCP_DD, + CRYPTO_DEV_CCP_CRYPTO as modules + * [x86] platform: Enable CHROMEOS_PSTORE, HP_WIRELESS as modules + * [x86] comedi: Enable COMEDI_MF6X4 as modules + * [x86] staging: Enable R8821AE, RTS5208 as modules + * [x86] thermal: Enable ACPI_INT3403_THERMAL as module + + -- Ben Hutchings Fri, 07 Mar 2014 03:36:35 +0000 + +linux (3.13.10-1) unstable; urgency=medium + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.13.8 + - ALSA: compress: Pass through return value of open ops callback + - [hppa] partly revert commit 8a10bc9: parisc/sti_console: prefer Linux + fonts over built-in ROM fonts (regression in 3.13.2) + - [armhf] net: davinci_emac: Replace devm_request_irq with request_irq + (regression in 3.11) + - NFSv4: Use the correct net namespace in nfs4_update_server + - media: cxusb: unlock on error in cxusb_i2c_xfer() (regression in 3.13) + - media: dw2102: some missing unlocks on error (regression in 3.13) + - libceph: block I/O when PAUSE or FULL osd map flags are set + - libceph: resend all writes after the osdmap loses the full flag + - stop_machine: Fix^2 race between stop_two_cpus() and stop_cpus() + - [arm] 7941/2: Fix incorrect FDT initrd parameter override + (regression in 3.13) + - [x86] bpf_jit: support negative offsets + - printk: fix syslog() overflowing user buffer + - Fix uses of dma_max_pfn() when converting to a limiting address + - deb-pkg: Fix building for MIPS big-endian or ARM OABI + - deb-pkg: Fix cross-building linux-headers package + - fs/proc/proc_devtree.c: remove empty /proc/device-tree when no + openfirmware exists. + - KVM: MMU: handle invalid root_hpa at __direct_map + - [x86] KVM: x86: handle invalid root_hpa everywhere + - KVM: VMX: fix use after free of vmx->loaded_vmcs + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.13.9 + - ext4: atomically set inode->i_flags in ext4_set_inode_flags() + - rcuwalk: recheck mount_lock after mountpoint crossing attempts + - Input: mousedev - fix race when creating mixed device + - xen/balloon: flush persistent kmaps in correct position + - Revert "xen: properly account for _PAGE_NUMA during xen pte translations" + (regression in 3.13.5) + - drm/i915: Undo gtt scratch pte unmapping again (regression in 3.12) + - [i386/486] fix boot on uniprocessor systems + - random32: avoid attempt to late reseed if in the middle of seeding + - rcuwalk: switch mnt_hash to hlist + - mm: close PageTail race + - cgroup: protect modifications to cgroup_idr with cgroup_mutex + - netfilter: nf_conntrack_dccp: fix skb_header_pointer API usages + (CVE-2014-2523) + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.13.10 + - selinux: correctly label /proc inodes in use before the policy is loaded + - net: sctp: fix skb leakage in COOKIE ECHO path of chunk->auth_chunk + - bridge: multicast: add sanity check for query source addresses + - tipc: allow connection shutdown callback to be invoked in advance + - tipc: fix connection refcount leak + - tipc: drop subscriber connection id invalidation + - inet: frag: make sure forced eviction removes all frags + - vlan: Set correct source MAC address with TX VLAN offload enabled + (regression in 3.13) + - tcp: tcp_release_cb() should release socket ownership + - bridge: multicast: add sanity check for general query destination + - bridge: multicast: enable snooping on general queries only + - net: socket: error on a negative msg_namelen (regression in 3.11.10) + - bonding: set correct vlan id for alb xmit path (regression in 3.12) + - ipv6: Avoid unnecessary temporary addresses being generated + - net: cdc_ncm: fix control message ordering (regression in 3.13) + - tcp: syncookies: do not use getnstimeofday() (regression in 3.13) + - tipc: fix spinlock recursion bug for failed subscriptions + - ip_tunnel: Fix dst ref-count. (regression in 3.13.7) + - tg3: Do not include vlan acceleration features in vlan_features + - virtio-net: correct error handling of virtqueue_kick() + (regression in 3.13) + - usbnet: include wait queue head in device structure + - vhost: fix total length when packets are too short (CVE-2014-0077) + - vhost: validate vhost_get_vq_desc return value (CVE-2014-0055) + - tcp: fix get_timewait4_sock() delay computation on 64bit + (regression in 3.13) + - xen-netback: remove pointless clause from if statement + - netlink: don't compare the nul-termination in nla_strcmp + - xen-netback: disable rogue vif in kthread context + - net: vxlan: fix crash when interface is created with no group + - rds: prevent dereference of a NULL device in rds_iw_laddr_check + (CVE-2014-2678) + - powernow-k6: disable cache when changing frequency + - [m68k] Skip futex_atomic_cmpxchg_inatomic() test + - crypto: ghash-clmulni-intel - use C implementation for setkey() + + -- Ben Hutchings Tue, 15 Apr 2014 22:12:38 +0100 + +linux (3.13.7-1) unstable; urgency=medium + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.13.7 + - mm: page_alloc: exempt GFP_THISNODE allocations from zone fairness + (regression in 3.12) + - mm: include VM_MIXEDMAP flag in the VM_SPECIAL list to avoid m(un)locking + (regression in 3.12) + - ocfs2: fix quota file corruption + - ocfs2 syncs the wrong range... + - memcg: fix endless loop in __mem_cgroup_iter_next() + (regression in 3.13.3) + - net-tcp: fastopen: fix high order allocations + - ipv6: reuse ip6_frag_id from ip6_ufo_append_data + - ipv4: ipv6: better estimate tunnel header cut for correct ufo handling + - ip_tunnel:multicast process cause panic due to skb->_skb_refdst NULL + pointer + - mac80211: clear sequence/fragment number in QoS-null frames + - ath9k: Fix ETSI compliance for AR9462 2.0 + - ath9k: protect tid->sched check + - cpuset: fix a locking issue in cpuset_migrate_mm() + - cpuset: fix a race condition in __cpuset_node_allowed_softwall() + - firewire: net: fix use after free + - firewire: don't use PREPARE_DELAYED_WORK + - libata: disable queued TRIM for Crucial M500 mSATA SSDs + - libata: use wider match for blacklisting Crucial M500 + - NFSv4: Fix another nfs4_sequence corruptor (Closes: #734268) + - cpufreq: use cpufreq_cpu_get() to avoid cpufreq_get() race conditions + - cpufreq: Skip current frequency initialization for ->setpolicy drivers + (regression in 3.13) + - iscsi/iser-target: Use list_del_init for ->i_conn_node + - iser-target: Ignore completions for FRWRs in isert_cq_tx_work + - iser-target: Fix post_send_buf_count for RDMA READ/WRITE + - mm/readahead.c: fix do_readahead() for no readpage(s) + (regression in 3.13) + - fs/proc/base.c: fix GPF in /proc/$PID/map_files + - drm/i915: fix pch pci device enumeration (regression in 3.11) + - drm/i915: Reject >165MHz modes w/ DVI monitors (regression in 3.11) + - drm/radeon: fix runpm disabling on non-PX harder + (may fix #741619, #742507) + - PCI: Enable INTx in pci_reenable_device() only when MSI/MSI-X not enabled + (fixes regression in 3.13.6) + - [x86] vmxnet3: fix netpoll race condition + - mm/compaction: break out of loop on !PageBuddy in isolate_freepages_block + - dm space map metadata: fix refcount decrement below 0 which caused + corruption + - dm cache: fix truncation bug when copying a block to/from >2TB fast + device + - net: unix socket code abuses csum_partial + - SCSI: qla2xxx: Fix multiqueue MSI-X registration. + - [x86] fpu: Check tsk_used_math() in kernel_fpu_end() for eager FPU + - Btrfs: fix tree mod logging + - Btrfs: fix data corruption when reading/updating compressed extents + - intel_pstate: Add setting voltage value for baytrail P states. + - Fix mountpoint reference leakage in linkat + - bio-integrity: Fix bio_integrity_verify segment start bug + - memcg: reparent charges of children before processing parent + + [ Ben Hutchings ] + * [arm] mm: Avoid ABI change in 3.13.6 (fixes FTBFS) + * nfqueue: Orphan frags in nfqnl_zcopy() and handle errors (CVE-2014-2568) + + -- Ben Hutchings Tue, 25 Mar 2014 17:23:31 +0000 + +linux-tools (3.13.6-1) unstable; urgency=medium + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.13.5 + - Modpost: fixed USB alias generation for ranges including 0x9 and 0xA + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.13.6 + - perf trace: Fix ioctl 'request' beautifier build problems on + !(i386 || x86_64) arches + + [ Ben Hutchings ] + * linux-tools: Remove the 'trace_3.13' link to perf + * Clean another autoconf-generated file so double-builds work + + -- Ben Hutchings Wed, 19 Mar 2014 22:33:21 +0000 + +linux (3.13.6-1) unstable; urgency=high + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.13.6 + - drm/nouveau/fb: use correct ram oclass for nv1a hardware + (regression in 3.13) + - ext4: fix xfstest generic/299 block validity failures + - ext4: fix error paths in swap_inode_boot_loader() + - ext4: don't try to modify s_flags if the the file system is read-only + - ext4: fix online resize with a non-standard blocks per group setting + - [arm] 7950/1: mm: Fix stage-2 device memory attributes + - [arm] 7953/1: mm: ensure TLB invalidation is complete before enabling MMU + - [arm] 7957/1: add DSB after icache flush in __flush_icache_all() + - powerpc: Set the correct ksp_limit on ppc32 when switching to irq stack + (regression in 3.12) + - jbd2: fix use after free in jbd2_journal_start_reserved() + - cifs: ensure that uncached writes handle unmapped areas correctly + (CVE-2014-0069) + - NFS: Do not set NFS_INO_INVALID_LABEL unless server supports labeled NFS + (regression in 3.11) + - NFS fix error return in nfs4_select_rw_stateid (regression in 3.12) + - bridge: fix netconsole setup over bridge (regression in 3.12) + - net: fix 'ip rule' iif/oif device rename + - net: asix: add missing flag to struct driver_info + - gre: add link local route when local addr is any (regression in 3.13) + - ipv4: fix counter in_slow_tot + - net: use __GFP_NORETRY for high order allocations + - batman-adv: fix soft-interface MTU computation (regression in 3.13) + - batman-adv: fix TT-TVLV parsing on OGM reception + - batman-adv: release vlan object after checking the CRC + - batman-adv: properly check pskb_may_pull return value + - batman-adv: avoid potential race condition when adding a new neighbour + - batman-adv: fix TT CRC computation by ensuring byte order + (regression in 3.13) + - batman-adv: free skb on TVLV parsing success + - batman-adv: avoid double free when orig_node initialization fails + - batman-adv: fix potential kernel paging error for unicast transmissions + - cgroup: fix error return value in cgroup_mount() + - cgroup: fix error return from cgroup_create() + - cgroup: fix locking in cgroup_cfts_commit() + - cgroup: update cgroup_enable_task_cg_lists() to grab siglock + - fs: fix iversion handling + - kvm: x86: fix emulator buffer overflow (CVE-2014-0049) + - kvm, vmx: Really fix lazy FPU on nested guest + - SUNRPC: Ensure that gss_auth isn't freed before its upcall messages + - powerpc/powernv: Fix opal_xscom_{read,write} prototype + - powerpc/powernv: Fix indirect XSCOM unmangling + - perf/x86: Fix event scheduling + - sata_sil: apply MOD15WRITE quirk to TOSHIBA MK2561GSYN + - cpufreq: powernow-k8: Initialize per-cpu data-structures properly + (regression in 3.12) + - Revert "writeback: do not sync data dirtied after sync start" + (regression in 3.13) + - [arm] PCI: mvebu: Use Device ID and revision from underlying endpoint + - PCI: Enable INTx if BIOS left them disabled + - i7core_edac: Fix PCI device reference count + - can: kvaser_usb: check number of channels returned by HW + - usb: chipidea: need to mask when writting endptflush and endptprime + - mei: set client's read_cb to NULL when flow control fails + - workqueue: ensure @task is valid across kthread_stop() + - regulator: da9063: Bug fix when setting max voltage on LDOs 5-11 + - [armhf] mtd: nand: omap: fix ecclayout to be in sync with u-boot NAND + driver (regression in 3.13) + - [armhf] mtd: nand: omap: fix ecclayout->oobfree->offset + - [armhf] mtd: nand: omap: fix ecclayout->oobfree->length + - [armhf/armmp-lpae] iommu/arm-smmu: fix pud/pmd entry fill sequence + - [armhf/armmp-lpae] iommu/arm-smmu: really fix page table locking + - [armhf/armmp-lpae] iommu/arm-smmu: fix table flushing during initial + allocations + - [armhf/armmp-lpae] iommu/arm-smmu: set CBARn.BPSHCFG to NSH for + s1-s2-bypass contexts + - perf: Fix hotplug splat + - quota: Fix race between dqput() and dquot_scan_active() + - ipc,mqueue: remove limits for the amount of system-wide queues + - mm, thp: fix infinite loop on memcg OOM + - qla2xxx: Fix kernel panic on selective retransmission request + - i7300_edac: Fix device reference count + - dm cache: move hook_info into common portion of per_bio_data structure + (regression in 3.13) + - drm/radeon: fix missing bo reservation + - drm/radeon: free uvd ring on unload + + [ Ben Hutchings ] + * xhci: Revert more sg changes (Closes: #741989; also see #738113): + - Revert "xhci 1.0: Limit arbitrarily-aligned scatter gather." + - Revert "USBNET: ax88179_178a: enable tso if usb host supports sg dma" + * aufs: Update to aufs3.13-20140303 + - bugfix, Fix unmount to properly free anonymous block devices + * net: fix for a race condition in the inet frag code (CVE-2014-0100) + * net: sctp: fix sctp_sf_do_5_1D_ce to verify if we/peer is AUTH capable + (CVE-2014-0101) + * KEYS: Make the keyring cycle detector ignore other keyrings of the + same name (CVE-2014-0102) + * skbuff: skb_segment: orphan frags before copying (CVE-2014-0131) + * ipv6: don't set DST_NOCOUNT for remotely added routes (CVE-2014-2309) + + -- Ben Hutchings Wed, 19 Mar 2014 16:18:42 +0000 + +linux (3.13.5-1) unstable; urgency=medium + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.13.5 + - xen: properly account for _PAGE_NUMA during xen pte translations + - mm: fix page leak at nfs_symlink() + - mm/memory-failure.c: move refcount only in !MF_COUNT_INCREASED + - CIFS: Fix SMB2 mounts so they don't try to set or get xattrs via cifs + - CIFS: Add protocol specific operation for CIFS xattrs + - CIFS: retrieving CIFS ACLs when mounted with SMB2 fails dropping session + - mac80211: release the channel in error path in start_ap + - mac80211: Fix IBSS disconnect + - mac80211: fix fragmentation code, particularly for encryption + - ath9k_htc: Do not support PowerSave by default + - ath9k: Do not support PowerSave by default + - [s390x] fix kernel crash due to linkage stack instructions + - raw: test against runtime value of max_raw_minors + - hwmon: (ntc_thermistor) Avoid math overflow + - lockd: send correct lock when granting a delayed lock. + - drm/i915: Pair va_copy with va_end in i915_error_vprintf + - vt: Fix secure clear screen + - staging: lustre: fix quotactl permission denied (LU-4530) + - staging: comedi: adv_pci1710: fix analog output readback value + - iio: adis16400: Set timestamp as the last element in chan_spec + - iio: ak8975: Fix calculation formula for convert micro tesla to gauss + unit + - usb-storage: add unusual-devs entry for BlackBerry 9000 + - usb-storage: restrict bcdDevice range for Super Top in Cypress ATACB + - xhci 1.0: Limit arbitrarily-aligned scatter gather. + - Revert "usbcore: set lpm_capable field for LPM capable root hubs" + (regression in 3.12.1) + - block: __elv_next_request() shouldn't call into the elevator if bypassing + - block: Fix nr_vecs for inline integrity vectors + - block: add cond_resched() to potentially long running ioctl discard loop + - compiler/gcc4: Make quirk for asm_volatile_goto() unconditional + - misc: mic: fix possible signed underflow (undefined behavior) in + userspace API + - KVM: return an error code in kvm_vm_ioctl_register_coalesced_mmio() + - md/raid1: restore ability for check and repair to fix read errors. + (regression in 3.10.5) + - i2c: mv64xxx: refactor message start to ensure proper initialization + - target: Fix free-after-use regression in PR unregister + - drivers/edac/edac_mc_sysfs.c: poll timeout cannot be zero + - EDAC: Poll timeout cannot be zero, p2 + - EDAC: Correct workqueue setup path + + [ Ben Hutchings ] + * [armhf] net/wireless: Really enable WL_TI and dependent modules + * aufs: Update to aufs3.13-20140127 (no functional changes) + * [powerpc] Change I2C_POWERMAC from module to built-in (Closes: #713943) + * [mips] rtl8187: fix regression on MIPS without coherent DMA + (Closes: #739978) + * [x86] Enable CHROME_PLATFORMS and re-enable CHROMEOS_LAPTOP as module + (Closes: #740042) + * [armel/!kirkwood] udeb: Re-add lzo-modules udeb as lzo_compress is a + module again (Closes: #740219) + * debian/control: Simplify build-dependencies: + - Remove versions for debhelper, python, kernel-wedge that are + satisfied by stable + - Remove module-init-tools as alternative to kmod, which is in stable + + -- Ben Hutchings Tue, 04 Mar 2014 19:49:27 +0000 + +linux-tools (3.13.4-1) unstable; urgency=medium + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.13.2 + - perf kvm: Fix kvm report without guestmount. + + -- Ben Hutchings Sat, 22 Feb 2014 15:39:27 +0000 + +linux (3.13.4-1) unstable; urgency=low + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.13.1 + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.13.2 + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.13.3 + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.13.4 + + [ Ben Hutchings ] + * [x86] Enable POWERCAP, INTEL_RAPL as module (Closes: #736399) + * [arm] Disable OABI_COMPAT and enable AUDITSYSCALL (except for + armel/{ixp4xx,orion5x}) (Closes: #728975, #736843) + * [x86] Enable R8188EU as module, 88EU_AP_MODE and 88EU_P2P (Closes: #736905) + * [x86] Enable I2C_DESIGNWARE_PLATFORM as module (Closes: #737163) + * [x86] snd-pcsp: Disable autoload (Closes: #697709) + * DFSG: Remove the af9005 initialisation script and vs6624 driver again + (they were renamed in 3.7) + * linux-image.postinst: Use lstat() to check symlink existence + (Closes: #738707) + * [hppa] Update configuration, thanks to Helge Deller (Closes: #738487) + - megaraid: Enable MEGARAID_NEWGEN as module; disable MEGARAID_LEGACY + - drm: Change DRM from module to built-in + - [/parisc64-smp] udeb: Add fb-modules package containing radeon driver + * udeb: Add various recently enabled drivers + - Add i40e to nic-modules + - Add r815x to nic-usb-modules + - Add ath10k_core, ath10k_pci, brcmfmac to nic-wireless-modules + - Add esas2r to scsi-modules + * Bluetooth: allocate static minor for vhci (fixes depmod error) + * Set ABI to 1 + + -- Ben Hutchings Sat, 22 Feb 2014 11:54:57 +0000 + +linux-tools (3.13-1~exp3) experimental; urgency=medium + + * linux-tools: Fix/revert unportable code in perf trace (fixes FTBFS + on powerpc, sparc) + + -- Ben Hutchings Fri, 07 Feb 2014 20:36:29 +0000 + +linux-tools (3.13-1~exp2) experimental; urgency=medium + + * Merge changes from sid up to 3.12.6-3 + + -- Ben Hutchings Sun, 02 Feb 2014 16:57:49 +0100 + +linux-tools (3.13-1~exp1) experimental; urgency=low + + * New upstream release + + -- Ben Hutchings Sun, 02 Feb 2014 12:02:29 +0100 + +linux (3.13-1~exp1) experimental; urgency=low + + * New upstream release: http://kernelnewbies.org/Linux_3.13 + + [ Ben Hutchings ] + * [armhf] xen/pci: Fix build on non-x86 + * [hppa/parisc64-smp] Disable MLONGCALLS (Closes: #733897) + * [armel] Remove iop32x flavour (fixes FTBFS) + * aufs: Update to aufs3.x-rcN-20140120 + - bugfix, removed /proc/PID/fd/N + + [ Bastian Blank ] + * Initial Python 3 support: + - Build-depend on python-six. + + [ Aurelien Jarno ] + * [mipsel] Remove cobalt d-i files. + * [mipsel] Enable KEXEC like on mips. + * [mipsel] Explicitly unset RAPIDIO like on mips. + + -- Ben Hutchings Mon, 20 Jan 2014 05:43:51 +0000 + +linux (3.13~rc6-1~exp1) experimental; urgency=low + + * New upstream release candidate + + [ Ben Hutchings ] + * [rt] Disable until it is updated for 3.13 or later + * aufs: Update to aufs3.x-rcN-20131223 + * [x86] staging: lustre: Make LUSTRE_LLITE_LLOOP tristate + * mm: Enable MEM_SOFT_DIRTY, NUMA_BALANCING but not + NUMA_BALANCING_DEFAULT_ENABLED + * ipv6: Enable IPV6_VTI as module + * netfilter: Enable NF_TABLES, NFT_EXTHDR, NFT_META, NFT_CT, NFT_RBTREE, + NFT_HASH, NFT_COUNTER, NFT_LOG, NFT_LIMIT, NFT_NAT, NFT_COMPAT, + IP_SET_HASH_NETPORTNET, IP_SET_HASH_NETNET, IP_NF_TARGET_SYNPROXY, + IP6_NF_TARGET_SYNPROXY as modules + * net/sched: Enable NET_CLS_BPF as module + * nfc: Enable NFC_DIGITAL, NFC_PORT100 as modules + * block: Enable BLK_DEV_NULL_BLK, BLK_DEV_SKD as modules + * SCSI: Enable SCSI_ESAS2R as module + * net/usb: Enable USB_NET_HUAWEI_CDC_NCM as module + * touchscreen: Enable TOUCHSCREEN_SUR40 as module + * [x86] video: Enable X86_SYSFB, FB_SIMPLE + * [x86] ACPI: Enable ACPI_EXTLOG + * [x86] touchscreen: Enable TOUCHSCREEN_TSC_SERIO as module + * [x86] tpm: Enable TCG_TIS_I2C_ATMEL, TCG_TIS_I2C_INFINEON, + TCG_TIS_I2C_NUVOTON, TCG_ST33_I2C, TCG_XEN as modules + * [amd64] misc: Enable INTEL_MIC_HOST as module + * [powerpc/powerpc64] block: Enable AIX_PARTITION + * net/sched: Change NET_CLS_CGROUP from built-in to module + * nfc: Disable NFC_NCI as no enabled drivers need it + * misc: Disable BMP085_I2C as unlikely to be useful + + [ Aurelien Jarno ] + * [mipsel] Remove r5k-cobalt flavour. + + -- Ben Hutchings Mon, 30 Dec 2013 02:36:11 +0100 + +linux-tools (3.12.6-3) unstable; urgency=medium + + * linux-tools: Explicitly enable/disable libunwind usage for all + architectures (fixes FTBFS on s390x and sparc) + * linux-tools: Only use libunwind on x86, as perf needs additional + porting work for other architectures (fixes FTBFS on arm and powerpc) + + -- Ben Hutchings Sun, 02 Feb 2014 16:46:44 +0100 + +linux-tools (3.12.6-2) unstable; urgency=medium + + * linux-tools: Replace build-dependency on libunwind7-dev with + libunwind8-dev + + -- Ben Hutchings Sun, 02 Feb 2014 11:51:18 +0100 + +linux (3.12.9-1) unstable; urgency=high + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.12.9 + - Revert "ACPI: Add BayTrail SoC GPIO and LPSS ACPI IDs" + (regression in 3.12.7) + - GFS2: Increase i_writecount during gfs2_setattr_chown + - vfs: Fix a regression in mounting proc (regression in 3.12) + - fork: Allow CLONE_PARENT after setns(CLONE_NEWPID) (regression in 3.12) + - i2c: Re-instate body of i2c_parent_is_i2c_adapter() (regression in 3.12) + - writeback: Fix data corruption on NFS + - thp: fix copy_page_rep GPF by testing is_huge_zero_pmd once only + - [x86] ftrace: Load ftrace_ops in parameter not the variable holding it + - nilfs2: fix segctor bug that causes file system corruption + - md: fix problem when adding device to read-only array with bitmap. + - md/raid10: fix bug when raid10 recovery fails to recover a block. + - md/raid10: fix two bugs in handling of known-bad-blocks. + - md/raid5: Fix possible confusion when multiple write errors occur. + - mm: Make {,set}page_address() static inline if WANT_PAGE_VIRTUAL + (fixes FTBFS on sparc and m68k) + - [x86] drm/i915: Don't grab crtc mutexes in intel_modeset_gem_init() + (regression in 3.12.7) + - [arm] 7938/1: OMAP4/highbank: Flush L2 cache before disabling + + [ Ben Hutchings ] + * HID: Enable HID_ELO, HID_XINMO as modules (Closes: #736369) + * xhci: Revert generalised sg support (Closes: #733826, #736274) + + -- Ben Hutchings Sat, 01 Feb 2014 18:50:01 +0100 + +linux (3.12.8-1) unstable; urgency=medium + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.12.7 + - [powerpc] kvm: fix rare but potential deadlock scene + - [m68k] TTY: pmac_zilog, check existence of ports in pmz_console_init() + - xhci: Limit the spurious wakeup fix only to HP machines (fixes + regression in 3.12) + - usb: chipidea: host: Only disable the vbus regulator if it is not NULL + (fixes regression in 3.12) + - aio: fix kioctx leak introduced by "aio: Fix a trinity splat" + - iser-target: Move INIT_WORK setup into isert_create_device_ib_res + - [x86] idle: Repair large-server 50-watt idle-power regression + (fixes regression in 3.10) + - ext4: call ext4_error_inode() if jbd2_journal_dirty_metadata() fails + - ext4: fix use-after-free in ext4_mb_new_blocks + - ext4: fix del_timer() misuse for ->s_err_report + - ext4: add explicit casts when masking cluster sizes + - ext4: fix bigalloc regression + - sched/rt: Fix rq's cpupri leak while enqueue/dequeue child RT entities + - net_dma: mark broken (fixes potential data loss) + - drm/i915: Take modeset locks around intel_modeset_setup_hw_state() + - drm/i915: Hold mutex across i915_gem_release + - drm/i915: Fix use-after-free in do_switch + - drm/i915: don't update the dri1 breadcrumb with modesetting + - drm/i915: Fix erroneous dereference of batch_obj inside reset_status + - ceph: Avoid data inconsistency due to d-cache aliasing in readpage() + - tg3: Expand 4g_overflow_test workaround to skb fragments of any size. + - cgroup: fix cgroup_create() error handling path + - [powerpc] auxvec.h: account for AT_HWCAP2 in AT_VECTOR_SIZE_BASE + - ath9k_htc: properly set MAC address and BSSID mask (CVE-2013-4579) + (Closes: #729573) + - KVM: nVMX: Unconditionally uninit the MMU on nested vmexit + - [x86] KVM: Fix APIC map calculation after re-enabling + - [powerpc] Fix bad stack check in exception entry + - libata: implement ATA_HORKAGE_NO_NCQ_TRIM and apply it to Micro M500 SSDs + (fixes potential data loss) + - radiotap: fix bitmap-end-finding buffer overrun + - mm: numa: serialise parallel get_user_page against THP migration + - mm: numa: call MMU notifiers on THP migration + - mm: clear pmd_numa before invalidating + - mm: numa: do not clear PTE for pte_numa update + - mm: numa: ensure anon_vma is locked to prevent parallel THP splits + - sched: numa: skip inaccessible VMAs + - mm: numa: clear numa hinting information on mprotect + - mm: fix TLB flush race between migration, and change_protection_range + - mm: numa: guarantee that tlb_flush_pending updates are visible before + page table updates + - mm/mempolicy: correct putback method for isolate pages if failed + - mm/compaction: respect ignore_skip_hint in update_pageblock_skip + - mm/hugetlb: check for pte NULL pointer in __page_check_address() + - mm: munlock: fix a bug where THP tail page is encountered + - mm: munlock: fix deadlock in __munlock_pagevec() + - mm: fix use-after-free in sys_remap_file_pages + - Input: allocate absinfo data when setting ABS capability + - GFS2: Fix use-after-free race when calling gfs2_remove_from_ail + - GFS2: Fix slab memory leak in gfs2_bufdata + - GFS2: Fix incorrect invalidation for DIO/buffered I/O + - [s390] 3270: fix allocation of tty3270_screen structure + - [sh] always link in helper functions extracted from libgcc + - selinux: look for IPsec labels on both inbound and outbound packets + - selinux: process labeled IPsec TCP SYN-ACK packets properly in + selinux_ip_postroute() + - aio: clean up and fix aio_setup_ring page mapping + - aio/migratepages: make aio migrate pages sane + - ACPIPHP / radeon / nouveau: Fix VGA switcheroo problem related to hotplug + (regression in 3.12) + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.12.8 + - IPv6: Fixed support for blackhole and prohibit routes + - net: do not pretend FRAGLIST support + - tun: unbreak truncated packet signalling + - macvtap: signal truncated packets + - br: fix use of ->rx_handler_data in code executed on non-rx_handler path + - inet: fix NULL pointer Oops in fib(6)_rule_suppress + - vxlan: release rt when found circular route + - ipv6: fix illegal mac_header comparison on 32bit + - ip_gre: fix msg_name parsing for recvfrom/recvmsg + - net: inet_diag: zero out uninitialized idiag_{src,dst} fields + - drivers/net/hamradio: Integer overflow in hdlcdrv_ioctl() + - hamradio/yam: fix info leak in ioctl + - net: fec: fix potential use after free + - rds: prevent dereference of a NULL device + - arc_emac: fix potential use after free + - net: rose: restore old recvmsg behavior (regression in 3.12.4) + - vlan: Fix header ops passthru when doing TX VLAN offload. + - virtio-net: fix refill races during restore + - net: llc: fix use after free in llc_ui_recvmsg + - netpoll: Fix missing TXQ unlock and and OOPS. + - bridge: use spin_lock_bh() in br_multicast_set_hash_max + - sfc: Add length checks to efx_xmit_with_hwtstamp() and + efx_ptp_is_ptp_tx() + - sfc: PTP: Moderate log message on event queue overflow + - sfc: Rate-limit log message for PTP packets without a matching timestamp + event + - [arm] fix "bad mode in ... handler" message for undefined instructions + - [arm] 7923/1: mm: fix dcache flush logic for compound high pages + - [hppa] Ensure full cache coherency for kmap/kunmap + - clk: clk-divider: fix divisor > 255 bug + - mfd: rtsx_pcr: Disable interrupts before cancelling delayed works + - netfilter: fix wrong byte order in nf_ct_seqadj_set internal information + (regression in 3.12) + - netfilter: nf_nat: fix access to uninitialized buffer in IRC NAT helper + - x86, fpu, amd: Clear exceptions in AMD FXSAVE workaround + (CVE-2014-1438) (Closes: #733551) + - sched: Fix race on toggling cfs_bandwidth_used + - sched: Fix cfs_bandwidth misuse of hrtimer_expires_remaining + - sched: Fix hrtimer_cancel()/rq->lock deadlock + + [ Ben Hutchings ] + * [hppa] Update configuration, thanks to Helge Deller (Closes: #733895) + - Change AGP, AGP_PARISC from modules to built-in, to work around + race condition between DRM and AGP + - Enable DEBUG_STACKOVERFLOW + - udeb: Build packages for the parisc64-smp flavour instead of the + removed parisc flavour (fixes FTBFS) + * linux-image: Make maintainer scripts less verbose (Closes: #734266) + * [m68k] Enable EARLY_PRINTK (Closes: #734289) + * crypto: Enable more processor-specific algorithms and drivers: + - [amd64] Enable CRYPTO_CRCT10DIF_PCLMUL, CRYPTO_SHA256_SSSE3, + CRYPTO_SHA512_SSSE3, CRYPTO_GHASH_CLMUL_NI_INTEL, + CRYPTO_CAMELLIA_AESNI_AVX_X86_64, CRYPTO_CAMELLIA_AESNI_AVX2_X86_64, + CRYPTO_CAST5_AVX_X86_64, CRYPTO_CAST6_AVX_X86_64, + CRYPTO_SERPENT_AVX2_X86_64 as modules (Closes: #734376) + - [arm] Enable CRYPTO_SHA1_ARM, CRYPTO_AES_ARM as modules + - [powerpc] Enable CRYPTO_SHA1_PPC as module + - [sparc] Enable CRYPTO_CRC32C_SPARC64, CRYPTO_MD5_SPARC64, + CRYPTO_SHA1_SPARC64, CRYPTO_SHA256_SPARC64, CRYPTO_SHA512_SPARC64, + CRYPTO_AES_SPARC64, CRYPTO_CAMELLIA_SPARC64, CRYPTO_DES_SPARC64, + CRYPTO_DEV_NIAGARA2 as modules + - [x86] Enable CRYPTO_CRC32_PCLMUL as module + * [powerpc] Remove AT_HWCAP2 from auxv to avoid module ABI change + * [rt] Update to 3.12.6-rt9: + - rcu: Don't activate RCU core on NO_HZ_FULL CPUs + - timers: do not raise softirq unconditionally + - rcutree/rcu_bh_qs: disable irq while calling rcu_preempt_qs() + * Revert "net: unix: allow set_peek_off to fail", included in 3.12.8, + as it would cause an ABI change + * media: Enable VIDEO_STK1160_COMMON (new dependency of VIDEO_STK1160) + as module (Closes: #735870) + * [x86] brcm80211: Enable BRCMFMAC as module, and BRCMFMAC_SDIO + (Closes: #735245) + * [x86] staging: lustre: Make LUSTRE_LLITE_LLOOP tristate + + [ Ian Campbell ] + * [armel/kirkwood] Fix interrupt handling on non-DT platforms (Closes: #735172) + * [armhf/armmp] Add mmci driver to mmc-module udeb. + + -- Ben Hutchings Sun, 19 Jan 2014 19:22:22 +0000 + +linux (3.12.6-2) unstable; urgency=medium + + [ Bastian Blank ] + * [x86] Make MICROCODE built-in for early microcode loading. + + [ Ben Hutchings ] + * [armhf] linux-headers: Fix typo in compiler dependency + + -- Ben Hutchings Sun, 29 Dec 2013 16:56:20 +0100 + +linux (3.12.6-1) unstable; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.12.4 + - net: x86: bpf: don't forget to free sk_filter (v2) + - net: Fix "ip rule delete table 256" (Closes: #724783) + - net-tcp: fix panic in tcp_fastopen_cache_set() + - inet: prevent leakage of uninitialized memory to user in recv syscalls + (CVE-2013-6405) + - ping: prevent NULL pointer dereference on write to msg_name + (CVE-2013-6432) + - ipv6: fix leaking uninitialized port number of offender sockaddr + - netfilter: push reasm skb through instead of original frag skbs + - packet: fix use after free race in send path when dev is released + - gso: handle new frag_list of frags GRO packets + - net: update consumers of MSG_MORE to recognize MSG_SENDPAGE_NOTLAST + - xfs: add capability check to free eofblocks ioctl + - iommu/vt-d: Fixed interaction of VFIO_IOMMU_MAP_DMA with IOMMU address + limits + - aio: Fix a trinity splat + - aio: prevent double free in ioctx_alloc + https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.12.5 + - [s390,s390x] crypto: Fix aes-xts parameter corruption + - crypto: scatterwalk - Set the chain pointer indication bit + - crypto: ccm - Fix handling of zero plaintext when computing mac + - crypto: authenc - Find proper IV address in ablkcipher callback + - [armhf] mvebu: use the virtual CPU registers to access coherency + registers + - vfs: fix subtle use-after-free of pipe_inode_info + - SCSI: bfa: Fix crash when symb name set for offline vport + - SCSI: hpsa: do not discard scsi status on aborted commands + - [hppa] fix mmap(MAP_FIXED|MAP_SHARED) to already mmapped address + - net: update consumers of MSG_MORE to recognize MSG_SENDPAGE_NOTLAST + - SCSI: Disable WRITE SAME for RAID and virtual host adapter drivers + - tg3: avoid double-freeing of rx data memory + - crypto: scatterwalk - Use sg_chain_ptr on chain entries + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.12.6 + - ALSA: memalloc.h - fix wrong truncation of dma_addr_t + - [arm] 7912/1: check stack pointer in get_wchan + - [arm] 7913/1: fix framepointer check in unwind_frame + - KVM: Improve create VCPU parameter (CVE-2013-4587) + - [x86] KVM: Fix potential divide by 0 in lapic (CVE-2013-6367) + - [x86] KVM: Convert vapic synchronization to _cached functions + (CVE-2013-6368) + - [x86] KVM: fix guest-initiated crash with x2apic (CVE-2013-6376) + - xfs: growfs overruns AGFL buffer on V4 filesystems + - futex: fix handling of read-only-mapped hugepages + - nfsd: when reusing an existing repcache entry, unhash it first + - [armhf] usb: musb: musb_cppi41: handle pre-mature TX complete interrupt + - powerpc: Fix PTE page address mismatch in pgtable ctor/dtor + - mm: memcg: do not allow task about to OOM kill to bypass the limit + - mm: memcg: fix race condition between memcg teardown and swapin + - cfg80211: disable 5/10 MHz support for all drivers + - Revert "mac80211: allow disable power save in mesh" + - mac80211: fix scheduled scan rtnl deadlock + - iwlwifi: mvm: check sta_id/drain values in debugfs + - Btrfs: fix access_ok() check in btrfs_ioctl_send() + - dm snapshot: avoid snapshot space leak on crash + - dm array: fix a reference counting bug in shadow_ablock + - dm space map metadata: return on failure in sm_metadata_new_block + - dm space map: disallow decrementing a reference count below zero + - dm table: fail dm_table_create on dm_round_up overflow + - dm thin: switch to read only mode if a mapping insert fails + - dm thin: switch to read-only mode if metadata space is exhausted + - dm thin: always fallback the pool mode if commit fails + - dm thin: re-establish read-only state when switching to fail mode + - dm thin: allow pool in read-only mode to transition to read-write mode + - media/cxd2820r_core: Fix regression in 3.12.3 + - sched: Avoid throttle_cfs_rq() racing with period_timer stopping + - Btrfs: do a full search everytime in btrfs_search_old_slot + - Btrfs: reset intwrite on transaction abort + - Btrfs: fix memory leak of chunks' extent map + - Btrfs: fix hole check in log_one_extent + - Btrfs: fix incorrect inode acl reset + - Btrfs: take ordered root lock when removing ordered operations inode + - Btrfs: do not run snapshot-aware defragment on error + - Btrfs: fix a crash when running balance and defrag concurrently + - Btrfs: fix lockdep error in async commit + + [ Ben Hutchings ] + * udeb: Add ohci-pci to usb-modules (Closes: #730789) + * cifs: Enable CIFS_SMB2 + * [hppa] Update flavours and configuration, thanks to Helge Deller + (Closes: #721191) + - Remove parisc-smp and parisc64 (UP) flavours + - Build with gcc-4.8 + - rtc: Enable HP_SDC_RTC as module + - megaraid: Enable MEGARAID_NEWGEN + - [/parisc64-smp] Enable MLONGCALLS, DISCONTIGMEM_MANUAL + - [/parisc64-smp] Enable PATA_SIL680, AGP, AGP_PARISC, DRM, + DRM_RADEON as modules + * firmware: Disable FW_LOADER_USER_HELPER (see #725714) + * firmware: Improve logging of success/failure for direct file loading + * media: az6007: support Technisat Cablestar Combo HDCI (minus remote) + (Closes: #732106) + * linux-source: Compress with gzip -1 (Closes: #725492) + * [alpha] Prevent a NULL ptr dereference in csum_partial_copy + * Set ABI to 1 + * [ia64] Enable PSTORE, EFI_VARS_PSTORE + * [x86,ia64] udeb: Remove zlib-modules as zlib is now built-in + * [rt] Update to 3.12.5-rt7: + - ptrace: fix ptrace vs tasklist_lock race + - migrate_disable pushd down in atomic_dec_and_spin_lock + - migrate_disable pushd down in rt_spin_trylock_irqsave + - migrate_disable pushd down in rt_write_trylock_irqsave + - Revert "sched/rt: Fix wait_task_interactive() to test rt_spin_lock state" + - seqlock: consolidate spin_lock/unlock waiting with spin_unlock_wait + - softirq: make migrate disable/enable conditioned on softirq_nestcnt + + [ Ian Campbell ] + * [armel/kirkwood+orion] Reenable MARVELL_PHY (Closes: #723177) + + -- Ben Hutchings Sat, 21 Dec 2013 03:12:38 +0000 + +linux (3.12.3-1~exp1) experimental; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.12.1 + https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.12.2 + - libertas: potential oops in debugfs (CVE-2013-6378) + - exec/ptrace: fix get_dumpable() incorrect tests (CVE-2013-2929) + https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.12.3 + + [ Ben Hutchings ] + * [rt] Update to 3.12.0-rt2 and reenable + * HID: Enable UHID as module (Closes: #729338) + * [sh4] Remove some accidental inconsistencies in config + * Enable CHECKPOINT_RESTORE (Closes: #682700) + * Enable JUMP_LABEL (Closes: #730071) + * [x86] staging: Enable CRYSTALHD as module (Closes: #730832) + * aufs: Update to aufs3.12-20131111 (no functional change) + * [rt] Update to 3.12.1-rt4 + * udeb: Add snd-usb-hiface to sound-modules, thanks to Samuel Thibault + (Closes: #730418) + * linux-image-dbg: Use correct objcopy command when cross-compiling, + thanks to Jon Severinsson + + [ Bastian Blank ] + * Use compiler name instead of Linux version in compiler meta-packages. + + [ Ian Campbell ] + * [armhf]: Enable AHCI_IMX in armmp+lpae flavours. + + [ Aurelien Jarno ] + * [mips/octeon] Add kernel udebs. + * [mipsel] Add a loongson-2e flavour. + + -- Ben Hutchings Thu, 05 Dec 2013 14:34:39 +0000 + +linux-tools (3.12.6-1) unstable; urgency=medium + + * New upstream stable update + - perf tools: Remove cast of non-variadic function to variadic + - perf tools: Synthesize anon MMAP records again + + [ Ben Hutchings ] + * linux-tools: Replace build-dependency on binutils-dev with + libiberty-dev (or old binutils-dev, for ease of backporting) + (Closes: #730883) + + -- Ben Hutchings Sat, 30 Nov 2013 23:48:32 +0000 + +linux-tools (3.12-1~exp1) experimental; urgency=low + + * New upstream release (Closes: #729197) + * [x86, powerpc, ppc64] linux-tools: Build perf with libnuma + + -- Ben Hutchings Mon, 18 Nov 2013 05:14:34 +0000 + +linux (3.12-1~exp1) experimental; urgency=low + + * New upstream release: http://kernelnewbies.org/Linux_3.12 + + [ Ben Hutchings ] + * namespaces: Enable USER_NS (Closes: #712870) + - Restrict creation of user namespaces to root (CAP_SYS_ADMIN) by + default (sysctl: kernel.unprivileged_userns_clone) + * aufs: Update to aufs3.x-rcN-20131104 + - mmap() holds a reference to the union file as well as the branch file + * [armel/{iop32x,ixp4xx}] Disable BPF_JIT, MEMCG, USER_NS to reduce kernel + size + * [arm,x86,s390,s390x] Introduce linux-compiler meta-packages to allow use + of foreign linux-headers packages with a native multilib compiler + * perf/ftrace: Fix paranoid level for enabling function tracer + (CVE-2013-2930) + * media/usb/gspca: Enable USB_GSPCA_STK1135 as module + * net/ethernet: Enable I40E as module + * net/usb: Enable USB_NET_SR9700 as module + * net/wireless/rt2x00: Enable RT2800USB_RT3573 + * openvswitch: Enable OPENVSWITCH_VXLAN + * net/sched: Enable NET_SCH_FQ as module + * [x86] HID: Enable I2C_HID as module (Closes: #729801) + * [x86] input/misc: Enable INPUT_IDEAPAD_SLIDEBAR as module + * [x86] fs: Enable LUSTRE_FS, LUSTRE_LLITE_LOOP, LNET_XPRT_IB as modules + * [x86] thermal: Enable INTEL_POWERCLAMP, X86_PKG_TEMP_THERMAL as modules + * [armhf/armmp] udeb: Add zlib-modules + + [ Thorsten Glaser ] + * Update m68k config (Closes: #728392): + - enable COMPAT_BRK by explicit upstream (m68k maintainer) request + - re-enable FPU emulation after discussion upstream, by popular request + - disable ADB_MACIISI by upstream (Mac68k maintainer) request + + -- Ben Hutchings Sun, 17 Nov 2013 22:41:26 +0000 + +linux (3.12~rc7-1~exp1) experimental; urgency=low + + * New upstream release candidate + + [ Ben Hutchings ] + * aufs: Update to aufs3.x-rcN-20131014 + + -- Ben Hutchings Mon, 28 Oct 2013 04:12:20 +0000 + +linux (3.11.10-1) unstable; urgency=medium + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.11.9 + - net/mlx4_core: Fix call to __mlx4_unregister_mac + - net: sctp: do not trigger BUG_ON in sctp_cmd_delete_tcb + - cxgb3: Fix length calculation in write_ofld_wr() on 32-bit architectures + - tcp: gso: fix truesize tracking + - xen-netback: Handle backend state transitions in a more robust way + - xen-netback: transition to CLOSED when removing a VIF + - [x86] hyperv-fb: add pci stub + - tracing: Fix potential out-of-bounds in trace_get_user() + - perf: Fix perf ring buffer memory ordering + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.11.10 + - ACPICA: DeRefOf operator: Update to fully resolve FieldUnit and + BufferField refs. + - libertas: potential oops in debugfs (CVE-2013-6378) + - aacraid: prevent invalid pointer dereference + - ACPICA: Return error if DerefOf resolves to a null package element. + - ACPICA: Fix for a Store->ArgX when ArgX contains a reference to a field. + - USB: mos7840: fix tiocmget error handling + - Btrfs: relocate csums properly with prealloc extents + - [s390,s390x] crypto: s390 - Fix aes-cbc IV corruption + - can: c_can: Fix RX message handling, handle lost message before EOB + - ipc,shm: correct error return value in shmctl (SHM_UNLOCK) + - ipc,shm: fix shm_file deletion races + - drm/nvc0-/gr: fix a number of missing explicit array terminators... + - sched, idle: Fix the idle polling state logic + - [x86] ACPI / EC: Ensure lock is acquired before accessing ec struct + members + - [x86] ACPI / video: Quirk initial backlight level 0 + - Staging: zram: Fix access of NULL pointer + - Drivers: hv: vmbus: Fix a bug in channel rescind code + - rt2x00: fix a crash bug in the HT descriptor handling fix + - Bluetooth: revert: "Bluetooth: Add missing reset_resume dev_pm_ops" + - exec/ptrace: fix get_dumpable() incorrect tests (CVE-2013-2929) + + [ Ben Hutchings ] + * net: clamp ->msg_namelen instead of returning an error + * tcp: tsq: restore minimal amount of queueing + * rds: prevent BUG_ON triggered on congestion update to loopback + (CVE-2012-2372) + * ipv6: fix headroom calculation in udp6_ufo_fragment (CVE-2013-4563) + * [s390,s390x] qeth: avoid buffer overflow in snmp ioctl (CVE-2013-6381) + * xfs: underflow bug in xfs_attrlist_by_handle() (CVE-2013-6382) + * [x86] Enable CHROMEOS_LAPTOP as module (Closes: #731271) + - iio/light: Enable SENSORS_TSL2563, SENSORS_ISL29018, TSL2583 as modules + + -- Ben Hutchings Wed, 04 Dec 2013 14:49:01 +0000 + +linux (3.11.8-1) unstable; urgency=low + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.11.8 + - bcache: Fixed incorrect order of arguments to bio_alloc_bioset() + - cgroup: fix to break the while loop in cgroup_attach_task() correctly + - mac80211: drop spoofed packets in ad-hoc mode + - mac80211: fix crash if bitrate calculation goes wrong + - rtlwifi: rtl8192cu: Fix error in pointer arithmetic + - jfs: fix error path in ialloc + - SCSI: sd: call blk_pm_runtime_init before add_disk + - ecryptfs: Fix memory leakage in keystore.c + - eCryptfs: fix 32 bit corruption issue + - raid5: set bio bi_vcnt 0 for discard request + - raid5: avoid finding "discard" stripe + - libata: make ata_eh_qc_retry() bump scmd->allowed on bogus failures + - Revert "epoll: use freezable blocking call" + - Revert "select: use freezable blocking call" + - md: Fix skipping recovery for read-only arrays. + - vhost/scsi: Fix incorrect usage of get_user_pages_fast write parameter + - Fix a few incorrectly checked [io_]remap_pfn_range() calls + - lib/scatterlist.c: don't flush_kernel_dcache_page on slab page + - aacraid: missing capable() check in compat ioctl + - mm: Wait for THP migrations to complete during NUMA hinting faults + - mm: Prevent parallel splits during THP migration + - mm: Close races between THP migration and PMD numa clearing + - mm/pagewalk.c: fix walk_page_range() access of wrong PTEs + - drm: Prevent overwriting from userspace underallocating core ioctl + structs + - seq_file: always update file->f_pos in seq_lseek() + + [ Ben Hutchings ] + * perf/ftrace: Fix paranoid level for enabling function tracer + (CVE-2013-2930) + * [armhf] Bump ABI to 2 + * [armhf/armmp] udeb: Add zlib-modules (fixes FTBFS) + + -- Ben Hutchings Wed, 13 Nov 2013 05:36:36 +0000 + +linux (3.11.7-1) unstable; urgency=low + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.11.7 + - tcp: TSO packets automatic sizing + - tcp: TSQ can use a dynamic limit + - tcp: must unclone packets before mangling them + - tcp: fix incorrect ca_state in tail loss probe (Closes: #728726) + + [ Ben Hutchings ] + * [armel] udeb: Re-enable iop32x flavour + * Bump ABI to 2 due to TCP changes + + -- Ben Hutchings Sat, 09 Nov 2013 20:18:02 +0000 + +linux (3.11.6-2) unstable; urgency=medium + + [ Ben Hutchings ] + * [sh4] Reduce compiler version to gcc-4.7, as gcc-4.8 is not yet + available + * [ia64] Reduce compiler version to gcc-4.6, matching gcc-defaults + (fixes FTBFS) + * [armhf] Bump ABI to 1a, as enabling Xen and KVM support changes ABI + * net: Fix infinite loop in in skb_flow_dissect() (CVE-2013-4348) + * net: do not call sock_put() on TIMEWAIT sockets + * l2tp: fix kernel panic when using IPv4-mapped IPv6 addresses + * net: heap overflow in __audit_sockaddr() + * proc connector: fix info leaks + * bridge: update mdb expiration timer upon reports. + * Revert "bridge: only expire the mdb entry when query is received" + * unix_diag: fix info leak + * be2net: pass if_id for v1 and V2 versions of TX_CREATE cmd + * net: fix cipso packet validation when !NETLABEL + * inet: fix possible memory corruption with UDP_CORK and UFO + * [arm] 7851/1: check for number of arguments in syscall_get/set_arguments() + * ext[34]: fix double put in tmpfile + * dm snapshot: fix data corruption (CVE-2013-4299) + * i2c: ismt: initialize DMA buffer + * mm: fix BUG in __split_huge_page_pmd + * writeback: fix negative bdi max pause + + [ Aurelien Jarno ] + * UAPI: include in linux/raid/md_p.h. + + -- Ben Hutchings Fri, 01 Nov 2013 05:23:13 +0000 + +linux-tools (3.11-3) unstable; urgency=low + + * linux-tools: Replace build-dependency on libunwind8-dev with + libunwind7-dev, as the new libunwind will not enter testing soon + + -- Ben Hutchings Tue, 29 Oct 2013 02:12:36 +0000 + +linux (3.11.6-1) unstable; urgency=low + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.11.6 + - random: run random_int_secret_init() run after all late_initcalls + - ext4: fix memory leak in xattr + - KVM: PPC: Book3S HV: Fix typo in saving DSCR + - ipc: Apply mainline changes up to 3.12-rc5 + + [ Ian Campbell ] + * [armhf] Enable Xen and virtio for armmp and armmp-lpae as well as KVM for + armmp-lpae only. + + [ Ben Hutchings ] + * kbuild: Use -nostdinc in compile tests (Closes: #726861, workaround + for #717557) + * Disable CC_OPTIMIZE_FOR_SIZE (Closes: #635899, fixes FTBFS on mips, + mipsel, powerpc) [!armel/{iop32x,ixp4xx,kirkwood,orion5x},m68k] + * aufs: Update to aufs3.11-20131014 + - Remove dependency on loop module (Closes: #727243) + * [armhf/armmp] udeb: Add ppp-modules + + -- Ben Hutchings Sun, 27 Oct 2013 19:02:04 +0000 + +linux-tools (3.11-2) unstable; urgency=low + + * linux-tools: Limit build-dependency on libunwind8-dev to architectures + where it is available and needed + + -- Ben Hutchings Sun, 27 Oct 2013 18:01:37 +0000 + +linux-tools (3.11-1) unstable; urgency=low + + * New upstream release + * linux-tools: Build perf with libaudit and libunwind + + -- Ben Hutchings Sat, 19 Oct 2013 02:38:59 +0100 + +linux (3.11.5-1) unstable; urgency=low + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.11.1 + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.11.2 + - media: siano: fix divide error on 0 counters (Closes: #719623) + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.11.3 + - HID: multitouch: validate indexes details (CVE-2013-2897) + - HID: LG: validate HID output report details (CVE-2013-2893) + - HID: zeroplus: validate output report details (CVE-2013-2889) + - HID: lenovo-tpkbd: fix leak if tpkbd_probe_tp fails (CVE-2013-2894) + - HID: steelseries: validate output report details (CVE-2013-2891) + - HID: logitech-dj: validate output report details (CVE-2013-2895) + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.11.4 + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.11.5 + - cpqarray: fix info leak in ida_locked_ioctl() (CVE-2013-2147) + - cciss: fix info leak in cciss_ioctl32_passthru() (CVE-2013-2147) + - tuntap: correctly handle error in tun_set_iff() (CVE-2013-4343) + - net: sctp: fix ipv6 ipsec encryption bug in sctp_v6_xmit (CVE-2013-4350) + - ipv6: udp packets following an UFO enqueued packet need also be handled + by UFO (CVE-2013-4387) + + [ Ben Hutchings ] + * udeb: Update config to match previous kernel config changes: + - Remove ext{2,3}-modules + - Update description of ext4-modules and let it provide ext{2,3}-modules + - Remove aic7xxx_old, enc28j60 and imm from module lists + - [sh4] kernel-image no longer provides ext3-modules + * [hppa] udeb: kernel-image does not provide ext2-modules (since 3.2.7-1) + * [arm] thermal: Re-enable CPU_THERMAL as built-in (regression in + 3.10~rc4-1~exp1) + * Stop providing virtual packages linux-image (Closes: #724569), + linux-headers and linux-source + * hwmon: Enable SENSORS_JC42, SENSORS_NCT6775 as modules (Closes: #722062) + * compiler/gcc4: Add quirk for 'asm goto' miscompilation bug + * [arm64] Build a linux-libc-dev package (Closes: #695241) + * crypto: ansi_cprng - Fix off by one error in non-block size request + (CVE-2013-4345) + * mvsas: Recognise device/subsystem 9485/9485 as 88SE9485 + * Set ABI to 1 + * [i386] Remove xen-linux-system- packages (Closes: #726010) + + [ Ian Campbell ] + * [armhf] Enable CONFIG_PCI for multiplatform flavour. + - Enable standard NIC and SCSI modules and include in udebs. + * [armhf] Add multiplatform + LPAE flavour (armmp-lpae). + * [armhf] Remove mx5, omap and vexpress flavours. These are all supported + by the multiplatform flavour. + * [armel/kirkwood] Add orion-ehci, mvmdio and of_mdio modules to udebs. + + -- Ben Hutchings Thu, 17 Oct 2013 14:46:41 +0100 + +linux (3.11-1~exp1) experimental; urgency=low + + * New upstream release: http://kernelnewbies.org/Linux_3.11 + + [ Ben Hutchings ] + * Disable drivers for various platform/undetectable devices by default: + - ata: Disable PATA_ARASAN_CF + - hwrng: Disable HW_RANDOM_TIMERIOMEM + - mdio: Disable MDIO_BITBANG + - media: Disable SOC_CAMERA + - media/radio: Disable I2C_SI470X, RADIO_SAA7706H, RADIO_SI4713, + RADIO_TEA5764, RADIO_TEF6862, RADIO_WL1273 + - mfd: Disable HTC_PASIC3, MFD_PCF50633, MFD_SM501, TPS65010 + - mtd: Disable MTD_ONENAND_GENERIC + - mmc: Disable MMC_SPI, MMC_SDHCI_PLTFM + - net/can: Disable CAN_MCP251X + - net/ethernet: Disable DNET, ENC28J60, ETHOC, KS8842, KS8851, KS8851_MLL, + WIZNET_W5100, WIZNET_W5300 + - net/wireless: Disable LIBERTAS_SPI, P54_SPI + - parport: Disable PARPORT_AX88796 + - power: Disable BATTERY_BQ27x00, BATTERY_DS2760, BATTERY_DS2782, + BATTERY_MAX17040 + - regulator: Disable all drivers + - rtc: Disable all drivers except RTC_DRV_CMOS + - serial: Disable SERIAL_MAX3100 + - spi: Disable SPI_TLE62X0 + - uio: Disable UIO_PDRV, UIO_PDRV_GENIRQ + - USB: Disable USB_C67X00_HCD, USB_ISP116X_HCD, USB_R8A66597_HCD + - video: Disable FB_METRONOME + - w1: Disable W1_SLAVE_DS2760 + * [x86] mtd: Disable MTD_NAND_PLATFORM + * [x86] power: Disable PDA_POWER + * [x86] video: Disable FB_S1D13XXX + * Disable some old non-hotplug PCI drivers: + - SCSI: Disable SCSI_AIC7XXX_OLD + - [x86] mtd: Disable MTD_PMC551 + - [x86] net/wan: Disable SBNI + * Disable parport drivers that are no longer likely to be useful: + - block: Disable PARIDE + - media: Disable VIDEO_BWQCAM, VIDEO_CQCAM, VIDEO_W9966 + - SCSI: Disable SCSI_IMM, SCSI_PPA + - [x86] net/ethernet: Disable ATP + * bluetooth: Disable BT_HCIBTUART; the serial_cs and hci_uart drivers + should be used instead + * PCI: Disable PCIEPORTBUS in configurations for systems without PCI + Express: armel/{iop32x,ixp4xx}, mips/!octeon, mipsel/*, sh4/* + * [armhf/{armmp,mx5}] cpufreq: Enable GENERIC_CPUFREQ_CPU0 as module, + replacing CPU_FREQ_IMX + * [armhf/armmp] Enable PINCTRL_WM8850, replacing GPIO_VT8500 + * [powerpc/powerpc64] Enable CPU_FREQ_CBE (previously CBE_CPUFREQ) as module + * [armel] Re-enable iop32x and ixp4xx flavours + * aufs: Update to aufs3.x-rcN-20130909 + + [ Bastian Blank ] + * Symlink doc directory in linux-headers packages. + * Make gcc-4.8 the default compiler. + * Use default font selection. + * Enable NFS 4.2 client support. + * Use ext4 for all ext-variants. + + -- Ben Hutchings Thu, 12 Sep 2013 03:57:27 +0100 + +linux (3.11~rc7-1~exp1) experimental; urgency=low + + * New upstream release candidate + + [ Ben Hutchings ] + * [arm,mips,s390,sh4] Enable KPROBES + * trace: Enable KPROBE_EVENT (Closes: #640953) + * trace: Enable UPROBES, UPROBE_EVENT (Closes: #691167) + * irq: Always define devm_{request_threaded,free}_irq() (fixes FTBFS on + s390,s390x) + * [armel] Disable iop32x and ixp4xx flavours (fixes FTBFS) + * Clean up maintainer scripts and templating system + - Move all templates under debian/templates + - linux-image: Remove undocumented $KERNEL_ARCH variable from hook + environment + - Use only one template syntax (@keyword@) and do all substitutions + in gencontrol.py + - linux-image.postinst: Remove debconf warning about ramdisk variable in + /etc/kernel-img.conf + - linux-image.postinst: Remove debconf warning about missing firmware; + this should now be redundant and it annoys users that don't need the + files (Closes: #612822) + * Update Brazilian Portugese debconf template translations + (Fernando Ike de Oliveira) (Closes: #719725) + * hid: Enable HID_HUION as module (Closes: #721002) + * [powerpc,x86] hid: Enable HID_APPLEIR as module + * ACPI: Enable ACPI_INITRD_TABLE_OVERRIDE (Closes: #721310) + * net: Enable NET_MPLS_GSO + * nfc: Enable NFC_SIM as module + * md: Enable DM_SWITCH as module + * net: Enable NLMON as module + * wireless: Enable ATH10K, ATH10K_PCI as modules + * media: Enable VIDEO_USBTV as module + * video: Enable FB_SMSCUFX as module + * usb/serial: Enable USB_SERIAL_WISHBONE, USB_SERIAL_FLASHLOADER, + USB_SERIAL_SUUNTO as modules + * infiniband: Enable INFINIBAND_ISERT as module + * xen: Enable XEN_BALLOON_MEMORY_HOTPLUG + * fs: Enable QNX6FS_FS as module + * f2fs: Enable F2FS_FS_SECURITY + * 9p: Enable 9P_FS_SECURITY + * sunrpc: Enable SUNRPC_DEBUG + * vhost: Enable VHOST_SCSI as module + * [x86] video: Enable FB_HYPERV as module + * [x86] snd-hda-intel: Enable SND_HDA_I915 + * [x86] mmc: Enable MMC_SDHCI_ACPI as module + * [x86] comedi: Enable COMEDI_ADV_PCI1724, COMEDI_NI_LABPC_PCI (formerly + COMEDI_NI_LABPC) as modules + * [x86] Enable MLX5_INFINIBAND as module + * [amd64] iommu: Enable AMD_IOMMU_V2 + * [x86,ia64] fs: Enable EFIVAR_FS as module + * wireless/ti: Disable WL_TI on all configurations except armhf/armmp + * [hppa,mips,mipsel,sh4,sparc] ehci-hcd: Enable USB_EHCI_ROOT_HUB_TT and + USB_EHCI_TT_NEWSCHED in all configurations, consistent with other + architectures + + -- Ben Hutchings Sun, 01 Sep 2013 05:15:57 +0100 + +linux-tools (3.11~rc4-1~exp1) experimental; urgency=low + + * New upstream release candidate + + [ Ben Hutchings ] + * linux-tools: Build perf documentation out-of-tree, as this now works + and our previous workaround does not + + -- Ben Hutchings Thu, 08 Aug 2013 16:21:00 +0200 + +linux (3.11~rc4-1~exp1) experimental; urgency=low + + * New upstream release candidate + + [ Ben Hutchings ] + * aufs: Update to aufs3.x-rcN-20130805 + + [ Hector Oron ] + * [armhf/armmp] Enable NET_CALXEDA_XGMAC as module (Closes: #717269) + + -- Ben Hutchings Thu, 08 Aug 2013 13:09:47 +0200 + +linux (3.10.11-1) unstable; urgency=low + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.10.8 + - [arm] perf/arm: Fix armpmu_map_hw_event() + - memcg: don't initialize kmem-cache destroying work for root caches + - fs/proc/task_mmu.c: fix buffer overflow in add_page_map() + - elevator: Fix a race in elevator switching + - mac80211: fix infinite loop in ieee80211_determine_chantype + - can: pcan_usb: fix wrong memcpy() bytes length + - cfg80211: fix P2P GO interface teardown + - ASoC: dapm: Fix empty list check in dapm_new_mux() + - ALSA: 6fire: make buffers DMA-able (pcm) + - ALSA: 6fire: make buffers DMA-able (midi) + - USB: ti_usb_3410_5052: fix big-endian firmware handling + - USB: mos7720: fix broken control requests + - Fix TLB gather virtual address range invalidation corner cases + - [arm] 7809/1: perf: fix event validation for software group leaders + (CVE-2013-4254) + - jbd2: Fix use after free after error in jbd2_journal_dirty_metadata() + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.10.9 + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.10.10 + - [s390] KVM: s390: move kvm_guest_enter,exit closer to sie + - mac80211: don't wait for TX status forever + - tracing/kprobe: Wait for disabling all running kprobe handlers + - tracing: Fix many race conditions including potential use-after-free + - tracing/kprobes: Fail to unregister if probe event files are in use + - tracing/uprobes: Fail to unregister if probe event files are in use + - ftrace: Check module functions being traced on reload + - zd1201: do not use stack as URB transfer_buffer + - VFS: collect_mounts() should return an ERR_PTR + - [arm] davinci: nand: specify ecc strength + - drm/radeon/r7xx: fix copy paste typo in golden register setup + - drm/radeon: fix UVD message buffer validation + - drm/i915: Invalidate TLBs for the rings after a reset + - nilfs2: remove double bio_put() in nilfs_end_bio_write() for + BIO_EOPNOTSUPP error + - Hostap: copying wrong data prism2_ioctl_giwaplist() + - SCSI: zfcp: fix lock imbalance by reworking request queue locking + - SCSI: zfcp: fix schedule-inside-lock in scsi_device list loops + - SCSI: sg: Fix user memory corruption when SG_IO is interrupted by a + signal + - [x86] get_unmapped_area: Access mmap_legacy_base through mm_struct member + - bcache: FUA fixes + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.10.11 + - drm/nouveau/mc: fix race condition between constructor and request_irq() + - jfs: fix readdir cookie incompatibility with NFSv4 (Closes: #714974) + - [powerpc] Work around gcc miscompilation of __pa() on 64-bit + - [powerpc] Don't Oops when accessing /proc/powerpc/lparcfg without + hypervisor + - timer_list: correct the iterator for timer_list + - drivers/base/memory.c: fix show_mem_removable() to handle missing sections + - memcg: check that kmem_cache has memcg_params before accessing it + - SUNRPC: Fix memory corruption issue on 32-bit highmem systems + - ath9k_htc: Restore skb headroom when returning skb to mac80211 + - iscsi-target: Fix ImmediateData=Yes failure regression in >= v3.10 + - iscsi-target: Fix potential NULL pointer in solicited NOPOUT reject + - ACPI / EC: Add ASUSTEK L4R to quirk list in order to validate ECDT + - regmap: rbtree: Fix overlapping rbnodes. + + [ Ben Hutchings ] + * [rt] Update to 3.10.10-rt7: + - hwlat-detector: Update hwlat_detector to add outer loop detection + - hwlat-detector: Use thread instead of stop machine + - hwlat-detector: Use trace_clock_local if available + - genirq: do not invoke the affinity callback via a workqueue + - simple-wait: rename and export the equivalent of waitqueue_active() + - simple-wait: Fix a race condition with swait wakeups vs adding items + to the list + - rcu: Use swait_wake_all() in rcu_nocb_gp_cleanup() + * aufs: Update to aufs3.10-20130826 + * aufs: mvdown, don't let unprivileged users provoke a WARNING + * [x86] ACPI: Re-enable ACPI_HOTPLUG_MEMORY as built-in + * [x86] amd64_edac: Fix single-channel setups (Closes: #717473) + * [x86] efi: Ensure efi-pstore is loaded on EFI systems + * bug script: Prompt to include crash logs from pstore + * ipv6: remove max_addresses check from ipv6_create_tempaddr (CVE-2013-0343) + * HID: validate HID report id size (CVE-2013-2888) + * HID: pantherlord: validate output report details (CVE-2013-2892) + * HID: ntrig: validate feature report details (CVE-2013-2896) + * HID: sensor-hub: validate feature report details (CVE-2013-2898) + * HID: picolcd_core: validate output report details (CVE-2013-2899) + * HID: check for NULL field when setting values + + [ Ian Campbell ] + * [armel]: Enable MVMDIO and USB_EHCI_HCD_ORION on Kirkwood and Orion + (Closes: #719680) + * Bump ABI to 3 + * [armhf]: Add udebs for armmp flavour + + -- Ben Hutchings Tue, 10 Sep 2013 14:13:16 +0100 + +linux-tools (3.10-4) unstable; urgency=low + + * Sourceful upload for the perl 5.18 transition + * usbip: Fix package version override to be binNMU-safe + + -- Ben Hutchings Fri, 30 Aug 2013 12:44:56 +0100 + +linux (3.10.7-1) unstable; urgency=low + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.10.6 + - [arm] Modify vectors page to defend against ROP buffer overflow attacks + - [armel] 7790/1: Fix deferred mm switch on VIVT processors + - [armel] 7791/1: a.out: remove partial a.out support + - [powerpc] VPHN topology change updates all siblings + - hwmon: (max6697) fix MAX6581 ideality + - USB: mos7840: fix race in register handling + - USB: mos7840: fix race in led handling + - mac80211: fix duplicate retransmission detection + - mac80211: fix ethtool stats for non-station interfaces + - ixgbe: Fix Tx Hang issue with lldpad on 82598EB + - Bluetooth: ath3k: don't use stack memory for DMA + - Bluetooth: fix wrong use of PTR_ERR() in btusb + - svcrpc: fix gss-proxy xdr decoding oops + - svcrpc: fix gss_rpc_upcall create error + - svcrpc: fix kfree oops in gss-proxy code + - zram: avoid invalid memory access in zram_exit() + - zram: use zram->lock to protect zram_free_page() in swap free notify path + - zram: avoid double free in function zram_bvec_write() + - zram: avoid access beyond the zram device + - zram: protect sysfs handler from invalid memory access + - Revert "cpuidle: Quickly notice prediction failure in general case" + - cpufreq: Fix cpufreq driver module refcount balance after suspend/resume + - Revert "cpuidle: Quickly notice prediction failure for repeat mode" + - drm/radeon: Disable dma rings for bo moves on r6xx + - xen-blkfront: use a different scatterlist for each request + - drm/radeon: never unpin UVD bo v3 + - Btrfs: fix crash regarding to ulist_add_merge + - [s390] bitops: fix find_next_bit_left + - userns: unshare_userns(&cred) should not populate cred on failure + (CVE-2013-4205) + - ipv6: take rtnl_lock and mark mrt6 table as freed on namespace cleanup + - usbnet: do not pretend to support SG/TSO + - net_sched: Fix stack info leak in cbq_dump_wrr(). + - af_key: more info leaks in pfkey messages + - net_sched: info leak in atm_tc_dump_class() + - 8139cp: Add dma_mapping_error checking + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.10.7 + - [powerpc] Save the TAR register earlier + - [powerpc] tm: Fix context switching TAR, PPR and DSCR SPRs + - ext4: make sure group number is bumped after a inode allocation race + - regmap: cache: Make sure to sync the last register in a block + - hwmon: (adt7470) Fix incorrect return code check + - media: em28xx: fix assignment of the eeprom data + - ACPI / PM: Walk physical_node_list under physical_node_lock + - ALSA: 6fire: fix DMA issues with URB transfer_buffer usage + - Btrfs: release both paths before logging dir/changed extents + - LOCKD: Don't call utsname()->nodename from nlmclnt_setlockargs + - SUNRPC: Don't auto-disconnect from the local rpcbind socket + - SUNRPC: If the rpcbind channel is disconnected, fail the call to + unregister + - virtio/console: Quit from splice_write if pipe->nrbufs is 0 + - virtio/console: Add pipe_lock/unlock for splice_write + - virtio: console: fix race with port unplug and open/close + - virtio: console: fix race in port_fops_open() and port unplug + - virtio: console: clean up port data immediately at time of unplug + - virtio: console: fix raising SIGIO after port unplug + - virtio: console: return -ENODEV on all read operations after unplug + - drm/radeon: stop sending invalid UVD destroy msg + - ext4: flush the extent status cache during EXT4_IOC_SWAP_BOOT + - cifs: extend the buffer length enought for sprintf() using + - zram: allow request end to coincide with disksize + - reiserfs: fix deadlock in umount + - [x86] drm/i915: initialize gt_lock early with other spin locks + + [ Ben Hutchings ] + * [x86] Enable ASUS_OLED as module (Closes: #680016) + * [armel/orion5x] I2C: mv64xxx: fix race between FSM/interrupt and process + context (Closes: #622325) + * [rt] Update to 3.10.6-rt3 + - hpsa: fix warning with smp_processor_id() in preemptible + * [arm] Change SERIAL_8250_PCI from built-in to module + * net: Change WIZNET_W5{1,3}00 from built-in(!) to module + * net: Change DROP_MONITOR from built-in to module + * netlink: Change NETLINK_DIAG from built-in to module; enable on + armel/{iop32x,ixp4xx,orion5x} + + [ Thorsten Glaser ] + * [m68k] debian/patches/bugfix/m68k/atari-irqs.patch: patch from mailing list + to silence IRQ problems on Atari platforms with multi-platform kernel + * [m68k] debian/patches/bugfix/m68k/type-fix-div64.patch: patch from Andreas + Schwab to handle do_div being called with a non-u32 second argument + * [m68k] begin working on d-i kernel configs (just enough to not FTBFS) + + -- Ben Hutchings Sat, 17 Aug 2013 22:35:15 +0200 + +linux-tools (3.10-3) unstable; urgency=low + + * linux-kbuild: Fix no-modules case in modpost wrapper (Closes: #719129) + + -- Ben Hutchings Thu, 08 Aug 2013 21:49:02 +0200 + +linux (3.10.5-1) unstable; urgency=low + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.10.4 + - ipv6,mcast: always hold idev->lock before mca_lock + - ipv6: call udp_push_pending_frames when uncorking a socket with AF_INET + pending data (CVE-2013-4162) + - ipv6: ip6_append_data_mtu did not care about pmtudisc and frag_size + (CVE-2013-4163) + - sunvnet: vnet_port_remove must call unregister_netdev + - ipv6: only static routes qualify for equal cost multipathing + (CVE-2013-4125) + - atl1e: fix dma mapping warnings + - atl1e: unmap partially mapped skb on dma error and free skb + - vlan: mask vlan prio bits + - vlan: fix a race in egress prio management + - fuse: readdirplus: fix dentry leak + - fuse: readdirplus: fix instantiate + - fuse: readdirplus: sanity checks + - bcache: Fix a dumb race + - bcache: Advertise that flushes are supported + - bcache: Shutdown fix (possibly fixes #715019) + - bcache: Fix a sysfs splat on shutdown + - bcache: Journal replay fix + - ext4: fix error handling in ext4_ext_truncate() + - media: saa7134: Fix unlocked snd_pcm_stop() call + - media: dmxdev: remove dvb_ringbuffer_flush() on writer side + - lockd: protect nlm_blocked access in nlmsvc_retry_blocked + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.10.5 + - mm: fix the TLB range flushed when __tlb_remove_page() runs out of slots + - iscsi-target: Fix tfc_tpg_nacl_auth_cit configfs length overflow + - iser-target: Fix session reset bug with RDMA_CM_EVENT_DISCONNECTED + - iscsi-target: Fix ISCSI_OP_SCSI_TMFUNC handling for iser + - firewire: fix libdc1394/FlyCap2 iso event regression + - SCSI: sd: fix crash when UA received on DIF enabled device + - tracing: Remove locking trace_types_lock from + tracing_reset_all_online_cpus() + - usb: host: xhci: Enable XHCI_SPURIOUS_SUCCESS for all controllers with + xhci 1.0 + - xhci: fix null pointer dereference on ring_doorbell_for_active_rings + - xhci: Avoid NULL pointer deref when host dies. + - staging: comedi: fix a race between do_cmd_ioctl() and read/write + - Btrfs: fix wrong write offset when replacing a device + - Btrfs: fix lock leak when resuming snapshot deletion + - Btrfs: re-add root to dead root list if we stop dropping it + - xen-netfront: pull on receive skb may need to happen earlier + - md: Remove recent change which allows devices to skip recovery. + - md/raid1: fix bio handling problems in process_checks() + - md/raid5: fix interaction of 'replace' and 'recovery'. + - md/raid10: remove use-after-free bug. + - svcrdma: underflow issue in decode_write_list() + - nfsd: nfsd_open: when dentry_open returns an error do not propagate as + struct file + - ACPI / scan: Do not try to attach scan handlers to devices having them + - drm/radeon: fix endian issues with DP handling (v3) + - drm/radeon: fix combios tables on older cards + - drm/i915: fix up ring cleanup for the i830/i845 CS tlb w/a + - drm/i915: Fix write-read race with multiple rings + - Partially revert "drm/i915: unconditionally use mt forcewake on hsw/ivb" + - drm/i915: Fix incoherence with fence updates on Sandybridge+ + - drm/i915: fix long-standing SNB regression in power consumption after resume v2 + - drm/i915: Fix dereferencing invalid connectors in is_crtc_connector_off() + - drm/i915: correctly restore fences with objects attached + - drm/i915: Serialize almost all register access + - drm/radeon/atom: initialize more atom interpretor elements to 0 + - mm: mempolicy: fix mbind_range() && vma_adjust() interaction + - tty_port: Fix refcounting leak in tty_port_tty_hangup() + - vfs: livelock avoidance in sget() + - iscsi-target: Fix iscsit_add_reject* usage for iser + - drm/i915: Correct obj->mm_list link to + dev_priv->dev_priv->mm.inactive_list + + [ Ben Hutchings ] + * [hppa] udeb: Add core-modules package (Closes: #718270) + * nl80211: fix another nl80211_fam.attrbuf race + * Bump ABI to 2 + * ext4: fix retry handling in ext4_ext_truncate() + * atl1c: Fix misuse of netdev_alloc_skb in refilling rx ring + (Closes: #718505) + * [rt] genpatch.py: Accept missing series-rt + * [rt] Update to 3.10.4-rt1 and reenable + * [rt] genpatch.py: Fix parsing of upstream patches with no header + * aufs: Update to aufs3.10-20130805 + * [rt] md: Disable BCACHE, as it fails to build + * SCSI: Don't attempt to send extended INQUIRY command if skip_vpd_pages is + set (Closes: #719002) + + -- Ben Hutchings Wed, 07 Aug 2013 22:38:45 +0200 + +linux (3.10.3-1) unstable; urgency=low + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.10.2 + - CIFS: Fix a deadlock when a file is reopened + - jbd2: move superblock checksum calculation to jbd2_write_superblock() + - jbd2: fix theoretical race in jbd2__journal_restart + - ext4: fix corruption when online resizing a fs with 1K block size + - ext3,ext4: don't mess with dir_file->f_pos in htree_dirblock_to_tree() + - ext4: check error return from ext4_write_inline_data_end() + - xhci: check for failed dma pool allocation + - [x86] drivers: hv: switch to use mb() instead of smp_mb() + - cgroup: fix umount vs cgroup_event_remove() race + - cgroup: fix RCU accesses to task->cgroups + - [hppa] Fix gcc miscompilation in pa_memcpy() + - [hppa] Ensure volatile space register %sr1 is not clobbered + - genirq: Fix can_request_irq() for IRQs without an action + (Closes: #709647) + - [x86] ACPI: Fix HP Folio 13 EC register access (Closes: #684186) + + ACPI: Add CMOS RTC Operation Region handler support + + ACPI / EC: Add HP Folio 13 to ec_dmi_table in order to skip DSDT scan + - ocfs2: xattr: fix inlined xattr reflink + - iwlwifi: pcie: fix race in queue unmapping + - Btrfs: fix estale with btrfs send + - Btrfs: hold the tree mod lock in __tree_mod_log_rewind + - Btrfs: only do the tree_mod_log_free_eb if this is our last ref + - ext4: fix data offset overflow on 32-bit archs in + ext4_inline_data_fiemap() + - ext4: fix overflows in SEEK_HOLE, SEEK_DATA implementations + - ext4: fix data offset overflow in ext4_xattr_fiemap() on 32-bit archs + - ext4: fix overflow when counting used blocks on 32-bit architectures + - ext4: fix ext4_get_group_number() + - ext4: don't allow ext4_free_blocks() to fail due to ENOMEM + - [arm] 7767/1: let the ASID allocator handle suspended animation + - [arm] 7768/1: prevent risks of out-of-bound access in ASID allocator + - [arm] 7769/1: Cortex-A15: fix erratum 798181 implementation + - [arm] 7778/1: smp_twd: twd_update_frequency need be run on all online CPUs + - [armhf] dts: imx: cpus/cpu nodes dts updates + - [armhf] drivers/dma/pl330.c: fix locking in pl330_free_chan_resources() + - memcg, kmem: fix reference count handling on the error path + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.10.3 + - cpufreq: Revert commit a66b2e to fix suspend/resume regression + - iio: Fix iio_channel_has_info + - iio: inkern: fix iio_convert_raw_to_processed_unlocked + - ALSA: seq-oss: Initialize MIDI clients asynchronously + - ALSA: Fix unlocked snd_pcm_stop() calls in various drivers + - libata-zpodd: Use ata_tf_init() to select the right device + - md/raid10: fix bug which causes all RAID10 reshapes to move no data. + - md/raid10: fix two bugs affecting RAID10 reshape. + - md/raid10: fix two problems with RAID10 resync. (Closes: #717681) + - mac80211: close AP_VLAN interfaces before unregistering all + - svcrpc: fix failures to handle -1 uid's + - svcrpc: fix handling of too-short rpc's + - drm/i915: Fix context sizes on HSW + - drm/i915: Only clear write-domains after a successful wait-seqno + - drm/gem: fix not to assign error value to gem name + - drm/nv50-/disp: Use output specific mask in interrupt (Closes: #717590) + - iommu/amd: Only unmap large pages from the first pte + - MIPS: Octeon: Don't clobber bootloader data structures. + - perf: Clone child context from parent context pmu + - perf: Remove WARN_ON_ONCE() check in __perf_event_enable() for valid + scenario + - perf: Fix perf_lock_task_context() vs RCU + - tracing: Protect ftrace_trace_arrays list in trace_events.c + - tracing: Fix race between deleting buffer and setting events + + [ Arnaud Patard ] + * udeb: add ehci-pci to usb-modules + + [ Ben Hutchings ] + * udeb: Add snd-cmi8328 and snd-scs1x to sound-modules, thanks to + Samuel Thibault (Closes: #717183) + * be2net: Fix to avoid hardware workaround when not needed + * iwlwifi: Update 3160 and 7260 support to work with production firmware + * rtlwifi: rtl8723ae: Fix typo in firmware names + * [x86] Change INTEL_MEI_ME back to a module (Closes: #717383) + * [armhf/armmp] Enable NET_CALXEDA_XGMAC as module (Closes: #717269) + * linux-source: Switch compression of tarball and patch to xz. Disable + compression of package (but use gzip, to keep old tools happy). + * linux-source: Install kernel config files for linux-image packages in + /usr/src/linux-config-$UPSTREAMVERSION directory + * ata: Disable SATA_INIC162X - this driver corrupts data and is not + expected to be fixed (Closes: #714295) + * writeback: Fix periodic writeback after fs mount + * sfc: Fix memory leak when discarding scattered packets + * neighbour: fix a race in neigh_destroy() + * virtio: support unlocked queue poll + * virtio_net: fix race in RX VQ processing + * vhost-net: fix use-after-free in vhost_net_flush + * tuntap: correctly linearize skb when zerocopy is used + * macvtap: correctly linearize skb when zerocopy is used + * ipv6: in case of link failure remove route directly instead of + letting it expire + * 9p: fix off by one causing access violations and memory corruption + + [ Thorsten Glaser ] + * Update m68k configs (Closes: #717689): + - disable some functionality due to size constraints + - switch to using initrd + - drop all flavours; build a generic image that runs on + multiple subarchitectores (old Amiga, Atari, Macintosh tested; + old BVME6000, MVME147, MVME16x, new Apollo, Q40/Q60 untested) + - use gcc-4.8 + - add patch to make Atari EtherNAT actually selectable + * nfs: Enable swap on NFS + * fs/nls: Enable Macintosh HFS+ codepage modules + * debian/control: Fix Vcs-Svn: use anonscm.debian.org + + -- Ben Hutchings Sun, 28 Jul 2013 00:33:32 +0100 + +linux-tools (3.10-2) unstable; urgency=low + + * linux-kbuild: Fix use of getline() in modpost wrapper (Closes: #717195) + + -- Ben Hutchings Thu, 18 Jul 2013 04:02:11 +0100 + +linux-tools (3.10-1) unstable; urgency=low + + * New upstream release + + [ Chris Boot ] + * Update modpost-symbol-prefix.patch for 3.10 + + [ Ben Hutchings ] + * debian/patches: Add DEP-3 headers (From, Subject, Forwarded) to all patches + * debian/copyright: Convert to machine-readable format (fka DEP-5) + * debian/copyright: Add explanation of indirect linking of perf to OpenSSL + * debian/rules.real: Remove support for pre-multiarch dpkg + * Update policy version to 3.9.4 + - debian/rules: Implement build-arch and build-indep targets + * linux-kbuild: Update modpost wrapper for 3.10 + - Implement the -T option + + -- Ben Hutchings Tue, 16 Jul 2013 13:29:22 +0100 + +linux (3.10.1-1) unstable; urgency=low + + * New upstream release: http://kernelnewbies.org/Linux_3.10 + - netfilter: nf_nat_sip: fix mangling (Closes: #715822) + - drm/i915: Add HPD IRQ storm detection (Closes: #572537) + - ipv6: ip6_sk_dst_check() must not assume ipv6 dst (CVE-2013-2232) + - af_key: fix info leaks in notify messages (CVE-2013-2234) + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.10.1 + - libceph: Fix NULL pointer dereference in auth client code (CVE-2013-1059) + - ceph: fix sleeping function called from invalid context. + - libceph: fix invalid unsigned->signed conversion for timespec encoding + - module: do percpu allocation after uniqueness check. No, really! + - charger-manager: Ensure event is not used as format string + - hpfs: better test for errors + - crypto: sanitize argument for format string + - MAINTAINERS: add stable_kernel_rules.txt to stable maintainer information + - futex: Take hugepages into account when generating futex_key + - tty: Reset itty for other pty + - Revert "serial: 8250_pci: add support for another kind of NetMos + Technology PCI 9835 Multi-I/O Controller" + - NFSv4.1 end back channel session draining + - nfsd4: fix decoding of compounds across page boundaries + - KVM: VMX: mark unusable segment as nonpresent + - SCSI: sd: Fix parsing of 'temporary ' cache mode prefix + - cpufreq: Fix cpufreq regression after suspend/resume + - Revert "memcg: avoid dangling reference count in creation failure" + + [ Ben Hutchings ] + * cassini: Make missing firmware non-fatal (Closes: #714128) + * debian/patches: Add DEP-3 headers (From/Author, Subject/Description, + Forwarded/Origin) to all patches + * aufs: Add DEP-3 headers to generated/copied patches + * [rt] genpatch.py: Work with upstream patch series as well as git + - Fold convert-series into genpatch.py + * [rt] genpatch.py: Add Origin header to all patches + * debian/bin/check-patches.sh: Report missing DEP-3 headers + * alx: Use upstream minimal driver + - Update to 3.11-rc1 + * [x86] efivars: Reenable 'paranoid' size check by default, as it should + no longer have false positives + * debian/patches: Reorder and group patches in series + * debian/rules.real: Remove support for pre-multiarch dpkg + * Update policy version to 3.9.4 + - debian/control: Put xen-linux-system-* in the 'metapackages' section + * linux-source: Add bc to recommended packages (Closes: #715413) + * udeb: Add ath6kl_usb and mwifiex_usb to nic-wireless-modules + * udeb: Add pm80xx (previously pm8001) to scsi-extra-modules + * udeb: Add virtio_scsi to virtio-modules + * Set ABI to 1 + * xen/blkback: Check device permissions before allowing OP_DISCARD + (CVE-2013-2140) + * udeb: Remove obsolete and unsupported drivers and filesystems + - Remove ppa from scsi-modules + - Remove floppy-modules, irda-modules, parport-modules, plip-modules, + qnx4-modules, reiserfs-modules, ufs-modules + * [x86] efivars: Re-enable pstore support by default. It can be disabled + by setting module parameter pstore_disable=Y. + + -- Ben Hutchings Tue, 16 Jul 2013 02:06:53 +0100 + +linux (3.10~rc7-1~exp1) experimental; urgency=low + + * New upstream release candidate + + [ Ben Hutchings ] + * [armhf/armmp] Add EMAC ethernet driver found on Allwinner A10 SoCs, + thanks to Niall Walsh (Closes: #711998) + - Add MDIO bus driver for the Allwinner EMAC + - Add EMAC controller node to sun4i DTSI + - cubieboard: Enable ethernet (EMAC) support in dts + - Add EMAC Controller to Hackberry dt + * [x86] cpufreq: Enable X86_INTEL_PSTATE (Closes: #712062) + * debian/control: Add Homepage field + * debian/watch: Add watch file and update script + * misc/bmp085: Enable building as a module + * misc: Enable BMP085_I2C as module + * team: Enable NET_TEAM_MODE_RANDOM as module + * 8021q: Enable VLAN_8021Q_MVRP + * batman: Enable BATMAN_ADV_NC + * netlink: Enable NETLINK_MMAP, NETLINK_DIAG [!armel/{iop32x,ixp4xx,orion5x}] + * sctp: Enable SCTP_COOKIE_HMAC_SHA1 + * tipc: Enable TIPC_MEDIA_IB + * [x86] cpufreq: Enable X86_AMD_FREQ_SENSITIVITY as module + * [x86] i2c: Enable I2C_ISMT, I2C_DESIGNWARE_PCI as modules + * [x86] mouse: Enable MOUSE_CYAPA as modules + * [armel/{iop32x,ixp4xx,orion5x}] Disable features to reduce kernel size + - Disable KSM, YAMA + - [armel/orion5x] Disable FTRACE + + -- Ben Hutchings Mon, 24 Jun 2013 14:55:23 +0100 + +linux (3.10~rc5-1~exp1) experimental; urgency=low + + * New upstream release candidate + + [ Ben Hutchings ] + * [x86] Enable HYPERVISOR_GUEST + * udeb: Clean up configuration: + - Move i2c-algo-bit to i2c-modules + - Remove redundant control file overrides + - [s390] Use symlinks to follow s390x configuration + - [sparc64] Use symlinks to follow sparc configuration + - Only list the 'new' firewire modules in firewire-core-modules + - Remove obsolete eth1394 and firewire-core-modules dependency from + nic-modules + - Move ide-modules and ide-core-modules into ia64 configuration + - [powerpc,x86] Fold nic-extra-modules into nic-modules + * iwlegacy: Use consistent condition for il_pm_ops (fixes FTBFS on ia64) + + -- Ben Hutchings Tue, 11 Jun 2013 04:44:05 +0100 + +linux (3.10~rc4-1~exp1) experimental; urgency=low + + * New upstream release candidate + + [ Ben Hutchings ] + * aufs: Update to aufs3.x-rcN-20130520 + * alx: Update VLAN tag handling for 3.10 + * md: Enable BCACHE as module + * net/usb: Enable USB_RTL8152 as module + - udeb: Add r8152 to nic-usb-modules + * rt2800usb: Enable RT2800USB_RT55XX + * net/wireless: Enable RTL8188EE + - udeb: Add rtl8188ee to nic-wireless-modules + * linux-image: Restore package date (in ISO format) to utsname version + string ('uname -v' output) + + -- Ben Hutchings Mon, 03 Jun 2013 02:43:51 +0100 + +linux (3.9.8-1) unstable; urgency=low + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.9.7 + - b43: stop format string leaking into error msgs (CVE-2013-2852) + - ACPI / video: Do not bind to device objects with a scan handler + - libceph: must hold mutex for reset_changed_osds() + - ceph: ceph_pagelist_append might sleep while atomic + - rbd: don't destroy ceph_opts in rbd_add() + - Bluetooth: Fix missing length checks for L2CAP signalling PDUs + - kmsg: honor dmesg_restrict sysctl on /dev/kmsg + - memcg: don't initialize kmem-cache destroying work for root caches + - md/raid1: consider WRITE as successful only if at least one non-Faulty + and non-rebuilding drive completed it. + - md/raid1,5,10: Disable WRITE SAME until a recovery strategy is in place + - [x86] Modify UEFI anti-bricking code + - powerpc: Fix stack overflow crash in resume_kernel when ftracing + - USB: pl2303: fix device initialisation at open + - USB: f81232: fix device initialisation at open + - USB: spcp8x5: fix device initialisation at open + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.9.8 + - ARM: 7752/1: errata: LoUIS bit field in CLIDR register is incorrect + - clk: remove notifier from list before freeing it + - [hppa] make interrupt and interruption stack allocation reentrant + - ACPI / dock: Take ACPI scan lock in write_undock() + - net: fec: fix kernel oops when plug/unplug cable many times + - tcp: fix tcp_md5_hash_skb_data() + - net/802/mrp: fix lockdep splat + - ipv6: fix possible crashes in ip6_cork_release() + - r8169: fix offloaded tx checksum for small packets. + - xfrm: properly handle invalid states as an error + - ip_tunnel: fix kernel panic with icmp_dest_unreach + - net: Block MSG_CMSG_COMPAT in send(m)msg and recv(m)msg + - net: force a reload of first item in hlist_nulls_for_each_entry_rcu + - vhost_net: clear msg.control for non-zerocopy case during tx + - net: sctp: fix NULL pointer dereference in socket destruction + - team: check return value of team_get_port_by_index_rcu() for NULL + - team: move add to port list before port enablement + - l2tp: Fix PPP header erasure and memory leak + - sctp: fully initialize sctp_outq in sctp_outq_init + - macvtap: set transport header before passing skb to lower device + - tuntap: set transport header before passing it to kernel + - packet: set transport header before doing xmit + - netback: set transport header before passing it to kernel + - net_sched: better precise estimation on packet length for untrusted + packets + - firmware loader: fix use-after-free by double abort + - target/iscsi: don't corrupt bh_count in iscsit_stop_time2retain_timer() + - rbd: use the correct length for format 2 object names + - perf: Fix perf mmap bugs + - perf: Fix mmap() accounting hole + + [ Ben Hutchings ] + * yama: Disable ptrace restrictions by default, and change boot message + to indicate this (Closes: #712740) + * fanotify: info leak in copy_event_to_user() (CVE-2013-2148) + * drivers/cdrom/cdrom.c: use kzalloc() for failing hardware (CVE-2013-2164) + * block: do not pass disk names as format strings (CVE-2013-2851) + + -- Ben Hutchings Sat, 29 Jun 2013 18:44:21 +0100 + +linux (3.9.6-1) unstable; urgency=low + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.9.6 + - xhci - correct comp_mode_recovery_timer on return from hibernate + - usb: musb: make use_sg flag URB specific + - USB: keyspan: fix bogus array index + - [arm] 7747/1: pcpu: ensure __my_cpu_offset cannot be re-ordered across + barrier() + - hpfs: fix warnings when the filesystem fills up + - cifs: fix off-by-one bug in build_unc_path_to_root + - ecryptfs: fixed msync to flush data + - eCryptfs: Check return of filemap_write_and_wait during fsync + - hwmon: (adm1021) Strengthen chip detection for ADM1021, LM84 and MAX1617 + - drm: fix a use-after-free when GPU acceleration disabled + - [powerpc] pseries: Force 32 bit MSIs for devices that require it + - [powerpc] pseries: Make 32-bit MSI quirk work on systems lacking firmware + support + + [ Ben Hutchings ] + * [armel/orion5x] Enable EXPERT; disable FIPS, OABI_COMPAT, PCI_QUIRKS, + VGA_ARB to reduce kernel size (really fixes FTBFS) + + -- Ben Hutchings Sat, 15 Jun 2013 04:53:13 +0100 + +linux (3.9.5-1) unstable; urgency=low + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.9.5 + - [arm] 7723/1: crypto: sha1-armv4-large.S: fix SP handling + - mac80211: use just spin_lock() in ieee80211_get_tkip_p2k() + - USB: cxacru: potential underflow in cxacru_cm_get_array() + - TTY: Fix tty miss restart after we turn off flow-control + (Closes: #465823) + - cifs: only set ops for inodes in I_NEW state + - drivers/char/random.c: fix priming of last_data + - random: fix accounting race condition with lockless irq entropy_count + update + - fat: fix possible overflow for fat_clusters + - tg3: Fix data corruption on 5725 with TSO + - ocfs2: goto out_unlock if ocfs2_get_clusters_nocache() failed in + ocfs2_fiemap() + - mm compaction: fix of improper cache flush in migration code + - klist: del waiter from klist_remove_waiters before wakeup waitting process + - wait: fix false timeouts when using wait_event_timeout() + - nilfs2: fix issue of nilfs_set_page_dirty() for page at EOF boundary + - mm: mmu_notifier: re-fix freed page still mapped in secondary MMU + - mm: memcg: remove incorrect VM_BUG_ON for swap cache pages in uncharge + - mm/pagewalk.c: walk_page_range should avoid VM_PFNMAP areas + - mm/THP: use pmd_populate() to update the pmd with pgtable_t pointer + - module: don't unlink the module until we've removed all exposure. + - xfs: kill suid/sgid through the truncate path. + - SUNRPC: Prevent an rpc_task wakeup race + - cifs: fix potential buffer overrun when composing a new options string + - cgroup: initialize xattr before calling d_instantiate() + - [powerpc] 32bit:Store temporary result in r0 instead of r8 + - [powerpc] tm: Fix userspace stack corruption on signal delivery for active + transactions + - [powerpc] tm: Abort on emulation and alignment faults + - iscsi-target: fix heap buffer overflow on error + - KVM: fix sil/dil/bpl/spl in the mod/rm fields + - reiserfs: fix deadlock with nfs racing on create/lookup + - reiserfs: fix problems with chowning setuid file w/ xattrs + - reiserfs: fix spurious multiple-fill in reiserfs_readdir_dentry + - jfs: fix a couple races + - IB/iser: Return error to upper layers on EAGAIN registration failures + - fuse: fix readdirplus Oops in fuse_dentry_revalidate + - target: Re-instate sess_wait_list for target_wait_for_sess_cmds + - xen-netback: Fix regressions caused by fix for CVE-2013-0216 + + coalesce slots in TX path and fix regressions + + don't disconnect frontend when seeing oversize packet + + [ Ben Hutchings ] + * [powerpcspe] Remove installer udebs (really fixes FTBFS) + * [s390] Add pgste to ptep_modify_prot_start() + * [s390] Enable PCI, PCI and USB drivers + * [powerpc] Fix build error in stable/3.9 + * [armel/iop32x,armel/ixp4xx] Disable OABI_COMPAT, PCI_QUIRKS to reduce + kernel size (fixes FTBFS) + * ath9k: Disable PowerSave by default (Closes: #695968) + * [i386] udeb: Add viafb to fb-modules (Closes: #705788) + - [i386] udeb: Move i2c-algo-bit to i2c-modules and make fb-modules + depend on it + - viafb: Autoload on OLPC XO 1.5 only + * fs: Enable F2FS_FS as module (Closes: #711342) + * iio,HID: Enable IIO, HID_SENSOR_HUB, HID_SENSOR_ACCEL_3D, + HID_SENSOR_ALS, HID_SENSOR_GYRO_3D, HID_SENSOR_MAGNETOMETER_3D + as modules (Closes: #711690) + + -- Ben Hutchings Mon, 10 Jun 2013 02:41:53 +0100 + +linux-tools (3.9.4-1) unstable; urgency=low + + * New upstream release + + -- Ben Hutchings Mon, 03 Jun 2013 13:45:52 +0100 + +linux (3.9.4-1) unstable; urgency=low + + * New upstream release: http://kernelnewbies.org/Linux_3.9 + - ALSA: hda - Add generic parser support to Analog Device codec driver + (Closes: #659033) + - Input: add support for Cypress PS/2 Trackpads (Closes: #703607) + - [armel] media: VIDEO_ZORAN is disabled as it requires virt_to_bus() + - [armhf/omap] OMAP_MBOX_FWK and TIDSPBRIDGE is disabled as they are + not yet compatible with ARM multiplatform + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.9.1 + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.9.2 + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.9.3 + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.9.4 + + [ Ben Hutchings ] + * [rt] Disable until it is updated for Linux 3.9 or later + * Build-Depend on bc, needed to build kernel/timeconst.h + * [x86] Enable VMWARE_VMCI, VSOCKETS, VMWARE_VMCI_VSOCKETS as modules + (Closes: #707676) + * README.Debian: Correct reference to Berkeley Database development package + * aufs: Update to aufs3.9-20130506 + * [powerpcspe] Prevent building uImage with missing mkimage, thanks to + Roland Stigge (Closes: #708094) + * udeb: Fix yet more configuration errors causing FTBFS: + - [powerpc/powerpc64] Replace ibmvscsic with ibmvscsi in scsi-modules + - [ppc64] Use symlinks to follow powerpc/powerpc64 configuration + - [powerpcspe] Use symlinks to follow powerpc configuration + (Closes: #708336, #708662) + - Add raid6_pq to md-modules, and make btrfs-modules depend on it + * netfilter: Enable NETFILTER_XT_MATCH_BPF, NETFILTER_XT_MATCH_CONNLABEL + as modules + * bridge: Enable BRIDGE_VLAN_FILTERING + * batman: Enable BATMAN_ADV_DAT + * nfc: Enable NFC_LLCP + * can: Enable CAN_PEAK_USB, CAN_8DEV_USB as modules + * hci_uart: Enable BT_HCIUART_3WIRE + * [amd64,powerpc/powerpc64,ppc64] block: Enable BLK_DEV_RSXX as module + * SCSI: Enable SCSI_CHELSIO_FCOE, SCSI_MPT3SAS, SCSI_UFSHCD as modules + - udeb: Add csiostor, mpt3sas, ufshcd, ufshcd-pci to scsi-extra-modules + * md: Enable DM_CACHE as module + * net/usb: Enable USB_NET_AX88179_178A as module (Closes: #704129) + - udeb: Add ax88179_178a to nic-usb-modules + * net/wireless: Enable AR5523 (Closes: #701777), IWLMVM, + RTL8723AE (Closes: #708348), WIL6210 as modules + - udeb: Add ar5523, iwldvm, iwlmvm, rtl8723ae, wil6210 to + nic-wireless-modules + * serial: Enable SERIAL_RP2 as module + - udeb: Add rp2 to serial-modules + * hw_random: Enable HW_RANDOM_TPM as module + * [x86] watchdog: Enable IE6XX_WDT, VIA_WDT as modules + * media/usb: Enable DVB_USB_AZ6007, USB_GSPCA_JL2005BCD as modules + * stk1160: Enable VIDEO_STK1160_AC97 + * ivtv: Enable VIDEO_IVTV_ALSA as module + * radio: Enable RADIO_SHARK, RADIO_SHARK2, USB_KEENE, USB_MA901 as modules + * hda: Enable SND_HDA_CODEC_CA0132_DSP + * sound/firewire: Enable SND_SCS1X as module + * hid-holtek: Enable HOLTEK_FF + * hid: Enable HID_ICADE, HID_PS3REMOTE, HID_STEELSERIES, HID_THINGM as + modules + * usb/serial: Enable USB_SERIAL_F81232, USB_SERIAL_METRO, USB_SERIAL_QT2, + USB_SERIAL_XSENS_MT, USB_SERIAL_ZTE as modules + - udeb: Add f81232, quatech2, zte_ev to usb-serial-modules + * infiniband: Enable INFINIBAND_OCRDMA as module + * [x86] vfio: Enable VFIO, VFIO_PCI as modules + * [x86] hv: Enable HYPERV_BALLOON as module + * security: Enable SECURITY_YAMA, SECURITY_YAMA_STACKED (Closes: #704750) + * iscsi-target: fix heap buffer overflow on error (CVE-2013-2850) + + [ Aurelien Jarno ] + * [mips] Enable KEXEC. + + [ Arnaud Patard ] + * [armhf] Add armmp flavour + * [armhf] backport usb support for imx53 through chipidea and usb phy nop fixes + * [armhf] backport armada 370/xp thermal support + * [armhf] fix hard freeze when mvneta is used as module + * [arm] backport ehci split patches for omap and orion + * [armel] enable thermal + * [armel] kirkwood: enable more DT configs, thermal, POWER_RESET_* + + -- Ben Hutchings Sat, 01 Jun 2013 23:13:01 +0100 + +linux (3.8.13-1) unstable; urgency=low + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.8.13 + - autofs - remove autofs dentry mount check + - hugetlbfs: fix mmap failure in unaligned size request + (fixes regression in 3.4) + - perf/x86/intel/lbr: Fix LBR filter + - perf/x86/intel/lbr: Demand proper privileges for PERF_SAMPLE_BRANCH_KERNEL + - ipvs: ip_vs_sip_fill_param() BUG: bad check of return value + - netfilter: ctnetlink: don't permit ct creation with random tuple + - ext4: add check for inodes_count overflow in new resize ioctl + - r8169: fix 8168evl frame padding. + - drm/prime: keep a reference from the handle to exported dma-buf (v6) + - Btrfs: compare relevant parts of delayed tree refs + - Btrfs: fix extent logging with O_DIRECT into prealloc + - kernel/audit_tree.c: tree will leak memory when failure occurs in + audit_trim_trees() + + [ Ben Hutchings ] + * udeb: Fix more configuration errors causing FTBFS: + - [m68k,mips,mipsel,ppc64,sparc64] Add crc-modules as common dependency + of btrfs-modules and xfs-modules (and others) + - [powerpc] Add llc to nic-shared-modules + * Bump ABI to 2 + + -- Ben Hutchings Thu, 16 May 2013 00:28:04 +0100 + +linux (3.8.12-1) unstable; urgency=low + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.8.12 + - [powerpc] spufs: Initialise inode->i_ino in spufs_new_inode() + (possibly fixes: #707175) + - iwlwifi: fix freeing uninitialized pointer + - tty: fix up atime/mtime mess, take three + - sysfs: fix use after free in case of concurrent read/write and readdir + - [ia64] Fix initialization of CMCI/CMCP interrupts + - [ia64] Wrong asm register contraints in the futex implementation + (Closes: #702641) + - [ia64] Wrong asm register contraints in the kvm implementation + (Closes: #702639) + - fs/fscache/stats.c: fix memory leak + - hrtimer: Fix ktime_add_ns() overflow on 32bit architectures + - swap: redirty page if page write fails on swap file + - mm: swap: mark swap pages writeback before queueing for direct IO + - ACPI: Fix wrong parameter passed to memblock_reserve + - cgroup: fix an off-by-one bug which may trigger BUG_ON() + - cgroup: fix broken file xattrs + - clockevents: Set dummy handler on CPU_DEAD shutdown (Closes: #700333) + - inotify: invalid mask should return a error number but not set it + (fixes regression in 3.8.1) + - exec: do not abuse ->cred_guard_mutex in threadgroup_lock() + - md: bad block list should default to disabled. + - MD: ignore discard request for hard disks of hybid raid1/raid10 array + (fixes regression in 3.6) + - nfsd4: don't close read-write opens too soon + - wireless: regulatory: fix channel disabling race condition + - ext4/jbd2: don't wait (forever) for stale tid caused by wraparound + - jbd2: fix race between jbd2_journal_remove_checkpoint and + ->j_commit_callback + - ext4: fix journal callback list traversal + - ext4: fix big-endian bug in metadata checksum calculations + - [x86] KVM: X86 emulator: fix source operand decoding for 8bit mov[zs]x + instructions + + [ Ben Hutchings ] + * [rt] Remove xen-linux-system packages and references to Xen support, + as Xen does not support real-time scheduling + * udeb: Fix configuration errors causing FTBFS: + - [armhf/vexpress] Remove ipv6-modules; ipv6 is now built-in + - [mipsel/sb1-bcm91250a,sparc] Add crc-modules as common dependency of + btrfs-modules and xfs-modules (and others) + - [powerpc] Add nic-shared-modules as common dependency of nic-modules + and nic-extra-modules + - Unify module list for nic-shared-modules across architectures [!m68k] + * [rt] Update to 3.8.11-rt8: + - time/timekeeping: shadow tk->cycle_last together with clock->cycle_last + - sched/workqueue: Only wake up idle workers if not blocked on sleeping + spin lock + * aufs: Update to aufs3.8-20130506 + - for linux-3.7, btrfs limits the link count explicitly + - for linux-3.6, push mnt_want_write() outside of i_mutex + - possible bugfix, make sure the target branch is upper + - possible bugfix, error handling in reopen_nondir() + - new copyup implementation + - pin the branch dir + - convert the plink list into hlist + * linux-doc: Include aufs documentation + * [x86] zsmalloc: Change to built-in, as it can no longer be modular + + -- Ben Hutchings Fri, 10 May 2013 04:46:36 +0100 + +linux-tools (3.8.11-1) unstable; urgency=low + + * New upstream stable update + + [ Ben Hutchings ] + * Upload to unstable (Closes: #707023) + + -- Ben Hutchings Tue, 07 May 2013 02:11:16 +0100 + +linux (3.8.11-1) unstable; urgency=high + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.8.6 + - sysfs: fix race between readdir and lseek + - sysfs: handle failure path correctly for readdir() + - rtlwifi: usb: add missing freeing of skbuff + - b43: A fix for DMA transmission sequence errors + - tg3: fix length overflow in VPD firmware parsing (CVE-2013-1929) + - xen-blkback: fix dispatch_rw_block_io() error path + - net/irda: add missing error path release_sock call + - usb: xhci: Fix TRB transfer length macro used for Event TRB. + - Btrfs: fix locking on ROOT_REPLACE operations in tree mod log + - Btrfs: fix race between mmap writes and compression + - USB: serial: fix use-after-free in TIOCMIWAIT + - loop: prevent bdev freeing while device in use + - virtio: console: add locking around c_ovq operations + - nfsd4: reject "negative" acl lengths + - Btrfs: fix space leak when we fail to reserve metadata space + - net: remove a WARN_ON() in net_enable_timestamp() + - 8021q: fix a potential use-after-free + - unix: fix a race condition in unix_release() + - atl1e: drop pci-msi support because of packet corruption + (possibly fixes: #577747) + - ipv6: fix bad free of addrconf_init_net + - ipv6: don't accept multicast traffic with scope 0 + - ipv6: don't accept node local multicast traffic from the wire + - pch_gbe: fix ip_summed checksum reporting on rx + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.8.7 + - drm/nouveau: fix handling empty channel list in ioctl's + - drm/i915: Be sure to turn hsync/vsync back on at crt enable (v2) + (fixes regression in 3.8.3) + - drm: correctly restore mappings if drm_open fails + - mm: prevent mmap_cache race in find_vma() + - mwifiex: limit channel number not to overflow memory + - spinlocks and preemption points need to be at least compiler barriers + - crypto: gcm - fix assumption that assoc has one segment + - NFSv4/4.1: Fix bugs in nfs4[01]_walk_client_list + - vfio-pci: Fix possible integer overflow + - can: gw: use kmem_cache_free() instead of kfree() + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.8.8 + - ipc: set msg back to -EAGAIN if copy wasn't performed + - GFS2: Fix unlock of fcntl locks during withdrawn state + - cifs: Allow passwords which begin with a delimitor (fixes + regression in 3.8) + - [i386] Fix possible incomplete TLB invalidate with PAE pagetables + - sched_clock: Prevent 64bit inatomicity on 32bit systems + - [x86] mm, paravirt: Fix vmalloc_fault oops during lazy MMU updates + - tty: don't deadlock while flushing workqueue + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.8.9 + - [powerpc] add a missing label in resume_kernel + - [powerpc] kvm/powerpc/e500mc: fix tlb invalidation on cpu migration + - kthread: Prevent unpark race which puts threads on the wrong cpu + - hrtimer: Don't reinitialize a cpu_base lock on CPU_UP + - hugetlbfs: add swap entry check in follow_hugetlb_page() + - kernel/signal.c: stop info leak via the tkill and the tgkill syscalls + - hfsplus: fix potential overflow in hfsplus_file_truncate() + - md: raid1,10: Handle REQ_WRITE_SAME flag in write bios + - [x86] KVM: Allow cross page reads and writes from cached translations. + (fixes regression in fix for CVE-2013-1796) + - hsched: Convert BUG_ON()s in try_to_wake_up_local() to WARN_ON_ONCE()s + - [armel] Fix kexec by setting outer_cache.inv_all for Feroceon + - ath9k_htc: accept 1.x firmware newer than 1.3 + - mac80211: fix cfg80211 interaction on auth/assoc request + - crypto: algif - suppress sending source address information in recvmsg + (CVE-2013-3076) + - vm: add and use vm_iomap_memory() helper function + - Btrfs: make sure nbytes are right after log replay + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.8.10 + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.8.11 + - TTY: do not update atime/mtime on read/write + - TTY: fix atime/mtime regression + - [sparc] sparc64: Fix race in TLB batch processing. + - atm: update msg_namelen in vcc_recvmsg() (CVE-2013-3222) + - ax25: fix info leak via msg_name in ax25_recvmsg() (CVE-2013-3223) + - Bluetooth: fix possible info leak in bt_sock_recvmsg() (CVE-2013-3224) + - Bluetooth: RFCOMM - Fix missing msg_namelen update in + rfcomm_sock_recvmsg() (CVE-2013-3225) + - Bluetooth: SCO - Fix missing msg_namelen update in sco_sock_recvmsg() + - caif: Fix missing msg_namelen update in caif_seqpkt_recvmsg() + (CVE-2013-3227) + - irda: Fix missing msg_namelen update in irda_recvmsg_dgram() + (CVE-2013-3228) + - [s390] iucv: Fix missing msg_namelen update in iucv_sock_recvmsg() + (CVE-2013-3229) + - l2tp: fix info leak in l2tp_ip6_recvmsg() + - llc: Fix missing msg_namelen update in llc_ui_recvmsg() (CVE-2013-3231) + - netrom: fix info leak via msg_name in nr_recvmsg() + - NFC: llcp: fix info leaks via msg_name in llcp_sock_recvmsg() + - rose: fix info leak via msg_name in rose_recvmsg() (CVE-2013-3234) + - tipc: fix info leaks via msg_name in recv_msg/recv_stream + (CVE-2013-3235) + - atl1e: limit gso segment size to prevent generation of wrong ip length + fields (Closes: #565404) + - af_unix: If we don't care about credentials coallesce all messages + - ipv6/tcp: Stop processing ICMPv6 redirect messages + - rtnetlink: Call nlmsg_parse() with correct header length + - tcp: incoming connections might use wrong route under synflood + - tcp: Reallocate headroom if it would overflow csum_start + - net: cdc_mbim: remove bogus sizeof() + - net: fix incorrect credentials passing (CVE-2013-1979) + - net: drop dst before queueing fragments + + [ Ben Hutchings ] + * [rt] Update to 3.8.10-rt6 + * aufs: Update to aufs3.8-20130325 + - ftruncate() supports sb_{start,end}_write() + - replace mnt_drop_write_file() by __mnt_drop_write() + - support for vfs_truncate() + * udeb: Move modules and adjust dependencies to avoid duplicates + (Closes: #706646) + - Move crc16 to crc-modules; make ext4-modules and nic-usb-modules depend + on it + - Make xfs-modules depends on crc-modules + - Move pps_core and ptp to nic-common-modules or nic-modules as appropriate + * udeb: Merge redundant configuration for ext{2,3} dependency on mbcache + * Set ABI to 1 + * bug script: Remove broken sound functions (Closes: #705619) + * [i386/486] udeb: Add lxfb to fb-modules (Closes: #705780) + + -- Ben Hutchings Sat, 04 May 2013 21:45:23 +0100 + +linux (3.8.5-1~experimental.1) experimental; urgency=high + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.8.4 + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.8.5 + + [ Ben Hutchings ] + * signal: Fix use of missing sa_restorer field (build regression + introduced by fix for CVE-2013-0914) + * udeb: Add hid-generic, hid-holtek-kbd, hid-lenovo-tpkbd, + hid-roccat-isku, hid-roccat-lua, hid-roccat-savu to input-modules + * cdc_ncm,cdc_mbim: Use NCM by default + * [rt] Update to 3.8.4-rt2 and reenable + * [rt] wireless: orinoco_usb is BROKEN + + -- Ben Hutchings Sun, 31 Mar 2013 07:35:31 +0100 + +linux (3.8.3-1~experimental.1) experimental; urgency=high + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.8.3 + + [ Ben Hutchings ] + * aufs: Update to aufs3.8-20130311 + * USB: cdc-wdm: fix buffer overflow (CVE-2013-1860) + * signal: always clear sa_restorer on execve (CVE-2013-0914) + * ext3: Fix format string issues (CVE-2013-1848) + * net/sctp: Validate parameter size for SCTP_GET_ASSOC_STATS (CVE-2013-1828) + * bridge: fix mdb info leaks + * rtnl: fix info leak on RTM_GETLINK request for VF devices + * dcbnl: fix various netlink info leaks + * ALSA: seq: Fix missing error handling in snd_seq_timer_open() + + [ Ian Campbell ] + * arm: correct path to DTB files. Patch from Nobuhiro Iwamatsu. + (Closes: #703082) + + -- Ben Hutchings Tue, 19 Mar 2013 04:52:46 +0000 + +linux-tools (3.8.2-1~experimental.1) experimental; urgency=low + + * New upstream release (Closes: #702450) + + [ Ben Hutchings ] + * linux-tools: Install bash_completion script for perf with a version- + dependent name (Closes: #701790) + + -- Ben Hutchings Thu, 07 Mar 2013 05:32:40 +0000 + +linux (3.8.2-1~experimental.1) experimental; urgency=low + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.8.1 + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.8.2 + + [ Ben Hutchings ] + * linux-image: Increase minimum version of initramfs-tools to 0.110~ + which copes with the recently renamed EHCI and NFS modules + * genorig: Accept xz-compressed upstream tarballs and patches, + thanks to Sedat Dilek + * net: Enable USB_NET_CDC_MBIM as module (Closes: #701869) + * mfd,mmc,memstick: Enable MFD_RTSX_PCI, MMC_REALTEK_PCI and + MEMSTICK_REALTEK_PCI as modules, replacing RTS_PSTOR (Closes: #702108) + * [mips,mipsel] Add dependencies for HAVE_ARCH_TRANSPARENT_HUGEPAGE + (fixes FTBFS) + + [ Aurelien Jarno ] + * [mips/octeon] Change HW_RANDOM and HW_RANDOM_OCTEON to modules. + + -- Ben Hutchings Thu, 07 Mar 2013 04:00:04 +0000 + +linux (3.8-1~experimental.1) experimental; urgency=low + + * New upstream release: http://kernelnewbies.org/Linux_3.8 + - pidns: Support unsharing the pid namespace. (Closes: #595920) + - fsnotify: Rework locking and reference counting (Closes: #602966) + + [ Ben Hutchings ] + * aufs: Update to aufs3.x-rcN-20130204 + * sock_diag: Fix out-of-bounds access to sock_diag_handlers[] + + -- Ben Hutchings Mon, 25 Feb 2013 05:29:53 +0000 + +linux (3.7.8-1~experimental.1) experimental; urgency=low + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.7.4 + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.7.5 + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.7.6 + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.7.7 + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.7.8 + + [ Ben Hutchings ] + * Add powerpcspe architecture, thanks to Roland Stigge (Closes: #693042) + * aufs: Hide CONFIG_AUFS_PROC_MAP, which requires a patch we don't apply + (Closes: #693332) + + -- Ben Hutchings Fri, 15 Feb 2013 00:42:03 +0000 + +linux (3.7.3-1~experimental.1) experimental; urgency=low + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.7.2 + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.7.3 + + [ Ben Hutchings ] + * [ia64] nouveau: Disable another bit of ACPI support (fixes FTBFS) + * [armhf/omap] Make OMAP_DMA built-in (fixes FTBFS) + * ath6kl: Do not use virt_addr_valid() (fixes FTBFS on mips,mipsel) + * [armel/iop32x,armel/ixp4xx,armel/orion5x] Make IPV6 a module again due + to kernel size limit (fixes FTBFS) + * ALSA: usb-audio: Avoid autopm calls after disconnection; Fix missing + autopm for MIDI input (Closes: #664068) + * [!x86] Disable ZRAM, ZSMALLOC as modules (Reopens: #676779), as they + really aren't portable yet. + * udeb: Remove ipv6-modules on all architectures/flavours where it's + now built-in (fixes FTBFS) + + [ Ian Campbell ] + * [x86/xen] Update microcode driver to use new API. + + -- Ben Hutchings Fri, 18 Jan 2013 01:36:15 +0000 + +linux (3.7.1-1~experimental.2) experimental; urgency=low + + [ Ben Hutchings ] + * linux-headers-common: Include the include/uapi/asm-generic directory + (Closes: #696664) + * linux-headers-common: Do not use link-vmlinux.sh when cleaning external + modules (Closes: #696775) + * Enable ZRAM, ZSMALLOC as modules on all architectures (Closes: #676779) + + -- Ben Hutchings Sat, 05 Jan 2013 17:48:05 +0000 + +linux-tools (3.7.1-1~experimental.1) experimental; urgency=low + + * New upstream release + + [ Ben Hutchings ] + * [amd64] linux-tools: Enable optimisations and special-casing of x86_64 + (Closes: #694759) + + [ Uwe Kleine-König ] + * linux-kbuild: debian/control: Use Section: kernel (Closes: #545017) + + -- Jonathan Nieder Fri, 28 Dec 2012 09:29:53 -0800 + +linux (3.7.1-1~experimental.1) experimental; urgency=low + + * New upstream release: http://kernelnewbies.org/Linux_3.7 + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.7.1 + + [ maximilian attems ] + * Enable WIZNET_W5100, WIZNET_W5300, AMD_PHY, BCM87XX_PHY. + + [ Ben Hutchings ] + * aufs: Update to aufs3.x-rcN-20121210 + * [rt] Disable until it is updated for Linux 3.7 or later + * Make gcc-4.7 the default compiler + * [mips,mipsel,sparc] media/parpot: Disable VIDEO_PMS in all + configurations where the other parport video drivers are disabled + * [x86] fs: Re-enable PSTORE_RAM (formerly known as RAMOOPS) as module + * net/wireless: Enable WL_TI; re-enable WL1251 and WL12XX as modules + * staging: Enable RTLLIB; re-enable RTL8192E as module + * media: Enable IR_TTUSBIR as module, replacing LIRC_TTUSBIR + * media: Enable VIDEO_STK1160 as module, replacing EASYCAP + * [armhf/mx5] Update configuration: + - Enable MACH_IMX51_DT, replacing MACH_MX51_EFIKAMX (but not fully + working in this kernel version) + - Enable SOC_IMX53, replacing MACH_MX53_{EVK,SMD,LOCO,ARD} + - Re-enable MFD_MC13XXX_SPI (formerly included in MFD_MC13XXX) + - Enable PWM and re-enable PWM_IMX (formerly known as MXC_PWM) + * [i386] comedi: Re-enable COMEDI_ISA_DRIVERS + * [i386,alpha] media/radio: Enable V4L_RADIO_ISA_DRIVERS and re-enable + the ISA drivers + * PCI: Enable PCI_REALLOC_ENABLE_AUTO + * [x86] PCI: Enable PCI_PRI, PCI_PASID, PCI_IOAPIC + * [amd64] ACPI: Enable ACPI_BGRT + * net: Enable INET_UDP_DIAG, NET_IPVTI, PACKET_DIAG, UNIX_DIAG as modules + * netfilter: Enable NF_NAT_IPV6, IP6_NF_TARGET_MASQUERADE, IP6_NF_TARGET_NPT, + NF_CT_NETLINK_HELPER as modules + * net/sched: Enable NET_EMATCH_CANID, NET_EMATCH_IPSET as modules + * can: Enable CAN_PEAK_PCIEC, CAN_PEAK_PCMCIA, CAN_PEAK_USB as modules + * [i386] can: Enable CAN_CC770, CAN_CC770_ISA as module + * block: Enable BLK_DEV_NVME, BLK_DEV_PCIESSD_MTIP32XX as modules + * qla2xxx: Enable TCM_QLA2XXX as module + * team: Enable NET_TEAM_MODE_BROADCAST as module + * net: Enable VXLAN as module + * phy: Enable AT803X_PHY as module + * rt2800pci: Enable RT2800PCI_RT3290 + * wireless/ti: Enable WL18XX as module + * ptp: Enable clock drivers along with associated net/PHY drivers + * [!x86] drm: Disable DRM_VMWGFX + * drm: Enable DRM_UDL as module + - Disable autoloading as it is incompatible with older versions of + xserver-xorg-video-displaylink + * [x86] drm: Enable DRM_AST, DRM_MGAG200 as modules + - Disable autoloading as they are incompatible with older versions of + xserver-xorg-video-ast and xserver-xorg-video-mga + + -- Ben Hutchings Mon, 24 Dec 2012 02:50:21 +0000 + +linux (3.6.9-1~experimental.1) experimental; urgency=low + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.6.9 + + [ maximilian attems ] + * Enable NETFILTER_XT_TARGET_HMARK, NET_EMATCH_IPSET, USB_NET_QMI_WWAN. + * Enable more HID drivers. + * [x86] Enable INTEL_MEI. + * [ARM]: 7492/1: add strstr declaration for decompressors. + + [ Ben Hutchings ] + * HID: Add Apple wireless keyboard 2011 ANSI to special driver list + (Closes: #694546) + + [ Arnaud Patard ] + * [ARM]: add patch from staging-next to fix lis3l02dq on omap + * [ARM]: backport omap usb fixes to make it build again. + * Change musb Kconfig so that our configuration of USB_MUSB_OMAP2PLUS + is used and not set to 'm'. + + -- maximilian attems Wed, 05 Dec 2012 16:16:50 +0100 + +linux (3.6.8-1~experimental.1) experimental; urgency=low + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.6.7 + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.6.8 + + [ Bastian Blank ] + * Enable POWER_SUPPLY, BLK_DEV_THROTTLING and NETPRIO_CGROUP. + * [amd64] Enable CRYPTO_CAMELLIA_X86_64, CRYPTO_SERPENT_AVX_X86_64 and + CRYPTO_TWOFISH_AVX_X86_64. + * [x86] Enable more platform drivers. + * [s390/s390x-tape, s390x/s390x-tape] Remove not longer supported image + variant. + * [s390, s390x] Enable support for transparent hugepages. + * Use XZ for kernel images if supported. + + [ maximilian attems ] + * Enable DVB_USB_RTL28XXU. (closes: #692749) + * Enable SBP_TARGET. (closes: #685341) + + -- maximilian attems Wed, 28 Nov 2012 18:35:41 +0100 + +linux-tools (3.6-1~experimental.1) experimental; urgency=low + + * New upstream release (Closes: #690011) + + [ Ben Hutchings ] + * genorig: Accept xz-compressed upstream tarballs and patches, and + generate an xz-compressed orig tarball, thanks to Sedat Dilek + * source: Enable xz-compression for debian directory tarball + + [ Jonathan Nieder ] + * Add myself to uploaders list. + + -- Jonathan Nieder Sat, 24 Nov 2012 13:40:28 -0800 + +linux (3.6.6-1~experimental.1) experimental; urgency=low + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.6.5 + - [x86] mm: Find_early_table_space based on ranges that are actually + being mapped (Closes: #692067) + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.6.6 + - ext4: fix unjournaled inode bitmap modification (Closes: #692411) + + [ Uwe Kleine-König ] + * [rt] bump to 3.6.4-rt10 + + [ Ben Hutchings ] + * [x86] staging: Re-enable ZSMALLOC as module, previously selected by + ZRAM but now a dependency (Closes: #692024) + * fs: Re-enable link security restrictions that are disabled by default + in 3.6.5 + * [rt] Update to 3.6.6-rt17 + * rc: Enable RC_DEVICES; re-enable LIRC; re-enable the drivers that + depend on those; enable IR_SANYO_DECODER and IR_IGUANA as modules + + [ Bastian Blank ] + * [sparc] Remove IP_PNP, IP_PNP_RARP, NET_IPGRE and ARPD overrides. + * Enable IPv6 globally. + + -- Ben Hutchings Thu, 15 Nov 2012 04:49:50 +0000 + +linux (3.6.4-1~experimental.1) experimental; urgency=low + + * New upstream release: http://kernelnewbies.org/Linux_3.6 + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.6.1 + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.6.2 + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.6.3 + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.6.4 + + [ Ben Hutchings ] + * aufs: Update to aufs3.6-20121015 + * cirrus: Disable by default, as it is currently incompatible with + xserver-xorg-video-cirrus. It can be forced to load with module + parameter modeset=1. + + [ Uwe Kleine-König ] + * reenable the rt featureset using 3.6.3-rt8 + + -- Ben Hutchings Mon, 29 Oct 2012 04:22:02 +0000 + +linux (3.5.5-1~experimental.1) experimental; urgency=low + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.5.3 + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.5.4 + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.5.5 + + [ Ben Hutchings ] + * mfd: lpc_ich: Fix a 3.5 kernel regression for iTCO_wdt driver + (Closes: #686040) + * drm: Enable various drivers (Closes: #685479): + - [x86] Enable DRM_GMA500 (previously DRM_PSB) as module + - Enable DRM_CIRRUS_QEMU as module + * media/dvb: Enable DVB_USB_AF9035 as module (Closes: #687050) + + [ Bastian Blank ] + * Remove superfluous dependency in debugging packages. + + -- Bastian Blank Thu, 04 Oct 2012 15:19:30 +0200 + +linux-tools (3.5-1~experimental.1) experimental; urgency=low + + * New upstream release + + -- Ben Hutchings Mon, 20 Aug 2012 00:57:12 +0100 + +linux (3.5.2-1~experimental.1) experimental; urgency=low + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.5.1 + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.5.2 + + [ Ben Hutchings ] + * genorig: Fix linux_upstream_full compute for version with modifier, + thanks to Julien Danjou (Closes: #683824) + + -- Ben Hutchings Sun, 19 Aug 2012 21:36:04 +0100 + +linux (3.5-1~experimental.1) experimental; urgency=low + + * New upstream release: http://kernelnewbies.org/Linux_3.5 + + [ Ben Hutchings ] + * net: Enable OPENVSWITCH as module (Closes: #675010) + * aufs: Update to aufs3.5-20120730 + * rt: Disable until it is updated for Linux 3.5 or later + * debian/copyright: Convert to machine-readable format (fka DEP-5) + * debian/copyright: Add copyright notice for newly-added Unicode data + * [x86] seccomp: Enable SECCOMP_FILTER + * [x86] applesmc: Update to Linux 3.6, including fixes for new MacBook models + + -- Ben Hutchings Wed, 01 Aug 2012 14:08:55 +0100 + +linux (3.4.4-1~experimental.1) experimental; urgency=low + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.4.2 + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.4.3 + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.4.4 + + [ Ben Hutchings ] + * [ia64] Export to userland (fixes FTBFS) + * [x86] Enable BATTERY_SBS as module (Closes: #662902) + * team: Enable NET_TEAM_MODE_LOADBALANCE as module + * [x32] Build a linux-libc-dev package + * input: Enable MOUSE_SYNAPTICS_USB (Closes: #678071) + * [x86] staging: zsmalloc: Finish conversion to a separate module + (Closes: #677273) + * [rt] Update to 3.4.4-rt13 + + [ Arnaud Patard ] + * [armel] disable FIPS, VGA_ARB, FTRACE on iop32x and ixp4xx to reduce + kernel size. + * [armel] disable virtio modules on all platforms except versatile + * [armel] enable PHYSMAP on all platforms except ixp4xx + + -- Ben Hutchings Tue, 26 Jun 2012 07:28:41 +0100 + +linux-tools (3.4-1~experimental.1) experimental; urgency=low + + * New upstream release + * Build-Depend on bison and flex, now required to build perf + * Fix version insertion in perf man pages + + -- Ben Hutchings Sat, 09 Jun 2012 20:51:12 +0100 + +linux-2.6 (3.4.1-1~experimental.1) experimental; urgency=low + + * New upstream release: http://kernelnewbies.org/Linux_3.4 + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.4.1 + + [ maximilian attems ] + * Enable DM_VERITY, NF_CONNTRACK_TIMEOUT, NF_CT_NETLINK_TIMEOUT, + IP_NF_MATCH_RPFILTER, IP6_NF_MATCH_RPFILTER, NETFILTER_NETLINK_ACCT, + NETFILTER_XT_MATCH_NFACCT, NET_SCH_PLUG, SCSI_UFSHCD, SCSI_VIRTIO, + NET_TEAM, ATH6KL. + + [ Ben Hutchings ] + * DFSG: Remove the new vs6624 driver, which contains non-free firmware + * aufs: Update to aufs3.4-20120521 + * [rt] Update to 3.4-rt8 and reenable + + -- maximilian attems Wed, 06 Jun 2012 10:25:57 +0200 + +linux-2.6 (3.3.6-1~experimental.1) experimental; urgency=low + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.3.5 + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.3.6 + - USB: cdc-wdm: fix race leading leading to memory corruption + - autofs: make the autofsv5 packet file descriptor use a packetized pipe + (Closes: #633423) + - PM / Hibernate: fix the number of pages used for hibernate/thaw buffering + (Closes: #659363) + - efi: Validate UEFI boot variables + - efivars: Improve variable validation + - fs/cifs: fix parsing of dfs referrals + - hfsplus: Fix potential buffer overflows (CVE-2012-2319) + - exit_signal: fix the "parent has changed security domain" logic + - net: l2tp: unlock socket lock before returning from l2tp_ip_sendmsg + - sky2: fix receive length error in mixed non-VLAN/VLAN traffic + (Closes: #492853) + - [s390] KVM: do store status after handling STOP_ON_STOP bit + - [s390] KVM: Sanitize fpc registers for KVM_SET_FPU + - KVM: Fix write protection race during dirty logging + - KVM: mmu_notifier: Flush TLBs before releasing mmu_lock + - KVM: Ensure all vcpus are consistent with in-kernel irqchip settings + (CVE-2012-1601) + - KVM: nVMX: Fix erroneous exception bitmap check + - KVM: VMX: Fix kvm_set_shared_msr() called in preemptible context + - KVM: lock slots_lock around device assignment + - hugepages: fix use after free bug in "quota" handling + + -- Ben Hutchings Fri, 18 May 2012 03:53:16 +0100 + +linux-2.6 (3.3.4-1~experimental.1) experimental; urgency=low + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.3.3 + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.3.4 + + [ Ben Hutchings ] + * [x86] dell-laptop: Terminate quirks list properly + + -- Ben Hutchings Tue, 01 May 2012 01:23:59 +0100 + +linux-2.6 (3.3.2-1~experimental.1) experimental; urgency=low + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.3.1 + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.3.2 + + [ Ben Hutchings ] + * [armel/iop32x] Add missing #includes (fixes FTBFS) + + -- Ben Hutchings Sun, 15 Apr 2012 16:36:13 +0100 + +linux-tools (3.3-1~experimental.1) experimental; urgency=low + + * New upstream release candidate + * linux-kbuild: debian/control: Set Multi-Arch: foreign + * linux-tools: Build perf on alpha and hppa (Closes: #664834) + + -- Ben Hutchings Sat, 24 Mar 2012 23:15:59 +0000 + +linux-2.6 (3.3-1~experimental.1) experimental; urgency=low + + * New upstream release: http://kernelnewbies.org/Linux_3.3 + + [ Ben Hutchings ] + * [x86] crypto: Enable CRYPTO_SERPENT_SSE2_586, CRYPTO_SERPENT_SSE2_X86_64 + * aufs: Update to aufs3.x-rcN-20120312 + * IB: Enable INFINIBAND_SRPT as module (Closes: #663041) + + -- Ben Hutchings Wed, 21 Mar 2012 03:08:36 +0000 + +linux-2.6 (3.3~rc6-1~experimental.1) experimental; urgency=low + + * New upstream release candidate + + [ Ben Hutchings ] + * aufs: Update to aufs3.x-rcN-20120123 + * rt: Disable until it is updated for Linux 3.3 or later + + -- Ben Hutchings Sun, 04 Mar 2012 20:27:42 +0000 + +linux (3.2.41-2) unstable; urgency=low + + * [ia64] udeb: Remove efi-modules package; make kernel-image provide + efi-modules (fixes FTBFS) + * linux-headers: Fix file installation on architectures without + Kbuild.platforms (Closes: #703800) + * [x86] drm/i915: bounds check execbuffer relocation count (CVE-2013-0913) + * [x86] drm: Enable DRM_GMA500 as module, replacing DRM_PSB (Closes: #703506) + - Enable DRM_GMA600, DRM_GMA3600, DRM_MEDFIELD + * [x86] KVM: x86: fix for buffer overflow in handling of MSR_KVM_SYSTEM_TIME + (CVE-2013-1796) + * [x86] KVM: x86: Convert MSR_KVM_SYSTEM_TIME to use gfn_to_hva_cache + functions (CVE-2013-1797) + * KVM: Fix bounds checking in ioapic indirect register reads (CVE-2013-1798) + + -- Ben Hutchings Mon, 25 Mar 2013 15:17:44 +0000 + +linux (3.2.41-1) unstable; urgency=low + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.40 + - ext4: return ENOMEM if sb_getblk() fails + - ext4: fix possible use-after-free with AIO + - s390/kvm: Fix store status for ACRS/FPRS + - staging: comedi: disallow COMEDI_DEVCONFIG on non-board minors + - ext4: fix race in ext4_mb_add_n_trim() + - UBIFS: fix double free of ubifs_orphan objects + - hrtimer: Prevent hrtimer_enqueue_reprogram race + - nfsd: Fix memleak + - x86: Do not leak kernel page mapping locations + - USB: usb-storage: unusual_devs update for Super TOP SATA bridge + - posix-cpu-timers: Fix nanosleep task_struct leak + - NFSv4.1: Don't decode skipped layoutgets + - cgroup: fix exit() vs rmdir() race + - cpuset: fix cpuset_print_task_mems_allowed() vs rename() race + - ext4: fix xattr block allocation/release with bigalloc + - mm: fix pageblock bitmap allocation + - target: Add missing mapped_lun bounds checking during make_mappedlun + setup + - b43: Increase number of RX DMA slots + - posix-timer: Don't call idr_find() with out-of-range ID + - fs: Fix possible use-after-free with AIO + - powerpc/kexec: Disable hard IRQ before kexec + - mmu_notifier_unregister NULL Pointer deref and multiple ->release() + callouts + - tmpfs: fix use-after-free of mempolicy object (CVE-2013-1767) + - ocfs2: fix possible use-after-free with AIO + - ocfs2: fix ocfs2_init_security_and_acl() to initialize acl correctly + - ocfs2: ac->ac_allow_chain_relink=0 won't disable group relink + - idr: fix a subtle bug in idr_get_next() + - idr: make idr_get_next() good for rcu_read_lock() + - idr: fix top layer handling + - sysctl: fix null checking in bin_dn_node_address() + - nbd: fsync and kill block device on shutdown + - s390/timer: avoid overflow when programming clock comparator + (regression in 3.2.38) + - xen-pciback: rate limit error messages from xen_pcibk_enable_msi{,x}() + (CVE-2013-0231) + - xen-netback: correctly return errors from netbk_count_requests() + - xen-netback: cancel the credit timer when taking the vif down + - ipv6: use a stronger hash for tcp + - staging: comedi: ni_labpc: correct differential channel sequence for + AI commands + - staging: comedi: ni_labpc: set up command4 register *after* command3 + - vhost: fix length for cross region descriptor (CVE-2013-0311) + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.41 + - NFS: Don't allow NFS silly-renamed files to be deleted, no signal + - ARM: VFP: fix emulation of second VFP instruction + - md: fix two bugs when attempting to resize RAID0 array. + - proc connector: reject unprivileged listener bumps + - cifs: ensure that cifs_get_root() only traverses directories + - dm: fix truncated status strings + - hw_random: make buffer usable in scatterlist. (real fix for #701784) + - efi_pstore: Check remaining space with QueryVariableInfo() before + writing data + - efi: be more paranoid about available space when creating variables + (Closes: #703574) + - vfs: fix pipe counter breakage + - xen/pciback: Don't disable a PCI device that is already disabled. + - ALSA: seq: Fix missing error handling in snd_seq_timer_open() + - ext3: Fix format string issues (CVE-2013-1848) + - keys: fix race with concurrent install_user_keyrings() (CVE-2013-1792) + - USB: cdc-wdm: fix buffer overflow (CVE-2013-1860) + - signal: always clear sa_restorer on execve (CVE-2013-0914) + - crypto: user - fix info leaks in report API (CVE-2013-2546, + CVE-2013-2547, CVE-2013-2548) + - Fix: compat_rw_copy_check_uvector() misuse in aio, readv, writev, and + security keys + - batman-adv: bat_socket_read missing checks + - batman-adv: Only write requested number of byte to user buffer + - mm/hotplug: correctly add new zone to all other nodes' zone lists + (CVE-2012-5517) + - btrfs: use rcu_barrier() to wait for bdev puts at unmount + + [ Aurelien Jarno] + * [mips,mipsel] Disable VGA_CONSOLE and ignore the corresponding ABI + change. It is completely broken on MIPS. + * headers: Include Kbuild.platforms and Platform files in -common to + fix out-of-tree building on mips and mipsel. + * [{mips,mipsel}/{4,5}kc-malta] Enable HW_RANDOM as module so that both + flavours have a consistent configuration. + + [ Ben Hutchings ] + * [x86] ata_piix: reenable MS Virtual PC guests (fixes regression in + 3.2.19-1) + * test-patches: Clean up all previous test patches, whether or not they + were applied + * test-patches: Add --fuzz option to allow testing patches that have fuzz + * [x86] efi: Fix processor-specific memcpy() build error (Closes: #698581) + * udeb: Add hid-topseed to input-modules (Closes: #702611) + * [x86] drm/i915: Unconditionally initialise the interrupt workers, + thanks to Bjørn Mork (Closes: #692607) + * efi: Ensure efivars is loaded on EFI systems (Closes: #703363) + - [x86] Use a platform device to trigger loading of efivars + - [ia64] Change EFI_VARS from module to built-in + * efivars: Work around serious firmware bugs + - Allow disabling use as a pstore backend + - Add module parameter to disable use as a pstore backend + * [x86] Set EFI_VARS_PSTORE_DEFAULT_DISABLE=y + - explicitly calculate length of VariableName + - Handle duplicate names from get_next_variable() + * efi_pstore: Introducing workqueue updating sysfs + * efivars: pstore: Do not check size when erasing variable + * efivars: Remove check for 50% full on write + * kmsg_dump: Only dump kernel log in error cases (Closes: #703386) + - kexec: remove KMSG_DUMP_KEXEC + - kmsg_dump: don't run on non-error paths by default + * [x86] i915: initialize CADL in opregion (Closes: #703271) + * drm, agp: Update to 3.4.37: + - drm/radeon/dce6: fix display powergating + - drm: don't add inferred modes for monitors that don't support them + - drm/i915: Increase the RC6p threshold. + * signal: Fix use of missing sa_restorer field (build regression + introduced by fix for CVE-2013-0914) + * rds: limit the size allocated by rds_message_alloc() + * rtnl: fix info leak on RTM_GETLINK request for VF devices + * dcbnl: fix various netlink info leaks + * [s390] mm: fix flush_tlb_kernel_range() + * [powerpc] Fix cputable entry for 970MP rev 1.0 + * vhost/net: fix heads usage of ubuf_info + * udf: avoid info leak on export (CVE-2012-6548) + * isofs: avoid info leak on export (CVE-2012-6549) + * [x86,powerpc/powerpc64] random: Change HW_RANDOM back from built-in to + module, as we now have a real fix for #701784 + * [rt] Update to 3.2.40-rt60 + + -- Ben Hutchings Sat, 23 Mar 2013 03:54:34 +0000 + +linux (3.2.39-2) unstable; urgency=high + + * [s390,s390x] virtio: Ignore ABI changes in 3.2.39 (fixes FTBFS) + * [sparc] drm: Ignore ABI changes in 3.2.39 (fixes FTBFS) + * [sparc] drm: Change from built-in to module + * [rt] Update to 3.2.39-rt59: + - acpi/rt: Convert acpi_gbl_hardware lock back to a raw_spinlock_t + - printk: Fix rq->lock vs logbuf_lock unlock lock inversion + - wait-simple: Simple waitqueue implementation + - rcutiny: Use simple waitqueue + * [x86] efi: Fix ABI change for introduction of efi_enabled() function + in 3.2.38 (Closes: #701690) + * [armel/versatile] i2c: Re-enable I2C_PCA_PLATFORM as module, erroneously + disabled in 3.2.39-1 (fixes FTBFS) + * [x86,powerpc/powerpc64] random: Change HW_RANDOM from module to built-in, + to work around virtio-rng bug (Closes: #701784) + + -- Ben Hutchings Wed, 27 Feb 2013 03:48:30 +0000 + +linux (3.2.39-1) unstable; urgency=high + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.36 + - freezer: PF_FREEZER_NOSIG should be cleared along with PF_NOFREEZE + (Closes: #697077) + - tmpfs: fix shared mempolicy leak + - virtio: 9p: correctly pass physical address to userspace for high pages + - virtio: force vring descriptors to be allocated from lowmem + - USB: EHCI: bugfix: urb->hcpriv should not be NULL + - rcu: Fix batch-limit size problem + - Bluetooth: ath3k: Add support for VAIO VPCEH [0489:e027] + (Closes: #700550) + - mvsas: fix undefined bit shift + - ALSA: usb-audio: Avoid autopm calls after disconnection; Fix missing + autopm for MIDI input (Closes: #664068) + - target/file: Fix 32-bit highmem breakage for SGL -> iovec mapping + - SCSI: fix Null pointer dereference on disk error + - proc: pid/status: show all supplementary groups + - nfsd4: fix oops on unusual readlike compound + - ARM: missing ->mmap_sem around find_vma() in swp_emulate.c + - sctp: fix memory leak in sctp_datamsg_from_user() when copy from user + space fails + - ne2000: add the right platform device + - irda: sir_dev: Fix copy/paste typo + - ipv4: ip_check_defrag must not modify skb before unsharing + - telephony: ijx: buffer overflow in ixj_write_cid() + - udf: fix memory leak while allocating blocks during write + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.37 + - ext4: fix extent tree corruption caused by hole punch + - jbd2: fix assertion failure in jbd2_journal_flush() + - tmpfs mempolicy: fix /proc/mounts corrupting memory + - sparc: huge_ptep_set_* functions need to call set_huge_pte_at() + - inet: Fix kmemleak in tcp_v4/6_syn_recv_sock and + dccp_v4/6_request_recv_sock + - net: sched: integer overflow fix + - tcp: implement RFC 5961 3.2 + - tcp: implement RFC 5961 4.2 + - tcp: refine SYN handling in tcp_validate_incoming + - tcp: tcp_replace_ts_recent() should not be called from + tcp_validate_incoming() + - tcp: RFC 5961 5.2 Blind Data Injection Attack Mitigation + - RDMA/nes: Fix for crash when registering zero length MR for CQ + - ACPI : do not use Lid and Sleep button for S5 wakeup + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.38 + - staging: comedi: comedi_test: fix race when cancelling command + - mm: use aligned zone start for pfn_to_bitidx calculation + - [s390] s390/time: fix sched_clock() overflow (Closes: #698382) + - [i386] xen: Fix stack corruption in xen_failsafe_callback for 32bit + PVOPS guests. (CVE-2013-0190) + - KVM: PPC: Emulate dcbf + - evm: checking if removexattr is not a NULL + - ath9k_htc: Fix memory leak + - ath9k: do not link receive buffers during flush + - ath9k: fix double-free bug on beacon generate failure + - x86/msr: Add capabilities check + - can: c_can: fix invalid error codes + - can: ti_hecc: fix invalid error codes + - can: pch_can: fix invalid error codes + - smp: Fix SMP function call empty cpu mask race + - xfs: Fix possible use-after-free with AIO + - EDAC: Test correct variable in ->store function + - samsung-laptop: Disable on EFI hardware, to avoid damaging it + - NFS: Don't silently fail setattr() requests on mountpoints + - intel-iommu: Prevent devices with RMRRs from being placed into SI Domain + - ALSA: usb-audio: Fix regression by disconnection-race-fix patch + (Closes: #696321) + - printk: fix buffer overflow when calling log_prefix function from + call_console_drivers + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.39 + - USB: XHCI: fix memory leak of URB-private data + - sched/rt: Use root_domain of rt_rq not current processor + - mwifiex: fix incomplete scan in case of IE parsing error + - x86-64: Replace left over sti/cli in ia32 audit exit code + - Bluetooth: Fix handling of unexpected SMP PDUs + - ptrace/x86: Partly fix set_task_blockstep()->update_debugctlmsr() logic + - Fix race condition with PTRACE_SETREGS and fatal signal (CVE-2013-0871) + + ptrace: introduce signal_wake_up_state() and ptrace_signal_wake_up() + + ptrace: ensure arch_ptrace/ptrace_request can never race with SIGKILL + + wake_up_process() should be never used to wakeup a TASK_STOPPED/TRACED + task + - net: prevent setting ttl=0 via IP_TTL + - ipv6: fix header length calculation in ip6_append_data() + - netxen: fix off by one bug in netxen_release_tx_buffer() + - r8169: remove the obsolete and incorrect AMD workaround + - net: loopback: fix a dst refcounting issue + - packet: fix leakage of tx_ring memory + - net: sctp: sctp_setsockopt_auth_key: use kzfree instead of kfree + - net: sctp: sctp_endpoint_free: zero out secret key data + - xen/netback: shutdown the ring if it contains garbage. (CVE-2013-0216) + - xen/netback: don't leak pages on failure in xen_netbk_tx_check_gop. + - xen/netback: free already allocated memory on failure in + xen_netbk_get_requests + - netback: correct netbk_tx_err to handle wrap around. (CVE-2013-0217) + - tcp: frto should not set snd_cwnd to 0 + - tcp: fix for zero packets_in_flight was too broad + - tcp: fix MSG_SENDPAGE_NOTLAST logic + - bridge: Pull ip header into skb->data before looking into ip header. + (Closes: #697903) + - x86/xen: don't assume %ds is usable in xen_iret for 32-bit PVOPS. + (CVE-2013-0228) + + [ Aurelien Jarno ] + * [armhf/vexpress] Add kernel udebs. + + [ Julien Cristau ] + * Backport drm and agp subsystems from Linux 3.4.29 (closes: #687442) + - [x86] i915: Fixes freezes on Ivy Bridge (Closes: #689268) + - nouveau: Support for newer nvidia chipsets (Closes: #690284) + - radeon: Support for HD7000 'Southern Islands' chips + - [x86] drm/i915: add Ivy Bridge GT2 Server entries (Closes: #684767) + - [x86] drm/i915: Close race between processing unpin task and queueing + the flip + + [ Ben Hutchings ] + * Input: wacom - fix touch support for Bamboo Fun CTH-461 + * media/rc: Add iguanair driver from Linux 3.7 (Closes: #696925) + * rt2800: add chipset revision RT5390R support (Closes: #696592) + * [armhf/mx5] mtd: Enable MTD_BLOCK as module + * [armhf/mx5] udeb: Add missing storage drivers (Closes: #697128) + - Add ata-modules including libata, pata-modules including pata_imx, + sata-modules including ahci_platform + - Add sdhci-esdhc-imx to mmc-modules + - Add mtd-modules including mtd, mtdblock and m25p80 + * [armhf] udeb: Fix network driver selection + - [armhf/mx5] Remove nic-modules + - [armhf/vexpress] Add usb-modules + - Add standard set of USB drivers to nic-usb-modules + - Add nic-wireless-modules + * be2net: Apply backported fixes requested by Emulex (Closes: #697479) + - be2net: do not modify PCI MaxReadReq size + - be2net: fix reporting number of actual rx queues + - be2net: do not use SCRATCHPAD register + - be2net: reduce gso_max_size setting to account for ethernet header. + - be2net: Increase statistics structure size for skyhawk. + - be2net: Explicitly clear the reserved field in the Tx Descriptor + - be2net: Regression bug wherein VFs creation broken for multiple cards. + - be2net: Fix to trim skb for padded vlan packets to workaround an ASIC Bug + - be2net: Fix Endian + - be2net: Enable RSS UDP hashing for Lancer and Skyhawk + - be2net: dont pull too much data in skb linear part + - be2net: Fix to parse RSS hash from Receive completions correctly. + - be2net: Avoid disabling BH in be_poll() + * udeb: Add specialised USB keyboard/mouse drivers to input-modules: + hid-a4tech, hid-cypress, hid-ezkey (Closes: #697035), hid-kensington, + hid-keytouch, hid-kye, hid-multitouch, hid-ortek, hid-primax, + hid-quanta, hid-samsung, hid-speedlink + * radeon: Firmware is required for DRM and KMS on R600 onward, but not + for KMS on earlier chips (Closes: #697229) + * [!powerpc] radeon: Reenable DRM_RADEON_KMS, as it apparently works on + most non-PowerMac systems + * fs: cachefiles: add support for large files in filesystem caching + (Closes: #698376) + * [rt] Update to 3.2.38-rt57: + - sched: Adjust sched_reset_on_fork when nothing else changes + - sched: Queue RT tasks to head when prio drops + - sched: Consider pi boosting in setscheduler + - sched: Init idle->on_rq in init_idle() + - sched: Check for idle task in might_sleep() + - mm: swap: Initialize local locks early + * [armel/versatile,armhf/vexpress] i2c: Enable I2C, I2C_VERSATILE as modules + (Closes: #696182) + * ext4: Fix corruption by hole punch in large files (Closes: #685726) + - rewrite punch hole to use ext4_ext_remove_space() + - fix hole punch failure when depth is greater than 0 + - fix kernel BUG on large-scale rm -rf commands + * md: protect against crash upon fsync on ro array (Closes: #696650) + * net: Add alx driver for Atheros AR8161 and AR8162 (Closes: #699129) + - Mark as staging, since it has not been accepted upstream + * [armel/kirkwood] rtc-s35390a: add wakealarm support (Closes: #693997) + * [x86] i915: Invert backlight brightness control for various models + including Packard Bell NCL20 (Closes: #627372) and eMachines G725 + (Closes: #680737) + - Also allow this behaviour to be enabled via module parameter + invert_brightness=1 + * [amd64] edac: Enable EDAC_SBRIDGE as module (Closes: #699283) + * SCSI: Add virtio_scsi driver (Closes: #686636) + * [x86] sound: Enable LINE6_USB as module (Closes: #700211) + - Apply upstream changes up to Linux 3.8-rc1 + * [armhf/mx5] Update description to mention i.MX53 + * mm: Try harder to allocate vmemmap blocks (Closes: #699913) + * aufs: Update to aufs3.2-20130204: + - support for syncfs(2) + - possible bugfix, race in lookup + - bugfix, half refreshed iinfo + - possible bugfix, au_lkup_by_ino() returns ESTALE + * [x86] efi: Clear EFI_RUNTIME_SERVICES rather than EFI_BOOT by "noefi" boot + parameter + * [x86] efi: Make "noefi" really disable EFI runtime serivces + * drm, agp: Update to 3.4.32 + - drm/radeon: add WAIT_UNTIL to the non-VM safe regs list for cayman/TN + - drm/radeon: prevent crash in the ring space allocation + * linux-image-dbg: Add symlinks to vmlinux from the locations expected by + kdump-tools (Closes: #700418), systemtap and others + * mm: fix pageblock bitmap allocation (fixes regression in 3.2.38) + * USB: usb-storage: unusual_devs update for Super TOP SATA bridge + + [ Cyril Brulebois ] + * Bump python build-dep, needed since the switch from local SortedDict + to collections.OrderedDict (new in version 2.7). (Closes: #697740) + + -- Ben Hutchings Mon, 25 Feb 2013 00:36:51 +0000 + +linux (3.2.35-2) unstable; urgency=low + + * [ia64] Make IPV6 built-in (fixes FTBFS) + * [rt] Update to 3.2.35-rt52 + * audit: Increase maximum number of names logged per syscall to 30 + (Closes: #631799) + * asix: Add support for Lenovo 10/100 USB dongle (Closes: #696248) + * udeb: Add ums-eneub6250, ums-realtek (Closes: #694348) to + usb-storage-modules + + -- Ben Hutchings Wed, 19 Dec 2012 03:41:35 +0000 + +linux (3.2.35-1) unstable; urgency=low + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.33 + - samsung-laptop: don't handle backlight if handled by acpi/video + (Closes: #693190) + - e1000: fix vlan processing regression (Closes: #690956) + - [x86] drm/i915: no lvds quirk for Zotac ZDBOX SD ID12/ID13 + (Closes: #691122) + - au0828: fix case where STREAMOFF being called on stopped stream + causes BUG() + - net: Fix skb_under_panic oops in neigh_resolve_output + - vlan: don't deliver frames for unknown vlans to protocols + - RDS: fix rds-ping spinlock recursion + - tcp: resets are misrouted + - nfsd4: fix nfs4 stateid leak + - [arm] vfp: fix saving d16-d31 vfp registers on v6+ kernels + - scsi_debug: Fix off-by-one bug when unmapping region + - storvsc: Account for in-transit packets in the RESET path + - tmpfs,ceph,gfs2,isofs,reiserfs,xfs: fix fh_len checking + - ext4: race-condition protection for ext4_convert_unwritten_extents_endio + (CVE-2012-4508) + - md/raid10: use correct limit variable + - net/wireless: ipw2200: Fix panic occurring in ipw_handle_promiscuous_tx() + - USB: cdc-acm: fix pipe type of write endpoint + - [x86] xen: don't corrupt %eip when returning from a signal handler + - sysfs: sysfs_pathname/sysfs_add_one: Use strlcat() instead of strcat() + - fs/compat_ioctl.c: VIDEO_SET_SPU_PALETTE missing error check + - netfilter: nf_conntrack: fix racy timer handling with reliable events + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.34 + - x86: Remove the ancient and deprecated disable_hlt() and enable_hlt() + facility (Closes: #667501) + - ALSA: PCM: Fix some races at disconnection + - ALSA: usb-audio: Fix races at disconnection + - crypto: cryptd - disable softirqs in cryptd_queue_worker to prevent + data corruption + - mac80211: Only process mesh config header on frames that RA_MATCH + - mac80211: fix SSID copy on IBSS JOIN + - mac80211: check management frame header length + - mac80211: verify that skb data is present + - mac80211: make sure data is accessible in EAPOL check + - ath9k: Test for TID only in BlockAcks while checking tx status + - nfs: Show original device name verbatim in /proc/*/mount{s,info} + (Closes: #669314) + - target: Avoid integer overflow in se_dev_align_max_sectors() + - hwmon: (w83627ehf) Force initial bank selection + - xfs: fix reading of wrapped log data + - fanotify: fix missing break + - drm/vmwgfx: Fix a case where the code would BUG when trying to pin + GMR memory + - sctp: fix call to SCTP_CMD_PROCESS_SACK in sctp_cmd_interpreter() + - netlink: use kfree_rcu() in netlink_release() + - tcp: fix FIONREAD/SIOCINQ + - net: fix divide by zero in tcp algorithm illinois (CVE-2012-4565) + - af-packet: fix oops when socket is not present + - r8169: Fix WoL on RTL8168d/8111d. (Closes: #674154) + - sky2: Fix for interrupt handler (Closes: #681280) + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.35 + - UBIFS: fix mounting problems after power cuts + - [s390] gup: add missing TASK_SIZE check to get_user_pages_fast() + - [x86] Exclude E820_RESERVED regions and memory holes above 4 GB from + direct mapping. + - netfilter: Mark SYN/ACK packets as invalid from original direction + - netfilter: Validate the sequence number of dataless ACK packets as well + - ipv4: avoid undefined behavior in do_ip_setsockopt() + - Input: i8042 - also perform controller reset when suspending + (Closes: #693934) + - brcm80211: smac: only print block-ack timeout message at trace level + (Closes: #674430) + - GFS2: Test bufdata with buffer locked and gfs2_log_lock held + - [x86] mce, therm_throt: Don't report power limit and package level + thermal throttle events in mcelog (Closes: #695209) + - [hppa] fix virtual aliasing issue in get_shared_area() + - xfs: drop buffer io reference when a bad bio is built + - reiserfs: Protect reiserfs_quota_{on,write}() with write lock + - md: Reassigned the parameters if read_seqretry returned true in func + md_is_badblock. + - md: Avoid write invalid address if read_seqretry returned true. + - [i386] Fix invalid stack address while in softirq + - selinux: fix sel_netnode_insert() suspicious rcu dereference + - [hppa] fix user-triggerable panic on parisc + - block: Don't access request after it might be freed + - futex: avoid wake_futex() for a PI futex_q + + [ Ben Hutchings ] + * [x86] udeb: Re-add isci to scsi-extra-modules (Closes: #690886; + regression of #652897 in version 3.2~rc7-1~experimental.1 due to + mis-merge) + * udeb: Add missing net drivers: + - Add 8021q (Closes: #689159), cxgb4, cxgb4vf, igbvf, ixgbevf, micrel, + mlx4_en, pch_gbe, qlge, smsc9420, tehuti, vxge to nic-extra-modules + - Add int51x1, smsc75xx, smsc95xx to nic-usb-modules + - Add adm8211, at76c50x-usb, b43legacy, iwl4965, libertas_tf_usb, + mwifiex_pcie, mwl8k, orinoco_usb, prism2_usb, r8187se, r8192e_pci, + r8712u, rtl8192ce (Closes: #686605), rtl8192cu, rtl8192de, rtl8192se + vt6656_stage to nic-wireless-modules + - Move broadcom to nic-modules, as it may be needed by tg3 + * udeb: Add bnx2fc, fnic, pmcraid to scsi-extra-modules + * udeb: Move rtl8180 to nic-wireless-modules + * [x86] asus-laptop: Do not call HWRS on init (Closes: #692436) + * [x86] drm/i915: Only kick out vesafb if we takeover the fbcon with KMS + (Closes: #686284) + * [!x86] radeon: Disable DRM_RADEON_KMS, as this is still not expected to + work (Closes: #628972) + * radeon: Disable KMS earlier if firmware is not installed (Closes: #607194) + * [amd64] linux-image: Include VIA Nano in package description + * linux-image-dbg: Change package description to use the phrase + 'debugging symbols' and correct grammar + * usb: Disable UAS; it is known to be broken, and the supported devices + can also work with usb-storage + * ipv6: Treat ND option 31 as userland (DNSSL support) (Closes: #694522) + * rt2x00: Add device IDs 5362, 5392, 539b (Closes: #694312) + * udeb: Add pata_piccolo to pata-modules (Closes: #695437) + * firmware_class: Log every success and failure against given device + * firmware: Remove redundant log messages from drivers + * [x86] ACPI / video: ignore BIOS initial backlight value for + HP Folio 13-2000 (Closes: #692361) + * [x86] KVM: x86: invalid opcode oops on SET_SREGS with OSXSAVE bit set + (CVE-2012-4461) + * kmod: make __request_module() killable (CVE-2012-4398) + * exec: do not leave bprm->interp on stack (CVE-2012-4530) + * exec: use -ELOOP for max recursion depth + * [rt] Update to 3.2.34-rt51: + - hrtimer: Raise softirq if hrtimer irq stalled + - rcu: Disable RCU_FAST_NO_HZ on RT + - net: netfilter: Serialize xt_write_recseq sections on RT + * megaraid_sas: fix memory leak if SGL has zero length entries + (Closes: #688198) + + [ Ian Campbell ] + * [xen] add support for microcode updating. (Closes: #693053) + + -- Ben Hutchings Mon, 10 Dec 2012 00:14:55 +0000 + +linux (3.2.32-1) unstable; urgency=low + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.31 + - target: Fix ->data_length re-assignment bug with SCSI overflow + - hpsa: fix handling of protocol error + - cifs: fix return value in cifsConvertToUTF16 + - asix: Support DLink DUB-E100 H/W Ver C1 (Closes: #687567) + - dj: memory scribble in logi_dj + - dm: handle requests beyond end of device instead of using BUG_ON + - md/raid10: fix "enough" function for detecting if array is failed. + - libata: Prevent interface errors with Seagate FreeAgent GoFlex + - vfs: dcache: fix deadlock in tree traversal + - Revert "drm/radeon: rework pll selection (v3)" (regression in 3.2.30) + - HID: hidraw: don't deallocate memory when it is in use + - xfrm: Workaround incompatibility of ESN and async crypto + - xfrm_user: fix various information leaks + - xfrm_user: ensure user supplied esn replay window is valid + - net: guard tcp_set_keepalive() to tcp sockets + - ipv4: raw: fix icmp_filter() + - ipv6: raw: fix icmpv6_filter() + - ipv6: mip6: fix mip6_mh_filter() + - netrom: copy_datagram_iovec can fail + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.32 + - mtd: nand: Use the mirror BBT descriptor when reading its version + - TTY: ttyprintk, don't touch behind tty->write_buf + - n_gsm: fix various serious bugs + - hpsa: Use LUN reset instead of target reset + - staging: comedi: don't dereference user memory for INSN_INTTRIG + - ext4: fix potential deadlock in ext4_nonda_switch() + - staging: comedi: fix memory leak for saved channel list + - scsi_remove_target: fix softlockup regression on hot remove + (Closes: #690990) + - usb: host: xhci: Fix Null pointer dereferencing with 71c731a for + non-x86 systems (regression in 3.2.30) + - ext4: online defrag is not supported for journaled files + - staging: comedi: s626: don't dereference insn->data + - serial: pl011: handle corruption at high clock speeds + - ext4: always set i_op in ext4_mknod() + - ext4: fix fdatasync() for files with only i_size changes + - [x86] drm/i915: use adjusted_mode instead of mode for checking the + 6bpc force flag (regression in 3.2.29) + - staging: comedi: jr3_pci: fix iomem dereference + - JFFS2: don't fail on bitflips in OOB + - mtd: nandsim: bugfix: fail if overridesize is too big + - pnfsblock: fix partial page buffer wirte + - target/file: Re-enable optional fd_buffered_io=1 operation + - iscsit: remove incorrect unlock in iscsit_build_sendtargets_resp + - rapidio/rionet: fix multicast packet transmit logic + - ALSA: aloop - add locking to timer access + - [armhf/omap] counter: add locking to read_persistent_clock + - mm: fix invalidate_complete_page2() lock ordering + - mm: thp: fix pmd_present for split_huge_page and PROT_NONE with THP + - mm: hugetlb: fix pgoff computation when unmapping page from vma + - hugetlb: do not use vma_hugecache_offset() for vma_prio_tree_foreach + - [x86] firewire: cdev: fix user memory corruption (i386 userland on + amd64 kernel) + - udf: fix retun value on error path in udf_load_logicalvol + - eCryptfs: Unlink lower inode when ecryptfs_create() fails + - eCryptfs: Initialize empty lower files when opening them + - eCryptfs: Revert to a writethrough cache model + - eCryptfs: Write out all dirty pages just before releasing the lower file + - eCryptfs: Call lower ->flush() from ecryptfs_flush() + - mempolicy: remove mempolicy sharing + - mempolicy: fix a race in shared_policy_replace() + - mempolicy: fix refcount leak in mpol_set_shared_policy() + - mempolicy: fix a memory corruption by refcount imbalance in + alloc_pages_vma() + - hpsa: dial down lockup detection during firmware flash + - netfilter: nf_ct_ipv4: packets with wrong ihl are invalid + - netfilter: nf_nat_sip: fix incorrect handling of EBUSY for RTCP + expectation + - netfilter: nf_ct_expect: fix possible access to uninitialized timer + - ipvs: fix oops on NAT reply in br_nf context + + [ Ben Hutchings ] + * codel: refine one condition to avoid a nul rec_inv_sqrt + * [mips,mipsel] Ignore NFS/SunRPC ABI changes in 3.2.30 (fixes FTBFS) + * tg3: Fix TSO CAP for 5704 devs w / ASF enabled + * SUNRPC: Set alloc_slot for backchannel tcp ops (regression in 3.2.30) + * iwlwifi: Do not request unreleased firmware for IWL6000 (Closes: #689416) + * aufs: Update to aufs3.2-20120827: + - Fix statfs() values when different block sizes are in use + * udeb: Add hid-logitech-dj to input-modules (Closes: #661379) + * connector: Make CONNECTOR built-in; enable PROC_EVENTS (Closes: #588200) + * e1000e: Change wthresh to 1 to avoid possible Tx stalls + * [x86] efi: Build EFI stub with EFI-appropriate options + * [rt] Update to 3.2.32-rt48: + - random: Make add_interrupt_randomness() work on rt + - softirq: Init softirq local lock after per cpu section is set up + - mm: slab: Fix potential deadlock + - mm: page_alloc: Use local_lock_on() instead of plain spinlock + - rt: rwsem/rwlock: lockdep annotations + - sched: Better debug output for might sleep + - stomp_machine: Use mutex_trylock when called from inactive cpu + * [x86] storvsc: Account for in-transit packets in the RESET path + * fs: handle failed audit_log_start properly + * fs: prevent use after free in auditing when symlink following was denied + * kernel/sys.c: fix stack memory content leak via UNAME26 (CVE-2012-0957) + * ALSA: hda: Fix oops caused by "Fix internal mic for Lenovo Ideapad U300s" + in 3.2.32 + + -- Ben Hutchings Mon, 22 Oct 2012 06:25:37 +0100 + +linux (3.2.30-1) unstable; urgency=low + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.30 + - ext3: Fix fdatasync() for files with only i_size changes + - UBI: fix a horrible memory deallocation bug + - fuse: fix retrieve length + - mmc: card: Skip secure erase on MoviNAND; causes unrecoverable corruption + - udf: Fix data corruption for files in ICB + - xen: Use correct masking in xen_swiotlb_alloc_coherent. + - CIFS: Fix error handling in cifs_push_mandatory_locks + - [x86] drm/i915: Wait for all pending operations to the fb before + disabling the pipe + - xhci: Fix bug after deq ptr set to link TRB + - NFS: Fix the initialisation of the readdir 'cookieverf' array + - staging: comedi: das08: Correct AI encoding for das08jr-16-ao + - staging: comedi: das08: Correct AO output for das08jr-16-ao + - rt2800usb: Added rx packet length validity check + - staging: zcache: fix cleancache race condition with shrinker + - NFS: return error from decode_getfh in decode open + - ARM: 7526/1: traps: send SIGILL if get_user fails on undef handling path + - ahci: Add alternate identifier for the 88SE9172 + + [ Ben Hutchings ] + * [s390/s390x-tape] udeb: Remove fuse-modules configuration (fixes FTBFS) + + -- dann frazier Wed, 26 Sep 2012 16:00:58 +0900 + +linux (3.2.29-1) unstable; urgency=low + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.24 + - sched/nohz: Rewrite and fix load-avg computation -- again + (Closes: #674153) + - libsas: fix taskfile corruption in sas_ata_qc_fill_rtf + - md/raid1: fix use-after-free bug in RAID1 data-check code. + - PCI: EHCI: fix crash during suspend on ASUS computers + - cpufreq / ACPI: Fix not loading acpi-cpufreq driver (regression in 3.2.2) + - block: fix infinite loop in __getblk_slow (regression in 3.2.19) + (Closes: #684293) + - PM / Hibernate: Hibernate/thaw fixes/improvements + - tcm_fc: Fix crash seen with aborts and large reads + - fifo: Do not restart open() if it already found a partner + - cifs: on CONFIG_HIGHMEM machines, limit the rsize/wsize to the kmap space + - UBIFS: fix a bug in empty space fix-up + - ore: Fix NFS crash by supporting any unaligned RAID IO + - ore: Remove support of partial IO request (NFS crash) + - pnfs-obj: don't leak objio_state if ore_write/read fails + - pnfs-obj: Fix __r4w_get_page when offset is beyond i_size + - dm raid1: fix crash with mirror recovery and discard + - dm raid1: set discard_zeroes_data_unsupported + - time: Fix bugs in leap-second handling (Closes: #679882) + + ntp: Fix leap-second hrtimer livelock + + timekeeping: Fix leapsecond triggered load spike issue + - bnx2x: fix checksum validation + - bnx2x: fix panic when TX ring is full + - eCryptfs: Gracefully refuse miscdev file ops on inherited/passed files + - ACPI / PM: Make acpi_pm_device_sleep_state() follow the specification + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.25 + - mm: Fix various performance problems, particularly affecting use of + transparent hugepages (Closes: #675493) + - target: Add range checking to UNMAP emulation + - target: Fix reading of data length fields for UNMAP commands + - target: Fix possible integer underflow in UNMAP emulation + - target: Check number of unmap descriptors against our limit + - ext4: don't let i_reserved_meta_blocks go negative + - ext4: undo ext4_calc_metadata_amount if we fail to claim space + - locks: fix checking of fcntl_setlease argument + - Btrfs: call the ordered free operation without any locks held + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.26 + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.27 + - lirc_sir: make device registration work (Closes: #680762) + - random: Improve random number generation on non-interactive systems + + random: Use arch_get_random_int instead of cycle counter if avail + + random: Use arch-specific RNG to initialize the entropy store + + random: make 'add_interrupt_randomness()' do something sane + + usb: feed USB device information to the /dev/random driver + + net: feed /dev/random with the MAC address when registering a device + + rtc: wm831x: Feed the write counter into device_add_randomness() + + mfd: wm831x: Feed the device UUID into device_add_randomness() + - futex: Test for pi_mutex on fault in futex_wait_requeue_pi() + - futex: Forbid uaddr == uaddr2 in futex_wait_requeue_pi() + - s390/mm: downgrade page table after fork of a 31 bit process + - asus-wmi: use ASUS_WMI_METHODID_DSTS2 as default DSTS ID. + (Closes: #679158) + - md/raid1: don't abort a resync on the first badblock. + - [arm] 7467/1: mutex: use generic xchg-based implementation for ARMv6+ + - [arm] 7476/1: vfp: only clear vfp state for current cpu in vfp_pm_suspend + - [arm] 7477/1: vfp: Always save VFP state in vfp_pm_suspend on UP + - [arm] 7478/1: errata: extend workaround for erratum #720789 + - [arm] Fix undefined instruction exception handling + - mm: mmu_notifier: fix freed page still mapped in secondary MMU + - mm: hugetlbfs: close race during teardown of hugetlbfs shared page tables + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.28 + - bnx2: Fix bug in bnx2_free_tx_skbs(). + - sch_sfb: Fix missing NULL check + - sctp: Fix list corruption resulting from freeing an association on a list + - cipso: don't follow a NULL pointer when setsockopt() is called + - caif: fix NULL pointer check + - net/tun: fix ioctl() based info leaks + - rtlwifi: rtl8192cu: Change buffer allocation for synchronous reads + - hfsplus: fix overflow in sector calculations in hfsplus_submit_bio + - drm/i915: fixup seqno allocation logic for lazy_request + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.29 + - pnfs: defer release of pages in layoutget + - fuse: verify all ioctl retry iov elements + - usb: serial: mos7840: Fixup mos7840_chars_in_buffer() + - sched: fix divide by zero at {thread_group,task}_times + - vfs: canonicalize create mode in build_open_flags() + - dccp: check ccid before dereferencing + - md: Don't truncate size at 4TB for RAID0 and Linear + - target: fix NULL pointer dereference bug alloc_page() fails to get memory + - USB: CDC ACM: Fix NULL pointer dereference + - alpha: Don't export SOCK_NONBLOCK to user space. (Closes: #658460) + - radeon: Fix various bugs in reading vbios (Closes: #685604) + - vfs: missed source of ->f_pos races + - svcrpc: fix BUG() in svc_tcp_clear_pages + - svcrpc: sends on closed socket should stop immediately + - fbcon: fix race condition between console lock and cursor timer (v1.1) + - mm: hugetlbfs: correctly populate shared pmd + - fs/buffer.c: remove BUG() in possible but rare condition + - block: replace __getblk_slow misfix by grow_dev_page fix + - Staging: speakup: fix an improperly-declared variable. (Closes: #685953) + - NFS: Fix Oopses in nfs_lookup_revalidate and nfs4_lookup_revalidate + + [ Ben Hutchings ] + * Bump ABI to 4 + * linux-image: Include package version in utsname version string + ('uname -v' output) (Closes: #638878) + * linux-source: Drop support for version.$DISTRIBUTION + * [arm,ia64,powerpc,s390,sh,x86] linux-image: Include package version + in stack traces from WARN, BUG, Oops etc. + * udeb: Add snd-hda-codec-ca0132 to sound-modules (Closes: #682368) + * linux-source: Suggest pkg-config, needed to build kconfig GUIs + (Closes: #682726) + * debugfs: Add mode, uid and gid mount options; set default mode to 700 + (Closes: #681418) + * net: new counter for tx_timeout errors in sysfs + * net: Add byte queue limits (bql) for reduced buffer-bloat + * bnx2,bnx2x,e1000e,forcedeth,igb,ixgbe,sfc,skge,sky2,tg3: + Add support for bql + * fs: Update link security restrictions to match Linux 3.6: + - Drop kconfig options; restrictions can only be disabled by sysctl + - Change the audit message type from AUDIT_AVC (1400) to + AUDIT_ANON_LINK (1702) + * [rt] Update to 3.2.28-rt42: + - time/rt: Fix up leap-second backport for RT changes + - fix printk flush of messages + * rds: set correct msg_namelen (CVE-2012-3430) + * e1000: add dropped DMA receive enable back in for WoL (Closes: #684618) + * PCI/PM/Runtime: make PCI traces quieter (Closes: #684049) + * rc: ite-cir: Initialise ite_dev::rdev earlier (Closes: #684441) + * input: Enable TOUCHSCREEN_ATMEL_MXT as module (Closes: #685123) + * usb: Add USB_QUIRK_RESET_RESUME for all Logitech UVC webcams + (Closes: #668211) + * [alpha] Use gcc-4.6 (Closes: #685894) + - Use large data model to work around link failure + * [i386/486] video: Change FB_GEODE_LX from built-in to module (lxfb) + (Closes: #686528) + * [i386/686-pae] video: Disable Geode framebuffer drivers, not used with + any chips that support PAE + * [x86] drm/i915: Fix i8xx interrupt handling (Closes: #655152) + * [armel/kirkwood] ahci: Add JMicron 362 device IDs (Closes: #634180) + * speakup: lower default software speech rate (Closes: #686742) + * e1000e: Fix potential DoS when TSO enabled + * mm: Remove user-triggerable BUG from mpol_to_str + * sfc: Fix maximum number of TSO segments and minimum TX queue size + (CVE-2012-3412) + - tcp: Apply device TSO segment limit earlier + * net_sched: gact: Fix potential panic in tcf_gact(). + * af_packet: remove BUG statement in tpacket_destruct_skb + * net: Fix various information leaks + * af_packet: don't emit packet on orig fanout group + * af_netlink: force credentials passing (CVE-2012-3520) + * netlink: fix possible spoofing from non-root processes + * net: ipv4: ipmr_expire_timer causes crash when removing net namespace + * [i386] i810fb: Enable FB_I810_GTF, FB_I810_I2C (Closes: #687644) + * udeb: Add fuse-modules to support os-prober (see #684265) + + [ Bastian Blank ] + * Make xen-linux-system meta-packages depend on xen-system. This allows + automatic updates. (closes: #681637) + + -- Ben Hutchings Sun, 16 Sep 2012 06:16:38 +0100 + +linux (3.2.23-1) unstable; urgency=low + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.22 + - nilfs2: ensure proper cache clearing for gc-inodes + - ath9k_hw: avoid possible infinite loop in ar9003_get_pll_sqsum_dvc + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.23 + - splice: fix racy pipe->buffers uses + - NFC: Prevent multiple buffer overflows in NCI (CVE-2012-3364) + - NFC: Return from rawsock_release when sk is NULL + - md/raid5: Do not add data_offset before call to is_badblock + - md/raid5: In ops_run_io, inc nr_pending before calling + md_wait_for_blocked_rdev + - md/raid10: fix failure when trying to repair a read error. + - udf: Improve sanity checking of filesystem metadata (CVE-2012-3400) + + udf: Avoid run away loop when partition table length is corrupted + + udf: Fortify loading of sparing table + - l2tp: fix a race in l2tp_ip_sendmsg() + - netpoll: fix netpoll_send_udp() bugs + - Btrfs: run delayed directory updates during log replay + - ocfs2: clear unaligned io flag when dio fails + - aio: make kiocb->private NUll in init_sync_kiocb() + - mm: Hold a file reference in madvise_remove + + [ Ben Hutchings ] + * linux-libc-dev: Fix redundant 'GNU glibc' in description (Closes: #631228) + * README.source: Correct name of main patch series file + * [sh] Fix up store queue code for subsys_interface changes (Closes: #680025) + * scsi: Silence unnecessary warnings about ioctl to partition + (Closes: #656899) + * Update Czech debconf template translations (Michal Simunek) + (Closes: #679674) + * linux-image: Remove versioned relations where stable version is new enough + * udf: Improve table length check to avoid possible overflow + * CIFS: Respect negotiated MaxMpxCount (deferred from 3.2.14) + * epoll: clear the tfile_check_list on -ELOOP (CVE-2012-3375) + * nouveau: Update to support Fermi (NVC0+) acceleration (Closes: #679566) + - Refactor sub-channel use + - Bump version to 1.0.0 + * e100: ucode is optional in some cases + * [x86] drm/i915: prefer wide & slow to fast & narrow in DP configs + (Closes: #658662) + * cipso: don't follow a NULL pointer when setsockopt() is called + * [x86] hwmon: Enable SENSORS_SCH5636 as module (Closes: #680934) + * atl1c: fix issue of transmit queue 0 timed out + * raid5: delayed stripe fix (Closes: #680366) + * fs: Remove easily user-triggerable BUG from generic_setlease + * tcp: drop SYN+FIN messages + * fifo: Do not restart open() if it already found a partner (Closes: #678852) + * [rt] linux-source: Include -rt version suffix + * [rt] Update to 3.2.23-rt37: + - Latency histogramms: Cope with backwards running local trace clock + - Latency histograms: Adjust timer, if already elapsed when programmed + - Disable RT_GROUP_SCHED in PREEMPT_RT_FULL + - Latency histograms: Detect another yet overlooked sharedprio condition + - slab: Prevent local lock deadlock + - fs, jbd: pull your plug when waiting for space + - perf: Make swevent hrtimer run in irq instead of softirq + - cpu/rt: Rework cpu down for PREEMPT_RT + - cpu/rt: Fix cpu_hotplug variable initialization + - workqueue: Revert workqueue: Fix PF_THREAD_BOUND abuse + - workqueue: Revert workqueue: Fix cpuhotplug trainwreck + + [ Arnaud Patard ] + * [mipsel] add r8169 to d-i udeb. + + -- Ben Hutchings Sun, 22 Jul 2012 23:25:47 +0100 + +linux (3.2.21-3) unstable; urgency=low + + * driver core: remove __must_check from device_create_file + (fixes FTBFS on sparc) + * i2400m: Disable I2400M_SDIO; hardware did not reach production + * apparmor: remove advertising the support of network rules from + compat iface (Closes: #676515) + * xen/netfront: teardown the device before unregistering it (Closes: #675190) + * linux-{doc,manual,source,support}: Mark as capable of satisfying + relations from foreign packages (Multi-Arch: foreign) (Closes: #679202) + + -- Ben Hutchings Thu, 28 Jun 2012 04:58:18 +0100 + +linux (3.2.21-2) unstable; urgency=low + + * [i386] cpufreq/gx: Fix the compile error + * [powerpc] Enable PPC_DISABLE_WERROR (fixes FTBFS) + * tracing/mm: Move include of trace/events/kmem.h out of header into slab.c + (fixes FTBFS on sparc) + * [i386] Disable incomplete lguest support + * udeb: Add missing dependencies for various modules (see #678587) + - [armel/kirkwood] fb-modules depends on kernel-image + - [ia64] nic-usb-modules depends on kernel-image, nic-shared-modules, + usb-modules + - [ia64] sata-modules depends on kernel-image, scsi-core-modules + - [ia64] scsi-modules depends on scsi-core-modules + - [ia64,powerpc,ppc64] pcmcia-modules depends on kernel-image + - [powerpc,ppc64] nic-pcmcia-modules depends on kernel-image, + nic-shared-modules, pcmcia-modules + - [powerpc,ppc64,x86] scsi-modules depends on ata-modules + - [x86] nic-extra-modules depends on i2c-modules + * wacom: do not crash when retrieving touch_max (Closes: #678798) + * wacom: Revert unintended changes to handling of Tablet PCs + (Closes: #677164) + * linux-image, README.Debian: Suggest debian-kernel-handbook package + + [ Arnaud Patard ] + * [armel, armhf] backport BPF JIT support + + -- Ben Hutchings Tue, 26 Jun 2012 01:56:42 +0100 + +linux-tools (3.2.17-1) unstable; urgency=low + + * New upstream stable updates: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.15 + - modpost: fix ALL_INIT_DATA_SECTIONS + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.16 + - perf hists: Catch and handle out-of-date hist entry maps. + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.17 + - Perf: fix build breakage + + * Fix version insertion in perf man pages + * Build usbip userland packages (Closes: #568362) + - Do not build a shared library package; the API and ABI have changed + from libusbip0 but there has been no upstream soversion change + * usbipd: Enable TCP wrappers for access control + + -- Ben Hutchings Sun, 24 Jun 2012 02:52:26 +0100 + +linux (3.2.21-1) unstable; urgency=low + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.21 + - NFSv4.1: Fix a request leak on the back channel + - target: Return error to initiator if SET TARGET PORT GROUPS emulation + fails + - USB: add NO_D3_DURING_SLEEP flag and revert 151b61284776be2 + - USB: fix gathering of interface associations + + [ Ben Hutchings ] + * [ia64,powerpc] udeb: Add crc-itu-t to crc-modules; make + firewire-core-modules depend on it (fixes FTBFS) + * [arm,m68k,sh4] udeb: Build ipv6-modules + * ethtool: allow ETHTOOL_GSSET_INFO for users + * [rt] bump version to 3.2.20-rt32 + * cpu: Convert 'cpu' and 'machinecheck' sysdev_class to a regular subsystem + * [x86] Add driver auto probing for x86 features + - crypto: Add support for x86 cpuid auto loading for x86 crypto drivers + (Closes: #568008) + - intel-idle: convert to x86_cpu_id auto probing + - HWMON: Convert coretemp to x86 cpuid autoprobing + - HWMON: Convert via-cputemp to x86 cpuid autoprobing + - cpufreq: Add support for x86 cpuinfo auto loading (Closes: #664813) + * [x86] ACPI: Load acpi-cpufreq from processor driver automatically + * Bump ABI to 3 + * input: Add Synaptics USB device driver (Closes: #678071) + * [x86] udeb: Fix dependencies for nic-wireless-modules + + [ Aurelien Jarno ] + * [mips,mipsel] udeb: Remove rivafb and nvidiafb. + * [ppc64]: add udebs, based on powerpc/powerpc64. + + [ Bastian Blank ] + * Support build-arch and build-indep make targets. + + [ Arnaud Patard ] + * [armel/kirkwood] Add dreamplug and iconnect support (Closes: #675922) + + -- Ben Hutchings Fri, 22 Jun 2012 13:54:15 +0100 + +linux (3.2.20-1) unstable; urgency=low + + * The "Confused? You Won't Be" release + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.20 + - cifs: fix oops while traversing open file list (try #4) + - mm/fork: fix overflow in vma length when copying mmap on clone + - mm: fix faulty initialization in vmalloc_init() + - x86, amd, xen: Avoid NULL pointer paravirt references + - ext4: force ro mount if ext4_setup_super() fails + - ext4: disallow hard-linked directory in ext4_lookup + - ext4: add missing save_error_info() to ext4_error() + - ALSA: usb-audio: fix rate_list memory leak + - Bluetooth: btusb: typo in Broadcom SoftSailing id (Closes: #674565) + - ipv4: Do not use dead fib_info entries. + - ipv4: fix the rcu race between free_fib_info and ip_route_output_slow + - l2tp: fix oops in L2TP IP sockets for connect() AF_UNSPEC case + - btree: fix tree corruption in btree_get_prev() + - asix: allow full size 8021Q frames to be received (Closes: #676545) + - ext4: don't trash state flags in EXT4_IOC_SETFLAGS + - ext4: fix the free blocks calculation for ext3 file systems w/ uninit_bg + + [ Ben Hutchings ] + * Rename source package to 'linux' (Closes: #636010) + * Convert source package format to 3.0 (quilt) + - Convert patch system to quilt, except for the 'orig' patch series + - Use xz compression for upstream and Debian tarballs + - README.source: Update description of patch system to match current + usage + - linux-patch-debian: Remove; it is no longer necessary for GPL + compliance and does not work with our current patch management + * linux-image: Change package name for bugs to 'src:linux' (Closes: #644198) + * DFSG: video: Remove nvidiafb and rivafb, which include apparently + obfuscated code (Closes: #383481, #609615). The nouveau driver supports + all the same hardware, aside from RIVA 128 (NV3). + * udeb: Add udf-modules containing UDF filesystem module (Closes: #613972) + * [mipsel/loongson2f] linux-image: Recommend libc6-loongson2f + (Closes: #629410) + * Build-Depend on kmod or module-init-tools, not just the latter + * test-patches: Recognise the rt featureset automatically + * udeb: Build-Depend on kernel-wedge >= 2.84; this allows us to list + modules as required even if they are built-in in some configurations + * filter: Allow to create sk-unattached filters + * proc: Backport hidepid mount option from Linux 3.4 (Closes: #669028) + * NFSv4: Reduce the footprint of the idmapper (Closes: #657078) + * [i386] thp: avoid atomic64_read in pmd_read_atomic for 32bit PAE + (Closes: #676360) + * linux-source: Add single patch for each featureset + * [x86] Enable CRASH_DUMP, PROC_VMCORE (Closes: #623177) + * media/dvb: Enable DVB_DDBRIDGE as module (Closes: #676952) + * net: sock: validate data_len before allocating skb in + sock_alloc_send_pskb() (CVE-2012-2136) + * macvtap: zerocopy: fix offset calculation when building skb + * macvtap: zerocopy: fix truesize underestimation + * macvtap: zerocopy: put page when fail to get all requested user pages + * macvtap: zerocopy: set SKBTX_DEV_ZEROCOPY only when skb is built + successfully + * macvtap: zerocopy: validate vectors before building skb (CVE-2012-2119) + * KVM: Fix buffer overflow in kvm_set_irq() (CVE-2012-2137) + + [ Bastian Blank ] + * [s390/s390x,s390x/s390x] Build debugging symbols. + + -- Ben Hutchings Mon, 11 Jun 2012 02:46:34 +0100 + +linux-2.6 (3.2.19-1) unstable; urgency=low + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.19 + - hpsa: Fix problem with MSA2xxx devices (Closes: #661057) + - IB/core: Fix mismatch between locked and pinned pages + - iommu: Fix off by one in dmar_get_fault_reason() + - vfs: make AIO use the proper rw_verify_area() area helpers + - HID: logitech: read all 32 bits of report type bitfield (Closes: #671292) + - USB: Remove races in devio.c + - ext{3,4}: Fix error handling on inode bitmap corruption + - uvcvideo: Fix ENUMINPUT handling + - dl2k: Clean up rio_ioctl (CVE-2012-2313) + - [x86] MCE: Fix vm86 handling for 32bit mce handler + - [x86] mce: Fix check for processor context when machine check was taken. + - ethtool: Null-terminate filename passed to ethtool_ops::flash_device + - NFSv4: Fix buffer overflows in ACL support (CVE-2012-2375) + + Avoid reading past buffer when calling GETACL + + Avoid beyond bounds copy while caching ACL + + [ Ben Hutchings ] + * be2net: Backport most changes up to Linux 3.5-rc1, thanks to + Sarveshwar Bandi (Closes: #673391) + - Add support for Skyhawk cards + * net/sched: Add codel and fq_codel from Linux 3.5-rc1 + * [x86] udeb: Add hyperv-modules containing Hyper-V paravirtualised drivers + * [x86] ata_piix: defer disks to the Hyper-V drivers by default + * [x86] drm/i915:: Disable FBC on SandyBridge (Closes: #675022) + * AppArmor: compatibility patch for v5 interface (Closes: #661151) + * hugepages: fix use after free bug in "quota" handling (CVE-2012-2133) + * [x86] mm: pmd_read_atomic: fix 32bit PAE pmd walk vs pmd_populate SMP race + condition (CVE-2012-2373) + * hugetlb: fix resv_map leak in error path (CVE-2012-2390) + * [SCSI] fix scsi_wait_scan (Closes: #647436) + + -- Ben Hutchings Fri, 01 Jun 2012 13:15:48 +0100 + +linux-2.6 (3.2.18-1) unstable; urgency=low + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.18 + - hugetlb: prevent BUG_ON in hugetlb_fault() -> hugetlb_cow() + - net: l2tp: unlock socket lock before returning from l2tp_ip_sendmsg + - [sparc] sparc64: Do not clobber %g2 in xcall_fetch_glob_regs(). + - ext4: avoid deadlock on sync-mounted FS w/o journal + - brcm80211: smac: fix endless retry of A-MPDU transmissions + (Closes: #672891) + - target: Fix SPC-2 RELEASE bug for multi-session iSCSI client setups + - ALSA: hda/idt - Fix power-map for speaker-pins with some HP laptops + (Closes: #672582) + - usbnet: fix skb traversing races during unlink(v2) + - [arm] prevent VM_GROWSDOWN mmaps extending below FIRST_USER_ADDRESS + + [ Jonathan Nieder ] + * wacom: Add support for various tablet models (Closes: #671801) + * rt2800usb: Add support for Ralink RT5392/RF5372 chipset (Closes: #673186) + + [ Ben Hutchings ] + * test-patches: Fix -j option, broken since 3.1.0-1~experimental.1 + * rt2800usb: Re-enable powersaving by default, as it should work better + than in 2.6.38 + * [sparc,sparc64] Build virtio-modules-udeb for use in qemu (Closes: #673320) + * KVM: mmu_notifier: Flush TLBs before releasing mmu_lock + * [x86] KVM: nVMX: Fix erroneous exception bitmap check + * [x86] KVM: VMX: vmx_set_cr0 expects kvm->srcu locked + * [s390] KVM: do store status after handling STOP_ON_STOP bit + * [s390] KVM: Sanitize fpc registers for KVM_SET_FPU + * ACPI battery: only refresh the sysfs files when pertinent information + changes (Closes: #670958) + + -- Ben Hutchings Mon, 21 May 2012 04:07:08 +0100 + +linux-2.6 (3.2.17-1) unstable; urgency=low + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.17 + - md: fix possible corruption of array metadata on shutdown. + - ext4: fix endianness breakage in ext4_split_extent_at() + - KVM: unmap pages from the iommu when slots are removed (CVE-2012-2121) + - btrfs: btrfs_root_readonly() broken on big-endian + - ocfs2: Fix various bugs affecting big-endian architectures + - lockd: fix the endianness bug + - phonet: Check input from user before allocating + - netlink: fix races after skb queueing + - net: fix a race in sock_queue_err_skb() + - net/ethernet: ks8851_mll fix rx frame buffer overflow + - x86, apic: APIC code touches invalid MSR on P5 class machines + - drm/i915: fix integer overflow in i915_gem_execbuffer2() + - drm/i915: fix integer overflow in i915_gem_do_execbuffer() + - USB: cdc-wdm: fix race leading leading to memory corruption + - autofs: make the autofsv5 packet file descriptor use a packetized pipe + (Closes: #633423) + - efi: Validate UEFI boot variables + - efivars: Improve variable validation + - fs/cifs: fix parsing of dfs referrals + - hfsplus: Fix potential buffer overflows (CVE-2012-2319) + - exit_signal: fix the "parent has changed security domain" logic + + [ Ben Hutchings ] + * aufs: Enable AUFS_EXPORT + * ext4: Report max_batch_time option correctly (Closes: #654206) + * [i386/rt-686-pae] Enable HIGHMEM64G as intended for this configuration + * NFSv4: Revalidate uid/gid after open (Closes: #659111) + * sky2: propogate rx hash when packet is copied + * sky2: fix receive length error in mixed non-VLAN/VLAN traffic + (Closes: #492853) + * KVM: Ensure all vcpus are consistent with in-kernel irqchip settings + (CVE-2012-1601) + * KVM: lock slots_lock around device assignment (CVE-2012-2121) + * [rt] bump version to 3.2.16-rt27 + + [ Bastian Blank ] + * [s390] Enable IUCV special message support. (closes: #671238) + + [ Arnaud Patard ] + * [armhf] Add vexpress support from Vagrant Cascadian with a slightly + modified kernel configuration (Closes: #670462) + * [armel] Introduce a new udeb module for leds and use it on kirkwoord + kernel thanks to Simon Guinot (Closes: #671200) + + -- Ben Hutchings Sat, 12 May 2012 15:29:09 +0100 + +linux-2.6 (3.2.16-1) unstable; urgency=low + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.16 + - drm/i915: properly compute dp dithering for user-created modes + (Closes: #666360) + - md/bitmap: prevent bitmap_daemon_work running while initialising bitmap + - [ia64] Fix futex_atomic_cmpxchg_inatomic() (Closes: #659485) + - USB: serial: fix race between probe and open + - fcaps: clear the same personality flags as suid when fcaps are used + (CVE-2012-2123) + - ACPICA: Fix to allow region arguments to reference other scopes + (Closes: #661581) + - futex: Do not leak robust list to unprivileged process + - drm/radeon/kms: fix the regression of DVI connector check + (Closes: #670047) + + [ Ben Hutchings ] + * rt2x00: Identify rt2800usb chipsets. (Closes: #658067) + * [x86] Add EFI boot stub support (Closes: #669033) + * brcmsmac: "INTERMEDIATE but not AMPDU" only when tracing + * NFSv4: Fix error handling and improve error reporting for file locking + (Closes: #669270) + - Rate limit the state manager for lock reclaim warning messages + - Ensure that the LOCK code sets exception->inode + - Ensure that we check lock exclusive/shared type against open modes + * [x86] i915: Fix integer overflows in i915_gem_{do_execbuffer,execbuffer2} + * Revert "autofs: work around unhappy compat problem on x86-64". + Reopens #633423. + + -- Ben Hutchings Sun, 29 Apr 2012 08:00:53 +0100 + +linux-2.6 (3.2.15-1) unstable; urgency=high + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.15 + - drm/radeon/kms: fix fans after resume (Closes: #596741) + - sysctl: fix write access to dmesg_restrict/kptr_restrict + - [x86] PCI: use host bridge _CRS info on MSI MS-7253 (Closes: #619034) + - nfs: Fix length of buffer copied in __nfs4_get_acl_uncached + - [x86] ioat: fix size of 'completion' for Xen (Closes: #660554) + - cred: copy_process() should clear child->replacement_session_keyring + + [ Ben Hutchings ] + * net: fix /proc/net/dev regression (Closes: #659499) + * [armel/orion5x] Fix GPIO enable bits for MPP9 (Closes: #667446) + * [x86] drm/i915: mask transcoder select bits before setting them on LVDS + * [armhf/mx5,mipsel/loongson-2f] input: Enable INPUT_TOUCHSCREEN + (Closes: #668036) + * [x86] hv: Update all Hyper-V drivers to 3.4-rc1 (Closes: #661318) + * hugetlb: fix race condition in hugetlb_fault() + + -- Ben Hutchings Sat, 14 Apr 2012 18:23:44 +0100 + +linux-2.6 (3.2.14-1) unstable; urgency=low + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.14 + - mm: thp: fix pmd_bad() triggering in code paths holding mmap_sem + read mode (CVE-2012-1179) + - hugetlbfs: avoid taking i_mutex from hugetlbfs_read() + - md/bitmap: ensure to load bitmap when creating via sysfs + (Closes: #661558) + - md: dont set md arrays to readonly on shutdown + - md/raid1,raid10: avoid deadlock during resync/recovery (Closes: #584881) + - md: fix clearing of the changed flags for the bad blocks list + - xfs: fix inode lookup race + - sysctl: protect poll() in entries that may go away + - NFSv4: Rate limit the state manager warning messages (Closes: #666121) + - jbd2: clear BH_Delay & BH_Unwritten in journal_unmap_buffer + - ext4: ignore EXT4_INODE_JOURNAL_DATA flag with delalloc + - ext4: fix race between sync and completed io work + - ext4: check for zero length extent + - vfs: fix d_ancestor() case in d_materialize_unique + - udf: Fix deadlock in udf_release_file() + - dm crypt: add missing error handling + - dm thin: fix stacked bi_next usage + - xfs: Fix oops on IO error during xlog_recover_process_iunlinks() + - NFSv4: Fix two infinite loops in the mount code + - drm/i915: suspend fbdev device around suspend/hibernate + (Closes: #645547) + - net: fix a potential rcu_read_lock() imbalance in rt6_fill_node() + - [x86] tls: Off by one limit check + - PCI: ASPM: Fix pcie devices with non-pcie children (Closes: #665420) + + [ Jonathan Nieder ] + * ata: Enable PATA_IT8213 as module (Closes: #666506) + + -- Ben Hutchings Thu, 05 Apr 2012 05:02:45 +0100 + +linux-2.6 (3.2.13-1) unstable; urgency=low + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.13 + + [ Ben Hutchings ] + * kbuild: do not check for ancient modutils tools + + [ Uwe Kleine-König ] + * [rt] bump version to 3.2.12-rt22 + + [ Bastian Blank ] + * [s390x] Ignore ABI change. + + -- Bastian Blank Wed, 28 Mar 2012 13:40:26 +0200 + +linux-tools (3.2.7-2) unstable; urgency=high + + * Apply upstream changes to fix various buffer overflow bugs: + - perf tools: Use scnprintf where applicable + - perf tools: Incorrect use of snprintf results in SEGV + + -- Ben Hutchings Tue, 20 Mar 2012 04:54:22 +0000 + +linux-2.6 (3.2.12-1) unstable; urgency=high + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.11 + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.12 + - aio: fix io_setup/io_destroy race + - aio: fix the "too late munmap()" race + - vfs: fix double put after complete_walk() + - acer-wmi: No wifi rfkill on Lenovo machines (Closes: #655941) + - tcp: fix false reordering signal in tcp_shifted_skb + - r8169: corrupted IP fragments fix for large mtu + - tcp: don't fragment SACKed skbs in tcp_mark_head_lost() + - tcp: fix tcp_shift_skb_data() to not shift SACKed data below snd_una + - block: Fix NULL pointer dereference in sd_revalidate_disk + (Closes: #649735) + - block: fix __blkdev_get and add_disk race condition + + [ Ben Hutchings ] + * [powerpc] Enable KVM_GUEST + * [s390] Ignore arch_pick_mmap_layout version change; it should not be + needed by modules (fixes FTBFS) + * [x86] Disable POHMELFS; this version is obsolete + * epoll: Don't limit non-nested epoll paths + * CIFS: Fix a spurious error in cifs_push_posix_locks + * [rt] bump rt patch to version 3.2.11-rt20 + * aufs: Update to aufs3.2-20120312 + * tcp: fix syncookie regression + * ipv6: Don't dev_hold(dev) in ip6_mc_find_dev_rcu + + [ Jonathan Nieder ] + * [x86] Enable RTS5139 as module (Closes: #663912) + + -- Ben Hutchings Tue, 20 Mar 2012 04:32:51 +0000 + +linux-2.6 (3.2.10-1) unstable; urgency=high + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.10 + - regset: Prevent null pointer reference on readonly regsets + (CVE-2012-1097) + + [ Uwe Kleine-König ] + * [rt] bump rt patch to version 3.2.9-rt17 + * [rt] fix conflict between the security restrictions on links introduced in + 3.2.9-1 and rt (Closes: #663269) + + [ Aurelien Jarno ] + * [mips,mipsel] Mark ext4-modules as provided by the kernel-image udeb, remove + ide-core-modules provide. + + [ Ben Hutchings ] + * [x86,ia64] PCI/hotplug: Build-in common hotplug drivers: + - Change HOTPLUG_PCI, HOTPLUG_PCI_PCIE to built-in + - [x86] Change HOTPLUG_PCI_ACPI to built-in (Closes: #663433) + - [ia64] Enable HOTPLUG_PCI_SGI as built-in + * linux-headers: Remove unused, broken symlinks to Kbuild (Closes: #663597) + * udeb: Remove dependency of {pcmcia,usb}-storage-modules on ide-core-modules + * [mips,mipsel] Mark ata-modules as provided by the kernel-image udeb + for most flavours + + -- Bastian Blank Tue, 13 Mar 2012 17:19:32 +0100 + +linux-tools (3.2.7-1) unstable; urgency=low + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.7 + - perf tools: Fix perf stack to non executable on x86_64 + - perf evsel: Fix an issue where perf report fails to show the proper + percentage + + -- Ben Hutchings Mon, 05 Mar 2012 00:19:02 +0000 + +linux-2.6 (3.2.9-1) unstable; urgency=high + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.8 + - [i386] i387: move TS_USEDFPU flag from thread_info to task_struct + - [x86] additional refactoring of FPU/SSE state save and restore + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.9 + - vfs: fix d_inode_lookup() dentry ref leak + - target: Allow control CDBs with data > 1 page + - epoll: introduce POLLFREE to flush ->signalfd_wqh before kfree() + - epoll: ep_unregister_pollwait() can use the freed pwq->whead + - epoll: limit paths (CVE-2011-1083) + - cdrom: use copy_to_user() without the underscores + + [ Bastian Blank ] + * [mips,mipsel] Also remove ext4 modules from installer. + + [ Ben Hutchings ] + * Update debconf template translations: + - Update Dutch (Willem Kuyn) (Closes: #658736) + - Add Polish (Michał Kułach) (Closes: #658912) + * Bump ABI to 2 + * fs: Introduce and enable security restrictions on links: + - Do not follow symlinks in /tmp that are owned by other users + (sysctl: fs.protected_symlinks) + - Do not allow unprivileged users to create hard links to sensitive files + (sysctl: fs.protected_hardlinks) (Closes: #609455) + + This breaks the 'at' package in stable, which will be fixed shortly + (see #597130) + The precise restrictions are specified in Documentation/sysctl/fs.txt in + the linux-doc-3.2 and linux-source-3.2 packages. + * iwlwifi: fix key removal (Closes: #651199) + * cgroups: Set CGROUP_PERF + * hid: Enable HID_HOLTEK, HID_PRIMAX, HID_SPEEDLINK, HID_WIIMOTE as modules, + HID_ACRUX_FF + * media/rc: Enable RC_ATI_REMOTE as module + * gspca: Enable USB_GSPCA_TOPRO as module + * dvb-usb: Enable DVB_USB_PCTV452E, DVB_USB_MXL111SF as modules + + [ Uwe Kleine-König ] + * [x86] Update rt featureset to 3.2.9-rt15 + + -- Ben Hutchings Sun, 04 Mar 2012 15:32:20 +0000 + +linux-2.6 (3.2.7-1) unstable; urgency=low + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.7 + + [ Ben Hutchings ] + * Add Turkish debconf template translations (Mert Dirik) (Closes: #660117) + * [amd64] Disable BLK_DEV_IDEPNP, BLK_DEV_OPTI621, IDE_GENERIC + * Use libata-based drivers for most of the remaining PATA controllers: + - pata_legacy replaces ide-generic + - pata_isapnp replaces ide-pnp + - pata_opti replaces opti621 + - pata_hpt366 and pata_hpt37x replace hpt366 + - pata_ninja32 replaces delkin_cb + - pata_cs5535 replaces cs5535 + - pata_winbond replaces sl82c105 + - [alpha] pata_cypress replaces cy82c693 + - [hppa] pata_ns87415 replaces ns87415 + - [sparc] Various replacements, as for x86 in 2.6.32-10 + * Disable old IDE subsystem [!ia64,m68k]: + - Disable BLK_DEV_IT8172, BLK_DEV_IT8213, BLK_DEV_TC86C001, BLK_DEV_TRM290 + - [alpha] Disable BLK_DEV_4DRIVES, BLK_DEV_ALI14XX, BLK_DEV_DTC2278, + BLK_DEV_HT6560B, BLK_DEV_QD65XX, BLK_DEV_UMC8672 + * fs: Enable EFI_PARTITION in all configurations (Closes: #660582) + * [i386] Re-enable INTEL_IOMMU, IRQ_REMAP + * [mips/r5k-ip32] Enable INPUT_SGI_BTNS (previously INPUT_SGIO2_BTNS) + * [powerpc/powerpc64] Enable IBM_EMAC (previously IBM_NEW_EMAC) + * [x86] drm/i915: do not enable RC6p on Sandy Bridge (Closes: #660265) + * ipsec: be careful of non existing mac headers (Closes: #660804) + * version: Use maintainer rather than uploader address for official + binary packages + + [ Bastian Blank ] + * Don't advertise Xen support for rt images. (closes: #659988) + * [m68k,mips,mipsel] Use ext4 for all ext-variants. (closes: #660446) + * [m68k,mips,mipsel] Don't built-in ramdisk support. + * [hppa,mips,mipsel] Don't built-in cramfs support. + * [alpha,hppa] Don't built-in ext2. + * Remove IDE trigger for LED support. + * Remove all framebuffer bootup logos. + * NFSv4: Fix an Oops in the NFSv4 getacl code. + + -- Bastian Blank Tue, 28 Feb 2012 16:00:41 +0100 + +linux-2.6 (3.2.6-1) unstable; urgency=low + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.5 + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.6 + - ALSA: hda - Apply 0x0f-VREF fix to all ASUS laptops with ALC861/660 + (Closes: #657302) + - [armhf] vfp: flush thread hwstate before restoring context from sigframe + - proc: mem_release() should check mm != NULL + - proc: make sure mem_open() doesnt pin the targets memory + - [arm] sched/rt: Fix task stack corruption under + __ARCH_WANT_INTERRUPTS_ON_CTXSW + - eCryptfs: Infinite loop due to overflow in ecryptfs_write() + - iscsi-target: Fix reject release handling in iscsit_free_cmd() + - iscsi-target: Fix double list_add with iscsit_alloc_buffs reject + - pcmcia: fix socket refcount decrementing on each resume + + [ Aurelien Jarno ] + * hwmon: backport IT8728F support for linux 3.3. + + [ Uwe Kleine-König ] + * [amd64] Update rt featureset to 3.2.5-rt12 + * [i386] enable rt featureset for 686-pae + + [ Arnaud Patard ] + * Merge ixp4xx oops fix when probing mtd. + + [ Ben Hutchings ] + * Change linux-image dependencies to allow kmod as an alternative to + module-init-tools + * relay: prevent integer overflow in relay_open() + * builddeb: Don't create files in /tmp with predictable names + * ath9k: fix a WEP crypto related regression (Closes: #659484) + + -- Ben Hutchings Thu, 16 Feb 2012 02:38:38 +0000 + +linux-2.6 (3.2.4-1) unstable; urgency=low + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.3 + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.4 + - eCryptfs: Sanitize write counts of /dev/ecryptfs + - eCryptfs: Make truncate path killable + - eCryptfs: Check inode changes in setattr + - drm/i915: paper over missed irq issues with force wake voodoo + - tpm_tis: add delay after aborting command (Closes: #649033) + - USB: ftdi_sio: fix initial baud rate (Closes: #658164) + - USB: Realtek cr: fix autopm scheduling while atomic (Closes: #656724) + + [ Ben Hutchings ] + * [armel] Add mv78xx0 flavour; thanks to Steve McIntyre for the config + * net: Disable FIXED_PHY; this driver only causes trouble + * PCI: Rework ASPM disable code (fixes power usage regression on some + systems) + + [ Bastian Blank ] + * Remove unneeded scmversion workaround. + + -- Bastian Blank Sun, 05 Feb 2012 15:42:21 +0100 + +linux-2.6 (3.2.2-1) unstable; urgency=low + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.2 + - ext4: fix undefined behavior in ext4_fill_flex_info() (CVE-2009-4307) + - Unused iocbs in a batch should not be accounted as active (CVE-2012-0058) + - uvcvideo: Fix integer overflow in uvc_ioctl_ctrl_map() + - [arm] proc: clear_refs: do not clear reserved pages + + [ Ben Hutchings ] + * Clean up linux-image maintainer scripts: + - Stop changing 'build' and 'source' symlinks; these now belong to the + linux-headers packages + - Remove unused configuration variables + - prerm: Remove last vestige of /usr/doc transition + - postrm: Remove modules.*.bin; currently modules.builtin.bin is left + behind + * [alpha] Build with gcc-4.5 (Closes: #657112) + * aufs: Update to aufs3.2-20120109 (fixes FTBFS on m68k) + * [m68k] Fix assembler constraint to prevent overeager gcc optimisation + * sdhci-pci: Include driver in installer + * [armel] udeb: Do not attempt to build lzo-modules udeb as lzo_compress + is now built-in (fixes FTBFS) + * [armhf] udeb: Include rt2800usb in nic-modules, replacing rt2870sta + which was removed from the kernel + * drm: Fix authentication kernel crash + * xfs: Fix missing xfs_iunlock() on error recovery path in xfs_readlink() + * jbd: Issue cache flush after checkpointing + * crypto: sha512 - make it work, undo percpu message schedule + - crypto: sha512 - reduce stack usage to safe number + * [x86] xen: size struct xen_spinlock to always fit in arch_spinlock_t + * l2tp: l2tp_ip - fix possible oops on packet receive + * macvlan: fix a possible use after free + * tcp: fix tcp_trim_head() to adjust segment count with skb MSS + * [x86] KVM: fix missing checks in syscall emulation (CVE-2012-0045) + + [ Thorsten Glaser ] + * [m68k] Use gcc-4.6 like (almost) all other architectures + * Pass the cflags define as CFLAGS_KERNEL and CFLAGS_MODULE to kbuild + * [m68k] Use cflags -ffreestanding (Closes: #648996) + + [ Aurelien Jarno ] + * [mips,octeon] Disabled CONFIG_FIXED_PHY as it conflicts with the octeon + phy driver. + + -- Ben Hutchings Wed, 01 Feb 2012 01:44:05 +0000 + +linux-tools (3.2.1-2) unstable; urgency=low + + * Add Vcs-{Svn,Browser} fields + * Reduce minimum version of linux-base to 3.4~ to support backports + + -- Ben Hutchings Tue, 24 Jan 2012 04:26:24 +0000 + +linux-2.6 (3.2.1-2) unstable; urgency=high + + [ Stefan Lippers-Hollmann ] + * udeb: Add missing modules to nic-wireless-modules: + - lib80211 encryption algorithms (lib80211_crypt_{wep,ccmptkip}) + needed for e.g. ipw2x00 wlan modules (Closes: #636259) + - ath9k_htc, carl9170 and rt2800{pci,usb} drivers + (Closes: #636321, #636353, #636385) + + [ Ben Hutchings ] + * Update Vcs-Browser URL for the switch to ViewVC + * Point Vcs-{Svn,Browser} at trunk branch, since the sid branch does + not always exist + * Build linux-libc-dev without multiarch if dpkg does not support it, + to support backports + * proc: clean up and fix /proc//mem handling (CVE-2012-0056) + + [ Aurelien Jarno ] + * [x86] Backport KVM nested VMX fixes from 3.3 to fix warnings and + crashes of L1 guests. + + -- Ben Hutchings Mon, 23 Jan 2012 15:10:04 +0000 + +linux-tools (3.2.1-1) unstable; urgency=low + + * New upstream release + + -- Ben Hutchings Thu, 19 Jan 2012 04:17:19 +0000 + +linux-2.6 (3.2.1-1) unstable; urgency=low + + * New upstream release: http://kernelnewbies.org/Linux_3.2 + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.1 + + [ Aurelien Jarno ] + * [arm, mips, mipsel, sh4] Add a virtio-modules udeb on flavours which + can be emulated by QEMU. + + [ Ben Hutchings ] + * media/dvb: Enable DVB_USB_IT913X as module (Closes: #653776) + * [arm] Remove use of possibly undefined BUILD_BUG_ON in + (fixes FTBFS) + * Install /lib/modules//modules.builtin in linux-image + packages + * [ia64] Add accept4() syscall (Closes: #647825) + * [x86] staging: Enable STAGING_MEDIA, which various drivers now depend on + (Closes: #654800) + * [um,m68k] Register a generic CPU device (fixes regression introduced by + the fix for #649216) + * [alpha] add io{read,write}{16,32}be functions, thanks to Michael Cree + * net: reintroduce missing rcu_assign_pointer() calls + * Input: ALPS - add support for protocol versions 3 and 4 + (Closes: #618422, #648207) + * [powerpc/powerpc64] udeb: Drop zlib-modules; ZLIB_DEFLATE is built-in + * [amd64] iommu: Enable INTEL_IOMMU, INTEL_IOMMU_FLOPPY_WA, IRQ_REMAP + * [amd64] cpufreq: Enable X86_P4_CLOCKMOD (Closes: #656328) + * Refresh list of related firmware packages for bug script + + [ Bastian Blank ] + * [amd64] crypt: Enable some amd64 only ciphers. + * Packaging updates: + - Use unicode. + - Cleanup config handling. + - Remove support for plain-xen image type. + - Allow disabling debug infos for unreleased builds. + + [ Arnaud Patard ] + * [armel] disable tomoyo and apparmor to allow kernel image to fit into flash. + * [armel] add back ixp4xx gpiolib patch + * [arm] backport topdown mmap support from rmk's tree + * [armel] Enable support from LaCIE kirkwood devices, thanks to Simon Guinot + (Closes: #655344) + * [armel] Backport 88f6282 A1 support + + [ Jurij Smakov ] + * [sparc] Add mpt2sas to scsi-common-modules udeb on sparc and sparc64, + needed by Niagara T3 machines. + + -- Ben Hutchings Wed, 18 Jan 2012 16:14:12 +0000 + +linux-2.6 (3.2~rc7-1~experimental.1) experimental; urgency=low + + * New upstream release candidate + - [powerpc] pasemi_mac: Fix building as module + - [x86] mpparse: Account for bus types other than ISA and PCI + (Closes: #586494) + - EHCI : Fix a regression in the ISO scheduler (Closes: #651382) + - [arm] setup: initialize arm_dma_zone_size earlier (Closes: #651215) + + [ Ben Hutchings ] + * [x86] et131x: Include driver in installer (Closes: #651440) + * security: Enable APPARMOR (Closes: #598408) + + [ Uwe Kleine-König ] + * [amd64] Update rt featureset to 3.2-rc5-rt8 + + [ Bastian Blank ] + * Use xz compression for all packages. + + -- Bastian Blank Wed, 28 Dec 2011 14:55:38 +0100 + +linux-tools (3.2~rc4-1~experimental.1) experimental; urgency=low + + * New upstream release candidate + + -- Ben Hutchings Wed, 07 Dec 2011 01:53:15 +0000 + +linux-2.6 (3.2~rc4-1~experimental.1) experimental; urgency=low + + * New upstream release candidate + + [ Ben Hutchings ] + * aufs: Update to aufs3.x-rcN-20111114 + * ieee802154: Enable IEEE802154_6LOWPAN as module + * can: Enable CAN_GW, CAN_EMS_PCMCIA, CAN_PEAK_PCI as modules + * nfc: enable NFC_NCI as module + * scsi: Enable MVUMI as module + * dm: Enable DM_THIN_PROVISIONING as module + * b43: Enable B43_PHY_HT + * [ia64,powerpc,sparc,x86] wireless: Enable MWIFIEX_PCIE as module + * udeb: Update configuration for 3.2: + - Provide the default configuration instead of including it from the + kernel-wedge package + - iwlagn is renamed to iwlwifi + - blowfish is renamed to blowfish_generic + + [ Uwe Kleine-König ] + * [amd64] reenable rt featureset with 3.2-rc4-rt5 + + -- Ben Hutchings Sat, 03 Dec 2011 23:07:41 +0000 + +linux-2.6 (3.1.8-2) unstable; urgency=high + + * igmp: Avoid zero delay when receiving odd mixture of IGMP queries + (Closes: #654876) (CVE-2012-0207) + + -- Ben Hutchings Tue, 10 Jan 2012 00:14:39 +0000 + +linux-2.6 (3.1.8-1) unstable; urgency=low + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.1.7 + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.1.8 + - Revert "clockevents: Set noop handler in clockevents_exchange_device()", + included in stable update 3.1.5 (Closes: #653398) + - cfq-iosched: fix cfq_cic_link() race condition + - binary_sysctl(): fix memory leak + - cgroups: fix a css_set not found bug in cgroup_attach_proc + - iwlwifi: allow to switch to HT40 if not associated (Closes: #653423) + - futex: Fix uninterruptible loop due to gate_area + - drm/radeon/kms: bail on BTC parts if MC ucode is missing + - [sparc] sparc64: Fix masking and shifting in VIS fpcmp emulation. + - llc: llc_cmsg_rcv was getting called after sk_eat_skb. + - ipv4: reintroduce route cache garbage collector + - Revert "rtc: Disable the alarm in the hardware" (Closes: #652869) + + [ Ben Hutchings ] + * snapshot: Implement compat_ioctl (Closes: #502816) + * drm/radeon: flush read cache for gtt with fence on r6xx and newer GPU + (Closes: #646376) + * rtc: Fix alarm rollover when day or month is out-of-range (Closes: #646429) + * l2tp: ensure sk->dst is still valid (Closes: #652503) + * Update Russian debconf template translations (Yuri Kozlov) + (Closes: #653716) + * v4l2-ioctl: integer overflow in video_usercopy() + * Restrict ioctl forwarding on partitions and logical volumes (CVE-2011-4127) + * [x86] KVM: Prevent starting PIT timers in the absence of irqchip support + (CVE-2011-4622) + + [ Jonathan Nieder ] + * prerm: Print an error message when aborting removal of the running + kernel (Closes: #601962) + + [ Aurelien Jarno ] + * [sh4] Remove core-modules udeb as it is empty. + * [sh4/sh7751r] Disable CONFIG_RTS7751R2D_1. Support for this board + implies IRQless IDE, which causes data corruption. + + -- Ben Hutchings Sun, 08 Jan 2012 16:31:16 +0000 + +linux-2.6 (3.1.6-1) unstable; urgency=low + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.1.6 + - staging: r8712u: Add new USB ID (Closes: #651622) + - [arm] setup: initialize arm_dma_zone_size earlier (Closes: #651215) + + [ Ben Hutchings ] + * [x86] Enable HYPERV, HYPERV_STORAGE, HYPERV_NET, HYPERV_UTILS, + HYPERV_MOUSE as modules (Closes: #652014) + * cciss: Add IRQF_SHARED back in for the non-MSI(X) interrupt handler + (Closes: #650119) + * udeb: Update configuration: + - Provide the default configuration instead of including it from the + kernel-wedge package + - [x86] Include et131x (Closes: #651440) + - [x86] Include isci (Closes: #652897) + + -- Bastian Blank Fri, 23 Dec 2011 17:02:26 +0100 + +linux-tools (3.1.1-3) unstable; urgency=low + + * Fix s390x support. + + -- Aurelien Jarno Sun, 18 Dec 2011 19:32:12 +0100 + +linux-2.6 (3.1.5-1) unstable; urgency=low + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.1.5 + - bridge: correct IPv6 checksum after pull (Closes: #651469) + - USB: EHCI: fix HUB TT scheduling issue with iso transfer + (Closes: #651015) + - [x86] mpparse: Account for bus types other than ISA and PCI + (Closes: #586494) + + [ Bastian Blank ] + * Fix generation of revisions for the patch list. + + [ Hector Oron ] + * regulator: backport fix for nullpointer dereference in core. + + [ Ben Hutchings ] + * [x86] Enable MEMTEST (Closes: #613321, #646361) + - If bad RAM is detected, WARN and recommend a more thorough test + * brcmsmac: Fix I/O functions for MIPS and for big-endian architectures + * [x86] Enable GPIO_PCH, GPIO_ML_IOH, I2C_EG20T, PCH_CAN, PCH_DMA, + PCH_GBE, PCH_PHUB, SERIAL_PCH_UART, SPI_TOPCLIFF_PCH, USB_GADGET, + USB_EG20T as modules + + -- Ben Hutchings Sun, 11 Dec 2011 05:28:40 +0000 + +linux-2.6 (3.1.4-1) unstable; urgency=low + + * New upstream stable updates: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.1.2 + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.1.3 + - TTY: ldisc, wait for ldisc infinitely in hangup (Closes: #645071) + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.1.4 + + [ Martin Michlmayr ] + * [armel] Set the priority of pata-modules to standard since the + GLAN Tank uses PATA. + + [ Ben Hutchings ] + * Enable BCMA as module, BCMA_HOST_PCI and B43_BCMA (Closes: #649567) + but limit these to devices not supported by brcmsmac + * brcmsmac: Enable as module for all architectures + * Include module taint flags in bug reports + * lirc_serial: Fix various bugs that may result in a crash, deadlock or + other failure (Closes: #645811) + * amilo-rfkill: Use proper functions to write to the i8042 safely + * topology: Provide CPU topology in sysfs in !SMP configurations + (Closes: #649216) + + [ Bastian Blank ] + * Include generated headers. (closes: #650085) + + -- Bastian Blank Tue, 29 Nov 2011 14:14:14 +0100 + +linux-tools (3.1.1-2) unstable; urgency=low + + * Change the check for stale debian/control to tolerate binNMUs + (Closes: #649005) + * Rebuild with perl 5.14 (Closes: #649006) + + -- Ben Hutchings Thu, 17 Nov 2011 03:18:03 +0000 + +linux-tools (3.1.1-1) unstable; urgency=low + + * New upstream release + + [ Bastian Blank ] + * Rename to linux-tools. + * Use 3.0 (quilt) source format. + * Properly patch modpost symbol prefix setting. + * Build linux-tools binary package. + + -- Ben Hutchings Mon, 14 Nov 2011 04:57:47 +0000 + +linux-2.6 (3.1.1-1) unstable; urgency=high + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.1.1 + + [ Aurelien Jarno ] + * [s390x] Add s390x udebs, based on linux-kernel-di-s390x-2.6. + * [sparc64] Sync udebs with sparc. + + [ Ben Hutchings ] + * [powerpc] Fix module selection for {ata,ide,scsi-core}-modules udebs + * [alpha] wire up accept4 syscall, thanks to Michael Cree + * iwlagn: fix modinfo display for 135 ucode (Closes: #647958) + * [powerpc] ptrace: Fix build with gcc 4.6 + * [arm] add io{read,write}{16,32}be functions (fixes FTBFS) + * cifs, freezer: add wait_event_freezekillable and have cifs use it + (Closes: #488794) + * [alpha] Remove old, broken udeb configuration (Closes: #647586) + * DFSG: Remove drivers/staging/ft1000/ft1000-*/*.img, non-free + firmware for drivers we don't build + * hfs: fix hfs_find_init() sb->ext_tree NULL ptr oops (CVE-2011-2203) + * vmscan: fix shrinker callback bug in fs/super.c + * block: Always check length of all iov entries in blk_rq_map_user_iov() + * [x86] Add amilo-rfkill driver for some Fujitsu-Siemens Amilo laptops + (Closes: #631664) + + [ Arnaud Patard ] + * [arm] add missing ioread/write be functions to ixp4xx to fix FTBFS + * [armhf] allow to build kernel image for iMX51 and iMX53 and enable some + iMX53 platforms. + * [armhf] add ahci for iMX53, pata for iMX51 + + -- Ben Hutchings Sun, 13 Nov 2011 20:08:09 +0000 + +linux-2.6 (3.1.0-1~experimental.1) experimental; urgency=low + + * New upstream release: http://kernelnewbies.org/Linux_3.1 + - drm/i915: FBC off for ironlake and older, otherwise on by default + (Closes: #641622) + - drm/radeon: Update AVIVO cursor coordinate origin before x/yorigin + calculation (Closes: #585130) + - crypto: ghash - Avoid null pointer dereference if no key is set + + [ Ben Hutchings ] + * [powerpc/powerpc64] Add missing #include to LPAR console selection fix + * Make kernel-wedge package checks non-fatal in experimental builds + * [x86/!486] Enable INTEL_IDLE + * aufs: Update to aufs3.1-20111031 (Closes: #644687) + + [ Bastian Blank ] + * Use xz compression for debug packages. + * Make gcc-4.6 the default compiler. + * Use shorter versions in the package names. + * Remove linux-tools-* binary package. + * Drop external module packages stuff. + * Set default security module to Unix Discretionary Access Controls. + - Remove unneeded selinux boot parameter. + + -- Bastian Blank Thu, 03 Nov 2011 20:03:14 +0100 + +linux-2.6 (3.1.0~rc7-1~experimental.1) experimental; urgency=low + + * New upstream release candidate + + [ Ben Hutchings ] + * Build udebs for the installer + + -- Ben Hutchings Sun, 25 Sep 2011 22:52:50 +0100 + +linux-2.6 (3.1.0~rc6-1~experimental.1) experimental; urgency=low + + * New upstream release candidate + + [ Ben Hutchings ] + * [ia64] Disable GENERIC_GPIO (fixes FTBFS) + * [i386] libertas: prioritize usb8388_olpc.bin firmware on OLPC machines + * [armel/ixp4xx] Add gpioblib support (fixes FTBFS) + * [i386] Fix alignment of alternative instruction entries (Closes: #640964) + + -- Ben Hutchings Wed, 21 Sep 2011 05:45:40 +0100 + +linux-2.6 (3.1.0~rc4-1~experimental.1) experimental; urgency=low + + * New upstream release candidate + + [ Ben Hutchings ] + * aufs: Disable until it is updated for Linux 3.1 + * rt: Disable until it is updated for Linux 3.1 + * nfs: Enable NFSv4.1/pNFS (Closes: #627655) + * [x86] ACPI: Enable ACPI_APEI_GHES as built-in (no longer modular). + Enable ACPI_APEI_MEMORY_FAILURE. + * netfilter: Enable IP_SET_HASH_NETIFACE as module + * net: Enable NFC, NFC_PN533 as modules + * video: Enable FB_UDL as module (Closes: #618261) + * target: Enable ISCSI_TARGET as module + * skge: Enable SKGE_GENESIS + * net/wireless: Enable RTL8192DE as module + * hwmon: Enable SENSORS_EMC2103, SENSORS_LM95245, SENSORS_MAX1668, + SENSORS_NTC_THERMISTOR, SENSORS_SMM665 as modules + * [i386] Enable GPIO_CS5535, MFD_CS5535, CS5535_MFGPT, + CS5535_CLOCK_EVENT_SRC, GPIO_VX855, MFD_VX855 as modules; + [i386/486] Enable OLPC_XO1_PM, OLPC_XO1_RTC, OLPC_XO1_SCI, OLPC_XO15_SCI + (Closes: #639113) + * media/dvb: Enable DVB_NET + * media/rc: Enable IR_MCE_KBD_DECODER as module + * gspca: Enable USB_GSPCA_SE401 as module + * de4x5: Disable on all architectures except alpha (Closes: #639538) + * wl128x: Disable on all flavours except armhf/omap + * Make bug script accept failure of lspci (Closes: #639439) + * [alpha] Disable GENERIC_GPIO (Closes: #638696) + + -- Ben Hutchings Mon, 29 Aug 2011 14:48:28 +0100 + +linux-2.6 (3.0.0-6) unstable; urgency=high + + [ Uwe Kleine-König ] + * [amd64] Update rt featureset to 3.0.7-rt20 + + [ Bastian Blank ] + * Add stable 3.0.7, including: + - drm/radeon: Update AVIVO cursor coordinate origin before x/yorigin + calculation (Closes: #585130) + - ipv6: fix NULL dereference in udp6_ufo_fragment() (Closes: #643817) + For the complete list of changes, see: + http://www.kernel.org/pub/linux/kernel/v3.0/ChangeLog-3.0.7 + + [ Ben Hutchings ] + * [powerpc] Change ATA, PATA_MACIO from module to built-in (Closes: #641210) + * [powerpc] Change IDE, IDE_GD from built-in to module + * Add stable 3.0.8, including: + - cputimer: Cure lock inversion + - drm/ttm: ensure ttm for new node is bound before calling move_notify() + - drm/ttm: unbind ttm before destroying node in accel move cleanup + - CIFS: Fix ERR_PTR dereference in cifs_get_root + - xfs: start periodic workers later + - mm: fix race between mremap and removing migration entry + - x25: Prevent skb overreads when checking call user data + - crypto: ghash - Avoid null pointer dereference if no key is set + (CVE-2011-4081) + - hfsplus: Fix kfree of wrong pointers in hfsplus_fill_super() error path + For the complete list of changes, see: + http://www.kernel.org/pub/linux/kernel/v3.0/ChangeLog-3.0.8 + * [{mips,mipsel}/{4,5}kc-malta] Disable X.25, as in all other configurations + * ark3116: Fix initialisation order (Closes: #640391) + * Add empty files to trigger generation of kernel-image udebs + * aufs: Update to aufs3.0-20111031 (Closes: #644687) + * xfs: Fix possible memory corruption in xfs_readlink (CVE-2011-4077) + * oom: fix integer overflow of points in oom_badness (CVE-2011-4097) + + -- Ben Hutchings Tue, 01 Nov 2011 14:50:06 +0000 + +linux-2.6 (3.0.0-5) unstable; urgency=low + + [ Ben Hutchings ] + * Bump ABI to 2 + * kobj_uevent: Ignore if some listeners cannot handle message + (Closes: #641661) + * Build udebs for the installer + * Add stable 3.0.5 and 3.0.6, including: + - TTY: pty, fix pty counting + - pata_via: disable ATAPI DMA on AVERATEC 3200 + - atm: br2684: Fix oops due to skb->dev being NULL + - alarmtimers: Avoid possible null pointer traversal + - alarmtimers: Memset itimerspec passed into alarm_timer_get + - alarmtimers: Avoid possible denial of service with high freq periodic + timers + - rtc: Fix RTC PIE frequency limit + - x86, perf: Check that current->mm is alive before getting user callchain + - xen/smp: Warn user why they keel over - nosmp or noapic and what to use + instead. (Closes: #637308) + - drm/nouveau: properly handle allocation failure in nouveau_sgdma_populate + - net/9p: fix client code to fail more gracefully on protocol error + - virtio: Fix the size of receive buffer packing onto VirtIO ring. + - virtio: VirtIO can transfer VIRTQUEUE_NUM of pages. + - fs/9p: Fid is not valid after a failed clunk. + - fs/9p: When doing inode lookup compare qid details and inode mode bits. + - fs/9p: Always ask new inode in create + - net/9p: Fix the msize calculation. + - 9p: close ACL leaks + - fs/9p: Add fid before dentry instantiation + - net/9p: Fix kernel crash with msize 512K + - fs/9p: Always ask new inode in lookup for cache mode disabled + - vfs: restore pinning the victim dentry in vfs_rmdir()/vfs_rename_dir() + - cifs: fix possible memory corruption in CIFSFindNext (CVE-2011-3191) + - writeback: introduce .tagged_writepages for the WB_SYNC_NONE sync stage + - writeback: update dirtied_when for synced inode to prevent livelock + - fib:fix BUG_ON in fib_nl_newrule when add new fib rule + - scm: Capture the full credentials of the scm sender + - vlan: reset headers on accel emulation path + - xfrm: Perform a replay check after return from async codepaths + - bridge: Pseudo-header required for the checksum of ICMPv6 + - bridge: fix a possible use after free + - TPM: Call tpm_transmit with correct size (CVE-2011-1161) + - TPM: Zero buffer after copying to userspace (CVE-2011-1162) + - ALSA: fm801: Gracefully handle failure of tuner auto-detect + (Closes: #641946) + - btrfs: fix d_off in the first dirent + - ARM: 7091/1: errata: D-cache line maintenance operation by MVA may not + succeed + - ARM: 7099/1: futex: preserve oldval in SMP __futex_atomic_op + - ALSA: usb-audio: Check for possible chip NULL pointer before clearing + probing flag + - cfg80211: Fix validation of AKM suites + - iwlagn: fix dangling scan request + - block: Free queue resources at blk_release_queue() (Closes: #631187) + For the complete list of changes, see: + http://www.kernel.org/pub/linux/kernel/v3.0/ChangeLog-3.0.5 + http://www.kernel.org/pub/linux/kernel/v3.0/ChangeLog-3.0.6 + * Make taskstats require root access (CVE-2011-2494) + + [ Uwe Kleine-König ] + * [amd64] Update rt featureset to 3.0.6-rt16 (Closes: #643301) + + -- Ben Hutchings Wed, 05 Oct 2011 15:14:34 +0100 + +linux-2.6 (3.0.0-4) unstable; urgency=low + + [ Ben Hutchings ] + * Make bug script accept failure of lspci (Closes: #639439) + * [alpha] Disable GENERIC_GPIO (Closes: #638696) + * Add stable 3.0.4, including: + - loop: fix deadlock when sysfs and LOOP_CLR_FD race against each other + - Btrfs: fix an oops of log replay + - ext4: Fix ext4_should_writeback_data() for no-journal mode + - ext4: call ext4_ioend_wait and ext4_flush_completed_IO in ext4_evict_inode + - ext4: Resolve the hang of direct i/o read in handling + EXT4_IO_END_UNWRITTEN. + - ext4: fix nomblk_io_submit option so it correctly converts uninit blocks + - xen-blkfront: Drop name and minor adjustments for emulated scsi devices + - xen/x86: replace order-based range checking of M2P table by linear one + - rt2x00: fix order of entry flags modification + - Add a personality to report 2.6.x version numbers + For the complete list of changes, see: + http://www.kernel.org/pub/linux/kernel/v3.0/ChangeLog-3.0.4 + * sendmmsg/sendmsg: fix unsafe user pointer access + * rt2x00: fix crash in rt2800usb_write_tx_desc + * rt2x00: fix crash in rt2800usb_get_txwi (Closes: #636531) + * [sparc] Only Panther cheetah+ chips have POPC (Closes: #639949) + * uvcvideo: Fix crash when linking entities (Closes: #637740) + * Update Spanish debconf template translations (Omar Campagne) + (Closes: #636242) + + [ Moritz Muehlenhoff ] + * Update German Debconf translation. Thanks to Holger Wansing + (Closes: #641487) + + [ Uwe Kleine-König ] + * [amd64] Update rt featureset to 3.0.4-rt14 + + -- Ben Hutchings Mon, 19 Sep 2011 14:40:42 +0100 + +linux-2.6 (3.0.0-3) unstable; urgency=low + + [ Ben Hutchings ] + * Disable SENSORS_SHT15, unlikely to be usable on any supported platform + (Closes: #638696) + * Add stable 3.0.3, including: + - atm: br2864: sent packets truncated in VC routed mode (Closes: #638656) + For the complete list of changes, see: + http://www.kernel.org/pub/linux/kernel/v3.0/ChangeLog-3.0.3 + * netfilter: TCP and raw fix for ip_route_me_harder (fixes case where + SNAT/masquerading is not done) + * Remove net device features from bug reports (Closes: #638956) + * [mips,mipsel] Ignore nfs ABI changes made in 3.0.0-2; fixes FTBFS + * genirq: Fix wrong bit operation + * befs: Validate length of long symbolic links (CVE-2011-2928) + * CIFS: Fix memory corruption on mount (Closes: #635344) + * x86-32, vdso: On system call restart after SYSENTER, use int $0x80 + * drm/ttm: fix ttm_bo_add_ttm(user) failure path + * fuse: check size of FUSE_NOTIFY_INVAL_ENTRY message + + -- Ben Hutchings Sat, 27 Aug 2011 08:04:02 +0100 + +linux-2.6 (3.0.0-2) unstable; urgency=high + + [ Aurelien Jarno ] + * Add configuration files for s390x architecture. + + [ Ben Hutchings ] + * linux-libc-dev: Install include/asm under arch-specific directory + (thanks to Aurelien for correcting the directory); mark package as + multi-arch-coinstallable (Multi-Arch: same) + * [powerpc] Use libata-based drivers for most PATA controllers + (Closes: #636854): + - Various drivers replaced as for x86 in 2.6.32-10 + - pata_macio replaces ide_pmac + * Add stable 3.0.2, including: + - net: Cap number of elements for sendmmsg + - net: Fix security_socket_sendmsg() bypass problem + - [x86] xen: allow enable use of VGA console on dom0 + - net: Compute protocol sequence numbers and fragment IDs using MD5 + - cifs: cope with negative dentries in cifs_get_root + - ALSA: snd-usb: avoid dividing by zero on invalid input + - ipv6: make fragment identifications less predictable (CVE-2011-2699) + - sch_sfq: fix sfq_enqueue() (Closes: #631945) + - gre: fix improper error handling + - ecryptfs: Add mount option to check uid of device being mounted + = expect uid + - ecryptfs: Return error when lower file pointer is NULL + - ext{3,4}: Properly count journal credits for long symlinks + For the complete list of changes, see: + http://www.kernel.org/pub/linux/kernel/v3.0/ChangeLog-3.0.2 + * [x86] Enable RTS_PSTOR as module + + [ maximilian attems ] + * Add stable 3.0.1, including: + - gro: Only reset frag0 when skb can be pulled (CVE-2011-2723) + - staging: comedi: fix infoleak to userspace (CVE-2011-2909) + - rtc: limit frequency + - CIFS: Fix oops while mounting with prefixpath + - [SCSI] fix crash in scsi_dispatch_cmd() + - tracing: Fix bug when reading system filters on module removal + - tracing: Have "enable" file use refcounts like the "filter" file + - ext4: fix i_blocks/quota accounting when extent insertion fails + - ext4: free allocated and pre-allocated blocks when check_eofblocks_fl + fails + - ext3: Fix oops in ext3_try_to_allocate_with_rsv() + - nfsd4: remember to put RW access on stateid destruction + - nfsd4: fix file leak on open_downgrade + - NFS: Fix spurious readdir cookie loop messages + - proc: fix a race in do_io_accounting() + - ipc/sem.c: fix race with concurrent semtimedop() timeouts and IPC_RMID + - [armel,armhf,hppa] dm io: flush cpu cache with vmapped io + - dm snapshot: flush disk cache when merging + For the complete list of changes, see: + http://www.kernel.org/pub/linux/kernel/v3.0/ChangeLog-3.0.1 + + [ Jonathan Nieder ] + * perf: do not look at ./config for configuration (Closes: #632923) + (CVE-2011-2905) + + [ Uwe Kleine-König ] + * [amd64] Update rt featureset to 3.0.1-rt11 + + -- Ben Hutchings Tue, 16 Aug 2011 06:08:53 +0100 + +linux-kbuild-2.6 (3.0.0-2) unstable; urgency=low + + * Include new script depmod.sh (Closes: #635539) + + -- Ben Hutchings Fri, 29 Jul 2011 01:00:20 +0200 + +linux-kbuild-2.6 (3.0.0-1) unstable; urgency=low + + * New upstream release + + -- Ben Hutchings Sun, 24 Jul 2011 15:38:35 +0200 + +linux-2.6 (3.0.0-1) unstable; urgency=low + + * New upstream release: http://kernelnewbies.org/Linux_3.0 + + [ maximilian attems ] + * Topconfig enable modular VIDEO_SR030PC30, VIDEO_NOON010PC30, + SOC_CAMERA_IMX074, SOC_CAMERA_OV2640, SOC_CAMERA_OV6650, + SOC_CAMERA_OV9740, USB_YUREX. + * [x86] enable modular VIDEO_VIA_CAMERA. + * [x86_32] enable modular XO15_EBOOK. + * ALSA: hda - Enable auto-parser as default for Conexant codecs. + + [ Ben Hutchings ] + * linux-support, linux-tools: Use dh_python2 instead of dh_pysupport + * aufs: Update for 3.0 + * [amd64] Enable PCMCIA_AHA152X as module (Closes: #632929) + * Update debconf template translations: + - Slovak (Slavko) + * [x86] comedi: Enable the same drivers as in stable (squeeze), except + for ISA drivers on amd64 (Closes: #633516) + * Reduce required initramfs-tools version to 0.99~, to ease backporting + * [armhf/mx5] Explicitly configure this flavour to support i.MX51; it + is not currently possible to support other i.MX5x processors as well + + [ Arnaud Patard ] + * Merge ixp4xx build fix and enable ixp4xx back + + [ Aurelien Jarno ] + * [mips/octeon] Disable MEGARAID_SAS, SUSPEND, HIBERNATION, PM_RUNTIME. + Enable FUSION, FUSION_SAS, HW_RANDOM, HW_RANDOM_OCTEON, + OCTEON_MGMT_ETHERNET, CONFIG_OCTEON_ETHERNET. + + [ Bastian Blank ] + * [xen] Allow autoloading of backend drivers. + + [ Uwe Kleine-König ] + * [amd64] Add rt featureset with 3.0-rt2 patch set + + -- Ben Hutchings Sun, 24 Jul 2011 02:42:27 +0200 + +linux-2.6 (3.0.0~rc6-1~experimental.1) experimental; urgency=low + + * New upstream release candidate + + [ maximilian attems ] + * Topconfig enable modular USB_NET_KALMIA, I2C_DIOLAN_U2C, SMBUS, + SENSORS_SMBUS, SENSORS_SHT21, SENSORS_EMC6W201, SENSORS_SCH5627, + SENSORS_ADS1015, SENSORS_W83795, SENSORS_DS620, SENSORS_LINEAGE, + SENSORS_LTC4151, SENSORS_LTC4261, SENSORS_MAX16065, SENSORS_MAX6639, + SENSORS_MAX6642, BT_WILINK. + * [x86_32] enable modular I2C_PXA. + * [x86] enable modular SENSORS_FAM15H_POWER. + * drm/i915: Hold struct_mutex during i915_save_state/i915_restore_state. + * [thinkpad]: Add KEY_MICMUTE and enable it on Lenovo X220. + * [m68k]: resources: Add lookup_resource(). + * m68k/atari: Reserve some ST-RAM early on for device buffer use. + * ALSA: hda - Handle -1 as invalid position, too + * ALSA: hda - Judge playback stream from stream id in azx_via_get_position() + + [ Ben Hutchings ] + * [x86] Enable SCSI_ISCI as module + + -- maximilian attems Tue, 05 Jul 2011 11:05:43 +0200 + +linux-kbuild-2.6 (3.0.0~rc5-1~experimental.1) experimental; urgency=low + + * New upstream release candidate + + -- Ben Hutchings Wed, 29 Jun 2011 02:32:31 +0100 + +linux-2.6 (3.0.0~rc5-1~experimental.1) experimental; urgency=low + + * New upstream release candidate + - fix wrong iput on d_inod. (closes: #631255, #631802) + + [ maximilian attems ] + * [x86] enable some comedi modules. (closes: #631199) + * [kirkwood] Enable sound support for the HP t5325 (closes: #631762) + + [ Arnaud Patard ] + * [armel] disable ixp4xx, until upstream agrees on how to fix + the build error + * [armel] Remove configuration options which don't exist anymore + * [armhf] disable net dma/async tx on mx5 as it can't work + + -- maximilian attems Tue, 28 Jun 2011 11:55:21 +0200 + +linux-2.6 (3.0.0~rc4-1~experimental.1) experimental; urgency=low + + * New upstream release candidate + - drm/i915: Fixes. (closes: #627976) + + [ maximilian attems ] + * [x86] enable modular INTEL_OAKTRAIL, ACPI_APEI_PCIEAER. + * Topconfig enable modular RADIO_WL1273, RADIO_WL128X. + + [ Ben Hutchings ] + * rt2800pci: Add device ID for RT539F device (Closes: #630960) + * atm: Enable for all architectures except m68k, s390 (Closes: #630900) + + -- maximilian attems Tue, 21 Jun 2011 15:00:23 +0200 + +linux-2.6 (3.0.0~rc3-1~experimental.1) experimental; urgency=low + + * New upstream release candidate + + [ Ben Hutchings ] + * [i386] idle: EXPORT_SYMBOL(default_idle, pm_idle) if + CONFIG_APM_MODULE (only); fixes FTBFS + + [ maximilian attems ] + * Update configs. + * Topconfig enable BPF_JIT. (closes: #630553) + * Update debconf pt (Américo Monteiro) translations. (closes: #627631) + * Add kbuild fixes out of linux-next. + + -- maximilian attems Thu, 16 Jun 2011 15:04:33 +0200 + +linux-2.6 (3.0.0~rc2-1~experimental.1) experimental; urgency=low + + * New upstream release candidate + + [ maximilian attems ] + * Newer Standards-Version 3.9.2 without changes. + + [ Hector Oron ] + * [armel/iop32x] Fix FTBFS (Closes: #629342) + + [ Aurelien Jarno ] + * [mips,mipsel] Update arch/mips/kernel/i8259.c to fix FTBFS. + * [mips,mipsel] Remove explicit disable of CONFIG_DRM_NOUVEAU and + CONFIG_DRM_RADEON_KMS. + + [ Ben Hutchings ] + * perf: Cancel -Werror compiler option; fixes FTBFS with perl 5.14 + * qla4xxx: Remove our fix for #598503; it has now been fixed upstream + in a different way and the two changes resulted in FTBFS + * [ia64] nouveau: Disable ACPI support. It probably wasn't very useful + on ia64, and now depends on mxm-wmi which is definitely x86-only. + * Make gcc-4.5 the default compiler (except for alpha, hppa and m68k) + * Restore xen-linux-system-- packages + + -- Ben Hutchings Thu, 09 Jun 2011 01:10:53 +0100 + +linux-kbuild-2.6 (3.0.0~rc1-1~experimental.1) experimental; urgency=low + + * New upstream release candidate + * Remove docproc, no longer required for module builds + + -- Ben Hutchings Wed, 01 Jun 2011 10:21:01 +0100 + +linux-2.6 (3.0.0~rc1-1~experimental.1) experimental; urgency=low + + * New upstream release candidate + + [ Ben Hutchings ] + * [x86] Enable BACKLIGHT_APPLE, replacing BACKLIGHT_MBP_NVIDIA + (Closes: #627492) + * cgroups: Disable memory resource controller by default. Allow it + to be enabled using kernel parameter 'cgroup_enable=memory'. + * rt2800usb: Enable support for more USB devices including + Linksys WUSB600N (Closes: #596626) (this change was accidentally + omitted from 2.6.39-1) + * fs: Enable FHANDLE + * cgroups: Enable CGROUP_MEM_RES_CTLR_SWAP but not + CGROUP_MEM_RES_CTLR_SWAP_ENABLED. Swap accounting can be enabled + using kernel parameter 'swapaccount'. + * ipv4: Enable IP_FIB_TRIE_STATS + * netfilter: Enable IP_SET, IP_SET_BITMAP_IP, IP_SET_BITMAP_IPMAC, + IP_SET_BITMAP_PORT, IP_SET_HASH_IP, IP_SET_HASH_IPPORT, + IP_SET_HASH_IPPORTIP, IP_SET_HASH_IPPORTNET, IP_SET_HASH_NET, + IP_SET_HASH_NETPORT, IP_SET_LIST_SET, NETFILTER_XT_SET as modules + * net/sched: Enable NET_SCH_QFQ as module + * can: Enable CAN_SOFTING, CAN_SOFTING_CS as modules + * mtd: Enable MTD_SWAP as module + * of, proc: Enable PROC_DEVICETREE + * dm: Enable DM_RAID, DM_FLAKEY as modules. Note these are currently + experimental. + * target: Enable TCM_FC as module + * net/wireless/ath: Enable CARL9170 as module (carl9170, replacing + ar9170usb) + * rtlwifi: Enable RTL8192SE as module (Closes: #590280) + * net/wireless: Enable MWIFIEX, MWIFIEX_SDIO as modules + * net/usb: Enable USB_VL600 as module + * tablet: Enable drivers for all possible architectures and flavours + * tablet: Enable TABLET_USB_HANWANG as module + * pps: Enable PPS_CLIENT_PARPORT as module + * ptp: Enable PTP_1588_CLOCK, PTP_1588_CLOCK_GIANFAR, + PTP_1588_CLOCK_IXP46X as modules + * [x86] watchdog: Enable SP5100_TCO, NV_TCO as modules + * media/rc: Enable IR_REDRAT3, RC_LOOPBACK as module + * [x86] media/rc: Enable IR_ITE_CIR, IR_FINTEK as modules + * gspca: Enable USB_GSPCA_KINECT as module + * [i386] radio: Enable RADIO_MIROPCM20 as module + * s3fb: Enable FB_S3_DDC + * viafb: Enable FB_VIA_X_COMPATIBILITY + * es1968: Enable SND_ES1968_RADIO + * sound: Enable SND_ISIGHT, SND_LOLA as modules + * hid: Enable HID_ACRUX, HID_EMS_FF, HID_KEYTOUCH, HID_LCPOWER, + HID_MULTITOUCH, HID_ROCCAT_ARVO, HID_ROCCAT_KONEPLUS, + HID_ROCCAT_KOVAPLUS as modules + * usb-storage: Enable USB_STORAGE_REALTEK, USB_STORAGE_ENE_UB6250 as + modules + * mmc: Enable MMC_VUB300, MMC_USHC as modules + * memstick: Enable MEMSTICK_R592 as module + * [x86] edac: Enable EDAC_I7300 as module + * [i386] staging, video: Enable FB_OLPC_DCON as module + * [x86] staging, drm: Enable DRM_PSB as module + * crypto, net: Enable CRYPTO_USER_API_HASH, CRYPTO_USER_API_SKCIPHER as + modules + * [x86] block, xen: Enable XEN_BLKDEV_BACKEND as module + + -- Ben Hutchings Wed, 01 Jun 2011 06:41:14 +0100 + +linux-2.6 (2.6.39-3) unstable; urgency=low + + [ Ben Hutchings ] + * [x86] i915: Revert "drm/i915: Enable GMBUS for post-gen2 chipsets" + (Closes: #627575) + * linux-source-: Suggest libqt4-dev (for 'make xconfig') + instead of libqt3-mt-dev (Closes: #631666) + * [armhf] Add omap flavour, thanks to Sebastian Reichel + * [armhf] rtc-twl: Switch to using threaded irq + * bridge/netfilter: provide a cow_metrics method for fake_ops + (Closes: #629932) + * Update debconf template translations: + - Danish (Joe Dalton) (Closes: #632551) + - Slovak (Slavko) (Closes: #608684) + * partitions/efi: Fix crash (oops) caused by corrupted GUID partition + table (CVE-2011-1577) + * ksm: fix NULL pointer dereference in scan_get_next_rmap_item() + (CVE-2011-2183) + * inet_diag: Fix infinite loop in inet_diag_bc_audit() (CVE-2011-2213) + * taskstats: don't allow duplicate entries in listener mode (CVE-2011-2484) + * bluetooth: Prevent buffer overflow in l2cap config request + (CVE-2011-2497) + + [ maximilian attems ] + * Add stable 2.6.39.2, including: + - block: Fix crash (oops) in blkdev_get() on failed exclusive open + (Closes: #631574) + - nl80211: fix check for valid SSID size in scan operations (CVE-2011-2517) + - drm/radeon/kms: viewport height has to be even + - drm/radeon/kms: fix for radeon on systems >4GB without hardware iommu + - fat: Fix corrupt inode flags when remove ATTR_SYS flag + - scsi: Fix oops caused by queue refcounting failure + - cifs: don't allow cifs_reconnect to exit with NULL socket pointer + - drm/radeon/kms: do bounds checking for 3D_LOAD_VBPNTR and bump array + limit + - TOMOYO: Fix oops in tomoyo_mount_acl() (CVE-2011-2518) + For the complete list of changes, see: + http://www.kernel.org/pub/linux/kernel/v2.6/ChangeLog-2.6.39.2 + + -- Ben Hutchings Mon, 04 Jul 2011 07:08:10 +0100 + +linux-2.6 (2.6.39-2) unstable; urgency=low + + [ Ben Hutchings ] + * [x86] Enable BACKLIGHT_APPLE, replacing BACKLIGHT_MBP_NVIDIA + (Closes: #627492) + * cgroups: Disable memory resource controller by default. Allow it + to be enabled using kernel parameter 'cgroup_enable=memory'. + * rt2800usb: Enable support for more USB devices including + Linksys WUSB600N (Closes: #596626) (this change was accidentally + omitted from 2.6.39-1) + * [x86] Remove Celeron from list of processors supporting PAE. Most + 'Celeron M' models do not. + * Update debconf template translations: + - Swedish (Martin Bagge) (Closes: #628932) + - French (David Prévot) (Closes: #628191) + * aufs: Update for 2.6.39 (Closes: #627837) + * Add stable 2.6.39.1, including: + - ext4: dont set PageUptodate in ext4_end_bio() + - pata_cmd64x: fix boot crash on parisc (Closes: #622997, #622745) + - ext3: Fix fs corruption when make_indexed_dir() fails + - netfilter: nf_ct_sip: validate Content-Length in TCP SIP messages + - sctp: fix race between sctp_bind_addr_free() and + sctp_bind_addr_conflict() + - sctp: fix memory leak of the ASCONF queue when free asoc + - md/bitmap: fix saving of events_cleared and other state + - cdc_acm: Fix oops when Droids MuIn LCD is connected + - cx88: Fix conversion from BKL to fine-grained locks (Closes: #619827) + - keys: Set cred->user_ns in key_replace_session_keyring (CVE-2011-2184) + - tmpfs: fix race between truncate and writepage + - nfs41: Correct offset for LAYOUTCOMMIT + - xen/mmu: fix a race window causing leave_mm BUG() + - ext4: fix possible use-after-free in ext4_remove_li_request() + For the complete list of changes, see: + http://www.kernel.org/pub/linux/kernel/v2.6/ChangeLog-2.6.39.1 + * Bump ABI to 2 + * netfilter: Enable IP_SET, IP_SET_BITMAP_IP, IP_SET_BITMAP_IPMAC, + IP_SET_BITMAP_PORT, IP_SET_HASH_IP, IP_SET_HASH_IPPORT, + IP_SET_HASH_IPPORTIP, IP_SET_HASH_IPPORTNET, IP_SET_HASH_NET, + IP_SET_HASH_NETPORT, IP_SET_LIST_SET, NETFILTER_XT_SET as modules + (Closes: #629401) + + [ Aurelien Jarno ] + * [mipsel/loongson-2f] Disable_SCSI_LPFC to workaround GCC ICE. + + -- Ben Hutchings Tue, 07 Jun 2011 12:14:05 +0100 + +linux-kbuild-2.6 (2.6.39-1) unstable; urgency=low + + * New upstream release + + -- Ben Hutchings Fri, 20 May 2011 04:53:57 +0100 + +linux-2.6 (2.6.39-1) unstable; urgency=low + + [ maximilian attems ] + * [x86] Enable CRYPTO_AES_NI_INTEL for all flavours. (closes: #623631) + * topconfig: Enable SND_USB_6FIRE, SND_FIREWIRE_SPEAKERS, + MEDIA_CONTROLLER, DVB_USB_TECHNISAT_USB2, USB_GSPCA_NW80X, + USB_GSPCA_VICAM, XEN_WDT, LOOPBACK_TARGET. + * [x86] Enable modular XEN_NETDEV_BACKEND. + * topconfig enable mem cgroup RESOURCE_COUNTERS, CGROUP_MEM_RES_CTLR. + (closes: #534964) + * Cleanup configs. + + [ Ben Hutchings ] + * [!x86] Disable TPM drivers. TPMs are currently only fitted in PCs. + * rt2800usb: Enable support for more USB devices including + Linksys WUSB600N (Closes: #596626) + * mm: Select SLAB allocator again. Although SLUB is currently the + upstream default, this was set as an experiment rather than a + recommendation! SLUB generally has poorer performance than SLAB on + larger systems. + * postinst: Remove specific support for running a ramdisk creator; + warn users that specify one in /etc/kernel-img.conf + * Require initramfs-tools >= 0.99, which installs a postinst hook + + [ Arnaud Patard ] + * [armel] Disable eeti touchscreen driver due to missing irq_to_gpio on + several platforms. + + -- maximilian attems Thu, 19 May 2011 15:34:37 +0200 + +linux-2.6 (2.6.39~rc7-1~experimental.1) experimental; urgency=low + + * [x86] Enable modular ASUS_WMI and ASUS_NB_WMI. (closes: #626141) + * [x86] Enable modular DELL_WMI_AIO, HP_ACCEL, INTEL_IPS, ACPI_IPMI. + * [x86/486] Enable modular XO1_RFKILL, XO15_EBOOK. + * topconfig: Enable modular NF_CONNTRACK_TIMESTAMP, NF_CONNTRACK_SNMP, + NETFILTER_XT_TARGET_AUDIT, NETFILTER_XT_MATCH_ADDRTYPE, + NETFILTER_XT_MATCH_DEVGROUP, NET_SCH_SFB, NET_SCH_MQPRIO, NET_SCH_CHOKE, + SATA_ACARD_AHCI, PATA_ARASAN_CF, SCSI_BNX2X_FCOE. + * Add nl debconf template translation. (closes: #622967) + Thanks willem kuyn . + * topconfig Enable modular RTL8192CU. (closes: #625613) + + -- maximilian attems Tue, 10 May 2011 15:11:00 +0200 + +linux-2.6 (2.6.39~rc6-1~experimental.1) experimental; urgency=low + + * New upstream release candidate + + [ maximilian attems ] + * Enable SQUASHFS_{LZO,XZ}. (closes: #613658) + * [x86] Enable EASYCAP. (closes: #624505) + + [ Ben Hutchings + * xhci-hcd: Include in xhci-pci.c (fixes FTBFS on armel) + * [x86] Enable BRCMSMAC; the brcmsmac module replaces brcm80211 + (Closes: #625510) + + [ Aurelien Jarno ] + * drm/nouveau, drm/radeon: remove fix for non-powerpc/sparc/x86. + * [mips,mipsel] Disabled CONFIG_DRM_NOUVEAU and CONFIG_DRM_RADEON_KMS. + * [mips/octeon] Disabled CONFIG_HOTPLUG_CPU and CONFIG_PM. + + -- maximilian attems Sun, 08 May 2011 12:23:15 +0200 + +linux-2.6 (2.6.39~rc5-1~experimental.1) experimental; urgency=low + + * New upstream release candidate + + [ Ben Hutchings ] + * [powerpc] kexec: Fix build failure on 32-bit SMP + * net/wireless: Adjust config for iwlegacy/iwlwifi split (Closes: #624124) + - Enable IWLWIFI_LEGACY as module + - Enable IWL4965 as module; it is no longer part of the iwlagn module + * [armhf] Actually install zImage into the linux-image package, thanks to + Sebastian Reichel + * [armhf] Build a linux-tools package + * Fix configuration for features that are no longer modular, thanks to + Sedat Dilek (Closes: #624372): + - bluetooth: Re-enable BT_L2CAP and BT_SCO as part of bluetooth module + - leds: Explicitly enable LEDS_CLASS as built-in + - mfd: Explicitly disable MFD_WM8994 + + [ Aurelien Jarno ] + * drm/nouveau, drm/radeon: fix build failure on mips. + + -- Ben Hutchings Fri, 29 Apr 2011 06:04:13 +0100 + +linux-2.6 (2.6.39~rc4-1~experimental.1) experimental; urgency=low + + * New upstream release candidate + + [ Ben Hutchings ] + * [i386] Rename '686-bigmem' flavour to '686-pae'; remove '686' flavour. + For 686-class systems without PAE, the '486' flavour is more efficient + than the '686' flavour due to optimisation for uniprocessor systems. + * Add armhf architecture with mx5 flavour, thanks to Hector Oron and + Vagrant Cascadian (Closes: #621032) + + -- Ben Hutchings Sun, 24 Apr 2011 03:21:31 +0100 + +linux-2.6 (2.6.38-5) unstable; urgency=medium + + [ Thorsten Glaser ] + * [m68k] atari: Enable and compile in generic RTC + * [m68k] Backport the most urgent fixes from 2.6.39 + - Add helper functions to handle kernel faults, traps and + exceptions better (used by the other patches below) + - Add improved support for running under the ARAnyM emulator + (its native features interface) and emulated hardware + + block access (similar to virtio-block) + + console access (redirection to stdout) + + network access (Ethernet) (Closes: #599121) + * [m68k] Add patch from queue fixing atarifb console output on + machines with a lot of FastRAM by reserving some ST-RAM early + * [m68k] Add patch from mm mailing list to fix SLUB breakage + + [ Aurelien Jarno ] + * [mips/octeon] Disable CONFIG_HOTPLUG_CPU. + + [ Ben Hutchings ] + * rt2800pci, rt2800usb: Enable experimental support for more recent + chips (Closes: #623808) + * [x86] staging: Enable EASYCAP as module (Closes: #624505) + * Add stable 2.6.38.5, including: + - p54: Initialize extra_len in p54_tx_80211 + - nfsd4: Fix filp leak (regression introduced in 2.6.38.3) + - radeon: PLL tweaks for R7xx + - nouveau: Fix notifier memory corruption bug + - radeon: Fix bad shift in atom iio table parser + - [x86] i915: Sanitize the output registers after resume + - [x86] ideapad: Read brightness setting on brightness key notify + - ath9k_hw: Partially revert "fix dma descriptor rx error bit parsing" + - [s390] pfault: fix token handling + - ACPI/PM: Avoid infinite recurrence while registering power resources + - [hppa] slub: Disable use with DISCONTIGMEM && !NUMA + - vfs: avoid large kmalloc()s for the fdtable + - agp: Fix arbitrary kernel memory writes (CVE-2011-1745) + - agp: Fix OOM and buffer overflow (CVE-2011-1746) + For the complete list of changes, see: + http://www.kernel.org/pub/linux/kernel/v2.6/ChangeLog-2.6.38.5 + * [hppa] Bump ABI to 2a + * mpt2sas: Prevent heap overflows and unchecked reads + (CVE-2011-1494, CVE-2011-1495) + * [armel] Prevent heap corruption in OABI semtimedop + * can: Add missing socket check in can/bcm release (CVE-2011-1598) + * ldm: Disable broken support for VBLK fragments (CVE-2011-1017) + + -- Ben Hutchings Sat, 07 May 2011 21:24:55 +0100 + +linux-2.6 (2.6.38-4) unstable; urgency=low + + * usb-audio: Define another USB ID for a buggy USB MIDI cable + (Closes: #617743) + * net: Enable BATMAN_ADV as module (Closes: #622361) + * Add stable 2.6.38.3, including: + - eCryptfs: Unlock page in write_begin error path + - irda: validate peer name and attribute lengths (CVE-2011-1180) + - irda: prevent heap corruption on invalid nickname + - nilfs2: fix data loss in mmap page write for hole blocks + - ALSA: pcm: fix infinite loop in snd_pcm_update_hw_ptr0() + - inotify: fix double free/corruption of stuct user + - perf: Fix task_struct reference leak + - ROSE: prevent heap corruption with bad facilities (CVE-2011-1493) + - [x86] mtrr, pat: Fix one cpu getting out of sync during resume + - Input: synaptics - fix crash in synaptics_module_init() + - ath9k: fix a chip wakeup related crash in ath9k_start + - mac80211: fix a crash in minstrel_ht in HT mode with no supported MCS + rates + - UBIFS: fix oops on error path in read_pnode + - quota: Don't write quota info in dquot_commit() + - mm: avoid wrapping vm_pgoff in mremap() + - wl12xx: fix potential buffer overflow in testmode nvs push + - Bluetooth: sco: fix information leak to userspace (CVE-2011-1078) + - bridge: netfilter: fix information leak (CVE-2011-1080) + - Bluetooth: bnep: fix buffer overflow (CVE-2011-1079) + - netfilter: ip_tables: fix infoleak to userspace (CVE-2011-1171) + - netfilter: arp_tables: fix infoleak to userspace (CVE-2011-1170) + - [x86] Revert "x86: Cleanup highmap after brk is concluded" + (Closes: #621072) + - Squashfs: handle corruption of directory structure + - ext4: fix a double free in ext4_register_li_request + - ext4: fix credits computing for indirect mapped files + - nfsd: fix auth_domain reference leak on nlm operations + - nfsd4: fix oops on lock failure + - char/tpm: Fix unitialized usage of data buffer (CVE-2011-1160) + - ipv6: netfilter: ip6_tables: fix infoleak to userspace (CVE-2011-1172) + - econet: 4 byte infoleak to the network (CVE-2011-1173) + - sound/oss: remove offset from load_patch callbacks + (CVE-2011-1476, CVE-2011-1477) + - inotify: fix double free/corruption of stuct user (CVE-2011-1479) + For the complete list of changes, see: + http://www.kernel.org/pub/linux/kernel/v2.6/ChangeLog-2.6.38.3 + * Add stable 2.6.38.4, including: + - vm: Fix vm_pgoff wrap in stack expansion + - cifs: Always do is_path_accessible check in cifs_mount + - cifs: Check for private_data before trying to put it + - sn9c102: Restrict world-wirtable sysfs files + - UBIFS: Restrict world-writable debugfs files + - vm: Fix mlock() on stack guard page + - UBIFS: Fix assertion warnings + - perf: Fix task context scheduling + - fib: Add rtnl locking in ip_fib_net_exit + - l2tp: Fix possible oops on l2tp_eth module unload + - ipv6: Fix duplicate /proc/sys/net/ipv6/neigh directory entries. + - net_sched: fix ip_tos2prio + - pppoe: drop PPPOX_ZOMBIEs in pppoe_flush_dev + - xfrm: Refcount destination entry on xfrm_lookup + - vlan: Take into account needed_headroom + - bridge: Reset IPCB when entering IP stack on NF_FORWARD + - futex: Set FLAGS_HAS_TIMEOUT during futex_wait restart setup + - oom-kill: Remove boost_dying_task_prio() + - UBIFS: Fix oops when R/O file-system is fsync'ed + - sched: Fix erroneous all_pinned logic + - vmscan: all_unreclaimable() use zone->all_unreclaimable as a name + - next_pidmap: fix overflow condition + - proc: Do proper range check on readdir offset + - [powerpc] Fix oops if scan_dispatch_log is called too early + - ehci: Unlink unused QHs when the controller is stopped + - USB: Fix formatting of SuperSpeed endpoints in /proc/bus/usb/devices + - xhci: Fix math in xhci_get_endpoint_interval() + - xhci: Also free streams when resetting devices + - USB: Fix unplug of device with active streams + - bluetooth: Fix HCI_RESET command synchronization + - bridge: Reset IPCB in br_parse_ip_options + - ip: ip_options_compile() resilient to NULL skb route + For the complete list of changes, see: + http://www.kernel.org/pub/linux/kernel/v2.6/ChangeLog-2.6.38.4 + * [s390] pfault: fix token handling (Closes: #622570) + + -- Ben Hutchings Sat, 23 Apr 2011 03:17:53 +0100 + +linux-2.6 (2.6.38-3) unstable; urgency=low + + [ Ben Hutchings ] + * [ppc64] Add to linux-tools package architectures (Closes: #620124) + * [amd64] Save cr4 to mmu_cr4_features at boot time (Closes: #620284) + * appletalk: Fix bugs introduced when removing use of BKL + * ALSA: Fix yet another race in disconnection + * cciss: Fix lost command issue + * ath9k: Fix kernel panic in AR2427 + * ses: Avoid kernel panic when lun 0 is not mapped + * PCI/ACPI: Report ASPM support to BIOS if not disabled from command line + + [ Aurelien Jarno ] + * rtlwifi: fix build when PCI is not enabled. + + [ Martin Michlmayr ] + * rtlwifi: Eliminate udelay calls with too large values (Closes: #620204) + + -- Ben Hutchings Wed, 06 Apr 2011 13:53:30 +0100 + +linux-2.6 (2.6.38-2) unstable; urgency=low + + [ Ben Hutchings ] + * kconfig: Avoid buffer underrun in choice input (fixes FTBFS on mips) + * rt2800usb: Disable powersaving by default (Closes: #618930) + * b43: Enable B43_PHY_N (Closes: #619070) + * net/wireless: Enable RTL8192CE as module (Closes: #619051) + * Add configuration for Debian architecture ppc64, matching the + powerpc/powerpc64 flavour (Closes: #618976) + * Enable BOOT_PRINTK_DELAY (support for the boot_delay kernel parameter) + * [x86/!486] Enable TRANSPARENT_HUGEPAGE, TRANSPARENT_HUGEPAGE_MADVISE + (Closes: #618924) + * [x86/486] Enable X86_32_IRIS (IRIS power-off support) (Closes: #619493) + * Add stable 2.6.38.1, including: + - RDMA/cma: Fix crash in request handlers (CVE-2011-0695) + For the complete list of changes, see: + http://www.kernel.org/pub/linux/kernel/v2.6/ChangeLog-2.6.38.1 + * radeon: Add some sanity checks to obj info record parsing, thanks + to John Lindgren (Closes: #618847) + * [x86] KVM: remove isr_ack logic from PIC (Closes: #612105) + * Add stable 2.6.38.2, including: + - cgroups: If you list_empty() a head then don't list_del() it + - oom: Fix various bugs in victim task selection + - xen-kbdfront: Advertise either absolute or relative coordinates + - signal: Prevent rt_sigqueueinfo and rt_tgsigqueueinfo from spoofing + the signal code (CVE-2011-1182) + - ext3: Skip orphan cleanup on rocompat fs + - sysctl: Restrict write access to dmesg_restrict + - proc: Protect mm start_code/end_code in /proc/pid/stat + - nfsd: Fix internal NFSv4.1 operation flags to be non-overlapping + - nfsd: Fix wrong limit used in NFSv4 session creation + - USB: Do not pass negative length to snoop_urb() + - cdc-acm: Fix various bugs that can lead to a crash or memory corruption + - fs: Fix deadlock in pivot_root() + - fs: Assign sb->s_bdi to default_backing_dev_info if the bdi is going away + - x86: Cleanup highmap after brk is concluded + - NFS: Fix a hang/infinite loop in nfs_wb_page() + - ext4: Skip orphan cleanup if fs has unknown ROCOMPAT features + For the complete list of changes, see: + http://www.kernel.org/pub/linux/kernel/v2.6/ChangeLog-2.6.38.2 + * [amd64] media/rc: Enable IR_NUVOTON as module (Closes: #619937) + * [x86] media/rc: Enable IR_WINBOND_CIR as module + * [x86] Enable DEBUG_SET_MODULE_RONX (Closes: #619838) + * SCSI: Enable TARGET_CORE and related modules (Closes: #619298) + * [hppa] Remove .size directive for flush_alias_page (should fix FTBFS) + + [ Jurij Smakov ] + * Bump CONFIG_NR_CPUS on sparc to 256 to accomodate T2+ machines + (Closes: #619435) + * Bump ABI to 2 + + -- Ben Hutchings Tue, 29 Mar 2011 05:31:03 +0100 + +linux-kbuild-2.6 (2.6.38-1) unstable; urgency=low + + * New upstream release + + -- Ben Hutchings Wed, 16 Mar 2011 13:45:58 +0000 + +linux-2.6 (2.6.38-1) unstable; urgency=low + + * New upstream release: http://kernelnewbies.org/Linux_2_6_38 + + [ Ben Hutchings ] + * Move firmware-linux-free to separate source package (firmware-free) + * Move linux-base to separate source package + * net/can: Enable CAN_SLCAN as module (Closes: #617629) + * sound: Enable SND_ALOOP as module (Closes: #617869) + * Remove the Big Kernel Lock: + - adfs,appletalk,i810,ufs,usbip: Refactor locking + - hpfs: Disable HPFS_FS + * ext4: Disable FS_IOC_FIEMAP ioctl temporarily (together with fixes + for btrfs in 2.6.38, closes: #615035) + * sched: Build with SCHED_AUTOGROUP, but do not enable autogrouping by + default (use sysctl kernel.sched_autogroup_enabled=1) (Closes: #618486) + * Set ABI to 1 + + [ Aurelien Jarno] + * mips/malta-[45]kc: + - disable ATM, TR, WAN. + - synchronize options in malta-4kc and malta-5kc. + + -- Ben Hutchings Wed, 16 Mar 2011 04:47:57 +0000 + +linux-2.6 (2.6.38~rc8-1~experimental.1) experimental; urgency=low + + * New upstream release candidate + + [ Ben Hutchings ] + * [sparc] Fix .size directive for do_int_load + * [arm] Fix .size directive for xscale_dma_a0_map_area + + -- Ben Hutchings Sat, 12 Mar 2011 03:31:52 +0000 + +linux-2.6 (2.6.38~rc7-1~experimental.1) experimental; urgency=low + + [ maximilian attems ] + * New upstream release candidate + - swiotlb: Fix wrong panic (Closes: #615990) + * x86: Set DRM_I915_KMS on request by xorg team. + + [ Ben Hutchings ] + * [x86] Correct typos in label names in two asm functions (Closes: #616426) + * [x86] Enable VT6656, loading firmware from a separate file (requires + firmware-linux-nonfree 0.29) (Closes: #568454) + * perf: Build with libdwarf for improved analysis capabilities + * perf: Build with newt for improved user interface (Closes: #615868) + * aufs: Update for 2.6.38 + * aufs: Fix device numbers passed to security_path_mknod() + * dib0700/dib7000m: Add pid filtering (Closes: #614837) + * [powerpc] Revert fb module changes (Closes: #614221) + + -- Ben Hutchings Tue, 08 Mar 2011 02:34:04 +0000 + +linux-2.6 (2.6.38~rc6-1~experimental.1) experimental; urgency=low + + [ Ben Hutchings ] + * New upstream release candidate + - drm/radeon/kms: hopefully fix pll issues for real (v3) (Closes: #614566) + - r8169: Keep firmware in memory (Closes: #609538) + - [sparc] Fix misaligned tracing information which the module loader + does not support (Closes: #609371) + - [sh4] Export cpu_core_map to fix build failure with CONFIG_SFC=m. + - [armel] Support for Buffalo LS-CHL (Closes: #590105). + - btrfs: Prevent heap corruption in btrfs_ioctl_space_info() + (CVE-2011-0699) + - [s390] Remove task_show_regs (CVE-2011-0710) + * DFSG: Remove drivers/staging/ft1000/ft1000-pcmcia/boot.h, non-free + firmware for a driver we don't build (Closes: #609448) + * module,bug: Add TAINT_OOT_MODULE flag for modules that weren't built + in-tree + + [ maximilian attems ] + * [x86] linux-images suggest extlinux, s/grub/grub-pc/. (closes: #613909) + + [ Aurelien Jarno] + * mips/swarm: enable PATA drivers that have been lost during IDE -> PATA + conversion. + * mips/malta-[45]kc: set VIRTUALIZATION. + + -- maximilian attems Tue, 22 Feb 2011 14:36:33 +0100 + +linux-2.6 (2.6.37-2) unstable; urgency=low + + [ Ben Hutchings ] + * Add stable 2.6.37.1: + - libata: Set queue DMA alignment to sector size for ATAPI too + - USB: serial: add missing .usb_driver field in serial drivers + - USB: EHCI: fix scheduling while atomic during suspend + - zram: Fix data corruption issue + - brcm80211: Fix suspend/resume issue + - ath9k: Fix system hang when resuming from S3/S4 + - SCSI: Fix medium error problems with some arrays which can cause + data corruption + - libsas: Fix runaway error handler problem + - NFS: Don't use vm_map_ram() in readdir + - NFS: Fix NFSv3 exclusive open semantics + - /proc/kcore: Fix seeking + - mm: Fix migration hangs on anon_vma lock + - writeback: Stop background/kupdate works from livelocking other works + - writeback: Avoid livelocking WB_SYNC_ALL writeback + - ext4: Fix trimming of a single group + - af_unix: Avoid socket->sk NULL OOPS in stream connect security hooks + - virtio_net: Add schedule check to napi_enable call + - ptrace: Use safer wake up on ptrace_detach() + - net: Fix ip link add netns oops + - SMP: Fix smp_call_function_many() SMP race + - md: Ensure no IO request to get md device before it is properly + initialised + - PM/runtime: Don't enable interrupts while running in_interrupt + - [x86] mm: Avoid possible bogus TLB entries by clearing prev + mm_cpumask after switching mm + * Kbuild: Include localversion file in linux-headers-*; fixes output + of 'make kernelrelease' + * Add stable 2.6.37.2: + - nfsd: Memory corruption due to writing beyond the stat array + - xen: p2m: Correctly initialize partial p2m leaf + - av7110: Check for negative array offset (CVE-2011-0521) + - cred: Fix kernel panic upon security_file_alloc() failure + - btrfs: Prevent heap corruption in btrfs_ioctl_space_info() + (CVE-2011-0699) + - cred: Fix BUG() upon security_cred_alloc_blank() failure + - cred: Fix memory and refcount leaks upon security_prepare_creds() + failure + - PCI: Use security_capable() when checking capablities during config + space read + - [s390] Remove task_show_regs (CVE-2011-0710) + - PM/hibernate: Return error code when alloc_image_page() fails + - fs/partitions: Validate map_count in Mac partition tables + - workqueue: Wake up a worker when a rescuer is leaving a gcwq + - ALSA: caiaq - Fix possible string-buffer overflow + * Set ABI to 2 + + [ Martin Michlmayr ] + * [armel/orion5x] Re-enable all devices. + * [armel/kirkwood] Re-enable Seagate FreeAgent DockStar support. + + -- Ben Hutchings Sat, 26 Feb 2011 03:16:16 +0000 + +linux-kbuild-2.6 (2.6.37-1) unstable; urgency=low + + * Upload to unstable + + -- Ben Hutchings Tue, 15 Feb 2011 14:15:36 +0000 + +linux-2.6 (2.6.37-1) unstable; urgency=low + + [ Ben Hutchings ] + * [arm] ixp4xx: Revert build fix, now applied upstream which resulted + in another build failure + * r8169: Keep firmware in memory (Closes: #609538) + * r8712u: Firmware filename is rtlwifi/rtl8712u.bin (Closes: #602450) + * [sparc] Fix misaligned tracing information which the module loader + does not support (Closes: #609371) + * Set ABI to 1 + * Add aufs2.1, marked as staging (Closes: #573189, #613248) + * fs/notify: Enable FANOTIFY (Closes: #599877) + * acer-wmi, aic94xx, asus_acpi, iscsi, janz-ican3, rtc-ds1511, tc1100-wmi: + Restrict write permissions on files in procfs/sysfs + * nbd: Remove module-level ioctl mutex mistakenly introduced in 2.6.37 + * [x86] crypto: Re-enable AES_NI_INTEL as module (Closes: #597658) + * [powerpc] video/fb: Enable FB_VGA16 as built-in; build FB_CT65550, + FB_NVIDIA, FB_MATROX, FB_RADEON, FB_ATY128, FB_ATY, FB_SIS, FB_3DFX + as modules (Closes: #609615) + + [ Aurelien Jarno ] + * [sh4] Export cpu_core_map to fix build failure with CONFIG_SFC=m. + * [mips/5kc-malta] Enable CONFIG_VGA_CONSOLE. + + [ Bastian Blank ] + * Enable CIFS fscache and ACL support. + * Enable Xen PCI frontend. + + -- Ben Hutchings Tue, 15 Feb 2011 04:14:09 +0000 + +linux-kbuild-2.6 (2.6.37-1~experimental.1) experimental; urgency=low + + * New upstream version + * Include new script gcc-goto.sh + + -- Ben Hutchings Sun, 16 Jan 2011 15:14:34 +0000 + +linux-2.6 (2.6.37-1~experimental.1) experimental; urgency=low + + * New upstream release: http://kernelnewbies.org/Linux_2_6_37 + - starfire: Fix dma_addr_t size test for MIPS (fixes FTBFS) + - watchdog: Improve failure message and documentation (Closes: #608138) + + [ Ben Hutchings ] + * i2c-i801: Include (fixes FTBFS on alpha) + * [x86] Staging: Enable R8712U as module (r8712u, replacing r8192s_usb) + - Enable loading external firmware, thanks to Stefan Lippers-Hollmann + * linux-base: Look for GRUB 1 configuration in both /boot/grub and + /boot/boot/grub (Closes: #607863) + * btrfs: Require CAP_SYS_ADMIN for filesystem rebalance (Closes: #608185) + * r8169: Change RTL8111D/RTL8168D initialisation and firmware loading to + match upstream version (Closes: #596390 with firmware-realtek 0.28) + + -- Ben Hutchings Wed, 05 Jan 2011 02:44:28 +0000 + +linux-2.6 (2.6.37~rc7-1~experimental.1) experimental; urgency=low + + * New upstream release candidate + - [mips] Rename mips_dma_cache_sync back to dma_cache_sync (fixes FTBFS) + + [ Ben Hutchings ] + * debian/copyright: Add explanation of indirect linking of perf to + OpenSSL (Closes: #606520) + * [powerpc,x86] Enable PATA_PCMCIA (Closes: #606324) + * Disable BLK_DEV_IDECS + * [alpha] Use libata-based drivers for most PATA controllers + * [powerpc] linux-base: Run ybin after updating yaboot.conf + (Closes: #607284) + * Update debconf template translations: + - Add Catalan (Jordi Mallach) + - Update Danish (Joe Hansen) + - Update Spanish (Omar Campagne, Javier Fernández-Sanguino) + - Add Italian (Luca Bruno) + - Update Japanese (Nobuhiro Iwamatsu) + - Add Brazilian Portugese (Flamarion Jorge) + - Update Vietnamese (Clytie Siddall) + * debian/bin/test-patches: Restrict patches to featureset when building + with a featureset (thanks to Tim Small) + * Recommend use of 'make deb-pkg' to build custom kernel packages + * [ia64] drm/nouveau: Revert unnecessary exclusion of ACPI support code + + -- Ben Hutchings Sat, 25 Dec 2010 16:21:09 +0000 + +linux-2.6 (2.6.37~rc5-1~experimental.3) experimental; urgency=low + + * Really apply patches added in the previous version + + -- Ben Hutchings Sat, 11 Dec 2010 16:27:21 +0000 + +linux-2.6 (2.6.37~rc5-1~experimental.2) experimental; urgency=low + + * Second attempt to fix FTBFS on various architectures: + - [alpha] Do not use -Werror for arch/alpha + - [arm/ixp4xx] Rename FREQ macro to avoid collisions (v2) + - drm/nouveau: Only select ACPI_VIDEO if its dependencies are met + - [mips] Change mips_sc_is_activated() to do what the comment says + + -- Ben Hutchings Sat, 11 Dec 2010 06:27:51 +0000 + +linux-2.6 (2.6.37~rc5-1~experimental.1) experimental; urgency=low + + * New upstream release candidate + + [ Ben Hutchings ] + * Attempt to fix FTBFS on various architectures: + - [alpha] Do not use -Werror for arch/alpha/kernel + - [arm/ixp4xx] Rename FREQ macro to avoid collisions + - [mips] Add the necessary parameter to mips_sc_is_activated() + + -- Ben Hutchings Fri, 10 Dec 2010 02:59:12 +0000 + +linux-2.6 (2.6.37~rc4-1~experimental.1) experimental; urgency=low + + * New upstream release candidate + + [ maximilian attems ] + * Newer Standards-Version 3.9.1 without changes. + + [ Martin Michlmayr ] + * Add ixp4xx build fix from Arnaud Patard (Closes: #602669) + * [armel/kirkwood] Enable sound. + * ASoC: Add support for OpenRD Ultimate (Arnaud Patard). + + [ Ben Hutchings ] + * Enable PM_ADVANCED_DEBUG (Closes: #603254) + * Disable X.25 protocol and related drivers. This 10 year old experiment + has stalled and is a source of security bugs. + * Disable Econet protocol. It is unmaintained upstream, probably broken, + and of historical interest only. + * af_802154,decnet,rds: Disable auto-loading as mitigation against local + exploits. These protocol modules are not widely used and can be + explicitly loaded or aliased on systems where they are wanted. + * debian/rules: Change 'clean' rule to remove package build directories + even after a version bump, thanks to Timo Juhani Lindfors + * dm: Deal with merge_bvec_fn in component devices better (Closes: #604457) + * 9p: Enable 9P_FS_POSIX_ACL + * netfilter/ipvs: Enable IP_VS_PE_SIP as module + * net/sched: Enable NET_ACT_CSUM as module + * can: Enable CAN_SJA1000_ISA, CAN_TSCAN1 as modules + * block: Enable BLK_DEV_RBD (Rados) as module + * sensors: Enable AD525X_DPOT_SPI, APDS9802ALS, ISL29020, SENSORS_BH1780, + SENSORS_BH1770, SENSORS_APDS990X, HMC6352, BMP085 as modules + * scsi: Enable SCSI_CXGB4_ISCSI as module + * net/ppp: Enable PPTP as module + * net: Enable BNA, SMCTR, USB_NET_CX82310_ETH as modules + * IR: Enable IR_RC5_SZ_DECODER as module + * [i386] IR: Enable IR_NUVOTON as module + * V4L: Enable GSPCA_KONICA, GSPCA_XIRLINK_CIT as modules + * DVB: Enable USB_LME2510 as module + * [i386] sound/isa: Enable SND_AZT1605, SND_AZT2316, SND_JAZZ16, + SND_MSND_PINNACLE, SND_MSND_CLASSIC as modules + * HID: Enable HID_UCLOGIC, HID_WALTOP, HID_ROCCAT_PYRA as modules + * hid-logitech: Enable LOGIWII_FF + * Enable USB_UAS (USB-attached SCSI) as module + * serial: Enable USB_SERIAL_SAMBA as module + * drm/nouveau: Enable DRM_I2C_SIL164 as module + * perf: Use libiberty, not libbfd, for symbol demangling + (Closes: #604750, #606050) + * firmware: Correct copyright information and add source for CIS files + (accidentally omitted when merging from sid branch) + + -- Ben Hutchings Sun, 05 Dec 2010 23:19:38 +0000 + +linux-kbuild-2.6 (2.6.36-1~experimental.1) experimental; urgency=low + + * New upstream version + + -- Ben Hutchings Mon, 15 Nov 2010 00:20:33 +0000 + +linux-2.6 (2.6.36-1~experimental.1) experimental; urgency=low + + * New upstream release: http://kernelnewbies.org/Linux_2_6_36 + - writeback: always use sb->s_bdi for writeback purposes (Closes: #599466) + - i7core_edac: fix panic in udimm sysfs attributes registration + (Closes: #600528) + + [ Ben Hutchings ] + * qla4xxx: Fix build on some architectures lacking 64-bit I/O + (Closes: #598503) + * [x86] Enable modular TM6000, TM6000_ALSA, TM6000_DVB + * [x86] Staging: fix Makefile so brcm80211 will actually build + (Closes: #599465) + * [x86] Enable modular IDEAPAD_ACPI (Closes: #599444) + * perf: Enable Perl and Python scripting + - Move scripts to /usr/share/perf_-core (Closes: #599624) + * crypto: Explicitly enable algorithm self-tests (Closes: #599441) + * [x86] Skip looking for ioapic overrides when ioapics are not present + (Closes: #598533) + * [x86] ata_piix: Add device ID for ICH4-L + * [armel/iop32x,ia64,x86] Disable BLK_DEV_PIIX as obsolete + * [amd64] Disable DRM_I810; i81x chipsets do not support 64-bit processors + * [x86] Disable DRM_I830; the i915 driver is now used instead + + [ Martin Michlmayr ] + * Kirkwood: restrict the scope of the PCIe reset workaround + + -- maximilian attems Wed, 27 Oct 2010 13:23:11 +0200 + +linux-2.6 (2.6.36~rc6-1~experimental.1) experimental; urgency=low + + * New upstream release candidate + - drm/i915: Ensure that the crtcinfo is populated during mode_fixup() + (Closes: #592415) + - USB: fix bug in initialization of interface minor numbers + (Closes: #598207) + + [ Ben Hutchings ] + * linux-base: Remove dependency on libapt-pkg-perl (Closes: #589996, really) + * Disable INTEL_IDLE. It can no longer be built as a module and so was + actually disabled by the previous version, but I do not consider it ready + to build-in yet. + * Enable modular NETFILTER_XT_TARGET_CHECKSUM, NETFILTER_XT_TARGET_IDLETIMER, + NETFILTER_XT_MATCH_CPU, NETFILTER_XT_MATCH_IPVS + * Reenable LOCKUP_DETECTOR, accidentally disabled by the previous version + * Enable modular AD525X_DPOT_I2C, ATM_NICSTAR, CAN_ESD_USB2, CHELSIO_T4VF, + FIREWIRE_NOSY, HID_ACRUX_FF, HID_ELECOM, INFINIBAND_CXGB4, INFINIBAND_QIB, + MTD_PCMCIA, ORINOCO_USB, PPS_CLIENT_LDISC, RAMOOPS, SERIAL_MFD_HSU, + UIO_NETX, USB_GSPCA_SPCA1528, USB_GSPCA_SQ930X, USB_SERIAL_SSU100, + USB_SERIAL_ZIO, WL1271_SDIO, WL1271_SPI + * Enable BT_HCIUART_ATH3K, USB_SERIAL_MOS7715_PARPORT + * [x86] Enable modular SENSORS_PKGTEMP + * Enable modular IR_CORE, RC_MAP, all IR decoders, IR_IMON, IR_MCEUSB, + IR_ENE, IR_STREAMZAP + * [x86] Enable modular LIRC drivers + + -- Ben Hutchings Sun, 03 Oct 2010 21:18:41 +0100 + +linux-2.6 (2.6.36~rc5-1~experimental.1) experimental; urgency=low + + * New upstream release candidate + - 3c59x: Fix deadlock in vortex_error() (Closes: #595554) + + [ Ben Hutchings ] + * speakup: Update to match Debian package version 3.1.5.dfsg.1-1 + * [x86] Add brcm80211 driver for Broadcom 802.11n wireless network + controllers + * [x86] Set XEN_PLATFORM_PCI=y + + -- Ben Hutchings Tue, 21 Sep 2010 02:15:33 +0100 + +linux-2.6 (2.6.35-1~experimental.3) experimental; urgency=low + + [ Ritesh Raj Sarraf ] + * Add .gnu_debuglink information into kernel modules (Closes: #555549) + + [ Ben Hutchings ] + * linux-base: Remove dependency on libapt-pkg-perl (Closes: #589996) + * Update debconf template translations: + - Czech (Michal Simunek) (Closes: #590546) + - Portugese (Américo Monteiro) (Closes: #590557) + - French (David Prévot) (Closes: #591149) + - Russian (Yuri Kozlov) (Closes: #591241) + - Swedish (Martin Bagge) (Closes: #592045) + - German (Holger Wansing) (Closes: #592226) + * [x86] Enable samsung-laptop driver + * [sparc] Enable XVR1000 driver (Closes: #574243) + * Change BLK_CGROUP from module to built-in so that cfq can be the + default I/O scheduler again (Closes: #593720) + * [mipsel/loongson-2f] Enable smtcfb (FB_SM7XX) driver (Closes: #594642) + + [ Ian Campbell ] + * Fixes/overrides for Linitan warnings: + - Add "(meta package)" to short description of linux-headers + metapackages, resolves empty-binary-package. + - Add dependency on ${misc:Depends} to all packages, resolves + debhelper-but-no-misc-depends. Required update to gencontrol.py to + augment rather than override headers_arch_depends read from templates. + - Override dbg-package-missing-depends for linux-image-*-dbg. It is not + necessary to install the kernel image package to use the dbg package + since the dbg package already contains a complete image with symbols. + + [ Bastian Blank ] + * Disable Ralink staging drivers, the in-tree ones reached "works-for-me" + status. + + [ Aurelien Jarno ] + * Fix netfilter CONFIG_COMPAT support. + * [sh4] set VIRTUALIZATION. + * [mips] Add an octeon flavour. + + [ maximilian attems] + * Add stable 2.6.35.3 and 2.6.35.4. + + -- maximilian attems Mon, 06 Sep 2010 15:16:17 +0200 + +linux-2.6 (2.6.35-1~experimental.2) experimental; urgency=low + + * images: Nuke modules.devname on removal. (closes: #590607) + * Add stable 2.6.35.1 and 2.6.35.2. + * mm: fix page table unmap for stack guard page properly. + * mm: fix up some user-visible effects of the stack guard page. + * config.loongson-2f: Enable USB and RTC for loongson-2f. + Thanks Geert Stappers (closes: #583689) + + -- maximilian attems Mon, 16 Aug 2010 23:49:32 +0200 + +linux-kbuild-2.6 (2.6.35-1~experimental.1) experimental; urgency=low + + * New upstream version + * Update policy version to 3.9.1; no changes required + * Fix minor issues reported by lintian: + - Add ${misc:Depends} to dependencies + - Add debian/source/format file + - Remove redundant priority and section fields + + -- Ben Hutchings Sun, 08 Aug 2010 22:31:47 +0100 + +linux-2.6 (2.6.35-1~experimental.1) experimental; urgency=low + + * New upstream release: http://kernelnewbies.org/Linux_2_6_35 + - [ia64] Fix crash when gcore reads gate area (Closes: #588574) + - tpm_tis: fix subsequent suspend failures (Closes: #591031) + + * topconfig enable BLK_CGROUP, NETFILTER_XT_TARGET_TEE, VMWARE_BALLOON, + ATH9K_HTC, TOUCHSCREEN_HAMPSHIRE, TOUCHSCREEN_TPS6507X, SND_ASIHPI, + SQUASHFS_XATTRS, RCU_FAST_NO_HZ, COMPACTION, IP_MROUTE_MULTIPLE_TABLES, + IPV6_MROUTE_MULTIPLE_TABLES, NET_DCCPPROBE, NET_SCTPPROBE, L2TP, + BT_L2CAP_EXT_FEATURES, MTD_NAND_RICOH, ATA_BMDMA, KEYBOARD_QT2160, + N_GSM, SENSORS_SHT15, SENSORS_EMC1403, SENSORS_ADS7871, SENSORS_TMP102, + SND_ES1968_INPUT, SND_MAESTRO3_INPUT, LEDS_LT3593, LEDS_MC13783. + * x86 enable INTEL_IDLE, ACPI_HED, ACPI_APEI, ACPI_APEI_GHES, + PCI_CNB20LE_QUIRK. + + -- maximilian attems Tue, 03 Aug 2010 16:21:16 +0200 + +linux-2.6 (2.6.35~rc6-1~experimental.1) experimental; urgency=low + + * New upstream release candidate + - drm/i915: Add 'reclaimable' to i915 self-reclaimable page allocations + (Closes: #534422) + + [ Ben Hutchings ] + * [!x86] Disable FB_VIA; these GPUs are only found on x86 motherboards + * ds2782_battery: Fix build failure on several architectures + * postinst: Remove support for 'default' boot loaders. Warn users on + upgrade if the current configuration may rely on this. + * [i386/686] Remove AMD K6 from the list of supported processors; it + does not implement the CMOV instruction + * 3c59x: Fix call to mdio_sync() with the wrong argument (Closes: #589989) + + -- Ben Hutchings Sat, 24 Jul 2010 01:00:26 +0100 + +linux-2.6 (2.6.35~rc5-1~experimental.1) experimental; urgency=low + + * New upstream release candidate + + [ Ben Hutchings ] + * Consistently name the linux-tools package and perf binary using the + upstream version without any -rcN suffix + + -- Ben Hutchings Tue, 13 Jul 2010 01:09:27 +0100 + +linux-2.6 (2.6.35~rc4-1~experimental.1) experimental; urgency=low + + * New upstream snapshot + - [hppa] clear floating point exception flag on SIGFPE signal + (Closes: #559406) + - Add mantis and hopper DVB drivers (Closes: #577264) + - eeepc-laptop: Disable wireless hotplug on more models where the + controller is not at the expected address (Closes: #576199) + - qcserial: Add support for Qualcomm Gobi 2000 devices + (Closes: #585661) + - radeon: Fix MacBook Pro connector quirk (Closes: #585943) + - r8169: Fix MDIO timing (Closes: #583139) + - asix: fix setting mac address for AX88772 (Closes: #587580) + - Update Marvell CESA (mv_cesa) driver (Closes: #585790): + + [ Ben Hutchings ] + * ipr: add writeq definition if needed (Closes: #584840) + * [mips] Fix boot from ATA hard drives (Closes: #584784): + - Set io_map_base for several PCI bridges lacking it + - Replace per-platform built-in IDE drivers with libata-based drivers + - Enable BLK_DEV_SD as built-in on all platforms + * Update Spanish debconf templates, thanks to Omar Campagne + (Closes: #580538) + * [powerpc] Enable pata_amd driver, replacing amd74xx + * linux-base: Don't identify LVM2 PVs by UUID (Closes: #585852) + * Move NEWS to linux-latest-2.6 (Closes: #586401) + * 3c59x: Change locking to avoid use of disable_irq() (Closes: #586967) + * Enable IPv6 support for IPVS (IP_VS_IPV6) (Closes: #584549) + * linux-base: If the disk ID update process fails, give the user a + chance to retry or change their answers (Closes: #585609) + * ipv6: Clamp reported valid_lft to a minimum of 0 (Closes: #514644) + * ipv6: Use interface max_desync_factor instead of static default + (Closes: #514646) + * [ia64, powerpc, sparc, x86] Enable KPROBES and KRETPROBES + (Closes: #584130) + * r8192s_usb: Fix various bugs: + - Clean up in case of an error in module initialisation + - Rename and remove proc directories correctly if an interface is + not called wlan0 (Closes: #582972) + - Correct device ID table (Closes: #584945, #587985) + * [x86] Enable r8192u_usb driver + * Add linux-tools- package containing the perf tool + (Closes: #548715) + * Enable SERIAL_USB_TI (Closes: #588096) and SERIAL_USB_WHITEHEAT + * [x86] Enable EDAC_I7CORE + + [ maximilian attems ] + * Enable DRM_RADEON_KMS. + + [ Martin Michlmayr ] + * OpenRD-Base: revert patch "allow SD/UART1 selection" since it + never made it upstream. + * ARM: update mach types. + * Add support for OpenRD-Ultimate. + * QNAP TS-11x/TS-21x: Add MPP44 (board ID). + * Add support for the HP t5325 Thin Client. + * m25p80: Add support for Macronix 25L8005. + * [armel/kirkwood] Enable FB_XGI and FRAMEBUFFER_CONSOLE. + * [armel] Make MOUSE_PS2 modular. + * [armel] Build INPUT_UINPUT for all flavours. + * [armel/kirkwood] Enable FB_UDL. + * [armel] Disable PARPORT_PC (Closes: #588164) + + [ Bastian Blank ] + * Disable mISDN support for NETJet cards. The driver binds a generic PCI + bridge. + * Disable ISDN4Linux drivers. + + -- Ben Hutchings Sat, 10 Jul 2010 21:53:57 +0100 + +linux-2.6 (2.6.34-1~experimental.2) experimental; urgency=low + + [ Ben Hutchings ] + * [x86] Reenable rtl8192su, accidentally disabled in previous version + (Closes: #580740) + * writeback: Update dirty flags in two steps + * writeback: ensure that WB_SYNC_NONE writeback with sb pinned is sync + (Closes: #582808) + * writeback: fix non-integrity write-back + * [mipsel] Add a loongson-2f flavour + * [mipsel] Loongson: Define rtc device on MC146818-equipped systems + * Make gcc-4.4 the default compiler + * [ia64] Hardcode the output of the scripts under arch/ia64/scripts so + that we can build out-of-tree modules correctly (refresh and re-add + dropped patch) (Closes: #392592) + * [ia64] Enable SGI SN support and mspec driver (Closes: #582224) + * iwlwifi: Disable QoS when connected to a non-QoS-capable AP + (Closes: #578262) + * [x86] Disable e_powersaver cpufreq driver as unsafe. It has already + been blacklisted by cpufrequtils. The acpi-cpufreq driver can be used + instead on some VIA C7 systems. (Closes: #566208) + * [amd64] ext4: Fix compat EXT4_IOC_ADD_GROUP (used by online resize) + * Install debug kernel image in /usr/lib/debug/boot (Closes: #582810) + * Build inet_lro as a module + * [sparc] Enable CONFIG_FB_XVR500, CONFIG_FB_XVR2500 (Closes: #508108) + + [ maximilian attems ] + * topconfig enable CFQ_GROUP_IOSCHED, MFD_WM8994, REGULATOR_MAX8649, + REGULATOR_WM8994, VHOST_NET, BT_ATH3K, CRYPTO_PCRYPT. + * [x86] Enable X86_PCC_CPUFREQ, VGA_SWITCHEROO (closes: #582637). + + [ Martin Michlmayr ] + * QNAP TS-419P: Export GPIO indicating jumper setting of JP1. + + [ dann frazier ] + * [hppa] clear floating point exception flag on SIGFPE signal + (Closes: #559406) + + [ Aurelien Jarno ] + * [sh4] fix sh_tmu clocksource following recent nohz changes. + + [ Moritz Muehlenhoff ] + * Enable X86 board specific fixups for reboot (Closes: #536537) + + -- Ben Hutchings Sun, 06 Jun 2010 18:53:04 +0100 + +linux-kbuild-2.6 (2.6.34-1~experimental.1) experimental; urgency=low + + * New upstream version + + -- Ben Hutchings Thu, 20 May 2010 01:19:43 +0100 + +linux-2.6 (2.6.34-1~experimental.1) experimental; urgency=low + + * New upstream release: http://kernelnewbies.org/Linux_2_6_34 + + * New upstream release + - rtl8192su: Add IDs for several more devices (Closes: #580740) + + [ maximilian attems ] + * topconfig enable IPV6_SIT_6RD, NETFILTER_XT_TARGET_CT, IP_VS_PROTO_SCTP, + NF_CONNTRACK_ZONES, CAN_PLX_PCI, TI_DAC7512, SCSI_HPSA, PATA_TOSHIBA, + MACVTAP, CHELSIO_T4, IXGBEVF, QLCNIC, LIBERTAS_MESH, + USB_NET_SMSC75XX, USB_SIERRA_NET, VIDEO_CX18_ALSA, USB_GSPCA_BENQ, + USB_GSPCA_CPIA1, USB_GSPCA_OV534_9, USB_GSPCA_SN9C2028, RADIO_TEF6862, + RADIO_SAA7706H, SND_USB_UA101, CEPH_FS, MICREL_PHY, KSZ884X_PCI, + SENSORS_ADT7411, SENSORS_ASC7621, VIDEO_TLG2300, DVB_USB_AZ6027, + DVB_NGENE, HID_3M_PCT, LOGIG940_FF, HID_MAGICMOUSE, HID_MOSART, + HID_NTRIG, HID_QUANTA, HID_STANTUM, HID_WACOM, USB_SERIAL_QCAUX, + USB_SERIAL_VIVOPAY_SERIAL, MMC_RICOH_MMC, LEDS_DELL_NETBOOKS, LOGFS. + * [x86] Enable EEEPC_WMI. + * Fix backlight support on some recent Thinkpads. + * acpi: Fall back to manually changing SCI_EN. + * Explicitly pass in whether sb is pinned or not. + + [ Ben Hutchings ] + * Prepare debconf templates for translation (Closes: #576758) + * [x86] Enable r8187se driver, previously named rtl8187se + + [ Aurelien Jarno ] + * mips/swarm: fix boot from IDE based media (Sebastian Andrzej Siewior) + (closes: #466977). + * mips/*: remove SND_* options, as they are already enabled in topconfig. + + -- maximilian attems Wed, 19 May 2010 17:06:13 +0200 + +linux-2.6 (2.6.33-1~experimental.5) experimental; urgency=low + + [ Ian Campbell ] + * Include Xen hypervisor in reportbug "related to" list. + + [ maximilian attems] + * Add stable 2.6.33.2. + + [ Ben Hutchings ] + * [x86] Enable ramzswap driver (Closes: #573912) + * [x86] Re-enable rt2860sta and rt2870sta drivers which were accidentally + disabled when moving to Linux 2.6.33 (Closes: #576723) + * Add stable 2.6.33.3: + - ACPI: EC: Allow multibyte access to EC; fixes temperature monitoring + on some Dell laptops (Closes: #563313) + + [ Aurelien Jarno ] + * Add support for sh4 architecture, patch by Nobuhiro Iwamatsu + (Closes: #569034) + * [mips*/*malta] Remove options that are present in topconfig. + + -- maximilian attems Wed, 05 May 2010 16:38:53 +0200 + +linux-2.6 (2.6.33-1~experimental.4) experimental; urgency=low + + [ Ben Hutchings ] + * Include aufs2, marked as staging (Closes: #573189) + * Remove /usr/include/drm from linux-libc-dev; let libdrm-dev provide it + again (Closes: #572067) + * [x86] Enable rtl8192su driver using external firmware + + [ maximilian attems] + * Add stable 2.6.33.1. + + -- maximilian attems Wed, 17 Mar 2010 18:13:53 +0100 + +linux-2.6 (2.6.33-1~experimental.3) experimental; urgency=low + + [ Ben Hutchings ] + * Fix regexp for binNMU versions in modules/rules.include (Closes: #524632) + * linux-base: Fix bugs and improve libata transition code: + - Fix calls to disk_id_to_path (renamed to id_to_path) (Closes: #572283) + - Don't show empty list of devices to be relabelled + - Don't update udev CD rules unnecessarily + - Show the device paths to be added to udev CD rules + - Ignore nonexistent devices and properly handle devices of unknown + filesystem type (Closes: #572341, #572445) + - Don't accept empty filesystem labels as identifiers (Closes: #572438) + - For consistency with fresh installations, use or assign UUIDs rather + than labels where both are available (Closes: #572376) + - Replace CD/DVD/BD device names with udev-provided persistent aliases + - Fix update of boot device name for LILO and related loaders + - Update uswsusp resume device name + + -- maximilian attems Thu, 11 Mar 2010 05:58:02 +0100 + +linux-2.6 (2.6.33-1~experimental.2) experimental; urgency=low + + [ Ben Hutchings ] + * Add missing debconf templates for linux-base (Closes: #571558) + * Fix libata transition code for GRUB 1 config (Closes: #571662) + + -- maximilian attems Sun, 28 Feb 2010 17:48:11 +0100 + +linux-2.6 (2.6.33-1~experimental.1) experimental; urgency=low + + * New upstream release: http://kernelnewbies.org/Linux_2_6_33 + + [ maximilian attems] + * [topconfig] set BLK_DEV_DRBD, DRM_NOUVEAU, DRM_NOUVEAU_BACKLIGHT, + DRM_VMWGFX, SENSORS_LM73, SENSORS_AMC682, SENSORS_LIS3_I2C, + SENSORS_MC13783_ADC, TOUCHSCREEN_DYNAPRO, TOUCHSCREEN_MC13783, + GIGASET_CAPI, LEDS_DAC124S085, LEDS_INTEL_SS4200, LEDS_INTEL_SS4200, + DVB_FIREDTV, DVB_USB_EC168, SOC_CAMERA_MT9T112, SOC_CAMERA_OV9640, + USB_GSPCA_PAC7302, USB_GSPCA_STV0680, AD525X_DPOT, CAN_MCP251X, + RT2800PCI, REGULATOR_MAX8660, RTC_DRV_BQ32K, RTC_DRV_MSM6242, + RTC_DRV_RP5C01, VMWARE_PVSCSI, SCSI_PM8001, WIMAX_IWMC3200_SDIO, + INPUT_SPARSEKMAP, SERIO_ALTERA_PS2, MANTIS_CORE, DVB_MANTIS, + DVB_HOPPER. + * [x86] set CS5535_MFGPT, SENSORS_K10TEMP, GEODE_WDT, MSI_WMI, + TOSHIBA_BT_RFKILL, ACPI_CMPC, CRYPTO_GHASH_CLMUL_NI_INTE. + + [ Ben Hutchings ] + * Use libata-based drivers for most PATA controllers (Closes: #444182): + - pata_triflex replaces triflex + - pata_atiixp replaces atiixp + - pata_ns87415 replaces ns87415 + - pata_sc1200 replaces sc1200 + - pata_cs5536 replaces cs5536 + - pata_amd replaces amd74xx + - pata_sis replaces sis5513 + - pata_rz1000 replaces rz1000 + - pata_efar replaces slc90e66 + - pata_pdc202xx_old replaces pdc202xx_old + - pata_pdc2027x replaces pdc202xx_new + - pata_cs5520 replaces cs5520 + - pata_cs5530 replaces cs5530 + - pata_cmd64x replaces cmd64x + - pata_sil680 replaces siimage + - pata_ali replaces alim15x3 + - pata_via replaces via82cxxx + - pata_serverworks replaces serverworks + - pata_artop replaces aec62xx + - pata_it821x replaces it821x + - ata_piix, pata_oldpiix, pata_mpiix mostly replace piix + - ata_generic, pata_ns87410, pata_netcell replace ide-pci-generic + * Add libata transition script + + -- maximilian attems Thu, 25 Feb 2010 15:21:38 +0100 + +linux-2.6 (2.6.32-30) unstable; urgency=high + + [ Ben Hutchings ] + * mpt2sas: Fix incorrect scsi_dma_map error checking (Closes: #606968) + * Update Spanish debconf template translation (Omar Campagne, Javier + Fernández-Sanguino) (Really closes: #600694) + * intel-iommu: Force-disable IOMMU for iGFX on broken Cantiga revisions + (Closes: #607095) + * [powerpc] linux-base: Run ybin after updating yaboot.conf + (Closes: #607284) + * tehuti: Firmware filename is tehuti/bdx.bin + * iwlwifi: Reduce a failure-prone memory allocation (Closes: #599345) + * linux-base: Look for GRUB 1 configuration in both /boot/grub and + /boot/boot/grub (Closes: #607863) + * rt28x0: Add ieee80211_regdom module parameter mimicking cfg80211 as a + workaround for incorrect region code in NVRAM (Closes: #594561) + * btrfs: Require CAP_SYS_ADMIN for filesystem rebalance (Closes: #608185) + * [x86] dell-laptop: Enable for some newer Dell models + * r8169: Change RTL8111D/RTL8168D initialisation and firmware loading to + match upstream version (Closes: #596390 with firmware-realtek 0.28) + * Add stable 2.6.32.28: + - NFS: Fix panic after nfs_umount() + - usb-storage/libusual: Add support for Samsung YP-CP3 MP4 Player, + thanks to Vitaly Kuznetsov (Closes: #555835) + - bfa: Fix system crash when reading sysfs fc_host statistics + (CVE-2010-4343) + - IB/uverbs: Handle large number of entries in poll CQ (CVE-2010-4649) + - orinoco: Fix TKIP countermeasure behaviour (CVE-2010-4648) + - mm: Add security_file_mmap check to install_special_mapping + (CVE-2010-4346) + - sctp: Fix a race between ICMP protocol unreachable and connect() + (CVE-2010-4526) + - hvc_console: Fix race between hvc_close and hvc_remove (CVE-2010-2653) + (previously applied as an isolated fix in 2.6.32-25) + - fuse/cuse: Verify ioctl retries (CVE-2010-4650) + * [powerpc] Restore device tree source files to linux-image packages + (Closes: #609155) + + [ maximilian attems ] + * [openvz] Reenable NF_CONNTRACK_IPV6. (closes: #580507) + * cifs: fix another memleak, in cifs_root_iget. + * b43: Fix warning at drivers/mmc/core/core.c:237 in mmc_wait_for_cmd. + * drm/radeon/kms: MC vram map needs to be >= pci aperture size. + * drm/radeon/kms: make sure blit addr masks are 64 bit. + * drm/radeon/kms: fix handling of tex lookup disable in cs checker on r2xx. + * drm/i915: Free hardware status page on unload when physically mapped. + * drm/i915/overlay: Ensure that the reg_bo is in the GTT prior to writing. + * drm/radeon/kms/atom: set sane defaults in atombios_get_encoder_mode(). + * drm/radeon/kms: fix typos in disabled vbios code. + * drm/radeon/kms: add workaround for dce3 ddc line vbios bug. + * drm/radeon/kms: fix interlaced and doublescan handling. + * drm/i915/sdvo: Always add a 30ms delay to make SDVO TV detection reliable. + * wireless: b43: fix error path in SDIO. + * drm/radeon/kms: don't apply 7xx HDP flush workaround on AGP. + + [ Ian Campbell ] + * xen: backport TTM patches to use PCI API. Fixes PCIe GPU (specifically + Radeon and Nouveau) on Xen (Closes: #601341). + * xen: netback: drop SKBs which are GSO but do not have a partial + checksum set (Closes: #608144). + + [ dann frazier ] + * exec: make argv/envp memory visible to oom-killer (CVE-2010-4243) + * irda: Fix information leak in IRLMP_ENUMDEVICES (CVE-2010-4529) + * af_unix: limit unix_tot_inflight (CVE-2010-4249) + + [ Moritz Muehlenhoff ] + * net: ax25: fix information leak to userland (CVE-2010-3875) + * net: packet: fix information leak to userland (CVE-2010-3876) + * net: tipc: fix information leak to userland (CVE-2010-3877) + * inet_diag: Make sure we actually run the same bytecode we audited + (CVE-2010-3880) + * econet: Fix crash in aun_incoming() (CVE-2010-4342) + + -- Ben Hutchings Tue, 11 Jan 2011 05:42:11 +0000 + +linux-2.6 (2.6.32-29) unstable; urgency=high + + [ Ben Hutchings ] + * megaraid_sas: Add support for 'entry-level' SAS controllers including + the 9240 family (Closes: #604083) + * tcp: Make TCP_MAXSEG minimum more correct (refinement of fix for + CVE-2010-4165) + * l2tp: Fix UDP socket reference count bugs in the pppol2tp driver + (Closes: #604748) + * USB: Retain device power/wakeup setting across reconfiguration; + don't enable remote wakeup by default (Closes: #605246) + * dm: Deal with merge_bvec_fn in component devices better (Closes: #604457) + * Update Spanish debconf template translation (Aaron H Farias Martinez) + (Closes: #600694) + * perf: Use libiberty, not libbfd, for symbol demangling + (Closes: #590226, #606050) + * [x86] Add support for Fintek hardware watchdogs (Closes: #601187) + - resource: Add shared I/O region support + - hwmon: f71882fg: Use a muxed resource lock for the Super I/O port + - watchdog: Add f71808e_wdt driver + * bcm5974: Add reporting of multitouch events (Closes: #605450) + * fusion: Set FUSION_MAX_SGE=128, the upstream default (Closes: #606096) + * Add stable 2.6.32.27: + - block: limit vec count in bio_kmalloc() and bio_alloc_map_data() + - block: take care not to overflow when calculating total iov length + - block: check for proper length of iov entries in blk_rq_map_user_iov() + (CVE-2010-4163) + - net: clear heap allocation for ETHTOOL_GRXCLSRLALL (CVE-2010-3861) + - asus_oled: fix up some sysfs attribute permissions + - ipc: initialize structure memory to zero for compat functions + (CVE-2010-4073) + - ipc/shm: fix information leak to userland (CVE-2010-4072) + - ipc/sem: sys_semctl: fix kernel stack information leakage (CVE-2010-4083) + - tty: prevent DOS in the flush_to_ldisc + - [x86] KVM: VMX: Fix host userspace gsbase corruption (Closes: #604956) + - KVM: VMX: fix vmx null pointer dereference on debug register access + (CVE-2010-0435) + - KVM: x86: fix information leak to userland (CVE-2010-3881) + - firewire/cdev: fix information leak + - firewire-core: fix an information leak + - firewire-ohci: fix buffer overflow in AR split packet handling + - bio: take care not overflow page count when mapping/copying user data + (CVE-2010-4162) + - sisusbvga: fix information leak to userland + - iowarrior: fix information leak to userland + - usb: core: fix information leak to userland + - usb-storage/sierra_ms: fix sysfs file attribute + - ueagle-atm: fix up some permissions on the sysfs files + - cypress_cy7c63: fix up some sysfs attribute permissions + - usbled: fix up some sysfs attribute permissions + - trancevibrator: fix up a sysfs attribute permission + - usbsevseg: fix up some sysfs attribute permissions + - do_exit(): make sure that we run with get_fs() == USER_DS (CVE-2010-4258) + - DECnet: don't leak uninitialized stack byte + - perf_events: Fix perf_counter_mmap() hook in mprotect() (CVE-2010-4169) + - frontier: fix up some sysfs attribute permissions + - net/sched: fix kernel information leak in act_police + - can-bcm: fix minor heap overflow (CVE-2010-3874) + - ivtvfb: prevent reading uninitialized stack memory (CVE-2010-4079) + - net/sched: fix some kernel information leaks + * TTY: Fix error return from tty_ldisc_open() (regression in 2.6.32.27) + * filter: make sure filters dont read uninitialized memory (CVE-2010-4158) + * posix-cpu-timers: workaround to suppress the problems with mt exec + (CVE-2010-4248) + + [ Ian Campbell ] + * xen: disable ACPI NUMA for PV guests and allow IRQ desc allocation on any + node (Closes: #603632) + * xen: handle potential time discontinuity on resume (Closes: #602273) + * xen: don't bother to stop other cpus on shutdown/reboot (Closes: #605448) + * xen: Add cpu hotplug support to prevent crash while parsing ACPI processor + tables (Closes: #602109) + + [ Martin Michlmayr ] + * Kirkwood: Add support for 6282 based QNAP devices. + + -- Ben Hutchings Fri, 10 Dec 2010 05:45:11 +0000 + +linux-2.6 (2.6.32-28) unstable; urgency=high + + [ maximilian attems ] + * ipc: initialize structure memory to zero for shmctl. + * drm/i915: set DIDL using the ACPI video output device _ADR method return. + * images: Nuke modules.devname on removal. (closes: #590607) + * Newer Standards-Version 3.9.1 without changes. + * drm/ttm: Clear the ghost cpu_writers flag on ttm_buffer_object_transfer. + * [openvz] Update upstream patch to 2.6.32-dzhanibekov. + * [openvz] ubc: Fix orphan count checks after merge. + + [ Martin Michlmayr ] + * Update udlfb to 2.6.37: + - udlfb: minor cleanups + - udlfb: fix coding style issues + - udlfb: fbdev character read and write support + - udlfb: add DPMS support + - udlfb: remove metrics_misc sysfs attribute + - udlfb: revamp reference handling to insure successful shutdown + - udlfb: enhance EDID and mode handling support + - udlfb: fix big endian rendering error + - udlfb: support for writing backup EDID to sysfs file + - udlfb: add module options for console and fb_defio + - udlfb: fix incorrect fb_defio implementation for multiple framebuffers + - udlfb: fix checkpatch and style + + [ Ben Hutchings ] + * Update debconf template translations: + - Update Japanese (Nobuhiro Iwamatsu) (Closes: #602152) + - Update Catalan (Jordi Mallach) (Closes: #602520) + - Add Italian (Luca Bruno) (Closes: #602945) + * sunrpc: Fix NFS client over TCP hangs due to packet loss (Closes: #589945) + * brcm80211: Update to 2.6.37-rc1 + * [powerpc] ALSA: Fix headphone and line-out detection on PowerMac G4 DA + (Closes: #603419) + * [x86] snd-hda-codec-cirrus: Add quirks for IMac 27", MacBookPro 5,5 and 7,1 + * [x86] btusb: Add device IDs for MacBookPro 6,2 and 7,1 (Closes: #603651) + * [x86] applesmc: Add support for iMac 9,1 and MacBookPro 2,2, 5,3, 5,4, 6,* + and 7,* + * [x86] applesmc, bcm5974, btusb, HID, mbp_nvidia_bl, snd-hda-codec-cirrus: + Add support for MacBookAir 3,1 and 3,2 (Closes: #603395) + * [x86] mbp_nvidia_bl: Add support for MacBookPro 7,1 + * x25: Fix remote denial-of-service vulnerabilities: + - x25 accesses fields beyond end of packet + - memory corruption in X.25 facilities parsing (CVE-2010-3873) + - Prevent crashing when parsing bad X.25 facilities (CVE-2010-4164) + * tcp: Increase TCP_MAXSEG socket option minimum (CVE-2010-4165) + * rds: Fix integer overflow in RDS cmsg handling + * af_802154,decnet,econet,rds,x25: Disable auto-loading as mitigation + against local exploits. These protocol modules are not widely used + and can be explicitly loaded or aliased on systems where they are + wanted. + * atl1c: Add support for Atheros AR8151 and AR8152 (Closes: #599771) + * Add stable 2.6.32.26: + - synclink_cs: Fix information leak to userland + - bluetooth: Fix missing NULL check + - [x86] KVM: VMX: Fix host GDT.LIMIT corruption + - [x86] KVM: Fix fs/gs reload oops with invalid ldt (CVE-2010-3698) + - gdth: Fix integer overflow in ioctl (CVE-2010-4157) + * [x86] KVM: SVM: Fix wrong intercept masks for KVM_{GET,SET}_VCPU_EVENTS + on 32 bit, thanks to Philipp Matthias Hahn (Closes: #599507) + + [ dann frazier ] + * [vserver] Update patch to 2.6.32.25-vs2.3.0.36.29.6 + * add qlcnic driver + * econet: Avoid stack overflow w/ large msgiovlen (CVE-2010-3848) + * econet: disallow NULL remote addr for sendmsg() (CVE-2010-3849) + * econet: Add mising CAP_NET_ADMIN check in SIOCSIFADDR (CVE-2010-3850) + + -- Ben Hutchings Thu, 25 Nov 2010 01:20:50 +0000 + +linux-2.6 (2.6.32-27) unstable; urgency=high + + * The "We'll Always Have Paris" release + + [ Ben Hutchings ] + * rndis_host: Restrict fix for #576929 to specific devices + (Closes: #589403, #600660) + * Add stable 2.6.32.25: + - rme9652: prevent reading uninitialized stack memory + (CVE-2010-4080, CVE-2010-4081) + - ocfs2: Don't walk off the end of fast symlinks + - ip: fix truesize mismatch in ip fragmentation + - net: clear heap allocations for privileged ethtool actions + - execve: setup_arg_pages: diagnose excessive argument size + - execve: improve interactivity with large arguments + - execve: make responsive to SIGKILL with large arguments + - rose: Fix signedness issues wrt. digi count. (CVE-2010-3310) + - ALSA: prevent heap corruption in snd_ctl_new() (CVE-2010-3442) + - setup_arg_pages: diagnose excessive argument size (CVE-2010-3858) + * btrfs: add a "df" ioctl for btrfs (Closes: #600190) + * Update debconf template translations: + - Add Catalan (Jordi Mallach) (Closes: #601146) + - Add Brazilian Portugese (Flamarion Jorge) (Closes: #601102) + - Update Vietnamese (Clytie Siddall) (Closes: #601534) + * phonet: device notifier only runs on initial namespace + (Really closes: #597904) + * net/socket: Limit sendto()/recvfrom() length (CVE-2010-1187) + [Original reference is incorrect; should be CVE-2010-3859.] + + [ Ian Campbell ] + * xen: import additional fixes for disabling netfront smartpoll mode + (Closes: #600992). + + [ dann frazier ] + * e1000e: Reset 82577/82578 PHY before first PHY register read + (Closes: #601017) + + [ Martin Michlmayr ] + * Kirkwood: reset PCIe unit on boot + * Kirkwood: restrict the scope of the PCIe reset workaround + + [ maximilian attems ] + * Update abi files, readd Xen as ABI stable. + * 2.6.33.stable-queue: drm/radeon: fix PCI ID 5657 to be an RV410. + * Add drm changes from 2.6.32.24+drm33.11: + - i915: return -EFAULT if copy_to_user fails. + - drm/i915: Prevent double dpms on + - drm: Only decouple the old_fb from the crtc is we call mode_set* + - drm/i915: Unset cursor if out-of-bounds upon mode change (v4) + - drm/i915,agp/intel: Add second set of PCI-IDs for B43 + * net: Limit socket I/O iovec total length to INT_MAX. (CVE-2010-1187) + [Original reference is incorrect; should be CVE-2010-3859.] + * numa: fix slab_node(MPOL_BIND). + + -- maximilian attems Sat, 30 Oct 2010 12:24:37 +0200 + +linux-2.6 (2.6.32-26) unstable; urgency=high + + [ Ian Campbell ] + * xen: fix PVHVM hang at boot when Xen does not support vector callbacks. + * xen: fix race between PV drivers and xenstore initialisation which caused + breakage in drivers for both regular PV and PVHVM guests. + + [ maximilian attems ] + * [openvz] Enable ioprio. (closes: #596772) + Thanks Daniel Hahler + + [ Ben Hutchings ] + * [x86] radeon: Add quirks to make HP nx6125 and dv5000 laptops resume + (Closes: #583968) + * dm-crypt: Add 'plain64' IV; this avoids watermarking attacks that are + possible with 'plain' IV on devices larger than 2TB (Closes: #600384) + * [x86] ahci,ata_generic: let ata_generic handle new MBP w/ MCP89 + (Closes: #600305) + * debian/.../patches.py: Open files as needed, rather than all at once + (Closes: #600423) + * [openvz] printk: Handle global log buffer reallocation (Closes: #600299) + * debian/bin/test-patches: Restrict patches to featureset when building + with a featureset (thanks to Tim Small) + * sata_via: Delay on vt6420 when starting ATAPI DMA write (Closes: #488566) + * r6040: Fix various bugs in r6040_multicast_list() (Closes: #600155) + + [ dann frazier ] + * Force enable DMA on MBP w/ MCP 7,1 + * RDS sockets: remove unsafe kmap_atomic optimization (CVE-2010-3904) + * v4l: disable dangerous buggy compat function (CVE-2010-2963) + + -- dann frazier Tue, 19 Oct 2010 07:50:55 -0600 + +linux-2.6 (2.6.32-25) unstable; urgency=high + + [ Ben Hutchings ] + * mmc: build fix: mmc_pm_notify is only available with CONFIG_PM=y + * Add stable 2.6.32.24 (trivial fix, already applied) + * ipg: Remove device claimed by dl2k from pci id table (Closes: #599021) + * linux-image: Include modules.order in image packages (Closes: #598518) + * [x86] isdn/i4l: Reenable ISDN4Linux drivers, but mark them as staging + (Closes: #588551) + - hisax: Disable device aliases that conflict with mISDN + * Update Danish debconf template translation (Joe Hansen) (Closes: #599457) + * [x86] KVM: SVM: Fix wrong intercept masks on 32 bit (Closes: #599507) + * e1000: fix Tx hangs by disabling 64-bit DMA (Closes: #518182) + * rt2x00: Fix calculation of required TX headroom (Closes: #599395) + * Add drm changes from 2.6.32.22+drm33.10: + - i915: Don't touch PORT_HOTPLUG_EN in intel_dp_detect() + - i915: Kill dangerous pending-flip debugging + - radeon: release AGP bridge at suspend + - radeon: initialize set_surface_reg for rs600 asic + * [x86] toshiba_acpi: Add full hotkey support (Closes: #599768) + + [ Stephen R. Marenka ] + * m68k: fix missing io macros. + * m68k: modular swim on mac. + * m68k: never build staging drivers on m68k. + * m68k: build in rtc class on atari. + + [ Ian Campbell ] + * xen: do not truncate machine address on gnttab_copy_grant_page hypercall + (Closes: #599089) + + [ dann frazier ] + * drm/i915: Sanity check pread/pwrite (CVE-2010-2962) + * drm/i915: Rephrase pwrite bounds checking to avoid any potential overflow + * GFS2: Fix writing to non-page aligned gfs2_quota structures (CVE-2010-1436) + * hvc_console: Fix race between hvc_close and hvc_remove (CVE-2010-2653) + * net sched: fix some kernel memory leaks (CVE-2010-2942) + * niu: Fix kernel buffer overflow for ETHTOOL_GRXCLSRLALL (CVE-2010-3084) + * rose: Fix signedness issues wrt. digi count (CVE-2010-3310) + * Fix pktcdvd ioctl dev_minor range check (CVE-2010-3437) + * ALSA: prevent heap corruption in snd_ctl_new() (CVE-2010-3442) + * net sched: fix kernel leak in act_police (CVE-2010-3477) + * sctp: Fix out-of-bounds reading in sctp_asoc_get_hmac() (CVE-2010-3705) + + -- dann frazier Thu, 14 Oct 2010 01:08:05 -0600 + +linux-2.6 (2.6.32-24) unstable; urgency=high + + [ Ben Hutchings ] + * speakup: Update to match Debian package version 3.1.5.dfsg.1-1 + * scsi_dh_emc: Fix mode select request setup (Closes: #591540) + * snd-hda-codec-via: Fix syntax error when CONFIG_SND_HDA_POWER_SAVE is + disabled (Closes: #597043) + * Add stable 2.6.32.22: + - [vserver] Revert sched changes since they conflict. + * Recommend use of 'make deb-pkg' to build custom kernel packages + * [x86] Revert "i915: Blacklist i830, i845, i855 for KMS". The current X + driver (xserver-xorg-video-intel version 2.12.0+shadow-1) should work + properly with KMS on these chips. (Closes: #596453) + * phonet: Restrict to initial namespace (Closes: #597904) + * Add stable 2.6.32.23: + - serial/mos*: prevent reading uninitialized stack memory + - net: Fix oops from tcp_collapse() when using splice() + - rds: fix a leak of kernel memory + - hso: prevent reading uninitialized memory (CVE-2010-3298) + - cxgb3: prevent reading uninitialized stack memory (CVE-2010-3296) + - eql: prevent reading uninitialized stack memory (CVE-2010-3297) + - vt6655: fix buffer overflow + - net/llc: make opt unsigned in llc_ui_setsockopt() + - sisfb: prevent reading uninitialized stack memory + - aio: check for multiplication overflow in do_io_submit (CVE-2010-3067) + - xfs: prevent reading uninitialized stack memory (CVE-2010-3078) + - viafb: prevent reading uninitialized stack memory + - [hppa,ia64] mm: guard page for stacks that grow upwards (CVE-2010-2240) + - sctp: Do not reset the packet during sctp_packet_config() + (CVE-2010-3432) + * xen: Fix typo in xen_percpu_chip definition + * 3c59x: Remove incorrect locking (Closes: #598103) + * f71882fg: Add support for the f71889fg (Closes: #597820) + * drm/radeon: Fix regressions introduced in 2.6.34.3 (Closes: #597636) + * mmc: fix hangs related to mmc/sd card insert/removal during suspend/resume + (Closes: #598147) + + [ Martin Michlmayr ] + * ARM: update mach types. + * [armel/config.kirkwood] Enable MACH_DOCKSTAR. + + [ Ian Campbell ] + * [x86/xen] Disable netfront's smartpoll mode by default. (Closes: #596635) + + [ maximilian attems ] + * [openvz] Update upstream patch to 2.6.32-dyomin. + + -- Ben Hutchings Thu, 30 Sep 2010 00:46:16 +0100 + +linux-2.6 (2.6.32-23) unstable; urgency=low + + [ Ben Hutchings ] + * cgroupfs: create /sys/fs/cgroup to mount cgroupfs on (Closes: #595964) + * r8169: Fix MDIO timing (Closes: #583139; mistakenly reverted in 2.6.32-19) + * gro: Fix bogus gso_size on the first fraglist entry (Closes: #596802) + * vgaarb: Fix VGA arbiter to accept PCI domains other than 0 (from stable + 2.6.32.12; mistakenly omitted in 2.6.32-12) + + [ maximilian attems ] + * openvz: cfq-iosched: do not force idling for sync workload. + + [ Stephen R. Marenka ] + * m68k: switch to generic siginfo layout. + * m68k: NPTL support. + + [ dann frazier ] + * compat: Make compat_alloc_user_space() incorporate the access_ok() + (CVE-2010-3081) + * x86-64, compat (CVE-2010-3301): + - Retruncate rax after ia32 syscall entry tracing + - Test %rax for the syscall number, not %eax + * wireless extensions: fix kernel heap content leak (CVE-2010-2955) + * KEYS (CVE-2010-2960): + - Fix RCU no-lock warning in keyctl_session_to_parent() + - Fix bug in keyctl_session_to_parent() if parent has no session keyring + + -- dann frazier Fri, 17 Sep 2010 15:27:04 -0600 + +linux-2.6 (2.6.32-22) unstable; urgency=low + + [ Ian Campbell ] + * xen: backport pvhvm drivers from upstream. + * Fixes/overrides for Lintian warnings: + - Add "(meta package)" to short description of linux-headers + metapackages, resolves empty-binary-package. + - Add dependency on ${misc:Depends} to all packages, resolves + debhelper-but-no-misc-depends. Required update to gencontrol.py to + augment rather than override headers_arch_depends read from templates. + - Override dbg-package-missing-depends for linux-image-*-dbg. It is not + necessary to install the kernel image package to use the dbg package + since the dbg package already contains a complete image with symbols. + + [ Ben Hutchings ] + * [x86/xen] Restore stack guard page (CVE-2010-2240) + * Add stable 2.6.32.21: + - ext4: consolidate in_range() definitions (CVE-2010-3015) + - mm: make the mlock() stack guard page checks stricter + (avoids regression for Xen tools; closes: 594756) + - [sparc] sunxvr500: Ignore secondary output PCI devices + (Closes: #594604) + - ocfs2: fix o2dlm dlm run purgelist (Closes: #593679) + - Avoid ABI change in mm + - Ignore ABI change in snd-emu10k1 + * Add drm changes from stable 2.6.34.6: + - drm: stop information leak of old kernel stack (CVE-2010-2803) + * rt2870sta: Add more device IDs from vendor drivers + * rt2860sta, rt2870sta: Enable channels 12-14 (Closes: #594561) + * SCSI/mptsas: fix hangs caused by ATA pass-through (Closes: #594690) + * sky2: Apply fixes and new hardware support from 2.6.33-2.6.35 + (Closes: #571526) + * postinst: Really warn users on upgrade if the current configuration may + rely on running a default boot loader. + * input: add compat support for sysfs and /proc capabilities output + (Closes: #579017) + * snd-hda-intel: Add support for VIA V1708S, VT1718S, VT1828S, VT2020, + VT1716S, VT2002P, VT1812, VT1818S + * hwmon/w83627ehf: Add support for W83667HG-B + * 3c59x: Fix deadlock in vortex_error() (Closes: #595554) + * [x86] paravirt: Add a global synchronization point for pvclock (from + 2.6.32.16; reverted due to a regression which was addressed in 2.6.32.19) + * sched, cputime: Introduce thread_group_times() (from 2.6.32.19; reverted + due to the potential ABI change which we now carefully avoid) + * net/{tcp,udp,llc,sctp,tipc,x25}: Add limit for socket backlog + (Closes: #592187) + * tun: Don't add sysfs attributes to devices without sysfs directories + (Closes: #594845) + * [x86] Add brcm80211 driver for Broadcom 802.11n wireless network + controllers + * r8169: Remove MODULE_FIRMWARE declarations since the firmware is + non-essential and we do not distribute it + * [x86] HPET: unmap unused I/O space + * ipheth: add support for iPhone 4 + * ipheth: remove incorrect devtype of WWAN + * ALSA: emux: Add trivial compat ioctl handler (Closes: #596478) + * hostap_pci: set dev->base_addr during probe (Closes: #595802) + * ethtool: allow non-netadmin to query settings (see #520724) + * ACPI: add boot option acpi=copy_dsdt to fix corrupt DSDT, and enable this + automatically for known-bad Toshiba models (Closes: #596709) + + [ Bastian Blank ] + * Use Breaks instead of Conflicts. + + [ Aurelien Jarno ] + * [mips,mipsel] Fix computation of DMA flags from device's + coherent_dma_mask. + + [ Martin Michlmayr ] + * Add some patches from the Orion tree: + - OpenRD: Enable SD/UART selection for serial port 1 + - kirkwood: Unbreak PCIe I/O port + - Kirkwood: support for Seagate DockStar + + [ dann frazier ] + * netxen_nic: add support for loading unified firmware images + * irda: Correctly clean up self->ias_obj on irda_bind() failure. + (CVE-2010-2954) + + [ maximilian attems ] + * [powerpc] Enable WINDFARM_PM121. (closes: #596515) + Thanks Étienne BERSAC + * nouveau: disable acceleration on NVA3/NVA5/NVA8 by default. + * openvz: disable KSM. Thanks Dietmar Maurer . + (closes: #585864) + * Update openvz patch to d38b56fd0dca. + * openvz: enalbe modular VZ_EVENT. + + -- maximilian attems Tue, 14 Sep 2010 14:17:11 +0200 + +linux-2.6 (2.6.32-21) unstable; urgency=high + + [ Ben Hutchings ] + * Add stable 2.6.32.19: + - ext4: Make sure the MOVE_EXT ioctl can't overwrite append-only files + (CVE-2010-2066) + - mm: keep a guard page below a grow-down stack segment (CVE-2010-2240) + (not applied to xen featureset) + - md/raid10: fix deadlock with unaligned read during resync + (Closes: #591415) + - Revert "sched, cputime: Introduce thread_group_times()" which would + result in an ABI change + * Add stable 2.6.32.20: + - Fix regressions introduced by original fix for CVE-2010-2240 + * Add drm and other relevant changes from stable 2.6.34.4 + * Add 'breaks' relation from image packages to boot loader packages that + do not install required hooks (Closes: #593683) + * [x86] i915: Blacklist i830, i845, i855 for KMS + (Closes: #568207, #582105, #593432, #593507) + + [ Bastian Blank ] + * Update Xen patch. + - Notify Xen on crash. + - Several blktap fixes. + + [ Ritesh Raj Sarraf ] + * Add .gnu_debuglink information into kernel modules (Closes: #555549) + + [ Ian Campbell ] + * [x86/xen] temporarily remove stack guard page, it breaks the xen + toolstack. + + [ Aurelien Jarno ] + * [mips,mipsel] Fix 64-bit atomics. + + -- Ben Hutchings Wed, 25 Aug 2010 01:06:18 +0100 + +linux-2.6 (2.6.32-20) unstable; urgency=low + + [ Moritz Muehlenhoff ] + * Backport XVR1000 driver (Closes: #574243) + + [ Ben Hutchings ] + * Add stable 2.6.32.18: + - CIFS: Fix compile error with __init in cifs_init_dns_resolver() + definition (FTBFS for most architectures) + - GFS2: rename causes kernel Oops (CVE-2010-2798) + - xfs: prevent swapext from operating on write-only files + (CVE-2010-2226) + * Update debconf template translations: + - Swedish (Martin Bagge) (Closes: #592045) + - German (Holger Wansing) (Closes: #592226) + * [i386/openvz-686] Remove AMD Geode LX and VIA C3 "Nehemiah" from the + list of supported processors; they do not implement PAE + * V4L/DVB: Add Elgato EyeTV Diversity to dibcom driver (Closes: #591710) + * [s390] dasd: use correct label location for diag fba disks + (Closes: #582281) + * Add drm changes from stable 2.6.34.2 (thanks to Stefan Bader) and + 2.6.34.3 + * drm/i915: disable FBC when more than one pipe is active + (Closes: #589077) + * IB/ipath: Fix probe failure path (Closes: #579393) + * ext4: fix freeze deadlock under IO (regression introduced in 2.6.32.17) + * xen: Completely disable use of XSAVE (Closes: #592428) + + [ Martin Michlmayr ] + * [armel/orion5x] Add a missing #include to fix a build issue. + * [armel/kirkwood, armel/orion5x] Build-in support for more devices. + + [ dann frazier ] + * can: add limit for nframes and clean up signed/unsigned variables + + -- Ben Hutchings Thu, 12 Aug 2010 03:26:39 +0100 + +linux-2.6 (2.6.32-19) unstable; urgency=low + + [ maximilian attems ] + * inotify send IN_UNMOUNT events. + * inotify fix oneshot support. + + [ Ben Hutchings ] + * linux-base: Remove dependency on libapt-pkg-perl (Closes: #589996) + * pata_pdc202xx_old: Fix UDMA mode for PDC2024x and PDC2026x controllers + (Closes: #590532) + * Update debconf template translations: + - Czech (Michal Simunek) (Closes: #590546) + - Portugese (Américo Monteiro) (Closes: #590557) + - French (David Prévot) (Closes: #591149) + - Russian (Yuri Kozlov) (Closes: #591241) + * Add stable 2.6.32.17: + - ethtool: Fix potential kernel buffer overflow in ETHTOOL_GRXCLSRLALL + (CVE-2010-2478) + - GFS2: Fix up system xattrs (CVE-2010-2525) + - Revert ABI changes in firmware_class and ssb + - Ignore ABI changes in acpi_processor, hostap and jbd2 + * Add drm changes from stable 2.6.33.7: + - drm/i915: Enable low-power render writes on GEN3 hardware (915, 945, + G33 and Atom "Pineview") (Closes: #590193, maybe others) + * [i386/xen-686] Remove AMD Geode LX and VIA C3 "Nehemiah" from the list + of supported processors; they do not implement PAE + * [x86] Add samsung-laptop driver + + [ dann frazier ] + * [ia64] Fix crash when gcore reads gate area (Closes: #588574) + + [ Bastian Blank ] + * Update Xen patch. + - Ignore ABI changes. + + -- Ben Hutchings Thu, 05 Aug 2010 02:43:19 +0100 + +linux-2.6 (2.6.32-18) unstable; urgency=low + + [ Ben Hutchings ] + * iwlwifi: Allocate pages for RX buffers, reducing the probability of + allocation failure (Closes: #580124) + * postinst: Remove support for 'default' boot loaders. Warn users on + upgrade if the current configuration may rely on this. + * rt2860sta, rt2870sta: Apply changes from Linux 2.6.33 and 2.6.34 + - rt2860sta: Fix WPA(2)PSK issue when group cipher of AP is WEP40 + or WEP104 (Closes: #574766) + * rt3090sta: Replace with rt2860sta (Closes: #588863) + * [i386/686] Remove AMD K6 from the list of supported processors; it + does not implement the CMOV instruction + * drm/i915: Add 'reclaimable' to i915 self-reclaimable page allocations + (really closes: #534422, we hope) + * Revert "x86, paravirt: Add a global synchronization point for pvclock", + included in stable 2.6.32.16 (Closes: #588426) + * 3c59x: Fix call to mdio_sync() with the wrong argument (Closes: #589989) + + [ Martin Michlmayr ] + * Add some patches from the Orion tree, including support for Marvell's + Armada 300 (88F6282): + - Kirkwood: update MPP definition. + - Kirkwood: fix HP t5325 after updating MPP definitions + - leds: leds-gpio: Change blink_set callback to be able to turn off + blinking + - net/phy/marvell: Expose IDs and flags in a .h and add dns323 LEDs + setup flag + - orion5x: Base support for DNS-323 rev C1 + - orion5x: Fix soft-reset for some platforms + - mtd: orion/kirkwood: add RnB line support to orion mtd driver + - mtd: kirkwood: allow machines to register RnB callback + - Kirkwood: add support for rev A1 of the 88f6192 and 88f6180 chips + - Kirkwood: Add support for 88f6282 + - PCI: add platform private data to pci_sys_data + - Kirkwood: add support for PCIe1 + - Kirkwood: more factorization of the PCIe init code + + [ maximilian attems ] + * sched: Fix over-scheduling bug. + + -- Ben Hutchings Fri, 23 Jul 2010 03:48:08 +0100 + +linux-2.6 (2.6.32-17) unstable; urgency=low + + [ maximilian attems ] + * agp: add no warn since we have a fallback to vmalloc paths. + + [ Ben Hutchings ] + * linux-tools: Fix build for hppa and do not attempt to build for + architectures where perf events are not available (Closes: #588409) + * linux-tools: Add build-dependency on binutils-dev to enable symbol + demangling in perf + * drm/i915: Fix memory corruption on resume from hibernation + (Closes: #534422) + + -- Ben Hutchings Sat, 10 Jul 2010 16:40:38 +0100 + +linux-2.6 (2.6.32-16) unstable; urgency=low + + [ dann frazier ] + * [hppa] clear floating point exception flag on SIGFPE signal + (Closes: #559406) + + [ Ben Hutchings ] + * Add stable 2.6.32.15 + * Add mantis and hopper DVB drivers with mb86a16 and tda665x DVB + front-ends, backported by Bjørn Mork (Closes: #577264) + * Build inet_lro as a module + * [sparc] Enable CONFIG_FB_XVR500, CONFIG_FB_XVR2500 (Closes: #508108) + * Update Spanish debconf templates, thanks to Omar Campagne + (Closes: #580538) + * Revert "Add EC path for Thinkpad X100."; it is incomplete and broken + * sctp: fix append error cause to ERROR chunk correctly (regression due + to fix for CVE-2010-1173) + * [powerpc] Enable pata_amd driver, replacing amd74xx + * eeepc-laptop: Disable wireless hotplug on more models where the + controller is not at the expected address (Closes: #576199) + * [mips] Fix boot from ATA hard drives (Closes: #584784): + - Set io_map_base for several PCI bridges lacking it + - Replace per-platform built-in IDE drivers with libata-based drivers + - Enable BLK_DEV_SD as built-in on all platforms + * Revert "vlan/macvlan: propagate transmission state to upper layers" + (Closes: #585770) + * linux-base: Don't identify LVM2 PVs by UUID (Closes: #585852) + * usb-serial: Add generic USB WWAN code, backported by Mark Hymers + (Closes: #585661) + - option, qcserial: Use generic USB WWAN code + - qcserial: Add support for Qualcomm Gobi 2000 devices + * radeon: Fix MacBook Pro connector quirk (Closes: #585943) + * r8169: Fix MDIO timing (Closes: #583139) + * Move NEWS to linux-latest-2.6 (Closes: #586401) + * 3c59x: Change locking to avoid use of disable_irq() (Closes: #586967) + * Enable IPv6 support for IPVS (IP_VS_IPV6) (Closes: #584549) + * Revert "tpm: autoload tpm_tis based on system PnP IDs", included in + stable 2.6.32.12 (Closes: #584273) + * linux-base: If the disk ID update process fails, give the user a + chance to retry or change their answers (Closes: #585609) + * asix: fix setting mac address for AX88772 (Closes: #587580) + * ipv6: Clamp reported valid_lft to a minimum of 0 (Closes: #514644) + * ipv6: Use interface max_desync_factor instead of static default + (Closes: #514646) + * Add stable 2.6.32.16: + - Fixes CVE-2010-1641, CVE-2010-1187, CVE-2010-1148, CVE-2010-1173 + and CVE-2010-2071 + - libata: disable ATAPI AN by default (Closes: #582737, #582903) + * Add drm changes from stable 2.6.33.6 + * [ia64, powerpc, sparc, x86] Enable KPROBES and KRETPROBES + (Closes: #584130) + * r8192s_usb: Fix various bugs: + - Check for skb allocation failure in 2 more places + - Update LED control code + - Clean up in case of an error in module initialisation + - Rename and remove proc directories correctly if an interface is + not called wlan0 (Closes: #582972) + - Correct device ID table (Closes: #584945, #587985) + * Add r8192u_usb driver + * Add linux-tools- package containing the perf tool + (Closes: #548715) + * Enable USB_SERIAL_TI (Closes: #588096) and USB_SERIAL_WHITEHEAT + + [ Aurelien Jarno ] + * [sh4] optimize runtime disabling of trapped I/O. + * [mips] backport mips/swarm: fix M3 TLB exception handler. + + [ Moritz Muehlenhoff ] + * Enable X86 board specific fixups for reboot (Closes: #536537) + + [ Martin Michlmayr ] + * OpenRD-Base: revert patch "allow SD/UART1 selection" since it + never made it upstream. + * ARM: update mach types. + * Add support for OpenRD-Ultimate. + * QNAP TS-11x/TS-21x: Add MPP36 (RAM) and MPP44 (board ID). + * Add support for the HP t5325 Thin Client. + * m25p80: Add support for Macronix 25L8005. + * Add framebuffer driver for XGI chipsets. + * [armel/kirkwood] Enable FB_XGI and FRAMEBUFFER_CONSOLE. + * [armel] Make MOUSE_PS2 modular. + * [armel] Build INPUT_UINPUT for all flavours. + * Update Marvell CESA (mv_cesa) driver (Closes: #585790): + - Invoke the user callback from a softirq context + - Remove compiler warning in mv_cesa driver + - Fix situation where the dest sglist is organized differently than... + - Fix situations where the src sglist spans more data than the reques... + - Enqueue generic async requests + - Rename a variable to a more suitable name + - Execute some code via function pointers rathr than direct calls + - Make the copy-back of data optional + - Support processing of data from previous requests + - Add sha1 and hmac(sha1) async hash drivers + * Update DisplayLink (udlfb) driver: + - add dynamic modeset support + - checkpatch cleanup + - reorganize function order + - pre-allocated urb list helpers + - clean up function naming + - Add functions to expose sysfs metrics and controls + - Rework startup and teardown to fix race conditions + - improved rendering performance + - Support for fbdev mmap clients (defio) + - explicit dependencies and warnings + - remove printk and small cleanup + * [armel/kirkwood] Enable FB_UDL. + * [armel] Disable PARPORT_PC (Closes: #588164) + + [ Bastian Blank ] + * Disable mISDN support for NETJet cards. The driver binds a generic PCI + bridge. + * Disable ISDN4Linux drivers. + + [ maximilian attems] + * Update openvz patch to 5fd638726a69. + + -- Ben Hutchings Mon, 05 Jul 2010 22:13:33 +0100 + +linux-2.6 (2.6.32-15) unstable; urgency=low + + [ Ben Hutchings ] + * [hppa] Ignore ABI change caused by disabling CONFIG_IDE_TIMINGS + * [powerpc] Fix unnecessary ABI change + + [ Bastian Blank ] + * xen: Fix crash in netback. + + -- Ben Hutchings Tue, 01 Jun 2010 01:31:05 +0100 + +linux-2.6 (2.6.32-14) unstable; urgency=low + + [ Ben Hutchings ] + * [ia64] Hardcode the output of the scripts under arch/ia64/scripts so + that we can build out-of-tree modules correctly (refresh and re-add + dropped patch) (Closes: #392592) + * vlan/macvlan: propagate transmission state to upper layers + * macvlan: add GRO bit to features mask + * macvlan: allow multiple driver backends + * Add macvtap driver (Closes: #568755) + * [ia64] Enable SGI SN support and mspec driver (Closes: #582224) + * iwlwifi: Disable QoS when connected to a non-QoS-capable AP + (Closes: #578262) + * [x86] Disable e_powersaver cpufreq driver as unsafe. It has already + been blacklisted by cpufrequtils. The acpi-cpufreq driver can be used + instead on some VIA C7 systems. (Closes: #566208) + * nouveau: Fix fbcon corruption with font width not divisible by 8 + (Closes: #583162) + * [amd64] ext4: Fix compat EXT4_IOC_ADD_GROUP (used by online resize) + * Install debug kernel image in /usr/lib/debug/boot (Closes: #582810) + * net: sysfs: Check for null ethtool_ops before getting speed/duplex + * Add stable 2.6.32.14: + - [hppa] Revert "parisc: Set PCI CLS early in boot.", erroneously + included in 2.6.32.13 causing FTBFS + - btrfs: check for read permission on src file in the clone ioctl + (CVE-2010-1636) + + [ Bastian Blank ] + * Update Xen patch. + - Fix checksum offloading in netback. (closes: #583366) + + [ maximilian attems] + * Add drm changes from stable 2.6.33.5: + - i915: Disable FBC on 915GM and 945GM (Closes: #582427) + * Update openvz patch to e7399c239fad. + + [ Martin Michlmayr ] + * QNAP TS-419P: Export GPIO indicating jumper setting of JP1. + + -- Ben Hutchings Sat, 29 May 2010 00:32:44 +0100 + +linux-2.6 (2.6.32-13) unstable; urgency=low + + [ Frederik Schueler ] + * sparc: Fix use of uid16_t and gid16_t in asm/stat.h + + [ Moritz Muehlenhoff ] + * Enable tomoyo (Closes: #562486) + + [ maximilian attems] + * backport KVM: x86: Extend KVM_SET_VCPU_EVENTS with selective updates. + (closes: #580652) + * KEYS: find_keyring_by_name() can gain access to a freed keyring. + CVE-2010-1437 + * hppa, sparc, powerpc disable BLK_DEV_CMD64X. + * topconfig enable PATA_CMD64X. (closes: #580799) + * x86: Disable CRYPTO_AES_NI_INTEL as it causes boot failures on T410. + * Add stable 2.6.32.13: + - [SCSI] Enable retries for SYNCRONIZE_CACHE commands to fix I/O error. + - [SCSI] Retry commands with UNIT_ATTENTION sense codes to fix ext3/ext4 + I/O errors. + - [SCSI] skip sense logging for some ATA PASS-THROUGH cdbs + (Closes: #578129) + - raid6: fix recovery performance regression. + - raid456: Enable error-correction on singly-degraded RAID6 + (Closes: #581392) + - r8169: fix broken register writes (Closes: #407217, #573007) + - V4L/DVB: budget: Fix crash in case of failure to attach frontend + (Closes: #575207) + * drm/edid: Fix 1024x768@85Hz. + + [ Ben Hutchings ] + * linux-base: Fix typo in disk relabelling code (Closes: #580467) + * linux-base: Don't quote boot device name in elilo.conf + (Closes: #580710; works-around: #581173) + * rtl8192su: Add IDs for several more devices (Closes: #580740) + * Add drm and sfc changes from stable 2.6.33.4 + * Improve workaround for HPAs (Host Protected Areas) overlapping + partitions, thanks to Tejun Heo: + - SCSI/libata: Disable HPA if it overlaps a partition (Closes: #572618) + - buffer: Make invalidate_bdev() drain all percpu LRU add caches + - block: Rescan partition tables after HPA is disabled + - libata: Disable HPA if it is only enabled after suspend + * V4L/DVB: budget: Select correct frontend drivers (Closes: #575223) + * 3c503: Fix IRQ probing (Closes: #566522) + * sis-agp: Remove SIS 760, handled by amd64-agp + * amd64-agp: Probe unknown AGP devices the right way (Closes: #548090) + + [ Aurelien Jarno ] + * mips/swarm: fix boot from IDE based media (Sebastian Andrzej Siewior) + (closes: #466977). + * backport mips/swarm: fix M3 TLB exception handler. + [This patch was actually reverted and never applied in version 2.6.32-13] + * backport MIPS FPU emulator: allow Cause bits of FCSR to be writeable + by ctc1. (closes: #580602). + * mips/swarm: enable adm* hwmon drivers. + * backport Input: Add support of Synaptics Clickpad device (Closes: #572842) + + [ Bastian Blank ] + * Fix symlinks in several packages. + * Update Xen patch. + * [amd64, i386/{686-bigmem,openvz-686,vserver-686-bigmem,xen-686}] + Build debugging symbols. (closes: #365349) + * Ignore crypto ABI changes. + + [ Martin Michlmayr ] + * Backport GuruPlug support. + + [ Christian Perrier ] + * Update debconf templates: + - English revised by the debian-l10n-english team as part of the Smith + review project (Closes: #578349) + - Vietnamese (Clytie Siddall) (Closes: #579234) + - German (Holger Wansing) (Closes: #579864) + - Russian (Yuri Kozlov) (Closes: #578994) + - Estonian (mihkel) (Closes: #579019) + - Czech (Michal Simunek) (Closes: #579268) + - Swedish (Martin Bagge) (Closes: #579308) + - French (David Prévot) (Closes: #579763) + - Spanish (Omar Campagne) (Closes: #580538) + - Portuguese (Américo Monteiro) (Closes: #577227) + - Japanese (Kenshi Muto) (Closes: #580855) + - Danish (Joe Hansen) (Closes: #580915) + - Czech (Michal Simunek) (Closes: #581399) + + -- maximilian attems Mon, 17 May 2010 15:29:27 +0200 + +linux-2.6 (2.6.32-12) unstable; urgency=low + + * The "Microwave Background" release + + [ Ben Hutchings ] + * Prepare debconf templates for translation. (closes: #576758) + * [x86] PCI/forcedeth: Disable MSI for MCP55 on P5N32-E SLI + (Closes: #552299) + * phylib: Fix typo in bcm63xx PHY driver table + * linux-base: Fix bugs and improve libata transition code: + - Fix scope of _system() function (Closes: #576925) + - Fix case where a file may wrongly be listed as automatically converted + (Closes: #577047) + - Check device IDs in mdadm.conf rather than assuming it needs manual + conversion + - Use vol_id if available since the version of blkid in lenny does not + support the output format we need (Closes: #576608) + - Fix missing line breaks in updated crypttab (Closes: #577735) + * i915: Stop trying to use ACPI lid status to determine LVDS connection + (Closes: #577724) + * forcedeth: Fix hardware version check for TX bug workaround + (Closes: #572201) + * rndis_host: Poll status channel before control channel (Closes: #576929) + * megaraid_sas: Fix copying of sense data for 32-bit management tools on + 64-bit kernel (Closes: #578398) + * Add ipheth driver for iPhone tethering + * virtio_net: Make delayed refill more reliable (Closes: #576838) + + [ maximilian attems] + * [ia64] Built in fbcon. + * Update openvz patch to c05f95fcb04e. (closes: #574598) + * Reenable nouveau autoloading. + * reiserfs: Fix permissions on .reiserfs_priv. CVE-2010-1146 + * libata,ata_piix: detect and clear spurious IRQs. + * libata/SCSI: fix locking around blk_abort_request(). + * topconfig enable NET_DROP_MONITOR. (closes: #578568) + * Add stable 2.6.32.12: + - ACPI: EC: Allow multibyte access to EC; fixes temperature monitoring + on some Dell laptops (Closes: #563313) + - [x86] KVM: disable paravirt mmu reporting (Closes: #573071) + - thinkpad-acpi: lock down video output state access (Closes: #565790) + - xfs update (closes: #579410) + * Add drm changes from stable 2.6.33.3: + - drm/radeon: R300 AD only has one quad pipe (Closes: #575681) + * libata: Fix accesses at LBA28 boundary (old bug, but nasty) (v2) + * Add EC path for Thinkpad X100. + * Bump ABI to 5, apply: + - hrtimer: Tune hrtimer_interrupt hang logic + * Add libata TRIM support. + * Backport radeon r800 modesetting support. + * drm/radeon/kms: further spread spectrum fixes. + * Backport p54 fixes. + * net: export device speed and duplex via sysfs. + * postrm: rm modules.softdep. (closes: #579175) + * Backport KVM: Xen PV-on-HVM guest support. + * Backport KVM: x86: Add KVM_GET/SET_VCPU_EVENTS. + * hugetlb: fix infinite loop in get_futex_key() when backed by huge pages + * ext4: Issue the discard operation *before* releasing the blocks to be + reused. + * libiscsi: regression: fix header digest errors. + * Revert module.c and module.h changes from -stable update. + + [ dann frazier ] + * Add DRBD backport + * sctp: Fix skb_over_panic resulting from multiple invalid parameter + errors (CVE-2010-1173) + * [CIFS] Allow null nd (as nfs server uses) on create (CVE-2010-1148) + * tipc: Fix oops on send prior to entering networked mode (CVE-2010-1187) + * [powerpc] KGDB: don't needlessly skip PAGE_USER test for Fsl booke + Note: KGDB is not currently enabled in debian builds (CVE-2010-1446) + + [ Aurelien Jarno ] + * [sh4] Add a sh7751r flavour. + * [mips/*malta] Remove options that are present in topconfig. + + [ Martin Michlmayr ] + * dns323-setup.c: fix WARN() when booting (Arnaud Patard). + * mips: enable PATA platform on SWARM and LITTLESUR (Sebastian Andrzej + Siewior). + * [mips/sb1-bcm91250a] Enable PATA_PLATFORM. + + [ Bastian Blank ] + * Update Xen patch. + + -- Ben Hutchings Sat, 01 May 2010 02:58:31 +0100 + +linux-2.6 (2.6.32-11) unstable; urgency=low + + [ Ben Hutchings ] + * [sparc] Provide io{read,write}{16,32}be() (Closes: #574421) + * Use libata-based drivers for most PATA controllers on all architectures + (previously applied only to x86) + * linux-base: Fix bugs and improve libata transition code: + - Handle duplicates in /etc/udev/rules.d/70-persistent-cd.rules + (Closes: #574630) + - Always attempt conversion if $DEBCONF_RECONFIGURE is set + - Never attempt conversion during a fresh installation (Closes: #576243) + - Convert disk IDs in crypttab (Closes: #575056) + - Redirect stdin and stdout of child processes to avoid interfering with + debconf (Closes: #574987) + - Report when hdparm.conf or mdadm.conf may need to be updated + (Closes: #576442) + - Where a device has both a UUID and a label, prefer to identify it by + UUID, consistent with fresh installations + - Do not use device labels including certain unsafe characters + (Closes: #576537) + * iwlwifi: Fix repeated warnings about tfds_in_queue (Closes: #574526) + * eeepc-laptop: Disable CPU speed control on 701 and 702 since it can + cause the system to hang (Closes: #559578) + * eeepc-laptop: Disable wireless hotplug on 1005HA, 1201N and 1005PE + since it disconnects the wrong device (Closes: #573607) + * linux-headers-*: Support postinst hooks in /etc/kernel/header_postinst.d, + thanks to Michael Gilbert (Closes: #569724) + * rt2860sta: Fix argument to linux_pci_unmap_single() (Closes: #575726) + * nouveau: nv50: Implement ctxprog/state generation + * phylib: Support PHY module autoloading (Closes: #553024) + * [x86] Add ramzswap driver (Closes: #573912) + + [ maximilian attems] + * [alpha, hppa] Disable oprofile as tracing code is unsupported here. + (closes: #574368) + * Update openvz patch to 14a9729fab67. (closes: #574598, #575189) + * [x86]: Disable FB_INTEL. (closes: #447575, #503766, #574401) + * ssb: do not read SPROM if it does not exist. + * ssb: Avoid null pointer dereference by aboves. + * Add stable 2.6.32.11. + - MIPS: Cleanup forgotten label_module_alloc in tlbex.c (Closes: #571305) + - ath5k: fix setup for CAB queue (closes: #576213) + - NFS: Prevent another deadlock in nfs_release_page() (Closes: #574348) + * Revert to keep ABI: + - hrtimer: Tune hrtimer_interrupt hang logic + + [ Moritz Muehlenhoff ] + * Add support for sh4 architecture, patch by Nobuhiro Iwamatsu + (Closes: #569034) + + [ Bastian Blank ] + * Update Xen patch. + - Fix free interrupt problem on uni-processor machines. + + [ Ian Campbell ] + * Include Xen hypervisor in reportbug "related to" list. + + -- maximilian attems Mon, 05 Apr 2010 20:31:15 +0200 + +linux-2.6 (2.6.32-10) unstable; urgency=low + + * The "Big Bang" release + + [ maximilian attems] + * tcp: fix ICMP-RTO war. + * Add stable 2.6.32.10. + - net/via-rhine: Fix scheduling while atomic bugs (closes: #549606) + - HID: remove TENX iBuddy from blacklist (Closes: #551312) + - USB: SIS USB2VGA DRIVER: support KAIREN's USB VGA adaptor + USB20SVGA-MB-PLUS (Closes: #565857) + * Bump ABI to 4. + * [x86] Add openvz flavour. + - adds ppp support (closes: #550975) + * Prevent nouveau from autoloading until xserver-xorg-video-nouveau lands. + + [ Moritz Muehlenhoff ] + * Enable CONFIG_KEYS_DEBUG_PROC_KEYS (Closes: #400932) + * Amend README.source with documentation on how to generate a + source tree with all patches applied (Closes: #509156) + * Document needed packages for preparatory packaging + steps (Closes: #548028) + + [ Aurelien Jarno ] + * Fix signal stack alignement on sparc64 (Closes: #569797) + + [ Bastian Blank ] + * Add support for Xen dom0 into its featureset. + (Closes: #499745, #503857, #504805, #505545, #506118, #507785, #509085, + #509733, #511963, #513835, #514511, #516223, #516374, #516635, #517048, + #519586, #520702, #522452, #524571, #524596, #526695, #533132, #533432, + #534880, #534978, #541227, #542299, #542614, #543489, #544525, #548345, + #554564, #554621, #559175, #559634) + * [alpha, amd64, i386, amd64, powerpc] Make all AGP driver built-in to + workaround race-condition between DRM and AGP. + + [ Ben Hutchings ] + * drm: Apply all changes from 2.6.33 and 2.6.33.1: + - Add nouveau driver + - i915: Fix disappearing mouse pointer (Closes: #551330) + - i915: Restore video overlay support (Closes: #560033) + - i915: Fix DDC on some systems by clearing BIOS GMBUS (Closes: #567747) + - radeon: Enable KMS support + * qla2xxx: Disable MSI/MSI-X on some chips or as selected by module parameter + (Closes: #572322) + - MSI is disabled on QLA24xx chips other than QLA2432 (MSI-X already was) + - MSI-X is disabled if qlx2enablemsix=2 + - MSI and MSI-X are disabled if qlx2enablemsix=0 + * [sparc64] Make prom entry spinlock NMI safe (Closes: #572442) + * firmware: Correct copyright information and add source for CIS files + * Fix first line of kernel-doc for a few functions so that they get valid + manual pages + * Remove /usr/include/drm from linux-libc-dev; let libdrm-dev provide it + again + * [x86] Enable rtl8192su driver using external firmware + * [x86] Use libata-based drivers for most PATA controllers (Closes: #444182): + - pata_triflex replaces triflex + - pata_atiixp replaces atiixp + - pata_ns87415 replaces ns87415 + - pata_sc1200 replaces sc1200 + - pata_cs5536 replaces cs5536 + - pata_amd replaces amd74xx + - pata_sis replaces sis5513 + - pata_rz1000 replaces rz1000 + - pata_efar replaces slc90e66 + - pata_pdc202xx_old replaces pdc202xx_old + - pata_pdc2027x replaces pdc202xx_new + - pata_cs5520 replaces cs5520 + - pata_cs5530 replaces cs5530 + - pata_cmd64x replaces cmd64x + - pata_sil680 replaces siimage + - pata_ali replaces alim15x3 + - pata_via replaces via82cxxx + - pata_serverworks replaces serverworks + - pata_artop replaces aec62xx + - pata_it821x replaces it821x + - ata_piix, pata_oldpiix, pata_mpiix mostly replace piix + - ata_generic, pata_ns87410, pata_netcell replace ide-pci-generic + * linux-base: Add libata transition script + * Hide sensitive information when including network configuration in bug + reports and running a different kernel version + + [ Martin Michlmayr ] + * Add some ARM patches from git: + - Update mach types + - eSATA SheevaPlug: basic board support + - eSATA SheevaPlug: configure SoC SATA interface + - eSATA SheevaPlug: correlate MPP to SD CD and SD WP + * [armel/kirkwood] Enable MACH_ESATA_SHEEVAPLUG. + + -- maximilian attems Tue, 16 Mar 2010 23:39:05 +0100 + +linux-2.6 (2.6.32-9) unstable; urgency=high + + [ Ben Hutchings ] + * Do not build obsolete lgs8gl5 driver + * [x86] Enable USB IP drivers (Closes: #568903) + * Ignore failure of lsusb when gathering information for bug reports + (Closes: #569725) + * macvlan: Add bridge, VEPA and private modes (Closes: #568756) + * [sparc] sunxvr500: Support Intergraph graphics chips again + (Closes: #508108) + * sfc: Apply fixes from 2.6.33 + * ath9k: Add support for AR2427 + * fs/exec.c: fix initial stack reservation (regression in 2.6.32.9) + + [ maximilian attems] + * Postinst don't refercence k-p related manpage. (closes: #542208) + * Postinst only write kernel-img.conf for palo boxes. + * Enable VT_HW_CONSOLE_BINDING for unbinding efifb. (closes: #569314) + * hwmon: Add driver for VIA CPU core temperature. + * wireless: report reasonable bitrate for MCS rates through wext. + * efifb: fix framebuffer handoff. (bugzilla.k.o #15151) + * Add stable 2.6.32.9: + - drm/i915: Fix DDC on some systems by clearing BIOS GMBUS setup. + (closes: #567747) + - futex: Handle futex value corruption gracefully. (CVE-2010-0623) + - futex_lock_pi() key refcnt fix. (CVE-2010-0623) + - Staging: fix rtl8187se compilation errors with mac80211. + (closes: #566726) + * r8169 patch for rx length check errors. (CVE-2009-4537) + * vgaarb: fix incorrect dereference of userspace pointer. + * Bump ABI to 3. + * drm/i915: give up on 8xx lid status. + * vgaarb: fix "target=default" passing. + * drm/radeon: block ability for userspace app to trash 0 page and beyond. + (closes: #550562) + + [ Bastian Blank ] + * Restrict access to sensitive SysRq keys by default. + * debian/rules.real: Install arch specific scripts. + + [ Moritz Muehlenhoff ] + * Set source format to 1.0 + + [ Martin Michlmayr ] + * [armel/iop32x] Enable ARCH_IQ80321 and ARCH_IQ31244 (Thanks Arnaud + Patard). + * [armel/kirkwood] Disable MTD_NAND_VERIFY_WRITE to avoid errors + with ubifs on OpenRD (Thanks Gert Doering) (Closes: #570407) + * OpenRD-Base: allow SD/UART1 selection (Closes: #571019) + * D-Link DNS-323 revision A1: implement power LED (Closes: 503172). + + -- maximilian attems Wed, 24 Feb 2010 17:06:27 +0100 + +linux-2.6 (2.6.32-8) unstable; urgency=high + + [ Bastian Blank ] + * Don't let default compiler flags escape into build. + + [ dann frazier ] + * KVM: PIT: control word is write-only (CVE-2010-0309) + * Fix potential crash with sys_move_pages (CVE-2010-0415) + + [ Ben Hutchings ] + * Build lgs8gxx driver along with cxusb (Closes: #568414) + * Revert incorrect change to powerpc clocksource setup (Closes: #568457) + * Add stable release 2.6.32.8: + - Remove TIF_ABI_PENDING bit from x86, sparc & powerpc, fixing + 32-bit userland/64-bit kernel breakage (Closes: #568416) + - connector: Delete buggy notification code. (CVE-2010-0410) + * [x86] KVM: Add IOPL/CPL checks to emulator, to prevent privilege + escalation within a guest. (CVE-2010-0298, CVE-2010-0306) + + [ Martin Michlmayr ] + * Implement power-off for D-Link DNS-323 rev B1 and fix the blinking + power LED (Erik Benada) (Closes: #503172). + + [ Aurelien Jarno ] + * Enable CONFIG_FB_CIRRUS and CONFIG_LOGO on 4kc-malta and 5kc-malta. + + -- Ben Hutchings Thu, 11 Feb 2010 02:17:17 +0000 + +linux-2.6 (2.6.32-7) unstable; urgency=low + + [ maximilian attems] + * [x86] Disable deprecated X86_CPU_DEBUG, causes boot failures. + * Newer Standards-Version 3.8.4 without changes. + + [ Ben Hutchings ] + * clocksource/events: Fix fallout of generic code changes + (Closes: #568030) + * Set ABI to 2. + + [ dann frazier ] + * Disable FUNCTION_TRACER due to performance/build issues. + (Closes: #568025) + * Split 'flush_old_exec' into two functions (CVE-2010-0307) + + -- dann frazier Wed, 03 Feb 2010 18:35:21 -0700 + +linux-2.6 (2.6.32-6) unstable; urgency=high + + [ Ben Hutchings ] + * Documentation/3c509: document ethtool support (Closes: #564743) + * Add MODULE_FIRMWARE declarations to several drivers that lacked them + * [x86] Update rt2860sta/rt2870sta firmware loader patch + - Accept 8K versions of rt2870.bin + - Fix hang on resume + * [x86] Enable rt3090sta using firmware loader + * Add stable release 2.6.32.4: + - untangle the do_mremap() mess (CVE-2010-0291) + - fasync: split 'fasync_helper()' into separate add/remove functions + (CVE-2009-4141) + - kernel/signal.c: fix kernel information leak with print-fatal-signals=1 + (CVE-2010-0003) + - netfilter: ebtables: enforce CAP_NET_ADMIN (CVE-2010-0007) + - quota: Fix dquot_transfer for filesystems different from ext4 + (Closes: #566532) + - audit: Fix memory management bugs (Closes: #562815) + + fix braindamage in audit_tree.c untag_chunk() + + fix more leaks in audit_tree.c tag_chunk() + - ipv6: skb_dst() can be NULL in ipv6_hop_jumbo(). (CVE-2010-0006) + - Fix DMA mapping for i915 driver (Closes: #558237, #567352) + + drm: remove address mask param for drm_pci_alloc() + + agp/intel-agp: Clear entire GTT on startup + * e1000,e1000e: Discard all fragments of received over-length packets + (CVE-2009-4536, CVE-2009-4538) + * Enable the '686' configuration options in '686-vserver' packages and + the '686-bigmem' configuration options in '686-bigmem-vserver' packages + (Closes: #566213) + * Add stable release 2.6.32.5: + - inotify: do not reuse watch descriptors (Closes: #561880) + - megaraid_sas: remove sysfs poll_mode_io world writeable permissions + (CVE-2009-3939) (Closes: #562975) + * Force distribution=UNRELEASED in debian/bin/test-patches so that it + works in released source packages + * Add stable release 2.6.32.6 + * postinst: Enable escape sequences in debconf notes (Closes: #566539) + * Add 3w-sas driver for LSI 3ware 9750 SAS controllers + * aufs2: Update to snapshot from 2010-01-25 (Closes: #567391) + * cdc_ether: Do not set link down initially; not all devices send link + change interrupts (Closes: #567689) + * Add stable release 2.6.32.7: + - clockevent: Don't remove broadcast device on halt or CPU hotplug + (Closes: #566547) + * sfc: Apply fixes from 2.6.33-rc{5,6} + * Set ABI to 1. + + [ Ian Campbell ] + * xen: Enable up to 32G of guest memory on i386. + + [ Julien Cristau ] + * drm/i915: disable powersave by default (closes: #564807) + + [ Bastian Blank ] + * Enable all NCP file system options. + * [amd64] Make AGP support again built-in to fullfill the not completely + documented dependency with GART IOMMU support. (closes: #561552) + * Enable dynamic minor allocations for ALSA, DVB and USB. (closes: #510593) + + [ maximilian attems ] + * [topconfig] set MEMORY_FAILURE, 9P_FSCACHE, INFINIBAND_IPOIB_CM + (closes: #565494), ITCO_VENDOR_SUPPORT (closes: #525232), PCIEASPM + (closes: #545417), HWPOISON_INJECT. + * Enable easier debugging of Power Managment code. (closes: #478315) + * Pass `DEB_MAINT_PARAMS' to hook scripts. (closes: #563161) + * Enable more mobile IPv6 needs. (closes: #528834) + + [ dann frazier ] + * [vserver] explicitly disable CFS_HARD_LIMITS + * Enable FUNCTION_TRACER and STACK_TRACER (Closes: #563847) + + -- Ben Hutchings Sun, 31 Jan 2010 23:09:28 +0000 + +linux-2.6 (2.6.32-5) unstable; urgency=low + + [ Ben Hutchings ] + * sfc: Apply fixes from 2.6.33-rc3 + * ath5k: Fix eeprom checksum check for custom sized eeproms + (Closes: #563136) + + [ maximilian attems ] + * topconfig unset USB_ISP1362_HCD FTBFS on armel and useless. + (closes: #564156) + * topconfig set PATA_ATP867X, PATA_RDC, SND_CS5535AUDIO, PM_RUNTIME, + ATA_VERBOSE_ERROR, RTC_DRV_WM831X, RTC_DRV_PCF2123, RTC_DRV_AB3100, + SND_HDA_PATCH_LOADER, DEVTMPFS (closes: #560040). + * [x86] set RTL8192E, TOPSTAR_LAPTOP, I2C_SCMI. + * Explicitly disable diverse staging drivers. + + -- Ben Hutchings Sun, 10 Jan 2010 03:22:23 +0000 + +linux-2.6 (2.6.32-4) unstable; urgency=low + + [ Ben Hutchings ] + * Correct comments referring to dpkg --print-installation-architecture + in maintainer scripts (Closes: #558077) + * modules: Skip empty sections when exporting section notes + (Closes: #563036) + * via-velocity: Give RX descriptors to the NIC later on open or MTU change + (Closes: #508527) + * dmfe/tulip: Let dmfe handle DM910x except for SPARC on-board chips + (Closes: #515533) + * Add stable release 2.6.32.3: + - ath5k: fix SWI calibration interrupt storm (may fix #563466) + - iwl3945: disable power save (Closes: #563693) + - rt2x00: Disable powersaving for rt61pci and rt2800pci (may fix #561087) + + [ maximilian attems ] + * topconfig set CAN_EMS_USB, BT_MRVL, BT_MRVL_SDIO, BE2ISCSI, SCSI_PMCRAID, + SCSI_BFA_FC, USB_GL860, USB_GSPCA_JEILINJ, I2C_SI4713, RADIO_SI4713, + RADIO_SI470X, DVB_USB_FRIIO, EDAC_I3200, SENSORS_TMP421, SENSORS_WM8350, + SBC_FITPC2_WATCHDOG, TOUCHSCREEN_MCS5000, UIO_PCI_GENERIC, KSZ8842, + KS8851, KS8851_MLL, MISDN_AVMFRITZ, MISDN_SPEEDFAX, MISDN_INFINEON, + MISDN_W6692, MISDN_NETJET, INPUT_WINBOND_CIR, BATTERY_DS2782, MFD_WM831X, + MFD_MC13783, MTD_SST25L, TOUCHSCREEN_USB_E2I, INPUT_WM831X_ON, + SENSORS_WM831X, WM831X_WATCHDOG, AB3100_OTP, REGULATOR_WM831X, + REGULATOR_MC13783, REGULATOR_AB3100, REGULATOR_TPS65023, + REGULATOR_TPS6507X, VIDEO_SAA7164, DVB_PT1, BACKLIGHT_WM831X, + SND_HDA_CODEC_CIRRUS, USB_ISP1362_HCD, LEDS_WM831X_STATUS, + MTD_ONENAND_GENERIC, B43_SDIO, B43_PHY_LP, KEYBOARD_ADP5588, QT2160, + KEYBOARD_LM8323, KEYBOARD_MAX7359, KEYBOARD_OPENCORES, MOUSE_PS2_SENTELIC, + WM831X_POWER. + * [x86] set ACPI_POWER_METER, ACPI_PROCESSOR_AGGREGATOR, SFI, + EDAC_DECODE_MCE. + * Set MOUSE_PS2_ELANTECH for various EeePc. (closes: #522920) + + [ dann frazier ] + * Fix vserver build on ia64 (Closes: #563356) + * Fix vserver build on s390 (Closes: #563355) + + [ Martin Michlmayr ] + * Report model information on armel when filing a bug. + * ARM: Add an earlyprintk debug console (Catalin Marinas) + * [armel] Enable EARLY_PRINTK. + + -- Ben Hutchings Thu, 07 Jan 2010 03:33:39 +0000 + +linux-2.6 (2.6.32-3) unstable; urgency=high + + * The "Not a Suitable Christmas Present" release + + [ Martin Michlmayr ] + * [armel/orion5x] Build MTD_CFI_AMDSTD into the kernel again since + it's needed on the D-Link DNS-323 (thanks Manuel Roeder). + (Closes: #562205) + + [ dann frazier ] + * Input: ALPS - add support for touchpads with 4-directional button + * Input: ALPS - add interleaved protocol support (Dell E6x00 series) + (Closes: #561589) + * Re-enable vserver + + [ Ben Hutchings ] + * sfc: Apply changes from 2.6.33-rc1 adding support for SFC9000 family + * Add stable release 2.6.32.2: + - KVM: x86 emulator: limit instructions to 15 bytes (CVE-2009-4031) + - hfs: fix a potential buffer overflow (CVE-2009-4020) + * radeon: fix crtc vblank update for r600 (regression in 2.6.32.2) + * ia64: Include header in ; fixes + FTBFS + * r8169: Allow RTL8168D v1 and v2 to be used without firmware files + (Closes: #561309) + * Enable vmxnet3 (VMware guest paravirt net driver) (Closes: #562046) + + -- Ben Hutchings Thu, 24 Dec 2009 04:28:55 +0000 + +linux-2.6 (2.6.32-2) unstable; urgency=high + + [ Bastian Blank ] + * Allow memory hot-add and -remove if possible. + * Enable USB suspend. + * Enable kernel samepage merging. (closes: #558200) + * [s390] + - Enable SECCOMP. + - Enable z/VM Watchdog Timer. + + [ Moritz Muehlenhoff ] + * Disable cryptoloop (Closes: #559755) + * Initial work on a README.source file as suggested by current policy + + [ Ben Hutchings ] + * aufs2: Update to snapshot from 2009-12-05 + * postinst: Fix failure paths in check for missing firmware + (Closes: #560263) + * atl1c: Fix system hang when link drops (Closes: #559577) + * netfilter: xtables: fix conntrack match v1 ipt-save output + (Closes: #556587) + + [ Aurelien Jarno ] + * Add support for the sparc64 architecture. + + [ dann frazier ] + * Add stable release 2.6.32.1: + - ext4: Fix double-free of blocks with EXT4_IOC_MOVE_EXT (CVE-2009-4306) + - ext4: avoid divide by zero when trying to mount a corrupted file system + (CVE-2009-4307) + - ext4: Fix insufficient checks in EXT4_IOC_MOVE_EXT (CVE-2009-4131) + + -- Ben Hutchings Wed, 16 Dec 2009 21:42:49 +0000 + +linux-kbuild-2.6 (2.6.32-1) unstable; urgency=low + + [ Ben Hutchings ] + * New upstream version. (closes: #560090) + * Include new script module-common.lds, thanks to Zoran Dzelajlija. + + [ Bastian Blank ] + * Move contents of linux-kbuild package to /usr/lib. + + -- Bastian Blank Fri, 11 Dec 2009 16:16:12 +0100 + +linux-2.6 (2.6.32-1) unstable; urgency=low + + * New upstream release candidate: + - Fixes wifi with rt73usb (Closes: #555640) + + [ Martin Michlmayr ] + * [armel/kirkwood] Turn on USB_SUSPEND (on the request of a SheevaPlug + user). + * [mips/4kc-malta, mips/5kc-malta] Compile USB as a module rather than + into the kernel. + + [ Bastian Blank ] + * Enable PCI_MSI. + * [powerpc] Properly enable Apple PMU battery. + * [mips/mipsel] Drop remaining OSS drivers. + * [powerpc] Enable PCIe support. + * Move contents of linux-support package to /usr/share. + * Make linux-patch package depend against python. + * Use python-support instead of python-central. + * Always enable software watchdog support. + * Always enable complete USB mass storage support. + * [amd64, powerpc, sparc] Build USB support as module. + * [amd64] Build AGP support as module. + * Always enable dummy net driver support. + * Drop linux-tree package, it have no users left. + + [ Ben Hutchings ] + * Re-enable accidentally omitted drivers, thanks to Uwe Kleine-König + (Closes: #558011): + - Atheros wireless drivers (ar9170, ath5k, ath9k) + - TI wl12xx wireless drivers (wl1251_spi, wl1251_sdio and wl1271 + replace wl12xx) + - Silicon Labs Si470x FM Radio Receiver driver (radio-usb-si470x) + * Add 'removable' option to the mmc module. Setting this to 0 causes + MMC/SD cards to be assumed non-removable, and filesystems on them + will remain mounted over a suspend/resume cycle. (Closes: #504391) + * Add MODULE_FIRMWARE declarations to many drivers that lacked them, so + that missing firmware will be reported automatically during upgrades + * atl1e: Remove broken implementation of TSO for TCP/IPv6 + (Closes: #558426) and allow other hardware offloads to be disabled in + case they are also buggy + * usbnet: Set link down initially for drivers that update link state + (Closes: #444043) + * aufs2: Update to snapshot from 2009-11-29 + * i915: Enable auto-loading even though CONFIG_DRM_I915_KMS is not set + + [ dann frazier ] + * mac80211 (CVE-2009-4026, CVE-2009-4027): + - fix two remote exploits + - fix spurious delBA handling + + -- Bastian Blank Sun, 06 Dec 2009 18:17:39 +0100 + +linux-2.6 (2.6.32~rc8-1~experimental.1) unstable; urgency=low + + [ Ben Hutchings ] + * New upstream release candidate. + - slip: Clean up create and destroy (Closes: #408635) + - signal: Fix alternate signal stack check (Closes: #544905) + * README.Debian: Add brief information about building specific binary + packages (Closes: #546182) + * lgs8gxx: Remove firmware for lgs8g75 and use request_firmware() to + load it + * r8169: Remove firmware for RTL8168D v1 and v2 and use + request_firmware() to load it + * DocBook: Fix build breakage + * Hide WPA authentication parameters and comments when including network + configuration in bug reports + + [ Bastian Blank ] + * [mips] Don't force EMBEDDED on. + * [sparc] Don't builtin Ext2 support. + * Enable PERF_EVENTS, EVENT_PROFILE, CRYPTO_VMAC, CRYPTO_GHASH, TREE_RCU. + * Use SLUB as default SLAB allocator. + + [ Martin Michlmayr ] + * [armel] Make some options modular (since there's no reason for them + to be built in): FTL, NFTL, MTD_CFI_AMDSTD, MTD_CFI_STAA. + * [armel/orion5x, armel/kirkwood] Enable ISDN (requested by Markus + Krebs). + * Add patch from Albin Tonnerre to add HAVE_KERNEL_LZMA to arm. + * [armel] Enable KERNEL_LZMA, i.e. compress kernels with lzma to get + much better compression. + * [armel] Re-enable options that were turned off recently because of + size constraints: DEBUG_USER, DEBUG_KERNEL, BOOT_TRACER, ARM_UNWIND, + BLK_DEV_IO_TRACE and SECURITY_SELINUX. + + [ maximilian attems ] + * Simplify postinst nuke reverse symlinks handling. Patch from + Sebastian Andrzej Siewior . + + -- Bastian Blank Sat, 21 Nov 2009 21:41:45 +0100 + +linux-2.6 (2.6.31-2) unstable; urgency=low + + [ Martin Michlmayr ] + * [armel/orion5x, armel/kirkwood] Make sure VGA_CONSOLE is disabled, + otherwise the kernel won't boot. + * [armel/kirkwood] Enable CRYPTO_DEV_MV_CESA (Closes: #552270). + * [armel/kirkwood, armel/orion5x] Enable ORION_WATCHDOG (the + name of the config variable changed). + * Add OpenRD-Client support again. + * Add QNAP TS-41x support. + * [armel/orion5x, armel/kirkwood] Enable ISDN (requested by Markus + Krebs). + * Fix a build failure of the ISDN hisax elsa driver on ARM. + * mips: fix build of vmlinux.lds (Closes: #552422). + + [ Ben Hutchings ] + * postinst: Accept absolute paths in modules.dep generated by the + lenny version of module-init-tools (Closes: #552610) + * aufs2: Remove incorrect static assertion (Closes: #554120) + * Add stable release 2.6.31.6: + - fs: pipe.c null pointer dereference (CVE-2009-3547) + - KEYS: get_instantiation_keyring() should inc the keyring refcount + in all cases (CVE-2009-3624) + - netlink: fix typo in initialization (CVE-2009-3612) + * Undo PCMCIA ABI change in 2.6.31.6 + * Hide wireless keys and wake-on-LAN password when including network + configuration in bug reports + * Add Geode LX/NX to list of 686-class processors + + [ Bastian Blank ] + * [powerpc] Remove SMP warning from PowerMac cpufreq (Closes: #554124) + + [ maximilian Attems ] + * Really fix making a debian kernel installable without kernel-img.conf. + Thanks for patch to Sebastian Andrzej Siewior . + (closes: #555093). + + -- Ben Hutchings Sun, 15 Nov 2009 18:47:49 +0000 + +linux-kbuild-2.6 (2.6.31.2-1) unstable; urgency=low + + * Upload to unstable. + + -- Ben Hutchings Sun, 25 Oct 2009 18:38:44 +0000 + +linux-2.6 (2.6.31-1) unstable; urgency=low + + [ Ben Hutchings ] + * Include aufs2, marked as staging (Closes: #541828) + * Include speakup modules under staging + * Add stable release 2.6.31.5 + * [x86_64] Enable NUMA_EMU (Closes: #541389) + + [ Martin Michlmayr ] + * CPUidle: always return with interrupts enabled. + * [armel/orion5x, armel/kirkwood] Enable FB since some Kirkwood + machines have a VGA chip (e.g. OpenRD-Client) and because it's + possible to use a DisplayLink USB virtual graphics adapter. + + [ maximilian attems ] + * [alpha] Disable SND_MIXART, causes gcc ICE. + * [x86] Enable modular X86_MCE_INJECT. + * [x86_32] Set LSM_MMAP_MIN_ADDR to zero to unbreak dosemu and 16-bit Wine, + ia64 and x86_64 to 65536 otherwise default to 32768. + * Unset UEVENT_HELPER_PATH to save some boot cycles. + + [ Bastian Blank ] + * Set ABI to 1. + * Enable Apple PMU battery. (closes: #544264) + + -- Bastian Blank Sat, 24 Oct 2009 19:17:30 +0200 + +linux-kbuild-2.6 (2.6.31.2-1~experimental.1) experimental; urgency=low + + [ Bastian Blank ] + * New upstream version. + + [ Ben Hutchings ] + * Include new script gcc-x86_32-has-stack-protector.sh. + * Add myself to Uploaders. + * New upstream version (2.6.31.2). + + -- Ben Hutchings Sat, 17 Oct 2009 23:05:27 +0100 + +linux-2.6 (2.6.31-1~experimental.2) experimental; urgency=low + + [ Ben Hutchings ] + * Include more information in bug reports: + - Model information + - Firmware package status + - Network configuration and status (optional) + - USB device list + * nfs: Avoid overrun when copying client IP address string + (Closes: #549002) + * Add support for DEB_BUILD_OPTIONS=parallel=N (Closes: #458560) + * sfc: Fix initial link state + * Improve package descriptions + - Clarify the differences between i386 flavours (Closes: #414690) + - Simplify wording of the description template + * Add stable release 2.6.31.3 + * Remove /usr/include/scsi from linux-libc-dev; these headers are + provided by libc6-dev (Closes: #550130) + * Remove dummy dot-files from linux-libc-dev + * hfsplus: Refuse to mount volumes larger than 2TB, which may otherwise + be corrupted (Closes: #550010) + * Add stable release 2.6.31.4 + - x86: Don't leak 64-bit kernel register values to 32-bit processes + (CVE-2009-2910) + - appletalk: Fix skb leak when ipddp interface is not loaded + (CVE-2009-2903) + + [ maximilian attems ] + * Add stable release 2.6.31.2 + - ax25: Fix signed comparison in the sockopt handler (CVE-2009-2909) + - PM / yenta: Fix cardbus suspend/resume regression (Closes: #522828) + + [ dann frazier ] + * [sparc] build zImage by default, fixes build + * [ia64] Fix call to elilo in postinst + + -- maximilian attems Mon, 12 Oct 2009 23:54:52 +0200 + +linux-2.6 (2.6.31-1~experimental.1) experimental; urgency=low + + * New upstream release. + - Support for W83627DHG-P (closes: #535646). + - Restore MAC address and MTU change operations on Orinoco and others + (Closes: #536455) + - Remove incorrect ACPI blacklisting of ASUS P4B266 mainboards + (Closes: #525625) + - atl1c fixes for Eee PC model 1005HA-H. (closes: #538410) + - parisc64-smp boot fix on J5600. (closes: #539369) + - parisc: Fix GOT overflow during module load on 64bit kernel + (closes: #539378) + - xfs: fix freeing of inodes not yet added to the inode cache + (Closes: #527517) + - IPv6: add "disable" module parameter support to ipv6.ko. + (closes: #542470) + - IPv6: avoid wraparound for expired preferred lifetime + (Closes: #518710) + - Fixes lockups with older dual-CPU machines (Closes: #542551) + - x86, pat: Allow ISA memory range uncacheable mapping requests + (Closes: #538159) + - drm/i915: Hook connector to encoder during load detection + (Closes: #522358) + - module: workaround duplicate section names (Closes: #545229) + - b43: Add fw capabilities (Closes: #533357) + - procfs: Fix idle time in uptime (Closes: #545981) + - e1000, e1000e, igb, ixgb, ixgbe: Fix initial link state + (Closes: #546041) + - CIFS: Handle port= mount option correctly (Closes: #524142) + - i915: Prevent screen flickering in X11 (Closes: #545377) + - hppa: Ensure broadcast tlb purge runs single threaded + (Closes: #539215) + + [ maximilian attems ] + * [powerpc64] Enable modular RTC_DRV_PS3, PS3_VRAM. + (Closes: #528694) + * Set new NETFILTER_XT_MATCH_OSF, FIREWIRE_NET, SND_CTXFI, USB_XHCI_HCD, + IEEE802154, CAN_DEV, EEPROM_MAX6875, DM_LOG_USERSPACE, DM_MULTIPATH_QL, + DM_MULTIPATH_ST, LIBERTAS_SPI, CAN_SJA1000, CAN_SJA1000_PLATFORM, + CAN_EMS_PCI, CAN_KVASER_PCI, CB710_CORE, CNIC, RT2800USB, + USB_NET_INT51X1, SND_LX6464ES, BLK_DEV_OSD, SCSI_BNX2_ISCSI, IWM, + IEEE802154_DRIVERS, TOUCHSCREEN_EETI, TOUCHSCREEN_W90X900, + BATTERY_MAX17040, SENSORS_TMP401, REGULATOR_USERSPACE_CONSUMER, + REGULATOR_MAX1586, REGULATOR_LP3971, MEDIA_SUPPORT, CUSE, + WL12XX, PPS, AB3100_CORE, SND_HDA_INPUT_JACK,MMC_SDHCI_PLTFM, + MMC_CB710, MMC_VIA_SDMMC, LEDS_LP3944, RTC_DRV_RX8025, + SMARTJOYPLUS_FF, USB_CDC_PHONET, USB_GSPCA_SN9C20X, MOUSE_SYNAPTICS_I2C, + PCIEAER_INJECT. + * Disable v4l1 ov511 and quickcam_messenger drivers. + * [x86_64] Enable HW_RANDOM_VIA. + * [x86] Keep divers staging stuff enabled. + * [x86] Enable RT3070, COMEDI_PCMCIA_DRIVERS, ACERHDF, EDAC_AMD64, + XEN_DEV_EVTCHN, XEN_SYS_HYPERVISOR, PERF_COUNTERS, + CC_STACKPROTECTOR, DEFAULT_MMAP_MIN_ADDR=65536. + * rtl8192su: remove firmware and disable. + * Newer Standards-Version 3.8.2 without changes. + * Allow install in chroot without do_initrd check for piuparts. + * Cleanup Maintainer scripts from ancient pre linux-2.6 assumptions. + (Also closes: #536333) + * Disable DEVKMEM. + * [ppc, sparc] Enable EFI_PARTITION. (closes: #540486) + * Disable old USB_DEVICE_CLASS. (Closes: #510279) + * Drop yaird initramfs generator support. + * Add stable release 2.6.31.1. + * Enable PREEMPT_VOLUNTARY. + + [ Ben Hutchings ] + * mga: remove unnecessary change from firmware-loading patch + * cxgb3: remove PHY firmware and use request_firmware() to load it + * Add firmware-linux-free package containing DFSG-free firmware + * av7110: include firmware source and binary + * snd-cs46xx: reenable using external firmware (closes: #464197, + but note that Debian cannot currently distribute the firmware), + thanks to Kalle Olavi Niemitalo + * ib_ipath: remove firmware for QLogic IBA7220 and use + request_firmware() to load it + * dvb-usb-af9005: remove initialisation script derived from Windows + driver and use request_firmware() to extract it at run-time + (closes: #494119) + * Add warning on upgrade to a new upstream version where the system + appears to be missing necessary firmware files (closes: #541702) + * qla1280: Release spinlock when requesting firmware (closes: #543244) + * r128: Add test for initialisation to all ioctls that require it + (closes: #541630) + * rt{2860,2870,3070}sta: Use existing CCITT CRC implementation on + firmware rather than adding an equivalent variant of ITU-T CRC + * rd: Build as a module since we do not require initrd support + * x86: Fix crash in text_poke_early() on 486-class processors + (Closes: #515982) + * intel-agp: Fix cache flushing on i8xx chipsets, avoiding graphics + corruption and GPU lock-ups (Closes: #541307) + * Generate architecture-qualified package relations as needed for + flavours that exist for multiple architectures (Closes: #278729) + * Prompt bug reporters to run the kernel version they're reporting on + or otherwise record boot messages + * Include PCI device list in bug reports even if the running kernel + doesn't match + + [ Martin Michlmayr ] + * [armel/orion5x, armel/kirkwood] Set GPIO_SYSFS=y since these + platforms have been converted to GPIOLIB. + * [armel/orion5x, armel/kirkwood] Disable MARVELL_PHY since it may + lead to conflicts with the built-in Ethernet. + * Add features from 2.6.32: + - crypto: mv_cesa - Add support for Orion5X crypto engine + * [armel/orion5x] Enable CRYPTO_DEV_MV_CESA. + * Disable SYS_HAS_EARLY_PRINTK on SGI IP22 to work around a hang + during bootup (Closes: #507557) + * [armel] Enable BPQETHER (on the request of Iain Young) and some + other AX25 drivers. + + [ Bastian Blank ] + * Disable staging drivers by default. + * Force all bugs against images to be reported to linux-2.6. + (closes: #539176) + * [arm] Remove old arm architecture. + * Use kernel architecture for libc-dev build. + + [ Moritz Muehlenhoff ] + * Fix Linus' name in copyright file (Closes: #530620) + * More verbose explanation on difference between Alpha flavour + (Closes: #497230) + * Add Vcs-Svn and Vcs-Browser stanzas pointing to the SVN branch + used for development in unstable. There are other branches + used for experimental (trunk), oldstable and stable, but Vcs-* + doesn't yet provide the ability to distinguish branches in a + more fine-grained manner. (Closes: #471495) + * Update Standards-Version to 3.8.3, no changes needed + * Disable PROM console support (Closes: #525958) + * Make the description of linux-support a little more verbose + (Closes: #400825) + * This upload fixes the following security issues: + - CVE-2009-3290 (2.6.31) + - CVE-2009-3288 (2.6.31.1) + - CVE-2009-3280 (2.6.31.1) + - CVE-2009-3234 (2.6.31.1) + - CVE-2009-3043 (2.6.31) + - CVE-2009-3002 (2.6.31) + - CVE-2009-3001 (2.6.31) + - CVE-2009-2844 (2.6.31) + - CVE-2009-2695 (2.6.31) + - CVE-2009-2691 (2.6.31) + + [ dann frazier ] + * n_tty: Fix echo race + * [ia64] Stop disabling CONFIG_HOTPLUG_CPU, which was blocking + CONFIG_KEXEC from being enabled + * [hppa] Disable CONFIG_AB3100_CORE, it fails to build + + -- maximilian attems Sun, 04 Oct 2009 20:27:05 +0200 + +linux-2.6 (2.6.30-8) unstable; urgency=low + + [ Martin Michlmayr ] + * Disable SYS_HAS_EARLY_PRINTK on SGI IP22 to work around a hang + during bootup (Closes: #507557) + * module: workaround duplicate section names to fix a panic on + boot on hppa (Closes: #545229). + * Add stable release 2.6.30.8. + * [armel/kirkwood] Add Marvell OpenRD-Client support (Dhaval Vasa). + Thanks Stefan Kaltenbrunner. + + -- Bastian Blank Fri, 25 Sep 2009 23:47:56 +0200 + +linux-2.6 (2.6.30-7) unstable; urgency=low + + [ Martin Michlmayr ] + * [armel/kirkwood] Enable eSATA on QNAP TS-219P (John Holland). + * [armel/kirkwood] Marvell OpenRD-Base board support (Dhaval Vasa). + * [armel/kirkwood] Initialise SATA for OpenRD-Base (Ron Lee). + * [armel/kirkwood] Enable SATA_AHCI. + + [ Ben Hutchings ] + * qla1280: Release spinlock when requesting firmware (closes: #543244) + * r128: Add test for initialisation to all ioctls that require it + (closes: #541630) + * [i386] Fix crash in text_poke_early() on 486-class processors + (Closes: #515982) + * intel-agp: Fix cache flushing on i8xx chipsets, avoiding graphics + corruption and GPU lock-ups (Closes: #541307) + * [i386] Allow ISA memory range uncacheable mapping requests + (Closes: #538159) + * Fix idle time in /proc/uptime (Closes: #545981) + * e1000, e1000e, igb, ixgb, ixgbe, sfc: Fix initial link state + (Closes: #546041) + + [ Bastian Blank ] + * Add stable release 2.6.30.5. + - drm/i915: Hook connector to encoder during load detection + (fixes tv/vga detect) (Closes: #522358) + * Add stable release 2.6.30.6. + - x86: Fix lock-up on SMP Pentium Pro, Pentium 2, Pentium 3, and + Athlon MP systems (Closes: #542551) + - NET: Fix information leaks from getsockname() (CVE-2009-3001, + CVE-2009-3002) + - iwl3945/rfkill: Reenable radio when hardware switch turned back on + (Closes: #530554) + * Bump ABI to 2. + * Apply missing fixes: + - block: fix sg SG_DXFER_TO_FROM_DEV regression. + - sched_rt: Fix overload bug on rt group scheduling. + * Add stable release 2.6.30.7. + * [sparc] Disable PROM console. (closes: #525958) + + -- Bastian Blank Wed, 16 Sep 2009 17:23:13 +0200 + +linux-2.6 (2.6.30-6) unstable; urgency=high + + [ Bastian Blank ] + * Set default low address space protection to default value. + + [ dann frazier ] + * Make sock_sendpage() use kernel_sendpage() (CVE-2009-2692) + * flat: fix uninitialized ptr with shared libs + * [parisc] isa-eeprom - Fix loff_t usage + * do_sigaltstack: avoid copying 'stack_t' as a structure to user space + * posix-timers: Fix oops in clock_nanosleep() with CLOCK_MONOTONIC_RAW + + -- Bastian Blank Sat, 15 Aug 2009 15:50:02 +0200 + +linux-2.6 (2.6.30-5) unstable; urgency=high + + [ maximilian attems ] + * Add stable release 2.6.30.4. + - cifs: fix regression with O_EXCL creates and optimize away lookup + (closes: #536426) + - ecryptfs: check tag 11 literal data buffer size (CVE-2009-2406) + - ecryptfs: check tag 3 package encrypted size (CVE-2009-2407) + * Ignore nf_conntrack ABI change. + * Revert to keep ABI: + - block: fix sg SG_DXFER_TO_FROM_DEV regression. + - sched_rt: Fix overload bug on rt group scheduling. + * [hppa]: Ignore any ABI (broke on 2.6.30.2). + + -- maximilian attems Mon, 03 Aug 2009 12:08:56 +0200 + +linux-2.6 (2.6.30-4) unstable; urgency=low + + [ Bastian Blank ] + * Add stable release 2.6.30.2. + * Fix pci access in x86 startup code. (closes: #537783) + * Ignore ABI changes. + * Include all plattform and mach specific headers on arm. + + [ maximilian attems ] + * Add stable release 2.6.30.3. + + -- Bastian Blank Thu, 30 Jul 2009 11:55:11 +0200 + +linux-2.6 (2.6.30-3) unstable; urgency=low + + [ Bastian Blank ] + * Build-Depend against cpio. (closes: #536196) + + [ Martin Michlmayr ] + * [arm] Export __cpu_flush_dcache_page. + + [ Aurelien Jarno ] + * [ia64] Fix asm/fpu.h includes. + + [ dann frazier ] + * Fix NULL pointer dereference in tun_chr_pool() (CVE-2009-1897) + * personality: fix PER_CLEAR_ON_SETID (CVE-2009-1895) + * Add -fno-delete-null-pointer-checks to CFLAGS + + -- Bastian Blank Sat, 18 Jul 2009 10:00:01 +0200 + +linux-2.6 (2.6.30-2) unstable; urgency=low + + [ dann frazier ] + * [powerpc] Use generic rtc (closes: #535354) + * [parisc] + - ensure broadcast tlb purge runs single threaded + - fix ldcw inline assembler + (closes: #535844) + + [ Bastian Blank ] + * Add stable release 2.6.30.1: + - KVM: x86: check for cr3 validity in ioctl_set_sregs (CVE-2009-2287) + - ALSA: intel8x0 - Fix PCM position craziness (closes: #533780) + - ide-cd: prevent null pointer deref via cdrom_newpc_intr (closes: #535342) + * Ignore ABI changes. + + [ maximilian attems ] + * [alpha] Add upstream smp buildfix. + * [parisc] Disable vxge and niu. + + -- Bastian Blank Tue, 07 Jul 2009 14:45:43 +0200 + +linux-kbuild-2.6 (2.6.30-1) unstable; urgency=low + + * New upstream version. + + -- Bastian Blank Wed, 17 Jun 2009 16:49:57 +0200 + +linux-2.6 (2.6.30-1) unstable; urgency=low + + * New upstream release. + - radeonfb: suspend/resume for ATI Mobility Radeon RV350. + (closes: #506964) + - tcp: fix MSG_PEEK race check (closes: #513695) + - e100 fixes (closes: #527056) + - mos7840: fix miscalculation of minor numbers (closes: #498293) + - reiserfs update (closes: #531804) + - bluetooth stack suspend/resume (closes: #508426, #529785) + - e1000e: Remove mutex_trylock and associated WARN on failure + (closes: #524699) + + [ maximilian attems ] + * [sparc] Enable BLK_DEV_CRYPTOLOOP. (closes: #521829) + * Enable PATA_JMICRON instead of legacy BLK_DEV_JMICRON. + (closes: #431500, #458493) + * Set new NILFS2, AT76C50X_USB, MWL8K, P54_SPI, AR9170_USB, + NETFILTER_XT_MATCH_CLUSTER, RDS, SCSI_MPT2SAS, SCSI_OSD_INITIATOR, + ETHOC, IGBVF, VXGE, TOUCHSCREEN_AD7877, SENSORS_ATK0110, + NETFILTER_XT_TARGET_LED, 3C359, HW_RANDOM_TIMERIOMEM, SENSORS_G760A, + SENSORS_LTC4215, SENSORS_LM95241, USB_GSPCA_MR97310A, USB_GSPCA_SQ905, + USB_GSPCA_SQ905C, USB_PWC_INPUT_EVDEV, DVB_USB_CE6230, SND_INDIGOIOX, + SND_INDIGODJX, USB_SERIAL_CP210X, USB_SERIAL_QUALCOMM, + USB_SERIAL_SYMBOL, ISL29003, SERIAL_MAX3100, VIDEO_HDPVR, VIDEO_CX231XX, + DRAGONRISE_FF, LEDS_LP5521, LEDS_DAC124S085, LEDS_BD2802, + UIO_AEC, CRYPTO_ZLIB, REGULATOR_FIXED_VOLTAGE, NOP_USB_XCEIV, + POHMELFS, FSCACHE, CACHEFILES, EXOFS, NFS_FSCACHE, AFS_FSCACHE, + MTD_NAND_NANDSIM, STRIP_ASM_SYMS, FCOE_FNIC, USB_NET_CDC_EEM, + PCI_IOV, ASYNC_TX_DMA, ROMFS_BACKED_BY_BOTH, DETECT_HUNG_TASK. + * [amd64, i386] Set new DELL_WMI, EDAC_AMD8131, EDAC_AMD8111, X86_PAT, DMAR, + X86_CPU_DEBUG, CRYPTO_AES_NI_INTEL, X86_X2APIC. + * Newer Standards-Version 3.8.1 without changes. + * xfs: fix freeing memory in xfs_getbmap(). + + [ Ben Hutchings ] + * Remove firmware from drivers/staging (closes: #521553) + - make rt2860sta and rt2870sta use request_firmware(), + thanks to Darren Salt + * Remove some sourceless firmware not included in Debian kernel images + + [ Martin Michlmayr ] + * [mipsel/r5k-cobalt] Enable SCSI_SYM53C8XX_2 (closes: #526836). + * [arm/iop32x, arm/ixp4xx, arm/orion5x] Turn off BOOT_TRACER, + BLK_DEV_IO_TRACE, CONTEXT_SWITCH_TRACER, ARM_UNWIND and + SECURITY_SELINUX because of size constraints. + * [mips/sb1-bcm91250a] There is a platform PATA driver for SWARM IDE + these days, so disable IDE and build in ATA, SCSI and BLK_DEV_SD. + * [mips/sb1-bcm91250a, mips/sb1a-bcm91480b] Compile in SB1250_MAC and + BROADCOM_PHY. + * [mips/r4k-ip22] Enable NET_ISA and various ISA network modules on + the request of Damian Dimmich since they might be useful on the + SGI Indigo2. + * Add patches from git.marvell.com: + - alternative copy_to_user: more precise fallback threshold + - lower overhead with alternative copy_to_user for small copies + - Kirkwood: Add CPU idle driver + - Kirkwood: clock gating for unused peripherals + + [ Aurelien Jarno ] + * [mips(el)/sb1-bcm91250a] Set CONFIG_SCSI_AIC7XXX=y, it is needed + on the build daemons. + * topconfig set CONFIG_RD_GZIP, CONFIG_RD_BZIP2, CONFIG_RD_LZMA. + + [ Bastian Blank ] + * [i386] Disable PentiumPro errata workaround. + * [i386] Enable support for big SMP systems. + * Disable OSS. + * [s390] Use Sparse Memory layout. + * [amd64, i386, powerpc, sparc] Make IPv6 support built-in. + * Centralize Sound core options. + * Centralize Power Management options. + * Centralize CPU Frequency scaling options. + * [sparc] Enable CPU Frequency scaling. + * Enable Network console logging support. + * [s390/s390x-tape] Add image. + * [s390/s390, s390/s390-tape] Remove images. + * [i386/486] Enable High Memory Support. + * [i386] Allocate pagetables from High Memory. + * [amd64, i386] Write protect kernel read-only data structures. + * [amd64, i386] Make kernel relocatable. + * Move images and headers into kernel section. + + [ dann frazier ] + * Enable bnx2x, using firmware-split patches from net-next and mirroring + the per-subarch config settings used for bnx2 + + -- Bastian Blank Sun, 14 Jun 2009 11:45:08 +0200 + +linux-2.6 (2.6.29-5) unstable; urgency=low + + [ dann frazier ] + * [ia64] Backport rtc-efi driver from mainline + + [ maximilian attems ] + * qla1280: Fix off-by-some error in firmware loading. (closes: #527265) + + [ Martin Michlmayr ] + * Broadcom SB: fix locking in set_irq_affinity. + * mmc: load mvsdio automatically when it's a platform device. + * mmc: mvsdio: ignore high speed timing requests from the core + * USB: ftdi_sio: add vendor/product id for the Marvell SheevaPlug. + + [ Bastian Blank ] + * Add stable release 2.6.29.3: + - ath9k: Fix FIF_BCN_PRBRESP_PROMISC handling + - tracing: x86, mmiotrace: fix range test + - sched: account system time properly + - rndis_wlan: fix initialization order for workqueue&workers + - mm: fix Committed_AS underflow on large NR_CPUS environment + - Ignore madvise(MADV_WILLNEED) for hugetlbfs-backed regions + - clockevents: prevent endless loop in tick_handle_periodic() + - intel-iommu: Avoid panic() for DRHD at address zero. + - intel-iommu: Fix oops in device_to_iommu() when devices not found. + - intel-iommu: Fix device-to-iommu mapping for PCI-PCI bridges. + - cs5536: define dma_sff_read_status() method + - proc: avoid information leaks to non-privileged processes + - ath5k: fix buffer overrun in rate debug code + - mv643xx_eth: OOM handling fixes + - mv643xx_eth: 64bit mib counter read fix + - check_unsafe_exec: s/lock_task_sighand/rcu_read_lock/ + - do_execve() must not clear fs->in_exec if it was set by another thread + - check_unsafe_exec() doesn't care about signal handlers sharing + - New locking/refcounting for fs_struct + - Take fs_struct handling to new file (fs/fs_struct.c) + - Get rid of bumping fs_struct refcount in pivot_root(2) + - Kill unsharing fs_struct in __set_personality() + - Annotate struct fs_struct's usage count restriction + - fix setuid sometimes wouldn't + - fix setuid sometimes doesn't + - compat_do_execve should unshare_files + - powerpc: Sanitize stack pointer in signal handling code + - ACPI: Revert conflicting workaround for BIOS w/ mangled PRT entries + - USB: serial: fix lifetime and locking problems + - ptrace: ptrace_attach: fix the usage of ->cred_exec_mutex + - kbuild: fix Module.markers permission error under cygwin + - pagemap: require aligned-length, non-null reads of /proc/pid/pagemap + - drm/i915: allow tiled front buffers on 965+ + - bio: fix memcpy corruption in bio_copy_user_iov() + - PCI quirk: disable MSI on VIA VT3364 chipsets + - ASoC: Fix offset of freqmode in WM8580 PLL configuration + - x86/PCI: don't call e820_all_mapped with -1 in the mmconfig case + - x86-64: fix FPU corruption with signals and preemption + - drm/i915: add support for G41 chipset + - unreached code in selinux_ip_postroute_iptables_compat() (CVE-2009-1184) + - PCI: fix incorrect mask of PM No_Soft_Reset bit + - exit_notify: kill the wrong capable(CAP_KILL) check (CVE-2009-1337) + - crypto: ixp4xx - Fix handling of chained sg buffers + - block: include empty disks in /proc/diskstats + - b44: Use kernel DMA addresses for the kernel DMA API + - virtio-rng: Remove false BUG for spurious callbacks + - USB: Unusual Device support for Gold MP3 Player Energy + - KVM: x86: release time_page on vcpu destruction + - KVM: Fix overlapping check for memory slots + - KVM: MMU: disable global page optimization + - KVM: MMU: Fix off-by-one calculating large page count + - mac80211: fix basic rate bitmap calculation + - ALSA: us122l: add snd_us122l_free() + - thinkpad-acpi: fix LED blinking through timer trigger + - b43: Refresh RX poison on buffer recycling + - b43: Poison RX buffers + - mac80211: Fix bug in getting rx status for frames pending in reorder + buffer + - forcedeth: Fix resume from hibernation regression. + * Ignore ABI change. + + [ Jurij Smakov ] + * [sparc] Fix build + + -- Bastian Blank Sun, 17 May 2009 12:45:13 +0200 + +linux-2.6 (2.6.29-4) unstable; urgency=low + + [ maximilian attems ] + * drm/i915: allow tiled front buffers on 965+. + + [ Martin Michlmayr ] + * Extend erase timeout in M25P80 SPI Flash driver (Peter Horton). + * Add driver for GMT G760A fan speed PWM controller chip. + * [arm/orion5x] Enable SENSORS_G760A. + * Add patches from git.marvell.com: + - allow for alternative __copy_to_user/__clear_user implementations + - alternative copy_to_user/clear_user implementation copy_user + * [arm/orion5x, armel/kirkwood] Enable UACCESS_WITH_MEMCPY. + * [MMC] give Sandisk/Kingston SDHC cards some slack before the SWITCH + command. + + [ dann frazier ] + * [parisc] Fix macro expansion in atomic.h fixing PHONET compilation issue + * [parisc] reenable PHONET + * Btrfs: fix __ucmpdi2 compile bug on 32 bit builds + + [ Stephen R. Marenka ] + * [m68k] Add 2.6.29 patches. + * [m68k] Enable RTC for aranym (2.6.29 solution). + + [ Bastian Blank ] + * Add stable release 2.6.29.2: + - Bonding: fix zero address hole bug in arp_ip_target list + - skge: fix occasional BUG during MTU change + - scsi: mpt: suppress debugobjects warning + - hugetlbfs: return negative error code for bad mount option + - NFS: Fix the XDR iovec calculation in nfs3_xdr_setaclargs + - gso: Fix support for linear packets + - agp: zero pages before sending to userspace + - virtio: fix suspend when using virtio_balloon + - Revert "console ASCII glyph 1:1 mapping" + - Input: gameport - fix attach driver code + - x86, PAT: Remove page granularity tracking for vm_insert_pfn maps + - KVM: is_long_mode() should check for EFER.LMA + - KVM: VMX: Update necessary state when guest enters long mode + - KVM: fix kvm_vm_ioctl_deassign_device + - KVM: MMU: handle compound pages in kvm_is_mmio_pfn + - KVM: Reset PIT irq injection logic when the PIT IRQ is unmasked + - KVM: Interrupt mask notifiers for ioapic + - KVM: Add CONFIG_HAVE_KVM_IRQCHIP + - KVM: Fix missing smp tlb flush in invlpg + - USB: usb-storage: augment unusual_devs entry for Simple Tech/Datafab + - USB: fix oops in cdc-wdm in case of malformed descriptors + - USB: ftdi_sio: add vendor/project id for JETI specbos 1201 spectrometer + - usb gadget: fix ethernet link reports to ethtool + - x86: disable X86_PTRACE_BTS for now + - SCSI: sg: fix q->queue_lock on scsi_error_handler path + - SCSI: sg: avoid blk_put_request/blk_rq_unmap_user in interrupt + - SCSI: sg: fix races with ioctl(SG_IO) + - SCSI: sg: fix races during device removal + - mm: pass correct mm when growing stack + - pata_hpt37x: fix HPT370 DMA timeouts + - hpt366: fix HPT370 DMA timeouts + - powerpc: Fix data-corrupting bug in __futex_atomic_op + - ALSA: hda - Fix the cmd cache keys for amp verbs + - sfc: Match calls to netif_napi_add() and netif_napi_del() + - tty: Fix leak in ti-usb + - spi: spi_write_then_read() bugfixes + - add some long-missing capabilities to fs_mask + - hrtimer: fix rq->lock inversion (again) + - x86: fix broken irq migration logic while cleaning up multiple vectors + - sched: do not count frozen tasks toward load + - dm kcopyd: fix callback race + - dm kcopyd: prepare for callback race fix + - posix-timers: fix RLIMIT_CPU && setitimer(CPUCLOCK_PROF) + - posix-timers: fix RLIMIT_CPU && fork() + - posixtimers, sched: Fix posix clock monotonicity + - cap_prctl: don't set error to 0 at 'no_change' + - SCSI: libiscsi: fix iscsi pool error path + - SCSI: libiscsi: fix iscsi pool error path + - sparc64: Fix bug in ("sparc64: Flush TLB before releasing pages.") + - ALSA: hda - add missing comma in ad1884_slave_vols + - splice: fix deadlock in splicing to file + - netfilter: {ip, ip6, arp}_tables: fix incorrect loop detection + - kprobes: Fix locking imbalance in kretprobes + - acer-wmi: Blacklist Acer Aspire One + - crypto: shash - Fix unaligned calculation with short length + - net/netrom: Fix socket locking + - af_rose/x25: Sanity check the maximum user frame size + - dm table: fix upgrade mode race + - dm: path selector use module refcount directly + - dm target: use module refcount directly + - dm snapshot: avoid having two exceptions for the same chunk + - dm snapshot: avoid dropping lock in __find_pending_exception + - dm snapshot: refactor __find_pending_exception + - dm io: make sync_io uninterruptible + - dm raid1: switch read_record from kmalloc to slab to save memory + - vfs: skip I_CLEAR state inodes + - dm: preserve bi_io_vec when resubmitting bios + - ixgbe: Fix potential memory leak/driver panic issue while setting up Tx & + Rx ring parameters + - mm: do_xip_mapping_read: fix length calculation + - mm: define a UNIQUE value for AS_UNEVICTABLE flag + - sysctl: fix suid_dumpable and lease-break-time sysctls + - cpumask: fix slab corruption caused by alloc_cpumask_var_node() + - ide-atapi: start DMA after issuing a packet command + - ide: drivers/ide/ide-atapi.c needs + - V4L/DVB (10943): cx88: Prevent general protection fault on rmmod + - r8169: Reset IntrStatus after chip reset + - md/raid1 - don't assume newly allocated bvecs are initialised. + - SCSI: sg: fix iovec bugs introduced by the block layer conversion + - drm/i915: fix TV mode setting in property change + - drm/i915: only set TV mode when any property changed + - drm: Use pgprot_writecombine in GEM GTT mapping to get the right bits for + !PAT. + - drm/i915: check for -EINVAL from vm_insert_pfn + - drm/i915: Check for dev->primary->master before dereference. + - drm/i915: Sync crt hotplug detection with intel video driver + - drm/i915: Read the right SDVO register when detecting SVDO/HDMI. + - drm/i915: Change DCC tiling detection case to cover only mobile parts. + - dock: fix dereference after kfree() + - ACPI: cap off P-state transition latency from buggy BIOSes + - x86, setup: mark %esi as clobbered in E820 BIOS call + - tracing/core: fix early free of cpumasks + - rt2x00: Fix SLAB corruption during rmmod + - ext4: fix locking typo in mballoc which could cause soft lockup hangs + - ext4: fix typo which causes a memory leak on error path + - MIPS: Compat: Zero upper 32-bit of offset_high and offset_low. + - PCI/x86: detect host bridge config space size w/o using quirks + - ide: Fix code dealing with sleeping devices in do_ide_request() + - fbdev: fix info->lock deadlock in fbcon_event_notify() + - fbmem: fix fb_info->lock and mm->mmap_sem circular locking dependency + - security/smack: fix oops when setting a size 0 SMACK64 xattr + * Bump ABI to 2. + * [sparc] Make the kernels again 64bit. (closes: #525926) + + -- Bastian Blank Sun, 03 May 2009 09:38:42 +0200 + +linux-2.6 (2.6.29-3) unstable; urgency=low + + [ maximilian attems ] + * [powerpc] Pipe mkimage postinst call to stderr for debconf. + Thanks Jordi Mallach for the patch. (closes: #518231) + * [parisc] Disable PHONET. + * [sparc] Disable BTRFS. + + [ Bastian Blank ] + * [alpha] Fix location of kernel image. + * Add source link to headers packages. (closes: #523726) + + [ Martin Michlmayr ] + * Add some sata_mv fixes for Kirkwood from Marvell: + - use new sata phy register settings for new devices + - increate the IORDY timeout for the soc controllers + + -- maximilian attems Fri, 17 Apr 2009 10:36:03 +0200 + +linux-2.6 (2.6.29-2) unstable; urgency=low + + [ Martin Michlmayr ] + * [arm/ixp4xx] Build in LEDS_TRIGGER_TIMER (closes: #521141). + * [mips*/4kc-malta, mips*/5kc-malta] Build in RTC_DRV_CMOS. + + [ maximilian attems ] + * linux-libc-dev: Bump versioned replaces libdrm-dev. + * parisc: hardcode gcc-4.3 usage. + * Postrm cleanup new module-init-tools 3.7 files. + + [ Bastian Blank ] + * Install all needed Makefiles into common headers package. + (closes: #521472) + * Add stable release 2.6.29.1: + - V4L: v4l2-common: remove incorrect MODULE test + - sparc64: Fix reset hangs on Niagara systems. + - sparc64: Flush TLB before releasing pages. + - sparc64: Fix MM refcount check in smp_flush_tlb_pending(). + - KVM: MMU: Fix another largepage memory leak + - cfg80211: fix incorrect assumption on last_request for 11d + - lguest: fix spurious BUG_ON() on invalid guest stack. + - lguest: wire up pte_update/pte_update_defer + - VM, x86, PAT: Change is_linear_pfn_mapping to not use vm_pgoff + - x86: mtrr: don't modify RdDram/WrDram bits of fixed MTRRs + - x86: ptrace, bts: fix an unreachable statement + - x86: fix 64k corruption-check + - x86, uv: fix cpumask iterator in uv_bau_init() + - x86, PAT, PCI: Change vma prot in pci_mmap to reflect inherited prot + - Add a missing unlock_kernel() in raw_open() + - fuse: fix fuse_file_lseek returning with lock held + - ARM: 5435/1: fix compile warning in sanity_check_meminfo() + - ARM: twl4030 - leak fix + - ARM: fix leak in iop13xx/pci + - ARM: cumana: Fix a long standing bogon + - ARM: 5428/1: Module relocation update for R_ARM_V4BX + - ARM: pxa: fix overlay being un-necessarily initialized on pxa25x + - DVB: firedtv: FireDTV S2 problems with tuning solved + - cfg80211: force last_request to be set for OLD_REG if regdom is EU + - CIFS: Fix memory overwrite when saving nativeFileSystem field during mount + - ath5k: warn and correct rate for unknown hw rate indexes + - ath5k: disable MIB interrupts + - b43: fix b43_plcp_get_bitrate_idx_ofdm return type + - ath9k: fix dma mapping leak of rx buffer upon rmmod + - ath5k: use spin_lock_irqsave for beacon lock + - cifs: fix buffer format byte on NT Rename/hardlink + - ath9k: downgrade xmit queue full message to xmit debug + - KVM: SVM: set accessed bit for VMCB segment selectors + - KVM: VMX: Don't allow uninhibited access to EFER on i386 + - USB: add quirk to avoid config and interface strings + - USB: gadget: fix rndis regression + - USB: usb-storage: increase max_sectors for tape drives + - USB: fix USB_STORAGE_CYPRESS_ATACB + - USB: EHCI: add software retry for transaction errors + - xfrm: spin_lock() should be spin_unlock() in xfrm_state.c + - ipv6: Plug sk_buff leak in ipv6_rcv (net/ipv6/ip6_input.c) + - GRO: Disable GRO on legacy netif_rx path (closes: #521691) + - bridge: bad error handling when adding invalid ether address + - dnet: drivers/net/dnet.c needs + - udp: Wrong locking code in udp seq_file infrastructure + - netfilter: nf_conntrack_tcp: fix unaligned memory access in tcp_sack + + [ dann frazier ] + * bnx2: correct firmware revisions (closes: #522049) + * [mips] Zero upper 32-bits of compat llseek (closes: #521016) + + -- Bastian Blank Sat, 04 Apr 2009 15:13:33 +0200 + +linux-kbuild-2.6 (2.6.29-1) unstable; urgency=low + + * New upstream version. + * Autogenerate list of supported options in modpost. (closes: #518961) + - Build-depend against python. + * Use debhelper compat level 7. + + -- Bastian Blank Thu, 26 Mar 2009 12:54:47 +0100 + +linux-2.6 (2.6.29-1) unstable; urgency=low + + * New upstream release + - tg3 use request_firmware and firmware nuked. + - acenic use request_firmware and firmware nuked. + - e100 use request_firmware and firmware nuked. (closes: #494308) + - cassini use request_firmware and firmware nuked. + - starfire use request_firmware and firmware nuked. (closes: #501152) + - cxgb3 use request_firmware and firmware nuked. + - NR_CPUS setting no longer affects size of modules. (closes: #516709) + - orinoco: use KERN_DEBUG for link status messages. (closes: #447549) + - [CIFS] Fix oops in cifs_strfromUCS_le mounting to servers which do + not specify their OS. (closes: #463402) + - fixes conflict between and on mips + (closes: #519761) + + [ maximilian attems ] + * topconfig set new NET_NS, NET_SCH_DRR, NET_CLS_CGROUP, LIB80211, + SCSI_CXGB3_ISCSI, NATIONAL_PHY, STE10XP, LSI_ET1011C_PHY, BTRFS_FS, + SQUASHFS, PCI_STUB, WIMAX, MTD_LPDDR, EEPROM_AT24, EEPROM_AT25, + EEPROM_LEGACY, BLK_DEV_IT8172, SMSC9420, WIMAX_I2400M_USB, + WIMAX_I2400M_SDIO, MISDN_HFCUSB, SENSORS_ADT7475, SENSORS_LTC4245, + RADIO_TEA5764, SND_HDA_CODEC_INTELHDMI, RT2860, RT2870, RTL8187SE, + LIBFC, FCOE, ATL1C, JOYSTICK_WALKERA0701, TOUCHSCREEN_WACOM_W8001, + TOUCHSCREEN_TSC2007, W1_SLAVE_DS2431, WM8350_POWER, SOC_CAMERA_MT9T031, + SOC_CAMERA_TW9910, SOC_CAMERA_OV772X, USB_STV06XX, USB_GSPCA_OV534, + DVB_LGDT3304, WM8350_WATCHDOG, SMSC_SCH311X_WDT, SND_HRTIMER, + SND_HDA_RECONFIG, GREENASIA_FF, USB_SERIAL_SIEMENS_MPI, + USB_SERIAL_OPTICON, LEDS_ALIX2, LEDS_WM8350, OCFS2_FS_POSIX_ACL, + BTRFS_FS_POSIX_ACL, ATM_SOLOS, MFD_PCF50633, PCF50633_ADC, PCF50633_GPIO, + REGULATOR_PCF50633, DVB_S921, EDAC_I5400, RTC_DRV_PCF50633, + INPUT_PCF50633_PMU, CHARGER_PCF50633, DEVPTS_MULTIPLE_INSTANCES, + SCHED_OMIT_FRAME_POINTER, DCB, IXGBE_DCB, SFC_MTD, BE2NET, DNET. + * topconfig enable SND_HDA_HWDEP for sound debugging purpose. + * topconfig enable USB_HIDDEV (closes: #517771) + * [x86] set DELL_LAPTOP, COMEDI, X86_PTRACE_BTS, XENFS, XEN_COMPAT_XENFS, + X86_REROUTE_FOR_BROKEN_BOOT_IRQS, OPTIMIZE_INLINING. + * [x86] unset DRM_I915_KMS due to upgrade path from Lenny override with + modeset module param. + * temp.image.plain/preinst: Consistent output. + * [x86_64] set SPARSE_IRQ, NUMA_MIGRATE_IRQ_DESC, TREE_RCU. + * [x86_32] set BLK_DEV_CS5536. + * [powerpc] set PHANTOM, HP_ILO, MV643XX_ETH, MOUSE_BCM5974, VIRTUALIZATION. + * topconfig unset legacy SCSI_PROC_FS, PCMCIA_IOCTL, ACPI_PROCFS_POWER, + ACPI_PROC_EVENT. + + [ Bastian Blank ] + * Use external source directory for all builds. + * Use external source directory for all header packages. + * Use dh_prep. + * Update copyright file. + * [s390/s390] Disable BTRFS. + * [sparc] Use sparc as kernel architecture. + * Update kconfig report changes patch. + * [s390] Enable KVM. + * Use debhelper compat level 7. + + [ Martin Michlmayr ] + * [mips/r4k-ip22] Build in RTC_DRV_DS1286. + * [mips/r5k-ip32] Build in RTC_DRV_CMOS (Closes: #516775). + * [arm/versatile, arm/iop32x, arm/ixp4xx] Make LLC2 modular. + * [arm, mips, mipsel] Make MII modular. + * [arm/ixp4xx] Make IXP4XX_WATCHDOG modular. + * topconfig: Disable NET_DSA since this hardware is special purpose and + the option cannot be made modular at the moment and bloats the kernel + image too much. + * [arm, armel] Enable various V4L USB devices. (Closes: #518582) + * [arm/orion5x] Build the SENSORS_LM75 module since it's needed on the + D-Link DNS-323. + * [arm/iop32x, arm/ixp4xx, arm/orion5x] Enable INPUT_TOUCHSCREEN. + * [arm/iop32x, arm/ixp4xx, arm/orion5x] Enable INPUT_JOYDEV, GAMEPORT + and INPUT_JOYSTICK (Closes: #520433). + * [arm/iop32x, arm/ixp4xx, arm/orion5x] Add a size check to ensure that + the kernel will fit in flash. + * Add patches from git.marvell.com to improve Kirkwood support: + - make gpio /input/output validation separate + - MPP initialization code + - SDIO driver for Marvell SoCs + - SDIO driver registration for DB6281 and RD6281 + - register internal devices in a common place + - Marvell SheevaPlug support + - SheevaPlug USB Power Enable setup + - SheevaPlug LED support + - Hook up I2C on Kirkwood + - Add support for QNAP TS-119/TS-219 Turbo NAS + * [armel/kirkwood] Add an image for Marvell's Kirkwood platform. + + [ Ben Hutchings ] + * Remove firmware from drivers and make them use request_firmware(): + - mga (closes: #502666) + - qla1280 (closes: #502667) + - r128 (closes: #494007) + - radeon (closes: #494009) + - tehuti (closes: #501153) + - typhoon (closes: #502669) + + -- Bastian Blank Tue, 24 Mar 2009 14:32:11 +0100 + +linux-kbuild-2.6 (2.6.28-1) unstable; urgency=low + + * New upstream version. + + -- Bastian Blank Sun, 22 Feb 2009 13:45:39 +0100 + +linux-2.6 (2.6.28-1) unstable; urgency=low + + * New upstream release + - new btusb. (closes: #505184) + - iwlagn driver for Intel Wifi Link 5100 and 5300. (closes: #501157) + - drm git branch vblank-rework merged. (closes: #456219) + - netfilter.h got in.h include. (closes: #487103) + - netlink errno propageted. (closes: #489340) + - agp g41 support (closes: #513228) + - Includes atl2 driver (Closes: #500065) + - Fixes loading of video module on Samsung systems + (Closes: #475319, #495697) + - Fix rf_kill handling of iwl3945 driver (Closes: #503688) + - Fix adjtimex frequency offset (Closes: #432877) + - Fix oopses with Canon PIXMA MP150 (Closes: #487725) + - Fix excessive interrrupts with compiz (Closes: #456219) + - dsp56k: use request_firmware and firmware nuked (closes: #494010) + - dabusb: use request_firmware and firmware nuked (closes: #502663) + - kaweth: use request_firmware and firmware nuked (closes: #502665) + + [ maximilian attems ] + * Reenable new Juju firewire stack. + * topconfig set ATH9K, IWL5000, IP_NF_SECURITY, IP6_NF_SECURITY, + BRIDGE_EBT_IP6, BT_HCIBTUSB, TOUCHSCREEN_INEXIO, TOUCHSCREEN_TOUCHIT213, + VIRTIO_CONSOLE, VIDEO_ZORAN_ZR36060, USB_VIDEO_CLASS_INPUT_EVDEV, + USB_GSPCA, USB_S2255, OCFS2_FS_STATS, OMFS_FS, CRYPTO_RMD128, + CRYPTO_RMD160, CRYPTO_RMD256, CRYPTO_RMD320, VLAN_8021Q_GVRP, HP_WMI, + COMPAL_LAPTOP, SCSI_DH, SCSI_DH_RDAC, SCSI_DH_HP_SW, SCSI_DH_EMC, + SCSI_DH_ALUA, MAC80211_HWSIM, USB_HSO, BLK_DEV_INTEGRITY, SGI_XP, SGI_GRU, + TLAN, ATM_IA, ATM_FORE200E, MISDN, I2C_HELPER_AUTO, I2C_ISCH, + I2C_NFORCE2_S4985, AT24, SENSORS_AD7414, SENSORS_ADCXX, + SOC_CAMERA_PLATFORM, VIDEO_SH_MOBILE_CEU, DVB_USB_DW2102, DVB_USB_ANYSEE, + DVB_SIANO_SMS1XXX, DVB_DRX397XD, MMC_SDHCI_PCI (closes: #507150), + MMC_SDRICOH_CS (closes: #509979), EDAC_I5100, RTC_DRV_M41T94, + RTC_DRV_DS1305, UBIFS, EXT4 (closes: #512266), CGROUP_FREEZER, + NETFILTER_TPROXY, NETFILTER_XT_TARGET_TPROXY, NETFILTER_XT_MATCH_RECENT, + NETFILTER_XT_MATCH_SOCKET, NET_ACT_SKBEDIT, PHONET, NET_9P_RDMA, ATL2, JME, + ENIC, MLX4_EN, USB_NET_SMSC95XX, I7300_IDLE, NET_SCH_MULTIQ, ICS932S401, + PANASONIC_LAPTOP, QLGE, LIBERTAS_THINFIRM, LIBERTAS_THINFIRM_USB, + INPUT_CM109, W1_SLAVE_BQ27000, SENSORS_ADT7462, SENSORS_MAX1111, + SENSORS_LIS3LV02D, MFD_WM8400, MFD_WM8350_I2C, SOC_CAMERA_MT9M111, + USB_M5602, USB_GSPCA_CONEX, USB_GSPCA_ETOMS, USB_GSPCA_FINEPIX, + USB_GSPCA_MARS, USB_GSPCA_OV519, USB_GSPCA_PAC207, USB_GSPCA_PAC7311, + USB_GSPCA_SONIXB, USB_GSPCA_SONIXJ, USB_GSPCA_SPCA500, USB_GSPCA_SPCA501, + USB_GSPCA_SPCA505, USB_GSPCA_SPCA506, USB_GSPCA_SPCA508, USB_GSPCA_SPCA561, + USB_GSPCA_STK014, USB_GSPCA_SUNPLUS, USB_GSPCA_T613, USB_GSPCA_TV8532, + USB_GSPCA_VC032X, USB_GSPCA_ZC3XX, C2PORT, C2PORT_DURAMAR_2150, + W83697UG_WDT, USB_MR800, DVB_USB_CINERGY_T2, DVB_USB_DTV5100, + DVB_USB_AF9015, DVB_DM1105, DVB_LGS8GL5, DVB_DUMMY_FE, + SND_HDA_CODEC_NVHDMI, SND_USB_US122L, USB_VST, LEDS_PCA9532, LEDS_HP_DISK, + LEDS_PCA955X, LEDS_TRIGGER_BACKLIGHT, EDAC_X38, RTC_DRV_RX8581, + RTC_DRV_DS1390, RTC_DRV_DS3234, RTC_DRV_DS1286, RTC_DRV_M48T35, + RTC_DRV_BQ4802, RTC_DRV_WM8350, UNEVICTABLE_LRU, MAC80211_RC_MINSTREL, + BATTERY_BQ27x00, REGULATOR, REGULATOR_BQ24022, REGULATOR_WM8350, + REGULATOR_WM8400, FB_VIA, FB_METRONOME, FB_MB862XX, UIO_SERCOS3, + CORE_DUMP_DEFAULT_ELF_HEADERS, NET_DSA, NET_DSA_MV88E6060, + NET_DSA_MV88E6131, NET_DSA_MV88E6123_61_65, IT87_WDT, + BACKLIGHT_MBP_NVIDIA, SND_HDA_INPUT_BEEP, USB_WUSB, USB_TMC, IDE_GD, + IDE_GD_ATA, IDE_GD_ATAPI, PCMCIA_IBMTR, USB_EMI62, USB_EMI26, USB_SEVSEG, + UWB, UWB_WLP, UWB_I1480U, UWB_I1480U_WLP, CRYPTO_FIPS, ANSI_CPRNG, + CRC_T10DIF, STAGING, ET131X, CRYPTO_ANSI_CPRNG, PRISM2_USB, HID_COMPAT, + SYSCTL_SYSCALL_CHECK, BOOT_TRACER. + * [x86] set MOUSE_BCM5974, X86_RESERVE_LOW_64K, OPROFILE_IBS, + MICROCODE_INTEL, MICROCODE_AMD, X86_VERBOSE_BOOTUP, MTRR_SANITIZER, + CRYPTO_CRC32C_INTEL, STRICT_DEVMEM. + * [x86_64] set AMD_IOMMU, INTR_REMAP. + * [x86_32] set TOUCHSCREEN_HTCPEN, MOUSE_PS2_OLPC. + * Add stable releases 2.6.28.1-6. + * Turn off SYSFS_DEPRECATED* for newer udev and proper /sys/. + * linux-libc-dev: Add versioned replaces libdrm-dev. (closes: #513604) + * topconfig: Enable MACVLAN. (closes: #504611) + * [ppc] BAYCOM_PAR, BAYCOM_EPP. + * [x86_64] set NR_CPUS to 512. (closes: #491309) + * [686-bigmem] set modular XEN_FBDEV_FRONTEND. + * Newer Standards-Version 3.8.0 without changes. + * Use update-initramfs for initramfs-tools. + * Fix preinst and postinst call to not use deprecated mkinitramfs-kpkg + interfaces. + + [ Martin Michlmayr ] + * [mips/r4k-ip22, mips/sb1-bcm91250a] Don't build in ISO9660. + * [mipsel/r5k-cobalt] Enable INPUT_COBALT_BTNS. + * [mipsel/r5k-cobalt] Enable the new Cobalt LCD driver (FB_COBALT). + * [mips/r4k-ip22] Enable the new ALSA sound driver (SND_SGI_HAL2). + * [arm/iop32x, arm/ixp4xx] Don't build in KEYBOARD_ATKBD, MOUSE_PS2, + SERIO, JFFS2_FS, and CRAMFS. + * [arm/iop32x, arm/ixp4xx] Unset DEBUG_KERNEL so the kernel will + fit in flash. + * [arm/orion5x] Unset FIXED_PHY to work around a clash with fixed + mdio bus and mv643xx_eth. + * Migrate arm, armel, mips and mipsel away from kernel-package. + + [ Ian Campbell ] + * [x86]: Enable Xen guest support in amd64 flavour. (closes: #495590) + + [ dann frazier ] + * [x86, ia64] Enable ACPI_PCI_SLOT + + [ Bastian Blank ] + * Make gcc-4.3 the default compiler. (closes: #463295) + * Add optional image size check. + * debian/rules.real: Setup image installation rules for alpha, hppa, + ia64 and sparc. + * Remove support to build images using kernel-package. + + -- maximilian attems Wed, 18 Feb 2009 16:36:04 +0100 + +linux-2.6 (2.6.26-12) unstable; urgency=high + + [ Ian Campbell ] + * xen: fix ACPI processor throttling for when processor id is -1. (closes: #502849) + + [ dann frazier ] + * Make sendmsg() block during UNIX garbage collection (CVE-2008-5300) + * Fix race conditions between inotify removal and umount (CVE-2008-5182) + * Fix DoS when calling svc_listen twice on the same socket while reading + /proc/net/atm/*vc (CVE-2008-5079) + + [ Bastian Blank ] + * [openvz, vserver] Fix descriptions. + * [sparc] Enable Sun Logical Domains support. (closes: #501684) + * Fix coexistence of pata_marvell and ahci. (closes: #507432) + * [sparc] Support Intergraph graphics chips. (closes: #508108) + + -- Bastian Blank Mon, 15 Dec 2008 12:57:18 +0100 + +linux-2.6 (2.6.26-11) unstable; urgency=low + + [ Bastian Blank ] + * [sparc] Reintroduce dummy PCI host controller to workaround broken X.org. + * [sparc] Fix size checks in PCI maps. + * Add stable release 2.6.26.8: + - netfilter: restore lost ifdef guarding defrag exception + - netfilter: snmp nat leaks memory in case of failure + - netfilter: xt_iprange: fix range inversion match + - ACPI: dock: avoid check _STA method + - ACPI: video: fix brightness allocation + - sparc64: Fix race in arch/sparc64/kernel/trampoline.S + - math-emu: Fix signalling of underflow and inexact while packing result. + - tcpv6: fix option space offsets with md5 + - net: Fix netdev_run_todo dead-lock + - scx200_i2c: Add missing class parameter + - DVB: s5h1411: Power down s5h1411 when not in use + - DVB: s5h1411: Perform s5h1411 soft reset after tuning + - DVB: s5h1411: bugfix: Setting serial or parallel mode could destroy bits + - V4L: pvrusb2: Keep MPEG PTSs from drifting away + - ACPI: Always report a sync event after a lid state change + - ALSA: use correct lock in snd_ctl_dev_disconnect() + - file caps: always start with clear bprm->caps_* + - libertas: fix buffer overrun + - net: Fix recursive descent in __scm_destroy(). + - SCSI: qla2xxx: Skip FDMI registration on ISP21xx/22xx parts. + (Closes: #502552) + - edac cell: fix incorrect edac_mode + - ext[234]: Avoid printk floods in the face of directory corruption + (CVE-2008-3528) + - gpiolib: fix oops in gpio_get_value_cansleep() + * Override ABI changes. + * [xen] Update description. (closes: #505961) + * Revert parts of 2.6.26.6 to fix resume breakage. (closes: #504167) + - clockevents: prevent multiple init/shutdown + - clockevents: broadcast fixup possible waiters + + [ dann frazier ] + * Fix buffer overflow in hfsplus (CVE-2008-4933) + * Fix BUG() in hfsplus (CVE-2008-4934) + * Fix stack corruption in hfs (CVE-2008-5025) + * Fix oops in tvaudio when controlling bass/treble (CVE-2008-5033) + + [ Martin Michlmayr ] + * [arm/iop32x, arm/ixp4xx, arm/orion5x] Enable support for more partition + tables, including MAC_PARTITION (requested by Benoît Knecht). + * leds-pca9532: Fix memory leak and properly handle errors (Sven Wegener) + * leds-pca9532: Move i2c work to a workqueque (Riku Voipio). (closes: + #506116) + + -- Bastian Blank Wed, 26 Nov 2008 11:43:48 +0100 + +linux-2.6 (2.6.26-10) unstable; urgency=low + + [ dann frazier ] + * sctp: Fix possible kernel panic in sctp_sf_abort_violation (CVE-2008-4618) + + [ Martin Michlmayr ] + * DNS-323: add support for revision B1 machines (Matthew Palmer). + * ext3/ext4: Add support for non-native signed/unsigned htree hash + algorithms (Theodore Ts'o). (closes: #493957) + * [arm/ixp4xx] Enable USB_ACM (closes: #504723). + + [ Bastian Blank ] + * agp: Fix stolen memory counting on Intel G4X. (closes: #502606) + * Add stable release 2.6.26.7: + - security: avoid calling a NULL function pointer in drivers/video/tvaudio.c + - DVB: au0828: add support for another USB id for Hauppauge HVR950Q + - drm/i915: fix ioremap of a user address for non-root (CVE-2008-3831) + - ACPI: Ignore _BQC object when registering backlight device + - hwmon: (it87) Prevent power-off on Shuttle SN68PT + - Check mapped ranges on sysfs resource files + - x86: avoid dereferencing beyond stack + THREAD_SIZE + - PCI: disable ASPM on pre-1.1 PCIe devices + - PCI: disable ASPM per ACPI FADT setting + - V4L/DVB (9053): fix buffer overflow in uvc-video + - V4L/DVB (8617): uvcvideo: don't use stack-based buffers for USB transfers. + - V4L/DVB (8498): uvcvideo: Return sensible min and max values when querying + a boolean control. + - V4L: zr36067: Fix RGBR pixel format + - V4L: bttv: Prevent NULL pointer dereference in radio_open + - libata: fix EH action overwriting in ata_eh_reset() + - libata: always do follow-up SRST if hardreset returned -EAGAIN + - fbcon_set_all_vcs: fix kernel crash when switching the rotated consoles + - modules: fix module "notes" kobject leak + - b43legacy: Fix failure in rate-adjustment mechanism + - CIFS: make sure we have the right resume info before calling CIFSFindNext + - sched_rt.c: resch needed in rt_rq_enqueue() for the root rt_rq + - tty: Termios locking - sort out real_tty confusions and lock reads + - x86, early_ioremap: fix fencepost error + - x86: improve UP kernel when CPU-hotplug and SMP is enabled + - x86: Reserve FIRST_DEVICE_VECTOR in used_vectors bitmap. + * [xen] Remove pte file workaround. + + [ Ian Campbell ] + * [xen] Disable usage of PAT. (closes: #503821) + + -- Bastian Blank Sat, 08 Nov 2008 10:50:58 +0100 + +linux-2.6 (2.6.26-9) unstable; urgency=low + + [ Bastian Blank ] + * Add stable release 2.6.26.6: + - mm owner: fix race between swapoff and exit + - rtc: fix kernel panic on second use of SIGIO nofitication + - fbcon: fix monochrome color value calculation + - ALSA: snd-powermac: HP detection for 1st iMac G3 SL + - ALSA: snd-powermac: mixers for PowerMac G4 AGP + - sparc64: Fix missing devices due to PCI bridge test in + of_create_pci_dev(). + - sparc64: Fix disappearing PCI devices on e3500. + - sparc64: Fix OOPS in psycho_pcierr_intr_other(). + - sparc64: Fix interrupt register calculations on Psycho and Sabre. + - sparc64: Fix PCI error interrupt registry on PSYCHO. + - udp: Fix rcv socket locking + - sctp: Fix oops when INIT-ACK indicates that peer doesn't support AUTH + (CVE-2008-4576) + - sctp: do not enable peer features if we can't do them. + - ipsec: Fix pskb_expand_head corruption in xfrm_state_check_space + - netlink: fix overrun in attribute iteration + - niu: panic on reset + - ipv6: Fix OOPS in ip6_dst_lookup_tail(). + - XFRM,IPv6: initialize ip6_dst_blackhole_ops.kmem_cachep + - af_key: Free dumping state on socket close + - pcmcia: Fix broken abuse of dev->driver_data + - clockevents: remove WARN_ON which was used to gather information + - ntp: fix calculation of the next jiffie to trigger RTC sync + - x86: HPET: read back compare register before reading counter + - x86: HPET fix moronic 32/64bit thinko + - clockevents: broadcast fixup possible waiters + - HPET: make minimum reprogramming delta useful + - clockevents: prevent endless loop lockup + - clockevents: prevent multiple init/shutdown + - clockevents: enforce reprogram in oneshot setup + - clockevents: prevent endless loop in periodic broadcast handler + - clockevents: prevent clockevent event_handler ending up handler_noop + - x86: fix memmap=exactmap boot argument + - x86: add io delay quirk for Presario F700 + - ACPI: Avoid bogus EC timeout when EC is in Polling mode + - x86: fix SMP alternatives: use mutex instead of spinlock, text_poke is + sleepable + - rtc: fix deadlock + - mm: dirty page tracking race fix + - x86-64: fix overlap of modules and fixmap areas + - x86: PAT proper tracking of set_memory_uc and friends + - x86: fix oprofile + hibernation badness + - x86: fdiv bug detection fix + - rt2x00: Use ieee80211_hw->workqueue again + - x86: Fix 27-rc crash on vsmp due to paravirt during module load + - sg: disable interrupts inside sg_copy_buffer + - ocfs2: Increment the reference count of an already-active stack. + - APIC routing fix + - sched: fix process time monotonicity + - block: submit_bh() inadvertently discards barrier flag on a sync write + - x64, fpu: fix possible FPU leakage in error conditions + - x86-64: Clean up save/restore_i387() usage + - KVM: SVM: fix guest global tlb flushes with NPT + - KVM: SVM: fix random segfaults with NPT enabled + - ALSA: remove unneeded power_mutex lock in snd_pcm_drop + - ALSA: fix locking in snd_pcm_open*() and snd_rawmidi_open*() + - ALSA: oxygen: fix distorted output on AK4396-based cards + - ALSA: hda - Fix model for Dell Inspiron 1525 + - SCSI: qla2xxx: Defer enablement of RISC interrupts until ISP + initialization completes. + - USB: fix hcd interrupt disabling + - smb.h: do not include linux/time.h in userspace + - pxa2xx_spi: fix build breakage + - pxa2xx_spi: chipselect bugfixes + - pxa2xx_spi: dma bugfixes + - mm: mark the correct zone as full when scanning zonelists + - async_tx: fix the bug in async_tx_run_dependencies + - drivers/mmc/card/block.c: fix refcount leak in mmc_block_open() + - ixgbe: initialize interrupt throttle rate + - i2c-dev: Return correct error code on class_create() failure + - x86-32: AMD c1e force timer broadcast late + * [x86] Update patch to detect not properly announced cmos RTC devices. + * [xen] Overtake hvc console by default. + + [ maximilian attems ] + * [openvz] ip: NULL pointer dereferrence in tcp_v(4|6)_send_ack + (closes: #500472) + * [openvz] unset NF_CONNTRACK_IPV6 for now until abi bump. + + [ Stephen R. Marenka ] + * [m68k] add patches to fix atari ethernec per Michael Schmitz: + atari-ethernec-IRQF_SHARED.diff and atari-ethernec-fixes.diff. + * [m68k] add mac-esp-fix-for-quadras-with-two-esp-chips.diff to fix macs + with dual scsi busses and a problem with xorg, per Finn Thain. + * [m68k] add atari-atari_keyb_init-operator-precedence.diff per + Michael Schmitz. + * [m68k] more mac patches, per Finn Thain. + + [ Martin Michlmayr ] + * [arm/ixp4xx] Enable USB_ATM and USB_SPEEDTOUCH (closes: #502182). + * [arm/iop32x, arm/orion5x] Likewise. + * DNS-323: read MAC address from flash (Matthew Palmer). + + [ dann frazier ] + * Restrict access to the DRM_I915_HWS_ADDR ioctl (CVE-2008-3831) + * Don't allow splicing to files opened with O_APPEND (CVE-2008-4554) + + -- Bastian Blank Sat, 18 Oct 2008 12:14:22 +0200 + +linux-2.6 (2.6.26-8) unstable; urgency=medium + + [ dann frazier ] + * [x86] Fix broken LDT access in VMI (CVE-2008-4410) + * ata: Fix off-by-one-error that causes errors when reading a + block on the LBA28-LBA48 boundary + * [s390] prevent ptrace padding area read/write in 31-bit mode + (CVE-2008-1514) + + [ Bastian Blank ] + * Fix generation of i386 Xen image information. + * [i386] Restrict the usage of long NOPs. (closes: #464962) + * Fix access to uninitialized user keyring. (closes: #500279) + * [x86] Fix detection of non-PNP RTC devices. (closes: #499230) + + -- Bastian Blank Thu, 09 Oct 2008 12:07:21 +0200 + +linux-2.6 (2.6.26-7) unstable; urgency=low + + [ Bastian Blank ] + * [xen] Add SuSE Xen patch. (closes: #495895) + * Only register notifiers in braille console if used, fixes Insert key. + (closes: #494374) + * Fix ACPI EC GPE storm detection. (closes: #494546) + * Disable useless support for ISP1760 USB host controller. + (closes: #498304) + * rt61pci: Add a sleep after firmware upload. (closes: #498828) + + [ Stephen R. Marenka ] + * [m68k] Set CONFIG_ATARI_ETHERNEC=m for atari, since it only works + in modular form. + * [m68k] Enable CONFIG_ADB_PMU68K=y for mac. + * [m68k] Add atari-aranym-nf-wrappers.diff patch to fix atari LBD + problems, set CONFIG_LBD=y for atari. + + [ Martin Michlmayr ] + * [arm/orion5x] Enable CONFIG_ATALK (requested by Ben Schwarz). + * [arm/versatile] Enable CONFIG_VFP. (closes: #499463) + * ath5k: Fix bad udelay calls on AR5210 code (Nick Kossifidis). + * [arm] No longer disable ATH5K. + + [ dann frazier ] + * Add missing capability checks in sbni_ioctl (CVE-2008-3525) + + -- Bastian Blank Wed, 01 Oct 2008 09:02:30 +0200 + +linux-2.6 (2.6.26-6) unstable; urgency=low + + [ maximilian attems ] + * [openvz] Enable checkpointing. (closes: #497292) + + [ Bastian Blank ] + * Allow forced module loading again. (closes: #494144) + * Set IEEE 802.11 (wireless) regulatory domain default to EU. + (closes: #497971) + * [i386] Enable IDE ACPI support. Override ABI changes. (closes: #470528) + * [i386/686-bigmem] Promote to generic subarch. (closes: #476120) + + [ Martin Michlmayr ] + * Fix dead 21041 ethernet after ifconfig down (Thomas Bogendoerfer). + + [ dann frazier ] + * [hppa] Enable the FPU before using it, fixes booting on A500s + with our CONFIG_PRINTK_TIME=y setting. (closes: #499458) + + -- Bastian Blank Wed, 24 Sep 2008 12:06:47 +0200 + +linux-2.6 (2.6.26-5) unstable; urgency=low + + [ Martin Michlmayr ] + * Backport power-off method for Kurobox Pro. + * [arm/versatile] Really enable CONFIG_RTC_DRV_PL031 (closes: #484432). + + [ Stephen R. Marenka ] + * [m68k] Set CONFIG_LBD=n for atari, since it conflicts with nfblock. + + [ Bastian Blank ] + * Reenable SiS SATA support. (closes: #496603) + * [amd64,i386] Disable new-style SiS PATA support. + * Add stable release 2.6.26.4: + - sata_mv: don't issue two DMA commands concurrently + - KVM: MMU: Fix torn shadow pte + - x86: work around MTRR mask setting, v2 + - nfsd: fix buffer overrun decoding NFSv4 acl (CVE-2008-3915) + - sunrpc: fix possible overrun on read of /proc/sys/sunrpc/transports + (CVE-2008-3911) + - r8169: balance pci_map / pci_unmap pair + - tg3: Fix firmware event timeouts + - crypto: authenc - Avoid using clobbered request pointer + - sparc64: Fix cmdline_memory_size handling bugs. + - sparc64: Fix overshoot in nid_range(). + - ipsec: Fix deadlock in xfrm_state management. (closes: #497796) + - sctp: fix random memory dereference with SCTP_HMAC_IDENT option. + - sctp: correct bounds check in sctp_setsockopt_auth_key + - sch_prio: Fix nla_parse_nested_compat() regression + - sctp: add verification checks to SCTP_AUTH_KEY option + - sctp: fix potential panics in the SCTP-AUTH API. + - udp: Drop socket lock for encapsulated packets + - pkt_sched: Fix actions referencing + - pkt_sched: Fix return value corruption in HTB and TBF. + - netns: Add network namespace argument to rt6_fill_node() and + ipv6_dev_get_saddr() + - ipv6: Fix OOPS, ip -f inet6 route get fec0::1, linux-2.6.26, + ip6_route_output, rt6_fill_node+0x175 (CVE-2008-3686) + - AX.25: Fix sysctl registration if !CONFIG_AX25_DAMA_SLAVE + - mm: make setup_zone_migrate_reserve() aware of overlapping nodes + - 8250: improve workaround for UARTs that don't re-assert THRE correctly + - rtc_time_to_tm: fix signed/unsigned arithmetic + - drivers/char/random.c: fix a race which can lead to a bogus BUG() + - cifs: fix O_APPEND on directio mounts + - atl1: disable TSO by default + - forcedeth: fix checksum flag + - bio: fix bio_copy_kern() handling of bio->bv_len + - bio: fix __bio_copy_iov() handling of bio->bv_len + - ALSA: oxygen: prevent muting of nonexistent AC97 controls + - S390 dasd: fix data size for PSF/PRSSD command + - x86: fix "kernel won't boot on a Cyrix MediaGXm (Geode)" + - x86: work around MTRR mask setting + - USB: cdc-acm: don't unlock acm->mutex on error path + - binfmt_misc: fix false -ENOEXEC when coupled with other binary handlers + - fbdefio: add set_page_dirty handler to deferred IO FB + - eeepc-laptop: fix use after free + - PCI: fix reference leak in pci_get_dev_by_id() + - cramfs: fix named-pipe handling + * Override ABI changes. + * [hppa] Disable new-style RTC support. Override ABI changes. + + [ maximilian attems ] + * openvz: Add upstream fixes up to 24cebf40278cb071ff8b. (closes: #497528) + + -- Bastian Blank Wed, 10 Sep 2008 12:55:16 +0200 + +linux-2.6 (2.6.26-4) unstable; urgency=low + + [ maximilian attems ] + * x86: Reset ACPI_PROCFS_POWER for Lenny as buggy apps depend on it. + (closes: #495541) + * x86: ACPI: Fix thermal shutdowns + * openvz: Add upstream fixes up to 0f14912e3d2251aff. (closes: #494384) + * Add stable release 2.6.26.3: + - USB: fix interface unregistration logic + - usb-storage: unusual_devs entries for iRiver T10 and Datafab CF+SM reader + - usb-serial: don't release unregistered minors + - usb-storage: revert DMA-alignment change for Wireless USB + - usb-storage: automatically recognize bad residues + - USB: ftdi_sio: Add USB Product Id for ELV HS485 + - qla2xxx: Set an rport's dev_loss_tmo value in a consistent manner. + - dccp: change L/R must have at least one byte in the dccpsf_val field + (CVE-2008-3276) + - KVM: Avoid instruction emulation when event delivery is pending + - cs5520: add enablebits checking + - acer-wmi: Fix wireless and bluetooth on early AMW0 v2 laptops + - USB: usb-storage: quirk around v1.11 firmware on Nikon D4 + - radeonfb: fix accel engine hangs + - radeon: misc corrections + - sparc64: Fix global reg snapshotting on self-cpu. + - sparc64: Do not clobber %g7 in setcontext() trap. + - sparc64: Fix end-of-stack checking in save_stack_trace(). + - sparc64: Fix recursion in stack overflow detection handling. + - sparc64: Make global reg dumping even more useful. + - sparc64: Implement IRQ stacks. + - sparc64: Handle stack trace attempts before irqstacks are setup. + - PCI: Limit VPD length for Broadcom 5708S + - ide: it821x in pass-through mode segfaults in 2.6.26-stable + - syncookies: Make sure ECN is disabled + - USB: ftdi_sio: add support for Luminance Stellaris Evaluation/Development + Kits + - i2c: Fix NULL pointer dereference in i2c_new_probed_device + - SCSI: hptiop: add more PCI device IDs + - SCSI: ses: fix VPD inquiry overrun + - SCSI: scsi_transport_spi: fix oops in revalidate + - CIFS: Fix compiler warning on 64-bit + - x86: fix spin_is_contended() + - matrox maven: fix a broken error path + - i2c: Let users select algorithm drivers manually again + - CIFS: properly account for new user= field in SPNEGO upcall string + allocation + - x86: fix setup code crashes on my old 486 box + - KVM: ia64: Fix irq disabling leak in error handling code + - mlock() fix return values + - rtl8187: Fix lockups due to concurrent access to config routine + - KVM: task switch: segment base is linear address + - KVM: task switch: use seg regs provided by subarch instead of reading + from GDT + - KVM: task switch: translate guest segment limit to virt-extension byte + granular field + - r8169: avoid thrashing PCI conf space above RTL_GIGA_MAC_VER_06 + - sparc64: FUTEX_OP_ANDN fix + - posix-timers: do_schedule_next_timer: fix the setting of ->si_overrun + - posix-timers: fix posix_timer_event() vs dequeue_signal() race + - vt8623fb: fix kernel oops + - ide-cd: fix endianity for the error message in cdrom_read_capacity + - qla2xxx: Add dev_loss_tmo_callbk/terminate_rport_io callback support. + - random32: seeding improvement + - CIFS: mount of IPC$ breaks with iget patch + - CIFS: if get root inode fails during mount, cleanup tree connection + - crypto: padlock - fix VIA PadLock instruction usage with + irq_ts_save/restore() + - ipvs: Fix possible deadlock in estimator code + - SCSI: block: Fix miscalculation of sg_io timeout in CDROM_SEND_PACKET + handler. + - ALSA: asoc: restrict sample rate and size in Freescale MPC8610 sound + drivers + - ALSA: ASoC: fix SNDCTL_DSP_SYNC support in Freescale 8610 sound drivers + - USB: pl2023: Remove USB id (4348:5523) handled by ch341 + - relay: fix "full buffer with exactly full last subbuffer" accounting + problem + - ipv6: Fix ip6_xmit to send fragments if ipfragok is true + - x86: amd opteron TOM2 mask val fix + + [ dann frazier ] + * [ia64] Fix boot-time hang w/ PRINTK_TIME by ensuring that cpu0 can access + per-cpu vars in early boot + * delay calls to sched_clock() until after sched_clock_init() to prevent + inaccurate printk timings on ia64 and presumably other architectures + + [ Ian Campbell ] + * [xen] import upstream fix to fb-defio driver used by Xen framebuffer. + + [ Bastian Blank ] + * [powerpc] Enable proper RTC support. (closes: #484693) + + [ Martin Michlmayr ] + * Add Marvell Orion fixes: + - sata_mv: add the Gen IIE flag to the SoC devices. + - sata_mv: don't avoid clearing interrupt status on SoC host adapters + + [ dann frazier ] + * Fix overflow condition in sctp_setsockopt_auth_key (CVE-2008-3526) + * Fix panics that may occur if SCTP AUTH is disabled (CVE-2008-3792) + * [x86] Fix memory leak in the copy_user routine + (CVE-2008-0598, closes: #490910) + + -- Bastian Blank Thu, 28 Aug 2008 08:46:42 +0200 + +linux-2.6 (2.6.26-3) unstable; urgency=low + + [ Bastian Blank ] + * Disable Emagic Audiowerk 2 soundcard support. The PCI IDs clashes with + many DVB cards. + * Update VServer patch to 2.3.0.35. + * [armel/versatile] Override ABI changes. + * [i386/686-bigmem] Add VServer image. + + [ Aurelien Jarno ] + * [armel/versatile] Disable CONFIG_NO_HZ, CONFIG_HIGH_RES_TIMERS for + dynticks. (closes: #494842) + + [ Martin Michlmayr ] + * Fix PCIe on the Kurobox Pro (Lennert Buytenhek). + * Fix regressions caused by the "use software GSO for SG+CSUM capable + netdevices" patch: + - loopback: Enable TSO (Herbert Xu) + - net: Preserve netfilter attributes in skb_gso_segment using + __copy_skb_header (Herbert Xu) + + [ dann frazier ] + * [amd64] Fix typo in TOM2 mask value, preventing a hang on some opteron + systems. (closes: #494365) + + -- Bastian Blank Mon, 18 Aug 2008 15:34:38 +0200 + +linux-kbuild-2.6 (2.6.26-3) unstable; urgency=low + + * Fix recursive installation. (closes: #494435) + + -- Bastian Blank Sun, 10 Aug 2008 13:01:41 +0200 + +linux-kbuild-2.6 (2.6.26-2) unstable; urgency=low + + * Include new scripts. (closes: #494435) + + -- Bastian Blank Sat, 09 Aug 2008 20:45:12 +0200 + +linux-2.6 (2.6.26-2) unstable; urgency=low + + [ Bastian Blank ] + * [powerpc] Install arch/powerpc/lib/crtsavres.o into the headers, it is + used during module linking. + * Add stable release 2.6.26.1: + - Fix off-by-one error in iov_iter_advance() + - ath5k: don't enable MSI, we cannot handle it yet + - b43legacy: Release mutex in error handling code + - cpufreq acpi: only call _PPC after cpufreq ACPI init funcs got called already + - VFS: increase pseudo-filesystem block size to PAGE_SIZE + - markers: fix markers read barrier for multiple probes + - tmpfs: fix kernel BUG in shmem_delete_inode + - mpc52xx_psc_spi: fix block transfer + - ixgbe: remove device ID for unsupported device + - UML - Fix boot crash + - eCryptfs: use page_alloc not kmalloc to get a page of memory + - x86: fix kernel_physical_mapping_init() for large x86 systems + - DVB: cx23885: SRAM changes for the 885 and 887 silicon parts + - DVB: cx23885: Reallocated the sram to avoid concurrent VIDB/C issues + - DVB: cx23885: DVB Transport cards using DVB port VIDB/TS1 did not stream + - DVB: cx23885: Ensure PAD_CTRL is always reset to a sensible default + - V4L: cx23885: Bugfix for concurrent use of /dev/video0 and /dev/video1 + - V4L: saa7134: Copy tuner data earlier to avoid overwriting manual tuner type + - V4L: uvcvideo: Add support for Medion Akoya Mini E1210 integrated webcam + - V4L: uvcvideo: Make input device support optional + - V4L: uvcvideo: Don't free URB buffers on suspend + - V4L: uvcvideo: Use GFP_NOIO when allocating memory during resume + - V4L: uvcvideo: Fix a buffer overflow in format descriptor parsing + - DVB: dib0700: add support for Hauppauge Nova-TD Stick 52009 + - V4L: cx18: Upgrade to newer firmware & update documentation + - ALSA: trident - pause s/pdif output + - myri10ge: do not use mgp->max_intr_slots before loading the firmware + - myri10ge: do not forget to setup the single slice pointers + - iop-adma: fix platform driver hotplug/coldplug + - sparc64: Do not define BIO_VMERGE_BOUNDARY. + - sparc64: Fix cpufreq notifier registry. + - sparc64: Fix lockdep issues in LDC protocol layer. + - tcp: Clear probes_out more aggressively in tcp_ack(). + - ARM: fix fls() for 64-bit arguments + - vmlinux.lds: move __attribute__((__cold__)) functions back into final .text section + - rtc-at91rm9200: avoid spurious irqs + - ide-cd: fix oops when using growisofs + - x86: fix crash due to missing debugctlmsr on AMD K6-3 + - cpusets: fix wrong domain attr updates + - proc: fix /proc/*/pagemap some more + - Fix build on COMPAT platforms when CONFIG_EPOLL is disabled + - markers: fix duplicate modpost entry + - x86, suspend, acpi: enter Big Real Mode + - USB: fix usb serial pm counter decrement for disconnected interfaces + - x86 reboot quirks: add Dell Precision WorkStation T5400 + - Fix typos from signal_32/64.h merge + - rcu: fix rcu_try_flip_waitack_needed() to prevent grace-period stall + - Patch Upstream: x86 ptrace: fix PTRACE_GETFPXREGS error + - KVM: MMU: Fix potential race setting upper shadow ptes on nonpae hosts + - KVM: MMU: nuke shadowed pgtable pages and ptes on memslot destruction + - KVM: x86 emulator: Fix HLT instruction + - KVM: VMX: Add ept_sync_context in flush_tlb + - KVM: mmu_shrink: kvm_mmu_zap_page requires slots_lock to be held + - KVM: SVM: fix suspend/resume support + - KVM: VMX: Fix a wrong usage of vmcs_config + - isofs: fix minor filesystem corruption + - quota: fix possible infinite loop in quota code + - hdlcdrv: Fix CRC calculation. + - ipv6: __KERNEL__ ifdef struct ipv6_devconf + - ipv6: use timer pending + - udplite: Protection against coverage value wrap-around + - pxamci: trivial fix of DMA alignment register bit clearing + * [sparc] Install asm-sparc headers again. + * Force RTC on by default and set clock on startup. Override ABI changes. + * [i386, amd64] Make the CMOS RTC support builtin. (closes: #493567) + * Add stable release 2.6.26.2: + - sound: ensure device number is valid in snd_seq_oss_synth_make_info + - Ath5k: kill tasklets on shutdown + - Ath5k: fix memory corruption + - vfs: fix lookup on deleted directory + - ALSA: emu10k1 - Fix inverted Analog/Digital mixer switch on Audigy2 + - ALSA: hda - Add missing Thinkpad Z60m support + - ALSA: hda - Fix DMA position inaccuracy + - ALSA: hda - Fix wrong volumes in AD1988 auto-probe mode + - Add compat handler for PTRACE_GETSIGINFO + - Bluetooth: Signal user-space for HIDP and BNEP socket errors + - Input: i8042 - add Acer Aspire 1360 to nomux blacklist + - Input: i8042 - add Gericom Bellagio to nomux blacklist + - Input: i8042 - add Intel D845PESV to nopnp list + - jbd: fix race between free buffer and commit transaction + - NFS: Ensure we zap only the access and acl caches when setting new acls + - SCSI: ch: fix ch_remove oops + - linear: correct disk numbering error check + - netfilter: xt_time: fix time's time_mt()'s use of do_div() + - Kprobe smoke test lockdep warning + - Close race in md_probe + - x86: io delay - add checking for NULL early param + - x86: idle process - add checking for NULL early param + - SCSI: bsg: fix bsg_mutex hang with device removal + - netfilter: nf_nat_sip: c= is optional for session + - romfs_readpage: don't report errors for pages beyond i_size + - ftrace: remove unneeded documentation + + [ Martin Michlmayr ] + * METH: fix MAC address setup (Thomas Bogendoerfer) + * Export the reset button of the QNAP TS-409. + * net: use software GSO for SG+CSUM capable netdevices (Lennert Buytenhek) + + [ dann frazier ] + * device_create interface changed between 2.6.26 and 2.6.27; adjust hpilo + backport appropriately. Fixes a NULL pointer dereference in ilo_probe(). + + -- Bastian Blank Fri, 08 Aug 2008 08:09:00 +0200 + +linux-kbuild-2.6 (2.6.26-1) unstable; urgency=low + + * New upstream version. + * modpost: Support new parameters. + + -- Bastian Blank Sat, 02 Aug 2008 13:09:54 +0200 + +linux-2.6 (2.6.26-1) unstable; urgency=low + + * New upstream release see http://kernelnewbies.org/Linux_2_6_26 + - UDF 2.50 support. (closes: #480910) + - mmc: increase power up delay (closes: #481190) + - snd-hda-intel suspend troubles fixed. (closes: #469727, #481613, #480034) + - cifs QueryUnixPathInfo fix (closes: #480995) + - r8169 oops in r8169_get_mac_version (closes: #471892) + - netfilter headers cleanup (closes: #482331) + - iwlwifi led support (closes: #469095) + - ath5k associates on AR5213A (closes: #463785) + - T42 suspend fix (closes: #485873) + - cpuidle acpi driver: fix oops on AC<->DC (closes: #477201) + - opti621 ide fixes (closes: #475561) + - ssh connection hangs with mac80211 (closes: #486089) + - ocfs2: Allow uid/gid/perm changes of symlinks (closes: #479475) + - xircom_tulip_cb: oboslete driver removed (closes: #416900) + - r8169 properly detect link status (closes: #487586) + - iwl3945 connection + support fixes (closes: #481436, #482196) + - longrun cpufreq min freq fix (closes: #468149) + - emux midi synthesizer SOFT_PEDAL-release event (closes: #474312) + - vmemmap fixes to use smaller pages (closes: #483489) + - x86 freeze fixes (closes: #482100, #482074) + - xen boot failure fix (closes: #488284) + - gdb read floating-point and SSE registers (closes: #485375) + - USB_PERSIST is default on (closes: #489963) + - alsa snd-hda Dell Inspiron fix (closes: #490649) + - ipw2200: queue direct scans (closes: #487721) + - better gcc-4.3 support (closes: #492301) + - iwl3945 monitor mode. (closes: #482387) + + [ maximilian attems ] + * topconfig set CRYPTO_CTS, SND_PCSP, SND_AW2, IWL4965_LEDS, IWL3945_LEDS, + RT2400PCI_LEDS, RT2500PCI_LEDS, RT61PCI_LEDS, RT2500USB_LEDS, + RT73USB_LEDS, NF_CT_PROTO_DCCP, BRIDGE_EBT_NFLOG, IWLWIFI_RFKILL, + USB_SERIAL_SPCP8X5, USB_STORAGE_CYPRESS_ATACB, DVB_ISL6405, DVB_AU8522, + VIDEO_EM28XX_DVB, VIDEO_CX18, VIDEO_AU0828, SOC_CAMERA_MT9M001, + SOC_CAMERA_MT9V022, DVB_TUNER_ITD1000, VIDEO_PVRUSB2_DVB, USB_C67X00_HCD, + USB_ISP1760_HCD, HTC_PASIC3, I2C_PCA_PLATFORM, TOUCHSCREEN_WM97XX, + JOYSTICK_ZHENHUA, SFC, ACCESSIBILITY, UIO_SMX, LOGIRUMBLEPAD2_FF, + A11Y_BRAILLE_CONSOLE, EDS_TRIGGER_DEFAULT_ON, VIDEO_ALLOW_V4L1, ATA_ACPI, + SATA_PMP, ATA_SFF, USB_SERIAL_MOTOROLA, USB_WDM, MAC80211_MESH, + IPV6_MROUTE, IPV6_PIMSM_V2, MTD_AR7_PARTS, SENSORS_IBMAEM, PATA_SCH, + CGROUP_DEVICE, USB_ISIGHTFW, HW_RANDOM_VIRTIO, RTC_DRV_FM3130, + USB_VIDEO_CLASS, CIFS_DFS_UPCALL. + * [amd64, i386]: KVM_CLOCK, KVM_GUEST, ISCSI_IBFT_FIND, ISCSI_IBFT, THERMAL, + EEEPC_LAPTOP, FB_N411, THERMAL_HWMON. + * [amd64]: Enable SCSI_DPT_I2O as 64 bit now. + * Reenable USB_SERIAL_EDGEPORT, USB_SERIAL_EDGEPORT_TI. (closes: #480195) + * Enable TCP_MD5SIG for BGP sessions. (closes: #443742) + * Add recognised alsa cards to bug report. + * topconfig: Enable HYSDN, no longer broken on smp. + * Add request_firmware patch for keyspan. (closes: #448900) + * [x86]: Enable dma engine. (closes: #473331) + * [ppc64]: Enable IBMEBUS and EHEA. (closes: #484888) + * topconfig: Enable PROFILING across all flavours. (closes: #484885) + * 486: enable OLPC support thanks Andres Salomon for merge. + Kconfig variable patch by Robert Millan (closes: #485063). + * Add request_firmware patch for ip2. + * Add request_firmware patch for acenic. (closes: #284221) + * [x86, ia64]: Set HPET_RTC_IRQ. (closes: #479709, #476970) + * [ppc]: Set SND_VIRMIDI. (closes: #290090) + * Fallback for userspace compatibility to old IEEE 1394 FireWire stack. + (closes: #451367, #475295, #478419) + * [x86]: Enable modular FB_UVESA. (closes: #473180) + * JFFS2 enable summary and compressor support. (closes: #488242) + * Add OLPC sdhci quirks. Thanks Andres Salomon + (closes: #485192) + * [ppc]: Enable RTC_DRV_PPC. (closes: #484693) Thanks for the patch to + Geoff Levand . + * Enable BLK_DEV_BSG for SG v4 support. + * [amd64] Enable default disabled memtest boot param. + * topconfig: Enable PATA_SIS instead of SATA_SIS. (closes: #485609) + * Add OpenVZ countainer flavour for amd64, i386. (closes: #392015) + * atl1e driver for Atheros(R) L1e Fast Ethernet. (closes: #492029) + * [ALSA] hda - Add ICH9 controller support (8086:2911) + * [ALSA] hda - support intel DG33 motherboards + * HP iLO driver + * Input: i8042 - add Arima-Rioworks HDAMB board to noloop list + (closes: #489190) thanks Guillaume Morin + + [ Martin Michlmayr ] + * [arm/orion5x] Update the config to reflect upstream renaming this + subarch. + * [arm/orion5x] Add some patches from Marvell's Orion tree: + - Feroceon: speed up flushing of the entire cache + - support for 5281 D0 stepping + - cache align destination pointer when copying memory for some processors + - cache align memset and memzero + - DMA engine driver for Marvell XOR engine + - Orion hardware watchdog support + * [arm/orion5x] Enable NETCONSOLE. + * [arm/orion5x] Disable more SCSI drivers. + * [arm/ixp4xx] Disable most ATA and more SCSI and network drivers. + * [arm/versatile] Enable CONFIG_RTC_DRV_PL031 (closes: #484432). + * [arm/iop32x, arm/ixp4xx, arm/versatile] Enable ARM_THUMB (closes: #484524). + * [arm/iop32x] Add LED driver for Thecus N2100 (Riku Voipio). + * [mips/r5k-ip32] Enable USB. + * [arm/orion5x, arm/iop32x, arm/ixp4xx, mipsel/r5k-cobalt] Enable HAMRADIO + on the request of Heinz Janssen. + * [arm/orion5x] Add support for QNAP TS-409 and HP mv2120; thanks + Sylver Bruneau. + * [mips] Add patches from Thomas Bogendoerfer: + - gbefb: fix cmap FIFO timeout (closes: #487257) + - IP32: Enable FAST-20 for onboard scsi + - IP32: SGI O2 sound driver + * [arm/ixp4xx] Add support for Freecom FSG-3 (Rod Whitby). + * [arm/ixp4xx] Enable CONFIG_MACH_DSMG600. + * [arm/iop32x] Unset NET_DMA since it actually leads to worse network + performance. + * [arm/orion5x] Fix a boot crash on the Kurobox Pro. + * [arm/orion5x] use better key codes for the TS-209/TS-409 buttons + * [arm/orion5x] export red SATA lights on TS-409, fix SATA presence/activity + * [arm] Enable KEXEC (closes: #492268). + * [arm/orion5x] Enable USB_PRINTER, requested by Mike Arthur. + * [arm/orion5x] Enable binfmt aout, x25, wireless and ATM. + * [arm/iop32x, arm/orion5x] Enable USB_SISUSBVGA. + * [arm] xfs: pack some shortform dir2 structures for the ARM old ABI + architecture (closes: #414932). + + [ Ian Campbell ] + * Readme.build updated on how to generate orig tarballs. + * Forward port vmlinuz-target.patch. + * Enable Xen save/restore and memory ballooning for Xen enabled kernels. + + [ Bastian Blank ] + * [powerpc/powerpc-miboot] Disable. (closes: #481358) + * [powerpc/powerpc64] Support IBM Cell based plattforms and PS3. + (closes: #462529) + * [s390] Synchronize block device, network bridge, network scheduler and CRC + support. + * [s390] Enable support for PCI-attached cryptographic adapters. + * Use control group as base for group CPU scheduler. This reenabled + traditional nice behaviour. (closes: #489223) + * Bump yaird dependencies to at least 0.0.13. + * Reenable SECCOMP. There is no longer additional overhead. + (closes: #474648) + * Export symbol required for MOL again. (closes: #460667) + * [powerpc/powerpc64] Fix console selection in LPAR environment. + (closes: #492703) + * Fix several userspace compatibility problems. + + [ Christian T. Steigies ] + * [m68k] enable SERIAL_CONSOLE for amiga and atari + + [ Thiemo Seufer ] + * [mips] Fix logic bug in atomic_sub_if_positive. + + [ Stephen R. Marenka ] + * [m68k] Update pending m68k patches. + * [m68k] Enable nfcon and nfblock for atari. + * [m68k] Change compiler to default. + + [ Aurelien Jarno ] + * [arm/versatile] Switch scsi/ext3/smc91x to modules now that we have proper + d-i support. Remove options defined in toplevel config file. + + -- Bastian Blank Wed, 30 Jul 2008 10:17:29 +0200 + +linux-2.6 (2.6.25-7) unstable; urgency=high + + * Add stable release 2.6.25.10: + - TTY: fix for tty operations bugs (CVE-2008-2812) + - sched: fix cpu hotplug + - IB/mthca: Clear ICM pages before handing to FW + - DRM: enable bus mastering on i915 at resume time + - x86: shift bits the right way in native_read_tscp + - x86_64 ptrace: fix sys32_ptrace task_struct leak (CVE-2008-3077) + - ptrace GET/SET FPXREGS broken + - futexes: fix fault handling in futex_lock_pi + - x86: fix cpu hotplug crash + * Add stable release 2.6.25.11: + - x86: fix ldt limit for 64 bit + + -- maximilian attems Mon, 14 Jul 2008 10:58:14 +0200 + +linux-2.6 (2.6.25-6) unstable; urgency=high + + [ maximilian attems ] + * Add stable release 2.6.25.7: + - double-free of inode on alloc_file() failure exit in create_write_pipe() + - m68k: Add ext2_find_{first,next}_bit() for ext4 + - bluetooth: fix locking bug in the rfcomm socket cleanup handling + - serial: fix enable_irq_wake/disable_irq_wake imbalance in serial_core.c + - bttv: Fix a deadlock in the bttv driver (closes: #487594) + - forcedeth: msi interrupts + - CPUFREQ: Fix format string bug. + - mmc: wbsd: initialize tasklets before requesting interrupt + - ecryptfs: fix missed mutex_unlock + - mac80211: send association event on IBSS create + - bluetooth: rfcomm_dev_state_change deadlock fix + - sunhv: Fix locking in non-paged I/O case. + - cassini: Only use chip checksum for ipv4 packets. + - ipwireless: Fix blocked sending + - net: Fix call to ->change_rx_flags(dev, IFF_MULTICAST) in + dev_change_flags() + - fbdev: export symbol fb_mode_option + - ipsec: Use the correct ip_local_out function + - tcp: fix skb vs fack_count out-of-sync condition + - tcp FRTO: Fix fallback to conventional recovery + - tcp FRTO: SACK variant is errorneously used with NewReno + - tcp FRTO: work-around inorder receivers + - tcp: Fix inconsistency source (CA_Open only when !tcp_left_out(tp)) + - l2tp: avoid skb truesize bug if headroom is increased + - l2tp: Fix possible WARN_ON from socket code when UDP socket is closed + - l2tp: Fix possible oops if transmitting or receiving when tunnel goes down + - ax25: Fix NULL pointer dereference and lockup. + - sound: emu10k1 - fix system hang with Audigy2 ZS Notebook PCMCIA card + - tcp: Allow send-limited cwnd to grow up to max_burst when gso disabled + - tcp: Limit cwnd growth when deferring for GSO + - af_key: Fix selector family initialization. + - hgafb: resource management fix + - cifs: fix oops on mount when CONFIG_CIFS_DFS_UPCALL is enabled + - b43: Fix controller restart crash + - ssb: Fix context assertion in ssb_pcicore_dev_irqvecs_enable + - eCryptfs: protect crypt_stat->flags in ecryptfs_open() + - cciss: add new hardware support + - ecryptfs: add missing lock around notify_change + - ecryptfs: clean up (un)lock_parent + - Add 'rd' alias to new brd ramdisk driver + - net_sched: cls_api: fix return value for non-existant classifiers + - vlan: Correctly handle device notifications for layered VLAN devices + - IB/umem: Avoid sign problems when demoting npages to integer + - x86: fix recursive dependencies + - can: Fix copy_from_user() results interpretation + - Kconfig: introduce ARCH_DEFCONFIG to DEFCONFIG_LIST + - tcp: TCP connection times out if ICMP frag needed is delayed + - ALSA: hda - Fix resume of auto-config mode with Realtek codecs + - netlink: Fix nla_parse_nested_compat() to call nla_parse() directly + * Add stable release 2.6.25.9: + - Add return value to reserve_bootmem_node() + - x86: use BOOTMEM_EXCLUSIVE on 32-bit + - sctp: Make sure N * sizeof(union sctp_addr) does not overflow. + - hwmon: (lm85) Fix function RANGE_TO_REG() + - hwmon: (adt7473) Initialize max_duty_at_overheat before use + - x86: set PAE PHYSICAL_MASK_SHIFT to 44 bits. + - Reinstate ZERO_PAGE optimization in 'get_user_pages()' and fix XIP + - watchdog: hpwdt: fix use of inline assembly + - Fix ZERO_PAGE breakage with vmware + - atl1: relax eeprom mac address error check + + [ Martin Michlmayr] + * [arm/orion5x] Enable INPUT_EVDEV and KEYBOARD_GPIO. + + [ Steve Langasek ] + * Enable CONFIG_CIFS_EXPERIMENTAL and CONFIG_CIFS_UPCALL, required for + CIFS mounts to be able to use Kerberos authentication. Closes: #480663. + + [ Bastian Blank ] + * Add stable release 2.6.25.8: + - x86: disable mwait for AMD family 10H/11H CPUs + - x86: remove mwait capability C-state check + - nf_conntrack_h323: fix memory leak in module initialization error path + - nf_conntrack_h323: fix module unload crash + - nf_conntrack: fix ctnetlink related crash in nf_nat_setup_info() + - SCSI: sr: fix corrupt CD data after media change and delay + - ACPICA: Ignore ACPI table signature for Load() operator + - scsi_host regression: fix scsi host leak + - b43: Fix possible NULL pointer dereference in DMA code + - b43: Fix noise calculation WARN_ON + - virtio_net: Fix skb->csum_start computation + - opti621: remove DMA support + - opti621: disable read prefetch + - Fix tty speed handling on 8250 + - x86-64: Fix "bytes left to copy" return value for copy_from_user() + * Fix alpha build due too inconsistent kallsyms data. + + -- maximilian attems Fri, 27 Jun 2008 00:33:53 +0200 + +linux-2.6 (2.6.25-5) unstable; urgency=low + + [ maximilian attems ] + [ Bastian Blank ] + * Reenable VServer images. + + [ maximilian attems ] + * Add stable release 2.6.25.5: + - asn1: additional sanity checking during BER decoding (CVE-2008-1673) + * Add stable release 2.6.25.6: + - atl1: fix 4G memory corruption bug + - capabilities: remain source compatible with 32-bit raw legacy capability + support. + - usb-serial: Use ftdi_sio driver for RATOC REX-USB60F + - cpufreq: fix null object access on Transmeta CPU + - Smack: fuse mount hang fix + - cgroups: remove node_ prefix_from ns subsystem + - XFS: Fix memory corruption with small buffer reads + - x86: don't read maxlvt before checking if APIC is mapped + - USB: option: add new Dell 5520 HSDPA variant + - md: do not compute parity unless it is on a failed drive + - md: fix uninitialized use of mddev->recovery_wait + - md: fix prexor vs sync_request race + - HID: split Numlock emulation quirk from HID_QUIRK_APPLE_HAS_FN. + - USB: do not handle device 1410:5010 in 'option' driver + - USB: unusual_devs: Add support for GI 0401 SD-Card interface + - USB: add Telstra NextG CDMA id to option driver + - USB: fix build errors in ohci-omap.c and ohci-sm501.c + - USB: add TELIT HDSPA UC864-E modem to option driver + - memory_hotplug: always initialize pageblock bitmap + - x86: fix bad pmd ffff810000207xxx(9090909090909090) + - USB: add Zoom Telephonics Model 3095F V.92 USB Mini External modem to + cdc-acm + - x86: prevent PGE flush from interruption/preemption + - IPoIB: Test for NULL broadcast object in ipiob_mcast_join_finish() + - i386: fix asm constraint in do_IRQ() + - i2c-nforce2: Disable the second SMBus channel on the DFI Lanparty NF4 + Expert + - i2c/max6875: Really prevent 24RF08 corruption + - brk: make sys_brk() honor COMPAT_BRK when computing lower bound + - Revert "PCI: remove default PCI expansion ROM memory allocation" + - PS3: gelic: fix memory leak + - eCryptfs: remove unnecessary page decrypt call + - netfilter: nf_conntrack_expect: fix error path unwind in + nf_conntrack_expect_init() + - netfilter: xt_connlimit: fix accouning when receive RST packet in + ESTABLISHED state + - netfilter: nf_conntrack_ipv6: fix inconsistent lock state in + nf_ct_frag6_gather() + - POWERPC Bolt in SLB entry for kernel stack on secondary cpus + - netfilter: xt_iprange: module aliases for xt_iprange + - x86: user_regset_view table fix for ia32 on 64-bit + - x86: if we cannot calibrate the TSC, we panic. + - CIFS: Fix UNC path prefix on QueryUnixPathInfo to have correct slash + - x86, fpu: fix CONFIG_PREEMPT=y corruption of application's FPU stack + - libata: force hardreset if link is in powersave mode + - x86: fix setup of cyc2ns in tsc_64.c + - x86: distangle user disabled TSC from unstable + - x86: disable TSC for sched_clock() when calibration failed + - pagemap: fix bug in add_to_pagemap, require aligned-length reads of + /proc/pid/pagemap + - ext3/4: fix uninitialized bs in ext3/4_xattr_set_handle() + - proc: calculate the correct /proc/ link count + - CPUFREQ: Make acpi-cpufreq more robust against BIOS freq changes behind + our back. + - USB: remove PICDEM FS USB demo (04d8:000c) device from ldusb + - types.h: don't expose struct ustat to userspace + + [ Bastian Blank ] + * Ignore ABI change in internal XFS symbol. + + -- Bastian Blank Thu, 12 Jun 2008 08:47:11 +0200 + +linux-2.6 (2.6.25-4) unstable; urgency=low + + [ maximilian attems ] + * Fix arm Kconfig logic disabling random drivers. (closes: #481410) + * Add stable release 2.6.25.4: + - OHCI: fix regression upon awakening from hibernation + - V4L/DVB (7473): PATCH for various Dibcom based devices + - {nfnetlink, ip, ip6}_queue: fix skb_over_panic when enlarging packets + - dccp: return -EINVAL on invalid feature length + - md: fix raid5 'repair' operations + - sparc: Fix SA_ONSTACK signal handling. + - sparc: Fix fork/clone/vfork system call restart. + - sparc64: Stop creating dummy root PCI host controller devices. + - sparc64: Fix wedged irq regression. + - SPARC64: Fix args to 64-bit sys_semctl() via sys_ipc(). + - serial: Fix sparc driver name strings. + - sparc: Fix ptrace() detach. + - sparc: Fix mremap address range validation. + - sparc: Fix debugger syscall restart interactions. + - sparc32: Don't twiddle PT_DTRACE in exec. + - r8169: fix oops in r8169_get_mac_version + - SCSI: aha152x: Fix oops on module removal + - SCSI: aha152x: fix init suspiciously returned 1, it should follow + 0/-E convention + - sch_htb: remove from event queue in htb_parent_to_leaf() + - i2c-piix4: Blacklist two mainboards + - SCSI: qla1280: Fix queue depth problem + - ipvs: fix oops in backup for fwmark conn templates + - USB: airprime: unlock mutex instead of trying to lock it again + - rtc: rtc_time_to_tm: use unsigned arithmetic + - SCSI: libiscsi regression in 2.6.25: fix nop timer handling + - SCSI: libiscsi regression in 2.6.25: fix setting of recv timer + - can: Fix can_send() handling on dev_queue_xmit() failures + - macvlan: Fix memleak on device removal/crash on module removal + - nf_conntrack: padding breaks conntrack hash on ARM + - sparc: sunzilog uart order + - r8169: fix past rtl_chip_info array size for unknown chipsets + - x86: use defconfigs from x86/configs/* + - vt: fix canonical input in UTF-8 mode + - ata_piix: verify SIDPR access before enabling it + - serial: access after NULL check in uart_flush_buffer() + - x86: sysfs cpu?/topology is empty in 2.6.25 (32-bit Intel system) + - XFRM: AUDIT: Fix flowlabel text format ambibuity. + * Update userspace merged HZ alpha fixed version. + * Backport netfilter: Move linux/types.h inclusions outside of #ifdef + __KERNEL__. (closes: #479899) + * types.h: don't expose struct ustat to userspace. (closes: #429064) + + [ Bastian Blank ] + * Fix ABI changes from: ipvs: fix oops in backup for fwmark conn templates + + -- maximilian attems Tue, 27 May 2008 11:46:11 +0200 + +linux-2.6 (2.6.25-3) unstable; urgency=low + + [ Bastian Blank ] + * Add stable release 2.6.25.3: + - sit: Add missing kfree_skb() on pskb_may_pull() failure. + - sparc: Fix mmap VA span checking. + - CRYPTO: eseqiv: Fix off-by-one encryption + - CRYPTO: authenc: Fix async crypto crash in crypto_authenc_genicv() + - CRYPTO: cryptd: Correct kzalloc error test + - CRYPTO: api: Fix scatterwalk_sg_chain + - x86 PCI: call dmi_check_pciprobe() + - b43: Fix some TX/RX locking issues + - kprobes/arm: fix decoding of arithmetic immediate instructions + - kprobes/arm: fix cache flush address for instruction stub + - b43: Fix dual-PHY devices + - POWERPC: mpc5200: Fix unterminated of_device_id table + - reiserfs: Unpack tails on quota files + - sched: fix hrtick_start_fair and CPU-Hotplug + - vfs: fix permission checking in sys_utimensat + - md: fix use after free when removing rdev via sysfs + - mm: fix usemap initialization + - 2.6.25 regression: powertop says 120K wakeups/sec + + [ maximilian attems ] + * Redisable old dup prism54 driver. + * Reenable accidentaly disabled SIS190. (closes: #478773) + * Add lmkl patch to unbreak HZ userspace aka perl5.10 build fix. + (closes: #480130) + + [ Martin Michlmayr ] + * [armel] Disable some SCSI drives (that are disabled on arm) so the + ramdisk will fit in flash on NSLU2 (closes: #480310). + + -- maximilian attems Wed, 14 May 2008 11:16:56 +0200 + +linux-2.6 (2.6.25-2) unstable; urgency=low + + [ maximilian attems ] + * Add stable release 2.6.25.1: + - Fix dnotify/close race (CVE-2008-1375) + - V4L: Fix VIDIOCGAP corruption in ivtv + - USB: log an error message when USB enumeration fails + - USB: OHCI: fix bug in controller resume + - SCSI: qla2xxx: Correct regression in relogin code. + - rose: Socket lock was not released before returning to user space + - x86, pci: fix off-by-one errors in some pirq warnings + - hrtimer: timeout too long when using HRTIMER_CB_SOFTIRQ + - RDMA/nes: Fix adapter reset after PXE boot + - rtc-pcf8583 build fix + - JFFS2: Fix free space leak with in-band cleanmarkers + - SELinux: no BUG_ON(!ss_initialized) in selinux_clone_mnt_opts + - tehuti: check register size (CVE-2008-1675) + - IPSEC: Fix catch-22 with algorithm IDs above 31 + - alpha: unbreak OSF/1 (a.out) binaries + - tehuti: move ioctl perm check closer to function start (CVE-2008-1675) + - aio: io_getevents() should return if io_destroy() is invoked + - mm: fix possible off-by-one in walk_pte_range() + - TCP: Increase the max_burst threshold from 3 to tp->reordering. + - ssb: Fix all-ones boardflags + - cgroup: fix a race condition in manipulating tsk->cg_list + - drivers/net/tehuti: use proper capability check for raw IO access + - tg3: 5701 DMA corruption fix + - V4L: tea5761: bugzilla #10462: tea5761 autodetection code were broken + - b43: Workaround invalid bluetooth settings + - b43: Add more btcoexist workarounds + - b43: Workaround DMA quirks + - dm snapshot: fix chunksize sector conversion + - x86: Fix 32-bit x86 MSI-X allocation leakage + - RTNETLINK: Fix bogus ASSERT_RTNL warning + - net: Fix wrong interpretation of some copy_to_user() results. + - dz: test after postfix decrement fails in dz_console_putchar() + - RDMA/nes: Free IRQ before killing tasklet + - S2io: Fix memory leak during free_tx_buffers + - S2io: Version update for memory leak fix during free_tx_buffers + - USB: Add HP hs2300 Broadband Wireless Module to sierra.c + - V4L: cx88: enable radio GPIO correctly + - hrtimer: raise softirq unlocked to avoid circular lock dependency + - tcp: tcp_probe buffer overflow and incorrect return value + * [ide] Add upstream piix patch for asus eee pc. (closes: #479217) + + [ Christian T. Steigies ] + * [m68k] Add patches for 2.6.25. + * [m68k] Disable EXT4DEV_FS for now. + * [m68k] Enable SCSI_MAC_ESP for mac. + + [ Ian Campbell ] + * [x86]: Enable Xen guest support in all i386 flavours. + + [ Bastian Blank ] + * Add stable release 2.6.25.2: + - fix SMP ordering hole in fcntl_setlk() (CVE-2008-1669) + + -- Bastian Blank Thu, 08 May 2008 14:46:48 +0200 + +linux-kbuild-2.6 (2.6.25-2) unstable; urgency=low + + * modpost: Support new parameters. (closes: #479271) + + -- Bastian Blank Mon, 05 May 2008 19:58:40 +0200 + +linux-kbuild-2.6 (2.6.25-1) unstable; urgency=low + + * New upstream version. + + -- Bastian Blank Fri, 02 May 2008 10:32:13 +0200 + +linux-2.6 (2.6.25-1) unstable; urgency=low + + * New upstream release (closes: #456799, #468440, #475161, #475134, #475441) + - Add oabi shim for fstatat64 (closes: #462677) + + [ maximilian attems ] + * topconfig set NOZOMI, CRYPTO_SEQIV, CRYPTO_CTR, CRYPTO_GCM, CRYPTO_CCM, + CRYPTO_SALSA20, CRYPTO_LZO, CRYPTO_DEV_HIFN_795X, USB_SI470X, + USB_STKWEBCAM, VIDEO_PVRUSB2_ONAIR_USB2, VIDEO_PVRUSB2_ONAIR_CREATOR, + VIDEO_EM28XX_ALSA, CRYPTO_DEV_HIFN_795X_RNG, PCF8575, TPS65010, RTL8180, + ENC28J60, R6040, CAN, NETFILTER_XT_MATCH_OWNER, MAC80211_RC_DEFAULT_PI, + NETFILTER_XT_TARGET_RATEEST, NETFILTER_XT_TARGET_TCPOPTSTRIP, + NETFILTER_XT_MATCH_IPRANGE, NETFILTER_XT_MATCH_RATEEST, SND_OXYGEN, + SND_HIFIER, SND_VIRTUOSO, USB_NET_RNDIS_WLAN, USB_ANNOUNCE_NEW_DEVICES, + USB_SERIAL_IUU, NET_CLS_FLOW, INFINIBAND_NES, RTC_DRV_R9701, + RTC_DRV_DS1511, MEMSTICK, SENSORS_W83L786NG, SENSORS_ADS7828, IPWIRELESS, + RISCOM8, IGB, UTS_NS, IPC_NS, IPV6_ROUTE_INFO, ENCLOSURE_SERVICES, + SCSI_ENCLOSURE, SENSORS_ADT7473, SCSI_MVSAS, REALTEK_PHY, RTC_DRV_S35390A, + MEMSTICK_JMICRON_38X, IWL4965_HT. + * [amd64] Enable CRYPTO_SALSA20_X86_64, EDAC_I3000, EFI, EFI_VARS, I8K, + PARAVIRT_GUEST, PARAVIRT, VIRTIO_PCI, VIRTIO_BALLOON, SPARSEMEM_VMEMMAP. + * [amd64, i386]: Enable LEDS_CLEVO_MAIL, INPUT_APANEL, ACER_WMI, + THINKPAD_ACPI_HOTKEY_POLL, HP_WATCHDOG, THINKPAD_ACPI_VIDEO, + VIRTION_CONSOLE, ACPI_WMI, IO_DELAY_0X80. + * topconfig disable PARPORT_PC_FIFO due to instabilities. + (closes: #366165, #388309, #406056, #407816, #453911) + * [amd64, i386]: Enable SONYPI_COMPAT for better sony laptop support. + * topconfig: Enable HID_FF for some HID devices. (closes: #441348) + * topconfig: Enable IPV6_ROUTER_PREF for multi-homed net. (closes: #449247) + * topconfig: Set UTF8 as default encoding. (closes: #417324) + * Tighten yaird dependency. (closes: #403171) + * Configs general cleanup, centralize USB_NET, disable IRDA_DEBUG. + * postinst: Nuke confusing postinst message. (closes: #465512) + * [sparc]: Enable SCSI_SCAN_ASYNC. + * [i386]: Enable TC1100_WMI, SND_SIS7019, CRYPTO_SALSA20_586. + * topconfig: Centralize old IEEE80211 stack options. (closes: #470558) + * control.source.in: Newer standard version without changes. + * copyright: adapt to latest lintian recommendation. + * input: Add 4 additional exports for modular speakup and braille support. + * firewire: Add firewire-git.patch for latest firewire tree features. + * 686: Set USB_PERSIST for eee pc suspend support. (closes: #468213) + * topconfig disable PATA_SIS as sis5513 enabled. (closes: #475525) + * [xen]: Support direct load of bzImage under Xen. (closes: #474509) + Thanks Ian Campbell for patches. + * [xen]: Module autoprobing support for frontend drivers. + * [arm]: Don't ovverride topconfig SENSORS_W83792D setting. + (closes: #477745) + + [ Martin Michlmayr ] + * [arm/armel] Add a kernel for Orion based devices, such as the QNAP + TS-109/TS-209. + * [mips(el)/sb1*] Enable SB1250_MAC (thanks Thomas Bogendoerfer). + * [mipsel/r5k-cobalt] Enable DUMMY_CONSOLE since this might + fix the debian-installer startup hang on Qube 2700. + * [arm/footbridge] Disable KEYS and SECURITY for smaller d-i image. + * [arm/footbridge] Build NFS as a module to make the image smaller. + * [mips/r5k-ip32] Don't build in NFS. + * [mips/r5k-ip32] Use the generic config options for NFS, which will + enable NFSv4. (closes: #471007) + * [mips/r5k-ip32] Enable R8169, requested by Giuseppe Sacco. + * [arm/iop32x] Enable MACH_EM7210. (closes: #473136) + * [arm/orion] Add patch to set the MAC address on QNAP TS-109/TS-209 + (Lennert Buytenhek). + * [arm/orion] Add support for Buffalo Linkstation Pro/Live (Byron Bradley). + * [arm/orion] Fix hang when Write Allocate is enabled (Lennert Buytenhek). + * [arm/orion] Add support for QNAP TS-409 (Sylver Bruneau). + * [arm/orion] Add preliminary support for HP mv2120. + + [ Daniel Baumann ] + * Added patch from unionfs upstream to export release_open_intent symbol. + + [ Gordon Farquharson ] + * [arm/ixp4xx] Use GPIO LED driver as opposed to ixp4xx LED driver. + * [arm/ixp4xx] Fix ixp4xx-beeper module so that udev loads it + automatically. + * [arm/iop32x] Enable support for the GLAN Tank flash chip (M29W400DB). + * [arm/iop32x] Do not build the ARTOP PATA driver (PATA_ARTOP). + * [arm/iop32x] Register the F75375 device in the GLAN Tank platform code. + * Prevent physmap from calling request_module() too early. + * [arm/ixp4xx] Fix used_sram_bitmap corruption in qmgr_release_queue(). + + [ Aurelien Jarno ] + * [mips/mipsel] Enable CONFIG_NO_HZ, CONFIG_HIGH_RES_TIMERS for dynticks + and true high-resolution timers on 4kc-malta and 5kc-malta flavours. + * [i386, amd64] Set modular VIRTIO, VIRTIO_RING, VIRTIO_BLK, VIRTIO_NET. + + [ Bastian Blank ] + * Remove binary only firmwares for: + - Broadcom NetXtremeII 10Gb support + * Disable now broken drivers: + - Broadcom NetXtremeII 10Gb support + * Fix broken drivers: + - Broadcom NetXtremeII support + * [powerpc] Use new wrapper install support. + * [s390] Enable DM_MULTIPATH_EMC. + * Enable AF_RXRPC, RXKAD, PRINTK_TIME, DEBUG_KERNEL, SCHED_DEBUG, + TIMER_STATS, DEBUG_FS. + * Disable R3964, USB_GADGET. + * [hppa] Enable several filesystems. + * Make NLS modular. + * [i386/486] Make ext2 modular. + * [alpha,amd64,i386] Make ATM modular. + * [powerpc/powerpc64] Support PA Semi based plattforms. (closes: #463200) + * Follow upstream change for default TCP congestion control. + (closes: #477589) + + [ Steve Langasek ] + * topconfig: Enable CONFIG_CIFS_WEAK_PW_HASH, required for compatibility + with legacy (pre-NTLM) fileservers. + + [ Christian Perrier ] + * Debconf template rewrite + mark them as translatable. + Thanks to Justin B Rye for review. + + -- Bastian Blank Fri, 25 Apr 2008 16:27:23 +0200 + +linux-2.6 (2.6.24-6) unstable; urgency=high + + [ Martin Michlmayr ] + * [armel] Fix FTBFS on armel by enabling CONFIG_USB_USBNET=m in + armel/config, as it was done for arm/config already. + * [armel] Add oabi shim for fstatat64 (Riku Voipio) + + [ Gordon Farquharson ] + * [arm/iop32x] Do not build the ARTOP PATA driver (PATA_ARTOP). + * [arm/iop32x] Enable MTD_CMDLINE_PARTS. + + [ Kyle McMartin ] + * [hppa] fix pdc_console panic at boot (closes: #476292). + * [hppa] properly flush user signal tramps + * [hppa] special case futex cmpxchg on kernel space NULL (closes: 476285). + + -- Bastian Blank Fri, 18 Apr 2008 19:41:30 +0200 + +linux-2.6 (2.6.24-5) unstable; urgency=low + + [ Gordon Farquharson ] + * [arm] Enable asix driver (USB_NET_AX8817X). + * [arm] Enable CONFIG_USB_CATC, CONFIG_USB_KAWETH, CONFIG_USB_PEGASUS, + and CONFIG_USB_RTL8150. + * [arm/ixp4xx] Update Ethernet driver (closes: #471062). + * [arm/ixp4xx] Add HSS driver. + + [ Bastian Blank ] + * [s390/s390-tape]: Override localversion correctly. + * Add stable release 2.6.24.3: + - x86_64: CPA, fix cache attribute inconsistency bug + - bonding: fix NULL pointer deref in startup processing + - POWERPC: Revert chrp_pci_fixup_vt8231_ata devinit to fix libata on pegasos + - PCMCIA: Fix station address detection in smc + - SCSI: gdth: scan for scsi devices + - USB: fix pm counter leak in usblp + - S390: Fix futex_atomic_cmpxchg_std inline assembly. + - genirq: do not leave interupts enabled on free_irq + - hrtimer: catch expired CLOCK_REALTIME timers early + - hrtimer: check relative timeouts for overflow + - SLUB: Deal with annoying gcc warning on kfree() + - hrtimer: fix *rmtp/restarts handling in compat_sys_nanosleep() + - hrtimer: fix *rmtp handling in hrtimer_nanosleep() + - Disable G5 NAP mode during SMU commands on U3 + - Be more robust about bad arguments in get_user_pages() + - AUDIT: Increase skb->truesize in audit_expand + - BLUETOOTH: Add conn add/del workqueues to avoid connection fail. + - INET: Prevent out-of-sync truesize on ip_fragment slow path + - INET_DIAG: Fix inet_diag_lock_handler error path. + - IPCOMP: Fetch nexthdr before ipch is destroyed + - IPCOMP: Fix reception of incompressible packets + - IPV4: fib: fix route replacement, fib_info is shared + - IPV4: fib_trie: apply fixes from fib_hash + - PKT_SCHED: ematch: oops from uninitialized variable (resend) + - SELinux: Fix double free in selinux_netlbl_sock_setsid() + - TC: oops in em_meta + - TCP: Fix a bug in strategy_allowed_congestion_control + - SCSI: sd: handle bad lba in sense information + - Fix dl2k constants + - XFS: Fix oops in xfs_file_readdir() + - hugetlb: add locking for overcommit sysctl + - inotify: fix check for one-shot watches before destroying them + - NFS: Fix a potential file corruption issue when writing + - NETFILTER: nf_conntrack_tcp: conntrack reopening fix + - SPARC/SPARC64: Fix usage of .section .sched.text in assembler code. + * Add stable release 2.6.24.4: + - S390 futex: let futex_atomic_cmpxchg_pt survive early functional tests. + - slab: NUMA slab allocator migration bugfix + - relay: fix subbuf_splice_actor() adding too many pages + - BLUETOOTH: Fix bugs in previous conn add/del workqueue changes. + - SCSI advansys: Fix bug in AdvLoadMicrocode + - async_tx: avoid the async xor_zero_sum path when src_cnt > device->max_xor + - aio: bad AIO race in aio_complete() leads to process hang + - jbd: correctly unescape journal data blocks + - jbd2: correctly unescape journal data blocks + - zisofs: fix readpage() outside i_size + - NETFILTER: nfnetlink_log: fix computation of netlink skb size + - NETFILTER: nfnetlink_queue: fix computation of allocated size for netlink skb + - NETFILTER: xt_time: fix failure to match on Sundays + - sched_nr_migrate wrong mode bits + - nfsd: fix oops on access from high-numbered ports + - sched: fix race in schedule() + - SCSI: mpt fusion: don't oops if NumPhys==0 + - SCSI: gdth: fix to internal commands execution + - SCSI: gdth: bugfix for the at-exit problems + - Fix default compose table initialization + - x86: don't use P6_NOPs if compiling with CONFIG_X86_GENERIC + - SCSI: fix BUG when sum(scatterlist) > bufflen + - USB: ehci: handle large bulk URBs correctly (again) + - USB: ftdi_sio - really enable EM1010PC + - USB: ftdi_sio: Workaround for broken Matrix Orbital serial port + - VT notifier fix for VT switch + - eCryptfs: make ecryptfs_prepare_write decrypt the page + - ioat: fix 'ack' handling, driver must ensure that 'ack' is zero + - macb: Fix speed setting + - x86: move out tick_nohz_stop_sched_tick() call from the loop + - atmel_spi: fix clock polarity + - b43: Backport bcm4311 fix + - arcmsr: fix IRQs disabled warning spew + - e1000e: Fix CRC stripping in hardware context bug + - PCI x86: always use conf1 to access config space below 256 bytes + - moduleparam: fix alpha, ia64 and ppc64 compile failures + - pata_hpt*, pata_serverworks: fix UDMA masking + - SCSI advansys: fix overrun_buf aligned bug + - NETFILTER: fix ebtable targets return + - NETFILTER: Fix incorrect use of skb_make_writable + - NETFILTER: nfnetlink_queue: fix SKB_LINEAR_ASSERT when mangling packet data + - spi: pxa2xx_spi clock polarity fix + - ufs: fix parenthesisation in ufs_set_fs_state() + - hugetlb: ensure we do not reference a surplus page after handing it to buddy + - file capabilities: simplify signal check + - futex: runtime enable pi and robust functionality + - futex: fix init order + - ARM pxa: fix clock lookup to find specific device clocks + - x86: replace LOCK_PREFIX in futex.h + - SCSI aic94xx: fix REQ_TASK_ABORT and REQ_DEVICE_RESET + - SCSI gdth: don't call pci_free_consistent under spinlock + - SCSI ips: fix data buffer accessors conversion bug + - usb-storage: don't access beyond the end of the sg buffer + - fuse: fix permission checking + - CRYPTO xts: Use proper alignment + - CRYPTO xcbc: Fix crash with IPsec + - SCSI ips: handle scsi_add_host() failure, and other err cleanups + - x86: adjust enable_NMI_through_LVT0() + - drivers: fix dma_get_required_mask + - iov_iter_advance() fix + - x86: Clear DF before calling signal handler (closes: #469058) + - ub: fix up the conversion to sg_init_table() + - MIPS: Mark all but i8259 interrupts as no-probe. + - IRQ_NOPROBE helper functions + - IPCOMP: Disable BH on output when using shared tfm + - IPCONFIG: The kernel gets no IP from some DHCP servers + - IPV4: Remove IP_TOS setting privilege checks. + - IPV6: dst_entry leak in ip4ip6_err. + - IPV6: Fix IPsec datagram fragmentation + - NET: Fix race in dev_close(). (Bug 9750) + - NET: Messed multicast lists after dev_mc_sync/unsync (closes: #466719) + - NIU: Bump driver version and release date. + - NIU: Fix BMAC alternate MAC address indexing. + - NIU: More BMAC alt MAC address fixes. + - TCP: Improve ipv4 established hash function. + - SPARC: Fix link errors with gcc-4.3 + - SPARC64: Loosen checks in exception table handling. + + [ Martin Michlmayr ] + * [mips/r4k-ip22] Enable BLK_DEV_LOOP and BLK_DEV_CRYPTOLOOP. + * [mips/r5k-ip32] Enable BLK_DEV_LOOP and BLK_DEV_CRYPTOLOOP. + * [mips/r4k-ip22] Enable PPP, PPPOE and SLIP. + * [mips/r5k-ip32] Enable PPP, PPPOE and SLIP. + * Don't check the section size when we're cross compiling. + + [ dann frazier ] + * Remove cap_task_kill (closes: #463669) + + -- Bastian Blank Thu, 27 Mar 2008 12:40:16 +0100 + +linux-2.6 (2.6.24-4) unstable; urgency=low + + * Add stable release 2.6.24.1: + - splice: missing user pointer access verification (CVE-2008-0009/10) + - drm: the drm really should call pci_set_master.. + - Driver core: Revert "Fix Firmware class name collision" + - fix writev regression: pan hanging unkillable and un-straceable + - sched: fix high wake up latencies with FAIR_USER_SCHED + - sched: let +nice tasks have smaller impact + - b43: Reject new firmware early + - selinux: fix labeling of /proc/net inodes + - b43legacy: fix DMA slot resource leakage + - b43legacy: drop packets we are not able to encrypt + - b43legacy: fix suspend/resume + - b43legacy: fix PIO crash + - b43: Fix dma-slot resource leakage + - b43: Drop packets we are not able to encrypt + - b43: Fix suspend/resume + - sky2: fix for WOL on some devices + - sky2: restore multicast addresses after recovery + - x86: restore correct module name for apm + - ACPI: update ACPI blacklist + - PCI: Fix fakephp deadlock + - sys_remap_file_pages: fix ->vm_file accounting + - lockdep: annotate epoll + - forcedeth: mac address mcp77/79 + - USB: Fix usb_serial_driver structure for Kobil cardreader driver. + - USB: handle idVendor of 0x0000 + - USB: fix usbtest halt check on big endian systems + - USB: storage: Add unusual_dev for HP r707 + - USB: Variant of the Dell Wireless 5520 driver + - USB: use GFP_NOIO in reset path + - USB: ftdi driver - add support for optical probe device + - USB: pl2303: add support for RATOC REX-USB60F + - USB: remove duplicate entry in Option driver and Pl2303 driver for Huawei modem + - USB: sierra: add support for Onda H600/Zte MF330 datacard to USB Driver for Sierra Wireless + - USB: ftdi-sio: Patch to add vendor/device id for ATK_16IC CCD + - USB: ftdi_sio - enabling multiple ELV devices, adding EM1010PC + - USB: sierra driver - add devices + - USB: Adding YC Cable USB Serial device to pl2303 + - USB: Sierra - Add support for Aircard 881U + - USB: add support for 4348:5523 WinChipHead USB->RS 232 adapter + - USB: CP2101 New Device IDs + - usb gadget: fix fsl_usb2_udc potential OOPS + - USB: keyspan: Fix oops + - vm audit: add VM_DONTEXPAND to mmap for drivers that need it (CVE-2008-0007) + - slab: fix bootstrap on memoryless node + - DVB: cx23885: add missing subsystem ID for Hauppauge HVR1800 Retail + + [ Martin Michlmayr ] + * [arm/ixp4xx] Enble ATA_OVER_ETH, requested by Nicola Fankhauser. + * [arm/iop32x] Enble ATA_OVER_ETH. + + [ Bastian Blank ] + * Add stable release 2.6.24.2: + - splice: fix user pointer access in get_iovec_page_array() + (CVE-2008-0600, closes: #464945) + + -- Bastian Blank Mon, 11 Feb 2008 12:29:23 +0100 + +linux-2.6 (2.6.24-3) unstable; urgency=low + + [ maximilian attems ] + * [scsi]: hptiop: add more adapter models and fixes. + * [amd64, i386]: Reenable ACPI_PROCFS_POWER. (closes: #463253) + + [ Gordon Farquharson ] + * [arm/ixp4xx] Update Ethernet driver so that it can be loaded by udev + automatically. + + [ Martin Michlmayr ] + * [mips/r5k-ip32] Enable R8169, requested by Giuseppe Sacco. (Closes: + #463705) + + -- Bastian Blank Wed, 06 Feb 2008 13:05:18 +0100 + +linux-2.6 (2.6.24-2) unstable; urgency=low + + [ Bastian Blank ] + * Fix broken merge of flavour specific settings. + - [i386]: Recommends are fixed. + - [s390/s390-tape]: Built as small image again. + + [ maximilian attems ] + * Disable old dup prism54 driver. + * Stable queue: slab: fix bootstrap on memoryless node. + + [ Aurelien Jarno ] + * [arm]: Remove options that are present in topconfig from config.versatile. + * [arm]: Turn off B44 since it fails to compile on armel. + + -- Bastian Blank Thu, 31 Jan 2008 17:37:00 +0100 + +linux-kbuild-2.6 (2.6.24-1) unstable; urgency=low + + * New upstream version. + + -- Bastian Blank Tue, 29 Jan 2008 14:03:06 +0100 + +linux-2.6 (2.6.24-1) unstable; urgency=low + + * New upstream release + (closes: #461639) + + [ Martin Michlmayr ] + * Don't build the AdvanSys driver on ARM since it fails to compile. + * Disable ATH5K on ARM since it fails to compile. + * [arm/iop32x] Activate DMADEVICES. + * [mips/mipsel] Turn off CONFIG_NIU since it fails to compile. + + [ maximilian attems ] + * [amd64, i386]: Enable ACPI_SYSFS_POWER and disable ACPI_PROCFS_POWER. + * [fw] Sync with latest git-ieee1394 for sbp2 fixes. + + [ Bastian Blank ] + * Kill reboot warning from old templates. + * Fix strange default value for link_in_boot. (closes: #425056) + * [powerpc/powerpc]: Enable Efika support. + * [powerpc]: Lower mkvmlinuz to the state of a bootloader. + * [powerpc]: Remove ppc and m68k include dirs from headers. + * Remove versions from relations fullfilled in stable. + + [ Aurelien Jarno ] + * [arm]: Update versatile config. + + [ Gordon Farquharson ] + * [arm/ixp4xx] Change the ixp4xx network driver from the driver + written by Christian Hohnstaedt to the driver written by Krzysztof + Hasala which has partially been accepted upstream. + + -- Bastian Blank Sat, 26 Jan 2008 11:35:11 +0100 + +linux-2.6 (2.6.24~rc8-1~experimental.1) experimental; urgency=low + + * New upstream release + (closes: #454776, #458142, #457992, #458899, #426124, #459732, #455566). + + [ maximilian attems ] + * New upstream release, rebase dfsg stuff plus drivers-atm.patch, + scripts-kconfig-reportoldconfig.patch. + * [amd64, powerpc] Set HIGH_RES_TIMERS and NO_HZ (closes: #458312). + * topconfig set NETFILTER_XT_MATCH_TIME, NET_ACT_NAT, KSDAZZLE_DONGLE, + KS959_DONGLE, NET_9P_FD, IP1000, VETH, IXGBE, NIU, TEHUTI, LIBERTAS_CS, + LIBERTAS_SDIO, RT2X00, SENSORS_ADT7470, SENSORS_I5K_AMB, SENSORS_F71882FG, + SENSORS_FSCHMD, SENSORS_IBMPEX, CRYPTO_XTS, CRYPTO_SEED, CRYPTO_AUTHENC, + DVB_S5H1409, DVB_TUNER_MT2131, INET_LRO, MMC_RICOH_MMC, MMC_SPI, + RTC_DRV_DS1374, VIDEO_CX23885, VIDEO_FB_IVTV, USB_SERIAL_CH341, + SCSI_SRP_TGT_ATTRS, ADM8211, MTD_INTEL_VR_NOR, MTD_ALAUDA, + MTD_ONENAND_2X_PROGRAM, MTD_ONENAND_SIM, DM_MULTIPATH_HP, FUJITSU_LAPTOP, + QUOTA_NETLINK_INTERFACE, DM_UEVENT, SCSI_FC_TGT_ATTRS, SSB, BT_HCIUART_LL, + BT_HCIBTSDIO, MTD_OOPS, CGROUPS, MDIO_BITBANG, HIDRAW, P54, SDIO_UART, + NETCONSOLE_DYNAMIC, SECURITY_FILE_CAPABILITIES. + * Disable smbfs in topconfig, not supported upstream, use cifs. + * Disable bcm43xx, deprecated by upstream. Enable B43 (needs v4 firmware) + and B43LEGACY (needs v3 firmware). + * [i386]: Set SND_SC6000, EDAC_I3000, EDAC_I5000, SBC7240_WDT, + NET_9P_VIRTIO, FB_GEODE_LX, VIRTIO_NET, VIRTIO_BLK. + * Set USB_EHCI_TT_NEWSCHED fills USB 2.0 bandwith better. (closes: #454797) + * postrm: Nuke initramfs sha1sum on linux-image removal. (closes: #420245) + * Unifiy BSD_PROCESS_ACCT settings across configs. (closes: #455892) + * Reenable DABUSB as firmware is BSD licensed. + * [hppa]: Disable OCFS2, due build trouble. + * topconfig: Enable delay accounting TASKSTATS. (closes: #433204) + * Add git-ieee1394.patch for latest firewire fixes. + * [i386] Enable PARAVIRT_GUEST. (closes: #457562) + * [amd64, i386] Enable CPU_IDLE for software-controlled idle pm. + * [amd64, i386] Enable IT8712F_WDT, FB_EFI. + * Add and enable at76.patch wireless driver for Atmel USB cards. + * Add and enable ath5k.patch wireless driver for Atheros 5xxx cards. + * Unify VLAN_8021Q setting, needed also on r5k-cobalt. + * Double max SERIAL_8250_NR_UARTS to 32. (closes: #440807) + * topconfig: Enable AUDITSYSCALL for better SELinux support. + + [ Bastian Blank ] + * [amd64, i386]: Set kernel architecture to x86. + * [i386]: Remove linux-libc-dev arch override. + + [ Martin Michlmayr ] + * [mipsel/r5k-cobalt] Enable the new LEDs driver for Cobalt RaQ. + * [arm/iop32x] Re-enable USB_NET and PPP, thanks Daniel Hess (closes: + #456416). + * [arm/iop32x] Enable BSD_PROCESS_ACCT and POSIX_MQUEUE (closes: #455892). + * [mips] Disable AdvanSys SCSI since it doesn't compile. + * [arm/ixp4xx] Enable IP_ADVANCED_ROUTER, requested by Oliver Urbann. + * [arm/iop32x] Enable IP_ADVANCED_ROUTER. + + [ dann frazier ] + * [ia64]: Enable BLK_CPQ_DA + + [ Frederik Schüler ] + * Add GFS2 locking symbols export patch. + + [ Aurelien Jarno ] + * [mips/mipsel] Remove QEMU flavour, as the Malta platform is now correctly + emulated in QEMU. + + [ Christian T. Steigies ] + * [m68k]: Update patches from linux-m68k CVS + * [m68k]: Enable building for bvme6000, mvme147, and mvme16x again + + -- Bastian Blank Fri, 18 Jan 2008 12:23:26 +0100 + +linux-2.6 (2.6.23-2) unstable; urgency=low + + [ dann frazier ] + * [ia64]: Enable BLK_CPQ_DA + + [ Gordon Farquharson ] + * [arm/iop32x] Use the new i2c framework to load rtc-rs5c372 for the + GLAN Tank. + + [ Frederik Schüler ] + * Export gfs2 locking symbols required to build gfs1 module. + + [ maximilian attems ] + * [ppc] Reenable PMAC_BACKLIGHT. + * [sparc] Add davem get_cpu() SunFire boot patch. (closes: #440720) + * Add stable release 2.6.23.10: + - IPV4: Remove bogus ifdef mess in arp_process + - KVM: x86 emulator: Use emulator_write_emulated and not emulator_write_std + - KVM: SVM: Fix FPU leak while emulating clts + - revert "dpt_i2o: convert to SCSI hotplug model" + - KVM: x86 emulator: fix access registers for instructions with ModR/M + byte and Mod = 3 + - KVM: x86 emulator: invd instruction + - KVM: SVM: Intercept the 'invd' and 'wbinvd' instructions + - KVM: Skip pio instruction when it is emulated, not executed + - KVM: VMX: Force vm86 mode if setting flags during real mode + - forcedeth: new mcp79 pci ids + - forcedeth boot delay fix + - PFKEY: Sending an SADB_GET responds with an SADB_GET + - rd: fix data corruption on memory pressure. + - create /sys/.../power when CONFIG_PM is set + - USB: fix up EHCI startup synchronization + - RXRPC: Add missing select on CRYPTO + - KVM: VMX: Reset mmu context when entering real mode + - NET: random : secure_tcp_sequence_number should not assume + CONFIG_KTIME_SCALAR + - NET: Corrects a bug in ip_rt_acct_read() + - NETFILTER: Fix NULL pointer dereference in nf_nat_move_storage() + - netfilter: Fix kernel panic with REDIRECT target. + - IPV6: Restore IPv6 when MTU is big enough + - UNIX: EOF on non-blocking SOCK_SEQPACKET + - x86 setup: add a near jump to serialize %cr0 on 386/486 + - Fix synchronize_irq races with IRQ handler + - CRYPTO api: Fix potential race in crypto_remove_spawn + - TCP: Fix TCP header misalignment + - tmpfs: restore missing clear_highpage (CVE-2007-6417) + - TCP: MTUprobe: fix potential sk_send_head corruption + - NETFILTER: fix forgotten module release in xt_CONNMARK and xt_CONNSECMARK + - fb_ddc: fix DDC lines quirk + - VLAN: Fix nested VLAN transmit bug + - I4L: fix isdn_ioctl memory overrun vulnerability (CVE-2007-6151) + - isdn: avoid copying overly-long strings + - nf_nat: fix memset error + - esp_scsi: fix reset cleanup spinlock recursion + - libertas: properly account for queue commands + - KVM: Fix hang on uniprocessor + - USB: make the microtek driver and HAL cooperate + - TEXTSEARCH: Do not allow zero length patterns in the textsearch + infrastructure + - XFRM: Fix leak of expired xfrm_states + - NETFILTER: xt_TCPMSS: remove network triggerable WARN_ON + - BRIDGE: Lost call to br_fdb_fini() in br_init() error path + - DECNET: dn_nl_deladdr() almost always returns no error + - BRIDGE: Properly dereference the br_should_route_hook + - PKT_SCHED: Check subqueue status before calling hard_start_xmit + - Freezer: Fix APM emulation breakage + - XFS: Make xfsbufd threads freezable + - TCP: Problem bug with sysctl_tcp_congestion_control function + - wait_task_stopped(): pass correct exit_code to wait_noreap_copyout() + - KVM: x86 emulator: implement 'movnti mem, reg' + - TCP: illinois: Incorrect beta usage + - futex: fix for futex_wait signal stack corruption + - libata: kill spurious NCQ completion detection + - hrtimers: avoid overflow for large relative timeouts (CVE-2007-5966) + - Input: ALPS - add support for model found in Dell Vostro 1400 + (closes: #448818) + - PNP: increase the maximum number of resources + - sched: some proc entries are missed in sched_domain sys_ctl debug code + - ATM: [he] initialize lock and tasklet earlier + * Add stable release 2.6.23.11: + - BRIDGE: Section fix. + - Revert "Freezer: Fix APM emulation breakage" + * Backport fix for CVE-2007-5938 + - iwlwifi: fix possible NULL dereference in iwl_set_rate() + * Add stable release 2.6.23.12: + - Revert "PNP: increase the maximum number of resources" + * VM/Security: add security hook to do_brk (CVE-2007-6434) + * security: protect from stack expantion into low vm addresses + * [hppa]: Disable OCFS2, due build trouble. + + [ Aurelien Jarno ] + * [arm/versatile] Disable ACENIC and MYRI10GE as they are useless on this + platform. + * Add em28xx-dv100.patch to add support for Pinnacle Dazzle DVC 100. + + [ Bastian Blank ] + * Fix abi change in 2.6.23.10. + + -- maximilian attems Fri, 21 Dec 2007 11:47:55 +0100 + +linux-kbuild-2.6 (2.6.23-1) unstable; urgency=low + + * New upstream version. + * modpost: Support -s. + + -- Bastian Blank Wed, 05 Dec 2007 08:23:28 +0100 + +linux-2.6 (2.6.23-1) unstable; urgency=low + + * New upstream release (closes: #447682). + - r8169: fix confusion between hardware and IP header alignment + (closes: #452069). + + [ maximilian attems ] + * [ppc] Enable for powerpc config the ams (Apple Motion Sensor). + (closes: #426210) + * Add to linux-doc the missing toplevel text files. + (closes: #360876, #438697) + * Set CONFIG_BLK_DEV_IO_TRACE for blktrace(8) support. (closes: #418442) + * ipw2200: Enable IPW2200_RADIOTAP and IPW2200_PROMISCUOUS for optional + rtap interface. (closes: #432555) + * Enable in topconfig NF_CT_PROTO_UDPLITE, NETFILTER_XT_TARGET_TRACE, + NETFILTER_XT_MATCH_CONNLIMIT, NETFILTER_XT_MATCH_U32, SENSORS_ABITUGURU3, + SENSORS_LM93, SENSORS_DME1737, SENSORS_THMC50, DVB_USB_AF9005, + DVB_USB_AF9005_REMOTE, CRC7, I2C_TAOS_EVM, DS1682, SENSORS_TSL2550, + SPI_LM70_LLP, SPI_TLE62X0, W1_SLAVE_DS2760, TUNER_TEA5761, NET_9P, + DM_MULTIPATH_RDAC, NET_SCH_RR, EEPROM_93CX6, PPPOL2TP, CRYPTO_HW, UIO, + UIO_CIF, SND_CS5530, RTL8187, PC300TOO, TCG_TIS, SCSI_SAS_ATA, + PATA_MARVELL. + * [i386] Enable lguest. + * [amd64, i386] Enable VIDEO_OUTPUT_CONTROL, NETDEVICES_MULTIQUEUE. + * linux-image bugscript add cmdline. + * [amd64, i386, ia64]: Enable DMIID, ACPI_PROC_EVENT. + * Enable TCG_TPM various userspace accesses it. (closes: #439020) + * Add and enable IWLWIFI. + * Add git-ieee1394.patch for latest firewire fixes. + * [ipv6] Enable IPV6_MULTIPLE_TABLES, IPV6_SUBTREES. (closes: #441226) + * Add and enable E1000E. + * Add stable release 2.6.23.1: + - libata: sata_mv: more S/G fixes + + [ Martin Michlmayr ] + * [mips] Add a bcm1480 PCI build fix. + * Update Riku Voipio's Fintek F75375/SP driver to the latest version. + * [arm/iop32x] Set the fan on Thecus N2100 to full speed (Riku Voipio). + * [arm/iop32x] Remove the IPv6 and filesystem info from the config file + so we will get the values from the main config file. This should + enable NFSv4 and ip6tables support requested by Wouter Verhelst. + * [arm/iop32x] Remove even more options to receive the default options. + * [arm/ixp4xx] Remove a lot of options to receive the default options. + * [mips/r4k-ip22] Remove a lot of options to receive the default options. + This will enable ISCSI requested by Martin Zobel-Helas. + * [mips/r5k-ip32] Remove a lot of options to receive the default options. + This will enable PCI Ethernet devices requested by Giuseppe Sacco. + * [mipsel/r5k-cobalt] Remove a lot of options to receive the default + options. + * [mipsel/r5k-cobalt] Enable the modern Cobalt LEDs driver. + * [arm/iop32x] Enable Intel IOP ADMA support. + * [arm] Mark BCM43XX as broken on ARM. + * [mips/r4k-ip22] Disable EARLY PRINTK because it breaks serial console. + * [mips] Add some IP22 fixes from Thomas Bogendoerfer: + - Fix broken EISA interrupt setup by switching to generic i8259 + - Fix broken eeprom access by using __raw_readl/__raw_writel + + [ Bastian Blank ] + * Add unpriviledged only Xen support. + * [i386] Drop k7 images. + * Drop maybe IETF document. (closes: #423040) + * Drop drivers because of binary only firmwares: + - DABUSB driver + - COPS LocalTalk PC support + - Digi Intl. RightSwitch SE-X support + - 3Com 3C359 Token Link Velocity XL adapter support + - SMC ISA/MCA adapter support + - EMI 6|2m USB Audio interface support + - EMI 2|6 USB Audio interface support + - Computone IntelliPort Plus serial support + * Remove binary only firmwares for: + - Alteon AceNIC/3Com 3C985/NetGear GA620 Gigabit support + - Broadcom Tigon3 support + - USB Keyspan USA-xxx Serial Driver + - Korg 1212 IO + - ESS Allegro/Maestro3 + - Yamaha YMF724/740/744/754 + - Technotrend/Hauppauge Nova-USB devices + - YAM driver for AX.25 + - MyriCOM Gigabit Ethernet support + - PTI Qlogic, ISP Driver + - Cirrus Logic (Sound Fusion) CS4280/CS461x/CS462x/CS463x + - Madge Ambassador (Collage PCI 155 Server) + - PCA-200E support + - SBA-200E support + - Broadcom NetXtremeII support + * Disable now broken drivers: + - Alteon AceNIC/3Com 3C985/NetGear GA620 Gigabit support + - USB Keyspan USA-xxx Serial Driver + - Technotrend/Hauppauge Nova-USB devices + - YAM driver for AX.25 + - MyriCOM Gigabit Ethernet support + - PTI Qlogic, ISP Driver + - Cirrus Logic (Sound Fusion) CS4280/CS461x/CS462x/CS463x + - Madge Ambassador (Collage PCI 155 Server) + - PCA-200E support + - SBA-200E support + - Broadcom NetXtremeII support + * Add -common to common header package names. + * Drop provides from common header packages. + * Update plain image type. + * Put only a config dump into linux-support. + + [ Aurelien Jarno ] + * [mips, mipsel] Add a 64-bit image (5kc-malta) for the MIPS Malta board. + (closes: #435677) + [sparc] Enable r8169 module on sparc64 and sparc64-smp flavours (closes: + #431977) + + [ Frederik Schüler ] + * Move all PATA options into the global config file, exept PATA_ARTOP + (arm/ixp4xx) and PATA_MPC52xx (powerpc). + * Move new global options into the global config file + * Clean up new amd64 options + + [ dann frazier ] + * [ia64] Re-enable various unintentionally disabled config options + * Enable hugetlbfs on i386, amd64, sparc64 and powerpc64. Closes: #450939 + + [ Bastian Blank ] + * Add stable release 2.6.23.2: + - BLOCK: Fix bad sharing of tag busy list on queues with shared tag maps + - fix tmpfs BUG and AOP_WRITEPAGE_ACTIVATE + - Fix compat futex hangs. (closes: #433187) + - sched: keep utime/stime monotonic + - fix the softlockup watchdog to actually work + - splice: fix double kunmap() in vmsplice copy path + - writeback: don't propagate AOP_WRITEPAGE_ACTIVATE + - SLUB: Fix memory leak by not reusing cpu_slab + - HOWTO: update ja_JP/HOWTO with latest changes + - fix param_sysfs_builtin name length check + - param_sysfs_builtin memchr argument fix + - Remove broken ptrace() special-case code from file mapping + - locks: fix possible infinite loop in posix deadlock detection + - lockdep: fix mismatched lockdep_depth/curr_chain_hash + * Add stable release 2.6.23.3: + - revert "x86_64: allocate sparsemem memmap above 4G" + - x86: fix TSC clock source calibration error + - x86 setup: sizeof() is unsigned, unbreak comparisons + - x86 setup: handle boot loaders which set up the stack incorrectly + - x86: fix global_flush_tlb() bug + - xfs: eagerly remove vmap mappings to avoid upsetting Xen + - xen: fix incorrect vcpu_register_vcpu_info hypercall argument + - xen: deal with stale cr3 values when unpinning pagetables + - xen: add batch completion callbacks + - UML - kill subprocesses on exit + - UML - stop using libc asm/user.h + - UML - Fix kernel vs libc symbols clash + - UML - Stop using libc asm/page.h + - POWERPC: Make sure to of_node_get() the result of pci_device_to_OF_node() + - POWERPC: Fix handling of stfiwx math emulation + - MIPS: R1: Fix hazard barriers to make kernels work on R2 also. + - MIPS: MT: Fix bug in multithreaded kernels. + - Fix sparc64 MAP_FIXED handling of framebuffer mmaps + - Fix sparc64 niagara optimized RAID xor asm + * Add stable release 2.6.23.4: + - mac80211: make ieee802_11_parse_elems return void + - mac80211: only honor IW_SCAN_THIS_ESSID in STA, IBSS, and AP modes + - mac80211: honor IW_SCAN_THIS_ESSID in siwscan ioctl + - mac80211: store SSID in sta_bss_list + - mac80211: store channel info in sta_bss_list + - mac80211: reorder association debug output + - ieee80211: fix TKIP QoS bug + - NETFILTER: nf_conntrack_tcp: fix connection reopening + - Fix netlink timeouts. + - Fix crypto_alloc_comp() error checking. + - Fix SET_VLAN_INGRESS_PRIORITY_CMD error return. + - Fix VLAN address syncing. + - Fix endianness bug in U32 classifier. + - Fix TEQL oops. + - Fix error returns in sys_socketpair() + - softmac: fix wext MLME request reason code endianness + - Fix kernel_accept() return handling. + - TCP: Fix size calculation in sk_stream_alloc_pskb + - Fix SKB_WITH_OVERHEAD calculations. + - Fix 9P protocol build + - Fix advertised packet scheduler timer resolution + - Add get_unaligned to ieee80211_get_radiotap_len + - mac80211: Improve sanity checks on injected packets + - mac80211: filter locally-originated multicast frames + * Add stable release 2.6.23.5: + - zd1211rw, fix oops when ejecting install media + - rtl8187: Fix more frag bit checking, rts duration calc + - ipw2100: send WEXT scan events + - zd1201: avoid null ptr access of skb->dev + - sky2: fix power settings on Yukon XL + - sky2: ethtool register reserved area blackout + - sky2: status ring race fix + - skge: XM PHY handling fixes + - Fix L2TP oopses. + - TG3: Fix performance regression on 5705. + - forcedeth: add MCP77 device IDs + - forcedeth msi bugfix + - ehea: 64K page kernel support fix + - libertas: fix endianness breakage + - libertas: more endianness breakage + * Add stable release 2.6.23.6: + - ACPI: suspend: Wrong order of GPE restore. + - ACPI: sleep: Fix GPE suspend cleanup + - libata: backport ATA_FLAG_NO_SRST and ATA_FLAG_ASSUME_ATA, part 2 + - libata: backport ATA_FLAG_NO_SRST and ATA_FLAG_ASSUME_ATA + - libata: add HTS542525K9SA00 to NCQ blacklist + - radeon: set the address to access the GART table on the CPU side correctly + - Char: moxa, fix and optimise empty timer + - Char: rocket, fix dynamic_dev tty + - hptiop: avoid buffer overflow when returning sense data + - ide: Fix cs5535 driver accessing beyond array boundary + - ide: Fix siimage driver accessing beyond array boundary + - ide: Add ide_get_paired_drive() helper + - ide: fix serverworks.c UDMA regression + - i4l: fix random freezes with AVM B1 drivers + - i4l: Fix random hard freeze with AVM c4 card + - ALSA: hda-codec - Add array terminator for dmic in STAC codec + - USB: usbserial - fix potential deadlock between write() and IRQ + - USB: add URB_FREE_BUFFER to permissible flags + - USB: mutual exclusion for EHCI init and port resets + - usb-gadget-ether: prevent oops caused by error interrupt race + - USB: remove USB_QUIRK_NO_AUTOSUSPEND + - MSI: Use correct data offset for 32-bit MSI in read_msi_msg() + - md: raid5: fix clearing of biofill operations + - md: fix an unsigned compare to allow creation of bitmaps with v1.0 metadata + - dm: fix thaw_bdev + - dm delay: fix status + - libata: sync NCQ blacklist with upstream + - ALSA: hdsp - Fix zero division + - ALSA: emu10k1 - Fix memory corruption + - ALSA: Fix build error without CONFIG_HAS_DMA + - ALSA: fix selector unit bug affecting some USB speakerphones + - ALSA: hda-codec - Avoid zero NID in line_out_pins[] of STAC codecs + - IB/mthca: Use mmiowb() to avoid firmware commands getting jumbled up + - IB/uverbs: Fix checking of userspace object ownership + - hwmon/lm87: Disable VID when it should be + - hwmon/lm87: Fix a division by zero + - hwmon/w83627hf: Don't assume bank 0 + - hwmon/w83627hf: Fix setting fan min right after driver load + - i915: fix vbl swap allocation size. + - POWERPC: Fix platinumfb framebuffer + * Add stable release 2.6.23.7: + - NFS: Fix a writeback race... + - ocfs2: fix write() performance regression + - minixfs: limit minixfs printks on corrupted dir i_size (CVE-2006-6058) + * Add stable release 2.6.23.8: + - wait_task_stopped: Check p->exit_state instead of TASK_TRACED (CVE-2007-5500) + - TCP: Make sure write_queue_from does not begin with NULL ptr (CVE-2007-5501) + * Add stable release 2.6.23.9: + - ipw2200: batch non-user-requested scan result notifications + - USB: Nikon D40X unusual_devs entry + - USB: unusual_devs modification for Nikon D200 + - softlockup: use cpu_clock() instead of sched_clock() + - softlockup watchdog fixes and cleanups + - x86: fix freeze in x86_64 RTC update code in time_64.c + - ntp: fix typo that makes sync_cmos_clock erratic + - x86: return correct error code from child_rip in x86_64 entry.S + - x86: NX bit handling in change_page_attr() + - x86: mark read_crX() asm code as volatile + - x86: fix off-by-one in find_next_zero_string + - i386: avoid temporarily inconsistent pte-s + - libcrc32c: keep intermediate crc state in cpu order + - geode: Fix not inplace encryption + - Fix divide-by-zero in the 2.6.23 scheduler code + - ACPI: VIDEO: Adjust current level to closest available one. + - libata: sata_sis: use correct S/G table size + - sata_sis: fix SCR read breakage + - reiserfs: don't drop PG_dirty when releasing sub-page-sized dirty file + - x86: disable preemption in delay_tsc() + - dmaengine: fix broken device refcounting + - nfsd4: recheck for secure ports in fh_verify + - knfsd: fix spurious EINVAL errors on first access of new filesystem + - raid5: fix unending write sequence + - oProfile: oops when profile_pc() returns ~0LU + - drivers/video/ps3fb: fix memset size error + - i2c/eeprom: Hide Sony Vaio serial numbers + - i2c/eeprom: Recognize VGN as a valid Sony Vaio name prefix + - i2c-pasemi: Fix NACK detection + + -- maximilian attems Fri, 30 Nov 2007 11:40:09 +0100 + +linux-2.6 (2.6.22-6) unstable; urgency=low + + [ Martin Michlmayr ] + * [mips] Add IP22 (SGI Indy) patches from Thomas Bogendoerfer: + - Disable EARLY PRINTK because it breaks serial. + - fix wrong argument order. + - wrong check for second HPC. Closes: #448488 + + [ maximilian attems ] + * Add stable release 2.6.22.11 - minus ipv6 abi breaker: + - libertas: fix endianness breakage + - libertas: more endianness breakage + - Fix ROSE module unload oops. + - Add get_unaligned to ieee80211_get_radiotap_len + - Fix ipv6 redirect processing, leads to TAHI failures. + - i915: fix vbl swap allocation size. + - Fix ESP host instance numbering. + - Fix TCP MD5 on big-endian. + - Fix zero length socket write() semantics. + - Fix sys_ipc() SEMCTL on sparc64. + - Fix TCP initial sequence number selection. + - lockdep: fix mismatched lockdep_depth/curr_chain_hash + - V4L: ivtv: fix udma yuv bug + - Fix TCP's ->fastpath_cnt_hit handling. + - hwmon/lm87: Fix a division by zero + - hwmon/lm87: Disable VID when it should be + - hwmon/w83627hf: Fix setting fan min right after driver load + - hwmon/w83627hf: Don't assume bank 0 + - netdrvr: natsemi: Fix device removal bug + - Fix ieee80211 handling of bogus hdrlength field + - mac80211: filter locally-originated multicast frames + - POWERPC: Fix handling of stfiwx math emulation + - dm9601: Fix receive MTU + - firewire: fix unloading of fw-ohci while devices are attached + - Fix cls_u32 error return handling. + - ACPI: disable lower idle C-states across suspend/resume + * Add stable release 2.6.22.12-rc1: + - genirq: cleanup mismerge artifact + - genirq: suppress resend of level interrupts + - genirq: mark io_apic level interrupts to avoid resend + - IB/uverbs: Fix checking of userspace object ownership + - minixfs: limit minixfs printks on corrupted dir i_size (CVE-2006-6058) + - param_sysfs_builtin memchr argument fix + - x86: fix global_flush_tlb() bug + - dm snapshot: fix invalidation deadlock + - Revert "x86_64: allocate sparsemem memmap above 4G" + + [ Bastian Blank ] + * Update vserver patch to 2.2.0.5. + - Ignore symbols from never to be merged patch. + + -- maximilian attems Sun, 4 Nov 2007 17:35:51 +0100 + +linux-2.6 (2.6.22-5) unstable; urgency=low + + [ maximilian attems ] + * Add stable release 2.6.22.6: + - USB: allow retry on descriptor fetch errors + - PCI: lets kill the 'PCI hidden behind bridge' message + - Netfilter: Missing Kbuild entry for netfilter + - Fix soft-fp underflow handling. + - SPARC64: Fix sparc64 task stack traces. + - TCP: Do not autobind ports for TCP sockets + - DCCP: Fix DCCP GFP_KERNEL allocation in atomic context + - NET: Share correct feature code between bridging and bonding + - SNAP: Fix SNAP protocol header accesses. + - NET: Fix missing rcu unlock in __sock_create() + - IPv6: Invalid semicolon after if statement + - TCP: Fix TCP rate-halving on bidirectional flows. + - TCP: Fix TCP handling of SACK in bidirectional flows. + - uml: fix previous request size limit fix + - usb: add PRODUCT, TYPE to usb-interface events + - PPP: Fix PPP buffer sizing. + - ocfs2: Fix bad source start calculation during kernel writes + - signalfd: fix interaction with posix-timers + - signalfd: make it group-wide, fix posix-timers scheduling + - USB: fix DoS in pwc USB video driver + - sky2: don't clear phy power bits + - PCI: disable MSI on RS690 + - PCI: disable MSI on RD580 + - PCI: disable MSI on RX790 + - IPV6: Fix kernel panic while send SCTP data with IP fragments + - i386: fix lazy mode vmalloc synchronization for paravirt + * Set abi to 3. + * Add stable release 2.6.22.7: (CVE-2007-4573) + - x86_64: Zero extend all registers after ptrace in 32bit entry path. + * Add stable release 2.6.22.8: (CVE-2007-4571) + - Convert snd-page-alloc proc file to use seq_file + * Add stable release 2.6.22.9: + - 3w-9xxx: Fix dma mask setting + - Fix pktgen src_mac handling. + - nfs: fix oops re sysctls and V4 support + - DVB: get_dvb_firmware: update script for new location of tda10046 firmware + - afs: mntput called before dput + - disable sys_timerfd() + - Fix "Fix DAC960 driver on machines which don't support 64-bit DMA" + - futex_compat: fix list traversal bugs + - MTD: Initialise s_flags in get_sb_mtd_aux() + - Fix sparc64 v100 platform booting. + - Fix IPV6 DAD handling + - ext34: ensure do_split leaves enough free space in both blocks + - dir_index: error out instead of BUG on corrupt dx dirs + - Fix oops in vlan and bridging code + - V4L: ivtv: fix VIDIOC_S_FBUF: new OSD values were never set + - crypto: blkcipher_get_spot() handling of buffer at end of page + - Fix datagram recvmsg NULL iov handling regression. + - Handle snd_una in tcp_cwnd_down() + - Fix TCP DSACK cwnd handling + - JFFS2: fix write deadlock regression + - hwmon: End of I/O region off-by-one + - Fix debug regression in video/pwc + - splice: fix direct splice error handling + - Fix race with shared tag queue maps + - Fix ipv6 source address handling. + - POWERPC: Flush registers to proper task context + - bcm43xx: Fix cancellation of work queue crashes + - Fix DAC960 driver on machines which don't support 64-bit DMA + - DVB: get_dvb_firmware: update script for new location of sp8870 firmware + - USB: fix linked list insertion bugfix for usb core + - Correctly close old nfsd/lockd sockets. + - Fix IPSEC AH4 options handling + - setpgid(child) fails if the child was forked by sub-thread + - sigqueue_free: fix the race with collect_signal() + - Fix decnet device address listing. + - Fix inet_diag OOPS. + - Leases can be hidden by flocks + - kconfig: oldconfig shall not set symbols if it does not need to + - MTD: Makefile fix for mtdsuper + - firewire: fw-ohci: ignore failure of pci_set_power_state + (fix suspend regression) + - ieee1394: ohci1394: fix initialization if built non-modular + - Fix device address listing for ipv4. + - Fix tc_ematch kbuild + - V4L: cx88: Avoid a NULL pointer dereference during mpeg_open() + - DVB: b2c2-flexcop: fix Airstar HD5000 tuning regression + - fix realtek phy id in forcedeth + - rpc: fix garbage in printk in svc_tcp_accept() + - Fix IPV6 append OOPS. + - Fix ipv6 double-sock-release with MSG_CONFIRM + - ACPI: Validate XSDT, use RSDT if XSDT fails + * Update vserver patch to 2.2.0.4. + * Add stable release 2.6.22.10: + - i386: Use global flag to disable broken local apic timer on AMD CPUs. + - Fix timer_stats printout of events/sec + - libata: update drive blacklists + - i2c-algo-bit: Read block data bugfix + - scsi_transport_spi: fix domain validation failure from incorrect width + setting + - Fix SMP poweroff hangs + - Fix ppp_mppe kernel stack usage. + - sky2: reduce impact of watchdog timer + - sky2: fix VLAN receive processing + - sky2: fix transmit state on resume + - SELinux: clear parent death signal on SID transitions + - NLM: Fix a circular lock dependency in lockd + - NLM: Fix a memory leak in nlmsvc_testlock + + [ Martin Michlmayr ] + * [mips] Add a fix so qemu NE2000 will work again. + * [mipsel/r5k-cobalt] Enable MTD. + * [mips] Backport "Fix CONFIG_BUILD_ELF64 kernels with symbols in + CKSEG0" to fix crash on boot on IP32 (SGI O2). Closes: #444104. + + [ Steve Langasek ] + * Set CONFIG_MATHEMU=y on alpha, which is required for proper fp math on + at least ev4-ev56 systems. Closes: #411813. + * linux-image packages need to depend on a newer version of coreutils, + because of the use of readlink -q -m inherited from kernel-package. + Closes: #413311. + + [ Bastian Blank ] + * Fix tainted check in bug scripts. + + [ dann frazier ] + * [ia64] Re-enable various unintentionally disabled config options + + -- Maximilian Attems Thu, 11 Oct 2007 13:31:38 +0000 + +linux-2.6 (2.6.22-4) unstable; urgency=low + + [ dann frazier ] + * [hppa] Use generic compat_sys_getdents (closes: #431773) + + [ Martin Michlmayr ] + * [powerpc] Fix PS/2 keyboard detection on Pegasos (closes: #435378). + + [ Emanuele Rocca ] + * [sparc] Add patch to fix PCI config space accesses on sun4u. + * [sparc] Disable CONFIG_SCSI_SCAN_ASYNC. + + [ maximilian attems ] + * Add stable release 2.6.22.2: + - usb-serial: Fix edgeport regression on non-EPiC devices + - Missing header include in ipt_iprange.h + - drivers/video/macmodes.c:mac_find_mode() mustn't be __devinit + - Fix ipv6 tunnel endianness bug. + - aacraid: fix security hole + - USB: cdc-acm: fix sysfs attribute registration bug + - USB: fix warning caused by autosuspend counter going negative + - Fix sparc32 memset() + - Fix leak on /proc/lockdep_stats + - Fix leaks on /proc/{*/sched, sched_debug, timer_list, timer_stats} + - futex: pass nr_wake2 to futex_wake_op + - md: handle writes to broken raid10 arrays gracefully + - forcedeth bug fix: cicada phy + - forcedeth bug fix: vitesse phy + - forcedeth bug fix: realtek phy + - ACPI: dock: fix opps after dock driver fails to initialize + - pcmcia: give socket time to power down + - drm/i915: Fix i965 secured batchbuffer usage (CVE-2007-3851) + - Fix console write locking in sparc drivers. + - Sparc64 bootup assembler bug + - IPV6: /proc/net/anycast6 unbalanced inet6_dev refcnt + - make timerfd return a u64 and fix the __put_user + - Fix error queue socket lookup in ipv6 + - Input: lifebook - fix an oops on Panasonic CF-18 + - readahead: MIN_RA_PAGES/MAX_RA_PAGES macros + - V4L: Add check for valid control ID to v4l2_ctrl_next + - V4L: ivtv: fix broken VBI output support + - V4L: ivtv: fix DMA timeout when capturing VBI + another stream + - V4L: ivtv: Add locking to ensure stream setup is atomic + - V4L: wm8775/wm8739: Fix memory leak when unloading module + - do not limit locked memory when RLIMIT_MEMLOCK is RLIM_INFINITY + - Include serial_reg.h with userspace headers (closes: #433755) + - TCP FRTO retransmit bug fix + - Fix rfkill IRQ flags. + - nfsd: fix possible read-ahead cache and export table corruption + - nfsd: fix possible oops on re-insertion of rpcsec_gss modules + - jbd commit: fix transaction dropping + - jbd2 commit: fix transaction dropping + - softmac: Fix ESSID problem + - uml: limit request size on COWed devices + - UML: exports for hostfs + - splice: fix double page unlock + - cfq-iosched: fix async queue behaviour + - cr_backlight_probe() allocates too little storage for struct cr_panel + - sx: switch subven and subid values + - hugetlb: fix race in alloc_fresh_huge_page() + - KVM: SVM: Reliably detect if SVM was disabled by BIOS + - dm io: fix another panic on large request + - md: raid10: fix use-after-free of bio + - fs: 9p/conv.c error path fix + - Fix sparc32 udelay() rounding errors. + - sony-laptop: fix bug in event handling + - eCryptfs: ecryptfs_setattr() bugfix + - Hangup TTY before releasing rfcomm_dev + - dm io: fix panic on large request + - dm raid1: fix status + - dm snapshot: permit invalid activation + - "ext4_ext_put_in_cache" uses __u32 to receive physical block number + - destroy_workqueue() can livelock + - USB: fix for ftdi_sio quirk handling + - Fix TC deadlock. + - Fix IPCOMP crashes. + - gen estimator timer unload race + - Netfilter: Fix logging regression + - Fix user struct leakage with locked IPC shem segment + - Fix reported task file values in sense data + - gen estimator deadlock fix + - Netpoll leak + - dm: disable barriers + - firewire: fw-sbp2: set correct maximum payload (fixes CardBus adapters) + - fw-ohci: fix "scheduling while atomic" + - firewire: fix memory leak of fw_request instances + - ieee1394: revert "sbp2: enforce 32bit DMA mapping" + - libata: add FUJITSU MHV2080BH to NCQ blacklist + - i386: HPET, check if the counter works + - CPU online file permission + - acpi-cpufreq: Proper ReadModifyWrite of PERF_CTL MSR + - Keep rfcomm_dev on the list until it is freed + - SCTP scope_id handling fix + - Fix ipv6 link down handling. + - Fix TCP IPV6 MD5 bug. + - sysfs: release mutex when kmalloc() failed in sysfs_open_file(). + - nf_conntrack: don't track locally generated special ICMP error + * Bump abi due to firewire, ivtv and xrfm changes. + * Add stable release 2.6.22.3: + - fix oops in __audit_signal_info() + - direct-io: fix error-path crashes + - powerpc: Fix size check for hugetlbfs + - stifb: detect cards in double buffer mode more reliably + - pata_atiixp: add SB700 PCI ID + - PPC: Revert "[POWERPC] Add 'mdio' to bus scan id list for platforms + with QE UEC" + - random: fix bound check ordering (CVE-2007-3105) + - softmac: Fix deadlock of wx_set_essid with assoc work + - PPC: Revert "[POWERPC] Don't complain if size-cells == 0 in prom_parse()" + - ata_piix: update map 10b for ich8m + - CPUFREQ: ondemand: fix tickless accounting and software coordination bug + - CPUFREQ: ondemand: add a check to avoid negative load calculation + * Add stable release 2.6.22.4: + - Reset current->pdeath_signal on SUID binary execution (CVE-2007-3848) + * Add stable release 2.6.22.5: + - x86_64: Check for .cfi_rel_offset in CFI probe + - x86_64: Change PMDS invocation to single macro + - i386: Handle P6s without performance counters in nmi watchdog + - revert "x86, serial: convert legacy COM ports to platform devices" + - ACPICA: Fixed possible corruption of global GPE list + - ACPICA: Clear reserved fields for incoming ACPI 1.0 FADTs + - i386: Fix double fault handler + - JFFS2 locking regression fix. + - r8169: avoid needless NAPI poll scheduling + - Linux 2.6.22.5 + - AVR32: Fix atomic_add_unless() and atomic_sub_unless() + - i386: allow debuggers to access the vsyscall page with compat vDSO + - hwmon: (smsc47m1) restore missing name attribute + - hwmon: fix w83781d temp sensor type setting + - Hibernation: do not try to mark invalid PFNs as nosave + - sky2: restore workarounds for lost interrupts + - sky2: carrier management + - sky2: check for more work before leaving NAPI + - sky2: check drop truncated packets + - forcedeth: fix random hang in forcedeth driver when using netconsole + - libata: add ATI SB700 device IDs to AHCI driver + + [ dann frazier ] + * [ia64] Restore config cleanup now that its safe to break the ABI + + [ Bastian Blank ] + * Update vserver patch to 2.2.0.3. + + -- Bastian Blank Thu, 30 Aug 2007 20:19:44 +0200 + +linux-2.6 (2.6.22-3) unstable; urgency=low + + [ dann frazier ] + * [ia64] Config cleanup in 2.6.22-2 broke the ABI; revert most of it + for now (everything but the efivars and sym53c8xx modules) + + [ Martin Michlmayr ] + * [mipsel/r5k-cobalt] Fix a typo in the config file. + * [mipsel/4kc-malta] Update the config file, thanks Aurelien Jarno. + * [mipsel] Add patch from Yoichi Yuasa to fix IDE on Cobalt. + + -- Bastian Blank Sun, 29 Jul 2007 13:47:38 +0200 + +linux-2.6 (2.6.22-2) unstable; urgency=low + + [ Steve Langasek ] + * [alpha] request_irq-retval.patch: capture the return value of all + request_irq() calls in sys_titan.c to suppress the warning (and + build failure with -Werror); failures still aren't being handled, but + there's nothing that needs to be done -- or nothing that can be done + -- if these requests fail anyway. + + [ Christian T. Steigies ] + * Add module.lds to kernel headers (closes: #396220) + * Enable INPUT_UINPUT on mac + * Add 2.6.22 patches from linux-m68k CVS + + [ maximilian attems ] + * Add stable release 2.6.22.1: + - nf_conntrack_h323: add checking of out-of-range on choices' index values + (CVE-2007-3642) + + [ dann frazier ] + * [ia64] Re-enable various config options which were unintentionally + disabled somewhere between 2.6.21 and 2.6.22 + * [ia64] Re-enable vserver flavour - this was somehow lost when 2.6.22 + was merged from trunk to the sid branch + + [ Bastian Blank ] + * Update vserver patch to 2.2.0.3-rc1. + + -- Bastian Blank Mon, 23 Jul 2007 09:38:01 +0200 + +linux-kbuild-2.6 (2.6.22-1) unstable; urgency=low + + * New upstream version. + * Don't fail if no module is specified. + + -- Bastian Blank Tue, 17 Jul 2007 23:14:23 +0200 + +linux-2.6 (2.6.22-1) unstable; urgency=low + + [ Bastian Blank ] + * Drop asfs options. + * Drop linux-libc-headers references. + * Update vserver patch to 2.2.0-rc5. + + [ maximilian attems ] + * Fullfils policy 3.7.2.2. + * Add Sempron to the k7 image description (closes: #384737) + Thanks Robert Millan . + * [powerpc] Enable CONFIG_ADB_PMU_LED. + * [hppa] Disable a bunch of topconfig enabled fb devices. Thanks Frank + Lichtenheld for build fix. + + [ Christian T. Steigies ] + * Add module.lds to kernel headers + * Enable INPUT_UINPUT on mac + * Add 2.6.22 patches from linux-m68k CVS + + [ dann frazier ] + * Enable vserver flavour for ia64 (closes: #423232) + + -- Bastian Blank Sun, 15 Jul 2007 15:03:40 +0200 + +linux-2.6 (2.6.22~rc5-1~experimental.1) experimental; urgency=low + + [ Bastian Blank ] + * [powerpc]: Disable prep. + * [powerpc]: Disable apm emulation. + * Drop inactive members from Uploaders. + + [ maximilian attems ] + * Cleanup configs of old unused variables. + * Enable TCP_CONG_YEAH, TCP_CONG_ILLINOIS, NF_CONNTRACK_SANE, DM_DELAY, + GIGASET_M101, SATA_INIC162X, VIDEO_IVTV, USB_ZR364XX, INFINIBAND_CXGB3, + MLX4_INFINIBAND, SPI_AT25, MFD_SM501, DVB_USB_M920X, DVB_USB_GL861, + DVB_USB_AU6610, DVB_USB_OPERA1, SENSORS_AD7418, SENSORS_ADM1029, + SENSORS_F75375S, SENSORS_CORETEMP, SENSORS_MAX6650, SENSORS_APPLESMC, + I2C_SIMTEC, I2C_TINY_USB, SC92031, LIBERTAS_USB, RFKILL, RFKILL_INPUT, + MTD_UBI, SND_USB_CAIAQ, SND_USB_CAIAQ_INPUT, USB_BERRY_CHARGE, + RTC_DRV_MAX6900, SUNRPC_BIND34, SND_PORTMAN2X4, FB_VT8623, FUSION_LAN, + DISPLAY_SUPPORT, FB_ARK, FB_SM501 + and disable SCSI_ESP_CORE, SPI_SPIDEV, CRYPT_CRYPTD, SYSV68_PARTITION, + MOUSE_PS2_TOUCHKIT, INPUT_POLLDEV in topconfig. + * [amd64, i386]: Take care of the renaming acpi-ibm to thinkpad-acpi. + Enable KINGSUN_DONGLE, AF_RXRPC, RXKAD, MTD_NAND_PLATFORM, BLINK, PHANTOM, + BACKLIGHT_PROGEAR, FB_HECUBA, FB_LE80578, FB_CARILLO_RANCH. + Disable OSS_OBSOLETE. + * Enable WLAN_PRE80211 and WLAN_80211 on all archs with NET_RADIO enabled. + * Fix RTC_INTF_{DEV,SYSFS,PROC}=y where enabled modular. + * Enable new wirless stack mac80211 and improved wireless conf api. + * Enable new USB Touchscreen Driver on all configs with touchscreens. + * Enable the newly added crypto algorythm: fcrypt, pcbc and camellia. + * Unify CONFIG_TR to toplevel config, also enable new drivers 3C359 + and SMCTR. + * Enable the moved USB tablets config options where wacom is enabled. + * [i386] Enable driver for Crystalfontz 128x64 2-color LCD. + * [amd64] Enable KS0108 LCD controller. + * Enable the new firewire stack labeled to be more simple and robust. + * [i386] Enable VMI paravirtualized interface. + * [powerpc] Enable fb for IBM GXT4500P adaptor. + * [amd64] Enable timerstats too. + + [ Martin Michlmayr ] + * mipsel/r5k-cobalt: Use the new RTC system. + + [ dann frazier ] + * Add Xen licensing info to the copyright file. (closes: #368912) + + [ Gordon Farquharson ] + * arm: Mark CHELSIO_T3, NETXEN_NIC, BCM43XX, VIDEO_BT848, + DVB_B2C2_FLEXCOP, and DVB_BUDGET as broken on ARM. + * arm/ixp4xx: Add support for the new generic I2C GPIO driver on the + NSLU2 and the NAS100D. Thanks to Michael-Luke Jones and Rod Whitby. + * arm/ixp4xx: Update Artop PATA support patch for the NAS 100d. + + [ Christian T. Steigies ] + * m68k: Disable already included patches (611, 618, 630) + + -- Bastian Blank Tue, 19 Jun 2007 17:49:52 +0200 + +linux-2.6 (2.6.21-6) unstable; urgency=low + + * Add stable release 2.6.21.6: + - nf_conntrack_h323: add checking of out-of-range on choices' index values + (CVE-2007-3642) + * Update vserver patch to 2.2.0. + + -- Bastian Blank Tue, 10 Jul 2007 18:36:17 +0200 + +linux-2.6 (2.6.21-5) unstable; urgency=low + + [ Christian T. Steigies ] + * [m68k] Add atari isa and scsi fixes + + [ maximilian attems ] + * Add stable release 2.6.21.4: + - cpuset: prevent information leak in cpuset_tasks_read (CVE-2007-2875) + - random: fix error in entropy extraction (CVE-2007-2453 1 of 2) + - random: fix seeding with zero entropy (CVE-2007-2453 2 of 2) + - NETFILTER: {ip, nf}_conntrack_sctp: fix remotely triggerable NULL ptr + dereference (CVE-2007-2876) + * Add stable release 2.6.21.5: + - acpi: fix potential call to a freed memory section. + - USB: set the correct Interrupt interval in usb_bulk_msg + - i386: Fix K8/core2 oprofile on multiple CPUs + - ntfs_init_locked_inode(): fix array indexing + - ALSA: wm8750 typo fix + - neofb: Fix pseudo_palette array overrun in neofb_setcolreg + - e1000: disable polling before registering netdevice + - timer statistics: fix race + - x86: fix oprofile double free + - ALSA: usb-audio: explicitly match Logitech QuickCam + - zd1211rw: Add AL2230S RF support + - IPV4: Correct rp_filter help text. + - Fix AF_UNIX OOPS + - ICMP: Fix icmp_errors_use_inbound_ifaddr sysctl + - NET: Fix BMSR_100{HALF,FULL}2 defines in linux/mii.h + - SPARC64: Fix _PAGE_EXEC_4U check in sun4u I-TLB miss handler. + - SPARC64: Don't be picky about virtual-dma values on sun4v. + - SPARC64: Fix two bugs wrt. kernel 4MB TSB. + - cciss: fix pci_driver.shutdown while device is still active + - fix compat console unimap regression + - timer stats: speedups + - SPARC: Linux always started with 9600 8N1 + - pci_ids: update patch for Intel ICH9M + - PCI: quirk disable MSI on via vt3351 + - UML - Improve host PTRACE_SYSEMU check + - NET: parse ip:port strings correctly in in4_pton + - Char: cyclades, fix deadlock + - IPSEC: Fix panic when using inter address familiy IPsec on loopback. + - TCP: Use default 32768-61000 outgoing port range in all cases. + - TG3: Fix link problem on Dell's onboard 5906. + - fuse: fix mknod of regular file + - md: Avoid overflow in raid0 calculation with large components. + - md: Don't write more than is required of the last page of a bitmap + - make freezeable workqueues singlethread + - tty: fix leakage of -ERESTARTSYS to userland + - V4L/DVB (5593): Budget-ci: Fix tuning for TDM 1316 (160..200 MHz) + - Input: i8042 - fix AUX port detection with some chips + - SCSI: aacraid: Correct sa platform support. + (Was: [Bug 8469] Bad EIP value on pentium3 SMP kernel-2.6.21.1) + - BLUETOOTH: Fix locking in hci_sock_dev_event(). + - hpt366: don't check enablebits for HPT36x + - ieee1394: eth1394: bring back a parent device + - NET: Fix race condition about network device name allocation. + - ALSA: hda-intel - Probe additional slots only if necessary + - ALSA: hda-intel - Fix detection of audio codec on Toshiba A100 + - ahci: disable 64bit dma on sb600 + - i386: HPET, check if the counter works + - Ignore bogus ACPI info for offline CPUs + - NOHZ: Rate limit the local softirq pending warning output + - Prevent going idle with softirq pending + - Work around Dell E520 BIOS reboot bug + - NET: "wrong timeout value" in sk_wait_data() v2 + - IPV6 ROUTE: No longer handle ::/0 specially. + - x86_64: allocate sparsemem memmap above 4G + * Bump ABI to 2. + + [ Bastian Blank ] + * Back out ABI fixing changes. + * Update vserver patch to 2.2.0-rc3. + + -- Bastian Blank Fri, 22 Jun 2007 12:39:47 +0200 + +linux-2.6 (2.6.21-4) unstable; urgency=low + + * [powerpc] Fix mkvmlinuz support. + * [s390] Add exception handler for diagnose 224. + + -- Bastian Blank Sat, 26 May 2007 14:08:44 +0200 + +linux-2.6 (2.6.21-3) unstable; urgency=low + + [ Gordon Farquharson ] + * arm/ixp4xx: Add patch to set NSLU2 timer frequency. + + [ maximilian attems ] + * sparc64: enable USB_SERIAL. (closes: #412740) + * Apply stable 2.6.21.1. + * Add stable release 2.6.21.2: + - slob: fix page order calculation on not 4KB page + - libata-sff: Undo bug introduced with pci_iomap changes + - kbuild: fixdep segfault on pathological string-o-death + - IPMI: fix SI address space settings + - IPV6: Reverse sense of promisc tests in ip6_mc_input + - iop: fix iop_getttimeoffset + - iop13xx: fix i/o address translation + - arm: fix handling of svc mode undefined instructions + - CPUFREQ: powernow-k7: fix MHz rounding issue with perflib + - CPUFREQ: Support rev H AMD64s in powernow-k8 + - CPUFREQ: Correct revision mask for powernow-k8 + - JFS: Fix race waking up jfsIO kernel thread + - IPV6: Send ICMPv6 error on scope violations. + - SPARC64: Add missing cpus_empty() check in hypervisor xcall handling. + - SPARC64: Fix recursion in PROM tree building. + - SERIAL SUNHV: Add an ID string. + - SPARC64: Bump PROMINTR_MAX to 32. + - SPARC64: Be more resiliant with PCI I/O space regs. + - oom: fix constraint deadlock + - fix for bugzilla 8426: massive slowdown on SCSI CD/DVD drive connected to + mptspi driver + - x86_64 : Fix vgettimeofday() + - IPV6: Fix slab corruption running ip6sic + - IPSEC: Check validity of direction in xfrm_policy_byid + - CRYPTO: api: Read module pointer before freeing algorithm + - NET_SCHED: prio qdisc boundary condition + - reiserfs: suppress lockdep warning + - USB HID: hiddev - fix race between hiddev_send_event() and + hiddev_release() + - NETFILTER: {ip,nf}_nat_proto_gre: do not modify/corrupt GREv0 packets + through NAT + - fix leaky resv_huge_pages when cpuset is in use + - ACPI: Fix 2.6.21 boot regression on P4/HT + - TG3: Fix TSO bugs. + - TG3: Remove reset during MAC address changes. + - TG3: Update version and reldate. + - BNX2: Fix TSO problem with small MSS. + - BNX2: Block MII access when ifdown. + - BNX2: Save PCI state during suspend. + - BNX2: Update version and reldate. + - sis900: Allocate rx replacement buffer before rx operation + - knfsd: Avoid use of unitialised variables on error path when nfs exports. + - knfsd: rpc: fix server-side wrapping of krb5i replies + - md: Avoid a possibility that a read error can wrongly propagate through + - md/raid1 to a filesystem. + - fat: fix VFAT compat ioctls on 64-bit systems + - NETFILTER: {ip,nf}_conntrack: fix use-after-free in helper destroy + callback invocation + - ppp: Fix ppp_deflate issues with recent zlib_inflate changes + - NETPOLL: Fix TX queue overflow in trapped mode. + - NETPOLL: Remove CONFIG_NETPOLL_RX + - cxacru: Fix infinite loop when trying to cancel polling task + - TCP: zero out rx_opt in tcp_disconnect() + - ipv6: track device renames in snmp6 + - skge: default WOL should be magic only (rev2) + - skge: allow WOL except for known broken chips + - sky2: allow 88E8056 + - sky2: 88e8071 support not ready + - skge: crash on shutdown/suspend + - sky2: fix oops on shutdown + - udf: decrement correct link count in udf_rmdir + - ALSA: hda-codec - Fix resume of STAC92xx codecs + - sata_via: add missing PM hooks + - driver-core: don't free devt_attr till the device is released + - pci-quirks: disable MSI on RS400-200 and RS480 + - highres/dyntick: prevent xtime lock contention + - clocksource: fix resume logic + - smc911x: fix compilation breakage wjen debug is on + - SCTP: Fix sctp_getsockopt_local_addrs_old() to use local storage. + - SCTP: Correctly copy addresses in sctp_copy_laddrs + - SCTP: Prevent OOPS if hmac modules didn't load + - IPV6: Do no rely on skb->dst before it is assigned. + - IPV6 ROUTE: Assign rt6i_idev for ip6_{prohibit,blk_hole}_entry. + + [ Christian T. Steigies ] + * m68k: enable ATARI_SCSI and ATARI_ROM_ISA + + [ Bastian Blank ] + * Fix linux/version.h in linux-libc-dev. + * Make it possible to specifiy special CFLAGS. + * [hppa] Reenable. + * [hppa] Workaround hppa64 failure. + * [hppa] Fix debugging in lws syscalls. + * Fix abi change. + * Add stable release 2.6.21.3: + - [PATCH] GEODE-AES: Allow in-place operations [CVE-2007-2451] + + -- Bastian Blank Fri, 25 May 2007 10:57:48 +0200 + +linux-kbuild-2.6 (2.6.21-1) unstable; urgency=low + + * New upstream version. + + -- Bastian Blank Fri, 18 May 2007 23:45:14 +0200 + +linux-2.6 (2.6.21-2) unstable; urgency=low + + [ Christian T. Steigies ] + * m68k: fix atari scc patch + * m68k: install compressed vmlinuz images so the post-inst script can find it + + [ Steve Langasek ] + * [alpha] isa-mapping-support.patch: add isa_page_to_bus and + isa_bus_to_virt defines to complement the existing isa_virt_to_bus + define; untested, but these should all be straightforward on alpha and + defining them is certainly a better option for getting user feedback + than disabling the affected drivers. + + [ Bastian Blank ] + * [powerpc] Readd mkvmlinuz support. (closes: #419033) + * [sparc]: Disable sparc32 image. + * [hppa]: Temporary disable all images. + + -- Bastian Blank Fri, 18 May 2007 19:52:36 +0200 + +linux-2.6 (2.6.21-1) unstable; urgency=low + + [ maximilian attems ] + * New upstream release see http://kernelnewbies.org/Linux_2_6_21 + (closes: #423874) + * Disable CONFIG_IP_ROUTE_MULTIPATH_CACHED in topconfig. + * Enable CONFIG_IP6_NF_MATCH_MH, CONFIG_CHELSIO_T3, CONFIG_USB_NET_DM9601, + CONFIG_NETFILTER_XT_TARGET_TCPMSS, CONFIG_RTC_DRV_CMOS, + CONFIG_ASUS_LAPTOP, CONFIG_SONY_LAPTOP, CONFIG_DVB_TUNER_QT1010, + CONFIG_USB_IOWARRIOR, CONFIG_ATL1 in topconfig. + * [i386] Enable CONFIG_ACPI_BAY, CONFIG_X86_LONGHAUL, CONFIG_BLK_DEV_DELKIN, + CONFIG_BLK_DEV_IT8213, CONFIG_BLK_DEV_TC86C001, CONFIG_INPUT_ATLAS_BTNS, + CONFIG_SENSORS_ADM1029, CONFIG_FB_SVGALIB, CONFIG_FB_S3, + CONFIG_USB_KC2190, CONFIG_KS0108. + * Add stable release 2.6.21.1: + - IPV4: Fix OOPS'er added to netlink fib. + - IPV6: Fix for RT0 header ipv6 change. + * [i386] Enable CONFIG_NO_HZ, CONFIG_HIGH_RES_TIMERS for dynticks and true + high-resolution timers. + * [i386] Enable CONFIG_TIMER_STATS to collect stats about kernel/userspace + timer aka power usage (see powertop). (closes: #423694) + * [i386] Disable obsolete CONFIG_IRQBALANCE due to bad timer behaviour. + + [ Martin Michlmayr ] + * Add armel (arm with EABI) support. Thanks, Lennert Buytenhek and + Joey Hess. (closes: #410853) + * Mark CHELSIO_T3 as broken on ARM. + * Take arch/arm/tools/mach-types from current git to fix build failure + because MACH_TYPE_EP80219 is not defined. + * mips/sb1: Don't build CONFIG_ATA into the kernel. + * mips/sb1: Unset CONFIG_USB_{KBD,MOUSE} since the generic HID is used. + * arm/iop32x: Don't build CONFIG_ATA into the kernel. + * arm/ixp4xx: Enable more SATA drivers. + * arm/ixp4xx: Enable PATA_ARTOP which is needed by the nas100d. + * arm/ixp4xx: Set CONFIG_USB_EHCI_TT_NEWSCHED. + * mips/4kc-malta: Add an image for the MIPS Malta board. Thanks, + Aurelien Jarno. (closes: #421377) + + [ Emanuele Rocca ] + * sparc: Enable CONFIG_SCSI_QLOGIC_1280. (closes: #423177) + + [ Christian T. Steigies ] + * Add m68k patches for 2.6.21 + * Add type: plain to [image] in arch/m68k/defines to fix missing + Modules.symvers problem + + [ Steve Langasek ] + * Revert change to disable image building on alpha. + + [ Bastian Blank ] + * Update vserver patch to 2.2.0-rc1. + + -- Bastian Blank Wed, 16 May 2007 13:46:38 +0200 + +linux-2.6 (2.6.20-3) unstable; urgency=low + + [ Gordon Farquharson ] + * arm: Mark CONFIG_MTD_NAND_CAFE and CONFIG_NETXEN_NIC as broken to + fix FTBFS. + + [ Bastian Blank ] + * Disable new pata drivers. (closes: #419458) + * Disable pata in ata_piix. + + -- Bastian Blank Tue, 24 Apr 2007 09:54:44 +0200 + +linux-2.6 (2.6.20-2) unstable; urgency=low + + [ Bastian Blank ] + * Rename linux-libc-headers into linux-libc-dev. + * [mips] Drop sb1250 uart support. + * [alpha] Temporary disable alpha images. + * Add stable release 2.6.20.7: + - Linux 2.6.20.7 + - Update libata drive blacklist to the latest from 2.6.21 + - fix page leak during core dump + - revert "retries in ext4_prepare_write() violate ordering requirements" + - revert "retries in ext3_prepare_write() violate ordering requirements" + - libata: Clear tf before doing request sense (take 3) + - fix lba48 bug in libata fill_result_tf() + - ahci.c: walkaround for SB600 SATA internal error issue + - libata bugfix: preserve LBA bit for HDIO_DRIVE_TASK + - softmac: avoid assert in ieee80211softmac_wx_get_rate + - knfsd: allow nfsd READDIR to return 64bit cookies + - Fix TCP slow_start_after_idle sysctl + - Fix tcindex classifier ABI borkage... + - Fix IPSEC replay window handling + - Fix TCP receiver side SWS handling. + - Fix scsi sense handling + - Fix length validation in rawv6_sendmsg() + - NETFILTER: ipt_CLUSTERIP: fix oops in checkentry function + - 8139too: RTNL and flush_scheduled_work deadlock + - Fix calculation for size of filemap_attr array in md/bitmap. + - HID: Do not discard truncated input reports + - DVB: pluto2: fix incorrect TSCR register setting + - DVB: tda10086: fix DiSEqC message length + - sky2: phy workarounds for Yukon EC-U A1 + - sky2: turn on clocks when doing resume + - sky2: turn carrier off when down + - skge: turn carrier off when down + - sky2: reliable recovery + - i386: fix file_read_actor() and pipe_read() for original i386 systems + - kbuild: fix dependency generation + + [ dann frazier ] + * [hppa] Add parisc arch patch from Kyle McMartin + * [hppa] Enable CONFIG_TULIP_MMIO (closes: #332962) + * [hppa] Disable ni52 driver, it doesn't build (and wouldn't work if it did) + + -- Bastian Blank Sun, 15 Apr 2007 16:04:16 +0200 + +linux-kbuild-2.6 (2.6.20-1) unstable; urgency=low + + * New upstream version. + * modpost: Support -w. + + -- Bastian Blank Thu, 12 Apr 2007 06:53:00 +0200 + +linux-2.6 (2.6.20-1) unstable; urgency=low + + [ Martin Michlmayr ] + * mipsel: Drop DECstation support (both r3k-kn02 and r4k-kn04). + * arm: Drop RiscPC (rpc) support. + * arm: Update configs for 2.6.19-rc6. + * arm: source drivers/ata/Kconfig so SATA can be enabled on ARM. + * arm/footbridge: Unset SATA. + * arm/s3c2410: Drop this flavour since no such device is supported + in debian-installer and the ARM build resources are limited. + + [ Sven Luther ] + * [powerpc] Added Genesi Efika support patch + + [ Bastian Blank ] + * Remove legacy pty support. (closes: #338404) + * Enable new scsi parts. + * powerpc: Enable ibmvscsis. + * Add stable release 2.6.20.1: + - Linux 2.6.20.1 + - [PATCH] Fix a free-wrong-pointer bug in nfs/acl server (CVE-2007-0772) + * Add stable release 2.6.20.2: + - Linux 2.6.20.2 + - IPV6: Handle np->opt being NULL in ipv6_getsockopt_sticky() [CVE-2007-1000] + - x86-64: survive having no irq mapping for a vector + - Fix buffer overflow in Omnikey CardMan 4040 driver (CVE-2007-0005) + - TCP: Fix minisock tcp_create_openreq_child() typo. + - gfs2: fix locking mistake + - ATA: convert GSI to irq on ia64 + - pktcdvd: Correctly set cmd_len field in pkt_generic_packet + - video/aty/mach64_ct.c: fix bogus delay loop + - revert "drivers/net/tulip/dmfe: support basic carrier detection" + - throttle_vm_writeout(): don't loop on GFP_NOFS and GFP_NOIO allocations + - fix section mismatch warning in lockdep + - ueagle-atm.c needs sched.h + - kvm: Fix asm constraint for lldt instruction + - lockdep: forward declare struct task_struct + - Char: specialix, isr have 2 params + - buffer: memorder fix + - kernel/time/clocksource.c needs struct task_struct on m68k + - m32r: build fix for processors without ISA_DSP_LEVEL2 + - hugetlb: preserve hugetlb pte dirty state + - enable mouse button 2+3 emulation for x86 macs + - v9fs_vfs_mkdir(): fix a double free + - ufs: restore back support of openstep + - Fix MTRR compat ioctl + - kexec: Fix CONFIG_SMP=n compilation V2 (ia64) + - NLM: Fix double free in __nlm_async_call + - RPM: fix double free in portmapper code + - Revert "[PATCH] LOG2: Alter get_order() so that it can make use of ilog2() on a constant" + - Backport of psmouse suspend/shutdown cleanups + - USB: usbnet driver bugfix + - sched: fix SMT scheduler bug + - tty_io: fix race in master pty close/slave pty close path + - forcedeth: disable msix + - export blk_recount_segments + - Fix reference counting (memory leak) problem in __nfulnl_send() and callers related to packet queueing. + - Fix anycast procfs device leak + - Don't add anycast reference to device multiple times + - Fix TCP MD5 locking. + - Fix %100 cpu spinning on sparc64 + - Fix skb data reallocation handling in IPSEC + - Fix xfrm_add_sa_expire() return value + - Fix interrupt probing on E450 sparc64 systems + - HID: fix possible double-free on error path in hid parser + - POWERPC: Fix performance monitor exception + - libata: add missing CONFIG_PM in LLDs + - libata: add missing PM callbacks + - bcm43xx: Fix assertion failures in interrupt handler + - mmc: Power quirk for ENE controllers + - UML - Fix 2.6.20 hang + - fix umask when noACL kernel meets extN tuned for ACLs + - sata_sil: ignore and clear spurious IRQs while executing commands by polling + - swsusp: Fix possible oops in userland interface + - Fix posix-cpu-timer breakage caused by stale p->last_ran value + - V4L: cx88-blackbird: allow usage of 376836 and 262144 sized firmware images + - V4L: fix cx25840 firmware loading + - DVB: digitv: open nxt6000 i2c_gate for TDED4 tuner handling + - DVB: cxusb: fix firmware patch for big endian systems + - V4L: pvrusb2: Handle larger cx2341x firmware images + - V4L: pvrusb2: Fix video corruption on stream start + - dvbdev: fix illegal re-usage of fileoperations struct + - md: Fix raid10 recovery problem. + - bcm43xx: fix for 4309 + - i386: Fix broken CONFIG_COMPAT_VDSO on i386 + - x86: Don't require the vDSO for handling a.out signals + - x86_64: Fix wrong gcc check in bitops.h + - sky2: transmit timeout deadlock + - sky2: dont flush good pause frames + - Fix oops in xfrm_audit_log() + - Prevent pseudo garbage in SYN's advertized window + - Fix IPX module unload + - Clear TCP segmentation offload state in ipt_REJECT + - Fix atmarp.h for userspace + - UHCI: fix port resume problem + - Fix recently introduced problem with shutting down a busy NFS server. + - Avoid using nfsd process pools on SMP machines. + - EHCI: turn off remote wakeup during shutdown + - IPV6: HASHTABLES: Use appropriate seed for caluculating ehash index. + - MTD: Fatal regression in drivers/mtd/redboot.c in 2.6.20 + - Kconfig: FAULT_INJECTION can be selected only if LOCKDEP is enabled. + - USB HID: Fix USB vendor and product IDs endianness for USB HID devices + - Fix null pointer dereference in appledisplay driver + - ieee1394: fix host device registering when nodemgr disabled + - ieee1394: video1394: DMA fix + - Fix compile error for e500 core based processors + - md: Avoid possible BUG_ON in md bitmap handling. + - Fix allocation failure handling in multicast + - Fix TCP FIN handling + - Fix ATM initcall ordering. + - Fix various bugs with aligned reads in RAID5. + - hda-intel - Don't try to probe invalid codecs + - usbaudio - Fix Oops with unconventional sample rates + - usbaudio - Fix Oops with broken usb descriptors + - USB: fix concurrent buffer access in the hub driver + - Missing critical phys_to_virt in lib/swiotlb.c + - AGP: intel-agp bugfix + - bcm43xx: Fix for oops on ampdu status + - bcm43xx: Fix for oops on resume + - ide: fix drive side 80c cable check + - Keys: Fix key serial number collision handling + - knfsd: Fix a race in closing NFSd connections. + - pata_amd: fix an obvious bug in cable detection + - prism54: correct assignment of DOT1XENABLE in WE-19 codepaths + - rtc-pcf8563: detect polarity of century bit automatically + - x86_64: fix 2.6.18 regression - PTRACE_OLDSETOPTIONS should be accepted + - ocfs2: ocfs2_link() journal credits update + * Update xen patch to changeset 48670 from fedora 2.6.20 branch. + * Support xen versions 3.0.4-1 and 3.0.3-1. + + [ Rod Whitby ] + * arm/ixp4xx: Enable PATA_ARTOP for the nas100d and dsmg600. + * arm/ixp4xx: Enable RTC for the nas100d + * Add nas100d Ethernet MAC setup support. + * Add temporary hack to get Artop PATA support going on the nas100d. + + [ maximilian attems ] + * i386: Enable kvm. + * Add stable release 2.6.20.3: + - Fix sparc64 device register probing + - Fix bug 7994 sleeping function called from invalid context + - Fix timewait jiffies + - Fix UDP header pointer after pskb_trim_rcsum() + - Fix compat_getsockopt + - bcm43xx: Fix problem with >1 GB RAM + - nfnetlink_log: fix NULL pointer dereference + - nfnetlink_log: fix possible NULL pointer dereference + - conntrack: fix {nf, ip}_ct_iterate_cleanup endless loops + - nf_conntrack/nf_nat: fix incorrect config ifdefs + - tcp conntrack: accept SYN|URG as valid + - nfnetlink_log: fix reference leak + - nfnetlink_log: fix use after free + - nf_conntrack: fix incorrect classification of IPv6 fragments as + ESTABLISHED + - nfnetlink_log: zero-terminate prefix + - nfnetlink_log: fix crash on bridged packet + - Fix callback bug in connector + - fix for bugzilla #7544 (keyspan USB-to-serial converter) + - ip6_route_me_harder should take into account mark + * Add myself to uploaders field, entry got lost after 2.6.16-2 + * Add stable release 2.6.20.4: + - fix deadlock in audit_log_task_context() + - EHCI: add delay to bus_resume before accessing ports + - Copy over mac_len when cloning an skb + - fix read past end of array in md/linear.c + - oom fix: prevent oom from killing a process with children/sibling unkillable + - Fix sparc64 hugepage bugs + - Fix page allocation debugging on sparc64 + - Fix niagara memory corruption + - Input: i8042 - really suppress ACK/NAK during panic blink + - Input: i8042 - fix AUX IRQ delivery check + - Input: i8042 - another attempt to fix AUX delivery checks + - Fix rtm_to_ifaddr() error return. + - r8169: fix a race between PCI probe and dev_open + - futex: PI state locking fix + - adjust legacy IDE resource setting (v2) + - UML - arch_prctl should set thread fs + - gdth: fix oops in gdth_copy_cmd() + - Fix extraneous IPSEC larval SA creation + - IA64: fix NULL pointer in ia64/irq_chip-mask/unmask function + - st: fix Tape dies if wrong block size used, bug 7919 + - Fix ipv6 flow label inheritance + - NETFILTER: nfnetlink_log: fix reference counting + - mm: fix madvise infinine loop + - Fix another NULL pointer deref in ipv6_sockglue.c + - NetLabel: Verify sensitivity level has a valid CIPSO mapping + - Fix GFP_KERNEL with preemption disabled in fib_trie + - IrDA: irttp_dup spin_lock initialisation + - hda-intel - Fix codec probe with ATI controllers + - hrtimer: prevent overrun DoS in hrtimer_forward() + - fix MTIME_SEC_MAX on 32-bit + - nfs: nfs_getattr() can't call nfs_sync_mapping_range() for non-regular files + - dio: invalidate clean pages before dio write + - initialise pi_lock if CONFIG_RT_MUTEXES=N + * Add stable release 2.6.20.5: + - FRA_{DST,SRC} are le16 for decnet + - CIFS: reset mode when client notices that ATTR_READONLY is no longer set + - ide: clear bmdma status in ide_intr() for ICHx controllers (revised #4) + - ide: remove clearing bmdma status from cdrom_decode_status() (rev #4) + - NET: Fix sock_attach_fd() failure in sys_accept() + - DCCP: Fix exploitable hole in DCCP socket options + - ide: revert "ide: fix drive side 80c cable check, take 2" for now + - generic_serial: fix decoding of baud rate + - IPV6: Fix ipv6 round-robin locking. + - VIDEO: Fix FFB DAC revision probing + - PPP: Fix PPP skb leak + - V4L: msp_attach must return 0 if no msp3400 was found. + - CRYPTO: api: scatterwalk_copychunks() fails to advance through scatterlist + - APPLETALK: Fix a remotely triggerable crash (CVE-2007-1357) + - UML - fix epoll + - UML - host VDSO fix + - UML - Fix static linking + - UML - use correct register file size everywhere + - libata: sata_mv: don't touch reserved bits in EDMA config register + - libata: sata_mv: Fix 50xx irq mask + - libata bugfix: HDIO_DRIVE_TASK + - V4L: Fix SECAM handling on saa7115 + - DVB: fix nxt200x rf input switching + - SPARC: Fix sparc builds with gcc-4.2.x + - V4L: saa7146: Fix allocation of clipping memory + - uml: fix unreasonably long udelay + - NET: Fix packet classidier NULL pointer OOPS + - NET_SCHED: Fix ingress qdisc locking. + - sata_nv: delay on switching between NCQ and non-NCQ commands + - dvb-core: fix several locking related problems + - ieee1394: dv1394: fix CardBus card ejection + - CIFS: Allow reset of file to ATTR_NORMAL when archive bit not set + - jmicron: make ide jmicron driver play nice with libata ones + - libata: clear TF before IDENTIFYing + - NET: Fix FIB rules compatability + - DVB: isl6421: don't reference freed memory + - V4L: radio: Fix error in Kbuild file + - i2o: block IO errors on i2o disk + * Add stable release 2.6.20.6: + - CRYPTO api: Use the right value when advancing scatterwalk_copychunks + - uml: fix static linking for real + + [ Gordon Farquharson ] + * Disable broken config options on ARM. + + [ Frederik Schüler ] + * Disable NAPI on forcedeth, it is broken. + + [ dann frazier ] + * Hardcode the output of the scripts under arch/ia64/scripts as executed + in an etch environment so that we can build out of tree modules correctly + (re-add; patch seems to have been dropped during a merge.) + See: #392592 + * Allow '.' and '+' in the target dist field of the changelog. dpkg has + supported this since 1.13.20, see #361171. + + -- Bastian Blank Mon, 09 Apr 2007 19:21:52 +0200 + +linux-2.6 (2.6.18.dfsg.1-10) unstable; urgency=low + + [ maximilian attems ] + * Add patches out of stable queue 2.6.18 + - [amd64] Don't leak NT bit into next task (CVE-2006-5755) + - IB/srp: Fix FMR mapping for 32-bit kernels and addresses above 4G + - SCSI: add missing cdb clearing in scsi_execute() + * Xen postinst: Use takeover for update-initramfs. Makes postinst idempotent. + On creation it should always overwrite. (closes: #401183) + * Hand-picked from stable release 2.6.16.38: + - i2c-viapro: Add support for the VT8237A and VT8251 + - PCI: irq: irq and pci_ids patch for Intel ICH9 + - i2c-i801: SMBus patch for Intel ICH9 + - fix the UML compilation + - drm: allow detection of new VIA chipsets + - drm: Add the P4VM800PRO PCI ID. + - rio: typo in bitwise AND expression. + - i2c-mv64xxx: Fix random oops at boot + - i2c: fix broken ds1337 initialization + - [SUNKBD]: Fix sunkbd_enable(sunkbd, 0); obvious. + - Call init_timer() for ISDN PPP CCP reset state timer (CVE-2006-5749) + - V4L: cx88: Fix leadtek_eeprom tagging + - SPI/MTD: mtd_dataflash oops prevention + - grow_buffers() infinite loop fix (CVE-2006-5757/CVE-2006-6060) + - corrupted cramfs filesystems cause kernel oops (CVE-2006-5823) + - ext2: skip pages past number of blocks in ext2_find_entry + (CVE-2006-6054) + - handle ext3 directory corruption better (CVE-2006-6053) + - hfs_fill_super returns success even if no root inode (CVE-2006-6056) + backout previous fix, was not complete. + - Fix for shmem_truncate_range() BUG_ON() + - ebtables: check struct type before computing gap + - [IPV4/IPV6]: Fix inet{,6} device initialization order. + - [IPV6] Fix joining all-node multicast group. + - [SOUND] Sparc CS4231: Use 64 for period_bytes_min + * [PKTGEN]: Convert to kthread API. Thanks David Miller for patch. + * [IDE] Add driver for Jmicron JMB36x devices by Alan Cox. + Enable jmicron on i386 and amd64 archs. + * Hand-picked from stable release 2.6.16.39: + - atiixp: hang fix + - V4L/DVB: Flexcop-usb: fix debug printk + - V4L/DVB: Fix uninitialised variable in dvb_frontend_swzigzag + - read_zero_pagealigned() locking fix + - adfs: fix filename handling + - sparc32: add offset in pci_map_sg() + - cdrom: set default timeout to 7 seconds + - [SCSI] qla1280 command timeout + - [SCSI] qla1280 bus reset typo + - [Bluetooth] Check if DLC is still attached to the TTY + - [Bluetooth] Fix uninitialized return value for RFCOMM sendmsg() + - [Bluetooth] Return EINPROGRESS for non-blocking socket calls + - [Bluetooth] Handle command complete event for exit periodic inquiry + - [Bluetooth] Fix compat ioctl for BNEP, CMTP and HIDP + - [Bluetooth] Add locking for bt_proto array manipulation + - i386: fix CPU hotplug with 2GB VMSPLIT + + [ dann frazier ] + * Fix raid1 recovery (closes: #406181) + + [ Jurij Smakov ] + * Add dtlb-prot-bug-niagara.patch by David Miller, fixing the bug in the + Niagara's DTLB-PROT trap. + + [ Bastian Blank ] + * i386: Add amd64 image. (closes: #379090) + + -- Bastian Blank Fri, 2 Feb 2007 12:50:35 +0100 + +linux-2.6 (2.6.18.dfsg.1-9) unstable; urgency=low + + [ Martin Michlmayr ] + * arm/iop32x: Enable CONFIG_IP_NF_CONNTRACK_EVENTS and _NETLINK. + * arm/ixp4xx: Enable some more I2C sensor modules. + * arm/ixp4xx: Enable CONFIG_USB_NET_RNDIS_HOST. + * arm/footbridge: Enable CONFIG_NATSEMI. + * Revert mm/msync patches because they cause filesystem corruption + (closes: #401006, #401980, #402707) ... + * ... and add an alternative msync patch from Hugh Dickins that + doesn't depend on the mm changes (closes: #394392). + * mips: provide pci_get_legacy_ide_irq needed by some IDE drivers + (see #404950). + * arm: Implement flush_anon_page(), which is needed for FUSE + (closes: #402876) and possibly dm-crypt/LUKS (see #403426). + * arm: Turn off PCI burst on the Cyber2010, otherwise X11 on + Netwinder will crash. + * arm/iop32x: Enable CONFIG_IEEE80211_SOFTMAC and drivers based + on it. + * arm/ixp4xx: Upgrade to version 0.3.1 of the IXP4xx NPE Ethernet + driver. This version fixes stuck connections, e.g. with scp and + NFS (closes: #404447). + * arm/ixp4xx: Enable CONFIG_VIDEO_CPIA_USB. + * arm/ixp4xx: Enable CONFIG_ISCSI_TCP. + * arm/iop32x: Likewise. + + [ Bastian Blank ] + * Bump ABI to 4. + * Update vserver patch to 2.0.2.2-rc9. (closes: #402743, #403790) + * Update xen patch to changeset 36186 from Fedora 2.6.18 branch. + * i386/xen: Build only the pae version. (closes: #390862) + * hppa: Override host type when necessary. + * Fix tg3 reset. (closes: #405085) + + [ dann frazier ] + * Fix potential fragmentation attacks in ip6_tables (CVE-2006-4572) + * Backport a number of fixes for the cciss driver + - Fix a bug with 1TB disks caused by converting total_size to an int + - Claim devices that are of the HP RAID class and have a valid cciss sig + - Make NR_CMDS a per-controller define - most can do 1024 commands, but + the E200 family can only support 128 + - Change the SSID on the E500 as a workaround for a firmware bug + - Disable prefetch on the P600 controller. An ASIC bug may result in + prefetching beyond the end of physical memory + - Increase blk_queue_max_sectors from 512 to 2048 to increase performance + - Map out more memor for the PCI config table, required to reach offset + 0x214 to disable DMA on the P600 + - Set a default raid level on a volume that either does not support + reading the geometry or reports an invalid geometry for whatever reason + to avoid problems with buggy firmware + - Revert change that replaed XFER_READ/XFER_WRITE macros with + h->cciss_read/h->cciss_write that caused command timeouts on older + controllers on ia32 (closes: #402787) + * Fix mincore hang (CVE-2006-4814) + * ia64: turn on IOC4 modules for SGI Altix systems. Thanks to Stephane Larose + for suggesting this. + * Add versioned build dep on findutils to make sure the system find command + supports the -execdir action (closes: #405150) + * Hardcode the output of the scripts under arch/ia64/scripts as executed + in an etch environment so that we can build out of tree modules correctly + (closes: #392592) + * Update unusual_devs entry for ipod to fix an eject issue (closes: #406124) + * Re-add verify_pmtmr_rate, resolving problems seen on older K6 ASUS + boards where the ACPI PM timer runs too fast (closes: #394753) + * Avoid condition where /proc/swaps header may not be printed + (closes: #292318) + * [hppa] disable XFS until it works (closes: #350482) + + [ Norbert Tretkowski ] + * libata: handle 0xff status properly. (closes: #391867) + * alpha: enabled CONFIG_SCSI_ARCMSR. (closes: #401187) + * removed BROKEN_ON_SMP dependency from I2C_ELEKTOR. (closes: #402253) + + [ Christian T. Steigies ] + * m68k/atari: enable keyboard, mouse and fb drivers + * m68k/atari: fixes for ethernec and video driver by Michael Schmitz + * m68k/atari: fixes for scsi driver by Michael Schmitz + * m68k/mac: fixes for mace and cuda driver by Finn Thain + * m68k/atari: fixes for ide driver by Michael Schmitz + * m68k/atari: fixes for ide driver by Michael Schmitz + * m68k/atari: fixes for ethernec and atakeyb driver by Michael Schmitz, build ethernec as module + * m68k/mac: fixes for mace and adb driver by Finn Thain + + [ maximilian attems ] + * Add stable release 2.6.18.6: + - EBTABLES: Fix wraparounds in ebt_entries verification. + - EBTABLES: Verify that ebt_entries have zero ->distinguisher. + - EBTABLES: Deal with the worst-case behaviour in loop checks. + - EBTABLES: Prevent wraparounds in checks for entry components' sizes. + - skip data conversion in compat_sys_mount when data_page is NULL + - bonding: incorrect bonding state reported via ioctl + - x86-64: Mark rdtsc as sync only for netburst, not for core2 + (closes: #406767) + - dm crypt: Fix data corruption with dm-crypt over RAID5 (closes: #402812) + - forcedeth: Disable INTx when enabling MSI in forcedeth + - PKT_SCHED act_gact: division by zero + - XFRM: Use output device disable_xfrm for forwarded packets + - IPSEC: Fix inetpeer leak in ipv4 xfrm dst entries. + - V4L: Fix broken TUNER_LG_NTSC_TAPE radio support + - m32r: make userspace headers platform-independent + - IrDA: Incorrect TTP header reservation + - SUNHME: Fix for sunhme failures on x86 + - Bluetooth: Add packet size checks for CAPI messages (CVE-2006-6106) + - softmac: remove netif_tx_disable when scanning + - DVB: lgdt330x: fix signal / lock status detection bug + - dm snapshot: fix freeing pending exception + - NET_SCHED: policer: restore compatibility with old iproute binaries + - NETFILTER: ip_tables: revision support for compat code + - ARM: Add sys_*at syscalls + - ieee1394: ohci1394: add PPC_PMAC platform code to driver probe + - softirq: remove BUG_ONs which can incorrectly trigger + * Hand-picked from stable release 2.6.16.30: + - [PPPOE]: Advertise PPPoE MTU + * Hand-picked from stable release 2.6.16.31: + - [NETFILTER]: Fix ip6_tables extension header bypass bug (CVE-2006-4572) + - fix RARP ic_servaddr breakage + * Hand-picked from stable release 2.6.16.32: + - drivers/telephony/ixj: fix an array overrun + - flush D-cache in failure path + * Hand-picked from stable release 2.6.16.33: + - Add new PHY to sis900 supported list + - ipmi_si_intf.c: fix "&& 0xff" typos + - drivers/scsi/psi240i.c: fix an array overrun + * Hand-picked from stable release 2.6.16.34: + - [IPX]: Annotate and fix IPX checksum + - [IGMP]: Fix IGMPV3_EXP() normalization bit shift value. + * Hand-picked from stable release 2.6.16.35: + - sgiioc4: Disable module unload + - Fix a masking bug in the 6pack driver. + - drivers/usb/input/ati_remote.c: fix cut'n'paste error + - proper flags type of spin_lock_irqsave() + * Hand-picked from stable release 2.6.16.37: + - [CRYPTO] sha512: Fix sha384 block size + - [SCSI] gdth: Fix && typos + - Fix SUNRPC wakeup/execute race condition + * Enable DEBUG_FS for usbmon in generic config. Don't disable it on alpha, + amd64, hppa and ia64. (closes: 378542) + * Backport a number of upstream fixes for the r8169 driver, needed for + network performance (closes: 388870, 400524) + - r8169: more alignment for the 0x8168 + - r8169: phy program update + - r8169: more magic during initialization of the hardware + - r8169: perform a PHY reset before any other operation at boot time + - r8169: Fix iteration variable sign + - r8169: remove extraneous Cmd{Tx/Rx}Enb write + * sound: hda: detect ALC883 on MSI K9A Platinum motherboards (MS-7280) + patch from Leonard Norrgard + * tulip: Add i386 specific patch to remove duplicate pci ids. + Thanks Jurij Smakov (closes: #334104, #405203) + * amd64, i386: Disable SK98LIN as SKGE is the modern capable driver. + (closes: 405196) + * Backout net-bcm43xx_netdev_watchdog.patch and push 2.6.18.2 fix. + (closes: 402475) + + [ Jurij Smakov ] + * Add bugfix/sparc/isa-dev-no-reg.patch to make sure that + isa_dev_get_resource() can deal with devices which do not have a 'reg' + PROM property. Failure to handle such devices properly resulted in an + oops during boot on Netra X1. Thanks to Richard Mortimer for debugging + and patch. (closes: #404216) + * Add bugfix/sparc/ehci-hub-contol-alignment.patch to prevent unaligned + memory accesses in ehci-hub-control() by adding an alignment attribute + to the tbuf array declaration. Thanks to David Miller for the patch. + + [ Sven Luther ] + * [powerpc] Enable CONFIG_PMAC_BACKLIGHT_LEGACY (Closes: #407671). + + -- Bastian Blank Wed, 24 Jan 2007 13:21:51 +0100 + +linux-2.6 (2.6.18-8) unstable; urgency=low + + * Fix relations in the generated control file. (closes: #400544) + * Add stable release 2.6.18.4: + - bridge: fix possible overflow in get_fdb_entries (CVE-2006-5751) + * Add stable release 2.6.18.5: + - pcmcia: fix 'rmmod pcmcia' with unbound devices + - BLUETOOTH: Fix unaligned access in hci_send_to_sock. + - alpha: Fix ALPHA_EV56 dependencies typo + - TG3: Add missing unlock in tg3_open() error path. + - softmac: fix a slab corruption in WEP restricted key association + - AGP: Allocate AGP pages with GFP_DMA32 by default + - V4L: Do not enable VIDEO_V4L2 unconditionally + - bcm43xx: Drain TX status before starting IRQs + - fuse: fix Oops in lookup + - UDP: Make udp_encap_rcv use pskb_may_pull + - NETFILTER: Missing check for CAP_NET_ADMIN in iptables compat layer + - NETFILTER: ip_tables: compat error way cleanup + - NETFILTER: ip_tables: fix module refcount leaks in compat error paths + - NETFILTER: Missed and reordered checks in {arp,ip,ip6}_tables + - NETFILTER: arp_tables: missing unregistration on module unload + - NETFILTER: Kconfig: fix xt_physdev dependencies + - NETFILTER: xt_CONNSECMARK: fix Kconfig dependencies + - NETFILTER: H.323 conntrack: fix crash with CONFIG_IP_NF_CT_ACCT + - IA64: bte_unaligned_copy() transfers one extra cache line. + - x86 microcode: don't check the size + - scsi: clear garbage after CDBs on SG_IO + - IPV6: Fix address/interface handling in UDP and DCCP, according to the scoping architecture. + * Revert abi changing patch from 2.6.18.5. + + -- Bastian Blank Sun, 10 Dec 2006 17:51:53 +0100 + +linux-2.6 (2.6.18-7) unstable; urgency=low + + [ Bastian Blank ] + * Emit conflict lines for initramfs generators. (closes: #400305) + * Update vserver patch to 2.0.2.2-rc8. + * s390: Add patch to fix posix types. + + [ Martin Michlmayr ] + * r8169: Add an option to ignore parity errors. + * r8169: Ignore parity errors on the Thecus N2100. + * rtc: Add patch from Riku Voipio to get RS5C372 going on the N2100. + * arm/iop32x: Build RS5C372 support into the kernel. + + [ maximilian attems ] + * hfs: Fix up error handling in HFS. (MOKB-14-11-2006) + * sata: Avoid null pointer dereference in SATA Promise. + * cifs: Set CIFS preferred IO size. + + [ Jurij Smakov ] + * Add bugfix/sunhme-pci-enable.patch, fixing the failure of sunhme + driver on x86/PCI hosts due to missing pci_enable_device() and + pci_set_master() calls, lost during code refactoring upstream. + (closes: #397460) + + -- Bastian Blank Mon, 4 Dec 2006 15:20:30 +0100 + +linux-2.6 (2.6.18-6) unstable; urgency=low + + [ maximilian attems ] + * Enable the new ACT modules globally. They were already set for amd64, hppa + and mips/mipsel - needed by newer iproute2. (closes: #395882, #398172) + * Fix msync() for LSB 3.1 compliance, backport fedora patches from 2.6.19 + - mm: tracking shared dirty pages + - mm: balance dirty pages + - mm: optimize the new mprotect() code a bit + - mm: small cleanup of install_page() + - mm: fixup do_wp_page() + - mm: msync() cleanup (closes: #394392) + * [amd64,i386] Enable CONFIG_USB_APPLETOUCH=m (closes: #382298) + * Add stable release 2.6.18.3: + - x86_64: Fix FPU corruption + - e1000: Fix regression: garbled stats and irq allocation during swsusp + - POWERPC: Make alignment exception always check exception table + - usbtouchscreen: use endpoint address from endpoint descriptor + - fix via586 irq routing for pirq 5 + - init_reap_node() initialization fix + - CPUFREQ: Make acpi-cpufreq unsticky again. + - SPARC64: Fix futex_atomic_cmpxchg_inatomic implementation. + - SPARC: Fix missed bump of NR_SYSCALLS. + - NET: __alloc_pages() failures reported due to fragmentation + - pci: don't try to remove sysfs files before they are setup. + - fix UFS superblock alignment issues + - NET: Set truesize in pskb_copy + - block: Fix bad data direction in SG_IO (closes: #394690) + - cpqarray: fix iostat + - cciss: fix iostat + - Char: isicom, fix close bug + - TCP: Don't use highmem in tcp hash size calculation. + - S390: user readable uninitialised kernel memory, take 2. + - correct keymapping on Powerbook built-in USB ISO keyboards + - USB: failure in usblp's error path + - Input: psmouse - fix attribute access on 64-bit systems + - Fix sys_move_pages when a NULL node list is passed. + - CIFS: report rename failure when target file is locked by Windows + - CIFS: New POSIX locking code not setting rc properly to zero on successful + - Patch for nvidia divide by zero error for 7600 pci-express card + (maybe fixes 398258) + - ipmi_si_intf.c sets bad class_mask with PCI_DEVICE_CLASS + + [ Steve Langasek ] + * [alpha] new titan-video patch, for compatibility with TITAN and similar + systems with non-standard VGA hose configs + * [alpha] bugfix for srm_env module from upstream (Jan-Benedict Glaw), + makes the module compatible with the current /proc interface so that + reads no longer return EFAULT. (closes: #353079) + * Bump ABI to 3 for the msync fixes above. + + [ Martin Michlmayr ] + * arm: Set CONFIG_BINFMT_MISC=m + * arm/ixp4xx: Set CONFIG_ATM=m (and related modules) so CONFIG_USB_ATM has + an effect. + * arm/iop32x: Likewise. + * arm/s3c2410: Unset CONFIG_PM_LEGACY. + * arm/versatile: Fix Versatile PCI config byte accesses + * arm/ixp4xx: Swap the disk 1 and disk 2 LED definitions so they're right. + * mipsel/r5k-cobalt: Unset CONFIG_SCSI_SYM53C8XX_2 because the timeout is + just too long. + * arm/ixp4xx: Enable more V4L USB devices. + + [ dann frazier ] + * Backport various SCTP changesets from 2.6.19, recommended by Vlad Yasevich + (closes: #397946) + * Add a "Scope of security support" section to README.Debian, recommended + by Moritz Muehlenhoff + + [ Thiemo Seufer ] + * Enable raid456 for mips/mipsel qemu kernel. + + [ dann frazier ] + * The scope of the USR-61S2B unusual_dev entry was tightened, but too + strictly. Loosen it to apply to additional devices with a smaller bcd. + (closes: #396375) + + [ Sven Luther ] + * Added support for TI ez430 development tool ID in ti_usb. + Thanks to Oleg Verych for providing the patch. + + [ Christian T. Steigies ] + * Added support for Atari EtherNEC, Aranym, video, keyboard, mouse, and serial + by Michael Schmitz + + [ Bastian Blank ] + * [i386] Reenable AVM isdn card modules. (closes: #386872) + + -- Bastian Blank Tue, 21 Nov 2006 11:28:09 +0100 + +linux-2.6 (2.6.18-5) unstable; urgency=low + + [ maximilian attems ] + * [s390] readd the fix for "S390: user readable uninitialised kernel memory + (CVE-2006-5174)" + * [s390] temporarily add patch queued for 2.6.18.3 fixing 32 bit opcodes and + instructions. + + [ Thiemo Seufer ] + * Fix build failure of hugetlbfs (closes: #397139). + * Add kernel configuration for qemu's mips/mipsel emulation, thanks to + Aurelien Jarno. + + [ Bastian Blank ] + * Update vserver patch to 2.0.2.2-rc6. + * Update xen parts for vserver. (closes: #397281) + + [ dann frazier ] + * [ia64] Move to upstream version of sal-flush-fix patch, which is slightly + different than the early version added in 2.6.18-3. + + [ Frederik Schüler ] + * [i386] Acticate CONFIG_SX for all flavours. (closes: #391275) + + [ Steve Langasek ] + * [alpha] new asm-subarchs patch: tell the compiler that we're + deliberately emitting ev56 or ev6 instructions, so that this code + will still compile without having to cripple gcc-4.1's checking of + whether the correct instruction set is used. Closes: #397139. + + [ Martin Michlmayr ] + * arm/ixp4xx: Enable CONFIG_USB_ATM. + * arm/iop32x: Enable CONFIG_PPPOE. + * arm/iop32x: Enable CONFIG_USB_ATM. + + -- Bastian Blank Wed, 8 Nov 2006 17:15:55 +0100 + +linux-2.6 (2.6.18-4) unstable; urgency=low + + [ Norbert Tretkowski ] + * [alpha] Switched to gcc-4.1. + + [ Jurij Smakov ] + * [sparc] Remove sparc64-atyfb-xl-gr.patch, it does more harm than + good in 2.6.18. + * [sparc] Add bugfix/sparc/compat-alloc-user-space-alignment.patch + (thanks to David Miller) to make sure that compat_alloc_user_space() + always returns memory aligned on a 8-byte boundary on sparc. This + prevents a number of unaligned memory accesses, like the ones in + sys_msgrcv() and compat_sys_msgrcv(), triggered every 5 seconds whenever + fakeroot is running. + * [sparc] Add bugfix/sparc/bus-id-size.patch (thanks to David Miller) + to ensure that the size of the strings stored in the bus_id field of + struct device never exceeds the amount of memory allocated for them + (20 bytes). It fixes the situations in which storing longer device + names in this field would cause corruption of adjacent memory regions. + (closes: #394697). + * [sparc] Add bugfix/sparc/sunblade1k-boot-fix.patch (thanks to David + Miller) to fix a boottime crash on SunBlade1000. + * [sparc] Add bugfix/sparc/t1k-cpu-lockup.patch (thanks to David Miller) + to prevent soft CPU lockup on T1000 servers, which can be triggered from + userspace, resulting in denial of service. + + [ Martin Michlmayr ] + * arm/iop32x: Fix the interrupt of the 2nd Ethernet slot on N2100. + * arm/iop32x: Allow USB and serial to co-exist on N2100. + * arm/ixp4xx: Add clocksource for Intel IXP4xx platforms. + * arm: Enable CONFIG_AUDIT=y again. + * arm/ixp4xx: Add the IXP4xx Ethernet driver. + * arm/ixp4xx: Build LED support into the kernel. + * Add a driver for Fintek F75375S/SP and F75373. + * arm/iop32x: Build F75375S/SP support in. + * arm/iop32x: Fix the size of the RedBoot config partition. + + [ maximilian attems ] + * Add netpoll leak fix. + * Add upstream forcedeth swsusp support. + * r8169: PCI ID for Corega Gigabit network card. + * r8169: the MMIO region of the 8167 stands behin BAR#1. + * r8169: Add upstream fix for infinite loop during hotplug. + * Bump build-dependency on kernel-package to 10.063. + * r8169: pull revert mac address change support. + * bcm43xx: Add full netdev watchout timeout patch. (closes: 392065) + Thanks Sjoerd Simons for the testing. + * Add stable release 2.6.18.2: + - Remove not yet released, revert the included patches. + - Keep aboves bcm43xx fix, it's more complete. + - Watchdog: sc1200wdt - fix missing pnp_unregister_driver() + - fix missing ifdefs in syscall classes hookup for generic targets + - JMB 368 PATA detection + - usbfs: private mutex for open, release, and remove + - sound/pci/au88x0/au88x0.c: ioremap balanced with iounmap + - x86-64: Fix C3 timer test + - Reintroduce NODES_SPAN_OTHER_NODES for powerpc + - ALSA: emu10k1: Fix outl() in snd_emu10k1_resume_regs() + - IB/mthca: Use mmiowb after doorbell ring + - SCSI: DAC960: PCI id table fixup + - ALSA: snd_rtctimer: handle RTC interrupts with a tasklet + - JFS: pageno needs to be long + - SPARC64: Fix central/FHC bus handling on Ex000 systems. + - SPARC64: Fix memory corruption in pci_4u_free_consistent(). + - SPARC64: Fix PCI memory space root resource on Hummingbird. + (closes: #392078) + - Fix uninitialised spinlock in via-pmu-backlight code. + - SCSI: aic7xxx: pause sequencer before touching SBLKCTL + - IPoIB: Rejoin all multicast groups after a port event + - ALSA: Dereference after free in snd_hwdep_release() + - rtc-max6902: month conversion fix + - NET: Fix skb_segment() handling of fully linear SKBs + - SCTP: Always linearise packet on input + - SCSI: aic7xxx: avoid checking SBLKCTL register for certain cards + - IPV6: fix lockup via /proc/net/ip6_flowlabel [CVE-2006-5619] + - fix Intel RNG detection + - ISDN: check for userspace copy faults + - ISDN: fix drivers, by handling errors thrown by ->readstat() + - splice: fix pipe_to_file() ->prepare_write() error path + - ALSA: Fix bug in snd-usb-usx2y's usX2Y_pcms_lock_check() + - ALSA: Repair snd-usb-usx2y for usb 2.6.18 + - PCI: Remove quirk_via_abnormal_poweroff + - Bluetooth: Check if DLC is still attached to the TTY + - vmscan: Fix temp_priority race + - Use min of two prio settings in calculating distress for reclaim + - __div64_32 for 31 bit. Fixes funny clock speed on hercules emulator. + (closes: 395247) + - DVB: fix dvb_pll_attach for mt352/zl10353 in cx88-dvb, and nxt200x + - fuse: fix hang on SMP + - md: Fix bug where spares don't always get rebuilt properly when they become live. + - md: Fix calculation of ->degraded for multipath and raid10 + - knfsd: Fix race that can disable NFS server. + - md: check bio address after mapping through partitions. + - fill_tgid: fix task_struct leak and possible oops + - uml: fix processor selection to exclude unsupported processors and features + - uml: remove warnings added by previous -stable patch + - Fix sfuzz hanging on 2.6.18 + - SERIAL: Fix resume handling bug + - SERIAL: Fix oops when removing suspended serial port + - sky2: MSI test race and message + - sky2: pause parameter adjustment + - sky2: turn off PHY IRQ on shutdown + - sky2: accept multicast pause frames + - sky2: GMAC pause frame + - sky2: 88E803X transmit lockup (2.6.18) + - tcp: cubic scaling error + - mm: fix a race condition under SMC + COW + - ALSA: powermac - Fix Oops when conflicting with aoa driver + - ALSA: Fix re-use of va_list + - posix-cpu-timers: prevent signal delivery starvation + - NFS: nfs_lookup - don't hash dentry when optimising away the lookup + - uml: make Uml compile on FC6 kernel headers + - Fix potential interrupts during alternative patching + * Backport atkbd - supress "too many keys" error message. + * [s390] Revert temporarly 2.6.18.1 "S390: user readable uninitialised + kernel memory (CVE-2006-5174)" fix as it causes ftfbs + + [ Sven Luther ] + * [powerpc] Added exception alignement patch from Benjamin Herrenschmidt. + + [ Frederik Schüler ] + * Bump ABI to 2. + * Update vserver patch to 2.0.2.2-rc4. + + [ Thiemo Seufer ] + * Add patches from linux-mips.org's 2.6.18-stable branch: + - bugfix/copy-user-highpage.patch, needed for cache alias handling + on mips/mipsel/hppa. + - bugfix/mips/syscall-wiring.patch, fixes TLS register access, and + n32 rt_sigqueueinfo. + - bugfix/mips/sb1-flush-cache-data-page.patch, missing cache flush + on SB-1. + - bugfix/mips/trylock.patch, fix trylock implementation for R1x000 + and R3xxx. + - bugfix/mips/smp-cpu-bringup.patch, correct initialization of + non-contiguous CPU topology. + - bugfix/mips/header-exports.patch, clean up userland exports of + kernel headers. + - bugfix/mips/sb1-interrupt-handler.patch, fix broken interrupt + routing on SB-1. + - bugfix/mips/cache-alias.patch, fixes #387498 for mips/mipsel. + - bugfix/mips/ip22-zilog-console.patch, fix long delays seen with + SGI ip22 serial console. + - bugfix/mips/signal-handling.patch, fixes a signal handling race + condition shown with gdb. + - bugfix/mips/sb1-duart-tts.patch, replaces mips-sb1-duart-tts.patch, + use standard Linux names for SB-1 consoles. + - bugfix/mips/wait-race.patch, correct behaviour of the idle loop. + - bugfix/mips/sgi-ioc3.patch, checksumming fix for IOC3 network + driver. + - features/mips/qemu-kernel.patch, support for the mips/mipsel + machine emulated by Qemu. + - features/mips/backtrace.patch, reimplementation of stack analysis + and backtrace printing, useful for in-kernel debugging. + - bugfix/mips/dec-scsi.patch, replaces mips-dec-scsi.patch, fixes DSP + SCSI driver for DECstations. + - bugfix/mips/dec-serial.patch, replaces mips-dec-serial.patch, fix + serial console handling on DECstations. + + -- Frederik Schüler Sat, 4 Nov 2006 18:45:02 +0100 + +linux-2.6 (2.6.18-3) unstable; urgency=low + + [ Bastian Blank ] + * Fix home of patch apply script. + * Unify CPUSET option. (closes: #391931) + * Support xen version 3.0.3-1. + * Add AHCI suspend support. + * Add patch to support bindmount without nodev on vserver. + * Update fedora xen patch to changeset 36252. + + [ Steve Langasek ] + * [alpha] restore alpha-prctl.patch, which keeps disappearing every time + there's a kernel upgrade :/ + + [ Frederik Schüler ] + * Activate CONFIG_NET_CLS_* globaly. (Closes: #389918) + * Make CONFIG_EFI_VARS modular on i386. (Closes: #381951) + * Activate CONFIG_SCSI_ARCMSR on amd64, powerpc, sparc too. + * [vserver] Activate HARDCPU and HARDCPU_IDLE. + * [vserver] Upgrade to vs2.0.2.2-rc2. + + [ maximilian attems ] + * [mipsel] Disable CONFIG_SECURITY_SECLVL on DECstations too. + * Add stable release 2.6.18.1: + - add utsrelease.h to the dontdiff file + - V4L: copy-paste bug in videodev.c + - block layer: elv_iosched_show should get elv_list_lock + - NETFILTER: NAT: fix NOTRACK checksum handling + - bcm43xx: fix regressions in 2.6.18 (Closes: #392065) + - x86-64: Calgary IOMMU: Fix off by one when calculating register space + location + - ide-generic: jmicron fix + - scx200_hrt: fix precedence bug manifesting as 27x clock in 1 MHz mode + - invalidate_inode_pages2(): ignore page refcounts + - rtc driver rtc-pcf8563 century bit inversed + - fbdev: correct buffer size limit in fbmem_read_proc() + - mm: bug in set_page_dirty_buffers + - TCP: Fix and simplify microsecond rtt sampling + - MD: Fix problem where hot-added drives are not resynced. + - IPV6: Disable SG for GSO unless we have checksum + - PKT_SCHED: cls_basic: Use unsigned int when generating handle + - sata_mv: fix oops + - [SPARC64]: Kill bogus check from bootmem_init(). + - IPV6: bh_lock_sock_nested on tcp_v6_rcv + - [CPUFREQ] Fix some more CPU hotplug locking. + - SPARC64: Fix serious bug in sched_clock() on sparc64 + - Fix VIDIOC_ENUMSTD bug + - load_module: no BUG if module_subsys uninitialized + - i386: fix flat mode numa on a real numa system + - cpu to node relationship fixup: map cpu to node + - cpu to node relationship fixup: acpi_map_cpu2node + - backlight: fix oops in __mutex_lock_slowpath during head + /sys/class/graphics/fb0/* + - do not free non slab allocated per_cpu_pageset + - rtc: lockdep fix/workaround + - powerpc: Fix ohare IDE irq workaround on old powermacs + - sysfs: remove duplicated dput in sysfs_update_file + - powerpc: fix building gdb against asm/ptrace.h + - Remove offsetof() from user-visible + - Clean up exported headers on CRIS + - Fix v850 exported headers + - Don't advertise (or allow) headers_{install,check} where inappropriate. + - Remove UML header export + - Remove ARM26 header export. + - Fix H8300 exported headers. + - Fix m68knommu exported headers + - Fix exported headers for SPARC, SPARC64 + - Fix 'make headers_check' on m32r + - Fix 'make headers_check' on sh64 + - Fix 'make headers_check' on sh + - Fix ARM 'make headers_check' + - One line per header in Kbuild files to reduce conflicts + - sky2 network driver device ids + - sky2: tx pause bug fix + - netdrvr: lp486e: fix typo + - mv643xx_eth: fix obvious typo, which caused build breakage + - zone_reclaim: dynamic slab reclaim + - Fix longstanding load balancing bug in the scheduler + - jbd: fix commit of ordered data buffers + - ALSA: Fix initiailization of user-space controls + - USB: Allow compile in g_ether, fix typo + - IB/mthca: Fix lid used for sending traps + - S390: user readable uninitialised kernel memory (CVE-2006-5174) + - zd1211rw: ZD1211B ASIC/FWT, not jointly decoder + - V4L: pvrusb2: Limit hor res for 24xxx devices + - V4L: pvrusb2: Suppress compiler warning + - V4L: pvrusb2: improve 24XXX config option description + - V4L: pvrusb2: Solve mutex deadlock + - DVB: cx24123: fix PLL divisor setup + - V4L: Fix msp343xG handling regression + - UML: Fix UML build failure + - uml: use DEFCONFIG_LIST to avoid reading host's config + - uml: allow using again x86/x86_64 crypto code + - NET_SCHED: Fix fallout from dev->qdisc RCU change + * Add backported git patch remving BSD secure level - request by the + Debian Security Team. (closes: 389282) + * [powerpc] Add DAC960-ipr PCI id table fixup. + * [powerpc] Fix uninitialised spinlock in via-pmu-backlight code. + * Fix serial_cs resume handling. + * Fix oops when removing suspended serial port. + * Check if DLC is still attached to the TTY. + * Add fedora backport of i965 DRM support. + + [ Martin Michlmayr ] + * [mips] Apply some patches from linux-mips' linux-2.6.18-stable GIT tree: + - The o32 fstatat syscall behaves differently on 32 and 64 bit kernels + - fstatat syscall names + - BCM1480: Mask pending interrupts against c0_status.im. + - Cobalt: Time runs too quickly + - Show actual CPU information in /proc/cpuinfo + - Workaround for bug in gcc -EB / -EL options + - Do not use -msym32 option for modules + - Fix O32 personality(2) call with 0xffffffff argument + - Use compat_sys_mount + + [ dann frazier ] + * [ia64]: Fix booting on HP cell systems, thanks to Troy Heber + - Enable CONFIG_HUGETLBFS + - bugfix/ia64/sal-flush-fix.patch: delay sal cache flush + * bugfix/sky2-receive-FIFO-fix.patch: fix sky2 hangs on some chips + Thanks to Stephen Hemminger for the patch. (Closes: #391382) + * features/all/drivers/cciss-support-for-gt-2TB-volumes.patch: + Add support for > 2TB volumes + * bugfix/sym2-dont-claim-raid-devs.patch: Prevent cpqarray/sym2 conflict + by telling sym2 not to claim raid devices. (Closes: #391384) + + [ Sven Luther ] + * [powerpc] Added AMD74xx driver module to the powerpc64 flavour + (Closes: #391861). + + [ Kyle McMartin ] + * [hppa] Force CROSS_COMPILE=hppa64-linux-gnu- (closes: #389296) + + -- Bastian Blank Sat, 21 Oct 2006 15:59:43 +0200 + +linux-2.6 (2.6.18-2) unstable; urgency=low + + [ Bastian Blank ] + * hppa: Fix compiler dependencies. (closes: #389296) + * Make cfq the default io scheduler. + * Add arcmsr (Areca) driver. + * powerpc/prep: Fix compatibility asm symlink. + * m68k: Disable initramfs support. + + [ Kyle McMartin ] + * hppa: Add parisc patchset. + + [ Norbert Tretkowski ] + * [alpha] Workaround undefined symbols by setting CONFIG_SCSI=y for smp flavour. + (closes: #369517) + + [ Christian T. Steiges ] + * m68k: Update patches for 2.6.18. + * m68k: Re-Add m68k-as and m68k-macro patch which allow building with current binutils. + * m68k: disable CONFIG_AUDIT for m68k. + * m68k/mac: add m68k-no-backlight and m68k-fbcon patch. + * m68k/mac: enable SONIC, disable all ADB but CUDA. + + [ Jurij Smakov ] + * Add bugfix/proc-fb-reading.patch to fix the inconsistent behaviour + of /proc/fb. (Closes: #388815) + * sparc: Enable vserver flavour for sparc64. (Closes: #386656) + + -- Bastian Blank Fri, 29 Sep 2006 14:12:19 +0200 + +linux-kbuild-2.6 (2.6.18-1) unstable; urgency=low + + * New upstream version. + * Use included headers. (closes: #382286, #384211) + + -- Bastian Blank Mon, 25 Sep 2006 21:45:50 +0200 + +linux-2.6 (2.6.18-1) unstable; urgency=low + + The unpruned release + + [ Martin Michlmayr ] + * Bump build-dependency on kernel-package to 10.054. + * arm/iop32x: Build ext2/3 as modules. + * arm/iop32x: Disable CONFIG_EMBEDDED. + * mipsel/r5k-cobalt: Enable ISDN. + * arm/footbridge: Enable the CIFS module (closes: #274808). + * arm/nslu2: Drop flavour since this machine is supported by arm/ixp4xx. + * arm: Make get_unaligned() work with const pointers and GCC 4.1. + * mipsel/r5k-cobalt: Enable CONFIG_BONDING as a module. + * arm/iop32x: Likewise. + * arm/ixp4xx: Likewise. + * arm: Disable CONFIG_AUDIT for now since it's broken. + + [ Sven Luther ] + * [powerpc] Enabled the -prep flavour. (Closes: #359025) + * [powerpc] The sisfb framebuffer device is now builtin. + * [powerpc] Updated the powerpc serial patch. This fixes the XServe serial + port, but at the cost powermac pcmcia serial cards support. + Thanks go to Mark Hymers for providing the patch. + (Closes: #364637, #375194) + * [powerpc] Added patch to fix oldworld/quik booting. + Thanks fo to Christian Aichinger for investigating to Benjamin + Herrenschmidt for providing the patch. (Closes: #366620, #375035). + * [powerpc] Fixes hvc_console caused suspsend-to-disk breakage. Thanks to + Andrew Morton for providing the patch. (Closes: #387178) + * [powerpc] Disabled mv643xx_eth on powerpc64 flavours, as there never was a + Marvell Discovery northbrige for 64bit powerpc cpus. + + [ Frederik Schüler ] + * Remove obsolete options from amd64 and i386 configs. + * Deactivate EVBUG. + * Make PARPORT options global. + * [i386] Add class definition for 486 flavour. + + [ maximilian attems ] + * Enable CONFIG_PRINTER=m for all powerpc flavours. + * Enable the new alsa CONFIG_SND_AOA framework for powerpc. + * Add the merged advansys pci table patch. + + [ Bastian Blank ] + * hppa: Use gcc-4.1. + * Only provide 16 legacy ptys. + + [ Norbert Tretkowski ] + * [alpha] Updated configs. + * [alpha] Disabled CONFIG_AUDIT, broken. + * [alpha] Added vserver flavour. + + -- Bastian Blank Sun, 24 Sep 2006 15:55:37 +0200 + +linux-2.6 (2.6.17-9) unstable; urgency=medium + + [ Bastian Blank ] + * Update vserver patch to 2.0.2. + - Fix possible priviledge escalation in remount code. (CVE-2006-4243) + + [ Frederik Schüler ] + * Add stable release 2.5.17.12: + - sky2: version 1.6.1 + - sky2: fix fiber support + - sky2: MSI test timing + - sky2: use dev_alloc_skb for receive buffers + - sky2: clear status IRQ after empty + - sky2: accept flow control + - dm: Fix deadlock under high i/o load in raid1 setup. + - Remove redundant up() in stop_machine() + - Missing PCI id update for VIA IDE + - PKTGEN: Fix oops when used with balance-tlb bonding + - PKTGEN: Make sure skb->{nh,h} are initialized in fill_packet_ipv6() too. + - Silent data corruption caused by XPC + - uhci-hcd: fix list access bug + - binfmt_elf: fix checks for bad address + - [s390] bug in futex unqueue_me + - fcntl(F_SETSIG) fix + - IPV6 OOPS'er triggerable by any user + - SCTP: Fix sctp_primitive_ABORT() call in sctp_close(). + - SPARC64: Fix X server crashes on sparc64 + - TG3: Disable TSO by default + - dm: mirror sector offset fix + - dm: fix block device initialisation + - dm: add module ref counting + - dm: fix mapped device ref counting + - dm: add DMF_FREEING + - dm: change minor_lock to spinlock + - dm: move idr_pre_get + - dm: fix idr minor allocation + - dm snapshot: unify chunk_size + - Have ext2 reject file handles with bad inode numbers early. + - Allow per-route window scale limiting + - bridge-netfilter: don't overwrite memory outside of skb + - fix compilation error on IA64 + - Fix output framentation of paged-skbs + - spectrum_cs: Fix firmware uploading errors + - TEXTSEARCH: Fix Boyer Moore initialization bug + * Add stable release 2.6.17.13: + - lib: add idr_replace + - pci_ids.h: add some VIA IDE identifiers + * Remove patches merged upstream: + - s390-kernel-futex-barrier.patch + * Unpatch ia64-mman.h-fix.patch + + -- Bastian Blank Wed, 13 Sep 2006 14:54:14 +0200 + +linux-2.6 (2.6.17-8) unstable; urgency=low + + [ Martin Michlmayr ] + * arm/ixp4xx: Enable CONFIG_W1. + + [ dann frazier ] + * sound-pci-hda-mac-mini-quirks.diff, sound-pci-hda-intel-d965.diff + sound-pci-hda-mac-mini-intel945.diff: + Updates to patch_sigmatel.c to add x86 mac-mini sound support + Thanks to Matt Kraai. (closes: #384972) + + [ Kyle McMartin ] + * hppa: Re-enable pa8800 fixing patches from James Bottomley. + Pulled fresh from parisc-linux git tree. + * ia64: Pull in compile-failure fix from Christian Cotte-Barrot. + Pulled from linux-ia64 mailing list. Fix is correct. + * hppa/alpha/mips: Fix compile-failure due to missing arch_mmap_check. Patch sent + upstream to stable@kernel.org. + + [ dann frazier ] + * sym2: only claim "Storage" class devices - the cpqarray driver should be + used for 5c1510 devices in RAID mode. (closes: #380272) + + [ Bastian Blank ] + * Backport change to allow all hypercalls for xen. + + -- Bastian Blank Thu, 31 Aug 2006 12:12:51 +0200 + +linux-2.6 (2.6.17-7) unstable; urgency=low + + [ Martin Michlmayr ] + * arm/iop32x: Enable CONFIG_BLK_DEV_OFFBOARD. + * arm/iop32x: Unset CONFIG_BLK_DEV_AMD74XX since it fails on ARM + with "Unknown symbol pci_get_legacy_ide_irq". + * arm/iop32x: Enable a number of MD and DM modules. + * arm/iop32x: Enable some more USB network modules. + * mipsel/r5k-cobalt: Increase 8250 NR_UARTS and RUNTIME_UARTS to 4. + * mipsel/r5k-cobalt: Fix MAC detection problem on Qube 2700. + + [ Bastian Blank ] + * Update vserver patch to 2.0.2-rc29. + * Add stable release 2.6.17.10: + - Fix possible UDF deadlock and memory corruption (CVE-2006-4145) + - elv_unregister: fix possible crash on module unload + - Fix sctp privilege elevation (CVE-2006-3745) + + [ maximilian attems ] + * Add RAM range to longclass for -bigmem. (closes: 382799) + * Add stable release 2.6.17.9: + - powerpc: Clear HID0 attention enable on PPC970 at boot time + (CVE-2006-4093) + * Add stable release 2.6.17.11: + - Fix ipv4 routing locking bug + - disable debugging version of write_lock() + - PCI: fix ICH6 quirks + - 1394: fix for recently added firewire patch that breaks things on ppc + - Fix IFLA_ADDRESS handling + - Fix BeFS slab corruption + - Fix timer race in dst GC code + - Have ext3 reject file handles with bad inode numbers early + - Kill HASH_HIGHMEM from route cache hash sizing + - sys_getppid oopses on debug kernel + - IA64: local DoS with corrupted ELFs + - tpm: interrupt clear fix + - ulog: fix panic on SMP kernels + - dm: BUG/OOPS fix + - MD: Fix a potential NULL dereference in md/raid1 + - ip_tables: fix table locking in ipt_do_table + - swsusp: Fix swap_type_of + - sky2: phy power problem on 88e805x + - ipx: header length validation needed + + [ Frederik Schüler ] + * Activate CONFIG_R8169_VLAN on amd64. (closes: #383707) + * Activate EFI boot support on i386. (closes: #381951) + + [ dann frazier ] + * Include module.lds in headers package if it exists. (closes: #342246) + * Add Apple MacBook product IDs to usbhid and set + CONFIG_USB_HIDINPUT_POWERBOOK=y on i386 and amd64. (closes: #383620) + + -- Bastian Blank Thu, 24 Aug 2006 15:54:51 +0000 + +linux-2.6 (2.6.17-6) unstable; urgency=low + + [ maximilian attems ] + * debian/arch/i386/defines: Activate 686-bigmem flavour for enterprise + usage. + * Add ubuntu pci table patch for scsi drivers advansys and fdomain. + + [ Martin Michlmayr ] + * arm/armeb: Use gcc-4.1. + * mips/mipsel: Use gcc-4.1. + * arm/ixp4xx: Update config based on the NSLU2 config. + * arm/s3c2410: Unset CONFIG_DEBUG_INFO. + * arm/iop32x: xscale: don't mis-report 80219 as an iop32x + * arm/iop32x: Add an MTD map for IOP3xx boards + * arm/iop32x: Add support for the Thecus N2100. + * arm/iop32x: Add support for the GLAN Tank. + * arm/iop32x: Add a flavour for IOP32x based machines. + + [ Bastian Blank ] + * Shrink short descriptions. + * Make gcc-4.1 the default compiler. + * [powerpc]: Use gcc-4.1. + * Move latest and transitional packages to linux-latest-2.6. + + [ Frederik Schüler ] + * [amd64] Add smp-alternatives backport. + * [amd64] Drop smp flavours. + * [amd64] Merge k8 and p4 flavours into a generic one, following upstreams + advice. + * Activate BSD_PROCESS_ACCT_V3. + * Add stable release 2.6.17.8: + - ALSA: Don't reject O_RDWR at opening PCM OSS + - Add stable branch to maintainers file + - tty serialize flush_to_ldisc + - S390: fix futex_atomic_cmpxchg_inatomic + - Fix budget-av compile failure + - cond_resched() fix + - e1000: add forgotten PCI ID for supported device + - ext3: avoid triggering ext3_error on bad NFS file handle + - ext3 -nobh option causes oops + - Fix race related problem when adding items to and svcrpc auth cache. + - ieee1394: sbp2: enable auto spin-up for Maxtor disks + - invalidate_bdev() speedup + - Sparc64 quad-float emulation fix + - VLAN state handling fix + - Update frag_list in pskb_trim + - UHCI: Fix handling of short last packet + - sky2: NAPI bug + - i2c: Fix 'ignore' module parameter handling in i2c-core + - scx200_acb: Fix the block transactions + - scx200_acb: Fix the state machine + - H.323 helper: fix possible NULL-ptr dereference + - Don't allow chmod() on the /proc// files + - PCI: fix issues with extended conf space when MMCONFIG disabled because of e820 + + [ Sven Luther ] + * [powerpc] Added console=hvsi0 too to CMDLINE to the powerpc64 flavour, for + non-virtualized IBM power machines serial console. + + -- Bastian Blank Fri, 11 Aug 2006 19:58:06 +0200 + +linux-kbuild-2.6 (2.6.17-3) unstable; urgency=low + + * Replace own modpost with original one. + + -- Bastian Blank Tue, 1 Aug 2006 11:01:18 +0200 + +linux-2.6 (2.6.17-5) unstable; urgency=low + + [ Martin Michlmayr ] + * [arm/nslu2] Enable CONFIG_USB_EHCI_SPLIT_ISO. Closes: #378554 + + [ maximilian attems ] + * Add stable release 2.6.17.7: + - BLOCK: Fix bounce limit address check + - v4l/dvb: Fix budget-av frontend detection + - v4l/dvb: Fix CI on old KNC1 DVBC cards + - v4l/dvb: Fix CI interface on PRO KNC1 cards + - v4l/dvb: Backport fix to artec USB DVB devices + - v4l/dvb: Backport the DISEQC regression fix to 2.6.17.x + - v4l/dvb: stradis: dont export MODULE_DEVICE_TABLE + - pnp: suppress request_irq() warning + - generic_file_buffered_write(): handle zero-length iovec segments + - serial 8250: sysrq deadlock fix + - Reduce ACPI verbosity on null handle condition + - ieee80211: TKIP requires CRC32 + - Make powernow-k7 work on SMP kernels. + - via-velocity: the link is not correctly detected when the device starts + - Add missing UFO initialisations + - USB serial ftdi_sio: Prevent userspace DoS (CVE-2006-2936) + - cdrom: fix bad cgc.buflen assignment + - splice: fix problems with sys_tee() + - fix fdset leakage + - struct file leakage + - XFS: corruption fix + - v4l/dvb: Kconfig: fix description and dependencies for saa7115 module + - dvb-bt8xx: fix frontend detection for DViCO FusionHDTV DVB-T Lite rev 1.2 + - IB/mthca: restore missing PCI registers after reset + - v4l/dvb: Backport the budget driver DISEQC instability fix + - Fix IPv4/DECnet routing rule dumping + - pdflush: handle resume wakeups + - x86_64: Fix modular pc speaker + - Fix powernow-k8 SMP kernel on UP hardware bug. + - ALSA: RME HDSP - fixed proc interface (missing {}) + - ALSA: au88x0 - Fix 64bit address of MPU401 MMIO port + - ALSA: Fix a deadlock in snd-rtctimer + - ALSA: Fix missing array terminators in AD1988 codec support + - ALSA: Fix model for HP dc7600 + - ALSA: Fix mute switch on VAIO laptops with STAC7661 + - ALSA: fix the SND_FM801_TEA575X dependencies + - ALSA: Fix undefined (missing) references in ISA MIRO sound driver + - ALSA: Fix workaround for AD1988A rev2 codec + - ALSA: hda-intel - Fix race in remove + - Suppress irq handler mismatch messages in ALSA ISA drivers + - PKT_SCHED: Fix illegal memory dereferences when dumping actions + - PKT_SCHED: Return ENOENT if action module is unavailable + - PKT_SCHED: Fix error handling while dumping actions + - generic_file_buffered_write(): deadlock on vectored write + - ethtool: oops in ethtool_set_pauseparam() + - memory hotplug: solve config broken: undefined reference to `online_page' + * Add budget-av-compile-fix.patch stable compile fix. + * Enable in all configs setting SND_FM801_TEA575X SND_FM801_TEA575X_BOOL=y. + + -- Bastian Blank Sat, 29 Jul 2006 13:30:06 +0200 + +linux-2.6 (2.6.17-4) unstable; urgency=low + + [ Bastian Blank ] + * Add stable release 2.6.17.5: + - Fix nasty /proc vulnerability (CVE-2006-3626) + * Add stable release 2.6.17.6: + - Relax /proc fix a bit + * Set section of images to admin. + + [ dann frazier ] + * [ia64] Drop the non-SMP flavours; they are not well maintained upstream. + Note that the non-SMP flavours have been identical to the SMP builds + since 2.6.13-1; this was to avoid having to drop then re-add these + flavours if upstream resolved the issue - but that never happened. + Note that this is a measurable performance penalty on non-SMP systems. + + -- Bastian Blank Mon, 17 Jul 2006 11:08:41 +0200 + +linux-2.6 (2.6.17-3) unstable; urgency=low + + [ maximilian attems ] + * Add stable release 2.6.17.2: + - ide-io: increase timeout value to allow for slave wakeup + - NTFS: Critical bug fix (affects MIPS and possibly others) + - Link error when futexes are disabled on 64bit architectures + - SCTP: Reset rtt_in_progress for the chunk when processing its sack. + - SPARC32: Fix iommu_flush_iotlb end address + - ETHTOOL: Fix UFO typo + - UML: fix uptime + - x86: compile fix for asm-i386/alternatives.h + - bcm43xx: init fix for possible Machine Check + - SCTP: Fix persistent slowdown in sctp when a gap ack consumes rx buffer. + - kbuild: bugfix with initramfs + - Input: return correct size when reading modalias attribute + - ohci1394: Fix broken suspend/resume in ohci1394 + - idr: fix race in idr code + - USB: Whiteheat: fix firmware spurious errors + - libata: minor patch for ATA_DFLAG_PIO + - SCTP: Send only 1 window update SACK per message. + - PFKEYV2: Fix inconsistent typing in struct sadb_x_kmprivate. + - SCTP: Limit association max_retrans setting in setsockopt. + - SCTP: Reject sctp packets with broadcast addresses. + - IPV6: Sum real space for RTAs. + - IPV6 ADDRCONF: Fix default source address selection without + CONFIG_IPV6_PRIVACY + - IPV6: Fix source address selection. + * Add stable release 2.6.17.3: + - NETFILTER: SCTP conntrack: fix crash triggered by packet without chunks + [CVE-2006-2934] + * Deapply merged sparc32-iotlb.patch. + * Fix README.Debian: Correct svn location, remove old boot param bswap + reference, the asfs patch is in the Debian kernel. Remove reference to + AMD 768 erratum 10, it was solved in 2.6.12. Add wording corrections. + * Set CONFIG_SERIAL_8250_RN_UARTS=16 for all archs beside mips/m68k unless + explicitly set on a specific value. (closes: 377151) + * Add stable release 2.6.17.4: + - fix prctl privilege escalation and suid_dumpable (CVE-2006-2451) + + [ Sven Luther ] + * Re-enabled fs-asfs patch. + + [ Thiemo Seufer ] + * [mips,mipsel] Fix sb1 interrupt handlers. + * [mips,mipsel] Fix devfs-induced build failure in sb1250 serial driver. + * [mips] SGI ip22 RTC was broken, fixed thanks to Julien Blache. + * [mips] Fix SGI ip22 serial console, thanks to Julien Blache. + + [ Martin Michlmayr ] + * [arm/nslu2] Enable HFS and some other filesystems. + * [arm/nslu2] Unset CONFIG_USB_STORAGE_DEBUG. Closes: #377853. + + -- Bastian Blank Thu, 13 Jul 2006 13:14:53 +0200 + +linux-kbuild-2.6 (2.6.17-2) unstable; urgency=low + + * Fix uninitialied variable. (closes: #377656) + + -- Bastian Blank Tue, 11 Jul 2006 10:10:24 +0200 + +linux-kbuild-2.6 (2.6.17-1) unstable; urgency=low + + * Initial release. (closes: #368544) + + -- Bastian Blank Sat, 1 Jul 2006 19:10:07 +0200 + +linux-2.6 (2.6.17-2) unstable; urgency=low + + [ Jurij Smakov ] + * [sparc] Switch to gcc-4.1 as it produces a working kernel, + while gcc-4.0 does not. No ABI bump neccessary, because + 2.6.17-1 sparc binaries never made it to the archive. + * [sparc32] Add sparc32-iotlb.patch to fix DMA errors on sparc32. + + [ Sven Luther ] + * [powerpc] Added console=hvc0 default commandline option to powerpc64 flavour. + * [powerpc] Fixed mkvmlinuz support, which was missing from -1. (Closes: #375645) + * [powerpc] Added PowerBook HID support for last-gen PowerBook keyboards. + (Closes: #307327) + + [ Martin Michlmayr ] + * [mipsel] Fix compilation error in dz serial driver. + * [mipsel] Update configs. + * [mipsel] Add a build fix for the Cobalt early console support. + * [arm/nslu2] Disable SE Linux support for now so the kernel fits into flash. + + [ Christian T. Steigies ] + * [m68k] Update patches for 2.6.17. + * [m68k] Add m68k-as and m68k-macro patch which allow building with current binutils. + * [m68k] Disable all subarches but amiga and mac for official linux-images. + + [ Kyle McMartin ] + * [hppa] Update patchset (2.6.17-pa6) from parisc-linux.org. + Which fixes relocation errors in modules with 64-bit kernels, and + a softlockup on non-SMP flavours with gettimeofday. + + -- Bastian Blank Thu, 29 Jun 2006 18:49:35 +0200 + +linux-2.6 (2.6.17-1) unstable; urgency=low + + [ Frederik Schüler ] + * New upstream release. + * [amd64] Use gcc 4.1. + * [amd64] Drop amd64-generic flavor. We will use amd64-k8 for the + installer. + + [ Martin Michlmayr ] + * [mips] Update patches for 2.6.17. + * [arm] Update configs. + * [armeb] Update configs. + + [ Thiemo Seufer ] + * [mips] Fix SWARM FPU detection. + * [mips] Update configurations. + + [ Kyle McMartin ] + * [hppa] Set PDC_CHASSIS_WARN to y. + * [hppa] Update patchset (2.6.17-pa2) from parisc-linux.org. + * [hppa] Change NR_CPUS to 8 from 32 on both SMP flavours. + * [hppa] Set PARISC_PAGE_SIZE to 4K on all platforms. + + [ Bastian Blank ] + * [s390] Use gcc 4.1. + * [i386] Enable REGPARM. + * [i386] Use gcc 4.1. + * [powerpc] Disable prep. + + [ dann frazier ] + * [ia64] Update configs + * [ia64] Use gcc 4.1. + + [ maximilian attems ] + * Add stable release 2.6.17.1: + - xt_sctp: fix endless loop caused by 0 chunk length (CVE-2006-3085) + + -- Bastian Blank Thu, 22 Jun 2006 12:13:15 +0200 + +linux-2.6 (2.6.16+2.6.17-rc3-0experimental.1) experimental; urgency=low + + [ Frederik Schüler ] + * New upstream release candidate. + * Switch HZ from 1000 to 250, following upstreams default. + * Activate CONFIG_BCM43XX_DEBUG. + + [ maximilian attems ] + * Disable broken and known unsecure LSM modules: CONFIG_SECURITY_SECLVL, + CONFIG_SECURITY_ROOTPLUG. Upstream plans to remove them for 2.6.18 + + -- Frederik Schüler Sun, 7 May 2006 17:06:29 +0200 + +linux-2.6.16 (2.6.16-18) unstable; urgency=high + + [ Sven Luther ] + * [powerpc] Added console=hvsi0 too to CMDLINE to the powerpc64 flavour, + for non-virtualized IBM power machines serial console. + + [ dann frazier ] + * fs-ext3-bad-nfs-handle.patch: avoid triggering ext3_error on bad NFS + file handle (CVE-2006-3468) + * cdrom-bad-cgc.buflen-assign.patch: fix buffer overflow in dvd_read_bca + * usb-serial-ftdi_sio-dos.patch: fix userspace DoS in ftdi_sio driver + + [ Bastian Blank ] + * Update xen patch to changeset 9762. + + -- Frederik Schüler Fri, 18 Aug 2006 20:29:17 +0200 + +linux-2.6.16 (2.6.16-17) unstable; urgency=high + + [ Martin Michlmayr ] + * Add stable release 2.6.16.22: + - powernow-k8 crash workaround + - NTFS: Critical bug fix (affects MIPS and possibly others) + - JFS: Fix multiple errors in metapage_releasepage + - SPARC64: Fix D-cache corruption in mremap + - SPARC64: Respect gfp_t argument to dma_alloc_coherent(). + - SPARC64: Fix missing fold at end of checksums. + - scsi_lib.c: properly count the number of pages in scsi_req_map_sg() + - I2O: Bugfixes to get I2O working again + - Missed error checking for intent's filp in open_namei(). + - tmpfs: time granularity fix for [acm]time going backwards + - USB: Whiteheat: fix firmware spurious errors + - fs/namei.c: Call to file_permission() under a spinlock in do_lookup_path() + * Add stable release 2.6.16.23: + - revert PARPORT_SERIAL should depend on SERIAL_8250_PCI patch + - NETFILTER: SCTP conntrack: fix crash triggered by packet without + chunks (CVE-2006-2934) + * Add stable release 2.6.16.24: + - fix prctl privilege escalation and suid_dumpable (CVE-2006-2451) + * Add stable release 2.6.16.25: + - Fix nasty /proc vulnerability (CVE-2006-3626) + * Relax /proc fix a bit (Linus Torvalds) + + * [arm/nslu2] Unset CONFIG_USB_STORAGE_DEBUG. Closes: #377853. + * [mips] SGI ip22 RTC was broken, fixed thanks to Julien Blache. + * [mips] Fix SGI ip22 serial console, thanks to Julien Blache. + + [ Bastian Blank ] + * Fix vserver patch. + + -- Bastian Blank Sat, 15 Jul 2006 17:18:49 +0200 + +linux-2.6.16 (2.6.16-16) unstable; urgency=low + + [ Sven Luther ] + * [powerpc] Added console=hvc0 default commandline option to powerpc64 flavour. + * [powerpc] Now THERM_PM72 and all WINDFARMs are builtin, for better fan control. + + [ Martin Michlmayr ] + * [arm/nslu2] Disable SE Linux support for now so the kernel fits into + flash. Closes: #376926. + + [ Bastian Blank ] + * [powerpc,powerpc-miboot] Enable OpenFirmware device tree support. + (closes: #376012) + + -- Bastian Blank Sat, 8 Jul 2006 17:57:57 +0200 + +linux-2.6.16 (2.6.16-15) unstable; urgency=low + + [ maximilian attems ] + * Add stable release 2.6.16.18: + - NETFILTER: SNMP NAT: fix memory corruption (CVE-2006-2444) + * Add stable release 2.6.16.19: + - NETFILTER: Fix small information leak in SO_ORIGINAL_DST (CVE-2006-1343) + * Add stable release 2.6.16.20: + - x86_64: Don't do syscall exit tracing twice + - Altix: correct ioc4 port order + - Input: psmouse - fix new device detection logic + - PowerMac: force only suspend-to-disk to be valid + - the latest consensus libata resume fix + - Altix: correct ioc3 port order + - Cpuset: might sleep checking zones allowed fix + - ohci1394, sbp2: fix "scsi_add_device failed" with PL-3507 based devices + - sbp2: backport read_capacity workaround for iPod + - sbp2: fix check of return value of hpsb_allocate_and_register_addrspace + - x86_64: x86_64 add crashdump trigger points + - ipw2200: Filter unsupported channels out in ad-hoc mode + * Add stable release 2.6.16.21: + - check_process_timers: fix possible lockup + - run_posix_cpu_timers: remove a bogus BUG_ON() (CVE-2006-2445) + - xt_sctp: fix endless loop caused by 0 chunk length (CVE-2006-3085) + - powerpc: Fix machine check problem on 32-bit kernels (CVE-2006-2448) + + [ Christian T. Steigies ] + * [m68k] Add mac via patch from Finn Thain. + * [m68k] Enable INPUT_EVDEV. + + [ Martin Michlmayr ] + * [mips/b1-bcm91250a] Enable SMP. + * [mips] Add a compile fix for the Maxine fb. + * [mipsel] Add a patch that let's you enable serial console on DECstation. + * [mipsel] Add a patch to get SCSI working on DECstation. + * [mipsel] Handle memory-mapped RTC chips properly. + * [mipsel] Add configs for r3k-kn02 and r4k-kn04 DECstation. + * [arm] Allow RiscPC machines to boot an initrd (tagged list fix). + * [arm/nslu2] Enable many modules. + * [arm] Build loop support as a module. + * [arm] Use the generic netfilter configuration. + * [arm/footbridge] Enable sound. + + [ Kyle McMartin ] + * [hppa] Pulled patch from cvs to fix build of kernel/ptrace.c which needs + {read,write}_can_lock. + * [hppa] Disable CONFIG_DETECT_SOFTLOCKUP to fix boot on pa8800 machines. + + [ Sven Luther ] + * [powerpc,prep] Added a new ARCH=ppc PReP flavour, currently mostly a copy + of the -powerpc one. + * Upgraded mkvmlinuz dependency to mkvmlinuz 21. + + [ Bastian Blank ] + * Update vserver patch to 2.0.2-rc21. + * Bump build-dependency on kernel-package to 10.049. + + [ Jurij Smakov ] + * Add dcache-memory-corruption.patch to fix the mremap(), occasionally + triggered on sparc in the form of dpkg database corruption. Affects + sparc64, mips and generic includes. Thanks to David Miller, original + patch is included in 2.6.17. + Ref: http://marc.theaimsgroup.com/?l=linux-sparc&m=114920963824047&w=2 + * Add sparc32-iotlb.patch to fix the DMA errors encountered with latest + kernels on sparc32, in particularly HyperSparcs. Thanks to Bob Breuer. + Ref: http://marc.theaimsgroup.com/?l=linux-sparc&m=115077649707675&w=2 + + -- Bastian Blank Wed, 21 Jun 2006 14:09:11 +0200 + +linux-2.6 (2.6.16-14) unstable; urgency=low + + [ Bastian Blank ] + * Add stable release 2.6.16.16: + - fs/locks.c: Fix lease_init (CVE-2006-1860) + * Make i386 xen images recommend libc6-xen. + * Update vserver patch to 2.0.2-rc20. + * Update xen patch to changeset 9687. + + [ Christian T. Steigies ] + * [m68k] Add generic m68k ide fix. + * [m68k] Add cross-compile instructions. + * [m68k] Enable INPUT_EVDEV for yaird. + * [m68k] sun3 general compile and scsi fixes, enable sun3 SCSI again. + + [ dann frazier ] + * cs4281 - Fix the check of timeout in probe to deal with variable HZ. + (closes: #361197) + + [ Norbert Tretkowski ] + * [alpha] Readded patch to support prctl syscall, got lost when upgrading + to 2.6.16. + + [ Frederik Schüler ] + * Add stable release 2.6.16.17: + - SCTP: Validate the parameter length in HB-ACK chunk (CVE-2006-1857) + - SCTP: Respect the real chunk length when walking parameters + (CVE-2006-1858) + - ptrace_attach: fix possible deadlock schenario with irqs + - Fix ptrace_attach()/ptrace_traceme()/de_thread() race + - page migration: Fix fallback behavior for dirty pages + - add migratepage address space op to shmem + - Remove cond_resched in gather_stats() + - VIA quirk fixup, additional PCI IDs + - PCI quirk: VIA IRQ fixup should only run for VIA southbridges + - Fix udev device creation + - limit request_fn recursion + - PCI: correctly allocate return buffers for osc calls + - selinux: check for failed kmalloc in security_sid_to_context() + - TG3: ethtool always report port is TP. + - Netfilter: do_add_counters race, possible oops or info leak + (CVE-2006-0039) + - scx200_acb: Fix resource name use after free + - smbus unhiding kills thermal management + - fs/compat.c: fix 'if (a |= b )' typo + - smbfs: Fix slab corruption in samba error path + - fs/locks.c: Fix sys_flock() race + - USB: ub oops in block_uevent + - via-rhine: zero pad short packets on Rhine I ethernet cards + - md: Avoid oops when attempting to fix read errors on raid10 + + -- Bastian Blank Mon, 22 May 2006 14:56:11 +0200 + +linux-2.6 (2.6.16-13) unstable; urgency=low + + [ Frederik Schüler ] + * Add stable release 2.6.16.14: + - smbfs chroot issue (CVE-2006-1864) + + [ Bastian Blank ] + * Don't make headers packages depend on images. + * Bump abiname to 2. (closes: #366291) + * Update vserver patch to 2.0.2-rc19. + * Update xen patch to changeset 9668. + * Remove abi fixes. + * Add stable release 2.6.16.15: + - SCTP: Allow spillover of receive buffer to avoid deadlock. (CVE-2006-2275) + - SCTP: Fix panic's when receiving fragmented SCTP control chunks. (CVE-2006-2272) + - SCTP: Fix state table entries for chunks received in CLOSED state. (CVE-2006-2271) + - SCTP: Prevent possible infinite recursion with multiple bundled DATA. (CVE-2006-2274) + * Switch HZ from 1000 to 250. + + [ Christian T. Steigies ] + * [m68k] Add patches that allow building images for atari + * [m68k] Enable atyfb driver for atari + + -- Bastian Blank Wed, 10 May 2006 18:58:44 +0200 + +linux-2.6 (2.6.16-12) unstable; urgency=low + + [ Bastian Blank ] + * Add stable release 2.6.16.12: + - dm snapshot: fix kcopyd destructor + - x86_64: Pass -32 to the assembler when compiling the 32bit vsyscall pages + - for_each_possible_cpu + - Simplify proc/devices and fix early termination regression + - sonypi: correct detection of new ICH7-based laptops + - MIPS: Fix tx49_blast_icache32_page_indexed. + - NET: e1000: Update truesize with the length of the packet for packet split + - i386: fix broken FP exception handling + - tipar oops fix + - USB: fix array overrun in drivers/usb/serial/option.c + - Altix snsc: duplicate kobject fix + - Alpha: strncpy() fix + - LSM: add missing hook to do_compat_readv_writev() + - Fix reiserfs deadlock + - make vm86 call audit_syscall_exit + - fix saa7129 support in saa7127 module for pvr350 tv out + - dm flush queue EINTR + - get_dvb_firmware: download nxt2002 firmware from new driver location + - cxusb-bluebird: bug-fix: power down corrupts frontend + - x86_64: Fix a race in the free_iommu path. + - MIPS: Use "R" constraint for cache_op. + - MIPS: R2 build fixes for gcc < 3.4. + - cs5535_gpio.c: call cdev_del() during module_exit to unmap kobject references and other cleanups + - MIPS: Fix branch emulation for floating-point exceptions. + - x86/PAE: Fix pte_clear for the >4GB RAM case + * Add stable release 2.6.16.13: + - NETFILTER: SCTP conntrack: fix infinite loop (CVE-2006-1527) + * Remove merged patches. + * Rediff xen patch. + * Bump build-dependency on kernel-package to 10.047. + + [ Martin Michlmayr ] + * [arm] Enable cramfs for ixp4xx and rpc. + + -- Bastian Blank Thu, 4 May 2006 11:37:26 +0200 + +linux-2.6 (2.6.16-11) unstable; urgency=low + + * Update vserver patch to 2.0.2-rc18. + - Limit ccaps to root inside a guest (CVE-2006-2110) + * Conflict with known broken grub versions. (closes: #361308) + * Enable s390 vserver image. + * Enable xen and xen-vserver images. + * Use localversion for kernel-package images. (closes: #365505) + + -- Bastian Blank Mon, 1 May 2006 16:38:45 +0200 + +linux-2.6 (2.6.16-10) unstable; urgency=low + + [ Norbert Tretkowski ] + * [alpha] Added backport of for_each_possible_cpu() to fix alpha build. + (closes: #364206) + * Add stable release 2.6.16.10: + - IPC: access to unmapped vmalloc area in grow_ary() + - Add more prevent_tail_call() + - alim15x3: ULI M-1573 south Bridge support + - apm: fix Armada laptops again + - fbdev: Fix return error of fb_write + - Fix file lookup without ref + - m41t00: fix bitmasks when writing to chip + - Open IPMI BT overflow + - x86: be careful about tailcall breakage for sys_open[at] too + - x86: don't allow tail-calls in sys_ftruncate[64]() + - IPV6: XFRM: Fix decoding session with preceding extension header(s). + - IPV6: XFRM: Don't use old copy of pointer after pskb_may_pull(). + - IPV6: Ensure to have hop-by-hop options in our header of &sk_buff. + - selinux: Fix MLS compatibility off-by-one bug + - PPC: fix oops in alsa powermac driver + - MTD_NAND_SHARPSL and MTD_NAND_NANDSIM should be tristate's + - i2c-i801: Fix resume when PEC is used + - Fix hotplug race during device registration + - Fix truesize underflow + - efficeon-agp: Add missing memory mask + - 3ware 9000 disable local irqs during kmap_atomic + - 3ware: kmap_atomic() fix + + [ maximilian attems ] + * Add stable release 2.6.16.11: + - Don't allow a backslash in a path component (CVE-2006-1863) + + -- Bastian Blank Tue, 25 Apr 2006 13:56:19 +0200 + +linux-2.6 (2.6.16-9) unstable; urgency=low + + [ maximilian attems ] + * Add stable release 2.6.16.8: + - ip_route_input panic fix (CVE-2006-1525) + * Add stable release 2.6.16.9: + - i386/x86-64: Fix x87 information leak between processes (CVE-2006-1056) + + [ Bastian Blank ] + * Update vserver patch to 2.0.2-rc17. + + -- Bastian Blank Thu, 20 Apr 2006 15:37:28 +0200 + +linux-2.6 (2.6.16-8) unstable; urgency=low + + * Fix ABI-breakage introduced in -7. (closes: #363032) + * Add stable release 2.6.16.6: + - ext3: Fix missed mutex unlock + - RLIMIT_CPU: fix handling of a zero limit + - alpha: SMP boot fixes + - m32r: security fix of {get, put}_user macros + - m32r: Fix cpu_possible_map and cpu_present_map initialization for SMP kernel + - shmat: stop mprotect from giving write permission to a readonly attachment (CVE-2006-1524) + - powerpc: fix incorrect SA_ONSTACK behaviour for 64-bit processes + - MPBL0010 driver sysfs permissions wide open + - cciss: bug fix for crash when running hpacucli + - fuse: fix oops in fuse_send_readpages() + - Fix utime(2) in the case that no times parameter was passed in. + - Fix buddy list race that could lead to page lru list corruptions + - NETFILTER: Fix fragmentation issues with bridge netfilter + - USB: remove __init from usb_console_setup + - Fix suspend with traced tasks + - isd200: limit to BLK_DEV_IDE + - edac_752x needs CONFIG_HOTPLUG + - fix non-leader exec under ptrace + - sky2: bad memory reference on dual port cards + - atm: clip causes unregister hang + - powerpc: iSeries needs slb_initialize to be called + - Fix block device symlink name + - Incorrect signature sent on SMB Read + * Add stable release 2.6.16.7: + - fix MADV_REMOVE vulnerability (CVE-2006-1524 for real this time) + + -- Bastian Blank Tue, 18 Apr 2006 16:22:31 +0200 + +linux-2.6 (2.6.16-7) unstable; urgency=low + + [ Frederik Schüler ] + * Add stable release 2.6.16.3: + - Keys: Fix oops when adding key to non-keyring (CVE-2006-1522) + + [ Bastian Blank ] + * Add stable release 2.6.16.4: + - RCU signal handling (CVE-2006-1523) + + [ Sven Luther ] + * [powerpc] Transitioned mkvmlinuz support patch to the 2.6.16 ARCH=powerpc + tree. PReP is broken in 2.6.16 though. + + [ maximilian attems ] + * Add stable release 2.6.16.5: + - x86_64: Clean up execve + - x86_64: When user could have changed RIP always force IRET (CVE-2006-0744) + * Disable CONFIG_SECCOMP (adds useless overhead on context-switch) - + thanks to fs for checking abi. + + [ Christian T. Steigies ] + * [m68k] update m68k patch and config to 2.6.16, temporarily disable atari + + -- Bastian Blank Sat, 15 Apr 2006 13:56:05 +0200 + +linux-2.6 (2.6.16-6) unstable; urgency=medium + + [ Bastian Blank ] + * Provide version infos in support package and don't longer rely on the + changelog. + * [amd64/i386] Enable cpu hotplug support. + + [ maximilian attems ] + * Add stable release 2.6.16.2: + - PCMCIA_SPECTRUM must select FW_LOADER + - drivers/net/wireless/ipw2200.c: fix an array overun + - AIRO{,_CS} <-> CRYPTO fixes + - tlclk: fix handling of device major + - fbcon: Fix big-endian bogosity in slow_imageblit() + - Fix NULL pointer dereference in node_read_numastat() + - USB: EHCI full speed ISO bugfixes + - Mark longhaul driver as broken. + - fib_trie.c node freeing fix + - USB: Fix irda-usb use after use + - sysfs: zero terminate sysfs write buffers (CVE-2006-1055) + - USB: usbcore: usb_set_configuration oops (NULL ptr dereference) + - pcmcia: permit single-character-identifiers + - hostap: Fix EAPOL frame encryption + - wrong error path in dup_fd() leading to oopses in RCU + - {ip, nf}_conntrack_netlink: fix expectation notifier unregistration + - isicom must select FW_LOADER + - knfsd: Correct reserved reply space for read requests. + - Fix module refcount leak in __set_personality() + - sbp2: fix spinlock recursion + - powerpc: make ISA floppies work again + - opti9x - Fix compile without CONFIG_PNP + - Add default entry for CTL Travel Master U553W + - Fix the p4-clockmod N60 errata workaround. + - kdump proc vmcore size oveflow fix + + -- Bastian Blank Mon, 10 Apr 2006 16:09:51 +0200 + +linux-2.6 (2.6.16-5) unstable; urgency=low + + [ Bastian Blank ] + * Provide real dependency packages for module building. + - Add linux-headers-$version-$abiname-all and + linux-headers-$version-$abiname-all-$arch. + * Rename support package to linux-support-$version-$abiname. + * Fix module package output. + * Include .kernelrelease in headers packages. (closes: #359813) + * Disable Cumana partition support completely. (closes: #359207) + * Update vserver patch to 2.0.2-rc15. + + [ dann frazier ] + * [ia64] initramfs-tools works now, no longer restrict initramfs-generators + + -- Bastian Blank Mon, 3 Apr 2006 14:00:08 +0200 + +linux-2.6 (2.6.16-4) unstable; urgency=medium + + [ Martin Michlmayr ] + * [arm/armeb] Update nslu2 config. + * Add stable release 2.6.16.1: + - Fix speedstep-smi assembly bug in speedstep_smi_ownership + - DMI: fix DMI onboard device discovery + - cciss: fix use-after-free in cciss_init_one + - DM: Fix bug: BIO_RW_BARRIER requests to md/raid1 hang. + - fix scheduler deadlock + - proc: fix duplicate line in /proc/devices + - rtc.h broke strace(1) builds + - dm: bio split bvec fix + - v9fs: assign dentry ops to negative dentries + - i810fb_cursor(): use GFP_ATOMIC + - NET: Ensure device name passed to SO_BINDTODEVICE is NULL terminated. + - XFS writeout fix + - sysfs: fix a kobject leak in sysfs_add_link on the error path + - get_cpu_sysdev() signedness fix + - firmware: fix BUG: in fw_realloc_buffer + - sysfs: sysfs_remove_dir() needs to invalidate the dentry + - TCP: Do not use inet->id of global tcp_socket when sending RST (CVE-2006-1242) + - 2.6.xx: sata_mv: another critical fix + - Kconfig: VIDEO_DECODER must select FW_LOADER + - V4L/DVB (3324): Fix Samsung tuner frequency ranges + - sata_mv: fix irq port status usage + + -- Bastian Blank Tue, 28 Mar 2006 17:19:10 +0200 + +linux-2.6 (2.6.16-3) unstable; urgency=low + + [ Frederik Schüler ] + * [amd64] Add asm-i386 to the linux-headers packages. + + [ Jonas Smedegaard ] + * Tighten yaird dependency to at least 0.0.12-8 (supporting Linux + 2.6.16 uppercase hex in Kconfig and new IDE sysfs naming, and VIA + IDE on powerpc). + + [ Martin Michlmayr ] + * [arm/armeb] Enable CONFIG_NFSD on NSLU2 again. Closes: #358709. + * [arm/footbridge] CONFIG_NE2K_PCI should be a module, not built-in. + * [arm/footbridge] Enable CONFIG_BLK_DEV_IDECD=m since the CATS can + have a CD-ROM drive. + * [mips/sb1*] Use ttyS rather than duart as the name for the serial + console since the latter causes problems with debian-installer. + + [ Bastian Blank ] + * Update vserver patch to 2.0.2-rc14. + - Fix sendfile. (closes: #358391, #358752) + + -- Bastian Blank Mon, 27 Mar 2006 16:08:20 +0200 + +linux-2.6 (2.6.16-2) unstable; urgency=low + + [ dann frazier ] + * [ia64] Set unconfigured options: + CONFIG_PNP_DEBUG=n and CONFIG_NET_SB1000=m + * [hppa] Update config for 2.6.16 + + [ Martin Michlmayr ] + * [mips/mipsel] Put something in the generic config file because diff + will otherwise remove the empty file, causing the build to fail. + * [mipsel/r5k-cobalt] Set CONFIG_PACKET=y. + * [arm] Set CONFIG_MACLIST=y for ixp4xx because nas100d needs it. + + [ Frederik Schüler ] + * Add Maximilian Attems to uploaders list. + + -- Martin Michlmayr Wed, 22 Mar 2006 15:15:14 +0000 + +linux-2.6 (2.6.16-1) unstable; urgency=low + + [ Bastian Blank ] + * New upstream release. + * Default to initramfs-tools 0.55 or higher on s390. + + [ maximilian attems ] + * Default to initramfs-tools on arm and armeb. + + [ Martin Michlmayr ] + * [mips/mipsel] Add an image for the Broadcom BCM91480B evaluation board + (aka "BigSur"). + * [arm, armeb] Enable the netconsole module. + * [mipsel/cobalt] Enable the netconsole module. + * [mips] SB1: Fix interrupt disable hazard (Ralf Baechle). + * [mips] SB1: Support for 1480 ethernet (Broadcom). + * [mips] SB1: Support for NAPI (Tom Rix). + * [mips] SB1: DUART support (Broadcom). + * [mips] Work around bad code generation for (Ralf Baechle). + * [mips] Fix VINO drivers when using a 64-bit kernel (Mikael Nousiainen). + * [arm/armeb] Update configs for 2.6.16. + * [mips/mipsel] Update configs for 2.6.16. + * [arm/armeb] Enable the SMB module on NSLU2. + * [mipsel] Enable parallel port modules for Cobalt since there are PCI + cards that can be used in a Qube. + * [mipsel] Enable the JFS module on Cobalt. + + [ dann frazier ] + * [ia64] use yaird on ia64 until #357414 is fixed + * [ia64] Update configs for 2.6.16 + + -- Bastian Blank Tue, 21 Mar 2006 16:12:16 +0100 + +linux-2.6 (2.6.15+2.6.16-rc5-0experimental.1) experimental; urgency=low + + [ Frederik Schüler ] + * New upstream release candidate. + + [ Martin Michlmayr ] + * Add initial mips/mipsel 2.6 kernels. + * Important changes compared to the 2.4 kernels: + - Drop the XXS1500 flavour since there's little interest in it. + - Drop the LASAT flavour since these machines never went into + production. + - Drop the IP22 R5K (Indy, Indigo2) flavour since the IP22 R4K + image now also works on machines with a R5K CPU. + - Add an image for SGI IP32 (O2). + - Rename the sb1-swarm-bn flavour to sb1-bcm91250a. + - Enable PCI network (and other) modules on Cobalt. Closes: #315895. + * Add various MIPS related patches: + - Fix iomap compilation on machines without COW. + - Improve gettimeofday on MIPS. + - Fix an oops on IP22 zerilog (serial console). + - Improve IDE probing so it won't take so long on Cobalt. + - Probe for IDE disks on SWARM. + - Test whether there's a scache (fixes Cobalt crash). + - Add Tulip fixes for Cobalt. + * Fix a typo in the description of the linux-doc-* package, + thanks Justin Pryzby. Closes: #343424. + * [arm] Enable nfs and nfsd modules. + * [arm/footbride] Suggest nwutil (Netwinder utilities). + + -- Frederik Schüler Thu, 9 Mar 2006 14:13:17 +0000 + +linux-2.6 (2.6.15+2.6.16-rc4-0experimental.1) experimental; urgency=low + + [ Frederik Schüler ] + * New upstream release. + * Activate CONFIG_DVB_AV7110_OSD on alpha amd64 and ia64. + Closes: #353292 + * Globally enable NAPI on all network card drivers which support it. + + [ maximilian attems ] + * Drop fdutils from i386 and amd64 Suggests. + * Swap lilo and grub Suggests for i386 and amd64. + + [ Jurij Smakov ] + * Make sure that LOCALVERSION environment variable is not + passed to a shell while invoking make-kpkg, since it + appends it to the version string, breaking the build. + Closes: #349472 + * [sparc32] Re-enable the building of sparc32 images. + * [sparc64] Re-add (partial) sparc64-atyf-xl-gr.patch, since it + was only partially applied upstream, so the problem (garbled + screen output on SunBlade 100) is still present. Thanks to + Luis Ortiz for pointing it out. + * Bump the build-dep on kernel-package to 10.035, which fixes + the problem with building documentation packages. + + [ Martin Michlmayr ] + * [sparc] Add sys_newfstatat -> sys_fstatat64 fix from git. + * [arm] Update configs for 2.6.16-rc3. + * [armeb] Update configs for 2.6.16-rc3. + * [arm/armeb] Fix compilation error on NSLU2 due to recent flash + changes. + * [arm/armeb] Fix a compilation error in the IXP4xx beeper support + (Alessandro Zummo). + + [ Norbert Tretkowski ] + * [alpha] Update arch/alpha/config* for 2.6.16-rc3. + + -- Bastian Blank Fri, 24 Feb 2006 16:02:11 +0000 + +linux-2.6 (2.6.15-8) unstable; urgency=high + + [ maximilian attems ] + * Add stable Release 2.6.15.5: + - Fix deadlock in br_stp_disable_bridge + - Fix a severe bug + - i386: Move phys_proc_id/early intel workaround to correct function + - ramfs: update dir mtime and ctime + - sys_mbind sanity checking + - Fix s390 build failure. + - Revert skb_copy_datagram_iovec() recursion elimination. + - s390: add #ifdef __KERNEL__ to asm-s390/setup.h + - netfilter missing symbol has_bridge_parent + - hugetlbfs mmap ENOMEM failure + - IB/mthca: max_inline_data handling tweaks + - it87: Fix oops on removal + - hwmon it87: Probe i2c 0x2d only + - reiserfs: disable automatic enabling of reiserfs inode attributes + - Fix snd-usb-audio in 32-bit compat environment + - dm: missing bdput/thaw_bdev at removal + - dm: free minor after unlink gendisk + - gbefb: IP32 gbefb depth change fix + - shmdt cannot detach not-alined shm segment cleanly. + - Address autoconfiguration does not work after device down/up cycle + - gbefb: Set default of FB_GBE_MEM to 4 MB + - XFS ftruncate() bug could expose stale data (CVE-2006-0554) + - sys_signal: initialize ->sa_mask + - do_sigaction: cleanup ->sa_mask manipulation + - fix zap_thread's ptrace related problems + - fix deadlock in ext2 + - cfi: init wait queue in chip struct + - sd: fix memory corruption with broken mode page headers + - sbp2: fix another deadlock after disconnection + - skge: speed setting + - skge: fix NAPI/irq race + - skge: genesis phy initialization fix + - skge: fix SMP race + - x86_64: Check for bad elf entry address (CVE-2006-0741) + - alsa: fix bogus snd_device_free() in opl3-oss.c + - ppc32: Put cache flush routines back into .relocate_code section + - sys32_signal() forgets to initialize ->sa_mask + - Normal user can panic NFS client with direct I/O (CVE-2006-0555) + * Deactivate merged duplicates: s390-klibc-buildfix.patch, + powerpc-relocate_code.patch. + * Add stable Release 2.6.15.6: + - Don't reset rskq_defer_accept in reqsk_queue_alloc + - fs/nfs/direct.c compile fix + - mempolicy.c compile fix, make sure BITS_PER_BYTE is defined + - [IA64] die_if_kernel() can return (CVE-2006-0742) + + [ Sven Luther ] + * [powerpc] Disabled CONFIG_IEEE1394_SBP2_PHYS_DMA, which was broken on + powerpc64, as it used the long deprecated bus_to_virt symbol. + (Closes: #330225) + * [powerpc] Fixed gettimeofday breakage causing clock drift. + + -- Bastian Blank Mon, 6 Mar 2006 11:06:28 +0100 + +linux-2.6 (2.6.15-7) unstable; urgency=low + + [ Norbert Tretkowski ] + * [alpha] Disabled CONFIG_ALPHA_LEGACY_START_ADDRESS for -alpha-generic and + -alpha-smp flavours, and introduced a new -alpha-legacy flavour for MILO + based machines, which has CONFIG_ALPHA_LEGACY_START_ADDRESS enabled. + (closes: #352186) + * [alpha] Added new patch to support prctl syscall. (closes: #349765) + * [i386] Renamed kernel-image-2.6-486 to kernel-image-2.6-386, it's meant for + transition only, and kernel-image-2.6-386 is the package name in sarge. + + [ Jurij Smakov ] + * Bump build-dependency on kernel-package to 10.035, which is fixed + to build the documentation packages again. + Closes: #352000, #348332 + + [ Frederik Schüler ] + * Activate CONFIG_DVB_AV7110_OSD on alpha amd64 and ia64. + Closes: #353292 + * Deactivate CONFIG_FB_ATY_XL_INIT on all architectures: it is broken and + already removed in 2.6.16-rc. + Closes: #353310 + + [ Christian T. Steigies ] + * [m68k] build in cirrusfb driver + + -- Bastian Blank Tue, 21 Feb 2006 17:35:21 +0000 + +linux-2.6 (2.6.15-6) unstable; urgency=low + + [ Bastian Blank ] + * Moved the mkvmlinuz support patch modification to a -1 version of the + patch. + + [ maximilian attems ] + * Add stable treee 2.6.15.4 + - PCMCIA=m, HOSTAP_CS=y is not a legal configuration + - Input: iforce - do not return ENOMEM upon successful allocation + - x86_64: Let impossible CPUs point to reference per cpu data + - x86_64: Clear more state when ignoring empty node in SRAT parsing + - x86_64: Dont record local apic ids when they are disabled in MADT + - Fix keyctl usage of strnlen_user() + - Kill compat_sys_clock_settime sign extension stub. + - Input: grip - fix crash when accessing device + - Input: db9 - fix possible crash with Saturn gamepads + - Input: iforce - fix detection of USB devices + - Fixed hardware RX checksum handling + - SCSI: turn off ordered flush barriers + - Input: mousedev - fix memory leak + - seclvl settime fix + - fix regression in xfs_buf_rele + - md: remove slashes from disk names when creation dev names in sysfs + - d_instantiate_unique / NFS inode leakage + - dm-crypt: zero key before freeing it + - bridge: netfilter races on device removal + - bridge: fix RCU race on device removal + - SELinux: fix size-128 slab leak + - __cmpxchg() must really always be inlined + - emu10k1 - Fix the confliction of 'Front' control + - Input: sidewinder - fix an oops + * Deactivate merged alpha-cmpxchg-inline.patch, sparc64-clock-settime.patch. + + [ Christian T. Steigies ] + * [m68k] Add fix for m68k/buddha IDE and m68k/mac SCSI driver + * [m68k] Patch by Peter Krummrich to stop flickering pixels with PicassoII + * [m68k] make Amiga keyboard usable again, patch by Roman Zippel + * [m68k] prevent wd33c93 SCSI driver from crashing the kernel, patch by Roman Zippel + * [m68k] remove SBCs from VME descriptions (closes: #351924) + + -- Frederik Schüler Fri, 10 Feb 2006 15:33:21 +0000 + +linux-2.6 (2.6.15-5) unstable; urgency=low + + [ Martin Michlmayr ] + * Add a fix for the input support for the ixp4xx beeper driver from + 2.6.16-rc2. + * Add stable tree 2.6.15.3: + - Fix extra dst release when ip_options_echo fails (CVE-2006-0454) + + [ Sven Luther ] + * [powerpc] Removed -o root -g root option to mkvmlinuz support patch. + (Closes: #351412) + + -- Sven Luther Tue, 7 Feb 2006 19:23:14 +0000 + +linux-2.6 (2.6.15-4) unstable; urgency=low + + [ Jurij Smakov ] + * [sparc64] Add sparc64-clock-settime.patch to fix the incorrect + handling of the clock_settime syscall arguments, which resulted + in a hang when trying to set the date using 'date -s'. Patch + by David Miller is applied upstream. Thanks to Ludovic Courtes + and Frans Pop for reporting and testing. + Ref: http://marc.theaimsgroup.com/?t=113861017400002&r=1&w=2 + + [ Christian T. Steigies ] + * [m68k] update m68k patch and config to 2.6.15 + * [m68k] SCSI drivers need to be built in until ramdisk generator tools + supports loading scsi modules + * [m68k] ISCSI and IDE-TAPE don't compile, disabled + * [m68k] set CC_OPTIMIZE_FOR_SIZE=n + * [m68k] added vmeints patch which fixes building for vme + + [ maximilian attems ] + * Use initramfs-tools for ia64 - fixed klibc. + * Add stable tree 2.6.15.2: + - Fix double decrement of mqueue_mnt->mnt_count in sys_mq_open + - (CVE-2005-3356) + - Mask off GFP flags before swiotlb_alloc_coherent + - usb-audio: don't use empty packets at start of playback + - Make second arg to skb_reserved() signed. + - Input: HID - fix an oops in PID initialization code + - Fix oops in ufs_fill_super at mount time + - Kill blk_attempt_remerge() + - Fix i2o_scsi oops on abort + - Fix mkiss locking bug + - Fix timekeeping on sparc64 ultra-IIe machines + - Someone broke reiserfs v3 mount options and this fixes it + * Deactivate sparc64-jumping-time.patch, amd64-pppd-fix.patch incl in aboves. + * Add s390-klibc-buildfix.patch, regression due to header file changes. + + [ Steve Langasek ] + * [alpha] set __attribute__((always_inline)) on __cmpxchg(), to avoid + wrong optimizations with -Os (Closes: #347556). + + [ Martin Michlmayr ] + * Add input support for the ixp4xx beeper driver (Alessandro Zummo). + * [arm] Add NSLU2 specific portion of ixp4xx beeper driver (Alessandro Zummo). + * [arm/nslu2] Build PPP as a module. + * [arm/nslu2] Enable wireless. + * [arm/nslu2] Enable most USB modules. + * [arm/nslu2] Enable ALSA and USB sound modules. + * [arm/nslu2] Set 4 MB as the size of the initrd in the kernel cmd line. + * [arm/footbridge] Set CONFIG_BLK_DEV_RAM_SIZE to 8192. + * [armeb] Add support for big-endian ARM. + * [armeb/nslu2] Use the nslu2 config from arm. + + [ Frederik Schüler ] + * [amd64] Add amd64-pppd-fix.patch to fix kernel panic when using pppd. + (Closes: #347711) + * Add 64bit-vidiocswin-ioctl-fix.patch to fix VIDIOCSWIN ioctl on 64bit + kernel 32bit userland setups. (Closes: #349338) + + [ Sven Luther ] + * [powerpc] Adapted apus config file to be more modular and in sync with the + other powerpc configs. Scsi drivers are disabled as they don't build + cleanly though (need some esp stuff). + * [powerpc] Default to initramfs-tools as initramfs generator, as klibc + build is fixed now. + + [ Bastian Blank ] + * [powerpc] Fix dependencies of image packages. + + -- maximilian attems Wed, 1 Feb 2006 11:34:20 +0100 + +linux-2.6 (2.6.15-3) unstable; urgency=low + + [ Martin Michlmayr ] + * [arm] Update configs for 2.6.15; closes: #347998. + * [arm] Activate tmpfs. + * [arm] Allow modules to be unloaded. + * [arm] Enable CONFIG_INPUT_EVDEV since yaird needs this module in + order to generate initrds. + * [arm/footbridge] Activate IDEPCI so SL82C105 will really be + compiled in. + * [arm/footbridge] Activate the right network drivers (Tulip and + NE2K). + * [arm/footbridge] Enable more framebuffer drivers. + * debian/patches/arm-fix-dc21285.patch: Fix compilation of DC21285 + flash driver. + * [arm/footbridge] Enable MTD and the DC21285 flash driver. + * [arm/footbridge] Enable RAID and LVM modules. + * [arm/footbridge] Enable USB modules. + * [arm/nslu2] Add an image for Network Storage Link for USB 2.0 Disk + Drives. + * debian/patches/arm-memory-h-page-shift.patch: Fix error "PAGE_SHIFT + undeclared" (Rod Whitby). + * debian/patches/mtdpart-redboot-fis-byteswap.patch: recognise a foreign + endian RedBoot partition table (John Bowler). + * debian/patches/maclist.patch: Add support for the maclist interface + (John Bowler). + * debian/patches/arm-nslu2-maclist.patch: Add NSLU2 maclist support + (John Bowler). + * [arm/nslu2] Activate maclist. + + [ maximilian attems ] + * Add stable tree 2.6.15.1: + - arch/sparc64/Kconfig: fix HUGETLB_PAGE_SIZE_64K dependencies + - moxa serial: add proper capability check + - fix /sys/class/net//wireless without dev->get_wireless_stats + - Don't match tcp/udp source/destination port for IP fragments + - Fix sys_fstat64() entry in 64-bit syscall table. + - UFS: inode->i_sem is not released in error path + - netlink oops fix due to incorrect error code + - Fix onboard video on SPARC Blade 100 for 2.6.{13,14,15} + - Fix DoS in netlink_rcv_skb() (CVE-2006-0035) + - fix workqueue oops during cpu offline + - Fix crash in ip_nat_pptp (CVE-2006-0036) + - Fix another crash in ip_nat_pptp (CVE-2006-0037) + - ppc32: Re-add embed_config.c to ml300/ep405 + - Fix ptrace/strace + - vgacon: fix doublescan mode + - BRIDGE: Fix faulty check in br_stp_recalculate_bridge_id() + - skge: handle out of memory on ring changes + * Drop merged patch: + - sparc64-atyfb-xl-gr-final.patch + + [ Simon Horman ] + * Fix booting on PReP machines + (Closes: #348040) + powerpc-relocate_code.patch + + -- Simon Horman Tue, 17 Jan 2006 18:01:17 +0900 + +linux-2.6 (2.6.15-2) unstable; urgency=low + + [ maximilian attems ] + * Default to initramfs-tools as initramfs generator for amd64, hppa, i386, + alpha and sparc. More archs will be added once klibc matures. + (Closes: #346141, #343147, #341524, #346305) + * Backport alsa patch for opl3 - Fix the unreleased resources. + (Closes: #346273) + * Readd buslogic-pci-id-table.patch. + + [ dann frazier ] + * [ia64] Update config for 2.6.15. + + [ Frederik Schüler ] + * Make CONFIG_IPW2100 a per-architecture option and deactivate it on all + architectures but i386. (Closes: #344515) + + [ Sven Luther ] + * Removed spurious file from powerpc-apus patch. (Closes: #346159) + + [ Norbert Tretkowski ] + * Backport the generic irq framework for alpha. (closes: #339080) + + [ Bastian Blank ] + * Remove pre-sarge conflict with hotplug. + * Fix hppa diff to apply. + * Make the latest packages depend on the corect version of the real images. + (closes: #346366) + + -- Bastian Blank Tue, 10 Jan 2006 16:54:21 +0100 + +linux-2.6 (2.6.15-1) unstable; urgency=low + + [ Sven Luther ] + * New upstream release. + * [powerpc] Now use ARCH=powerpc for 64bit powerpc flavours, 32bit still + stays with ARCH=ppc for now. + * [powerpc] Readded PReP Motorola PowerStack II Utah IDE interrupt + (Closes: #345424) + * [powerpc] Fixed apus patch. + * Added make-kpkg --arch option support to gencontrol.py. + * Added debian/bin/kconfig.ml to process config file snipplet, so we can + preserve the pre 2.6.15 ordering of config file snipplets. Upto 2.6.15 + the kernel Kconfig magic apparently kept the later occuring config options, + but it seems that this is no more the case. Instead of catting the config + files together, not use the kconfig.ml script to read in the files from + more generic to more specific, and keep only the more specific. + + [ Bastian Blank ] + * [s390] Update configs. + + [ Kyle McMartin ] + * [hppa] Snag latest hppa.diff from cvs.parisc-linux.org. + * [hppa] Update configs for 2.6.15. + * [hppa] Change parisc kernel names to something less ambiguous. + + [ dann frazier ] + * [ia64] Update ia64 configs + + [ maximilian attems ] + * Drop modular-ide.patch, nacked by ide upstream. Prevents udev to load + ide-generic and those successfull boots with initramfs-tools. + * Disable CONFIG_USB_BANDWIDTH, causes major trouble for alsa usb cards. + + [ Norbert Tretkowski ] + * [alpha] Removed conflict with initramfs-tools, thanks vorlon for finding + the klibc bug! + + [ Jonas Smedegaard ] + * Adjust short description of transitional package kernel-image-2.6- + 486 to mention 2.6 (not 2.6.12). + * Clean duplicate Kconfig options. + + [ Frederik Schüler ] + * Add updated version of drivers-scsi-megaraid_splitup.patch. + * Deactivate CONFIG_IDE_TASK_IOCTL on alpha and ia64 and make it a global + option. + * Make CONFIG_VIDEO_SAA7134 a global option. + * New option CONFIG_CC_OPTIMIZE_FOR_SIZE set per-arch. + * Rename i386 368 flavour to 486. + * Add myself to uploaders. + * Readdition of qla2xxx drivers, as firmware license has been fixed. + * Make CONFIG_PACKET, PACKET_MM and UNIX builtin on all architectures: + statically linked has better performance then modules due to TLB issue. + * clean up debian-patches dir: remove all obsolete patches: + - alpha-compile-fix.patch: obsolete + - amd64-int3-fix.patch: fixed since 2.6.12 + - net-ipconntrack-nat-fix.patch: merged upstream after 2.6.14 release + - net-nf_queue-oops.patch: merged upstream after 2.6.14 release + - qla2xxx-removed.patch: obsolete + * Drop M386 support remains from the i386 386 flavour: built with M486 + from now on. + + [ Martin Michlmayr ] + * [arm] Don't define "compiler" since GCC 4.x is the default now anyway. + * [arm] Add descriptions for "class" and "longclass". + * [arm] Compile CONFIG_BLK_DEV_SL82C105 support into the kernel on + Footbridge. + * [arm] Compile ext3 support into the kernel on Footbridge. + * [arm] Turn on CONFIG_SERIAL_8250 support on Footbridge. + + [ Jurij Smakov ] + * [sparc] Correct the patch for the atyfb framebuffer driver + (sparc64-atyfb-xl-gr.patch) to finally fix the console and X + image defects on Blade 100/150. The new patch is named + sparc64-atyfb-xl-gr-final.patch to avoid the confusion. + Thanks to Luis F. Ortiz for fixing the patch and Luigi Gangitano + for testing it out. + * Drop tty-locking-fixes9.patch, which was preventing the oops during + shutdown on some sparc machines with serial console. Proper fix has + been incorporated upstream. + + [ Simon Horman ] + * Enable MKISS globally (closes: #340215) + * Add recommends libc6-i686 to 686 and k7 image packages + (closes: #278729) + * Enable OBSOLETE_OSS_USB_DRIVER and USB_AUDIO + as alsa snd-usb-audio still isn't quite there. + I expect this to be re-disabled at some stage, + possibly soon if it proves to be a source of bugs. + (closes: #340388) + + -- Sven Luther Tue, 3 Jan 2006 06:48:07 +0000 + +linux-2.6 (2.6.14-7) unstable; urgency=low + + [ maximilian attems ] + * Add stable tree 2.6.14.5 fixes: + - setting ACLs on readonly mounted NFS filesystems (CVE-2005-3623) + - Fix bridge-nf ipv6 length check + - Perform SA switchover immediately. + - Input: fix an OOPS in HID driver + - Fix hardware checksum modification + - kernel/params.c: fix sysfs access with CONFIG_MODULES=n + - Fix RTNLGRP definitions in rtnetlink.h + - Fix CTA_PROTO_NUM attribute size in ctnetlink + - Fix unbalanced read_unlock_bh in ctnetlink + - Fix NAT init order + - Fix incorrect dependency for IP6_NF_TARGET_NFQUEUE + - dpt_i2o fix for deadlock condition + - SCSI: fix transfer direction in sd (kernel panic when ejecting iPod) + - SCSI: fix transfer direction in scsi_lib and st + - Fix hardware rx csum errors + - Fix route lifetime. + - apci: fix NULL deref in video/lcd/brightness + * Disable CONFIG_USB_BANDWIDTH, causes major trouble on alsa usb cards. + (Closes: #344939) + + -- maximilian attems Tue, 27 Dec 2005 20:50:28 +0100 + +linux-2.6 (2.6.14-6) unstable; urgency=low + + [ Kyle McMartin ] + * Change parisc kernel names to something less ambiguous. + + [ maximilian attems ] + * Drop modular-ide.patch, nacked by ide upstream. Prevents udev to load + ide-generic and those successfull boots with initramfs-tools. + * Add stable tree 2.6.14.4 with the following fixes: + - drivers/scsi/dpt_i2o.c: fix a user-after-free + - drivers/message/i2o/pci.c: fix a use-after-free + - drivers/infiniband/core/mad.c: fix a use-after-free + - DVB: BUDGET CI card depends on STV0297 demodulator + - setkeys needs root + - Fix listxattr() for generic security attributes + - AGPGART: Fix serverworks TLB flush. + - Fix crash when ptrace poking hugepage areas + - I8K: fix /proc reporting of blank service tags + - i82365: release all resources if no devices are found + - bonding: fix feature consolidation + - libata: locking rewrite (== fix) + - cciss: bug fix for BIG_PASS_THRU + - ALSA: nm256: reset workaround for Latitude CSx + - cciss: bug fix for hpacucli + - V4L/DVB: Fix analog NTSC for Thomson DTT 761X hybrid tuner + - BRIDGE: recompute features when adding a new device + - 32bit integer overflow in invalidate_inode_pages2() + - USB: Adapt microtek driver to new scsi features + - ide-floppy: software eject not working with LS-120 drive + - Add try_to_freeze to kauditd + - V4L/DVB (3135) Fix tuner init for Pinnacle PCTV Stereo + - NETLINK: Fix processing of fib_lookup netlink messages + - ACPI: fix HP nx8220 boot hang regression + + [ Norbert Tretkowski ] + * [alpha] Removed conflict with initramfs-tools, thanks vorlon for finding + the klibc bug! + + [ Frederik Schüler ] + * Add updated drivers-scsi-megaraid_splitup.patch. (Closes: #317258) + * Add ppc64-thermal-overtemp.patch to fix a thermal control bug in G5 + machines. (Closes: #343980) + * Unpatch the following patches which are included in 2.6.14.4: + - setkeys-needs-root-1.patch + - setkeys-needs-root-2.patch + - mm-invalidate_inode_pages2-overflow.patch + - net-bonding-consolidation-fix.patch + + -- Frederik Schüler Tue, 20 Dec 2005 18:50:41 +0000 + +linux-2.6 (2.6.14-5) unstable; urgency=low + + [ dann frazier ] + * ia64-new-assembler-fix.patch + Fix ia64 builds with newer assembler (Closes: #341257) + + [ Sven Luther ] + * [powerpc] incremented ramdisk size to 24576 from 8192, needed by the + graphical installer, maybe we can bring this to 16384 later. + + [ Simon Horman ] + * Add recommends libc6-i686 to 686 and k7 image packages + (closes: #278729) + * Enable OBSOLETE_OSS_USB_DRIVER and USB_AUDIO + as alsa snd-usb-audio still isn't quite there. + I expect this to be re-disabled at some stage, + possibly soon if it proves to be a source of bugs. + (closes: #340388) + + [ dann frazier ] + * buslogic-pci-id-table.patch + add a pci device id table to fix initramfs-tools discovery. + (closes #342057) + * fix feature consolidation in bonding driver. (closes #340068) + + -- dann frazier Thu, 8 Dec 2005 10:59:31 -0700 + +linux-2.6 (2.6.14-4) unstable; urgency=low + + [ dann frazier ] + * setkeys-needs-root-1.patch, setkeys-needs-root-2.patch: + [SECURITY] Require root privilege to write the current + function key string entry of other user's terminals. + See CVE-2005-3257 (Closes: #334113) + + [ Simon Horman ] + * Enable MKISS globally (closes: #340215) + * mm-invalidate_inode_pages2-overflow.patch + [SECURITY] 32bit integer overflow in invalidate_inode_pages2() (local DoS) + * ctnetlink-check-if-protoinfo-is-present.patch + [SECURITY] ctnetlink: check if protoinfo is present (local DoS) + * ctnetlink-fix-oops-when-no-icmp-id-info-in-message.patch + [SECURITY] ctnetlink: Fix oops when no ICMP ID info in message (local DoS) + + [ Sven Luther ] + * Re-added powerpc/apus patch, now that Roman Zippel merged it in. + * Let's create asm-(ppc|ppc64) -> asm-powerpc symlink farm. (Closes: #340571) + + [ maximilian attems ] + * Add 2.6.14.3 patch - features changelog: + - isdn/hardware/eicon/os_4bri.c: correct the xdiLoadFile() signature + - x86_64/i386: Compute correct MTRR mask on early Noconas + - PPTP helper: Fix endianness bug in GRE key / CallID NAT + - nf_queue: Fix Ooops when no queue handler registered + - ctnetlink: check if protoinfo is present + - ip_conntrack: fix ftp/irc/tftp helpers on ports >= 32768 + - VFS: Fix memory leak with file leases + - hwmon: Fix lm78 VID conversion + - hwmon: Fix missing it87 fan div init + - ppc64 memory model depends on NUMA + - Generic HDLC WAN drivers - disable netif_carrier_off() + - ctnetlink: Fix oops when no ICMP ID info in message + - Don't auto-reap traced children + - packet writing oops fix + - PPTP helper: fix PNS-PAC expectation call id + - NAT: Fix module refcount dropping too far + - Fix soft lockup with ALSA rtc-timer + - Fix calculation of AH length during filling ancillary data. + - ip_conntrack TCP: Accept SYN+PUSH like SYN + - refcount leak of proto when ctnetlink dumping tuple + - Fix memory management error during setting up new advapi sockopts. + - Fix sending extension headers before and including routing header. + - hwmon: Fix missing boundary check when setting W83627THF in0 limits + * Remove ctnetlink-check-if-protoinfo-is-present.patch, + net-nf_queue-oops.patch - already included in 2.6.14.3. + + [ Frederik Schüler ] + * Make CONFIG_PACKET, PACKET_MM and UNIX builtin on all architectures: + statically linked has better performance then modules due to TLB issue. + * Add myself to uploaders. + + -- Frederik Schüler Sat, 26 Nov 2005 13:18:41 +0100 + +linux-2.6 (2.6.14-3) unstable; urgency=low + + [ Norbert Tretkowski ] + * [alpha] Switch to gcc 4.0. + * [alpha] Conflict with initramfs-tools, klibc is broken on alpha. + * [alpha] Enabled CONFIG_KOBJECT_UEVENT in arch/alphaconfig to fix trouble + with latest udev, thanks to Uwe Schindler for reporting. (closes: #338911) + * Bumped ABI revision: + + ABI changes on sparc and alpha because of compiler switch. + + 2.6.14.1 changes ABI of procfs. + + [ Sven Luther ] + * Set default TCP congestion algorithm to NewReno + BIC (Closes: #337089) + + [ maximilian attems ] + * Reenable CONFIG_SOFTWARE_SUSPEND on i386 and ppc, resume=/dev/ + must be set by boot loader. (Closes: #267600) + * Set CONFIG_USB_SUSPEND on i386. Usefull for suspend to ram and apm suspend. + * Add 2.6.14.1 patch: + - Al Viro: CVE-2005-2709 sysctl unregistration oops + * Add 2.6.14.2 patch: + - airo.c/airo_cs.c: correct prototypes + - fix XFS_QUOTA for modular XFS (closes: #337072) + - USB: always export interface information for modalias + - NET: Fix zero-size datagram reception + - fix alpha breakage + - Oops on suspend after on-the-fly switch to anticipatory i/o scheduler + - ipvs: fix connection leak if expire_nodest_conn=1 + - Fix ptrace self-attach rule + - fix signal->live leak in copy_process() + - fix de_thread() vs send_group_sigqueue() race + - prism54 : Fix frame length + - tcp: BIC max increment too large + * Remove alpha compile fix as contained in 2.6.14.2 + * Readd CONFIG_XFS_QUOTA=y. + * Disable ACPI cutoff year on i386, was set to 2001. + No need for acpi=force on boot. + + [ Jurij Smakov ] + * Fix the install-image script to correctly include all the necessary + stuff in scripts. (Closes: #336424) + * Enable CONFIG_SND_ALI5451 on sparc. + * Switch sparc to gcc-4.0. Thanks to Norbert for making sure it successfully + builds a working kernel now. + * Apply patch to fix ATI framebuffer output corruption on SunBlade 100 + (sparc64-atyfb-xl-gr.patch). Thanks to Luigi Gangitano. (Closes: #321200) + * Disable CONFIG_PARPORT_PC_FIFO on sparc, since it causes a hang whenever + something is sent to the parallel port device. Thanks to Attilla + (boera at rdslink.ro) for pointing that out. + + [ Simon Horman ] + * [386, AMD64] Set CONFIG_FRAMEBUFFER_CONSOLE=y instead of m. + As vesadb now built into the kernel, after finally dropping the + debian-specific patch to make it modular, make fbcons builtin too, else + all sorts of weird stuff happens which is hard for the inird builders to + automatically compenste for. (Closes: #336450) + * Redisable CONFIG_SOFTWARE_SUSPEND on ppc/miboot as it required + CONFIG_PM to compile. + * [NETFILTER] nf_queue: Fix Ooops when no queue handler registered + This is a regression introduced in 2.6.14. + net-nf_queue-oops.patch. (Closes: #337713) + * Make manuals with defconfig, as is required for kernel-package 10.008 + + [ dann frazier ] + * net-ipconntrack-nat-fix.patch - fix compilation of + ip_conntrack_helper_pptp.c when NAT is disabled. (Closes: #336431) + + [ Christian T. Steigies ] + * update m68k.diff to 2.6.14 + * add m68k-*vme* patches + * disable macsonic driver until the dma patch is fixed + * disable IEEE80211 drivers for all of m68k + + [ Frederik Schüler ] + * activate CONFIG_SECURITY_NETWORK to fix SElinux operation. + (Closes: #338543) + + -- Norbert Tretkowski Mon, 14 Nov 2005 10:23:05 +0100 + +linux-2.6 (2.6.14-2) unstable; urgency=low + + [ Simon Horman ] + * [SECURITY] Avoid 'names_cache' memory leak with CONFIG_AUDITSYSCALL + This fix, included as part of the 2.6.13.4 patch in + 2.6.13+2.6.14-rc4-0experimental.1 is CVE-2005-3181 + * Fix genearation of .extraversion, again (closes: #333842) + * Add missing kernel-arch and kernel-header-dirs to defines + so headers get included. (closes: #336521) + N.B: I only filled in arches where other's hadn't done so alread. + Please fix if its wrong. + * Allow powerpc64 to compile with AUDIT enabled but + AUDITSYSCALL disabled. powerpc64-audit_sysctl-build.patch + + [ dann frazier ] + * Update hppa.diff to 2.6.14-pa0 + + [ Norbert Tretkowski ] + * [alpha] New patch to include compiler.h in barrier.h, barrier() is used in + non-SMP case. + * [alpha] Added kernel-header-dirs and kernel-arch to debian/arch/alpha/defines + to include asm-alpha in linux-headers package. + * Added myself to Uploaders. + + [ Frederik Schüler ] + * [amd64] use DISCONTIGMEM instead of SPARSEMEM on amd64-k8-smp flavour to + fix bootup kernel panic. + * [amd64] include asm-x86_64 in linux-headers package. + * Deactivate AUDITSYSCALL globally, it slows down the kernel and is not + needed for selinux at all. + + -- Simon Horman Tue, 1 Nov 2005 15:27:40 +0900 + +linux-2.6 (2.6.14-1) unstable; urgency=low + + [ Sven Luther ] + * New upstream release. + + [ Norbert Tretkowski ] + * [alpha] Update arch/alpha/config* for 2.6.14. + + [ Simon Horman ] + * Fix misformatting of long description of + linux-patch-debian-linux-patch-debian-X.Y.Z. + templates/control.main.in + (closes: #335088) + * Make sure version is seeded in apply and unapply scripts. + Actually changed in some earlier, post 2.6.12, release, + but the changelog seems to be missing. + (closes: #324583) + + [ dann frazier ] + * [ia64] Disable the CONFIG_IA64_SGI_SN_XP module. This forces + CONFIG_GENERIC_ALLOCATOR and CONFIG_IA64_UNCACHED_ALLOCATOR to y, which + appears to break on zx1 systems. + + -- Simon Horman Fri, 28 Oct 2005 16:26:03 +0900 + +linux-2.6 (2.6.13+2.6.14-rc5-0experimental.1) experimental; urgency=low + + [ Sven Luther ] + * Upgraded to 2.6.14-rc5. + + [ Jonas Smedegaard ] + * Quote variables in debian/rules.real and postinstall (making it + safer to run with weird characters in path of build environment). + + [ Bastian Blank ] + * Add some missing files from scripts to headers packages. + * Add new patch powerpc-build-links.patch: Emit relative symlinks in + arch/ppc{,64}/include. + * Include arch/*/include into headers package. + + -- Sven Luther Tue, 25 Oct 2005 03:56:11 +0000 + +linux-2.6 (2.6.13+2.6.14-rc4-0experimental.1) experimental; urgency=low + + [ Sven Luther ] + * Upgraded to 2.6.14-rc4. + + [ Simon Horman ] + * Fix genearation of .extraversion (closes: #333842) + + [ dann frazier ] + * Enhance the linux-source description to explain the types of patches + Debian adds to it. (closes: #258043) + * Correct linux-patch-debian description. It replaces the + kernel-patch-debian packages, not the kernel-source packages. + + [ Jonas Smedegaard ] + * Fix building from within a very long dir (all patches was applied at + once - exhausting shell commandline, now applied one by one). + * Add Simon Horman, Sven Luther and myself as Uploaders. + + [ Bastian Blank ] + * Use list of revisions in patch scripts. + * Use correct names for tarball and scripts. + + [ Jurij Smakov ] + * [i386] Set the CONFIG_HPET_EMULATE_RTC option to make the clock + work properly on certain Dell machines. This required setting the + CONFIG_RTC option to 'y' instead of 'm'. (closes: #309909) + [i386] Enable VIDEO_CX88 and VIDEO_CX88_DVB (both set to 'm') by + popular demand. (closes: #330916) + + [ Norbert Tretkowski ] + * [alpha] Update arch/alpha/config for 2.6.13. + + [ Kyle McMartin ] + * [hppa] Oops. Fix linux-headers not including asm-parisc by adding + headers_dirs = parisc to Makefile.inc. + + [ maximilian attems ] + * Set CONFIG_FB_VESA=y for i386 and amd64 configs. (closes: #333003) + + [ Sven Luther ] + * [powerpc] Fixed apus build, now use mkvmlinuz too to generate the vmlinuz + kernel. + * Fixed control.image.in to depend on : + initramfs-tools | yaird | linux-ramdisk-tool + where linux-ramdisk-tools is the virtual package provided by all + initrd/initramfs generating tools. + + [ Frederik Schüler ] + * deactivate FB_RIVA on all architectures. + * deactivate BLK_DEV_IDESCSI on all architectures. + * Added patch-2.6.13.4: + - [SECURITY] key: plug request_key_auth memleak + See CAN-2005-3119 + - [SECURITY] Fix drm 'debug' sysfs permissions + See CAN-2005-3179 + - [SECURITY] Avoid 'names_cache' memory leak with CONFIG_AUDITSYSCALL + - [SPARC64] Fix userland FPU state corruption. + - BIC coding bug in Linux 2.6.13 + - [SECURITY] orinoco: Information leakage due to incorrect padding + See CAN-2005-3180 + - ieee1394/sbp2: fixes for hot-unplug and module unloading + + [ Christian T. Steigies ] + * disable CONFIG_EXT2_FS_XIP for m68k like on all(?) other arches + * deactivate OKTAGON_SCSI for amiga/m68k until it can be compiled again + * deactivate CONFIG_KEYBOARD_HIL_OLD, CONFIG_KEYBOARD_HIL, CONFIG_MOUSE_HIL, + CONFIG_HIL_MLC, and CONFIG_HP_SDC for hp/m68k + * update m68k.diff for 2.6.13 + * split out patches that do not intefere with other arches to + patches-debian/m68k-* + + -- Bastian Blank Fri, 21 Oct 2005 12:17:47 +0000 + +linux-2.6 (2.6.13-1) experimental; urgency=low + + * New upstream release "git booost": + - new arch xtensa + - kexec/kdump + - execute-in-place + - inotify (closes: #304387) + - time-sharing cfq I/O scheduler + - manual driver binding + - voluntary preemption + - user-space I/O initiation for InfiniBand + - new speedy DES (crypto) implementation + - uml "almost-skas" mode support + - 250 HZ default (closes: #320366) + - fixes all over (alsa, archs, ide, input, ntfs, scsi, swsusp, usb, ..) + - orinoco driver updates (closes: #291684) + - md, dm updates (closes: #317787) + + [ Frederik Schüler ] + * [amd64] Added class and longclass descriptions for amd64 flavours. + * [amd64] add amd64-tlb-flush-sigsegv-fix.patch: disable tlb flush + filtering on smp systems to workaround processor errata. + * backport kernel-api-documentation-generation-fix.diff from git to fix + documentation build. + * Added patch-2.6.13.1: + - raw_sendmsg DoS (CAN-2005-2492) + - 32bit sendmsg() flaw (CAN-2005-2490) + - Reassembly trim not clearing CHECKSUM_HW + - Use SA_SHIRQ in sparc specific code. + - Fix boundary check in standard multi-block cipher processors + - 2.6.13 breaks libpcap (and tcpdump) + - x86: pci_assign_unassigned_resources() update + - Fix PCI ROM mapping + - aacraid: 2.6.13 aacraid bad BUG_ON fix + - Kconfig: saa7134-dvb must select tda1004x + + [ Simon Horman ] + * Disable BSDv3 accounting on hppa and alpha, it was already + disabled on all other architectures. Also unify BSD accounting + config into top level config, rather than per flavour configs. + * [SECURITY] The seq_file memory leak fix included in 2.6.12-6 + as part of upstream's 2.6.12.6 patchset is now CAN-2005-2800. + + [ Jurij Smakov, Simon Horman ] + * Ensure that only one kernel-manual/linux-manual package can + be installed at a time to avoid file conflicts. (closes: #320042) + + [ Bastian Blank ] + * Move audit, preempt and security settings to core config file. + * Fix powerpc configuration. + * Add debian version information to kernel version string. + * Drop coreutils | fileutils dependencies. + * Drop modular-vesafb patch. (closes: #222374, #289810) + + [ Christian T. Steigies ] + * update m68k.diff for linux-2.6.13 + * add m68k-42_dma.patch and m68k-sonic.patch that will be in upstream 2.6.14 + (which makes sun3 build fail, needs fixing) + + [ maximilian attems ] + * Drop drivers-add-scsi_changer.patch (merged) + * Drop drivers-ide-dma-blacklist-toshiba.patch (merged) + * Drop drivers-ide-__devinit.patch (merged) + * Added patch-2.6.13.2: + - USB: ftdi_sio: custom baud rate fix + - Fix up more strange byte writes to the PCI_ROM_ADDRESS config word + - Fix MPOL_F_VERIFY + - jfs: jfs_delete_inode must call clear_inode + - Fix DHCP + MASQUERADE problem + - Sun HME: enable and map PCI ROM properly + - Sun GEM ethernet: enable and map PCI ROM properly + - hpt366: write the full 4 bytes of ROM address, not just low 1 byte + - forcedeth: Initialize link settings in every nv_open() + - Lost sockfd_put() in routing_ioctl() + - lost fput in 32bit ioctl on x86-64 + * Added patch-2.6.13.3: + - Fix fs/exec.c:788 (de_thread()) BUG_ON + - Don't over-clamp window in tcp_clamp_window() + - fix IPv6 per-socket multicast filtering in exact-match case + - yenta oops fix + - ipvs: ip_vs_ftp breaks connections using persistence + - uml - Fix x86_64 page leak + - skge: set mac address oops with bonding + - tcp: set default congestion control correctly for incoming connections + + [ Sven Luther ] + * [powerpc] Added hotplug support to the mv643xx_eth driver : + powerpc-mv643xx-hotplug-support.patch + thanks go to Nicolas Det for providing the patch. + * [powerpc] Modified a couple of configuration options for the powerpc64 + flavour, fixes and enhances Apple G5 support (Closes: #323724, #328324) + * [powerpc] Added powerpc-miboot flavour to use exclusively with oldworld + powermac miboot floppies for debian-installer. + * [powerpc] Checked upgraded version of the apus patches, separated them in + a part which is safe to apply, and one which needs checking, and is thus + not applied yet. + + [ Kyle McMartin ] + * [hppa] Update hppa.diff to 2.6.13-pa4. + * [hppa] Add space register fix to pacache.S to hppa.diff. + + [ dann frazier ] + * Add a note to README.Debian that explains where users can find the .config + files used to generate the linux-image packages. Closes: #316809 + * [ia64] Workaround #325070 until upstream works out an acceptable solution. + This bug breaks module loading on non-SMP ia64 kernels. The workaround + is to temporarily use an SMP config for the non-SMP kernels. (Note that + John Wright is running benchmarks to determine the overhead of running + an SMP kernel on UP systems to help decide if this should be a + permanent change). + * [ia64] Update arch/ia64/config for 2.6.13 + + -- Simon Horman Thu, 6 Oct 2005 15:45:21 +0900 + +linux-2.6 (2.6.12-6) unstable; urgency=high + + [ Andres Salomon, Bastian Blank ] + * Change ATM and Classical-IP-over-ATM to be modular, instead of being + statically included. (closes: #323143) + + [ Sven Luther ] + * [powerpc] powerpc-pmac-sound-check.patch: Added pmac-sound sanity check. + * [powerpc] powerpc-apus.patch: + Added preliminary apus patch to package, not applied to kernel tree yet. + + [ Simon Horman ] + * Unset CC_OPTIMIZE_FOR_SIZE in i386 config, + it breaks iproute's (and other netlink users) ability + to set routes. (closes: #322723) + * Added 2.6.12.6 + - [SECURITY: CAN-2005-2555] Restrict socket policy loading to + CAP_NET_ADMIN. + - [SECURITY] Fix DST leak in icmp_push_reply(). Possible remote + DoS? + - [SECURITY] NPTL signal delivery deadlock fix; possible local + DoS. + - fix gl_skb/skb type error in genelink driver in usbnet + - [SECURITY] fix a memory leak in devices seq_file implementation; + local DoS. + - [SECURITY] Fix SKB leak in ip6_input_finish(); local DoS. + + [ Andres Salomon ] + * [hppa] enable discontiguous memory support for 32bit hppa images, so + they build. + + -- Andres Salomon Tue, 06 Sep 2005 10:14:35 -0400 + +linux-2.6 (2.6.12-5) unstable; urgency=low + + * Change ARM to use GCC 3.3 to avoid FTBFS errors with GCC 4 + (dann frazier) + + * Remove spurious double quote character from ia64 package descriptions. + (dann frazier) + + * Add transitional meta packages (kernel-image-2.6-*) for ia64. + (dann frazier) + + * Change fuzz factor to 1, stricter patch appliance. (Maximilian Attems) + + * Enabled CONFIG_THERM_PM72 on powerpc64 flavour. (Sven Luther) + + -- Bastian Blank Tue, 16 Aug 2005 21:43:31 +0200 + +linux-2.6 (2.6.12-4) unstable; urgency=low + + * Supply correct subarch values for the powerpc images. + + -- Bastian Blank Mon, 15 Aug 2005 21:06:18 +0200 + +linux-2.6 (2.6.12-3) unstable; urgency=low + + * Added reference to old kernel-* package names to make + transition a little more obvious to end users. + A Dan Jacobson special. (Simon Horman) Closes: #321167 + + * By the time this makes it into the archive, it will + be handling kernel-image-2.6-* packages. (Simon Horman) + Closes: #321867 + + * Link palinfo statically on ia64. (dann frazier) (Closes: #321885) + + * [hppa] : + - Add hppa arch specific patch. + - Build-Depend on binutils-hppa64 and gcc-4.0-hppa64. + (Kyle McMartin) + + * Fix permissions in source tarball. (Bastian Blank) (Closes: #322409) + + * Enable the CONFIG_IP_ADVANCED_ROUTER and related options on + sparc64 to sync with other architectures. (Jurij Smakov) + Closes: #321236 + + * Include all executables as well as *.sh and *.pl files found in + scripts directory in the headers package. (Bastian Blank) + Closes: #322612, #322680, #322765 + + * Include m68k headers into the arch-common headers package on + powerpc and make sure that all the directories are linked to + properly from the flavour-specific headers packages. (Jurij Smakov) + Closes: #322610 + + * [powerpc] Enabled the powerpc64 flavour, now that we have a real biarch + toolchain in sid. Many thanks go to GOTO Masanori and Matthias Klose as + well as any other who worked on the biarch toolchain to make this happen. + + * Added 2.6.12.5 (Simon Horman) + - Fix BUG() is triggered by a call to set_mempolicy() with a negativ + first argument. + - [amd64] Fix a SRAT handling on systems with dual cores. + - [amd64] SMP timing problem + - [security] Zlib fixes See CAN-2005-2458, CAN-2005-2459 + http://sources.redhat.com/ml/bug-gnu-utils/1999-06/msg00183.html + http://bugs.gentoo.org/show_bug.cgi + - Add zlib deflateBound() + - [security] Fix error during session join. See CAN-2005-2098 + - [security] Fix keyring destructor. See CAN-2005-2099 + - Module per-cpu alignment cannot always be met + http://www.ussg.iu.edu/hypermail/linux/kernel/0409.0/0768.html + Closes: #323039 + + -- Bastian Blank Mon, 15 Aug 2005 16:42:05 +0200 + +linux-2.6 (2.6.12-2) unstable; urgency=low + + * The Kernel Team offers its condolences to the family of Jens Schmalzing + (jensen@debian), who died Saturday, July 30, 2005 in a tragic accident in + Munich. Jens was a member of the Kernel Team, and was instrumental in + taking the powerpc kernel package to 2.6, as well as maintaining MOL + and its kernel modules. + + * Add @longclass@ variable to control file autogeneration. (Andres Salomon) + + * Bump build-depends on kernel-package to a fixed version (>= 9.005). + (Jurij Smakov, Sven Luther) (closes: #319657, #320422, #321625) + + * Change default ramdisk size for sparc to 16,384K to accomodate a fatter + d-i initrd for netboot installs. + (Joshua Kwan) + + * Don't build-depend on console-tools on s390. (Bastian Blank) + + * Add ARM support. (Vincent Sanders) + + * Add ia64 descriptions. (dann frazier) + + * Strip down the scripts dir in the headers packages. (Bastian Blank) + + * Add m68k support. (Christian T. Steigies) + + * Added 2.6.12.4 (Frederik Schüler) + - Fix powernow oops on dual-core athlon + - Fix early vlan adding leads to not functional device + - sys_get_thread_area does not clear the returned argument + - bio_clone fix + - Fix possible overflow of sock->sk_policy (CAN-2005-2456) + (closes: #321401) + - Wait until all references to ip_conntrack_untracked are dropped on + unload + - Fix potential memory corruption in NAT code (aka memory NAT) + - Fix deadlock in ip6_queue + - Fix signedness issues in net/core/filter.c + - x86_64 memleak from malicious 32bit elf program + - rocket.c: Fix ldisc ref count handling + - kbuild: build TAGS problem with O= + + * Enable CONFIG_6PACK=m for all archs (Andres Salomon) + (closes: #319646) + + * Overhaul the generation of the control file. Now it is handled + by debian/bin/gencontrol.py. The debian/control target in rules + also fails now, since we don't want the control file generated + during build. Arch-specific Depends and suggests are now generated + correctly. (Bastian Blank) (Closes: #319896) + + * [powerpc] Fixed typo which made asm-ppc and asm-ppc64 not being included + in the header package. (Sven Luther) (Closes: #320817) + + * Added list of flavours built to common header package. (Sven Luther) + + -- Bastian Blank Tue, 09 Aug 2005 11:12:40 +0200 + +linux-2.6 (2.6.12-1) unstable; urgency=low + + * New upstream release: + - "git rocks" + - address space randomization + - conversion of ide driver code to the device model + - restored Philips webcam driver + - new Broadcom bcm5706 gigabit driver + - new resource limits for the audio community + - Multipath device mapper + - Intel HD Audio alsa driver + - fixes + arch updates.. + - readdition of tg3 driver, as firmware license has been fixed + + * Dropped the following patches: + - patch-2.6.11.*.patch (merged) + - powerpc-ppc64-ibmvscsi.patch (Christoph didn't like it, and it failed + to build anyways) (Sven Luther) + - doc-post_halloween.patch (unless someone can come up w/ a valid + reason for carrying around rapidly bitrotting documentation...) + (Andres Salomon) + - sparc32-hypersparc-srmmu.patch (dropped until sparc32 is working + again, and we can figure out whether it's necessary) + - fix-alpha-ext3-oops.patch (no longer needed, fixed by compiler) + - x86-i486_emu.patch (buggy and insecure 80486 instruction emulation + for 80386; we're no longer supporting this) (closes: #250468) + - amd64-outs.patch (according to + http://www.ussg.iu.edu/hypermail/linux/kernel/0502.3/1095.html, this + is unnecessary for us) (Andres Salomon) + - sparc64-rtc-mostek.patch (merged) + - sparc64-compat-nanoseconds.patch (merged) + - sparc64-sunsu-init-2.6.11.patch (merged) + - sunsab-uart-update-timeout.patch (merged) + - alpha-read-trylock.patch (different version got merged) + - powerpc-prep-motorola-irq-fix.patch (merged) + - drivers-media-video-saa7134-update.patch (merged) + - drivers-media-video-saa7134-update-2.patch (merged) + - drivers-media-video-pll-lib.patch (merged) + - drivers-media-video-pll-lib-2.patch (merged) + - drivers-media-video-tuner-update-1.patch (merged) + - drivers-media-video-tuner-update-2.patch (merged) + - drivers-media-video-v4l-mpeg-support.patch (merged) + - drivers-media-video-mt352-update.patch (merged) + - arch-ppc64-hugepage-aio-panic.patch (merged) + - drivers-input-serio-nmouse.patch (merged) + - sparc64-sb1500-clock-2.6.patch (merged) + - docbook-allow-preprocessor-directives-... (merged) + - docbook-fix-function-parameter-descriptin-in-fbmem.patch (merged) + - docbook-move-kernel-doc-comment-next-to-function.patch (merged) + - powerpc-therm-adt746x-new-i2c-fix.patch (merged) + - powerpc-mv643xx-enet.patch (merged) + - powerpc-mv643xx-eth-pegasos.patch (merged) + - powerpc-pmac-agp-sleep.patch (merged) + - drivers-input-serio-8042-resume.patch (merged) + + * Premiere of the common-source kernel package + (Jurij Smakov, Andres Salomon) + - build all architectures out of kernel source package + - rename source and binary packages + - create a common config for different architectures, and management + tools to allow for easier modification of config options + - drop default configs, autogenerate them instead; requires + kernel-package >= 9.002. + + * Add 2.6.12.1 (Maximilian Attems) + - Clean up subthread exec (CAN-2005-1913) + - ia64 ptrace + sigrestore_context (CAN-2005-1761) + + * Add 2.6.12.2 (Frederik Schüler) + - Fix two socket hashing bugs. + - ACPI: Make sure we call acpi_register_gsi() even for default PCI + interrupt assignment + - Add "memory" clobbers to the x86 inline asm of strncmp and friends + - e1000: fix spinlock bug + - fix remap_pte_range BUG + - Fix typo in drivers/pci/pci-driver.c + + * Add 2.6.12.3 (Joshua Kwan) + - Fix semaphore handling in __unregister_chrdev + - Fix TT mode in UML. + - Check for a null return in tty_ldisc_ref. + - v4l: cx88 hue offset fix + - Fix 8139cp breakage that occurs with tpm driver. + - Fix the 6pack driver in SMP environments. + - Switch to spinlocks in the shaper driver. + - ppc32: stop misusing NTP's time_offset value + - netfilter: go back to dropping conntrack references manually + - ACPI: don't accept 0 as a PCI IRQ. + + * Enable CONFIG_SCSI_INITIO. (Maximilian Attems) (closes: #318121) + + * [powerpc] : + - Added powerpc-mkvmlinuz-support patch which allows, together with + kernel-package 9.0002 to add mkvmlinuz support to hand built packages. + - Removed powerpc-ppc64-ibmvscsi.patch, FTBFS, and Christoph doesn't like + it and thinks it is not needed. + - Disabled swim3 on powerpc-smp, FTBFS. + - Disabled software-suspend on powerpc-smp, FTBFS, amd64/i386 only smp code. + - Rediffed and readded the G4 L2 hardware flush assist patch from Jacob Pan. + (Sven Luther) + + * [sparc] + - Drop sparc32 flavour for now. sparc32 kernel is currently in the + category "too buggy for us to support". In spite of numerous efforts + I still see occasional random filesystem corruptions in my tests. + That does NOT mean that we are dropping sparc32 support, we will + work with upstream trying to solve these problems for the next + kernel release. Those interested in helping/testing are encouraged + to subscribe to debian-sparc mailing list. + (Jurij Smakov) + + * [alpha] + - Renamed resulting binary packages for alpha, kernel-image-x.y.z-generic + wasn't a generic kernel, it was a generic kernel for alpha machines, so + we're now using linux-image-x.y.z-alpha-generic (and of course, the same + change for the smp kernel-image). This change was postponed after the + sarge release. (closes: #260003) + (Norbert Tretkowski) + + * [amd64] + - Now using the default compiler (gcc-4.0), thus we get rid of the + annoying MAKEFLAGS="CC=gcc-3.4" make-kpkg... invocation for third-party + modules. + This release lacks 64bit kernels for i386 userland; support will be + added in a later release as soon as the toolchain has stabilized again. + (Frederik Schüler) + + -- Andres Salomon Wed, 20 Jul 2005 17:16:04 -0400 + diff --git a/compat b/compat new file mode 100644 index 00000000000..ec635144f60 --- /dev/null +++ b/compat @@ -0,0 +1 @@ +9 diff --git a/config.defines.dump b/config.defines.dump new file mode 100644 index 00000000000..d78b6b83b0b --- /dev/null +++ b/config.defines.dump @@ -0,0 +1,2715 @@ +cdebian_linux.config +ConfigCore +p0 +(tRp1 +(Vabi +p2 +tp3 +(dp4 +Vabiname +p5 +V2 +p6 +sVignore-changes +p7 +(lp8 +V__cpuhp_* +p9 +aV__xive_vm_h_* +p10 +aVbpf_analyzer +p11 +aVcxl_* +p12 +aVdax_flush +p13 +aVieee80211_nullfunc_get +p14 +aVinet_add_protocol +p15 +aVinet_del_protocol +p16 +aViommu_device_* +p17 +aVkvm_async_pf_task_wait +p18 +aVkvmppc_* +p19 +aVmm_iommu_* +p20 +aVmv_mbus_* +p21 +aVperf_* +p22 +aVregister_cxl_calls +p23 +aVregister_key_type +p24 +aVunregister_cxl_calls +p25 +aV*_hw_breakpoint +p26 +aVmodule:arch/x86/kvm/* +p27 +aVmodule:drivers/crypto/ccp/* +p28 +aVmodule:drivers/hv/* +p29 +aVmodule:drivers/iio/common/hid-sensors/* +p30 +aVmodule:drivers/iio/common/st_sensors/** +p31 +aVmodule:drivers/mtd/nand/* +p32 +aVmodule:drivers/net/wireless/** +p33 +aVmodule:drivers/nvdimm/* +p34 +aVmodule:drivers/power/supply/bq27xxx_battery +p35 +aVmodule:drivers/scsi/cxgbi/* +p36 +aVmodule:drivers/scsi/libiscs* +p37 +aVmodule:drivers/scsi/qla2xxx/qla2xxx +p38 +aVmodule:drivers/scsi/ufs/* +p39 +aVmodule:drivers/target/** +p40 +aVmodule:drivers/usb/chipidea/** +p41 +aVmodule:drivers/usb/gadget/** +p42 +aVmodule:drivers/usb/host/** +p43 +aVmodule:drivers/usb/musb/** +p44 +aVmodule:fs/nfs/** +p45 +aVmodule:net/ceph/libceph +p46 +aVmodule:net/l2tp/** +p47 +aVmodule:net/rxrpc/rxrpc +p48 +aVmodule:sound/core/seq/** +p49 +aVmodule:sound/firewire/snd-firewire-lib +p50 +aVbtree_* +p51 +aVvisitor* +p52 +aVcan_rx_register +p53 +aVip6_xmit +p54 +aVmodule:net/dccp/dccp +p55 +aVmodule:net/rds/rds +p56 +aVdevfreq_* +p57 +aVdevm_devfreq_* +p58 +aVupdate_devfreq +p59 +aVmodule:drivers/infiniband/** +p60 +aVacpi_ec_add_query_handler +p61 +aVacpi_ec_remove_query_handler +p62 +aVfirst_ec +p63 +aVdebugfs_create_automount +p64 +aVmodule:drivers/iio/imu/inv_mpu6050/* +p65 +ass(Vbase +p66 +tp67 +(dp68 +Varches +p69 +(lp70 +Valpha +p71 +aVamd64 +p72 +aVarm64 +p73 +aVarm64ilp32 +p74 +aVarmel +p75 +aVarmhf +p76 +aVhppa +p77 +aVi386 +p78 +aVm68k +p79 +aVmips +p80 +aVmips64 +p81 +aVmips64el +p82 +aVmips64r6 +p83 +aVmips64r6el +p84 +aVmipsel +p85 +aVmipsn32 +p86 +aVmipsn32el +p87 +aVmipsn32r6 +p88 +aVmipsn32r6el +p89 +aVmipsr6 +p90 +aVmipsr6el +p91 +aVpowerpc +p92 +aVpowerpcspe +p93 +aVppc64 +p94 +aVppc64el +p95 +aVs390 +p96 +aVs390x +p97 +aVsh3 +p98 +aVsh4 +p99 +aVsparc +p100 +aVsparc64 +p101 +aVtilegx +p102 +aVx32 +p103 +asVcompiler +p104 +Vgcc-7 +p105 +sVfeaturesets +p106 +(lp107 +Vnone +p108 +aVrt +p109 +ass(Vbuild +p110 +tp111 +(dp112 +Vdebug-info +p113 +I01 +sVsigned-modules +p114 +I00 +ss(Vbase +p115 +NVrt +p116 +tp117 +(dp118 +Venabled +p119 +I00 +ss(Vdescription +p120 +tp121 +(dp122 +Vpart-long-up +p123 +VThis kernel is not suitable for SMP (multi-processor,\u000amulti-core or hyper-threaded) systems. +p124 +ss(Vimage +p125 +tp126 +(dp127 +Vinitramfs-generators +p128 +(lp129 +Vinitramfs-tools +p130 +aVinitramfs-fallback +p131 +asVrecommends +p132 +Vapparmor +p133 +ss(Vrelations +p134 +tp135 +(dp136 +Vgcc-7 +p137 +Vgcc-7 , gcc-7-@gnu-type-package@ +p138 +sVinitramfs-fallback +p139 +Vlinux-initramfs-tool +p140 +sVinitramfs-tools +p141 +Vinitramfs-tools (>= 0.120+deb8u2) +p142 +ss(Vbase +p143 +Valpha +p144 +tp145 +(dp146 +Vkernel-arch +p147 +Valpha +p148 +sVfeaturesets +p149 +(lp150 +Vnone +p151 +ass(Vbuild +p152 +g144 +tp153 +(dp154 +Vimage-file +p155 +Varch/alpha/boot/vmlinux.gz +p156 +sVsigned-modules +p157 +I00 +ss(Vimage +p158 +g144 +tp159 +(dp160 +Vsuggests +p161 +Vaboot, fdutils +p162 +sVinstall-stem +p163 +Vvmlinuz +p164 +ss(Vdescription +p165 +g144 +NValpha-generic +p166 +tp167 +(dp168 +Vhardware +p169 +VAlpha +p170 +sVhardware-long +p171 +VDEC Alpha systems with extended kernel start address (Wildfire, Titan, Marvel) +p172 +ss(Vdescription +p173 +g144 +NValpha-smp +p174 +tp175 +(dp176 +Vhardware +p177 +VAlpha SMP +p178 +sVhardware-long +p179 +VDEC Alpha SMP systems with extended kernel start address (Wildfire, Titan, Marvel) +p180 +ss(Vbase +p181 +g144 +g151 +tp182 +(dp183 +Vflavours +p184 +(lp185 +Valpha-generic +p186 +aValpha-smp +p187 +asVimplicit-flavour +p188 +I01 +ss(Vbase +p189 +Vamd64 +p190 +tp191 +(dp192 +Vfeaturesets +p193 +(lp194 +Vnone +p195 +aVrt +p196 +asVkernel-arch +p197 +Vx86 +p198 +ss(Vbuild +p199 +g190 +tp200 +(dp201 +Vdebug-info +p202 +I01 +sVimage-file +p203 +Varch/x86/boot/bzImage +p204 +sVvdso +p205 +I01 +ss(Vimage +p206 +g190 +tp207 +(dp208 +Vbootloaders +p209 +(lp210 +Vgrub-pc +p211 +aVgrub-efi-amd64 +p212 +aVextlinux +p213 +asVinstall-stem +p214 +Vvmlinuz +p215 +sVbreaks +p216 +Vxserver-xorg-input-vmmouse (<< 1:13.0.99) +p217 +ss(Vrelations +p218 +g190 +tp219 +(dp220 +Vgcc-7 +p221 +Vgcc-7 (>= 7.2.0-20~) , gcc-7-x86-64-linux-gnu (>= 7.2.0-20~) +p222 +sVheaders%gcc-7 +p223 +Vlinux-compiler-gcc-7-x86 (>= 4.14.17-1~) +p224 +ss(Vdescription +p225 +g190 +NVamd64 +p226 +tp227 +(dp228 +Vhardware +p229 +V64-bit PCs +p230 +sVhardware-long +p231 +VPCs with AMD64, Intel 64 or VIA Nano processors +p232 +ss(Vdescription +p233 +g190 +NVcloud-amd64 +p234 +tp235 +(dp236 +Vhardware +p237 +Vx86-64 cloud +p238 +sVhardware-long +p239 +VAmazon EC2, Google Compute Engine and Microsoft Azure cloud platforms +p240 +ss(Vbase +p241 +g190 +Vnone +p242 +tp243 +(dp244 +Vflavours +p245 +(lp246 +Vamd64 +p247 +aVcloud-amd64 +p248 +ass(Vbase +p249 +g190 +Vrt +p250 +tp251 +(dp252 +Vflavours +p253 +(lp254 +Vamd64 +p255 +ass(Vbase +p256 +Varm64 +p257 +tp258 +(dp259 +Vkernel-arch +p260 +Varm64 +p261 +sVfeaturesets +p262 +(lp263 +Vnone +p264 +ass(Vbuild +p265 +g257 +tp266 +(dp267 +Vdebug-info +p268 +I01 +sVimage-file +p269 +Varch/arm64/boot/Image +p270 +sVvdso +p271 +I01 +ss(Vimage +p272 +g257 +tp273 +(dp274 +Vinstall-stem +p275 +Vvmlinuz +p276 +sVbreaks +p277 +Vlibmozjs185-1.0, libmozjs-24-0 (<< 24.2.0-5.1~) +p278 +ss(Vdescription +p279 +g257 +NVarm64 +p280 +tp281 +(dp282 +Vhardware +p283 +V64-bit ARMv8 machines +p284 +ss(Vimage +p285 +g257 +NVarm64 +p286 +tp287 +(dp288 +s(Vbase +p289 +g257 +Vnone +p290 +tp291 +(dp292 +Vflavours +p293 +(lp294 +Varm64 +p295 +ass(Vbase +p296 +Varm64ilp32 +p297 +tp298 +(dp299 +Vkernel-arch +p300 +Varm64 +p301 +sVfeaturesets +p302 +(lp303 +ss(Vbase +p304 +Varmel +p305 +tp306 +(dp307 +Vflavours +p308 +(lp309 +sVkernel-arch +p310 +Varm +p311 +sVfeaturesets +p312 +(lp313 +ss(Vbuild +p314 +g305 +tp315 +(dp316 +Vimage-file +p317 +Varch/arm/boot/zImage +p318 +sVsigned-modules +p319 +I00 +sVuncompressed-image-file +p320 +Varch/arm/boot/Image +p321 +ss(Vimage +p322 +g305 +tp323 +(dp324 +Vinstall-stem +p325 +Vvmlinuz +p326 +ss(Vrelations +p327 +g305 +tp328 +(dp329 +Vheaders%gcc-7 +p330 +Vlinux-compiler-gcc-7-arm +p331 +ss(Vdescription +p332 +g305 +NVmarvell +p333 +tp334 +(dp335 +Vhardware +p336 +VMarvell Kirkwood/Orion +p337 +sVhardware-long +p338 +VMarvell Kirkwood based systems (SheevaPlug, QNAP TS-119/TS-219, etc)\u000aand Orion 5181, 5182 and 5281 based systems (QNAP TS-109/TS-209, etc) +p339 +ss(Vimage +p340 +g305 +NVmarvell +p341 +tp342 +(dp343 +Vrecommends +p344 +Vu-boot-tools +p345 +sVcheck-size +p346 +L2097080L +sVcheck-size-with-dtb +p347 +I01 +sVcheck-uncompressed-size +p348 +L7340032L +sVbreaks +p349 +Vflash-kernel (<< 3.57~) +p350 +ss(Vbase +p351 +Varmhf +p352 +tp353 +(dp354 +Vkernel-arch +p355 +Varm +p356 +sg149 +(lp357 +g151 +ass(Vbuild +p358 +g352 +tp359 +(dp360 +Vimage-file +p361 +Varch/arm/boot/zImage +p362 +sVvdso +p363 +I01 +ss(Vimage +p364 +g352 +tp365 +(dp366 +Vinstall-stem +p367 +Vvmlinuz +p368 +ss(Vrelations +p369 +g352 +tp370 +(dp371 +Vheaders%gcc-7 +p372 +Vlinux-compiler-gcc-7-arm +p373 +ss(Vdescription +p374 +g352 +NVarmmp +p375 +tp376 +(dp377 +Vhardware +p378 +VARMv7 multiplatform compatible SoCs +p379 +sVhardware-long +p380 +VARMv7 multiplatform kernel. See\u000ahttps://wiki.debian.org/DebianKernel/ARMMP for details of supported\u000aplatforms +p381 +ss(Vdescription +p382 +g352 +NVarmmp-lpae +p383 +tp384 +(dp385 +Vhardware +p386 +VARMv7 multiplatform compatible SoCs supporting LPAE +p387 +sVhardware-long +p388 +VARMv7 multiplatform kernel supporting LPAE. See\u000ahttps://wiki.debian.org/DebianKernel/ARMMP for details of supported\u000aplatforms. +p389 +ss(g181 +g352 +g151 +tp390 +(dp391 +g184 +(lp392 +Varmmp +p393 +aVarmmp-lpae +p394 +asg188 +I01 +ss(Vbase +p395 +Vhppa +p396 +tp397 +(dp398 +Vkernel-arch +p399 +Vparisc +p400 +sg149 +(lp401 +g151 +ass(Vbuild +p402 +g396 +tp403 +(dp404 +Vimage-file +p405 +Vvmlinux +p406 +sVsigned-modules +p407 +I00 +ss(Vimage +p408 +g396 +tp409 +(dp410 +Vsuggests +p411 +Vpalo +p412 +sVinstall-stem +p413 +Vvmlinux +p414 +ss(Vdescription +p415 +g396 +NVparisc +p416 +tp417 +(dp418 +Vhardware +p419 +V32-bit PA-RISC +p420 +sVhardware-long +p421 +VHP PA-RISC 32-bit systems with max 4 GB RAM +p422 +ss(Vbase +p423 +g396 +NVparisc64-smp +p424 +tp425 +(dp426 +Vcflags +p427 +V-fno-cse-follow-jumps +p428 +sVoverride-host-type +p429 +Vhppa64-linux-gnu +p430 +ss(Vdescription +p431 +g396 +NVparisc64-smp +p432 +tp433 +(dp434 +Vhardware +p435 +Vmultiprocessor 64-bit PA-RISC +p436 +sVhardware-long +p437 +VHP PA-RISC 64-bit SMP systems with support for more than 4 GB RAM +p438 +ss(Vrelations +p439 +g396 +tp440 +(dp441 +Vgcc-7 +p442 +Vgcc-7 , binutils-hppa64-linux-gnu , gcc-7-hppa64-linux-gnu , gcc-7-hppa-linux-gnu , binutils-hppa64-linux-gnu , gcc-7-hppa64-linux-gnu +p443 +ss(g181 +g396 +g151 +tp444 +(dp445 +g184 +(lp446 +Vparisc +p447 +aVparisc64-smp +p448 +asg188 +I01 +ss(Vbase +p449 +Vi386 +p450 +tp451 +(dp452 +Vfeaturesets +p453 +(lp454 +Vnone +p455 +aVrt +p456 +asVkernel-arch +p457 +Vx86 +p458 +ss(Vbuild +p459 +g450 +tp460 +(dp461 +Vimage-file +p462 +Varch/x86/boot/bzImage +p463 +sVvdso +p464 +I01 +ss(Vdescription +p465 +g450 +tp466 +(dp467 +Vpart-long-pae +p468 +VThis kernel requires PAE (Physical Address Extension).\u000aThis feature is supported by the Intel Pentium Pro/II/III/4/4M/D, Xeon,\u000aCore and Atom; AMD Geode NX, Athlon (K7), Duron, Opteron, Sempron,\u000aTurion or Phenom; Transmeta Efficeon; VIA C7; and some other processors. +p469 +ss(Vimage +p470 +g450 +tp471 +(dp472 +Vbootloaders +p473 +(lp474 +Vgrub-pc +p475 +aVextlinux +p476 +asVinstall-stem +p477 +Vvmlinuz +p478 +sVbreaks +p479 +Vxserver-xorg-input-vmmouse (<< 1:13.0.99) +p480 +ss(Vrelations +p481 +g450 +tp482 +(dp483 +Vgcc-7 +p484 +Vgcc-7 (>= 7.2.0-20~) , gcc-7-i686-linux-gnu (>= 7.2.0-20~) +p485 +sVheaders%gcc-7 +p486 +Vlinux-compiler-gcc-7-x86 (>= 4.14.17-1~) +p487 +ss(Vdescription +p488 +g450 +NV686 +p489 +tp490 +(dp491 +Vhardware +p492 +Volder PCs +p493 +sVhardware-long +p494 +VPCs with one or more processors not supporting PAE +p495 +ss(Vbuild +p496 +g450 +NV686-pae +p497 +tp498 +(dp499 +Vdebug-info +p500 +I01 +ss(Vdescription +p501 +g450 +NV686-pae +p502 +tp503 +(dp504 +Vhardware +p505 +Vmodern PCs +p506 +sVhardware-long +p507 +VPCs with one or more processors supporting PAE +p508 +sVparts +p509 +(lp510 +Vpae +p511 +ass(Vbase +p512 +g450 +Vnone +p513 +tp514 +(dp515 +Vflavours +p516 +(lp517 +V686 +p518 +aV686-pae +p519 +ass(Vbase +p520 +g450 +Vrt +p521 +tp522 +(dp523 +Vflavours +p524 +(lp525 +V686-pae +p526 +ass(Vbase +p527 +Vm68k +p528 +tp529 +(dp530 +Vcflags +p531 +V-ffreestanding +p532 +sVkernel-arch +p533 +Vm68k +p534 +sg149 +(lp535 +g151 +ass(Vbuild +p536 +g528 +tp537 +(dp538 +Vimage-file +p539 +Vvmlinux +p540 +sVsigned-modules +p541 +I00 +ss(Vimage +p542 +g528 +tp543 +(dp544 +Vsuggests +p545 +Vvmelilo, fdutils +p546 +sVinstall-stem +p547 +Vvmlinux +p548 +ss(Vdescription +p549 +g528 +NVm68k +p550 +tp551 +(dp552 +Vhardware +p553 +VMotorola MC68020+ family +p554 +ss(g181 +g528 +g151 +tp555 +(dp556 +g184 +(lp557 +Vm68k +p558 +asg188 +I01 +ss(Vbase +p559 +Vmips +p560 +tp561 +(dp562 +Vkernel-arch +p563 +Vmips +p564 +sg149 +(lp565 +g151 +ass(Vbuild +p566 +g560 +tp567 +(dp568 +Vimage-file +p569 +Vvmlinux +p570 +sVsigned-modules +p571 +I00 +ss(Vimage +p572 +g560 +tp573 +(dp574 +Vinstall-stem +p575 +Vvmlinux +p576 +ss(Vdescription +p577 +g560 +NV4kc-malta +p578 +tp579 +(dp580 +Vhardware +p581 +VMIPS Malta +p582 +sVhardware-long +p583 +VMIPS Malta boards +p584 +ss(Vimage +p585 +g560 +NV4kc-malta +p586 +tp587 +(dp588 +Vconfigs +p589 +(lp590 +Vkernelarch-mips/config.malta +p591 +aVkernelarch-mips/config.mips32r2 +p592 +ass(Vdescription +p593 +g560 +NV5kc-malta +p594 +tp595 +(dp596 +Vhardware +p597 +VMIPS Malta (64-bit) +p598 +sVhardware-long +p599 +VMIPS Malta boards (64-bit) +p600 +ss(Vimage +p601 +g560 +NV5kc-malta +p602 +tp603 +(dp604 +Vconfigs +p605 +(lp606 +Vkernelarch-mips/config.malta +p607 +aVkernelarch-mips/config.mips64r2 +p608 +ass(Vdescription +p609 +g560 +NVocteon +p610 +tp611 +(dp612 +Vhardware +p613 +VOcteon +p614 +sVhardware-long +p615 +VCavium Networks Octeon +p616 +ss(Vimage +p617 +g560 +NVocteon +p618 +tp619 +(dp620 +Vconfigs +p621 +(lp622 +Vkernelarch-mips/config.octeon +p623 +ass(g181 +g560 +g151 +tp624 +(dp625 +g184 +(lp626 +V4kc-malta +p627 +aV5kc-malta +p628 +aVocteon +p629 +asg188 +I01 +ss(Vbase +p630 +Vmips64 +p631 +tp632 +(dp633 +Vkernel-arch +p634 +Vmips +p635 +sg149 +(lp636 +g151 +ass(Vbuild +p637 +g631 +tp638 +(dp639 +Vimage-file +p640 +Vvmlinux +p641 +sVsigned-modules +p642 +I00 +ss(Vimage +p643 +g631 +tp644 +(dp645 +Vinstall-stem +p646 +Vvmlinux +p647 +ss(Vdescription +p648 +g631 +NV5kc-malta +p649 +tp650 +(dp651 +Vhardware +p652 +VMIPS Malta +p653 +sVhardware-long +p654 +VMIPS Malta boards +p655 +ss(Vimage +p656 +g631 +NV5kc-malta +p657 +tp658 +(dp659 +Vconfigs +p660 +(lp661 +Vkernelarch-mips/config.malta +p662 +aVkernelarch-mips/config.mips64r2 +p663 +ass(Vdescription +p664 +g631 +NVocteon +p665 +tp666 +(dp667 +Vhardware +p668 +VOcteon +p669 +sVhardware-long +p670 +VCavium Networks Octeon +p671 +ss(Vimage +p672 +g631 +NVocteon +p673 +tp674 +(dp675 +Vconfigs +p676 +(lp677 +Vkernelarch-mips/config.octeon +p678 +ass(g181 +g631 +g151 +tp679 +(dp680 +g184 +(lp681 +V5kc-malta +p682 +aVocteon +p683 +asg188 +I01 +ss(Vbase +p684 +Vmips64el +p685 +tp686 +(dp687 +Vkernel-arch +p688 +Vmips +p689 +sg149 +(lp690 +g151 +ass(Vbuild +p691 +g685 +tp692 +(dp693 +Vimage-file +p694 +Vvmlinux +p695 +sVsigned-modules +p696 +I00 +ss(Vimage +p697 +g685 +tp698 +(dp699 +Vinstall-stem +p700 +Vvmlinux +p701 +ss(Vdescription +p702 +g685 +NV5kc-malta +p703 +tp704 +(dp705 +Vhardware +p706 +VMIPS Malta +p707 +sVhardware-long +p708 +VMIPS Malta boards +p709 +ss(Vimage +p710 +g685 +NV5kc-malta +p711 +tp712 +(dp713 +Vconfigs +p714 +(lp715 +Vkernelarch-mips/config.malta +p716 +aVkernelarch-mips/config.mips64r2 +p717 +ass(Vdescription +p718 +g685 +NVloongson-3 +p719 +tp720 +(dp721 +Vhardware +p722 +VLoongson 3A/3B +p723 +sVhardware-long +p724 +VLoongson 3A or 3B based systems (e.g. from Loongson or Lemote) +p725 +ss(Vimage +p726 +g685 +NVloongson-3 +p727 +tp728 +(dp729 +Vconfigs +p730 +(lp731 +Vkernelarch-mips/config.loongson-3 +p732 +ass(Vdescription +p733 +g685 +NVocteon +p734 +tp735 +(dp736 +Vhardware +p737 +VOcteon +p738 +sVhardware-long +p739 +VCavium Networks Octeon +p740 +ss(Vimage +p741 +g685 +NVocteon +p742 +tp743 +(dp744 +Vconfigs +p745 +(lp746 +Vkernelarch-mips/config.octeon +p747 +ass(g181 +g685 +g151 +tp748 +(dp749 +g184 +(lp750 +V5kc-malta +p751 +aVloongson-3 +p752 +aVocteon +p753 +asg188 +I01 +ss(Vbase +p754 +Vmips64r6 +p755 +tp756 +(dp757 +Vkernel-arch +p758 +Vmips +p759 +sg149 +(lp760 +g151 +ass(Vbuild +p761 +g755 +tp762 +(dp763 +Vimage-file +p764 +Vvmlinux +p765 +sVsigned-modules +p766 +I00 +ss(Vimage +p767 +g755 +tp768 +(dp769 +Vinstall-stem +p770 +Vvmlinux +p771 +ss(Vdescription +p772 +g755 +NVmips64r6 +p773 +tp774 +(dp775 +Vhardware +p776 +VMIPS R6 (64 bit, big endian) +p777 +sVhardware-long +p778 +VMIPS R6 (64 bit, big endian) +p779 +ss(Vimage +p780 +g755 +NVmips64r6 +p781 +tp782 +(dp783 +Vconfigs +p784 +(lp785 +Vkernelarch-mips/config.malta +p786 +aVkernelarch-mips/config.mips64r6 +p787 +ass(g181 +g755 +g151 +tp788 +(dp789 +g184 +(lp790 +Vmips64r6 +p791 +asg188 +I01 +ss(Vbase +p792 +Vmips64r6el +p793 +tp794 +(dp795 +Vkernel-arch +p796 +Vmips +p797 +sg149 +(lp798 +g151 +ass(Vbuild +p799 +g793 +tp800 +(dp801 +Vimage-file +p802 +Vvmlinux +p803 +sVsigned-modules +p804 +I00 +ss(Vimage +p805 +g793 +tp806 +(dp807 +Vinstall-stem +p808 +Vvmlinux +p809 +ss(Vdescription +p810 +g793 +NVmips64r6el +p811 +tp812 +(dp813 +Vhardware +p814 +VMIPS R6 (64 bit, little endian) +p815 +sVhardware-long +p816 +VMIPS R6 (64 bit, little endian) +p817 +ss(Vimage +p818 +g793 +NVmips64r6el +p819 +tp820 +(dp821 +Vconfigs +p822 +(lp823 +Vkernelarch-mips/config.malta +p824 +aVkernelarch-mips/config.mips64r6 +p825 +ass(g181 +g793 +g151 +tp826 +(dp827 +g184 +(lp828 +Vmips64r6el +p829 +asg188 +I01 +ss(Vbase +p830 +Vmipsel +p831 +tp832 +(dp833 +Vkernel-arch +p834 +Vmips +p835 +sg149 +(lp836 +g151 +ass(Vbuild +p837 +g831 +tp838 +(dp839 +Vimage-file +p840 +Vvmlinux +p841 +sVsigned-modules +p842 +I00 +ss(Vimage +p843 +g831 +tp844 +(dp845 +Vinstall-stem +p846 +Vvmlinux +p847 +ss(Vdescription +p848 +g831 +NV4kc-malta +p849 +tp850 +(dp851 +Vhardware +p852 +VMIPS Malta +p853 +sVhardware-long +p854 +VMIPS Malta boards +p855 +ss(Vimage +p856 +g831 +NV4kc-malta +p857 +tp858 +(dp859 +Vconfigs +p860 +(lp861 +Vkernelarch-mips/config.malta +p862 +aVkernelarch-mips/config.mips32r2 +p863 +ass(Vdescription +p864 +g831 +NV5kc-malta +p865 +tp866 +(dp867 +Vhardware +p868 +VMIPS Malta (64-bit) +p869 +sVhardware-long +p870 +VMIPS Malta boards (64-bit) +p871 +ss(Vimage +p872 +g831 +NV5kc-malta +p873 +tp874 +(dp875 +Vconfigs +p876 +(lp877 +Vkernelarch-mips/config.malta +p878 +aVkernelarch-mips/config.mips64r2 +p879 +ass(Vdescription +p880 +g831 +NVloongson-3 +p881 +tp882 +(dp883 +Vhardware +p884 +VLoongson 3A/3B +p885 +sVhardware-long +p886 +VLoongson 3A or 3B based systems (e.g. from Loongson or Lemote) +p887 +ss(Vimage +p888 +g831 +NVloongson-3 +p889 +tp890 +(dp891 +Vconfigs +p892 +(lp893 +Vkernelarch-mips/config.loongson-3 +p894 +ass(Vdescription +p895 +g831 +NVocteon +p896 +tp897 +(dp898 +Vhardware +p899 +VOcteon +p900 +sVhardware-long +p901 +VCavium Networks Octeon +p902 +ss(Vimage +p903 +g831 +NVocteon +p904 +tp905 +(dp906 +Vconfigs +p907 +(lp908 +Vkernelarch-mips/config.octeon +p909 +ass(g181 +g831 +g151 +tp910 +(dp911 +g184 +(lp912 +V4kc-malta +p913 +aV5kc-malta +p914 +aVloongson-3 +p915 +aVocteon +p916 +asg188 +I01 +ss(Vbase +p917 +Vmipsn32 +p918 +tp919 +(dp920 +Vkernel-arch +p921 +Vmips +p922 +sVfeaturesets +p923 +(lp924 +ss(Vbase +p925 +Vmipsn32el +p926 +tp927 +(dp928 +Vkernel-arch +p929 +Vmips +p930 +sVfeaturesets +p931 +(lp932 +ss(Vbase +p933 +Vmipsn32r6 +p934 +tp935 +(dp936 +Vkernel-arch +p937 +Vmips +p938 +sVfeaturesets +p939 +(lp940 +ss(Vbase +p941 +Vmipsn32r6el +p942 +tp943 +(dp944 +Vkernel-arch +p945 +Vmips +p946 +sVfeaturesets +p947 +(lp948 +ss(Vbase +p949 +Vmipsr6 +p950 +tp951 +(dp952 +Vkernel-arch +p953 +Vmips +p954 +sg149 +(lp955 +g151 +ass(Vbuild +p956 +g950 +tp957 +(dp958 +Vimage-file +p959 +Vvmlinux +p960 +sVsigned-modules +p961 +I00 +ss(Vimage +p962 +g950 +tp963 +(dp964 +Vinstall-stem +p965 +Vvmlinux +p966 +ss(Vdescription +p967 +g950 +NVmips32r6 +p968 +tp969 +(dp970 +Vhardware +p971 +VMIPS R6 (32 bit, big endian) +p972 +sVhardware-long +p973 +VMIPS R6 (32 bit, big endian) +p974 +ss(Vimage +p975 +g950 +NVmips32r6 +p976 +tp977 +(dp978 +Vconfigs +p979 +(lp980 +Vkernelarch-mips/config.malta +p981 +aVkernelarch-mips/config.mips32r6 +p982 +ass(Vdescription +p983 +g950 +NVmips64r6 +p984 +tp985 +(dp986 +Vhardware +p987 +VMIPS R6 (64 bit, big endian) +p988 +sVhardware-long +p989 +VMIPS R6 (64 bit, big endian) +p990 +ss(Vimage +p991 +g950 +NVmips64r6 +p992 +tp993 +(dp994 +Vconfigs +p995 +(lp996 +Vkernelarch-mips/config.malta +p997 +aVkernelarch-mips/config.mips64r6 +p998 +ass(g181 +g950 +g151 +tp999 +(dp1000 +g184 +(lp1001 +Vmips32r6 +p1002 +aVmips64r6 +p1003 +asg188 +I01 +ss(Vbase +p1004 +Vmipsr6el +p1005 +tp1006 +(dp1007 +Vkernel-arch +p1008 +Vmips +p1009 +sg149 +(lp1010 +g151 +ass(Vbuild +p1011 +g1005 +tp1012 +(dp1013 +Vimage-file +p1014 +Vvmlinux +p1015 +sVsigned-modules +p1016 +I00 +ss(Vimage +p1017 +g1005 +tp1018 +(dp1019 +Vinstall-stem +p1020 +Vvmlinux +p1021 +ss(Vdescription +p1022 +g1005 +NVmips32r6el +p1023 +tp1024 +(dp1025 +Vhardware +p1026 +VMIPS R6 (32 bit, little endian) +p1027 +sVhardware-long +p1028 +VMIPS R6 (32 bit, little endian) +p1029 +ss(Vimage +p1030 +g1005 +NVmips32r6el +p1031 +tp1032 +(dp1033 +Vconfigs +p1034 +(lp1035 +Vkernelarch-mips/config.malta +p1036 +aVkernelarch-mips/config.mips32r6 +p1037 +ass(Vdescription +p1038 +g1005 +NVmips64r6el +p1039 +tp1040 +(dp1041 +Vhardware +p1042 +VMIPS R6 (64 bit, little endian) +p1043 +sVhardware-long +p1044 +VMIPS R6 (64 bit, little endian) +p1045 +ss(Vimage +p1046 +g1005 +NVmips64r6el +p1047 +tp1048 +(dp1049 +Vconfigs +p1050 +(lp1051 +Vkernelarch-mips/config.malta +p1052 +aVkernelarch-mips/config.mips64r6 +p1053 +ass(g181 +g1005 +g151 +tp1054 +(dp1055 +g184 +(lp1056 +Vmips32r6el +p1057 +aVmips64r6el +p1058 +asg188 +I01 +ss(Vbase +p1059 +Vpowerpc +p1060 +tp1061 +(dp1062 +Vkernel-arch +p1063 +Vpowerpc +p1064 +sg149 +(lp1065 +g151 +ass(Vbuild +p1066 +g1060 +tp1067 +(dp1068 +Vimage-file +p1069 +Vvmlinux +p1070 +sVvdso +p1071 +I01 +ss(Vimage +p1072 +g1060 +tp1073 +(dp1074 +Vconfigs +p1075 +(lp1076 +sVsuggests +p1077 +Vmkvmlinuz +p1078 +sVinstall-stem +p1079 +Vvmlinux +p1080 +ss(Vdescription +p1081 +g1060 +NVpowerpc +p1082 +tp1083 +(dp1084 +Vhardware +p1085 +Vuniprocessor 32-bit PowerPC +p1086 +ss(Vdescription +p1087 +g1060 +NVpowerpc-smp +p1088 +tp1089 +(dp1090 +Vhardware +p1091 +Vmultiprocessor 32-bit PowerPC +p1092 +ss(Vimage +p1093 +g1060 +NVpowerpc-smp +p1094 +tp1095 +(dp1096 +Vconfigs +p1097 +(lp1098 +Vpowerpc/config.powerpc +p1099 +aVpowerpc/config.powerpc-smp +p1100 +ass(Vdescription +p1101 +g1060 +NVpowerpc64 +p1102 +tp1103 +(dp1104 +Vhardware +p1105 +V64-bit PowerPC +p1106 +ss(Vimage +p1107 +g1060 +NVpowerpc64 +p1108 +tp1109 +(dp1110 +Vconfigs +p1111 +(lp1112 +Vkernelarch-powerpc/config-arch-64 +p1113 +aVkernelarch-powerpc/config-arch-64-be +p1114 +ass(g181 +g1060 +g151 +tp1115 +(dp1116 +g184 +(lp1117 +Vpowerpc +p1118 +aVpowerpc-smp +p1119 +aVpowerpc64 +p1120 +asg188 +I01 +ss(Vbase +p1121 +Vpowerpcspe +p1122 +tp1123 +(dp1124 +Vkernel-arch +p1125 +Vpowerpc +p1126 +sg149 +(lp1127 +g151 +ass(Vbuild +p1128 +g1122 +tp1129 +(dp1130 +Vimage-file +p1131 +Vvmlinux +p1132 +sVsigned-modules +p1133 +I00 +sVvdso +p1134 +I01 +ss(Vimage +p1135 +g1122 +tp1136 +(dp1137 +Vsuggests +p1138 +Vmkvmlinuz +p1139 +sVinstall-stem +p1140 +Vvmlinux +p1141 +ss(Vdescription +p1142 +g1122 +tp1143 +(dp1144 +Vhardware +p1145 +V32-bit PowerPC with SPE (instead of AltiVec) with SMP support +p1146 +ss(g181 +g1122 +g151 +tp1147 +(dp1148 +g184 +(lp1149 +Vpowerpcspe +p1150 +asg188 +I01 +ss(Vbase +p1151 +Vppc64 +p1152 +tp1153 +(dp1154 +Vkernel-arch +p1155 +Vpowerpc +p1156 +sg149 +(lp1157 +g151 +ass(Vbuild +p1158 +g1152 +tp1159 +(dp1160 +Vimage-file +p1161 +Vvmlinux +p1162 +sVsigned-modules +p1163 +I00 +sVvdso +p1164 +I01 +ss(Vimage +p1165 +g1152 +tp1166 +(dp1167 +Vconfigs +p1168 +(lp1169 +sVsuggests +p1170 +Vmkvmlinuz +p1171 +sVinstall-stem +p1172 +Vvmlinux +p1173 +ss(Vdescription +p1174 +g1152 +NVpowerpc64 +p1175 +tp1176 +(dp1177 +Vhardware +p1178 +V64-bit PowerPC +p1179 +ss(Vimage +p1180 +g1152 +NVpowerpc64 +p1181 +tp1182 +(dp1183 +Vconfigs +p1184 +(lp1185 +Vkernelarch-powerpc/config-arch-64 +p1186 +aVkernelarch-powerpc/config-arch-64-be +p1187 +ass(g181 +g1152 +g151 +tp1188 +(dp1189 +g184 +(lp1190 +Vpowerpc64 +p1191 +asg188 +I01 +ss(Vbase +p1192 +Vppc64el +p1193 +tp1194 +(dp1195 +Vkernel-arch +p1196 +Vpowerpc +p1197 +sg149 +(lp1198 +g151 +ass(Vbuild +p1199 +g1193 +tp1200 +(dp1201 +Vimage-file +p1202 +Vvmlinux +p1203 +sVvdso +p1204 +I01 +ss(Vimage +p1205 +g1193 +tp1206 +(dp1207 +Vconfigs +p1208 +(lp1209 +sVsuggests +p1210 +Vmkvmlinuz +p1211 +sVinstall-stem +p1212 +Vvmlinux +p1213 +ss(Vdescription +p1214 +g1193 +NVpowerpc64le +p1215 +tp1216 +(dp1217 +Vhardware +p1218 +VLittle-endian 64-bit PowerPC +p1219 +ss(Vimage +p1220 +g1193 +NVpowerpc64le +p1221 +tp1222 +(dp1223 +Vconfigs +p1224 +(lp1225 +Vkernelarch-powerpc/config-arch-64 +p1226 +aVkernelarch-powerpc/config-arch-64-le +p1227 +ass(g181 +g1193 +g151 +tp1228 +(dp1229 +g184 +(lp1230 +Vpowerpc64le +p1231 +asg188 +I01 +ss(Vbase +p1232 +Vs390 +p1233 +tp1234 +(dp1235 +Vkernel-arch +p1236 +Vs390 +p1237 +sVfeaturesets +p1238 +(lp1239 +ss(Vbase +p1240 +Vs390x +p1241 +tp1242 +(dp1243 +Vkernel-arch +p1244 +Vs390 +p1245 +sg149 +(lp1246 +g151 +ass(Vbuild +p1247 +g1241 +tp1248 +(dp1249 +Vimage-file +p1250 +Varch/s390/boot/image +p1251 +sVvdso +p1252 +I01 +ss(Vimage +p1253 +g1241 +tp1254 +(dp1255 +Vbootloaders +p1256 +(lp1257 +Vs390-tools +p1258 +asVinstall-stem +p1259 +Vvmlinuz +p1260 +ss(Vrelations +p1261 +g1241 +tp1262 +(dp1263 +Vheaders%gcc-7 +p1264 +Vlinux-compiler-gcc-7-s390 +p1265 +ss(Vbuild +p1266 +g1241 +NVs390x +p1267 +tp1268 +(dp1269 +Vdebug-info +p1270 +I01 +ss(Vdescription +p1271 +g1241 +NVs390x +p1272 +tp1273 +(dp1274 +Vhardware +p1275 +VIBM zSeries +p1276 +ss(g181 +g1241 +g151 +tp1277 +(dp1278 +g184 +(lp1279 +Vs390x +p1280 +asg188 +I01 +ss(Vbase +p1281 +Vsh3 +p1282 +tp1283 +(dp1284 +Vkernel-arch +p1285 +Vsh +p1286 +sVfeaturesets +p1287 +(lp1288 +ss(Vbase +p1289 +Vsh4 +p1290 +tp1291 +(dp1292 +Vkernel-arch +p1293 +Vsh +p1294 +sg149 +(lp1295 +g151 +ass(Vbuild +p1296 +g1290 +tp1297 +(dp1298 +Vimage-file +p1299 +Varch/sh/boot/zImage +p1300 +sVsigned-modules +p1301 +I00 +ss(Vimage +p1302 +g1290 +tp1303 +(dp1304 +Vinstall-stem +p1305 +Vvmlinuz +p1306 +ss(Vdescription +p1307 +g1290 +NVsh7751r +p1308 +tp1309 +(dp1310 +Vhardware +p1311 +Vsh7751r +p1312 +sVhardware-long +p1313 +VRenesas SH7751R R2D plus board +p1314 +ss(Vdescription +p1315 +g1290 +NVsh7785lcr +p1316 +tp1317 +(dp1318 +Vhardware +p1319 +Vsh7785lcr +p1320 +sVhardware-long +p1321 +VRenesas SH7785 reference board +p1322 +ss(Vimage +p1323 +g1290 +NVsh7785lcr +p1324 +tp1325 +(dp1326 +Vrecommends +p1327 +Vu-boot-tools +p1328 +sVcheck-size +p1329 +L4194304L +ss(g181 +g1290 +g151 +tp1330 +(dp1331 +g184 +(lp1332 +Vsh7751r +p1333 +aVsh7785lcr +p1334 +asg188 +I01 +ss(Vbase +p1335 +Vsparc +p1336 +tp1337 +(dp1338 +Vkernel-arch +p1339 +Vsparc +p1340 +sVfeaturesets +p1341 +(lp1342 +ss(Vbase +p1343 +Vsparc64 +p1344 +tp1345 +(dp1346 +Vkernel-arch +p1347 +Vsparc +p1348 +sg149 +(lp1349 +g151 +ass(Vbuild +p1350 +g1344 +tp1351 +(dp1352 +Vimage-file +p1353 +Varch/sparc/boot/zImage +p1354 +sVsigned-modules +p1355 +I00 +ss(Vimage +p1356 +g1344 +tp1357 +(dp1358 +Vconfigs +p1359 +(lp1360 +sVsuggests +p1361 +Vsilo, fdutils +p1362 +sVinstall-stem +p1363 +Vvmlinuz +p1364 +ss(Vdescription +p1365 +g1344 +NVsparc64 +p1366 +tp1367 +(dp1368 +Vhardware +p1369 +Vuniprocessor 64-bit UltraSPARC +p1370 +ss(Vimage +p1371 +g1344 +NVsparc64 +p1372 +tp1373 +(dp1374 +Vconfigs +p1375 +(lp1376 +Vkernelarch-sparc/config-up +p1377 +ass(Vdescription +p1378 +g1344 +NVsparc64-smp +p1379 +tp1380 +(dp1381 +Vhardware +p1382 +Vmultiprocessor 64-bit UltraSPARC +p1383 +ss(Vimage +p1384 +g1344 +NVsparc64-smp +p1385 +tp1386 +(dp1387 +Vconfigs +p1388 +(lp1389 +Vkernelarch-sparc/config-smp +p1390 +ass(g181 +g1344 +g151 +tp1391 +(dp1392 +g184 +(lp1393 +Vsparc64 +p1394 +aVsparc64-smp +p1395 +asg188 +I01 +ss(Vbase +p1396 +Vtilegx +p1397 +tp1398 +(dp1399 +Vkernel-arch +p1400 +Vtile +p1401 +sVfeaturesets +p1402 +(lp1403 +ss(Vbase +p1404 +Vx32 +p1405 +tp1406 +(dp1407 +Vkernel-arch +p1408 +Vx86 +p1409 +sVfeaturesets +p1410 +(lp1411 +ss(Vabi +p1412 +NVrt +p1413 +tp1414 +(dp1415 +Vignore-changes +p1416 +(lp1417 +V* +p1418 +ass(Vdescription +p1419 +Ng1413 +tp1420 +(dp1421 +Vpart-long-rt +p1422 +VThis kernel includes the PREEMPT_RT realtime patch set. +p1423 +sVpart-short-rt +p1424 +VPREEMPT_RT +p1425 +sVparts +p1426 +(lp1427 +Vrt +p1428 +ass(Vversion +p1429 +tp1430 +(dp1431 +Vsource +p1432 +V4.15.11-1 +p1433 +sVupstream +p1434 +V4.15 +p1435 +sVabiname_base +p1436 +V4.15.0 +p1437 +sVabiname +p1438 +V4.15.0-2 +p1439 +ss. \ No newline at end of file diff --git a/config/alpha/config b/config/alpha/config new file mode 100644 index 00000000000..9ef23118ba8 --- /dev/null +++ b/config/alpha/config @@ -0,0 +1,1049 @@ +## +## file: arch/alpha/Kconfig +## +## choice: Alpha system type +CONFIG_ALPHA_GENERIC=y +# CONFIG_ALPHA_ALCOR is not set +# CONFIG_ALPHA_XL is not set +# CONFIG_ALPHA_BOOK1 is not set +# CONFIG_ALPHA_AVANTI_CH is not set +# CONFIG_ALPHA_CABRIOLET is not set +# CONFIG_ALPHA_DP264 is not set +# CONFIG_ALPHA_EB164 is not set +# CONFIG_ALPHA_EB64P_CH is not set +# CONFIG_ALPHA_EB66 is not set +# CONFIG_ALPHA_EB66P is not set +# CONFIG_ALPHA_EIGER is not set +# CONFIG_ALPHA_JENSEN is not set +# CONFIG_ALPHA_LX164 is not set +# CONFIG_ALPHA_LYNX is not set +# CONFIG_ALPHA_MARVEL is not set +# CONFIG_ALPHA_MIATA is not set +# CONFIG_ALPHA_MIKASA is not set +# CONFIG_ALPHA_NAUTILUS is not set +# CONFIG_ALPHA_NONAME_CH is not set +# CONFIG_ALPHA_NORITAKE is not set +# CONFIG_ALPHA_PC164 is not set +# CONFIG_ALPHA_P2K is not set +# CONFIG_ALPHA_RAWHIDE is not set +# CONFIG_ALPHA_RUFFIAN is not set +# CONFIG_ALPHA_RX164 is not set +# CONFIG_ALPHA_SX164 is not set +# CONFIG_ALPHA_SABLE is not set +# CONFIG_ALPHA_SHARK is not set +# CONFIG_ALPHA_TAKARA is not set +# CONFIG_ALPHA_TITAN is not set +# CONFIG_ALPHA_WILDFIRE is not set +## end choice +# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set +# CONFIG_VERBOSE_MCHECK is not set +CONFIG_SRM_ENV=m + +## +## file: arch/alpha/Kconfig.debug +## +CONFIG_MATHEMU=y + +## +## file: block/partitions/Kconfig +## +CONFIG_ACORN_PARTITION=y +# CONFIG_ACORN_PARTITION_CUMANA is not set +# CONFIG_ACORN_PARTITION_EESOX is not set +CONFIG_ACORN_PARTITION_ICS=y +# CONFIG_ACORN_PARTITION_ADFS is not set +# CONFIG_ACORN_PARTITION_POWERTEC is not set +CONFIG_ACORN_PARTITION_RISCIX=y +CONFIG_OSF_PARTITION=y +CONFIG_AMIGA_PARTITION=y +CONFIG_ATARI_PARTITION=y +CONFIG_MAC_PARTITION=y +CONFIG_BSD_DISKLABEL=y +CONFIG_MINIX_SUBPARTITION=y +CONFIG_SOLARIS_X86_PARTITION=y +CONFIG_UNIXWARE_DISKLABEL=y +CONFIG_LDM_PARTITION=y +# CONFIG_LDM_DEBUG is not set +CONFIG_SGI_PARTITION=y +CONFIG_ULTRIX_PARTITION=y +CONFIG_SUN_PARTITION=y + +## +## file: drivers/ata/Kconfig +## +CONFIG_PATA_ALI=m +CONFIG_PATA_AMD=m +CONFIG_PATA_CS5520=m +CONFIG_PATA_CYPRESS=m +CONFIG_PATA_EFAR=m +CONFIG_PATA_HPT366=m +CONFIG_PATA_HPT37X=m +CONFIG_PATA_NS87415=m +CONFIG_PATA_OLDPIIX=m +CONFIG_PATA_PDC2027X=m +CONFIG_PATA_PDC_OLD=m +CONFIG_PATA_SC1200=m +CONFIG_PATA_SERVERWORKS=m +CONFIG_PATA_SIL680=m +CONFIG_PATA_TRIFLEX=m +CONFIG_PATA_VIA=m +CONFIG_PATA_ISAPNP=y +CONFIG_PATA_MPIIX=m +CONFIG_PATA_OPTI=m +CONFIG_PATA_LEGACY=m + +## +## file: drivers/atm/Kconfig +## +CONFIG_ATM_DRIVERS=y +CONFIG_ATM_TCP=m +CONFIG_ATM_LANAI=m +CONFIG_ATM_ENI=m +# CONFIG_ATM_ENI_DEBUG is not set +# CONFIG_ATM_ENI_TUNE_BURST is not set +CONFIG_ATM_FIRESTREAM=m +CONFIG_ATM_ZATM=m +# CONFIG_ATM_ZATM_DEBUG is not set +CONFIG_ATM_IDT77252=m +# CONFIG_ATM_IDT77252_DEBUG is not set +# CONFIG_ATM_IDT77252_RCV_ALL is not set +CONFIG_ATM_AMBASSADOR=m +# CONFIG_ATM_AMBASSADOR_DEBUG is not set +CONFIG_ATM_HORIZON=m +# CONFIG_ATM_HORIZON_DEBUG is not set +# CONFIG_ATM_FORE200E_USE_TASKLET is not set +CONFIG_ATM_FORE200E_TX_RETRY=16 +CONFIG_ATM_FORE200E_DEBUG=0 +CONFIG_ATM_HE=m +CONFIG_ATM_HE_USE_SUNI=y + +## +## file: drivers/block/Kconfig +## +CONFIG_BLK_DEV_FD=m +CONFIG_BLK_DEV_DAC960=m +CONFIG_BLK_DEV_UMEM=m +CONFIG_BLK_DEV_SX8=m +CONFIG_CDROM_PKTCDVD=m +CONFIG_CDROM_PKTCDVD_BUFFERS=8 +CONFIG_CDROM_PKTCDVD_WCACHE=y + +## +## file: drivers/bluetooth/Kconfig +## +CONFIG_BT_HCIUART=m +CONFIG_BT_HCIUART_H4=y +CONFIG_BT_HCIUART_BCSP=y +CONFIG_BT_HCIBCM203X=m +CONFIG_BT_HCIBPA10X=m +CONFIG_BT_HCIBFUSB=m +CONFIG_BT_HCIDTL1=m +CONFIG_BT_HCIBT3C=m +CONFIG_BT_HCIBLUECARD=m +CONFIG_BT_HCIVHCI=m + +## +## file: drivers/char/Kconfig +## +CONFIG_PRINTER=m +# CONFIG_LP_CONSOLE is not set +CONFIG_PPDEV=m +CONFIG_RTC=m +CONFIG_DTLK=m +CONFIG_APPLICOM=m +CONFIG_RAW_DRIVER=m +CONFIG_MAX_RAW_DEVS=256 + +## +## file: drivers/char/agp/Kconfig +## +#. Workaround +CONFIG_AGP=y +#. Workaround +CONFIG_AGP_ALPHA_CORE=y + +## +## file: drivers/char/ipmi/Kconfig +## +CONFIG_IPMI_HANDLER=m +# CONFIG_IPMI_PANIC_EVENT is not set +CONFIG_IPMI_DEVICE_INTERFACE=m +CONFIG_IPMI_SI=m +CONFIG_IPMI_WATCHDOG=m +CONFIG_IPMI_POWEROFF=m + +## +## file: drivers/eisa/Kconfig +## +CONFIG_EISA_PCI_EISA=y +CONFIG_EISA_VIRTUAL_ROOT=y +CONFIG_EISA_NAMES=y + +## +## file: drivers/gpu/drm/Kconfig +## +CONFIG_DRM=m +CONFIG_DRM_RADEON=m +CONFIG_DRM_TDFX=m +CONFIG_DRM_R128=m +CONFIG_DRM_MGA=m +CONFIG_DRM_SIS=m + +## +## file: drivers/gpu/drm/i2c/Kconfig +## +CONFIG_DRM_I2C_CH7006=m +CONFIG_DRM_I2C_SIL164=m + +## +## file: drivers/gpu/drm/nouveau/Kconfig +## +CONFIG_DRM_NOUVEAU=m +# CONFIG_DRM_NOUVEAU_BACKLIGHT is not set + +## +## file: drivers/hid/usbhid/Kconfig +## +CONFIG_USB_HID=m + +## +## file: drivers/hwmon/Kconfig +## +CONFIG_SENSORS_ADM1021=m +CONFIG_SENSORS_ADM1025=m +CONFIG_SENSORS_ADM1026=m +CONFIG_SENSORS_ADM1031=m +CONFIG_SENSORS_ASB100=m +CONFIG_SENSORS_DS1621=m +CONFIG_SENSORS_F71805F=m +CONFIG_SENSORS_GL518SM=m +CONFIG_SENSORS_GL520SM=m +CONFIG_SENSORS_IT87=m +CONFIG_SENSORS_MAX1619=m +CONFIG_SENSORS_LM63=m +CONFIG_SENSORS_LM75=m +CONFIG_SENSORS_LM77=m +CONFIG_SENSORS_LM78=m +CONFIG_SENSORS_LM80=m +CONFIG_SENSORS_LM83=m +CONFIG_SENSORS_LM85=m +CONFIG_SENSORS_LM87=m +CONFIG_SENSORS_LM90=m +CONFIG_SENSORS_LM92=m +CONFIG_SENSORS_PC87360=m +CONFIG_SENSORS_PCF8591=m +CONFIG_SENSORS_SIS5595=m +CONFIG_SENSORS_SMSC47M1=m +CONFIG_SENSORS_SMSC47B397=m +CONFIG_SENSORS_VIA686A=m +CONFIG_SENSORS_W83781D=m +CONFIG_SENSORS_W83L785TS=m +CONFIG_SENSORS_W83627HF=m + +## +## file: drivers/i2c/Kconfig +## +CONFIG_I2C=m +CONFIG_I2C_STUB=m +# CONFIG_I2C_DEBUG_CORE is not set +# CONFIG_I2C_DEBUG_ALGO is not set +# CONFIG_I2C_DEBUG_BUS is not set + +## +## file: drivers/i2c/busses/Kconfig +## +CONFIG_I2C_ALI1535=m +CONFIG_I2C_ALI1563=m +CONFIG_I2C_ALI15X3=m +CONFIG_I2C_AMD756=m +# CONFIG_I2C_AMD756_S4882 is not set +CONFIG_I2C_AMD8111=m +CONFIG_I2C_I801=m +CONFIG_I2C_PIIX4=m +CONFIG_I2C_NFORCE2=m +CONFIG_I2C_SIS5595=m +CONFIG_I2C_SIS630=m +CONFIG_I2C_SIS96X=m +CONFIG_I2C_VIA=m +CONFIG_I2C_VIAPRO=m +CONFIG_I2C_PARPORT=m +CONFIG_I2C_PARPORT_LIGHT=m +CONFIG_I2C_ELEKTOR=m +CONFIG_I2C_PCA_ISA=m +CONFIG_SCx200_ACB=m + +## +## file: drivers/input/gameport/Kconfig +## +CONFIG_GAMEPORT=m +CONFIG_GAMEPORT_NS558=m +CONFIG_GAMEPORT_L4=m +CONFIG_GAMEPORT_EMU10K1=m +CONFIG_GAMEPORT_FM801=m + +## +## file: drivers/input/joystick/Kconfig +## +CONFIG_INPUT_JOYSTICK=y + +## +## file: drivers/input/keyboard/Kconfig +## +CONFIG_INPUT_KEYBOARD=y +CONFIG_KEYBOARD_ATKBD=y +CONFIG_KEYBOARD_LKKBD=m +CONFIG_KEYBOARD_NEWTON=m +CONFIG_KEYBOARD_SUNKBD=m +CONFIG_KEYBOARD_XTKBD=m + +## +## file: drivers/input/misc/Kconfig +## +CONFIG_INPUT_MISC=y +CONFIG_INPUT_PCSPKR=m +CONFIG_INPUT_UINPUT=m + +## +## file: drivers/input/mouse/Kconfig +## +CONFIG_INPUT_MOUSE=y +CONFIG_MOUSE_PS2=m +CONFIG_MOUSE_SERIAL=m +CONFIG_MOUSE_INPORT=m +# CONFIG_MOUSE_ATIXL is not set +CONFIG_MOUSE_LOGIBM=m +CONFIG_MOUSE_PC110PAD=m +CONFIG_MOUSE_VSXXXAA=m + +## +## file: drivers/input/serio/Kconfig +## +CONFIG_SERIO=y +CONFIG_SERIO_I8042=y +CONFIG_SERIO_SERPORT=m +CONFIG_SERIO_PARKBD=m +CONFIG_SERIO_PCIPS2=m +CONFIG_SERIO_LIBPS2=y +CONFIG_SERIO_RAW=m + +## +## file: drivers/input/touchscreen/Kconfig +## +CONFIG_INPUT_TOUCHSCREEN=y + +## +## file: drivers/isdn/Kconfig +## +CONFIG_ISDN=y +CONFIG_ISDN_CAPI=m + +## +## file: drivers/isdn/capi/Kconfig +## +CONFIG_ISDN_CAPI_CAPI20=m +CONFIG_ISDN_CAPI_MIDDLEWARE=y +CONFIG_ISDN_CAPI_CAPIDRV=m + +## +## file: drivers/isdn/hardware/avm/Kconfig +## +CONFIG_CAPI_AVM=y +CONFIG_ISDN_DRV_AVMB1_B1ISA=m +CONFIG_ISDN_DRV_AVMB1_B1PCI=m +CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y +CONFIG_ISDN_DRV_AVMB1_T1ISA=m +CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m +CONFIG_ISDN_DRV_AVMB1_AVM_CS=m +CONFIG_ISDN_DRV_AVMB1_T1PCI=m +CONFIG_ISDN_DRV_AVMB1_C4=m + +## +## file: drivers/isdn/hardware/eicon/Kconfig +## +CONFIG_CAPI_EICON=y +CONFIG_ISDN_DIVAS=m +CONFIG_ISDN_DIVAS_BRIPCI=y +CONFIG_ISDN_DIVAS_PRIPCI=y +CONFIG_ISDN_DIVAS_DIVACAPI=m +CONFIG_ISDN_DIVAS_USERIDI=m +CONFIG_ISDN_DIVAS_MAINT=m + +## +## file: drivers/media/radio/Kconfig +## +CONFIG_USB_DSBR=m +CONFIG_RADIO_MAXIRADIO=m +CONFIG_V4L_RADIO_ISA_DRIVERS=y +CONFIG_RADIO_CADET=m +CONFIG_RADIO_RTRACK=m +CONFIG_RADIO_RTRACK2=m +CONFIG_RADIO_AZTECH=m +CONFIG_RADIO_GEMTEK=m +CONFIG_RADIO_SF16FMI=m +CONFIG_RADIO_SF16FMR2=m +CONFIG_RADIO_TERRATEC=m +CONFIG_RADIO_TRUST=m +CONFIG_RADIO_TYPHOON=m +CONFIG_RADIO_ZOLTRIX=m + +## +## file: drivers/mmc/Kconfig +## +CONFIG_MMC=m + +## +## file: drivers/mmc/core/Kconfig +## +CONFIG_MMC_BLOCK=m + +## +## file: drivers/mmc/host/Kconfig +## +# CONFIG_MMC_DEBUG is not set + +## +## file: drivers/mtd/Kconfig +## +CONFIG_MTD_REDBOOT_PARTS=y +CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1 +CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED=y +CONFIG_MTD_REDBOOT_PARTS_READONLY=y +CONFIG_MTD_CMDLINE_PARTS=y +CONFIG_FTL=m +CONFIG_NFTL=m +CONFIG_NFTL_RW=y +CONFIG_INFTL=m + +## +## file: drivers/mtd/chips/Kconfig +## +CONFIG_MTD_CFI=m +CONFIG_MTD_JEDECPROBE=m +CONFIG_MTD_CFI_ADV_OPTIONS=y +## choice: Flash cmd/query data swapping +# CONFIG_MTD_CFI_NOSWAP is not set +CONFIG_MTD_CFI_BE_BYTE_SWAP=y +# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set +## end choice +CONFIG_MTD_CFI_GEOMETRY=y +CONFIG_MTD_MAP_BANK_WIDTH_1=y +CONFIG_MTD_MAP_BANK_WIDTH_2=y +CONFIG_MTD_MAP_BANK_WIDTH_4=y +CONFIG_MTD_MAP_BANK_WIDTH_8=y +CONFIG_MTD_MAP_BANK_WIDTH_16=y +CONFIG_MTD_MAP_BANK_WIDTH_32=y +CONFIG_MTD_CFI_I1=y +CONFIG_MTD_CFI_I2=y +CONFIG_MTD_CFI_I4=y +CONFIG_MTD_CFI_I8=y +# CONFIG_MTD_OTP is not set +CONFIG_MTD_CFI_INTELEXT=m +CONFIG_MTD_CFI_AMDSTD=m +CONFIG_MTD_CFI_STAA=m +CONFIG_MTD_RAM=m +CONFIG_MTD_ROM=m +CONFIG_MTD_ABSENT=m +CONFIG_MTD_XIP=y + +## +## file: drivers/mtd/devices/Kconfig +## +CONFIG_MTD_PMC551=m +# CONFIG_MTD_PMC551_BUGFIX is not set +# CONFIG_MTD_PMC551_DEBUG is not set +CONFIG_MTD_SLRAM=m +CONFIG_MTD_PHRAM=m +CONFIG_MTD_MTDRAM=m +CONFIG_MTDRAM_TOTAL_SIZE=4096 +CONFIG_MTDRAM_ERASE_SIZE=128 +CONFIG_MTD_BLOCK2MTD=m + +## +## file: drivers/mtd/maps/Kconfig +## +CONFIG_MTD_COMPLEX_MAPPINGS=y +CONFIG_MTD_PHYSMAP=m +CONFIG_MTD_PHYSMAP_START=0x8000000 +CONFIG_MTD_PHYSMAP_LEN=0x4000000 +CONFIG_MTD_PHYSMAP_BANKWIDTH=2 +CONFIG_MTD_PCI=m + +## +## file: drivers/mtd/nand/Kconfig +## +CONFIG_MTD_NAND=m +# CONFIG_MTD_NAND_DISKONCHIP is not set + +## +## file: drivers/net/Kconfig +## +CONFIG_NET_FC=y +CONFIG_NET_SB1000=m + +## +## file: drivers/net/arcnet/Kconfig +## +CONFIG_ARCNET=m +CONFIG_ARCNET_1201=m +CONFIG_ARCNET_1051=m +CONFIG_ARCNET_RAW=m +CONFIG_ARCNET_CAP=m +CONFIG_ARCNET_COM90xx=m +CONFIG_ARCNET_COM90xxIO=m +CONFIG_ARCNET_RIM_I=m +CONFIG_ARCNET_COM20020=m +CONFIG_ARCNET_COM20020_ISA=m +CONFIG_ARCNET_COM20020_PCI=m +CONFIG_ARCNET_COM20020_CS=m + +## +## file: drivers/net/ethernet/Kconfig +## +CONFIG_FEALNX=m + +## +## file: drivers/net/ethernet/3com/Kconfig +## +CONFIG_NET_VENDOR_3COM=y +CONFIG_EL3=m +CONFIG_3C515=m +CONFIG_PCMCIA_3C574=m +CONFIG_PCMCIA_3C589=m +CONFIG_VORTEX=m +CONFIG_TYPHOON=m + +## +## file: drivers/net/ethernet/8390/Kconfig +## +CONFIG_PCMCIA_AXNET=m +CONFIG_NE2000=m +CONFIG_NE2K_PCI=m +CONFIG_PCMCIA_PCNET=m +CONFIG_ULTRA=m +CONFIG_WD80x3=m + +## +## file: drivers/net/ethernet/adaptec/Kconfig +## +CONFIG_ADAPTEC_STARFIRE=m + +## +## file: drivers/net/ethernet/amd/Kconfig +## +CONFIG_AMD8111_ETH=m +CONFIG_LANCE=m +CONFIG_PCMCIA_NMCLAN=m +CONFIG_NI65=m + +## +## file: drivers/net/ethernet/broadcom/Kconfig +## +CONFIG_B44=m + +## +## file: drivers/net/ethernet/cirrus/Kconfig +## +CONFIG_CS89x0=m + +## +## file: drivers/net/ethernet/dec/tulip/Kconfig +## +CONFIG_NET_TULIP=y +CONFIG_DE2104X=m +CONFIG_TULIP=m +# CONFIG_TULIP_MWI is not set +# CONFIG_TULIP_MMIO is not set +CONFIG_DE4X5=m +CONFIG_WINBOND_840=m +CONFIG_DM9102=m +CONFIG_PCMCIA_XIRCOM=m + +## +## file: drivers/net/ethernet/dlink/Kconfig +## +CONFIG_SUNDANCE=m +# CONFIG_SUNDANCE_MMIO is not set + +## +## file: drivers/net/ethernet/fujitsu/Kconfig +## +CONFIG_PCMCIA_FMVJ18X=m + +## +## file: drivers/net/ethernet/hp/Kconfig +## +CONFIG_HP100=m + +## +## file: drivers/net/ethernet/intel/Kconfig +## +CONFIG_E100=m + +## +## file: drivers/net/ethernet/natsemi/Kconfig +## +CONFIG_NATSEMI=m + +## +## file: drivers/net/ethernet/nvidia/Kconfig +## +CONFIG_FORCEDETH=m + +## +## file: drivers/net/ethernet/realtek/Kconfig +## +CONFIG_8139CP=m +CONFIG_8139TOO=m + +## +## file: drivers/net/ethernet/sis/Kconfig +## +CONFIG_SIS900=m + +## +## file: drivers/net/ethernet/smsc/Kconfig +## +CONFIG_SMC9194=m +CONFIG_PCMCIA_SMC91C92=m +CONFIG_EPIC100=m + +## +## file: drivers/net/ethernet/sun/Kconfig +## +CONFIG_HAPPYMEAL=m +CONFIG_SUNGEM=m + +## +## file: drivers/net/ethernet/via/Kconfig +## +CONFIG_VIA_RHINE=m +# CONFIG_VIA_RHINE_MMIO is not set + +## +## file: drivers/net/ethernet/xircom/Kconfig +## +CONFIG_PCMCIA_XIRC2PS=m + +## +## file: drivers/net/fddi/Kconfig +## +CONFIG_FDDI=y +CONFIG_SKFP=m + +## +## file: drivers/net/hamradio/Kconfig +## +CONFIG_DMASCC=m +CONFIG_SCC=m +# CONFIG_SCC_DELAY is not set +# CONFIG_SCC_TRXECHO is not set + +## +## file: drivers/net/hippi/Kconfig +## +CONFIG_HIPPI=y +CONFIG_ROADRUNNER=m +# CONFIG_ROADRUNNER_LARGE_RINGS is not set + +## +## file: drivers/net/plip/Kconfig +## +CONFIG_PLIP=m + +## +## file: drivers/net/wan/Kconfig +## +CONFIG_WAN=y +CONFIG_HOSTESS_SV11=m +CONFIG_COSA=m +CONFIG_LANMEDIA=m +CONFIG_SEALEVEL_4021=m +CONFIG_PCI200SYN=m +CONFIG_WANXL=m +CONFIG_N2=m +CONFIG_C101=m +CONFIG_FARSYNC=m +CONFIG_DSCC4=m +CONFIG_DSCC4_PCISYNC=y +CONFIG_DSCC4_PCI_RST=y +CONFIG_DLCI=m +CONFIG_DLCI_MAX=8 +CONFIG_SDLA=m + +## +## file: drivers/net/wireless/Kconfig +## +CONFIG_PCMCIA_RAYCS=m +CONFIG_PCMCIA_WL3501=m + +## +## file: drivers/net/wireless/atmel/Kconfig +## +CONFIG_ATMEL=m +CONFIG_PCI_ATMEL=m +CONFIG_PCMCIA_ATMEL=m + +## +## file: drivers/net/wireless/cisco/Kconfig +## +CONFIG_AIRO_CS=m + +## +## file: drivers/net/wireless/intel/ipw2x00/Kconfig +## +# CONFIG_IPW2100 is not set + +## +## file: drivers/net/wireless/intersil/orinoco/Kconfig +## +CONFIG_HERMES=m +CONFIG_PLX_HERMES=m +CONFIG_TMD_HERMES=m +CONFIG_PCI_HERMES=m +CONFIG_PCMCIA_HERMES=m + +## +## file: drivers/net/wireless/marvell/mwifiex/Kconfig +## +CONFIG_MWIFIEX=m +CONFIG_MWIFIEX_SDIO=m + +## +## file: drivers/net/wireless/zydas/Kconfig +## +CONFIG_USB_ZD1201=m + +## +## file: drivers/pcmcia/Kconfig +## +CONFIG_PCCARD=m +CONFIG_PCMCIA=m +CONFIG_CARDBUS=y +CONFIG_YENTA=m +CONFIG_PD6729=m +CONFIG_I82092=m +CONFIG_I82365=m +CONFIG_TCIC=m +CONFIG_PCMCIA_DEBUG=y + +## +## file: drivers/pnp/Kconfig +## +CONFIG_PNP=y + +## +## file: drivers/pnp/isapnp/Kconfig +## +CONFIG_ISAPNP=y + +## +## file: drivers/rtc/Kconfig +## +CONFIG_RTC_CLASS=y +CONFIG_RTC_DRV_ALPHA=y + +## +## file: drivers/scsi/Kconfig +## +CONFIG_SCSI_ARCMSR=m +CONFIG_SCSI_BUSLOGIC=m +CONFIG_SCSI_DMX3191D=m +CONFIG_SCSI_EATA=m +CONFIG_SCSI_EATA_TAGGED_QUEUE=y +CONFIG_SCSI_EATA_LINKED_COMMANDS=y +CONFIG_SCSI_EATA_MAX_TAGS=16 +CONFIG_SCSI_FUTURE_DOMAIN=m +CONFIG_SCSI_GDTH=m +CONFIG_SCSI_GENERIC_NCR5380=m +CONFIG_SCSI_IPS=m +CONFIG_SCSI_INITIO=m +CONFIG_SCSI_INIA100=m +CONFIG_SCSI_IZIP_EPP16=y +CONFIG_SCSI_IZIP_SLOW_CTR=y +CONFIG_SCSI_NCR53C406A=m +CONFIG_SCSI_SYM53C8XX_2=m +CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 +CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 +CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 +CONFIG_SCSI_IPR=m +CONFIG_SCSI_IPR_TRACE=y +CONFIG_SCSI_IPR_DUMP=y +CONFIG_SCSI_QLOGIC_FAS=m +CONFIG_SCSI_QLOGIC_1280=m +CONFIG_SCSI_SIM710=m +CONFIG_SCSI_SYM53C416=m +CONFIG_SCSI_DC395x=m +CONFIG_SCSI_AM53C974=m +CONFIG_SCSI_DEBUG=m + +## +## file: drivers/scsi/aic7xxx/Kconfig.aic7xxx +## +CONFIG_AIC7XXX_CMDS_PER_DEVICE=8 + +## +## file: drivers/scsi/megaraid/Kconfig.megaraid +## +CONFIG_MEGARAID_NEWGEN=y +CONFIG_MEGARAID_MM=m +CONFIG_MEGARAID_MAILBOX=m +CONFIG_MEGARAID_LEGACY=m + +## +## file: drivers/scsi/pcmcia/Kconfig +## +CONFIG_PCMCIA_FDOMAIN=m +CONFIG_PCMCIA_QLOGIC=m +CONFIG_PCMCIA_SYM53C500=m + +## +## file: drivers/tty/Kconfig +## +CONFIG_VT=y +CONFIG_VT_CONSOLE=y +# CONFIG_SERIAL_NONSTANDARD is not set +CONFIG_ROCKETPORT=m +CONFIG_CYCLADES=m +# CONFIG_CYZ_INTR is not set +CONFIG_MOXA_INTELLIO=m +CONFIG_SYNCLINK=m +CONFIG_SYNCLINKMP=m +CONFIG_ISI=m +CONFIG_N_HDLC=m + +## +## file: drivers/tty/serial/Kconfig +## +CONFIG_SERIAL_JSM=m + +## +## file: drivers/tty/serial/8250/Kconfig +## +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_CS=m +CONFIG_SERIAL_8250_NR_UARTS=32 +CONFIG_SERIAL_8250_RUNTIME_UARTS=4 +CONFIG_SERIAL_8250_EXTENDED=y +CONFIG_SERIAL_8250_MANY_PORTS=y +CONFIG_SERIAL_8250_SHARE_IRQ=y +# CONFIG_SERIAL_8250_DETECT_IRQ is not set +CONFIG_SERIAL_8250_RSA=y + +## +## file: drivers/usb/Kconfig +## +CONFIG_USB=m +CONFIG_USB_USS720=m + +## +## file: drivers/usb/atm/Kconfig +## +CONFIG_USB_ATM=m +CONFIG_USB_SPEEDTOUCH=m + +## +## file: drivers/usb/host/Kconfig +## +CONFIG_USB_EHCI_HCD=m +CONFIG_USB_OHCI_HCD=m +CONFIG_USB_UHCI_HCD=m +CONFIG_USB_SL811_HCD=m +CONFIG_USB_SL811_CS=m + +## +## file: drivers/video/backlight/Kconfig +## +CONFIG_LCD_CLASS_DEVICE=m + +## +## file: drivers/video/console/Kconfig +## +CONFIG_VGA_CONSOLE=y +CONFIG_MDA_CONSOLE=m + +## +## file: drivers/video/fbdev/Kconfig +## +CONFIG_FB_MODE_HELPERS=y +CONFIG_FB_TILEBLITTING=y +CONFIG_FB_CIRRUS=m +CONFIG_FB_PM2=m +CONFIG_FB_PM2_FIFO_DISCONNECT=y +CONFIG_FB_CYBER2000=m +# CONFIG_FB_ASILIANT is not set +# CONFIG_FB_IMSTT is not set +CONFIG_FB_TGA=m +CONFIG_FB_S1D13XXX=m +CONFIG_FB_MATROX=m +CONFIG_FB_MATROX_MILLENIUM=y +CONFIG_FB_MATROX_MYSTIQUE=y +CONFIG_FB_MATROX_G=y +CONFIG_FB_MATROX_I2C=m +CONFIG_FB_MATROX_MAVEN=m +CONFIG_FB_RADEON=m +CONFIG_FB_RADEON_I2C=y +# CONFIG_FB_RADEON_DEBUG is not set +CONFIG_FB_ATY128=m +CONFIG_FB_ATY=m +CONFIG_FB_ATY_CT=y +# CONFIG_FB_ATY_GENERIC_LCD is not set +CONFIG_FB_ATY_GX=y +CONFIG_FB_SAVAGE=m +# CONFIG_FB_SAVAGE_I2C is not set +# CONFIG_FB_SAVAGE_ACCEL is not set +CONFIG_FB_SIS=m +CONFIG_FB_SIS_300=y +CONFIG_FB_SIS_315=y +CONFIG_FB_NEOMAGIC=m +CONFIG_FB_KYRO=m +CONFIG_FB_VOODOO1=m +CONFIG_FB_TRIDENT=m +CONFIG_FB_VIRTUAL=m + +## +## file: drivers/watchdog/Kconfig +## +CONFIG_PCWATCHDOG=m +CONFIG_MIXCOMWD=m +CONFIG_WDT=m +CONFIG_PCIPCWATCHDOG=m +CONFIG_WDTPCI=m +CONFIG_USBPCWATCHDOG=m + +## +## file: fs/Kconfig.binfmt +## +CONFIG_BINFMT_AOUT=m +CONFIG_OSF4_COMPAT=y +# CONFIG_BINFMT_EM86 is not set + +## +## file: init/Kconfig +## +CONFIG_USELIB=y +#. TODO +# CONFIG_AUDIT is not set +CONFIG_SYSFS_SYSCALL=y + +## +## file: lib/Kconfig +## +#. TODO +CONFIG_CRC32=m + +## +## file: net/ax25/Kconfig +## +CONFIG_HAMRADIO=y +CONFIG_AX25=m +# CONFIG_AX25_DAMA_SLAVE is not set +CONFIG_NETROM=m +CONFIG_ROSE=m + +## +## file: net/decnet/Kconfig +## +CONFIG_DECNET=m +# CONFIG_DECNET_ROUTER is not set + +## +## file: net/ipx/Kconfig +## +CONFIG_IPX=m +# CONFIG_IPX_INTERN is not set + +## +## file: net/lapb/Kconfig +## +CONFIG_LAPB=m + +## +## file: sound/drivers/Kconfig +## +CONFIG_SND_DUMMY=m +CONFIG_SND_VIRMIDI=m +CONFIG_SND_MTPAV=m +CONFIG_SND_SERIAL_U16550=m +CONFIG_SND_MPU401=m + +## +## file: sound/isa/Kconfig +## +CONFIG_SND_ADLIB=m +CONFIG_SND_AD1816A=m +CONFIG_SND_AD1848=m +CONFIG_SND_ALS100=m +CONFIG_SND_AZT2320=m +CONFIG_SND_CMI8330=m +CONFIG_SND_CS4231=m +CONFIG_SND_CS4236=m +CONFIG_SND_ES1688=m +CONFIG_SND_ES18XX=m +CONFIG_SND_GUSCLASSIC=m +CONFIG_SND_GUSEXTREME=m +CONFIG_SND_GUSMAX=m +CONFIG_SND_INTERWAVE=m +CONFIG_SND_INTERWAVE_STB=m +CONFIG_SND_OPL3SA2=m +CONFIG_SND_OPTI92X_AD1848=m +CONFIG_SND_OPTI92X_CS4231=m +CONFIG_SND_OPTI93X=m +CONFIG_SND_MIRO=m +CONFIG_SND_SB8=m +CONFIG_SND_SB16=m +CONFIG_SND_SBAWE=m +CONFIG_SND_SB16_CSP=y +CONFIG_SND_SSCAPE=m +CONFIG_SND_WAVEFRONT=m + +## +## file: sound/pci/Kconfig +## +CONFIG_SND_ALS4000=m +CONFIG_SND_ALI5451=m +CONFIG_SND_ATIIXP=m +CONFIG_SND_ATIIXP_MODEM=m +CONFIG_SND_AU8810=m +CONFIG_SND_AU8820=m +CONFIG_SND_AU8830=m +CONFIG_SND_AZT3328=m +CONFIG_SND_BT87X=m +# CONFIG_SND_BT87X_OVERCLOCK is not set +CONFIG_SND_CA0106=m +CONFIG_SND_CMIPCI=m +CONFIG_SND_CS4281=m +CONFIG_SND_CS46XX=m +CONFIG_SND_CS46XX_NEW_DSP=y +CONFIG_SND_EMU10K1=m +CONFIG_SND_EMU10K1X=m +CONFIG_SND_ENS1370=m +CONFIG_SND_ENS1371=m +CONFIG_SND_ES1938=m +CONFIG_SND_ES1968=m +CONFIG_SND_FM801=m +CONFIG_SND_FM801_TEA575X_BOOL=y +CONFIG_SND_HDSP=m +CONFIG_SND_ICE1712=m +CONFIG_SND_ICE1724=m +CONFIG_SND_INTEL8X0=m +CONFIG_SND_INTEL8X0M=m +CONFIG_SND_KORG1212=m +CONFIG_SND_MAESTRO3=m +# CONFIG_SND_MIXART is not set +CONFIG_SND_NM256=m +CONFIG_SND_RME32=m +CONFIG_SND_RME96=m +CONFIG_SND_RME9652=m +CONFIG_SND_SONICVIBES=m +CONFIG_SND_TRIDENT=m +CONFIG_SND_VIA82XX=m +CONFIG_SND_VIA82XX_MODEM=m +CONFIG_SND_VX222=m +CONFIG_SND_YMFPCI=m + +## +## file: sound/pci/hda/Kconfig +## +CONFIG_SND_HDA_INTEL=m + diff --git a/config/alpha/config.alpha-generic b/config/alpha/config.alpha-generic new file mode 100644 index 00000000000..d63bf76e64f --- /dev/null +++ b/config/alpha/config.alpha-generic @@ -0,0 +1,10 @@ +## +## file: arch/alpha/Kconfig +## +# CONFIG_SMP is not set + +## +## file: arch/alpha/Kconfig.debug +## +# CONFIG_ALPHA_LEGACY_START_ADDRESS is not set + diff --git a/config/alpha/config.alpha-smp b/config/alpha/config.alpha-smp new file mode 100644 index 00000000000..19288e39823 --- /dev/null +++ b/config/alpha/config.alpha-smp @@ -0,0 +1,16 @@ +## +## file: arch/alpha/Kconfig +## +CONFIG_SMP=y +CONFIG_NR_CPUS=64 + +## +## file: arch/alpha/Kconfig.debug +## +# CONFIG_ALPHA_LEGACY_START_ADDRESS is not set + +## +## file: drivers/scsi/Kconfig +## +CONFIG_SCSI=y + diff --git a/config/alpha/defines b/config/alpha/defines new file mode 100644 index 00000000000..386809d8dcc --- /dev/null +++ b/config/alpha/defines @@ -0,0 +1,20 @@ +[base] +flavours: alpha-generic alpha-smp +kernel-arch: alpha + +[build] +image-file: arch/alpha/boot/vmlinux.gz +# linux-signed only works for architectures in the main archive +signed-modules: false + +[image] +suggests: aboot, fdutils +install-stem: vmlinuz + +[alpha-generic_description] +hardware: Alpha +hardware-long: DEC Alpha systems with extended kernel start address (Wildfire, Titan, Marvel) + +[alpha-smp_description] +hardware: Alpha SMP +hardware-long: DEC Alpha SMP systems with extended kernel start address (Wildfire, Titan, Marvel) diff --git a/config/amd64/config b/config/amd64/config new file mode 100644 index 00000000000..17fbdf54653 --- /dev/null +++ b/config/amd64/config @@ -0,0 +1,222 @@ +## +## file: arch/x86/Kconfig +## +CONFIG_64BIT=y +CONFIG_SMP=y +CONFIG_X86_X2APIC=y +CONFIG_CALGARY_IOMMU=y +CONFIG_CALGARY_IOMMU_ENABLED_BY_DEFAULT=y +# CONFIG_MAXSMP is not set +CONFIG_NR_CPUS=512 +CONFIG_X86_16BIT=y +CONFIG_X86_VSYSCALL_EMULATION=y +CONFIG_NUMA=y +CONFIG_AMD_NUMA=y +CONFIG_X86_64_ACPI_NUMA=y +CONFIG_NUMA_EMU=y +CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS=y +CONFIG_EFI_MIXED=y +CONFIG_KEXEC_FILE=y +CONFIG_KEXEC_VERIFY_SIG=y +CONFIG_KEXEC_BZIMAGE_VERIFY_SIG=y +CONFIG_RANDOMIZE_MEMORY=y +## choice: vsyscall table for legacy applications +# CONFIG_LEGACY_VSYSCALL_NATIVE is not set +# CONFIG_LEGACY_VSYSCALL_EMULATE is not set +CONFIG_LEGACY_VSYSCALL_NONE=y +## end choice +CONFIG_PCI_MMCONFIG=y +CONFIG_ISA_DMA_API=y +CONFIG_X86_X32=y +CONFIG_X86_X32_DISABLED=y + +## +## file: arch/x86/Kconfig.cpu +## +## choice: Processor family +# CONFIG_MK8 is not set +# CONFIG_MPSC is not set +# CONFIG_MCORE2 is not set +# CONFIG_MATOM is not set +CONFIG_GENERIC_CPU=y +## end choice + +## +## file: arch/x86/xen/Kconfig +## +CONFIG_XEN_512GB=y + +## +## file: crypto/Kconfig +## +CONFIG_CRYPTO_CRCT10DIF_PCLMUL=m +CONFIG_CRYPTO_POLY1305_X86_64=m +CONFIG_CRYPTO_SHA1_SSSE3=m +CONFIG_CRYPTO_SHA256_SSSE3=m +CONFIG_CRYPTO_SHA512_SSSE3=m +CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL=m +CONFIG_CRYPTO_AES_X86_64=m +CONFIG_CRYPTO_BLOWFISH_X86_64=m +CONFIG_CRYPTO_CAMELLIA_X86_64=m +CONFIG_CRYPTO_CAMELLIA_AESNI_AVX_X86_64=m +CONFIG_CRYPTO_CAMELLIA_AESNI_AVX2_X86_64=m +CONFIG_CRYPTO_CAST5_AVX_X86_64=m +CONFIG_CRYPTO_CAST6_AVX_X86_64=m +CONFIG_CRYPTO_DES3_EDE_X86_64=m +CONFIG_CRYPTO_SALSA20_X86_64=m +CONFIG_CRYPTO_CHACHA20_X86_64=m +CONFIG_CRYPTO_SERPENT_SSE2_X86_64=m +CONFIG_CRYPTO_SERPENT_AVX_X86_64=m +CONFIG_CRYPTO_SERPENT_AVX2_X86_64=m +CONFIG_CRYPTO_TWOFISH_X86_64=m +CONFIG_CRYPTO_TWOFISH_X86_64_3WAY=m +CONFIG_CRYPTO_TWOFISH_AVX_X86_64=m + +## +## file: crypto/asymmetric_keys/Kconfig +## +CONFIG_SIGNED_PE_FILE_VERIFICATION=y + +## +## file: drivers/acpi/Kconfig +## +CONFIG_ACPI_BGRT=y + +## +## file: drivers/block/Kconfig +## +CONFIG_BLK_DEV_RSXX=m + +## +## file: drivers/char/agp/Kconfig +## +CONFIG_AGP=y +#. Needed by GART_IOMMU +CONFIG_AGP_AMD64=y + +## +## file: drivers/dma/Kconfig +## +CONFIG_INTEL_MIC_X100_DMA=m + +## +## file: drivers/edac/Kconfig +## +CONFIG_EDAC_SBRIDGE=m + +## +## file: drivers/i2c/Kconfig +## +CONFIG_I2C_STUB=m + +## +## file: drivers/input/mouse/Kconfig +## +CONFIG_MOUSE_PS2_LOGIPS2PP=y +CONFIG_MOUSE_PS2_SYNAPTICS=y +CONFIG_MOUSE_PS2_LIFEBOOK=y +CONFIG_MOUSE_PS2_TRACKPOINT=y + +## +## file: drivers/iommu/Kconfig +## +CONFIG_AMD_IOMMU=y +#. Can be built as a module, but nothing will trigger loading +CONFIG_AMD_IOMMU_V2=y + +## +## file: drivers/macintosh/Kconfig +## +CONFIG_MACINTOSH_DRIVERS=y +CONFIG_MAC_EMUMOUSEBTN=y + +## +## file: drivers/misc/mic/Kconfig +## +CONFIG_INTEL_MIC_BUS=m +CONFIG_SCIF_BUS=m +CONFIG_VOP_BUS=m +CONFIG_INTEL_MIC_HOST=m +# CONFIG_INTEL_MIC_CARD is not set +CONFIG_SCIF=m +CONFIG_MIC_COSM=m +CONFIG_VOP=m + +## +## file: drivers/net/Kconfig +## +CONFIG_FUJITSU_ES=m + +## +## file: drivers/net/wireless/intel/ipw2x00/Kconfig +## +# CONFIG_IPW2100 is not set + +## +## file: drivers/nvdimm/Kconfig +## +CONFIG_NVDIMM_PFN=y + +## +## file: drivers/pci/Kconfig +## +CONFIG_PCI_HYPERV=y + +## +## file: drivers/scsi/Kconfig +## +CONFIG_SCSI_INIA100=m + +## +## file: drivers/spi/Kconfig +## +CONFIG_SPI_PXA2XX=m + +## +## file: drivers/tty/Kconfig +## +CONFIG_MOXA_INTELLIO=m +CONFIG_ISI=m + +## +## file: drivers/video/fbdev/Kconfig +## +CONFIG_FB_MATROX_G=y +CONFIG_FB_MATROX_MAVEN=m +# CONFIG_FB_ATY_GENERIC_LCD is not set +# CONFIG_FB_SAVAGE_I2C is not set + +## +## file: init/Kconfig +## +CONFIG_KALLSYMS_ALL=y + +## +## file: kernel/livepatch/Kconfig +## +CONFIG_LIVEPATCH=y + +## +## file: kernel/rcu/Kconfig +## +CONFIG_RCU_FANOUT=64 + +## +## file: lib/Kconfig.debug +## +CONFIG_FRAME_WARN=2048 + +## +## file: mm/Kconfig +## +## choice: Memory model +CONFIG_SPARSEMEM_MANUAL=y +## end choice +CONFIG_SPARSEMEM_VMEMMAP=y +CONFIG_ZONE_DEVICE=y + +## +## file: security/Kconfig +## +CONFIG_LSM_MMAP_MIN_ADDR=65536 + diff --git a/config/amd64/config.cloud-amd64 b/config/amd64/config.cloud-amd64 new file mode 100644 index 00000000000..3ea884b317b --- /dev/null +++ b/config/amd64/config.cloud-amd64 @@ -0,0 +1,1413 @@ +## +## file: arch/x86/Kconfig +## +# CONFIG_X86_MPPARSE is not set +# CONFIG_X86_EXTENDED_PLATFORM is not set +# CONFIG_X86_INTEL_LPSS is not set +# CONFIG_X86_AMD_PLATFORM_DEVICE is not set +# CONFIG_IOSF_MBI is not set +# CONFIG_GART_IOMMU is not set +# CONFIG_CALGARY_IOMMU is not set +# CONFIG_SCHED_MC_PRIO is not set +#. XXX +# CONFIG_X86_MCE is not set +# CONFIG_X86_16BIT is not set +# CONFIG_I8K is not set +# CONFIG_MICROCODE is not set +# CONFIG_AMD_NUMA is not set +# CONFIG_ISA_DMA_API is not set +# CONFIG_ISA is not set +# CONFIG_EISA is not set +# CONFIG_IA32_AOUT is not set +# CONFIG_X86_X32 is not set + +## +## file: arch/x86/Kconfig.debug +## +# CONFIG_EARLY_PRINTK_EFI is not set + +## +## file: arch/x86/kvm/Kconfig +## +# CONFIG_VIRTUALIZATION is not set + +## +## file: arch/x86/xen/Kconfig +## +# CONFIG_XEN_DOM0 is not set + +## +## file: block/Kconfig.iosched +## +CONFIG_IOSCHED_CFQ=m +## choice: Default I/O scheduler +CONFIG_DEFAULT_NOOP=y +## end choice +CONFIG_MQ_IOSCHED_DEADLINE=m + +## +## file: block/partitions/Kconfig +## +# CONFIG_PARTITION_ADVANCED is not set + +## +## file: drivers/accessibility/Kconfig +## +# CONFIG_ACCESSIBILITY is not set + +## +## file: drivers/acpi/Kconfig +## +# CONFIG_ACPI_AC is not set +# CONFIG_ACPI_BATTERY is not set +# CONFIG_ACPI_DOCK is not set +# CONFIG_ACPI_PROCESSOR is not set +# CONFIG_ACPI_IPMI is not set + +## +## file: drivers/android/Kconfig +## +# CONFIG_ANDROID is not set + +## +## file: drivers/ata/Kconfig +## +# CONFIG_ATA_ACPI is not set +# CONFIG_SATA_ZPODD is not set +# CONFIG_SATA_PMP is not set +# CONFIG_SATA_AHCI is not set +# CONFIG_SATA_ACARD_AHCI is not set +# CONFIG_SATA_SIL24 is not set +CONFIG_ATA_SFF=y +# CONFIG_PDC_ADMA is not set +# CONFIG_SATA_QSTOR is not set +# CONFIG_SATA_SX4 is not set +CONFIG_ATA_BMDMA=y +CONFIG_ATA_PIIX=m +# CONFIG_SATA_MV is not set +# CONFIG_SATA_NV is not set +# CONFIG_SATA_PROMISE is not set +# CONFIG_SATA_SIL is not set +# CONFIG_SATA_SIS is not set +# CONFIG_SATA_SVW is not set +# CONFIG_SATA_ULI is not set +# CONFIG_SATA_VIA is not set +# CONFIG_SATA_VITESSE is not set +# CONFIG_PATA_ALI is not set +# CONFIG_PATA_AMD is not set +# CONFIG_PATA_ARTOP is not set +# CONFIG_PATA_ATIIXP is not set +# CONFIG_PATA_ATP867X is not set +# CONFIG_PATA_CMD64X is not set +# CONFIG_PATA_CYPRESS is not set +# CONFIG_PATA_EFAR is not set +# CONFIG_PATA_HPT366 is not set +# CONFIG_PATA_HPT37X is not set +# CONFIG_PATA_HPT3X2N is not set +# CONFIG_PATA_HPT3X3 is not set +# CONFIG_PATA_IT8213 is not set +# CONFIG_PATA_IT821X is not set +# CONFIG_PATA_JMICRON is not set +# CONFIG_PATA_MARVELL is not set +# CONFIG_PATA_NETCELL is not set +# CONFIG_PATA_NINJA32 is not set +# CONFIG_PATA_NS87415 is not set +# CONFIG_PATA_OLDPIIX is not set +# CONFIG_PATA_OPTIDMA is not set +# CONFIG_PATA_PDC2027X is not set +# CONFIG_PATA_PDC_OLD is not set +# CONFIG_PATA_RADISYS is not set +# CONFIG_PATA_RDC is not set +# CONFIG_PATA_SCH is not set +# CONFIG_PATA_SERVERWORKS is not set +# CONFIG_PATA_SIL680 is not set +# CONFIG_PATA_SIS is not set +# CONFIG_PATA_TOSHIBA is not set +# CONFIG_PATA_TRIFLEX is not set +# CONFIG_PATA_VIA is not set +# CONFIG_PATA_MPIIX is not set +# CONFIG_PATA_NS87410 is not set +# CONFIG_PATA_OPTI is not set +# CONFIG_PATA_PLATFORM is not set +# CONFIG_PATA_RZ1000 is not set + +## +## file: drivers/atm/Kconfig +## +# CONFIG_ATM_DRIVERS is not set + +## +## file: drivers/auxdisplay/Kconfig +## +# CONFIG_AUXDISPLAY is not set + +## +## file: drivers/bcma/Kconfig +## +# CONFIG_BCMA is not set + +## +## file: drivers/block/Kconfig +## +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_DAC960 is not set +# CONFIG_BLK_DEV_UMEM is not set +# CONFIG_BLK_DEV_SKD is not set +# CONFIG_BLK_DEV_SX8 is not set +# CONFIG_CDROM_PKTCDVD is not set +CONFIG_XEN_BLKDEV_FRONTEND=m +# CONFIG_BLK_DEV_RSXX is not set + +## +## file: drivers/block/mtip32xx/Kconfig +## +# CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set + +## +## file: drivers/char/Kconfig +## +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set +# CONFIG_MWAVE is not set +# CONFIG_TELCLOCK is not set +# CONFIG_DEVPORT is not set + +## +## file: drivers/char/agp/Kconfig +## +# CONFIG_AGP is not set + +## +## file: drivers/char/hw_random/Kconfig +## +# CONFIG_HW_RANDOM is not set + +## +## file: drivers/char/ipmi/Kconfig +## +# CONFIG_IPMI_HANDLER is not set + +## +## file: drivers/char/tpm/Kconfig +## +# CONFIG_TCG_TPM is not set + +## +## file: drivers/char/xillybus/Kconfig +## +# CONFIG_XILLYBUS is not set + +## +## file: drivers/cpufreq/Kconfig +## +# CONFIG_CPU_FREQ is not set + +## +## file: drivers/cpuidle/Kconfig +## +# CONFIG_CPU_IDLE is not set + +## +## file: drivers/crypto/Kconfig +## +# CONFIG_CRYPTO_HW is not set + +## +## file: drivers/dax/Kconfig +## +# CONFIG_DAX is not set + +## +## file: drivers/devfreq/Kconfig +## +# CONFIG_PM_DEVFREQ is not set + +## +## file: drivers/dma/Kconfig +## +# CONFIG_DMADEVICES is not set + +## +## file: drivers/edac/Kconfig +## +# CONFIG_EDAC is not set + +## +## file: drivers/extcon/Kconfig +## +# CONFIG_EXTCON is not set + +## +## file: drivers/firewire/Kconfig +## +# CONFIG_FIREWIRE is not set +# CONFIG_FIREWIRE_NOSY is not set + +## +## file: drivers/firmware/Kconfig +## +# CONFIG_DELL_RBU is not set +# CONFIG_DCDBAS is not set + +## +## file: drivers/fmc/Kconfig +## +# CONFIG_FMC is not set + +## +## file: drivers/fpga/Kconfig +## +# CONFIG_FPGA is not set + +## +## file: drivers/fsi/Kconfig +## +# CONFIG_FSI is not set + +## +## file: drivers/gpio/Kconfig +## +# CONFIG_GPIOLIB is not set +# CONFIG_GPIO_KEMPLD is not set +# CONFIG_GPIO_ML_IOH is not set + +## +## file: drivers/gpu/drm/Kconfig +## +# CONFIG_DRM is not set + +## +## file: drivers/hid/Kconfig +## +# CONFIG_HID is not set + +## +## file: drivers/hid/intel-ish-hid/Kconfig +## +# CONFIG_INTEL_ISH_HID is not set + +## +## file: drivers/hsi/Kconfig +## +# CONFIG_HSI is not set + +## +## file: drivers/hv/Kconfig +## +CONFIG_HYPERV=m + +## +## file: drivers/hwmon/Kconfig +## +# CONFIG_HWMON is not set + +## +## file: drivers/hwtracing/intel_th/Kconfig +## +# CONFIG_INTEL_TH is not set + +## +## file: drivers/i2c/Kconfig +## +# CONFIG_I2C is not set + +## +## file: drivers/idle/Kconfig +## +# CONFIG_INTEL_IDLE is not set + +## +## file: drivers/iio/Kconfig +## +# CONFIG_IIO is not set + +## +## file: drivers/infiniband/Kconfig +## +# CONFIG_INFINIBAND is not set + +## +## file: drivers/input/Kconfig +## +# CONFIG_INPUT_FF_MEMLESS is not set +# CONFIG_INPUT_SPARSEKMAP is not set +# CONFIG_INPUT_JOYDEV is not set + +## +## file: drivers/input/gameport/Kconfig +## +# CONFIG_GAMEPORT is not set + +## +## file: drivers/input/joystick/Kconfig +## +# CONFIG_INPUT_JOYSTICK is not set + +## +## file: drivers/input/keyboard/Kconfig +## +# CONFIG_KEYBOARD_LKKBD is not set +# CONFIG_KEYBOARD_GPIO is not set +# CONFIG_KEYBOARD_NEWTON is not set +# CONFIG_KEYBOARD_OPENCORES is not set +# CONFIG_KEYBOARD_SAMSUNG is not set +# CONFIG_KEYBOARD_STOWAWAY is not set +# CONFIG_KEYBOARD_SUNKBD is not set +# CONFIG_KEYBOARD_XTKBD is not set + +## +## file: drivers/input/misc/Kconfig +## +# CONFIG_INPUT_MISC is not set + +## +## file: drivers/input/mouse/Kconfig +## +# CONFIG_INPUT_MOUSE is not set + +## +## file: drivers/input/serio/Kconfig +## +# CONFIG_SERIO_SERPORT is not set +# CONFIG_SERIO_CT82C710 is not set +# CONFIG_SERIO_PCIPS2 is not set +CONFIG_SERIO_RAW=m +# CONFIG_SERIO_ALTERA_PS2 is not set +CONFIG_HYPERV_KEYBOARD=m + +## +## file: drivers/input/tablet/Kconfig +## +# CONFIG_INPUT_TABLET is not set + +## +## file: drivers/input/touchscreen/Kconfig +## +# CONFIG_INPUT_TOUCHSCREEN is not set + +## +## file: drivers/iommu/Kconfig +## +# CONFIG_AMD_IOMMU is not set + +## +## file: drivers/ipack/Kconfig +## +# CONFIG_IPACK_BUS is not set + +## +## file: drivers/isdn/Kconfig +## +# CONFIG_ISDN is not set + +## +## file: drivers/leds/Kconfig +## +# CONFIG_NEW_LEDS is not set + +## +## file: drivers/lightnvm/Kconfig +## +# CONFIG_NVM is not set + +## +## file: drivers/macintosh/Kconfig +## +# CONFIG_MACINTOSH_DRIVERS is not set + +## +## file: drivers/mailbox/Kconfig +## +# CONFIG_MAILBOX is not set + +## +## file: drivers/mcb/Kconfig +## +# CONFIG_MCB is not set + +## +## file: drivers/media/Kconfig +## +# CONFIG_MEDIA_SUPPORT is not set + +## +## file: drivers/media/rc/Kconfig +## +# CONFIG_RC_CORE is not set + +## +## file: drivers/memory/Kconfig +## +# CONFIG_MEMORY is not set + +## +## file: drivers/memstick/Kconfig +## +# CONFIG_MEMSTICK is not set + +## +## file: drivers/message/fusion/Kconfig +## +# CONFIG_FUSION is not set + +## +## file: drivers/mfd/Kconfig +## +# CONFIG_LPC_ICH is not set +# CONFIG_LPC_SCH is not set +# CONFIG_MFD_INTEL_LPSS_ACPI is not set +# CONFIG_MFD_INTEL_LPSS_PCI is not set +# CONFIG_MFD_KEMPLD is not set +# CONFIG_MFD_RTSX_PCI is not set + +## +## file: drivers/misc/Kconfig +## +# CONFIG_IBM_ASM is not set +# CONFIG_PHANTOM is not set +# CONFIG_SGI_IOC4 is not set +# CONFIG_TIFM_CORE is not set +# CONFIG_TIFM_7XX1 is not set +# CONFIG_ENCLOSURE_SERVICES is not set +# CONFIG_HP_ILO is not set + +## +## file: drivers/misc/c2port/Kconfig +## +# CONFIG_C2PORT is not set + +## +## file: drivers/misc/cb710/Kconfig +## +# CONFIG_CB710_CORE is not set + +## +## file: drivers/misc/eeprom/Kconfig +## +# CONFIG_EEPROM_93CX6 is not set + +## +## file: drivers/misc/mei/Kconfig +## +# CONFIG_INTEL_MEI is not set +# CONFIG_INTEL_MEI_ME is not set + +## +## file: drivers/misc/mic/Kconfig +## +# CONFIG_INTEL_MIC_BUS is not set +# CONFIG_SCIF_BUS is not set +# CONFIG_VOP_BUS is not set + +## +## file: drivers/mmc/Kconfig +## +# CONFIG_MMC is not set + +## +## file: drivers/mtd/Kconfig +## +# CONFIG_MTD is not set + +## +## file: drivers/net/Kconfig +## +# CONFIG_NET_SB1000 is not set +CONFIG_XEN_NETDEV_FRONTEND=m +# CONFIG_FUJITSU_ES is not set + +## +## file: drivers/net/appletalk/Kconfig +## +# CONFIG_ATALK is not set + +## +## file: drivers/net/arcnet/Kconfig +## +# CONFIG_ARCNET is not set + +## +## file: drivers/net/ethernet/Kconfig +## +# CONFIG_JME is not set +# CONFIG_FEALNX is not set + +## +## file: drivers/net/ethernet/3com/Kconfig +## +# CONFIG_NET_VENDOR_3COM is not set + +## +## file: drivers/net/ethernet/adaptec/Kconfig +## +# CONFIG_NET_VENDOR_ADAPTEC is not set + +## +## file: drivers/net/ethernet/agere/Kconfig +## +# CONFIG_NET_VENDOR_AGERE is not set + +## +## file: drivers/net/ethernet/alacritech/Kconfig +## +# CONFIG_NET_VENDOR_ALACRITECH is not set + +## +## file: drivers/net/ethernet/alteon/Kconfig +## +# CONFIG_NET_VENDOR_ALTEON is not set + +## +## file: drivers/net/ethernet/altera/Kconfig +## +# CONFIG_ALTERA_TSE is not set + +## +## file: drivers/net/ethernet/amazon/Kconfig +## +# CONFIG_NET_VENDOR_AMAZON is not set + +## +## file: drivers/net/ethernet/amd/Kconfig +## +# CONFIG_NET_VENDOR_AMD is not set + +## +## file: drivers/net/ethernet/aquantia/Kconfig +## +# CONFIG_NET_VENDOR_AQUANTIA is not set + +## +## file: drivers/net/ethernet/atheros/Kconfig +## +# CONFIG_NET_VENDOR_ATHEROS is not set + +## +## file: drivers/net/ethernet/broadcom/Kconfig +## +# CONFIG_NET_VENDOR_BROADCOM is not set +# CONFIG_CNIC is not set + +## +## file: drivers/net/ethernet/brocade/Kconfig +## +# CONFIG_NET_VENDOR_BROCADE is not set + +## +## file: drivers/net/ethernet/cadence/Kconfig +## +# CONFIG_NET_CADENCE is not set + +## +## file: drivers/net/ethernet/cavium/Kconfig +## +# CONFIG_NET_VENDOR_CAVIUM is not set + +## +## file: drivers/net/ethernet/chelsio/Kconfig +## +# CONFIG_NET_VENDOR_CHELSIO is not set + +## +## file: drivers/net/ethernet/cisco/Kconfig +## +# CONFIG_NET_VENDOR_CISCO is not set + +## +## file: drivers/net/ethernet/dec/Kconfig +## +# CONFIG_NET_VENDOR_DEC is not set + +## +## file: drivers/net/ethernet/dlink/Kconfig +## +# CONFIG_NET_VENDOR_DLINK is not set + +## +## file: drivers/net/ethernet/emulex/Kconfig +## +# CONFIG_NET_VENDOR_EMULEX is not set + +## +## file: drivers/net/ethernet/ezchip/Kconfig +## +# CONFIG_NET_VENDOR_EZCHIP is not set + +## +## file: drivers/net/ethernet/hp/Kconfig +## +# CONFIG_NET_VENDOR_HP is not set + +## +## file: drivers/net/ethernet/huawei/Kconfig +## +# CONFIG_NET_VENDOR_HUAWEI is not set + +## +## file: drivers/net/ethernet/intel/Kconfig +## +CONFIG_NET_VENDOR_INTEL=y +# CONFIG_E100 is not set +# CONFIG_E1000 is not set +# CONFIG_E1000E is not set +# CONFIG_IGB is not set +# CONFIG_IGBVF is not set +# CONFIG_IXGB is not set +# CONFIG_IXGBE is not set +#. Amazon EC2 uses Intel Corporation 82599 Ethernet Controller Virtual Function +CONFIG_IXGBEVF=m +# CONFIG_I40E is not set +# CONFIG_I40EVF is not set + +## +## file: drivers/net/ethernet/marvell/Kconfig +## +# CONFIG_NET_VENDOR_MARVELL is not set + +## +## file: drivers/net/ethernet/mellanox/Kconfig +## +#. Microsoft Azure uses Mellanox Technologies MT27500/MT27520 Family [ConnectX-3/ConnectX-3 Pro Virtual Function] +CONFIG_NET_VENDOR_MELLANOX=y + +## +## file: drivers/net/ethernet/micrel/Kconfig +## +# CONFIG_NET_VENDOR_MICREL is not set + +## +## file: drivers/net/ethernet/myricom/Kconfig +## +# CONFIG_NET_VENDOR_MYRI is not set + +## +## file: drivers/net/ethernet/natsemi/Kconfig +## +# CONFIG_NET_VENDOR_NATSEMI is not set + +## +## file: drivers/net/ethernet/neterion/Kconfig +## +# CONFIG_NET_VENDOR_EXAR is not set + +## +## file: drivers/net/ethernet/netronome/Kconfig +## +# CONFIG_NET_VENDOR_NETRONOME is not set + +## +## file: drivers/net/ethernet/nvidia/Kconfig +## +# CONFIG_NET_VENDOR_NVIDIA is not set + +## +## file: drivers/net/ethernet/oki-semi/Kconfig +## +# CONFIG_NET_VENDOR_OKI is not set + +## +## file: drivers/net/ethernet/packetengines/Kconfig +## +# CONFIG_NET_PACKET_ENGINE is not set + +## +## file: drivers/net/ethernet/qlogic/Kconfig +## +# CONFIG_NET_VENDOR_QLOGIC is not set + +## +## file: drivers/net/ethernet/qualcomm/Kconfig +## +# CONFIG_NET_VENDOR_QUALCOMM is not set + +## +## file: drivers/net/ethernet/rdc/Kconfig +## +# CONFIG_NET_VENDOR_RDC is not set + +## +## file: drivers/net/ethernet/realtek/Kconfig +## +# CONFIG_NET_VENDOR_REALTEK is not set + +## +## file: drivers/net/ethernet/renesas/Kconfig +## +# CONFIG_NET_VENDOR_RENESAS is not set + +## +## file: drivers/net/ethernet/rocker/Kconfig +## +# CONFIG_NET_VENDOR_ROCKER is not set + +## +## file: drivers/net/ethernet/samsung/Kconfig +## +# CONFIG_NET_VENDOR_SAMSUNG is not set + +## +## file: drivers/net/ethernet/seeq/Kconfig +## +# CONFIG_NET_VENDOR_SEEQ is not set + +## +## file: drivers/net/ethernet/sfc/Kconfig +## +# CONFIG_NET_VENDOR_SOLARFLARE is not set +# CONFIG_SFC is not set + +## +## file: drivers/net/ethernet/silan/Kconfig +## +# CONFIG_NET_VENDOR_SILAN is not set + +## +## file: drivers/net/ethernet/sis/Kconfig +## +# CONFIG_NET_VENDOR_SIS is not set + +## +## file: drivers/net/ethernet/smsc/Kconfig +## +# CONFIG_NET_VENDOR_SMSC is not set + +## +## file: drivers/net/ethernet/stmicro/Kconfig +## +# CONFIG_NET_VENDOR_STMICRO is not set + +## +## file: drivers/net/ethernet/sun/Kconfig +## +# CONFIG_NET_VENDOR_SUN is not set + +## +## file: drivers/net/ethernet/synopsys/Kconfig +## +# CONFIG_NET_VENDOR_SYNOPSYS is not set + +## +## file: drivers/net/ethernet/tehuti/Kconfig +## +# CONFIG_NET_VENDOR_TEHUTI is not set + +## +## file: drivers/net/ethernet/ti/Kconfig +## +# CONFIG_NET_VENDOR_TI is not set + +## +## file: drivers/net/ethernet/via/Kconfig +## +# CONFIG_NET_VENDOR_VIA is not set + +## +## file: drivers/net/ethernet/wiznet/Kconfig +## +# CONFIG_NET_VENDOR_WIZNET is not set + +## +## file: drivers/net/fddi/Kconfig +## +# CONFIG_FDDI is not set + +## +## file: drivers/net/hippi/Kconfig +## +# CONFIG_HIPPI is not set + +## +## file: drivers/net/hyperv/Kconfig +## +CONFIG_HYPERV_NET=m + +## +## file: drivers/net/phy/Kconfig +## +# CONFIG_MDIO_DEVICE is not set +# CONFIG_PHYLIB is not set + +## +## file: drivers/net/ppp/Kconfig +## +# CONFIG_PPP is not set + +## +## file: drivers/net/slip/Kconfig +## +# CONFIG_SLIP is not set + +## +## file: drivers/net/wan/Kconfig +## +# CONFIG_WAN is not set + +## +## file: drivers/net/wireless/Kconfig +## +# CONFIG_WLAN is not set + +## +## file: drivers/ntb/Kconfig +## +# CONFIG_NTB is not set + +## +## file: drivers/nvmem/Kconfig +## +# CONFIG_NVMEM is not set + +## +## file: drivers/of/Kconfig +## +# CONFIG_OF is not set + +## +## file: drivers/parport/Kconfig +## +# CONFIG_PARPORT is not set + +## +## file: drivers/pci/Kconfig +## +# CONFIG_PCI_STUB is not set +# CONFIG_PCI_PRI is not set +# CONFIG_PCI_PASID is not set + +## +## file: drivers/pci/host/Kconfig +## +# CONFIG_VMD is not set + +## +## file: drivers/pci/hotplug/Kconfig +## +# CONFIG_HOTPLUG_PCI_ACPI_IBM is not set +# CONFIG_HOTPLUG_PCI_CPCI is not set +# CONFIG_HOTPLUG_PCI_SHPC is not set + +## +## file: drivers/pcmcia/Kconfig +## +# CONFIG_PCCARD is not set + +## +## file: drivers/platform/chrome/Kconfig +## +# CONFIG_CHROME_PLATFORMS is not set + +## +## file: drivers/platform/x86/Kconfig +## +# CONFIG_X86_PLATFORM_DEVICES is not set + +## +## file: drivers/pnp/Kconfig +## +# CONFIG_PNP is not set + +## +## file: drivers/power/supply/Kconfig +## +# CONFIG_BATTERY_BQ27XXX is not set + +## +## file: drivers/pwm/Kconfig +## +# CONFIG_PWM is not set + +## +## file: drivers/regulator/Kconfig +## +# CONFIG_REGULATOR is not set + +## +## file: drivers/remoteproc/Kconfig +## +# CONFIG_REMOTEPROC is not set + +## +## file: drivers/reset/Kconfig +## +# CONFIG_RESET_CONTROLLER is not set + +## +## file: drivers/rtc/Kconfig +## +# CONFIG_RTC_CLASS is not set + +## +## file: drivers/scsi/Kconfig +## +CONFIG_SCSI=m +CONFIG_BLK_DEV_SD=m +CONFIG_SCSI_FC_ATTRS=m +# CONFIG_BLK_DEV_3W_XXXX_RAID is not set +# CONFIG_SCSI_HPSA is not set +# CONFIG_SCSI_3W_9XXX is not set +# CONFIG_SCSI_3W_SAS is not set +# CONFIG_SCSI_ACARD is not set +# CONFIG_SCSI_AACRAID is not set +# CONFIG_SCSI_MVUMI is not set +# CONFIG_SCSI_DPT_I2O is not set +# CONFIG_SCSI_ADVANSYS is not set +# CONFIG_SCSI_ARCMSR is not set +# CONFIG_SCSI_HPTIOP is not set +CONFIG_HYPERV_STORAGE=m +# CONFIG_LIBFC is not set +# CONFIG_SCSI_SNIC is not set +# CONFIG_SCSI_DMX3191D is not set +# CONFIG_SCSI_FUTURE_DOMAIN is not set +# CONFIG_SCSI_ISCI is not set +# CONFIG_SCSI_IPS is not set +# CONFIG_SCSI_INITIO is not set +# CONFIG_SCSI_INIA100 is not set +# CONFIG_SCSI_STEX is not set +# CONFIG_SCSI_SYM53C8XX_2 is not set +# CONFIG_SCSI_QLOGIC_1280 is not set +# CONFIG_SCSI_LPFC is not set +# CONFIG_SCSI_DC395x is not set +# CONFIG_SCSI_AM53C974 is not set +# CONFIG_SCSI_WD719X is not set +# CONFIG_SCSI_PMCRAID is not set +# CONFIG_SCSI_PM8001 is not set +# CONFIG_SCSI_BFA_FC is not set + +## +## file: drivers/scsi/aic7xxx/Kconfig.aic79xx +## +# CONFIG_SCSI_AIC79XX is not set + +## +## file: drivers/scsi/aic7xxx/Kconfig.aic7xxx +## +# CONFIG_SCSI_AIC7XXX is not set + +## +## file: drivers/scsi/aic94xx/Kconfig +## +# CONFIG_SCSI_AIC94XX is not set + +## +## file: drivers/scsi/be2iscsi/Kconfig +## +# CONFIG_BE2ISCSI is not set + +## +## file: drivers/scsi/bnx2fc/Kconfig +## +# CONFIG_SCSI_BNX2X_FCOE is not set + +## +## file: drivers/scsi/bnx2i/Kconfig +## +# CONFIG_SCSI_BNX2_ISCSI is not set + +## +## file: drivers/scsi/csiostor/Kconfig +## +# CONFIG_SCSI_CHELSIO_FCOE is not set + +## +## file: drivers/scsi/cxgbi/cxgb3i/Kconfig +## +# CONFIG_SCSI_CXGB3_ISCSI is not set + +## +## file: drivers/scsi/cxgbi/cxgb4i/Kconfig +## +# CONFIG_SCSI_CXGB4_ISCSI is not set + +## +## file: drivers/scsi/device_handler/Kconfig +## +# CONFIG_SCSI_DH is not set + +## +## file: drivers/scsi/esas2r/Kconfig +## +# CONFIG_SCSI_ESAS2R is not set + +## +## file: drivers/scsi/megaraid/Kconfig.megaraid +## +# CONFIG_MEGARAID_NEWGEN is not set +# CONFIG_MEGARAID_MM is not set +# CONFIG_MEGARAID_MAILBOX is not set +# CONFIG_MEGARAID_LEGACY is not set +# CONFIG_MEGARAID_SAS is not set + +## +## file: drivers/scsi/mpt3sas/Kconfig +## +# CONFIG_SCSI_MPT3SAS is not set +# CONFIG_SCSI_MPT2SAS is not set + +## +## file: drivers/scsi/mvsas/Kconfig +## +# CONFIG_SCSI_MVSAS is not set + +## +## file: drivers/scsi/osd/Kconfig +## +# CONFIG_SCSI_OSD_INITIATOR is not set +# CONFIG_SCSI_OSD_ULD is not set + +## +## file: drivers/scsi/qla2xxx/Kconfig +## +# CONFIG_SCSI_QLA_FC is not set + +## +## file: drivers/scsi/qla4xxx/Kconfig +## +# CONFIG_SCSI_QLA_ISCSI is not set + +## +## file: drivers/scsi/smartpqi/Kconfig +## +# CONFIG_SCSI_SMARTPQI is not set + +## +## file: drivers/scsi/ufs/Kconfig +## +# CONFIG_SCSI_UFSHCD is not set + +## +## file: drivers/sfi/Kconfig +## +# CONFIG_SFI is not set + +## +## file: drivers/spi/Kconfig +## +# CONFIG_SPI is not set + +## +## file: drivers/spmi/Kconfig +## +# CONFIG_SPMI is not set + +## +## file: drivers/ssb/Kconfig +## +# CONFIG_SSB is not set + +## +## file: drivers/staging/Kconfig +## +# CONFIG_STAGING is not set + +## +## file: drivers/target/Kconfig +## +# CONFIG_TARGET_CORE is not set + +## +## file: drivers/target/iscsi/cxgbit/Kconfig +## +# CONFIG_ISCSI_TARGET_CXGB4 is not set + +## +## file: drivers/thermal/Kconfig +## +# CONFIG_THERMAL is not set + +## +## file: drivers/thunderbolt/Kconfig +## +# CONFIG_THUNDERBOLT is not set + +## +## file: drivers/tty/Kconfig +## +# CONFIG_SERIAL_NONSTANDARD is not set +# CONFIG_NOZOMI is not set +# CONFIG_ISI is not set +# CONFIG_N_HDLC is not set +# CONFIG_N_GSM is not set + +## +## file: drivers/tty/serial/Kconfig +## +# CONFIG_SERIAL_JSM is not set +# CONFIG_SERIAL_RP2 is not set + +## +## file: drivers/tty/serial/8250/Kconfig +## +# CONFIG_SERIAL_8250_FINTEK is not set +# CONFIG_SERIAL_8250_EXAR is not set +# CONFIG_SERIAL_8250_RSA is not set +# CONFIG_SERIAL_8250_MID is not set +# CONFIG_SERIAL_8250_MOXA is not set + +## +## file: drivers/uio/Kconfig +## +# CONFIG_UIO is not set + +## +## file: drivers/usb/Kconfig +## +# CONFIG_USB_SUPPORT is not set + +## +## file: drivers/uwb/Kconfig +## +# CONFIG_UWB is not set + +## +## file: drivers/vfio/Kconfig +## +# CONFIG_VFIO is not set + +## +## file: drivers/video/backlight/Kconfig +## +# CONFIG_BACKLIGHT_LCD_SUPPORT is not set + +## +## file: drivers/video/fbdev/Kconfig +## +# CONFIG_FB is not set + +## +## file: drivers/virt/Kconfig +## +# CONFIG_VIRT_DRIVERS is not set + +## +## file: drivers/vme/Kconfig +## +# CONFIG_VME_BUS is not set + +## +## file: drivers/w1/Kconfig +## +# CONFIG_W1 is not set + +## +## file: drivers/watchdog/Kconfig +## +# CONFIG_ACQUIRE_WDT is not set +# CONFIG_ADVANTECH_WDT is not set +# CONFIG_ALIM1535_WDT is not set +# CONFIG_ALIM7101_WDT is not set +# CONFIG_F71808E_WDT is not set +# CONFIG_SP5100_TCO is not set +# CONFIG_SBC_FITPC2_WATCHDOG is not set +# CONFIG_EUROTECH_WDT is not set +# CONFIG_IB700_WDT is not set +# CONFIG_IBMASR is not set +# CONFIG_WAFER_WDT is not set +# CONFIG_I6300ESB_WDT is not set +# CONFIG_IE6XX_WDT is not set +# CONFIG_ITCO_WDT is not set +# CONFIG_ITCO_VENDOR_SUPPORT is not set +# CONFIG_IT8712F_WDT is not set +# CONFIG_IT87_WDT is not set +# CONFIG_HP_WATCHDOG is not set +# CONFIG_KEMPLD_WDT is not set +# CONFIG_HPWDT_NMI_DECODING is not set +# CONFIG_SC1200_WDT is not set +# CONFIG_PC87413_WDT is not set +# CONFIG_NV_TCO is not set +# CONFIG_60XX_WDT is not set +# CONFIG_CPU5_WDT is not set +# CONFIG_SMSC_SCH311X_WDT is not set +# CONFIG_SMSC37B787_WDT is not set +# CONFIG_VIA_WDT is not set +# CONFIG_W83627HF_WDT is not set +# CONFIG_W83877F_WDT is not set +# CONFIG_W83977F_WDT is not set +# CONFIG_MACHZ_WDT is not set +# CONFIG_SBC_EPX_C3_WATCHDOG is not set + +## +## file: kernel/power/Kconfig +## +# CONFIG_SUSPEND is not set +# CONFIG_PM is not set +# CONFIG_PM_DEBUG is not set + +## +## file: lib/Kconfig.debug +## +# CONFIG_DEBUG_MEMORY_INIT is not set +# CONFIG_TEST_USER_COPY is not set +# CONFIG_TEST_BPF is not set +# CONFIG_TEST_FIRMWARE is not set +# CONFIG_TEST_STATIC_KEYS is not set +# CONFIG_MEMTEST is not set + +## +## file: mm/Kconfig +## +#. XXX +# CONFIG_MEMORY_HOTPLUG is not set +# CONFIG_KSM is not set +# CONFIG_ZSWAP is not set + +## +## file: mm/Kconfig.debug +## +# CONFIG_PAGE_EXTENSION is not set +# CONFIG_PAGE_POISONING is not set + +## +## file: net/Kconfig +## +# CONFIG_WIRELESS is not set + +## +## file: net/6lowpan/Kconfig +## +# CONFIG_6LOWPAN is not set + +## +## file: net/9p/Kconfig +## +# CONFIG_NET_9P is not set + +## +## file: net/atm/Kconfig +## +# CONFIG_ATM is not set + +## +## file: net/ax25/Kconfig +## +# CONFIG_HAMRADIO is not set + +## +## file: net/batman-adv/Kconfig +## +# CONFIG_BATMAN_ADV is not set + +## +## file: net/bluetooth/Kconfig +## +# CONFIG_BT is not set + +## +## file: net/caif/Kconfig +## +# CONFIG_CAIF is not set + +## +## file: net/can/Kconfig +## +# CONFIG_CAN is not set + +## +## file: net/decnet/Kconfig +## +# CONFIG_DECNET is not set + +## +## file: net/dsa/Kconfig +## +# CONFIG_NET_DSA is not set + +## +## file: net/hsr/Kconfig +## +# CONFIG_HSR is not set + +## +## file: net/ieee802154/Kconfig +## +# CONFIG_IEEE802154 is not set + +## +## file: net/ife/Kconfig +## +# CONFIG_NET_IFE is not set + +## +## file: net/ipx/Kconfig +## +# CONFIG_IPX is not set + +## +## file: net/lapb/Kconfig +## +# CONFIG_LAPB is not set + +## +## file: net/llc/Kconfig +## +# CONFIG_LLC2 is not set + +## +## file: net/mac80211/Kconfig +## +# CONFIG_MAC80211 is not set + +## +## file: net/mac802154/Kconfig +## +# CONFIG_MAC802154 is not set + +## +## file: net/ncsi/Kconfig +## +# CONFIG_NET_NCSI is not set + +## +## file: net/nfc/Kconfig +## +# CONFIG_NFC is not set + +## +## file: net/phonet/Kconfig +## +# CONFIG_PHONET is not set + +## +## file: net/psample/Kconfig +## +# CONFIG_PSAMPLE is not set + +## +## file: net/rfkill/Kconfig +## +# CONFIG_RFKILL is not set + +## +## file: net/rxrpc/Kconfig +## +# CONFIG_AF_RXRPC is not set + +## +## file: net/switchdev/Kconfig +## +# CONFIG_NET_SWITCHDEV is not set + +## +## file: net/wimax/Kconfig +## +# CONFIG_WIMAX is not set + +## +## file: net/wireless/Kconfig +## +# CONFIG_CFG80211 is not set + +## +## file: net/x25/Kconfig +## +# CONFIG_X25 is not set + +## +## file: security/integrity/Kconfig +## +# CONFIG_INTEGRITY is not set + +## +## file: sound/Kconfig +## +# CONFIG_SOUND is not set + diff --git a/config/amd64/defines b/config/amd64/defines new file mode 100644 index 00000000000..186acf383af --- /dev/null +++ b/config/amd64/defines @@ -0,0 +1,27 @@ +[base] +featuresets: + none + rt +kernel-arch: x86 + +[build] +debug-info: true +image-file: arch/x86/boot/bzImage +vdso: true + +[image] +bootloaders: grub-pc grub-efi-amd64 extlinux +install-stem: vmlinuz +breaks: xserver-xorg-input-vmmouse (<< 1:13.0.99) + +[relations] +gcc-7: gcc-7 (>= 7.2.0-20~) , gcc-7-x86-64-linux-gnu (>= 7.2.0-20~) +headers%gcc-7: linux-compiler-gcc-7-x86 (>= 4.14.17-1~) + +[amd64_description] +hardware: 64-bit PCs +hardware-long: PCs with AMD64, Intel 64 or VIA Nano processors + +[cloud-amd64_description] +hardware: x86-64 cloud +hardware-long: Amazon EC2, Google Compute Engine and Microsoft Azure cloud platforms diff --git a/config/amd64/none/defines b/config/amd64/none/defines new file mode 100644 index 00000000000..f68d50a489a --- /dev/null +++ b/config/amd64/none/defines @@ -0,0 +1,4 @@ +[base] +flavours: + amd64 + cloud-amd64 diff --git a/config/amd64/rt/defines b/config/amd64/rt/defines new file mode 100644 index 00000000000..090dc41bfb9 --- /dev/null +++ b/config/amd64/rt/defines @@ -0,0 +1,3 @@ +[base] +flavours: + amd64 diff --git a/config/arm64/config b/config/arm64/config new file mode 100644 index 00000000000..a9977b5c66f --- /dev/null +++ b/config/arm64/config @@ -0,0 +1,1109 @@ +## +## file: arch/arm64/Kconfig +## +CONFIG_PCI=y +CONFIG_ARM64_ERRATUM_834220=y +#. Until we decide how/whether to handle this in userland as well +# CONFIG_ARM64_ERRATUM_843419 is not set +## choice: Virtual address space size +CONFIG_ARM64_VA_BITS_48=y +## end choice +CONFIG_SCHED_MC=y +CONFIG_NR_CPUS=256 +CONFIG_NUMA=y +CONFIG_SECCOMP=y +CONFIG_KEXEC=y +CONFIG_CRASH_DUMP=y +CONFIG_XEN=y +CONFIG_ARMV8_DEPRECATED=y +CONFIG_SWP_EMULATION=y +CONFIG_CP15_BARRIER_EMULATION=y +CONFIG_SETEND_EMULATION=y +CONFIG_ARM64_PMEM=y +CONFIG_RANDOMIZE_BASE=y +CONFIG_RANDOMIZE_MODULE_REGION_FULL=y +CONFIG_ARM64_ACPI_PARKING_PROTOCOL=y +CONFIG_COMPAT=y + +## +## file: arch/arm64/crypto/Kconfig +## +CONFIG_ARM64_CRYPTO=y +CONFIG_CRYPTO_SHA1_ARM64_CE=m +CONFIG_CRYPTO_SHA2_ARM64_CE=m +CONFIG_CRYPTO_GHASH_ARM64_CE=m +CONFIG_CRYPTO_CRC32_ARM64_CE=y +CONFIG_CRYPTO_AES_ARM64_CE=m +CONFIG_CRYPTO_AES_ARM64_CE_CCM=m +CONFIG_CRYPTO_AES_ARM64_CE_BLK=m +# CONFIG_CRYPTO_AES_ARM64_NEON_BLK is not set + +## +## file: arch/arm64/kvm/Kconfig +## +CONFIG_VIRTUALIZATION=y +CONFIG_KVM=y + +## +## file: arch/arm64/Kconfig.platforms +## +CONFIG_ARCH_SUNXI=y +CONFIG_ARCH_BCM2835=y +CONFIG_ARCH_HISI=y +CONFIG_ARCH_MESON=y +CONFIG_ARCH_MVEBU=y +CONFIG_ARCH_QCOM=y +CONFIG_ARCH_ROCKCHIP=y +CONFIG_ARCH_SEATTLE=y +CONFIG_ARCH_TEGRA=y +CONFIG_ARCH_THUNDER=y +CONFIG_ARCH_THUNDER2=y +CONFIG_ARCH_VEXPRESS=y +CONFIG_ARCH_XGENE=y + +## +## file: drivers/acpi/Kconfig +## +CONFIG_ACPI=y +CONFIG_ACPI_NUMA=y + +## +## file: drivers/acpi/nfit/Kconfig +## +CONFIG_ACPI_NFIT=y + +## +## file: drivers/ata/Kconfig +## +CONFIG_SATA_AHCI_PLATFORM=m +CONFIG_AHCI_MVEBU=m +CONFIG_AHCI_TEGRA=m +CONFIG_AHCI_XGENE=m +CONFIG_SATA_AHCI_SEATTLE=m + +## +## file: drivers/base/Kconfig +## +CONFIG_DMA_CMA=y +CONFIG_CMA_SIZE_MBYTES=64 + +## +## file: drivers/bluetooth/Kconfig +## +CONFIG_BT_HCIUART=m +CONFIG_BT_QCOMSMD=m + +## +## file: drivers/bus/Kconfig +## +CONFIG_QCOM_EBI2=y +CONFIG_TEGRA_ACONNECT=y + +## +## file: drivers/char/hw_random/Kconfig +## +CONFIG_HW_RANDOM_BCM2835=m +# CONFIG_HW_RANDOM_OMAP is not set +CONFIG_HW_RANDOM_HISI=m +CONFIG_HW_RANDOM_MSM=m +CONFIG_HW_RANDOM_XGENE=m +CONFIG_HW_RANDOM_MESON=m +CONFIG_HW_RANDOM_CAVIUM=m + +## +## file: drivers/char/ipmi/Kconfig +## +CONFIG_IPMI_HANDLER=m +CONFIG_IPMI_DEVICE_INTERFACE=m +CONFIG_IPMI_SSIF=m + +## +## file: drivers/clk/Kconfig +## +CONFIG_COMMON_CLK_HI655X=y +CONFIG_COMMON_CLK_RK808=y +CONFIG_COMMON_CLK_XGENE=y + +## +## file: drivers/clk/hisilicon/Kconfig +## +CONFIG_STUB_CLK_HI6220=y + +## +## file: drivers/clk/qcom/Kconfig +## +CONFIG_COMMON_CLK_QCOM=y +CONFIG_QCOM_CLK_RPM=m +CONFIG_QCOM_CLK_SMD_RPM=m +CONFIG_MSM_GCC_8916=y +CONFIG_MSM_GCC_8996=y +CONFIG_MSM_MMCC_8996=y + +## +## file: drivers/cpufreq/Kconfig +## +CONFIG_CPUFREQ_DT=m + +## +## file: drivers/cpufreq/Kconfig.arm +## +CONFIG_ACPI_CPPC_CPUFREQ=m + +## +## file: drivers/cpuidle/Kconfig.arm +## +CONFIG_ARM_CPUIDLE=y + +## +## file: drivers/crypto/Kconfig +## +CONFIG_CRYPTO_DEV_MARVELL_CESA=m +CONFIG_CRYPTO_DEV_QCE=m +CONFIG_CRYPTO_DEV_SAFEXCEL=m + +## +## file: drivers/crypto/cavium/cpt/Kconfig +## +CONFIG_CAVIUM_CPT=m + +## +## file: drivers/crypto/cavium/nitrox/Kconfig +## +CONFIG_CRYPTO_DEV_NITROX_CNN55XX=m + +## +## file: drivers/dma/Kconfig +## +CONFIG_DMADEVICES=y +CONFIG_DMA_BCM2835=y +CONFIG_K3_DMA=m +CONFIG_MV_XOR=y +CONFIG_MV_XOR_V2=y +CONFIG_PL330_DMA=m +CONFIG_TEGRA20_APB_DMA=y +CONFIG_TEGRA210_ADMA=y +CONFIG_XGENE_DMA=m + +## +## file: drivers/dma/qcom/Kconfig +## +CONFIG_QCOM_BAM_DMA=m +CONFIG_QCOM_HIDMA_MGMT=m +CONFIG_QCOM_HIDMA=m + +## +## file: drivers/edac/Kconfig +## +CONFIG_EDAC=y +CONFIG_EDAC_THUNDERX=m +CONFIG_EDAC_XGENE=m + +## +## file: drivers/extcon/Kconfig +## +CONFIG_EXTCON=m +CONFIG_EXTCON_QCOM_SPMI_MISC=m +CONFIG_EXTCON_USB_GPIO=m + +## +## file: drivers/firmware/Kconfig +## +CONFIG_RASPBERRYPI_FIRMWARE=y + +## +## file: drivers/gpio/Kconfig +## +CONFIG_GPIOLIB=y +CONFIG_GPIO_PL061=y +CONFIG_GPIO_XGENE=y +CONFIG_GPIO_XGENE_SB=m +CONFIG_GPIO_XLP=y +CONFIG_GPIO_PCA953X=y +CONFIG_GPIO_PCA953X_IRQ=y +CONFIG_GPIO_MAX77620=y + +## +## file: drivers/gpu/drm/Kconfig +## +CONFIG_DRM=m +CONFIG_DRM_RADEON=m +CONFIG_DRM_AMDGPU=m + +## +## file: drivers/gpu/drm/arm/Kconfig +## +CONFIG_DRM_HDLCD=m +CONFIG_DRM_MALI_DISPLAY=m + +## +## file: drivers/gpu/drm/ast/Kconfig +## +CONFIG_DRM_AST=m + +## +## file: drivers/gpu/drm/bridge/adv7511/Kconfig +## +CONFIG_DRM_I2C_ADV7511=m +CONFIG_DRM_I2C_ADV7511_AUDIO=y + +## +## file: drivers/gpu/drm/hisilicon/hibmc/Kconfig +## +CONFIG_DRM_HISI_HIBMC=m + +## +## file: drivers/gpu/drm/hisilicon/kirin/Kconfig +## +CONFIG_DRM_HISI_KIRIN=m + +## +## file: drivers/gpu/drm/meson/Kconfig +## +CONFIG_DRM_MESON=m + +## +## file: drivers/gpu/drm/msm/Kconfig +## +CONFIG_DRM_MSM=m +CONFIG_DRM_MSM_DSI=y +CONFIG_DRM_MSM_DSI_PLL=y +CONFIG_DRM_MSM_DSI_28NM_PHY=y +CONFIG_DRM_MSM_DSI_20NM_PHY=y + +## +## file: drivers/gpu/drm/nouveau/Kconfig +## +CONFIG_NOUVEAU_PLATFORM_DRIVER=y + +## +## file: drivers/gpu/drm/panel/Kconfig +## +CONFIG_DRM_PANEL_SIMPLE=m + +## +## file: drivers/gpu/drm/tegra/Kconfig +## +CONFIG_DRM_TEGRA=m +CONFIG_DRM_TEGRA_STAGING=y + +## +## file: drivers/gpu/drm/vc4/Kconfig +## +CONFIG_DRM_VC4=m + +## +## file: drivers/gpu/host1x/Kconfig +## +CONFIG_TEGRA_HOST1X=m + +## +## file: drivers/hwmon/Kconfig +## +CONFIG_SENSORS_XGENE=m + +## +## file: drivers/hwspinlock/Kconfig +## +CONFIG_HWSPINLOCK_QCOM=m + +## +## file: drivers/i2c/Kconfig +## +CONFIG_I2C=y + +## +## file: drivers/i2c/busses/Kconfig +## +CONFIG_I2C_BCM2835=m +CONFIG_I2C_DESIGNWARE_PLATFORM=m +CONFIG_I2C_MESON=m +CONFIG_I2C_MV64XXX=m +CONFIG_I2C_PXA=m +CONFIG_I2C_QUP=m +CONFIG_I2C_RK3X=m +CONFIG_I2C_TEGRA=m +CONFIG_I2C_THUNDERX=m +CONFIG_I2C_XLP9XX=m +CONFIG_I2C_CROS_EC_TUNNEL=m +CONFIG_I2C_XGENE_SLIMPRO=m + +## +## file: drivers/iio/adc/Kconfig +## +CONFIG_QCOM_SPMI_IADC=m +CONFIG_QCOM_SPMI_VADC=m + +## +## file: drivers/input/keyboard/Kconfig +## +CONFIG_KEYBOARD_GPIO=m +CONFIG_KEYBOARD_TEGRA=m + +## +## file: drivers/input/misc/Kconfig +## +CONFIG_INPUT_MISC=y +CONFIG_INPUT_PM8941_PWRKEY=m +CONFIG_INPUT_UINPUT=m +CONFIG_INPUT_HISI_POWERKEY=m + +## +## file: drivers/iommu/Kconfig +## +CONFIG_TEGRA_IOMMU_SMMU=y +CONFIG_ARM_SMMU=y +CONFIG_ARM_SMMU_V3=y +CONFIG_QCOM_IOMMU=y + +## +## file: drivers/irqchip/Kconfig +## +CONFIG_QCOM_IRQ_COMBINER=y + +## +## file: drivers/leds/Kconfig +## +CONFIG_LEDS_GPIO=m + +## +## file: drivers/mailbox/Kconfig +## +CONFIG_MAILBOX=y +CONFIG_BCM2835_MBOX=y +CONFIG_HI6220_MBOX=y +CONFIG_QCOM_APCS_IPC=m +CONFIG_XGENE_SLIMPRO_MBOX=m + +## +## file: drivers/media/platform/Kconfig +## +CONFIG_VIDEO_QCOM_VENUS=m + +## +## file: drivers/memory/tegra/Kconfig +## +CONFIG_TEGRA_MC=y + +## +## file: drivers/mfd/Kconfig +## +CONFIG_MFD_CROS_EC=y +CONFIG_MFD_CROS_EC_I2C=m +CONFIG_MFD_CROS_EC_SPI=m +CONFIG_MFD_HI655X_PMIC=m +CONFIG_MFD_MAX77620=y +CONFIG_MFD_QCOM_RPM=m +CONFIG_MFD_SPMI_PMIC=m +CONFIG_MFD_RK808=m + +## +## file: drivers/misc/Kconfig +## +CONFIG_QCOM_COINCELL=m + +## +## file: drivers/misc/ti-st/Kconfig +## +CONFIG_TI_ST=m + +## +## file: drivers/mmc/Kconfig +## +CONFIG_MMC=y + +## +## file: drivers/mmc/host/Kconfig +## +CONFIG_MMC_ARMMMCI=m +CONFIG_MMC_QCOM_DML=y +CONFIG_MMC_SDHCI_ACPI=m +CONFIG_MMC_SDHCI_PLTFM=m +CONFIG_MMC_SDHCI_OF_ARASAN=m +CONFIG_MMC_SDHCI_TEGRA=m +CONFIG_MMC_SDHCI_IPROC=m +CONFIG_MMC_MESON_GX=m +CONFIG_MMC_SDHCI_MSM=m +CONFIG_MMC_SPI=m +CONFIG_MMC_CAVIUM_THUNDERX=m +CONFIG_MMC_DW=m +CONFIG_MMC_DW_K3=m +CONFIG_MMC_DW_ROCKCHIP=m +CONFIG_MMC_SUNXI=m +CONFIG_MMC_BCM2835=m +CONFIG_MMC_SDHCI_XENON=m + +## +## file: drivers/mtd/spi-nor/Kconfig +## +CONFIG_SPI_HISI_SFC=m + +## +## file: drivers/net/dsa/Kconfig +## +CONFIG_NET_DSA_MV88E6060=m + +## +## file: drivers/net/dsa/mv88e6xxx/Kconfig +## +CONFIG_NET_DSA_MV88E6XXX=m + +## +## file: drivers/net/ethernet/Kconfig +## +CONFIG_FEALNX=m + +## +## file: drivers/net/ethernet/3com/Kconfig +## +CONFIG_NET_VENDOR_3COM=y +CONFIG_VORTEX=m +CONFIG_TYPHOON=m + +## +## file: drivers/net/ethernet/8390/Kconfig +## +CONFIG_NET_VENDOR_8390=y +CONFIG_NE2K_PCI=m + +## +## file: drivers/net/ethernet/adaptec/Kconfig +## +CONFIG_NET_VENDOR_ADAPTEC=y +CONFIG_ADAPTEC_STARFIRE=m + +## +## file: drivers/net/ethernet/amd/Kconfig +## +CONFIG_AMD_XGBE=m + +## +## file: drivers/net/ethernet/apm/xgene/Kconfig +## +CONFIG_NET_XGENE=m + +## +## file: drivers/net/ethernet/apm/xgene-v2/Kconfig +## +CONFIG_NET_XGENE_V2=m + +## +## file: drivers/net/ethernet/cavium/Kconfig +## +CONFIG_NET_VENDOR_CAVIUM=y +CONFIG_THUNDER_NIC_PF=m +CONFIG_THUNDER_NIC_VF=m +CONFIG_THUNDER_NIC_BGX=m +CONFIG_THUNDER_NIC_RGX=m + +## +## file: drivers/net/ethernet/dec/tulip/Kconfig +## +CONFIG_NET_TULIP=y +CONFIG_DE2104X=m +CONFIG_TULIP=m +# CONFIG_TULIP_MWI is not set +# CONFIG_TULIP_MMIO is not set +CONFIG_WINBOND_840=m +CONFIG_DM9102=m + +## +## file: drivers/net/ethernet/dlink/Kconfig +## +CONFIG_NET_VENDOR_DLINK=y +CONFIG_SUNDANCE=m +# CONFIG_SUNDANCE_MMIO is not set + +## +## file: drivers/net/ethernet/hisilicon/Kconfig +## +CONFIG_NET_VENDOR_HISILICON=y +CONFIG_HIX5HD2_GMAC=m +CONFIG_HISI_FEMAC=m +CONFIG_HIP04_ETH=m +CONFIG_HNS=m +CONFIG_HNS_DSAF=m +CONFIG_HNS_ENET=m + +## +## file: drivers/net/ethernet/intel/Kconfig +## +CONFIG_NET_VENDOR_INTEL=y +CONFIG_E100=m + +## +## file: drivers/net/ethernet/marvell/Kconfig +## +CONFIG_MVNETA=m +CONFIG_MVPP2=m + +## +## file: drivers/net/ethernet/natsemi/Kconfig +## +CONFIG_NET_VENDOR_NATSEMI=y +CONFIG_NATSEMI=m + +## +## file: drivers/net/ethernet/qualcomm/Kconfig +## +CONFIG_QCOM_EMAC=m + +## +## file: drivers/net/ethernet/realtek/Kconfig +## +CONFIG_8139CP=m +CONFIG_8139TOO=m + +## +## file: drivers/net/ethernet/smsc/Kconfig +## +CONFIG_NET_VENDOR_SMSC=y +CONFIG_SMC91X=m +CONFIG_EPIC100=m +CONFIG_SMSC911X=m + +## +## file: drivers/net/ethernet/stmicro/stmmac/Kconfig +## +CONFIG_STMMAC_ETH=m +CONFIG_STMMAC_PLATFORM=m +CONFIG_DWMAC_GENERIC=m +CONFIG_DWMAC_IPQ806X=m +CONFIG_DWMAC_MESON=m +CONFIG_DWMAC_ROCKCHIP=m + +## +## file: drivers/net/fddi/Kconfig +## +CONFIG_FDDI=y +CONFIG_SKFP=m + +## +## file: drivers/net/phy/Kconfig +## +CONFIG_MDIO_HISI_FEMAC=m +CONFIG_MDIO_THUNDER=m +CONFIG_MDIO_XGENE=m +CONFIG_AT803X_PHY=m +CONFIG_MARVELL_PHY=m +CONFIG_MARVELL_10G_PHY=m +CONFIG_MESON_GXL_PHY=m + +## +## file: drivers/net/wireless/ath/wcn36xx/Kconfig +## +CONFIG_WCN36XX=m + +## +## file: drivers/net/wireless/broadcom/brcm80211/Kconfig +## +CONFIG_BRCMFMAC_SDIO=y + +## +## file: drivers/net/wireless/ti/Kconfig +## +CONFIG_WLAN_VENDOR_TI=y +CONFIG_WILINK_PLATFORM_DATA=y + +## +## file: drivers/net/wireless/ti/wl1251/Kconfig +## +CONFIG_WL1251=m +CONFIG_WL1251_SPI=m +CONFIG_WL1251_SDIO=m + +## +## file: drivers/net/wireless/ti/wl12xx/Kconfig +## +CONFIG_WL12XX=m + +## +## file: drivers/net/wireless/ti/wl18xx/Kconfig +## +CONFIG_WL18XX=m + +## +## file: drivers/net/wireless/ti/wlcore/Kconfig +## +CONFIG_WLCORE=m +CONFIG_WLCORE_SPI=m +CONFIG_WLCORE_SDIO=m + +## +## file: drivers/nvmem/Kconfig +## +CONFIG_QCOM_QFPROM=m +CONFIG_NVMEM_SUNXI_SID=m + +## +## file: drivers/pci/dwc/Kconfig +## +CONFIG_PCI_HISI=y +CONFIG_PCIE_QCOM=y +CONFIG_PCIE_ARMADA_8K=y +CONFIG_PCIE_KIRIN=y + +## +## file: drivers/pci/host/Kconfig +## +CONFIG_PCI_AARDVARK=y +CONFIG_PCI_HOST_GENERIC=y +CONFIG_PCI_XGENE=y +CONFIG_PCI_HOST_THUNDER_PEM=y +CONFIG_PCI_HOST_THUNDER_ECAM=y +CONFIG_PCIE_ROCKCHIP=y + +## +## file: drivers/pci/hotplug/Kconfig +## +CONFIG_HOTPLUG_PCI=y +CONFIG_HOTPLUG_PCI_ACPI=y +CONFIG_HOTPLUG_PCI_ACPI_IBM=m +CONFIG_HOTPLUG_PCI_CPCI_ZT5550=m +CONFIG_HOTPLUG_PCI_CPCI_GENERIC=m +CONFIG_HOTPLUG_PCI_SHPC=m + +## +## file: drivers/phy/Kconfig +## +CONFIG_PHY_XGENE=m + +## +## file: drivers/phy/allwinner/Kconfig +## +CONFIG_PHY_SUN4I_USB=m + +## +## file: drivers/phy/amlogic/Kconfig +## +CONFIG_PHY_MESON8B_USB2=m + +## +## file: drivers/phy/hisilicon/Kconfig +## +CONFIG_PHY_HI6220_USB=m + +## +## file: drivers/phy/marvell/Kconfig +## +CONFIG_PHY_MVEBU_CP110_COMPHY=m + +## +## file: drivers/phy/qualcomm/Kconfig +## +CONFIG_PHY_QCOM_APQ8064_SATA=m +CONFIG_PHY_QCOM_IPQ806X_SATA=m +CONFIG_PHY_QCOM_QMP=m +CONFIG_PHY_QCOM_QUSB2=m +CONFIG_PHY_QCOM_UFS=m +CONFIG_PHY_QCOM_USB_HS=m +CONFIG_PHY_QCOM_USB_HSIC=m + +## +## file: drivers/phy/rockchip/Kconfig +## +CONFIG_PHY_ROCKCHIP_EMMC=m +CONFIG_PHY_ROCKCHIP_INNO_USB2=m +CONFIG_PHY_ROCKCHIP_PCIE=m + +## +## file: drivers/phy/tegra/Kconfig +## +CONFIG_PHY_TEGRA_XUSB=m + +## +## file: drivers/pinctrl/Kconfig +## +CONFIG_PINCTRL_AMD=y +CONFIG_PINCTRL_SINGLE=y +CONFIG_PINCTRL_MAX77620=y + +## +## file: drivers/pinctrl/qcom/Kconfig +## +CONFIG_PINCTRL_MSM8916=y +CONFIG_PINCTRL_MSM8996=y +CONFIG_PINCTRL_QCOM_SPMI_PMIC=y +CONFIG_PINCTRL_QCOM_SSBI_PMIC=y + +## +## file: drivers/platform/chrome/Kconfig +## +CONFIG_CHROME_PLATFORMS=y +CONFIG_CROS_KBD_LED_BACKLIGHT=m + +## +## file: drivers/power/avs/Kconfig +## +CONFIG_POWER_AVS=y +CONFIG_ROCKCHIP_IODOMAIN=m + +## +## file: drivers/power/reset/Kconfig +## +CONFIG_POWER_RESET_HISI=y +CONFIG_POWER_RESET_MSM=y +CONFIG_POWER_RESET_VEXPRESS=y +CONFIG_POWER_RESET_XGENE=y +CONFIG_POWER_RESET_SYSCON=y +CONFIG_POWER_RESET_SYSCON_POWEROFF=y + +## +## file: drivers/power/supply/Kconfig +## +CONFIG_BATTERY_BQ27XXX=m +CONFIG_CHARGER_QCOM_SMBB=m + +## +## file: drivers/pwm/Kconfig +## +CONFIG_PWM=y +CONFIG_PWM_BCM2835=m +CONFIG_PWM_MESON=m +CONFIG_PWM_ROCKCHIP=m +CONFIG_PWM_TEGRA=m + +## +## file: drivers/regulator/Kconfig +## +CONFIG_REGULATOR=y +CONFIG_REGULATOR_FIXED_VOLTAGE=m +CONFIG_REGULATOR_GPIO=m +CONFIG_REGULATOR_HI655X=m +CONFIG_REGULATOR_MAX77620=m +CONFIG_REGULATOR_PWM=m +CONFIG_REGULATOR_QCOM_RPM=m +CONFIG_REGULATOR_QCOM_SMD_RPM=m +CONFIG_REGULATOR_QCOM_SPMI=m +CONFIG_REGULATOR_RK808=m +CONFIG_REGULATOR_FAN53555=m + +## +## file: drivers/remoteproc/Kconfig +## +CONFIG_QCOM_Q6V5_PIL=m +#. We want to enable this but it currently results in a dependency loop! +# CONFIG_QCOM_WCNSS_PIL is not set + +## +## file: drivers/reset/Kconfig +## +CONFIG_RESET_CONTROLLER=y + +## +## file: drivers/rpmsg/Kconfig +## +CONFIG_RPMSG_QCOM_GLINK_RPM=m +CONFIG_RPMSG_QCOM_GLINK_SMEM=m +CONFIG_RPMSG_QCOM_SMD=m + +## +## file: drivers/rtc/Kconfig +## +CONFIG_RTC_DRV_DS1307=y +CONFIG_RTC_DRV_MAX77686=y +CONFIG_RTC_DRV_RK808=y +CONFIG_RTC_DRV_EFI=y +CONFIG_RTC_DRV_PL031=y +CONFIG_RTC_DRV_SUN6I=y +CONFIG_RTC_DRV_MV=m +CONFIG_RTC_DRV_ARMADA38X=m +CONFIG_RTC_DRV_PM8XXX=m +CONFIG_RTC_DRV_TEGRA=y +CONFIG_RTC_DRV_XGENE=y + +## +## file: drivers/scsi/Kconfig +## +CONFIG_SCSI_DMX3191D=m + +## +## file: drivers/scsi/hisi_sas/Kconfig +## +CONFIG_SCSI_HISI_SAS=m +CONFIG_SCSI_HISI_SAS_PCI=m + +## +## file: drivers/soc/bcm/Kconfig +## +CONFIG_RASPBERRYPI_POWER=y + +## +## file: drivers/soc/qcom/Kconfig +## +CONFIG_QCOM_GSBI=m +CONFIG_QCOM_SMEM=m +CONFIG_QCOM_SMD_RPM=m +CONFIG_QCOM_SMP2P=m +CONFIG_QCOM_SMSM=m +CONFIG_QCOM_WCNSS_CTRL=m + +## +## file: drivers/soc/rockchip/Kconfig +## +CONFIG_ROCKCHIP_PM_DOMAINS=y + +## +## file: drivers/soc/tegra/Kconfig +## +CONFIG_ARCH_TEGRA_132_SOC=y +CONFIG_ARCH_TEGRA_210_SOC=y + +## +## file: drivers/spi/Kconfig +## +CONFIG_SPI_ARMADA_3700=m +CONFIG_SPI_BCM2835=m +CONFIG_SPI_BCM2835AUX=m +CONFIG_SPI_MESON_SPIFC=m +CONFIG_SPI_QUP=m +CONFIG_SPI_TEGRA114=m +CONFIG_SPI_TEGRA20_SFLASH=m +CONFIG_SPI_TEGRA20_SLINK=m +CONFIG_SPI_THUNDERX=m +CONFIG_SPI_XLP=m + +## +## file: drivers/spmi/Kconfig +## +CONFIG_SPMI=y +CONFIG_SPMI_MSM_PMIC_ARB=y + +## +## file: drivers/staging/rtl8723bs/Kconfig +## +CONFIG_RTL8723BS=m + +## +## file: drivers/tee/Kconfig +## +CONFIG_TEE=m + +## +## file: drivers/tee/optee/Kconfig +## +CONFIG_OPTEE=m + +## +## file: drivers/thermal/Kconfig +## +CONFIG_THERMAL=y +CONFIG_CPU_THERMAL=y +CONFIG_HISI_THERMAL=m +CONFIG_ARMADA_THERMAL=m +CONFIG_QCOM_SPMI_TEMP_ALARM=m + +## +## file: drivers/thermal/broadcom/Kconfig +## +CONFIG_BCM2835_THERMAL=m + +## +## file: drivers/thermal/qcom/Kconfig +## +CONFIG_QCOM_TSENS=m + +## +## file: drivers/thermal/tegra/Kconfig +## +CONFIG_TEGRA_SOCTHERM=y + +## +## file: drivers/tty/serdev/Kconfig +## +CONFIG_SERIAL_DEV_BUS=m + +## +## file: drivers/tty/serial/Kconfig +## +CONFIG_SERIAL_AMBA_PL010=y +CONFIG_SERIAL_AMBA_PL010_CONSOLE=y +CONFIG_SERIAL_AMBA_PL011=y +CONFIG_SERIAL_AMBA_PL011_CONSOLE=y +CONFIG_SERIAL_MESON=y +CONFIG_SERIAL_MESON_CONSOLE=y +CONFIG_SERIAL_TEGRA=y +CONFIG_SERIAL_MSM=y +CONFIG_SERIAL_MSM_CONSOLE=y +CONFIG_SERIAL_MVEBU_UART=y +CONFIG_SERIAL_MVEBU_CONSOLE=y + +## +## file: drivers/tty/serial/8250/Kconfig +## +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_DMA=y +CONFIG_SERIAL_8250_NR_UARTS=4 +CONFIG_SERIAL_8250_RUNTIME_UARTS=4 +CONFIG_SERIAL_8250_EXTENDED=y +CONFIG_SERIAL_8250_SHARE_IRQ=y +CONFIG_SERIAL_8250_BCM2835AUX=y +CONFIG_SERIAL_8250_DW=y +# CONFIG_SERIAL_8250_EM is not set +CONFIG_SERIAL_OF_PLATFORM=y + +## +## file: drivers/usb/chipidea/Kconfig +## +CONFIG_USB_CHIPIDEA=m +CONFIG_USB_CHIPIDEA_UDC=y +CONFIG_USB_CHIPIDEA_HOST=y +CONFIG_USB_CHIPIDEA_ULPI=y + +## +## file: drivers/usb/dwc2/Kconfig +## +CONFIG_USB_DWC2=m +## choice: DWC2 Mode Selection +CONFIG_USB_DWC2_DUAL_ROLE=y +## end choice + +## +## file: drivers/usb/dwc3/Kconfig +## +CONFIG_USB_DWC3=m +CONFIG_USB_DWC3_ULPI=y +## choice: DWC3 Mode Selection +CONFIG_USB_DWC3_DUAL_ROLE=y +## end choice + +## +## file: drivers/usb/gadget/Kconfig +## +CONFIG_USB_GADGET=m + +## +## file: drivers/usb/host/Kconfig +## +CONFIG_USB_XHCI_HCD=m +CONFIG_USB_XHCI_PLATFORM=m +CONFIG_USB_XHCI_TEGRA=m +CONFIG_USB_EHCI_HCD=m +CONFIG_USB_EHCI_TEGRA=m +CONFIG_USB_EHCI_HCD_PLATFORM=m +CONFIG_USB_OHCI_HCD=m +CONFIG_USB_OHCI_HCD_PLATFORM=m + +## +## file: drivers/usb/isp1760/Kconfig +## +CONFIG_USB_ISP1760=m +## choice: ISP1760 Mode Selection +# CONFIG_USB_ISP1760_HOST_ROLE is not set +# CONFIG_USB_ISP1760_GADGET_ROLE is not set +CONFIG_USB_ISP1760_DUAL_ROLE=y +## end choice + +## +## file: drivers/usb/misc/Kconfig +## +CONFIG_USB_HSIC_USB3503=m + +## +## file: drivers/usb/phy/Kconfig +## +CONFIG_NOP_USB_XCEIV=m +CONFIG_USB_ULPI=y + +## +## file: drivers/vfio/Kconfig +## +CONFIG_VFIO=m +CONFIG_VFIO_NOIOMMU=y + +## +## file: drivers/vfio/pci/Kconfig +## +CONFIG_VFIO_PCI=m + +## +## file: drivers/video/backlight/Kconfig +## +CONFIG_BACKLIGHT_GENERIC=m +CONFIG_BACKLIGHT_LP855X=m + +## +## file: drivers/video/fbdev/Kconfig +## +CONFIG_FB_ARMCLCD=y +CONFIG_FB_EFI=y +CONFIG_FB_SIMPLE=y + +## +## file: drivers/virtio/Kconfig +## +CONFIG_VIRTIO_MMIO=m + +## +## file: drivers/watchdog/Kconfig +## +CONFIG_GPIO_WATCHDOG=m +CONFIG_ARM_SP805_WATCHDOG=m +CONFIG_ARM_SBSA_WATCHDOG=m +CONFIG_DW_WATCHDOG=m +CONFIG_TEGRA_WATCHDOG=m +CONFIG_QCOM_WDT=m +CONFIG_MESON_GXBB_WATCHDOG=m +CONFIG_MESON_WATCHDOG=m +CONFIG_BCM2835_WDT=m + +## +## file: fs/pstore/Kconfig +## +CONFIG_PSTORE=y + +## +## file: mm/Kconfig +## +CONFIG_CMA=y + +## +## file: net/bluetooth/Kconfig +## +CONFIG_BT_LEDS=y + +## +## file: net/dsa/Kconfig +## +CONFIG_NET_DSA=m + +## +## file: sound/pci/hda/Kconfig +## +CONFIG_SND_HDA_INTEL=m +CONFIG_SND_HDA_TEGRA=m + +## +## file: sound/soc/Kconfig +## +CONFIG_SND_SOC=m + +## +## file: sound/soc/bcm/Kconfig +## +CONFIG_SND_BCM2835_SOC_I2S=m + +## +## file: sound/soc/hisilicon/Kconfig +## +CONFIG_SND_I2S_HI6210_I2S=m + +## +## file: sound/soc/qcom/Kconfig +## +CONFIG_SND_SOC_QCOM=m +CONFIG_SND_SOC_APQ8016_SBC=m + +## +## file: sound/soc/tegra/Kconfig +## +CONFIG_SND_SOC_TEGRA=m +CONFIG_SND_SOC_TEGRA_RT5640=m +CONFIG_SND_SOC_TEGRA_WM8753=m +CONFIG_SND_SOC_TEGRA_WM8903=m +CONFIG_SND_SOC_TEGRA_TRIMSLICE=m +CONFIG_SND_SOC_TEGRA_ALC5632=m +CONFIG_SND_SOC_TEGRA_MAX98090=m +CONFIG_SND_SOC_TEGRA_RT5677=m + diff --git a/config/arm64/defines b/config/arm64/defines new file mode 100644 index 00000000000..a50579a04c5 --- /dev/null +++ b/config/arm64/defines @@ -0,0 +1,18 @@ +[base] +kernel-arch: arm64 +featuresets: + none + +[build] +debug-info: true +image-file: arch/arm64/boot/Image +vdso: true + +[image] +install-stem: vmlinuz +breaks: libmozjs185-1.0, libmozjs-24-0 (<< 24.2.0-5.1~) + +[arm64_description] +hardware: 64-bit ARMv8 machines + +[arm64_image] diff --git a/config/arm64/none/defines b/config/arm64/none/defines new file mode 100644 index 00000000000..fdea40cbcaf --- /dev/null +++ b/config/arm64/none/defines @@ -0,0 +1,3 @@ +[base] +flavours: + arm64 diff --git a/config/arm64ilp32/defines b/config/arm64ilp32/defines new file mode 100644 index 00000000000..999d4166e55 --- /dev/null +++ b/config/arm64ilp32/defines @@ -0,0 +1,5 @@ +[base] +kernel-arch: arm64 +featuresets: +# empty; arm64ilp32 must be part of a multiarch installation with an arm64 +# kernel diff --git a/config/armel/config b/config/armel/config new file mode 100644 index 00000000000..ef0b4db297b --- /dev/null +++ b/config/armel/config @@ -0,0 +1,10 @@ +## +## file: security/selinux/Kconfig +## +# CONFIG_SECURITY_SELINUX is not set + +## +## file: security/tomoyo/Kconfig +## +# CONFIG_SECURITY_TOMOYO is not set + diff --git a/config/armel/config.marvell b/config/armel/config.marvell new file mode 100644 index 00000000000..c5703aeeb32 --- /dev/null +++ b/config/armel/config.marvell @@ -0,0 +1,851 @@ +## +## file: arch/Kconfig +## +# CONFIG_KPROBES is not set +## choice: Stack Protector buffer overflow detection +CONFIG_CC_STACKPROTECTOR_REGULAR=y +# CONFIG_CC_STACKPROTECTOR_STRONG is not set +## end choice +# CONFIG_STRICT_KERNEL_RWX is not set + +## +## file: arch/arm/Kconfig +## +CONFIG_ARCH_MULTI_V5=y +# CONFIG_ARCH_MULTI_V7 is not set +CONFIG_PCI=y +CONFIG_HIGHMEM=y +CONFIG_UACCESS_WITH_MEMCPY=y +CONFIG_ZBOOT_ROM_TEXT=0x0 +CONFIG_ZBOOT_ROM_BSS=0x0 +CONFIG_ARM_APPENDED_DTB=y +CONFIG_ARM_ATAG_DTB_COMPAT=y +CONFIG_CMDLINE="" +# CONFIG_XIP_KERNEL is not set +CONFIG_ATAGS_PROC=y +CONFIG_VFP=y + +## +## file: arch/arm/Kconfig.debug +## +## choice: Kernel low-level debugging port +# CONFIG_DEBUG_ICEDCC is not set +CONFIG_DEBUG_LL_UART_8250=y +## end choice +#. Kirkwood (with new boot loader) and Orion both have an 8250 at +#. physical address 0xf1012000. +CONFIG_DEBUG_UART_PHYS=0xf1012000 +#. MVEBU is flexible about the virtual address (relying on +#. debug_ll_io_init()) but Orion maps the 8250 as part of a larger +#. block of registers. So use the VA that Orion requires. +CONFIG_DEBUG_UART_VIRT=0xfe012000 + +## +## file: arch/arm/mach-imx/Kconfig +## +# CONFIG_ARCH_MXC is not set + +## +## file: arch/arm/mach-mvebu/Kconfig +## +CONFIG_ARCH_MVEBU=y +CONFIG_MACH_KIRKWOOD=y + +## +## file: arch/arm/mach-orion5x/Kconfig +## +CONFIG_ARCH_ORION5X=y +CONFIG_MACH_DB88F5281=y +CONFIG_MACH_RD88F5182=y +CONFIG_MACH_RD88F5182_DT=y +CONFIG_MACH_KUROBOX_PRO=y +#. Only 1.5 MB flash available for kernel +# CONFIG_MACH_DNS323 is not set +CONFIG_MACH_TS209=y +CONFIG_MACH_TERASTATION_PRO2=y +CONFIG_MACH_LINKSTATION_PRO=y +CONFIG_MACH_LINKSTATION_MINI=y +CONFIG_MACH_LINKSTATION_LS_HGL=y +CONFIG_MACH_TS409=y +CONFIG_MACH_WRT350N_V2=y +CONFIG_MACH_TS78XX=y +CONFIG_MACH_MV2120=y +CONFIG_MACH_NET2BIG=y +CONFIG_MACH_MSS2_DT=y +CONFIG_MACH_WNR854T=y +CONFIG_MACH_RD88F5181L_GE=y +CONFIG_MACH_RD88F5181L_FXO=y +CONFIG_MACH_RD88F6183AP_GE=y + +## +## file: arch/arm/mm/Kconfig +## +CONFIG_CPU_FEROCEON_OLD_ID=y +CONFIG_ARM_THUMB=y +# CONFIG_CPU_ICACHE_DISABLE is not set +# CONFIG_CPU_DCACHE_DISABLE is not set +# CONFIG_CPU_DCACHE_WRITETHROUGH is not set + +## +## file: block/Kconfig.iosched +## +CONFIG_IOSCHED_DEADLINE=m +CONFIG_MQ_IOSCHED_DEADLINE=m + +## +## file: block/partitions/Kconfig +## +CONFIG_ACORN_PARTITION=y +# CONFIG_ACORN_PARTITION_CUMANA is not set +# CONFIG_ACORN_PARTITION_EESOX is not set +CONFIG_ACORN_PARTITION_ICS=y +# CONFIG_ACORN_PARTITION_ADFS is not set +# CONFIG_ACORN_PARTITION_POWERTEC is not set +CONFIG_ACORN_PARTITION_RISCIX=y +CONFIG_OSF_PARTITION=y +CONFIG_AMIGA_PARTITION=y +CONFIG_ATARI_PARTITION=y +CONFIG_MAC_PARTITION=y +CONFIG_BSD_DISKLABEL=y +CONFIG_MINIX_SUBPARTITION=y +CONFIG_SOLARIS_X86_PARTITION=y +CONFIG_UNIXWARE_DISKLABEL=y +CONFIG_LDM_PARTITION=y +# CONFIG_LDM_DEBUG is not set +CONFIG_SGI_PARTITION=y +CONFIG_ULTRIX_PARTITION=y +CONFIG_SUN_PARTITION=y + +## +## file: crypto/Kconfig +## +# CONFIG_CRYPTO_FIPS is not set +CONFIG_CRYPTO_SHA256=m + +## +## file: drivers/ata/Kconfig +## +CONFIG_ATA=m +CONFIG_SATA_AHCI=m +# CONFIG_SATA_SIL24 is not set +CONFIG_ATA_SFF=y +# CONFIG_PDC_ADMA is not set +# CONFIG_SATA_QSTOR is not set +# CONFIG_SATA_SX4 is not set +# CONFIG_ATA_PIIX is not set +CONFIG_SATA_MV=m +# CONFIG_SATA_NV is not set +# CONFIG_SATA_PROMISE is not set +# CONFIG_SATA_SIL is not set +# CONFIG_SATA_SIS is not set +# CONFIG_SATA_SVW is not set +# CONFIG_SATA_ULI is not set +# CONFIG_SATA_VIA is not set +# CONFIG_SATA_VITESSE is not set +# CONFIG_PATA_ALI is not set +# CONFIG_PATA_AMD is not set +# CONFIG_PATA_ARTOP is not set +# CONFIG_PATA_ATIIXP is not set +# CONFIG_PATA_CMD64X is not set +# CONFIG_PATA_CS5520 is not set +# CONFIG_PATA_CYPRESS is not set +# CONFIG_PATA_EFAR is not set +# CONFIG_PATA_HPT366 is not set +# CONFIG_PATA_HPT37X is not set +# CONFIG_PATA_HPT3X2N is not set +# CONFIG_PATA_HPT3X3 is not set +# CONFIG_PATA_IT8213 is not set +# CONFIG_PATA_IT821X is not set +# CONFIG_PATA_JMICRON is not set +# CONFIG_PATA_MARVELL is not set +# CONFIG_PATA_NETCELL is not set +# CONFIG_PATA_NINJA32 is not set +# CONFIG_PATA_NS87415 is not set +# CONFIG_PATA_OLDPIIX is not set +# CONFIG_PATA_OPTIDMA is not set +# CONFIG_PATA_PDC2027X is not set +# CONFIG_PATA_PDC_OLD is not set +# CONFIG_PATA_RADISYS is not set +# CONFIG_PATA_SC1200 is not set +# CONFIG_PATA_SCH is not set +# CONFIG_PATA_SERVERWORKS is not set +# CONFIG_PATA_SIL680 is not set +# CONFIG_PATA_SIS is not set +# CONFIG_PATA_TRIFLEX is not set +# CONFIG_PATA_VIA is not set +# CONFIG_PATA_WINBOND is not set +# CONFIG_PATA_CMD640_PCI is not set +# CONFIG_PATA_MPIIX is not set +# CONFIG_PATA_NS87410 is not set +# CONFIG_PATA_OPTI is not set +# CONFIG_PATA_RZ1000 is not set +# CONFIG_ATA_GENERIC is not set + +## +## file: drivers/base/Kconfig +## +CONFIG_FW_LOADER=m + +## +## file: drivers/bluetooth/Kconfig +## +# CONFIG_BT_HCIUART is not set +CONFIG_BT_HCIBCM203X=m +CONFIG_BT_HCIBPA10X=m +CONFIG_BT_HCIBFUSB=m +CONFIG_BT_HCIVHCI=m + +## +## file: drivers/connector/Kconfig +## +CONFIG_CONNECTOR=m + +## +## file: drivers/cpuidle/Kconfig +## +CONFIG_CPU_IDLE=y + +## +## file: drivers/cpuidle/Kconfig.arm +## +CONFIG_ARM_KIRKWOOD_CPUIDLE=y + +## +## file: drivers/crypto/Kconfig +## +CONFIG_CRYPTO_DEV_MARVELL_CESA=m + +## +## file: drivers/dma/Kconfig +## +CONFIG_DMADEVICES=y +CONFIG_MV_XOR=y + +## +## file: drivers/gpu/drm/Kconfig +## +# CONFIG_DRM is not set + +## +## file: drivers/gpu/vga/Kconfig +## +# CONFIG_VGA_ARB is not set + +## +## file: drivers/hwmon/Kconfig +## +CONFIG_HWMON=m +CONFIG_SENSORS_G760A=m +CONFIG_SENSORS_G762=m +CONFIG_SENSORS_GPIO_FAN=m +CONFIG_SENSORS_LM75=m + +## +## file: drivers/i2c/Kconfig +## +CONFIG_I2C=y +CONFIG_I2C_CHARDEV=y + +## +## file: drivers/i2c/busses/Kconfig +## +CONFIG_I2C_MV64XXX=y + +## +## file: drivers/input/Kconfig +## +CONFIG_INPUT_MOUSEDEV=m + +## +## file: drivers/input/gameport/Kconfig +## +CONFIG_GAMEPORT=m + +## +## file: drivers/input/joystick/Kconfig +## +CONFIG_INPUT_JOYSTICK=y + +## +## file: drivers/input/keyboard/Kconfig +## +# CONFIG_KEYBOARD_ATKBD is not set +CONFIG_KEYBOARD_GPIO=m + +## +## file: drivers/input/serio/Kconfig +## +CONFIG_SERIO=m +CONFIG_SERIO_SERPORT=m +# CONFIG_SERIO_PCIPS2 is not set +CONFIG_SERIO_LIBPS2=m +# CONFIG_SERIO_RAW is not set + +## +## file: drivers/input/touchscreen/Kconfig +## +CONFIG_INPUT_TOUCHSCREEN=y + +## +## file: drivers/isdn/Kconfig +## +CONFIG_ISDN=y +CONFIG_ISDN_CAPI=m + +## +## file: drivers/isdn/capi/Kconfig +## +CONFIG_ISDN_CAPI_CAPI20=m +CONFIG_ISDN_CAPI_MIDDLEWARE=y +CONFIG_ISDN_CAPI_CAPIDRV=m + +## +## file: drivers/isdn/hardware/avm/Kconfig +## +CONFIG_CAPI_AVM=y +CONFIG_ISDN_DRV_AVMB1_B1PCI=m +CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y +CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m +CONFIG_ISDN_DRV_AVMB1_AVM_CS=m +CONFIG_ISDN_DRV_AVMB1_T1PCI=m +CONFIG_ISDN_DRV_AVMB1_C4=m + +## +## file: drivers/isdn/hardware/eicon/Kconfig +## +CONFIG_CAPI_EICON=y +CONFIG_ISDN_DIVAS=m +CONFIG_ISDN_DIVAS_BRIPCI=y +CONFIG_ISDN_DIVAS_PRIPCI=y +CONFIG_ISDN_DIVAS_DIVACAPI=m +CONFIG_ISDN_DIVAS_USERIDI=m +CONFIG_ISDN_DIVAS_MAINT=m + +## +## file: drivers/leds/Kconfig +## +CONFIG_LEDS_NS2=m +CONFIG_LEDS_NETXBIG=m + +## +## file: drivers/leds/trigger/Kconfig +## +CONFIG_LEDS_TRIGGER_TIMER=y +CONFIG_LEDS_TRIGGER_DEFAULT_ON=y + +## +## file: drivers/mmc/Kconfig +## +CONFIG_MMC=m + +## +## file: drivers/mmc/core/Kconfig +## +CONFIG_MMC_BLOCK=m + +## +## file: drivers/mmc/host/Kconfig +## +CONFIG_MMC_MVSDIO=m + +## +## file: drivers/mtd/Kconfig +## +CONFIG_MTD=y +# CONFIG_MTD_REDBOOT_PARTS is not set +CONFIG_MTD_CMDLINE_PARTS=y +# CONFIG_MTD_AFS_PARTS is not set +CONFIG_MTD_OF_PARTS=m +CONFIG_MTD_BLOCK=m +CONFIG_FTL=m +CONFIG_NFTL=m +# CONFIG_NFTL_RW is not set +# CONFIG_INFTL is not set +# CONFIG_RFD_FTL is not set +# CONFIG_SSFDC is not set +# CONFIG_MTD_OOPS is not set + +## +## file: drivers/mtd/chips/Kconfig +## +CONFIG_MTD_CFI=m +CONFIG_MTD_JEDECPROBE=m +CONFIG_MTD_CFI_ADV_OPTIONS=y +## choice: Flash cmd/query data swapping +CONFIG_MTD_CFI_NOSWAP=y +# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set +# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set +## end choice +CONFIG_MTD_CFI_GEOMETRY=y +CONFIG_MTD_MAP_BANK_WIDTH_1=y +CONFIG_MTD_MAP_BANK_WIDTH_2=y +CONFIG_MTD_MAP_BANK_WIDTH_4=y +# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set +CONFIG_MTD_CFI_I1=y +CONFIG_MTD_CFI_I2=y +CONFIG_MTD_CFI_I4=y +# CONFIG_MTD_CFI_I8 is not set +# CONFIG_MTD_OTP is not set +#. Needed e.g. on QNAP devices +CONFIG_MTD_CFI_INTELEXT=m +#. Needed e.g. on D-Link DNS-323, Buffalo KuroBox-Pro, Buffalo Linkstation LS-GL / LS-WTGL, etc +CONFIG_MTD_CFI_AMDSTD=m +CONFIG_MTD_CFI_STAA=m +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_ABSENT is not set + +## +## file: drivers/mtd/devices/Kconfig +## +# CONFIG_MTD_PMC551 is not set +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_PHRAM is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_BLOCK2MTD is not set + +## +## file: drivers/mtd/maps/Kconfig +## +# CONFIG_MTD_COMPLEX_MAPPINGS is not set +CONFIG_MTD_PHYSMAP_OF=m +# CONFIG_MTD_IMPA7 is not set +# CONFIG_MTD_INTEL_VR_NOR is not set +# CONFIG_MTD_PLATRAM is not set + +## +## file: drivers/mtd/nand/Kconfig +## +CONFIG_MTD_NAND=m +# CONFIG_MTD_NAND_DISKONCHIP is not set +# CONFIG_MTD_NAND_CAFE is not set +CONFIG_MTD_NAND_ORION=m + +## +## file: drivers/mtd/onenand/Kconfig +## +# CONFIG_MTD_ONENAND is not set + +## +## file: drivers/mtd/spi-nor/Kconfig +## +CONFIG_MTD_SPI_NOR=m + +## +## file: drivers/net/arcnet/Kconfig +## +# CONFIG_ARCNET is not set + +## +## file: drivers/net/ethernet/atheros/Kconfig +## +# CONFIG_ATL1 is not set + +## +## file: drivers/net/ethernet/broadcom/Kconfig +## +# CONFIG_BNX2 is not set +# CONFIG_TIGON3 is not set +# CONFIG_BNX2X is not set + +## +## file: drivers/net/ethernet/dlink/Kconfig +## +# CONFIG_DL2K is not set + +## +## file: drivers/net/ethernet/intel/Kconfig +## +# CONFIG_E1000 is not set +# CONFIG_E1000E is not set +# CONFIG_IGB is not set + +## +## file: drivers/net/ethernet/marvell/Kconfig +## +CONFIG_MV643XX_ETH=m +CONFIG_MVMDIO=m +# CONFIG_SKGE is not set +# CONFIG_SKY2 is not set + +## +## file: drivers/net/ethernet/natsemi/Kconfig +## +# CONFIG_NS83820 is not set + +## +## file: drivers/net/ethernet/packetengines/Kconfig +## +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set + +## +## file: drivers/net/ethernet/qlogic/Kconfig +## +# CONFIG_QLA3XXX is not set + +## +## file: drivers/net/ethernet/realtek/Kconfig +## +# CONFIG_R8169 is not set + +## +## file: drivers/net/ethernet/sis/Kconfig +## +# CONFIG_SIS190 is not set + +## +## file: drivers/net/ethernet/via/Kconfig +## +# CONFIG_VIA_VELOCITY is not set + +## +## file: drivers/net/wireless/marvell/mwifiex/Kconfig +## +CONFIG_MWIFIEX=m +CONFIG_MWIFIEX_SDIO=m + +## +## file: drivers/pci/host/Kconfig +## +CONFIG_PCI_MVEBU=y + +## +## file: drivers/pci/pcie/Kconfig +## +# CONFIG_PCIEASPM is not set +# CONFIG_PCIE_DPC is not set +# CONFIG_PCIE_PTM is not set + +## +## file: drivers/pci/pcie/aer/Kconfig +## +# CONFIG_PCIEAER is not set + +## +## file: drivers/pcmcia/Kconfig +## +# CONFIG_PCCARD is not set + +## +## file: drivers/power/reset/Kconfig +## +CONFIG_POWER_RESET=y +CONFIG_POWER_RESET_GPIO=y +CONFIG_POWER_RESET_QNAP=y +CONFIG_POWER_RESET_RESTART=y + +## +## file: drivers/regulator/Kconfig +## +CONFIG_REGULATOR=y +CONFIG_REGULATOR_FIXED_VOLTAGE=y + +## +## file: drivers/rtc/Kconfig +## +# CONFIG_RTC_NVMEM is not set +CONFIG_RTC_DRV_DS1307=m +CONFIG_RTC_DRV_RS5C372=m +CONFIG_RTC_DRV_PCF8563=m +CONFIG_RTC_DRV_M41T80=m +CONFIG_RTC_DRV_S35390A=m +CONFIG_RTC_DRV_MV=y + +## +## file: drivers/scsi/Kconfig +## +# CONFIG_BLK_DEV_3W_XXXX_RAID is not set +# CONFIG_SCSI_3W_9XXX is not set +# CONFIG_SCSI_AACRAID is not set +# CONFIG_SCSI_DPT_I2O is not set +# CONFIG_SCSI_ARCMSR is not set +# CONFIG_SCSI_HPTIOP is not set +# CONFIG_SCSI_DMX3191D is not set +# CONFIG_SCSI_FUTURE_DOMAIN is not set +# CONFIG_SCSI_IPS is not set +# CONFIG_SCSI_INITIO is not set +# CONFIG_SCSI_INIA100 is not set +# CONFIG_SCSI_STEX is not set +# CONFIG_SCSI_SYM53C8XX_2 is not set +# CONFIG_SCSI_IPR is not set +# CONFIG_SCSI_QLOGIC_1280 is not set +# CONFIG_SCSI_LPFC is not set +# CONFIG_SCSI_DC395x is not set +# CONFIG_SCSI_NSP32 is not set + +## +## file: drivers/scsi/aic7xxx/Kconfig.aic79xx +## +# CONFIG_SCSI_AIC79XX is not set + +## +## file: drivers/scsi/aic7xxx/Kconfig.aic7xxx +## +# CONFIG_SCSI_AIC7XXX is not set + +## +## file: drivers/scsi/aic94xx/Kconfig +## +# CONFIG_SCSI_AIC94XX is not set + +## +## file: drivers/scsi/megaraid/Kconfig.megaraid +## +# CONFIG_MEGARAID_NEWGEN is not set +# CONFIG_MEGARAID_LEGACY is not set +# CONFIG_MEGARAID_SAS is not set + +## +## file: drivers/scsi/mvsas/Kconfig +## +# CONFIG_SCSI_MVSAS is not set + +## +## file: drivers/scsi/qla2xxx/Kconfig +## +# CONFIG_SCSI_QLA_FC is not set + +## +## file: drivers/scsi/qla4xxx/Kconfig +## +# CONFIG_SCSI_QLA_ISCSI is not set + +## +## file: drivers/spi/Kconfig +## +CONFIG_SPI_ORION=y + +## +## file: drivers/ssb/Kconfig +## +# CONFIG_SSB is not set + +## +## file: drivers/staging/xgifb/Kconfig +## +CONFIG_FB_XGI=m + +## +## file: drivers/thermal/Kconfig +## +CONFIG_THERMAL=m +CONFIG_KIRKWOOD_THERMAL=m + +## +## file: drivers/tty/serial/8250/Kconfig +## +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_PCI=m +CONFIG_SERIAL_8250_EXAR=m +CONFIG_SERIAL_8250_NR_UARTS=4 +CONFIG_SERIAL_8250_RUNTIME_UARTS=2 +# CONFIG_SERIAL_8250_EXTENDED is not set +# CONFIG_SERIAL_8250_DW is not set +CONFIG_SERIAL_OF_PLATFORM=y + +## +## file: drivers/usb/Kconfig +## +CONFIG_USB_SUPPORT=y +CONFIG_USB=m + +## +## file: drivers/usb/atm/Kconfig +## +CONFIG_USB_ATM=m +CONFIG_USB_SPEEDTOUCH=m + +## +## file: drivers/usb/host/Kconfig +## +CONFIG_USB_EHCI_HCD=m +CONFIG_USB_EHCI_HCD_ORION=y +# CONFIG_USB_ISP116X_HCD is not set +CONFIG_USB_OHCI_HCD=m +CONFIG_USB_UHCI_HCD=m +CONFIG_USB_SL811_HCD=m + +## +## file: drivers/usb/misc/Kconfig +## +#. Selects BACKLIGHT_CLASS_DEVICE which is always built-in +# CONFIG_USB_APPLEDISPLAY is not set + +## +## file: drivers/video/backlight/Kconfig +## +# CONFIG_BACKLIGHT_CLASS_DEVICE is not set + +## +## file: drivers/video/console/Kconfig +## +# CONFIG_VGA_CONSOLE is not set +#. We want to enable this as a module, but that's not currently possible +# CONFIG_FRAMEBUFFER_CONSOLE is not set + +## +## file: drivers/video/fbdev/Kconfig +## +CONFIG_FB=m + +## +## file: drivers/virtio/Kconfig +## +# CONFIG_VIRTIO_PCI is not set +# CONFIG_VIRTIO_BALLOON is not set + +## +## file: drivers/watchdog/Kconfig +## +CONFIG_ORION_WATCHDOG=m + +## +## file: fs/Kconfig +## +# CONFIG_FS_DAX is not set + +## +## file: fs/nls/Kconfig +## +CONFIG_NLS=m + +## +## file: fs/notify/fanotify/Kconfig +## +# CONFIG_FANOTIFY_ACCESS_PERMISSIONS is not set + +## +## file: init/Kconfig +## +#. Saves about 7K +# CONFIG_MEMCG is not set +# CONFIG_CFS_BANDWIDTH is not set +# CONFIG_CGROUP_BPF is not set +## choice: Compiler optimization level +CONFIG_CC_OPTIMIZE_FOR_SIZE=y +## end choice +# CONFIG_CHECKPOINT_RESTORE is not set +# CONFIG_USERFAULTFD is not set +# CONFIG_SLUB_DEBUG is not set +# CONFIG_SLAB_FREELIST_HARDENED is not set +# CONFIG_PROFILING is not set +# CONFIG_MODULE_SIG is not set + +## +## file: kernel/power/Kconfig +## +# CONFIG_SUSPEND is not set +# CONFIG_HIBERNATION is not set +# CONFIG_PM is not set + +## +## file: kernel/trace/Kconfig +## +# CONFIG_FUNCTION_GRAPH_TRACER is not set +# CONFIG_FTRACE_SYSCALLS is not set +# CONFIG_STACK_TRACER is not set +# CONFIG_UPROBE_EVENTS is not set + +## +## file: lib/Kconfig.debug +## +# CONFIG_SCHEDSTATS is not set + +## +## file: mm/Kconfig +## +## choice: Memory model +CONFIG_FLATMEM_MANUAL=y +# CONFIG_DISCONTIGMEM_MANUAL is not set +# CONFIG_SPARSEMEM_MANUAL is not set +## end choice +#. Saves about 7K +# CONFIG_COMPACTION is not set +# CONFIG_KSM is not set + +## +## file: mm/Kconfig.debug +## +# CONFIG_PAGE_EXTENSION is not set +# CONFIG_PAGE_POISONING is not set + +## +## file: net/Kconfig +## +#. Saves about 3K +# CONFIG_BPF_JIT is not set +# CONFIG_LWTUNNEL is not set + +## +## file: net/atm/Kconfig +## +CONFIG_ATM=m + +## +## file: net/ax25/Kconfig +## +CONFIG_HAMRADIO=y +CONFIG_AX25=m +# CONFIG_AX25_DAMA_SLAVE is not set +CONFIG_NETROM=m +CONFIG_ROSE=m + +## +## file: net/ipv6/Kconfig +## +CONFIG_IPV6=m +#. Can be modular, but selects LWTUNNEL which cannot +# CONFIG_IPV6_ILA is not set + +## +## file: net/l3mdev/Kconfig +## +# CONFIG_NET_L3_MASTER_DEV is not set + +## +## file: net/mpls/Kconfig +## +# CONFIG_NET_MPLS_GSO is not set + +## +## file: net/packet/Kconfig +## +CONFIG_PACKET=m + +## +## file: security/integrity/Kconfig +## +# CONFIG_INTEGRITY is not set + +## +## file: sound/soc/Kconfig +## +CONFIG_SND_SOC=m + +## +## file: sound/soc/codecs/Kconfig +## +# CONFIG_SND_SOC_ALL_CODECS is not set +CONFIG_SND_SOC_ALC5623=m +CONFIG_SND_SOC_CS42L51_I2C=m + +## +## file: sound/soc/generic/Kconfig +## +CONFIG_SND_SIMPLE_CARD=m + +## +## file: sound/soc/kirkwood/Kconfig +## +CONFIG_SND_KIRKWOOD_SOC=m + +## +## file: usr/Kconfig +## +# CONFIG_RD_LZO is not set +# CONFIG_RD_LZ4 is not set + diff --git a/config/armel/defines b/config/armel/defines new file mode 100644 index 00000000000..4db6ba1337c --- /dev/null +++ b/config/armel/defines @@ -0,0 +1,44 @@ +[base] +flavours: + #marvell +kernel-arch: arm +featuresets: +# empty; not building images right now +# cf.: https://lists.debian.org/debian-release/2018/02/msg00239.html +# none + +[build] +image-file: arch/arm/boot/zImage +# Signature verification disabled to save on code size. This should +# apply only to marvell, but we would then need to build udebs only for +# marvell and we don't have a way to do that. +signed-modules: false +# uncompressed-image is just for size checking +uncompressed-image-file: arch/arm/boot/Image + +[image] +install-stem: vmlinuz + +[relations] +headers%gcc-7: linux-compiler-gcc-7-arm + +[marvell_description] +hardware: Marvell Kirkwood/Orion +hardware-long: Marvell Kirkwood based systems (SheevaPlug, QNAP TS-119/TS-219, etc) + and Orion 5181, 5182 and 5281 based systems (QNAP TS-109/TS-209, etc) + +[marvell_image] +recommends: u-boot-tools +## Maximum kernel size for supported devices (64 bytes is the u-boot header) +# SheevaPlug: 4194304 - 64 = 4194240 +# QNAP TS-119/TS-219: 2097152 - 64 = 2097088 +# D-Link DNS-323: 1572864 - 8 - 64 = 1572792 (too small, no longer supported) +# HP Media Vault mv2120: 2097152 - 8 - 64 = 2097080 +# QNAP TS-109/TS-209 & TS-409: 2097152 - 8 - 64 = 2097080 +# Buffalo Linkstation LS-WSXL/WXL/WVL (from stock kernel): 2729776 - 64 = 2729712 +check-size: 2097080 +check-size-with-dtb: true +## Maximum uncompressed kernel size for supported devices +# Buffalo Linkstation LS-WSXL/WXL/WVL: 7340032 +check-uncompressed-size: 7340032 +breaks: flash-kernel (<< 3.57~) diff --git a/config/armhf/config b/config/armhf/config new file mode 100644 index 00000000000..77c56942665 --- /dev/null +++ b/config/armhf/config @@ -0,0 +1,1359 @@ +## +## file: arch/arm/Kconfig +## +## choice: ARM system type +CONFIG_ARCH_MULTIPLATFORM=y +## end choice +# CONFIG_ARCH_MULTI_V6 is not set +CONFIG_ARCH_MULTI_V7=y +CONFIG_ARCH_VIRT=y +CONFIG_ARM_ERRATA_430973=y +CONFIG_ARM_ERRATA_643719=y +CONFIG_ARM_ERRATA_754327=y +CONFIG_ARM_ERRATA_773022=y +CONFIG_PCI=y +CONFIG_SMP=y +CONFIG_SMP_ON_UP=y +CONFIG_MCPM=y +CONFIG_NR_CPUS=8 +CONFIG_HIGHMEM=y +CONFIG_XEN=y +CONFIG_ARM_APPENDED_DTB=y +CONFIG_ARM_ATAG_DTB_COMPAT=y +## choice: Kernel command line type +CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_FROM_BOOTLOADER=y +# CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEND is not set +## end choice +CONFIG_ATAGS_PROC=y +CONFIG_EFI=y +#. Enable floating point unit +CONFIG_VFP=y +CONFIG_NEON=y + +## +## file: arch/arm/Kconfig.debug +## +#. DEBUG_LL is incompatible with multiplatform +# CONFIG_DEBUG_LL is not set + +## +## file: arch/arm/mach-bcm/Kconfig +## +CONFIG_ARCH_BCM=y +CONFIG_ARCH_BCM2835=y + +## +## file: arch/arm/mach-exynos/Kconfig +## +CONFIG_ARCH_EXYNOS=y +# CONFIG_ARCH_EXYNOS3 is not set +CONFIG_ARCH_EXYNOS4=y +CONFIG_ARCH_EXYNOS5=y +CONFIG_EXYNOS5420_MCPM=y + +## +## file: arch/arm/mach-highbank/Kconfig +## +CONFIG_ARCH_HIGHBANK=y + +## +## file: arch/arm/mach-imx/Kconfig +## +CONFIG_ARCH_MXC=y +CONFIG_SOC_IMX51=y +CONFIG_SOC_IMX53=y +CONFIG_SOC_IMX6Q=y + +## +## file: arch/arm/mach-mvebu/Kconfig +## +CONFIG_ARCH_MVEBU=y +CONFIG_MACH_ARMADA_370=y +CONFIG_MACH_ARMADA_375=y +CONFIG_MACH_ARMADA_38X=y +CONFIG_MACH_ARMADA_39X=y +CONFIG_MACH_ARMADA_XP=y + +## +## file: arch/arm/mach-omap1/Kconfig +## +CONFIG_OMAP_MUX=y +# CONFIG_OMAP_MUX_DEBUG is not set +CONFIG_OMAP_MUX_WARNINGS=y + +## +## file: arch/arm/mach-omap2/Kconfig +## +# CONFIG_ARCH_OMAP2 is not set +CONFIG_ARCH_OMAP3=y +CONFIG_ARCH_OMAP4=y +CONFIG_SOC_OMAP5=y +CONFIG_SOC_AM33XX=y +CONFIG_SOC_DRA7XX=y +CONFIG_ARCH_OMAP2PLUS_TYPICAL=y +CONFIG_SOC_OMAP3430=y +CONFIG_SOC_TI81XX=y + +## +## file: arch/arm/mach-rockchip/Kconfig +## +CONFIG_ARCH_ROCKCHIP=y + +## +## file: arch/arm/mach-socfpga/Kconfig +## +CONFIG_ARCH_SOCFPGA=y + +## +## file: arch/arm/mach-sunxi/Kconfig +## +CONFIG_ARCH_SUNXI=y + +## +## file: arch/arm/mach-tegra/Kconfig +## +CONFIG_ARCH_TEGRA=y + +## +## file: arch/arm/mach-vexpress/Kconfig +## +CONFIG_ARCH_VEXPRESS=y +CONFIG_ARCH_VEXPRESS_CORTEX_A5_A9_ERRATA=y + +## +## file: arch/arm/mach-vt8500/Kconfig +## +CONFIG_ARCH_WM8850=y + +## +## file: arch/arm/mm/Kconfig +## +CONFIG_ARM_THUMBEE=y + +## +## file: arch/arm/plat-omap/Kconfig +## +CONFIG_POWER_AVS_OMAP=y +CONFIG_POWER_AVS_OMAP_CLASS3=y +CONFIG_OMAP_RESET_CLOCKS=y +# CONFIG_OMAP_MPU_TIMER is not set +CONFIG_OMAP_32K_TIMER=y +# CONFIG_OMAP3_L2_AUX_SECURE_SAVE_RESTORE is not set +CONFIG_OMAP_DM_TIMER=y +CONFIG_OMAP_SERIAL_WAKE=y +## choice: OMAP PM layer selection +CONFIG_OMAP_PM_NOOP=y +## end choice + +## +## file: drivers/ata/Kconfig +## +CONFIG_SATA_AHCI_PLATFORM=m +CONFIG_AHCI_IMX=m +CONFIG_AHCI_MVEBU=m +CONFIG_AHCI_SUNXI=m +CONFIG_AHCI_TEGRA=m +CONFIG_SATA_HIGHBANK=m +CONFIG_PATA_IMX=m +CONFIG_PATA_PLATFORM=m +CONFIG_PATA_OF_PLATFORM=m + +## +## file: drivers/auxdisplay/Kconfig +## +CONFIG_ARM_CHARLCD=y + +## +## file: drivers/base/Kconfig +## +CONFIG_DMA_CMA=y + +## +## file: drivers/bluetooth/Kconfig +## +CONFIG_BT_WILINK=m + +## +## file: drivers/bus/Kconfig +## +CONFIG_OMAP_INTERCONNECT=m +CONFIG_OMAP_OCP2SCP=m + +## +## file: drivers/char/hw_random/Kconfig +## +CONFIG_HW_RANDOM_BCM2835=m +CONFIG_HW_RANDOM_OMAP=m + +## +## file: drivers/clk/Kconfig +## +CONFIG_COMMON_CLK_MAX77686=m +CONFIG_COMMON_CLK_RK808=m +CONFIG_COMMON_CLK_S2MPS11=m +CONFIG_CLK_TWL6040=m + +## +## file: drivers/cpufreq/Kconfig +## +CONFIG_CPUFREQ_DT=m + +## +## file: drivers/cpufreq/Kconfig.arm +## +CONFIG_ARM_IMX6Q_CPUFREQ=m +CONFIG_ARM_TEGRA20_CPUFREQ=y + +## +## file: drivers/cpuidle/Kconfig.arm +## +CONFIG_ARM_EXYNOS_CPUIDLE=y + +## +## file: drivers/crypto/Kconfig +## +CONFIG_CRYPTO_DEV_MARVELL_CESA=m +CONFIG_CRYPTO_DEV_OMAP_SHAM=m +CONFIG_CRYPTO_DEV_OMAP_AES=m +CONFIG_CRYPTO_DEV_SUN4I_SS=m + +## +## file: drivers/devfreq/Kconfig +## +CONFIG_PM_DEVFREQ=y +CONFIG_ARM_TEGRA_DEVFREQ=m + +## +## file: drivers/dma/Kconfig +## +CONFIG_DMADEVICES=y +CONFIG_AMBA_PL08X=y +CONFIG_DMA_BCM2835=y +CONFIG_DMA_OMAP=y +CONFIG_DMA_SUN6I=m +CONFIG_IMX_DMA=y +CONFIG_IMX_SDMA=y +CONFIG_MV_XOR=y +CONFIG_MXS_DMA=y +CONFIG_PL330_DMA=y +CONFIG_TEGRA20_APB_DMA=y +CONFIG_TI_CPPI41=m +CONFIG_TI_EDMA=y + +## +## file: drivers/extcon/Kconfig +## +CONFIG_EXTCON=m +CONFIG_EXTCON_AXP288=m +CONFIG_EXTCON_PALMAS=m +CONFIG_EXTCON_USB_GPIO=m + +## +## file: drivers/firmware/Kconfig +## +CONFIG_RASPBERRYPI_FIRMWARE=y + +## +## file: drivers/gpio/Kconfig +## +CONFIG_GPIOLIB=y +CONFIG_GPIO_AXP209=m +CONFIG_GPIO_GENERIC_PLATFORM=m +CONFIG_GPIO_PCA953X=m +CONFIG_GPIO_PCF857X=m +CONFIG_GPIO_DA9052=m +CONFIG_GPIO_PALMAS=y +CONFIG_GPIO_TWL4030=y +CONFIG_GPIO_TWL6040=y + +## +## file: drivers/gpu/drm/Kconfig +## +CONFIG_DRM=m + +## +## file: drivers/gpu/drm/etnaviv/Kconfig +## +CONFIG_DRM_ETNAVIV=m + +## +## file: drivers/gpu/drm/exynos/Kconfig +## +CONFIG_DRM_EXYNOS=m +CONFIG_DRM_EXYNOS_FIMD=y +CONFIG_DRM_EXYNOS_MIXER=y +CONFIG_DRM_EXYNOS_DSI=y +CONFIG_DRM_EXYNOS_DP=y +CONFIG_DRM_EXYNOS_HDMI=y + +## +## file: drivers/gpu/drm/i2c/Kconfig +## +CONFIG_DRM_I2C_NXP_TDA998X=m + +## +## file: drivers/gpu/drm/imx/Kconfig +## +CONFIG_DRM_IMX=m +CONFIG_DRM_IMX_LDB=m +CONFIG_DRM_IMX_HDMI=m + +## +## file: drivers/gpu/drm/nouveau/Kconfig +## +CONFIG_NOUVEAU_PLATFORM_DRIVER=y + +## +## file: drivers/gpu/drm/omapdrm/Kconfig +## +CONFIG_DRM_OMAP=m + +## +## file: drivers/gpu/drm/omapdrm/displays/Kconfig +## +CONFIG_DRM_OMAP_ENCODER_TPD12S015=m +CONFIG_DRM_OMAP_CONNECTOR_HDMI=m +CONFIG_DRM_OMAP_CONNECTOR_ANALOG_TV=m +CONFIG_DRM_OMAP_PANEL_SONY_ACX565AKM=m +CONFIG_DRM_OMAP_PANEL_TPO_TD028TTEC1=m +CONFIG_DRM_OMAP_PANEL_TPO_TD043MTEA1=m + +## +## file: drivers/gpu/drm/omapdrm/dss/Kconfig +## +CONFIG_OMAP2_DSS=m +CONFIG_OMAP2_DSS_VENC=y +CONFIG_OMAP4_DSS_HDMI=y +CONFIG_OMAP5_DSS_HDMI=y +CONFIG_OMAP2_DSS_SDI=y +CONFIG_OMAP2_DSS_DSI=y + +## +## file: drivers/gpu/drm/panel/Kconfig +## +CONFIG_DRM_PANEL_SIMPLE=m + +## +## file: drivers/gpu/drm/rockchip/Kconfig +## +CONFIG_DRM_ROCKCHIP=m +CONFIG_ROCKCHIP_ANALOGIX_DP=y +CONFIG_ROCKCHIP_DW_HDMI=y +CONFIG_ROCKCHIP_DW_MIPI_DSI=y + +## +## file: drivers/gpu/drm/sun4i/Kconfig +## +CONFIG_DRM_SUN4I=m +CONFIG_DRM_SUN4I_HDMI=m +CONFIG_DRM_SUN4I_HDMI_CEC=y +CONFIG_DRM_SUN4I_BACKEND=m +CONFIG_DRM_SUN8I_MIXER=m + +## +## file: drivers/gpu/drm/tegra/Kconfig +## +CONFIG_DRM_TEGRA=m +# CONFIG_DRM_TEGRA_DEBUG is not set +CONFIG_DRM_TEGRA_STAGING=y + +## +## file: drivers/gpu/drm/tilcdc/Kconfig +## +CONFIG_DRM_TILCDC=m + +## +## file: drivers/gpu/drm/vc4/Kconfig +## +CONFIG_DRM_VC4=m + +## +## file: drivers/gpu/host1x/Kconfig +## +CONFIG_TEGRA_HOST1X=m +CONFIG_TEGRA_HOST1X_FIREWALL=y + +## +## file: drivers/gpu/ipu-v3/Kconfig +## +CONFIG_IMX_IPUV3_CORE=m + +## +## file: drivers/hsi/Kconfig +## +CONFIG_HSI=m + +## +## file: drivers/hsi/clients/Kconfig +## +CONFIG_NOKIA_MODEM=m +CONFIG_CMT_SPEECH=m +CONFIG_SSI_PROTOCOL=m + +## +## file: drivers/hsi/controllers/Kconfig +## +CONFIG_OMAP_SSI=m + +## +## file: drivers/hwmon/Kconfig +## +CONFIG_SENSORS_G762=m +CONFIG_SENSORS_GPIO_FAN=m +CONFIG_SENSORS_PWM_FAN=m + +## +## file: drivers/hwspinlock/Kconfig +## +CONFIG_HWSPINLOCK_OMAP=m + +## +## file: drivers/i2c/Kconfig +## +CONFIG_I2C_MUX=m + +## +## file: drivers/i2c/busses/Kconfig +## +CONFIG_I2C_BCM2835=m +CONFIG_I2C_EXYNOS5=m +CONFIG_I2C_GPIO=y +CONFIG_I2C_IMX=m +CONFIG_I2C_MV64XXX=m +CONFIG_I2C_OMAP=y +CONFIG_I2C_RK3X=m +CONFIG_I2C_S3C2410=y +CONFIG_I2C_SUN6I_P2WI=m +CONFIG_I2C_TEGRA=y +CONFIG_I2C_VERSATILE=m +CONFIG_I2C_CROS_EC_TUNNEL=m + +## +## file: drivers/i2c/muxes/Kconfig +## +CONFIG_I2C_ARB_GPIO_CHALLENGE=m +CONFIG_I2C_MUX_PCA954x=m + +## +## file: drivers/iio/Kconfig +## +CONFIG_IIO=m + +## +## file: drivers/iio/accel/Kconfig +## +CONFIG_IIO_ST_ACCEL_3AXIS=m +CONFIG_MMA8452=m + +## +## file: drivers/iio/adc/Kconfig +## +CONFIG_AXP20X_ADC=m +CONFIG_AXP288_ADC=m +CONFIG_EXYNOS_ADC=m +CONFIG_ROCKCHIP_SARADC=m +CONFIG_TI_AM335X_ADC=m +CONFIG_TWL4030_MADC=m + +## +## file: drivers/iio/light/Kconfig +## +CONFIG_SENSORS_TSL2563=m + +## +## file: drivers/input/keyboard/Kconfig +## +CONFIG_KEYBOARD_GPIO=y +CONFIG_KEYBOARD_IMX=m +CONFIG_KEYBOARD_TEGRA=m +CONFIG_KEYBOARD_SUN4I_LRADC=m +CONFIG_KEYBOARD_OMAP4=m +CONFIG_KEYBOARD_TWL4030=m +CONFIG_KEYBOARD_CROS_EC=m + +## +## file: drivers/input/misc/Kconfig +## +CONFIG_INPUT_MMA8450=m +CONFIG_INPUT_AXP20X_PEK=m +CONFIG_INPUT_TWL4030_PWRBUTTON=m +CONFIG_INPUT_TWL4030_VIBRA=m +CONFIG_INPUT_TWL6040_VIBRA=m + +## +## file: drivers/input/mouse/Kconfig +## +CONFIG_MOUSE_PS2_LOGIPS2PP=y +CONFIG_MOUSE_PS2_SYNAPTICS=y +CONFIG_MOUSE_PS2_TRACKPOINT=y +CONFIG_MOUSE_ELAN_I2C=m + +## +## file: drivers/input/serio/Kconfig +## +CONFIG_SERIO_AMBAKMI=m +CONFIG_SERIO_SUN4I_PS2=m + +## +## file: drivers/input/touchscreen/Kconfig +## +CONFIG_INPUT_TOUCHSCREEN=y +CONFIG_TOUCHSCREEN_TI_AM335X_TSC=m +CONFIG_TOUCHSCREEN_TSC2005=m +CONFIG_TOUCHSCREEN_STMPE=m +CONFIG_TOUCHSCREEN_SUN4I=m + +## +## file: drivers/iommu/Kconfig +## +CONFIG_OMAP_IOMMU=y +# CONFIG_OMAP_IOMMU_DEBUG is not set +CONFIG_ROCKCHIP_IOMMU=y +CONFIG_TEGRA_IOMMU_SMMU=y + +## +## file: drivers/leds/Kconfig +## +CONFIG_LEDS_CLASS=y +CONFIG_LEDS_LP5523=m +CONFIG_LEDS_DA9052=m +CONFIG_LEDS_PWM=m +CONFIG_LEDS_TCA6507=m + +## +## file: drivers/leds/trigger/Kconfig +## +CONFIG_LEDS_TRIGGER_GPIO=m + +## +## file: drivers/mailbox/Kconfig +## +CONFIG_MAILBOX=y +CONFIG_OMAP2PLUS_MBOX=y +CONFIG_OMAP_MBOX_KFIFO_SIZE=256 +CONFIG_BCM2835_MBOX=y + +## +## file: drivers/media/Kconfig +## +CONFIG_MEDIA_SUPPORT=y +CONFIG_MEDIA_CONTROLLER=y +CONFIG_VIDEO_V4L2_SUBDEV_API=y + +## +## file: drivers/media/platform/Kconfig +## +CONFIG_VIDEO_OMAP3=m +CONFIG_VIDEO_TI_VPE=m + +## +## file: drivers/media/platform/omap/Kconfig +## +CONFIG_VIDEO_OMAP2_VOUT=m + +## +## file: drivers/media/radio/Kconfig +## +CONFIG_RADIO_ADAPTERS=y +CONFIG_RADIO_SI4713=m + +## +## file: drivers/media/radio/si4713/Kconfig +## +CONFIG_I2C_SI4713=m + +## +## file: drivers/media/radio/wl128x/Kconfig +## +CONFIG_RADIO_WL128X=m + +## +## file: drivers/media/rc/Kconfig +## +CONFIG_IR_GPIO_CIR=m +CONFIG_IR_SUNXI=m + +## +## file: drivers/memory/Kconfig +## +CONFIG_TI_EMIF=m + +## +## file: drivers/memory/tegra/Kconfig +## +CONFIG_TEGRA_MC=y +CONFIG_TEGRA124_EMC=y + +## +## file: drivers/mfd/Kconfig +## +CONFIG_MFD_AS3722=y +CONFIG_MFD_AXP20X_I2C=y +CONFIG_MFD_CROS_EC=m +CONFIG_MFD_CROS_EC_SPI=m +CONFIG_MFD_DA9052_SPI=y +CONFIG_MFD_DA9052_I2C=y +CONFIG_MFD_MC13XXX_SPI=m +CONFIG_MFD_MC13XXX_I2C=m +CONFIG_MFD_MAX77686=y +CONFIG_MFD_RK808=y +CONFIG_MFD_SEC_CORE=y +CONFIG_MFD_STMPE=y +CONFIG_MFD_TI_AM335X_TSCADC=m +CONFIG_MFD_PALMAS=y +CONFIG_TWL4030_CORE=y +CONFIG_TWL6040_CORE=y + +## +## file: drivers/misc/ti-st/Kconfig +## +CONFIG_TI_ST=m + +## +## file: drivers/mmc/Kconfig +## +CONFIG_MMC=y + +## +## file: drivers/mmc/host/Kconfig +## +CONFIG_MMC_ARMMMCI=m +CONFIG_MMC_SDHCI=m +CONFIG_MMC_SDHCI_PLTFM=m +CONFIG_MMC_SDHCI_ESDHC_IMX=m +CONFIG_MMC_SDHCI_TEGRA=m +CONFIG_MMC_SDHCI_S3C=m +CONFIG_MMC_SDHCI_PXAV3=m +CONFIG_MMC_SDHCI_IPROC=m +CONFIG_MMC_OMAP=m +CONFIG_MMC_OMAP_HS=m +CONFIG_MMC_MVSDIO=m +CONFIG_MMC_SPI=m +CONFIG_MMC_DW=m +CONFIG_MMC_DW_EXYNOS=m +CONFIG_MMC_DW_ROCKCHIP=m +CONFIG_MMC_WMT=m +CONFIG_MMC_SUNXI=m +CONFIG_MMC_BCM2835=m + +## +## file: drivers/mtd/Kconfig +## +CONFIG_MTD=y + +## +## file: drivers/mtd/nand/Kconfig +## +CONFIG_MTD_NAND=y +CONFIG_MTD_NAND_OMAP2=m +CONFIG_MTD_NAND_PXA3xx=m +CONFIG_MTD_NAND_GPMI_NAND=m +CONFIG_MTD_NAND_ORION=m +CONFIG_MTD_NAND_MXC=m +CONFIG_MTD_NAND_SUNXI=m + +## +## file: drivers/mtd/onenand/Kconfig +## +CONFIG_MTD_ONENAND=y +CONFIG_MTD_ONENAND_OMAP2=m + +## +## file: drivers/net/can/Kconfig +## +CONFIG_CAN_SUN4I=m + +## +## file: drivers/net/dsa/Kconfig +## +CONFIG_NET_DSA_BCM_SF2=m +CONFIG_NET_DSA_MV88E6060=m + +## +## file: drivers/net/dsa/b53/Kconfig +## +CONFIG_B53=m +CONFIG_B53_MDIO_DRIVER=m + +## +## file: drivers/net/dsa/mv88e6xxx/Kconfig +## +CONFIG_NET_DSA_MV88E6XXX=m + +## +## file: drivers/net/ethernet/Kconfig +## +CONFIG_FEALNX=m + +## +## file: drivers/net/ethernet/3com/Kconfig +## +CONFIG_NET_VENDOR_3COM=y +CONFIG_TYPHOON=m + +## +## file: drivers/net/ethernet/8390/Kconfig +## +CONFIG_NET_VENDOR_8390=y +CONFIG_NE2K_PCI=m + +## +## file: drivers/net/ethernet/adaptec/Kconfig +## +CONFIG_NET_VENDOR_ADAPTEC=y +CONFIG_ADAPTEC_STARFIRE=m + +## +## file: drivers/net/ethernet/allwinner/Kconfig +## +CONFIG_SUN4I_EMAC=m + +## +## file: drivers/net/ethernet/arc/Kconfig +## +CONFIG_EMAC_ROCKCHIP=m + +## +## file: drivers/net/ethernet/calxeda/Kconfig +## +CONFIG_NET_CALXEDA_XGMAC=m + +## +## file: drivers/net/ethernet/dec/tulip/Kconfig +## +CONFIG_NET_TULIP=y +CONFIG_DE2104X=m +CONFIG_TULIP=m +# CONFIG_TULIP_MWI is not set +# CONFIG_TULIP_MMIO is not set +CONFIG_WINBOND_840=m +CONFIG_DM9102=m + +## +## file: drivers/net/ethernet/dlink/Kconfig +## +CONFIG_NET_VENDOR_DLINK=y +CONFIG_SUNDANCE=m +# CONFIG_SUNDANCE_MMIO is not set + +## +## file: drivers/net/ethernet/intel/Kconfig +## +CONFIG_NET_VENDOR_INTEL=y +CONFIG_E100=m + +## +## file: drivers/net/ethernet/marvell/Kconfig +## +CONFIG_MVMDIO=m +CONFIG_MVNETA=m +CONFIG_MVPP2=m + +## +## file: drivers/net/ethernet/microchip/Kconfig +## +CONFIG_ENC28J60=m +# CONFIG_ENC28J60_WRITEVERIFY is not set + +## +## file: drivers/net/ethernet/natsemi/Kconfig +## +CONFIG_NET_VENDOR_NATSEMI=y +CONFIG_NATSEMI=m + +## +## file: drivers/net/ethernet/realtek/Kconfig +## +CONFIG_8139CP=m +CONFIG_8139TOO=m + +## +## file: drivers/net/ethernet/smsc/Kconfig +## +CONFIG_NET_VENDOR_SMSC=y +CONFIG_SMC91X=m +CONFIG_EPIC100=m +CONFIG_SMC911X=m +CONFIG_SMSC911X=m + +## +## file: drivers/net/ethernet/stmicro/stmmac/Kconfig +## +CONFIG_STMMAC_ETH=m +CONFIG_DWMAC_GENERIC=m +CONFIG_DWMAC_ROCKCHIP=m +CONFIG_DWMAC_SOCFPGA=m +CONFIG_DWMAC_SUNXI=m + +## +## file: drivers/net/ethernet/ti/Kconfig +## +CONFIG_TI_DAVINCI_EMAC=m +CONFIG_TI_DAVINCI_MDIO=m +CONFIG_TI_DAVINCI_CPDMA=m +CONFIG_TI_CPSW=m + +## +## file: drivers/net/fddi/Kconfig +## +CONFIG_FDDI=y +CONFIG_SKFP=m + +## +## file: drivers/net/hamradio/Kconfig +## +# CONFIG_BPQETHER is not set +# CONFIG_BAYCOM_SER_FDX is not set +# CONFIG_BAYCOM_SER_HDX is not set +# CONFIG_BAYCOM_PAR is not set +# CONFIG_BAYCOM_EPP is not set +# CONFIG_YAM is not set + +## +## file: drivers/net/phy/Kconfig +## +CONFIG_MDIO_SUN4I=y + +## +## file: drivers/net/wireless/broadcom/brcm80211/Kconfig +## +CONFIG_BRCMFMAC=m +CONFIG_BRCMFMAC_SDIO=y + +## +## file: drivers/net/wireless/ti/Kconfig +## +CONFIG_WLAN_VENDOR_TI=y +CONFIG_WILINK_PLATFORM_DATA=y + +## +## file: drivers/net/wireless/ti/wl1251/Kconfig +## +CONFIG_WL1251=m +CONFIG_WL1251_SPI=m +CONFIG_WL1251_SDIO=m + +## +## file: drivers/net/wireless/ti/wl12xx/Kconfig +## +CONFIG_WL12XX=m + +## +## file: drivers/net/wireless/ti/wl18xx/Kconfig +## +CONFIG_WL18XX=m + +## +## file: drivers/net/wireless/ti/wlcore/Kconfig +## +CONFIG_WLCORE_SPI=m +CONFIG_WLCORE_SDIO=m + +## +## file: drivers/nvmem/Kconfig +## +CONFIG_ROCKCHIP_EFUSE=m +CONFIG_NVMEM_SUNXI_SID=m + +## +## file: drivers/pci/dwc/Kconfig +## +CONFIG_PCI_DRA7XX=y +CONFIG_PCI_IMX6=y + +## +## file: drivers/pci/host/Kconfig +## +CONFIG_PCI_MVEBU=y +CONFIG_PCI_TEGRA=y +CONFIG_PCI_HOST_GENERIC=y + +## +## file: drivers/phy/allwinner/Kconfig +## +CONFIG_PHY_SUN4I_USB=m +CONFIG_PHY_SUN9I_USB=m + +## +## file: drivers/phy/rockchip/Kconfig +## +CONFIG_PHY_ROCKCHIP_DP=m +CONFIG_PHY_ROCKCHIP_EMMC=m +CONFIG_PHY_ROCKCHIP_USB=m + +## +## file: drivers/phy/samsung/Kconfig +## +CONFIG_PHY_EXYNOS_DP_VIDEO=m +CONFIG_PHY_EXYNOS_MIPI_VIDEO=m +CONFIG_PHY_SAMSUNG_USB2=m +CONFIG_PHY_EXYNOS5_USBDRD=m +CONFIG_PHY_EXYNOS5250_SATA=m + +## +## file: drivers/phy/tegra/Kconfig +## +CONFIG_PHY_TEGRA_XUSB=m + +## +## file: drivers/phy/ti/Kconfig +## +CONFIG_OMAP_CONTROL_PHY=m +CONFIG_OMAP_USB2=m +CONFIG_TI_PIPE3=y +CONFIG_TWL4030_USB=m + +## +## file: drivers/pinctrl/Kconfig +## +CONFIG_PINCTRL_AS3722=y +CONFIG_PINCTRL_MCP23S08=m +CONFIG_PINCTRL_SINGLE=y +CONFIG_PINCTRL_PALMAS=y + +## +## file: drivers/pinctrl/vt8500/Kconfig +## +CONFIG_PINCTRL_WM8850=y + +## +## file: drivers/power/avs/Kconfig +## +CONFIG_POWER_AVS=y +CONFIG_ROCKCHIP_IODOMAIN=m + +## +## file: drivers/power/reset/Kconfig +## +CONFIG_POWER_RESET=y +CONFIG_POWER_RESET_AS3722=y +CONFIG_POWER_RESET_GPIO=y +CONFIG_POWER_RESET_GPIO_RESTART=y +CONFIG_POWER_RESET_RESTART=y +CONFIG_POWER_RESET_SYSCON=y +CONFIG_POWER_RESET_SYSCON_POWEROFF=y + +## +## file: drivers/power/supply/Kconfig +## +CONFIG_BATTERY_SBS=m +CONFIG_BATTERY_BQ27XXX=m +CONFIG_CHARGER_AXP20X=m +CONFIG_BATTERY_AXP20X=m +CONFIG_AXP20X_POWER=m +CONFIG_AXP288_CHARGER=m +CONFIG_AXP288_FUEL_GAUGE=m +CONFIG_BATTERY_TWL4030_MADC=m +CONFIG_BATTERY_RX51=m +CONFIG_CHARGER_ISP1704=m +CONFIG_CHARGER_TWL4030=m +CONFIG_CHARGER_GPIO=m +CONFIG_CHARGER_BQ2415X=m + +## +## file: drivers/pwm/Kconfig +## +CONFIG_PWM=y +CONFIG_PWM_BCM2835=m +CONFIG_PWM_IMX=m +CONFIG_PWM_OMAP_DMTIMER=m +CONFIG_PWM_ROCKCHIP=m +CONFIG_PWM_SAMSUNG=m +CONFIG_PWM_SUN4I=m +CONFIG_PWM_TEGRA=m +CONFIG_PWM_TIECAP=m +CONFIG_PWM_TIEHRPWM=m +CONFIG_PWM_TWL=m +CONFIG_PWM_TWL_LED=m +CONFIG_PWM_VT8500=m + +## +## file: drivers/regulator/Kconfig +## +CONFIG_REGULATOR=y +CONFIG_REGULATOR_ACT8865=m +CONFIG_REGULATOR_ANATOP=m +CONFIG_REGULATOR_AS3722=y +CONFIG_REGULATOR_AXP20X=m +CONFIG_REGULATOR_DA9052=m +CONFIG_REGULATOR_FAN53555=m +CONFIG_REGULATOR_GPIO=m +CONFIG_REGULATOR_MAX77686=m +CONFIG_REGULATOR_MC13783=m +CONFIG_REGULATOR_MC13892=m +CONFIG_REGULATOR_PALMAS=y +CONFIG_REGULATOR_PBIAS=m +CONFIG_REGULATOR_PFUZE100=m +CONFIG_REGULATOR_RK808=m +CONFIG_REGULATOR_S2MPA01=m +CONFIG_REGULATOR_S2MPS11=m +CONFIG_REGULATOR_S5M8767=m +CONFIG_REGULATOR_TI_ABB=m +CONFIG_REGULATOR_TPS65910=m +CONFIG_REGULATOR_TWL4030=y +CONFIG_REGULATOR_VEXPRESS=m + +## +## file: drivers/rtc/Kconfig +## +CONFIG_RTC_DRV_AS3722=y +CONFIG_RTC_DRV_DS1307=y +CONFIG_RTC_DRV_MAX77686=y +CONFIG_RTC_DRV_RK808=y +CONFIG_RTC_DRV_PCF8523=y +CONFIG_RTC_DRV_PCF8563=y +CONFIG_RTC_DRV_TWL4030=y +CONFIG_RTC_DRV_PALMAS=y +CONFIG_RTC_DRV_S5M=y +CONFIG_RTC_DRV_DA9052=y +CONFIG_RTC_DRV_EFI=y +CONFIG_RTC_DRV_IMXDI=y +CONFIG_RTC_DRV_OMAP=y +CONFIG_RTC_DRV_PL030=y +CONFIG_RTC_DRV_PL031=y +CONFIG_RTC_DRV_VT8500=y +CONFIG_RTC_DRV_SUN6I=y +CONFIG_RTC_DRV_SUNXI=y +CONFIG_RTC_DRV_MV=y +CONFIG_RTC_DRV_ARMADA38X=y +CONFIG_RTC_DRV_MC13XXX=y +CONFIG_RTC_DRV_TEGRA=y +CONFIG_RTC_DRV_MXC=y +CONFIG_RTC_DRV_SNVS=y + +## +## file: drivers/scsi/Kconfig +## +CONFIG_SCSI_DMX3191D=m +CONFIG_SCSI_AM53C974=m + +## +## file: drivers/soc/bcm/Kconfig +## +CONFIG_RASPBERRYPI_POWER=y + +## +## file: drivers/soc/rockchip/Kconfig +## +CONFIG_ROCKCHIP_PM_DOMAINS=y + +## +## file: drivers/soc/tegra/Kconfig +## +# CONFIG_ARCH_TEGRA_2x_SOC is not set +# CONFIG_ARCH_TEGRA_3x_SOC is not set +# CONFIG_ARCH_TEGRA_114_SOC is not set +CONFIG_ARCH_TEGRA_124_SOC=y + +## +## file: drivers/spi/Kconfig +## +CONFIG_SPI=y +CONFIG_SPI_BCM2835=m +CONFIG_SPI_BCM2835AUX=m +CONFIG_SPI_GPIO=y +CONFIG_SPI_IMX=m +CONFIG_SPI_OMAP24XX=m +CONFIG_SPI_TI_QSPI=m +CONFIG_SPI_ORION=m +CONFIG_SPI_PL022=m +CONFIG_SPI_ROCKCHIP=m +CONFIG_SPI_SUN4I=m +CONFIG_SPI_SUN6I=m +CONFIG_SPI_TEGRA114=m +CONFIG_SPI_TEGRA20_SFLASH=m +CONFIG_SPI_SPIDEV=y + +## +## file: drivers/thermal/Kconfig +## +CONFIG_ROCKCHIP_THERMAL=m +CONFIG_ARMADA_THERMAL=y + +## +## file: drivers/thermal/broadcom/Kconfig +## +CONFIG_BCM2835_THERMAL=m + +## +## file: drivers/thermal/tegra/Kconfig +## +CONFIG_TEGRA_SOCTHERM=y + +## +## file: drivers/thermal/ti-soc-thermal/Kconfig +## +CONFIG_TI_SOC_THERMAL=m +CONFIG_TI_THERMAL=y +CONFIG_OMAP4_THERMAL=y +CONFIG_OMAP5_THERMAL=y +CONFIG_DRA752_THERMAL=y + +## +## file: drivers/tty/serial/Kconfig +## +CONFIG_SERIAL_AMBA_PL010=y +CONFIG_SERIAL_AMBA_PL010_CONSOLE=y +CONFIG_SERIAL_AMBA_PL011=y +CONFIG_SERIAL_AMBA_PL011_CONSOLE=y +CONFIG_SERIAL_SAMSUNG=y +CONFIG_SERIAL_SAMSUNG_CONSOLE=y +CONFIG_SERIAL_TEGRA=y +CONFIG_SERIAL_IMX=y +CONFIG_SERIAL_IMX_CONSOLE=y +CONFIG_SERIAL_VT8500=y +CONFIG_SERIAL_VT8500_CONSOLE=y +CONFIG_SERIAL_OMAP=y +CONFIG_SERIAL_OMAP_CONSOLE=y +CONFIG_SERIAL_ARC=y +CONFIG_SERIAL_ARC_CONSOLE=y +CONFIG_SERIAL_ARC_NR_PORTS=1 + +## +## file: drivers/tty/serial/8250/Kconfig +## +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_DMA=y +CONFIG_SERIAL_8250_NR_UARTS=4 +CONFIG_SERIAL_8250_RUNTIME_UARTS=4 +# CONFIG_SERIAL_8250_EXTENDED is not set +CONFIG_SERIAL_8250_DW=y +# CONFIG_SERIAL_8250_EM is not set +CONFIG_SERIAL_OF_PLATFORM=y + +## +## file: drivers/usb/Kconfig +## +CONFIG_USB=m + +## +## file: drivers/usb/chipidea/Kconfig +## +CONFIG_USB_CHIPIDEA=m +CONFIG_USB_CHIPIDEA_UDC=y +CONFIG_USB_CHIPIDEA_HOST=y + +## +## file: drivers/usb/dwc2/Kconfig +## +CONFIG_USB_DWC2=m +## choice: DWC2 Mode Selection +CONFIG_USB_DWC2_DUAL_ROLE=y +## end choice + +## +## file: drivers/usb/dwc3/Kconfig +## +CONFIG_USB_DWC3=m +## choice: DWC3 Mode Selection +CONFIG_USB_DWC3_DUAL_ROLE=y +## end choice +CONFIG_USB_DWC3_OMAP=m +CONFIG_USB_DWC3_EXYNOS=m +# CONFIG_USB_DWC3_PCI is not set + +## +## file: drivers/usb/gadget/Kconfig +## +CONFIG_USB_GADGET=m + +## +## file: drivers/usb/gadget/legacy/Kconfig +## +CONFIG_USB_G_NOKIA=m + +## +## file: drivers/usb/host/Kconfig +## +CONFIG_USB_XHCI_MVEBU=m +CONFIG_USB_XHCI_TEGRA=m +CONFIG_USB_EHCI_HCD=m +CONFIG_USB_EHCI_MXC=m +CONFIG_USB_EHCI_HCD_OMAP=y +CONFIG_USB_EHCI_TEGRA=m +CONFIG_USB_EHCI_EXYNOS=m +CONFIG_USB_EHCI_HCD_PLATFORM=m +CONFIG_USB_OHCI_HCD=m +CONFIG_USB_OHCI_HCD_OMAP3=y +CONFIG_USB_OHCI_EXYNOS=m +CONFIG_USB_OHCI_HCD_PLATFORM=m + +## +## file: drivers/usb/misc/Kconfig +## +CONFIG_USB_HSIC_USB3503=m + +## +## file: drivers/usb/musb/Kconfig +## +CONFIG_USB_MUSB_HDRC=m +## choice: MUSB Mode Selection +# CONFIG_USB_MUSB_HOST is not set +# CONFIG_USB_MUSB_GADGET is not set +CONFIG_USB_MUSB_DUAL_ROLE=y +## end choice +CONFIG_USB_MUSB_SUNXI=m +CONFIG_USB_MUSB_TUSB6010=m +CONFIG_USB_MUSB_OMAP2PLUS=m +CONFIG_USB_MUSB_AM35X=m +CONFIG_USB_MUSB_DSPS=m +# CONFIG_MUSB_PIO_ONLY is not set +CONFIG_USB_INVENTRA_DMA=y +CONFIG_USB_TI_CPPI41_DMA=y +CONFIG_USB_TUSB_OMAP_DMA=y + +## +## file: drivers/usb/phy/Kconfig +## +CONFIG_NOP_USB_XCEIV=m +CONFIG_AM335X_PHY_USB=m +CONFIG_TWL6030_USB=m +CONFIG_USB_MXS_PHY=m + +## +## file: drivers/video/backlight/Kconfig +## +CONFIG_BACKLIGHT_PWM=m +CONFIG_BACKLIGHT_PANDORA=m +CONFIG_BACKLIGHT_GPIO=m + +## +## file: drivers/video/fbdev/Kconfig +## +CONFIG_FB_ARMCLCD=y +CONFIG_FB_EFI=y +CONFIG_FB_VT8500=y +CONFIG_FB_WM8505=y +CONFIG_FB_SIMPLE=y + +## +## file: drivers/video/fbdev/omap2/omapfb/Kconfig +## +#. Redundant and conflicting with DRM_OMAP +# CONFIG_FB_OMAP2 is not set + +## +## file: drivers/virtio/Kconfig +## +CONFIG_VIRTIO_MMIO=m + +## +## file: drivers/w1/masters/Kconfig +## +CONFIG_HDQ_MASTER_OMAP=m + +## +## file: drivers/watchdog/Kconfig +## +CONFIG_DA9052_WATCHDOG=m +CONFIG_ARM_SP805_WATCHDOG=m +CONFIG_S3C2410_WATCHDOG=m +CONFIG_DW_WATCHDOG=m +CONFIG_OMAP_WATCHDOG=m +CONFIG_ORION_WATCHDOG=m +CONFIG_SUNXI_WATCHDOG=m +CONFIG_TWL4030_WATCHDOG=m +CONFIG_IMX2_WDT=m +CONFIG_TEGRA_WATCHDOG=m +CONFIG_BCM2835_WDT=m + +## +## file: kernel/power/Kconfig +## +CONFIG_SUSPEND=y +CONFIG_APM_EMULATION=y + +## +## file: mm/Kconfig +## +CONFIG_CMA=y + +## +## file: net/dsa/Kconfig +## +CONFIG_NET_DSA=m + +## +## file: net/phonet/Kconfig +## +CONFIG_PHONET=m + +## +## file: net/switchdev/Kconfig +## +CONFIG_NET_SWITCHDEV=y + +## +## file: sound/pci/hda/Kconfig +## +CONFIG_SND_HDA_TEGRA=m + +## +## file: sound/soc/Kconfig +## +CONFIG_SND_SOC=m + +## +## file: sound/soc/bcm/Kconfig +## +CONFIG_SND_BCM2835_SOC_I2S=m + +## +## file: sound/soc/davinci/Kconfig +## +CONFIG_SND_DAVINCI_SOC_MCASP=m + +## +## file: sound/soc/fsl/Kconfig +## +CONFIG_SND_IMX_SOC=m +CONFIG_SND_SOC_EUKREA_TLV320=m +CONFIG_SND_SOC_IMX_ES8328=m +CONFIG_SND_SOC_IMX_SGTL5000=m +CONFIG_SND_SOC_IMX_SPDIF=m +CONFIG_SND_SOC_IMX_MC13783=m + +## +## file: sound/soc/generic/Kconfig +## +CONFIG_SND_SIMPLE_CARD=m + +## +## file: sound/soc/omap/Kconfig +## +CONFIG_SND_OMAP_SOC=m +CONFIG_SND_OMAP_SOC_RX51=m +CONFIG_SND_OMAP_SOC_AM3517EVM=m +CONFIG_SND_OMAP_SOC_OMAP_TWL4030=m +CONFIG_SND_OMAP_SOC_OMAP_ABE_TWL6040=m +CONFIG_SND_OMAP_SOC_OMAP3_PANDORA=m + +## +## file: sound/soc/rockchip/Kconfig +## +CONFIG_SND_SOC_ROCKCHIP=m +CONFIG_SND_SOC_ROCKCHIP_I2S=m +CONFIG_SND_SOC_ROCKCHIP_SPDIF=m +CONFIG_SND_SOC_ROCKCHIP_MAX98090=m +CONFIG_SND_SOC_ROCKCHIP_RT5645=m + +## +## file: sound/soc/sunxi/Kconfig +## +CONFIG_SND_SUN4I_CODEC=m +CONFIG_SND_SUN4I_SPDIF=m + +## +## file: sound/soc/tegra/Kconfig +## +CONFIG_SND_SOC_TEGRA=m +CONFIG_SND_SOC_TEGRA_RT5640=m +CONFIG_SND_SOC_TEGRA_WM8753=m +CONFIG_SND_SOC_TEGRA_WM8903=m +CONFIG_SND_SOC_TEGRA_TRIMSLICE=m +CONFIG_SND_SOC_TEGRA_ALC5632=m +CONFIG_SND_SOC_TEGRA_MAX98090=m +CONFIG_SND_SOC_TEGRA_RT5677=m + diff --git a/config/armhf/config.armmp-lpae b/config/armhf/config.armmp-lpae new file mode 100644 index 00000000000..d5045f1eef0 --- /dev/null +++ b/config/armhf/config.armmp-lpae @@ -0,0 +1,21 @@ +## +## file: arch/arm/Kconfig +## +CONFIG_ARM_DMA_IOMMU_ALIGNMENT=8 + +## +## file: arch/arm/kvm/Kconfig +## +CONFIG_VIRTUALIZATION=y +CONFIG_KVM=y + +## +## file: arch/arm/mm/Kconfig +## +CONFIG_ARM_LPAE=y + +## +## file: drivers/iommu/Kconfig +## +CONFIG_ARM_SMMU=y + diff --git a/config/armhf/defines b/config/armhf/defines new file mode 100644 index 00000000000..497f6bb50cd --- /dev/null +++ b/config/armhf/defines @@ -0,0 +1,27 @@ +[base] +flavours: + armmp + armmp-lpae +kernel-arch: arm + +[build] +image-file: arch/arm/boot/zImage +vdso: true + +[image] +install-stem: vmlinuz + +[relations] +headers%gcc-7: linux-compiler-gcc-7-arm + +[armmp_description] +hardware: ARMv7 multiplatform compatible SoCs +hardware-long: ARMv7 multiplatform kernel. See + https://wiki.debian.org/DebianKernel/ARMMP for details of supported + platforms + +[armmp-lpae_description] +hardware: ARMv7 multiplatform compatible SoCs supporting LPAE +hardware-long: ARMv7 multiplatform kernel supporting LPAE. See + https://wiki.debian.org/DebianKernel/ARMMP for details of supported + platforms. diff --git a/config/config b/config/config new file mode 100644 index 00000000000..5105f8dbef1 --- /dev/null +++ b/config/config @@ -0,0 +1,7501 @@ +## +## file: arch/Kconfig +## +CONFIG_OPROFILE=m +CONFIG_KPROBES=y +CONFIG_JUMP_LABEL=y +# CONFIG_STATIC_KEYS_SELFTEST is not set +#. Until we work out how to package them +# CONFIG_GCC_PLUGINS is not set +## choice: Stack Protector buffer overflow detection +CONFIG_CC_STACKPROTECTOR_STRONG=y +## end choice +CONFIG_VMAP_STACK=y +CONFIG_STRICT_KERNEL_RWX=y + +## +## file: block/Kconfig +## +CONFIG_BLOCK=y +CONFIG_LBDAF=y +CONFIG_BLK_DEV_BSG=y +CONFIG_BLK_DEV_INTEGRITY=y +CONFIG_BLK_DEV_THROTTLING=y +# CONFIG_BLK_CMDLINE_PARSER is not set +CONFIG_BLK_WBT=y +CONFIG_BLK_WBT_MQ=y + +## +## file: block/Kconfig.iosched +## +CONFIG_IOSCHED_DEADLINE=y +CONFIG_IOSCHED_CFQ=y +CONFIG_CFQ_GROUP_IOSCHED=y +## choice: Default I/O scheduler +# CONFIG_DEFAULT_DEADLINE is not set +CONFIG_DEFAULT_CFQ=y +# CONFIG_DEFAULT_NOOP is not set +## end choice +CONFIG_MQ_IOSCHED_DEADLINE=y +CONFIG_MQ_IOSCHED_KYBER=m +CONFIG_IOSCHED_BFQ=m +CONFIG_BFQ_GROUP_IOSCHED=y + +## +## file: block/partitions/Kconfig +## +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +# CONFIG_AIX_PARTITION is not set +# CONFIG_OSF_PARTITION is not set +# CONFIG_AMIGA_PARTITION is not set +# CONFIG_ATARI_PARTITION is not set +# CONFIG_MAC_PARTITION is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_BSD_DISKLABEL is not set +# CONFIG_MINIX_SUBPARTITION is not set +# CONFIG_SOLARIS_X86_PARTITION is not set +# CONFIG_UNIXWARE_DISKLABEL is not set +# CONFIG_LDM_PARTITION is not set +# CONFIG_SGI_PARTITION is not set +# CONFIG_ULTRIX_PARTITION is not set +# CONFIG_SUN_PARTITION is not set +CONFIG_KARMA_PARTITION=y +CONFIG_EFI_PARTITION=y +# CONFIG_SYSV68_PARTITION is not set +# CONFIG_CMDLINE_PARTITION is not set + +## +## file: certs/Kconfig +## +#. Signatures are added in linux-signed +CONFIG_MODULE_SIG_KEY="" +#. Actually a list of X.509 certificates, not keys +CONFIG_SYSTEM_TRUSTED_KEYS="debian/certs/benh@debian.org.cert.pem" + +## +## file: crypto/Kconfig +## +CONFIG_CRYPTO=y +CONFIG_CRYPTO_FIPS=y +CONFIG_CRYPTO_RSA=m +CONFIG_CRYPTO_DH=m +CONFIG_CRYPTO_ECDH=m +CONFIG_CRYPTO_MANAGER=y +CONFIG_CRYPTO_USER=m +# CONFIG_CRYPTO_MANAGER_DISABLE_TESTS is not set +CONFIG_CRYPTO_GF128MUL=m +CONFIG_CRYPTO_NULL=m +CONFIG_CRYPTO_PCRYPT=m +# CONFIG_CRYPTO_CRYPTD is not set +CONFIG_CRYPTO_AUTHENC=m +CONFIG_CRYPTO_TEST=m +CONFIG_CRYPTO_CCM=m +CONFIG_CRYPTO_GCM=m +CONFIG_CRYPTO_CHACHA20POLY1305=m +CONFIG_CRYPTO_SEQIV=m +CONFIG_CRYPTO_ECHAINIV=m +CONFIG_CRYPTO_CBC=m +CONFIG_CRYPTO_CTR=m +CONFIG_CRYPTO_CTS=m +CONFIG_CRYPTO_ECB=m +CONFIG_CRYPTO_LRW=m +CONFIG_CRYPTO_PCBC=m +CONFIG_CRYPTO_XTS=m +CONFIG_CRYPTO_CMAC=m +CONFIG_CRYPTO_HMAC=m +CONFIG_CRYPTO_XCBC=m +CONFIG_CRYPTO_VMAC=m +CONFIG_CRYPTO_CRC32C=m +CONFIG_CRYPTO_CRC32=m +CONFIG_CRYPTO_CRCT10DIF=m +CONFIG_CRYPTO_GHASH=m +CONFIG_CRYPTO_POLY1305=m +CONFIG_CRYPTO_MD4=m +CONFIG_CRYPTO_MD5=y +CONFIG_CRYPTO_MICHAEL_MIC=m +CONFIG_CRYPTO_RMD128=m +CONFIG_CRYPTO_RMD160=m +CONFIG_CRYPTO_RMD256=m +CONFIG_CRYPTO_RMD320=m +CONFIG_CRYPTO_SHA1=m +# CONFIG_CRYPTO_SHA1_MB is not set +#. Must be built-in for IMA_DEFAULT_HASH_SHA256 +CONFIG_CRYPTO_SHA256=y +CONFIG_CRYPTO_SHA512=m +CONFIG_CRYPTO_SHA3=m +CONFIG_CRYPTO_TGR192=m +CONFIG_CRYPTO_WP512=m +CONFIG_CRYPTO_AES=m +CONFIG_CRYPTO_ANUBIS=m +CONFIG_CRYPTO_ARC4=m +CONFIG_CRYPTO_BLOWFISH=m +CONFIG_CRYPTO_CAMELLIA=m +CONFIG_CRYPTO_CAST5=m +CONFIG_CRYPTO_CAST6=m +CONFIG_CRYPTO_DES=m +CONFIG_CRYPTO_FCRYPT=m +CONFIG_CRYPTO_KHAZAD=m +CONFIG_CRYPTO_SALSA20=m +CONFIG_CRYPTO_CHACHA20=m +CONFIG_CRYPTO_SEED=m +CONFIG_CRYPTO_SERPENT=m +CONFIG_CRYPTO_TEA=m +CONFIG_CRYPTO_TWOFISH=m +CONFIG_CRYPTO_DEFLATE=m +CONFIG_CRYPTO_LZO=m +# CONFIG_CRYPTO_842 is not set +CONFIG_CRYPTO_LZ4=m +CONFIG_CRYPTO_LZ4HC=m +CONFIG_CRYPTO_ANSI_CPRNG=m +CONFIG_CRYPTO_DRBG_MENU=m +# CONFIG_CRYPTO_DRBG_HASH is not set +# CONFIG_CRYPTO_DRBG_CTR is not set +CONFIG_CRYPTO_JITTERENTROPY=m +CONFIG_CRYPTO_USER_API_HASH=m +CONFIG_CRYPTO_USER_API_SKCIPHER=m +CONFIG_CRYPTO_USER_API_RNG=m +CONFIG_CRYPTO_USER_API_AEAD=m + +## +## file: crypto/asymmetric_keys/Kconfig +## +#. Not yet +# CONFIG_ASYMMETRIC_KEY_TYPE is not set + +## +## file: drivers/accessibility/Kconfig +## +CONFIG_ACCESSIBILITY=y +CONFIG_A11Y_BRAILLE_CONSOLE=y + +## +## file: drivers/acpi/Kconfig +## +# CONFIG_ACPI_DEBUGGER is not set +CONFIG_ACPI_TABLE_UPGRADE=y +# CONFIG_ACPI_BGRT is not set +# CONFIG_ACPI_REDUCED_HARDWARE_ONLY is not set +# CONFIG_PMIC_OPREGION is not set +# CONFIG_ACPI_CONFIGFS is not set + +## +## file: drivers/acpi/nfit/Kconfig +## +CONFIG_ACPI_NFIT=m + +## +## file: drivers/android/Kconfig +## +# CONFIG_ANDROID is not set + +## +## file: drivers/ata/Kconfig +## +CONFIG_ATA=m +CONFIG_ATA_VERBOSE_ERROR=y +CONFIG_ATA_ACPI=y +CONFIG_SATA_ZPODD=y +CONFIG_SATA_PMP=y +CONFIG_SATA_AHCI=m +# CONFIG_SATA_AHCI_PLATFORM is not set +# CONFIG_AHCI_CEVA is not set +# CONFIG_AHCI_QORIQ is not set +#. This driver loses data (#714295) +# CONFIG_SATA_INIC162X is not set +CONFIG_SATA_ACARD_AHCI=m +CONFIG_SATA_SIL24=m +CONFIG_ATA_SFF=y +CONFIG_PDC_ADMA=m +CONFIG_SATA_QSTOR=m +CONFIG_SATA_SX4=m +CONFIG_ATA_BMDMA=y +CONFIG_ATA_PIIX=m +# CONFIG_SATA_DWC is not set +# CONFIG_SATA_HIGHBANK is not set +CONFIG_SATA_MV=m +CONFIG_SATA_NV=m +CONFIG_SATA_PROMISE=m +# CONFIG_SATA_RCAR is not set +CONFIG_SATA_SIL=m +CONFIG_SATA_SIS=m +CONFIG_SATA_SVW=m +CONFIG_SATA_ULI=m +CONFIG_SATA_VIA=m +CONFIG_SATA_VITESSE=m +# CONFIG_PATA_ALI is not set +# CONFIG_PATA_AMD is not set +# CONFIG_PATA_ARASAN_CF is not set +CONFIG_PATA_ARTOP=m +# CONFIG_PATA_ATIIXP is not set +CONFIG_PATA_ATP867X=m +CONFIG_PATA_CMD64X=m +# CONFIG_PATA_CS5536 is not set +# CONFIG_PATA_CYPRESS is not set +# CONFIG_PATA_EFAR is not set +# CONFIG_PATA_HPT366 is not set +# CONFIG_PATA_HPT37X is not set +# CONFIG_PATA_HPT3X2N is not set +# CONFIG_PATA_HPT3X3 is not set +CONFIG_PATA_IT8213=m +CONFIG_PATA_IT821X=m +CONFIG_PATA_JMICRON=m +CONFIG_PATA_MARVELL=m +# CONFIG_PATA_NETCELL is not set +CONFIG_PATA_NINJA32=m +# CONFIG_PATA_NS87415 is not set +# CONFIG_PATA_OLDPIIX is not set +# CONFIG_PATA_OPTIDMA is not set +# CONFIG_PATA_PDC2027X is not set +# CONFIG_PATA_PDC_OLD is not set +# CONFIG_PATA_RADISYS is not set +CONFIG_PATA_RDC=m +CONFIG_PATA_SCH=m +# CONFIG_PATA_SERVERWORKS is not set +# CONFIG_PATA_SIL680 is not set +CONFIG_PATA_SIS=m +CONFIG_PATA_TOSHIBA=m +# CONFIG_PATA_TRIFLEX is not set +# CONFIG_PATA_VIA is not set +# CONFIG_PATA_WINBOND is not set +# CONFIG_PATA_CMD640_PCI is not set +# CONFIG_PATA_ISAPNP is not set +# CONFIG_PATA_MPIIX is not set +# CONFIG_PATA_NS87410 is not set +# CONFIG_PATA_OPTI is not set +# CONFIG_PATA_PCMCIA is not set +# CONFIG_PATA_PLATFORM is not set +# CONFIG_PATA_QDI is not set +# CONFIG_PATA_RZ1000 is not set +# CONFIG_PATA_WINBOND_VLB is not set +# CONFIG_PATA_ACPI is not set +CONFIG_ATA_GENERIC=m +# CONFIG_PATA_LEGACY is not set + +## +## file: drivers/atm/Kconfig +## +CONFIG_ATM_DUMMY=m +CONFIG_ATM_NICSTAR=m +CONFIG_ATM_NICSTAR_USE_SUNI=y +CONFIG_ATM_NICSTAR_USE_IDT77105=y +CONFIG_ATM_IA=m +# CONFIG_ATM_IA_DEBUG is not set +CONFIG_ATM_FORE200E=m +CONFIG_ATM_SOLOS=m + +## +## file: drivers/auxdisplay/Kconfig +## +# CONFIG_AUXDISPLAY is not set +# CONFIG_PANEL is not set + +## +## file: drivers/base/Kconfig +## +# CONFIG_UEVENT_HELPER is not set +CONFIG_DEVTMPFS=y +# CONFIG_DEVTMPFS_MOUNT is not set +CONFIG_STANDALONE=y +CONFIG_PREVENT_FIRMWARE_BUILD=y +CONFIG_FW_LOADER=y +# CONFIG_FIRMWARE_IN_KERNEL is not set +CONFIG_EXTRA_FIRMWARE="" +# CONFIG_FW_LOADER_USER_HELPER_FALLBACK is not set +CONFIG_ALLOW_DEV_COREDUMP=y +# CONFIG_DEBUG_DRIVER is not set +# CONFIG_DEBUG_DEVRES is not set +# CONFIG_DEBUG_TEST_DRIVER_REMOVE is not set +# CONFIG_DMA_FENCE_TRACE is not set + +## +## file: drivers/bcma/Kconfig +## +CONFIG_BCMA=m +CONFIG_BCMA_HOST_PCI=y +# CONFIG_BCMA_HOST_SOC is not set +# CONFIG_BCMA_DRIVER_PCI_HOSTMODE is not set +# CONFIG_BCMA_DRIVER_GMAC_CMN is not set +# CONFIG_BCMA_DRIVER_GPIO is not set +# CONFIG_BCMA_DEBUG is not set + +## +## file: drivers/block/Kconfig +## +CONFIG_BLK_DEV=y +CONFIG_BLK_DEV_NULL_BLK=m +# CONFIG_PARIDE is not set +CONFIG_BLK_DEV_LOOP=m +CONFIG_BLK_DEV_LOOP_MIN_COUNT=8 +# CONFIG_BLK_DEV_CRYPTOLOOP is not set +CONFIG_BLK_DEV_NBD=m +CONFIG_BLK_DEV_SKD=m +CONFIG_BLK_DEV_RAM=m +CONFIG_BLK_DEV_RAM_COUNT=16 +CONFIG_BLK_DEV_RAM_SIZE=16384 +CONFIG_ATA_OVER_ETH=m +CONFIG_XEN_BLKDEV_FRONTEND=m +CONFIG_XEN_BLKDEV_BACKEND=m +CONFIG_VIRTIO_BLK=m +CONFIG_BLK_DEV_RBD=m +# CONFIG_BLK_DEV_RSXX is not set + +## +## file: drivers/block/drbd/Kconfig +## +CONFIG_BLK_DEV_DRBD=m +# CONFIG_DRBD_FAULT_INJECTION is not set + +## +## file: drivers/block/mtip32xx/Kconfig +## +CONFIG_BLK_DEV_PCIESSD_MTIP32XX=m + +## +## file: drivers/block/zram/Kconfig +## +CONFIG_ZRAM=m + +## +## file: drivers/bluetooth/Kconfig +## +CONFIG_BT_HCIBTUSB=m +CONFIG_BT_HCIBTUSB_BCM=y +CONFIG_BT_HCIBTUSB_RTL=y +CONFIG_BT_HCIBTSDIO=m +CONFIG_BT_HCIUART_ATH3K=y +CONFIG_BT_HCIUART_LL=y +CONFIG_BT_HCIUART_3WIRE=y +CONFIG_BT_HCIUART_INTEL=y +CONFIG_BT_HCIUART_BCM=y +CONFIG_BT_HCIUART_QCA=y +CONFIG_BT_HCIUART_AG6XX=y +CONFIG_BT_HCIUART_MRVL=y +# CONFIG_BT_HCIBTUART is not set +CONFIG_BT_MRVL=m +CONFIG_BT_MRVL_SDIO=m +CONFIG_BT_ATH3K=m +CONFIG_BT_WILINK=m + +## +## file: drivers/bus/Kconfig +## +# CONFIG_OMAP_OCP2SCP is not set + +## +## file: drivers/char/Kconfig +## +CONFIG_DEVMEM=y +# CONFIG_DEVKMEM is not set +CONFIG_TTY_PRINTK=m +CONFIG_VIRTIO_CONSOLE=m +# CONFIG_R3964 is not set +CONFIG_PC8736x_GPIO=m +CONFIG_NSC_GPIO=m +# CONFIG_RAW_DRIVER is not set +CONFIG_HANGCHECK_TIMER=m +CONFIG_TELCLOCK=m +CONFIG_DEVPORT=y + +## +## file: drivers/char/hw_random/Kconfig +## +CONFIG_HW_RANDOM=m +# CONFIG_HW_RANDOM_TIMERIOMEM is not set +CONFIG_HW_RANDOM_VIRTIO=m +CONFIG_HW_RANDOM_TPM=m + +## +## file: drivers/char/pcmcia/Kconfig +## +CONFIG_SYNCLINK_CS=m +CONFIG_CARDMAN_4000=m +CONFIG_CARDMAN_4040=m +CONFIG_IPWIRELESS=m + +## +## file: drivers/char/tpm/st33zp24/Kconfig +## +# CONFIG_TCG_TIS_ST33ZP24_SPI is not set + +## +## file: drivers/char/xillybus/Kconfig +## +# CONFIG_XILLYBUS is not set + +## +## file: drivers/clk/Kconfig +## +# CONFIG_COMMON_CLK_SI5351 is not set +# CONFIG_COMMON_CLK_SI514 is not set +# CONFIG_COMMON_CLK_SI570 is not set +# CONFIG_COMMON_CLK_CDCE706 is not set +# CONFIG_COMMON_CLK_CDCE925 is not set +# CONFIG_COMMON_CLK_CS2000_CP is not set + +## +## file: drivers/connector/Kconfig +## +CONFIG_CONNECTOR=y +CONFIG_PROC_EVENTS=y + +## +## file: drivers/cpufreq/Kconfig +## +CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_STAT=y +## choice: Default CPUFreq governor +CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set +## end choice +CONFIG_CPU_FREQ_GOV_PERFORMANCE=y +CONFIG_CPU_FREQ_GOV_POWERSAVE=m +CONFIG_CPU_FREQ_GOV_USERSPACE=m +CONFIG_CPU_FREQ_GOV_ONDEMAND=m +CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m +CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y +# CONFIG_CPUFREQ_DT is not set + +## +## file: drivers/cpuidle/Kconfig +## +CONFIG_CPU_IDLE_GOV_LADDER=y +CONFIG_CPU_IDLE_GOV_MENU=y + +## +## file: drivers/crypto/Kconfig +## +CONFIG_CRYPTO_HW=y +CONFIG_CRYPTO_DEV_HIFN_795X=m +CONFIG_CRYPTO_DEV_HIFN_795X_RNG=y + +## +## file: drivers/crypto/chelsio/Kconfig +## +CONFIG_CRYPTO_DEV_CHELSIO=m + +## +## file: drivers/dax/Kconfig +## +CONFIG_DEV_DAX=m +CONFIG_DEV_DAX_PMEM=m + +## +## file: drivers/devfreq/Kconfig +## +# CONFIG_PM_DEVFREQ is not set +CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=m +# CONFIG_DEVFREQ_GOV_PERFORMANCE is not set +# CONFIG_DEVFREQ_GOV_POWERSAVE is not set +# CONFIG_DEVFREQ_GOV_USERSPACE is not set + +## +## file: drivers/devfreq/event/Kconfig +## +# CONFIG_PM_DEVFREQ_EVENT is not set + +## +## file: drivers/dma/Kconfig +## +# CONFIG_DMADEVICES_DEBUG is not set +# CONFIG_FSL_EDMA is not set +# CONFIG_INTEL_IDMA64 is not set +CONFIG_ASYNC_TX_DMA=y +# CONFIG_DMATEST is not set + +## +## file: drivers/dma/dw/Kconfig +## +# CONFIG_DW_DMAC is not set +# CONFIG_DW_DMAC_PCI is not set + +## +## file: drivers/dma-buf/Kconfig +## +# CONFIG_SYNC_FILE is not set + +## +## file: drivers/edac/Kconfig +## +CONFIG_EDAC_LEGACY_SYSFS=y + +## +## file: drivers/extcon/Kconfig +## +# CONFIG_EXTCON is not set + +## +## file: drivers/firewire/Kconfig +## +CONFIG_FIREWIRE=m +CONFIG_FIREWIRE_OHCI=m +CONFIG_FIREWIRE_SBP2=m +CONFIG_FIREWIRE_NET=m +CONFIG_FIREWIRE_NOSY=m + +## +## file: drivers/firmware/Kconfig +## +CONFIG_DMI_SYSFS=y + +## +## file: drivers/firmware/efi/Kconfig +## +CONFIG_EFI_VARS=m +CONFIG_EFI_VARS_PSTORE=m +# CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE is not set +# CONFIG_EFI_TEST is not set + +## +## file: drivers/fmc/Kconfig +## +# CONFIG_FMC is not set + +## +## file: drivers/fpga/Kconfig +## +# CONFIG_FPGA is not set + +## +## file: drivers/gpio/Kconfig +## +# CONFIG_GPIOLIB is not set +# CONFIG_DEBUG_GPIO is not set +CONFIG_GPIO_SYSFS=y +# CONFIG_GPIO_74XX_MMIO is not set +# CONFIG_GPIO_ALTERA is not set +# CONFIG_GPIO_AMDPT is not set +# CONFIG_GPIO_DWAPB is not set +# CONFIG_GPIO_GENERIC_PLATFORM is not set +# CONFIG_GPIO_GRGPIO is not set +# CONFIG_GPIO_MOCKUP is not set +# CONFIG_GPIO_VX855 is not set +# CONFIG_GPIO_XILINX is not set +# CONFIG_GPIO_ZX is not set +# CONFIG_GPIO_104_IDIO_16 is not set +# CONFIG_GPIO_IT87 is not set +# CONFIG_GPIO_SCH311X is not set +# CONFIG_GPIO_TS5500 is not set +# CONFIG_GPIO_ADP5588 is not set +# CONFIG_GPIO_ADNP is not set +# CONFIG_GPIO_MAX7300 is not set +# CONFIG_GPIO_MAX732X is not set +# CONFIG_GPIO_PCA953X is not set +# CONFIG_GPIO_PCF857X is not set +# CONFIG_GPIO_TPIC2810 is not set +# CONFIG_GPIO_TS4900 is not set +# CONFIG_GPIO_CS5535 is not set +# CONFIG_GPIO_AMD8111 is not set +# CONFIG_GPIO_INTEL_MID is not set +# CONFIG_GPIO_ML_IOH is not set +# CONFIG_GPIO_RDC321X is not set +# CONFIG_GPIO_74X164 is not set +# CONFIG_GPIO_MAX7301 is not set +# CONFIG_GPIO_MC33880 is not set +# CONFIG_GPIO_PISOSR is not set +CONFIG_GPIO_VIPERBOARD=m + +## +## file: drivers/gpu/drm/Kconfig +## +# CONFIG_DRM_DP_AUX_CHARDEV is not set +CONFIG_DRM_FBDEV_EMULATION=y +CONFIG_DRM_LOAD_EDID_FIRMWARE=y +CONFIG_DRM_VGEM=m +CONFIG_DRM_LEGACY=y +CONFIG_DRM_VIA=m +CONFIG_DRM_SAVAGE=m + +## +## file: drivers/gpu/drm/amd/acp/Kconfig +## +# CONFIG_DRM_AMD_ACP is not set + +## +## file: drivers/gpu/drm/amd/amdgpu/Kconfig +## +CONFIG_DRM_AMDGPU_SI=y +CONFIG_DRM_AMDGPU_CIK=y +CONFIG_DRM_AMDGPU_USERPTR=y +# CONFIG_DRM_AMDGPU_GART_DEBUGFS is not set + +## +## file: drivers/gpu/drm/ast/Kconfig +## +# CONFIG_DRM_AST is not set + +## +## file: drivers/gpu/drm/bochs/Kconfig +## +CONFIG_DRM_BOCHS=m + +## +## file: drivers/gpu/drm/bridge/Kconfig +## +# CONFIG_DRM_ANALOGIX_ANX78XX is not set +# CONFIG_DRM_NXP_PTN3460 is not set +# CONFIG_DRM_PARADE_PS8622 is not set + +## +## file: drivers/gpu/drm/bridge/adv7511/Kconfig +## +# CONFIG_DRM_I2C_ADV7511 is not set + +## +## file: drivers/gpu/drm/cirrus/Kconfig +## +CONFIG_DRM_CIRRUS_QEMU=m + +## +## file: drivers/gpu/drm/i2c/Kconfig +## +# CONFIG_DRM_I2C_CH7006 is not set +# CONFIG_DRM_I2C_SIL164 is not set +# CONFIG_DRM_I2C_NXP_TDA998X is not set + +## +## file: drivers/gpu/drm/i915/Kconfig +## +CONFIG_DRM_I915_USERPTR=y + +## +## file: drivers/gpu/drm/i915/Kconfig.debug +## +# CONFIG_DRM_I915_WERROR is not set +# CONFIG_DRM_I915_DEBUG is not set + +## +## file: drivers/gpu/drm/mgag200/Kconfig +## +# CONFIG_DRM_MGAG200 is not set + +## +## file: drivers/gpu/drm/nouveau/Kconfig +## +CONFIG_DRM_NOUVEAU=m +CONFIG_NOUVEAU_DEBUG=5 +CONFIG_NOUVEAU_DEBUG_DEFAULT=3 +CONFIG_DRM_NOUVEAU_BACKLIGHT=y + +## +## file: drivers/gpu/drm/panel/Kconfig +## +# CONFIG_DRM_PANEL_SAMSUNG_LD9040 is not set +# CONFIG_DRM_PANEL_LG_LG4573 is not set +# CONFIG_DRM_PANEL_SAMSUNG_S6E8AA0 is not set +# CONFIG_DRM_PANEL_SHARP_LQ101R1SX01 is not set + +## +## file: drivers/gpu/drm/qxl/Kconfig +## +CONFIG_DRM_QXL=m + +## +## file: drivers/gpu/drm/radeon/Kconfig +## +# CONFIG_DRM_RADEON_USERPTR is not set + +## +## file: drivers/gpu/drm/udl/Kconfig +## +CONFIG_DRM_UDL=m + +## +## file: drivers/gpu/drm/virtio/Kconfig +## +CONFIG_DRM_VIRTIO_GPU=m + +## +## file: drivers/gpu/drm/vmwgfx/Kconfig +## +# CONFIG_DRM_VMWGFX is not set + +## +## file: drivers/gpu/vga/Kconfig +## +CONFIG_VGA_ARB=y + +## +## file: drivers/hid/Kconfig +## +CONFIG_HID=m +CONFIG_HID_BATTERY_STRENGTH=y +CONFIG_HIDRAW=y +CONFIG_UHID=m +CONFIG_HID_GENERIC=m +CONFIG_HID_A4TECH=y +CONFIG_HID_ACRUX=m +CONFIG_HID_ACRUX_FF=y +CONFIG_HID_APPLE=y +CONFIG_HID_ASUS=m +CONFIG_HID_AUREAL=m +CONFIG_HID_BELKIN=y +CONFIG_HID_BETOP_FF=m +CONFIG_HID_CHERRY=y +CONFIG_HID_CHICONY=y +CONFIG_HID_CORSAIR=m +CONFIG_HID_PRODIKEYS=m +CONFIG_HID_CMEDIA=m +CONFIG_HID_CP2112=m +CONFIG_HID_CYPRESS=y +CONFIG_HID_DRAGONRISE=m +CONFIG_DRAGONRISE_FF=y +CONFIG_HID_EMS_FF=m +CONFIG_HID_ELECOM=m +CONFIG_HID_ELO=m +CONFIG_HID_EZKEY=y +CONFIG_HID_GEMBIRD=m +# CONFIG_HID_GFRM is not set +CONFIG_HID_HOLTEK=m +CONFIG_HOLTEK_FF=y +# CONFIG_HID_GT683R is not set +CONFIG_HID_KEYTOUCH=m +CONFIG_HID_KYE=m +CONFIG_HID_UCLOGIC=m +CONFIG_HID_WALTOP=m +CONFIG_HID_GYRATION=m +CONFIG_HID_ICADE=m +CONFIG_HID_TWINHAN=m +CONFIG_HID_KENSINGTON=y +CONFIG_HID_LCPOWER=m +CONFIG_HID_LED=m +CONFIG_HID_LENOVO=m +CONFIG_HID_LOGITECH=y +CONFIG_HID_LOGITECH_DJ=m +CONFIG_LOGITECH_FF=y +CONFIG_LOGIRUMBLEPAD2_FF=y +CONFIG_LOGIG940_FF=y +CONFIG_LOGIWHEELS_FF=y +CONFIG_HID_MAGICMOUSE=m +CONFIG_HID_MICROSOFT=y +CONFIG_HID_MONTEREY=y +CONFIG_HID_MULTITOUCH=m +CONFIG_HID_NTRIG=m +CONFIG_HID_ORTEK=m +CONFIG_HID_PANTHERLORD=m +CONFIG_PANTHERLORD_FF=y +CONFIG_HID_PENMOUNT=m +CONFIG_HID_PETALYNX=m +CONFIG_HID_PICOLCD=m +CONFIG_HID_PICOLCD_FB=y +CONFIG_HID_PICOLCD_BACKLIGHT=y +CONFIG_HID_PICOLCD_LCD=y +CONFIG_HID_PICOLCD_LEDS=y +CONFIG_HID_PICOLCD_CIR=y +CONFIG_HID_PLANTRONICS=m +CONFIG_HID_PRIMAX=m +CONFIG_HID_ROCCAT=m +CONFIG_HID_SAITEK=m +CONFIG_HID_SAMSUNG=m +CONFIG_HID_SONY=m +CONFIG_SONY_FF=y +CONFIG_HID_SPEEDLINK=m +CONFIG_HID_STEELSERIES=m +CONFIG_HID_SUNPLUS=m +CONFIG_HID_RMI=m +CONFIG_HID_GREENASIA=m +CONFIG_GREENASIA_FF=y +CONFIG_HID_SMARTJOYPLUS=m +CONFIG_SMARTJOYPLUS_FF=y +CONFIG_HID_TIVO=m +CONFIG_HID_TOPSEED=m +CONFIG_HID_THINGM=m +CONFIG_HID_THRUSTMASTER=m +CONFIG_THRUSTMASTER_FF=y +CONFIG_HID_WACOM=m +CONFIG_HID_WIIMOTE=m +CONFIG_HID_XINMO=m +CONFIG_HID_ZEROPLUS=m +CONFIG_ZEROPLUS_FF=y +CONFIG_HID_ZYDACRON=m +CONFIG_HID_SENSOR_HUB=m +CONFIG_HID_SENSOR_CUSTOM_SENSOR=m +CONFIG_HID_ALPS=m + +## +## file: drivers/hid/intel-ish-hid/Kconfig +## +# CONFIG_INTEL_ISH_HID is not set + +## +## file: drivers/hid/usbhid/Kconfig +## +CONFIG_HID_PID=y +CONFIG_USB_HIDDEV=y +#. These are for HID Boot Protocol, not full HID +# CONFIG_USB_KBD is not set +# CONFIG_USB_MOUSE is not set + +## +## file: drivers/hsi/Kconfig +## +# CONFIG_HSI is not set + +## +## file: drivers/hwmon/Kconfig +## +CONFIG_HWMON=y +# CONFIG_HWMON_DEBUG_CHIP is not set +CONFIG_SENSORS_ABITUGURU=m +CONFIG_SENSORS_ABITUGURU3=m +# CONFIG_SENSORS_AD7314 is not set +CONFIG_SENSORS_AD7414=m +CONFIG_SENSORS_AD7418=m +CONFIG_SENSORS_ADM1029=m +CONFIG_SENSORS_ADM9240=m +# CONFIG_SENSORS_ADT7310 is not set +CONFIG_SENSORS_ADT7411=m +CONFIG_SENSORS_ADT7462=m +CONFIG_SENSORS_ADT7470=m +CONFIG_SENSORS_ADT7475=m +CONFIG_SENSORS_ASC7621=m +CONFIG_SENSORS_APPLESMC=m +CONFIG_SENSORS_ATXP1=m +CONFIG_SENSORS_DS620=m +CONFIG_SENSORS_I5K_AMB=m +CONFIG_SENSORS_F71882FG=m +CONFIG_SENSORS_F75375S=m +CONFIG_SENSORS_MC13783_ADC=m +CONFIG_SENSORS_FSCHMD=m +CONFIG_SENSORS_FTSTEUTATES=m +CONFIG_SENSORS_G760A=m +# CONFIG_SENSORS_GPIO_FAN is not set +# CONFIG_SENSORS_HIH6130 is not set +CONFIG_SENSORS_IBMAEM=m +CONFIG_SENSORS_IBMPEX=m +# CONFIG_SENSORS_IIO_HWMON is not set +CONFIG_SENSORS_CORETEMP=m +# CONFIG_SENSORS_IT87 is not set +CONFIG_SENSORS_JC42=m +CONFIG_SENSORS_LINEAGE=m +CONFIG_SENSORS_LTC4151=m +CONFIG_SENSORS_LTC4215=m +CONFIG_SENSORS_LTC4245=m +CONFIG_SENSORS_LTC4261=m +CONFIG_SENSORS_MAX1111=m +CONFIG_SENSORS_MAX16065=m +CONFIG_SENSORS_MAX1668=m +# CONFIG_SENSORS_MAX197 is not set +CONFIG_SENSORS_MAX6639=m +CONFIG_SENSORS_MAX6642=m +CONFIG_SENSORS_MAX6650=m +# CONFIG_SENSORS_MCP3021 is not set +CONFIG_SENSORS_ADCXX=m +CONFIG_SENSORS_LM70=m +CONFIG_SENSORS_LM73=m +CONFIG_SENSORS_LM93=m +CONFIG_SENSORS_LM95241=m +CONFIG_SENSORS_LM95245=m +CONFIG_SENSORS_PC87427=m +CONFIG_SENSORS_NTC_THERMISTOR=m +CONFIG_SENSORS_NCT6683=m +CONFIG_SENSORS_NCT6775=m +# CONFIG_SENSORS_SHT15 is not set +CONFIG_SENSORS_SHT21=m +CONFIG_SENSORS_DME1737=m +CONFIG_SENSORS_EMC1403=m +CONFIG_SENSORS_EMC2103=m +CONFIG_SENSORS_EMC6W201=m +CONFIG_SENSORS_SMSC47M192=m +CONFIG_SENSORS_SCH5627=m +CONFIG_SENSORS_SMM665=m +CONFIG_SENSORS_ADS1015=m +CONFIG_SENSORS_ADS7828=m +CONFIG_SENSORS_ADS7871=m +CONFIG_SENSORS_AMC6821=m +# CONFIG_SENSORS_INA209 is not set +# CONFIG_SENSORS_INA2XX is not set +CONFIG_SENSORS_THMC50=m +CONFIG_SENSORS_TMP102=m +CONFIG_SENSORS_TMP401=m +CONFIG_SENSORS_TMP421=m +CONFIG_SENSORS_VIA_CPUTEMP=m +CONFIG_SENSORS_VT1211=m +CONFIG_SENSORS_VT8231=m +CONFIG_SENSORS_W83791D=m +CONFIG_SENSORS_W83792D=m +CONFIG_SENSORS_W83793=m +CONFIG_SENSORS_W83795=m +# CONFIG_SENSORS_W83795_FANCTRL is not set +CONFIG_SENSORS_W83L786NG=m +CONFIG_SENSORS_W83627EHF=m +CONFIG_SENSORS_WM831X=m +CONFIG_SENSORS_WM8350=m +CONFIG_SENSORS_ATK0110=m + +## +## file: drivers/hwmon/pmbus/Kconfig +## +# CONFIG_PMBUS is not set + +## +## file: drivers/hwtracing/intel_th/Kconfig +## +# CONFIG_INTEL_TH is not set + +## +## file: drivers/hwtracing/stm/Kconfig +## +# CONFIG_STM is not set +# CONFIG_STM_DUMMY is not set +# CONFIG_STM_SOURCE_CONSOLE is not set + +## +## file: drivers/i2c/Kconfig +## +CONFIG_I2C_COMPAT=y +CONFIG_I2C_CHARDEV=m +# CONFIG_I2C_MUX is not set +CONFIG_I2C_HELPER_AUTO=y +# CONFIG_I2C_SLAVE is not set + +## +## file: drivers/i2c/busses/Kconfig +## +CONFIG_I2C_ISCH=m +CONFIG_I2C_NFORCE2_S4985=m +# CONFIG_I2C_CBUS_GPIO is not set +# CONFIG_I2C_EMEV2 is not set +# CONFIG_I2C_GPIO is not set +CONFIG_I2C_OCORES=m +CONFIG_I2C_PCA_PLATFORM=m +# CONFIG_I2C_RK3X is not set +CONFIG_I2C_SIMTEC=m +# CONFIG_I2C_XILINX is not set +CONFIG_I2C_DIOLAN_U2C=m +CONFIG_I2C_ROBOTFUZZ_OSIF=m +CONFIG_I2C_TAOS_EVM=m +CONFIG_I2C_TINY_USB=m +CONFIG_I2C_VIPERBOARD=m + +## +## file: drivers/i2c/muxes/Kconfig +## +# CONFIG_I2C_ARB_GPIO_CHALLENGE is not set +# CONFIG_I2C_MUX_GPIO is not set +# CONFIG_I2C_MUX_PCA9541 is not set +# CONFIG_I2C_MUX_PCA954x is not set +# CONFIG_I2C_MUX_PINCTRL is not set +# CONFIG_I2C_MUX_REG is not set + +## +## file: drivers/ide/Kconfig +## +# CONFIG_IDE is not set +#. But for m68k flavours that need it +CONFIG_IDE_GD=m +CONFIG_IDE_GD_ATA=y +CONFIG_IDE_GD_ATAPI=y +# CONFIG_IDE_TASK_IOCTL is not set +CONFIG_IDE_PROC_FS=y +# CONFIG_BLK_DEV_PLATFORM is not set +# CONFIG_BLK_DEV_JMICRON is not set +# CONFIG_BLK_DEV_IT821X is not set + +## +## file: drivers/iio/Kconfig +## +CONFIG_IIO=m +CONFIG_IIO_BUFFER=y +# CONFIG_IIO_TRIGGER is not set + +## +## file: drivers/iio/accel/Kconfig +## +# CONFIG_BMA180 is not set +# CONFIG_BMA220 is not set +# CONFIG_BMC150_ACCEL is not set +# CONFIG_DMARD09 is not set +CONFIG_HID_SENSOR_ACCEL_3D=m +# CONFIG_IIO_ST_ACCEL_3AXIS is not set +# CONFIG_KXSD9 is not set +# CONFIG_KXCJK1013 is not set +# CONFIG_MC3230 is not set +# CONFIG_MMA7455_I2C is not set +# CONFIG_MMA7455_SPI is not set +# CONFIG_MMA7660 is not set +# CONFIG_MMA8452 is not set +# CONFIG_MMA9551 is not set +# CONFIG_MMA9553 is not set +# CONFIG_MXC4005 is not set +# CONFIG_MXC6255 is not set +# CONFIG_SCA3000 is not set +# CONFIG_STK8312 is not set +# CONFIG_STK8BA50 is not set + +## +## file: drivers/iio/adc/Kconfig +## +# CONFIG_AD7266 is not set +# CONFIG_AD7291 is not set +# CONFIG_AD7298 is not set +# CONFIG_AD7476 is not set +# CONFIG_AD7791 is not set +# CONFIG_AD7793 is not set +# CONFIG_AD7887 is not set +# CONFIG_AD7923 is not set +# CONFIG_AD799X is not set +# CONFIG_CC10001_ADC is not set +# CONFIG_HI8435 is not set +# CONFIG_INA2XX_ADC is not set +# CONFIG_LTC2485 is not set +# CONFIG_MAX1027 is not set +# CONFIG_MAX1363 is not set +# CONFIG_MCP320X is not set +# CONFIG_MCP3422 is not set +# CONFIG_NAU7802 is not set +# CONFIG_TI_ADC081C is not set +# CONFIG_TI_ADC0832 is not set +# CONFIG_TI_ADC12138 is not set +# CONFIG_TI_ADC128S052 is not set +# CONFIG_TI_ADC161S626 is not set +# CONFIG_TI_ADS1015 is not set +# CONFIG_VF610_ADC is not set +CONFIG_VIPERBOARD_ADC=m + +## +## file: drivers/iio/amplifiers/Kconfig +## +# CONFIG_AD8366 is not set + +## +## file: drivers/iio/buffer/Kconfig +## +#. These will be selected by drivers that need them +# CONFIG_IIO_BUFFER_CB is not set +# CONFIG_IIO_KFIFO_BUF is not set + +## +## file: drivers/iio/chemical/Kconfig +## +# CONFIG_ATLAS_PH_SENSOR is not set +# CONFIG_IAQCORE is not set +# CONFIG_VZ89X is not set + +## +## file: drivers/iio/common/ssp_sensors/Kconfig +## +# CONFIG_IIO_SSP_SENSORHUB is not set + +## +## file: drivers/iio/dac/Kconfig +## +# CONFIG_AD5064 is not set +# CONFIG_AD5360 is not set +# CONFIG_AD5380 is not set +# CONFIG_AD5421 is not set +CONFIG_AD5446=m +# CONFIG_AD5449 is not set +# CONFIG_AD5592R is not set +# CONFIG_AD5593R is not set +# CONFIG_AD5504 is not set +# CONFIG_AD5624R_SPI is not set +# CONFIG_AD5686 is not set +# CONFIG_AD5755 is not set +# CONFIG_AD5761 is not set +# CONFIG_AD5764 is not set +# CONFIG_AD5791 is not set +# CONFIG_AD7303 is not set +# CONFIG_AD8801 is not set +# CONFIG_M62332 is not set +# CONFIG_MAX517 is not set +# CONFIG_MAX5821 is not set +# CONFIG_MCP4725 is not set +# CONFIG_MCP4922 is not set + +## +## file: drivers/iio/dummy/Kconfig +## +# CONFIG_IIO_SIMPLE_DUMMY is not set + +## +## file: drivers/iio/frequency/Kconfig +## +# CONFIG_AD9523 is not set +# CONFIG_ADF4350 is not set + +## +## file: drivers/iio/gyro/Kconfig +## +# CONFIG_ADIS16080 is not set +# CONFIG_ADIS16130 is not set +# CONFIG_ADIS16136 is not set +# CONFIG_ADIS16260 is not set +# CONFIG_ADXRS450 is not set +# CONFIG_BMG160 is not set +CONFIG_HID_SENSOR_GYRO_3D=m +# CONFIG_IIO_ST_GYRO_3AXIS is not set +# CONFIG_ITG3200 is not set + +## +## file: drivers/iio/health/Kconfig +## +# CONFIG_AFE4403 is not set +# CONFIG_AFE4404 is not set +# CONFIG_MAX30100 is not set + +## +## file: drivers/iio/humidity/Kconfig +## +# CONFIG_AM2315 is not set +# CONFIG_DHT11 is not set +# CONFIG_HDC100X is not set +# CONFIG_HTU21 is not set +# CONFIG_SI7005 is not set +# CONFIG_SI7020 is not set + +## +## file: drivers/iio/imu/Kconfig +## +# CONFIG_ADIS16400 is not set +# CONFIG_ADIS16480 is not set +# CONFIG_KMX61 is not set + +## +## file: drivers/iio/imu/bmi160/Kconfig +## +# CONFIG_BMI160_I2C is not set +# CONFIG_BMI160_SPI is not set + +## +## file: drivers/iio/imu/inv_mpu6050/Kconfig +## +# CONFIG_INV_MPU6050_I2C is not set +# CONFIG_INV_MPU6050_SPI is not set + +## +## file: drivers/iio/light/Kconfig +## +CONFIG_ACPI_ALS=m +# CONFIG_ADJD_S311 is not set +# CONFIG_AL3320A is not set +# CONFIG_APDS9300 is not set +# CONFIG_APDS9960 is not set +# CONFIG_BH1750 is not set +CONFIG_BH1780=m +# CONFIG_CM32181 is not set +# CONFIG_CM3232 is not set +# CONFIG_CM3323 is not set +# CONFIG_CM36651 is not set +# CONFIG_GP2AP020A00F is not set +# CONFIG_SENSORS_ISL29028 is not set +# CONFIG_ISL29125 is not set +CONFIG_HID_SENSOR_ALS=m +CONFIG_HID_SENSOR_PROX=m +# CONFIG_JSA1212 is not set +# CONFIG_RPR0521 is not set +# CONFIG_LTR501 is not set +# CONFIG_MAX44000 is not set +# CONFIG_OPT3001 is not set +# CONFIG_PA12203001 is not set +# CONFIG_SI1145 is not set +# CONFIG_STK3310 is not set +# CONFIG_TCS3414 is not set +# CONFIG_TCS3472 is not set +# CONFIG_SENSORS_TSL2563 is not set +# CONFIG_TSL2583 is not set +# CONFIG_TSL4531 is not set +# CONFIG_US5182D is not set +# CONFIG_VCNL4000 is not set +# CONFIG_VEML6070 is not set + +## +## file: drivers/iio/magnetometer/Kconfig +## +# CONFIG_AK8975 is not set +# CONFIG_AK09911 is not set +# CONFIG_BMC150_MAGN_I2C is not set +# CONFIG_BMC150_MAGN_SPI is not set +# CONFIG_MAG3110 is not set +CONFIG_HID_SENSOR_MAGNETOMETER_3D=m +# CONFIG_MMC35240 is not set +# CONFIG_IIO_ST_MAGN_3AXIS is not set +# CONFIG_SENSORS_HMC5843_I2C is not set +# CONFIG_SENSORS_HMC5843_SPI is not set + +## +## file: drivers/iio/orientation/Kconfig +## +CONFIG_HID_SENSOR_INCLINOMETER_3D=m +CONFIG_HID_SENSOR_DEVICE_ROTATION=m + +## +## file: drivers/iio/potentiometer/Kconfig +## +# CONFIG_DS1803 is not set +# CONFIG_MAX5487 is not set +# CONFIG_MCP4131 is not set +# CONFIG_MCP4531 is not set +# CONFIG_TPL0102 is not set + +## +## file: drivers/iio/pressure/Kconfig +## +# CONFIG_BMP280 is not set +CONFIG_HID_SENSOR_PRESS=m +# CONFIG_HP03 is not set +# CONFIG_MPL115_I2C is not set +# CONFIG_MPL115_SPI is not set +# CONFIG_MPL3115 is not set +# CONFIG_MS5611 is not set +# CONFIG_MS5637 is not set +# CONFIG_IIO_ST_PRESS is not set +# CONFIG_T5403 is not set +# CONFIG_HP206C is not set +# CONFIG_ZPA2326 is not set + +## +## file: drivers/iio/proximity/Kconfig +## +# CONFIG_AS3935 is not set +# CONFIG_LIDAR_LITE_V2 is not set +# CONFIG_SX9500 is not set + +## +## file: drivers/iio/temperature/Kconfig +## +# CONFIG_MAXIM_THERMOCOUPLE is not set +# CONFIG_MLX90614 is not set +# CONFIG_TMP006 is not set +# CONFIG_TSYS01 is not set +# CONFIG_TSYS02D is not set + +## +## file: drivers/iio/trigger/Kconfig +## +# CONFIG_IIO_INTERRUPT_TRIGGER is not set +# CONFIG_IIO_SYSFS_TRIGGER is not set + +## +## file: drivers/infiniband/Kconfig +## +CONFIG_INFINIBAND=m +CONFIG_INFINIBAND_USER_MAD=m +CONFIG_INFINIBAND_USER_ACCESS=m +CONFIG_INFINIBAND_ON_DEMAND_PAGING=y + +## +## file: drivers/infiniband/hw/cxgb3/Kconfig +## +CONFIG_INFINIBAND_CXGB3=m +# CONFIG_INFINIBAND_CXGB3_DEBUG is not set + +## +## file: drivers/infiniband/hw/cxgb4/Kconfig +## +CONFIG_INFINIBAND_CXGB4=m + +## +## file: drivers/infiniband/hw/hfi1/Kconfig +## +CONFIG_INFINIBAND_HFI1=m + +## +## file: drivers/infiniband/hw/i40iw/Kconfig +## +CONFIG_INFINIBAND_I40IW=m + +## +## file: drivers/infiniband/hw/mlx4/Kconfig +## +CONFIG_MLX4_INFINIBAND=m + +## +## file: drivers/infiniband/hw/mlx5/Kconfig +## +CONFIG_MLX5_INFINIBAND=m + +## +## file: drivers/infiniband/hw/mthca/Kconfig +## +CONFIG_INFINIBAND_MTHCA=m +CONFIG_INFINIBAND_MTHCA_DEBUG=y + +## +## file: drivers/infiniband/hw/nes/Kconfig +## +CONFIG_INFINIBAND_NES=m +# CONFIG_INFINIBAND_NES_DEBUG is not set + +## +## file: drivers/infiniband/hw/ocrdma/Kconfig +## +CONFIG_INFINIBAND_OCRDMA=m + +## +## file: drivers/infiniband/hw/qedr/Kconfig +## +CONFIG_INFINIBAND_QEDR=m + +## +## file: drivers/infiniband/hw/qib/Kconfig +## +CONFIG_INFINIBAND_QIB=m +CONFIG_INFINIBAND_QIB_DCA=y + +## +## file: drivers/infiniband/sw/rdmavt/Kconfig +## +CONFIG_INFINIBAND_RDMAVT=m + +## +## file: drivers/infiniband/sw/rxe/Kconfig +## +CONFIG_RDMA_RXE=m + +## +## file: drivers/infiniband/ulp/ipoib/Kconfig +## +CONFIG_INFINIBAND_IPOIB=m +CONFIG_INFINIBAND_IPOIB_CM=y +CONFIG_INFINIBAND_IPOIB_DEBUG=y +# CONFIG_INFINIBAND_IPOIB_DEBUG_DATA is not set + +## +## file: drivers/infiniband/ulp/iser/Kconfig +## +CONFIG_INFINIBAND_ISER=m + +## +## file: drivers/infiniband/ulp/isert/Kconfig +## +CONFIG_INFINIBAND_ISERT=m + +## +## file: drivers/infiniband/ulp/srp/Kconfig +## +CONFIG_INFINIBAND_SRP=m + +## +## file: drivers/infiniband/ulp/srpt/Kconfig +## +CONFIG_INFINIBAND_SRPT=m + +## +## file: drivers/input/Kconfig +## +CONFIG_INPUT=y +CONFIG_INPUT_LEDS=y +CONFIG_INPUT_FF_MEMLESS=m +# CONFIG_INPUT_POLLDEV is not set +CONFIG_INPUT_SPARSEKMAP=m +# CONFIG_INPUT_MATRIXKMAP is not set +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_MOUSEDEV_PSAUX=y +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +CONFIG_INPUT_JOYDEV=m +CONFIG_INPUT_EVDEV=m +# CONFIG_INPUT_EVBUG is not set + +## +## file: drivers/input/joystick/Kconfig +## +CONFIG_JOYSTICK_ANALOG=m +CONFIG_JOYSTICK_A3D=m +CONFIG_JOYSTICK_ADI=m +CONFIG_JOYSTICK_COBRA=m +CONFIG_JOYSTICK_GF2K=m +CONFIG_JOYSTICK_GRIP=m +CONFIG_JOYSTICK_GRIP_MP=m +CONFIG_JOYSTICK_GUILLEMOT=m +CONFIG_JOYSTICK_INTERACT=m +CONFIG_JOYSTICK_SIDEWINDER=m +CONFIG_JOYSTICK_TMDC=m +CONFIG_JOYSTICK_WARRIOR=m +CONFIG_JOYSTICK_MAGELLAN=m +CONFIG_JOYSTICK_SPACEORB=m +CONFIG_JOYSTICK_SPACEBALL=m +CONFIG_JOYSTICK_STINGER=m +CONFIG_JOYSTICK_TWIDJOY=m +CONFIG_JOYSTICK_ZHENHUA=m +CONFIG_JOYSTICK_DB9=m +CONFIG_JOYSTICK_GAMECON=m +CONFIG_JOYSTICK_TURBOGRAFX=m +# CONFIG_JOYSTICK_AS5011 is not set +CONFIG_JOYSTICK_JOYDUMP=m +CONFIG_JOYSTICK_XPAD=m +CONFIG_JOYSTICK_XPAD_FF=y +CONFIG_JOYSTICK_XPAD_LEDS=y +CONFIG_JOYSTICK_WALKERA0701=m + +## +## file: drivers/input/joystick/iforce/Kconfig +## +CONFIG_JOYSTICK_IFORCE=m +CONFIG_JOYSTICK_IFORCE_USB=y +CONFIG_JOYSTICK_IFORCE_232=y + +## +## file: drivers/input/keyboard/Kconfig +## +CONFIG_INPUT_KEYBOARD=y +# CONFIG_KEYBOARD_ADC is not set +CONFIG_KEYBOARD_ADP5588=m +# CONFIG_KEYBOARD_ADP5589 is not set +# CONFIG_KEYBOARD_QT1070 is not set +CONFIG_KEYBOARD_QT2160=m +# CONFIG_KEYBOARD_GPIO is not set +# CONFIG_KEYBOARD_GPIO_POLLED is not set +# CONFIG_KEYBOARD_TCA6416 is not set +# CONFIG_KEYBOARD_TCA8418 is not set +# CONFIG_KEYBOARD_MATRIX is not set +CONFIG_KEYBOARD_LM8323=m +# CONFIG_KEYBOARD_LM8333 is not set +CONFIG_KEYBOARD_MAX7359=m +# CONFIG_KEYBOARD_MCS is not set +# CONFIG_KEYBOARD_MPR121 is not set +CONFIG_KEYBOARD_OPENCORES=m +# CONFIG_KEYBOARD_SAMSUNG is not set +CONFIG_KEYBOARD_STOWAWAY=m +# CONFIG_KEYBOARD_OMAP4 is not set +# CONFIG_KEYBOARD_CAP11XX is not set +# CONFIG_KEYBOARD_BCM is not set + +## +## file: drivers/input/misc/Kconfig +## +# CONFIG_INPUT_AD714X is not set +# CONFIG_INPUT_BMA150 is not set +# CONFIG_INPUT_E3X0_BUTTON is not set +# CONFIG_INPUT_MMA8450 is not set +# CONFIG_INPUT_GP2A is not set +# CONFIG_INPUT_GPIO_BEEPER is not set +# CONFIG_INPUT_GPIO_TILT_POLLED is not set +# CONFIG_INPUT_GPIO_DECODER is not set +CONFIG_INPUT_ATI_REMOTE2=m +CONFIG_INPUT_KEYSPAN_REMOTE=m +# CONFIG_INPUT_KXTJ9 is not set +CONFIG_INPUT_POWERMATE=m +CONFIG_INPUT_YEALINK=m +CONFIG_INPUT_CM109=m +CONFIG_INPUT_PCF50633_PMU=m +# CONFIG_INPUT_PCF8574 is not set +# CONFIG_INPUT_GPIO_ROTARY_ENCODER is not set +CONFIG_INPUT_WM831X_ON=m +# CONFIG_INPUT_ADXL34X is not set +# CONFIG_INPUT_IMS_PCU is not set +# CONFIG_INPUT_CMA3000 is not set +CONFIG_INPUT_XEN_KBDDEV_FRONTEND=y +# CONFIG_INPUT_DRV260X_HAPTICS is not set +# CONFIG_INPUT_DRV2665_HAPTICS is not set +# CONFIG_INPUT_DRV2667_HAPTICS is not set + +## +## file: drivers/input/mouse/Kconfig +## +CONFIG_MOUSE_PS2_ALPS=y +CONFIG_MOUSE_PS2_BYD=y +CONFIG_MOUSE_PS2_LOGIPS2PP=y +CONFIG_MOUSE_PS2_SYNAPTICS=y +CONFIG_MOUSE_PS2_CYPRESS=y +CONFIG_MOUSE_PS2_LIFEBOOK=y +CONFIG_MOUSE_PS2_TRACKPOINT=y +CONFIG_MOUSE_PS2_ELANTECH=y +CONFIG_MOUSE_PS2_SENTELIC=y +# CONFIG_MOUSE_PS2_TOUCHKIT is not set +CONFIG_MOUSE_PS2_FOCALTECH=y +# CONFIG_MOUSE_ELAN_I2C is not set +# CONFIG_MOUSE_GPIO is not set +CONFIG_MOUSE_SYNAPTICS_I2C=m +CONFIG_MOUSE_SYNAPTICS_USB=m + +## +## file: drivers/input/rmi4/Kconfig +## +# CONFIG_RMI4_CORE is not set + +## +## file: drivers/input/serio/Kconfig +## +CONFIG_SERIO_ALTERA_PS2=m +# CONFIG_SERIO_PS2MULT is not set +# CONFIG_SERIO_ARC_PS2 is not set +# CONFIG_SERIO_APBPS2 is not set +# CONFIG_SERIO_OLPC_APSP is not set +# CONFIG_USERIO is not set + +## +## file: drivers/input/tablet/Kconfig +## +CONFIG_INPUT_TABLET=y +CONFIG_TABLET_USB_ACECAD=m +CONFIG_TABLET_USB_AIPTEK=m +CONFIG_TABLET_USB_GTCO=m +CONFIG_TABLET_USB_HANWANG=m +CONFIG_TABLET_USB_KBTAB=m +CONFIG_TABLET_USB_PEGASUS=m +CONFIG_TABLET_SERIAL_WACOM4=m + +## +## file: drivers/input/touchscreen/Kconfig +## +CONFIG_TOUCHSCREEN_ADS7846=m +CONFIG_TOUCHSCREEN_AD7877=m +CONFIG_TOUCHSCREEN_AD7879=m +CONFIG_TOUCHSCREEN_AD7879_I2C=m +# CONFIG_TOUCHSCREEN_AD7879_SPI is not set +# CONFIG_TOUCHSCREEN_AR1021_I2C is not set +#. Chromebook Pixel +CONFIG_TOUCHSCREEN_ATMEL_MXT=m +# CONFIG_TOUCHSCREEN_AUO_PIXCIR is not set +# CONFIG_TOUCHSCREEN_BU21013 is not set +# CONFIG_TOUCHSCREEN_CHIPONE_ICN8318 is not set +# CONFIG_TOUCHSCREEN_CY8CTMG110 is not set +# CONFIG_TOUCHSCREEN_CYTTSP_CORE is not set +# CONFIG_TOUCHSCREEN_CYTTSP4_CORE is not set +CONFIG_TOUCHSCREEN_DYNAPRO=m +CONFIG_TOUCHSCREEN_HAMPSHIRE=m +CONFIG_TOUCHSCREEN_EETI=m +# CONFIG_TOUCHSCREEN_EGALAX is not set +# CONFIG_TOUCHSCREEN_EGALAX_SERIAL is not set +CONFIG_TOUCHSCREEN_FUJITSU=m +CONFIG_TOUCHSCREEN_GOODIX=m +# CONFIG_TOUCHSCREEN_ILI210X is not set +CONFIG_TOUCHSCREEN_GUNZE=m +# CONFIG_TOUCHSCREEN_EKTF2127 is not set +# CONFIG_TOUCHSCREEN_ELAN is not set +CONFIG_TOUCHSCREEN_ELO=m +CONFIG_TOUCHSCREEN_WACOM_W8001=m +# CONFIG_TOUCHSCREEN_WACOM_I2C is not set +# CONFIG_TOUCHSCREEN_MAX11801 is not set +CONFIG_TOUCHSCREEN_MCS5000=m +# CONFIG_TOUCHSCREEN_MMS114 is not set +# CONFIG_TOUCHSCREEN_MELFAS_MIP4 is not set +CONFIG_TOUCHSCREEN_MTOUCH=m +# CONFIG_TOUCHSCREEN_IMX6UL_TSC is not set +CONFIG_TOUCHSCREEN_INEXIO=m +CONFIG_TOUCHSCREEN_MK712=m +CONFIG_TOUCHSCREEN_HTCPEN=m +CONFIG_TOUCHSCREEN_PENMOUNT=m +# CONFIG_TOUCHSCREEN_EDT_FT5X06 is not set +CONFIG_TOUCHSCREEN_TOUCHRIGHT=m +CONFIG_TOUCHSCREEN_TOUCHWIN=m +CONFIG_TOUCHSCREEN_UCB1400=m +# CONFIG_TOUCHSCREEN_PIXCIR is not set +# CONFIG_TOUCHSCREEN_WDT87XX_I2C is not set +CONFIG_TOUCHSCREEN_WM97XX=m +CONFIG_TOUCHSCREEN_WM9705=y +CONFIG_TOUCHSCREEN_WM9712=y +CONFIG_TOUCHSCREEN_WM9713=y +CONFIG_TOUCHSCREEN_USB_COMPOSITE=m +CONFIG_TOUCHSCREEN_MC13783=m +CONFIG_TOUCHSCREEN_USB_EGALAX=y +CONFIG_TOUCHSCREEN_USB_PANJIT=y +CONFIG_TOUCHSCREEN_USB_3M=y +CONFIG_TOUCHSCREEN_USB_ITM=y +CONFIG_TOUCHSCREEN_USB_ETURBO=y +CONFIG_TOUCHSCREEN_USB_GUNZE=y +CONFIG_TOUCHSCREEN_USB_DMC_TSC10=y +CONFIG_TOUCHSCREEN_USB_IRTOUCH=y +CONFIG_TOUCHSCREEN_USB_IDEALTEK=y +CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH=y +CONFIG_TOUCHSCREEN_USB_GOTOP=y +CONFIG_TOUCHSCREEN_USB_JASTEC=y +CONFIG_TOUCHSCREEN_USB_ELO=y +CONFIG_TOUCHSCREEN_USB_E2I=y +CONFIG_TOUCHSCREEN_USB_ZYTRONIC=y +CONFIG_TOUCHSCREEN_USB_ETT_TC45USB=y +CONFIG_TOUCHSCREEN_USB_NEXIO=y +CONFIG_TOUCHSCREEN_TOUCHIT213=m +# CONFIG_TOUCHSCREEN_TSC2004 is not set +# CONFIG_TOUCHSCREEN_TSC2005 is not set +CONFIG_TOUCHSCREEN_TSC2007=m +# CONFIG_TOUCHSCREEN_RM_TS is not set +# CONFIG_TOUCHSCREEN_SILEAD is not set +# CONFIG_TOUCHSCREEN_SIS_I2C is not set +# CONFIG_TOUCHSCREEN_ST1232 is not set +CONFIG_TOUCHSCREEN_SUR40=m +# CONFIG_TOUCHSCREEN_SX8654 is not set +CONFIG_TOUCHSCREEN_TPS6507X=m +# CONFIG_TOUCHSCREEN_ZFORCE is not set +# CONFIG_TOUCHSCREEN_ROHM_BU21023 is not set + +## +## file: drivers/iommu/Kconfig +## +CONFIG_IOMMU_SUPPORT=y + +## +## file: drivers/ipack/Kconfig +## +# CONFIG_IPACK_BUS is not set + +## +## file: drivers/isdn/Kconfig +## +# CONFIG_ISDN is not set +# CONFIG_ISDN_I4L is not set + +## +## file: drivers/isdn/capi/Kconfig +## +CONFIG_CAPI_TRACE=y + +## +## file: drivers/isdn/gigaset/Kconfig +## +CONFIG_ISDN_DRV_GIGASET=m +CONFIG_GIGASET_CAPI=y +CONFIG_GIGASET_BASE=m +CONFIG_GIGASET_M105=m +CONFIG_GIGASET_M101=m +# CONFIG_GIGASET_DEBUG is not set + +## +## file: drivers/isdn/hardware/mISDN/Kconfig +## +CONFIG_MISDN_HFCPCI=m +CONFIG_MISDN_HFCMULTI=m +CONFIG_MISDN_HFCUSB=m +CONFIG_MISDN_AVMFRITZ=m +CONFIG_MISDN_SPEEDFAX=m +CONFIG_MISDN_INFINEON=m +CONFIG_MISDN_W6692=m +#. Binds a generic PCI bridge +# CONFIG_MISDN_NETJET is not set + +## +## file: drivers/isdn/hysdn/Kconfig +## +CONFIG_HYSDN=m +CONFIG_HYSDN_CAPI=y + +## +## file: drivers/isdn/mISDN/Kconfig +## +CONFIG_MISDN=m +CONFIG_MISDN_DSP=m +CONFIG_MISDN_L1OIP=m + +## +## file: drivers/leds/Kconfig +## +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=y +# CONFIG_LEDS_CLASS_FLASH is not set +CONFIG_LEDS_BRIGHTNESS_HW_CHANGED=y +# CONFIG_LEDS_BCM6328 is not set +# CONFIG_LEDS_BCM6358 is not set +# CONFIG_LEDS_LM3530 is not set +# CONFIG_LEDS_LM3642 is not set +CONFIG_LEDS_NET48XX=m +# CONFIG_LEDS_PCA9532 is not set +CONFIG_LEDS_GPIO=m +CONFIG_LEDS_LP3944=m +# CONFIG_LEDS_LP3952 is not set +# CONFIG_LEDS_LP5521 is not set +# CONFIG_LEDS_LP5523 is not set +# CONFIG_LEDS_LP5562 is not set +# CONFIG_LEDS_LP8501 is not set +# CONFIG_LEDS_LP8860 is not set +CONFIG_LEDS_PCA955X=m +# CONFIG_LEDS_PCA963X is not set +CONFIG_LEDS_WM831X_STATUS=m +CONFIG_LEDS_WM8350=m +CONFIG_LEDS_DAC124S085=m +CONFIG_LEDS_REGULATOR=m +CONFIG_LEDS_BD2802=m +CONFIG_LEDS_INTEL_SS4200=m +CONFIG_LEDS_LT3593=m +CONFIG_LEDS_MC13783=m +# CONFIG_LEDS_TCA6507 is not set +# CONFIG_LEDS_TLC591XX is not set +# CONFIG_LEDS_LM355x is not set +# CONFIG_LEDS_OT200 is not set +# CONFIG_LEDS_BLINKM is not set +# CONFIG_LEDS_MLXCPLD is not set + +## +## file: drivers/leds/trigger/Kconfig +## +CONFIG_LEDS_TRIGGERS=y +CONFIG_LEDS_TRIGGER_TIMER=m +CONFIG_LEDS_TRIGGER_ONESHOT=m +CONFIG_LEDS_TRIGGER_DISK=y +CONFIG_LEDS_TRIGGER_MTD=y +CONFIG_LEDS_TRIGGER_HEARTBEAT=m +CONFIG_LEDS_TRIGGER_BACKLIGHT=m +CONFIG_LEDS_TRIGGER_CPU=y +CONFIG_LEDS_TRIGGER_GPIO=m +CONFIG_LEDS_TRIGGER_DEFAULT_ON=m +CONFIG_LEDS_TRIGGER_TRANSIENT=m +CONFIG_LEDS_TRIGGER_CAMERA=m +CONFIG_LEDS_TRIGGER_PANIC=y + +## +## file: drivers/mailbox/Kconfig +## +# CONFIG_MAILBOX is not set + +## +## file: drivers/mcb/Kconfig +## +# CONFIG_MCB is not set + +## +## file: drivers/md/Kconfig +## +CONFIG_MD=y +CONFIG_BLK_DEV_MD=m +CONFIG_MD_LINEAR=m +CONFIG_MD_RAID0=m +CONFIG_MD_RAID1=m +CONFIG_MD_RAID10=m +CONFIG_MD_RAID456=m +CONFIG_MD_MULTIPATH=m +CONFIG_MD_FAULTY=m +# CONFIG_MD_CLUSTER is not set +CONFIG_BLK_DEV_DM=m +# CONFIG_DM_DEBUG is not set +# CONFIG_DM_DEBUG_BLOCK_STACK_TRACING is not set +CONFIG_DM_CRYPT=m +CONFIG_DM_SNAPSHOT=m +CONFIG_DM_THIN_PROVISIONING=m +CONFIG_DM_CACHE=m +CONFIG_DM_CACHE_SMQ=m +CONFIG_DM_ERA=m +CONFIG_DM_MIRROR=m +CONFIG_DM_LOG_USERSPACE=m +CONFIG_DM_RAID=m +CONFIG_DM_ZERO=m +CONFIG_DM_MULTIPATH=m +CONFIG_DM_MULTIPATH_QL=m +CONFIG_DM_MULTIPATH_ST=m +CONFIG_DM_DELAY=m +CONFIG_DM_UEVENT=y +CONFIG_DM_FLAKEY=m +CONFIG_DM_VERITY=m +CONFIG_DM_SWITCH=m +CONFIG_DM_LOG_WRITES=m + +## +## file: drivers/md/bcache/Kconfig +## +CONFIG_BCACHE=m +# CONFIG_BCACHE_DEBUG is not set +# CONFIG_BCACHE_CLOSURES_DEBUG is not set + +## +## file: drivers/media/Kconfig +## +CONFIG_MEDIA_SUPPORT=m +CONFIG_MEDIA_CAMERA_SUPPORT=y +CONFIG_MEDIA_ANALOG_TV_SUPPORT=y +CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y +CONFIG_MEDIA_RADIO_SUPPORT=y +CONFIG_MEDIA_SDR_SUPPORT=y +CONFIG_MEDIA_CEC_SUPPORT=y +CONFIG_MEDIA_CONTROLLER=y +# CONFIG_VIDEO_V4L2_SUBDEV_API is not set +CONFIG_DVB_NET=y +CONFIG_MEDIA_SUBDRV_AUTOSELECT=y + +## +## file: drivers/media/common/siano/Kconfig +## +CONFIG_SMS_SIANO_RC=y +# CONFIG_SMS_SIANO_DEBUGFS is not set + +## +## file: drivers/media/dvb-core/Kconfig +## +CONFIG_DVB_DYNAMIC_MINORS=y + +## +## file: drivers/media/dvb-frontends/Kconfig +## +CONFIG_DVB_CX24110=m +CONFIG_DVB_CX24123=m +CONFIG_DVB_MT312=m +CONFIG_DVB_S5H1420=m +CONFIG_DVB_STV0299=m +CONFIG_DVB_TDA8083=m +CONFIG_DVB_TDA10086=m +CONFIG_DVB_VES1X93=m +CONFIG_DVB_TUNER_ITD1000=m +CONFIG_DVB_TDA826X=m +CONFIG_DVB_TUA6100=m +CONFIG_DVB_SP8870=m +CONFIG_DVB_SP887X=m +CONFIG_DVB_CX22700=m +CONFIG_DVB_CX22702=m +CONFIG_DVB_L64781=m +CONFIG_DVB_TDA1004X=m +CONFIG_DVB_NXT6000=m +CONFIG_DVB_MT352=m +CONFIG_DVB_ZL10353=m +CONFIG_DVB_DIB3000MB=m +CONFIG_DVB_DIB3000MC=m +CONFIG_DVB_DIB7000M=m +CONFIG_DVB_DIB7000P=m +CONFIG_DVB_VES1820=m +CONFIG_DVB_TDA10021=m +CONFIG_DVB_TDA10023=m +CONFIG_DVB_STV0297=m +CONFIG_DVB_NXT200X=m +CONFIG_DVB_OR51211=m +CONFIG_DVB_OR51132=m +CONFIG_DVB_BCM3510=m +CONFIG_DVB_LGDT330X=m +CONFIG_DVB_S5H1409=m +CONFIG_DVB_S921=m +CONFIG_DVB_PLL=m +CONFIG_DVB_LNBP21=m +CONFIG_DVB_ISL6405=m +CONFIG_DVB_ISL6421=m +CONFIG_DVB_LGS8GXX=m +CONFIG_DVB_DUMMY_FE=m + +## +## file: drivers/media/firewire/Kconfig +## +CONFIG_DVB_FIREDTV=m + +## +## file: drivers/media/i2c/Kconfig +## +CONFIG_VIDEO_TVAUDIO=m +CONFIG_VIDEO_TDA7432=m +CONFIG_VIDEO_TDA9840=m +CONFIG_VIDEO_TEA6415C=m +CONFIG_VIDEO_TEA6420=m +CONFIG_VIDEO_MSP3400=m +CONFIG_VIDEO_CS53L32A=m +CONFIG_VIDEO_TLV320AIC23B=m +CONFIG_VIDEO_WM8775=m +CONFIG_VIDEO_WM8739=m +CONFIG_VIDEO_SAA6588=m +CONFIG_VIDEO_BT819=m +CONFIG_VIDEO_BT856=m +CONFIG_VIDEO_KS0127=m +CONFIG_VIDEO_SAA7110=m +CONFIG_VIDEO_SAA711X=m +CONFIG_VIDEO_TVP5150=m +CONFIG_VIDEO_VPX3220=m +CONFIG_VIDEO_SAA7127=m +CONFIG_VIDEO_SAA7185=m +CONFIG_VIDEO_ADV7170=m +CONFIG_VIDEO_ADV7175=m +# CONFIG_VIDEO_OV2640 is not set +CONFIG_VIDEO_OV7670=m +CONFIG_VIDEO_SR030PC30=m +CONFIG_VIDEO_NOON010PC30=m +CONFIG_VIDEO_UPD64031A=m +CONFIG_VIDEO_UPD64083=m + +## +## file: drivers/media/i2c/cx25840/Kconfig +## +CONFIG_VIDEO_CX25840=m + +## +## file: drivers/media/i2c/soc_camera/Kconfig +## +# CONFIG_SOC_CAMERA_IMX074 is not set +# CONFIG_SOC_CAMERA_MT9M001 is not set +# CONFIG_SOC_CAMERA_MT9M111 is not set +# CONFIG_SOC_CAMERA_MT9T031 is not set +# CONFIG_SOC_CAMERA_MT9T112 is not set +# CONFIG_SOC_CAMERA_MT9V022 is not set +# CONFIG_SOC_CAMERA_OV772X is not set +# CONFIG_SOC_CAMERA_OV9640 is not set +# CONFIG_SOC_CAMERA_OV9740 is not set +# CONFIG_SOC_CAMERA_RJ54N1 is not set +# CONFIG_SOC_CAMERA_TW9910 is not set + +## +## file: drivers/media/mmc/siano/Kconfig +## +CONFIG_SMS_SDIO_DRV=m + +## +## file: drivers/media/pci/Kconfig +## +CONFIG_MEDIA_PCI_SUPPORT=y + +## +## file: drivers/media/pci/b2c2/Kconfig +## +CONFIG_DVB_B2C2_FLEXCOP_PCI=m +# CONFIG_DVB_B2C2_FLEXCOP_PCI_DEBUG is not set + +## +## file: drivers/media/pci/bt8xx/Kconfig +## +CONFIG_VIDEO_BT848=m +CONFIG_DVB_BT8XX=m + +## +## file: drivers/media/pci/cx18/Kconfig +## +CONFIG_VIDEO_CX18=m +CONFIG_VIDEO_CX18_ALSA=m + +## +## file: drivers/media/pci/cx23885/Kconfig +## +CONFIG_VIDEO_CX23885=m +CONFIG_MEDIA_ALTERA_CI=m + +## +## file: drivers/media/pci/cx25821/Kconfig +## +# CONFIG_VIDEO_CX25821 is not set + +## +## file: drivers/media/pci/cx88/Kconfig +## +CONFIG_VIDEO_CX88=m +CONFIG_VIDEO_CX88_ALSA=m +CONFIG_VIDEO_CX88_BLACKBIRD=m +CONFIG_VIDEO_CX88_DVB=m +CONFIG_VIDEO_CX88_ENABLE_VP3054=y + +## +## file: drivers/media/pci/ddbridge/Kconfig +## +CONFIG_DVB_DDBRIDGE=m + +## +## file: drivers/media/pci/dm1105/Kconfig +## +CONFIG_DVB_DM1105=m + +## +## file: drivers/media/pci/dt3155/Kconfig +## +CONFIG_VIDEO_DT3155=m + +## +## file: drivers/media/pci/ivtv/Kconfig +## +CONFIG_VIDEO_IVTV=m +CONFIG_VIDEO_IVTV_ALSA=m +CONFIG_VIDEO_FB_IVTV=m + +## +## file: drivers/media/pci/mantis/Kconfig +## +CONFIG_MANTIS_CORE=m +CONFIG_DVB_MANTIS=m +CONFIG_DVB_HOPPER=m + +## +## file: drivers/media/pci/meye/Kconfig +## +CONFIG_VIDEO_MEYE=m + +## +## file: drivers/media/pci/netup_unidvb/Kconfig +## +CONFIG_DVB_NETUP_UNIDVB=m + +## +## file: drivers/media/pci/ngene/Kconfig +## +CONFIG_DVB_NGENE=m + +## +## file: drivers/media/pci/pluto2/Kconfig +## +CONFIG_DVB_PLUTO2=m + +## +## file: drivers/media/pci/pt1/Kconfig +## +CONFIG_DVB_PT1=m + +## +## file: drivers/media/pci/pt3/Kconfig +## +CONFIG_DVB_PT3=m + +## +## file: drivers/media/pci/saa7134/Kconfig +## +CONFIG_VIDEO_SAA7134=m +CONFIG_VIDEO_SAA7134_ALSA=m +CONFIG_VIDEO_SAA7134_RC=y +CONFIG_VIDEO_SAA7134_DVB=m + +## +## file: drivers/media/pci/saa7146/Kconfig +## +CONFIG_VIDEO_HEXIUM_GEMINI=m +CONFIG_VIDEO_HEXIUM_ORION=m +CONFIG_VIDEO_MXB=m + +## +## file: drivers/media/pci/saa7164/Kconfig +## +CONFIG_VIDEO_SAA7164=m + +## +## file: drivers/media/pci/smipcie/Kconfig +## +CONFIG_DVB_SMIPCIE=m + +## +## file: drivers/media/pci/solo6x10/Kconfig +## +CONFIG_VIDEO_SOLO6X10=m + +## +## file: drivers/media/pci/ttpci/Kconfig +## +CONFIG_DVB_AV7110=m +CONFIG_DVB_AV7110_OSD=y +CONFIG_DVB_BUDGET_CORE=m +CONFIG_DVB_BUDGET=m +CONFIG_DVB_BUDGET_CI=m +CONFIG_DVB_BUDGET_AV=m +CONFIG_DVB_BUDGET_PATCH=m + +## +## file: drivers/media/pci/tw5864/Kconfig +## +CONFIG_VIDEO_TW5864=m + +## +## file: drivers/media/pci/tw68/Kconfig +## +CONFIG_VIDEO_TW68=m + +## +## file: drivers/media/pci/tw686x/Kconfig +## +CONFIG_VIDEO_TW686X=m + +## +## file: drivers/media/pci/zoran/Kconfig +## +CONFIG_VIDEO_ZORAN=m +CONFIG_VIDEO_ZORAN_DC30=m +CONFIG_VIDEO_ZORAN_ZR36060=m +CONFIG_VIDEO_ZORAN_BUZ=m +CONFIG_VIDEO_ZORAN_DC10=m +CONFIG_VIDEO_ZORAN_LML33=m +CONFIG_VIDEO_ZORAN_LML33R10=m +CONFIG_VIDEO_ZORAN_AVS6EYES=m + +## +## file: drivers/media/platform/Kconfig +## +CONFIG_V4L_PLATFORM_DRIVERS=y +CONFIG_V4L_MEM2MEM_DRIVERS=y +# CONFIG_VIDEO_MEM2MEM_DEINTERLACE is not set +# CONFIG_VIDEO_SH_VEU is not set +CONFIG_V4L_TEST_DRIVERS=y +# CONFIG_VIDEO_VIM2M is not set +# CONFIG_DVB_PLATFORM_DRIVERS is not set + +## +## file: drivers/media/platform/marvell-ccic/Kconfig +## +CONFIG_VIDEO_CAFE_CCIC=m + +## +## file: drivers/media/platform/soc_camera/Kconfig +## +# CONFIG_SOC_CAMERA is not set +# CONFIG_SOC_CAMERA_PLATFORM is not set +# CONFIG_VIDEO_SH_MOBILE_CEU is not set + +## +## file: drivers/media/platform/vivid/Kconfig +## +CONFIG_VIDEO_VIVID=m +CONFIG_VIDEO_VIVID_CEC=y +CONFIG_VIDEO_VIVID_MAX_DEVS=64 + +## +## file: drivers/media/radio/Kconfig +## +CONFIG_RADIO_ADAPTERS=y +CONFIG_RADIO_SI470X=y +# CONFIG_RADIO_SI4713 is not set +CONFIG_USB_MR800=m +CONFIG_RADIO_SHARK=m +CONFIG_RADIO_SHARK2=m +CONFIG_USB_KEENE=m +CONFIG_USB_RAREMONO=m +CONFIG_USB_MA901=m +# CONFIG_RADIO_TEA5764 is not set +# CONFIG_RADIO_SAA7706H is not set +# CONFIG_RADIO_TEF6862 is not set +# CONFIG_RADIO_WL1273 is not set + +## +## file: drivers/media/radio/si470x/Kconfig +## +CONFIG_USB_SI470X=m +# CONFIG_I2C_SI470X is not set + +## +## file: drivers/media/radio/si4713/Kconfig +## +# CONFIG_I2C_SI4713 is not set + +## +## file: drivers/media/radio/wl128x/Kconfig +## +# CONFIG_RADIO_WL128X is not set + +## +## file: drivers/media/rc/Kconfig +## +CONFIG_RC_CORE=m +CONFIG_RC_DECODERS=y +CONFIG_LIRC=m +CONFIG_IR_LIRC_CODEC=m +CONFIG_IR_NEC_DECODER=m +CONFIG_IR_RC5_DECODER=m +CONFIG_IR_RC6_DECODER=m +CONFIG_IR_JVC_DECODER=m +CONFIG_IR_SONY_DECODER=m +CONFIG_IR_SANYO_DECODER=m +CONFIG_IR_SHARP_DECODER=m +CONFIG_IR_MCE_KBD_DECODER=m +CONFIG_IR_XMP_DECODER=m +CONFIG_RC_DEVICES=y +CONFIG_RC_ATI_REMOTE=m +CONFIG_IR_ENE=m +# CONFIG_IR_HIX5HD2 is not set +CONFIG_IR_IMON=m +CONFIG_IR_MCEUSB=m +# CONFIG_IR_NUVOTON is not set +CONFIG_IR_REDRAT3=m +CONFIG_IR_STREAMZAP=m +CONFIG_IR_IGORPLUGUSB=m +CONFIG_IR_IGUANA=m +CONFIG_IR_TTUSBIR=m +CONFIG_RC_LOOPBACK=m +# CONFIG_IR_GPIO_CIR is not set + +## +## file: drivers/media/rc/img-ir/Kconfig +## +# CONFIG_IR_IMG is not set + +## +## file: drivers/media/rc/keymaps/Kconfig +## +CONFIG_RC_MAP=m + +## +## file: drivers/media/tuners/Kconfig +## +CONFIG_MEDIA_TUNER_TDA827X=m +CONFIG_MEDIA_TUNER_TEA5761=y +CONFIG_MEDIA_TUNER_MT2060=m +CONFIG_MEDIA_TUNER_MT2131=m +CONFIG_MEDIA_TUNER_QT1010=m + +## +## file: drivers/media/usb/Kconfig +## +CONFIG_MEDIA_USB_SUPPORT=y + +## +## file: drivers/media/usb/airspy/Kconfig +## +CONFIG_USB_AIRSPY=m + +## +## file: drivers/media/usb/as102/Kconfig +## +CONFIG_DVB_AS102=m + +## +## file: drivers/media/usb/au0828/Kconfig +## +CONFIG_VIDEO_AU0828=m +CONFIG_VIDEO_AU0828_V4L2=y +CONFIG_VIDEO_AU0828_RC=y + +## +## file: drivers/media/usb/b2c2/Kconfig +## +CONFIG_DVB_B2C2_FLEXCOP_USB=m +# CONFIG_DVB_B2C2_FLEXCOP_USB_DEBUG is not set + +## +## file: drivers/media/usb/cpia2/Kconfig +## +CONFIG_VIDEO_CPIA2=m + +## +## file: drivers/media/usb/cx231xx/Kconfig +## +CONFIG_VIDEO_CX231XX=m +CONFIG_VIDEO_CX231XX_RC=y +CONFIG_VIDEO_CX231XX_ALSA=m +CONFIG_VIDEO_CX231XX_DVB=m + +## +## file: drivers/media/usb/dvb-usb/Kconfig +## +CONFIG_DVB_USB=m +# CONFIG_DVB_USB_DEBUG is not set +CONFIG_DVB_USB_A800=m +CONFIG_DVB_USB_DIBUSB_MB=m +CONFIG_DVB_USB_DIBUSB_MB_FAULTY=y +CONFIG_DVB_USB_DIBUSB_MC=m +CONFIG_DVB_USB_DIB0700=m +CONFIG_DVB_USB_UMT_010=m +CONFIG_DVB_USB_CXUSB=m +CONFIG_DVB_USB_M920X=m +CONFIG_DVB_USB_DIGITV=m +CONFIG_DVB_USB_VP7045=m +CONFIG_DVB_USB_VP702X=m +CONFIG_DVB_USB_GP8PSK=m +CONFIG_DVB_USB_NOVA_T_USB2=m +CONFIG_DVB_USB_TTUSB2=m +CONFIG_DVB_USB_DTT200U=m +CONFIG_DVB_USB_OPERA1=m +CONFIG_DVB_USB_AF9005=m +CONFIG_DVB_USB_AF9005_REMOTE=m +CONFIG_DVB_USB_PCTV452E=m +CONFIG_DVB_USB_DW2102=m +CONFIG_DVB_USB_CINERGY_T2=m +CONFIG_DVB_USB_DTV5100=m +CONFIG_DVB_USB_FRIIO=m +CONFIG_DVB_USB_AZ6027=m +CONFIG_DVB_USB_TECHNISAT_USB2=m + +## +## file: drivers/media/usb/dvb-usb-v2/Kconfig +## +CONFIG_DVB_USB_V2=m +CONFIG_DVB_USB_AF9015=m +CONFIG_DVB_USB_AF9035=m +CONFIG_DVB_USB_ANYSEE=m +CONFIG_DVB_USB_AU6610=m +CONFIG_DVB_USB_AZ6007=m +CONFIG_DVB_USB_CE6230=m +CONFIG_DVB_USB_EC168=m +CONFIG_DVB_USB_GL861=m +CONFIG_DVB_USB_LME2510=m +CONFIG_DVB_USB_MXL111SF=m +CONFIG_DVB_USB_RTL28XXU=m +CONFIG_DVB_USB_DVBSKY=m + +## +## file: drivers/media/usb/em28xx/Kconfig +## +CONFIG_VIDEO_EM28XX=m +CONFIG_VIDEO_EM28XX_V4L2=m +CONFIG_VIDEO_EM28XX_ALSA=m +CONFIG_VIDEO_EM28XX_DVB=m +CONFIG_VIDEO_EM28XX_RC=y + +## +## file: drivers/media/usb/go7007/Kconfig +## +CONFIG_VIDEO_GO7007=m +CONFIG_VIDEO_GO7007_USB=m +CONFIG_VIDEO_GO7007_LOADER=m +CONFIG_VIDEO_GO7007_USB_S2250_BOARD=m + +## +## file: drivers/media/usb/gspca/Kconfig +## +CONFIG_USB_GSPCA=m +CONFIG_USB_GSPCA_BENQ=m +CONFIG_USB_GSPCA_CONEX=m +CONFIG_USB_GSPCA_CPIA1=m +CONFIG_USB_GSPCA_DTCS033=m +CONFIG_USB_GSPCA_ETOMS=m +CONFIG_USB_GSPCA_FINEPIX=m +CONFIG_USB_GSPCA_JEILINJ=m +CONFIG_USB_GSPCA_JL2005BCD=m +CONFIG_USB_GSPCA_KINECT=m +CONFIG_USB_GSPCA_KONICA=m +CONFIG_USB_GSPCA_MARS=m +CONFIG_USB_GSPCA_MR97310A=m +CONFIG_USB_GSPCA_NW80X=m +CONFIG_USB_GSPCA_OV519=m +CONFIG_USB_GSPCA_OV534=m +CONFIG_USB_GSPCA_OV534_9=m +CONFIG_USB_GSPCA_PAC207=m +CONFIG_USB_GSPCA_PAC7302=m +CONFIG_USB_GSPCA_PAC7311=m +CONFIG_USB_GSPCA_SE401=m +CONFIG_USB_GSPCA_SN9C2028=m +CONFIG_USB_GSPCA_SN9C20X=m +CONFIG_USB_GSPCA_SONIXB=m +CONFIG_USB_GSPCA_SONIXJ=m +CONFIG_USB_GSPCA_SPCA500=m +CONFIG_USB_GSPCA_SPCA501=m +CONFIG_USB_GSPCA_SPCA505=m +CONFIG_USB_GSPCA_SPCA506=m +CONFIG_USB_GSPCA_SPCA508=m +CONFIG_USB_GSPCA_SPCA561=m +CONFIG_USB_GSPCA_SPCA1528=m +CONFIG_USB_GSPCA_SQ905=m +CONFIG_USB_GSPCA_SQ905C=m +CONFIG_USB_GSPCA_SQ930X=m +CONFIG_USB_GSPCA_STK014=m +CONFIG_USB_GSPCA_STK1135=m +CONFIG_USB_GSPCA_STV0680=m +CONFIG_USB_GSPCA_SUNPLUS=m +CONFIG_USB_GSPCA_T613=m +CONFIG_USB_GSPCA_TOPRO=m +CONFIG_USB_GSPCA_TOUPTEK=m +CONFIG_USB_GSPCA_TV8532=m +CONFIG_USB_GSPCA_VC032X=m +CONFIG_USB_GSPCA_VICAM=m +CONFIG_USB_GSPCA_XIRLINK_CIT=m +CONFIG_USB_GSPCA_ZC3XX=m + +## +## file: drivers/media/usb/gspca/gl860/Kconfig +## +CONFIG_USB_GL860=m + +## +## file: drivers/media/usb/gspca/m5602/Kconfig +## +CONFIG_USB_M5602=m + +## +## file: drivers/media/usb/gspca/stv06xx/Kconfig +## +CONFIG_USB_STV06XX=m + +## +## file: drivers/media/usb/hackrf/Kconfig +## +CONFIG_USB_HACKRF=m + +## +## file: drivers/media/usb/hdpvr/Kconfig +## +CONFIG_VIDEO_HDPVR=m + +## +## file: drivers/media/usb/msi2500/Kconfig +## +CONFIG_USB_MSI2500=m + +## +## file: drivers/media/usb/pulse8-cec/Kconfig +## +CONFIG_USB_PULSE8_CEC=m + +## +## file: drivers/media/usb/pvrusb2/Kconfig +## +CONFIG_VIDEO_PVRUSB2=m +CONFIG_VIDEO_PVRUSB2_SYSFS=y +CONFIG_VIDEO_PVRUSB2_DVB=y +# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set + +## +## file: drivers/media/usb/pwc/Kconfig +## +CONFIG_USB_PWC=m +# CONFIG_USB_PWC_DEBUG is not set +CONFIG_USB_PWC_INPUT_EVDEV=y + +## +## file: drivers/media/usb/rainshadow-cec/Kconfig +## +CONFIG_USB_RAINSHADOW_CEC=m + +## +## file: drivers/media/usb/s2255/Kconfig +## +CONFIG_USB_S2255=m + +## +## file: drivers/media/usb/siano/Kconfig +## +CONFIG_SMS_USB_DRV=m + +## +## file: drivers/media/usb/stk1160/Kconfig +## +CONFIG_VIDEO_STK1160_COMMON=m + +## +## file: drivers/media/usb/stkwebcam/Kconfig +## +CONFIG_USB_STKWEBCAM=m + +## +## file: drivers/media/usb/ttusb-budget/Kconfig +## +CONFIG_DVB_TTUSB_BUDGET=m + +## +## file: drivers/media/usb/ttusb-dec/Kconfig +## +CONFIG_DVB_TTUSB_DEC=m + +## +## file: drivers/media/usb/usbtv/Kconfig +## +CONFIG_VIDEO_USBTV=m + +## +## file: drivers/media/usb/usbvision/Kconfig +## +CONFIG_VIDEO_USBVISION=m + +## +## file: drivers/media/usb/uvc/Kconfig +## +CONFIG_USB_VIDEO_CLASS=m +CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y + +## +## file: drivers/media/usb/zr364xx/Kconfig +## +CONFIG_USB_ZR364XX=m + +## +## file: drivers/media/v4l2-core/Kconfig +## +# CONFIG_VIDEO_ADV_DEBUG is not set +# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set +# CONFIG_VIDEO_PCI_SKELETON is not set + +## +## file: drivers/memory/Kconfig +## +CONFIG_MEMORY=y + +## +## file: drivers/memstick/Kconfig +## +CONFIG_MEMSTICK=m +# CONFIG_MEMSTICK_DEBUG is not set + +## +## file: drivers/memstick/core/Kconfig +## +# CONFIG_MEMSTICK_UNSAFE_RESUME is not set +CONFIG_MSPRO_BLOCK=m +# CONFIG_MS_BLOCK is not set + +## +## file: drivers/memstick/host/Kconfig +## +CONFIG_MEMSTICK_TIFM_MS=m +CONFIG_MEMSTICK_JMICRON_38X=m +CONFIG_MEMSTICK_R592=m +CONFIG_MEMSTICK_REALTEK_PCI=m +CONFIG_MEMSTICK_REALTEK_USB=m + +## +## file: drivers/message/fusion/Kconfig +## +CONFIG_FUSION=y +CONFIG_FUSION_SPI=m +CONFIG_FUSION_FC=m +CONFIG_FUSION_SAS=m +CONFIG_FUSION_MAX_SGE=128 +CONFIG_FUSION_CTL=m +CONFIG_FUSION_LAN=m +# CONFIG_FUSION_LOGGING is not set + +## +## file: drivers/mfd/Kconfig +## +# CONFIG_MFD_CS5535 is not set +# CONFIG_MFD_AS3711 is not set +# CONFIG_MFD_AS3722 is not set +# CONFIG_PMIC_ADP5520 is not set +# CONFIG_MFD_AAT2870_CORE is not set +# CONFIG_MFD_ATMEL_FLEXCOM is not set +# CONFIG_MFD_ATMEL_HLCDC is not set +# CONFIG_MFD_BCM590XX is not set +# CONFIG_MFD_AXP20X_I2C is not set +# CONFIG_MFD_CROS_EC is not set +# CONFIG_PMIC_DA903X is not set +# CONFIG_MFD_DA9052_SPI is not set +# CONFIG_MFD_DA9052_I2C is not set +# CONFIG_MFD_DA9055 is not set +# CONFIG_MFD_DA9062 is not set +# CONFIG_MFD_DA9063 is not set +# CONFIG_MFD_DA9150 is not set +# CONFIG_MFD_DLN2 is not set +# CONFIG_MFD_EXYNOS_LPASS is not set +# CONFIG_MFD_MC13XXX_SPI is not set +# CONFIG_MFD_MC13XXX_I2C is not set +# CONFIG_MFD_HI6421_PMIC is not set +# CONFIG_HTC_PASIC3 is not set +# CONFIG_HTC_I2CPLD is not set +CONFIG_LPC_SCH=m +# CONFIG_INTEL_SOC_PMIC is not set +# CONFIG_MFD_INTEL_LPSS_ACPI is not set +# CONFIG_MFD_INTEL_LPSS_PCI is not set +# CONFIG_MFD_JANZ_CMODIO is not set +# CONFIG_MFD_KEMPLD is not set +# CONFIG_MFD_88PM800 is not set +# CONFIG_MFD_88PM805 is not set +# CONFIG_MFD_88PM860X is not set +# CONFIG_MFD_MAX14577 is not set +# CONFIG_MFD_MAX77686 is not set +# CONFIG_MFD_MAX77693 is not set +# CONFIG_MFD_MAX77843 is not set +# CONFIG_MFD_MAX8907 is not set +# CONFIG_MFD_MAX8925 is not set +# CONFIG_MFD_MAX8997 is not set +# CONFIG_MFD_MAX8998 is not set +# CONFIG_MFD_MT6397 is not set +# CONFIG_MFD_MENF21BMC is not set +# CONFIG_EZX_PCAP is not set +CONFIG_MFD_VIPERBOARD=m +# CONFIG_MFD_RETU is not set +# CONFIG_MFD_PCF50633 is not set +CONFIG_PCF50633_ADC=m +CONFIG_PCF50633_GPIO=m +# CONFIG_UCB1400_CORE is not set +# CONFIG_MFD_RDC321X is not set +CONFIG_MFD_RTSX_PCI=m +# CONFIG_MFD_RT5033 is not set +CONFIG_MFD_RTSX_USB=m +# CONFIG_MFD_RC5T583 is not set +# CONFIG_MFD_RK808 is not set +# CONFIG_MFD_RN5T618 is not set +# CONFIG_MFD_SEC_CORE is not set +# CONFIG_MFD_SI476X_CORE is not set +# CONFIG_MFD_SM501 is not set +# CONFIG_MFD_SKY81452 is not set +# CONFIG_MFD_SMSC is not set +# CONFIG_ABX500_CORE is not set +# CONFIG_AB3100_CORE is not set +CONFIG_AB3100_OTP=m +# CONFIG_MFD_STMPE is not set +# CONFIG_MFD_SYSCON is not set +# CONFIG_MFD_TI_AM335X_TSCADC is not set +# CONFIG_MFD_LP3943 is not set +# CONFIG_MFD_LP8788 is not set +# CONFIG_MFD_PALMAS is not set +# CONFIG_TPS6105X is not set +# CONFIG_TPS65010 is not set +# CONFIG_TPS6507X is not set +# CONFIG_MFD_TPS65086 is not set +# CONFIG_MFD_TPS65090 is not set +# CONFIG_MFD_TPS65217 is not set +# CONFIG_MFD_TI_LP873X is not set +# CONFIG_MFD_TPS65218 is not set +# CONFIG_MFD_TPS6586X is not set +# CONFIG_MFD_TPS65910 is not set +# CONFIG_MFD_TPS65912_I2C is not set +# CONFIG_MFD_TPS65912_SPI is not set +# CONFIG_MFD_TPS80031 is not set +# CONFIG_TWL4030_CORE is not set +# CONFIG_TWL6040_CORE is not set +# CONFIG_MFD_WL1273_CORE is not set +# CONFIG_MFD_LM3533 is not set +# CONFIG_MFD_TIMBERDALE is not set +# CONFIG_MFD_TC3589X is not set +# CONFIG_MFD_VX855 is not set +# CONFIG_MFD_ARIZONA_I2C is not set +# CONFIG_MFD_ARIZONA_SPI is not set +# CONFIG_MFD_WM8400 is not set +# CONFIG_MFD_WM831X_I2C is not set +# CONFIG_MFD_WM831X_SPI is not set +# CONFIG_MFD_WM8350_I2C is not set +# CONFIG_MFD_WM8994 is not set + +## +## file: drivers/misc/Kconfig +## +CONFIG_AD525X_DPOT=m +CONFIG_AD525X_DPOT_I2C=m +CONFIG_AD525X_DPOT_SPI=m +# CONFIG_DUMMY_IRQ is not set +# CONFIG_INTEL_MID_PTI is not set +CONFIG_SGI_IOC4=m +CONFIG_TIFM_CORE=m +CONFIG_TIFM_7XX1=m +CONFIG_ICS932S401=m +# CONFIG_ATMEL_SSC is not set +CONFIG_ENCLOSURE_SERVICES=m +CONFIG_SGI_XP=m +CONFIG_CS5535_CLOCK_EVENT_SRC=m +CONFIG_SGI_GRU=m +# CONFIG_SGI_GRU_DEBUG is not set +CONFIG_APDS9802ALS=m +CONFIG_ISL29003=m +CONFIG_ISL29020=m +CONFIG_SENSORS_TSL2550=m +CONFIG_SENSORS_BH1770=m +CONFIG_SENSORS_APDS990X=m +CONFIG_HMC6352=m +CONFIG_DS1682=m +# CONFIG_USB_SWITCH_FSA9480 is not set +# CONFIG_LATTICE_ECP3_CONFIG is not set +# CONFIG_SRAM is not set + +## +## file: drivers/misc/altera-stapl/Kconfig +## +# CONFIG_ALTERA_STAPL is not set + +## +## file: drivers/misc/c2port/Kconfig +## +CONFIG_C2PORT=m +CONFIG_C2PORT_DURAMAR_2150=m + +## +## file: drivers/misc/cb710/Kconfig +## +CONFIG_CB710_CORE=m +# CONFIG_CB710_DEBUG is not set + +## +## file: drivers/misc/echo/Kconfig +## +# CONFIG_ECHO is not set + +## +## file: drivers/misc/eeprom/Kconfig +## +CONFIG_EEPROM_AT24=m +CONFIG_EEPROM_AT25=m +CONFIG_EEPROM_LEGACY=m +CONFIG_EEPROM_MAX6875=m +CONFIG_EEPROM_93CX6=m +# CONFIG_EEPROM_93XX46 is not set + +## +## file: drivers/misc/genwqe/Kconfig +## +# CONFIG_GENWQE is not set + +## +## file: drivers/misc/lis3lv02d/Kconfig +## +CONFIG_SENSORS_LIS3_I2C=m + +## +## file: drivers/misc/ti-st/Kconfig +## +# CONFIG_TI_ST is not set + +## +## file: drivers/mmc/core/Kconfig +## +CONFIG_MMC_BLOCK_MINORS=256 +CONFIG_SDIO_UART=m +# CONFIG_MMC_TEST is not set + +## +## file: drivers/mmc/host/Kconfig +## +CONFIG_MMC_SDHCI=m +CONFIG_MMC_SDHCI_PCI=m +CONFIG_MMC_RICOH_MMC=y +# CONFIG_MMC_SDHCI_PLTFM is not set +CONFIG_MMC_WBSD=m +CONFIG_MMC_TIFM_SD=m +# CONFIG_MMC_SPI is not set +CONFIG_MMC_SDRICOH_CS=m +CONFIG_MMC_CB710=m +CONFIG_MMC_VIA_SDMMC=m +CONFIG_MMC_VUB300=m +CONFIG_MMC_USHC=m +# CONFIG_MMC_USDHI6ROL0 is not set +CONFIG_MMC_REALTEK_PCI=m +CONFIG_MMC_REALTEK_USB=m +CONFIG_MMC_TOSHIBA_PCI=m +# CONFIG_MMC_MTK is not set + +## +## file: drivers/mtd/Kconfig +## +CONFIG_MTD=m +# CONFIG_MTD_TESTS is not set +CONFIG_MTD_OF_PARTS=m +CONFIG_MTD_AR7_PARTS=m +CONFIG_MTD_BLOCK=m +CONFIG_MTD_BLOCK_RO=m +CONFIG_RFD_FTL=m +CONFIG_SSFDC=m +# CONFIG_SM_FTL is not set +CONFIG_MTD_OOPS=m +CONFIG_MTD_SWAP=m +# CONFIG_MTD_PARTITIONED_MASTER is not set + +## +## file: drivers/mtd/devices/Kconfig +## +CONFIG_MTD_DATAFLASH=m +# CONFIG_MTD_DATAFLASH_WRITE_VERIFY is not set +# CONFIG_MTD_DATAFLASH_OTP is not set +CONFIG_MTD_M25P80=m +CONFIG_MTD_SST25L=m +# CONFIG_MTD_DOCG3 is not set + +## +## file: drivers/mtd/lpddr/Kconfig +## +CONFIG_MTD_LPDDR=m + +## +## file: drivers/mtd/maps/Kconfig +## +# CONFIG_MTD_PHYSMAP_OF is not set +# CONFIG_MTD_ESB2ROM is not set +# CONFIG_MTD_CK804XROM is not set +CONFIG_MTD_PCMCIA=m +# CONFIG_MTD_PCMCIA_ANONYMOUS is not set +# CONFIG_MTD_GPIO_ADDR is not set +CONFIG_MTD_INTEL_VR_NOR=m +CONFIG_MTD_PLATRAM=m +# CONFIG_MTD_LATCH_ADDR is not set + +## +## file: drivers/mtd/nand/Kconfig +## +# CONFIG_MTD_NAND_ECC_SMC is not set +CONFIG_MTD_NAND_ECC_BCH=y +# CONFIG_MTD_NAND_DENALI_PCI is not set +# CONFIG_MTD_NAND_DENALI_DT is not set +# CONFIG_MTD_NAND_GPIO is not set +CONFIG_MTD_NAND_RICOH=m +# CONFIG_MTD_NAND_DOCG4 is not set +CONFIG_MTD_NAND_CAFE=m +CONFIG_MTD_NAND_CS553X=m +CONFIG_MTD_NAND_NANDSIM=m +# CONFIG_MTD_NAND_PLATFORM is not set +# CONFIG_MTD_NAND_HISI504 is not set +# CONFIG_MTD_NAND_MTK is not set + +## +## file: drivers/mtd/onenand/Kconfig +## +CONFIG_MTD_ONENAND=m +CONFIG_MTD_ONENAND_VERIFY_WRITE=y +# CONFIG_MTD_ONENAND_GENERIC is not set +# CONFIG_MTD_ONENAND_OTP is not set +CONFIG_MTD_ONENAND_2X_PROGRAM=y + +## +## file: drivers/mtd/spi-nor/Kconfig +## +CONFIG_MTD_SPI_NOR=m +# CONFIG_MTD_MT81xx_NOR is not set +CONFIG_MTD_SPI_NOR_USE_4K_SECTORS=y + +## +## file: drivers/mtd/ubi/Kconfig +## +CONFIG_MTD_UBI=m +CONFIG_MTD_UBI_WL_THRESHOLD=4096 +CONFIG_MTD_UBI_BEB_LIMIT=20 +# CONFIG_MTD_UBI_FASTMAP is not set +# CONFIG_MTD_UBI_GLUEBI is not set +CONFIG_MTD_UBI_BLOCK=y + +## +## file: drivers/net/Kconfig +## +CONFIG_NETDEVICES=y +CONFIG_NET_CORE=y +CONFIG_BONDING=m +CONFIG_DUMMY=m +CONFIG_EQUALIZER=m +CONFIG_IFB=m +CONFIG_MACVLAN=m +CONFIG_MACVTAP=m +CONFIG_IPVLAN=m +CONFIG_IPVTAP=m +CONFIG_VXLAN=m +CONFIG_GENEVE=m +CONFIG_GTP=m +CONFIG_MACSEC=m +CONFIG_NETCONSOLE=m +CONFIG_NETCONSOLE_DYNAMIC=y +CONFIG_TUN=m +# CONFIG_TUN_VNET_CROSS_LE is not set +CONFIG_VETH=m +CONFIG_VIRTIO_NET=m +CONFIG_NLMON=m +CONFIG_NET_VRF=m +CONFIG_XEN_NETDEV_FRONTEND=m +CONFIG_XEN_NETDEV_BACKEND=m +# CONFIG_VMXNET3 is not set +# CONFIG_FUJITSU_ES is not set + +## +## file: drivers/net/appletalk/Kconfig +## +CONFIG_ATALK=m +CONFIG_DEV_APPLETALK=y +CONFIG_LTPC=m +CONFIG_IPDDP=m +CONFIG_IPDDP_ENCAP=y + +## +## file: drivers/net/can/Kconfig +## +CONFIG_CAN_VCAN=m +CONFIG_CAN_SLCAN=m +CONFIG_CAN_DEV=m +CONFIG_CAN_CALC_BITTIMING=y +# CONFIG_CAN_LEDS is not set +# CONFIG_CAN_GRCAN is not set +# CONFIG_CAN_DEBUG_DEVICES is not set + +## +## file: drivers/net/can/c_can/Kconfig +## +# CONFIG_CAN_C_CAN is not set + +## +## file: drivers/net/can/cc770/Kconfig +## +# CONFIG_CAN_CC770 is not set + +## +## file: drivers/net/can/ifi_canfd/Kconfig +## +# CONFIG_CAN_IFI_CANFD is not set + +## +## file: drivers/net/can/m_can/Kconfig +## +# CONFIG_CAN_M_CAN is not set + +## +## file: drivers/net/can/sja1000/Kconfig +## +CONFIG_CAN_SJA1000=m +CONFIG_CAN_SJA1000_ISA=m +# CONFIG_CAN_SJA1000_PLATFORM is not set +CONFIG_CAN_EMS_PCMCIA=m +CONFIG_CAN_EMS_PCI=m +CONFIG_CAN_PEAK_PCMCIA=m +CONFIG_CAN_PEAK_PCI=m +CONFIG_CAN_PEAK_PCIEC=y +CONFIG_CAN_KVASER_PCI=m +CONFIG_CAN_PLX_PCI=m +CONFIG_CAN_TSCAN1=m + +## +## file: drivers/net/can/softing/Kconfig +## +CONFIG_CAN_SOFTING=m +CONFIG_CAN_SOFTING_CS=m + +## +## file: drivers/net/can/spi/Kconfig +## +# CONFIG_CAN_MCP251X is not set + +## +## file: drivers/net/can/usb/Kconfig +## +CONFIG_CAN_EMS_USB=m +CONFIG_CAN_ESD_USB2=m +CONFIG_CAN_GS_USB=m +CONFIG_CAN_KVASER_USB=m +CONFIG_CAN_PEAK_USB=m +CONFIG_CAN_8DEV_USB=m + +## +## file: drivers/net/dsa/Kconfig +## +# CONFIG_NET_DSA_BCM_SF2 is not set +# CONFIG_NET_DSA_MV88E6060 is not set + +## +## file: drivers/net/dsa/mv88e6xxx/Kconfig +## +# CONFIG_NET_DSA_MV88E6XXX is not set + +## +## file: drivers/net/ethernet/Kconfig +## +CONFIG_ETHERNET=y +# CONFIG_DNET is not set +CONFIG_JME=m +# CONFIG_ETHOC is not set + +## +## file: drivers/net/ethernet/agere/Kconfig +## +CONFIG_NET_VENDOR_AGERE=y +CONFIG_ET131X=m + +## +## file: drivers/net/ethernet/alacritech/Kconfig +## +# CONFIG_SLICOSS is not set + +## +## file: drivers/net/ethernet/alteon/Kconfig +## +CONFIG_NET_VENDOR_ALTEON=y +CONFIG_ACENIC=m +# CONFIG_ACENIC_OMIT_TIGON_I is not set + +## +## file: drivers/net/ethernet/amazon/Kconfig +## +CONFIG_NET_VENDOR_AMAZON=y +CONFIG_ENA_ETHERNET=m + +## +## file: drivers/net/ethernet/amd/Kconfig +## +CONFIG_NET_VENDOR_AMD=y +CONFIG_PCNET32=m + +## +## file: drivers/net/ethernet/apm/xgene/Kconfig +## +# CONFIG_NET_XGENE is not set + +## +## file: drivers/net/ethernet/arc/Kconfig +## +# CONFIG_NET_VENDOR_ARC is not set + +## +## file: drivers/net/ethernet/atheros/Kconfig +## +CONFIG_NET_VENDOR_ATHEROS=y +CONFIG_ATL2=m +CONFIG_ATL1=m +CONFIG_ATL1E=m +CONFIG_ATL1C=m +CONFIG_ALX=m + +## +## file: drivers/net/ethernet/aurora/Kconfig +## +# CONFIG_NET_VENDOR_AURORA is not set + +## +## file: drivers/net/ethernet/broadcom/Kconfig +## +CONFIG_NET_VENDOR_BROADCOM=y +# CONFIG_BCMGENET is not set +CONFIG_BNX2=m +CONFIG_CNIC=m +CONFIG_TIGON3=m +CONFIG_BNX2X=m +CONFIG_BNX2X_SRIOV=y +# CONFIG_SYSTEMPORT is not set +CONFIG_BNXT=m +CONFIG_BNXT_SRIOV=y + +## +## file: drivers/net/ethernet/brocade/Kconfig +## +CONFIG_NET_VENDOR_BROCADE=y + +## +## file: drivers/net/ethernet/brocade/bna/Kconfig +## +CONFIG_BNA=m + +## +## file: drivers/net/ethernet/cadence/Kconfig +## +CONFIG_NET_CADENCE=y +# CONFIG_MACB is not set + +## +## file: drivers/net/ethernet/calxeda/Kconfig +## +# CONFIG_NET_CALXEDA_XGMAC is not set + +## +## file: drivers/net/ethernet/cavium/Kconfig +## +CONFIG_NET_VENDOR_CAVIUM=y +# CONFIG_THUNDER_NIC_PF is not set +# CONFIG_THUNDER_NIC_VF is not set +# CONFIG_THUNDER_NIC_BGX is not set +# CONFIG_THUNDER_NIC_RGX is not set +CONFIG_LIQUIDIO=m + +## +## file: drivers/net/ethernet/chelsio/Kconfig +## +CONFIG_NET_VENDOR_CHELSIO=y +CONFIG_CHELSIO_T1=m +CONFIG_CHELSIO_T1_1G=y +CONFIG_CHELSIO_T3=m +CONFIG_CHELSIO_T4=m +CONFIG_CHELSIO_T4_DCB=y +CONFIG_CHELSIO_T4_FCOE=y +CONFIG_CHELSIO_T4VF=m + +## +## file: drivers/net/ethernet/cirrus/Kconfig +## +# CONFIG_CS89x0_PLATFORM is not set + +## +## file: drivers/net/ethernet/cisco/Kconfig +## +CONFIG_NET_VENDOR_CISCO=y + +## +## file: drivers/net/ethernet/cisco/enic/Kconfig +## +CONFIG_ENIC=m + +## +## file: drivers/net/ethernet/dec/Kconfig +## +CONFIG_NET_VENDOR_DEC=y + +## +## file: drivers/net/ethernet/dec/tulip/Kconfig +## +CONFIG_DE2104X_DSL=0 +CONFIG_TULIP_NAPI=y +CONFIG_TULIP_NAPI_HW_MITIGATION=y +# CONFIG_DE4X5 is not set +CONFIG_ULI526X=m + +## +## file: drivers/net/ethernet/dlink/Kconfig +## +CONFIG_NET_VENDOR_DLINK=y +CONFIG_DL2K=m + +## +## file: drivers/net/ethernet/emulex/Kconfig +## +CONFIG_NET_VENDOR_EMULEX=y + +## +## file: drivers/net/ethernet/emulex/benet/Kconfig +## +CONFIG_BE2NET=m +CONFIG_BE2NET_HWMON=y + +## +## file: drivers/net/ethernet/ezchip/Kconfig +## +CONFIG_NET_VENDOR_EZCHIP=y +# CONFIG_EZCHIP_NPS_MANAGEMENT_ENET is not set + +## +## file: drivers/net/ethernet/i825xx/Kconfig +## +CONFIG_NET_VENDOR_I825XX=y + +## +## file: drivers/net/ethernet/intel/Kconfig +## +CONFIG_NET_VENDOR_INTEL=y +CONFIG_E1000=m +CONFIG_E1000E=m +CONFIG_E1000E_HWTS=y +CONFIG_IGB=m +CONFIG_IGB_HWMON=y +CONFIG_IGB_DCA=y +CONFIG_IGBVF=m +CONFIG_IXGB=m +CONFIG_IXGBE=m +CONFIG_IXGBE_HWMON=y +CONFIG_IXGBE_DCA=y +CONFIG_IXGBE_DCB=y +CONFIG_IXGBEVF=m +CONFIG_I40E=m +CONFIG_I40E_DCB=y +CONFIG_I40EVF=m +# CONFIG_FM10K is not set + +## +## file: drivers/net/ethernet/marvell/Kconfig +## +CONFIG_NET_VENDOR_MARVELL=y +# CONFIG_MVMDIO is not set +CONFIG_SKGE=m +# CONFIG_SKGE_DEBUG is not set +CONFIG_SKGE_GENESIS=y +CONFIG_SKY2=m +# CONFIG_SKY2_DEBUG is not set + +## +## file: drivers/net/ethernet/mellanox/Kconfig +## +CONFIG_NET_VENDOR_MELLANOX=y + +## +## file: drivers/net/ethernet/mellanox/mlx4/Kconfig +## +CONFIG_MLX4_EN=m +CONFIG_MLX4_EN_DCB=y +CONFIG_MLX4_DEBUG=y + +## +## file: drivers/net/ethernet/mellanox/mlx5/core/Kconfig +## +CONFIG_MLX5_CORE=m +CONFIG_MLX5_CORE_EN=y +CONFIG_MLX5_CORE_EN_DCB=y + +## +## file: drivers/net/ethernet/mellanox/mlxsw/Kconfig +## +# CONFIG_MLXSW_CORE is not set + +## +## file: drivers/net/ethernet/micrel/Kconfig +## +CONFIG_NET_VENDOR_MICREL=y +# CONFIG_KS8842 is not set +# CONFIG_KS8851 is not set +# CONFIG_KS8851_MLL is not set +CONFIG_KSZ884X_PCI=m + +## +## file: drivers/net/ethernet/microchip/Kconfig +## +CONFIG_NET_VENDOR_MICROCHIP=y +# CONFIG_ENC28J60 is not set +# CONFIG_ENC28J60_WRITEVERIFY is not set +# CONFIG_ENCX24J600 is not set + +## +## file: drivers/net/ethernet/myricom/Kconfig +## +CONFIG_NET_VENDOR_MYRI=y +CONFIG_MYRI10GE=m +CONFIG_MYRI10GE_DCA=y + +## +## file: drivers/net/ethernet/natsemi/Kconfig +## +CONFIG_NET_VENDOR_NATSEMI=y +CONFIG_NS83820=m + +## +## file: drivers/net/ethernet/neterion/Kconfig +## +CONFIG_NET_VENDOR_EXAR=y +CONFIG_S2IO=m +CONFIG_VXGE=m +# CONFIG_VXGE_DEBUG_TRACE_ALL is not set + +## +## file: drivers/net/ethernet/netronome/Kconfig +## +CONFIG_NET_VENDOR_NETRONOME=y +CONFIG_NFP=m + +## +## file: drivers/net/ethernet/oki-semi/Kconfig +## +CONFIG_NET_VENDOR_OKI=y + +## +## file: drivers/net/ethernet/packetengines/Kconfig +## +CONFIG_NET_PACKET_ENGINE=y +CONFIG_HAMACHI=m +CONFIG_YELLOWFIN=m + +## +## file: drivers/net/ethernet/qlogic/Kconfig +## +CONFIG_NET_VENDOR_QLOGIC=y +CONFIG_QLA3XXX=m +CONFIG_QLCNIC=m +CONFIG_QLCNIC_SRIOV=y +CONFIG_QLCNIC_DCB=y +CONFIG_QLCNIC_HWMON=y +CONFIG_QLGE=m +CONFIG_NETXEN_NIC=m +CONFIG_QED=m +CONFIG_QED_SRIOV=y +CONFIG_QEDE=m + +## +## file: drivers/net/ethernet/qualcomm/Kconfig +## +CONFIG_NET_VENDOR_QUALCOMM=y +# CONFIG_QCA7000_SPI is not set +# CONFIG_QCOM_EMAC is not set + +## +## file: drivers/net/ethernet/rdc/Kconfig +## +CONFIG_NET_VENDOR_RDC=y +CONFIG_R6040=m + +## +## file: drivers/net/ethernet/realtek/Kconfig +## +CONFIG_NET_VENDOR_REALTEK=y +# CONFIG_8139TOO_PIO is not set +CONFIG_8139TOO_TUNE_TWISTER=y +CONFIG_8139TOO_8129=y +# CONFIG_8139_OLD_RX_RESET is not set +CONFIG_R8169=m + +## +## file: drivers/net/ethernet/renesas/Kconfig +## +CONFIG_NET_VENDOR_RENESAS=y +# CONFIG_SH_ETH is not set + +## +## file: drivers/net/ethernet/rocker/Kconfig +## +CONFIG_NET_VENDOR_ROCKER=y +# CONFIG_ROCKER is not set + +## +## file: drivers/net/ethernet/samsung/Kconfig +## +CONFIG_NET_VENDOR_SAMSUNG=y +# CONFIG_SXGBE_ETH is not set + +## +## file: drivers/net/ethernet/seeq/Kconfig +## +# CONFIG_NET_VENDOR_SEEQ is not set + +## +## file: drivers/net/ethernet/sfc/Kconfig +## +CONFIG_SFC=m +CONFIG_SFC_MTD=y +CONFIG_SFC_MCDI_MON=y +CONFIG_SFC_SRIOV=y +CONFIG_SFC_MCDI_LOGGING=y + +## +## file: drivers/net/ethernet/sfc/falcon/Kconfig +## +CONFIG_SFC_FALCON=m +CONFIG_SFC_FALCON_MTD=y + +## +## file: drivers/net/ethernet/silan/Kconfig +## +CONFIG_NET_VENDOR_SILAN=y +CONFIG_SC92031=m + +## +## file: drivers/net/ethernet/sis/Kconfig +## +CONFIG_NET_VENDOR_SIS=y +CONFIG_SIS190=m + +## +## file: drivers/net/ethernet/smsc/Kconfig +## +CONFIG_NET_VENDOR_SMSC=y +# CONFIG_SMSC911X is not set +CONFIG_SMSC9420=m + +## +## file: drivers/net/ethernet/stmicro/Kconfig +## +CONFIG_NET_VENDOR_STMICRO=y + +## +## file: drivers/net/ethernet/stmicro/stmmac/Kconfig +## +# CONFIG_STMMAC_ETH is not set + +## +## file: drivers/net/ethernet/sun/Kconfig +## +CONFIG_NET_VENDOR_SUN=y +CONFIG_CASSINI=m +CONFIG_NIU=m + +## +## file: drivers/net/ethernet/tehuti/Kconfig +## +CONFIG_NET_VENDOR_TEHUTI=y +CONFIG_TEHUTI=m + +## +## file: drivers/net/ethernet/ti/Kconfig +## +CONFIG_NET_VENDOR_TI=y +# CONFIG_TI_CPSW_ALE is not set +CONFIG_TLAN=m + +## +## file: drivers/net/ethernet/via/Kconfig +## +CONFIG_NET_VENDOR_VIA=y +CONFIG_VIA_VELOCITY=m + +## +## file: drivers/net/ethernet/wiznet/Kconfig +## +CONFIG_NET_VENDOR_WIZNET=y +# CONFIG_WIZNET_W5100 is not set +# CONFIG_WIZNET_W5300 is not set + +## +## file: drivers/net/fddi/Kconfig +## +CONFIG_DEFXX=m +# CONFIG_DEFXX_MMIO is not set + +## +## file: drivers/net/hamradio/Kconfig +## +CONFIG_MKISS=m +CONFIG_6PACK=m +CONFIG_BPQETHER=m +CONFIG_BAYCOM_SER_FDX=m +CONFIG_BAYCOM_SER_HDX=m +CONFIG_BAYCOM_PAR=m +CONFIG_BAYCOM_EPP=m +CONFIG_YAM=m + +## +## file: drivers/net/ieee802154/Kconfig +## +CONFIG_IEEE802154_DRIVERS=m +CONFIG_IEEE802154_FAKELB=m +CONFIG_IEEE802154_AT86RF230=m +CONFIG_IEEE802154_MRF24J40=m +CONFIG_IEEE802154_CC2520=m +CONFIG_IEEE802154_ATUSB=m +CONFIG_IEEE802154_ADF7242=m + +## +## file: drivers/net/phy/Kconfig +## +# CONFIG_MDIO_BCM_UNIMAC is not set +# CONFIG_MDIO_BITBANG is not set +# CONFIG_MDIO_BUS_MUX_GPIO is not set +# CONFIG_MDIO_BUS_MUX_MMIOREG is not set +# CONFIG_MDIO_GPIO is not set +# CONFIG_MDIO_OCTEON is not set +# CONFIG_MDIO_THUNDER is not set +CONFIG_PHYLIB=m +CONFIG_AMD_PHY=m +CONFIG_AQUANTIA_PHY=m +CONFIG_AT803X_PHY=m +# CONFIG_BCM63XX_PHY is not set +# CONFIG_BCM7XXX_PHY is not set +CONFIG_BCM87XX_PHY=m +CONFIG_BROADCOM_PHY=m +CONFIG_CICADA_PHY=m +CONFIG_DAVICOM_PHY=m +CONFIG_DP83848_PHY=m +CONFIG_DP83867_PHY=m +#. Must only be enabled for specific flavours +# CONFIG_FIXED_PHY is not set +CONFIG_ICPLUS_PHY=m +# CONFIG_INTEL_XWAY_PHY is not set +CONFIG_LSI_ET1011C_PHY=m +CONFIG_LXT_PHY=m +CONFIG_MARVELL_PHY=m +CONFIG_MICREL_PHY=m +CONFIG_MICROCHIP_PHY=m +CONFIG_MICROSEMI_PHY=m +CONFIG_NATIONAL_PHY=m +CONFIG_QSEMI_PHY=m +CONFIG_REALTEK_PHY=m +CONFIG_SMSC_PHY=m +CONFIG_STE10XP=m +CONFIG_TERANETICS_PHY=m +CONFIG_VITESSE_PHY=m +# CONFIG_XILINX_GMII2RGMII is not set +# CONFIG_MICREL_KS8995MA is not set + +## +## file: drivers/net/ppp/Kconfig +## +CONFIG_PPP=m +CONFIG_PPP_BSDCOMP=m +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_FILTER=y +CONFIG_PPP_MPPE=m +CONFIG_PPP_MULTILINK=y +CONFIG_PPPOATM=m +CONFIG_PPPOE=m +CONFIG_PPTP=m +CONFIG_PPPOL2TP=m +CONFIG_PPP_ASYNC=m +CONFIG_PPP_SYNC_TTY=m + +## +## file: drivers/net/slip/Kconfig +## +CONFIG_SLIP=m +CONFIG_SLIP_COMPRESSED=y +CONFIG_SLIP_SMART=y +CONFIG_SLIP_MODE_SLIP6=y + +## +## file: drivers/net/team/Kconfig +## +CONFIG_NET_TEAM=m +CONFIG_NET_TEAM_MODE_BROADCAST=m +CONFIG_NET_TEAM_MODE_ROUNDROBIN=m +CONFIG_NET_TEAM_MODE_RANDOM=m +CONFIG_NET_TEAM_MODE_ACTIVEBACKUP=m +CONFIG_NET_TEAM_MODE_LOADBALANCE=m + +## +## file: drivers/net/usb/Kconfig +## +CONFIG_USB_CATC=m +CONFIG_USB_KAWETH=m +CONFIG_USB_PEGASUS=m +CONFIG_USB_RTL8150=m +CONFIG_USB_RTL8152=m +CONFIG_USB_LAN78XX=m +CONFIG_USB_USBNET=m +CONFIG_USB_NET_AX8817X=m +CONFIG_USB_NET_AX88179_178A=m +CONFIG_USB_NET_CDCETHER=m +CONFIG_USB_NET_CDC_EEM=m +CONFIG_USB_NET_CDC_NCM=m +CONFIG_USB_NET_HUAWEI_CDC_NCM=m +CONFIG_USB_NET_CDC_MBIM=m +CONFIG_USB_NET_DM9601=m +CONFIG_USB_NET_SR9700=m +CONFIG_USB_NET_SR9800=m +CONFIG_USB_NET_SMSC75XX=m +CONFIG_USB_NET_SMSC95XX=m +CONFIG_USB_NET_GL620A=m +CONFIG_USB_NET_NET1080=m +CONFIG_USB_NET_PLUSB=m +CONFIG_USB_NET_MCS7830=m +CONFIG_USB_NET_RNDIS_HOST=m +CONFIG_USB_NET_CDC_SUBSET=m +CONFIG_USB_ALI_M5632=y +CONFIG_USB_AN2720=y +CONFIG_USB_BELKIN=y +CONFIG_USB_ARMLINUX=y +CONFIG_USB_EPSON2888=y +CONFIG_USB_KC2190=y +CONFIG_USB_NET_ZAURUS=m +CONFIG_USB_NET_CX82310_ETH=m +CONFIG_USB_NET_KALMIA=m +CONFIG_USB_NET_QMI_WWAN=m +CONFIG_USB_HSO=m +CONFIG_USB_NET_INT51X1=m +CONFIG_USB_CDC_PHONET=m +CONFIG_USB_IPHETH=m +CONFIG_USB_SIERRA_NET=m +CONFIG_USB_VL600=m +CONFIG_USB_NET_CH9200=m + +## +## file: drivers/net/wan/Kconfig +## +CONFIG_HDLC=m +CONFIG_HDLC_RAW=m +CONFIG_HDLC_RAW_ETH=m +CONFIG_HDLC_CISCO=m +CONFIG_HDLC_FR=m +CONFIG_HDLC_PPP=m +# CONFIG_HDLC_X25 is not set +# CONFIG_PC300TOO is not set + +## +## file: drivers/net/wimax/i2400m/Kconfig +## +CONFIG_WIMAX_I2400M_USB=m +CONFIG_WIMAX_I2400M_DEBUG_LEVEL=8 + +## +## file: drivers/net/wireless/Kconfig +## +CONFIG_WLAN=y +CONFIG_MAC80211_HWSIM=m +CONFIG_USB_NET_RNDIS_WLAN=m + +## +## file: drivers/net/wireless/admtek/Kconfig +## +CONFIG_WLAN_VENDOR_ADMTEK=y +CONFIG_ADM8211=m + +## +## file: drivers/net/wireless/ath/Kconfig +## +CONFIG_WLAN_VENDOR_ATH=y +# CONFIG_ATH_DEBUG is not set + +## +## file: drivers/net/wireless/ath/ar5523/Kconfig +## +CONFIG_AR5523=m + +## +## file: drivers/net/wireless/ath/ath10k/Kconfig +## +CONFIG_ATH10K=m +CONFIG_ATH10K_PCI=m +# CONFIG_ATH10K_DEBUG is not set +# CONFIG_ATH10K_DEBUGFS is not set +# CONFIG_ATH10K_TRACING is not set + +## +## file: drivers/net/wireless/ath/ath5k/Kconfig +## +CONFIG_ATH5K=m +# CONFIG_ATH5K_DEBUG is not set +# CONFIG_ATH5K_TRACER is not set + +## +## file: drivers/net/wireless/ath/ath6kl/Kconfig +## +CONFIG_ATH6KL=m +CONFIG_ATH6KL_SDIO=m +CONFIG_ATH6KL_USB=m +# CONFIG_ATH6KL_DEBUG is not set +# CONFIG_ATH6KL_TRACING is not set + +## +## file: drivers/net/wireless/ath/ath9k/Kconfig +## +CONFIG_ATH9K_BTCOEX_SUPPORT=y +CONFIG_ATH9K=m +CONFIG_ATH9K_PCI=y +# CONFIG_ATH9K_AHB is not set +# CONFIG_ATH9K_DEBUGFS is not set +# CONFIG_ATH9K_DYNACK is not set +# CONFIG_ATH9K_WOW is not set +CONFIG_ATH9K_RFKILL=y +CONFIG_ATH9K_PCOEM=y +CONFIG_ATH9K_HTC=m +# CONFIG_ATH9K_HTC_DEBUGFS is not set +# CONFIG_ATH9K_HWRNG is not set + +## +## file: drivers/net/wireless/ath/carl9170/Kconfig +## +CONFIG_CARL9170=m +CONFIG_CARL9170_LEDS=y +# CONFIG_CARL9170_DEBUGFS is not set +# CONFIG_CARL9170_HWRNG is not set + +## +## file: drivers/net/wireless/ath/wcn36xx/Kconfig +## +# CONFIG_WCN36XX is not set + +## +## file: drivers/net/wireless/ath/wil6210/Kconfig +## +CONFIG_WIL6210=m +CONFIG_WIL6210_ISR_COR=y +CONFIG_WIL6210_TRACING=y + +## +## file: drivers/net/wireless/atmel/Kconfig +## +CONFIG_WLAN_VENDOR_ATMEL=y +CONFIG_AT76C50X_USB=m + +## +## file: drivers/net/wireless/broadcom/Kconfig +## +CONFIG_WLAN_VENDOR_BROADCOM=y + +## +## file: drivers/net/wireless/broadcom/b43/Kconfig +## +CONFIG_B43=m +CONFIG_B43_SDIO=y +CONFIG_B43_PHY_G=y +CONFIG_B43_PHY_N=y +CONFIG_B43_PHY_LP=y +CONFIG_B43_PHY_HT=y +# CONFIG_B43_DEBUG is not set + +## +## file: drivers/net/wireless/broadcom/b43legacy/Kconfig +## +CONFIG_B43LEGACY=m +CONFIG_B43LEGACY_DEBUG=y +## choice: Broadcom 43xx-legacy data transfer mode +CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y +# CONFIG_B43LEGACY_DMA_MODE is not set +# CONFIG_B43LEGACY_PIO_MODE is not set +## end choice + +## +## file: drivers/net/wireless/broadcom/brcm80211/Kconfig +## +CONFIG_BRCMSMAC=m +CONFIG_BRCMFMAC=m +# CONFIG_BRCMFMAC_SDIO is not set +CONFIG_BRCMFMAC_USB=y +CONFIG_BRCMFMAC_PCIE=y +# CONFIG_BRCM_TRACING is not set +# CONFIG_BRCMDBG is not set + +## +## file: drivers/net/wireless/cisco/Kconfig +## +CONFIG_WLAN_VENDOR_CISCO=y +CONFIG_AIRO=m + +## +## file: drivers/net/wireless/intel/Kconfig +## +CONFIG_WLAN_VENDOR_INTEL=y + +## +## file: drivers/net/wireless/intel/ipw2x00/Kconfig +## +CONFIG_IPW2200=m +CONFIG_IPW2200_MONITOR=y +CONFIG_IPW2200_RADIOTAP=y +CONFIG_IPW2200_PROMISCUOUS=y +CONFIG_IPW2200_QOS=y +# CONFIG_IPW2200_DEBUG is not set +# CONFIG_LIBIPW_DEBUG is not set + +## +## file: drivers/net/wireless/intel/iwlegacy/Kconfig +## +CONFIG_IWL4965=m +CONFIG_IWL3945=m +# CONFIG_IWLEGACY_DEBUG is not set + +## +## file: drivers/net/wireless/intel/iwlwifi/Kconfig +## +CONFIG_IWLWIFI=m +CONFIG_IWLDVM=m +CONFIG_IWLMVM=m +# CONFIG_IWLWIFI_BCAST_FILTERING is not set +# CONFIG_IWLWIFI_DEBUG is not set +# CONFIG_IWLWIFI_DEVICE_TRACING is not set + +## +## file: drivers/net/wireless/intersil/Kconfig +## +CONFIG_WLAN_VENDOR_INTERSIL=y +# CONFIG_PRISM54 is not set + +## +## file: drivers/net/wireless/intersil/hostap/Kconfig +## +CONFIG_HOSTAP=m +CONFIG_HOSTAP_FIRMWARE=y +# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set +CONFIG_HOSTAP_PLX=m +CONFIG_HOSTAP_PCI=m +CONFIG_HOSTAP_CS=m + +## +## file: drivers/net/wireless/intersil/orinoco/Kconfig +## +# CONFIG_HERMES_PRISM is not set +CONFIG_HERMES_CACHE_FW_ON_INIT=y +CONFIG_NORTEL_HERMES=m +CONFIG_PCMCIA_SPECTRUM=m +CONFIG_ORINOCO_USB=m + +## +## file: drivers/net/wireless/intersil/p54/Kconfig +## +CONFIG_P54_COMMON=m +CONFIG_P54_USB=m +CONFIG_P54_PCI=m +# CONFIG_P54_SPI is not set +# CONFIG_P54_SPI_DEFAULT_EEPROM is not set + +## +## file: drivers/net/wireless/marvell/Kconfig +## +CONFIG_WLAN_VENDOR_MARVELL=y +CONFIG_MWL8K=m + +## +## file: drivers/net/wireless/marvell/libertas/Kconfig +## +CONFIG_LIBERTAS=m +CONFIG_LIBERTAS_USB=m +CONFIG_LIBERTAS_CS=m +CONFIG_LIBERTAS_SDIO=m +# CONFIG_LIBERTAS_SPI is not set +# CONFIG_LIBERTAS_DEBUG is not set +CONFIG_LIBERTAS_MESH=y + +## +## file: drivers/net/wireless/marvell/libertas_tf/Kconfig +## +CONFIG_LIBERTAS_THINFIRM=m +# CONFIG_LIBERTAS_THINFIRM_DEBUG is not set +CONFIG_LIBERTAS_THINFIRM_USB=m + +## +## file: drivers/net/wireless/mediatek/Kconfig +## +CONFIG_WLAN_VENDOR_MEDIATEK=y + +## +## file: drivers/net/wireless/mediatek/mt7601u/Kconfig +## +CONFIG_MT7601U=m + +## +## file: drivers/net/wireless/ralink/Kconfig +## +CONFIG_WLAN_VENDOR_RALINK=y + +## +## file: drivers/net/wireless/ralink/rt2x00/Kconfig +## +CONFIG_RT2X00=m +CONFIG_RT2400PCI=m +CONFIG_RT2500PCI=m +CONFIG_RT61PCI=m +CONFIG_RT2800PCI=m +CONFIG_RT2800PCI_RT33XX=y +CONFIG_RT2800PCI_RT35XX=y +CONFIG_RT2800PCI_RT53XX=y +CONFIG_RT2800PCI_RT3290=y +CONFIG_RT2500USB=m +CONFIG_RT73USB=m +CONFIG_RT2800USB=m +CONFIG_RT2800USB_RT33XX=y +CONFIG_RT2800USB_RT35XX=y +CONFIG_RT2800USB_RT3573=y +CONFIG_RT2800USB_RT53XX=y +CONFIG_RT2800USB_RT55XX=y +# CONFIG_RT2800USB_UNKNOWN is not set +# CONFIG_RT2X00_DEBUG is not set + +## +## file: drivers/net/wireless/realtek/Kconfig +## +CONFIG_WLAN_VENDOR_REALTEK=y + +## +## file: drivers/net/wireless/realtek/rtl818x/Kconfig +## +CONFIG_RTL8180=m +CONFIG_RTL8187=m + +## +## file: drivers/net/wireless/realtek/rtl8xxxu/Kconfig +## +CONFIG_RTL8XXXU=m +# CONFIG_RTL8XXXU_UNTESTED is not set + +## +## file: drivers/net/wireless/realtek/rtlwifi/Kconfig +## +CONFIG_RTL_CARDS=m +CONFIG_RTL8192CE=m +CONFIG_RTL8192SE=m +CONFIG_RTL8192DE=m +CONFIG_RTL8723AE=m +CONFIG_RTL8723BE=m +CONFIG_RTL8188EE=m +CONFIG_RTL8192EE=m +CONFIG_RTL8821AE=m +CONFIG_RTL8192CU=m +# CONFIG_RTLWIFI_DEBUG is not set + +## +## file: drivers/net/wireless/rsi/Kconfig +## +CONFIG_WLAN_VENDOR_RSI=y +CONFIG_RSI_91X=m +CONFIG_RSI_DEBUGFS=y +# CONFIG_RSI_SDIO is not set +CONFIG_RSI_USB=m + +## +## file: drivers/net/wireless/st/Kconfig +## +CONFIG_WLAN_VENDOR_ST=y + +## +## file: drivers/net/wireless/st/cw1200/Kconfig +## +# CONFIG_CW1200 is not set + +## +## file: drivers/net/wireless/ti/Kconfig +## +# CONFIG_WLAN_VENDOR_TI is not set + +## +## file: drivers/net/wireless/zydas/Kconfig +## +CONFIG_WLAN_VENDOR_ZYDAS=y + +## +## file: drivers/net/wireless/zydas/zd1211rw/Kconfig +## +CONFIG_ZD1211RW=m +# CONFIG_ZD1211RW_DEBUG is not set + +## +## file: drivers/nfc/Kconfig +## +# CONFIG_NFC_TRF7970A is not set +CONFIG_NFC_SIM=m +CONFIG_NFC_PORT100=m + +## +## file: drivers/nfc/microread/Kconfig +## +# CONFIG_NFC_MICROREAD_I2C is not set +# CONFIG_NFC_MICROREAD_MEI is not set + +## +## file: drivers/nfc/pn533/Kconfig +## +CONFIG_NFC_PN533_USB=m +# CONFIG_NFC_PN533_I2C is not set + +## +## file: drivers/nfc/st21nfca/Kconfig +## +# CONFIG_NFC_ST21NFCA_I2C is not set + +## +## file: drivers/nfc/st95hf/Kconfig +## +# CONFIG_NFC_ST95HF is not set + +## +## file: drivers/ntb/Kconfig +## +# CONFIG_NTB is not set + +## +## file: drivers/nvdimm/Kconfig +## +CONFIG_NVDIMM_DAX=y + +## +## file: drivers/nvme/host/Kconfig +## +CONFIG_BLK_DEV_NVME=m +CONFIG_NVME_MULTIPATH=y +CONFIG_NVME_RDMA=m +CONFIG_NVME_FC=m + +## +## file: drivers/nvme/target/Kconfig +## +CONFIG_NVME_TARGET=m +# CONFIG_NVME_TARGET_LOOP is not set +CONFIG_NVME_TARGET_RDMA=m +CONFIG_NVME_TARGET_FC=m + +## +## file: drivers/of/Kconfig +## +# CONFIG_OF is not set +# CONFIG_OF_UNITTEST is not set +# CONFIG_OF_OVERLAY is not set + +## +## file: drivers/parport/Kconfig +## +CONFIG_PARPORT=m +CONFIG_PARPORT_PC=m +CONFIG_PARPORT_SERIAL=m +# CONFIG_PARPORT_PC_FIFO is not set +# CONFIG_PARPORT_PC_SUPERIO is not set +CONFIG_PARPORT_PC_PCMCIA=m +# CONFIG_PARPORT_AX88796 is not set +CONFIG_PARPORT_1284=y + +## +## file: drivers/pci/Kconfig +## +CONFIG_PCI_MSI=y +CONFIG_PCI_QUIRKS=y +# CONFIG_PCI_DEBUG is not set +CONFIG_PCI_REALLOC_ENABLE_AUTO=y +CONFIG_PCI_STUB=m +CONFIG_XEN_PCIDEV_FRONTEND=m +CONFIG_PCI_IOV=y +# CONFIG_PCI_PRI is not set +# CONFIG_PCI_PASID is not set + +## +## file: drivers/pci/dwc/Kconfig +## +# CONFIG_PCIE_DW_PLAT is not set + +## +## file: drivers/pci/hotplug/Kconfig +## +CONFIG_HOTPLUG_PCI_CPCI=y + +## +## file: drivers/pci/pcie/Kconfig +## +CONFIG_PCIEPORTBUS=y +CONFIG_HOTPLUG_PCI_PCIE=y +CONFIG_PCIEASPM=y +# CONFIG_PCIEASPM_DEBUG is not set +CONFIG_PCIE_DPC=y +CONFIG_PCIE_PTM=y + +## +## file: drivers/pci/pcie/aer/Kconfig +## +CONFIG_PCIEAER=y +# CONFIG_PCIE_ECRC is not set + +## +## file: drivers/pci/pcie/aer/Kconfig.debug +## +CONFIG_PCIEAER_INJECT=m + +## +## file: drivers/pcmcia/Kconfig +## +CONFIG_PCMCIA_LOAD_CIS=y +CONFIG_YENTA_O2=y +CONFIG_YENTA_RICOH=y +CONFIG_YENTA_TI=y +CONFIG_YENTA_ENE_TUNE=y +CONFIG_YENTA_TOSHIBA=y + +## +## file: drivers/phy/Kconfig +## +# CONFIG_GENERIC_PHY is not set + +## +## file: drivers/phy/broadcom/Kconfig +## +# CONFIG_BCM_KONA_USB2_PHY is not set + +## +## file: drivers/phy/marvell/Kconfig +## +# CONFIG_PHY_PXA_28NM_HSIC is not set +# CONFIG_PHY_PXA_28NM_USB2 is not set + +## +## file: drivers/phy/samsung/Kconfig +## +# CONFIG_PHY_EXYNOS_DP_VIDEO is not set +# CONFIG_PHY_EXYNOS_MIPI_VIDEO is not set +# CONFIG_PHY_SAMSUNG_USB2 is not set + +## +## file: drivers/phy/ti/Kconfig +## +# CONFIG_OMAP_CONTROL_PHY is not set +# CONFIG_OMAP_USB2 is not set +# CONFIG_TWL4030_USB is not set + +## +## file: drivers/pinctrl/Kconfig +## +# CONFIG_PINMUX is not set +# CONFIG_PINCONF is not set +# CONFIG_DEBUG_PINCTRL is not set +# CONFIG_PINCTRL_AMD is not set +# CONFIG_PINCTRL_MCP23S08 is not set +# CONFIG_PINCTRL_SINGLE is not set + +## +## file: drivers/pinctrl/intel/Kconfig +## +# CONFIG_PINCTRL_BAYTRAIL is not set +# CONFIG_PINCTRL_CHERRYVIEW is not set +# CONFIG_PINCTRL_BROXTON is not set +# CONFIG_PINCTRL_SUNRISEPOINT is not set + +## +## file: drivers/platform/goldfish/Kconfig +## +# CONFIG_GOLDFISH is not set + +## +## file: drivers/platform/x86/Kconfig +## +CONFIG_ASUS_LAPTOP=m +CONFIG_FUJITSU_LAPTOP=m +CONFIG_HP_WMI=m +CONFIG_MSI_LAPTOP=m +CONFIG_PANASONIC_LAPTOP=m +CONFIG_COMPAL_LAPTOP=m +CONFIG_SONY_LAPTOP=m +# CONFIG_SAMSUNG_LAPTOP is not set + +## +## file: drivers/pnp/Kconfig +## +# CONFIG_PNP_DEBUG_MESSAGES is not set + +## +## file: drivers/power/avs/Kconfig +## +# CONFIG_POWER_AVS is not set + +## +## file: drivers/power/reset/Kconfig +## +# CONFIG_POWER_RESET is not set + +## +## file: drivers/power/supply/Kconfig +## +CONFIG_POWER_SUPPLY=y +# CONFIG_POWER_SUPPLY_DEBUG is not set +# CONFIG_PDA_POWER is not set +# CONFIG_GENERIC_ADC_BATTERY is not set +CONFIG_WM831X_POWER=m +CONFIG_WM8350_POWER=m +# CONFIG_TEST_POWER is not set +# CONFIG_BATTERY_DS2760 is not set +# CONFIG_BATTERY_DS2780 is not set +# CONFIG_BATTERY_DS2781 is not set +# CONFIG_BATTERY_DS2782 is not set +CONFIG_BATTERY_BQ27XXX=m +# CONFIG_BATTERY_BQ27XXX_I2C is not set +CONFIG_BATTERY_BQ27XXX_HDQ=m +# CONFIG_BATTERY_MAX17040 is not set +# CONFIG_BATTERY_MAX17042 is not set +CONFIG_CHARGER_PCF50633=m +# CONFIG_CHARGER_ISP1704 is not set +# CONFIG_CHARGER_MAX8903 is not set +# CONFIG_CHARGER_LP8727 is not set +# CONFIG_CHARGER_GPIO is not set +# CONFIG_CHARGER_BQ2415X is not set +# CONFIG_CHARGER_BQ24190 is not set +# CONFIG_CHARGER_BQ24257 is not set +# CONFIG_CHARGER_BQ24735 is not set +# CONFIG_CHARGER_BQ25890 is not set +# CONFIG_CHARGER_SMB347 is not set +# CONFIG_BATTERY_GAUGE_LTC2941 is not set +# CONFIG_CHARGER_RT9455 is not set + +## +## file: drivers/pps/Kconfig +## +CONFIG_PPS=m +# CONFIG_PPS_DEBUG is not set +# CONFIG_NTP_PPS is not set + +## +## file: drivers/pps/clients/Kconfig +## +# CONFIG_PPS_CLIENT_KTIMER is not set +CONFIG_PPS_CLIENT_LDISC=m +CONFIG_PPS_CLIENT_PARPORT=m +# CONFIG_PPS_CLIENT_GPIO is not set + +## +## file: drivers/ptp/Kconfig +## +CONFIG_PTP_1588_CLOCK=m +CONFIG_PTP_1588_CLOCK_GIANFAR=m +CONFIG_PTP_1588_CLOCK_IXP46X=m + +## +## file: drivers/pwm/Kconfig +## +# CONFIG_PWM is not set + +## +## file: drivers/regulator/Kconfig +## +# CONFIG_REGULATOR is not set + +## +## file: drivers/reset/Kconfig +## +# CONFIG_RESET_CONTROLLER is not set + +## +## file: drivers/rtc/Kconfig +## +CONFIG_RTC_CLASS=y +CONFIG_RTC_HCTOSYS=y +CONFIG_RTC_HCTOSYS_DEVICE="rtc0" +CONFIG_RTC_SYSTOHC=y +CONFIG_RTC_SYSTOHC_DEVICE="rtc0" +# CONFIG_RTC_DEBUG is not set +CONFIG_RTC_NVMEM=y +CONFIG_RTC_INTF_SYSFS=y +CONFIG_RTC_INTF_PROC=y +CONFIG_RTC_INTF_DEV=y +# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set +# CONFIG_RTC_DRV_TEST is not set +# CONFIG_RTC_DRV_ABB5ZES3 is not set +# CONFIG_RTC_DRV_ABX80X is not set +# CONFIG_RTC_DRV_DS1307 is not set +# CONFIG_RTC_DRV_DS1374 is not set +# CONFIG_RTC_DRV_DS1672 is not set +# CONFIG_RTC_DRV_HYM8563 is not set +# CONFIG_RTC_DRV_MAX6900 is not set +# CONFIG_RTC_DRV_RS5C372 is not set +# CONFIG_RTC_DRV_ISL1208 is not set +# CONFIG_RTC_DRV_ISL12022 is not set +# CONFIG_RTC_DRV_X1205 is not set +# CONFIG_RTC_DRV_PCF8523 is not set +# CONFIG_RTC_DRV_PCF85063 is not set +# CONFIG_RTC_DRV_PCF8563 is not set +# CONFIG_RTC_DRV_PCF8583 is not set +# CONFIG_RTC_DRV_M41T80 is not set +# CONFIG_RTC_DRV_M41T80_WDT is not set +# CONFIG_RTC_DRV_BQ32K is not set +# CONFIG_RTC_DRV_S35390A is not set +# CONFIG_RTC_DRV_FM3130 is not set +# CONFIG_RTC_DRV_RX8010 is not set +# CONFIG_RTC_DRV_RX8581 is not set +# CONFIG_RTC_DRV_RX8025 is not set +# CONFIG_RTC_DRV_EM3027 is not set +# CONFIG_RTC_DRV_RV8803 is not set +# CONFIG_RTC_DRV_M41T93 is not set +# CONFIG_RTC_DRV_M41T94 is not set +# CONFIG_RTC_DRV_DS1302 is not set +# CONFIG_RTC_DRV_DS1305 is not set +# CONFIG_RTC_DRV_DS1343 is not set +# CONFIG_RTC_DRV_DS1347 is not set +# CONFIG_RTC_DRV_DS1390 is not set +# CONFIG_RTC_DRV_MAX6916 is not set +# CONFIG_RTC_DRV_R9701 is not set +# CONFIG_RTC_DRV_RX4581 is not set +# CONFIG_RTC_DRV_RX6110 is not set +# CONFIG_RTC_DRV_RS5C348 is not set +# CONFIG_RTC_DRV_MAX6902 is not set +# CONFIG_RTC_DRV_PCF2123 is not set +# CONFIG_RTC_DRV_MCP795 is not set +# CONFIG_RTC_DRV_DS3232 is not set +# CONFIG_RTC_DRV_PCF2127 is not set +# CONFIG_RTC_DRV_RV3029C2 is not set +CONFIG_RTC_DRV_CMOS=m +# CONFIG_RTC_DRV_DS1286 is not set +# CONFIG_RTC_DRV_DS1511 is not set +# CONFIG_RTC_DRV_DS1553 is not set +# CONFIG_RTC_DRV_DS1685_FAMILY is not set +# CONFIG_RTC_DRV_DS1742 is not set +# CONFIG_RTC_DRV_DS2404 is not set +# CONFIG_RTC_DRV_STK17TA8 is not set +# CONFIG_RTC_DRV_M48T86 is not set +# CONFIG_RTC_DRV_M48T35 is not set +# CONFIG_RTC_DRV_M48T59 is not set +# CONFIG_RTC_DRV_MSM6242 is not set +# CONFIG_RTC_DRV_BQ4802 is not set +# CONFIG_RTC_DRV_RP5C01 is not set +# CONFIG_RTC_DRV_V3020 is not set +CONFIG_RTC_DRV_WM831X=m +CONFIG_RTC_DRV_WM8350=m +CONFIG_RTC_DRV_PCF50633=m +CONFIG_RTC_DRV_AB3100=m +# CONFIG_RTC_DRV_ZYNQMP is not set +# CONFIG_RTC_DRV_SNVS is not set +# CONFIG_RTC_DRV_MOXART is not set +# CONFIG_RTC_DRV_XGENE is not set +# CONFIG_RTC_DRV_HID_SENSOR_TIME is not set + +## +## file: drivers/scsi/Kconfig +## +CONFIG_RAID_ATTRS=m +CONFIG_SCSI=m +# CONFIG_SCSI_PROC_FS is not set +CONFIG_BLK_DEV_SD=m +CONFIG_CHR_DEV_ST=m +CONFIG_CHR_DEV_OSST=m +CONFIG_BLK_DEV_SR=m +CONFIG_BLK_DEV_SR_VENDOR=y +CONFIG_CHR_DEV_SG=m +CONFIG_CHR_DEV_SCH=m +CONFIG_SCSI_ENCLOSURE=m +CONFIG_SCSI_CONSTANTS=y +CONFIG_SCSI_LOGGING=y +CONFIG_SCSI_SCAN_ASYNC=y +CONFIG_SCSI_SPI_ATTRS=m +CONFIG_SCSI_FC_ATTRS=m +CONFIG_SCSI_ISCSI_ATTRS=m +CONFIG_SCSI_SAS_ATTRS=m +CONFIG_SCSI_LOWLEVEL=y +CONFIG_ISCSI_TCP=m +CONFIG_BLK_DEV_3W_XXXX_RAID=m +CONFIG_SCSI_HPSA=m +CONFIG_SCSI_3W_9XXX=m +CONFIG_SCSI_3W_SAS=m +CONFIG_SCSI_ACARD=m +CONFIG_SCSI_AHA152X=m +CONFIG_SCSI_AHA1542=m +CONFIG_SCSI_AHA1740=m +CONFIG_SCSI_AACRAID=m +CONFIG_SCSI_MVUMI=m +CONFIG_SCSI_ADVANSYS=m +CONFIG_SCSI_HPTIOP=m +CONFIG_XEN_SCSI_FRONTEND=m +CONFIG_LIBFC=m +CONFIG_LIBFCOE=m +CONFIG_FCOE=m +CONFIG_FCOE_FNIC=m +CONFIG_SCSI_SNIC=m +# CONFIG_SCSI_SNIC_DEBUG_FS is not set +# CONFIG_SCSI_PPA is not set +# CONFIG_SCSI_IMM is not set +# CONFIG_SCSI_IZIP_EPP16 is not set +# CONFIG_SCSI_IZIP_SLOW_CTR is not set +CONFIG_SCSI_STEX=m +CONFIG_SCSI_SYM53C8XX_MMIO=y +# CONFIG_SCSI_IPR is not set +CONFIG_SCSI_LPFC=m +# CONFIG_SCSI_LPFC_DEBUG_FS is not set +CONFIG_SCSI_WD719X=m +# CONFIG_SCSI_DEBUG is not set +CONFIG_SCSI_PMCRAID=m +CONFIG_SCSI_PM8001=m +CONFIG_SCSI_BFA_FC=m +CONFIG_SCSI_VIRTIO=m + +## +## file: drivers/scsi/aic7xxx/Kconfig.aic79xx +## +CONFIG_SCSI_AIC79XX=m +CONFIG_AIC79XX_CMDS_PER_DEVICE=32 +CONFIG_AIC79XX_RESET_DELAY_MS=15000 +CONFIG_AIC79XX_DEBUG_ENABLE=y +CONFIG_AIC79XX_DEBUG_MASK=0 +CONFIG_AIC79XX_REG_PRETTY_PRINT=y + +## +## file: drivers/scsi/aic7xxx/Kconfig.aic7xxx +## +CONFIG_SCSI_AIC7XXX=m +CONFIG_AIC7XXX_CMDS_PER_DEVICE=32 +CONFIG_AIC7XXX_RESET_DELAY_MS=15000 +CONFIG_AIC7XXX_DEBUG_ENABLE=y +CONFIG_AIC7XXX_DEBUG_MASK=0 +CONFIG_AIC7XXX_REG_PRETTY_PRINT=y + +## +## file: drivers/scsi/aic94xx/Kconfig +## +CONFIG_SCSI_AIC94XX=m +# CONFIG_AIC94XX_DEBUG is not set + +## +## file: drivers/scsi/be2iscsi/Kconfig +## +CONFIG_BE2ISCSI=m + +## +## file: drivers/scsi/bnx2fc/Kconfig +## +CONFIG_SCSI_BNX2X_FCOE=m + +## +## file: drivers/scsi/bnx2i/Kconfig +## +CONFIG_SCSI_BNX2_ISCSI=m + +## +## file: drivers/scsi/csiostor/Kconfig +## +CONFIG_SCSI_CHELSIO_FCOE=m + +## +## file: drivers/scsi/cxgbi/cxgb3i/Kconfig +## +CONFIG_SCSI_CXGB3_ISCSI=m + +## +## file: drivers/scsi/cxgbi/cxgb4i/Kconfig +## +CONFIG_SCSI_CXGB4_ISCSI=m + +## +## file: drivers/scsi/device_handler/Kconfig +## +CONFIG_SCSI_DH=y +CONFIG_SCSI_DH_RDAC=m +CONFIG_SCSI_DH_HP_SW=m +CONFIG_SCSI_DH_EMC=m +CONFIG_SCSI_DH_ALUA=m + +## +## file: drivers/scsi/esas2r/Kconfig +## +CONFIG_SCSI_ESAS2R=m + +## +## file: drivers/scsi/libsas/Kconfig +## +CONFIG_SCSI_SAS_LIBSAS=m +CONFIG_SCSI_SAS_ATA=y +CONFIG_SCSI_SAS_HOST_SMP=y + +## +## file: drivers/scsi/megaraid/Kconfig.megaraid +## +CONFIG_MEGARAID_SAS=m + +## +## file: drivers/scsi/mpt3sas/Kconfig +## +CONFIG_SCSI_MPT3SAS=m +CONFIG_SCSI_MPT2SAS_MAX_SGE=128 +CONFIG_SCSI_MPT3SAS_MAX_SGE=128 +CONFIG_SCSI_MPT2SAS=m + +## +## file: drivers/scsi/mvsas/Kconfig +## +CONFIG_SCSI_MVSAS=m +# CONFIG_SCSI_MVSAS_DEBUG is not set +# CONFIG_SCSI_MVSAS_TASKLET is not set + +## +## file: drivers/scsi/osd/Kconfig +## +CONFIG_SCSI_OSD_INITIATOR=m +CONFIG_SCSI_OSD_ULD=m +CONFIG_SCSI_OSD_DPRINT_SENSE=1 +# CONFIG_SCSI_OSD_DEBUG is not set + +## +## file: drivers/scsi/pcmcia/Kconfig +## +CONFIG_SCSI_LOWLEVEL_PCMCIA=y + +## +## file: drivers/scsi/qla2xxx/Kconfig +## +CONFIG_SCSI_QLA_FC=m +CONFIG_TCM_QLA2XXX=m +# CONFIG_TCM_QLA2XXX_DEBUG is not set + +## +## file: drivers/scsi/qla4xxx/Kconfig +## +CONFIG_SCSI_QLA_ISCSI=m + +## +## file: drivers/scsi/smartpqi/Kconfig +## +CONFIG_SCSI_SMARTPQI=m + +## +## file: drivers/scsi/ufs/Kconfig +## +CONFIG_SCSI_UFSHCD=m +CONFIG_SCSI_UFSHCD_PCI=m +# CONFIG_SCSI_UFS_DWC_TC_PCI is not set +# CONFIG_SCSI_UFSHCD_PLATFORM is not set + +## +## file: drivers/soc/ti/Kconfig +## +# CONFIG_SOC_TI is not set + +## +## file: drivers/spi/Kconfig +## +CONFIG_SPI=y +# CONFIG_SPI_DEBUG is not set +# CONFIG_SPI_ALTERA is not set +# CONFIG_SPI_AXI_SPI_ENGINE is not set +CONFIG_SPI_BITBANG=m +CONFIG_SPI_BUTTERFLY=m +# CONFIG_SPI_CADENCE is not set +# CONFIG_SPI_DESIGNWARE is not set +# CONFIG_SPI_GPIO is not set +CONFIG_SPI_LM70_LLP=m +# CONFIG_SPI_FSL_SPI is not set +# CONFIG_SPI_FSL_DSPI is not set +# CONFIG_SPI_OC_TINY is not set +# CONFIG_SPI_PXA2XX is not set +# CONFIG_SPI_ROCKCHIP is not set +# CONFIG_SPI_SC18IS602 is not set +# CONFIG_SPI_TOPCLIFF_PCH is not set +# CONFIG_SPI_XCOMM is not set +# CONFIG_SPI_XILINX is not set +# CONFIG_SPI_ZYNQMP_GQSPI is not set +# CONFIG_SPI_SPIDEV is not set +# CONFIG_SPI_LOOPBACK_TEST is not set +# CONFIG_SPI_TLE62X0 is not set + +## +## file: drivers/spmi/Kconfig +## +# CONFIG_SPMI is not set + +## +## file: drivers/ssb/Kconfig +## +CONFIG_SSB=m +CONFIG_SSB_PCMCIAHOST=y +# CONFIG_SSB_HOST_SOC is not set +# CONFIG_SSB_SILENT is not set +# CONFIG_SSB_DEBUG is not set +# CONFIG_SSB_DRIVER_GPIO is not set + +## +## file: drivers/staging/Kconfig +## +CONFIG_STAGING=y + +## +## file: drivers/staging/board/Kconfig +## +# CONFIG_STAGING_BOARD is not set + +## +## file: drivers/staging/clocking-wizard/Kconfig +## +# CONFIG_COMMON_CLK_XLNX_CLKWZRD is not set + +## +## file: drivers/staging/comedi/Kconfig +## +# CONFIG_COMEDI is not set + +## +## file: drivers/staging/dgnc/Kconfig +## +# CONFIG_DGNC is not set + +## +## file: drivers/staging/fbtft/Kconfig +## +# CONFIG_FB_TFT is not set + +## +## file: drivers/staging/gdm724x/Kconfig +## +# CONFIG_LTE_GDM724X is not set + +## +## file: drivers/staging/greybus/Kconfig +## +# CONFIG_GREYBUS is not set + +## +## file: drivers/staging/gs_fpgaboot/Kconfig +## +# CONFIG_GS_FPGABOOT is not set + +## +## file: drivers/staging/iio/accel/Kconfig +## +# CONFIG_ADIS16201 is not set +# CONFIG_ADIS16203 is not set +# CONFIG_ADIS16209 is not set +# CONFIG_ADIS16240 is not set + +## +## file: drivers/staging/iio/adc/Kconfig +## +# CONFIG_AD7606 is not set +# CONFIG_AD7780 is not set +# CONFIG_AD7816 is not set +# CONFIG_AD7192 is not set +# CONFIG_AD7280 is not set + +## +## file: drivers/staging/iio/addac/Kconfig +## +# CONFIG_ADT7316 is not set + +## +## file: drivers/staging/iio/cdc/Kconfig +## +# CONFIG_AD7150 is not set +# CONFIG_AD7152 is not set +# CONFIG_AD7746 is not set + +## +## file: drivers/staging/iio/frequency/Kconfig +## +# CONFIG_AD9832 is not set +# CONFIG_AD9834 is not set + +## +## file: drivers/staging/iio/gyro/Kconfig +## +# CONFIG_ADIS16060 is not set + +## +## file: drivers/staging/iio/impedance-analyzer/Kconfig +## +# CONFIG_AD5933 is not set + +## +## file: drivers/staging/iio/light/Kconfig +## +# CONFIG_TSL2x7x is not set + +## +## file: drivers/staging/iio/meter/Kconfig +## +# CONFIG_ADE7753 is not set +# CONFIG_ADE7754 is not set +# CONFIG_ADE7758 is not set +# CONFIG_ADE7759 is not set +# CONFIG_ADE7854 is not set + +## +## file: drivers/staging/iio/resolver/Kconfig +## +# CONFIG_AD2S90 is not set +# CONFIG_AD2S1200 is not set +# CONFIG_AD2S1210 is not set + +## +## file: drivers/staging/irda/net/Kconfig +## +# CONFIG_IRDA is not set + +## +## file: drivers/staging/lustre/lustre/Kconfig +## +# CONFIG_LUSTRE_FS is not set + +## +## file: drivers/staging/media/Kconfig +## +# CONFIG_STAGING_MEDIA is not set + +## +## file: drivers/staging/media/lirc/Kconfig +## +# CONFIG_LIRC_STAGING is not set + +## +## file: drivers/staging/most/Kconfig +## +# CONFIG_MOST is not set + +## +## file: drivers/staging/mt29f_spinand/Kconfig +## +# CONFIG_MTD_SPINAND_MT29F is not set + +## +## file: drivers/staging/rtl8188eu/Kconfig +## +CONFIG_R8188EU=m +CONFIG_88EU_AP_MODE=y + +## +## file: drivers/staging/rtl8192e/Kconfig +## +# CONFIG_RTLLIB is not set + +## +## file: drivers/staging/rtl8192e/rtl8192e/Kconfig +## +# CONFIG_RTL8192E is not set + +## +## file: drivers/staging/rtl8192u/Kconfig +## +# CONFIG_RTL8192U is not set + +## +## file: drivers/staging/rtl8712/Kconfig +## +CONFIG_R8712U=m + +## +## file: drivers/staging/rts5208/Kconfig +## +# CONFIG_RTS5208 is not set + +## +## file: drivers/staging/skein/Kconfig +## +# CONFIG_CRYPTO_SKEIN is not set + +## +## file: drivers/staging/sm750fb/Kconfig +## +# CONFIG_FB_SM750 is not set + +## +## file: drivers/staging/speakup/Kconfig +## +CONFIG_SPEAKUP=m +CONFIG_SPEAKUP_SYNTH_ACNTSA=m +CONFIG_SPEAKUP_SYNTH_ACNTPC=m +CONFIG_SPEAKUP_SYNTH_APOLLO=m +CONFIG_SPEAKUP_SYNTH_AUDPTR=m +CONFIG_SPEAKUP_SYNTH_BNS=m +CONFIG_SPEAKUP_SYNTH_DECTLK=m +CONFIG_SPEAKUP_SYNTH_DECEXT=m +CONFIG_SPEAKUP_SYNTH_DTLK=m +CONFIG_SPEAKUP_SYNTH_KEYPC=m +CONFIG_SPEAKUP_SYNTH_LTLK=m +CONFIG_SPEAKUP_SYNTH_SOFT=m +CONFIG_SPEAKUP_SYNTH_SPKOUT=m +CONFIG_SPEAKUP_SYNTH_TXPRT=m +CONFIG_SPEAKUP_SYNTH_DUMMY=m + +## +## file: drivers/staging/vt6655/Kconfig +## +# CONFIG_VT6655 is not set + +## +## file: drivers/staging/vt6656/Kconfig +## +# CONFIG_VT6656 is not set + +## +## file: drivers/staging/wlan-ng/Kconfig +## +# CONFIG_PRISM2_USB is not set + +## +## file: drivers/staging/xgifb/Kconfig +## +# CONFIG_FB_XGI is not set + +## +## file: drivers/target/Kconfig +## +CONFIG_TARGET_CORE=m +CONFIG_TCM_IBLOCK=m +CONFIG_TCM_FILEIO=m +CONFIG_TCM_PSCSI=m +CONFIG_TCM_USER2=m + +## +## file: drivers/target/iscsi/Kconfig +## +CONFIG_ISCSI_TARGET=m + +## +## file: drivers/target/iscsi/cxgbit/Kconfig +## +CONFIG_ISCSI_TARGET_CXGB4=m + +## +## file: drivers/target/loopback/Kconfig +## +CONFIG_LOOPBACK_TARGET=m + +## +## file: drivers/target/sbp/Kconfig +## +CONFIG_SBP_TARGET=m + +## +## file: drivers/target/tcm_fc/Kconfig +## +CONFIG_TCM_FC=m + +## +## file: drivers/thermal/Kconfig +## +CONFIG_THERMAL_HWMON=y +## choice: Default Thermal governor +CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y +# CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set +# CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set +## end choice +CONFIG_THERMAL_GOV_FAIR_SHARE=y +# CONFIG_THERMAL_GOV_STEP_WISE is not set +# CONFIG_THERMAL_GOV_BANG_BANG is not set +# CONFIG_THERMAL_GOV_USER_SPACE is not set +# CONFIG_THERMAL_GOV_POWER_ALLOCATOR is not set +# CONFIG_THERMAL_EMULATION is not set +# CONFIG_GENERIC_ADC_THERMAL is not set + +## +## file: drivers/tty/Kconfig +## +CONFIG_TTY=y +CONFIG_VT=y +CONFIG_CONSOLE_TRANSLATIONS=y +CONFIG_VT_CONSOLE=y +CONFIG_VT_HW_CONSOLE_BINDING=y +CONFIG_UNIX98_PTYS=y +# CONFIG_LEGACY_PTYS is not set +CONFIG_MOXA_SMARTIO=m +CONFIG_SYNCLINK_GT=m +CONFIG_NOZOMI=m +CONFIG_N_GSM=m +# CONFIG_TRACE_SINK is not set + +## +## file: drivers/tty/hvc/Kconfig +## +CONFIG_HVC_XEN=y +CONFIG_HVC_XEN_FRONTEND=y + +## +## file: drivers/tty/serial/Kconfig +## +# CONFIG_SERIAL_MAX3100 is not set +# CONFIG_SERIAL_MAX310X is not set +# CONFIG_SERIAL_UARTLITE is not set +# CONFIG_SERIAL_SCCNXP is not set +# CONFIG_SERIAL_SC16IS7XX is not set +# CONFIG_SERIAL_TIMBERDALE is not set +# CONFIG_SERIAL_ALTERA_JTAGUART is not set +# CONFIG_SERIAL_ALTERA_UART is not set +# CONFIG_SERIAL_IFX6X60 is not set +# CONFIG_SERIAL_XILINX_PS_UART is not set +# CONFIG_SERIAL_ARC is not set +CONFIG_SERIAL_RP2=m +CONFIG_SERIAL_RP2_NR_UARTS=32 +# CONFIG_SERIAL_FSL_LPUART is not set +# CONFIG_SERIAL_CONEXANT_DIGICOLOR is not set +# CONFIG_SERIAL_ST_ASC is not set + +## +## file: drivers/tty/serial/8250/Kconfig +## +# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set +CONFIG_SERIAL_8250_PNP=y +CONFIG_SERIAL_8250_DMA=y +CONFIG_SERIAL_8250_PCI=y +CONFIG_SERIAL_8250_FOURPORT=m +CONFIG_SERIAL_8250_ACCENT=m +CONFIG_SERIAL_8250_BOCA=m +CONFIG_SERIAL_8250_HUB6=m +# CONFIG_SERIAL_8250_DW is not set +# CONFIG_SERIAL_8250_RT288X is not set +# CONFIG_SERIAL_8250_MID is not set +CONFIG_SERIAL_8250_MOXA=m +CONFIG_SERIAL_OF_PLATFORM=m + +## +## file: drivers/uio/Kconfig +## +CONFIG_UIO=m +CONFIG_UIO_CIF=m +# CONFIG_UIO_PDRV_GENIRQ is not set +# CONFIG_UIO_DMEM_GENIRQ is not set +CONFIG_UIO_AEC=m +CONFIG_UIO_SERCOS3=m +CONFIG_UIO_PCI_GENERIC=m +CONFIG_UIO_NETX=m +# CONFIG_UIO_PRUSS is not set +CONFIG_UIO_MF624=m + +## +## file: drivers/usb/Kconfig +## +CONFIG_USB_SUPPORT=y +CONFIG_USB_LED_TRIG=y +# CONFIG_USB_ULPI_BUS is not set + +## +## file: drivers/usb/atm/Kconfig +## +CONFIG_USB_CXACRU=m +CONFIG_USB_UEAGLEATM=m +CONFIG_USB_XUSBATM=m + +## +## file: drivers/usb/chipidea/Kconfig +## +# CONFIG_USB_CHIPIDEA is not set + +## +## file: drivers/usb/class/Kconfig +## +CONFIG_USB_ACM=m +CONFIG_USB_PRINTER=m +CONFIG_USB_WDM=m +CONFIG_USB_TMC=m + +## +## file: drivers/usb/core/Kconfig +## +CONFIG_USB_ANNOUNCE_NEW_DEVICES=y +CONFIG_USB_DEFAULT_PERSIST=y +CONFIG_USB_DYNAMIC_MINORS=y +# CONFIG_USB_OTG is not set +# CONFIG_USB_OTG_WHITELIST is not set +# CONFIG_USB_OTG_BLACKLIST_HUB is not set +# CONFIG_USB_OTG_FSM is not set +CONFIG_USB_LEDS_TRIGGER_USBPORT=m + +## +## file: drivers/usb/dwc2/Kconfig +## +# CONFIG_USB_DWC2 is not set + +## +## file: drivers/usb/dwc3/Kconfig +## +# CONFIG_USB_DWC3 is not set + +## +## file: drivers/usb/gadget/Kconfig +## +# CONFIG_USB_GADGET is not set +# CONFIG_USB_GADGET_DEBUG is not set +# CONFIG_USB_GADGET_DEBUG_FILES is not set +# CONFIG_USB_GADGET_DEBUG_FS is not set +CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2 +CONFIG_USB_CONFIGFS=m +CONFIG_USB_CONFIGFS_SERIAL=y +CONFIG_USB_CONFIGFS_ACM=y +CONFIG_USB_CONFIGFS_OBEX=y +CONFIG_USB_CONFIGFS_NCM=y +CONFIG_USB_CONFIGFS_ECM=y +CONFIG_USB_CONFIGFS_ECM_SUBSET=y +CONFIG_USB_CONFIGFS_RNDIS=y +CONFIG_USB_CONFIGFS_EEM=y +CONFIG_USB_CONFIGFS_PHONET=y +CONFIG_USB_CONFIGFS_MASS_STORAGE=y +CONFIG_USB_CONFIGFS_F_LB_SS=y +CONFIG_USB_CONFIGFS_F_FS=y +CONFIG_USB_CONFIGFS_F_UAC1=y +CONFIG_USB_CONFIGFS_F_UAC2=y +CONFIG_USB_CONFIGFS_F_MIDI=y +CONFIG_USB_CONFIGFS_F_HID=y +CONFIG_USB_CONFIGFS_F_UVC=y +CONFIG_USB_CONFIGFS_F_PRINTER=y + +## +## file: drivers/usb/gadget/legacy/Kconfig +## +CONFIG_USB_ETH=m +CONFIG_USB_ETH_RNDIS=y +CONFIG_USB_GADGETFS=m +CONFIG_USB_FUNCTIONFS=m +CONFIG_USB_FUNCTIONFS_ETH=y +CONFIG_USB_FUNCTIONFS_RNDIS=y +CONFIG_USB_FUNCTIONFS_GENERIC=y +CONFIG_USB_G_SERIAL=m + +## +## file: drivers/usb/gadget/udc/Kconfig +## +# CONFIG_USB_FUSB300 is not set +# CONFIG_USB_FOTG210_UDC is not set +# CONFIG_USB_GR_UDC is not set +# CONFIG_USB_R8A66597 is not set +# CONFIG_USB_PXA27X is not set +# CONFIG_USB_MV_UDC is not set +# CONFIG_USB_MV_U3D is not set +# CONFIG_USB_M66592 is not set +# CONFIG_USB_AMD5536UDC is not set +# CONFIG_USB_NET2272 is not set +CONFIG_USB_NET2280=m +# CONFIG_USB_GOKU is not set +# CONFIG_USB_GADGET_XILINX is not set +# CONFIG_USB_DUMMY_HCD is not set + +## +## file: drivers/usb/gadget/udc/bdc/Kconfig +## +# CONFIG_USB_BDC_UDC is not set + +## +## file: drivers/usb/host/Kconfig +## +# CONFIG_USB_C67X00_HCD is not set +CONFIG_USB_XHCI_HCD=m +# CONFIG_USB_XHCI_PLATFORM is not set +CONFIG_USB_EHCI_ROOT_HUB_TT=y +CONFIG_USB_EHCI_TT_NEWSCHED=y +# CONFIG_USB_EHCI_HCD_PLATFORM is not set +# CONFIG_USB_OXU210HP_HCD is not set +# CONFIG_USB_ISP116X_HCD is not set +# CONFIG_USB_ISP1362_HCD is not set +# CONFIG_USB_FOTG210_HCD is not set +# CONFIG_USB_MAX3421_HCD is not set +CONFIG_USB_OHCI_HCD_PCI=y +# CONFIG_USB_OHCI_HCD_PLATFORM is not set +CONFIG_USB_U132_HCD=m +# CONFIG_USB_R8A66597_HCD is not set +CONFIG_USB_WHCI_HCD=m +CONFIG_USB_HWA_HCD=m +# CONFIG_USB_HCD_BCMA is not set +# CONFIG_USB_HCD_SSB is not set +# CONFIG_USB_HCD_TEST_MODE is not set + +## +## file: drivers/usb/image/Kconfig +## +CONFIG_USB_MDC800=m +CONFIG_USB_MICROTEK=m + +## +## file: drivers/usb/isp1760/Kconfig +## +# CONFIG_USB_ISP1760 is not set + +## +## file: drivers/usb/misc/Kconfig +## +CONFIG_USB_EMI62=m +CONFIG_USB_EMI26=m +CONFIG_USB_ADUTUX=m +CONFIG_USB_SEVSEG=m +CONFIG_USB_RIO500=m +CONFIG_USB_LEGOTOWER=m +CONFIG_USB_LCD=m +CONFIG_USB_CYPRESS_CY7C63=m +CONFIG_USB_CYTHERM=m +CONFIG_USB_IDMOUSE=m +CONFIG_USB_FTDI_ELAN=m +CONFIG_USB_APPLEDISPLAY=m +CONFIG_USB_LD=m +CONFIG_USB_TRANCEVIBRATOR=m +CONFIG_USB_IOWARRIOR=m +CONFIG_USB_TEST=m +CONFIG_USB_EHSET_TEST_FIXTURE=m +CONFIG_USB_ISIGHTFW=m +CONFIG_USB_YUREX=m +# CONFIG_USB_HSIC_USB3503 is not set +# CONFIG_USB_HSIC_USB4604 is not set +# CONFIG_USB_LINK_LAYER_TEST is not set +CONFIG_USB_CHAOSKEY=m + +## +## file: drivers/usb/misc/sisusbvga/Kconfig +## +CONFIG_USB_SISUSBVGA=m +CONFIG_USB_SISUSBVGA_CON=y + +## +## file: drivers/usb/mon/Kconfig +## +CONFIG_USB_MON=y + +## +## file: drivers/usb/musb/Kconfig +## +# CONFIG_USB_MUSB_HDRC is not set + +## +## file: drivers/usb/phy/Kconfig +## +# CONFIG_AB8500_USB is not set +# CONFIG_FSL_USB2_OTG is not set +# CONFIG_ISP1301_OMAP is not set +# CONFIG_NOP_USB_XCEIV is not set +# CONFIG_AM335X_PHY_USB is not set +# CONFIG_TWL6030_USB is not set +# CONFIG_USB_GPIO_VBUS is not set +# CONFIG_USB_ISP1301 is not set +# CONFIG_USB_MV_OTG is not set +# CONFIG_USB_MXS_PHY is not set +# CONFIG_USB_ULPI is not set + +## +## file: drivers/usb/renesas_usbhs/Kconfig +## +# CONFIG_USB_RENESAS_USBHS is not set + +## +## file: drivers/usb/serial/Kconfig +## +CONFIG_USB_SERIAL=m +CONFIG_USB_SERIAL_GENERIC=y +CONFIG_USB_SERIAL_SIMPLE=m +CONFIG_USB_SERIAL_AIRCABLE=m +CONFIG_USB_SERIAL_ARK3116=m +CONFIG_USB_SERIAL_BELKIN=m +CONFIG_USB_SERIAL_CH341=m +CONFIG_USB_SERIAL_WHITEHEAT=m +CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m +CONFIG_USB_SERIAL_CP210X=m +CONFIG_USB_SERIAL_CYPRESS_M8=m +CONFIG_USB_SERIAL_EMPEG=m +CONFIG_USB_SERIAL_FTDI_SIO=m +CONFIG_USB_SERIAL_VISOR=m +CONFIG_USB_SERIAL_IPAQ=m +CONFIG_USB_SERIAL_IR=m +CONFIG_USB_SERIAL_EDGEPORT=m +CONFIG_USB_SERIAL_EDGEPORT_TI=m +CONFIG_USB_SERIAL_F81232=m +CONFIG_USB_SERIAL_GARMIN=m +CONFIG_USB_SERIAL_IPW=m +CONFIG_USB_SERIAL_IUU=m +CONFIG_USB_SERIAL_KEYSPAN_PDA=m +CONFIG_USB_SERIAL_KEYSPAN=m +CONFIG_USB_SERIAL_KLSI=m +CONFIG_USB_SERIAL_KOBIL_SCT=m +CONFIG_USB_SERIAL_MCT_U232=m +CONFIG_USB_SERIAL_METRO=m +CONFIG_USB_SERIAL_MOS7720=m +CONFIG_USB_SERIAL_MOS7715_PARPORT=y +CONFIG_USB_SERIAL_MOS7840=m +CONFIG_USB_SERIAL_MXUPORT=m +CONFIG_USB_SERIAL_NAVMAN=m +CONFIG_USB_SERIAL_PL2303=m +CONFIG_USB_SERIAL_OTI6858=m +CONFIG_USB_SERIAL_QCAUX=m +CONFIG_USB_SERIAL_QUALCOMM=m +CONFIG_USB_SERIAL_SPCP8X5=m +CONFIG_USB_SERIAL_SAFE=m +# CONFIG_USB_SERIAL_SAFE_PADDED is not set +CONFIG_USB_SERIAL_SIERRAWIRELESS=m +CONFIG_USB_SERIAL_SYMBOL=m +CONFIG_USB_SERIAL_TI=m +CONFIG_USB_SERIAL_CYBERJACK=m +CONFIG_USB_SERIAL_XIRCOM=m +CONFIG_USB_SERIAL_OPTION=m +CONFIG_USB_SERIAL_OMNINET=m +CONFIG_USB_SERIAL_OPTICON=m +CONFIG_USB_SERIAL_XSENS_MT=m +CONFIG_USB_SERIAL_WISHBONE=m +CONFIG_USB_SERIAL_SSU100=m +CONFIG_USB_SERIAL_QT2=m +CONFIG_USB_SERIAL_DEBUG=m + +## +## file: drivers/usb/storage/Kconfig +## +CONFIG_USB_STORAGE=m +# CONFIG_USB_STORAGE_DEBUG is not set +CONFIG_USB_STORAGE_REALTEK=m +CONFIG_REALTEK_AUTOPM=y +CONFIG_USB_STORAGE_DATAFAB=m +CONFIG_USB_STORAGE_FREECOM=m +CONFIG_USB_STORAGE_ISD200=m +CONFIG_USB_STORAGE_USBAT=m +CONFIG_USB_STORAGE_SDDR09=m +CONFIG_USB_STORAGE_SDDR55=m +CONFIG_USB_STORAGE_JUMPSHOT=m +CONFIG_USB_STORAGE_ALAUDA=m +CONFIG_USB_STORAGE_ONETOUCH=m +CONFIG_USB_STORAGE_KARMA=m +CONFIG_USB_STORAGE_CYPRESS_ATACB=m +CONFIG_USB_STORAGE_ENE_UB6250=m +CONFIG_USB_UAS=m + +## +## file: drivers/usb/typec/ucsi/Kconfig +## +CONFIG_TYPEC_UCSI=m +CONFIG_UCSI_ACPI=m + +## +## file: drivers/usb/usbip/Kconfig +## +CONFIG_USBIP_CORE=m +CONFIG_USBIP_VHCI_HCD=m +CONFIG_USBIP_VHCI_HC_PORTS=15 +CONFIG_USBIP_VHCI_NR_HCS=8 +CONFIG_USBIP_HOST=m +CONFIG_USBIP_VUDC=m +# CONFIG_USBIP_DEBUG is not set + +## +## file: drivers/usb/wusbcore/Kconfig +## +CONFIG_USB_WUSB=m +CONFIG_USB_WUSB_CBAF=m +# CONFIG_USB_WUSB_CBAF_DEBUG is not set + +## +## file: drivers/uwb/Kconfig +## +CONFIG_UWB=m +CONFIG_UWB_I1480U=m + +## +## file: drivers/vfio/Kconfig +## +# CONFIG_VFIO_NOIOMMU is not set + +## +## file: drivers/vhost/Kconfig +## +CONFIG_VHOST_NET=m +CONFIG_VHOST_SCSI=m +CONFIG_VHOST_VSOCK=m +# CONFIG_VHOST_CROSS_ENDIAN_LEGACY is not set + +## +## file: drivers/video/backlight/Kconfig +## +CONFIG_BACKLIGHT_LCD_SUPPORT=y +# CONFIG_LCD_CLASS_DEVICE is not set +CONFIG_BACKLIGHT_CLASS_DEVICE=y +# CONFIG_BACKLIGHT_GENERIC is not set +CONFIG_BACKLIGHT_APPLE=m +# CONFIG_BACKLIGHT_PM8941_WLED is not set +# CONFIG_BACKLIGHT_SAHARA is not set +CONFIG_BACKLIGHT_WM831X=m +# CONFIG_BACKLIGHT_ADP8860 is not set +# CONFIG_BACKLIGHT_ADP8870 is not set +# CONFIG_BACKLIGHT_LM3639 is not set +# CONFIG_BACKLIGHT_OT200 is not set +# CONFIG_BACKLIGHT_GPIO is not set +# CONFIG_BACKLIGHT_LV5207LP is not set +# CONFIG_BACKLIGHT_BD6107 is not set + +## +## file: drivers/video/console/Kconfig +## +# CONFIG_VGACON_SOFT_SCROLLBACK is not set +CONFIG_DUMMY_CONSOLE_COLUMNS=80 +CONFIG_DUMMY_CONSOLE_ROWS=25 +CONFIG_FRAMEBUFFER_CONSOLE=y +# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set +CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y + +## +## file: drivers/video/fbdev/Kconfig +## +CONFIG_FB=y +CONFIG_FIRMWARE_EDID=y +# CONFIG_FB_FOREIGN_ENDIAN is not set +CONFIG_FB_ARC=m +# CONFIG_FB_UVESA is not set +# CONFIG_FB_OPENCORES is not set +# CONFIG_FB_S1D13XXX is not set +# CONFIG_FB_I740 is not set +# CONFIG_FB_INTEL_DEBUG is not set +# CONFIG_FB_INTEL_I2C is not set +CONFIG_FB_S3=m +CONFIG_FB_S3_DDC=y +CONFIG_FB_VIA=m +# CONFIG_FB_VIA_DIRECT_PROCFS is not set +CONFIG_FB_VIA_X_COMPATIBILITY=y +CONFIG_FB_3DFX=m +# CONFIG_FB_3DFX_ACCEL is not set +CONFIG_FB_3DFX_I2C=y +CONFIG_FB_VT8623=m +CONFIG_FB_ARK=m +CONFIG_FB_PM3=m +# CONFIG_FB_CARMINE is not set +# CONFIG_FB_TMIO is not set +CONFIG_FB_SM501=m +CONFIG_FB_SMSCUFX=m +CONFIG_FB_UDL=m +# CONFIG_FB_IBM_GXT4500 is not set +# CONFIG_FB_GOLDFISH is not set +CONFIG_XEN_FBDEV_FRONTEND=y +# CONFIG_FB_METRONOME is not set +CONFIG_FB_MB862XX=m +## choice: GDC variant +CONFIG_FB_MB862XX_PCI_GDC=y +## end choice +CONFIG_FB_MB862XX_I2C=y +# CONFIG_FB_BROADSHEET is not set +# CONFIG_FB_AUO_K190X is not set +# CONFIG_FB_SSD1307 is not set +# CONFIG_FB_SM712 is not set + +## +## file: drivers/video/logo/Kconfig +## +# CONFIG_LOGO is not set + +## +## file: drivers/virt/Kconfig +## +CONFIG_VIRT_DRIVERS=y + +## +## file: drivers/virtio/Kconfig +## +CONFIG_VIRTIO_PCI=m +CONFIG_VIRTIO_PCI_LEGACY=y +CONFIG_VIRTIO_BALLOON=m +CONFIG_VIRTIO_INPUT=m +CONFIG_VIRTIO_MMIO=m +# CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES is not set + +## +## file: drivers/vme/Kconfig +## +# CONFIG_VME_BUS is not set + +## +## file: drivers/w1/Kconfig +## +CONFIG_W1=m +CONFIG_W1_CON=y + +## +## file: drivers/w1/masters/Kconfig +## +# CONFIG_W1_MASTER_MATROX is not set +CONFIG_W1_MASTER_DS2490=m +CONFIG_W1_MASTER_DS2482=m +# CONFIG_W1_MASTER_DS1WM is not set +CONFIG_W1_MASTER_GPIO=m + +## +## file: drivers/w1/slaves/Kconfig +## +CONFIG_W1_SLAVE_THERM=m +CONFIG_W1_SLAVE_SMEM=m +# CONFIG_W1_SLAVE_DS2408 is not set +# CONFIG_W1_SLAVE_DS2413 is not set +# CONFIG_W1_SLAVE_DS2406 is not set +# CONFIG_W1_SLAVE_DS2423 is not set +CONFIG_W1_SLAVE_DS2431=m +CONFIG_W1_SLAVE_DS2433=m +# CONFIG_W1_SLAVE_DS2433_CRC is not set +# CONFIG_W1_SLAVE_DS2760 is not set +# CONFIG_W1_SLAVE_DS2780 is not set +# CONFIG_W1_SLAVE_DS2781 is not set +# CONFIG_W1_SLAVE_DS28E04 is not set + +## +## file: drivers/watchdog/Kconfig +## +CONFIG_WATCHDOG=y +# CONFIG_WATCHDOG_NOWAYOUT is not set +CONFIG_WATCHDOG_SYSFS=y +CONFIG_SOFT_WATCHDOG=m +# CONFIG_GPIO_WATCHDOG is not set +CONFIG_WM831X_WATCHDOG=m +CONFIG_WM8350_WATCHDOG=m +# CONFIG_XILINX_WATCHDOG is not set +# CONFIG_ZIIRAVE_WATCHDOG is not set +# CONFIG_CADENCE_WATCHDOG is not set +# CONFIG_DW_WATCHDOG is not set +# CONFIG_MAX63XX_WATCHDOG is not set +CONFIG_SBC_FITPC2_WATCHDOG=m +CONFIG_ITCO_WDT=m +CONFIG_ITCO_VENDOR_SUPPORT=y +CONFIG_IT87_WDT=m +CONFIG_PC87413_WDT=m +CONFIG_SMSC_SCH311X_WDT=m +CONFIG_SMSC37B787_WDT=m +CONFIG_SBC_EPX_C3_WATCHDOG=m +# CONFIG_BCM7038_WDT is not set +# CONFIG_MEN_A21_WDT is not set +CONFIG_XEN_WDT=m + +## +## file: drivers/xen/Kconfig +## +CONFIG_XEN_BALLOON=y +CONFIG_XEN_BALLOON_MEMORY_HOTPLUG=y +CONFIG_XEN_SCRUB_PAGES=y +CONFIG_XEN_DEV_EVTCHN=m +CONFIG_XEN_BACKEND=y +CONFIG_XENFS=m +CONFIG_XEN_COMPAT_XENFS=y +CONFIG_XEN_SYS_HYPERVISOR=y +CONFIG_XEN_GNTDEV=m +CONFIG_XEN_GRANT_DEV_ALLOC=m +CONFIG_XEN_PCIDEV_BACKEND=m +CONFIG_XEN_SCSI_BACKEND=m +CONFIG_XEN_MCE_LOG=y + +## +## file: fs/Kconfig +## +CONFIG_FS_DAX=y +CONFIG_FILE_LOCKING=y +CONFIG_MANDATORY_FILE_LOCKING=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_HUGETLBFS=y +CONFIG_MISC_FILESYSTEMS=y +CONFIG_NETWORK_FILESYSTEMS=y + +## +## file: fs/9p/Kconfig +## +CONFIG_9P_FS=m +CONFIG_9P_FSCACHE=y +CONFIG_9P_FS_POSIX_ACL=y +CONFIG_9P_FS_SECURITY=y + +## +## file: fs/adfs/Kconfig +## +CONFIG_ADFS_FS=m +# CONFIG_ADFS_FS_RW is not set + +## +## file: fs/affs/Kconfig +## +CONFIG_AFFS_FS=m + +## +## file: fs/afs/Kconfig +## +CONFIG_AFS_FS=m +# CONFIG_AFS_DEBUG is not set +CONFIG_AFS_FSCACHE=y + +## +## file: fs/autofs4/Kconfig +## +CONFIG_AUTOFS4_FS=m + +## +## file: fs/befs/Kconfig +## +CONFIG_BEFS_FS=m +# CONFIG_BEFS_DEBUG is not set + +## +## file: fs/bfs/Kconfig +## +CONFIG_BFS_FS=m + +## +## file: fs/Kconfig.binfmt +## +CONFIG_BINFMT_ELF=y +CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y +CONFIG_BINFMT_SCRIPT=y +CONFIG_BINFMT_MISC=m +CONFIG_COREDUMP=y + +## +## file: fs/btrfs/Kconfig +## +CONFIG_BTRFS_FS=m +CONFIG_BTRFS_FS_POSIX_ACL=y +# CONFIG_BTRFS_FS_CHECK_INTEGRITY is not set +# CONFIG_BTRFS_FS_RUN_SANITY_TESTS is not set +# CONFIG_BTRFS_DEBUG is not set +# CONFIG_BTRFS_ASSERT is not set + +## +## file: fs/cachefiles/Kconfig +## +CONFIG_CACHEFILES=m +# CONFIG_CACHEFILES_DEBUG is not set +# CONFIG_CACHEFILES_HISTOGRAM is not set + +## +## file: fs/ceph/Kconfig +## +CONFIG_CEPH_FS=m +CONFIG_CEPH_FSCACHE=y +CONFIG_CEPH_FS_POSIX_ACL=y + +## +## file: fs/cifs/Kconfig +## +CONFIG_CIFS=m +# CONFIG_CIFS_STATS is not set +CONFIG_CIFS_WEAK_PW_HASH=y +CONFIG_CIFS_UPCALL=y +CONFIG_CIFS_XATTR=y +CONFIG_CIFS_POSIX=y +CONFIG_CIFS_ACL=y +CONFIG_CIFS_DEBUG=y +# CONFIG_CIFS_DEBUG2 is not set +CONFIG_CIFS_DFS_UPCALL=y +CONFIG_CIFS_NFSD_EXPORT=y +CONFIG_CIFS_FSCACHE=y + +## +## file: fs/coda/Kconfig +## +CONFIG_CODA_FS=m + +## +## file: fs/configfs/Kconfig +## +CONFIG_CONFIGFS_FS=m + +## +## file: fs/cramfs/Kconfig +## +# CONFIG_CRAMFS is not set + +## +## file: fs/crypto/Kconfig +## +CONFIG_FS_ENCRYPTION=m + +## +## file: fs/dlm/Kconfig +## +CONFIG_DLM=m +CONFIG_DLM_DEBUG=y + +## +## file: fs/ecryptfs/Kconfig +## +CONFIG_ECRYPT_FS=m +CONFIG_ECRYPT_FS_MESSAGING=y + +## +## file: fs/efivarfs/Kconfig +## +CONFIG_EFIVAR_FS=m + +## +## file: fs/efs/Kconfig +## +CONFIG_EFS_FS=m + +## +## file: fs/exofs/Kconfig +## +CONFIG_EXOFS_FS=m +# CONFIG_EXOFS_DEBUG is not set + +## +## file: fs/ext2/Kconfig +## +# CONFIG_EXT2_FS is not set + +## +## file: fs/ext4/Kconfig +## +# CONFIG_EXT3_FS is not set +CONFIG_EXT4_FS=m +CONFIG_EXT4_USE_FOR_EXT2=y +CONFIG_EXT4_FS_POSIX_ACL=y +CONFIG_EXT4_FS_SECURITY=y +CONFIG_EXT4_ENCRYPTION=y +# CONFIG_EXT4_DEBUG is not set + +## +## file: fs/f2fs/Kconfig +## +CONFIG_F2FS_FS=m +CONFIG_F2FS_STAT_FS=y +CONFIG_F2FS_FS_XATTR=y +CONFIG_F2FS_FS_POSIX_ACL=y +CONFIG_F2FS_FS_SECURITY=y +CONFIG_F2FS_FS_ENCRYPTION=y +# CONFIG_F2FS_IO_TRACE is not set +# CONFIG_F2FS_FAULT_INJECTION is not set + +## +## file: fs/fat/Kconfig +## +CONFIG_MSDOS_FS=m +CONFIG_VFAT_FS=m +CONFIG_FAT_DEFAULT_CODEPAGE=437 +#. Mitigate the lack of UTF-8 case-folding which makes FAT name lookup +#. inconsistent (#833238). This combination enables case-folding the +#. ASCII subset while still encoding/decoding as UTF-8. +CONFIG_FAT_DEFAULT_IOCHARSET="ascii" +CONFIG_FAT_DEFAULT_UTF8=y + +## +## file: fs/freevxfs/Kconfig +## +CONFIG_VXFS_FS=m + +## +## file: fs/fscache/Kconfig +## +CONFIG_FSCACHE=m +CONFIG_FSCACHE_STATS=y +# CONFIG_FSCACHE_HISTOGRAM is not set +# CONFIG_FSCACHE_DEBUG is not set +# CONFIG_FSCACHE_OBJECT_LIST is not set + +## +## file: fs/fuse/Kconfig +## +CONFIG_FUSE_FS=m +CONFIG_CUSE=m + +## +## file: fs/gfs2/Kconfig +## +CONFIG_GFS2_FS=m +CONFIG_GFS2_FS_LOCKING_DLM=y + +## +## file: fs/hfs/Kconfig +## +CONFIG_HFS_FS=m + +## +## file: fs/hfsplus/Kconfig +## +CONFIG_HFSPLUS_FS=m +# CONFIG_HFSPLUS_FS_POSIX_ACL is not set + +## +## file: fs/hpfs/Kconfig +## +CONFIG_HPFS_FS=m + +## +## file: fs/isofs/Kconfig +## +CONFIG_ISO9660_FS=m +CONFIG_JOLIET=y +CONFIG_ZISOFS=y + +## +## file: fs/jbd2/Kconfig +## +# CONFIG_JBD2_DEBUG is not set + +## +## file: fs/jffs2/Kconfig +## +CONFIG_JFFS2_FS=m +CONFIG_JFFS2_FS_DEBUG=0 +CONFIG_JFFS2_FS_WRITEBUFFER=y +# CONFIG_JFFS2_FS_WBUF_VERIFY is not set +CONFIG_JFFS2_SUMMARY=y +CONFIG_JFFS2_FS_XATTR=y +CONFIG_JFFS2_FS_POSIX_ACL=y +CONFIG_JFFS2_FS_SECURITY=y +CONFIG_JFFS2_COMPRESSION_OPTIONS=y +CONFIG_JFFS2_ZLIB=y +CONFIG_JFFS2_LZO=y +CONFIG_JFFS2_RTIME=y +# CONFIG_JFFS2_RUBIN is not set +## choice: JFFS2 default compression mode +# CONFIG_JFFS2_CMODE_NONE is not set +CONFIG_JFFS2_CMODE_PRIORITY=y +# CONFIG_JFFS2_CMODE_SIZE is not set +# CONFIG_JFFS2_CMODE_FAVOURLZO is not set +## end choice + +## +## file: fs/jfs/Kconfig +## +CONFIG_JFS_FS=m +CONFIG_JFS_POSIX_ACL=y +CONFIG_JFS_SECURITY=y +# CONFIG_JFS_DEBUG is not set +# CONFIG_JFS_STATISTICS is not set + +## +## file: fs/minix/Kconfig +## +CONFIG_MINIX_FS=m + +## +## file: fs/ncpfs/Kconfig +## +CONFIG_NCP_FS=m +CONFIG_NCPFS_PACKET_SIGNING=y +CONFIG_NCPFS_IOCTL_LOCKING=y +CONFIG_NCPFS_STRONG=y +CONFIG_NCPFS_NFS_NS=y +CONFIG_NCPFS_OS2_NS=y +# CONFIG_NCPFS_SMALLDOS is not set +CONFIG_NCPFS_NLS=y +CONFIG_NCPFS_EXTRAS=y + +## +## file: fs/nfs/Kconfig +## +CONFIG_NFS_FS=m +CONFIG_NFS_V2=y +CONFIG_NFS_V3=y +CONFIG_NFS_V3_ACL=y +CONFIG_NFS_V4=y +CONFIG_NFS_SWAP=y +CONFIG_NFS_V4_1=y +CONFIG_NFS_V4_2=y +CONFIG_NFS_V4_1_IMPLEMENTATION_ID_DOMAIN="kernel.org" +# CONFIG_NFS_V4_1_MIGRATION is not set +CONFIG_NFS_FSCACHE=y +# CONFIG_NFS_USE_LEGACY_DNS is not set + +## +## file: fs/nfsd/Kconfig +## +CONFIG_NFSD=m +CONFIG_NFSD_V3=y +CONFIG_NFSD_V3_ACL=y +CONFIG_NFSD_V4=y +CONFIG_NFSD_BLOCKLAYOUT=y +CONFIG_NFSD_V4_SECURITY_LABEL=y +# CONFIG_NFSD_FAULT_INJECTION is not set + +## +## file: fs/nilfs2/Kconfig +## +CONFIG_NILFS2_FS=m + +## +## file: fs/nls/Kconfig +## +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="utf8" +CONFIG_NLS_CODEPAGE_437=m +CONFIG_NLS_CODEPAGE_737=m +CONFIG_NLS_CODEPAGE_775=m +CONFIG_NLS_CODEPAGE_850=m +CONFIG_NLS_CODEPAGE_852=m +CONFIG_NLS_CODEPAGE_855=m +CONFIG_NLS_CODEPAGE_857=m +CONFIG_NLS_CODEPAGE_860=m +CONFIG_NLS_CODEPAGE_861=m +CONFIG_NLS_CODEPAGE_862=m +CONFIG_NLS_CODEPAGE_863=m +CONFIG_NLS_CODEPAGE_864=m +CONFIG_NLS_CODEPAGE_865=m +CONFIG_NLS_CODEPAGE_866=m +CONFIG_NLS_CODEPAGE_869=m +CONFIG_NLS_CODEPAGE_936=m +CONFIG_NLS_CODEPAGE_950=m +CONFIG_NLS_CODEPAGE_932=m +CONFIG_NLS_CODEPAGE_949=m +CONFIG_NLS_CODEPAGE_874=m +CONFIG_NLS_ISO8859_8=m +CONFIG_NLS_CODEPAGE_1250=m +CONFIG_NLS_CODEPAGE_1251=m +CONFIG_NLS_ASCII=m +CONFIG_NLS_ISO8859_1=m +CONFIG_NLS_ISO8859_2=m +CONFIG_NLS_ISO8859_3=m +CONFIG_NLS_ISO8859_4=m +CONFIG_NLS_ISO8859_5=m +CONFIG_NLS_ISO8859_6=m +CONFIG_NLS_ISO8859_7=m +CONFIG_NLS_ISO8859_9=m +CONFIG_NLS_ISO8859_13=m +CONFIG_NLS_ISO8859_14=m +CONFIG_NLS_ISO8859_15=m +CONFIG_NLS_KOI8_R=m +CONFIG_NLS_KOI8_U=m +CONFIG_NLS_MAC_ROMAN=m +CONFIG_NLS_MAC_CELTIC=m +CONFIG_NLS_MAC_CENTEURO=m +CONFIG_NLS_MAC_CROATIAN=m +CONFIG_NLS_MAC_CYRILLIC=m +CONFIG_NLS_MAC_GAELIC=m +CONFIG_NLS_MAC_GREEK=m +CONFIG_NLS_MAC_ICELAND=m +CONFIG_NLS_MAC_INUIT=m +CONFIG_NLS_MAC_ROMANIAN=m +CONFIG_NLS_MAC_TURKISH=m +CONFIG_NLS_UTF8=m + +## +## file: fs/notify/dnotify/Kconfig +## +CONFIG_DNOTIFY=y + +## +## file: fs/notify/fanotify/Kconfig +## +CONFIG_FANOTIFY=y +CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y + +## +## file: fs/notify/inotify/Kconfig +## +CONFIG_INOTIFY_USER=y + +## +## file: fs/ntfs/Kconfig +## +CONFIG_NTFS_FS=m +# CONFIG_NTFS_DEBUG is not set +# CONFIG_NTFS_RW is not set + +## +## file: fs/ocfs2/Kconfig +## +CONFIG_OCFS2_FS=m +CONFIG_OCFS2_FS_O2CB=m +CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m +CONFIG_OCFS2_FS_STATS=y +CONFIG_OCFS2_DEBUG_MASKLOG=y +# CONFIG_OCFS2_DEBUG_FS is not set + +## +## file: fs/omfs/Kconfig +## +CONFIG_OMFS_FS=m + +## +## file: fs/orangefs/Kconfig +## +# CONFIG_ORANGEFS_FS is not set + +## +## file: fs/overlayfs/Kconfig +## +CONFIG_OVERLAY_FS=m + +## +## file: fs/proc/Kconfig +## +CONFIG_PROC_FS=y +CONFIG_PROC_KCORE=y +CONFIG_PROC_SYSCTL=y +CONFIG_PROC_PAGE_MONITOR=y + +## +## file: fs/pstore/Kconfig +## +# CONFIG_PSTORE_CONSOLE is not set +# CONFIG_PSTORE_PMSG is not set +# CONFIG_PSTORE_FTRACE is not set +CONFIG_PSTORE_RAM=m + +## +## file: fs/qnx4/Kconfig +## +CONFIG_QNX4FS_FS=m + +## +## file: fs/qnx6/Kconfig +## +CONFIG_QNX6FS_FS=m +# CONFIG_QNX6FS_DEBUG is not set + +## +## file: fs/quota/Kconfig +## +CONFIG_QUOTA=y +CONFIG_QUOTA_NETLINK_INTERFACE=y +CONFIG_PRINT_QUOTA_WARNING=y +# CONFIG_QUOTA_DEBUG is not set +CONFIG_QFMT_V1=m +CONFIG_QFMT_V2=m + +## +## file: fs/reiserfs/Kconfig +## +CONFIG_REISERFS_FS=m +# CONFIG_REISERFS_CHECK is not set +# CONFIG_REISERFS_PROC_INFO is not set +CONFIG_REISERFS_FS_XATTR=y +CONFIG_REISERFS_FS_POSIX_ACL=y +CONFIG_REISERFS_FS_SECURITY=y + +## +## file: fs/romfs/Kconfig +## +CONFIG_ROMFS_FS=m +## choice: RomFS backing stores +# CONFIG_ROMFS_BACKED_BY_BLOCK is not set +# CONFIG_ROMFS_BACKED_BY_MTD is not set +CONFIG_ROMFS_BACKED_BY_BOTH=y +## end choice + +## +## file: fs/squashfs/Kconfig +## +CONFIG_SQUASHFS=m +CONFIG_SQUASHFS_XATTR=y +CONFIG_SQUASHFS_ZLIB=y +CONFIG_SQUASHFS_LZ4=y +CONFIG_SQUASHFS_LZO=y +CONFIG_SQUASHFS_XZ=y +# CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set +# CONFIG_SQUASHFS_EMBEDDED is not set + +## +## file: fs/sysfs/Kconfig +## +CONFIG_SYSFS=y + +## +## file: fs/sysv/Kconfig +## +CONFIG_SYSV_FS=m + +## +## file: fs/ubifs/Kconfig +## +CONFIG_UBIFS_FS=m +CONFIG_UBIFS_FS_ADVANCED_COMPR=y +CONFIG_UBIFS_FS_LZO=y +CONFIG_UBIFS_FS_ZLIB=y + +## +## file: fs/udf/Kconfig +## +CONFIG_UDF_FS=m + +## +## file: fs/ufs/Kconfig +## +CONFIG_UFS_FS=m +# CONFIG_UFS_FS_WRITE is not set +# CONFIG_UFS_DEBUG is not set + +## +## file: fs/xfs/Kconfig +## +CONFIG_XFS_FS=m +CONFIG_XFS_QUOTA=y +CONFIG_XFS_POSIX_ACL=y +CONFIG_XFS_RT=y +# CONFIG_XFS_WARN is not set +# CONFIG_XFS_DEBUG is not set + +## +## file: init/Kconfig +## +CONFIG_CROSS_COMPILE="" +# CONFIG_COMPILE_TEST is not set +CONFIG_LOCALVERSION="" +# CONFIG_LOCALVERSION_AUTO is not set +## choice: Kernel compression mode +CONFIG_KERNEL_XZ=y +## end choice +CONFIG_DEFAULT_HOSTNAME="(none)" +CONFIG_SWAP=y +CONFIG_SYSVIPC=y +CONFIG_POSIX_MQUEUE=y +CONFIG_CROSS_MEMORY_ATTACH=y +# CONFIG_USELIB is not set +CONFIG_AUDIT=y +CONFIG_BSD_PROCESS_ACCT=y +CONFIG_BSD_PROCESS_ACCT_V3=y +CONFIG_TASKSTATS=y +CONFIG_TASK_DELAY_ACCT=y +CONFIG_TASK_XACCT=y +CONFIG_TASK_IO_ACCOUNTING=y +# CONFIG_IKCONFIG is not set +CONFIG_LOG_BUF_SHIFT=17 +CONFIG_LOG_CPU_MAX_BUF_SHIFT=12 +CONFIG_NUMA_BALANCING=y +CONFIG_NUMA_BALANCING_DEFAULT_ENABLED=y +CONFIG_CGROUPS=y +CONFIG_MEMCG=y +CONFIG_MEMCG_SWAP=y +# CONFIG_MEMCG_SWAP_ENABLED is not set +CONFIG_BLK_CGROUP=y +# CONFIG_DEBUG_BLK_CGROUP is not set +CONFIG_CGROUP_SCHED=y +CONFIG_FAIR_GROUP_SCHED=y +CONFIG_CFS_BANDWIDTH=y +# CONFIG_RT_GROUP_SCHED is not set +CONFIG_CGROUP_PIDS=y +CONFIG_CGROUP_FREEZER=y +# CONFIG_CGROUP_HUGETLB is not set +CONFIG_CPUSETS=y +CONFIG_PROC_PID_CPUSET=y +CONFIG_CGROUP_DEVICE=y +CONFIG_CGROUP_CPUACCT=y +CONFIG_CGROUP_PERF=y +CONFIG_CGROUP_BPF=y +# CONFIG_CGROUP_DEBUG is not set +CONFIG_NAMESPACES=y +CONFIG_UTS_NS=y +CONFIG_IPC_NS=y +CONFIG_USER_NS=y +CONFIG_PID_NS=y +CONFIG_NET_NS=y +CONFIG_SCHED_AUTOGROUP=y +# CONFIG_SYSFS_DEPRECATED is not set +# CONFIG_SYSFS_DEPRECATED_V2 is not set +CONFIG_RELAY=y +CONFIG_BLK_DEV_INITRD=y +## choice: Compiler optimization level +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set +## end choice +#. Unfortunately some useful options are conditional on EXPERT +CONFIG_EXPERT=y +CONFIG_UID16=y +CONFIG_MULTIUSER=y +# CONFIG_SYSFS_SYSCALL is not set +# CONFIG_SYSCTL_SYSCALL is not set +CONFIG_FHANDLE=y +CONFIG_PRINTK=y +CONFIG_BUG=y +CONFIG_ELF_CORE=y +CONFIG_PCSPKR_PLATFORM=y +CONFIG_BASE_FULL=y +CONFIG_FUTEX=y +CONFIG_EPOLL=y +CONFIG_SIGNALFD=y +CONFIG_TIMERFD=y +CONFIG_EVENTFD=y +CONFIG_SHMEM=y +CONFIG_AIO=y +CONFIG_ADVISE_SYSCALLS=y +CONFIG_MEMBARRIER=y +CONFIG_CHECKPOINT_RESTORE=y +CONFIG_KALLSYMS=y +# CONFIG_KALLSYMS_ALL is not set +CONFIG_BPF_SYSCALL=y +CONFIG_USERFAULTFD=y +# CONFIG_EMBEDDED is not set +CONFIG_PERF_EVENTS=y +# CONFIG_DEBUG_PERF_USE_VMALLOC is not set +CONFIG_VM_EVENT_COUNTERS=y +CONFIG_SLUB_DEBUG=y +# CONFIG_SLUB_MEMCG_SYSFS_ON is not set +# CONFIG_COMPAT_BRK is not set +## choice: Choose SLAB allocator +CONFIG_SLUB=y +## end choice +CONFIG_SLAB_MERGE_DEFAULT=y +CONFIG_SLAB_FREELIST_RANDOM=y +CONFIG_SLAB_FREELIST_HARDENED=y +CONFIG_SLUB_CPU_PARTIAL=y +# CONFIG_MMAP_ALLOW_UNINITIALIZED is not set +CONFIG_PROFILING=y +CONFIG_MODULES=y +CONFIG_MODULE_FORCE_LOAD=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MODULE_FORCE_UNLOAD=y +CONFIG_MODVERSIONS=y +# CONFIG_MODULE_SRCVERSION_ALL is not set +#. This is overridden if the [build]signed-modules setting is enabled +# CONFIG_MODULE_SIG is not set +#. Signature validation is a run-time option +# CONFIG_MODULE_SIG_FORCE is not set +#. Signatures are added in linux-signed +# CONFIG_MODULE_SIG_ALL is not set +## choice: Which hash algorithm should modules be signed with? +CONFIG_MODULE_SIG_SHA256=y +## end choice +# CONFIG_MODULE_COMPRESS is not set +# CONFIG_TRIM_UNUSED_KSYMS is not set + +## +## file: kernel/gcov/Kconfig +## +# CONFIG_GCOV_KERNEL is not set + +## +## file: kernel/Kconfig.hz +## +## choice: Timer frequency +# CONFIG_HZ_100 is not set +CONFIG_HZ_250=y +# CONFIG_HZ_300 is not set +# CONFIG_HZ_1000 is not set +## end choice + +## +## file: kernel/irq/Kconfig +## +# CONFIG_IRQ_DOMAIN_DEBUG is not set + +## +## file: kernel/power/Kconfig +## +CONFIG_SUSPEND=y +# CONFIG_SUSPEND_SKIP_SYNC is not set +CONFIG_HIBERNATION=y +CONFIG_PM_STD_PARTITION="" +# CONFIG_PM_AUTOSLEEP is not set +# CONFIG_PM_WAKELOCKS is not set +CONFIG_PM=y +CONFIG_PM_DEBUG=y +CONFIG_PM_ADVANCED_DEBUG=y +#. Could be enabled if it becomes configurable at run-time +# CONFIG_DPM_WATCHDOG is not set +# CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set + +## +## file: kernel/Kconfig.preempt +## +## choice: Preemption Model +# CONFIG_PREEMPT_NONE is not set +CONFIG_PREEMPT_VOLUNTARY=y +# CONFIG_PREEMPT is not set +## end choice + +## +## file: kernel/rcu/Kconfig +## +# CONFIG_RCU_EXPERT is not set +CONFIG_RCU_FANOUT=32 +CONFIG_RCU_FAST_NO_HZ=y + +## +## file: kernel/rcu/Kconfig.debug +## +# CONFIG_RCU_PERF_TEST is not set +# CONFIG_RCU_TORTURE_TEST is not set +CONFIG_RCU_CPU_STALL_TIMEOUT=21 +# CONFIG_RCU_TRACE is not set +# CONFIG_RCU_EQS_DEBUG is not set + +## +## file: kernel/time/Kconfig +## +## choice: Timer tick handling +CONFIG_NO_HZ_IDLE=y +## end choice +#. Backward compatibility symbol +# CONFIG_NO_HZ is not set +CONFIG_HIGH_RES_TIMERS=y + +## +## file: kernel/trace/Kconfig +## +CONFIG_FTRACE=y +CONFIG_FUNCTION_TRACER=y +CONFIG_FUNCTION_GRAPH_TRACER=y +# CONFIG_IRQSOFF_TRACER is not set +# CONFIG_PREEMPT_TRACER is not set +# CONFIG_SCHED_TRACER is not set +CONFIG_FTRACE_SYSCALLS=y +CONFIG_TRACER_SNAPSHOT=y +# CONFIG_TRACER_SNAPSHOT_PER_CPU_SWAP is not set +## choice: Branch Profiling +CONFIG_BRANCH_PROFILE_NONE=y +# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set +# CONFIG_PROFILE_ALL_BRANCHES is not set +## end choice +CONFIG_STACK_TRACER=y +CONFIG_BLK_DEV_IO_TRACE=y +CONFIG_KPROBE_EVENTS=y +CONFIG_UPROBE_EVENTS=y +CONFIG_DYNAMIC_FTRACE=y +# CONFIG_FUNCTION_PROFILER is not set +# CONFIG_FTRACE_STARTUP_TEST is not set +# CONFIG_MMIOTRACE_TEST is not set +# CONFIG_TRACEPOINT_BENCHMARK is not set +# CONFIG_RING_BUFFER_BENCHMARK is not set +# CONFIG_RING_BUFFER_STARTUP_TEST is not set +# CONFIG_TRACE_EVAL_MAP_FILE is not set +CONFIG_TRACING_EVENTS_GPIO=y + +## +## file: lib/Kconfig +## +CONFIG_CRC_CCITT=m +CONFIG_CRC16=m +CONFIG_CRC_T10DIF=m +CONFIG_CRC_ITU_T=m +CONFIG_CRC32=y +# CONFIG_CRC32_SELFTEST is not set +CONFIG_CRC7=m +CONFIG_LIBCRC32C=m +# CONFIG_CRC8 is not set +# CONFIG_RANDOM32_SELFTEST is not set +# CONFIG_GLOB_SELFTEST is not set +CONFIG_CORDIC=m +# CONFIG_DDR is not set + +## +## file: lib/Kconfig.debug +## +CONFIG_PRINTK_TIME=y +CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4 +CONFIG_BOOT_PRINTK_DELAY=y +CONFIG_DYNAMIC_DEBUG=y +# CONFIG_DEBUG_INFO is not set +# CONFIG_DEBUG_INFO_REDUCED is not set +# CONFIG_DEBUG_INFO_SPLIT is not set +# CONFIG_GDB_SCRIPTS is not set +CONFIG_ENABLE_WARN_DEPRECATED=y +CONFIG_ENABLE_MUST_CHECK=y +CONFIG_STRIP_ASM_SYMS=y +# CONFIG_READABLE_ASM is not set +# CONFIG_UNUSED_SYMBOLS is not set +# CONFIG_PAGE_OWNER is not set +CONFIG_DEBUG_FS=y +# CONFIG_HEADERS_CHECK is not set +# CONFIG_DEBUG_SECTION_MISMATCH is not set +CONFIG_SECTION_MISMATCH_WARN_ONLY=y +# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set +CONFIG_MAGIC_SYSRQ=y +CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x01b6 +CONFIG_DEBUG_KERNEL=y +# CONFIG_DEBUG_OBJECTS is not set +# CONFIG_SLUB_DEBUG_ON is not set +# CONFIG_SLUB_STATS is not set +# CONFIG_DEBUG_KMEMLEAK is not set +# CONFIG_DEBUG_VM is not set +# CONFIG_DEBUG_VIRTUAL is not set +CONFIG_DEBUG_MEMORY_INIT=y +#. For use by selftests +CONFIG_MEMORY_NOTIFIER_ERROR_INJECT=m +# CONFIG_DEBUG_HIGHMEM is not set +# CONFIG_KCOV is not set +CONFIG_SOFTLOCKUP_DETECTOR=y +CONFIG_HARDLOCKUP_DETECTOR=y +# CONFIG_BOOTPARAM_HARDLOCKUP_PANIC is not set +# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set +CONFIG_DETECT_HUNG_TASK=y +CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120 +# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set +# CONFIG_PANIC_ON_OOPS is not set +CONFIG_PANIC_TIMEOUT=0 +CONFIG_SCHED_DEBUG=y +CONFIG_SCHEDSTATS=y +CONFIG_SCHED_STACK_END_CHECK=y +# CONFIG_DEBUG_TIMEKEEPING is not set +CONFIG_DEBUG_PREEMPT=y +# CONFIG_DEBUG_RT_MUTEXES is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_MUTEXES is not set +# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set +# CONFIG_DEBUG_LOCK_ALLOC is not set +# CONFIG_PROVE_LOCKING is not set +# CONFIG_LOCK_STAT is not set +# CONFIG_DEBUG_ATOMIC_SLEEP is not set +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set +# CONFIG_LOCK_TORTURE_TEST is not set +# CONFIG_DEBUG_KOBJECT is not set +CONFIG_DEBUG_BUGVERBOSE=y +CONFIG_DEBUG_LIST=y +# CONFIG_DEBUG_PI_LIST is not set +# CONFIG_DEBUG_SG is not set +# CONFIG_DEBUG_NOTIFIERS is not set +# CONFIG_DEBUG_CREDENTIALS is not set +# CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set +# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set +# CONFIG_CPU_HOTPLUG_STATE_CONTROL is not set +#. For use by selftests +CONFIG_NOTIFIER_ERROR_INJECTION=m +CONFIG_PM_NOTIFIER_ERROR_INJECT=m +# CONFIG_NETDEV_NOTIFIER_ERROR_INJECT is not set +# CONFIG_FAULT_INJECTION is not set +# CONFIG_LATENCYTOP is not set +# CONFIG_DMA_API_DEBUG is not set +# CONFIG_LKDTM is not set +# CONFIG_TEST_LIST_SORT is not set +# CONFIG_KPROBES_SANITY_TEST is not set +# CONFIG_BACKTRACE_SELF_TEST is not set +# CONFIG_RBTREE_TEST is not set +# CONFIG_INTERVAL_TREE_TEST is not set +# CONFIG_PERCPU_TEST is not set +# CONFIG_ATOMIC64_SELFTEST is not set +#. Self-test +# CONFIG_ASYNC_RAID6_TEST is not set +# CONFIG_TEST_HEXDUMP is not set +# CONFIG_TEST_STRING_HELPERS is not set +# CONFIG_TEST_KSTRTOX is not set +# CONFIG_TEST_PRINTF is not set +# CONFIG_TEST_BITMAP is not set +# CONFIG_TEST_UUID is not set +# CONFIG_TEST_RHASHTABLE is not set +# CONFIG_TEST_HASH is not set +# CONFIG_TEST_LKM is not set +#. For use by selftests +CONFIG_TEST_USER_COPY=m +CONFIG_TEST_BPF=m +CONFIG_TEST_FIRMWARE=m +# CONFIG_TEST_UDELAY is not set +CONFIG_TEST_STATIC_KEYS=m +CONFIG_BUG_ON_DATA_CORRUPTION=y +CONFIG_STRICT_DEVMEM=y +CONFIG_IO_STRICT_DEVMEM=y + +## +## file: lib/fonts/Kconfig +## +# CONFIG_FONTS is not set + +## +## file: lib/Kconfig.kasan +## +# CONFIG_KASAN is not set + +## +## file: lib/Kconfig.kgdb +## +# CONFIG_KGDB is not set + +## +## file: lib/Kconfig.ubsan +## +# CONFIG_UBSAN is not set + +## +## file: lib/xz/Kconfig +## +#. These are enabled again by arch config, matching the defaults +# CONFIG_XZ_DEC_X86 is not set +# CONFIG_XZ_DEC_POWERPC is not set +# CONFIG_XZ_DEC_IA64 is not set +# CONFIG_XZ_DEC_ARM is not set +# CONFIG_XZ_DEC_ARMTHUMB is not set +# CONFIG_XZ_DEC_SPARC is not set +# CONFIG_XZ_DEC_TEST is not set + +## +## file: mm/Kconfig +## +CONFIG_MEMORY_HOTPLUG=y +# CONFIG_MEMORY_HOTPLUG_DEFAULT_ONLINE is not set +CONFIG_MEMORY_HOTREMOVE=y +CONFIG_BALLOON_COMPACTION=y +CONFIG_COMPACTION=y +CONFIG_MIGRATION=y +CONFIG_BOUNCE=y +CONFIG_KSM=y +CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 +CONFIG_MEMORY_FAILURE=y +CONFIG_HWPOISON_INJECT=m +CONFIG_TRANSPARENT_HUGEPAGE=y +## choice: Transparent Hugepage Support sysfs defaults +CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y +# CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set +## end choice +# CONFIG_CLEANCACHE is not set +CONFIG_FRONTSWAP=y +# CONFIG_CMA is not set +CONFIG_MEM_SOFT_DIRTY=y +CONFIG_ZSWAP=y +CONFIG_ZBUD=y +CONFIG_ZSMALLOC=m +# CONFIG_PGTABLE_MAPPING is not set +# CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set + +## +## file: mm/Kconfig.debug +## +CONFIG_PAGE_EXTENSION=y +CONFIG_PAGE_POISONING=y +CONFIG_PAGE_POISONING_NO_SANITY=y +# CONFIG_PAGE_POISONING_ZERO is not set +# CONFIG_DEBUG_PAGE_REF is not set + +## +## file: net/Kconfig +## +CONFIG_NET=y +CONFIG_INET=y +CONFIG_NETWORK_SECMARK=y +# CONFIG_NETWORK_PHY_TIMESTAMPING is not set +CONFIG_NETFILTER=y +CONFIG_NETFILTER_ADVANCED=y +CONFIG_BRIDGE_NETFILTER=y +CONFIG_CGROUP_NET_PRIO=y +CONFIG_BPF_JIT=y +CONFIG_NET_PKTGEN=m +# CONFIG_NET_TCPPROBE is not set +CONFIG_NET_DROP_MONITOR=m +CONFIG_WIRELESS=y +CONFIG_LWTUNNEL=y +CONFIG_NET_DEVLINK=m + +## +## file: net/6lowpan/Kconfig +## +CONFIG_6LOWPAN=m +# CONFIG_6LOWPAN_DEBUGFS is not set +CONFIG_6LOWPAN_NHC=m +CONFIG_6LOWPAN_NHC_DEST=m +CONFIG_6LOWPAN_NHC_FRAGMENT=m +CONFIG_6LOWPAN_NHC_HOP=m +CONFIG_6LOWPAN_NHC_IPV6=m +CONFIG_6LOWPAN_NHC_MOBILITY=m +CONFIG_6LOWPAN_NHC_ROUTING=m +CONFIG_6LOWPAN_NHC_UDP=m +CONFIG_6LOWPAN_GHC_EXT_HDR_HOP=m +CONFIG_6LOWPAN_GHC_UDP=m +CONFIG_6LOWPAN_GHC_ICMPV6=m +CONFIG_6LOWPAN_GHC_EXT_HDR_DEST=m +CONFIG_6LOWPAN_GHC_EXT_HDR_FRAG=m +CONFIG_6LOWPAN_GHC_EXT_HDR_ROUTE=m + +## +## file: net/8021q/Kconfig +## +CONFIG_VLAN_8021Q=m +CONFIG_VLAN_8021Q_GVRP=y +CONFIG_VLAN_8021Q_MVRP=y + +## +## file: net/9p/Kconfig +## +CONFIG_NET_9P=m +CONFIG_NET_9P_VIRTIO=m +CONFIG_NET_9P_RDMA=m +# CONFIG_NET_9P_DEBUG is not set + +## +## file: net/atm/Kconfig +## +CONFIG_ATM=m +CONFIG_ATM_CLIP=m +# CONFIG_ATM_CLIP_NO_ICMP is not set +CONFIG_ATM_LANE=m +CONFIG_ATM_MPOA=m +CONFIG_ATM_BR2684=m +# CONFIG_ATM_BR2684_IPFILTER is not set + +## +## file: net/batman-adv/Kconfig +## +CONFIG_BATMAN_ADV=m +# CONFIG_BATMAN_ADV_BATMAN_V is not set +CONFIG_BATMAN_ADV_BLA=y +CONFIG_BATMAN_ADV_DAT=y +CONFIG_BATMAN_ADV_NC=y +CONFIG_BATMAN_ADV_MCAST=y +CONFIG_BATMAN_ADV_DEBUGFS=y +# CONFIG_BATMAN_ADV_DEBUG is not set + +## +## file: net/bluetooth/Kconfig +## +CONFIG_BT=m +CONFIG_BT_BREDR=y +CONFIG_BT_HS=y +CONFIG_BT_LE=y +CONFIG_BT_6LOWPAN=m +# CONFIG_BT_LEDS is not set +# CONFIG_BT_SELFTEST is not set +CONFIG_BT_DEBUGFS=y + +## +## file: net/bluetooth/bnep/Kconfig +## +CONFIG_BT_BNEP=m +CONFIG_BT_BNEP_MC_FILTER=y +CONFIG_BT_BNEP_PROTO_FILTER=y + +## +## file: net/bluetooth/cmtp/Kconfig +## +CONFIG_BT_CMTP=m + +## +## file: net/bluetooth/hidp/Kconfig +## +CONFIG_BT_HIDP=m + +## +## file: net/bluetooth/rfcomm/Kconfig +## +CONFIG_BT_RFCOMM=m +CONFIG_BT_RFCOMM_TTY=y + +## +## file: net/bridge/Kconfig +## +CONFIG_BRIDGE=m +CONFIG_BRIDGE_IGMP_SNOOPING=y +CONFIG_BRIDGE_VLAN_FILTERING=y + +## +## file: net/bridge/netfilter/Kconfig +## +CONFIG_NF_TABLES_BRIDGE=m +CONFIG_NFT_BRIDGE_META=m +CONFIG_NFT_BRIDGE_REJECT=m +CONFIG_NF_LOG_BRIDGE=m +CONFIG_BRIDGE_NF_EBTABLES=m +CONFIG_BRIDGE_EBT_BROUTE=m +CONFIG_BRIDGE_EBT_T_FILTER=m +CONFIG_BRIDGE_EBT_T_NAT=m +CONFIG_BRIDGE_EBT_802_3=m +CONFIG_BRIDGE_EBT_AMONG=m +CONFIG_BRIDGE_EBT_ARP=m +CONFIG_BRIDGE_EBT_IP=m +CONFIG_BRIDGE_EBT_IP6=m +CONFIG_BRIDGE_EBT_LIMIT=m +CONFIG_BRIDGE_EBT_MARK=m +CONFIG_BRIDGE_EBT_PKTTYPE=m +CONFIG_BRIDGE_EBT_STP=m +CONFIG_BRIDGE_EBT_VLAN=m +CONFIG_BRIDGE_EBT_ARPREPLY=m +CONFIG_BRIDGE_EBT_DNAT=m +CONFIG_BRIDGE_EBT_MARK_T=m +CONFIG_BRIDGE_EBT_REDIRECT=m +CONFIG_BRIDGE_EBT_SNAT=m +CONFIG_BRIDGE_EBT_LOG=m +CONFIG_BRIDGE_EBT_NFLOG=m + +## +## file: net/caif/Kconfig +## +# CONFIG_CAIF is not set + +## +## file: net/can/Kconfig +## +CONFIG_CAN=m +CONFIG_CAN_RAW=m +CONFIG_CAN_BCM=m +CONFIG_CAN_GW=m + +## +## file: net/ceph/Kconfig +## +CONFIG_CEPH_LIB=m +# CONFIG_CEPH_LIB_PRETTYDEBUG is not set +# CONFIG_CEPH_LIB_USE_DNS_RESOLVER is not set + +## +## file: net/dcb/Kconfig +## +CONFIG_DCB=y + +## +## file: net/dccp/Kconfig +## +CONFIG_IP_DCCP=m +# CONFIG_IP_DCCP_DEBUG is not set +CONFIG_NET_DCCPPROBE=m + +## +## file: net/dccp/ccids/Kconfig +## +# CONFIG_IP_DCCP_CCID2_DEBUG is not set +CONFIG_IP_DCCP_CCID3=y +# CONFIG_IP_DCCP_CCID3_DEBUG is not set + +## +## file: net/decnet/Kconfig +## +# CONFIG_DECNET is not set + +## +## file: net/dns_resolver/Kconfig +## +CONFIG_DNS_RESOLVER=m + +## +## file: net/hsr/Kconfig +## +# CONFIG_HSR is not set + +## +## file: net/ieee802154/Kconfig +## +CONFIG_IEEE802154=m +# CONFIG_IEEE802154_NL802154_EXPERIMENTAL is not set +CONFIG_IEEE802154_SOCKET=m + +## +## file: net/ieee802154/6lowpan/Kconfig +## +CONFIG_IEEE802154_6LOWPAN=m + +## +## file: net/ipv4/Kconfig +## +CONFIG_IP_MULTICAST=y +CONFIG_IP_ADVANCED_ROUTER=y +CONFIG_IP_FIB_TRIE_STATS=y +CONFIG_IP_MULTIPLE_TABLES=y +CONFIG_IP_ROUTE_MULTIPATH=y +CONFIG_IP_ROUTE_VERBOSE=y +# CONFIG_IP_PNP is not set +CONFIG_NET_IPIP=m +CONFIG_NET_IPGRE_DEMUX=m +CONFIG_NET_IPGRE=m +CONFIG_NET_IPGRE_BROADCAST=y +CONFIG_IP_MROUTE=y +CONFIG_IP_MROUTE_MULTIPLE_TABLES=y +CONFIG_IP_PIMSM_V1=y +CONFIG_IP_PIMSM_V2=y +CONFIG_SYN_COOKIES=y +CONFIG_NET_IPVTI=m +CONFIG_NET_FOU=m +CONFIG_NET_FOU_IP_TUNNELS=y +CONFIG_INET_AH=m +CONFIG_INET_ESP=m +CONFIG_INET_ESP_OFFLOAD=m +CONFIG_INET_IPCOMP=m +CONFIG_INET_XFRM_MODE_TRANSPORT=m +CONFIG_INET_XFRM_MODE_TUNNEL=m +CONFIG_INET_XFRM_MODE_BEET=m +CONFIG_INET_DIAG=m +CONFIG_INET_UDP_DIAG=m +CONFIG_INET_DIAG_DESTROY=y +CONFIG_TCP_CONG_ADVANCED=y +CONFIG_TCP_CONG_BIC=m +CONFIG_TCP_CONG_CUBIC=y +CONFIG_TCP_CONG_WESTWOOD=m +CONFIG_TCP_CONG_HTCP=m +CONFIG_TCP_CONG_HSTCP=m +CONFIG_TCP_CONG_HYBLA=m +CONFIG_TCP_CONG_VEGAS=m +CONFIG_TCP_CONG_NV=m +CONFIG_TCP_CONG_SCALABLE=m +CONFIG_TCP_CONG_LP=m +CONFIG_TCP_CONG_VENO=m +CONFIG_TCP_CONG_YEAH=m +CONFIG_TCP_CONG_ILLINOIS=m +CONFIG_TCP_CONG_DCTCP=m +CONFIG_TCP_CONG_CDG=m +CONFIG_TCP_CONG_BBR=m +## choice: Default TCP congestion control +# CONFIG_DEFAULT_BIC is not set +CONFIG_DEFAULT_CUBIC=y +# CONFIG_DEFAULT_HTCP is not set +# CONFIG_DEFAULT_VEGAS is not set +# CONFIG_DEFAULT_WESTWOOD is not set +# CONFIG_DEFAULT_DCTCP is not set +# CONFIG_DEFAULT_RENO is not set +## end choice +CONFIG_TCP_MD5SIG=y + +## +## file: net/ipv4/netfilter/Kconfig +## +CONFIG_NF_CONNTRACK_IPV4=m +CONFIG_NF_SOCKET_IPV4=m +CONFIG_NF_TABLES_IPV4=m +CONFIG_NFT_CHAIN_ROUTE_IPV4=m +CONFIG_NFT_DUP_IPV4=m +CONFIG_NFT_FIB_IPV4=m +CONFIG_NF_TABLES_ARP=m +CONFIG_NF_LOG_ARP=m +CONFIG_NF_LOG_IPV4=m +CONFIG_NF_REJECT_IPV4=m +CONFIG_NFT_CHAIN_NAT_IPV4=m +CONFIG_NFT_MASQ_IPV4=m +CONFIG_NFT_REDIR_IPV4=m +CONFIG_NF_NAT_SNMP_BASIC=m +CONFIG_IP_NF_IPTABLES=m +CONFIG_IP_NF_MATCH_AH=m +CONFIG_IP_NF_MATCH_ECN=m +CONFIG_IP_NF_MATCH_RPFILTER=m +CONFIG_IP_NF_MATCH_TTL=m +CONFIG_IP_NF_FILTER=m +CONFIG_IP_NF_TARGET_REJECT=m +CONFIG_IP_NF_TARGET_SYNPROXY=m +CONFIG_IP_NF_NAT=m +CONFIG_IP_NF_TARGET_MASQUERADE=m +CONFIG_IP_NF_TARGET_NETMAP=m +CONFIG_IP_NF_TARGET_REDIRECT=m +CONFIG_IP_NF_MANGLE=m +CONFIG_IP_NF_TARGET_CLUSTERIP=m +CONFIG_IP_NF_TARGET_ECN=m +CONFIG_IP_NF_TARGET_TTL=m +CONFIG_IP_NF_RAW=m +CONFIG_IP_NF_SECURITY=m +CONFIG_IP_NF_ARPTABLES=m +CONFIG_IP_NF_ARPFILTER=m +CONFIG_IP_NF_ARP_MANGLE=m + +## +## file: net/ipv6/Kconfig +## +CONFIG_IPV6=y +CONFIG_IPV6_ROUTER_PREF=y +CONFIG_IPV6_ROUTE_INFO=y +CONFIG_IPV6_OPTIMISTIC_DAD=y +CONFIG_INET6_AH=m +CONFIG_INET6_ESP=m +CONFIG_INET6_ESP_OFFLOAD=m +CONFIG_INET6_IPCOMP=m +CONFIG_IPV6_MIP6=y +CONFIG_IPV6_ILA=m +CONFIG_INET6_XFRM_MODE_TRANSPORT=m +CONFIG_INET6_XFRM_MODE_TUNNEL=m +CONFIG_INET6_XFRM_MODE_BEET=m +CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m +CONFIG_IPV6_VTI=m +CONFIG_IPV6_SIT=m +CONFIG_IPV6_SIT_6RD=y +CONFIG_IPV6_TUNNEL=m +CONFIG_IPV6_GRE=m +CONFIG_IPV6_MULTIPLE_TABLES=y +CONFIG_IPV6_SUBTREES=y +CONFIG_IPV6_MROUTE=y +CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y +CONFIG_IPV6_PIMSM_V2=y +CONFIG_IPV6_SEG6_LWTUNNEL=y +CONFIG_IPV6_SEG6_HMAC=y + +## +## file: net/ipv6/netfilter/Kconfig +## +CONFIG_NF_CONNTRACK_IPV6=m +CONFIG_NF_SOCKET_IPV6=m +CONFIG_NF_TABLES_IPV6=m +CONFIG_NFT_CHAIN_ROUTE_IPV6=m +CONFIG_NFT_DUP_IPV6=m +CONFIG_NFT_FIB_IPV6=m +CONFIG_NF_REJECT_IPV6=m +CONFIG_NF_LOG_IPV6=m +CONFIG_NF_NAT_IPV6=m +CONFIG_NFT_CHAIN_NAT_IPV6=m +CONFIG_NFT_MASQ_IPV6=m +CONFIG_NFT_REDIR_IPV6=m +CONFIG_IP6_NF_IPTABLES=m +CONFIG_IP6_NF_MATCH_AH=m +CONFIG_IP6_NF_MATCH_EUI64=m +CONFIG_IP6_NF_MATCH_FRAG=m +CONFIG_IP6_NF_MATCH_OPTS=m +CONFIG_IP6_NF_MATCH_HL=m +CONFIG_IP6_NF_MATCH_IPV6HEADER=m +CONFIG_IP6_NF_MATCH_MH=m +CONFIG_IP6_NF_MATCH_RPFILTER=m +CONFIG_IP6_NF_MATCH_RT=m +CONFIG_IP6_NF_TARGET_HL=m +CONFIG_IP6_NF_FILTER=m +CONFIG_IP6_NF_TARGET_REJECT=m +CONFIG_IP6_NF_TARGET_SYNPROXY=m +CONFIG_IP6_NF_MANGLE=m +CONFIG_IP6_NF_RAW=m +CONFIG_IP6_NF_SECURITY=m +CONFIG_IP6_NF_NAT=m +CONFIG_IP6_NF_TARGET_MASQUERADE=m +CONFIG_IP6_NF_TARGET_NPT=m + +## +## file: net/kcm/Kconfig +## +# CONFIG_AF_KCM is not set + +## +## file: net/l2tp/Kconfig +## +CONFIG_L2TP=m +CONFIG_L2TP_DEBUGFS=m +CONFIG_L2TP_V3=y +CONFIG_L2TP_IP=m +CONFIG_L2TP_ETH=m + +## +## file: net/l3mdev/Kconfig +## +CONFIG_NET_L3_MASTER_DEV=y + +## +## file: net/llc/Kconfig +## +CONFIG_LLC2=m + +## +## file: net/mac80211/Kconfig +## +CONFIG_MAC80211=m +CONFIG_MAC80211_RC_MINSTREL=y +CONFIG_MAC80211_RC_MINSTREL_HT=y +# CONFIG_MAC80211_RC_MINSTREL_VHT is not set +## choice: Default rate control algorithm +CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y +## end choice +CONFIG_MAC80211_MESH=y +CONFIG_MAC80211_LEDS=y +# CONFIG_MAC80211_DEBUGFS is not set +# CONFIG_MAC80211_MESSAGE_TRACING is not set +# CONFIG_MAC80211_DEBUG_MENU is not set + +## +## file: net/mac802154/Kconfig +## +CONFIG_MAC802154=m + +## +## file: net/mpls/Kconfig +## +#. Can be built as a module, but nothing will trigger loading +CONFIG_NET_MPLS_GSO=y +CONFIG_MPLS_ROUTING=m +CONFIG_MPLS_IPTUNNEL=m + +## +## file: net/ncsi/Kconfig +## +# CONFIG_NET_NCSI is not set + +## +## file: net/netfilter/Kconfig +## +CONFIG_NETFILTER_INGRESS=y +CONFIG_NETFILTER_NETLINK_ACCT=m +CONFIG_NETFILTER_NETLINK_QUEUE=m +CONFIG_NETFILTER_NETLINK_LOG=m +CONFIG_NF_CONNTRACK=m +CONFIG_NF_LOG_NETDEV=m +CONFIG_NF_CONNTRACK_MARK=y +CONFIG_NF_CONNTRACK_SECMARK=y +CONFIG_NF_CONNTRACK_ZONES=y +CONFIG_NF_CONNTRACK_PROCFS=y +CONFIG_NF_CONNTRACK_EVENTS=y +CONFIG_NF_CONNTRACK_TIMEOUT=y +CONFIG_NF_CONNTRACK_TIMESTAMP=y +CONFIG_NF_CT_PROTO_DCCP=y +CONFIG_NF_CT_PROTO_SCTP=y +CONFIG_NF_CT_PROTO_UDPLITE=y +CONFIG_NF_CONNTRACK_AMANDA=m +CONFIG_NF_CONNTRACK_FTP=m +CONFIG_NF_CONNTRACK_H323=m +CONFIG_NF_CONNTRACK_IRC=m +CONFIG_NF_CONNTRACK_NETBIOS_NS=m +CONFIG_NF_CONNTRACK_SNMP=m +CONFIG_NF_CONNTRACK_PPTP=m +CONFIG_NF_CONNTRACK_SANE=m +CONFIG_NF_CONNTRACK_SIP=m +CONFIG_NF_CONNTRACK_TFTP=m +CONFIG_NF_CT_NETLINK=m +CONFIG_NF_CT_NETLINK_TIMEOUT=y +CONFIG_NF_CT_NETLINK_HELPER=m +CONFIG_NETFILTER_NETLINK_GLUE_CT=y +CONFIG_NF_TABLES=m +CONFIG_NF_TABLES_INET=m +CONFIG_NF_TABLES_NETDEV=m +CONFIG_NFT_EXTHDR=m +CONFIG_NFT_META=m +CONFIG_NFT_RT=m +CONFIG_NFT_NUMGEN=m +CONFIG_NFT_CT=m +CONFIG_NFT_SET_RBTREE=m +CONFIG_NFT_SET_HASH=m +CONFIG_NFT_SET_BITMAP=m +CONFIG_NFT_COUNTER=m +CONFIG_NFT_LOG=m +CONFIG_NFT_LIMIT=m +CONFIG_NFT_MASQ=m +CONFIG_NFT_REDIR=m +CONFIG_NFT_NAT=m +CONFIG_NFT_OBJREF=m +CONFIG_NFT_QUEUE=m +CONFIG_NFT_QUOTA=m +CONFIG_NFT_REJECT=m +CONFIG_NFT_COMPAT=m +CONFIG_NFT_HASH=m +CONFIG_NFT_FIB_INET=m +CONFIG_NF_DUP_NETDEV=m +CONFIG_NFT_DUP_NETDEV=m +CONFIG_NFT_FWD_NETDEV=m +CONFIG_NFT_FIB_NETDEV=m +CONFIG_NETFILTER_XTABLES=m +CONFIG_NETFILTER_XT_SET=m +CONFIG_NETFILTER_XT_TARGET_AUDIT=m +CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m +CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m +CONFIG_NETFILTER_XT_TARGET_CONNMARK=m +CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m +CONFIG_NETFILTER_XT_TARGET_CT=m +CONFIG_NETFILTER_XT_TARGET_DSCP=m +CONFIG_NETFILTER_XT_TARGET_HL=m +CONFIG_NETFILTER_XT_TARGET_HMARK=m +CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m +CONFIG_NETFILTER_XT_TARGET_LED=m +CONFIG_NETFILTER_XT_TARGET_LOG=m +CONFIG_NETFILTER_XT_TARGET_MARK=m +CONFIG_NETFILTER_XT_TARGET_NETMAP=m +CONFIG_NETFILTER_XT_TARGET_NFLOG=m +CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m +# CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set +CONFIG_NETFILTER_XT_TARGET_RATEEST=m +CONFIG_NETFILTER_XT_TARGET_REDIRECT=m +CONFIG_NETFILTER_XT_TARGET_TEE=m +CONFIG_NETFILTER_XT_TARGET_TPROXY=m +CONFIG_NETFILTER_XT_TARGET_TRACE=m +CONFIG_NETFILTER_XT_TARGET_SECMARK=m +CONFIG_NETFILTER_XT_TARGET_TCPMSS=m +CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m +CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m +CONFIG_NETFILTER_XT_MATCH_BPF=m +CONFIG_NETFILTER_XT_MATCH_CGROUP=m +CONFIG_NETFILTER_XT_MATCH_CLUSTER=m +CONFIG_NETFILTER_XT_MATCH_COMMENT=m +CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m +CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m +CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m +CONFIG_NETFILTER_XT_MATCH_CONNMARK=m +CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m +CONFIG_NETFILTER_XT_MATCH_CPU=m +CONFIG_NETFILTER_XT_MATCH_DCCP=m +CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m +CONFIG_NETFILTER_XT_MATCH_DSCP=m +CONFIG_NETFILTER_XT_MATCH_ECN=m +CONFIG_NETFILTER_XT_MATCH_ESP=m +CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m +CONFIG_NETFILTER_XT_MATCH_HELPER=m +CONFIG_NETFILTER_XT_MATCH_HL=m +CONFIG_NETFILTER_XT_MATCH_IPCOMP=m +CONFIG_NETFILTER_XT_MATCH_IPRANGE=m +CONFIG_NETFILTER_XT_MATCH_IPVS=m +CONFIG_NETFILTER_XT_MATCH_L2TP=m +CONFIG_NETFILTER_XT_MATCH_LENGTH=m +CONFIG_NETFILTER_XT_MATCH_LIMIT=m +CONFIG_NETFILTER_XT_MATCH_MAC=m +CONFIG_NETFILTER_XT_MATCH_MARK=m +CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m +CONFIG_NETFILTER_XT_MATCH_NFACCT=m +CONFIG_NETFILTER_XT_MATCH_OSF=m +CONFIG_NETFILTER_XT_MATCH_OWNER=m +CONFIG_NETFILTER_XT_MATCH_POLICY=m +CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m +CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m +CONFIG_NETFILTER_XT_MATCH_QUOTA=m +CONFIG_NETFILTER_XT_MATCH_RATEEST=m +CONFIG_NETFILTER_XT_MATCH_REALM=m +CONFIG_NETFILTER_XT_MATCH_RECENT=m +CONFIG_NETFILTER_XT_MATCH_SCTP=m +CONFIG_NETFILTER_XT_MATCH_SOCKET=m +CONFIG_NETFILTER_XT_MATCH_STATE=m +CONFIG_NETFILTER_XT_MATCH_STATISTIC=m +CONFIG_NETFILTER_XT_MATCH_STRING=m +CONFIG_NETFILTER_XT_MATCH_TCPMSS=m +CONFIG_NETFILTER_XT_MATCH_TIME=m +CONFIG_NETFILTER_XT_MATCH_U32=m + +## +## file: net/netfilter/ipset/Kconfig +## +CONFIG_IP_SET=m +CONFIG_IP_SET_MAX=256 +CONFIG_IP_SET_BITMAP_IP=m +CONFIG_IP_SET_BITMAP_IPMAC=m +CONFIG_IP_SET_BITMAP_PORT=m +CONFIG_IP_SET_HASH_IP=m +CONFIG_IP_SET_HASH_IPMARK=m +CONFIG_IP_SET_HASH_IPPORT=m +CONFIG_IP_SET_HASH_IPPORTIP=m +CONFIG_IP_SET_HASH_IPPORTNET=m +CONFIG_IP_SET_HASH_IPMAC=m +CONFIG_IP_SET_HASH_MAC=m +CONFIG_IP_SET_HASH_NETPORTNET=m +CONFIG_IP_SET_HASH_NET=m +CONFIG_IP_SET_HASH_NETNET=m +CONFIG_IP_SET_HASH_NETPORT=m +CONFIG_IP_SET_HASH_NETIFACE=m +CONFIG_IP_SET_LIST_SET=m + +## +## file: net/netfilter/ipvs/Kconfig +## +CONFIG_IP_VS=m +CONFIG_IP_VS_IPV6=y +# CONFIG_IP_VS_DEBUG is not set +CONFIG_IP_VS_TAB_BITS=12 +CONFIG_IP_VS_PROTO_TCP=y +CONFIG_IP_VS_PROTO_UDP=y +CONFIG_IP_VS_PROTO_ESP=y +CONFIG_IP_VS_PROTO_AH=y +CONFIG_IP_VS_PROTO_SCTP=y +CONFIG_IP_VS_RR=m +CONFIG_IP_VS_WRR=m +CONFIG_IP_VS_LC=m +CONFIG_IP_VS_WLC=m +CONFIG_IP_VS_FO=m +CONFIG_IP_VS_OVF=m +CONFIG_IP_VS_LBLC=m +CONFIG_IP_VS_LBLCR=m +CONFIG_IP_VS_DH=m +CONFIG_IP_VS_SH=m +CONFIG_IP_VS_SED=m +CONFIG_IP_VS_NQ=m +CONFIG_IP_VS_SH_TAB_BITS=8 +CONFIG_IP_VS_FTP=m +CONFIG_IP_VS_PE_SIP=m + +## +## file: net/netlabel/Kconfig +## +# CONFIG_NETLABEL is not set + +## +## file: net/netlink/Kconfig +## +CONFIG_NETLINK_DIAG=m + +## +## file: net/nfc/Kconfig +## +CONFIG_NFC=m +CONFIG_NFC_DIGITAL=m + +## +## file: net/nfc/hci/Kconfig +## +# CONFIG_NFC_HCI is not set +# CONFIG_NFC_SHDLC is not set + +## +## file: net/nfc/nci/Kconfig +## +# CONFIG_NFC_NCI is not set + +## +## file: net/openvswitch/Kconfig +## +CONFIG_OPENVSWITCH=m +CONFIG_OPENVSWITCH_GRE=y +CONFIG_OPENVSWITCH_VXLAN=y +CONFIG_OPENVSWITCH_GENEVE=y + +## +## file: net/packet/Kconfig +## +CONFIG_PACKET=y +CONFIG_PACKET_DIAG=m + +## +## file: net/phonet/Kconfig +## +CONFIG_PHONET=m + +## +## file: net/rds/Kconfig +## +CONFIG_RDS=m +CONFIG_RDS_RDMA=m +CONFIG_RDS_TCP=m +# CONFIG_RDS_DEBUG is not set + +## +## file: net/rfkill/Kconfig +## +CONFIG_RFKILL=m +CONFIG_RFKILL_INPUT=y +# CONFIG_RFKILL_GPIO is not set + +## +## file: net/rxrpc/Kconfig +## +CONFIG_AF_RXRPC=m +CONFIG_AF_RXRPC_IPV6=y +# CONFIG_AF_RXRPC_INJECT_LOSS is not set +# CONFIG_AF_RXRPC_DEBUG is not set +CONFIG_RXKAD=y + +## +## file: net/sched/Kconfig +## +CONFIG_NET_SCHED=y +CONFIG_NET_SCH_CBQ=m +CONFIG_NET_SCH_HTB=m +CONFIG_NET_SCH_HFSC=m +CONFIG_NET_SCH_ATM=m +CONFIG_NET_SCH_PRIO=m +CONFIG_NET_SCH_MULTIQ=m +CONFIG_NET_SCH_RED=m +CONFIG_NET_SCH_SFB=m +CONFIG_NET_SCH_SFQ=m +CONFIG_NET_SCH_TEQL=m +CONFIG_NET_SCH_TBF=m +CONFIG_NET_SCH_GRED=m +CONFIG_NET_SCH_DSMARK=m +CONFIG_NET_SCH_NETEM=m +CONFIG_NET_SCH_DRR=m +CONFIG_NET_SCH_MQPRIO=m +CONFIG_NET_SCH_CHOKE=m +CONFIG_NET_SCH_QFQ=m +CONFIG_NET_SCH_CODEL=m +CONFIG_NET_SCH_FQ_CODEL=m +CONFIG_NET_SCH_FQ=m +CONFIG_NET_SCH_HHF=m +CONFIG_NET_SCH_PIE=m +CONFIG_NET_SCH_INGRESS=m +CONFIG_NET_SCH_PLUG=m +CONFIG_NET_CLS_BASIC=m +CONFIG_NET_CLS_TCINDEX=m +CONFIG_NET_CLS_ROUTE4=m +CONFIG_NET_CLS_FW=m +CONFIG_NET_CLS_U32=m +CONFIG_CLS_U32_PERF=y +CONFIG_CLS_U32_MARK=y +CONFIG_NET_CLS_RSVP=m +CONFIG_NET_CLS_RSVP6=m +CONFIG_NET_CLS_FLOW=m +CONFIG_NET_CLS_CGROUP=m +CONFIG_NET_CLS_BPF=m +CONFIG_NET_CLS_FLOWER=m +CONFIG_NET_CLS_MATCHALL=m +CONFIG_NET_EMATCH=y +CONFIG_NET_EMATCH_STACK=32 +CONFIG_NET_EMATCH_CMP=m +CONFIG_NET_EMATCH_NBYTE=m +CONFIG_NET_EMATCH_U32=m +CONFIG_NET_EMATCH_META=m +CONFIG_NET_EMATCH_TEXT=m +CONFIG_NET_EMATCH_CANID=m +CONFIG_NET_EMATCH_IPSET=m +CONFIG_NET_CLS_ACT=y +CONFIG_NET_ACT_POLICE=m +CONFIG_NET_ACT_GACT=m +CONFIG_GACT_PROB=y +CONFIG_NET_ACT_MIRRED=m +CONFIG_NET_ACT_SAMPLE=m +CONFIG_NET_ACT_IPT=m +CONFIG_NET_ACT_NAT=m +CONFIG_NET_ACT_PEDIT=m +CONFIG_NET_ACT_SIMP=m +CONFIG_NET_ACT_SKBEDIT=m +CONFIG_NET_ACT_CSUM=m +CONFIG_NET_ACT_VLAN=m +CONFIG_NET_ACT_BPF=m +CONFIG_NET_ACT_CONNMARK=m +CONFIG_NET_ACT_SKBMOD=m +CONFIG_NET_ACT_IFE=m +CONFIG_NET_ACT_TUNNEL_KEY=m +CONFIG_NET_IFE_SKBMARK=m +CONFIG_NET_IFE_SKBPRIO=m +CONFIG_NET_IFE_SKBTCINDEX=m +CONFIG_NET_CLS_IND=y + +## +## file: net/sctp/Kconfig +## +CONFIG_IP_SCTP=m +CONFIG_NET_SCTPPROBE=m +# CONFIG_SCTP_DBG_OBJCNT is not set +## choice: Default SCTP cookie HMAC encoding +CONFIG_SCTP_DEFAULT_COOKIE_HMAC_MD5=y +# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_SHA1 is not set +# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_NONE is not set +## end choice +CONFIG_SCTP_COOKIE_HMAC_MD5=y +CONFIG_SCTP_COOKIE_HMAC_SHA1=y + +## +## file: net/sunrpc/Kconfig +## +CONFIG_RPCSEC_GSS_KRB5=m +CONFIG_SUNRPC_DEBUG=y +CONFIG_SUNRPC_XPRT_RDMA=m + +## +## file: net/switchdev/Kconfig +## +# CONFIG_NET_SWITCHDEV is not set + +## +## file: net/tipc/Kconfig +## +CONFIG_TIPC=m +CONFIG_TIPC_MEDIA_IB=y +CONFIG_TIPC_MEDIA_UDP=y + +## +## file: net/unix/Kconfig +## +CONFIG_UNIX=y +CONFIG_UNIX_DIAG=m + +## +## file: net/vmw_vsock/Kconfig +## +CONFIG_VSOCKETS=m +# CONFIG_VMWARE_VMCI_VSOCKETS is not set +CONFIG_VIRTIO_VSOCKETS=m + +## +## file: net/wimax/Kconfig +## +CONFIG_WIMAX=m +CONFIG_WIMAX_DEBUG_LEVEL=8 + +## +## file: net/wireless/Kconfig +## +CONFIG_CFG80211=m +# CONFIG_NL80211_TESTMODE is not set +# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set +# CONFIG_CFG80211_CERTIFICATION_ONUS is not set +CONFIG_CFG80211_DEFAULT_PS=y +# CONFIG_CFG80211_DEBUGFS is not set +CONFIG_CFG80211_WEXT=y +# CONFIG_LIB80211_DEBUG is not set + +## +## file: net/x25/Kconfig +## +# CONFIG_X25 is not set + +## +## file: net/xfrm/Kconfig +## +CONFIG_XFRM_USER=m +CONFIG_XFRM_SUB_POLICY=y +CONFIG_XFRM_MIGRATE=y +# CONFIG_XFRM_STATISTICS is not set +CONFIG_NET_KEY=m +CONFIG_NET_KEY_MIGRATE=y + +## +## file: samples/Kconfig +## +# CONFIG_SAMPLES is not set + +## +## file: security/Kconfig +## +CONFIG_SECURITY_DMESG_RESTRICT=y +CONFIG_SECURITY_PERF_EVENTS_RESTRICT=y +CONFIG_SECURITY=y +CONFIG_SECURITY_NETWORK=y +CONFIG_SECURITY_NETWORK_XFRM=y +# CONFIG_SECURITY_PATH is not set +# CONFIG_INTEL_TXT is not set +CONFIG_LSM_MMAP_MIN_ADDR=32768 +CONFIG_HARDENED_USERCOPY=y +# CONFIG_HARDENED_USERCOPY_PAGESPAN is not set +CONFIG_LOCK_DOWN_KERNEL=y +CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT=y +## choice: Default security module +CONFIG_DEFAULT_SECURITY_APPARMOR=y +## end choice + +## +## file: security/apparmor/Kconfig +## +CONFIG_SECURITY_APPARMOR=y +CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=1 +CONFIG_SECURITY_APPARMOR_HASH=y +CONFIG_SECURITY_APPARMOR_HASH_DEFAULT=y + +## +## file: security/integrity/Kconfig +## +CONFIG_INTEGRITY=y +CONFIG_INTEGRITY_SIGNATURE=y +CONFIG_INTEGRITY_ASYMMETRIC_KEYS=y +CONFIG_INTEGRITY_AUDIT=y + +## +## file: security/integrity/evm/Kconfig +## +# CONFIG_EVM is not set + +## +## file: security/integrity/ima/Kconfig +## +CONFIG_IMA=y +## choice: Default integrity hash algorithm +# CONFIG_IMA_DEFAULT_HASH_SHA1 is not set +CONFIG_IMA_DEFAULT_HASH_SHA256=y +# CONFIG_IMA_DEFAULT_HASH_SHA512 is not set +# CONFIG_IMA_DEFAULT_HASH_WP512 is not set +## end choice +# CONFIG_IMA_WRITE_POLICY is not set +# CONFIG_IMA_READ_POLICY is not set +CONFIG_IMA_APPRAISE=y + +## +## file: security/keys/Kconfig +## +CONFIG_KEYS=y +# CONFIG_PERSISTENT_KEYRINGS is not set +# CONFIG_BIG_KEYS is not set +# CONFIG_TRUSTED_KEYS is not set +# CONFIG_ENCRYPTED_KEYS is not set + +## +## file: security/loadpin/Kconfig +## +# CONFIG_SECURITY_LOADPIN is not set + +## +## file: security/selinux/Kconfig +## +CONFIG_SECURITY_SELINUX=y +# CONFIG_SECURITY_SELINUX_BOOTPARAM is not set +# CONFIG_SECURITY_SELINUX_DISABLE is not set +CONFIG_SECURITY_SELINUX_DEVELOP=y +CONFIG_SECURITY_SELINUX_AVC_STATS=y +CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=0 + +## +## file: security/smack/Kconfig +## +# CONFIG_SECURITY_SMACK is not set + +## +## file: security/tomoyo/Kconfig +## +CONFIG_SECURITY_TOMOYO=y +CONFIG_SECURITY_TOMOYO_MAX_ACCEPT_ENTRY=2048 +CONFIG_SECURITY_TOMOYO_MAX_AUDIT_LOG=1024 +# CONFIG_SECURITY_TOMOYO_OMIT_USERSPACE_LOADER is not set +#. This is so horrible... +CONFIG_SECURITY_TOMOYO_POLICY_LOADER="/sbin/tomoyo-init" +CONFIG_SECURITY_TOMOYO_ACTIVATION_TRIGGER="/sbin/init" + +## +## file: security/yama/Kconfig +## +CONFIG_SECURITY_YAMA=y + +## +## file: sound/Kconfig +## +CONFIG_SOUND=m +# CONFIG_SOUND_OSS_CORE_PRECLAIM is not set +CONFIG_SND=m + +## +## file: sound/core/Kconfig +## +CONFIG_SND_OSSEMUL=y +CONFIG_SND_MIXER_OSS=m +CONFIG_SND_PCM_OSS=m +CONFIG_SND_PCM_OSS_PLUGINS=y +CONFIG_SND_PCM_TIMER=y +CONFIG_SND_HRTIMER=m +CONFIG_SND_DYNAMIC_MINORS=y +CONFIG_SND_MAX_CARDS=32 +CONFIG_SND_SUPPORT_OLD_API=y +CONFIG_SND_PROC_FS=y +CONFIG_SND_VERBOSE_PROCFS=y +# CONFIG_SND_VERBOSE_PRINTK is not set +# CONFIG_SND_DEBUG is not set + +## +## file: sound/core/seq/Kconfig +## +CONFIG_SND_SEQUENCER=m +CONFIG_SND_SEQ_DUMMY=m +# CONFIG_SND_SEQUENCER_OSS is not set +CONFIG_SND_SEQ_HRTIMER_DEFAULT=y + +## +## file: sound/drivers/Kconfig +## +CONFIG_SND_DRIVERS=y +CONFIG_SND_PCSP=m +CONFIG_SND_ALOOP=m +CONFIG_SND_MTS64=m +CONFIG_SND_PORTMAN2X4=m +CONFIG_SND_AC97_POWER_SAVE=y +CONFIG_SND_AC97_POWER_SAVE_DEFAULT=0 + +## +## file: sound/firewire/Kconfig +## +CONFIG_SND_FIREWIRE=y +CONFIG_SND_DICE=m +CONFIG_SND_OXFW=m +CONFIG_SND_ISIGHT=m +CONFIG_SND_FIREWORKS=m +CONFIG_SND_BEBOB=m +CONFIG_SND_FIREWIRE_DIGI00X=m +CONFIG_SND_FIREWIRE_TASCAM=m + +## +## file: sound/hda/Kconfig +## +CONFIG_SND_HDA_PREALLOC_SIZE=2048 + +## +## file: sound/isa/Kconfig +## +# CONFIG_SND_CMI8328 is not set + +## +## file: sound/pci/Kconfig +## +CONFIG_SND_PCI=y +CONFIG_SND_AD1889=m +CONFIG_SND_ALS300=m +CONFIG_SND_ASIHPI=m +# CONFIG_SND_AW2 is not set +CONFIG_SND_OXYGEN=m +CONFIG_SND_CTXFI=m +CONFIG_SND_DARLA20=m +CONFIG_SND_GINA20=m +CONFIG_SND_LAYLA20=m +CONFIG_SND_DARLA24=m +CONFIG_SND_GINA24=m +CONFIG_SND_LAYLA24=m +CONFIG_SND_MONA=m +CONFIG_SND_MIA=m +CONFIG_SND_ECHO3G=m +CONFIG_SND_INDIGO=m +CONFIG_SND_INDIGOIO=m +CONFIG_SND_INDIGODJ=m +CONFIG_SND_INDIGOIOX=m +CONFIG_SND_INDIGODJX=m +CONFIG_SND_ES1968_INPUT=y +CONFIG_SND_ES1968_RADIO=y +CONFIG_SND_HDSPM=m +CONFIG_SND_LOLA=m +CONFIG_SND_LX6464ES=m +CONFIG_SND_MAESTRO3_INPUT=y +CONFIG_SND_PCXHR=m +CONFIG_SND_RIPTIDE=m +CONFIG_SND_VIRTUOSO=m + +## +## file: sound/pci/hda/Kconfig +## +CONFIG_SND_HDA_HWDEP=y +CONFIG_SND_HDA_RECONFIG=y +CONFIG_SND_HDA_INPUT_BEEP=y +CONFIG_SND_HDA_INPUT_BEEP_MODE=1 +CONFIG_SND_HDA_PATCH_LOADER=y +CONFIG_SND_HDA_CODEC_REALTEK=y +CONFIG_SND_HDA_CODEC_ANALOG=y +CONFIG_SND_HDA_CODEC_SIGMATEL=y +CONFIG_SND_HDA_CODEC_VIA=y +CONFIG_SND_HDA_CODEC_HDMI=y +CONFIG_SND_HDA_CODEC_CIRRUS=y +CONFIG_SND_HDA_CODEC_CONEXANT=y +CONFIG_SND_HDA_CODEC_CA0110=y +CONFIG_SND_HDA_CODEC_CA0132=y +CONFIG_SND_HDA_CODEC_CA0132_DSP=y +CONFIG_SND_HDA_CODEC_CMEDIA=y +CONFIG_SND_HDA_CODEC_SI3054=y +CONFIG_SND_HDA_GENERIC=y +CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0 + +## +## file: sound/pcmcia/Kconfig +## +CONFIG_SND_PCMCIA=y +CONFIG_SND_VXPOCKET=m +CONFIG_SND_PDAUDIOCF=m + +## +## file: sound/soc/Kconfig +## +# CONFIG_SND_SOC is not set + +## +## file: sound/soc/amd/Kconfig +## +# CONFIG_SND_SOC_AMD_ACP is not set + +## +## file: sound/soc/atmel/Kconfig +## +# CONFIG_SND_ATMEL_SOC is not set + +## +## file: sound/soc/codecs/Kconfig +## +# CONFIG_SND_SOC_AC97_CODEC is not set +# CONFIG_SND_SOC_ADAU1701 is not set +# CONFIG_SND_SOC_ADAU7002 is not set +# CONFIG_SND_SOC_AK4104 is not set +# CONFIG_SND_SOC_AK4554 is not set +# CONFIG_SND_SOC_AK4613 is not set +# CONFIG_SND_SOC_AK4642 is not set +# CONFIG_SND_SOC_AK5386 is not set +# CONFIG_SND_SOC_ALC5623 is not set +# CONFIG_SND_SOC_BT_SCO is not set +# CONFIG_SND_SOC_CS35L32 is not set +# CONFIG_SND_SOC_CS35L33 is not set +# CONFIG_SND_SOC_CS42L51_I2C is not set +# CONFIG_SND_SOC_CS42L52 is not set +# CONFIG_SND_SOC_CS42L56 is not set +# CONFIG_SND_SOC_CS42L73 is not set +# CONFIG_SND_SOC_CS4265 is not set +# CONFIG_SND_SOC_CS4270 is not set +# CONFIG_SND_SOC_CS4271_I2C is not set +# CONFIG_SND_SOC_CS4271_SPI is not set +# CONFIG_SND_SOC_CS42XX8_I2C is not set +# CONFIG_SND_SOC_CS4349 is not set +# CONFIG_SND_SOC_CS53L30 is not set +# CONFIG_SND_SOC_ES8328_I2C is not set +# CONFIG_SND_SOC_ES8328_SPI is not set +# CONFIG_SND_SOC_GTM601 is not set +# CONFIG_SND_SOC_INNO_RK3036 is not set +# CONFIG_SND_SOC_MAX98504 is not set +# CONFIG_SND_SOC_MAX9860 is not set +# CONFIG_SND_SOC_PCM1681 is not set +# CONFIG_SND_SOC_PCM179X_I2C is not set +# CONFIG_SND_SOC_PCM179X_SPI is not set +# CONFIG_SND_SOC_PCM3168A_I2C is not set +# CONFIG_SND_SOC_PCM3168A_SPI is not set +# CONFIG_SND_SOC_PCM512x_I2C is not set +# CONFIG_SND_SOC_PCM512x_SPI is not set +# CONFIG_SND_SOC_RT5616 is not set +# CONFIG_SND_SOC_RT5631 is not set +# CONFIG_SND_SOC_SGTL5000 is not set +# CONFIG_SND_SOC_SIRF_AUDIO_CODEC is not set +# CONFIG_SND_SOC_SPDIF is not set +# CONFIG_SND_SOC_SSM2602_SPI is not set +# CONFIG_SND_SOC_SSM2602_I2C is not set +# CONFIG_SND_SOC_SSM4567 is not set +# CONFIG_SND_SOC_STA32X is not set +# CONFIG_SND_SOC_STA350 is not set +# CONFIG_SND_SOC_STI_SAS is not set +# CONFIG_SND_SOC_TAS2552 is not set +# CONFIG_SND_SOC_TAS5086 is not set +# CONFIG_SND_SOC_TAS571X is not set +# CONFIG_SND_SOC_TAS5720 is not set +# CONFIG_SND_SOC_TFA9879 is not set +# CONFIG_SND_SOC_TLV320AIC23_I2C is not set +# CONFIG_SND_SOC_TLV320AIC23_SPI is not set +# CONFIG_SND_SOC_TLV320AIC31XX is not set +# CONFIG_SND_SOC_TLV320AIC3X is not set +# CONFIG_SND_SOC_TS3A227E is not set +# CONFIG_SND_SOC_WM8510 is not set +# CONFIG_SND_SOC_WM8523 is not set +# CONFIG_SND_SOC_WM8580 is not set +# CONFIG_SND_SOC_WM8711 is not set +# CONFIG_SND_SOC_WM8728 is not set +# CONFIG_SND_SOC_WM8731 is not set +# CONFIG_SND_SOC_WM8737 is not set +# CONFIG_SND_SOC_WM8741 is not set +# CONFIG_SND_SOC_WM8750 is not set +# CONFIG_SND_SOC_WM8753 is not set +# CONFIG_SND_SOC_WM8770 is not set +# CONFIG_SND_SOC_WM8776 is not set +# CONFIG_SND_SOC_WM8804_I2C is not set +# CONFIG_SND_SOC_WM8804_SPI is not set +# CONFIG_SND_SOC_WM8903 is not set +# CONFIG_SND_SOC_WM8960 is not set +# CONFIG_SND_SOC_WM8962 is not set +# CONFIG_SND_SOC_WM8974 is not set +# CONFIG_SND_SOC_WM8978 is not set +# CONFIG_SND_SOC_WM8985 is not set +# CONFIG_SND_SOC_NAU8810 is not set +# CONFIG_SND_SOC_TPA6130A2 is not set + +## +## file: sound/soc/dwc/Kconfig +## +# CONFIG_SND_DESIGNWARE_I2S is not set + +## +## file: sound/soc/fsl/Kconfig +## +# CONFIG_SND_SOC_FSL_ASRC is not set +# CONFIG_SND_SOC_FSL_SAI is not set +# CONFIG_SND_SOC_FSL_SSI is not set +# CONFIG_SND_SOC_FSL_SPDIF is not set +# CONFIG_SND_SOC_FSL_ESAI is not set +# CONFIG_SND_SOC_IMX_AUDMUX is not set + +## +## file: sound/soc/generic/Kconfig +## +# CONFIG_SND_SIMPLE_CARD is not set + +## +## file: sound/soc/img/Kconfig +## +# CONFIG_SND_SOC_IMG is not set + +## +## file: sound/soc/sunxi/Kconfig +## +# CONFIG_SND_SUN4I_CODEC is not set + +## +## file: sound/soc/xtensa/Kconfig +## +# CONFIG_SND_SOC_XTFPGA_I2S is not set + +## +## file: sound/spi/Kconfig +## +CONFIG_SND_SPI=y + +## +## file: sound/usb/Kconfig +## +CONFIG_SND_USB=y +CONFIG_SND_USB_AUDIO=m +CONFIG_SND_USB_UA101=m +CONFIG_SND_USB_USX2Y=m +CONFIG_SND_USB_CAIAQ=m +CONFIG_SND_USB_CAIAQ_INPUT=y +CONFIG_SND_USB_US122L=m +CONFIG_SND_USB_6FIRE=m +CONFIG_SND_USB_HIFACE=m +CONFIG_SND_BCD2000=m + +## +## file: sound/usb/line6/Kconfig +## +CONFIG_SND_USB_POD=m +CONFIG_SND_USB_PODHD=m +CONFIG_SND_USB_TONEPORT=m +CONFIG_SND_USB_VARIAX=m + +## +## file: usr/Kconfig +## +CONFIG_INITRAMFS_SOURCE="" +CONFIG_RD_GZIP=y +CONFIG_RD_BZIP2=y +CONFIG_RD_LZMA=y +CONFIG_RD_XZ=y +CONFIG_RD_LZO=y +CONFIG_RD_LZ4=y + diff --git a/config/defines b/config/defines new file mode 100644 index 00000000000..80bbf86dbe0 --- /dev/null +++ b/config/defines @@ -0,0 +1,131 @@ +[abi] +abiname: 2 +ignore-changes: + __cpuhp_* + __xive_vm_h_* + bpf_analyzer + cxl_* + dax_flush + ieee80211_nullfunc_get + inet_add_protocol + inet_del_protocol + iommu_device_* + kvm_async_pf_task_wait + kvmppc_* + mm_iommu_* + mv_mbus_* + perf_* + register_cxl_calls + register_key_type + unregister_cxl_calls + *_hw_breakpoint + module:arch/x86/kvm/* + module:drivers/crypto/ccp/* + module:drivers/hv/* + module:drivers/iio/common/hid-sensors/* + module:drivers/iio/common/st_sensors/** + module:drivers/mtd/nand/* + module:drivers/net/wireless/** + module:drivers/nvdimm/* + module:drivers/power/supply/bq27xxx_battery + module:drivers/scsi/cxgbi/* + module:drivers/scsi/libiscs* + module:drivers/scsi/qla2xxx/qla2xxx + module:drivers/scsi/ufs/* + module:drivers/target/** + module:drivers/usb/chipidea/** + module:drivers/usb/gadget/** + module:drivers/usb/host/** + module:drivers/usb/musb/** + module:fs/nfs/** + module:net/ceph/libceph + module:net/l2tp/** + module:net/rxrpc/rxrpc + module:sound/core/seq/** + module:sound/firewire/snd-firewire-lib +# btree library is only selected by few drivers so not useful OOT + btree_* + visitor* +# Exported for related protocols only + can_rx_register + ip6_xmit + module:net/dccp/dccp + module:net/rds/rds +# devfreq is unlikely to be useful for OOT modules + devfreq_* + devm_devfreq_* + update_devfreq +# Assume IB drivers are added/updated through OFED, which also updates IB core + module:drivers/infiniband/** +# Declared in private header, not usable OOT + acpi_ec_add_query_handler + acpi_ec_remove_query_handler + first_ec +# Exported for tracefs only + debugfs_create_automount +# ignore changes to inv_mpu6050/* + module:drivers/iio/imu/inv_mpu6050/* + +[base] +arches: + alpha + amd64 + arm64 + arm64ilp32 + armel + armhf + hppa + i386 + m68k + mips + mips64 + mips64el + mips64r6 + mips64r6el + mipsel + mipsn32 + mipsn32el + mipsn32r6 + mipsn32r6el + mipsr6 + mipsr6el + powerpc + powerpcspe + ppc64 + ppc64el + s390 + s390x + sh3 + sh4 + sparc + sparc64 + tilegx + x32 +compiler: gcc-7 +featuresets: + none + rt + +[build] +debug-info: true +# Disable module signing for now +signed-modules: false + +[featureset-rt_base] +enabled: false + +[description] +part-long-up: This kernel is not suitable for SMP (multi-processor, + multi-core or hyper-threaded) systems. + +[image] +initramfs-generators: initramfs-tools initramfs-fallback +recommends: apparmor + +[relations] +# compilers +gcc-7: gcc-7 , gcc-7-@gnu-type-package@ + +# initramfs-generators +initramfs-fallback: linux-initramfs-tool +initramfs-tools: initramfs-tools (>= 0.120+deb8u2) diff --git a/config/featureset-rt/config b/config/featureset-rt/config new file mode 100644 index 00000000000..fda3618178c --- /dev/null +++ b/config/featureset-rt/config @@ -0,0 +1,32 @@ +## +## file: certs/Kconfig +## +#. Certificate paths are resolved relative to debian/build/source_rt +CONFIG_SYSTEM_TRUSTED_KEYS="../../certs/benh@debian.org.cert.pem" + +## +## file: kernel/Kconfig.preempt +## +## choice: Preemption Model +# CONFIG_PREEMPT_VOLUNTARY is not set +CONFIG_PREEMPT_RT_FULL=y +## end choice + +## +## file: kernel/rcu/Kconfig +## +CONFIG_RCU_EXPERT=y + +## +## file: kernel/trace/Kconfig +## +CONFIG_SCHED_TRACER=y +CONFIG_HWLAT_TRACER=y + +## +## file: unknown +## +#. Dropped between 4.9 and 4.11, but might come back +CONFIG_MISSED_TIMER_OFFSETS_HIST=y +CONFIG_WAKEUP_LATENCY_HIST=y + diff --git a/config/featureset-rt/defines b/config/featureset-rt/defines new file mode 100644 index 00000000000..44e2f2b0304 --- /dev/null +++ b/config/featureset-rt/defines @@ -0,0 +1,7 @@ +[abi] +ignore-changes: * + +[description] +part-long-rt: This kernel includes the PREEMPT_RT realtime patch set. +part-short-rt: PREEMPT_RT +parts: rt diff --git a/config/hppa/config b/config/hppa/config new file mode 100644 index 00000000000..a6737b7e3d2 --- /dev/null +++ b/config/hppa/config @@ -0,0 +1,679 @@ +## +## file: arch/parisc/Kconfig +## +## choice: Processor type +# CONFIG_PA7100LC is not set +# CONFIG_PA7200 is not set +# CONFIG_PA7300LC is not set +## end choice +CONFIG_MLONGCALLS=y +## choice: Kernel page size +CONFIG_PARISC_PAGE_SIZE_4KB=y +# CONFIG_PARISC_PAGE_SIZE_16KB is not set +# CONFIG_PARISC_PAGE_SIZE_64KB is not set +## end choice + +## +## file: block/partitions/Kconfig +## +# CONFIG_PARTITION_ADVANCED is not set + +## +## file: drivers/ata/Kconfig +## +CONFIG_PATA_NS87415=m +CONFIG_PATA_LEGACY=m + +## +## file: drivers/block/Kconfig +## +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_DAC960 is not set +# CONFIG_BLK_DEV_UMEM is not set +# CONFIG_BLK_DEV_SX8 is not set +CONFIG_CDROM_PKTCDVD=m +CONFIG_CDROM_PKTCDVD_BUFFERS=8 +# CONFIG_CDROM_PKTCDVD_WCACHE is not set + +## +## file: drivers/char/Kconfig +## +CONFIG_PRINTER=m +# CONFIG_LP_CONSOLE is not set +CONFIG_PPDEV=m +# CONFIG_DTLK is not set +# CONFIG_APPLICOM is not set + +## +## file: drivers/char/ipmi/Kconfig +## +# CONFIG_IPMI_HANDLER is not set + +## +## file: drivers/eisa/Kconfig +## +CONFIG_EISA_NAMES=y + +## +## file: drivers/firewire/Kconfig +## +# CONFIG_FIREWIRE is not set + +## +## file: drivers/gpu/drm/Kconfig +## +# CONFIG_DRM is not set + +## +## file: drivers/hid/usbhid/Kconfig +## +CONFIG_USB_HID=m + +## +## file: drivers/hwmon/Kconfig +## +# CONFIG_SENSORS_F71805F is not set + +## +## file: drivers/i2c/Kconfig +## +# CONFIG_I2C is not set + +## +## file: drivers/input/Kconfig +## +# CONFIG_INPUT_JOYDEV is not set + +## +## file: drivers/input/gameport/Kconfig +## +# CONFIG_GAMEPORT is not set + +## +## file: drivers/input/joystick/Kconfig +## +# CONFIG_INPUT_JOYSTICK is not set + +## +## file: drivers/input/keyboard/Kconfig +## +CONFIG_INPUT_KEYBOARD=y +CONFIG_KEYBOARD_ATKBD=y +CONFIG_KEYBOARD_ATKBD_HP_KEYCODES=y +# CONFIG_KEYBOARD_ATKBD_RDI_KEYCODES is not set +# CONFIG_KEYBOARD_LKKBD is not set +CONFIG_KEYBOARD_HIL_OLD=m +CONFIG_KEYBOARD_HIL=m +# CONFIG_KEYBOARD_NEWTON is not set +# CONFIG_KEYBOARD_SUNKBD is not set +# CONFIG_KEYBOARD_XTKBD is not set + +## +## file: drivers/input/misc/Kconfig +## +CONFIG_INPUT_MISC=y +# CONFIG_HP_SDC_RTC is not set + +## +## file: drivers/input/mouse/Kconfig +## +CONFIG_INPUT_MOUSE=y +CONFIG_MOUSE_PS2=m +# CONFIG_MOUSE_SERIAL is not set +# CONFIG_MOUSE_INPORT is not set +# CONFIG_MOUSE_LOGIBM is not set +# CONFIG_MOUSE_PC110PAD is not set +# CONFIG_MOUSE_VSXXXAA is not set + +## +## file: drivers/input/serio/Kconfig +## +CONFIG_SERIO=y +# CONFIG_SERIO_SERPORT is not set +# CONFIG_SERIO_PARKBD is not set +CONFIG_SERIO_GSCPS2=y +CONFIG_HP_SDC=m +CONFIG_HIL_MLC=m +# CONFIG_SERIO_PCIPS2 is not set +CONFIG_SERIO_LIBPS2=y +CONFIG_SERIO_RAW=m + +## +## file: drivers/input/touchscreen/Kconfig +## +# CONFIG_INPUT_TOUCHSCREEN is not set + +## +## file: drivers/mfd/Kconfig +## +# CONFIG_AB3100_CORE is not set + +## +## file: drivers/mmc/Kconfig +## +# CONFIG_MMC is not set + +## +## file: drivers/mtd/Kconfig +## +# CONFIG_MTD is not set + +## +## file: drivers/net/arcnet/Kconfig +## +# CONFIG_ARCNET is not set + +## +## file: drivers/net/ethernet/Kconfig +## +CONFIG_FEALNX=m + +## +## file: drivers/net/ethernet/3com/Kconfig +## +CONFIG_NET_VENDOR_3COM=y +CONFIG_EL3=m +# CONFIG_3C515 is not set +CONFIG_PCMCIA_3C574=m +CONFIG_PCMCIA_3C589=m +CONFIG_VORTEX=m +CONFIG_TYPHOON=m + +## +## file: drivers/net/ethernet/8390/Kconfig +## +CONFIG_PCMCIA_AXNET=m +CONFIG_NE2000=m +CONFIG_NE2K_PCI=m +CONFIG_PCMCIA_PCNET=m +CONFIG_ULTRA=m +CONFIG_WD80x3=m + +## +## file: drivers/net/ethernet/adaptec/Kconfig +## +CONFIG_ADAPTEC_STARFIRE=m + +## +## file: drivers/net/ethernet/amd/Kconfig +## +CONFIG_AMD8111_ETH=m +# CONFIG_LANCE is not set +CONFIG_PCMCIA_NMCLAN=m +# CONFIG_NI65 is not set + +## +## file: drivers/net/ethernet/broadcom/Kconfig +## +CONFIG_B44=m + +## +## file: drivers/net/ethernet/cirrus/Kconfig +## +CONFIG_CS89x0=m + +## +## file: drivers/net/ethernet/dec/tulip/Kconfig +## +CONFIG_NET_TULIP=y +# CONFIG_DE2104X is not set +CONFIG_TULIP=m +# CONFIG_TULIP_MWI is not set +CONFIG_TULIP_MMIO=y +# CONFIG_WINBOND_840 is not set +# CONFIG_DM9102 is not set +CONFIG_PCMCIA_XIRCOM=m + +## +## file: drivers/net/ethernet/dlink/Kconfig +## +CONFIG_SUNDANCE=m +# CONFIG_SUNDANCE_MMIO is not set + +## +## file: drivers/net/ethernet/fujitsu/Kconfig +## +CONFIG_PCMCIA_FMVJ18X=m + +## +## file: drivers/net/ethernet/hp/Kconfig +## +CONFIG_HP100=m + +## +## file: drivers/net/ethernet/i825xx/Kconfig +## +CONFIG_LASI_82596=m + +## +## file: drivers/net/ethernet/intel/Kconfig +## +CONFIG_E100=m + +## +## file: drivers/net/ethernet/natsemi/Kconfig +## +CONFIG_NATSEMI=m + +## +## file: drivers/net/ethernet/neterion/Kconfig +## +# CONFIG_VXGE is not set + +## +## file: drivers/net/ethernet/nvidia/Kconfig +## +CONFIG_FORCEDETH=m + +## +## file: drivers/net/ethernet/realtek/Kconfig +## +CONFIG_8139CP=m +CONFIG_8139TOO=m + +## +## file: drivers/net/ethernet/sis/Kconfig +## +CONFIG_SIS900=m + +## +## file: drivers/net/ethernet/smsc/Kconfig +## +CONFIG_SMC9194=m +CONFIG_PCMCIA_SMC91C92=m +CONFIG_EPIC100=m + +## +## file: drivers/net/ethernet/sun/Kconfig +## +CONFIG_HAPPYMEAL=m +CONFIG_SUNGEM=m +# CONFIG_NIU is not set + +## +## file: drivers/net/ethernet/via/Kconfig +## +CONFIG_VIA_RHINE=m +# CONFIG_VIA_RHINE_MMIO is not set + +## +## file: drivers/net/ethernet/xircom/Kconfig +## +CONFIG_PCMCIA_XIRC2PS=m + +## +## file: drivers/net/fddi/Kconfig +## +# CONFIG_FDDI is not set + +## +## file: drivers/net/hippi/Kconfig +## +# CONFIG_HIPPI is not set + +## +## file: drivers/net/plip/Kconfig +## +CONFIG_PLIP=m + +## +## file: drivers/net/wan/Kconfig +## +# CONFIG_WAN is not set + +## +## file: drivers/net/wireless/Kconfig +## +CONFIG_PCMCIA_RAYCS=m +CONFIG_PCMCIA_WL3501=m + +## +## file: drivers/net/wireless/atmel/Kconfig +## +# CONFIG_ATMEL is not set + +## +## file: drivers/net/wireless/cisco/Kconfig +## +CONFIG_AIRO_CS=m + +## +## file: drivers/net/wireless/intel/ipw2x00/Kconfig +## +# CONFIG_IPW2100 is not set + +## +## file: drivers/net/wireless/intersil/orinoco/Kconfig +## +CONFIG_HERMES=m +# CONFIG_PLX_HERMES is not set +# CONFIG_TMD_HERMES is not set +# CONFIG_PCI_HERMES is not set +CONFIG_PCMCIA_HERMES=m + +## +## file: drivers/net/wireless/zydas/Kconfig +## +# CONFIG_USB_ZD1201 is not set + +## +## file: drivers/parisc/Kconfig +## +CONFIG_GSC=y +CONFIG_HPPB=y +CONFIG_IOMMU_CCIO=y +CONFIG_GSC_LASI=y +CONFIG_GSC_WAX=y +CONFIG_EISA=y +CONFIG_ISA=y +CONFIG_PCI=y +CONFIG_GSC_DINO=y +CONFIG_PCI_LBA=y +CONFIG_SUPERIO=y +CONFIG_CHASSIS_LCD_LED=y +CONFIG_PDC_CHASSIS=y +CONFIG_PDC_CHASSIS_WARN=y +CONFIG_PDC_STABLE=y + +## +## file: drivers/pci/hotplug/Kconfig +## +# CONFIG_HOTPLUG_PCI is not set + +## +## file: drivers/pcmcia/Kconfig +## +CONFIG_PCCARD=m +CONFIG_PCMCIA=m +CONFIG_CARDBUS=y +CONFIG_YENTA=m +CONFIG_PD6729=m +CONFIG_I82092=m +CONFIG_I82365=m +# CONFIG_TCIC is not set +# CONFIG_PCMCIA_DEBUG is not set + +## +## file: drivers/pnp/Kconfig +## +# CONFIG_PNP is not set + +## +## file: drivers/rtc/Kconfig +## +CONFIG_RTC_CLASS=y +CONFIG_RTC_DRV_GENERIC=y + +## +## file: drivers/scsi/Kconfig +## +# CONFIG_SCSI_BUSLOGIC is not set +# CONFIG_SCSI_DMX3191D is not set +# CONFIG_SCSI_EATA is not set +# CONFIG_SCSI_FUTURE_DOMAIN is not set +# CONFIG_SCSI_GDTH is not set +# CONFIG_SCSI_GENERIC_NCR5380 is not set +# CONFIG_SCSI_IPS is not set +CONFIG_SCSI_INITIO=m +# CONFIG_SCSI_INIA100 is not set +# CONFIG_SCSI_NCR53C406A is not set +CONFIG_SCSI_LASI700=m +CONFIG_SCSI_SYM53C8XX_2=m +CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 +CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 +CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 +# CONFIG_SCSI_IPR is not set +CONFIG_SCSI_ZALON=m +CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=8 +CONFIG_SCSI_NCR53C8XX_MAX_TAGS=32 +CONFIG_SCSI_NCR53C8XX_SYNC=20 +# CONFIG_SCSI_QLOGIC_FAS is not set +# CONFIG_SCSI_QLOGIC_1280 is not set +# CONFIG_SCSI_SIM710 is not set +# CONFIG_SCSI_SYM53C416 is not set +# CONFIG_SCSI_DC395x is not set + +## +## file: drivers/scsi/megaraid/Kconfig.megaraid +## +CONFIG_MEGARAID_NEWGEN=y +CONFIG_MEGARAID_MM=m +CONFIG_MEGARAID_MAILBOX=m +# CONFIG_MEGARAID_LEGACY is not set + +## +## file: drivers/scsi/pcmcia/Kconfig +## +CONFIG_PCMCIA_FDOMAIN=m +CONFIG_PCMCIA_QLOGIC=m +CONFIG_PCMCIA_SYM53C500=m + +## +## file: drivers/tty/Kconfig +## +CONFIG_VT=y +CONFIG_VT_CONSOLE=y +# CONFIG_SERIAL_NONSTANDARD is not set + +## +## file: drivers/tty/serial/Kconfig +## +CONFIG_SERIAL_MUX=y +CONFIG_SERIAL_MUX_CONSOLE=y +CONFIG_SERIAL_JSM=m + +## +## file: drivers/tty/serial/8250/Kconfig +## +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_CS=m +CONFIG_SERIAL_8250_NR_UARTS=32 +CONFIG_SERIAL_8250_RUNTIME_UARTS=4 +CONFIG_SERIAL_8250_EXTENDED=y +CONFIG_SERIAL_8250_MANY_PORTS=y +CONFIG_SERIAL_8250_SHARE_IRQ=y +# CONFIG_SERIAL_8250_DETECT_IRQ is not set +# CONFIG_SERIAL_8250_RSA is not set + +## +## file: drivers/usb/Kconfig +## +CONFIG_USB=m +# CONFIG_USB_USS720 is not set + +## +## file: drivers/usb/host/Kconfig +## +CONFIG_USB_EHCI_HCD=m +CONFIG_USB_OHCI_HCD=m +# CONFIG_USB_UHCI_HCD is not set +# CONFIG_USB_SL811_HCD is not set + +## +## file: drivers/video/console/Kconfig +## +CONFIG_DUMMY_CONSOLE_COLUMNS=160 +CONFIG_DUMMY_CONSOLE_ROWS=64 +CONFIG_STI_CONSOLE=y + +## +## file: drivers/video/fbdev/Kconfig +## +CONFIG_FB_MODE_HELPERS=y +# CONFIG_FB_TILEBLITTING is not set +# CONFIG_FB_CIRRUS is not set +# CONFIG_FB_PM2 is not set +# CONFIG_FB_CYBER2000 is not set +# CONFIG_FB_ASILIANT is not set +# CONFIG_FB_IMSTT is not set +CONFIG_FB_STI=y +# CONFIG_FB_S1D13XXX is not set +# CONFIG_FB_MATROX is not set +# CONFIG_FB_RADEON is not set +# CONFIG_FB_ATY128 is not set +# CONFIG_FB_ATY is not set +# CONFIG_FB_S3 is not set +# CONFIG_FB_SAVAGE is not set +# CONFIG_FB_SIS is not set +# CONFIG_FB_NEOMAGIC is not set +# CONFIG_FB_KYRO is not set +# CONFIG_FB_3DFX is not set +# CONFIG_FB_VOODOO1 is not set +# CONFIG_FB_VT8623 is not set +# CONFIG_FB_TRIDENT is not set +# CONFIG_FB_ARK is not set +# CONFIG_FB_PM3 is not set +# CONFIG_FB_VIRTUAL is not set + +## +## file: drivers/w1/Kconfig +## +# CONFIG_W1 is not set + +## +## file: fs/nfs/Kconfig +## +CONFIG_ROOT_NFS=y + +## +## file: init/Kconfig +## +CONFIG_SGETMASK_SYSCALL=y +CONFIG_SYSFS_SYSCALL=y + +## +## file: lib/Kconfig.debug +## +CONFIG_DEBUG_STACKOVERFLOW=y +# CONFIG_SOFTLOCKUP_DETECTOR is not set +# CONFIG_HARDLOCKUP_DETECTOR is not set + +## +## file: mm/Kconfig +## +## choice: Memory model +CONFIG_FLATMEM_MANUAL=y +# CONFIG_DISCONTIGMEM_MANUAL is not set +# CONFIG_SPARSEMEM_MANUAL is not set +## end choice + +## +## file: net/ax25/Kconfig +## +# CONFIG_HAMRADIO is not set + +## +## file: net/decnet/Kconfig +## +# CONFIG_DECNET is not set + +## +## file: net/ipv4/Kconfig +## +# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_PNP=y +# CONFIG_IP_PNP_DHCP is not set +CONFIG_IP_PNP_BOOTP=y +# CONFIG_IP_PNP_RARP is not set + +## +## file: net/ipx/Kconfig +## +# CONFIG_IPX is not set + +## +## file: net/lapb/Kconfig +## +# CONFIG_LAPB is not set + +## +## file: net/llc/Kconfig +## +# CONFIG_LLC2 is not set + +## +## file: sound/drivers/Kconfig +## +CONFIG_SND_DUMMY=m +# CONFIG_SND_VIRMIDI is not set +# CONFIG_SND_MTPAV is not set +# CONFIG_SND_SERIAL_U16550 is not set +# CONFIG_SND_MPU401 is not set + +## +## file: sound/isa/Kconfig +## +# CONFIG_SND_AD1848 is not set +# CONFIG_SND_CMI8330 is not set +# CONFIG_SND_CS4231 is not set +# CONFIG_SND_CS4236 is not set +# CONFIG_SND_ES1688 is not set +# CONFIG_SND_ES18XX is not set +# CONFIG_SND_GUSCLASSIC is not set +# CONFIG_SND_GUSEXTREME is not set +# CONFIG_SND_GUSMAX is not set +# CONFIG_SND_INTERWAVE is not set +# CONFIG_SND_INTERWAVE_STB is not set +# CONFIG_SND_OPL3SA2 is not set +# CONFIG_SND_OPTI92X_AD1848 is not set +# CONFIG_SND_OPTI92X_CS4231 is not set +# CONFIG_SND_OPTI93X is not set +# CONFIG_SND_SB8 is not set +# CONFIG_SND_SB16 is not set +# CONFIG_SND_SBAWE is not set +# CONFIG_SND_SSCAPE is not set +# CONFIG_SND_WAVEFRONT is not set + +## +## file: sound/parisc/Kconfig +## +CONFIG_SND_HARMONY=m + +## +## file: sound/pci/Kconfig +## +# CONFIG_SND_ALS4000 is not set +# CONFIG_SND_ALI5451 is not set +# CONFIG_SND_ATIIXP is not set +# CONFIG_SND_ATIIXP_MODEM is not set +# CONFIG_SND_AU8810 is not set +# CONFIG_SND_AU8820 is not set +# CONFIG_SND_AU8830 is not set +# CONFIG_SND_AZT3328 is not set +# CONFIG_SND_BT87X is not set +# CONFIG_SND_CA0106 is not set +# CONFIG_SND_CMIPCI is not set +# CONFIG_SND_CS4281 is not set +# CONFIG_SND_CS46XX is not set +# CONFIG_SND_EMU10K1 is not set +# CONFIG_SND_EMU10K1X is not set +# CONFIG_SND_ENS1370 is not set +# CONFIG_SND_ENS1371 is not set +# CONFIG_SND_ES1938 is not set +# CONFIG_SND_ES1968 is not set +# CONFIG_SND_FM801 is not set +# CONFIG_SND_HDSP is not set +# CONFIG_SND_ICE1712 is not set +# CONFIG_SND_ICE1724 is not set +# CONFIG_SND_INTEL8X0 is not set +# CONFIG_SND_INTEL8X0M is not set +# CONFIG_SND_KORG1212 is not set +# CONFIG_SND_MAESTRO3 is not set +# CONFIG_SND_MIXART is not set +# CONFIG_SND_NM256 is not set +# CONFIG_SND_RME32 is not set +# CONFIG_SND_RME96 is not set +# CONFIG_SND_RME9652 is not set +# CONFIG_SND_SONICVIBES is not set +# CONFIG_SND_TRIDENT is not set +# CONFIG_SND_VIA82XX is not set +# CONFIG_SND_VIA82XX_MODEM is not set +# CONFIG_SND_VX222 is not set +# CONFIG_SND_YMFPCI is not set + +## +## file: sound/pci/hda/Kconfig +## +# CONFIG_SND_HDA_INTEL is not set + diff --git a/config/hppa/config.parisc b/config/hppa/config.parisc new file mode 100644 index 00000000000..9a07c7962b9 --- /dev/null +++ b/config/hppa/config.parisc @@ -0,0 +1,26 @@ +## +## file: arch/parisc/Kconfig +## +## choice: Processor type +CONFIG_PA7000=y +# CONFIG_PA8X00 is not set +## end choice +# CONFIG_SMP is not set + +## +## file: drivers/net/ethernet/ti/Kconfig +## +CONFIG_TLAN=m + +## +## file: drivers/scsi/Kconfig +## +# CONFIG_SCSI_DPT_I2O is not set +# CONFIG_SCSI_NSP32 is not set + +## +## file: drivers/scsi/pcmcia/Kconfig +## +CONFIG_PCMCIA_AHA152X=m +CONFIG_PCMCIA_NINJA_SCSI=m + diff --git a/config/hppa/config.parisc-smp b/config/hppa/config.parisc-smp new file mode 100644 index 00000000000..8c9cc9a2747 --- /dev/null +++ b/config/hppa/config.parisc-smp @@ -0,0 +1,28 @@ +## +## file: arch/parisc/Kconfig +## +## choice: Processor type +CONFIG_PA7000=y +# CONFIG_PA8X00 is not set +## end choice +CONFIG_SMP=y +# CONFIG_HPUX is not set +CONFIG_NR_CPUS=8 + +## +## file: drivers/net/ethernet/ti/Kconfig +## +CONFIG_TLAN=m + +## +## file: drivers/scsi/Kconfig +## +# CONFIG_SCSI_DPT_I2O is not set +# CONFIG_SCSI_NSP32 is not set + +## +## file: drivers/scsi/pcmcia/Kconfig +## +CONFIG_PCMCIA_AHA152X=m +CONFIG_PCMCIA_NINJA_SCSI=m + diff --git a/config/hppa/config.parisc64 b/config/hppa/config.parisc64 new file mode 100644 index 00000000000..7a782e78d3f --- /dev/null +++ b/config/hppa/config.parisc64 @@ -0,0 +1,17 @@ +## +## file: arch/parisc/Kconfig +## +## choice: Processor type +# CONFIG_PA7000 is not set +CONFIG_PA8X00=y +## end choice +CONFIG_64BIT=y +# CONFIG_SMP is not set + +## +## file: mm/Kconfig +## +## choice: Memory model +# CONFIG_FLATMEM_MANUAL is not set +## end choice + diff --git a/config/hppa/config.parisc64-smp b/config/hppa/config.parisc64-smp new file mode 100644 index 00000000000..e39d0c9347a --- /dev/null +++ b/config/hppa/config.parisc64-smp @@ -0,0 +1,58 @@ +## +## file: arch/parisc/Kconfig +## +## choice: Processor type +# CONFIG_PA7000 is not set +CONFIG_PA8X00=y +## end choice +CONFIG_64BIT=y +CONFIG_SMP=y +CONFIG_NR_CPUS=8 + +## +## file: drivers/ata/Kconfig +## +CONFIG_PATA_SIL680=m + +## +## file: drivers/char/agp/Kconfig +## +#. for ATI FireGL DRM in C8000 workstation +CONFIG_AGP=y +CONFIG_AGP_PARISC=y + +## +## file: drivers/char/ipmi/Kconfig +## +CONFIG_IPMI_HANDLER=m +CONFIG_IPMI_DEVICE_INTERFACE=m +CONFIG_IPMI_SI=m +CONFIG_IPMI_WATCHDOG=m +CONFIG_IPMI_POWEROFF=m + +## +## file: drivers/gpu/drm/Kconfig +## +#. for ATI FireGL DRM in C8000 workstation +CONFIG_DRM=y +CONFIG_DRM_RADEON=m + +## +## file: drivers/i2c/Kconfig +## +CONFIG_I2C=y + +## +## file: drivers/i2c/algos/Kconfig +## +CONFIG_I2C_ALGOBIT=y + +## +## file: mm/Kconfig +## +## choice: Memory model +# CONFIG_FLATMEM_MANUAL is not set +CONFIG_DISCONTIGMEM_MANUAL=y +# CONFIG_SPARSEMEM_MANUAL is not set +## end choice + diff --git a/config/hppa/defines b/config/hppa/defines new file mode 100644 index 00000000000..761bda61f6e --- /dev/null +++ b/config/hppa/defines @@ -0,0 +1,28 @@ +[base] +flavours: parisc parisc64-smp +kernel-arch: parisc + +[build] +image-file: vmlinux +# linux-signed only works for architectures in the main archive +signed-modules: false + +[image] +suggests: palo +install-stem: vmlinux + +[parisc_description] +hardware: 32-bit PA-RISC +hardware-long: HP PA-RISC 32-bit systems with max 4 GB RAM + +[parisc64-smp_base] +cflags: -fno-cse-follow-jumps +override-host-type: hppa64-linux-gnu + +[parisc64-smp_description] +hardware: multiprocessor 64-bit PA-RISC +hardware-long: HP PA-RISC 64-bit SMP systems with support for more than 4 GB RAM + +[relations] +gcc-7: gcc-7 , binutils-hppa64-linux-gnu , gcc-7-hppa64-linux-gnu , gcc-7-hppa-linux-gnu , binutils-hppa64-linux-gnu , gcc-7-hppa64-linux-gnu + diff --git a/config/i386/config b/config/i386/config new file mode 100644 index 00000000000..413ade070bb --- /dev/null +++ b/config/i386/config @@ -0,0 +1,540 @@ +## +## file: arch/x86/Kconfig +## +# CONFIG_64BIT is not set +CONFIG_SMP=y +CONFIG_X86_BIGSMP=y +CONFIG_NR_CPUS=32 +# CONFIG_X86_LEGACY_VM86 is not set +CONFIG_TOSHIBA=m +CONFIG_X86_REBOOTFIXUPS=y +## choice: High Memory Support +# CONFIG_NOHIGHMEM is not set +CONFIG_HIGHMEM4G=y +# CONFIG_HIGHMEM64G is not set +## end choice +## choice: Memory split +CONFIG_VMSPLIT_3G=y +# CONFIG_VMSPLIT_3G_OPT is not set +# CONFIG_VMSPLIT_2G is not set +# CONFIG_VMSPLIT_2G_OPT is not set +# CONFIG_VMSPLIT_1G is not set +## end choice +# CONFIG_X86_PAE is not set +# CONFIG_NUMA is not set +CONFIG_HIGHPTE=y +CONFIG_PHYSICAL_ALIGN=0x1000000 +CONFIG_APM=m +# CONFIG_APM_IGNORE_USER_SUSPEND is not set +# CONFIG_APM_DO_ENABLE is not set +# CONFIG_APM_CPU_IDLE is not set +# CONFIG_APM_DISPLAY_BLANK is not set +# CONFIG_APM_ALLOW_INTS is not set +## choice: PCI access mode +# CONFIG_PCI_GOBIOS is not set +# CONFIG_PCI_GOMMCONFIG is not set +# CONFIG_PCI_GODIRECT is not set +# CONFIG_PCI_GOOLPC is not set +CONFIG_PCI_GOANY=y +## end choice +CONFIG_PCI_MMCONFIG=y +CONFIG_ISA=y +CONFIG_SCx200=m +CONFIG_SCx200HR_TIMER=m +# CONFIG_OLPC is not set + +## +## file: arch/x86/Kconfig.cpu +## +CONFIG_X86_GENERIC=y +# CONFIG_X86_PPRO_FENCE is not set + +## +## file: crypto/Kconfig +## +CONFIG_CRYPTO_AES_586=m +CONFIG_CRYPTO_SALSA20_586=m +CONFIG_CRYPTO_SERPENT_SSE2_586=m +CONFIG_CRYPTO_TWOFISH_586=m + +## +## file: drivers/ata/Kconfig +## +CONFIG_PATA_CS5520=m +CONFIG_PATA_CS5530=m +CONFIG_PATA_CS5535=m +CONFIG_PATA_CS5536=m +CONFIG_PATA_SC1200=m +CONFIG_PATA_ISAPNP=m +CONFIG_PATA_OPTI=m +CONFIG_PATA_LEGACY=m + +## +## file: drivers/atm/Kconfig +## +CONFIG_ATM_NICSTAR=m +# CONFIG_ATM_NICSTAR_USE_SUNI is not set +# CONFIG_ATM_NICSTAR_USE_IDT77105 is not set +CONFIG_ATM_IA=m +# CONFIG_ATM_IA_DEBUG is not set + +## +## file: drivers/auxdisplay/Kconfig +## +CONFIG_CFAG12864B=m +CONFIG_CFAG12864B_RATE=20 + +## +## file: drivers/char/Kconfig +## +CONFIG_SONYPI=m +CONFIG_SCx200_GPIO=m + +## +## file: drivers/char/agp/Kconfig +## +#. Workaround +CONFIG_AGP_ALI=y +#. Workaround +CONFIG_AGP_ATI=y +#. Workaround +CONFIG_AGP_AMD=y +#. Workaround +CONFIG_AGP_NVIDIA=y +#. Workaround +CONFIG_AGP_SWORKS=y +#. Workaround +CONFIG_AGP_EFFICEON=y + +## +## file: drivers/cpufreq/Kconfig.x86 +## +CONFIG_X86_POWERNOW_K6=m +CONFIG_X86_POWERNOW_K7=m +CONFIG_X86_GX_SUSPMOD=m +CONFIG_X86_SPEEDSTEP_CENTRINO_TABLE=y +CONFIG_X86_SPEEDSTEP_ICH=m +CONFIG_X86_SPEEDSTEP_SMI=m +CONFIG_X86_CPUFREQ_NFORCE2=m +CONFIG_X86_LONGRUN=m +CONFIG_X86_LONGHAUL=m +# CONFIG_X86_E_POWERSAVER is not set +CONFIG_X86_SPEEDSTEP_RELAXED_CAP_CHECK=y + +## +## file: drivers/crypto/Kconfig +## +CONFIG_CRYPTO_DEV_GEODE=m + +## +## file: drivers/dma/Kconfig +## +CONFIG_PCH_DMA=m + +## +## file: drivers/gpio/Kconfig +## +CONFIG_GPIO_VX855=m +CONFIG_GPIO_CS5535=m +CONFIG_GPIO_PCH=m + +## +## file: drivers/gpu/drm/Kconfig +## +CONFIG_DRM_I810=m + +## +## file: drivers/i2c/busses/Kconfig +## +CONFIG_I2C_EG20T=m +CONFIG_I2C_PXA=m + +## +## file: drivers/input/misc/Kconfig +## +CONFIG_INPUT_WISTRON_BTNS=m + +## +## file: drivers/input/mouse/Kconfig +## +# CONFIG_MOUSE_PS2_OLPC is not set +CONFIG_MOUSE_INPORT=m +# CONFIG_MOUSE_ATIXL is not set +CONFIG_MOUSE_LOGIBM=m +CONFIG_MOUSE_PC110PAD=m + +## +## file: drivers/iommu/Kconfig +## +# CONFIG_INTEL_IOMMU is not set + +## +## file: drivers/isdn/hardware/avm/Kconfig +## +CONFIG_ISDN_DRV_AVMB1_B1ISA=m +CONFIG_ISDN_DRV_AVMB1_T1ISA=m + +## +## file: drivers/leds/Kconfig +## +CONFIG_LEDS_WRAP=m + +## +## file: drivers/macintosh/Kconfig +## +# CONFIG_MACINTOSH_DRIVERS is not set + +## +## file: drivers/media/radio/Kconfig +## +CONFIG_V4L_RADIO_ISA_DRIVERS=y +CONFIG_RADIO_CADET=m +CONFIG_RADIO_RTRACK=m +CONFIG_RADIO_RTRACK2=m +CONFIG_RADIO_AZTECH=m +CONFIG_RADIO_GEMTEK=m +CONFIG_RADIO_MIROPCM20=m +CONFIG_RADIO_SF16FMI=m +CONFIG_RADIO_SF16FMR2=m +CONFIG_RADIO_TERRATEC=m +CONFIG_RADIO_TRUST=m +CONFIG_RADIO_TYPHOON=m +CONFIG_RADIO_ZOLTRIX=m + +## +## file: drivers/mfd/Kconfig +## +CONFIG_MFD_CS5535=m +CONFIG_MFD_VX855=m + +## +## file: drivers/misc/Kconfig +## +CONFIG_CS5535_MFGPT=m +CONFIG_CS5535_CLOCK_EVENT_SRC=m +CONFIG_PCH_PHUB=m + +## +## file: drivers/mtd/maps/Kconfig +## +CONFIG_MTD_SCx200_DOCFLASH=m +CONFIG_MTD_PCMCIA=m +# CONFIG_MTD_PCMCIA_ANONYMOUS is not set + +## +## file: drivers/net/arcnet/Kconfig +## +CONFIG_ARCNET_COM20020_ISA=m + +## +## file: drivers/net/can/Kconfig +## +CONFIG_PCH_CAN=m + +## +## file: drivers/net/can/cc770/Kconfig +## +CONFIG_CAN_CC770=m +CONFIG_CAN_CC770_ISA=m +# CONFIG_CAN_CC770_PLATFORM is not set + +## +## file: drivers/net/ethernet/3com/Kconfig +## +CONFIG_NET_VENDOR_3COM=y +CONFIG_EL3=m +CONFIG_3C515=m + +## +## file: drivers/net/ethernet/8390/Kconfig +## +CONFIG_NET_VENDOR_8390=y +CONFIG_NE2000=m +CONFIG_ULTRA=m +CONFIG_WD80x3=m + +## +## file: drivers/net/ethernet/amd/Kconfig +## +CONFIG_NET_VENDOR_AMD=y +CONFIG_LANCE=m +CONFIG_NI65=m + +## +## file: drivers/net/ethernet/cirrus/Kconfig +## +CONFIG_NET_VENDOR_CIRRUS=y +CONFIG_CS89x0=m + +## +## file: drivers/net/ethernet/dec/Kconfig +## +CONFIG_NET_VENDOR_DEC=y + +## +## file: drivers/net/ethernet/fujitsu/Kconfig +## +CONFIG_NET_VENDOR_FUJITSU=y + +## +## file: drivers/net/ethernet/oki-semi/pch_gbe/Kconfig +## +CONFIG_PCH_GBE=m + +## +## file: drivers/net/ethernet/smsc/Kconfig +## +CONFIG_NET_VENDOR_SMSC=y +CONFIG_SMC9194=m + +## +## file: drivers/net/hamradio/Kconfig +## +CONFIG_SCC=m +# CONFIG_SCC_DELAY is not set +# CONFIG_SCC_TRXECHO is not set + +## +## file: drivers/net/wan/Kconfig +## +CONFIG_HOSTESS_SV11=m +CONFIG_COSA=m +CONFIG_SEALEVEL_4021=m +CONFIG_N2=m +CONFIG_C101=m +CONFIG_SDLA=m + +## +## file: drivers/net/wireless/intel/ipw2x00/Kconfig +## +CONFIG_IPW2100=m +CONFIG_IPW2100_MONITOR=y +# CONFIG_IPW2100_DEBUG is not set + +## +## file: drivers/pci/hotplug/Kconfig +## +CONFIG_HOTPLUG_PCI_COMPAQ=m +CONFIG_HOTPLUG_PCI_IBM=m + +## +## file: drivers/pcmcia/Kconfig +## +CONFIG_I82365=m + +## +## file: drivers/platform/x86/Kconfig +## +CONFIG_TC1100_WMI=m + +## +## file: drivers/pnp/isapnp/Kconfig +## +CONFIG_ISAPNP=y + +## +## file: drivers/pnp/pnpbios/Kconfig +## +CONFIG_PNPBIOS=y +# CONFIG_PNPBIOS_PROC_FS is not set + +## +## file: drivers/scsi/Kconfig +## +CONFIG_SCSI_EATA_PIO=m +# CONFIG_SCSI_GENERIC_NCR5380 is not set +# CONFIG_SCSI_INIA100 is not set +CONFIG_SCSI_NCR53C406A=m +CONFIG_SCSI_QLOGIC_FAS=m +CONFIG_SCSI_SYM53C416=m +CONFIG_SCSI_NSP32=m + +## +## file: drivers/scsi/pcmcia/Kconfig +## +CONFIG_PCMCIA_NINJA_SCSI=m + +## +## file: drivers/spi/Kconfig +## +CONFIG_SPI_TOPCLIFF_PCH=m + +## +## file: drivers/staging/comedi/Kconfig +## +CONFIG_COMEDI_ISA_DRIVERS=y +CONFIG_COMEDI_PCL711=m +CONFIG_COMEDI_PCL724=m +CONFIG_COMEDI_PCL726=m +CONFIG_COMEDI_PCL730=m +CONFIG_COMEDI_PCL812=m +CONFIG_COMEDI_PCL816=m +CONFIG_COMEDI_PCL818=m +CONFIG_COMEDI_PCM3724=m +CONFIG_COMEDI_AMPLC_DIO200_ISA=m +CONFIG_COMEDI_AMPLC_PC236_ISA=m +CONFIG_COMEDI_AMPLC_PC263_ISA=m +CONFIG_COMEDI_RTI800=m +CONFIG_COMEDI_RTI802=m +CONFIG_COMEDI_DAC02=m +CONFIG_COMEDI_DAS16M1=m +CONFIG_COMEDI_DAS08_ISA=m +CONFIG_COMEDI_DAS16=m +CONFIG_COMEDI_DAS800=m +CONFIG_COMEDI_DAS1800=m +CONFIG_COMEDI_DAS6402=m +CONFIG_COMEDI_DT2801=m +CONFIG_COMEDI_DT2811=m +CONFIG_COMEDI_DT2814=m +CONFIG_COMEDI_DT2815=m +CONFIG_COMEDI_DT2817=m +CONFIG_COMEDI_DT282X=m +CONFIG_COMEDI_DMM32AT=m +CONFIG_COMEDI_FL512=m +CONFIG_COMEDI_AIO_AIO12_8=m +CONFIG_COMEDI_AIO_IIRO_16=m +CONFIG_COMEDI_C6XDIGIO=m +CONFIG_COMEDI_MPC624=m +CONFIG_COMEDI_ADQ12B=m +CONFIG_COMEDI_NI_AT_A2150=m +CONFIG_COMEDI_NI_AT_AO=m +CONFIG_COMEDI_NI_ATMIO=m +CONFIG_COMEDI_NI_ATMIO16D=m +CONFIG_COMEDI_NI_LABPC_ISA=m +CONFIG_COMEDI_PCMAD=m +CONFIG_COMEDI_PCMDA12=m +CONFIG_COMEDI_PCMMIO=m +CONFIG_COMEDI_PCMUIO=m +CONFIG_COMEDI_MULTIQ3=m + +## +## file: drivers/staging/olpc_dcon/Kconfig +## +CONFIG_FB_OLPC_DCON=m +CONFIG_FB_OLPC_DCON_1=y +CONFIG_FB_OLPC_DCON_1_5=y + +## +## file: drivers/staging/speakup/Kconfig +## +CONFIG_SPEAKUP_SYNTH_DECPC=m + +## +## file: drivers/tty/Kconfig +## +# CONFIG_ISI is not set + +## +## file: drivers/tty/serial/Kconfig +## +CONFIG_SERIAL_PCH_UART=m + +## +## file: drivers/tty/serial/8250/Kconfig +## +CONFIG_SERIAL_8250_EXAR_ST16C554=m + +## +## file: drivers/usb/gadget/udc/Kconfig +## +CONFIG_USB_AMD5536UDC=m + +## +## file: drivers/video/console/Kconfig +## +CONFIG_MDA_CONSOLE=m + +## +## file: drivers/video/fbdev/Kconfig +## +CONFIG_FB_I810=m +CONFIG_FB_I810_GTF=y +CONFIG_FB_I810_I2C=y +CONFIG_FB_MATROX_G=y +CONFIG_FB_MATROX_MAVEN=m +CONFIG_FB_ATY_GENERIC_LCD=y +CONFIG_FB_SAVAGE_I2C=y + +## +## file: drivers/watchdog/Kconfig +## +CONFIG_SCx200_WDT=m +CONFIG_SBC8360_WDT=m +CONFIG_SBC7240_WDT=m +CONFIG_PCWATCHDOG=m +CONFIG_MIXCOMWD=m +CONFIG_WDT=m + +## +## file: fs/Kconfig.binfmt +## +CONFIG_BINFMT_AOUT=m + +## +## file: kernel/irq/Kconfig +## +# CONFIG_SPARSE_IRQ is not set + +## +## file: lib/Kconfig.debug +## +CONFIG_FRAME_WARN=1024 + +## +## file: mm/Kconfig +## +## choice: Memory model +CONFIG_FLATMEM_MANUAL=y +# CONFIG_DISCONTIGMEM_MANUAL is not set +# CONFIG_SPARSEMEM_MANUAL is not set +## end choice + +## +## file: security/Kconfig +## +CONFIG_LSM_MMAP_MIN_ADDR=0 + +## +## file: sound/isa/Kconfig +## +CONFIG_SND_ISA=y +CONFIG_SND_ADLIB=m +CONFIG_SND_AD1816A=m +CONFIG_SND_AD1848=m +CONFIG_SND_ALS100=m +CONFIG_SND_AZT1605=m +CONFIG_SND_AZT2316=m +CONFIG_SND_AZT2320=m +CONFIG_SND_CMI8330=m +CONFIG_SND_CS4231=m +CONFIG_SND_CS4236=m +CONFIG_SND_ES1688=m +CONFIG_SND_ES18XX=m +CONFIG_SND_SC6000=m +CONFIG_SND_GUSCLASSIC=m +CONFIG_SND_GUSEXTREME=m +CONFIG_SND_GUSMAX=m +CONFIG_SND_INTERWAVE=m +CONFIG_SND_INTERWAVE_STB=m +CONFIG_SND_JAZZ16=m +CONFIG_SND_OPL3SA2=m +CONFIG_SND_OPTI92X_AD1848=m +CONFIG_SND_OPTI92X_CS4231=m +CONFIG_SND_OPTI93X=m +CONFIG_SND_MIRO=m +CONFIG_SND_SB8=m +CONFIG_SND_SB16=m +CONFIG_SND_SBAWE=m +CONFIG_SND_SB16_CSP=y +CONFIG_SND_SSCAPE=m +CONFIG_SND_WAVEFRONT=m +CONFIG_SND_MSND_PINNACLE=m +CONFIG_SND_MSND_CLASSIC=m + +## +## file: sound/pci/Kconfig +## +CONFIG_SND_CS5530=m +CONFIG_SND_CS5535AUDIO=m +CONFIG_SND_SIS7019=m + diff --git a/config/i386/config.686 b/config/i386/config.686 new file mode 100644 index 00000000000..f07efc7df9f --- /dev/null +++ b/config/i386/config.686 @@ -0,0 +1,82 @@ +## +## file: arch/x86/Kconfig +## +CONFIG_X86_32_IRIS=m +# CONFIG_MATH_EMULATION is not set +# CONFIG_EISA is not set +CONFIG_OLPC=y +CONFIG_OLPC_XO1_PM=y +CONFIG_OLPC_XO1_RTC=y +CONFIG_OLPC_XO1_SCI=y +CONFIG_OLPC_XO15_SCI=y +CONFIG_ALIX=y +CONFIG_NET5501=y +CONFIG_GEOS=y + +## +## file: arch/x86/Kconfig.cpu +## +## choice: Processor family +# CONFIG_M486 is not set +CONFIG_M686=y +## end choice + +## +## file: drivers/i2c/Kconfig +## +CONFIG_I2C_STUB=m + +## +## file: drivers/i2c/busses/Kconfig +## +# CONFIG_I2C_ELEKTOR is not set + +## +## file: drivers/input/keyboard/Kconfig +## +CONFIG_KEYBOARD_GPIO_POLLED=m + +## +## file: drivers/input/mouse/Kconfig +## +CONFIG_MOUSE_PS2_OLPC=y + +## +## file: drivers/net/hamradio/Kconfig +## +# CONFIG_DMASCC is not set + +## +## file: drivers/pci/hotplug/Kconfig +## +# CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM is not set + +## +## file: drivers/platform/x86/Kconfig +## +CONFIG_XO1_RFKILL=m +CONFIG_XO15_EBOOK=m + +## +## file: drivers/power/supply/Kconfig +## +CONFIG_BATTERY_OLPC=m + +## +## file: drivers/tty/Kconfig +## +# CONFIG_MOXA_INTELLIO is not set + +## +## file: drivers/video/fbdev/geode/Kconfig +## +CONFIG_FB_GEODE=y +CONFIG_FB_GEODE_LX=m +CONFIG_FB_GEODE_GX=m +CONFIG_FB_GEODE_GX1=m + +## +## file: lib/Kconfig.debug +## +# CONFIG_DEBUG_HIGHMEM is not set + diff --git a/config/i386/config.686-pae b/config/i386/config.686-pae new file mode 100644 index 00000000000..c5faf690254 --- /dev/null +++ b/config/i386/config.686-pae @@ -0,0 +1,54 @@ +## +## file: arch/x86/Kconfig +## +# CONFIG_X86_32_IRIS is not set +## choice: High Memory Support +# CONFIG_NOHIGHMEM is not set +# CONFIG_HIGHMEM4G is not set +CONFIG_HIGHMEM64G=y +## end choice +CONFIG_X86_PAE=y +# CONFIG_MATH_EMULATION is not set +# CONFIG_EISA is not set +# CONFIG_ALIX is not set +# CONFIG_NET5501 is not set +# CONFIG_GEOS is not set + +## +## file: arch/x86/Kconfig.cpu +## +## choice: Processor family +# CONFIG_M486 is not set +CONFIG_M686=y +## end choice + +## +## file: drivers/i2c/Kconfig +## +CONFIG_I2C_STUB=m + +## +## file: drivers/i2c/busses/Kconfig +## +# CONFIG_I2C_ELEKTOR is not set + +## +## file: drivers/net/hamradio/Kconfig +## +# CONFIG_DMASCC is not set + +## +## file: drivers/pci/hotplug/Kconfig +## +# CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM is not set + +## +## file: drivers/tty/Kconfig +## +# CONFIG_MOXA_INTELLIO is not set + +## +## file: lib/Kconfig.debug +## +# CONFIG_DEBUG_HIGHMEM is not set + diff --git a/config/i386/defines b/config/i386/defines new file mode 100644 index 00000000000..e4b38f6e753 --- /dev/null +++ b/config/i386/defines @@ -0,0 +1,36 @@ +[base] +featuresets: + none + rt +kernel-arch: x86 + +[build] +image-file: arch/x86/boot/bzImage +vdso: true + +[description] +part-long-pae: This kernel requires PAE (Physical Address Extension). + This feature is supported by the Intel Pentium Pro/II/III/4/4M/D, Xeon, + Core and Atom; AMD Geode NX, Athlon (K7), Duron, Opteron, Sempron, + Turion or Phenom; Transmeta Efficeon; VIA C7; and some other processors. + +[image] +bootloaders: grub-pc extlinux +install-stem: vmlinuz +breaks: xserver-xorg-input-vmmouse (<< 1:13.0.99) + +[relations] +gcc-7: gcc-7 (>= 7.2.0-20~) , gcc-7-i686-linux-gnu (>= 7.2.0-20~) +headers%gcc-7: linux-compiler-gcc-7-x86 (>= 4.14.17-1~) + +[686_description] +hardware: older PCs +hardware-long: PCs with one or more processors not supporting PAE + +[686-pae_build] +debug-info: true + +[686-pae_description] +hardware: modern PCs +hardware-long: PCs with one or more processors supporting PAE +parts: pae diff --git a/config/i386/none/defines b/config/i386/none/defines new file mode 100644 index 00000000000..274999440e9 --- /dev/null +++ b/config/i386/none/defines @@ -0,0 +1,4 @@ +[base] +flavours: + 686 + 686-pae diff --git a/config/i386/rt/defines b/config/i386/rt/defines new file mode 100644 index 00000000000..358e12d559c --- /dev/null +++ b/config/i386/rt/defines @@ -0,0 +1,3 @@ +[base] +flavours: + 686-pae diff --git a/config/kernelarch-arm/config b/config/kernelarch-arm/config new file mode 100644 index 00000000000..eafef745174 --- /dev/null +++ b/config/kernelarch-arm/config @@ -0,0 +1,117 @@ +## +## file: arch/arm/Kconfig +## +CONFIG_MMU=y +CONFIG_AEABI=y +# CONFIG_OABI_COMPAT is not set +CONFIG_CPU_SW_DOMAIN_PAN=y +CONFIG_SECCOMP=y +CONFIG_KEXEC=y + +## +## file: arch/arm/crypto/Kconfig +## +CONFIG_CRYPTO_SHA1_ARM=m +CONFIG_CRYPTO_AES_ARM=m + +## +## file: arch/arm/Kconfig.debug +## +CONFIG_DEBUG_LL=y +CONFIG_EARLY_PRINTK=y + +## +## file: arch/arm/mm/Kconfig +## +#. Support Thumb user binaries +CONFIG_ARM_THUMB=y + +## +## file: drivers/input/misc/Kconfig +## +CONFIG_INPUT_MISC=y +CONFIG_INPUT_UINPUT=m + +## +## file: drivers/input/mouse/Kconfig +## +CONFIG_INPUT_MOUSE=y +CONFIG_MOUSE_PS2=m +CONFIG_MOUSE_APPLETOUCH=m + +## +## file: drivers/input/touchscreen/Kconfig +## +# CONFIG_TOUCHSCREEN_EETI is not set + +## +## file: drivers/mtd/maps/Kconfig +## +CONFIG_MTD_PHYSMAP=y + +## +## file: drivers/net/wireless/intel/ipw2x00/Kconfig +## +# CONFIG_IPW2100 is not set + +## +## file: drivers/parport/Kconfig +## +#. Causes lockups on ARM (see #588164) +# CONFIG_PARPORT_PC is not set + +## +## file: drivers/pci/Kconfig +## +# CONFIG_PCI_IOV is not set + +## +## file: drivers/scsi/Kconfig +## +# CONFIG_BLK_DEV_3W_XXXX_RAID is not set +# CONFIG_SCSI_3W_9XXX is not set +# CONFIG_SCSI_AACRAID is not set +# CONFIG_SCSI_HPTIOP is not set + +## +## file: drivers/scsi/aic7xxx/Kconfig.aic79xx +## +# CONFIG_SCSI_AIC79XX is not set + +## +## file: drivers/scsi/aic7xxx/Kconfig.aic7xxx +## +# CONFIG_SCSI_AIC7XXX is not set + +## +## file: drivers/scsi/aic94xx/Kconfig +## +# CONFIG_SCSI_AIC94XX is not set + +## +## file: drivers/scsi/megaraid/Kconfig.megaraid +## +# CONFIG_MEGARAID_SAS is not set + +## +## file: drivers/scsi/qla2xxx/Kconfig +## +# CONFIG_SCSI_QLA_FC is not set + +## +## file: drivers/scsi/qla4xxx/Kconfig +## +# CONFIG_SCSI_QLA_ISCSI is not set + +## +## file: drivers/thermal/Kconfig +## +CONFIG_THERMAL=y +CONFIG_CPU_THERMAL=y + +## +## file: lib/xz/Kconfig +## +CONFIG_XZ_DEC_ARM=y +CONFIG_XZ_DEC_ARMTHUMB=y + diff --git a/config/kernelarch-mips/config b/config/kernelarch-mips/config new file mode 100644 index 00000000000..e846495eef3 --- /dev/null +++ b/config/kernelarch-mips/config @@ -0,0 +1,69 @@ +## +## file: arch/mips/Kconfig +## +CONFIG_RELOCATABLE=y +CONFIG_RELOCATION_TABLE_SIZE=0x00120000 +CONFIG_RANDOMIZE_BASE=y +CONFIG_KEXEC=y +CONFIG_SECCOMP=y +CONFIG_PCI=y +# CONFIG_RAPIDIO is not set +#. Ignored in 32-bit configurations +CONFIG_MIPS32_O32=y +CONFIG_MIPS32_N32=y + +## +## file: arch/mips/Kconfig.debug +## +CONFIG_EARLY_PRINTK=y + +## +## file: drivers/ata/Kconfig +## +CONFIG_ATA=y + +## +## file: drivers/net/ethernet/sun/Kconfig +## +# CONFIG_NIU is not set + +## +## file: drivers/power/reset/Kconfig +## +CONFIG_POWER_RESET=y +CONFIG_POWER_RESET_SYSCON=y + +## +## file: drivers/scsi/Kconfig +## +CONFIG_SCSI=y +CONFIG_BLK_DEV_SD=y + +## +## file: drivers/tty/serial/8250/Kconfig +## +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y + +## +## file: drivers/usb/Kconfig +## +CONFIG_USB=m + +## +## file: drivers/usb/host/Kconfig +## +CONFIG_USB_EHCI_HCD=m +CONFIG_USB_OHCI_HCD=m + +## +## file: drivers/video/console/Kconfig +## +# CONFIG_VGA_CONSOLE is not set + +## +## file: init/Kconfig +## +CONFIG_SGETMASK_SYSCALL=y +CONFIG_SYSFS_SYSCALL=y + diff --git a/config/kernelarch-mips/config.loongson-3 b/config/kernelarch-mips/config.loongson-3 new file mode 100644 index 00000000000..95744114d1e --- /dev/null +++ b/config/kernelarch-mips/config.loongson-3 @@ -0,0 +1,104 @@ +## +## file: arch/mips/Kconfig +## +## choice: System type +CONFIG_MACH_LOONGSON64=y +## end choice +## choice: Kernel code model +# CONFIG_32BIT is not set +CONFIG_64BIT=y +## end choice +CONFIG_SMP=y +CONFIG_HOTPLUG_CPU=y +CONFIG_NR_CPUS=16 + +## +## file: arch/mips/loongson64/Kconfig +## +## choice: Machine Type +CONFIG_LOONGSON_MACH3X=y +## end choice + +## +## file: drivers/ata/Kconfig +## +CONFIG_SATA_AHCI=y + +## +## file: drivers/gpu/drm/Kconfig +## +CONFIG_DRM=m +CONFIG_DRM_RADEON=m + +## +## file: drivers/i2c/Kconfig +## +CONFIG_I2C=y + +## +## file: drivers/i2c/algos/Kconfig +## +CONFIG_I2C_ALGOBIT=y + +## +## file: drivers/net/ethernet/8390/Kconfig +## +CONFIG_NE2K_PCI=m + +## +## file: drivers/net/ethernet/intel/Kconfig +## +CONFIG_E100=m + +## +## file: drivers/net/ethernet/realtek/Kconfig +## +CONFIG_8139CP=m +CONFIG_8139TOO=m + +## +## file: drivers/pci/pcie/Kconfig +## +# CONFIG_PCIEPORTBUS is not set + +## +## file: drivers/rtc/Kconfig +## +CONFIG_RTC_DRV_CMOS=y + +## +## file: drivers/tty/serial/8250/Kconfig +## +# CONFIG_SERIAL_8250_EXTENDED is not set + +## +## file: drivers/usb/host/Kconfig +## +CONFIG_USB_ISP116X_HCD=m +CONFIG_USB_UHCI_HCD=m +CONFIG_USB_SL811_HCD=m + +## +## file: drivers/video/fbdev/Kconfig +## +CONFIG_FB_RADEON=y + +## +## file: kernel/Kconfig.preempt +## +## choice: Preemption Model +# CONFIG_PREEMPT_VOLUNTARY is not set +CONFIG_PREEMPT=y +## end choice + +## +## file: mm/Kconfig.debug +## +# CONFIG_PAGE_EXTENSION is not set +# CONFIG_PAGE_POISONING is not set + +## +## file: sound/pci/hda/Kconfig +## +CONFIG_SND_HDA_INTEL=m + diff --git a/config/kernelarch-mips/config.malta b/config/kernelarch-mips/config.malta new file mode 100644 index 00000000000..5c8414bd821 --- /dev/null +++ b/config/kernelarch-mips/config.malta @@ -0,0 +1,500 @@ +## +## file: arch/mips/Kconfig +## +## choice: System type +CONFIG_MIPS_MALTA=y +## end choice +## choice: Kernel page size +CONFIG_PAGE_SIZE_4KB=y +## end choice + +## +## file: drivers/ata/Kconfig +## +CONFIG_PATA_HPT366=m +CONFIG_PATA_NETCELL=m +CONFIG_PATA_OLDPIIX=m +CONFIG_PATA_PDC2027X=m +CONFIG_PATA_PDC_OLD=m +CONFIG_PATA_SIL680=m +CONFIG_PATA_MPIIX=m +CONFIG_PATA_NS87410=m + +## +## file: drivers/block/Kconfig +## +CONFIG_BLK_DEV_FD=m +CONFIG_BLK_DEV_DAC960=m +CONFIG_BLK_DEV_UMEM=m +CONFIG_BLK_DEV_SX8=m +CONFIG_CDROM_PKTCDVD=m + +## +## file: drivers/bluetooth/Kconfig +## +CONFIG_BT_HCIUART=m +CONFIG_BT_HCIUART_H4=y +CONFIG_BT_HCIUART_BCSP=y +CONFIG_BT_HCIBCM203X=m +CONFIG_BT_HCIBPA10X=m +CONFIG_BT_HCIBFUSB=m +CONFIG_BT_HCIVHCI=m + +## +## file: drivers/char/Kconfig +## +CONFIG_PRINTER=m +CONFIG_PPDEV=m + +## +## file: drivers/char/ipmi/Kconfig +## +CONFIG_IPMI_HANDLER=m +CONFIG_IPMI_SI=m +CONFIG_IPMI_WATCHDOG=m +CONFIG_IPMI_POWEROFF=m + +## +## file: drivers/gpu/drm/Kconfig +## +CONFIG_DRM=m +CONFIG_DRM_RADEON=m +CONFIG_DRM_TDFX=m +CONFIG_DRM_R128=m +CONFIG_DRM_MGA=m + +## +## file: drivers/hwmon/Kconfig +## +CONFIG_SENSORS_ADM1021=m +CONFIG_SENSORS_ADM1025=m +CONFIG_SENSORS_ADM1026=m +CONFIG_SENSORS_ADM1031=m +CONFIG_SENSORS_DS1621=m +CONFIG_SENSORS_MAX1619=m +CONFIG_SENSORS_LM63=m +CONFIG_SENSORS_LM75=m +CONFIG_SENSORS_LM77=m +CONFIG_SENSORS_LM78=m +CONFIG_SENSORS_LM80=m +CONFIG_SENSORS_LM83=m +CONFIG_SENSORS_LM85=m +CONFIG_SENSORS_LM87=m +CONFIG_SENSORS_LM90=m +CONFIG_SENSORS_LM92=m +CONFIG_SENSORS_PCF8591=m + +## +## file: drivers/i2c/Kconfig +## +CONFIG_I2C=m + +## +## file: drivers/i2c/busses/Kconfig +## +CONFIG_I2C_PIIX4=m +CONFIG_I2C_PARPORT=m +CONFIG_I2C_PARPORT_LIGHT=m + +## +## file: drivers/input/gameport/Kconfig +## +CONFIG_GAMEPORT=m +CONFIG_GAMEPORT_EMU10K1=m +CONFIG_GAMEPORT_FM801=m + +## +## file: drivers/input/joystick/Kconfig +## +CONFIG_INPUT_JOYSTICK=y + +## +## file: drivers/input/keyboard/Kconfig +## +CONFIG_KEYBOARD_NEWTON=m +CONFIG_KEYBOARD_SUNKBD=m + +## +## file: drivers/input/mouse/Kconfig +## +CONFIG_MOUSE_PS2=m +CONFIG_MOUSE_SERIAL=m +CONFIG_MOUSE_APPLETOUCH=m +CONFIG_MOUSE_VSXXXAA=m + +## +## file: drivers/input/serio/Kconfig +## +CONFIG_SERIO_I8042=y +CONFIG_SERIO_SERPORT=m +CONFIG_SERIO_PARKBD=m +CONFIG_SERIO_PCIPS2=y +CONFIG_SERIO_LIBPS2=y +CONFIG_SERIO_RAW=m + +## +## file: drivers/input/touchscreen/Kconfig +## +CONFIG_INPUT_TOUCHSCREEN=y + +## +## file: drivers/mfd/Kconfig +## +CONFIG_MFD_SM501=m + +## +## file: drivers/mmc/Kconfig +## +CONFIG_MMC=m + +## +## file: drivers/mmc/core/Kconfig +## +CONFIG_MMC_BLOCK=m + +## +## file: drivers/mtd/Kconfig +## +CONFIG_MTD_REDBOOT_PARTS=y +CONFIG_FTL=m +CONFIG_NFTL=m +CONFIG_NFTL_RW=y +CONFIG_INFTL=m + +## +## file: drivers/mtd/chips/Kconfig +## +CONFIG_MTD_CFI=m +CONFIG_MTD_JEDECPROBE=m +CONFIG_MTD_CFI_INTELEXT=m +CONFIG_MTD_CFI_AMDSTD=m +CONFIG_MTD_CFI_STAA=m +CONFIG_MTD_ROM=m +CONFIG_MTD_ABSENT=m + +## +## file: drivers/mtd/devices/Kconfig +## +CONFIG_MTD_PMC551=m +CONFIG_MTD_SLRAM=m +CONFIG_MTD_PHRAM=m +CONFIG_MTD_MTDRAM=m +CONFIG_MTD_BLOCK2MTD=m + +## +## file: drivers/mtd/maps/Kconfig +## +CONFIG_MTD_COMPLEX_MAPPINGS=y +CONFIG_MTD_PHYSMAP=m +CONFIG_MTD_PCI=m + +## +## file: drivers/mtd/nand/Kconfig +## +CONFIG_MTD_NAND=m +CONFIG_MTD_NAND_DISKONCHIP=m + +## +## file: drivers/net/Kconfig +## +CONFIG_NET_FC=y + +## +## file: drivers/net/ethernet/Kconfig +## +CONFIG_FEALNX=m + +## +## file: drivers/net/ethernet/3com/Kconfig +## +CONFIG_VORTEX=m +CONFIG_TYPHOON=m + +## +## file: drivers/net/ethernet/8390/Kconfig +## +CONFIG_NE2K_PCI=m + +## +## file: drivers/net/ethernet/amd/Kconfig +## +CONFIG_AMD8111_ETH=m + +## +## file: drivers/net/ethernet/broadcom/Kconfig +## +CONFIG_B44=m + +## +## file: drivers/net/ethernet/dec/tulip/Kconfig +## +CONFIG_NET_TULIP=y +CONFIG_DE2104X=m +CONFIG_TULIP=m +CONFIG_DM9102=m + +## +## file: drivers/net/ethernet/dlink/Kconfig +## +CONFIG_SUNDANCE=m + +## +## file: drivers/net/ethernet/intel/Kconfig +## +CONFIG_E100=m + +## +## file: drivers/net/ethernet/natsemi/Kconfig +## +CONFIG_NATSEMI=m + +## +## file: drivers/net/ethernet/realtek/Kconfig +## +CONFIG_8139CP=m +CONFIG_8139TOO=m + +## +## file: drivers/net/ethernet/sis/Kconfig +## +CONFIG_SIS900=m + +## +## file: drivers/net/ethernet/smsc/Kconfig +## +CONFIG_EPIC100=m + +## +## file: drivers/net/ethernet/via/Kconfig +## +CONFIG_VIA_RHINE=m + +## +## file: drivers/net/wireless/atmel/Kconfig +## +CONFIG_ATMEL=m +CONFIG_PCI_ATMEL=m + +## +## file: drivers/net/wireless/intel/ipw2x00/Kconfig +## +CONFIG_IPW2100=m +CONFIG_IPW2100_MONITOR=y + +## +## file: drivers/net/wireless/intersil/orinoco/Kconfig +## +CONFIG_HERMES=m +CONFIG_PLX_HERMES=m +CONFIG_TMD_HERMES=m +CONFIG_PCI_HERMES=m + +## +## file: drivers/net/wireless/marvell/mwifiex/Kconfig +## +CONFIG_MWIFIEX=m +CONFIG_MWIFIEX_SDIO=m + +## +## file: drivers/net/wireless/zydas/Kconfig +## +CONFIG_USB_ZD1201=m + +## +## file: drivers/pci/pcie/Kconfig +## +# CONFIG_PCIEPORTBUS is not set + +## +## file: drivers/rtc/Kconfig +## +CONFIG_RTC_DRV_DS1307=m +CONFIG_RTC_DRV_DS1672=m +CONFIG_RTC_DRV_MAX6900=m +CONFIG_RTC_DRV_RS5C372=m +CONFIG_RTC_DRV_ISL1208=m +CONFIG_RTC_DRV_X1205=m +CONFIG_RTC_DRV_PCF8563=m +CONFIG_RTC_DRV_PCF8583=m +CONFIG_RTC_DRV_RS5C348=m +CONFIG_RTC_DRV_MAX6902=m +CONFIG_RTC_DRV_CMOS=y +CONFIG_RTC_DRV_M48T86=m + +## +## file: drivers/scsi/Kconfig +## +CONFIG_SCSI_ARCMSR=m +CONFIG_SCSI_DMX3191D=m +CONFIG_SCSI_FUTURE_DOMAIN=m +CONFIG_SCSI_IPS=m +CONFIG_SCSI_INITIO=m +CONFIG_SCSI_INIA100=m +CONFIG_SCSI_SYM53C8XX_2=m +CONFIG_SCSI_QLOGIC_1280=m +CONFIG_SCSI_DC395x=m +CONFIG_SCSI_AM53C974=m +CONFIG_SCSI_DEBUG=m + +## +## file: drivers/scsi/megaraid/Kconfig.megaraid +## +CONFIG_MEGARAID_NEWGEN=y +CONFIG_MEGARAID_MM=m +CONFIG_MEGARAID_MAILBOX=m +CONFIG_MEGARAID_LEGACY=m + +## +## file: drivers/tty/serial/Kconfig +## +CONFIG_SERIAL_JSM=m + +## +## file: drivers/tty/serial/8250/Kconfig +## +CONFIG_SERIAL_8250_NR_UARTS=4 +CONFIG_SERIAL_8250_RUNTIME_UARTS=4 +CONFIG_SERIAL_8250_EXTENDED=y +CONFIG_SERIAL_8250_SHARE_IRQ=y +CONFIG_SERIAL_8250_RSA=y + +## +## file: drivers/usb/Kconfig +## +CONFIG_USB_USS720=m + +## +## file: drivers/usb/atm/Kconfig +## +CONFIG_USB_ATM=m +CONFIG_USB_SPEEDTOUCH=m + +## +## file: drivers/usb/host/Kconfig +## +CONFIG_USB_ISP116X_HCD=m +CONFIG_USB_UHCI_HCD=m +CONFIG_USB_SL811_HCD=m + +## +## file: drivers/video/fbdev/Kconfig +## +CONFIG_FB_MODE_HELPERS=y +CONFIG_FB_TILEBLITTING=y +CONFIG_FB_CIRRUS=y +CONFIG_FB_PM2=m +CONFIG_FB_PM2_FIFO_DISCONNECT=y +CONFIG_FB_CYBER2000=m +CONFIG_FB_S1D13XXX=m +CONFIG_FB_MATROX=m +CONFIG_FB_MATROX_MILLENIUM=y +CONFIG_FB_MATROX_MYSTIQUE=y +CONFIG_FB_MATROX_G=y +CONFIG_FB_MATROX_I2C=m +CONFIG_FB_MATROX_MAVEN=m +CONFIG_FB_RADEON=m +CONFIG_FB_RADEON_I2C=y +CONFIG_FB_RADEON_BACKLIGHT=y +CONFIG_FB_ATY128=m +CONFIG_FB_ATY128_BACKLIGHT=y +CONFIG_FB_ATY=m +CONFIG_FB_ATY_CT=y +CONFIG_FB_ATY_GX=y +CONFIG_FB_ATY_BACKLIGHT=y +CONFIG_FB_SAVAGE=m +CONFIG_FB_SIS=m +CONFIG_FB_SIS_300=y +CONFIG_FB_SIS_315=y +CONFIG_FB_NEOMAGIC=m +CONFIG_FB_KYRO=m +CONFIG_FB_VOODOO1=m +CONFIG_FB_TRIDENT=m +CONFIG_FB_VIRTUAL=m + +## +## file: drivers/watchdog/Kconfig +## +CONFIG_PCIPCWATCHDOG=m +CONFIG_WDTPCI=m +CONFIG_USBPCWATCHDOG=m + +## +## file: net/ax25/Kconfig +## +CONFIG_HAMRADIO=y +CONFIG_AX25=m +CONFIG_NETROM=m +CONFIG_ROSE=m + +## +## file: net/decnet/Kconfig +## +CONFIG_DECNET=m + +## +## file: net/decnet/netfilter/Kconfig +## +CONFIG_DECNET_NF_GRABULATOR=m + +## +## file: net/ipx/Kconfig +## +CONFIG_IPX=m + +## +## file: net/lapb/Kconfig +## +CONFIG_LAPB=m + +## +## file: sound/drivers/Kconfig +## +CONFIG_SND_DUMMY=m +CONFIG_SND_VIRMIDI=m +CONFIG_SND_MTPAV=m +CONFIG_SND_SERIAL_U16550=m +CONFIG_SND_MPU401=m + +## +## file: sound/pci/Kconfig +## +CONFIG_SND_ALI5451=m +CONFIG_SND_ATIIXP=m +CONFIG_SND_ATIIXP_MODEM=m +CONFIG_SND_AU8810=m +CONFIG_SND_AU8820=m +CONFIG_SND_AU8830=m +CONFIG_SND_AZT3328=m +CONFIG_SND_BT87X=m +CONFIG_SND_CA0106=m +CONFIG_SND_CMIPCI=m +CONFIG_SND_CS4281=m +CONFIG_SND_CS46XX=m +CONFIG_SND_CS46XX_NEW_DSP=y +CONFIG_SND_EMU10K1=m +CONFIG_SND_EMU10K1X=m +CONFIG_SND_ENS1370=m +CONFIG_SND_ENS1371=m +CONFIG_SND_ES1938=m +CONFIG_SND_ES1968=m +CONFIG_SND_FM801=m +CONFIG_SND_FM801_TEA575X_BOOL=y +CONFIG_SND_HDSP=m +CONFIG_SND_ICE1712=m +CONFIG_SND_ICE1724=m +CONFIG_SND_INTEL8X0=m +CONFIG_SND_INTEL8X0M=m +CONFIG_SND_KORG1212=m +CONFIG_SND_MAESTRO3=m +CONFIG_SND_MIXART=m +CONFIG_SND_NM256=m +CONFIG_SND_RME32=m +CONFIG_SND_RME96=m +CONFIG_SND_RME9652=m +CONFIG_SND_SONICVIBES=m +CONFIG_SND_TRIDENT=m +CONFIG_SND_VIA82XX=m +CONFIG_SND_VIA82XX_MODEM=m +CONFIG_SND_VX222=m +CONFIG_SND_YMFPCI=m + diff --git a/config/kernelarch-mips/config.mips32r2 b/config/kernelarch-mips/config.mips32r2 new file mode 100644 index 00000000000..88f2c05a9e7 --- /dev/null +++ b/config/kernelarch-mips/config.mips32r2 @@ -0,0 +1,10 @@ +## +## file: arch/mips/Kconfig +## +## choice: CPU type +CONFIG_CPU_MIPS32_R2=y +## end choice +## choice: Kernel code model +CONFIG_32BIT=y +## end choice + diff --git a/config/kernelarch-mips/config.mips32r6 b/config/kernelarch-mips/config.mips32r6 new file mode 100644 index 00000000000..c95ffabb9f6 --- /dev/null +++ b/config/kernelarch-mips/config.mips32r6 @@ -0,0 +1,10 @@ +## +## file: arch/mips/Kconfig +## +## choice: CPU type +CONFIG_CPU_MIPS32_R6=y +## end choice +## choice: Kernel code model +CONFIG_32BIT=y +## end choice + diff --git a/config/kernelarch-mips/config.mips64r2 b/config/kernelarch-mips/config.mips64r2 new file mode 100644 index 00000000000..1c1bed181bb --- /dev/null +++ b/config/kernelarch-mips/config.mips64r2 @@ -0,0 +1,10 @@ +## +## file: arch/mips/Kconfig +## +## choice: CPU type +CONFIG_CPU_MIPS64_R2=y +## end choice +## choice: Kernel code model +CONFIG_64BIT=y +## end choice + diff --git a/config/kernelarch-mips/config.mips64r6 b/config/kernelarch-mips/config.mips64r6 new file mode 100644 index 00000000000..2cd32b0b5d9 --- /dev/null +++ b/config/kernelarch-mips/config.mips64r6 @@ -0,0 +1,10 @@ +## +## file: arch/mips/Kconfig +## +## choice: CPU type +CONFIG_CPU_MIPS64_R6=y +## end choice +## choice: Kernel code model +CONFIG_64BIT=y +## end choice + diff --git a/config/kernelarch-mips/config.octeon b/config/kernelarch-mips/config.octeon new file mode 100644 index 00000000000..7b05c4ba453 --- /dev/null +++ b/config/kernelarch-mips/config.octeon @@ -0,0 +1,188 @@ +## +## file: arch/mips/Kconfig +## +## choice: System type +CONFIG_CAVIUM_OCTEON_SOC=y +## end choice +## choice: Kernel code model +# CONFIG_32BIT is not set +CONFIG_64BIT=y +## end choice +CONFIG_SMP=y +# CONFIG_HOTPLUG_CPU is not set +CONFIG_NR_CPUS=64 + +## +## file: arch/mips/cavium-octeon/Kconfig +## +CONFIG_CAVIUM_CN63XXP1=y +CONFIG_CAVIUM_OCTEON_CVMSEG_SIZE=1 +CONFIG_CAVIUM_OCTEON_LOCK_L2=y +CONFIG_CAVIUM_OCTEON_LOCK_L2_TLB=y +CONFIG_CAVIUM_OCTEON_LOCK_L2_EXCEPTION=y +CONFIG_CAVIUM_OCTEON_LOCK_L2_LOW_LEVEL_INTERRUPT=y +CONFIG_CAVIUM_OCTEON_LOCK_L2_INTERRUPT=y +CONFIG_CAVIUM_OCTEON_LOCK_L2_MEMCPY=y + +## +## file: crypto/Kconfig +## +CONFIG_CRYPTO_MD5_OCTEON=m +CONFIG_CRYPTO_SHA1_OCTEON=m +CONFIG_CRYPTO_SHA256_OCTEON=m +CONFIG_CRYPTO_SHA512_OCTEON=m + +## +## file: drivers/ata/Kconfig +## +CONFIG_SATA_AHCI_PLATFORM=m +CONFIG_AHCI_OCTEON=m +CONFIG_PATA_OCTEON_CF=y + +## +## file: drivers/char/hw_random/Kconfig +## +CONFIG_HW_RANDOM_OCTEON=m + +## +## file: drivers/edac/Kconfig +## +CONFIG_EDAC=y +CONFIG_EDAC_OCTEON_PC=m +CONFIG_EDAC_OCTEON_L2C=m +CONFIG_EDAC_OCTEON_LMC=m +CONFIG_EDAC_OCTEON_PCI=m + +## +## file: drivers/hwmon/Kconfig +## +CONFIG_SENSORS_ADM1031=m + +## +## file: drivers/i2c/Kconfig +## +CONFIG_I2C=y + +## +## file: drivers/i2c/busses/Kconfig +## +CONFIG_I2C_OCTEON=y + +## +## file: drivers/input/keyboard/Kconfig +## +# CONFIG_KEYBOARD_ATKBD is not set + +## +## file: drivers/input/mouse/Kconfig +## +# CONFIG_MOUSE_PS2 is not set + +## +## file: drivers/input/serio/Kconfig +## +# CONFIG_SERIO_I8042 is not set + +## +## file: drivers/input/touchscreen/Kconfig +## +# CONFIG_INPUT_TOUCHSCREEN is not set + +## +## file: drivers/mmc/Kconfig +## +CONFIG_MMC=m + +## +## file: drivers/mmc/core/Kconfig +## +CONFIG_MMC_BLOCK=m + +## +## file: drivers/mmc/host/Kconfig +## +CONFIG_MMC_CAVIUM_OCTEON=m + +## +## file: drivers/mtd/Kconfig +## +CONFIG_MTD=y +CONFIG_MTD_BLOCK=y + +## +## file: drivers/mtd/chips/Kconfig +## +CONFIG_MTD_CFI=y +CONFIG_MTD_CFI_AMDSTD=y + +## +## file: drivers/mtd/maps/Kconfig +## +CONFIG_MTD_PHYSMAP=y + +## +## file: drivers/net/ethernet/cavium/Kconfig +## +CONFIG_OCTEON_MGMT_ETHERNET=y + +## +## file: drivers/net/phy/Kconfig +## +CONFIG_MDIO_OCTEON=y + +## +## file: drivers/rtc/Kconfig +## +CONFIG_RTC_DRV_DS1307=y + +## +## file: drivers/spi/Kconfig +## +CONFIG_SPI_OCTEON=y + +## +## file: drivers/staging/octeon/Kconfig +## +CONFIG_OCTEON_ETHERNET=y + +## +## file: drivers/staging/octeon-usb/Kconfig +## +CONFIG_OCTEON_USB=y + +## +## file: drivers/tty/serial/8250/Kconfig +## +CONFIG_SERIAL_8250_NR_UARTS=2 +CONFIG_SERIAL_8250_RUNTIME_UARTS=2 +CONFIG_SERIAL_8250_DW=y + +## +## file: drivers/usb/host/Kconfig +## +CONFIG_USB_OCTEON_EHCI=y +CONFIG_USB_OCTEON_OHCI=y + +## +## file: drivers/video/console/Kconfig +## +# CONFIG_FRAMEBUFFER_CONSOLE is not set + +## +## file: drivers/video/fbdev/Kconfig +## +# CONFIG_FB is not set + +## +## file: kernel/power/Kconfig +## +# CONFIG_SUSPEND is not set +# CONFIG_HIBERNATION is not set + +## +## file: mm/Kconfig +## +## choice: Memory model +CONFIG_SPARSEMEM_MANUAL=y +## end choice + diff --git a/config/kernelarch-powerpc/config b/config/kernelarch-powerpc/config new file mode 100644 index 00000000000..c328ef9cba3 --- /dev/null +++ b/config/kernelarch-powerpc/config @@ -0,0 +1,960 @@ +## +## file: arch/powerpc/Kconfig +## +# CONFIG_HOTPLUG_CPU is not set +CONFIG_KEXEC=y +CONFIG_CMDLINE_BOOL=y +CONFIG_CMDLINE="console=ttyS0,9600 console=tty0" +CONFIG_SECCOMP=y +CONFIG_PCI=y +# CONFIG_RAPIDIO is not set +# CONFIG_ADVANCED_OPTIONS is not set + +## +## file: arch/powerpc/Kconfig.debug +## +CONFIG_PPC_DISABLE_WERROR=y +# CONFIG_CODE_PATCHING_SELFTEST is not set +# CONFIG_FTR_FIXUP_SELFTEST is not set +# CONFIG_MSI_BITMAP_SELFTEST is not set +CONFIG_XMON=y +# CONFIG_XMON_DEFAULT is not set +CONFIG_XMON_DISASSEMBLY=y +# CONFIG_BDI_SWITCH is not set +CONFIG_BOOTX_TEXT=y + +## +## file: arch/powerpc/kvm/Kconfig +## +CONFIG_VIRTUALIZATION=y + +## +## file: arch/powerpc/platforms/Kconfig +## +CONFIG_KVM_GUEST=y +CONFIG_RTAS_PROC=y +CONFIG_PPC601_SYNC_FIX=y +CONFIG_TAU=y +# CONFIG_TAU_INT is not set +# CONFIG_TAU_AVERAGE is not set + +## +## file: arch/powerpc/platforms/52xx/Kconfig +## +# CONFIG_PPC_LITE5200 is not set + +## +## file: arch/powerpc/platforms/82xx/Kconfig +## +# CONFIG_PPC_82xx is not set + +## +## file: arch/powerpc/platforms/83xx/Kconfig +## +# CONFIG_PPC_83xx is not set + +## +## file: arch/powerpc/platforms/86xx/Kconfig +## +# CONFIG_PPC_86xx is not set + +## +## file: arch/powerpc/platforms/powermac/Kconfig +## +CONFIG_PPC_PMAC=y + +## +## file: block/partitions/Kconfig +## +CONFIG_AMIGA_PARTITION=y +CONFIG_MAC_PARTITION=y + +## +## file: crypto/Kconfig +## +CONFIG_CRYPTO_SHA1_PPC=m + +## +## file: drivers/ata/Kconfig +## +CONFIG_ATA=y +CONFIG_PATA_HPT366=m +CONFIG_PATA_HPT37X=m +CONFIG_PATA_MACIO=y +CONFIG_PATA_NETCELL=m +CONFIG_PATA_NS87415=m +CONFIG_PATA_PDC2027X=m +CONFIG_PATA_PDC_OLD=m +CONFIG_PATA_SC1200=m +CONFIG_PATA_SIL680=m +CONFIG_PATA_VIA=m +CONFIG_PATA_WINBOND=m +CONFIG_PATA_NS87410=m +CONFIG_PATA_PCMCIA=m + +## +## file: drivers/atm/Kconfig +## +CONFIG_ATM_DRIVERS=y +CONFIG_ATM_TCP=m +CONFIG_ATM_LANAI=m +CONFIG_ATM_ENI=m +# CONFIG_ATM_ENI_DEBUG is not set +# CONFIG_ATM_ENI_TUNE_BURST is not set +CONFIG_ATM_FIRESTREAM=m +CONFIG_ATM_ZATM=m +CONFIG_ATM_ZATM_DEBUG=y +CONFIG_ATM_NICSTAR=m +CONFIG_ATM_NICSTAR_USE_SUNI=y +CONFIG_ATM_NICSTAR_USE_IDT77105=y +CONFIG_ATM_IDT77252=m +# CONFIG_ATM_IDT77252_DEBUG is not set +# CONFIG_ATM_IDT77252_RCV_ALL is not set +CONFIG_ATM_AMBASSADOR=m +# CONFIG_ATM_AMBASSADOR_DEBUG is not set +CONFIG_ATM_HORIZON=m +# CONFIG_ATM_HORIZON_DEBUG is not set +CONFIG_ATM_IA=m +# CONFIG_ATM_IA_DEBUG is not set +CONFIG_ATM_FORE200E_USE_TASKLET=y +CONFIG_ATM_FORE200E_TX_RETRY=16 +CONFIG_ATM_FORE200E_DEBUG=0 +CONFIG_ATM_HE=m +# CONFIG_ATM_HE_USE_SUNI is not set + +## +## file: drivers/block/Kconfig +## +CONFIG_BLK_DEV_FD=m +CONFIG_BLK_DEV_DAC960=m +CONFIG_BLK_DEV_UMEM=m +CONFIG_BLK_DEV_SX8=m +CONFIG_CDROM_PKTCDVD=m +CONFIG_CDROM_PKTCDVD_BUFFERS=8 +# CONFIG_CDROM_PKTCDVD_WCACHE is not set + +## +## file: drivers/bluetooth/Kconfig +## +CONFIG_BT_HCIUART=m +CONFIG_BT_HCIUART_H4=y +CONFIG_BT_HCIUART_BCSP=y +CONFIG_BT_HCIBCM203X=m +CONFIG_BT_HCIBPA10X=m +CONFIG_BT_HCIBFUSB=m +CONFIG_BT_HCIDTL1=m +CONFIG_BT_HCIBT3C=m +CONFIG_BT_HCIBLUECARD=m +CONFIG_BT_HCIVHCI=m + +## +## file: drivers/char/Kconfig +## +CONFIG_PRINTER=m +CONFIG_NVRAM=y +CONFIG_DTLK=m +CONFIG_APPLICOM=m + +## +## file: drivers/char/agp/Kconfig +## +#. Workaround +CONFIG_AGP=y +#. Workaround +CONFIG_AGP_UNINORTH=y + +## +## file: drivers/char/ipmi/Kconfig +## +CONFIG_IPMI_HANDLER=m +# CONFIG_IPMI_PANIC_EVENT is not set +CONFIG_IPMI_DEVICE_INTERFACE=m +CONFIG_IPMI_SI=m +CONFIG_IPMI_POWERNV=m +CONFIG_IPMI_WATCHDOG=m +CONFIG_IPMI_POWEROFF=m + +## +## file: drivers/cpufreq/Kconfig.powerpc +## +CONFIG_CPU_FREQ_PMAC=y + +## +## file: drivers/gpu/drm/Kconfig +## +CONFIG_DRM=m +CONFIG_DRM_RADEON=m +CONFIG_DRM_TDFX=m +CONFIG_DRM_R128=m +CONFIG_DRM_MGA=m +# CONFIG_DRM_SIS is not set + +## +## file: drivers/gpu/drm/i2c/Kconfig +## +CONFIG_DRM_I2C_CH7006=m +CONFIG_DRM_I2C_SIL164=m + +## +## file: drivers/gpu/drm/nouveau/Kconfig +## +CONFIG_DRM_NOUVEAU=m +CONFIG_DRM_NOUVEAU_BACKLIGHT=y + +## +## file: drivers/hid/Kconfig +## +CONFIG_HID_APPLEIR=m + +## +## file: drivers/hid/usbhid/Kconfig +## +CONFIG_USB_HID=m + +## +## file: drivers/hwmon/Kconfig +## +CONFIG_SENSORS_ADM1021=m +CONFIG_SENSORS_ADM1025=m +CONFIG_SENSORS_ADM1026=m +CONFIG_SENSORS_ADM1031=m +CONFIG_SENSORS_ASB100=m +CONFIG_SENSORS_DS1621=m +CONFIG_SENSORS_F71805F=m +CONFIG_SENSORS_GL518SM=m +CONFIG_SENSORS_GL520SM=m +CONFIG_SENSORS_IT87=m +CONFIG_SENSORS_MAX1619=m +CONFIG_SENSORS_LM63=m +CONFIG_SENSORS_LM75=m +CONFIG_SENSORS_LM77=m +CONFIG_SENSORS_LM78=m +CONFIG_SENSORS_LM80=m +CONFIG_SENSORS_LM83=m +CONFIG_SENSORS_LM85=m +CONFIG_SENSORS_LM87=m +CONFIG_SENSORS_LM90=m +CONFIG_SENSORS_LM92=m +CONFIG_SENSORS_PC87360=m +CONFIG_SENSORS_PCF8591=m +CONFIG_SENSORS_SIS5595=m +CONFIG_SENSORS_SMSC47M1=m +CONFIG_SENSORS_SMSC47B397=m +CONFIG_SENSORS_VIA686A=m +CONFIG_SENSORS_W83781D=m +CONFIG_SENSORS_W83L785TS=m +CONFIG_SENSORS_W83627HF=m + +## +## file: drivers/i2c/Kconfig +## +CONFIG_I2C=y +# CONFIG_I2C_STUB is not set +# CONFIG_I2C_DEBUG_CORE is not set +# CONFIG_I2C_DEBUG_ALGO is not set +# CONFIG_I2C_DEBUG_BUS is not set + +## +## file: drivers/i2c/busses/Kconfig +## +# CONFIG_I2C_ALI1535 is not set +# CONFIG_I2C_ALI1563 is not set +# CONFIG_I2C_ALI15X3 is not set +# CONFIG_I2C_AMD756 is not set +# CONFIG_I2C_AMD8111 is not set +# CONFIG_I2C_I801 is not set +# CONFIG_I2C_PIIX4 is not set +# CONFIG_I2C_NFORCE2 is not set +CONFIG_I2C_SIS5595=m +CONFIG_I2C_SIS630=m +CONFIG_I2C_SIS96X=m +CONFIG_I2C_VIA=m +CONFIG_I2C_VIAPRO=m +CONFIG_I2C_HYDRA=m +#. This isn't auto-loaded (#713943) +CONFIG_I2C_POWERMAC=y +CONFIG_I2C_MPC=m +CONFIG_I2C_PARPORT_LIGHT=m +CONFIG_I2C_PCA_ISA=m +CONFIG_SCx200_ACB=m + +## +## file: drivers/input/gameport/Kconfig +## +CONFIG_GAMEPORT=m +CONFIG_GAMEPORT_NS558=m +CONFIG_GAMEPORT_L4=m +CONFIG_GAMEPORT_EMU10K1=m +CONFIG_GAMEPORT_FM801=m + +## +## file: drivers/input/joystick/Kconfig +## +CONFIG_INPUT_JOYSTICK=y + +## +## file: drivers/input/keyboard/Kconfig +## +CONFIG_INPUT_KEYBOARD=y +CONFIG_KEYBOARD_ATKBD=m +# CONFIG_KEYBOARD_LKKBD is not set +# CONFIG_KEYBOARD_NEWTON is not set +# CONFIG_KEYBOARD_SUNKBD is not set +# CONFIG_KEYBOARD_XTKBD is not set + +## +## file: drivers/input/misc/Kconfig +## +CONFIG_INPUT_MISC=y +CONFIG_INPUT_PCSPKR=m +CONFIG_INPUT_UINPUT=m + +## +## file: drivers/input/mouse/Kconfig +## +CONFIG_INPUT_MOUSE=y +CONFIG_MOUSE_PS2=m +# CONFIG_MOUSE_SERIAL is not set +CONFIG_MOUSE_APPLETOUCH=m +CONFIG_MOUSE_BCM5974=m +# CONFIG_MOUSE_VSXXXAA is not set + +## +## file: drivers/input/serio/Kconfig +## +CONFIG_SERIO=m +CONFIG_SERIO_I8042=m +CONFIG_SERIO_SERPORT=m +# CONFIG_SERIO_PCIPS2 is not set +CONFIG_SERIO_LIBPS2=m +CONFIG_SERIO_RAW=m + +## +## file: drivers/input/touchscreen/Kconfig +## +CONFIG_INPUT_TOUCHSCREEN=y + +## +## file: drivers/isdn/Kconfig +## +CONFIG_ISDN=y +CONFIG_ISDN_CAPI=m + +## +## file: drivers/isdn/capi/Kconfig +## +CONFIG_ISDN_CAPI_CAPI20=m +CONFIG_ISDN_CAPI_MIDDLEWARE=y + +## +## file: drivers/isdn/hardware/avm/Kconfig +## +CONFIG_CAPI_AVM=y +CONFIG_ISDN_DRV_AVMB1_B1PCI=m +CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y +CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m +CONFIG_ISDN_DRV_AVMB1_AVM_CS=m +CONFIG_ISDN_DRV_AVMB1_T1PCI=m +CONFIG_ISDN_DRV_AVMB1_C4=m + +## +## file: drivers/isdn/hardware/eicon/Kconfig +## +CONFIG_CAPI_EICON=y +CONFIG_ISDN_DIVAS=m +CONFIG_ISDN_DIVAS_BRIPCI=y +CONFIG_ISDN_DIVAS_PRIPCI=y +CONFIG_ISDN_DIVAS_DIVACAPI=m +CONFIG_ISDN_DIVAS_USERIDI=m +CONFIG_ISDN_DIVAS_MAINT=m + +## +## file: drivers/macintosh/Kconfig +## +CONFIG_MACINTOSH_DRIVERS=y +CONFIG_ADB=y +CONFIG_ADB_CUDA=y +CONFIG_ADB_PMU=y +CONFIG_ADB_PMU_LED=y +# CONFIG_ADB_PMU_LED_DISK is not set +CONFIG_PMAC_SMU=y +# CONFIG_PMAC_APM_EMU is not set +CONFIG_PMAC_MEDIABAY=y +CONFIG_PMAC_BACKLIGHT=y +CONFIG_ADB_MACIO=y +CONFIG_INPUT_ADBHID=y +CONFIG_MAC_EMUMOUSEBTN=y +CONFIG_THERM_WINDTUNNEL=m +CONFIG_THERM_ADT746X=m +CONFIG_WINDFARM=m +CONFIG_ANSLCD=m +CONFIG_PMAC_RACKMETER=m + +## +## file: drivers/media/radio/Kconfig +## +CONFIG_USB_DSBR=m +CONFIG_RADIO_MAXIRADIO=m + +## +## file: drivers/misc/Kconfig +## +CONFIG_PHANTOM=m +CONFIG_HP_ILO=m + +## +## file: drivers/mmc/Kconfig +## +CONFIG_MMC=m + +## +## file: drivers/mmc/core/Kconfig +## +CONFIG_MMC_BLOCK=m + +## +## file: drivers/mmc/host/Kconfig +## +# CONFIG_MMC_DEBUG is not set + +## +## file: drivers/mtd/Kconfig +## +# CONFIG_MTD is not set + +## +## file: drivers/net/Kconfig +## +CONFIG_NET_FC=y + +## +## file: drivers/net/arcnet/Kconfig +## +CONFIG_ARCNET=m +CONFIG_ARCNET_1201=m +CONFIG_ARCNET_1051=m +CONFIG_ARCNET_RAW=m +CONFIG_ARCNET_CAP=m +# CONFIG_ARCNET_COM90xx is not set +CONFIG_ARCNET_COM90xxIO=m +# CONFIG_ARCNET_RIM_I is not set +CONFIG_ARCNET_COM20020=m +CONFIG_ARCNET_COM20020_PCI=m +CONFIG_ARCNET_COM20020_CS=m + +## +## file: drivers/net/ethernet/Kconfig +## +CONFIG_FEALNX=m + +## +## file: drivers/net/ethernet/3com/Kconfig +## +CONFIG_NET_VENDOR_3COM=y +CONFIG_PCMCIA_3C574=m +CONFIG_PCMCIA_3C589=m +CONFIG_VORTEX=m +CONFIG_TYPHOON=m + +## +## file: drivers/net/ethernet/8390/Kconfig +## +CONFIG_PCMCIA_AXNET=m +CONFIG_NE2K_PCI=m +CONFIG_PCMCIA_PCNET=m + +## +## file: drivers/net/ethernet/adaptec/Kconfig +## +CONFIG_ADAPTEC_STARFIRE=m + +## +## file: drivers/net/ethernet/amd/Kconfig +## +# CONFIG_AMD8111_ETH is not set +CONFIG_PCMCIA_NMCLAN=m + +## +## file: drivers/net/ethernet/apple/Kconfig +## +CONFIG_MACE=m +# CONFIG_MACE_AAUI_PORT is not set +CONFIG_BMAC=m + +## +## file: drivers/net/ethernet/broadcom/Kconfig +## +CONFIG_B44=m + +## +## file: drivers/net/ethernet/dec/tulip/Kconfig +## +CONFIG_NET_TULIP=y +CONFIG_DE2104X=m +CONFIG_TULIP=m +# CONFIG_TULIP_MWI is not set +# CONFIG_TULIP_MMIO is not set +CONFIG_WINBOND_840=m +CONFIG_DM9102=m +CONFIG_PCMCIA_XIRCOM=m + +## +## file: drivers/net/ethernet/dlink/Kconfig +## +CONFIG_SUNDANCE=m +CONFIG_SUNDANCE_MMIO=y + +## +## file: drivers/net/ethernet/fujitsu/Kconfig +## +CONFIG_PCMCIA_FMVJ18X=m + +## +## file: drivers/net/ethernet/hp/Kconfig +## +# CONFIG_HP100 is not set + +## +## file: drivers/net/ethernet/intel/Kconfig +## +CONFIG_E100=m + +## +## file: drivers/net/ethernet/marvell/Kconfig +## +CONFIG_MV643XX_ETH=m + +## +## file: drivers/net/ethernet/natsemi/Kconfig +## +CONFIG_NATSEMI=m + +## +## file: drivers/net/ethernet/nvidia/Kconfig +## +# CONFIG_FORCEDETH is not set + +## +## file: drivers/net/ethernet/realtek/Kconfig +## +CONFIG_8139CP=m +CONFIG_8139TOO=m + +## +## file: drivers/net/ethernet/sis/Kconfig +## +CONFIG_SIS900=m + +## +## file: drivers/net/ethernet/smsc/Kconfig +## +CONFIG_PCMCIA_SMC91C92=m +CONFIG_EPIC100=m + +## +## file: drivers/net/ethernet/sun/Kconfig +## +CONFIG_HAPPYMEAL=m +CONFIG_SUNGEM=m + +## +## file: drivers/net/ethernet/ti/Kconfig +## +CONFIG_TLAN=m + +## +## file: drivers/net/ethernet/via/Kconfig +## +CONFIG_VIA_RHINE=m +CONFIG_VIA_RHINE_MMIO=y + +## +## file: drivers/net/ethernet/xircom/Kconfig +## +CONFIG_PCMCIA_XIRC2PS=m + +## +## file: drivers/net/fddi/Kconfig +## +CONFIG_FDDI=y +CONFIG_SKFP=m + +## +## file: drivers/net/hippi/Kconfig +## +CONFIG_HIPPI=y +# CONFIG_ROADRUNNER is not set + +## +## file: drivers/net/wan/Kconfig +## +CONFIG_WAN=y +CONFIG_LANMEDIA=m +CONFIG_PCI200SYN=m +CONFIG_WANXL=m +CONFIG_FARSYNC=m +CONFIG_DSCC4=m +# CONFIG_DSCC4_PCISYNC is not set +# CONFIG_DSCC4_PCI_RST is not set +CONFIG_DLCI=m +CONFIG_DLCI_MAX=8 + +## +## file: drivers/net/wireless/Kconfig +## +CONFIG_PCMCIA_RAYCS=m +CONFIG_PCMCIA_WL3501=m + +## +## file: drivers/net/wireless/atmel/Kconfig +## +CONFIG_ATMEL=m +# CONFIG_PCI_ATMEL is not set +CONFIG_PCMCIA_ATMEL=m + +## +## file: drivers/net/wireless/cisco/Kconfig +## +CONFIG_AIRO_CS=m + +## +## file: drivers/net/wireless/intel/ipw2x00/Kconfig +## +# CONFIG_IPW2100 is not set + +## +## file: drivers/net/wireless/intersil/orinoco/Kconfig +## +CONFIG_HERMES=m +CONFIG_APPLE_AIRPORT=m +CONFIG_PLX_HERMES=m +CONFIG_TMD_HERMES=m +CONFIG_PCI_HERMES=m +CONFIG_PCMCIA_HERMES=m + +## +## file: drivers/net/wireless/marvell/mwifiex/Kconfig +## +CONFIG_MWIFIEX=m +CONFIG_MWIFIEX_SDIO=m +CONFIG_MWIFIEX_PCIE=m + +## +## file: drivers/net/wireless/zydas/Kconfig +## +CONFIG_USB_ZD1201=m + +## +## file: drivers/pci/hotplug/Kconfig +## +# CONFIG_HOTPLUG_PCI is not set + +## +## file: drivers/pcmcia/Kconfig +## +CONFIG_PCCARD=m +CONFIG_PCMCIA=m +CONFIG_CARDBUS=y +CONFIG_YENTA=m +CONFIG_PD6729=m +CONFIG_I82092=m +CONFIG_TCIC=m +# CONFIG_PCMCIA_DEBUG is not set + +## +## file: drivers/power/supply/Kconfig +## +CONFIG_BATTERY_PMU=m + +## +## file: drivers/rtc/Kconfig +## +CONFIG_RTC_DRV_GENERIC=y + +## +## file: drivers/scsi/Kconfig +## +CONFIG_SCSI_DPT_I2O=m +CONFIG_SCSI_ARCMSR=m +CONFIG_SCSI_BUSLOGIC=m +CONFIG_SCSI_DMX3191D=m +CONFIG_SCSI_EATA=m +# CONFIG_SCSI_EATA_TAGGED_QUEUE is not set +# CONFIG_SCSI_EATA_LINKED_COMMANDS is not set +CONFIG_SCSI_EATA_MAX_TAGS=16 +# CONFIG_SCSI_FUTURE_DOMAIN is not set +# CONFIG_SCSI_GDTH is not set +CONFIG_SCSI_IPS=m +# CONFIG_SCSI_INITIO is not set +CONFIG_SCSI_INIA100=m +CONFIG_SCSI_SYM53C8XX_2=m +CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 +CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 +CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 +CONFIG_SCSI_IPR=m +# CONFIG_SCSI_IPR_TRACE is not set +# CONFIG_SCSI_IPR_DUMP is not set +# CONFIG_SCSI_QLOGIC_1280 is not set +CONFIG_SCSI_DC395x=m +CONFIG_SCSI_AM53C974=m +CONFIG_SCSI_NSP32=m +CONFIG_SCSI_MESH=m +CONFIG_SCSI_MESH_SYNC_RATE=5 +CONFIG_SCSI_MESH_RESET_DELAY_MS=4000 +CONFIG_SCSI_MAC53C94=m + +## +## file: drivers/scsi/megaraid/Kconfig.megaraid +## +CONFIG_MEGARAID_NEWGEN=y +CONFIG_MEGARAID_MM=m +CONFIG_MEGARAID_MAILBOX=m +# CONFIG_MEGARAID_LEGACY is not set + +## +## file: drivers/scsi/pcmcia/Kconfig +## +CONFIG_PCMCIA_AHA152X=m +# CONFIG_PCMCIA_FDOMAIN is not set +CONFIG_PCMCIA_NINJA_SCSI=m +CONFIG_PCMCIA_QLOGIC=m +CONFIG_PCMCIA_SYM53C500=m + +## +## file: drivers/tty/Kconfig +## +CONFIG_VT=y +CONFIG_VT_CONSOLE=y +# CONFIG_SERIAL_NONSTANDARD is not set + +## +## file: drivers/tty/hvc/Kconfig +## +CONFIG_HVC_RTAS=y + +## +## file: drivers/tty/serial/Kconfig +## +CONFIG_SERIAL_PMACZILOG=y +CONFIG_SERIAL_PMACZILOG_CONSOLE=y +CONFIG_SERIAL_JSM=m + +## +## file: drivers/tty/serial/8250/Kconfig +## +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_CS=m +CONFIG_SERIAL_8250_NR_UARTS=32 +CONFIG_SERIAL_8250_RUNTIME_UARTS=4 +# CONFIG_SERIAL_8250_EXTENDED is not set + +## +## file: drivers/usb/Kconfig +## +CONFIG_USB=m + +## +## file: drivers/usb/atm/Kconfig +## +CONFIG_USB_ATM=m +CONFIG_USB_SPEEDTOUCH=m + +## +## file: drivers/usb/host/Kconfig +## +CONFIG_USB_EHCI_HCD=m +CONFIG_USB_OHCI_HCD=y +CONFIG_USB_OHCI_HCD_PPC_OF_BE=y +CONFIG_USB_OHCI_HCD_PPC_OF_LE=y +CONFIG_USB_OHCI_HCD_PCI=y +CONFIG_USB_UHCI_HCD=m +CONFIG_USB_SL811_HCD=m +CONFIG_USB_SL811_CS=m + +## +## file: drivers/video/console/Kconfig +## +CONFIG_VGA_CONSOLE=y + +## +## file: drivers/video/fbdev/Kconfig +## +CONFIG_FB_MODE_HELPERS=y +CONFIG_FB_TILEBLITTING=y +CONFIG_FB_CIRRUS=m +# CONFIG_FB_PM2 is not set +# CONFIG_FB_CYBER2000 is not set +CONFIG_FB_OF=y +# CONFIG_FB_ASILIANT is not set +# CONFIG_FB_VGA16 is not set +CONFIG_FB_S1D13XXX=m +CONFIG_FB_MATROX=m +CONFIG_FB_MATROX_MILLENIUM=y +CONFIG_FB_MATROX_MYSTIQUE=y +CONFIG_FB_MATROX_G=y +CONFIG_FB_MATROX_I2C=m +CONFIG_FB_MATROX_MAVEN=m +CONFIG_FB_RADEON=m +CONFIG_FB_RADEON_I2C=y +# CONFIG_FB_RADEON_DEBUG is not set +CONFIG_FB_ATY=m +CONFIG_FB_ATY_CT=y +CONFIG_FB_ATY_GENERIC_LCD=y +CONFIG_FB_ATY_GX=y +CONFIG_FB_SAVAGE=m +CONFIG_FB_SAVAGE_I2C=y +CONFIG_FB_SAVAGE_ACCEL=y +CONFIG_FB_SIS=m +CONFIG_FB_SIS_300=y +CONFIG_FB_SIS_315=y +CONFIG_FB_NEOMAGIC=m +CONFIG_FB_KYRO=m +CONFIG_FB_VOODOO1=m +CONFIG_FB_TRIDENT=m +CONFIG_FB_IBM_GXT4500=m +# CONFIG_FB_VIRTUAL is not set + +## +## file: drivers/watchdog/Kconfig +## +CONFIG_WATCHDOG_RTAS=m +CONFIG_PCIPCWATCHDOG=m +CONFIG_WDTPCI=m +CONFIG_USBPCWATCHDOG=m + +## +## file: init/Kconfig +## +CONFIG_SGETMASK_SYSCALL=y + +## +## file: lib/Kconfig.debug +## +# CONFIG_DEBUG_STACK_USAGE is not set +# CONFIG_DEBUG_STACKOVERFLOW is not set + +## +## file: lib/xz/Kconfig +## +CONFIG_XZ_DEC_POWERPC=y + +## +## file: net/ax25/Kconfig +## +CONFIG_HAMRADIO=y +CONFIG_AX25=m +CONFIG_AX25_DAMA_SLAVE=y +CONFIG_NETROM=m +CONFIG_ROSE=m + +## +## file: net/decnet/Kconfig +## +CONFIG_DECNET=m +CONFIG_DECNET_ROUTER=y + +## +## file: net/decnet/netfilter/Kconfig +## +CONFIG_DECNET_NF_GRABULATOR=m + +## +## file: net/ipx/Kconfig +## +CONFIG_IPX=m +CONFIG_IPX_INTERN=y + +## +## file: net/lapb/Kconfig +## +CONFIG_LAPB=m + +## +## file: sound/aoa/Kconfig +## +CONFIG_SND_AOA=m + +## +## file: sound/aoa/codecs/Kconfig +## +CONFIG_SND_AOA_ONYX=m +CONFIG_SND_AOA_TAS=m +CONFIG_SND_AOA_TOONIE=m + +## +## file: sound/aoa/fabrics/Kconfig +## +CONFIG_SND_AOA_FABRIC_LAYOUT=m + +## +## file: sound/aoa/soundbus/Kconfig +## +CONFIG_SND_AOA_SOUNDBUS=m +CONFIG_SND_AOA_SOUNDBUS_I2S=m + +## +## file: sound/drivers/Kconfig +## +# CONFIG_SND_DUMMY is not set +CONFIG_SND_VIRMIDI=m +# CONFIG_SND_MTPAV is not set +# CONFIG_SND_SERIAL_U16550 is not set +# CONFIG_SND_MPU401 is not set + +## +## file: sound/pci/Kconfig +## +CONFIG_SND_ALS4000=m +# CONFIG_SND_ALI5451 is not set +CONFIG_SND_ATIIXP=m +CONFIG_SND_ATIIXP_MODEM=m +CONFIG_SND_AU8810=m +CONFIG_SND_AU8820=m +CONFIG_SND_AU8830=m +CONFIG_SND_AZT3328=m +CONFIG_SND_BT87X=m +# CONFIG_SND_BT87X_OVERCLOCK is not set +CONFIG_SND_CA0106=m +CONFIG_SND_CMIPCI=m +CONFIG_SND_CS4281=m +CONFIG_SND_CS46XX=m +CONFIG_SND_CS46XX_NEW_DSP=y +CONFIG_SND_EMU10K1=m +CONFIG_SND_EMU10K1X=m +CONFIG_SND_ENS1370=m +CONFIG_SND_ENS1371=m +CONFIG_SND_ES1938=m +CONFIG_SND_ES1968=m +CONFIG_SND_FM801=m +CONFIG_SND_FM801_TEA575X_BOOL=y +CONFIG_SND_HDSP=m +CONFIG_SND_ICE1712=m +CONFIG_SND_ICE1724=m +# CONFIG_SND_INTEL8X0 is not set +# CONFIG_SND_INTEL8X0M is not set +CONFIG_SND_KORG1212=m +CONFIG_SND_MAESTRO3=m +CONFIG_SND_MIXART=m +CONFIG_SND_NM256=m +CONFIG_SND_RME32=m +CONFIG_SND_RME96=m +CONFIG_SND_RME9652=m +CONFIG_SND_SONICVIBES=m +CONFIG_SND_TRIDENT=m +CONFIG_SND_VIA82XX=m +CONFIG_SND_VIA82XX_MODEM=m +CONFIG_SND_VX222=m +CONFIG_SND_YMFPCI=m + +## +## file: sound/pci/hda/Kconfig +## +CONFIG_SND_HDA_INTEL=m + +## +## file: sound/ppc/Kconfig +## +CONFIG_SND_POWERMAC=m +CONFIG_SND_POWERMAC_AUTO_DRC=y + diff --git a/config/kernelarch-powerpc/config-arch-64 b/config/kernelarch-powerpc/config-arch-64 new file mode 100644 index 00000000000..e47804aa2b6 --- /dev/null +++ b/config/kernelarch-powerpc/config-arch-64 @@ -0,0 +1,192 @@ +## +## file: arch/powerpc/Kconfig +## +CONFIG_PPC_TRANSACTIONAL_MEM=y +CONFIG_CRASH_DUMP=y +CONFIG_IRQ_ALL_CPUS=y +CONFIG_NUMA=y +## choice: Page size +CONFIG_PPC_64K_PAGES=y +## end choice +CONFIG_SCHED_SMT=y +CONFIG_KERNEL_START=0xc000000000000000 + +## +## file: arch/powerpc/kvm/Kconfig +## +CONFIG_KVM_BOOK3S_64=m +CONFIG_KVM_BOOK3S_64_HV=m +CONFIG_KVM_BOOK3S_64_PR=m +CONFIG_KVM_XICS=y + +## +## file: arch/powerpc/platforms/Kconfig +## +CONFIG_RTAS_PROC=y +CONFIG_RTAS_FLASH=m + +## +## file: arch/powerpc/platforms/Kconfig.cputype +## +CONFIG_PPC64=y +CONFIG_ALTIVEC=y +CONFIG_VSX=y +CONFIG_SMP=y +CONFIG_NR_CPUS=2048 + +## +## file: arch/powerpc/platforms/powernv/Kconfig +## +CONFIG_OPAL_PRD=m + +## +## file: arch/powerpc/platforms/pseries/Kconfig +## +CONFIG_PPC_PSERIES=y +CONFIG_PPC_SPLPAR=y +CONFIG_SCANLOG=m +# CONFIG_LPARCFG is not set + +## +## file: block/partitions/Kconfig +## +CONFIG_AIX_PARTITION=y + +## +## file: drivers/ata/Kconfig +## +CONFIG_PATA_AMD=m + +## +## file: drivers/block/Kconfig +## +# CONFIG_MAC_FLOPPY is not set +CONFIG_BLK_DEV_RSXX=m + +## +## file: drivers/crypto/Kconfig +## +CONFIG_CRYPTO_DEV_VMX=y + +## +## file: drivers/crypto/vmx/Kconfig +## +CONFIG_CRYPTO_DEV_VMX_ENCRYPT=m + +## +## file: drivers/gpu/drm/Kconfig +## +CONFIG_DRM_AMDGPU=m + +## +## file: drivers/gpu/drm/ast/Kconfig +## +CONFIG_DRM_AST=m + +## +## file: drivers/iommu/Kconfig +## +CONFIG_SPAPR_TCE_IOMMU=y + +## +## file: drivers/misc/genwqe/Kconfig +## +CONFIG_GENWQE=m + +## +## file: drivers/mtd/Kconfig +## +CONFIG_MTD=m + +## +## file: drivers/mtd/devices/Kconfig +## +CONFIG_MTD_POWERNV_FLASH=m + +## +## file: drivers/net/ethernet/ibm/Kconfig +## +CONFIG_IBMVETH=m + +## +## file: drivers/net/ethernet/ibm/emac/Kconfig +## +CONFIG_IBM_EMAC=m +CONFIG_IBM_EMAC_RXB=128 +CONFIG_IBM_EMAC_TXB=64 +CONFIG_IBM_EMAC_POLL_WEIGHT=32 +CONFIG_IBM_EMAC_RX_COPY_THRESHOLD=256 +CONFIG_IBM_EMAC_RX_SKB_HEADROOM=0 +# CONFIG_IBM_EMAC_DEBUG is not set + +## +## file: drivers/net/ethernet/marvell/Kconfig +## +# CONFIG_MV643XX_ETH is not set + +## +## file: drivers/pci/hotplug/Kconfig +## +CONFIG_HOTPLUG_PCI=y +CONFIG_HOTPLUG_PCI_RPA=m +CONFIG_HOTPLUG_PCI_RPA_DLPAR=m + +## +## file: drivers/scsi/Kconfig +## +CONFIG_SCSI_IBMVSCSI=m +CONFIG_SCSI_IBMVSCSIS=m +CONFIG_SCSI_IBMVFC=m +CONFIG_SCSI_QLOGIC_1280=m + +## +## file: drivers/scsi/megaraid/Kconfig.megaraid +## +CONFIG_MEGARAID_LEGACY=m + +## +## file: drivers/tty/hvc/Kconfig +## +CONFIG_HVC_CONSOLE=y +CONFIG_HVCS=m + +## +## file: drivers/tty/serial/Kconfig +## +# CONFIG_SERIAL_ICOM is not set + +## +## file: drivers/vfio/Kconfig +## +CONFIG_VFIO=m + +## +## file: drivers/vfio/pci/Kconfig +## +CONFIG_VFIO_PCI=m + +## +## file: drivers/video/fbdev/Kconfig +## +# CONFIG_FB_IMSTT is not set + +## +## file: drivers/watchdog/Kconfig +## +CONFIG_WATCHDOG_RTAS=m + +## +## file: lib/Kconfig +## +CONFIG_CPUMASK_OFFSTACK=y + +## +## file: mm/Kconfig +## +## choice: Memory model +# CONFIG_FLATMEM_MANUAL is not set +# CONFIG_DISCONTIGMEM_MANUAL is not set +CONFIG_SPARSEMEM_MANUAL=y +## end choice +CONFIG_SPARSEMEM_VMEMMAP=y + diff --git a/config/kernelarch-powerpc/config-arch-64-be b/config/kernelarch-powerpc/config-arch-64-be new file mode 100644 index 00000000000..20099b2fc56 --- /dev/null +++ b/config/kernelarch-powerpc/config-arch-64-be @@ -0,0 +1,111 @@ +## +## file: arch/powerpc/Kconfig +## +CONFIG_CMDLINE="console=hvsi0 console=hvc0 console=ttyS0,9600 console=tty0" + +## +## file: arch/powerpc/platforms/cell/Kconfig +## +CONFIG_PPC_IBM_CELL_BLADE=y +CONFIG_SPU_FS=m +CONFIG_CBE_RAS=y +CONFIG_CBE_THERM=m + +## +## file: arch/powerpc/platforms/maple/Kconfig +## +CONFIG_PPC_MAPLE=y + +## +## file: arch/powerpc/platforms/pasemi/Kconfig +## +CONFIG_PPC_PASEMI=y +CONFIG_PPC_PASEMI_MDIO=m + +## +## file: arch/powerpc/platforms/ps3/Kconfig +## +CONFIG_PPC_PS3=y +CONFIG_PS3_ADVANCED=y +CONFIG_PS3_HTAB_SIZE=20 +# CONFIG_PS3_DYNAMIC_DMA is not set +CONFIG_PS3_PS3AV=y +CONFIG_PS3_SYS_MANAGER=y +CONFIG_PS3_DISK=m +CONFIG_PS3_ROM=m +CONFIG_PS3_FLASH=m +CONFIG_PS3_VRAM=m +CONFIG_PS3_LPM=m + +## +## file: arch/powerpc/platforms/pseries/Kconfig +## +CONFIG_IBMEBUS=y + +## +## file: drivers/char/hw_random/Kconfig +## +CONFIG_HW_RANDOM_PASEMI=m + +## +## file: drivers/cpufreq/Kconfig.powerpc +## +CONFIG_CPU_FREQ_CBE=m +CONFIG_CPU_FREQ_PMAC64=y +#. It's a bool +CONFIG_PPC_PASEMI_CPUFREQ=y + +## +## file: drivers/i2c/busses/Kconfig +## +CONFIG_I2C_PASEMI=m + +## +## file: drivers/macintosh/Kconfig +## +CONFIG_WINDFARM_PM81=m +CONFIG_WINDFARM_PM72=m +CONFIG_WINDFARM_RM31=m +CONFIG_WINDFARM_PM91=m +CONFIG_WINDFARM_PM112=m +CONFIG_WINDFARM_PM121=m + +## +## file: drivers/net/ethernet/ibm/Kconfig +## +CONFIG_EHEA=m + +## +## file: drivers/net/ethernet/pasemi/Kconfig +## +CONFIG_PASEMI_MAC=m + +## +## file: drivers/net/ethernet/toshiba/Kconfig +## +CONFIG_GELIC_NET=m +CONFIG_GELIC_WIRELESS=y +CONFIG_SPIDER_NET=m + +## +## file: drivers/rtc/Kconfig +## +CONFIG_RTC_DRV_PS3=m + +## +## file: drivers/video/fbdev/Kconfig +## +CONFIG_FB_PS3=y +CONFIG_FB_PS3_DEFAULT_SIZE_M=9 + +## +## file: init/Kconfig +## +CONFIG_SYSFS_SYSCALL=y + +## +## file: sound/ppc/Kconfig +## +CONFIG_SND_PS3=m +CONFIG_SND_PS3_DEFAULT_START_DELAY=2000 + diff --git a/config/kernelarch-powerpc/config-arch-64-le b/config/kernelarch-powerpc/config-arch-64-le new file mode 100644 index 00000000000..f0ad2b371ff --- /dev/null +++ b/config/kernelarch-powerpc/config-arch-64-le @@ -0,0 +1,36 @@ +## +## file: arch/powerpc/Kconfig +## +# CONFIG_CMDLINE_BOOL is not set + +## +## file: arch/powerpc/platforms/Kconfig.cputype +## +## choice: Endianness selection +# CONFIG_CPU_BIG_ENDIAN is not set +CONFIG_CPU_LITTLE_ENDIAN=y +## end choice + +## +## file: arch/powerpc/platforms/powermac/Kconfig +## +#. This needs to be explicitly disabled currently (3.15) +# CONFIG_PPC_PMAC is not set + +## +## file: drivers/cpufreq/Kconfig +## +## choice: Default CPUFreq governor +# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set +CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set +## end choice + +## +## file: kernel/power/Kconfig +## +#. See #789070 +# CONFIG_HIBERNATION is not set + diff --git a/config/kernelarch-sparc/config b/config/kernelarch-sparc/config new file mode 100644 index 00000000000..dc855ff32c3 --- /dev/null +++ b/config/kernelarch-sparc/config @@ -0,0 +1,615 @@ +## +## file: arch/sparc/Kconfig +## +CONFIG_64BIT=y +CONFIG_SECCOMP=y +# CONFIG_CMDLINE_BOOL is not set +CONFIG_SUN_LDOMS=y +CONFIG_PCI=y +CONFIG_SUN_OPENPROMFS=m + +## +## file: block/partitions/Kconfig +## +CONFIG_SUN_PARTITION=y + +## +## file: crypto/Kconfig +## +CONFIG_CRYPTO_CRC32C_SPARC64=m +CONFIG_CRYPTO_MD5_SPARC64=m +CONFIG_CRYPTO_SHA1_SPARC64=m +CONFIG_CRYPTO_SHA256_SPARC64=m +CONFIG_CRYPTO_SHA512_SPARC64=m +CONFIG_CRYPTO_AES_SPARC64=m +CONFIG_CRYPTO_CAMELLIA_SPARC64=m +CONFIG_CRYPTO_DES_SPARC64=m + +## +## file: drivers/ata/Kconfig +## +CONFIG_PATA_ALI=m +CONFIG_PATA_CS5520=m +CONFIG_PATA_NETCELL=m +CONFIG_PATA_NS87415=m +CONFIG_PATA_PDC2027X=m +CONFIG_PATA_PDC_OLD=m +CONFIG_PATA_SERVERWORKS=m +CONFIG_PATA_SIL680=m +CONFIG_PATA_VIA=m +CONFIG_PATA_NS87410=m +CONFIG_PATA_LEGACY=m + +## +## file: drivers/block/Kconfig +## +CONFIG_BLK_DEV_FD=y +# CONFIG_BLK_DEV_DAC960 is not set +# CONFIG_BLK_DEV_UMEM is not set +CONFIG_BLK_DEV_SX8=m +CONFIG_CDROM_PKTCDVD=m +CONFIG_CDROM_PKTCDVD_BUFFERS=8 +# CONFIG_CDROM_PKTCDVD_WCACHE is not set +CONFIG_SUNVDC=m + +## +## file: drivers/char/Kconfig +## +CONFIG_PRINTER=m +# CONFIG_LP_CONSOLE is not set +# CONFIG_PPDEV is not set +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set + +## +## file: drivers/char/ipmi/Kconfig +## +# CONFIG_IPMI_HANDLER is not set + +## +## file: drivers/crypto/Kconfig +## +CONFIG_CRYPTO_DEV_NIAGARA2=m + +## +## file: drivers/gpu/drm/Kconfig +## +CONFIG_DRM=m +CONFIG_DRM_RADEON=m +CONFIG_DRM_TDFX=m +CONFIG_DRM_R128=m +CONFIG_DRM_MGA=m + +## +## file: drivers/gpu/drm/i2c/Kconfig +## +CONFIG_DRM_I2C_CH7006=m +CONFIG_DRM_I2C_SIL164=m + +## +## file: drivers/gpu/drm/nouveau/Kconfig +## +CONFIG_DRM_NOUVEAU=m +# CONFIG_DRM_NOUVEAU_BACKLIGHT is not set + +## +## file: drivers/hid/usbhid/Kconfig +## +CONFIG_USB_HID=y + +## +## file: drivers/hwmon/Kconfig +## +# CONFIG_SENSORS_ADM1021 is not set +# CONFIG_SENSORS_ADM1025 is not set +# CONFIG_SENSORS_ADM1026 is not set +# CONFIG_SENSORS_ADM1031 is not set +# CONFIG_SENSORS_ASB100 is not set +# CONFIG_SENSORS_DS1621 is not set +# CONFIG_SENSORS_F71805F is not set +# CONFIG_SENSORS_GL518SM is not set +# CONFIG_SENSORS_GL520SM is not set +# CONFIG_SENSORS_MAX1619 is not set +# CONFIG_SENSORS_LM63 is not set +# CONFIG_SENSORS_LM75 is not set +# CONFIG_SENSORS_LM77 is not set +# CONFIG_SENSORS_LM78 is not set +# CONFIG_SENSORS_LM80 is not set +# CONFIG_SENSORS_LM83 is not set +# CONFIG_SENSORS_LM85 is not set +# CONFIG_SENSORS_LM87 is not set +# CONFIG_SENSORS_LM90 is not set +# CONFIG_SENSORS_LM92 is not set +# CONFIG_SENSORS_PC87360 is not set +# CONFIG_SENSORS_PCF8591 is not set +# CONFIG_SENSORS_SIS5595 is not set +# CONFIG_SENSORS_SMSC47M1 is not set +# CONFIG_SENSORS_SMSC47B397 is not set +# CONFIG_SENSORS_VIA686A is not set +# CONFIG_SENSORS_W83781D is not set +# CONFIG_SENSORS_W83L785TS is not set +# CONFIG_SENSORS_W83627HF is not set + +## +## file: drivers/i2c/Kconfig +## +CONFIG_I2C=m +# CONFIG_I2C_STUB is not set +# CONFIG_I2C_DEBUG_CORE is not set +# CONFIG_I2C_DEBUG_ALGO is not set +# CONFIG_I2C_DEBUG_BUS is not set + +## +## file: drivers/i2c/busses/Kconfig +## +# CONFIG_I2C_ALI1535 is not set +# CONFIG_I2C_ALI1563 is not set +# CONFIG_I2C_ALI15X3 is not set +# CONFIG_I2C_AMD756 is not set +# CONFIG_I2C_AMD8111 is not set +# CONFIG_I2C_I801 is not set +# CONFIG_I2C_PIIX4 is not set +# CONFIG_I2C_NFORCE2 is not set +# CONFIG_I2C_SIS5595 is not set +# CONFIG_I2C_SIS630 is not set +# CONFIG_I2C_SIS96X is not set +# CONFIG_I2C_VIA is not set +# CONFIG_I2C_VIAPRO is not set +CONFIG_I2C_PARPORT=m +CONFIG_I2C_PARPORT_LIGHT=m +# CONFIG_I2C_PCA_ISA is not set + +## +## file: drivers/input/Kconfig +## +# CONFIG_INPUT_JOYDEV is not set + +## +## file: drivers/input/gameport/Kconfig +## +# CONFIG_GAMEPORT is not set + +## +## file: drivers/input/joystick/Kconfig +## +# CONFIG_INPUT_JOYSTICK is not set + +## +## file: drivers/input/keyboard/Kconfig +## +CONFIG_INPUT_KEYBOARD=y +CONFIG_KEYBOARD_ATKBD=y +CONFIG_KEYBOARD_LKKBD=m +# CONFIG_KEYBOARD_NEWTON is not set +CONFIG_KEYBOARD_SUNKBD=y +# CONFIG_KEYBOARD_XTKBD is not set + +## +## file: drivers/input/misc/Kconfig +## +CONFIG_INPUT_MISC=y +CONFIG_INPUT_SPARCSPKR=m +# CONFIG_INPUT_UINPUT is not set + +## +## file: drivers/input/mouse/Kconfig +## +CONFIG_INPUT_MOUSE=y +CONFIG_MOUSE_PS2=y +CONFIG_MOUSE_SERIAL=y +# CONFIG_MOUSE_VSXXXAA is not set + +## +## file: drivers/input/serio/Kconfig +## +CONFIG_SERIO=y +CONFIG_SERIO_I8042=y +# CONFIG_SERIO_SERPORT is not set +# CONFIG_SERIO_PARKBD is not set +# CONFIG_SERIO_PCIPS2 is not set +CONFIG_SERIO_LIBPS2=y +# CONFIG_SERIO_RAW is not set + +## +## file: drivers/input/touchscreen/Kconfig +## +# CONFIG_INPUT_TOUCHSCREEN is not set + +## +## file: drivers/media/pci/cx88/Kconfig +## +# CONFIG_VIDEO_CX88 is not set + +## +## file: drivers/media/pci/saa7146/Kconfig +## +# CONFIG_VIDEO_HEXIUM_GEMINI is not set +# CONFIG_VIDEO_HEXIUM_ORION is not set +# CONFIG_VIDEO_MXB is not set + +## +## file: drivers/media/pci/zoran/Kconfig +## +# CONFIG_VIDEO_ZORAN is not set + +## +## file: drivers/media/radio/Kconfig +## +# CONFIG_USB_DSBR is not set +# CONFIG_RADIO_MAXIRADIO is not set + +## +## file: drivers/mmc/Kconfig +## +# CONFIG_MMC is not set + +## +## file: drivers/mtd/Kconfig +## +# CONFIG_MTD is not set + +## +## file: drivers/net/Kconfig +## +CONFIG_NET_FC=y + +## +## file: drivers/net/arcnet/Kconfig +## +# CONFIG_ARCNET is not set + +## +## file: drivers/net/ethernet/Kconfig +## +CONFIG_FEALNX=m + +## +## file: drivers/net/ethernet/3com/Kconfig +## +CONFIG_NET_VENDOR_3COM=y +CONFIG_VORTEX=m +CONFIG_TYPHOON=m + +## +## file: drivers/net/ethernet/8390/Kconfig +## +CONFIG_NE2K_PCI=m + +## +## file: drivers/net/ethernet/adaptec/Kconfig +## +CONFIG_ADAPTEC_STARFIRE=m + +## +## file: drivers/net/ethernet/amd/Kconfig +## +# CONFIG_AMD8111_ETH is not set +CONFIG_SUNLANCE=m + +## +## file: drivers/net/ethernet/broadcom/Kconfig +## +CONFIG_B44=m + +## +## file: drivers/net/ethernet/dec/tulip/Kconfig +## +CONFIG_NET_TULIP=y +# CONFIG_DE2104X is not set +CONFIG_TULIP=m +# CONFIG_TULIP_MWI is not set +# CONFIG_TULIP_MMIO is not set +CONFIG_WINBOND_840=m +CONFIG_DM9102=m + +## +## file: drivers/net/ethernet/dlink/Kconfig +## +CONFIG_SUNDANCE=m +CONFIG_SUNDANCE_MMIO=y + +## +## file: drivers/net/ethernet/intel/Kconfig +## +CONFIG_E100=m + +## +## file: drivers/net/ethernet/natsemi/Kconfig +## +CONFIG_NATSEMI=m + +## +## file: drivers/net/ethernet/nvidia/Kconfig +## +# CONFIG_FORCEDETH is not set + +## +## file: drivers/net/ethernet/realtek/Kconfig +## +# CONFIG_8139CP is not set +CONFIG_8139TOO=m + +## +## file: drivers/net/ethernet/sis/Kconfig +## +CONFIG_SIS900=m + +## +## file: drivers/net/ethernet/smsc/Kconfig +## +CONFIG_EPIC100=m + +## +## file: drivers/net/ethernet/sun/Kconfig +## +CONFIG_HAPPYMEAL=m +CONFIG_SUNBMAC=m +CONFIG_SUNQE=m +CONFIG_SUNGEM=m +CONFIG_SUNVNET=m + +## +## file: drivers/net/ethernet/via/Kconfig +## +CONFIG_VIA_RHINE=m +# CONFIG_VIA_RHINE_MMIO is not set + +## +## file: drivers/net/fddi/Kconfig +## +CONFIG_FDDI=y +CONFIG_SKFP=m + +## +## file: drivers/net/hippi/Kconfig +## +# CONFIG_HIPPI is not set + +## +## file: drivers/net/plip/Kconfig +## +CONFIG_PLIP=m + +## +## file: drivers/net/wan/Kconfig +## +# CONFIG_WAN is not set + +## +## file: drivers/net/wireless/marvell/mwifiex/Kconfig +## +CONFIG_MWIFIEX=m +CONFIG_MWIFIEX_PCIE=m + +## +## file: drivers/parport/Kconfig +## +CONFIG_PARPORT_SUNBPP=m + +## +## file: drivers/sbus/char/Kconfig +## +CONFIG_SUN_OPENPROMIO=y +CONFIG_OBP_FLASH=m +CONFIG_BBC_I2C=m +CONFIG_ENVCTRL=m +CONFIG_DISPLAY7SEG=m + +## +## file: drivers/scsi/Kconfig +## +CONFIG_SCSI_ARCMSR=m +CONFIG_SCSI_DMX3191D=m +# CONFIG_SCSI_FUTURE_DOMAIN is not set +# CONFIG_SCSI_IPS is not set +CONFIG_SCSI_INITIO=m +# CONFIG_SCSI_INIA100 is not set +CONFIG_SCSI_SYM53C8XX_2=m +CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 +CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 +CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 +CONFIG_SCSI_IPR=m +# CONFIG_SCSI_IPR_TRACE is not set +# CONFIG_SCSI_IPR_DUMP is not set +CONFIG_SCSI_QLOGIC_1280=m +CONFIG_SCSI_QLOGICPTI=m +CONFIG_SCSI_DC395x=m +CONFIG_SCSI_SUNESP=m + +## +## file: drivers/scsi/megaraid/Kconfig.megaraid +## +CONFIG_MEGARAID_NEWGEN=y +CONFIG_MEGARAID_MM=m +CONFIG_MEGARAID_MAILBOX=m +CONFIG_MEGARAID_LEGACY=m + +## +## file: drivers/tty/Kconfig +## +CONFIG_VT=y +CONFIG_VT_CONSOLE=y +# CONFIG_SERIAL_NONSTANDARD is not set + +## +## file: drivers/tty/serial/Kconfig +## +CONFIG_SERIAL_SUNZILOG=y +CONFIG_SERIAL_SUNZILOG_CONSOLE=y +CONFIG_SERIAL_SUNSU=y +CONFIG_SERIAL_SUNSU_CONSOLE=y +CONFIG_SERIAL_SUNSAB=y +CONFIG_SERIAL_SUNSAB_CONSOLE=y +CONFIG_SERIAL_SUNHV=y +CONFIG_SERIAL_JSM=m + +## +## file: drivers/usb/Kconfig +## +CONFIG_USB=m +# CONFIG_USB_USS720 is not set + +## +## file: drivers/usb/host/Kconfig +## +CONFIG_USB_EHCI_HCD=m +CONFIG_USB_OHCI_HCD=m +CONFIG_USB_UHCI_HCD=m +# CONFIG_USB_SL811_HCD is not set + +## +## file: drivers/video/backlight/Kconfig +## +# CONFIG_BACKLIGHT_LCD_SUPPORT is not set + +## +## file: drivers/video/fbdev/Kconfig +## +CONFIG_FB_MODE_HELPERS=y +# CONFIG_FB_TILEBLITTING is not set +# CONFIG_FB_CIRRUS is not set +CONFIG_FB_PM2=y +# CONFIG_FB_PM2_FIFO_DISCONNECT is not set +# CONFIG_FB_ASILIANT is not set +# CONFIG_FB_IMSTT is not set +CONFIG_FB_SBUS=y +# CONFIG_FB_BW2 is not set +# CONFIG_FB_CG3 is not set +CONFIG_FB_CG6=y +CONFIG_FB_FFB=y +# CONFIG_FB_TCX is not set +# CONFIG_FB_CG14 is not set +# CONFIG_FB_P9100 is not set +# CONFIG_FB_LEO is not set +CONFIG_FB_XVR500=y +CONFIG_FB_XVR2500=y +CONFIG_FB_XVR1000=y +# CONFIG_FB_S1D13XXX is not set +# CONFIG_FB_MATROX is not set +CONFIG_FB_RADEON=y +# CONFIG_FB_RADEON_I2C is not set +# CONFIG_FB_RADEON_DEBUG is not set +CONFIG_FB_ATY128=y +CONFIG_FB_ATY=y +CONFIG_FB_ATY_CT=y +# CONFIG_FB_ATY_GENERIC_LCD is not set +CONFIG_FB_ATY_GX=y +# CONFIG_FB_SAVAGE is not set +# CONFIG_FB_SIS is not set +# CONFIG_FB_NEOMAGIC is not set +# CONFIG_FB_KYRO is not set +# CONFIG_FB_3DFX is not set +# CONFIG_FB_VOODOO1 is not set +# CONFIG_FB_TRIDENT is not set +# CONFIG_FB_VIRTUAL is not set + +## +## file: drivers/w1/Kconfig +## +# CONFIG_W1 is not set + +## +## file: init/Kconfig +## +CONFIG_SGETMASK_SYSCALL=y +CONFIG_SYSFS_SYSCALL=y + +## +## file: lib/xz/Kconfig +## +CONFIG_XZ_DEC_SPARC=y + +## +## file: mm/Kconfig +## +## choice: Memory model +# CONFIG_FLATMEM_MANUAL is not set +# CONFIG_DISCONTIGMEM_MANUAL is not set +CONFIG_SPARSEMEM_MANUAL=y +## end choice + +## +## file: net/ax25/Kconfig +## +# CONFIG_HAMRADIO is not set + +## +## file: net/decnet/Kconfig +## +CONFIG_DECNET=m +CONFIG_DECNET_ROUTER=y + +## +## file: net/ipx/Kconfig +## +CONFIG_IPX=m +# CONFIG_IPX_INTERN is not set + +## +## file: net/lapb/Kconfig +## +# CONFIG_LAPB is not set + +## +## file: sound/drivers/Kconfig +## +# CONFIG_SND_DUMMY is not set +CONFIG_SND_VIRMIDI=m +# CONFIG_SND_MTPAV is not set +# CONFIG_SND_SERIAL_U16550 is not set +# CONFIG_SND_MPU401 is not set + +## +## file: sound/pci/Kconfig +## +CONFIG_SND_ALI5451=m +# CONFIG_SND_ATIIXP is not set +# CONFIG_SND_ATIIXP_MODEM is not set +# CONFIG_SND_AU8810 is not set +# CONFIG_SND_AU8820 is not set +# CONFIG_SND_AU8830 is not set +# CONFIG_SND_AZT3328 is not set +# CONFIG_SND_BT87X is not set +# CONFIG_SND_CA0106 is not set +CONFIG_SND_CMIPCI=m +# CONFIG_SND_CS4281 is not set +# CONFIG_SND_CS46XX is not set +CONFIG_SND_EMU10K1=m +# CONFIG_SND_EMU10K1X is not set +CONFIG_SND_ENS1370=m +CONFIG_SND_ENS1371=m +# CONFIG_SND_ES1938 is not set +# CONFIG_SND_ES1968 is not set +# CONFIG_SND_FM801 is not set +# CONFIG_SND_HDSP is not set +# CONFIG_SND_ICE1712 is not set +# CONFIG_SND_ICE1724 is not set +# CONFIG_SND_INTEL8X0 is not set +# CONFIG_SND_INTEL8X0M is not set +# CONFIG_SND_KORG1212 is not set +CONFIG_SND_MAESTRO3=m +# CONFIG_SND_MIXART is not set +# CONFIG_SND_NM256 is not set +# CONFIG_SND_RME32 is not set +# CONFIG_SND_RME96 is not set +# CONFIG_SND_RME9652 is not set +# CONFIG_SND_SONICVIBES is not set +# CONFIG_SND_TRIDENT is not set +# CONFIG_SND_VIA82XX is not set +# CONFIG_SND_VIA82XX_MODEM is not set +# CONFIG_SND_VX222 is not set +# CONFIG_SND_YMFPCI is not set + +## +## file: sound/pci/hda/Kconfig +## +# CONFIG_SND_HDA_INTEL is not set + +## +## file: sound/sparc/Kconfig +## +CONFIG_SND_SUN_AMD7930=m +CONFIG_SND_SUN_CS4231=m +CONFIG_SND_SUN_DBRI=m + diff --git a/config/kernelarch-sparc/config-smp b/config/kernelarch-sparc/config-smp new file mode 100644 index 00000000000..f6412c26ed8 --- /dev/null +++ b/config/kernelarch-sparc/config-smp @@ -0,0 +1,7 @@ +## +## file: arch/sparc/Kconfig +## +CONFIG_SMP=y +CONFIG_NR_CPUS=256 +CONFIG_SCHED_SMT=y + diff --git a/config/kernelarch-sparc/config-up b/config/kernelarch-sparc/config-up new file mode 100644 index 00000000000..758621713fd --- /dev/null +++ b/config/kernelarch-sparc/config-up @@ -0,0 +1,5 @@ +## +## file: arch/sparc/Kconfig +## +# CONFIG_SMP is not set + diff --git a/config/kernelarch-x86/config b/config/kernelarch-x86/config new file mode 100644 index 00000000000..1cde36b37f4 --- /dev/null +++ b/config/kernelarch-x86/config @@ -0,0 +1,2038 @@ +## +## file: arch/Kconfig +## +# CONFIG_OPROFILE_EVENT_MULTIPLEX is not set + +## +## file: arch/x86/Kconfig +## +CONFIG_ZONE_DMA=y +CONFIG_X86_MPPARSE=y +# CONFIG_X86_EXTENDED_PLATFORM is not set +CONFIG_X86_INTEL_LPSS=y +CONFIG_X86_AMD_PLATFORM_DEVICE=y +CONFIG_IOSF_MBI=m +# CONFIG_IOSF_MBI_DEBUG is not set +CONFIG_SCHED_OMIT_FRAME_POINTER=y +CONFIG_HYPERVISOR_GUEST=y +CONFIG_PARAVIRT=y +# CONFIG_PARAVIRT_DEBUG is not set +CONFIG_PARAVIRT_SPINLOCKS=y +# CONFIG_QUEUED_LOCK_STAT is not set +CONFIG_KVM_GUEST=y +# CONFIG_KVM_DEBUG_FS is not set +# CONFIG_PARAVIRT_TIME_ACCOUNTING is not set +CONFIG_HPET_TIMER=y +CONFIG_DMI=y +CONFIG_GART_IOMMU=y +CONFIG_SCHED_SMT=y +CONFIG_SCHED_MC=y +CONFIG_SCHED_MC_PRIO=y +CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y +CONFIG_X86_MCE=y +CONFIG_X86_MCE_INTEL=y +CONFIG_X86_MCE_AMD=y +# CONFIG_X86_ANCIENT_MCE is not set +CONFIG_X86_MCE_INJECT=m +CONFIG_X86_16BIT=y +CONFIG_I8K=m +CONFIG_MICROCODE=y +CONFIG_MICROCODE_INTEL=y +CONFIG_MICROCODE_AMD=y +CONFIG_X86_MSR=m +CONFIG_X86_CPUID=m +CONFIG_NODES_SHIFT=6 +# CONFIG_ARCH_MEMORY_PROBE is not set +CONFIG_X86_PMEM_LEGACY=m +# CONFIG_X86_CHECK_BIOS_CORRUPTION is not set +CONFIG_X86_RESERVE_LOW=64 +CONFIG_MTRR=y +CONFIG_MTRR_SANITIZER=y +CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=0 +CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT=1 +CONFIG_X86_PAT=y +CONFIG_ARCH_RANDOM=y +CONFIG_X86_SMAP=y +CONFIG_X86_INTEL_MPX=y +CONFIG_EFI=y +CONFIG_EFI_STUB=y +CONFIG_SECCOMP=y +CONFIG_KEXEC=y +CONFIG_CRASH_DUMP=y +# CONFIG_KEXEC_JUMP is not set +CONFIG_RELOCATABLE=y +CONFIG_RANDOMIZE_BASE=y +CONFIG_HOTPLUG_CPU=y +# CONFIG_BOOTPARAM_HOTPLUG_CPU0 is not set +# CONFIG_DEBUG_HOTPLUG_CPU0 is not set +# CONFIG_COMPAT_VDSO is not set +# CONFIG_CMDLINE_BOOL is not set +CONFIG_MODIFY_LDT_SYSCALL=y +CONFIG_PCI=y +# CONFIG_PCI_CNB20LE_QUIRK is not set +# CONFIG_RAPIDIO is not set +#. Doesn't support handover; see #822575 +# CONFIG_X86_SYSFB is not set +CONFIG_IA32_EMULATION=y +CONFIG_IA32_AOUT=y + +## +## file: arch/x86/Kconfig.cpu +## +# CONFIG_PROCESSOR_SELECT is not set + +## +## file: arch/x86/Kconfig.debug +## +# CONFIG_X86_VERBOSE_BOOTUP is not set +CONFIG_EARLY_PRINTK=y +# CONFIG_EARLY_PRINTK_DBGP is not set +CONFIG_EARLY_PRINTK_EFI=y +# CONFIG_X86_PTDUMP is not set +# CONFIG_EFI_PGT_DUMP is not set +CONFIG_DEBUG_WX=y +CONFIG_DOUBLEFAULT=y +# CONFIG_DEBUG_TLBFLUSH is not set +# CONFIG_IOMMU_DEBUG is not set +# CONFIG_IOMMU_STRESS is not set +# CONFIG_X86_DECODER_SELFTEST is not set +## choice: IO delay type +CONFIG_IO_DELAY_0X80=y +# CONFIG_IO_DELAY_0XED is not set +# CONFIG_IO_DELAY_UDELAY is not set +# CONFIG_IO_DELAY_NONE is not set +## end choice +# CONFIG_DEBUG_BOOT_PARAMS is not set +# CONFIG_CPA_DEBUG is not set +CONFIG_OPTIMIZE_INLINING=y +# CONFIG_DEBUG_ENTRY is not set +# CONFIG_DEBUG_NMI_SELFTEST is not set +# CONFIG_PUNIT_ATOM_DEBUG is not set + +## +## file: arch/x86/events/Kconfig +## +CONFIG_PERF_EVENTS_INTEL_UNCORE=m +CONFIG_PERF_EVENTS_INTEL_RAPL=m +CONFIG_PERF_EVENTS_INTEL_CSTATE=m +CONFIG_PERF_EVENTS_AMD_POWER=m + +## +## file: arch/x86/kvm/Kconfig +## +CONFIG_VIRTUALIZATION=y +CONFIG_KVM=m +CONFIG_KVM_INTEL=m +CONFIG_KVM_AMD=m +# CONFIG_KVM_MMU_AUDIT is not set + +## +## file: arch/x86/xen/Kconfig +## +CONFIG_XEN=y +# CONFIG_XEN_DEBUG_FS is not set +CONFIG_XEN_PVH=y + +## +## file: block/partitions/Kconfig +## +CONFIG_ACORN_PARTITION=y +# CONFIG_ACORN_PARTITION_CUMANA is not set +# CONFIG_ACORN_PARTITION_EESOX is not set +CONFIG_ACORN_PARTITION_ICS=y +# CONFIG_ACORN_PARTITION_ADFS is not set +# CONFIG_ACORN_PARTITION_POWERTEC is not set +CONFIG_ACORN_PARTITION_RISCIX=y +CONFIG_OSF_PARTITION=y +CONFIG_AMIGA_PARTITION=y +CONFIG_ATARI_PARTITION=y +CONFIG_MAC_PARTITION=y +CONFIG_BSD_DISKLABEL=y +CONFIG_MINIX_SUBPARTITION=y +CONFIG_SOLARIS_X86_PARTITION=y +CONFIG_UNIXWARE_DISKLABEL=y +CONFIG_LDM_PARTITION=y +# CONFIG_LDM_DEBUG is not set +CONFIG_SGI_PARTITION=y +CONFIG_ULTRIX_PARTITION=y +CONFIG_SUN_PARTITION=y + +## +## file: crypto/Kconfig +## +CONFIG_CRYPTO_CRC32C_INTEL=m +CONFIG_CRYPTO_CRC32_PCLMUL=m +CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL=m +CONFIG_CRYPTO_AES_NI_INTEL=m + +## +## file: drivers/acpi/Kconfig +## +CONFIG_ACPI=y +# CONFIG_ACPI_PROCFS_POWER is not set +CONFIG_ACPI_REV_OVERRIDE_POSSIBLE=y +# CONFIG_ACPI_EC_DEBUGFS is not set +CONFIG_ACPI_AC=m +CONFIG_ACPI_BATTERY=m +CONFIG_ACPI_BUTTON=m +CONFIG_ACPI_VIDEO=m +CONFIG_ACPI_FAN=m +CONFIG_ACPI_DOCK=y +CONFIG_ACPI_PROCESSOR=m +CONFIG_ACPI_IPMI=m +CONFIG_ACPI_PROCESSOR_AGGREGATOR=m +CONFIG_ACPI_THERMAL=m +# CONFIG_ACPI_DEBUG is not set +CONFIG_ACPI_PCI_SLOT=y +CONFIG_X86_PM_TIMER=y +CONFIG_ACPI_CONTAINER=y +CONFIG_ACPI_HOTPLUG_MEMORY=y +CONFIG_ACPI_SBS=m +CONFIG_ACPI_HED=m +# CONFIG_ACPI_CUSTOM_METHOD is not set +CONFIG_ACPI_EXTLOG=y + +## +## file: drivers/acpi/apei/Kconfig +## +CONFIG_ACPI_APEI=y +CONFIG_ACPI_APEI_GHES=y +CONFIG_ACPI_APEI_PCIEAER=y +CONFIG_ACPI_APEI_MEMORY_FAILURE=y +# CONFIG_ACPI_APEI_EINJ is not set +# CONFIG_ACPI_APEI_ERST_DEBUG is not set + +## +## file: drivers/acpi/dptf/Kconfig +## +CONFIG_DPTF_POWER=m + +## +## file: drivers/ata/Kconfig +## +CONFIG_PATA_ALI=m +CONFIG_PATA_AMD=m +CONFIG_PATA_ATIIXP=m +CONFIG_PATA_CMD64X=m +CONFIG_PATA_EFAR=m +CONFIG_PATA_HPT366=m +CONFIG_PATA_HPT37X=m +CONFIG_PATA_NETCELL=m +CONFIG_PATA_NS87415=m +CONFIG_PATA_OLDPIIX=m +CONFIG_PATA_PDC2027X=m +CONFIG_PATA_PDC_OLD=m +CONFIG_PATA_SERVERWORKS=m +CONFIG_PATA_SIL680=m +CONFIG_PATA_TRIFLEX=m +CONFIG_PATA_VIA=m +CONFIG_PATA_MPIIX=m +CONFIG_PATA_NS87410=m +CONFIG_PATA_PCMCIA=m +CONFIG_PATA_RZ1000=m + +## +## file: drivers/atm/Kconfig +## +CONFIG_ATM_DRIVERS=y +CONFIG_ATM_TCP=m +CONFIG_ATM_LANAI=m +CONFIG_ATM_ENI=m +# CONFIG_ATM_ENI_DEBUG is not set +# CONFIG_ATM_ENI_TUNE_BURST is not set +CONFIG_ATM_FIRESTREAM=m +CONFIG_ATM_ZATM=m +# CONFIG_ATM_ZATM_DEBUG is not set +CONFIG_ATM_IDT77252=m +# CONFIG_ATM_IDT77252_DEBUG is not set +# CONFIG_ATM_IDT77252_RCV_ALL is not set +CONFIG_ATM_AMBASSADOR=m +# CONFIG_ATM_AMBASSADOR_DEBUG is not set +CONFIG_ATM_HORIZON=m +# CONFIG_ATM_HORIZON_DEBUG is not set +# CONFIG_ATM_FORE200E_USE_TASKLET is not set +CONFIG_ATM_FORE200E_TX_RETRY=16 +CONFIG_ATM_FORE200E_DEBUG=0 +CONFIG_ATM_HE=m +CONFIG_ATM_HE_USE_SUNI=y + +## +## file: drivers/auxdisplay/Kconfig +## +CONFIG_KS0108=m +CONFIG_KS0108_PORT=0x378 +CONFIG_KS0108_DELAY=2 + +## +## file: drivers/block/Kconfig +## +CONFIG_BLK_DEV_FD=m +CONFIG_BLK_DEV_DAC960=m +CONFIG_BLK_DEV_UMEM=m +CONFIG_BLK_DEV_SX8=m +CONFIG_CDROM_PKTCDVD=m +CONFIG_CDROM_PKTCDVD_BUFFERS=8 +# CONFIG_CDROM_PKTCDVD_WCACHE is not set + +## +## file: drivers/bluetooth/Kconfig +## +CONFIG_BT_HCIUART=m +CONFIG_BT_HCIUART_H4=y +CONFIG_BT_HCIUART_BCSP=y +CONFIG_BT_HCIBCM203X=m +CONFIG_BT_HCIBPA10X=m +CONFIG_BT_HCIBFUSB=m +CONFIG_BT_HCIDTL1=m +CONFIG_BT_HCIBT3C=m +CONFIG_BT_HCIBLUECARD=m +CONFIG_BT_HCIVHCI=m + +## +## file: drivers/char/Kconfig +## +CONFIG_PRINTER=m +# CONFIG_LP_CONSOLE is not set +CONFIG_PPDEV=m +CONFIG_NVRAM=m +CONFIG_DTLK=m +CONFIG_R3964=m +CONFIG_APPLICOM=m +CONFIG_MWAVE=m +CONFIG_RAW_DRIVER=m +CONFIG_MAX_RAW_DEVS=256 +CONFIG_HPET=y +CONFIG_HPET_MMAP=y +CONFIG_HPET_MMAP_DEFAULT=y + +## +## file: drivers/char/agp/Kconfig +## +#. Workaround +CONFIG_AGP=y +#. Workaround +CONFIG_AGP_AMD64=y +#. Workaround +CONFIG_AGP_INTEL=y +#. Workaround +CONFIG_AGP_SIS=y +#. Workaround +CONFIG_AGP_VIA=y + +## +## file: drivers/char/hw_random/Kconfig +## +CONFIG_HW_RANDOM_INTEL=m +CONFIG_HW_RANDOM_AMD=m +CONFIG_HW_RANDOM_GEODE=m +CONFIG_HW_RANDOM_VIA=m + +## +## file: drivers/char/ipmi/Kconfig +## +CONFIG_IPMI_HANDLER=m +# CONFIG_IPMI_PANIC_EVENT is not set +CONFIG_IPMI_DEVICE_INTERFACE=m +CONFIG_IPMI_SI=m +CONFIG_IPMI_WATCHDOG=m +CONFIG_IPMI_POWEROFF=m + +## +## file: drivers/char/tpm/Kconfig +## +CONFIG_TCG_TPM=m +CONFIG_TCG_TIS=m +CONFIG_TCG_TIS_I2C_ATMEL=m +CONFIG_TCG_TIS_I2C_INFINEON=m +CONFIG_TCG_TIS_I2C_NUVOTON=m +CONFIG_TCG_NSC=m +CONFIG_TCG_ATMEL=m +CONFIG_TCG_INFINEON=m +CONFIG_TCG_XEN=m +CONFIG_TCG_CRB=m + +## +## file: drivers/char/tpm/st33zp24/Kconfig +## +CONFIG_TCG_TIS_ST33ZP24_I2C=m + +## +## file: drivers/cpufreq/Kconfig +## +## choice: Default CPUFreq governor +# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set +CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set +## end choice + +## +## file: drivers/cpufreq/Kconfig.x86 +## +CONFIG_X86_INTEL_PSTATE=y +CONFIG_X86_PCC_CPUFREQ=m +CONFIG_X86_ACPI_CPUFREQ=m +CONFIG_X86_ACPI_CPUFREQ_CPB=y +CONFIG_X86_POWERNOW_K8=m +CONFIG_X86_AMD_FREQ_SENSITIVITY=m +CONFIG_X86_SPEEDSTEP_CENTRINO=m +CONFIG_X86_P4_CLOCKMOD=m + +## +## file: drivers/cpuidle/Kconfig +## +CONFIG_CPU_IDLE=y + +## +## file: drivers/crypto/Kconfig +## +CONFIG_CRYPTO_DEV_PADLOCK=m +CONFIG_CRYPTO_DEV_PADLOCK_AES=m +CONFIG_CRYPTO_DEV_PADLOCK_SHA=m +CONFIG_CRYPTO_DEV_CCP=y + +## +## file: drivers/crypto/ccp/Kconfig +## +CONFIG_CRYPTO_DEV_CCP_DD=m +CONFIG_CRYPTO_DEV_CCP_CRYPTO=m + +## +## file: drivers/crypto/qat/Kconfig +## +CONFIG_CRYPTO_DEV_QAT_DH895xCC=m +CONFIG_CRYPTO_DEV_QAT_C3XXX=m +CONFIG_CRYPTO_DEV_QAT_C62X=m +CONFIG_CRYPTO_DEV_QAT_DH895xCCVF=m +CONFIG_CRYPTO_DEV_QAT_C3XXXVF=m +CONFIG_CRYPTO_DEV_QAT_C62XVF=m + +## +## file: drivers/dma/Kconfig +## +CONFIG_DMADEVICES=y +CONFIG_INTEL_IDMA64=m +CONFIG_INTEL_IOATDMA=m + +## +## file: drivers/dma/dw/Kconfig +## +CONFIG_DW_DMAC=m + +## +## file: drivers/edac/Kconfig +## +CONFIG_EDAC=y +# CONFIG_EDAC_DEBUG is not set +CONFIG_EDAC_DECODE_MCE=m +CONFIG_EDAC_AMD64=m +# CONFIG_EDAC_AMD64_ERROR_INJECTION is not set +CONFIG_EDAC_AMD76X=m +CONFIG_EDAC_E7XXX=m +CONFIG_EDAC_E752X=m +CONFIG_EDAC_I82875P=m +CONFIG_EDAC_I82975X=m +CONFIG_EDAC_I3000=m +CONFIG_EDAC_I3200=m +CONFIG_EDAC_IE31200=m +CONFIG_EDAC_X38=m +CONFIG_EDAC_I5400=m +CONFIG_EDAC_I7CORE=m +CONFIG_EDAC_I82860=m +CONFIG_EDAC_R82600=m +CONFIG_EDAC_I5000=m +CONFIG_EDAC_I5100=m +CONFIG_EDAC_I7300=m +CONFIG_EDAC_SKX=m +CONFIG_EDAC_AMD8131=m +CONFIG_EDAC_AMD8111=m + +## +## file: drivers/firmware/Kconfig +## +CONFIG_EDD=m +# CONFIG_EDD_OFF is not set +CONFIG_FIRMWARE_MEMMAP=y +CONFIG_DELL_RBU=m +CONFIG_DCDBAS=m +CONFIG_DMIID=y +CONFIG_ISCSI_IBFT_FIND=y +CONFIG_ISCSI_IBFT=y + +## +## file: drivers/firmware/efi/Kconfig +## +CONFIG_EFI_RUNTIME_MAP=y +# CONFIG_EFI_FAKE_MEMMAP is not set + +## +## file: drivers/firmware/google/Kconfig +## +# CONFIG_GOOGLE_FIRMWARE is not set + +## +## file: drivers/gpio/Kconfig +## +CONFIG_GPIOLIB=y +CONFIG_GPIO_AMDPT=m +# CONFIG_GPIO_ICH is not set +# CONFIG_GPIO_LYNXPOINT is not set +# CONFIG_GPIO_F7188X is not set +# CONFIG_GPIO_SCH is not set +CONFIG_GPIO_KEMPLD=m +# CONFIG_GPIO_INTEL_MID is not set +CONFIG_GPIO_ML_IOH=m + +## +## file: drivers/gpu/drm/Kconfig +## +CONFIG_DRM=m +CONFIG_DRM_RADEON=m +CONFIG_DRM_AMDGPU=m +CONFIG_DRM_TDFX=m +CONFIG_DRM_R128=m +# CONFIG_DRM_I810 is not set +CONFIG_DRM_MGA=m +CONFIG_DRM_SIS=m + +## +## file: drivers/gpu/drm/amd/acp/Kconfig +## +CONFIG_DRM_AMD_ACP=y + +## +## file: drivers/gpu/drm/amd/amdkfd/Kconfig +## +CONFIG_HSA_AMD=m + +## +## file: drivers/gpu/drm/ast/Kconfig +## +CONFIG_DRM_AST=m + +## +## file: drivers/gpu/drm/gma500/Kconfig +## +CONFIG_DRM_GMA500=m +CONFIG_DRM_GMA600=y +CONFIG_DRM_GMA3600=y +CONFIG_DRM_MEDFIELD=y + +## +## file: drivers/gpu/drm/i2c/Kconfig +## +CONFIG_DRM_I2C_CH7006=m +CONFIG_DRM_I2C_SIL164=m + +## +## file: drivers/gpu/drm/i915/Kconfig +## +CONFIG_DRM_I915=m +# CONFIG_DRM_I915_ALPHA_SUPPORT is not set + +## +## file: drivers/gpu/drm/mgag200/Kconfig +## +CONFIG_DRM_MGAG200=m + +## +## file: drivers/gpu/drm/nouveau/Kconfig +## +CONFIG_DRM_NOUVEAU=m +CONFIG_DRM_NOUVEAU_BACKLIGHT=y + +## +## file: drivers/gpu/drm/vmwgfx/Kconfig +## +CONFIG_DRM_VMWGFX=m +CONFIG_DRM_VMWGFX_FBCON=y + +## +## file: drivers/gpu/vga/Kconfig +## +CONFIG_VGA_ARB_MAX_GPUS=16 +CONFIG_VGA_SWITCHEROO=y + +## +## file: drivers/hid/Kconfig +## +CONFIG_HID_APPLEIR=m +CONFIG_HID_HYPERV_MOUSE=m + +## +## file: drivers/hid/i2c-hid/Kconfig +## +CONFIG_I2C_HID=m + +## +## file: drivers/hid/intel-ish-hid/Kconfig +## +CONFIG_INTEL_ISH_HID=m + +## +## file: drivers/hid/usbhid/Kconfig +## +CONFIG_USB_HID=m + +## +## file: drivers/hv/Kconfig +## +CONFIG_HYPERV=m +CONFIG_HYPERV_UTILS=m +CONFIG_HYPERV_BALLOON=m + +## +## file: drivers/hwmon/Kconfig +## +CONFIG_SENSORS_ADM1021=m +CONFIG_SENSORS_ADM1025=m +CONFIG_SENSORS_ADM1026=m +CONFIG_SENSORS_ADM1031=m +CONFIG_SENSORS_K8TEMP=m +CONFIG_SENSORS_K10TEMP=m +CONFIG_SENSORS_FAM15H_POWER=m +CONFIG_SENSORS_ASB100=m +CONFIG_SENSORS_DS1621=m +CONFIG_SENSORS_DELL_SMM=m +CONFIG_SENSORS_F71805F=m +CONFIG_SENSORS_GL518SM=m +CONFIG_SENSORS_GL520SM=m +CONFIG_SENSORS_I5500=m +CONFIG_SENSORS_IT87=m +CONFIG_SENSORS_MAX1619=m +CONFIG_SENSORS_MENF21BMC_HWMON=m +CONFIG_SENSORS_LM63=m +CONFIG_SENSORS_LM75=m +CONFIG_SENSORS_LM77=m +CONFIG_SENSORS_LM78=m +CONFIG_SENSORS_LM80=m +CONFIG_SENSORS_LM83=m +CONFIG_SENSORS_LM85=m +CONFIG_SENSORS_LM87=m +CONFIG_SENSORS_LM90=m +CONFIG_SENSORS_LM92=m +CONFIG_SENSORS_PC87360=m +CONFIG_SENSORS_PCF8591=m +CONFIG_SENSORS_SIS5595=m +CONFIG_SENSORS_SMSC47M1=m +CONFIG_SENSORS_SMSC47B397=m +CONFIG_SENSORS_SCH5636=m +CONFIG_SENSORS_VIA686A=m +CONFIG_SENSORS_W83781D=m +CONFIG_SENSORS_W83L785TS=m +CONFIG_SENSORS_W83627HF=m +CONFIG_SENSORS_ACPI_POWER=m + +## +## file: drivers/hwtracing/intel_th/Kconfig +## +CONFIG_INTEL_TH=m +CONFIG_INTEL_TH_PCI=m +CONFIG_INTEL_TH_GTH=m +CONFIG_INTEL_TH_MSU=m +CONFIG_INTEL_TH_PTI=m + +## +## file: drivers/i2c/Kconfig +## +CONFIG_I2C=y +CONFIG_ACPI_I2C_OPREGION=y +# CONFIG_I2C_DEBUG_CORE is not set +# CONFIG_I2C_DEBUG_ALGO is not set +# CONFIG_I2C_DEBUG_BUS is not set + +## +## file: drivers/i2c/busses/Kconfig +## +CONFIG_I2C_ALI1535=m +CONFIG_I2C_ALI1563=m +CONFIG_I2C_ALI15X3=m +CONFIG_I2C_AMD756=m +CONFIG_I2C_AMD756_S4882=m +CONFIG_I2C_AMD8111=m +CONFIG_I2C_I801=m +CONFIG_I2C_ISMT=m +CONFIG_I2C_PIIX4=m +CONFIG_I2C_NFORCE2=m +CONFIG_I2C_SIS5595=m +CONFIG_I2C_SIS630=m +CONFIG_I2C_SIS96X=m +CONFIG_I2C_VIA=m +CONFIG_I2C_VIAPRO=m +CONFIG_I2C_SCMI=m +#. Sony Vaio Duo 13". +CONFIG_I2C_DESIGNWARE_PLATFORM=m +CONFIG_I2C_DESIGNWARE_PCI=m +CONFIG_I2C_KEMPLD=m +CONFIG_I2C_PARPORT=m +CONFIG_I2C_PARPORT_LIGHT=m +CONFIG_I2C_PCA_ISA=m +CONFIG_SCx200_ACB=m + +## +## file: drivers/idle/Kconfig +## +CONFIG_INTEL_IDLE=y + +## +## file: drivers/iio/accel/Kconfig +## +CONFIG_BMC150_ACCEL=m +CONFIG_KXCJK1013=m +CONFIG_MMA9551=m +CONFIG_MMA9553=m + +## +## file: drivers/iio/gyro/Kconfig +## +CONFIG_BMG160=m + +## +## file: drivers/iio/imu/Kconfig +## +CONFIG_KMX61=m + +## +## file: drivers/iio/imu/inv_mpu6050/Kconfig +## +CONFIG_INV_MPU6050_I2C=m + +## +## file: drivers/iio/light/Kconfig +## +#. Samsung Series 5 550, Chromebook Pixel +CONFIG_SENSORS_ISL29018=m +CONFIG_JSA1212=m +#. Cr-48, Acer AC700 +CONFIG_SENSORS_TSL2563=m +#. Samsung Series 5 +CONFIG_TSL2583=m + +## +## file: drivers/iio/magnetometer/Kconfig +## +CONFIG_AK8975=m + +## +## file: drivers/iio/pressure/Kconfig +## +CONFIG_BMP280=m + +## +## file: drivers/iio/proximity/Kconfig +## +CONFIG_SX9500=m + +## +## file: drivers/infiniband/hw/usnic/Kconfig +## +CONFIG_INFINIBAND_USNIC=m + +## +## file: drivers/input/gameport/Kconfig +## +CONFIG_GAMEPORT=m +CONFIG_GAMEPORT_NS558=m +CONFIG_GAMEPORT_L4=m +CONFIG_GAMEPORT_EMU10K1=m +CONFIG_GAMEPORT_FM801=m + +## +## file: drivers/input/joystick/Kconfig +## +CONFIG_INPUT_JOYSTICK=y + +## +## file: drivers/input/keyboard/Kconfig +## +CONFIG_INPUT_KEYBOARD=y +CONFIG_KEYBOARD_ATKBD=y +CONFIG_KEYBOARD_LKKBD=m +CONFIG_KEYBOARD_GPIO=m +CONFIG_KEYBOARD_NEWTON=m +CONFIG_KEYBOARD_SUNKBD=m +CONFIG_KEYBOARD_XTKBD=m + +## +## file: drivers/input/misc/Kconfig +## +CONFIG_INPUT_MISC=y +CONFIG_INPUT_PCSPKR=m +CONFIG_INPUT_APANEL=m +CONFIG_INPUT_ATLAS_BTNS=m +CONFIG_INPUT_UINPUT=m +CONFIG_INPUT_IDEAPAD_SLIDEBAR=m +CONFIG_INPUT_SOC_BUTTON_ARRAY=m + +## +## file: drivers/input/mouse/Kconfig +## +CONFIG_INPUT_MOUSE=y +CONFIG_MOUSE_PS2=m +CONFIG_MOUSE_PS2_VMMOUSE=y +CONFIG_MOUSE_SERIAL=m +CONFIG_MOUSE_APPLETOUCH=m +CONFIG_MOUSE_BCM5974=m +CONFIG_MOUSE_CYAPA=m +CONFIG_MOUSE_ELAN_I2C=m +CONFIG_MOUSE_ELAN_I2C_I2C=y +CONFIG_MOUSE_ELAN_I2C_SMBUS=y +CONFIG_MOUSE_VSXXXAA=m + +## +## file: drivers/input/serio/Kconfig +## +CONFIG_SERIO=y +CONFIG_SERIO_I8042=y +CONFIG_SERIO_SERPORT=m +CONFIG_SERIO_CT82C710=m +CONFIG_SERIO_PARKBD=m +CONFIG_SERIO_PCIPS2=m +CONFIG_SERIO_LIBPS2=y +CONFIG_SERIO_RAW=m +CONFIG_HYPERV_KEYBOARD=m + +## +## file: drivers/input/touchscreen/Kconfig +## +CONFIG_INPUT_TOUCHSCREEN=y +CONFIG_TOUCHSCREEN_TSC_SERIO=m +CONFIG_TOUCHSCREEN_SURFACE3_SPI=m + +## +## file: drivers/iommu/Kconfig +## +CONFIG_INTEL_IOMMU=y +CONFIG_INTEL_IOMMU_SVM=y +# CONFIG_INTEL_IOMMU_DEFAULT_ON is not set +CONFIG_IRQ_REMAP=y + +## +## file: drivers/isdn/Kconfig +## +CONFIG_ISDN=y +CONFIG_ISDN_CAPI=m + +## +## file: drivers/isdn/capi/Kconfig +## +CONFIG_ISDN_CAPI_CAPI20=m +CONFIG_ISDN_CAPI_MIDDLEWARE=y +CONFIG_ISDN_CAPI_CAPIDRV=m + +## +## file: drivers/isdn/hardware/avm/Kconfig +## +CONFIG_CAPI_AVM=y +CONFIG_ISDN_DRV_AVMB1_B1PCI=m +CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y +CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m +CONFIG_ISDN_DRV_AVMB1_AVM_CS=m +CONFIG_ISDN_DRV_AVMB1_T1PCI=m +CONFIG_ISDN_DRV_AVMB1_C4=m + +## +## file: drivers/isdn/hardware/eicon/Kconfig +## +CONFIG_CAPI_EICON=y +CONFIG_ISDN_DIVAS=m +CONFIG_ISDN_DIVAS_BRIPCI=y +CONFIG_ISDN_DIVAS_PRIPCI=y +CONFIG_ISDN_DIVAS_DIVACAPI=m +CONFIG_ISDN_DIVAS_USERIDI=m +CONFIG_ISDN_DIVAS_MAINT=m + +## +## file: drivers/leds/Kconfig +## +CONFIG_LEDS_CLEVO_MAIL=m +CONFIG_LEDS_MENF21BMC=m + +## +## file: drivers/media/dvb-frontends/Kconfig +## +CONFIG_DVB_RTL2832_SDR=m + +## +## file: drivers/media/platform/Kconfig +## +CONFIG_VIDEO_VIA_CAMERA=m + +## +## file: drivers/media/radio/Kconfig +## +CONFIG_USB_DSBR=m +CONFIG_RADIO_MAXIRADIO=m + +## +## file: drivers/media/rc/Kconfig +## +CONFIG_IR_ITE_CIR=m +CONFIG_IR_FINTEK=m +CONFIG_IR_NUVOTON=m +CONFIG_IR_WINBOND_CIR=m +CONFIG_IR_SERIAL=m +CONFIG_IR_SERIAL_TRANSMITTER=y +CONFIG_IR_SIR=m + +## +## file: drivers/media/tuners/Kconfig +## +CONFIG_MEDIA_TUNER_MSI001=m + +## +## file: drivers/media/usb/as102/Kconfig +## +CONFIG_DVB_AS102=m + +## +## file: drivers/media/usb/go7007/Kconfig +## +# CONFIG_VIDEO_GO7007 is not set + +## +## file: drivers/media/usb/tm6000/Kconfig +## +CONFIG_VIDEO_TM6000=m +CONFIG_VIDEO_TM6000_ALSA=m +CONFIG_VIDEO_TM6000_DVB=m + +## +## file: drivers/mfd/Kconfig +## +# CONFIG_MFD_INTEL_QUARK_I2C_GPIO is not set +CONFIG_LPC_ICH=m +CONFIG_MFD_INTEL_LPSS_ACPI=m +CONFIG_MFD_INTEL_LPSS_PCI=m +CONFIG_MFD_KEMPLD=m +CONFIG_MFD_MENF21BMC=m + +## +## file: drivers/misc/Kconfig +## +CONFIG_IBM_ASM=m +CONFIG_PHANTOM=m +CONFIG_CS5535_MFGPT=m +CONFIG_HP_ILO=m +CONFIG_VMWARE_BALLOON=m + +## +## file: drivers/misc/mei/Kconfig +## +CONFIG_INTEL_MEI=m +CONFIG_INTEL_MEI_ME=m +# CONFIG_INTEL_MEI_TXE is not set + +## +## file: drivers/misc/vmw_vmci/Kconfig +## +CONFIG_VMWARE_VMCI=m + +## +## file: drivers/mmc/Kconfig +## +CONFIG_MMC=m + +## +## file: drivers/mmc/core/Kconfig +## +CONFIG_MMC_BLOCK=m + +## +## file: drivers/mmc/host/Kconfig +## +# CONFIG_MMC_DEBUG is not set +CONFIG_MMC_SDHCI_ACPI=m + +## +## file: drivers/mtd/Kconfig +## +CONFIG_MTD_REDBOOT_PARTS=y +CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1 +# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set +# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set +# CONFIG_MTD_CMDLINE_PARTS is not set +CONFIG_FTL=m +CONFIG_NFTL=m +CONFIG_NFTL_RW=y +CONFIG_INFTL=m + +## +## file: drivers/mtd/chips/Kconfig +## +CONFIG_MTD_CFI=m +CONFIG_MTD_JEDECPROBE=m +# CONFIG_MTD_CFI_ADV_OPTIONS is not set +CONFIG_MTD_MAP_BANK_WIDTH_1=y +CONFIG_MTD_MAP_BANK_WIDTH_2=y +CONFIG_MTD_MAP_BANK_WIDTH_4=y +# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set +CONFIG_MTD_CFI_I1=y +CONFIG_MTD_CFI_I2=y +# CONFIG_MTD_CFI_I4 is not set +# CONFIG_MTD_CFI_I8 is not set +CONFIG_MTD_CFI_INTELEXT=m +CONFIG_MTD_CFI_AMDSTD=m +CONFIG_MTD_CFI_STAA=m +CONFIG_MTD_RAM=m +CONFIG_MTD_ROM=m +CONFIG_MTD_ABSENT=m + +## +## file: drivers/mtd/devices/Kconfig +## +# CONFIG_MTD_PMC551 is not set +# CONFIG_MTD_PMC551_BUGFIX is not set +# CONFIG_MTD_PMC551_DEBUG is not set +CONFIG_MTD_SLRAM=m +CONFIG_MTD_PHRAM=m +CONFIG_MTD_MTDRAM=m +CONFIG_MTDRAM_TOTAL_SIZE=4096 +CONFIG_MTDRAM_ERASE_SIZE=128 +CONFIG_MTD_BLOCK2MTD=m + +## +## file: drivers/mtd/maps/Kconfig +## +CONFIG_MTD_COMPLEX_MAPPINGS=y +CONFIG_MTD_PHYSMAP=m +# CONFIG_MTD_PHYSMAP_COMPAT is not set +CONFIG_MTD_PHYSMAP_START=0x8000000 +CONFIG_MTD_PHYSMAP_LEN=0x4000000 +CONFIG_MTD_PHYSMAP_BANKWIDTH=2 +CONFIG_MTD_SBC_GXX=m +# CONFIG_MTD_AMD76XROM is not set +# CONFIG_MTD_ICHXROM is not set +# CONFIG_MTD_SCB2_FLASH is not set +CONFIG_MTD_NETtel=m +# CONFIG_MTD_L440GX is not set +CONFIG_MTD_PCI=m + +## +## file: drivers/mtd/nand/Kconfig +## +CONFIG_MTD_NAND=m +CONFIG_MTD_NAND_DISKONCHIP=m +# CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED is not set +CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0 +# CONFIG_MTD_NAND_DISKONCHIP_BBTWRITE is not set + +## +## file: drivers/net/Kconfig +## +CONFIG_DUMMY=m +CONFIG_NET_FC=y +CONFIG_NET_SB1000=m +CONFIG_VMXNET3=m + +## +## file: drivers/net/arcnet/Kconfig +## +CONFIG_ARCNET=m +CONFIG_ARCNET_1201=m +CONFIG_ARCNET_1051=m +CONFIG_ARCNET_RAW=m +CONFIG_ARCNET_CAP=m +CONFIG_ARCNET_COM90xx=m +CONFIG_ARCNET_COM90xxIO=m +CONFIG_ARCNET_RIM_I=m +CONFIG_ARCNET_COM20020=m +CONFIG_ARCNET_COM20020_PCI=m +CONFIG_ARCNET_COM20020_CS=m + +## +## file: drivers/net/ethernet/Kconfig +## +# CONFIG_CX_ECAT is not set +CONFIG_FEALNX=m + +## +## file: drivers/net/ethernet/3com/Kconfig +## +CONFIG_NET_VENDOR_3COM=y +CONFIG_PCMCIA_3C574=m +CONFIG_PCMCIA_3C589=m +CONFIG_VORTEX=m +CONFIG_TYPHOON=m + +## +## file: drivers/net/ethernet/8390/Kconfig +## +CONFIG_NET_VENDOR_8390=y +CONFIG_PCMCIA_AXNET=m +CONFIG_NE2K_PCI=m +CONFIG_PCMCIA_PCNET=m + +## +## file: drivers/net/ethernet/adaptec/Kconfig +## +CONFIG_NET_VENDOR_ADAPTEC=y +CONFIG_ADAPTEC_STARFIRE=m + +## +## file: drivers/net/ethernet/altera/Kconfig +## +# CONFIG_ALTERA_TSE is not set + +## +## file: drivers/net/ethernet/amd/Kconfig +## +CONFIG_NET_VENDOR_AMD=y +CONFIG_AMD8111_ETH=m +CONFIG_PCMCIA_NMCLAN=m + +## +## file: drivers/net/ethernet/broadcom/Kconfig +## +CONFIG_NET_VENDOR_BROADCOM=y +CONFIG_B44=m + +## +## file: drivers/net/ethernet/dec/tulip/Kconfig +## +CONFIG_NET_TULIP=y +CONFIG_DE2104X=m +CONFIG_TULIP=m +# CONFIG_TULIP_MWI is not set +# CONFIG_TULIP_MMIO is not set +CONFIG_WINBOND_840=m +CONFIG_DM9102=m +CONFIG_PCMCIA_XIRCOM=m + +## +## file: drivers/net/ethernet/dlink/Kconfig +## +CONFIG_NET_VENDOR_DLINK=y +CONFIG_SUNDANCE=m +# CONFIG_SUNDANCE_MMIO is not set + +## +## file: drivers/net/ethernet/fujitsu/Kconfig +## +CONFIG_NET_VENDOR_FUJITSU=y +CONFIG_PCMCIA_FMVJ18X=m + +## +## file: drivers/net/ethernet/hp/Kconfig +## +CONFIG_NET_VENDOR_HP=y +CONFIG_HP100=m + +## +## file: drivers/net/ethernet/intel/Kconfig +## +CONFIG_NET_VENDOR_INTEL=y +CONFIG_E100=m + +## +## file: drivers/net/ethernet/natsemi/Kconfig +## +CONFIG_NET_VENDOR_NATSEMI=y +CONFIG_NATSEMI=m + +## +## file: drivers/net/ethernet/nvidia/Kconfig +## +CONFIG_NET_VENDOR_NVIDIA=y +CONFIG_FORCEDETH=m + +## +## file: drivers/net/ethernet/realtek/Kconfig +## +CONFIG_NET_VENDOR_REALTEK=y +# CONFIG_ATP is not set +CONFIG_8139CP=m +CONFIG_8139TOO=m + +## +## file: drivers/net/ethernet/sis/Kconfig +## +CONFIG_NET_VENDOR_SIS=y +CONFIG_SIS900=m + +## +## file: drivers/net/ethernet/smsc/Kconfig +## +CONFIG_NET_VENDOR_SMSC=y +CONFIG_PCMCIA_SMC91C92=m +CONFIG_EPIC100=m + +## +## file: drivers/net/ethernet/sun/Kconfig +## +CONFIG_NET_VENDOR_SUN=y +CONFIG_HAPPYMEAL=m +CONFIG_SUNGEM=m + +## +## file: drivers/net/ethernet/via/Kconfig +## +CONFIG_NET_VENDOR_VIA=y +CONFIG_VIA_RHINE=m +# CONFIG_VIA_RHINE_MMIO is not set + +## +## file: drivers/net/ethernet/xircom/Kconfig +## +CONFIG_NET_VENDOR_XIRCOM=y +CONFIG_PCMCIA_XIRC2PS=m + +## +## file: drivers/net/fddi/Kconfig +## +CONFIG_FDDI=y +CONFIG_SKFP=m + +## +## file: drivers/net/hippi/Kconfig +## +CONFIG_HIPPI=y +CONFIG_ROADRUNNER=m +# CONFIG_ROADRUNNER_LARGE_RINGS is not set + +## +## file: drivers/net/hyperv/Kconfig +## +CONFIG_HYPERV_NET=m + +## +## file: drivers/net/plip/Kconfig +## +CONFIG_PLIP=m + +## +## file: drivers/net/wan/Kconfig +## +CONFIG_WAN=y +CONFIG_LANMEDIA=m +CONFIG_PCI200SYN=m +CONFIG_WANXL=m +CONFIG_FARSYNC=m +CONFIG_DSCC4=m +CONFIG_DSCC4_PCISYNC=y +CONFIG_DSCC4_PCI_RST=y +CONFIG_DLCI=m +CONFIG_DLCI_MAX=8 +# CONFIG_SBNI is not set + +## +## file: drivers/net/wireless/Kconfig +## +CONFIG_PCMCIA_RAYCS=m +CONFIG_PCMCIA_WL3501=m + +## +## file: drivers/net/wireless/atmel/Kconfig +## +CONFIG_ATMEL=m +CONFIG_PCI_ATMEL=m +CONFIG_PCMCIA_ATMEL=m + +## +## file: drivers/net/wireless/broadcom/brcm80211/Kconfig +## +#. Sony Vaio laptops +CONFIG_BRCMFMAC_SDIO=y + +## +## file: drivers/net/wireless/cisco/Kconfig +## +CONFIG_AIRO_CS=m + +## +## file: drivers/net/wireless/intersil/orinoco/Kconfig +## +CONFIG_HERMES=m +CONFIG_PLX_HERMES=m +CONFIG_TMD_HERMES=m +CONFIG_PCI_HERMES=m +CONFIG_PCMCIA_HERMES=m + +## +## file: drivers/net/wireless/marvell/mwifiex/Kconfig +## +CONFIG_MWIFIEX=m +CONFIG_MWIFIEX_SDIO=m +CONFIG_MWIFIEX_PCIE=m +CONFIG_MWIFIEX_USB=m + +## +## file: drivers/net/wireless/zydas/Kconfig +## +CONFIG_USB_ZD1201=m + +## +## file: drivers/nfc/Kconfig +## +CONFIG_NFC_MEI_PHY=m + +## +## file: drivers/nfc/pn544/Kconfig +## +CONFIG_NFC_PN544_MEI=m + +## +## file: drivers/nvdimm/Kconfig +## +CONFIG_LIBNVDIMM=m +CONFIG_BLK_DEV_PMEM=m +CONFIG_ND_BLK=m +CONFIG_BTT=y + +## +## file: drivers/pci/Kconfig +## +CONFIG_PCI_PRI=y +CONFIG_PCI_PASID=y + +## +## file: drivers/pci/host/Kconfig +## +CONFIG_VMD=m + +## +## file: drivers/pci/hotplug/Kconfig +## +CONFIG_HOTPLUG_PCI=y +CONFIG_HOTPLUG_PCI_ACPI=y +CONFIG_HOTPLUG_PCI_ACPI_IBM=m +CONFIG_HOTPLUG_PCI_CPCI_ZT5550=m +CONFIG_HOTPLUG_PCI_CPCI_GENERIC=m +CONFIG_HOTPLUG_PCI_SHPC=m + +## +## file: drivers/pcmcia/Kconfig +## +CONFIG_PCCARD=m +CONFIG_PCMCIA=m +CONFIG_CARDBUS=y +CONFIG_YENTA=m +CONFIG_PD6729=m +CONFIG_I82092=m +CONFIG_TCIC=m +# CONFIG_PCMCIA_DEBUG is not set + +## +## file: drivers/pinctrl/intel/Kconfig +## +CONFIG_PINCTRL_BAYTRAIL=y +CONFIG_PINCTRL_CHERRYVIEW=y +CONFIG_PINCTRL_BROXTON=y +CONFIG_PINCTRL_SUNRISEPOINT=y + +## +## file: drivers/platform/chrome/Kconfig +## +CONFIG_CHROME_PLATFORMS=y +CONFIG_CHROMEOS_LAPTOP=m +CONFIG_CHROMEOS_PSTORE=m +CONFIG_CROS_KBD_LED_BACKLIGHT=m + +## +## file: drivers/platform/x86/Kconfig +## +CONFIG_X86_PLATFORM_DEVICES=y +CONFIG_ACER_WMI=m +CONFIG_ACERHDF=m +CONFIG_ALIENWARE_WMI=m +CONFIG_ASUS_LAPTOP=m +CONFIG_DELL_LAPTOP=m +CONFIG_DELL_WMI=m +CONFIG_DELL_WMI_AIO=m +CONFIG_DELL_WMI_LED=m +CONFIG_DELL_SMO8800=m +CONFIG_DELL_RBTN=m +CONFIG_FUJITSU_LAPTOP=m +CONFIG_FUJITSU_TABLET=m +CONFIG_AMILO_RFKILL=m +CONFIG_HP_ACCEL=m +CONFIG_HP_WIRELESS=m +CONFIG_HP_WMI=m +CONFIG_MSI_LAPTOP=m +CONFIG_PANASONIC_LAPTOP=m +CONFIG_COMPAL_LAPTOP=m +CONFIG_SONY_LAPTOP=m +CONFIG_SONYPI_COMPAT=y +CONFIG_IDEAPAD_LAPTOP=m +CONFIG_THINKPAD_ACPI=m +CONFIG_THINKPAD_ACPI_ALSA_SUPPORT=y +# CONFIG_THINKPAD_ACPI_DEBUGFACILITIES is not set +# CONFIG_THINKPAD_ACPI_DEBUG is not set +# CONFIG_THINKPAD_ACPI_UNSAFE_LEDS is not set +CONFIG_THINKPAD_ACPI_VIDEO=y +CONFIG_THINKPAD_ACPI_HOTKEY_POLL=y +CONFIG_SENSORS_HDAPS=m +# CONFIG_INTEL_MENLOW is not set +CONFIG_EEEPC_LAPTOP=m +CONFIG_ASUS_WMI=m +CONFIG_ASUS_NB_WMI=m +CONFIG_EEEPC_WMI=m +CONFIG_ASUS_WIRELESS=m +CONFIG_ACPI_WMI=m +CONFIG_MSI_WMI=m +CONFIG_TOPSTAR_LAPTOP=m +CONFIG_ACPI_TOSHIBA=m +CONFIG_TOSHIBA_BT_RFKILL=m +CONFIG_TOSHIBA_HAPS=m +CONFIG_ACPI_CMPC=m +CONFIG_INTEL_CHT_INT33FE=m +CONFIG_INTEL_HID_EVENT=m +CONFIG_INTEL_VBTN=m +CONFIG_INTEL_IPS=m +CONFIG_IBM_RTL=m +CONFIG_SAMSUNG_LAPTOP=m +CONFIG_INTEL_OAKTRAIL=m +CONFIG_SAMSUNG_Q10=m +CONFIG_APPLE_GMUX=m +CONFIG_INTEL_RST=m +CONFIG_INTEL_SMARTCONNECT=m +CONFIG_PVPANIC=m +CONFIG_INTEL_PMC_IPC=m +CONFIG_SURFACE_PRO3_BUTTON=m + +## +## file: drivers/pnp/Kconfig +## +CONFIG_PNP=y + +## +## file: drivers/power/supply/Kconfig +## +CONFIG_BATTERY_SBS=m + +## +## file: drivers/powercap/Kconfig +## +CONFIG_POWERCAP=y +CONFIG_INTEL_RAPL=m + +## +## file: drivers/ptp/Kconfig +## +CONFIG_PTP_1588_CLOCK_PCH=m + +## +## file: drivers/rtc/Kconfig +## +CONFIG_RTC_DRV_CMOS=y + +## +## file: drivers/scsi/Kconfig +## +CONFIG_SCSI_DPT_I2O=m +CONFIG_SCSI_ARCMSR=m +CONFIG_SCSI_BUSLOGIC=m +# CONFIG_SCSI_FLASHPOINT is not set +CONFIG_VMWARE_PVSCSI=m +CONFIG_HYPERV_STORAGE=m +CONFIG_SCSI_DMX3191D=m +CONFIG_SCSI_EATA=m +CONFIG_SCSI_EATA_TAGGED_QUEUE=y +CONFIG_SCSI_EATA_LINKED_COMMANDS=y +CONFIG_SCSI_EATA_MAX_TAGS=16 +CONFIG_SCSI_FUTURE_DOMAIN=m +CONFIG_SCSI_GDTH=m +CONFIG_SCSI_ISCI=m +CONFIG_SCSI_IPS=m +CONFIG_SCSI_INITIO=m +CONFIG_SCSI_SYM53C8XX_2=m +CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 +CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 +CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 +CONFIG_SCSI_IPR=m +# CONFIG_SCSI_IPR_TRACE is not set +# CONFIG_SCSI_IPR_DUMP is not set +CONFIG_SCSI_QLOGIC_1280=m +CONFIG_SCSI_DC395x=m +CONFIG_SCSI_AM53C974=m +CONFIG_SCSI_DEBUG=m + +## +## file: drivers/scsi/aic7xxx/Kconfig.aic7xxx +## +CONFIG_AIC7XXX_CMDS_PER_DEVICE=8 + +## +## file: drivers/scsi/megaraid/Kconfig.megaraid +## +CONFIG_MEGARAID_NEWGEN=y +CONFIG_MEGARAID_MM=m +CONFIG_MEGARAID_MAILBOX=m +CONFIG_MEGARAID_LEGACY=m + +## +## file: drivers/scsi/pcmcia/Kconfig +## +CONFIG_PCMCIA_AHA152X=m +CONFIG_PCMCIA_FDOMAIN=m +CONFIG_PCMCIA_QLOGIC=m +CONFIG_PCMCIA_SYM53C500=m + +## +## file: drivers/sfi/Kconfig +## +CONFIG_SFI=y + +## +## file: drivers/staging/comedi/Kconfig +## +CONFIG_COMEDI=m +# CONFIG_COMEDI_DEBUG is not set +CONFIG_COMEDI_DEFAULT_BUF_SIZE_KB=2048 +CONFIG_COMEDI_DEFAULT_BUF_MAXSIZE_KB=20480 +CONFIG_COMEDI_MISC_DRIVERS=y +CONFIG_COMEDI_BOND=m +CONFIG_COMEDI_TEST=m +CONFIG_COMEDI_PARPORT=m +CONFIG_COMEDI_SERIAL2002=m +CONFIG_COMEDI_SSV_DNP=m +# CONFIG_COMEDI_ISA_DRIVERS is not set +CONFIG_COMEDI_II_PCI20KC=m +CONFIG_COMEDI_S526=m +CONFIG_COMEDI_PCI_DRIVERS=y +CONFIG_COMEDI_8255_PCI=m +CONFIG_COMEDI_ADDI_APCI_1032=m +CONFIG_COMEDI_ADDI_APCI_1500=m +CONFIG_COMEDI_ADDI_APCI_1516=m +CONFIG_COMEDI_ADDI_APCI_1564=m +CONFIG_COMEDI_ADDI_APCI_16XX=m +CONFIG_COMEDI_ADDI_APCI_2032=m +CONFIG_COMEDI_ADDI_APCI_2200=m +CONFIG_COMEDI_ADDI_APCI_3120=m +CONFIG_COMEDI_ADDI_APCI_3501=m +CONFIG_COMEDI_ADDI_APCI_3XXX=m +CONFIG_COMEDI_ADL_PCI6208=m +CONFIG_COMEDI_ADL_PCI7X3X=m +CONFIG_COMEDI_ADL_PCI8164=m +CONFIG_COMEDI_ADL_PCI9111=m +CONFIG_COMEDI_ADL_PCI9118=m +CONFIG_COMEDI_ADV_PCI1710=m +CONFIG_COMEDI_ADV_PCI1720=m +CONFIG_COMEDI_ADV_PCI1723=m +CONFIG_COMEDI_ADV_PCI1724=m +CONFIG_COMEDI_ADV_PCI1760=m +CONFIG_COMEDI_ADV_PCI_DIO=m +CONFIG_COMEDI_AMPLC_DIO200_PCI=m +CONFIG_COMEDI_AMPLC_PC236_PCI=m +CONFIG_COMEDI_AMPLC_PC263_PCI=m +CONFIG_COMEDI_AMPLC_PCI224=m +CONFIG_COMEDI_AMPLC_PCI230=m +CONFIG_COMEDI_CONTEC_PCI_DIO=m +CONFIG_COMEDI_DAS08_PCI=m +CONFIG_COMEDI_DT3000=m +CONFIG_COMEDI_DYNA_PCI10XX=m +CONFIG_COMEDI_GSC_HPDI=m +CONFIG_COMEDI_MF6X4=m +CONFIG_COMEDI_ICP_MULTI=m +CONFIG_COMEDI_DAQBOARD2000=m +CONFIG_COMEDI_JR3_PCI=m +CONFIG_COMEDI_KE_COUNTER=m +CONFIG_COMEDI_CB_PCIDAS64=m +CONFIG_COMEDI_CB_PCIDAS=m +CONFIG_COMEDI_CB_PCIDDA=m +CONFIG_COMEDI_CB_PCIMDAS=m +CONFIG_COMEDI_CB_PCIMDDA=m +CONFIG_COMEDI_ME4000=m +CONFIG_COMEDI_ME_DAQ=m +CONFIG_COMEDI_NI_6527=m +CONFIG_COMEDI_NI_65XX=m +CONFIG_COMEDI_NI_660X=m +CONFIG_COMEDI_NI_670X=m +CONFIG_COMEDI_NI_LABPC_PCI=m +CONFIG_COMEDI_NI_PCIDIO=m +CONFIG_COMEDI_NI_PCIMIO=m +CONFIG_COMEDI_RTD520=m +CONFIG_COMEDI_S626=m +CONFIG_COMEDI_PCMCIA_DRIVERS=y +CONFIG_COMEDI_CB_DAS16_CS=m +CONFIG_COMEDI_DAS08_CS=m +CONFIG_COMEDI_NI_DAQ_700_CS=m +CONFIG_COMEDI_NI_DAQ_DIO24_CS=m +CONFIG_COMEDI_NI_LABPC_CS=m +CONFIG_COMEDI_NI_MIO_CS=m +CONFIG_COMEDI_QUATECH_DAQP_CS=m +CONFIG_COMEDI_USB_DRIVERS=y +CONFIG_COMEDI_DT9812=m +CONFIG_COMEDI_NI_USB6501=m +CONFIG_COMEDI_USBDUX=m +CONFIG_COMEDI_USBDUXFAST=m +CONFIG_COMEDI_USBDUXSIGMA=m +CONFIG_COMEDI_VMK80XX=m +CONFIG_COMEDI_8255_SA=m +CONFIG_COMEDI_KCOMEDILIB=m + +## +## file: drivers/staging/lustre/lnet/Kconfig +## +CONFIG_LNET=m +CONFIG_LNET_MAX_PAYLOAD=1048576 +# CONFIG_LNET_SELFTEST is not set +CONFIG_LNET_XPRT_IB=m + +## +## file: drivers/staging/lustre/lustre/Kconfig +## +CONFIG_LUSTRE_FS=m +# CONFIG_LUSTRE_DEBUG_EXPENSIVE_CHECK is not set + +## +## file: drivers/staging/media/Kconfig +## +CONFIG_STAGING_MEDIA=y + +## +## file: drivers/staging/media/bcm2048/Kconfig +## +# CONFIG_I2C_BCM2048 is not set + +## +## file: drivers/staging/media/lirc/Kconfig +## +CONFIG_LIRC_STAGING=y +CONFIG_LIRC_ZILOG=m + +## +## file: drivers/staging/rtl8192e/Kconfig +## +CONFIG_RTLLIB=m +CONFIG_RTLLIB_CRYPTO_CCMP=m +CONFIG_RTLLIB_CRYPTO_TKIP=m +CONFIG_RTLLIB_CRYPTO_WEP=m + +## +## file: drivers/staging/rtl8192e/rtl8192e/Kconfig +## +CONFIG_RTL8192E=m + +## +## file: drivers/staging/rtl8192u/Kconfig +## +CONFIG_RTL8192U=m + +## +## file: drivers/staging/rtl8723bs/Kconfig +## +CONFIG_RTL8723BS=m + +## +## file: drivers/staging/rts5208/Kconfig +## +CONFIG_RTS5208=m + +## +## file: drivers/staging/vt6656/Kconfig +## +CONFIG_VT6656=m + +## +## file: drivers/staging/wlan-ng/Kconfig +## +CONFIG_PRISM2_USB=m + +## +## file: drivers/thermal/Kconfig +## +CONFIG_THERMAL=m +# CONFIG_THERMAL_OF is not set +# CONFIG_CPU_THERMAL is not set +CONFIG_INTEL_POWERCLAMP=m +CONFIG_X86_PKG_TEMP_THERMAL=m +CONFIG_INTEL_SOC_DTS_THERMAL=m +CONFIG_INTEL_PCH_THERMAL=m + +## +## file: drivers/thermal/int340x_thermal/Kconfig +## +CONFIG_INT340X_THERMAL=m +CONFIG_INT3406_THERMAL=m + +## +## file: drivers/thunderbolt/Kconfig +## +CONFIG_THUNDERBOLT=m + +## +## file: drivers/tty/Kconfig +## +CONFIG_VT=y +CONFIG_VT_CONSOLE=y +CONFIG_SERIAL_NONSTANDARD=y +CONFIG_ROCKETPORT=m +CONFIG_CYCLADES=m +# CONFIG_CYZ_INTR is not set +CONFIG_SYNCLINK=m +CONFIG_SYNCLINKMP=m +CONFIG_N_HDLC=m + +## +## file: drivers/tty/serial/Kconfig +## +CONFIG_SERIAL_JSM=m + +## +## file: drivers/tty/serial/8250/Kconfig +## +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_FINTEK=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_CS=m +CONFIG_SERIAL_8250_NR_UARTS=32 +CONFIG_SERIAL_8250_RUNTIME_UARTS=4 +CONFIG_SERIAL_8250_EXTENDED=y +CONFIG_SERIAL_8250_MANY_PORTS=y +CONFIG_SERIAL_8250_SHARE_IRQ=y +# CONFIG_SERIAL_8250_DETECT_IRQ is not set +CONFIG_SERIAL_8250_RSA=y +CONFIG_SERIAL_8250_DW=y +# CONFIG_SERIAL_8250_LPSS is not set +CONFIG_SERIAL_8250_MID=y + +## +## file: drivers/usb/Kconfig +## +CONFIG_USB=m +CONFIG_USB_USS720=m + +## +## file: drivers/usb/atm/Kconfig +## +CONFIG_USB_ATM=m +CONFIG_USB_SPEEDTOUCH=m + +## +## file: drivers/usb/gadget/Kconfig +## +CONFIG_USB_GADGET=m + +## +## file: drivers/usb/gadget/udc/Kconfig +## +CONFIG_USB_EG20T=m + +## +## file: drivers/usb/host/Kconfig +## +CONFIG_USB_EHCI_HCD=m +CONFIG_USB_OHCI_HCD=m +# CONFIG_USB_OHCI_HCD_SSB is not set +CONFIG_USB_UHCI_HCD=m +CONFIG_USB_SL811_HCD=m +# CONFIG_USB_SL811_HCD_ISO is not set +CONFIG_USB_SL811_CS=m + +## +## file: drivers/vfio/Kconfig +## +CONFIG_VFIO=m + +## +## file: drivers/vfio/pci/Kconfig +## +CONFIG_VFIO_PCI=m +CONFIG_VFIO_PCI_VGA=y + +## +## file: drivers/video/console/Kconfig +## +CONFIG_VGA_CONSOLE=y + +## +## file: drivers/video/fbdev/Kconfig +## +CONFIG_FB_MODE_HELPERS=y +CONFIG_FB_TILEBLITTING=y +CONFIG_FB_CIRRUS=m +CONFIG_FB_PM2=m +CONFIG_FB_PM2_FIFO_DISCONNECT=y +CONFIG_FB_CYBER2000=m +CONFIG_FB_CYBER2000_DDC=y +# CONFIG_FB_ASILIANT is not set +# CONFIG_FB_IMSTT is not set +CONFIG_FB_VGA16=m +CONFIG_FB_UVESA=m +CONFIG_FB_VESA=y +CONFIG_FB_EFI=y +CONFIG_FB_N411=m +CONFIG_FB_HGA=m +CONFIG_FB_LE80578=m +CONFIG_FB_CARILLO_RANCH=m +# CONFIG_FB_INTEL is not set +CONFIG_FB_MATROX=m +CONFIG_FB_MATROX_MILLENIUM=y +CONFIG_FB_MATROX_MYSTIQUE=y +CONFIG_FB_MATROX_I2C=m +CONFIG_FB_RADEON=m +CONFIG_FB_RADEON_I2C=y +CONFIG_FB_RADEON_BACKLIGHT=y +# CONFIG_FB_RADEON_DEBUG is not set +CONFIG_FB_ATY128=m +CONFIG_FB_ATY128_BACKLIGHT=y +CONFIG_FB_ATY=m +CONFIG_FB_ATY_CT=y +CONFIG_FB_ATY_GX=y +CONFIG_FB_ATY_BACKLIGHT=y +CONFIG_FB_SAVAGE=m +# CONFIG_FB_SAVAGE_ACCEL is not set +CONFIG_FB_SIS=m +CONFIG_FB_SIS_300=y +CONFIG_FB_SIS_315=y +CONFIG_FB_NEOMAGIC=m +CONFIG_FB_KYRO=m +CONFIG_FB_VOODOO1=m +CONFIG_FB_TRIDENT=m +CONFIG_FB_VIRTUAL=m +CONFIG_FB_HYPERV=m +#. Doesn't support handover; see #822575 +# CONFIG_FB_SIMPLE is not set + +## +## file: drivers/video/fbdev/geode/Kconfig +## +# CONFIG_FB_GEODE is not set + +## +## file: drivers/watchdog/Kconfig +## +CONFIG_MENF21BMC_WATCHDOG=m +CONFIG_ACQUIRE_WDT=m +CONFIG_ADVANTECH_WDT=m +CONFIG_ALIM1535_WDT=m +CONFIG_ALIM7101_WDT=m +CONFIG_F71808E_WDT=m +CONFIG_SP5100_TCO=m +CONFIG_GEODE_WDT=m +CONFIG_EUROTECH_WDT=m +CONFIG_IB700_WDT=m +CONFIG_IBMASR=m +CONFIG_WAFER_WDT=m +CONFIG_I6300ESB_WDT=m +CONFIG_IE6XX_WDT=m +CONFIG_IT8712F_WDT=m +CONFIG_HP_WATCHDOG=m +CONFIG_KEMPLD_WDT=m +CONFIG_HPWDT_NMI_DECODING=y +CONFIG_SC1200_WDT=m +CONFIG_NV_TCO=m +CONFIG_60XX_WDT=m +CONFIG_CPU5_WDT=m +CONFIG_VIA_WDT=m +CONFIG_W83627HF_WDT=m +CONFIG_W83877F_WDT=m +CONFIG_W83977F_WDT=m +CONFIG_MACHZ_WDT=m +CONFIG_PCIPCWATCHDOG=m +CONFIG_WDTPCI=m +CONFIG_USBPCWATCHDOG=m + +## +## file: drivers/xen/Kconfig +## +CONFIG_XEN_ACPI_PROCESSOR=m +CONFIG_XEN_SYMS=y + +## +## file: fs/proc/Kconfig +## +CONFIG_PROC_VMCORE=y + +## +## file: fs/pstore/Kconfig +## +CONFIG_PSTORE=y + +## +## file: init/Kconfig +## +CONFIG_USELIB=y +# CONFIG_IRQ_TIME_ACCOUNTING is not set +CONFIG_SGETMASK_SYSCALL=y +CONFIG_SYSFS_SYSCALL=y + +## +## file: kernel/irq/Kconfig +## +CONFIG_SPARSE_IRQ=y + +## +## file: kernel/power/Kconfig +## +# CONFIG_PM_TEST_SUSPEND is not set +# CONFIG_PM_TRACE_RTC is not set + +## +## file: kernel/trace/Kconfig +## +CONFIG_MMIOTRACE=y + +## +## file: lib/Kconfig.debug +## +# CONFIG_FRAME_POINTER is not set +# CONFIG_DEBUG_STACK_USAGE is not set +# CONFIG_DEBUG_PER_CPU_MAPS is not set +# CONFIG_DEBUG_STACKOVERFLOW is not set +# CONFIG_DEBUG_SHIRQ is not set +# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set +CONFIG_MEMTEST=y + +## +## file: lib/xz/Kconfig +## +CONFIG_XZ_DEC_X86=y + +## +## file: mm/Kconfig +## +CONFIG_DEFAULT_MMAP_MIN_ADDR=65536 + +## +## file: mm/Kconfig.debug +## +# CONFIG_DEBUG_PAGEALLOC is not set +# CONFIG_DEBUG_RODATA_TEST is not set + +## +## file: net/ax25/Kconfig +## +CONFIG_HAMRADIO=y +CONFIG_AX25=m +# CONFIG_AX25_DAMA_SLAVE is not set +CONFIG_NETROM=m +CONFIG_ROSE=m + +## +## file: net/decnet/Kconfig +## +CONFIG_DECNET=m +# CONFIG_DECNET_ROUTER is not set + +## +## file: net/decnet/netfilter/Kconfig +## +CONFIG_DECNET_NF_GRABULATOR=m + +## +## file: net/ipx/Kconfig +## +CONFIG_IPX=m +# CONFIG_IPX_INTERN is not set + +## +## file: net/lapb/Kconfig +## +CONFIG_LAPB=m + +## +## file: net/nfc/hci/Kconfig +## +CONFIG_NFC_HCI=m + +## +## file: net/vmw_vsock/Kconfig +## +CONFIG_VMWARE_VMCI_VSOCKETS=m +CONFIG_HYPERV_VSOCKETS=m + +## +## file: sound/drivers/Kconfig +## +CONFIG_SND_DUMMY=m +CONFIG_SND_VIRMIDI=m +CONFIG_SND_MTPAV=m +CONFIG_SND_SERIAL_U16550=m +CONFIG_SND_MPU401=m + +## +## file: sound/pci/Kconfig +## +CONFIG_SND_ALS4000=m +CONFIG_SND_ALI5451=m +CONFIG_SND_ATIIXP=m +CONFIG_SND_ATIIXP_MODEM=m +CONFIG_SND_AU8810=m +CONFIG_SND_AU8820=m +CONFIG_SND_AU8830=m +CONFIG_SND_AZT3328=m +CONFIG_SND_BT87X=m +# CONFIG_SND_BT87X_OVERCLOCK is not set +CONFIG_SND_CA0106=m +CONFIG_SND_CMIPCI=m +CONFIG_SND_CS4281=m +CONFIG_SND_CS46XX=m +CONFIG_SND_CS46XX_NEW_DSP=y +CONFIG_SND_EMU10K1=m +CONFIG_SND_EMU10K1X=m +CONFIG_SND_ENS1370=m +CONFIG_SND_ENS1371=m +CONFIG_SND_ES1938=m +CONFIG_SND_ES1968=m +CONFIG_SND_FM801=m +CONFIG_SND_FM801_TEA575X_BOOL=y +CONFIG_SND_HDSP=m +CONFIG_SND_ICE1712=m +CONFIG_SND_ICE1724=m +CONFIG_SND_INTEL8X0=m +CONFIG_SND_INTEL8X0M=m +CONFIG_SND_KORG1212=m +CONFIG_SND_MAESTRO3=m +CONFIG_SND_MIXART=m +CONFIG_SND_NM256=m +CONFIG_SND_RME32=m +CONFIG_SND_RME96=m +CONFIG_SND_RME9652=m +CONFIG_SND_SONICVIBES=m +CONFIG_SND_TRIDENT=m +CONFIG_SND_VIA82XX=m +CONFIG_SND_VIA82XX_MODEM=m +CONFIG_SND_VX222=m +CONFIG_SND_YMFPCI=m + +## +## file: sound/pci/hda/Kconfig +## +CONFIG_SND_HDA_INTEL=m + +## +## file: sound/soc/Kconfig +## +CONFIG_SND_SOC=m + +## +## file: sound/soc/amd/Kconfig +## +CONFIG_SND_SOC_AMD_ACP=m + +## +## file: sound/soc/intel/Kconfig +## +CONFIG_SND_SOC_INTEL_SST_TOPLEVEL=m +CONFIG_SND_SOC_INTEL_HASWELL=m +CONFIG_SND_SOC_INTEL_BAYTRAIL=m +CONFIG_SND_SST_ATOM_HIFI2_PLATFORM=m +CONFIG_SND_SOC_INTEL_SKYLAKE=m + +## +## file: sound/soc/intel/boards/Kconfig +## +CONFIG_SND_SOC_INTEL_HASWELL_MACH=m +CONFIG_SND_SOC_INTEL_BDW_RT5677_MACH=m +CONFIG_SND_SOC_INTEL_BROADWELL_MACH=m +CONFIG_SND_SOC_INTEL_BYTCR_RT5640_MACH=m +CONFIG_SND_SOC_INTEL_BYTCR_RT5651_MACH=m +CONFIG_SND_SOC_INTEL_CHT_BSW_RT5672_MACH=m +CONFIG_SND_SOC_INTEL_CHT_BSW_RT5645_MACH=m +CONFIG_SND_SOC_INTEL_CHT_BSW_MAX98090_TI_MACH=m +CONFIG_SND_SOC_INTEL_SKL_RT286_MACH=m +CONFIG_SND_SOC_INTEL_SKL_NAU88L25_SSM4567_MACH=m +CONFIG_SND_SOC_INTEL_SKL_NAU88L25_MAX98357A_MACH=m +# CONFIG_SND_SOC_INTEL_BXT_DA7219_MAX98357A_MACH is not set +# CONFIG_SND_SOC_INTEL_BXT_RT298_MACH is not set + +## +## file: sound/x86/Kconfig +## +CONFIG_SND_X86=y +CONFIG_HDMI_LPE_AUDIO=m + diff --git a/config/m68k/README.build b/config/m68k/README.build new file mode 100644 index 00000000000..8941608efd7 --- /dev/null +++ b/config/m68k/README.build @@ -0,0 +1,26 @@ +HOWTO cross-build m68k linux-image + +Building linux-image packages takes a while, especially on the "slower +arches", ie m68k. Cross-compiling is an alternative, and it works very well +for m68k. + +You need to set up a cross-compiler. The toolchain-source package has some +limitations, I prefer using cross-tools, see this page for instructions: + + http://people.debian.org/~cts/debian-m68k/cross-compile/ + +Now you only have to tell the debian build system, that you do want to build +packages for m68k. It used to be sufficient to pass an option to debuild, +since recently you also have to set an environment variable, like this: + + DEB_HOST_ARCH=m68k debuild -B -am68k + +If you also want to build source packages, omit the -B. + +If you want to build images for just one of the currently nine subarches, +you can uncomment some lines in the flavours section in: + debian/arch/m68k/defines + +The first run of debuild will give you an error message that updating the +configs suceeded, the second run will build the images. + diff --git a/config/m68k/config b/config/m68k/config new file mode 100644 index 00000000000..351174cd4c2 --- /dev/null +++ b/config/m68k/config @@ -0,0 +1,880 @@ +## +## file: arch/m68k/Kconfig +## +# CONFIG_PM is not set + +## +## file: arch/m68k/Kconfig.bus +## +CONFIG_ZORRO=y +CONFIG_AMIGA_PCMCIA=y +CONFIG_ATARI_ROM_ISA=y + +## +## file: arch/m68k/Kconfig.cpu +## +CONFIG_M68020=y +CONFIG_M68030=y +CONFIG_M68040=y +CONFIG_M68060=y +CONFIG_M68KFPU_EMU=y +# CONFIG_ADVANCED is not set + +## +## file: arch/m68k/Kconfig.debug +## +CONFIG_EARLY_PRINTK=y + +## +## file: arch/m68k/Kconfig.devices +## +CONFIG_HEARTBEAT=y +CONFIG_PROC_HARDWARE=y +CONFIG_NATFEAT=y +CONFIG_NFBLOCK=y +CONFIG_NFCON=y +CONFIG_NFETH=y +CONFIG_ATARI_ETHERNAT=y +CONFIG_ATARI_ETHERNEC=y +CONFIG_ATARI_DSP56K=m +CONFIG_AMIGA_BUILTIN_SERIAL=y +CONFIG_SERIAL_CONSOLE=y + +## +## file: arch/m68k/Kconfig.machine +## +CONFIG_AMIGA=y +CONFIG_ATARI=y +CONFIG_MAC=y +CONFIG_APOLLO=y +CONFIG_VME=y +CONFIG_MVME147=y +CONFIG_MVME16x=y +CONFIG_BVME6000=y +# CONFIG_HP300 is not set +# CONFIG_SUN3X is not set +CONFIG_Q40=y +# CONFIG_SUN3 is not set + +## +## file: block/Kconfig +## +# CONFIG_BLK_DEV_INTEGRITY is not set + +## +## file: block/Kconfig.iosched +## +CONFIG_IOSCHED_DEADLINE=m + +## +## file: block/partitions/Kconfig +## +CONFIG_PARTITION_ADVANCED=y +CONFIG_AMIGA_PARTITION=y +CONFIG_ATARI_PARTITION=y +CONFIG_MAC_PARTITION=y +CONFIG_MSDOS_PARTITION=y +CONFIG_BSD_DISKLABEL=y +CONFIG_MINIX_SUBPARTITION=y +CONFIG_SOLARIS_X86_PARTITION=y +CONFIG_UNIXWARE_DISKLABEL=y +CONFIG_LDM_PARTITION=y +CONFIG_LDM_DEBUG=y +CONFIG_SUN_PARTITION=y +# CONFIG_KARMA_PARTITION is not set +CONFIG_SYSV68_PARTITION=y + +## +## file: drivers/accessibility/Kconfig +## +# CONFIG_ACCESSIBILITY is not set + +## +## file: drivers/ata/Kconfig +## +CONFIG_PATA_FALCON=m + +## +## file: drivers/bcma/Kconfig +## +# CONFIG_BCMA is not set + +## +## file: drivers/block/Kconfig +## +CONFIG_BLK_DEV_FD=m +CONFIG_AMIGA_FLOPPY=m +CONFIG_ATARI_FLOPPY=m +CONFIG_BLK_DEV_SWIM=m +CONFIG_AMIGA_Z2RAM=y +CONFIG_CDROM_PKTCDVD=m +# CONFIG_BLK_DEV_RBD is not set + +## +## file: drivers/block/drbd/Kconfig +## +# CONFIG_BLK_DEV_DRBD is not set + +## +## file: drivers/block/mtip32xx/Kconfig +## +# CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set + +## +## file: drivers/char/Kconfig +## +CONFIG_PRINTER=m +# CONFIG_LP_CONSOLE is not set +# CONFIG_PPDEV is not set +CONFIG_NVRAM=y + +## +## file: drivers/connector/Kconfig +## +CONFIG_CONNECTOR=m + +## +## file: drivers/crypto/Kconfig +## +# CONFIG_CRYPTO_HW is not set + +## +## file: drivers/firewire/Kconfig +## +# CONFIG_FIREWIRE is not set + +## +## file: drivers/gpu/drm/Kconfig +## +# CONFIG_DRM is not set + +## +## file: drivers/hwmon/Kconfig +## +# CONFIG_HWMON is not set + +## +## file: drivers/i2c/Kconfig +## +# CONFIG_I2C is not set + +## +## file: drivers/ide/Kconfig +## +CONFIG_IDE=m +# CONFIG_BLK_DEV_IDE_SATA is not set +CONFIG_BLK_DEV_IDECS=m +CONFIG_BLK_DEV_IDECD=m +CONFIG_BLK_DEV_IDETAPE=m +CONFIG_IDE_GENERIC=m +CONFIG_BLK_DEV_PLATFORM=m +CONFIG_BLK_DEV_GAYLE=m +CONFIG_BLK_DEV_BUDDHA=m +CONFIG_BLK_DEV_FALCON_IDE=m +CONFIG_BLK_DEV_MAC_IDE=m +CONFIG_BLK_DEV_Q40IDE=m + +## +## file: drivers/iio/Kconfig +## +# CONFIG_IIO is not set + +## +## file: drivers/infiniband/Kconfig +## +# CONFIG_INFINIBAND is not set + +## +## file: drivers/input/Kconfig +## +CONFIG_INPUT_MOUSEDEV=y + +## +## file: drivers/input/gameport/Kconfig +## +# CONFIG_GAMEPORT is not set + +## +## file: drivers/input/joystick/Kconfig +## +CONFIG_INPUT_JOYSTICK=y +# CONFIG_JOYSTICK_ANALOG is not set +# CONFIG_JOYSTICK_A3D is not set +# CONFIG_JOYSTICK_ADI is not set +# CONFIG_JOYSTICK_COBRA is not set +# CONFIG_JOYSTICK_GF2K is not set +# CONFIG_JOYSTICK_GRIP is not set +# CONFIG_JOYSTICK_GRIP_MP is not set +# CONFIG_JOYSTICK_GUILLEMOT is not set +# CONFIG_JOYSTICK_INTERACT is not set +# CONFIG_JOYSTICK_SIDEWINDER is not set +# CONFIG_JOYSTICK_TMDC is not set +# CONFIG_JOYSTICK_WARRIOR is not set +# CONFIG_JOYSTICK_MAGELLAN is not set +# CONFIG_JOYSTICK_SPACEORB is not set +# CONFIG_JOYSTICK_SPACEBALL is not set +# CONFIG_JOYSTICK_STINGER is not set +# CONFIG_JOYSTICK_TWIDJOY is not set +# CONFIG_JOYSTICK_ZHENHUA is not set +CONFIG_JOYSTICK_DB9=m +# CONFIG_JOYSTICK_GAMECON is not set +# CONFIG_JOYSTICK_TURBOGRAFX is not set +CONFIG_JOYSTICK_AMIGA=m +# CONFIG_JOYSTICK_JOYDUMP is not set + +## +## file: drivers/input/joystick/iforce/Kconfig +## +# CONFIG_JOYSTICK_IFORCE is not set +# CONFIG_JOYSTICK_IFORCE_232 is not set + +## +## file: drivers/input/keyboard/Kconfig +## +CONFIG_INPUT_KEYBOARD=y +# CONFIG_KEYBOARD_ADP5588 is not set +CONFIG_KEYBOARD_AMIGA=y +CONFIG_KEYBOARD_ATARI=y +CONFIG_KEYBOARD_ATKBD=y +# CONFIG_KEYBOARD_QT2160 is not set +# CONFIG_KEYBOARD_LM8323 is not set +# CONFIG_KEYBOARD_MAX7359 is not set +# CONFIG_KEYBOARD_OPENCORES is not set +# CONFIG_KEYBOARD_STOWAWAY is not set + +## +## file: drivers/input/misc/Kconfig +## +CONFIG_INPUT_MISC=y +CONFIG_INPUT_M68K_BEEP=m +# CONFIG_INPUT_ATI_REMOTE2 is not set +# CONFIG_INPUT_KEYSPAN_REMOTE is not set +# CONFIG_INPUT_POWERMATE is not set +# CONFIG_INPUT_YEALINK is not set +# CONFIG_INPUT_CM109 is not set +CONFIG_INPUT_UINPUT=m +# CONFIG_INPUT_PCF50633_PMU is not set + +## +## file: drivers/input/mouse/Kconfig +## +CONFIG_INPUT_MOUSE=y +CONFIG_MOUSE_PS2=m +# CONFIG_MOUSE_PS2_LIFEBOOK is not set +# CONFIG_MOUSE_PS2_ELANTECH is not set +# CONFIG_MOUSE_PS2_SENTELIC is not set +# CONFIG_MOUSE_PS2_TOUCHKIT is not set +# CONFIG_MOUSE_PS2_OLPC is not set +CONFIG_MOUSE_SERIAL=m +# CONFIG_MOUSE_INPORT is not set +# CONFIG_MOUSE_LOGIBM is not set +# CONFIG_MOUSE_PC110PAD is not set +CONFIG_MOUSE_AMIGA=m +CONFIG_MOUSE_ATARI=m +# CONFIG_MOUSE_SYNAPTICS_I2C is not set +# CONFIG_MOUSE_SYNAPTICS_USB is not set + +## +## file: drivers/input/serio/Kconfig +## +CONFIG_SERIO=y +CONFIG_SERIO_SERPORT=y +CONFIG_SERIO_Q40KBD=y +CONFIG_SERIO_LIBPS2=y +# CONFIG_SERIO_ALTERA_PS2 is not set + +## +## file: drivers/input/tablet/Kconfig +## +# CONFIG_INPUT_TABLET is not set + +## +## file: drivers/input/touchscreen/Kconfig +## +# CONFIG_INPUT_TOUCHSCREEN is not set + +## +## file: drivers/iommu/Kconfig +## +# CONFIG_IOMMU_SUPPORT is not set + +## +## file: drivers/leds/Kconfig +## +# CONFIG_NEW_LEDS is not set + +## +## file: drivers/macintosh/Kconfig +## +CONFIG_ADB=y +CONFIG_ADB_MACII=y +#. switched on for the benefit of IIfx, Q900, Q950 +CONFIG_ADB_IOP=y +CONFIG_ADB_PMU68K=y +CONFIG_ADB_CUDA=y +CONFIG_INPUT_ADBHID=y +CONFIG_MAC_EMUMOUSEBTN=m + +## +## file: drivers/media/Kconfig +## +# CONFIG_MEDIA_SUPPORT is not set + +## +## file: drivers/memstick/Kconfig +## +# CONFIG_MEMSTICK is not set + +## +## file: drivers/mfd/Kconfig +## +# CONFIG_HTC_PASIC3 is not set +# CONFIG_MFD_SM501 is not set + +## +## file: drivers/misc/Kconfig +## +# CONFIG_ENCLOSURE_SERVICES is not set + +## +## file: drivers/misc/c2port/Kconfig +## +# CONFIG_C2PORT is not set + +## +## file: drivers/misc/eeprom/Kconfig +## +# CONFIG_EEPROM_93CX6 is not set + +## +## file: drivers/mmc/Kconfig +## +# CONFIG_MMC is not set + +## +## file: drivers/mtd/Kconfig +## +# CONFIG_MTD is not set + +## +## file: drivers/net/appletalk/Kconfig +## +CONFIG_DEV_APPLETALK=m + +## +## file: drivers/net/arcnet/Kconfig +## +# CONFIG_ARCNET is not set + +## +## file: drivers/net/ethernet/Kconfig +## +# CONFIG_DNET is not set +# CONFIG_ETHOC is not set + +## +## file: drivers/net/ethernet/8390/Kconfig +## +CONFIG_HYDRA=m +CONFIG_MAC8390=m +CONFIG_NE2000=m +CONFIG_APNE=m +CONFIG_ZORRO8390=m + +## +## file: drivers/net/ethernet/amd/Kconfig +## +CONFIG_A2065=m +CONFIG_ARIADNE=m +CONFIG_ATARILANCE=m +CONFIG_MVME147_NET=m + +## +## file: drivers/net/ethernet/apple/Kconfig +## +CONFIG_MACMACE=y + +## +## file: drivers/net/ethernet/cirrus/Kconfig +## +CONFIG_MAC89x0=m + +## +## file: drivers/net/ethernet/i825xx/Kconfig +## +CONFIG_BVME6000_NET=m +CONFIG_MVME16x_NET=m + +## +## file: drivers/net/ethernet/micrel/Kconfig +## +# CONFIG_KS8851_MLL is not set + +## +## file: drivers/net/ethernet/natsemi/Kconfig +## +CONFIG_MACSONIC=m + +## +## file: drivers/net/ethernet/smsc/Kconfig +## +CONFIG_SMC91X=m + +## +## file: drivers/net/ethernet/wiznet/Kconfig +## +# CONFIG_WIZNET_W5100 is not set +# CONFIG_WIZNET_W5300 is not set + +## +## file: drivers/net/plip/Kconfig +## +CONFIG_PLIP=m + +## +## file: drivers/net/wan/Kconfig +## +# CONFIG_WAN is not set + +## +## file: drivers/net/wireless/Kconfig +## +# CONFIG_WLAN is not set + +## +## file: drivers/parport/Kconfig +## +# CONFIG_PARPORT_PC is not set +CONFIG_PARPORT_AMIGA=m +CONFIG_PARPORT_MFC3=m +CONFIG_PARPORT_ATARI=m + +## +## file: drivers/pnp/Kconfig +## +# CONFIG_PNP is not set + +## +## file: drivers/power/supply/Kconfig +## +# CONFIG_POWER_SUPPLY is not set + +## +## file: drivers/ptp/Kconfig +## +# CONFIG_PTP_1588_CLOCK is not set + +## +## file: drivers/rtc/Kconfig +## +# CONFIG_RTC_DRV_DS1286 is not set +# CONFIG_RTC_DRV_DS1511 is not set +# CONFIG_RTC_DRV_DS1553 is not set +# CONFIG_RTC_DRV_DS1742 is not set +# CONFIG_RTC_DRV_STK17TA8 is not set +# CONFIG_RTC_DRV_M48T86 is not set +# CONFIG_RTC_DRV_M48T35 is not set +# CONFIG_RTC_DRV_M48T59 is not set +# CONFIG_RTC_DRV_MSM6242 is not set +# CONFIG_RTC_DRV_BQ4802 is not set +CONFIG_RTC_DRV_RP5C01=y +# CONFIG_RTC_DRV_V3020 is not set +# CONFIG_RTC_DRV_WM831X is not set +# CONFIG_RTC_DRV_WM8350 is not set +CONFIG_RTC_DRV_GENERIC=y + +## +## file: drivers/scsi/Kconfig +## +#. for MVME147_SCSI that is not tristate +CONFIG_SCSI=y +CONFIG_SCSI_SPI_ATTRS=m +# CONFIG_SCSI_FC_ATTRS is not set +# CONFIG_SCSI_AHA152X is not set +# CONFIG_SCSI_ADVANSYS is not set +# CONFIG_LIBFC is not set +CONFIG_A3000_SCSI=m +CONFIG_A2091_SCSI=m +CONFIG_GVP11_SCSI=m +CONFIG_SCSI_A4000T=m +CONFIG_SCSI_ZORRO7XX=m +CONFIG_ATARI_SCSI=m +CONFIG_MAC_SCSI=m +CONFIG_SCSI_MAC_ESP=m +CONFIG_MVME147_SCSI=y +CONFIG_MVME16x_SCSI=m +CONFIG_BVME6000_SCSI=m + +## +## file: drivers/scsi/ufs/Kconfig +## +# CONFIG_SCSI_UFSHCD is not set + +## +## file: drivers/spi/Kconfig +## +# CONFIG_SPI is not set + +## +## file: drivers/ssb/Kconfig +## +# CONFIG_SSB is not set + +## +## file: drivers/staging/Kconfig +## +# CONFIG_STAGING is not set + +## +## file: drivers/tty/Kconfig +## +CONFIG_VT=y +CONFIG_VT_CONSOLE=y +# CONFIG_SERIAL_NONSTANDARD is not set +# CONFIG_N_GSM is not set + +## +## file: drivers/tty/serial/Kconfig +## +CONFIG_SERIAL_PMACZILOG=y +CONFIG_SERIAL_PMACZILOG_TTYS=y +CONFIG_SERIAL_PMACZILOG_CONSOLE=y + +## +## file: drivers/tty/serial/8250/Kconfig +## +CONFIG_SERIAL_8250=m +CONFIG_SERIAL_8250_CS=m +CONFIG_SERIAL_8250_NR_UARTS=4 +CONFIG_SERIAL_8250_RUNTIME_UARTS=4 +# CONFIG_SERIAL_8250_EXTENDED is not set + +## +## file: drivers/usb/Kconfig +## +# CONFIG_USB_SUPPORT is not set + +## +## file: drivers/video/backlight/Kconfig +## +# CONFIG_BACKLIGHT_LCD_SUPPORT is not set + +## +## file: drivers/video/fbdev/Kconfig +## +# CONFIG_FIRMWARE_EDID is not set +CONFIG_FB_FOREIGN_ENDIAN=y +## choice: Choice endianness support +CONFIG_FB_BOTH_ENDIAN=y +## end choice +# CONFIG_FB_MODE_HELPERS is not set +# CONFIG_FB_TILEBLITTING is not set +CONFIG_FB_CIRRUS=y +CONFIG_FB_PM2=m +CONFIG_FB_AMIGA=y +CONFIG_FB_AMIGA_OCS=y +CONFIG_FB_AMIGA_ECS=y +CONFIG_FB_AMIGA_AGA=y +CONFIG_FB_FM2=y +CONFIG_FB_ATARI=y +CONFIG_FB_VALKYRIE=y +CONFIG_FB_MAC=y +# CONFIG_FB_UVESA is not set +# CONFIG_FB_S1D13XXX is not set +CONFIG_FB_ATY=y +# CONFIG_FB_ATY_BACKLIGHT is not set +# CONFIG_FB_VIRTUAL is not set +# CONFIG_FB_METRONOME is not set + +## +## file: drivers/video/logo/Kconfig +## +# CONFIG_LOGO is not set + +## +## file: drivers/w1/Kconfig +## +# CONFIG_W1 is not set + +## +## file: drivers/watchdog/Kconfig +## +# CONFIG_WATCHDOG is not set + +## +## file: drivers/zorro/Kconfig +## +CONFIG_ZORRO_NAMES=y + +## +## file: fs/adfs/Kconfig +## +# CONFIG_ADFS_FS is not set + +## +## file: fs/afs/Kconfig +## +# CONFIG_AFS_FS is not set + +## +## file: fs/befs/Kconfig +## +# CONFIG_BEFS_FS is not set + +## +## file: fs/bfs/Kconfig +## +# CONFIG_BFS_FS is not set + +## +## file: fs/Kconfig.binfmt +## +CONFIG_BINFMT_ELF=y +CONFIG_BINFMT_AOUT=m +CONFIG_BINFMT_MISC=m + +## +## file: fs/ceph/Kconfig +## +# CONFIG_CEPH_FS is not set + +## +## file: fs/dlm/Kconfig +## +# CONFIG_DLM is not set + +## +## file: fs/efs/Kconfig +## +# CONFIG_EFS_FS is not set + +## +## file: fs/exofs/Kconfig +## +# CONFIG_EXOFS_FS is not set + +## +## file: fs/f2fs/Kconfig +## +# CONFIG_F2FS_FS is not set + +## +## file: fs/freevxfs/Kconfig +## +# CONFIG_VXFS_FS is not set + +## +## file: fs/gfs2/Kconfig +## +# CONFIG_GFS2_FS is not set + +## +## file: fs/jfs/Kconfig +## +# CONFIG_JFS_FS is not set + +## +## file: fs/ntfs/Kconfig +## +# CONFIG_NTFS_FS is not set + +## +## file: fs/ocfs2/Kconfig +## +# CONFIG_OCFS2_FS is not set + +## +## file: fs/omfs/Kconfig +## +# CONFIG_OMFS_FS is not set + +## +## file: fs/qnx4/Kconfig +## +# CONFIG_QNX4FS_FS is not set + +## +## file: fs/reiserfs/Kconfig +## +# CONFIG_REISERFS_FS_SECURITY is not set + +## +## file: fs/ubifs/Kconfig +## +# CONFIG_UBIFS_FS is not set + +## +## file: init/Kconfig +## +CONFIG_USELIB=y +# CONFIG_AUDIT is not set +# CONFIG_IKCONFIG is not set +CONFIG_LOG_BUF_SHIFT=16 +# CONFIG_SCHED_AUTOGROUP is not set +## choice: Compiler optimization level +CONFIG_CC_OPTIMIZE_FOR_SIZE=y +## end choice +CONFIG_SGETMASK_SYSCALL=y +CONFIG_SYSFS_SYSCALL=y +CONFIG_COMPAT_BRK=y +# CONFIG_MODULE_SIG is not set + +## +## file: kernel/time/Kconfig +## +## choice: Timer tick handling +CONFIG_HZ_PERIODIC=y +# CONFIG_NO_HZ_IDLE is not set +# CONFIG_NO_HZ_FULL is not set +## end choice +# CONFIG_NO_HZ is not set +# CONFIG_HIGH_RES_TIMERS is not set + +## +## file: lib/Kconfig.debug +## +# CONFIG_DEBUG_FS is not set +# CONFIG_FRAME_POINTER is not set +# CONFIG_SCHED_DEBUG is not set + +## +## file: mm/Kconfig +## +# CONFIG_COMPACTION is not set +# CONFIG_MIGRATION is not set +# CONFIG_KSM is not set + +## +## file: net/Kconfig +## +# CONFIG_WIRELESS is not set + +## +## file: net/atm/Kconfig +## +# CONFIG_ATM is not set + +## +## file: net/ax25/Kconfig +## +# CONFIG_HAMRADIO is not set + +## +## file: net/batman-adv/Kconfig +## +# CONFIG_BATMAN_ADV is not set + +## +## file: net/can/Kconfig +## +# CONFIG_CAN is not set + +## +## file: net/ceph/Kconfig +## +# CONFIG_CEPH_LIB is not set + +## +## file: net/dcb/Kconfig +## +# CONFIG_DCB is not set + +## +## file: net/ieee802154/Kconfig +## +# CONFIG_IEEE802154 is not set + +## +## file: net/ipv4/Kconfig +## +# CONFIG_IP_ADVANCED_ROUTER is not set +# CONFIG_TCP_MD5SIG is not set + +## +## file: net/ipv6/Kconfig +## +CONFIG_IPV6=m + +## +## file: net/ipx/Kconfig +## +CONFIG_IPX=m + +## +## file: net/lapb/Kconfig +## +# CONFIG_LAPB is not set + +## +## file: net/llc/Kconfig +## +# CONFIG_LLC2 is not set + +## +## file: net/mac80211/Kconfig +## +# CONFIG_MAC80211 is not set + +## +## file: net/nfc/Kconfig +## +# CONFIG_NFC is not set + +## +## file: net/phonet/Kconfig +## +# CONFIG_PHONET is not set + +## +## file: net/rds/Kconfig +## +# CONFIG_RDS is not set + +## +## file: net/rfkill/Kconfig +## +# CONFIG_RFKILL is not set + +## +## file: net/rxrpc/Kconfig +## +# CONFIG_AF_RXRPC is not set + +## +## file: net/sctp/Kconfig +## +# CONFIG_IP_SCTP is not set + +## +## file: net/tipc/Kconfig +## +# CONFIG_TIPC is not set + +## +## file: net/wimax/Kconfig +## +# CONFIG_WIMAX is not set + +## +## file: net/wireless/Kconfig +## +# CONFIG_CFG80211 is not set + +## +## file: security/Kconfig +## +# CONFIG_SECURITY is not set +# CONFIG_SECURITYFS is not set + +## +## file: sound/Kconfig +## +# CONFIG_SND is not set + +## +## file: sound/oss/dmasound/Kconfig +## +CONFIG_DMASOUND_ATARI=m +CONFIG_DMASOUND_PAULA=m +CONFIG_DMASOUND_Q40=m + diff --git a/config/m68k/defines b/config/m68k/defines new file mode 100644 index 00000000000..5427964a502 --- /dev/null +++ b/config/m68k/defines @@ -0,0 +1,17 @@ +[base] +cflags: -ffreestanding +flavours: + m68k +kernel-arch: m68k + +[build] +image-file: vmlinux +# linux-signed only works for architectures in the main archive +signed-modules: false + +[image] +suggests: vmelilo, fdutils +install-stem: vmlinux + +[m68k_description] +hardware: Motorola MC68020+ family diff --git a/config/mips/config b/config/mips/config new file mode 100644 index 00000000000..5942c9ab9ed --- /dev/null +++ b/config/mips/config @@ -0,0 +1,8 @@ +## +## file: arch/mips/Kconfig +## +## choice: Endianness selection +CONFIG_CPU_BIG_ENDIAN=y +# CONFIG_CPU_LITTLE_ENDIAN is not set +## end choice + diff --git a/config/mips/defines b/config/mips/defines new file mode 100644 index 00000000000..720a05112b3 --- /dev/null +++ b/config/mips/defines @@ -0,0 +1,39 @@ +[base] +flavours: + 4kc-malta + 5kc-malta + octeon +kernel-arch: mips + +[build] +image-file: vmlinux +# linux-signed should not wait for slow builds +signed-modules: false + +[image] +install-stem: vmlinux + +[4kc-malta_description] +hardware: MIPS Malta +hardware-long: MIPS Malta boards + +[4kc-malta_image] +configs: + kernelarch-mips/config.malta + kernelarch-mips/config.mips32r2 + +[5kc-malta_description] +hardware: MIPS Malta (64-bit) +hardware-long: MIPS Malta boards (64-bit) + +[5kc-malta_image] +configs: + kernelarch-mips/config.malta + kernelarch-mips/config.mips64r2 + +[octeon_description] +hardware: Octeon +hardware-long: Cavium Networks Octeon + +[octeon_image] +configs: kernelarch-mips/config.octeon diff --git a/config/mips64/config b/config/mips64/config new file mode 100644 index 00000000000..5942c9ab9ed --- /dev/null +++ b/config/mips64/config @@ -0,0 +1,8 @@ +## +## file: arch/mips/Kconfig +## +## choice: Endianness selection +CONFIG_CPU_BIG_ENDIAN=y +# CONFIG_CPU_LITTLE_ENDIAN is not set +## end choice + diff --git a/config/mips64/defines b/config/mips64/defines new file mode 100644 index 00000000000..d27c3a51fb1 --- /dev/null +++ b/config/mips64/defines @@ -0,0 +1,29 @@ +[base] +flavours: + 5kc-malta + octeon +kernel-arch: mips + +[build] +image-file: vmlinux +# linux-signed only works for architectures in the main archive +signed-modules: false + +[image] +install-stem: vmlinux + +[5kc-malta_description] +hardware: MIPS Malta +hardware-long: MIPS Malta boards + +[5kc-malta_image] +configs: + kernelarch-mips/config.malta + kernelarch-mips/config.mips64r2 + +[octeon_description] +hardware: Octeon +hardware-long: Cavium Networks Octeon + +[octeon_image] +configs: kernelarch-mips/config.octeon diff --git a/config/mips64el/config b/config/mips64el/config new file mode 100644 index 00000000000..4807b611e34 --- /dev/null +++ b/config/mips64el/config @@ -0,0 +1,12 @@ +## +## file: arch/mips/Kconfig +## +## choice: Endianness selection +# CONFIG_CPU_BIG_ENDIAN is not set +CONFIG_CPU_LITTLE_ENDIAN=y +## end choice +## choice: CPU type +# CONFIG_CPU_MIPS64_R1 is not set +CONFIG_CPU_MIPS64_R2=y +## end choice + diff --git a/config/mips64el/defines b/config/mips64el/defines new file mode 100644 index 00000000000..ec3b0eb484c --- /dev/null +++ b/config/mips64el/defines @@ -0,0 +1,37 @@ +[base] +flavours: + 5kc-malta + loongson-3 + octeon +kernel-arch: mips + +[build] +image-file: vmlinux +# linux-signed only works for architectures in the main archive +signed-modules: false + +[image] +install-stem: vmlinux + +[5kc-malta_description] +hardware: MIPS Malta +hardware-long: MIPS Malta boards + +[5kc-malta_image] +configs: + kernelarch-mips/config.malta + kernelarch-mips/config.mips64r2 + +[loongson-3_description] +hardware: Loongson 3A/3B +hardware-long: Loongson 3A or 3B based systems (e.g. from Loongson or Lemote) + +[loongson-3_image] +configs: kernelarch-mips/config.loongson-3 + +[octeon_description] +hardware: Octeon +hardware-long: Cavium Networks Octeon + +[octeon_image] +configs: kernelarch-mips/config.octeon diff --git a/config/mips64r6/config b/config/mips64r6/config new file mode 100644 index 00000000000..5942c9ab9ed --- /dev/null +++ b/config/mips64r6/config @@ -0,0 +1,8 @@ +## +## file: arch/mips/Kconfig +## +## choice: Endianness selection +CONFIG_CPU_BIG_ENDIAN=y +# CONFIG_CPU_LITTLE_ENDIAN is not set +## end choice + diff --git a/config/mips64r6/defines b/config/mips64r6/defines new file mode 100644 index 00000000000..dc7f22c6b69 --- /dev/null +++ b/config/mips64r6/defines @@ -0,0 +1,22 @@ +[base] +flavours: + mips64r6 +kernel-arch: mips + +[build] +image-file: vmlinux +# linux-signed only works for architectures in the main archive +signed-modules: false + +[image] +install-stem: vmlinux + +[mips64r6_description] +hardware: MIPS R6 (64 bit, big endian) +hardware-long: MIPS R6 (64 bit, big endian) + +[mips64r6_image] +configs: + kernelarch-mips/config.malta + kernelarch-mips/config.mips64r6 + diff --git a/config/mips64r6el/config b/config/mips64r6el/config new file mode 100644 index 00000000000..7f124deb643 --- /dev/null +++ b/config/mips64r6el/config @@ -0,0 +1,8 @@ +## +## file: arch/mips/Kconfig +## +## choice: Endianness selection +# CONFIG_CPU_BIG_ENDIAN is not set +CONFIG_CPU_LITTLE_ENDIAN=y +## end choice + diff --git a/config/mips64r6el/defines b/config/mips64r6el/defines new file mode 100644 index 00000000000..b60be330b27 --- /dev/null +++ b/config/mips64r6el/defines @@ -0,0 +1,22 @@ +[base] +flavours: + mips64r6el +kernel-arch: mips + +[build] +image-file: vmlinux +# linux-signed only works for architectures in the main archive +signed-modules: false + +[image] +install-stem: vmlinux + +[mips64r6el_description] +hardware: MIPS R6 (64 bit, little endian) +hardware-long: MIPS R6 (64 bit, little endian) + +[mips64r6el_image] +configs: + kernelarch-mips/config.malta + kernelarch-mips/config.mips64r6 + diff --git a/config/mipsel/config b/config/mipsel/config new file mode 100644 index 00000000000..7f124deb643 --- /dev/null +++ b/config/mipsel/config @@ -0,0 +1,8 @@ +## +## file: arch/mips/Kconfig +## +## choice: Endianness selection +# CONFIG_CPU_BIG_ENDIAN is not set +CONFIG_CPU_LITTLE_ENDIAN=y +## end choice + diff --git a/config/mipsel/defines b/config/mipsel/defines new file mode 100644 index 00000000000..b122b231263 --- /dev/null +++ b/config/mipsel/defines @@ -0,0 +1,47 @@ +[base] +flavours: + 4kc-malta + 5kc-malta + loongson-3 + octeon +kernel-arch: mips + +[build] +image-file: vmlinux +# linux-signed should not wait for slow builds +signed-modules: false + +[image] +install-stem: vmlinux + +[4kc-malta_description] +hardware: MIPS Malta +hardware-long: MIPS Malta boards + +[4kc-malta_image] +configs: + kernelarch-mips/config.malta + kernelarch-mips/config.mips32r2 + +[5kc-malta_description] +hardware: MIPS Malta (64-bit) +hardware-long: MIPS Malta boards (64-bit) + +[5kc-malta_image] +configs: + kernelarch-mips/config.malta + kernelarch-mips/config.mips64r2 + +[loongson-3_description] +hardware: Loongson 3A/3B +hardware-long: Loongson 3A or 3B based systems (e.g. from Loongson or Lemote) + +[loongson-3_image] +configs: kernelarch-mips/config.loongson-3 + +[octeon_description] +hardware: Octeon +hardware-long: Cavium Networks Octeon + +[octeon_image] +configs: kernelarch-mips/config.octeon diff --git a/config/mipsn32/defines b/config/mipsn32/defines new file mode 100644 index 00000000000..fa9b8af89ef --- /dev/null +++ b/config/mipsn32/defines @@ -0,0 +1,4 @@ +[base] +kernel-arch: mips +featuresets: +# empty; mipsn32 must be part of a multiarch installation with a mips64 kernel diff --git a/config/mipsn32el/defines b/config/mipsn32el/defines new file mode 100644 index 00000000000..57d6f492240 --- /dev/null +++ b/config/mipsn32el/defines @@ -0,0 +1,4 @@ +[base] +kernel-arch: mips +featuresets: +# empty; mipsn32el must be part of a multiarch installation with a mips64el kernel diff --git a/config/mipsn32r6/defines b/config/mipsn32r6/defines new file mode 100644 index 00000000000..2ba5f42bef1 --- /dev/null +++ b/config/mipsn32r6/defines @@ -0,0 +1,4 @@ +[base] +kernel-arch: mips +featuresets: +# empty; mipsn32r6 must be part of a multiarch installation with a mips64r6 kernel diff --git a/config/mipsn32r6el/defines b/config/mipsn32r6el/defines new file mode 100644 index 00000000000..f4c8a96d864 --- /dev/null +++ b/config/mipsn32r6el/defines @@ -0,0 +1,4 @@ +[base] +kernel-arch: mips +featuresets: +# empty; mipsn32r6el must be part of a multiarch installation with a mips64r6el kernel diff --git a/config/mipsr6/config b/config/mipsr6/config new file mode 100644 index 00000000000..5942c9ab9ed --- /dev/null +++ b/config/mipsr6/config @@ -0,0 +1,8 @@ +## +## file: arch/mips/Kconfig +## +## choice: Endianness selection +CONFIG_CPU_BIG_ENDIAN=y +# CONFIG_CPU_LITTLE_ENDIAN is not set +## end choice + diff --git a/config/mipsr6/defines b/config/mipsr6/defines new file mode 100644 index 00000000000..b945bdd3dbe --- /dev/null +++ b/config/mipsr6/defines @@ -0,0 +1,32 @@ +[base] +flavours: + mips32r6 + mips64r6 +kernel-arch: mips + +[build] +image-file: vmlinux +# linux-signed only works for architectures in the main archive +signed-modules: false + +[image] +install-stem: vmlinux + +[mips32r6_description] +hardware: MIPS R6 (32 bit, big endian) +hardware-long: MIPS R6 (32 bit, big endian) + +[mips32r6_image] +configs: + kernelarch-mips/config.malta + kernelarch-mips/config.mips32r6 + +[mips64r6_description] +hardware: MIPS R6 (64 bit, big endian) +hardware-long: MIPS R6 (64 bit, big endian) + +[mips64r6_image] +configs: + kernelarch-mips/config.malta + kernelarch-mips/config.mips64r6 + diff --git a/config/mipsr6el/config b/config/mipsr6el/config new file mode 100644 index 00000000000..7f124deb643 --- /dev/null +++ b/config/mipsr6el/config @@ -0,0 +1,8 @@ +## +## file: arch/mips/Kconfig +## +## choice: Endianness selection +# CONFIG_CPU_BIG_ENDIAN is not set +CONFIG_CPU_LITTLE_ENDIAN=y +## end choice + diff --git a/config/mipsr6el/defines b/config/mipsr6el/defines new file mode 100644 index 00000000000..f8e4aa49c9f --- /dev/null +++ b/config/mipsr6el/defines @@ -0,0 +1,32 @@ +[base] +flavours: + mips32r6el + mips64r6el +kernel-arch: mips + +[build] +image-file: vmlinux +# linux-signed only works for architectures in the main archive +signed-modules: false + +[image] +install-stem: vmlinux + +[mips32r6el_description] +hardware: MIPS R6 (32 bit, little endian) +hardware-long: MIPS R6 (32 bit, little endian) + +[mips32r6el_image] +configs: + kernelarch-mips/config.malta + kernelarch-mips/config.mips32r6 + +[mips64r6el_description] +hardware: MIPS R6 (64 bit, little endian) +hardware-long: MIPS R6 (64 bit, little endian) + +[mips64r6el_image] +configs: + kernelarch-mips/config.malta + kernelarch-mips/config.mips64r6 + diff --git a/config/powerpc/config.powerpc b/config/powerpc/config.powerpc new file mode 100644 index 00000000000..63a07fb2e8f --- /dev/null +++ b/config/powerpc/config.powerpc @@ -0,0 +1,113 @@ +## +## file: arch/powerpc/Kconfig +## +CONFIG_HIGHMEM=y +# CONFIG_ISA is not set + +## +## file: arch/powerpc/platforms/512x/Kconfig +## +# CONFIG_MPC5121_ADS is not set + +## +## file: arch/powerpc/platforms/52xx/Kconfig +## +CONFIG_PPC_MPC52xx=y +# CONFIG_PPC_MPC5200_SIMPLE is not set +CONFIG_PPC_EFIKA=y +# CONFIG_PPC_LITE5200 is not set +CONFIG_PPC_MPC5200_BUGFIX=y + +## +## file: arch/powerpc/platforms/chrp/Kconfig +## +CONFIG_PPC_CHRP=y + +## +## file: arch/powerpc/platforms/Kconfig.cputype +## +# CONFIG_PPC64 is not set +## choice: Processor Type +# CONFIG_PPC_85xx is not set +# CONFIG_PPC_8xx is not set +# CONFIG_40x is not set +# CONFIG_44x is not set +# CONFIG_E200 is not set +## end choice +CONFIG_ALTIVEC=y +# CONFIG_SMP is not set + +## +## file: drivers/ata/Kconfig +## +CONFIG_PATA_MPC52xx=m + +## +## file: drivers/block/Kconfig +## +CONFIG_MAC_FLOPPY=y + +## +## file: drivers/dma/Kconfig +## +CONFIG_DMADEVICES=y + +## +## file: drivers/dma/bestcomm/Kconfig +## +CONFIG_PPC_BESTCOMM=m + +## +## file: drivers/macintosh/Kconfig +## +CONFIG_SENSORS_AMS=m +CONFIG_SENSORS_AMS_PMU=y +CONFIG_SENSORS_AMS_I2C=y + +## +## file: drivers/net/ethernet/freescale/Kconfig +## +CONFIG_FEC_MPC52xx=m +CONFIG_FEC_MPC52xx_MDIO=y + +## +## file: drivers/spi/Kconfig +## +CONFIG_SPI_MPC52xx_PSC=m + +## +## file: drivers/tty/serial/Kconfig +## +CONFIG_SERIAL_MPC52xx=y +CONFIG_SERIAL_MPC52xx_CONSOLE=y +CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=115200 + +## +## file: drivers/video/fbdev/Kconfig +## +CONFIG_FB_CONTROL=y +CONFIG_FB_PLATINUM=y +CONFIG_FB_VALKYRIE=y +CONFIG_FB_CT65550=y +CONFIG_FB_IMSTT=y +CONFIG_FB_MATROX=y +CONFIG_FB_ATY128=y +CONFIG_FB_ATY=y +CONFIG_FB_SIS=y +CONFIG_FB_3DFX=y +CONFIG_FB_VOODOO1=y + +## +## file: init/Kconfig +## +CONFIG_SYSFS_SYSCALL=y + +## +## file: mm/Kconfig +## +## choice: Memory model +CONFIG_FLATMEM_MANUAL=y +# CONFIG_DISCONTIGMEM_MANUAL is not set +# CONFIG_SPARSEMEM_MANUAL is not set +## end choice + diff --git a/config/powerpc/config.powerpc-smp b/config/powerpc/config.powerpc-smp new file mode 100644 index 00000000000..dfbaaf6d299 --- /dev/null +++ b/config/powerpc/config.powerpc-smp @@ -0,0 +1,6 @@ +## +## file: arch/powerpc/platforms/Kconfig.cputype +## +CONFIG_SMP=y +CONFIG_NR_CPUS=4 + diff --git a/config/powerpc/defines b/config/powerpc/defines new file mode 100644 index 00000000000..24b8b528fac --- /dev/null +++ b/config/powerpc/defines @@ -0,0 +1,30 @@ +[base] +flavours: + powerpc + powerpc-smp + powerpc64 +kernel-arch: powerpc + +[build] +image-file: vmlinux +vdso: true + +[image] +configs: +suggests: mkvmlinuz +install-stem: vmlinux + +[powerpc_description] +hardware: uniprocessor 32-bit PowerPC + +[powerpc-smp_description] +hardware: multiprocessor 32-bit PowerPC + +[powerpc-smp_image] +configs: powerpc/config.powerpc powerpc/config.powerpc-smp + +[powerpc64_description] +hardware: 64-bit PowerPC + +[powerpc64_image] +configs: kernelarch-powerpc/config-arch-64 kernelarch-powerpc/config-arch-64-be diff --git a/config/powerpcspe/config b/config/powerpcspe/config new file mode 100644 index 00000000000..8d3fcc54a85 --- /dev/null +++ b/config/powerpcspe/config @@ -0,0 +1,33 @@ +## +## file: arch/powerpc/Kconfig +## +CONFIG_HIGHMEM=y +CONFIG_CMDLINE_BOOL=y +CONFIG_CMDLINE="console=ttyS0,115200" + +## +## file: arch/powerpc/platforms/85xx/Kconfig +## +CONFIG_MPC8540_ADS=y +CONFIG_MPC8560_ADS=y +CONFIG_MPC85xx_CDS=y +CONFIG_MPC85xx_MDS=y +CONFIG_MPC8536_DS=y +CONFIG_MPC85xx_DS=y +CONFIG_MPC85xx_RDB=y + +## +## file: arch/powerpc/platforms/Kconfig.cputype +## +## choice: Processor Type +CONFIG_PPC_85xx=y +## end choice +CONFIG_PHYS_64BIT=y +CONFIG_SMP=y +CONFIG_NR_CPUS=4 + +## +## file: drivers/gpio/Kconfig +## +CONFIG_GPIOLIB=y + diff --git a/config/powerpcspe/defines b/config/powerpcspe/defines new file mode 100644 index 00000000000..e978279a53c --- /dev/null +++ b/config/powerpcspe/defines @@ -0,0 +1,17 @@ +[base] +flavours: + powerpcspe +kernel-arch: powerpc + +[build] +image-file: vmlinux +# linux-signed only works for architectures in the main archive +signed-modules: false +vdso: true + +[image] +suggests: mkvmlinuz +install-stem: vmlinux + +[description] +hardware: 32-bit PowerPC with SPE (instead of AltiVec) with SMP support diff --git a/config/ppc64/defines b/config/ppc64/defines new file mode 100644 index 00000000000..86b6b2057ce --- /dev/null +++ b/config/ppc64/defines @@ -0,0 +1,21 @@ +[base] +flavours: + powerpc64 +kernel-arch: powerpc + +[build] +image-file: vmlinux +# linux-signed only works for architectures in the main archive +signed-modules: false +vdso: true + +[image] +configs: +suggests: mkvmlinuz +install-stem: vmlinux + +[powerpc64_description] +hardware: 64-bit PowerPC + +[powerpc64_image] +configs: kernelarch-powerpc/config-arch-64 kernelarch-powerpc/config-arch-64-be diff --git a/config/ppc64el/defines b/config/ppc64el/defines new file mode 100644 index 00000000000..987ab7df19a --- /dev/null +++ b/config/ppc64el/defines @@ -0,0 +1,19 @@ +[base] +flavours: + powerpc64le +kernel-arch: powerpc + +[build] +image-file: vmlinux +vdso: true + +[image] +configs: +suggests: mkvmlinuz +install-stem: vmlinux + +[powerpc64le_description] +hardware: Little-endian 64-bit PowerPC + +[powerpc64le_image] +configs: kernelarch-powerpc/config-arch-64 kernelarch-powerpc/config-arch-64-le diff --git a/config/s390/defines b/config/s390/defines new file mode 100644 index 00000000000..5b14fa7a4ec --- /dev/null +++ b/config/s390/defines @@ -0,0 +1,4 @@ +[base] +kernel-arch: s390 +featuresets: +# empty; s390 must be part of a multiarch installation with an s390x kernel diff --git a/config/s390x/config b/config/s390x/config new file mode 100644 index 00000000000..b0bc4188331 --- /dev/null +++ b/config/s390x/config @@ -0,0 +1,220 @@ +## +## file: arch/s390/Kconfig +## +## choice: Processor type +CONFIG_MARCH_Z900=y +# CONFIG_MARCH_Z990 is not set +# CONFIG_MARCH_Z9_109 is not set +# CONFIG_MARCH_Z10 is not set +## end choice +CONFIG_COMPAT=y +CONFIG_SMP=y +CONFIG_NR_CPUS=256 +CONFIG_HOTPLUG_CPU=y +CONFIG_SCHED_TOPOLOGY=y +CONFIG_PACK_STACK=y +# CONFIG_CHECK_STACK is not set +CONFIG_QDIO=y +CONFIG_PCI=y +CONFIG_PCI_NR_FUNCTIONS=64 +CONFIG_CHSC_SCH=m +CONFIG_SCM_BUS=y +CONFIG_EADM_SCH=m +CONFIG_SECCOMP=y +CONFIG_PFAULT=y +CONFIG_CMM=y +CONFIG_CMM_IUCV=y +CONFIG_APPLDATA_BASE=y +CONFIG_APPLDATA_MEM=m +CONFIG_APPLDATA_OS=m +CONFIG_APPLDATA_NET_SUM=m +CONFIG_S390_HYPFS_FS=y +CONFIG_S390_GUEST=y + +## +## file: arch/s390/Kconfig.debug +## +# CONFIG_S390_PTDUMP is not set + +## +## file: arch/s390/kvm/Kconfig +## +CONFIG_VIRTUALIZATION=y +CONFIG_KVM=m +# CONFIG_KVM_S390_UCONTROL is not set + +## +## file: block/partitions/Kconfig +## +CONFIG_IBM_PARTITION=y +CONFIG_BSD_DISKLABEL=y + +## +## file: drivers/block/Kconfig +## +# CONFIG_CDROM_PKTCDVD is not set + +## +## file: drivers/crypto/Kconfig +## +CONFIG_ZCRYPT=m +CONFIG_CRYPTO_SHA1_S390=m +CONFIG_CRYPTO_SHA256_S390=m +CONFIG_CRYPTO_SHA512_S390=m +CONFIG_CRYPTO_DES_S390=m +CONFIG_CRYPTO_AES_S390=m +CONFIG_S390_PRNG=m + +## +## file: drivers/input/touchscreen/Kconfig +## +# CONFIG_INPUT_TOUCHSCREEN is not set + +## +## file: drivers/memstick/Kconfig +## +# CONFIG_MEMSTICK is not set + +## +## file: drivers/net/appletalk/Kconfig +## +# CONFIG_ATALK is not set + +## +## file: drivers/net/ppp/Kconfig +## +# CONFIG_PPP is not set + +## +## file: drivers/net/slip/Kconfig +## +# CONFIG_SLIP is not set + +## +## file: drivers/net/wan/Kconfig +## +# CONFIG_WAN is not set + +## +## file: drivers/pci/Kconfig +## +# CONFIG_PCI_QUIRKS is not set + +## +## file: drivers/pci/hotplug/Kconfig +## +CONFIG_HOTPLUG_PCI=y +CONFIG_HOTPLUG_PCI_S390=y + +## +## file: drivers/s390/block/Kconfig +## +CONFIG_BLK_DEV_XPRAM=m +CONFIG_DCSSBLK=m +CONFIG_DASD=m +# CONFIG_DASD_PROFILE is not set +CONFIG_DASD_ECKD=m +CONFIG_DASD_FBA=m +CONFIG_DASD_DIAG=m +# CONFIG_DASD_EER is not set +CONFIG_SCM_BLOCK=m + +## +## file: drivers/s390/char/Kconfig +## +CONFIG_TN3270=y +CONFIG_TN3270_TTY=y +CONFIG_TN3270_FS=m +CONFIG_TN3270_CONSOLE=y +CONFIG_TN3215=y +CONFIG_TN3215_CONSOLE=y +CONFIG_SCLP_TTY=y +CONFIG_SCLP_CONSOLE=y +CONFIG_SCLP_VT220_TTY=y +CONFIG_SCLP_VT220_CONSOLE=y +CONFIG_SCLP_ASYNC=m +CONFIG_S390_TAPE=m +CONFIG_S390_TAPE_34XX=m +CONFIG_S390_TAPE_3590=m +CONFIG_VMLOGRDR=m +CONFIG_VMCP=y +CONFIG_MONREADER=m +CONFIG_MONWRITER=m +CONFIG_S390_VMUR=m + +## +## file: drivers/s390/net/Kconfig +## +CONFIG_LCS=m +CONFIG_CTCM=m +CONFIG_NETIUCV=m +CONFIG_SMSGIUCV=y +CONFIG_QETH=m +CONFIG_QETH_L2=m +CONFIG_QETH_L3=m + +## +## file: drivers/scsi/Kconfig +## +CONFIG_ZFCP=m + +## +## file: drivers/tty/hvc/Kconfig +## +CONFIG_HVC_IUCV=y + +## +## file: drivers/video/console/Kconfig +## +# CONFIG_FRAMEBUFFER_CONSOLE is not set + +## +## file: drivers/video/fbdev/Kconfig +## +# CONFIG_FB is not set + +## +## file: drivers/watchdog/Kconfig +## +CONFIG_DIAG288_WATCHDOG=m + +## +## file: mm/Kconfig +## +## choice: Memory model +# CONFIG_FLATMEM_MANUAL is not set +# CONFIG_DISCONTIGMEM_MANUAL is not set +CONFIG_SPARSEMEM_MANUAL=y +## end choice + +## +## file: net/atm/Kconfig +## +# CONFIG_ATM is not set + +## +## file: net/decnet/Kconfig +## +# CONFIG_DECNET is not set + +## +## file: net/ipx/Kconfig +## +# CONFIG_IPX is not set + +## +## file: net/iucv/Kconfig +## +CONFIG_IUCV=y +CONFIG_AFIUCV=m + +## +## file: net/lapb/Kconfig +## +# CONFIG_LAPB is not set + +## +## file: net/llc/Kconfig +## +# CONFIG_LLC2 is not set + diff --git a/config/s390x/defines b/config/s390x/defines new file mode 100644 index 00000000000..47de624026c --- /dev/null +++ b/config/s390x/defines @@ -0,0 +1,21 @@ +[base] +flavours: + s390x +kernel-arch: s390 + +[build] +image-file: arch/s390/boot/image +vdso: true + +[image] +bootloaders: s390-tools +install-stem: vmlinuz + +[relations] +headers%gcc-7: linux-compiler-gcc-7-s390 + +[s390x_build] +debug-info: true + +[s390x_description] +hardware: IBM zSeries diff --git a/config/sh3/defines b/config/sh3/defines new file mode 100644 index 00000000000..71cbe648c4d --- /dev/null +++ b/config/sh3/defines @@ -0,0 +1,4 @@ +[base] +kernel-arch: sh +featuresets: +# empty; just building headers yet diff --git a/config/sh4/config b/config/sh4/config new file mode 100644 index 00000000000..adaf6752adf --- /dev/null +++ b/config/sh4/config @@ -0,0 +1,65 @@ +## +## file: arch/Kconfig +## +## choice: Stack Protector buffer overflow detection +CONFIG_CC_STACKPROTECTOR_REGULAR=y +# CONFIG_CC_STACKPROTECTOR_STRONG is not set +## end choice + +## +## file: arch/sh/Kconfig +## +CONFIG_KEXEC=y +CONFIG_SECCOMP=y + +## +## file: arch/sh/Kconfig.cpu +## +## choice: Endianness selection +CONFIG_CPU_LITTLE_ENDIAN=y +## end choice +CONFIG_SH_FPU=y +CONFIG_SH_STORE_QUEUES=y + +## +## file: arch/sh/drivers/Kconfig +## +CONFIG_HEARTBEAT=y + +## +## file: arch/sh/mm/Kconfig +## +## choice: Cache mode +CONFIG_CACHE_WRITEBACK=y +## end choice + +## +## file: drivers/cpufreq/Kconfig +## +CONFIG_CPU_FREQ_GOV_PERFORMANCE=y +CONFIG_SH_CPU_FREQ=y + +## +## file: drivers/pci/pcie/Kconfig +## +# CONFIG_PCIEPORTBUS is not set + +## +## file: kernel/Kconfig.hz +## +## choice: Timer frequency +CONFIG_HZ_250=y +## end choice + +## +## file: kernel/irq/Kconfig +## +CONFIG_SPARSE_IRQ=y + +## +## file: kernel/Kconfig.preempt +## +## choice: Preemption Model +CONFIG_PREEMPT_NONE=y +## end choice + diff --git a/config/sh4/config.sh7751r b/config/sh4/config.sh7751r new file mode 100644 index 00000000000..99c496e93fc --- /dev/null +++ b/config/sh4/config.sh7751r @@ -0,0 +1,168 @@ +## +## file: arch/sh/Kconfig +## +## choice: Processor sub-type selection +CONFIG_CPU_SUBTYPE_SH7751R=y +## end choice +CONFIG_SH_PCLK_FREQ=60000000 +CONFIG_PCI=y + +## +## file: arch/sh/boards/Kconfig +## +CONFIG_SH_RTS7751R2D=y + +## +## file: arch/sh/boards/mach-r2d/Kconfig +## +CONFIG_RTS7751R2D_PLUS=y + +## +## file: arch/sh/Kconfig.cpu +## +## choice: Endianness selection +CONFIG_CPU_LITTLE_ENDIAN=y +## end choice +CONFIG_SH_FPU=y + +## +## file: arch/sh/mm/Kconfig +## +CONFIG_MMU=y +CONFIG_FORCE_MAX_ZONEORDER=11 +CONFIG_MEMORY_START=0x0c000000 +CONFIG_MEMORY_SIZE=0x04000000 +CONFIG_VSYSCALL=y +## choice: Kernel page size +CONFIG_PAGE_SIZE_4KB=y +## end choice + +## +## file: drivers/ata/Kconfig +## +CONFIG_ATA=y +CONFIG_ATA_VERBOSE_ERROR=y +CONFIG_SATA_PMP=y +CONFIG_ATA_SFF=y +CONFIG_PATA_PLATFORM=y + +## +## file: drivers/clocksource/Kconfig +## +CONFIG_SH_TIMER_TMU=y + +## +## file: drivers/hid/Kconfig +## +CONFIG_HID=y + +## +## file: drivers/hid/usbhid/Kconfig +## +CONFIG_USB_HID=y + +## +## file: drivers/input/Kconfig +## +CONFIG_INPUT=y + +## +## file: drivers/input/keyboard/Kconfig +## +CONFIG_INPUT_KEYBOARD=y + +## +## file: drivers/mfd/Kconfig +## +CONFIG_MFD_SM501=y + +## +## file: drivers/mtd/Kconfig +## +CONFIG_MTD=y +CONFIG_MTD_BLOCK=y + +## +## file: drivers/mtd/chips/Kconfig +## +CONFIG_MTD_CFI=y +CONFIG_MTD_MAP_BANK_WIDTH_1=y +CONFIG_MTD_MAP_BANK_WIDTH_2=y +CONFIG_MTD_MAP_BANK_WIDTH_4=y +CONFIG_MTD_CFI_I1=y +CONFIG_MTD_CFI_I2=y +CONFIG_MTD_CFI_AMDSTD=y + +## +## file: drivers/mtd/maps/Kconfig +## +CONFIG_MTD_PHYSMAP=y + +## +## file: drivers/net/Kconfig +## +CONFIG_NETDEVICES=y + +## +## file: drivers/net/ethernet/realtek/Kconfig +## +CONFIG_8139CP=y + +## +## file: drivers/rtc/Kconfig +## +CONFIG_RTC_DRV_R9701=y +# CONFIG_RTC_DRV_SH is not set +# CONFIG_RTC_DRV_GENERIC is not set + +## +## file: drivers/scsi/Kconfig +## +CONFIG_SCSI=y +CONFIG_BLK_DEV_SD=y + +## +## file: drivers/spi/Kconfig +## +CONFIG_SPI=y +CONFIG_SPI_BITBANG=y +CONFIG_SPI_SH_SCI=y + +## +## file: drivers/tty/Kconfig +## +CONFIG_VT=y +CONFIG_CONSOLE_TRANSLATIONS=y +CONFIG_VT_CONSOLE=y +CONFIG_VT_HW_CONSOLE_BINDING=y + +## +## file: drivers/tty/serial/Kconfig +## +CONFIG_SERIAL_SH_SCI=y +CONFIG_SERIAL_SH_SCI_NR_UARTS=6 +CONFIG_SERIAL_SH_SCI_CONSOLE=y + +## +## file: drivers/usb/Kconfig +## +CONFIG_USB_SUPPORT=y +CONFIG_USB=y + +## +## file: drivers/usb/host/Kconfig +## +CONFIG_USB_OHCI_HCD=y + +## +## file: drivers/video/fbdev/Kconfig +## +CONFIG_FB_SM501=y + +## +## file: mm/Kconfig +## +## choice: Memory model +CONFIG_FLATMEM_MANUAL=y +## end choice + diff --git a/config/sh4/config.sh7785lcr b/config/sh4/config.sh7785lcr new file mode 100644 index 00000000000..6d1175949ff --- /dev/null +++ b/config/sh4/config.sh7785lcr @@ -0,0 +1,222 @@ +## +## file: arch/sh/Kconfig +## +## choice: Processor sub-type selection +CONFIG_CPU_SUBTYPE_SH7785=y +## end choice +CONFIG_SH_PCLK_FREQ=50000000 +CONFIG_PCI=y + +## +## file: arch/sh/boards/Kconfig +## +CONFIG_SH_SH7785LCR=y + +## +## file: arch/sh/Kconfig.cpu +## +## choice: Endianness selection +CONFIG_CPU_LITTLE_ENDIAN=y +## end choice +CONFIG_SH_FPU=y +CONFIG_SH_STORE_QUEUES=y + +## +## file: arch/sh/mm/Kconfig +## +CONFIG_MMU=y +CONFIG_FORCE_MAX_ZONEORDER=11 +CONFIG_MEMORY_START=0x48000000 +CONFIG_MEMORY_SIZE=0x18000000 +CONFIG_VSYSCALL=y +## choice: Kernel page size +CONFIG_PAGE_SIZE_4KB=y +## end choice +## choice: HugeTLB page size +CONFIG_HUGETLB_PAGE_SIZE_64K=y +## end choice + +## +## file: drivers/ata/Kconfig +## +CONFIG_ATA=y +CONFIG_ATA_VERBOSE_ERROR=y +CONFIG_SATA_PMP=y +CONFIG_ATA_SFF=y +CONFIG_SATA_SIL=y + +## +## file: drivers/clocksource/Kconfig +## +CONFIG_SH_TIMER_TMU=y + +## +## file: drivers/dma/Kconfig +## +CONFIG_DMADEVICES=y + +## +## file: drivers/hid/Kconfig +## +CONFIG_HID=y + +## +## file: drivers/hid/usbhid/Kconfig +## +CONFIG_USB_HID=y + +## +## file: drivers/i2c/Kconfig +## +CONFIG_I2C=y +CONFIG_I2C_COMPAT=y +CONFIG_I2C_HELPER_AUTO=y + +## +## file: drivers/i2c/algos/Kconfig +## +CONFIG_I2C_ALGOPCA=y + +## +## file: drivers/i2c/busses/Kconfig +## +CONFIG_I2C_PCA_PLATFORM=y + +## +## file: drivers/input/Kconfig +## +CONFIG_INPUT=y +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_MOUSEDEV_PSAUX=y +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +CONFIG_INPUT_EVDEV=y + +## +## file: drivers/input/keyboard/Kconfig +## +CONFIG_INPUT_KEYBOARD=y +CONFIG_KEYBOARD_ATKBD=y + +## +## file: drivers/input/mouse/Kconfig +## +CONFIG_INPUT_MOUSE=y +CONFIG_MOUSE_PS2=y +CONFIG_MOUSE_PS2_ALPS=y +CONFIG_MOUSE_PS2_LOGIPS2PP=y +CONFIG_MOUSE_PS2_SYNAPTICS=y +CONFIG_MOUSE_PS2_TRACKPOINT=y + +## +## file: drivers/input/serio/Kconfig +## +CONFIG_SERIO=y +CONFIG_SERIO_I8042=y +CONFIG_SERIO_SERPORT=y +CONFIG_SERIO_LIBPS2=y + +## +## file: drivers/mfd/Kconfig +## +CONFIG_MFD_SM501=y + +## +## file: drivers/mtd/Kconfig +## +CONFIG_MTD=y +CONFIG_MTD_BLOCK=y + +## +## file: drivers/mtd/chips/Kconfig +## +CONFIG_MTD_CFI=y +CONFIG_MTD_MAP_BANK_WIDTH_1=y +CONFIG_MTD_MAP_BANK_WIDTH_2=y +CONFIG_MTD_MAP_BANK_WIDTH_4=y +CONFIG_MTD_CFI_I1=y +CONFIG_MTD_CFI_I2=y +CONFIG_MTD_CFI_AMDSTD=y + +## +## file: drivers/mtd/maps/Kconfig +## +CONFIG_MTD_PHYSMAP=y + +## +## file: drivers/net/Kconfig +## +CONFIG_NETDEVICES=y + +## +## file: drivers/net/ethernet/realtek/Kconfig +## +CONFIG_R8169=y + +## +## file: drivers/rtc/Kconfig +## +CONFIG_RTC_DRV_RS5C372=y +# CONFIG_RTC_DRV_SH is not set +# CONFIG_RTC_DRV_GENERIC is not set + +## +## file: drivers/scsi/Kconfig +## +CONFIG_SCSI=y +CONFIG_BLK_DEV_SD=y + +## +## file: drivers/tty/Kconfig +## +CONFIG_VT=y +CONFIG_CONSOLE_TRANSLATIONS=y +CONFIG_VT_CONSOLE=y +CONFIG_VT_HW_CONSOLE_BINDING=y +CONFIG_UNIX98_PTYS=y + +## +## file: drivers/tty/serial/Kconfig +## +CONFIG_SERIAL_SH_SCI=y +CONFIG_SERIAL_SH_SCI_NR_UARTS=6 +CONFIG_SERIAL_SH_SCI_CONSOLE=y + +## +## file: drivers/usb/Kconfig +## +CONFIG_USB_SUPPORT=y +CONFIG_USB=y + +## +## file: drivers/usb/host/Kconfig +## +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_R8A66597_HCD=y + +## +## file: drivers/usb/storage/Kconfig +## +CONFIG_USB_STORAGE=y + +## +## file: drivers/video/fbdev/Kconfig +## +CONFIG_FB_SM501=y + +## +## file: drivers/watchdog/Kconfig +## +CONFIG_WATCHDOG=y +CONFIG_SH_WDT=y +# CONFIG_USBPCWATCHDOG is not set + +## +## file: mm/Kconfig +## +## choice: Memory model +CONFIG_SPARSEMEM_MANUAL=y +## end choice +CONFIG_MIGRATION=y +CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 + diff --git a/config/sh4/defines b/config/sh4/defines new file mode 100644 index 00000000000..75b001120d0 --- /dev/null +++ b/config/sh4/defines @@ -0,0 +1,27 @@ +[base] +flavours: + sh7751r + sh7785lcr +kernel-arch: sh + +[build] +image-file: arch/sh/boot/zImage +# linux-signed only works for architectures in the main archive +signed-modules: false + +[image] +install-stem: vmlinuz + +[sh7751r_description] +hardware: sh7751r +hardware-long: Renesas SH7751R R2D plus board + +[sh7785lcr_description] +hardware: sh7785lcr +hardware-long: Renesas SH7785 reference board + +[sh7785lcr_image] +recommends: u-boot-tools +# Kernel partition size: 4MB +check-size: 4194304 + diff --git a/config/sparc/defines b/config/sparc/defines new file mode 100644 index 00000000000..c7e0119c292 --- /dev/null +++ b/config/sparc/defines @@ -0,0 +1,4 @@ +[base] +kernel-arch: sparc +featuresets: +# empty; sparc must be part of a multiarch installation with a sparc64 kernel diff --git a/config/sparc64/defines b/config/sparc64/defines new file mode 100644 index 00000000000..cd4d9df6a5c --- /dev/null +++ b/config/sparc64/defines @@ -0,0 +1,27 @@ +[base] +flavours: + sparc64 + sparc64-smp +kernel-arch: sparc + +[build] +image-file: arch/sparc/boot/zImage +# linux-signed only works for architectures in the main archive +signed-modules: false + +[image] +configs: +suggests: silo, fdutils +install-stem: vmlinuz + +[sparc64_description] +hardware: uniprocessor 64-bit UltraSPARC + +[sparc64_image] +configs: kernelarch-sparc/config-up + +[sparc64-smp_description] +hardware: multiprocessor 64-bit UltraSPARC + +[sparc64-smp_image] +configs: kernelarch-sparc/config-smp diff --git a/config/tilegx/defines b/config/tilegx/defines new file mode 100644 index 00000000000..fa3a88b8642 --- /dev/null +++ b/config/tilegx/defines @@ -0,0 +1,4 @@ +[base] +kernel-arch: tile +featuresets: +# empty; just building headers yet diff --git a/config/x32/defines b/config/x32/defines new file mode 100644 index 00000000000..0a19846d483 --- /dev/null +++ b/config/x32/defines @@ -0,0 +1,4 @@ +[base] +kernel-arch: x86 +featuresets: +# empty; x32 must be part of a multiarch installation with an amd64 kernel diff --git a/control b/control new file mode 100644 index 00000000000..90a873571b5 --- /dev/null +++ b/control @@ -0,0 +1,11309 @@ +Source: linux +Section: kernel +Priority: optional +Maintainer: Debian Kernel Team +Uploaders: Bastian Blank , maximilian attems , Ben Hutchings , Salvatore Bonaccorso +Standards-Version: 4.1.1 +Build-Depends: debhelper (>= 10.1~), dh-exec, python3:any, quilt, cpio , xz-utils , dh-python +Build-Depends-Arch: kernel-wedge (>= 2.93~) , kmod , bc , libssl-dev:native , libssl-dev , openssl (>= 1.1.0-1~) , asciidoc-base , xmlto , bison , flex (>= 2.6.1-1.1~) , gcc-multilib [amd64 ppc64 s390x sparc64] , libaudit-dev , libbabeltrace-dev (>= 1.5.0) , libbabeltrace-dev (>= 1.5.3-2~) | libbabeltrace-ctf-dev (>= 1.5.0) , libdw-dev , libelf-dev , libiberty-dev , libnewt-dev , libnuma-dev [amd64 arm64 hppa i386 mips mips64 mips64el mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el mips64r6 mips64r6el powerpc powerpcspe ppc64 ppc64el sparc x32] , libperl-dev , libunwind8-dev [amd64 armel armhf arm64 i386] , python-dev , autoconf , automake , libtool , libglib2.0-dev , libudev-dev , libwrap0-dev , rsync , libpci-dev , gcc-7 [alpha arm64 armhf hppa m68k mips mips64 mips64el mips64r6 mips64r6el mipsel mipsr6 mipsr6el powerpc powerpcspe ppc64 ppc64el s390x sh4 sparc64] , gcc-7-alpha-linux-gnu [alpha] , gcc-7 (>= 7.2.0-20~) [amd64 i386] , gcc-7-x86-64-linux-gnu (>= 7.2.0-20~) [amd64] , gcc-7-aarch64-linux-gnu [arm64] , gcc-7-arm-linux-gnueabihf [armhf] , binutils-hppa64-linux-gnu [hppa] , gcc-7-hppa64-linux-gnu [hppa] , gcc-7-hppa-linux-gnu [hppa] , binutils-hppa64-linux-gnu [hppa] , gcc-7-hppa64-linux-gnu [hppa] , gcc-7-i686-linux-gnu (>= 7.2.0-20~) [i386] , gcc-7-m68k-linux-gnu [m68k] , gcc-7-mips-linux-gnu [mips] , gcc-7-mips64-linux-gnuabi64 [mips64] , gcc-7-mips64el-linux-gnuabi64 [mips64el] , gcc-7-mipsisa64r6-linux-gnuabi64 [mips64r6] , gcc-7-mipsisa64r6el-linux-gnuabi64 [mips64r6el] , gcc-7-mipsel-linux-gnu [mipsel] , gcc-7-mipsisa32r6-linux-gnu [mipsr6] , gcc-7-mipsisa32r6el-linux-gnu [mipsr6el] , gcc-7-powerpc-linux-gnu [powerpc] , gcc-7-powerpc-linux-gnuspe [powerpcspe] , gcc-7-powerpc64-linux-gnu [ppc64] , gcc-7-powerpc64le-linux-gnu [ppc64el] , gcc-7-s390x-linux-gnu [s390x] , gcc-7-sh4-linux-gnu [sh4] , gcc-7-sparc64-linux-gnu [sparc64] +Build-Depends-Indep: patchutils , graphviz , python-sphinx , python-sphinx-rtd-theme +Homepage: https://www.kernel.org/ +Rules-Requires-Root: no +Vcs-Browser: https://salsa.debian.org/kernel-team/linux +Vcs-Git: https://salsa.debian.org/kernel-team/linux.git + +Package: linux-source-4.15 +Architecture: all +Section: kernel +Depends: binutils, xz-utils, ${misc:Depends} +Recommends: libc6-dev | libc-dev, gcc, make, bc +Suggests: libncurses-dev | ncurses-dev, libqt4-dev, pkg-config +Description: Linux kernel source for version 4.15 with Debian patches + This package provides source code for the Linux kernel version 4.15. This + source closely tracks official Linux kernel releases. Debian's + modifications to that source consist of security fixes, bug fixes, and + features that have already been (or are believed to be) accepted by the + upstream maintainers. +Build-Profiles: +Multi-Arch: foreign + +Package: linux-support-4.15.0-2 +Architecture: all +Section: devel +Depends: ${python3:Depends}, ${misc:Depends} +Description: Support files for Linux 4.15 + This package provides support files for the Linux kernel build, e.g. + scripts to handle ABI information and for generation of build system meta + data. +Build-Profiles: +Multi-Arch: foreign + +Package: linux-doc-4.15 +Architecture: all +Section: doc +Depends: ${misc:Depends} +Description: Linux kernel specific documentation for version 4.15 + This package provides the various README files and HTML documentation for + the Linux kernel version 4.15. Plenty of information, including the + descriptions of various kernel subsystems, filesystems, driver-specific + notes and the like. Consult the file + /usr/share/doc/linux-doc-4.15/Documentation/00-INDEX for the detailed + description of the contents. +Build-Profiles: +Multi-Arch: foreign + +Package: linux-kbuild-4.15 +Architecture: linux-any +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: Kbuild infrastructure for Linux 4.15 + This package provides the kbuild infrastructure for the headers packages + for Linux kernel version 4.15. +Build-Profiles: +Multi-Arch: foreign + +Package: linux-cpupower +Architecture: linux-any +Section: admin +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: CPU power management tools for Linux + The cpupower command allows inspection and control of cpufreq and cpuidle + tunables for hardware that support these features. It replaces + "cpufreq-info" and "cpufreq-set" in cpufrequtils. + . + ${cpupower:Arch-Description} +Build-Profiles: + +Package: libcpupower1 +Architecture: linux-any +Section: libs +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: CPU frequency and voltage scaling tools for Linux (libraries) + This package contains the shared library. +Build-Profiles: + +Package: libcpupower-dev +Architecture: linux-any +Section: libdevel +Provides: libcpufreq-dev +Depends: ${shlibs:Depends}, ${misc:Depends}, libcpupower1 (= ${binary:Version}) +Replaces: libcpufreq-dev +Conflicts: libcpufreq-dev +Description: CPU frequency and voltage scaling tools for Linux (development files) + This package contains the 'power/cpupower' headers and library shared + objects. +Build-Profiles: + +Package: linux-perf-4.15 +Architecture: alpha amd64 arm64 armel armhf hppa i386 mips mips64 mips64el mips64r6 mips64r6el mipsel mipsn32 mipsn32el mipsn32r6 mipsn32r6el mipsr6 mipsr6el powerpc powerpcspe ppc64 ppc64el s390 s390x sh4 sparc sparc64 +Section: devel +Provides: linux-tools-4.15 +Depends: ${shlibs:Depends}, ${misc:Depends}, ${perl:Depends}, ${python:Depends} +Recommends: linux-base +Suggests: linux-doc-4.15 +Replaces: linux-tools-4.15 +Conflicts: linux-tools-4.15 +Description: Performance analysis tools for Linux 4.15 + This package contains the 'perf' performance analysis tools for Linux + kernel version 4.15. + . + The linux-base package contains a 'perf' command which will invoke the + appropriate version for the running kernel. +Build-Profiles: + +Package: usbip +Architecture: linux-any +Section: admin +Depends: usbutils, ${shlibs:Depends}, ${misc:Depends} +Description: USB device sharing system over IP network + USB/IP is a system for sharing USB devices over the network. + . + To share USB devices between computers with their full functionality, + USB/IP encapsulates "USB requests" into IP packets and transmits them + between computers. + . + Original USB device drivers and applications can be used for remote USB + devices without any modification of them. A computer can use remote USB + devices as if they were directly attached. + . + Currently USB/IP provides no access control or encryption. It should only + be used in trusted environments. + . + This package provides the server component 'usbipd' and the client tool + 'usbip'. +Build-Profiles: + +Package: hyperv-daemons +Architecture: amd64 i386 x32 +Section: admin +Depends: lsb-base, ${shlibs:Depends}, ${misc:Depends} +Description: Support daemons for Linux running on Hyper-V + Suite of daemons for Linux guests running on Hyper-V, consisting of + hv_fcopy_daemon, hv_kvp_daemon and hv_vss_daemon. + . + hv_fcopy_daemon provides the file copy service, allowing the host to copy + files into the guest. + . + hv_kvp_daemon provides the key-value pair (KVP) service, allowing the host + to get and set the IP networking configuration of the guest. (This + requires helper scripts which are not currently included.) + . + hv_vss_daemon provides the volume shadow copy service (VSS), allowing the + host to freeze the guest filesystems while taking a snapshot. +Build-Profiles: + +Package: lockdep +Architecture: all +Section: devel +Depends: ${shlibs:Depends}, ${misc:Depends}, liblockdep4.15 +Recommends: liblockdep-dev +Description: Runtime locking correctness validator + lockdep is a wrapper for programs that use the pthreads API, which detects + actual and potential deadlocks and other locking bugs. +Build-Profiles: +Multi-Arch: allowed + +Package: liblockdep4.15 +Architecture: linux-any +Section: libs +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: Runtime locking correctness validator (shared library) + liblockdep is a library for programs that use the pthreads API, which can + be used to detect actual and potential deadlocks and other locking bugs. +Build-Profiles: +Multi-Arch: same + +Package: liblockdep-dev +Architecture: linux-any +Section: libdevel +Depends: ${shlibs:Depends}, ${misc:Depends}, liblockdep4.15 (= ${binary:Version}) +Description: Runtime locking correctness validator (development files) + liblockdep is a library for programs that use the pthreads API, which can + be used to detect actual and potential deadlocks and other locking bugs. +Build-Profiles: +Multi-Arch: same + +Package: linux-headers-4.15.0-2-common +Architecture: all +Depends: ${misc:Depends} +Description: Common header files for Linux 4.15.0-2 + This package provides the common kernel header files for Linux kernel + version 4.15.0-2, generally used for building out-of-tree kernel modules. + To obtain a complete set of headers you also need to install the + linux-headers-4.15.0-2-(flavour) package, matching the flavour of the + kernel you intend the build for. +Build-Profiles: +Multi-Arch: foreign + +Package: linux-libc-dev +Architecture: alpha amd64 arm64 arm64ilp32 armel armhf hppa i386 m68k mips mips64 mips64el mips64r6 mips64r6el mipsel mipsn32 mipsn32el mipsn32r6 mipsn32r6el mipsr6 mipsr6el powerpc powerpcspe ppc64 ppc64el s390 s390x sh3 sh4 sparc sparc64 tilegx x32 +Section: devel +Provides: linux-kernel-headers +Depends: ${misc:Depends} +Description: Linux support headers for userspace development + This package provides userspaces headers from the Linux kernel. These + headers are used by the installed headers for GNU libc and other system + libraries. +Multi-Arch: same + +Package: linux-headers-4.15.0-2-all +Architecture: alpha amd64 arm64 armhf hppa i386 m68k mips mips64 mips64el mips64r6 mips64r6el mipsel mipsr6 mipsr6el powerpc powerpcspe ppc64 ppc64el s390x sh4 sparc64 +Depends: linux-headers-4.15.0-2-all-${kernel:Arch} (= ${binary:Version}), ${misc:Depends} +Description: All header files for Linux 4.15 (meta-package) + This package depends against all architecture-specific kernel header files + for Linux kernel version 4.15, generally used for building out-of-tree + kernel modules. +Build-Profiles: + +Package: linux-headers-4.15.0-2-all-alpha +Architecture: alpha +Depends: ${misc:Depends}, linux-headers-4.15.0-2-alpha-generic (= ${binary:Version}), linux-headers-4.15.0-2-alpha-smp (= ${binary:Version}) +Description: All header files for Linux 4.15 (meta-package) + This package depends against all architecture-specific kernel header files + for Linux kernel version 4.15, generally used for building out-of-tree + kernel modules. +Build-Profiles: + +Package: kernel-image-4.15.0-2-alpha-generic-di +Architecture: alpha +Section: debian-installer +Priority: standard +Provides: kernel-image +Description: Linux kernel image and core modules for the Debian installer + This package contains the kernel image and core modules for the Debian + installer boot images. It does _not_ provide a usable kernel for your + full Debian system. +Build-Profiles: +Kernel-Version: 4.15.0-2-alpha-generic +Package-Type: udeb + +Package: nic-modules-4.15.0-2-alpha-generic-di +Architecture: alpha +Section: debian-installer +Priority: standard +Provides: nic-modules, nic-extra-modules +Depends: kernel-image-4.15.0-2-alpha-generic-di, nic-shared-modules-4.15.0-2-alpha-generic-di, i2c-modules-4.15.0-2-alpha-generic-di, crc-modules-4.15.0-2-alpha-generic-di +Description: NIC drivers + This package contains Ethernet and some paravirtualised network drivers + for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-alpha-generic +Package-Type: udeb + +Package: nic-wireless-modules-4.15.0-2-alpha-generic-di +Architecture: alpha +Section: debian-installer +Priority: standard +Provides: nic-wireless-modules +Depends: kernel-image-4.15.0-2-alpha-generic-di, nic-shared-modules-4.15.0-2-alpha-generic-di, usb-modules-4.15.0-2-alpha-generic-di, pcmcia-modules-4.15.0-2-alpha-generic-di, crc-modules-4.15.0-2-alpha-generic-di +Description: Wireless NIC drivers + This package contains wireless NIC drivers for the kernel. Includes + crypto modules only needed for wireless (WEP, WPA). +Build-Profiles: +Kernel-Version: 4.15.0-2-alpha-generic +Package-Type: udeb + +Package: nic-shared-modules-4.15.0-2-alpha-generic-di +Architecture: alpha +Section: debian-installer +Priority: standard +Provides: nic-shared-modules +Depends: kernel-image-4.15.0-2-alpha-generic-di +Description: Shared NIC drivers + This package contains NIC drivers needed by combinations of nic-modules, + nic-pcmcia-modules, nic-usb-modules and nic-wireless-modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-alpha-generic +Package-Type: udeb + +Package: serial-modules-4.15.0-2-alpha-generic-di +Architecture: alpha +Section: debian-installer +Priority: optional +Provides: serial-modules +Depends: kernel-image-4.15.0-2-alpha-generic-di, pcmcia-modules-4.15.0-2-alpha-generic-di +Description: Serial drivers + This package contains serial drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-alpha-generic +Package-Type: udeb + +Package: usb-serial-modules-4.15.0-2-alpha-generic-di +Architecture: alpha +Section: debian-installer +Priority: optional +Provides: usb-serial-modules +Depends: kernel-image-4.15.0-2-alpha-generic-di, usb-modules-4.15.0-2-alpha-generic-di +Description: USB serial drivers + This package contains USB serial drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-alpha-generic +Package-Type: udeb + +Package: ppp-modules-4.15.0-2-alpha-generic-di +Architecture: alpha +Section: debian-installer +Priority: optional +Provides: ppp-modules +Depends: kernel-image-4.15.0-2-alpha-generic-di, serial-modules-4.15.0-2-alpha-generic-di, zlib-modules-4.15.0-2-alpha-generic-di, crc-modules-4.15.0-2-alpha-generic-di +Description: PPP drivers + This package contains PPP drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-alpha-generic +Package-Type: udeb + +Package: pata-modules-4.15.0-2-alpha-generic-di +Architecture: alpha +Section: debian-installer +Priority: standard +Provides: pata-modules +Depends: kernel-image-4.15.0-2-alpha-generic-di, ata-modules-4.15.0-2-alpha-generic-di, scsi-core-modules-4.15.0-2-alpha-generic-di +Description: PATA drivers + This package contains PATA drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-alpha-generic +Package-Type: udeb + +Package: cdrom-core-modules-4.15.0-2-alpha-generic-di +Architecture: alpha +Section: debian-installer +Priority: standard +Provides: cdrom-core-modules +Depends: kernel-image-4.15.0-2-alpha-generic-di, scsi-core-modules-4.15.0-2-alpha-generic-di, isofs-modules-4.15.0-2-alpha-generic-di +Description: CDROM support + This package contains core CDROM support for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-alpha-generic +Package-Type: udeb + +Package: scsi-core-modules-4.15.0-2-alpha-generic-di +Architecture: alpha +Section: debian-installer +Priority: standard +Provides: scsi-core-modules +Depends: kernel-image-4.15.0-2-alpha-generic-di +Description: Core SCSI subsystem + This package contains the core SCSI subsystem for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-alpha-generic +Package-Type: udeb + +Package: scsi-modules-4.15.0-2-alpha-generic-di +Architecture: alpha +Section: debian-installer +Priority: standard +Provides: scsi-modules +Depends: kernel-image-4.15.0-2-alpha-generic-di, scsi-core-modules-4.15.0-2-alpha-generic-di, cdrom-core-modules-4.15.0-2-alpha-generic-di, ata-modules-4.15.0-2-alpha-generic-di +Description: SCSI drivers + This package contains SCSI drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-alpha-generic +Package-Type: udeb + +Package: loop-modules-4.15.0-2-alpha-generic-di +Architecture: alpha +Section: debian-installer +Priority: standard +Provides: loop-modules +Depends: kernel-image-4.15.0-2-alpha-generic-di +Description: Loopback filesystem support + This package contains loopback filesystem support for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-alpha-generic +Package-Type: udeb + +Package: btrfs-modules-4.15.0-2-alpha-generic-di +Architecture: alpha +Section: debian-installer +Priority: optional +Provides: btrfs-modules +Depends: kernel-image-4.15.0-2-alpha-generic-di, crc-modules-4.15.0-2-alpha-generic-di, zlib-modules-4.15.0-2-alpha-generic-di, md-modules-4.15.0-2-alpha-generic-di +Description: BTRFS filesystem support + This package contains the BTRFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-alpha-generic +Package-Type: udeb + +Package: ext4-modules-4.15.0-2-alpha-generic-di +Architecture: alpha +Section: debian-installer +Priority: standard +Provides: ext4-modules, ext2-modules, ext3-modules +Depends: kernel-image-4.15.0-2-alpha-generic-di, crc-modules-4.15.0-2-alpha-generic-di +Description: ext2/ext3/ext4 filesystem support + This package contains the ext4 filesystem module for the kernel, which + also supports ext2 and ext3. +Build-Profiles: +Kernel-Version: 4.15.0-2-alpha-generic +Package-Type: udeb + +Package: isofs-modules-4.15.0-2-alpha-generic-di +Architecture: alpha +Section: debian-installer +Priority: standard +Provides: isofs-modules +Depends: kernel-image-4.15.0-2-alpha-generic-di +Description: ISOFS filesystem support + This package contains the ISOFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-alpha-generic +Package-Type: udeb + +Package: jfs-modules-4.15.0-2-alpha-generic-di +Architecture: alpha +Section: debian-installer +Priority: standard +Provides: jfs-modules +Depends: kernel-image-4.15.0-2-alpha-generic-di +Description: JFS filesystem support + This package contains the JFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-alpha-generic +Package-Type: udeb + +Package: xfs-modules-4.15.0-2-alpha-generic-di +Architecture: alpha +Section: debian-installer +Priority: standard +Provides: xfs-modules +Depends: kernel-image-4.15.0-2-alpha-generic-di, crc-modules-4.15.0-2-alpha-generic-di +Description: XFS filesystem support + This package contains the XFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-alpha-generic +Package-Type: udeb + +Package: fat-modules-4.15.0-2-alpha-generic-di +Architecture: alpha +Section: debian-installer +Priority: optional +Provides: fat-modules +Depends: kernel-image-4.15.0-2-alpha-generic-di +Description: FAT filesystem support + This package contains the FAT and VFAT filesystem modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-alpha-generic +Package-Type: udeb + +Package: md-modules-4.15.0-2-alpha-generic-di +Architecture: alpha +Section: debian-installer +Priority: optional +Provides: md-modules +Depends: kernel-image-4.15.0-2-alpha-generic-di, crc-modules-4.15.0-2-alpha-generic-di +Description: RAID and LVM support + This package contains RAID and LVM modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-alpha-generic +Package-Type: udeb + +Package: multipath-modules-4.15.0-2-alpha-generic-di +Architecture: alpha +Section: debian-installer +Priority: optional +Provides: multipath-modules +Depends: kernel-image-4.15.0-2-alpha-generic-di, md-modules-4.15.0-2-alpha-generic-di, scsi-core-modules-4.15.0-2-alpha-generic-di +Description: Multipath support + This package contains DM-Multipath modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-alpha-generic +Package-Type: udeb + +Package: usb-modules-4.15.0-2-alpha-generic-di +Architecture: alpha +Section: debian-installer +Priority: optional +Provides: usb-modules +Depends: kernel-image-4.15.0-2-alpha-generic-di +Description: USB support + This package contains core USB drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-alpha-generic +Package-Type: udeb + +Package: usb-storage-modules-4.15.0-2-alpha-generic-di +Architecture: alpha +Section: debian-installer +Priority: standard +Provides: usb-storage-modules +Depends: kernel-image-4.15.0-2-alpha-generic-di, scsi-modules-4.15.0-2-alpha-generic-di, usb-modules-4.15.0-2-alpha-generic-di +Description: USB storage support + This package contains the USB storage driver for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-alpha-generic +Package-Type: udeb + +Package: input-modules-4.15.0-2-alpha-generic-di +Architecture: alpha +Section: debian-installer +Priority: optional +Provides: input-modules +Depends: kernel-image-4.15.0-2-alpha-generic-di, usb-modules-4.15.0-2-alpha-generic-di, i2c-modules-4.15.0-2-alpha-generic-di +Description: Input devices support + This package contains input device drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-alpha-generic +Package-Type: udeb + +Package: event-modules-4.15.0-2-alpha-generic-di +Architecture: alpha +Section: debian-installer +Priority: optional +Provides: event-modules +Depends: kernel-image-4.15.0-2-alpha-generic-di +Description: Event support + This package contains event drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-alpha-generic +Package-Type: udeb + +Package: mouse-modules-4.15.0-2-alpha-generic-di +Architecture: alpha +Section: debian-installer +Priority: optional +Provides: mouse-modules +Depends: kernel-image-4.15.0-2-alpha-generic-di, event-modules-4.15.0-2-alpha-generic-di, input-modules-4.15.0-2-alpha-generic-di, usb-modules-4.15.0-2-alpha-generic-di +Description: Mouse support + This package contains mouse drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-alpha-generic +Package-Type: udeb + +Package: nic-pcmcia-modules-4.15.0-2-alpha-generic-di +Architecture: alpha +Section: debian-installer +Priority: standard +Provides: nic-pcmcia-modules +Depends: kernel-image-4.15.0-2-alpha-generic-di, nic-shared-modules-4.15.0-2-alpha-generic-di, nic-wireless-modules-4.15.0-2-alpha-generic-di, pcmcia-modules-4.15.0-2-alpha-generic-di +Description: Common PCMCIA NIC drivers + This package contains common PCMCIA NIC drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-alpha-generic +Package-Type: udeb + +Package: pcmcia-modules-4.15.0-2-alpha-generic-di +Architecture: alpha +Section: debian-installer +Priority: standard +Provides: pcmcia-modules +Depends: kernel-image-4.15.0-2-alpha-generic-di +Description: Common PCMCIA drivers + This package contains common PCMCIA drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-alpha-generic +Package-Type: udeb + +Package: nic-usb-modules-4.15.0-2-alpha-generic-di +Architecture: alpha +Section: debian-installer +Priority: standard +Provides: nic-usb-modules +Depends: kernel-image-4.15.0-2-alpha-generic-di, nic-shared-modules-4.15.0-2-alpha-generic-di, nic-wireless-modules-4.15.0-2-alpha-generic-di, usb-modules-4.15.0-2-alpha-generic-di, crc-modules-4.15.0-2-alpha-generic-di +Description: USB NIC drivers + This package contains USB network adapter drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-alpha-generic +Package-Type: udeb + +Package: sata-modules-4.15.0-2-alpha-generic-di +Architecture: alpha +Section: debian-installer +Priority: standard +Provides: sata-modules +Depends: kernel-image-4.15.0-2-alpha-generic-di, scsi-core-modules-4.15.0-2-alpha-generic-di, ata-modules-4.15.0-2-alpha-generic-di +Description: SATA drivers + This package contains SATA drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-alpha-generic +Package-Type: udeb + +Package: i2c-modules-4.15.0-2-alpha-generic-di +Architecture: alpha +Section: debian-installer +Priority: optional +Provides: i2c-modules +Depends: kernel-image-4.15.0-2-alpha-generic-di +Description: i2c support modules + This package contains basic i2c support modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-alpha-generic +Package-Type: udeb + +Package: crc-modules-4.15.0-2-alpha-generic-di +Architecture: alpha +Section: debian-installer +Priority: optional +Provides: crc-modules +Depends: kernel-image-4.15.0-2-alpha-generic-di +Description: CRC modules + This package contains CRC support modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-alpha-generic +Package-Type: udeb + +Package: crypto-modules-4.15.0-2-alpha-generic-di +Architecture: alpha +Section: debian-installer +Priority: optional +Provides: crypto-modules +Depends: kernel-image-4.15.0-2-alpha-generic-di +Description: crypto modules + This package contains crypto modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-alpha-generic +Package-Type: udeb + +Package: crypto-dm-modules-4.15.0-2-alpha-generic-di +Architecture: alpha +Section: debian-installer +Priority: optional +Provides: crypto-dm-modules +Depends: kernel-image-4.15.0-2-alpha-generic-di, md-modules-4.15.0-2-alpha-generic-di +Description: devicemapper crypto module + This package contains the devicemapper crypto (dm-crypt) module. +Build-Profiles: +Kernel-Version: 4.15.0-2-alpha-generic +Package-Type: udeb + +Package: ata-modules-4.15.0-2-alpha-generic-di +Architecture: alpha +Section: debian-installer +Priority: optional +Provides: ata-modules +Depends: kernel-image-4.15.0-2-alpha-generic-di, scsi-core-modules-4.15.0-2-alpha-generic-di +Description: ATA disk modules + This package contains core ATA disk modules used by both PATA and SATA + disk drivers. +Build-Profiles: +Kernel-Version: 4.15.0-2-alpha-generic +Package-Type: udeb + +Package: nbd-modules-4.15.0-2-alpha-generic-di +Architecture: alpha +Section: debian-installer +Priority: optional +Provides: nbd-modules +Depends: kernel-image-4.15.0-2-alpha-generic-di +Description: Network Block Device modules + This package contains the modules required for support of the Network + Block Device +Build-Profiles: +Kernel-Version: 4.15.0-2-alpha-generic +Package-Type: udeb + +Package: squashfs-modules-4.15.0-2-alpha-generic-di +Architecture: alpha +Section: debian-installer +Priority: optional +Provides: squashfs-modules +Depends: kernel-image-4.15.0-2-alpha-generic-di +Description: squashfs modules + This package contains squashfs modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-alpha-generic +Package-Type: udeb + +Package: virtio-modules-4.15.0-2-alpha-generic-di +Architecture: alpha +Section: debian-installer +Priority: optional +Provides: virtio-modules +Depends: kernel-image-4.15.0-2-alpha-generic-di, scsi-core-modules-4.15.0-2-alpha-generic-di +Description: virtio modules + This package contains virtio modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-alpha-generic +Package-Type: udeb + +Package: zlib-modules-4.15.0-2-alpha-generic-di +Architecture: alpha +Section: debian-installer +Priority: optional +Provides: zlib-modules +Depends: kernel-image-4.15.0-2-alpha-generic-di +Description: zlib modules + This package contains zlib modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-alpha-generic +Package-Type: udeb + +Package: fuse-modules-4.15.0-2-alpha-generic-di +Architecture: alpha +Section: debian-installer +Priority: optional +Provides: fuse-modules +Depends: kernel-image-4.15.0-2-alpha-generic-di +Description: FUSE modules + This package contains the Filesystem in Userspace (FUSE) module. +Build-Profiles: +Kernel-Version: 4.15.0-2-alpha-generic +Package-Type: udeb + +Package: srm-modules-4.15.0-2-alpha-generic-di +Architecture: alpha +Section: debian-installer +Priority: standard +Provides: srm-modules +Depends: kernel-image-4.15.0-2-alpha-generic-di +Description: SRM modules + This package contains the srm_env module which provides access to the SRM + environment. +Build-Profiles: +Kernel-Version: 4.15.0-2-alpha-generic +Package-Type: udeb + +Package: linux-image-4.15.0-2-alpha-generic +Architecture: alpha +Depends: kmod, linux-base (>= 4.3~), ${misc:Depends}, initramfs-tools (>= 0.120+deb8u2) [alpha] | linux-initramfs-tool [alpha] +Recommends: firmware-linux-free, ${kernel:Recommends}, apparmor [alpha] +Suggests: linux-doc-4.15, debian-kernel-handbook, aboot [alpha], fdutils [alpha] +Breaks: initramfs-tools (<< 0.120+deb8u2) +Description: Linux 4.15 for Alpha + The Linux kernel 4.15 and modules for use on DEC Alpha systems with + extended kernel start address (Wildfire, Titan, Marvel). +Build-Profiles: + +Package: linux-headers-4.15.0-2-alpha-generic +Architecture: alpha +Depends: linux-headers-4.15.0-2-common (= ${source:Version}), linux-kbuild-4.15, ${misc:Depends}, gcc-7 +Description: Header files for Linux 4.15.0-2-alpha-generic + This package provides the architecture-specific kernel header files for + Linux kernel 4.15.0-2-alpha-generic, generally used for building + out-of-tree kernel modules. These files are going to be installed into + /usr/src/linux-headers-4.15.0-2-alpha-generic, and can be used for + building modules that load into the kernel provided by the + linux-image-4.15.0-2-alpha-generic package. +Build-Profiles: + +Package: linux-image-4.15.0-2-alpha-generic-dbg +Architecture: alpha +Section: debug +Priority: optional +Depends: ${misc:Depends} +Description: Debug symbols for linux-image-4.15.0-2-alpha-generic + This package provides the detached debug symbols for the Linux kernel and + modules in linux-image-4.15.0-2-alpha-generic. +Build-Profiles: + +Package: linux-image-4.15.0-2-alpha-smp +Architecture: alpha +Depends: kmod, linux-base (>= 4.3~), ${misc:Depends}, initramfs-tools (>= 0.120+deb8u2) [alpha] | linux-initramfs-tool [alpha] +Recommends: firmware-linux-free, ${kernel:Recommends}, apparmor [alpha] +Suggests: linux-doc-4.15, debian-kernel-handbook, aboot [alpha], fdutils [alpha] +Breaks: initramfs-tools (<< 0.120+deb8u2) +Description: Linux 4.15 for Alpha SMP + The Linux kernel 4.15 and modules for use on DEC Alpha SMP systems with + extended kernel start address (Wildfire, Titan, Marvel). +Build-Profiles: + +Package: linux-headers-4.15.0-2-alpha-smp +Architecture: alpha +Depends: linux-headers-4.15.0-2-common (= ${source:Version}), linux-kbuild-4.15, ${misc:Depends}, gcc-7 +Description: Header files for Linux 4.15.0-2-alpha-smp + This package provides the architecture-specific kernel header files for + Linux kernel 4.15.0-2-alpha-smp, generally used for building out-of-tree + kernel modules. These files are going to be installed into + /usr/src/linux-headers-4.15.0-2-alpha-smp, and can be used for building + modules that load into the kernel provided by the + linux-image-4.15.0-2-alpha-smp package. +Build-Profiles: + +Package: linux-image-4.15.0-2-alpha-smp-dbg +Architecture: alpha +Section: debug +Priority: optional +Depends: ${misc:Depends} +Description: Debug symbols for linux-image-4.15.0-2-alpha-smp + This package provides the detached debug symbols for the Linux kernel and + modules in linux-image-4.15.0-2-alpha-smp. +Build-Profiles: + +Package: linux-headers-4.15.0-2-all-amd64 +Architecture: amd64 +Depends: ${misc:Depends}, linux-headers-4.15.0-2-amd64 (= ${binary:Version}), linux-headers-4.15.0-2-cloud-amd64 (= ${binary:Version}) +Description: All header files for Linux 4.15 (meta-package) + This package depends against all architecture-specific kernel header files + for Linux kernel version 4.15, generally used for building out-of-tree + kernel modules. +Build-Profiles: + +Package: kernel-image-4.15.0-2-amd64-di +Architecture: amd64 +Section: debian-installer +Priority: standard +Provides: kernel-image, zlib-modules +Description: Linux kernel image and core modules for the Debian installer + This package contains the kernel image and core modules for the Debian + installer boot images. It does _not_ provide a usable kernel for your + full Debian system. +Build-Profiles: +Kernel-Version: 4.15.0-2-amd64 +Package-Type: udeb + +Package: nic-modules-4.15.0-2-amd64-di +Architecture: amd64 +Section: debian-installer +Priority: standard +Provides: nic-modules, nic-extra-modules +Depends: kernel-image-4.15.0-2-amd64-di, nic-shared-modules-4.15.0-2-amd64-di, i2c-modules-4.15.0-2-amd64-di, crc-modules-4.15.0-2-amd64-di +Description: NIC drivers + This package contains Ethernet and some paravirtualised network drivers + for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-amd64 +Package-Type: udeb + +Package: nic-wireless-modules-4.15.0-2-amd64-di +Architecture: amd64 +Section: debian-installer +Priority: standard +Provides: nic-wireless-modules +Depends: kernel-image-4.15.0-2-amd64-di, nic-shared-modules-4.15.0-2-amd64-di, usb-modules-4.15.0-2-amd64-di, mmc-modules-4.15.0-2-amd64-di, pcmcia-modules-4.15.0-2-amd64-di, crc-modules-4.15.0-2-amd64-di +Description: Wireless NIC drivers + This package contains wireless NIC drivers for the kernel. Includes + crypto modules only needed for wireless (WEP, WPA). +Build-Profiles: +Kernel-Version: 4.15.0-2-amd64 +Package-Type: udeb + +Package: nic-shared-modules-4.15.0-2-amd64-di +Architecture: amd64 +Section: debian-installer +Priority: standard +Provides: nic-shared-modules +Depends: kernel-image-4.15.0-2-amd64-di +Description: Shared NIC drivers + This package contains NIC drivers needed by combinations of nic-modules, + nic-pcmcia-modules, nic-usb-modules and nic-wireless-modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-amd64 +Package-Type: udeb + +Package: serial-modules-4.15.0-2-amd64-di +Architecture: amd64 +Section: debian-installer +Priority: optional +Provides: serial-modules +Depends: kernel-image-4.15.0-2-amd64-di, pcmcia-modules-4.15.0-2-amd64-di +Description: Serial drivers + This package contains serial drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-amd64 +Package-Type: udeb + +Package: usb-serial-modules-4.15.0-2-amd64-di +Architecture: amd64 +Section: debian-installer +Priority: optional +Provides: usb-serial-modules +Depends: kernel-image-4.15.0-2-amd64-di, usb-modules-4.15.0-2-amd64-di +Description: USB serial drivers + This package contains USB serial drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-amd64 +Package-Type: udeb + +Package: ppp-modules-4.15.0-2-amd64-di +Architecture: amd64 +Section: debian-installer +Priority: optional +Provides: ppp-modules +Depends: kernel-image-4.15.0-2-amd64-di, serial-modules-4.15.0-2-amd64-di, crc-modules-4.15.0-2-amd64-di +Description: PPP drivers + This package contains PPP drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-amd64 +Package-Type: udeb + +Package: pata-modules-4.15.0-2-amd64-di +Architecture: amd64 +Section: debian-installer +Priority: standard +Provides: pata-modules +Depends: kernel-image-4.15.0-2-amd64-di, ata-modules-4.15.0-2-amd64-di +Description: PATA drivers + This package contains PATA drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-amd64 +Package-Type: udeb + +Package: cdrom-core-modules-4.15.0-2-amd64-di +Architecture: amd64 +Section: debian-installer +Priority: standard +Provides: cdrom-core-modules +Depends: kernel-image-4.15.0-2-amd64-di, scsi-core-modules-4.15.0-2-amd64-di, isofs-modules-4.15.0-2-amd64-di +Description: CDROM support + This package contains core CDROM support for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-amd64 +Package-Type: udeb + +Package: firewire-core-modules-4.15.0-2-amd64-di +Architecture: amd64 +Section: debian-installer +Priority: standard +Provides: firewire-core-modules +Depends: kernel-image-4.15.0-2-amd64-di, scsi-core-modules-4.15.0-2-amd64-di, crc-modules-4.15.0-2-amd64-di +Description: Core FireWire drivers + This package contains core FireWire drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-amd64 +Package-Type: udeb + +Package: scsi-core-modules-4.15.0-2-amd64-di +Architecture: amd64 +Section: debian-installer +Priority: standard +Provides: scsi-core-modules +Depends: kernel-image-4.15.0-2-amd64-di +Description: Core SCSI subsystem + This package contains the core SCSI subsystem for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-amd64 +Package-Type: udeb + +Package: scsi-modules-4.15.0-2-amd64-di +Architecture: amd64 +Section: debian-installer +Priority: standard +Provides: scsi-modules +Depends: kernel-image-4.15.0-2-amd64-di, scsi-core-modules-4.15.0-2-amd64-di, cdrom-core-modules-4.15.0-2-amd64-di, ata-modules-4.15.0-2-amd64-di +Description: SCSI drivers + This package contains SCSI drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-amd64 +Package-Type: udeb + +Package: loop-modules-4.15.0-2-amd64-di +Architecture: amd64 +Section: debian-installer +Priority: standard +Provides: loop-modules +Depends: kernel-image-4.15.0-2-amd64-di +Description: Loopback filesystem support + This package contains loopback filesystem support for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-amd64 +Package-Type: udeb + +Package: btrfs-modules-4.15.0-2-amd64-di +Architecture: amd64 +Section: debian-installer +Priority: optional +Provides: btrfs-modules +Depends: kernel-image-4.15.0-2-amd64-di, crc-modules-4.15.0-2-amd64-di, md-modules-4.15.0-2-amd64-di +Description: BTRFS filesystem support + This package contains the BTRFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-amd64 +Package-Type: udeb + +Package: ext4-modules-4.15.0-2-amd64-di +Architecture: amd64 +Section: debian-installer +Priority: standard +Provides: ext4-modules, ext2-modules, ext3-modules +Depends: kernel-image-4.15.0-2-amd64-di, crc-modules-4.15.0-2-amd64-di +Description: ext2/ext3/ext4 filesystem support + This package contains the ext4 filesystem module for the kernel, which + also supports ext2 and ext3. +Build-Profiles: +Kernel-Version: 4.15.0-2-amd64 +Package-Type: udeb + +Package: isofs-modules-4.15.0-2-amd64-di +Architecture: amd64 +Section: debian-installer +Priority: standard +Provides: isofs-modules +Depends: kernel-image-4.15.0-2-amd64-di +Description: ISOFS filesystem support + This package contains the ISOFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-amd64 +Package-Type: udeb + +Package: jfs-modules-4.15.0-2-amd64-di +Architecture: amd64 +Section: debian-installer +Priority: standard +Provides: jfs-modules +Depends: kernel-image-4.15.0-2-amd64-di +Description: JFS filesystem support + This package contains the JFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-amd64 +Package-Type: udeb + +Package: ntfs-modules-4.15.0-2-amd64-di +Architecture: amd64 +Section: debian-installer +Priority: optional +Provides: ntfs-modules +Depends: kernel-image-4.15.0-2-amd64-di +Description: NTFS filesystem support + This package contains the NTFS file system module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-amd64 +Package-Type: udeb + +Package: xfs-modules-4.15.0-2-amd64-di +Architecture: amd64 +Section: debian-installer +Priority: standard +Provides: xfs-modules +Depends: kernel-image-4.15.0-2-amd64-di, crc-modules-4.15.0-2-amd64-di +Description: XFS filesystem support + This package contains the XFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-amd64 +Package-Type: udeb + +Package: fat-modules-4.15.0-2-amd64-di +Architecture: amd64 +Section: debian-installer +Priority: standard +Provides: fat-modules +Depends: kernel-image-4.15.0-2-amd64-di +Description: FAT filesystem support + This package contains the FAT and VFAT filesystem modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-amd64 +Package-Type: udeb + +Package: md-modules-4.15.0-2-amd64-di +Architecture: amd64 +Section: debian-installer +Priority: optional +Provides: md-modules +Depends: kernel-image-4.15.0-2-amd64-di, crc-modules-4.15.0-2-amd64-di +Description: RAID and LVM support + This package contains RAID and LVM modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-amd64 +Package-Type: udeb + +Package: multipath-modules-4.15.0-2-amd64-di +Architecture: amd64 +Section: debian-installer +Priority: optional +Provides: multipath-modules +Depends: kernel-image-4.15.0-2-amd64-di, md-modules-4.15.0-2-amd64-di, scsi-core-modules-4.15.0-2-amd64-di +Description: Multipath support + This package contains DM-Multipath modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-amd64 +Package-Type: udeb + +Package: usb-modules-4.15.0-2-amd64-di +Architecture: amd64 +Section: debian-installer +Priority: optional +Provides: usb-modules +Depends: kernel-image-4.15.0-2-amd64-di +Description: USB support + This package contains core USB drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-amd64 +Package-Type: udeb + +Package: usb-storage-modules-4.15.0-2-amd64-di +Architecture: amd64 +Section: debian-installer +Priority: standard +Provides: usb-storage-modules +Depends: kernel-image-4.15.0-2-amd64-di, scsi-core-modules-4.15.0-2-amd64-di, usb-modules-4.15.0-2-amd64-di +Description: USB storage support + This package contains the USB storage driver for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-amd64 +Package-Type: udeb + +Package: pcmcia-storage-modules-4.15.0-2-amd64-di +Architecture: amd64 +Section: debian-installer +Priority: standard +Provides: pcmcia-storage-modules +Depends: kernel-image-4.15.0-2-amd64-di, cdrom-core-modules-4.15.0-2-amd64-di, pcmcia-modules-4.15.0-2-amd64-di, ata-modules-4.15.0-2-amd64-di +Description: PCMCIA storage drivers + This package contains PCMCIA storage drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-amd64 +Package-Type: udeb + +Package: fb-modules-4.15.0-2-amd64-di +Architecture: amd64 +Section: debian-installer +Priority: optional +Provides: fb-modules +Depends: kernel-image-4.15.0-2-amd64-di, i2c-modules-4.15.0-2-amd64-di +Description: Frame buffer support + This package contains Frame buffer drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-amd64 +Package-Type: udeb + +Package: input-modules-4.15.0-2-amd64-di +Architecture: amd64 +Section: debian-installer +Priority: optional +Provides: input-modules +Depends: kernel-image-4.15.0-2-amd64-di, usb-modules-4.15.0-2-amd64-di, i2c-modules-4.15.0-2-amd64-di +Description: Input devices support + This package contains input device drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-amd64 +Package-Type: udeb + +Package: event-modules-4.15.0-2-amd64-di +Architecture: amd64 +Section: debian-installer +Priority: optional +Provides: event-modules +Depends: kernel-image-4.15.0-2-amd64-di +Description: Event support + This package contains event drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-amd64 +Package-Type: udeb + +Package: mouse-modules-4.15.0-2-amd64-di +Architecture: amd64 +Section: debian-installer +Priority: optional +Provides: mouse-modules +Depends: kernel-image-4.15.0-2-amd64-di, event-modules-4.15.0-2-amd64-di, input-modules-4.15.0-2-amd64-di, usb-modules-4.15.0-2-amd64-di +Description: Mouse support + This package contains mouse drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-amd64 +Package-Type: udeb + +Package: nic-pcmcia-modules-4.15.0-2-amd64-di +Architecture: amd64 +Section: debian-installer +Priority: standard +Provides: nic-pcmcia-modules +Depends: kernel-image-4.15.0-2-amd64-di, nic-shared-modules-4.15.0-2-amd64-di, nic-wireless-modules-4.15.0-2-amd64-di, pcmcia-modules-4.15.0-2-amd64-di, mmc-core-modules-4.15.0-2-amd64-di +Description: Common PCMCIA NIC drivers + This package contains common PCMCIA NIC drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-amd64 +Package-Type: udeb + +Package: pcmcia-modules-4.15.0-2-amd64-di +Architecture: amd64 +Section: debian-installer +Priority: standard +Provides: pcmcia-modules +Depends: kernel-image-4.15.0-2-amd64-di +Description: Common PCMCIA drivers + This package contains common PCMCIA drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-amd64 +Package-Type: udeb + +Package: nic-usb-modules-4.15.0-2-amd64-di +Architecture: amd64 +Section: debian-installer +Priority: standard +Provides: nic-usb-modules +Depends: kernel-image-4.15.0-2-amd64-di, nic-shared-modules-4.15.0-2-amd64-di, nic-wireless-modules-4.15.0-2-amd64-di, usb-modules-4.15.0-2-amd64-di, crc-modules-4.15.0-2-amd64-di +Description: USB NIC drivers + This package contains USB network adapter drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-amd64 +Package-Type: udeb + +Package: sata-modules-4.15.0-2-amd64-di +Architecture: amd64 +Section: debian-installer +Priority: standard +Provides: sata-modules +Depends: kernel-image-4.15.0-2-amd64-di, scsi-core-modules-4.15.0-2-amd64-di, ata-modules-4.15.0-2-amd64-di +Description: SATA drivers + This package contains SATA drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-amd64 +Package-Type: udeb + +Package: acpi-modules-4.15.0-2-amd64-di +Architecture: amd64 +Section: debian-installer +Priority: optional +Provides: acpi-modules +Depends: kernel-image-4.15.0-2-amd64-di +Description: ACPI support modules + This package contains kernel modules for ACPI. +Build-Profiles: +Kernel-Version: 4.15.0-2-amd64 +Package-Type: udeb + +Package: i2c-modules-4.15.0-2-amd64-di +Architecture: amd64 +Section: debian-installer +Priority: optional +Provides: i2c-modules +Depends: kernel-image-4.15.0-2-amd64-di +Description: i2c support modules + This package contains basic i2c support modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-amd64 +Package-Type: udeb + +Package: crc-modules-4.15.0-2-amd64-di +Architecture: amd64 +Section: debian-installer +Priority: optional +Provides: crc-modules +Depends: kernel-image-4.15.0-2-amd64-di +Description: CRC modules + This package contains CRC support modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-amd64 +Package-Type: udeb + +Package: crypto-modules-4.15.0-2-amd64-di +Architecture: amd64 +Section: debian-installer +Priority: optional +Provides: crypto-modules +Depends: kernel-image-4.15.0-2-amd64-di +Description: crypto modules + This package contains crypto modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-amd64 +Package-Type: udeb + +Package: crypto-dm-modules-4.15.0-2-amd64-di +Architecture: amd64 +Section: debian-installer +Priority: optional +Provides: crypto-dm-modules +Depends: kernel-image-4.15.0-2-amd64-di, md-modules-4.15.0-2-amd64-di +Description: devicemapper crypto module + This package contains the devicemapper crypto (dm-crypt) module. +Build-Profiles: +Kernel-Version: 4.15.0-2-amd64 +Package-Type: udeb + +Package: efi-modules-4.15.0-2-amd64-di +Architecture: amd64 +Section: debian-installer +Priority: optional +Provides: efi-modules +Depends: kernel-image-4.15.0-2-amd64-di +Description: EFI modules + This package contains EFI modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-amd64 +Package-Type: udeb + +Package: ata-modules-4.15.0-2-amd64-di +Architecture: amd64 +Section: debian-installer +Priority: optional +Provides: ata-modules +Depends: kernel-image-4.15.0-2-amd64-di, scsi-core-modules-4.15.0-2-amd64-di +Description: ATA disk modules + This package contains core ATA disk modules used by both PATA and SATA + disk drivers. +Build-Profiles: +Kernel-Version: 4.15.0-2-amd64 +Package-Type: udeb + +Package: mmc-core-modules-4.15.0-2-amd64-di +Architecture: amd64 +Section: debian-installer +Priority: optional +Provides: mmc-core-modules +Depends: kernel-image-4.15.0-2-amd64-di +Description: MMC/SD/SDIO core modules + This package contains core modules for MMC/SD/SDIO support. +Build-Profiles: +Kernel-Version: 4.15.0-2-amd64 +Package-Type: udeb + +Package: mmc-modules-4.15.0-2-amd64-di +Architecture: amd64 +Section: debian-installer +Priority: optional +Provides: mmc-modules +Depends: kernel-image-4.15.0-2-amd64-di, mmc-core-modules-4.15.0-2-amd64-di, usb-modules-4.15.0-2-amd64-di, crc-modules-4.15.0-2-amd64-di +Description: MMC/SD card modules + This package contains modules needed to support MMC (multimedia) and SD + cards. +Build-Profiles: +Kernel-Version: 4.15.0-2-amd64 +Package-Type: udeb + +Package: nbd-modules-4.15.0-2-amd64-di +Architecture: amd64 +Section: debian-installer +Priority: optional +Provides: nbd-modules +Depends: kernel-image-4.15.0-2-amd64-di +Description: Network Block Device modules + This package contains the modules required for support of the Network + Block Device +Build-Profiles: +Kernel-Version: 4.15.0-2-amd64 +Package-Type: udeb + +Package: squashfs-modules-4.15.0-2-amd64-di +Architecture: amd64 +Section: debian-installer +Priority: optional +Provides: squashfs-modules +Depends: kernel-image-4.15.0-2-amd64-di +Description: squashfs modules + This package contains squashfs modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-amd64 +Package-Type: udeb + +Package: speakup-modules-4.15.0-2-amd64-di +Architecture: amd64 +Section: debian-installer +Priority: optional +Provides: speakup-modules +Depends: kernel-image-4.15.0-2-amd64-di +Description: speakup modules + This package contains speakup modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-amd64 +Package-Type: udeb + +Package: virtio-modules-4.15.0-2-amd64-di +Architecture: amd64 +Section: debian-installer +Priority: optional +Provides: virtio-modules +Depends: kernel-image-4.15.0-2-amd64-di, scsi-core-modules-4.15.0-2-amd64-di +Description: virtio modules + This package contains virtio modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-amd64 +Package-Type: udeb + +Package: uinput-modules-4.15.0-2-amd64-di +Architecture: amd64 +Section: debian-installer +Priority: optional +Provides: uinput-modules +Depends: kernel-image-4.15.0-2-amd64-di +Description: uinput support + This package contains the uinput module. +Build-Profiles: +Kernel-Version: 4.15.0-2-amd64 +Package-Type: udeb + +Package: sound-modules-4.15.0-2-amd64-di +Architecture: amd64 +Section: debian-installer +Priority: optional +Provides: sound-modules +Depends: kernel-image-4.15.0-2-amd64-di, i2c-modules-4.15.0-2-amd64-di, usb-modules-4.15.0-2-amd64-di, pcmcia-modules-4.15.0-2-amd64-di, firewire-core-modules-4.15.0-2-amd64-di, crc-modules-4.15.0-2-amd64-di +Description: sound support + This package contains sound modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-amd64 +Package-Type: udeb + +Package: hyperv-modules-4.15.0-2-amd64-di +Architecture: amd64 +Section: debian-installer +Priority: optional +Provides: hyperv-modules +Depends: kernel-image-4.15.0-2-amd64-di, input-modules-4.15.0-2-amd64-di, scsi-core-modules-4.15.0-2-amd64-di, nic-shared-modules-4.15.0-2-amd64-di +Description: Hyper-V modules + This package contains Hyper-V paravirtualised drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-amd64 +Package-Type: udeb + +Package: udf-modules-4.15.0-2-amd64-di +Architecture: amd64 +Section: debian-installer +Priority: optional +Provides: udf-modules +Depends: kernel-image-4.15.0-2-amd64-di, crc-modules-4.15.0-2-amd64-di +Description: UDF modules + This package contains the UDF filesystem module. +Build-Profiles: +Kernel-Version: 4.15.0-2-amd64 +Package-Type: udeb + +Package: fuse-modules-4.15.0-2-amd64-di +Architecture: amd64 +Section: debian-installer +Priority: optional +Provides: fuse-modules +Depends: kernel-image-4.15.0-2-amd64-di +Description: FUSE modules + This package contains the Filesystem in Userspace (FUSE) module. +Build-Profiles: +Kernel-Version: 4.15.0-2-amd64 +Package-Type: udeb + +Package: linux-image-4.15.0-2-amd64 +Architecture: amd64 +Depends: kmod, linux-base (>= 4.3~), ${misc:Depends}, initramfs-tools (>= 0.120+deb8u2) [amd64] | linux-initramfs-tool [amd64] +Recommends: firmware-linux-free, ${kernel:Recommends}, apparmor [amd64] +Suggests: linux-doc-4.15, debian-kernel-handbook, grub-pc [amd64] | grub-efi-amd64 [amd64] | extlinux [amd64] +Breaks: xserver-xorg-input-vmmouse (<< 1:13.0.99) [amd64], initramfs-tools (<< 0.120+deb8u2) +Description: Linux 4.15 for 64-bit PCs + The Linux kernel 4.15 and modules for use on PCs with AMD64, Intel 64 or + VIA Nano processors. +Build-Profiles: + +Package: linux-headers-4.15.0-2-amd64 +Architecture: amd64 +Depends: linux-headers-4.15.0-2-common (= ${source:Version}), linux-kbuild-4.15, ${misc:Depends}, linux-compiler-gcc-7-x86 (>= 4.14.17-1~) +Description: Header files for Linux 4.15.0-2-amd64 + This package provides the architecture-specific kernel header files for + Linux kernel 4.15.0-2-amd64, generally used for building out-of-tree + kernel modules. These files are going to be installed into + /usr/src/linux-headers-4.15.0-2-amd64, and can be used for building + modules that load into the kernel provided by the + linux-image-4.15.0-2-amd64 package. +Build-Profiles: + +Package: linux-image-4.15.0-2-amd64-dbg +Architecture: amd64 +Section: debug +Priority: optional +Depends: ${misc:Depends} +Description: Debug symbols for linux-image-4.15.0-2-amd64 + This package provides the detached debug symbols for the Linux kernel and + modules in linux-image-4.15.0-2-amd64. +Build-Profiles: + +Package: linux-image-4.15.0-2-cloud-amd64 +Architecture: amd64 +Depends: kmod, linux-base (>= 4.3~), ${misc:Depends}, initramfs-tools (>= 0.120+deb8u2) [amd64] | linux-initramfs-tool [amd64] +Recommends: firmware-linux-free, ${kernel:Recommends}, apparmor [amd64] +Suggests: linux-doc-4.15, debian-kernel-handbook, grub-pc [amd64] | grub-efi-amd64 [amd64] | extlinux [amd64] +Breaks: xserver-xorg-input-vmmouse (<< 1:13.0.99) [amd64], initramfs-tools (<< 0.120+deb8u2) +Description: Linux 4.15 for x86-64 cloud + The Linux kernel 4.15 and modules for use on Amazon EC2, Google Compute + Engine and Microsoft Azure cloud platforms. +Build-Profiles: + +Package: linux-headers-4.15.0-2-cloud-amd64 +Architecture: amd64 +Depends: linux-headers-4.15.0-2-common (= ${source:Version}), linux-kbuild-4.15, ${misc:Depends}, linux-compiler-gcc-7-x86 (>= 4.14.17-1~) +Description: Header files for Linux 4.15.0-2-cloud-amd64 + This package provides the architecture-specific kernel header files for + Linux kernel 4.15.0-2-cloud-amd64, generally used for building out-of-tree + kernel modules. These files are going to be installed into + /usr/src/linux-headers-4.15.0-2-cloud-amd64, and can be used for building + modules that load into the kernel provided by the + linux-image-4.15.0-2-cloud-amd64 package. +Build-Profiles: + +Package: linux-image-4.15.0-2-cloud-amd64-dbg +Architecture: amd64 +Section: debug +Priority: optional +Depends: ${misc:Depends} +Description: Debug symbols for linux-image-4.15.0-2-cloud-amd64 + This package provides the detached debug symbols for the Linux kernel and + modules in linux-image-4.15.0-2-cloud-amd64. +Build-Profiles: + +Package: linux-headers-4.15.0-2-all-arm64 +Architecture: arm64 +Depends: ${misc:Depends}, linux-headers-4.15.0-2-arm64 (= ${binary:Version}) +Description: All header files for Linux 4.15 (meta-package) + This package depends against all architecture-specific kernel header files + for Linux kernel version 4.15, generally used for building out-of-tree + kernel modules. +Build-Profiles: + +Package: kernel-image-4.15.0-2-arm64-di +Architecture: arm64 +Section: debian-installer +Priority: standard +Provides: kernel-image, zlib-modules +Description: Linux kernel image and core modules for the Debian installer + This package contains the kernel image and core modules for the Debian + installer boot images. It does _not_ provide a usable kernel for your + full Debian system. +Build-Profiles: +Kernel-Version: 4.15.0-2-arm64 +Package-Type: udeb + +Package: nic-modules-4.15.0-2-arm64-di +Architecture: arm64 +Section: debian-installer +Priority: standard +Provides: nic-modules, nic-extra-modules +Depends: kernel-image-4.15.0-2-arm64-di, nic-shared-modules-4.15.0-2-arm64-di, i2c-modules-4.15.0-2-arm64-di, crc-modules-4.15.0-2-arm64-di +Description: NIC drivers + This package contains Ethernet and some paravirtualised network drivers + for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-arm64 +Package-Type: udeb + +Package: nic-wireless-modules-4.15.0-2-arm64-di +Architecture: arm64 +Section: debian-installer +Priority: standard +Provides: nic-wireless-modules +Depends: kernel-image-4.15.0-2-arm64-di, nic-shared-modules-4.15.0-2-arm64-di, usb-modules-4.15.0-2-arm64-di, mmc-modules-4.15.0-2-arm64-di, crc-modules-4.15.0-2-arm64-di +Description: Wireless NIC drivers + This package contains wireless NIC drivers for the kernel. Includes + crypto modules only needed for wireless (WEP, WPA). +Build-Profiles: +Kernel-Version: 4.15.0-2-arm64 +Package-Type: udeb + +Package: nic-shared-modules-4.15.0-2-arm64-di +Architecture: arm64 +Section: debian-installer +Priority: standard +Provides: nic-shared-modules +Depends: kernel-image-4.15.0-2-arm64-di +Description: Shared NIC drivers + This package contains NIC drivers needed by combinations of nic-modules, + nic-pcmcia-modules, nic-usb-modules and nic-wireless-modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-arm64 +Package-Type: udeb + +Package: ppp-modules-4.15.0-2-arm64-di +Architecture: arm64 +Section: debian-installer +Priority: optional +Provides: ppp-modules +Depends: kernel-image-4.15.0-2-arm64-di, crc-modules-4.15.0-2-arm64-di +Description: PPP drivers + This package contains PPP drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-arm64 +Package-Type: udeb + +Package: cdrom-core-modules-4.15.0-2-arm64-di +Architecture: arm64 +Section: debian-installer +Priority: standard +Provides: cdrom-core-modules +Depends: kernel-image-4.15.0-2-arm64-di, scsi-core-modules-4.15.0-2-arm64-di, isofs-modules-4.15.0-2-arm64-di +Description: CDROM support + This package contains core CDROM support for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-arm64 +Package-Type: udeb + +Package: scsi-core-modules-4.15.0-2-arm64-di +Architecture: arm64 +Section: debian-installer +Priority: standard +Provides: scsi-core-modules +Depends: kernel-image-4.15.0-2-arm64-di +Description: Core SCSI subsystem + This package contains the core SCSI subsystem for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-arm64 +Package-Type: udeb + +Package: scsi-modules-4.15.0-2-arm64-di +Architecture: arm64 +Section: debian-installer +Priority: standard +Provides: scsi-modules +Depends: kernel-image-4.15.0-2-arm64-di, scsi-core-modules-4.15.0-2-arm64-di, cdrom-core-modules-4.15.0-2-arm64-di, ata-modules-4.15.0-2-arm64-di +Description: SCSI drivers + This package contains SCSI drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-arm64 +Package-Type: udeb + +Package: loop-modules-4.15.0-2-arm64-di +Architecture: arm64 +Section: debian-installer +Priority: standard +Provides: loop-modules +Depends: kernel-image-4.15.0-2-arm64-di +Description: Loopback filesystem support + This package contains loopback filesystem support for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-arm64 +Package-Type: udeb + +Package: btrfs-modules-4.15.0-2-arm64-di +Architecture: arm64 +Section: debian-installer +Priority: optional +Provides: btrfs-modules +Depends: kernel-image-4.15.0-2-arm64-di, crc-modules-4.15.0-2-arm64-di, md-modules-4.15.0-2-arm64-di +Description: BTRFS filesystem support + This package contains the BTRFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-arm64 +Package-Type: udeb + +Package: ext4-modules-4.15.0-2-arm64-di +Architecture: arm64 +Section: debian-installer +Priority: standard +Provides: ext4-modules, ext2-modules, ext3-modules +Depends: kernel-image-4.15.0-2-arm64-di, crc-modules-4.15.0-2-arm64-di +Description: ext2/ext3/ext4 filesystem support + This package contains the ext4 filesystem module for the kernel, which + also supports ext2 and ext3. +Build-Profiles: +Kernel-Version: 4.15.0-2-arm64 +Package-Type: udeb + +Package: isofs-modules-4.15.0-2-arm64-di +Architecture: arm64 +Section: debian-installer +Priority: standard +Provides: isofs-modules +Depends: kernel-image-4.15.0-2-arm64-di +Description: ISOFS filesystem support + This package contains the ISOFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-arm64 +Package-Type: udeb + +Package: jfs-modules-4.15.0-2-arm64-di +Architecture: arm64 +Section: debian-installer +Priority: standard +Provides: jfs-modules +Depends: kernel-image-4.15.0-2-arm64-di +Description: JFS filesystem support + This package contains the JFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-arm64 +Package-Type: udeb + +Package: xfs-modules-4.15.0-2-arm64-di +Architecture: arm64 +Section: debian-installer +Priority: standard +Provides: xfs-modules +Depends: kernel-image-4.15.0-2-arm64-di, crc-modules-4.15.0-2-arm64-di +Description: XFS filesystem support + This package contains the XFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-arm64 +Package-Type: udeb + +Package: fat-modules-4.15.0-2-arm64-di +Architecture: arm64 +Section: debian-installer +Priority: optional +Provides: fat-modules +Depends: kernel-image-4.15.0-2-arm64-di +Description: FAT filesystem support + This package contains the FAT and VFAT filesystem modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-arm64 +Package-Type: udeb + +Package: md-modules-4.15.0-2-arm64-di +Architecture: arm64 +Section: debian-installer +Priority: optional +Provides: md-modules +Depends: kernel-image-4.15.0-2-arm64-di, crc-modules-4.15.0-2-arm64-di +Description: RAID and LVM support + This package contains RAID and LVM modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-arm64 +Package-Type: udeb + +Package: multipath-modules-4.15.0-2-arm64-di +Architecture: arm64 +Section: debian-installer +Priority: optional +Provides: multipath-modules +Depends: kernel-image-4.15.0-2-arm64-di, md-modules-4.15.0-2-arm64-di, scsi-core-modules-4.15.0-2-arm64-di +Description: Multipath support + This package contains DM-Multipath modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-arm64 +Package-Type: udeb + +Package: usb-modules-4.15.0-2-arm64-di +Architecture: arm64 +Section: debian-installer +Priority: optional +Provides: usb-modules +Depends: kernel-image-4.15.0-2-arm64-di +Description: USB support + This package contains core USB drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-arm64 +Package-Type: udeb + +Package: usb-storage-modules-4.15.0-2-arm64-di +Architecture: arm64 +Section: debian-installer +Priority: standard +Provides: usb-storage-modules +Depends: kernel-image-4.15.0-2-arm64-di, scsi-core-modules-4.15.0-2-arm64-di, usb-modules-4.15.0-2-arm64-di +Description: USB storage support + This package contains the USB storage driver for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-arm64 +Package-Type: udeb + +Package: fb-modules-4.15.0-2-arm64-di +Architecture: arm64 +Section: debian-installer +Priority: optional +Provides: fb-modules +Depends: kernel-image-4.15.0-2-arm64-di, i2c-modules-4.15.0-2-arm64-di +Description: Frame buffer support + This package contains Frame buffer drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-arm64 +Package-Type: udeb + +Package: input-modules-4.15.0-2-arm64-di +Architecture: arm64 +Section: debian-installer +Priority: optional +Provides: input-modules +Depends: kernel-image-4.15.0-2-arm64-di, usb-modules-4.15.0-2-arm64-di, i2c-modules-4.15.0-2-arm64-di +Description: Input devices support + This package contains input device drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-arm64 +Package-Type: udeb + +Package: event-modules-4.15.0-2-arm64-di +Architecture: arm64 +Section: debian-installer +Priority: optional +Provides: event-modules +Depends: kernel-image-4.15.0-2-arm64-di +Description: Event support + This package contains event drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-arm64 +Package-Type: udeb + +Package: nic-usb-modules-4.15.0-2-arm64-di +Architecture: arm64 +Section: debian-installer +Priority: standard +Provides: nic-usb-modules +Depends: kernel-image-4.15.0-2-arm64-di, nic-shared-modules-4.15.0-2-arm64-di, nic-wireless-modules-4.15.0-2-arm64-di, usb-modules-4.15.0-2-arm64-di, crc-modules-4.15.0-2-arm64-di +Description: USB NIC drivers + This package contains USB network adapter drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-arm64 +Package-Type: udeb + +Package: sata-modules-4.15.0-2-arm64-di +Architecture: arm64 +Section: debian-installer +Priority: standard +Provides: sata-modules +Depends: kernel-image-4.15.0-2-arm64-di, scsi-core-modules-4.15.0-2-arm64-di, ata-modules-4.15.0-2-arm64-di +Description: SATA drivers + This package contains SATA drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-arm64 +Package-Type: udeb + +Package: i2c-modules-4.15.0-2-arm64-di +Architecture: arm64 +Section: debian-installer +Priority: optional +Provides: i2c-modules +Depends: kernel-image-4.15.0-2-arm64-di +Description: i2c support modules + This package contains basic i2c support modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-arm64 +Package-Type: udeb + +Package: crc-modules-4.15.0-2-arm64-di +Architecture: arm64 +Section: debian-installer +Priority: optional +Provides: crc-modules +Depends: kernel-image-4.15.0-2-arm64-di +Description: CRC modules + This package contains CRC support modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-arm64 +Package-Type: udeb + +Package: crypto-modules-4.15.0-2-arm64-di +Architecture: arm64 +Section: debian-installer +Priority: optional +Provides: crypto-modules +Depends: kernel-image-4.15.0-2-arm64-di +Description: crypto modules + This package contains crypto modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-arm64 +Package-Type: udeb + +Package: crypto-dm-modules-4.15.0-2-arm64-di +Architecture: arm64 +Section: debian-installer +Priority: optional +Provides: crypto-dm-modules +Depends: kernel-image-4.15.0-2-arm64-di, md-modules-4.15.0-2-arm64-di +Description: devicemapper crypto module + This package contains the devicemapper crypto (dm-crypt) module. +Build-Profiles: +Kernel-Version: 4.15.0-2-arm64 +Package-Type: udeb + +Package: efi-modules-4.15.0-2-arm64-di +Architecture: arm64 +Section: debian-installer +Priority: optional +Provides: efi-modules +Depends: kernel-image-4.15.0-2-arm64-di +Description: EFI modules + This package contains EFI modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-arm64 +Package-Type: udeb + +Package: ata-modules-4.15.0-2-arm64-di +Architecture: arm64 +Section: debian-installer +Priority: optional +Provides: ata-modules +Depends: kernel-image-4.15.0-2-arm64-di, scsi-core-modules-4.15.0-2-arm64-di +Description: ATA disk modules + This package contains core ATA disk modules used by both PATA and SATA + disk drivers. +Build-Profiles: +Kernel-Version: 4.15.0-2-arm64 +Package-Type: udeb + +Package: mmc-modules-4.15.0-2-arm64-di +Architecture: arm64 +Section: debian-installer +Priority: optional +Provides: mmc-modules +Depends: kernel-image-4.15.0-2-arm64-di, usb-modules-4.15.0-2-arm64-di, crc-modules-4.15.0-2-arm64-di +Description: MMC/SD card modules + This package contains modules needed to support MMC (multimedia) and SD + cards. +Build-Profiles: +Kernel-Version: 4.15.0-2-arm64 +Package-Type: udeb + +Package: nbd-modules-4.15.0-2-arm64-di +Architecture: arm64 +Section: debian-installer +Priority: optional +Provides: nbd-modules +Depends: kernel-image-4.15.0-2-arm64-di +Description: Network Block Device modules + This package contains the modules required for support of the Network + Block Device +Build-Profiles: +Kernel-Version: 4.15.0-2-arm64 +Package-Type: udeb + +Package: squashfs-modules-4.15.0-2-arm64-di +Architecture: arm64 +Section: debian-installer +Priority: optional +Provides: squashfs-modules +Depends: kernel-image-4.15.0-2-arm64-di +Description: squashfs modules + This package contains squashfs modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-arm64 +Package-Type: udeb + +Package: virtio-modules-4.15.0-2-arm64-di +Architecture: arm64 +Section: debian-installer +Priority: optional +Provides: virtio-modules +Depends: kernel-image-4.15.0-2-arm64-di, scsi-core-modules-4.15.0-2-arm64-di +Description: virtio modules + This package contains virtio modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-arm64 +Package-Type: udeb + +Package: uinput-modules-4.15.0-2-arm64-di +Architecture: arm64 +Section: debian-installer +Priority: optional +Provides: uinput-modules +Depends: kernel-image-4.15.0-2-arm64-di +Description: uinput support + This package contains the uinput module. +Build-Profiles: +Kernel-Version: 4.15.0-2-arm64 +Package-Type: udeb + +Package: leds-modules-4.15.0-2-arm64-di +Architecture: arm64 +Section: debian-installer +Priority: optional +Provides: leds-modules +Depends: kernel-image-4.15.0-2-arm64-di +Description: LED modules + This package contains LED modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-arm64 +Package-Type: udeb + +Package: udf-modules-4.15.0-2-arm64-di +Architecture: arm64 +Section: debian-installer +Priority: optional +Provides: udf-modules +Depends: kernel-image-4.15.0-2-arm64-di, crc-modules-4.15.0-2-arm64-di +Description: UDF modules + This package contains the UDF filesystem module. +Build-Profiles: +Kernel-Version: 4.15.0-2-arm64 +Package-Type: udeb + +Package: fuse-modules-4.15.0-2-arm64-di +Architecture: arm64 +Section: debian-installer +Priority: optional +Provides: fuse-modules +Depends: kernel-image-4.15.0-2-arm64-di +Description: FUSE modules + This package contains the Filesystem in Userspace (FUSE) module. +Build-Profiles: +Kernel-Version: 4.15.0-2-arm64 +Package-Type: udeb + +Package: linux-image-4.15.0-2-arm64 +Architecture: arm64 +Depends: kmod, linux-base (>= 4.3~), ${misc:Depends}, initramfs-tools (>= 0.120+deb8u2) [arm64] | linux-initramfs-tool [arm64] +Recommends: firmware-linux-free, ${kernel:Recommends}, apparmor [arm64] +Suggests: linux-doc-4.15, debian-kernel-handbook +Breaks: libmozjs185-1.0 [arm64], libmozjs-24-0 (<< 24.2.0-5.1~) [arm64], initramfs-tools (<< 0.120+deb8u2) +Description: Linux 4.15 for 64-bit ARMv8 machines + The Linux kernel 4.15 and modules for use on 64-bit ARMv8 machines. +Build-Profiles: + +Package: linux-headers-4.15.0-2-arm64 +Architecture: arm64 +Depends: linux-headers-4.15.0-2-common (= ${source:Version}), linux-kbuild-4.15, ${misc:Depends}, gcc-7 +Description: Header files for Linux 4.15.0-2-arm64 + This package provides the architecture-specific kernel header files for + Linux kernel 4.15.0-2-arm64, generally used for building out-of-tree + kernel modules. These files are going to be installed into + /usr/src/linux-headers-4.15.0-2-arm64, and can be used for building + modules that load into the kernel provided by the + linux-image-4.15.0-2-arm64 package. +Build-Profiles: + +Package: linux-image-4.15.0-2-arm64-dbg +Architecture: arm64 +Section: debug +Priority: optional +Depends: ${misc:Depends} +Description: Debug symbols for linux-image-4.15.0-2-arm64 + This package provides the detached debug symbols for the Linux kernel and + modules in linux-image-4.15.0-2-arm64. +Build-Profiles: + +Package: linux-headers-4.15.0-2-all-armhf +Architecture: armhf +Depends: ${misc:Depends}, linux-headers-4.15.0-2-armmp (= ${binary:Version}), linux-headers-4.15.0-2-armmp-lpae (= ${binary:Version}) +Description: All header files for Linux 4.15 (meta-package) + This package depends against all architecture-specific kernel header files + for Linux kernel version 4.15, generally used for building out-of-tree + kernel modules. +Build-Profiles: + +Package: kernel-image-4.15.0-2-armmp-di +Architecture: armhf +Section: debian-installer +Priority: standard +Provides: kernel-image +Description: Linux kernel image and core modules for the Debian installer + This package contains the kernel image and core modules for the Debian + installer boot images. It does _not_ provide a usable kernel for your + full Debian system. +Build-Profiles: +Kernel-Version: 4.15.0-2-armmp +Package-Type: udeb + +Package: nic-modules-4.15.0-2-armmp-di +Architecture: armhf +Section: debian-installer +Priority: standard +Provides: nic-modules, nic-extra-modules +Depends: kernel-image-4.15.0-2-armmp-di, nic-shared-modules-4.15.0-2-armmp-di, i2c-modules-4.15.0-2-armmp-di, crc-modules-4.15.0-2-armmp-di +Description: NIC drivers + This package contains Ethernet and some paravirtualised network drivers + for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-armmp +Package-Type: udeb + +Package: nic-wireless-modules-4.15.0-2-armmp-di +Architecture: armhf +Section: debian-installer +Priority: standard +Provides: nic-wireless-modules +Depends: kernel-image-4.15.0-2-armmp-di, nic-shared-modules-4.15.0-2-armmp-di, usb-modules-4.15.0-2-armmp-di, mmc-modules-4.15.0-2-armmp-di, crc-modules-4.15.0-2-armmp-di +Description: Wireless NIC drivers + This package contains wireless NIC drivers for the kernel. Includes + crypto modules only needed for wireless (WEP, WPA). +Build-Profiles: +Kernel-Version: 4.15.0-2-armmp +Package-Type: udeb + +Package: nic-shared-modules-4.15.0-2-armmp-di +Architecture: armhf +Section: debian-installer +Priority: standard +Provides: nic-shared-modules +Depends: kernel-image-4.15.0-2-armmp-di +Description: Shared NIC drivers + This package contains NIC drivers needed by combinations of nic-modules, + nic-pcmcia-modules, nic-usb-modules and nic-wireless-modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-armmp +Package-Type: udeb + +Package: ppp-modules-4.15.0-2-armmp-di +Architecture: armhf +Section: debian-installer +Priority: optional +Provides: ppp-modules +Depends: kernel-image-4.15.0-2-armmp-di, zlib-modules-4.15.0-2-armmp-di, crc-modules-4.15.0-2-armmp-di +Description: PPP drivers + This package contains PPP drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-armmp +Package-Type: udeb + +Package: pata-modules-4.15.0-2-armmp-di +Architecture: armhf +Section: debian-installer +Priority: optional +Provides: pata-modules +Depends: kernel-image-4.15.0-2-armmp-di, ata-modules-4.15.0-2-armmp-di +Description: PATA drivers + This package contains PATA drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-armmp +Package-Type: udeb + +Package: scsi-core-modules-4.15.0-2-armmp-di +Architecture: armhf +Section: debian-installer +Priority: standard +Provides: scsi-core-modules +Depends: kernel-image-4.15.0-2-armmp-di +Description: Core SCSI subsystem + This package contains the core SCSI subsystem for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-armmp +Package-Type: udeb + +Package: scsi-modules-4.15.0-2-armmp-di +Architecture: armhf +Section: debian-installer +Priority: standard +Provides: scsi-modules +Depends: kernel-image-4.15.0-2-armmp-di, scsi-core-modules-4.15.0-2-armmp-di, ata-modules-4.15.0-2-armmp-di +Description: SCSI drivers + This package contains SCSI drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-armmp +Package-Type: udeb + +Package: loop-modules-4.15.0-2-armmp-di +Architecture: armhf +Section: debian-installer +Priority: standard +Provides: loop-modules +Depends: kernel-image-4.15.0-2-armmp-di +Description: Loopback filesystem support + This package contains loopback filesystem support for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-armmp +Package-Type: udeb + +Package: btrfs-modules-4.15.0-2-armmp-di +Architecture: armhf +Section: debian-installer +Priority: optional +Provides: btrfs-modules +Depends: kernel-image-4.15.0-2-armmp-di, crc-modules-4.15.0-2-armmp-di, zlib-modules-4.15.0-2-armmp-di, md-modules-4.15.0-2-armmp-di +Description: BTRFS filesystem support + This package contains the BTRFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-armmp +Package-Type: udeb + +Package: ext4-modules-4.15.0-2-armmp-di +Architecture: armhf +Section: debian-installer +Priority: standard +Provides: ext4-modules, ext2-modules, ext3-modules +Depends: kernel-image-4.15.0-2-armmp-di, crc-modules-4.15.0-2-armmp-di +Description: ext2/ext3/ext4 filesystem support + This package contains the ext4 filesystem module for the kernel, which + also supports ext2 and ext3. +Build-Profiles: +Kernel-Version: 4.15.0-2-armmp +Package-Type: udeb + +Package: isofs-modules-4.15.0-2-armmp-di +Architecture: armhf +Section: debian-installer +Priority: standard +Provides: isofs-modules +Depends: kernel-image-4.15.0-2-armmp-di +Description: ISOFS filesystem support + This package contains the ISOFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-armmp +Package-Type: udeb + +Package: jfs-modules-4.15.0-2-armmp-di +Architecture: armhf +Section: debian-installer +Priority: standard +Provides: jfs-modules +Depends: kernel-image-4.15.0-2-armmp-di +Description: JFS filesystem support + This package contains the JFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-armmp +Package-Type: udeb + +Package: fat-modules-4.15.0-2-armmp-di +Architecture: armhf +Section: debian-installer +Priority: optional +Provides: fat-modules +Depends: kernel-image-4.15.0-2-armmp-di +Description: FAT filesystem support + This package contains the FAT and VFAT filesystem modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-armmp +Package-Type: udeb + +Package: md-modules-4.15.0-2-armmp-di +Architecture: armhf +Section: debian-installer +Priority: optional +Provides: md-modules +Depends: kernel-image-4.15.0-2-armmp-di, crc-modules-4.15.0-2-armmp-di +Description: RAID and LVM support + This package contains RAID and LVM modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-armmp +Package-Type: udeb + +Package: multipath-modules-4.15.0-2-armmp-di +Architecture: armhf +Section: debian-installer +Priority: optional +Provides: multipath-modules +Depends: kernel-image-4.15.0-2-armmp-di, md-modules-4.15.0-2-armmp-di, scsi-core-modules-4.15.0-2-armmp-di +Description: Multipath support + This package contains DM-Multipath modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-armmp +Package-Type: udeb + +Package: usb-modules-4.15.0-2-armmp-di +Architecture: armhf +Section: debian-installer +Priority: optional +Provides: usb-modules +Depends: kernel-image-4.15.0-2-armmp-di +Description: USB support + This package contains core USB drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-armmp +Package-Type: udeb + +Package: usb-storage-modules-4.15.0-2-armmp-di +Architecture: armhf +Section: debian-installer +Priority: standard +Provides: usb-storage-modules +Depends: kernel-image-4.15.0-2-armmp-di, scsi-core-modules-4.15.0-2-armmp-di, usb-modules-4.15.0-2-armmp-di +Description: USB storage support + This package contains the USB storage driver for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-armmp +Package-Type: udeb + +Package: fb-modules-4.15.0-2-armmp-di +Architecture: armhf +Section: debian-installer +Priority: optional +Provides: fb-modules +Depends: kernel-image-4.15.0-2-armmp-di, i2c-modules-4.15.0-2-armmp-di +Description: Frame buffer support + This package contains Frame buffer drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-armmp +Package-Type: udeb + +Package: input-modules-4.15.0-2-armmp-di +Architecture: armhf +Section: debian-installer +Priority: optional +Provides: input-modules +Depends: kernel-image-4.15.0-2-armmp-di, usb-modules-4.15.0-2-armmp-di, i2c-modules-4.15.0-2-armmp-di +Description: Input devices support + This package contains input device drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-armmp +Package-Type: udeb + +Package: event-modules-4.15.0-2-armmp-di +Architecture: armhf +Section: debian-installer +Priority: optional +Provides: event-modules +Depends: kernel-image-4.15.0-2-armmp-di +Description: Event support + This package contains event drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-armmp +Package-Type: udeb + +Package: nic-usb-modules-4.15.0-2-armmp-di +Architecture: armhf +Section: debian-installer +Priority: standard +Provides: nic-usb-modules +Depends: kernel-image-4.15.0-2-armmp-di, nic-shared-modules-4.15.0-2-armmp-di, nic-wireless-modules-4.15.0-2-armmp-di, usb-modules-4.15.0-2-armmp-di, crc-modules-4.15.0-2-armmp-di +Description: USB NIC drivers + This package contains USB network adapter drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-armmp +Package-Type: udeb + +Package: sata-modules-4.15.0-2-armmp-di +Architecture: armhf +Section: debian-installer +Priority: standard +Provides: sata-modules +Depends: kernel-image-4.15.0-2-armmp-di, scsi-core-modules-4.15.0-2-armmp-di, ata-modules-4.15.0-2-armmp-di +Description: SATA drivers + This package contains SATA drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-armmp +Package-Type: udeb + +Package: i2c-modules-4.15.0-2-armmp-di +Architecture: armhf +Section: debian-installer +Priority: optional +Provides: i2c-modules +Depends: kernel-image-4.15.0-2-armmp-di +Description: i2c support modules + This package contains basic i2c support modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-armmp +Package-Type: udeb + +Package: crc-modules-4.15.0-2-armmp-di +Architecture: armhf +Section: debian-installer +Priority: optional +Provides: crc-modules +Depends: kernel-image-4.15.0-2-armmp-di +Description: CRC modules + This package contains CRC support modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-armmp +Package-Type: udeb + +Package: crypto-modules-4.15.0-2-armmp-di +Architecture: armhf +Section: debian-installer +Priority: optional +Provides: crypto-modules +Depends: kernel-image-4.15.0-2-armmp-di +Description: crypto modules + This package contains crypto modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-armmp +Package-Type: udeb + +Package: crypto-dm-modules-4.15.0-2-armmp-di +Architecture: armhf +Section: debian-installer +Priority: optional +Provides: crypto-dm-modules +Depends: kernel-image-4.15.0-2-armmp-di, md-modules-4.15.0-2-armmp-di +Description: devicemapper crypto module + This package contains the devicemapper crypto (dm-crypt) module. +Build-Profiles: +Kernel-Version: 4.15.0-2-armmp +Package-Type: udeb + +Package: efi-modules-4.15.0-2-armmp-di +Architecture: armhf +Section: debian-installer +Priority: optional +Provides: efi-modules +Depends: kernel-image-4.15.0-2-armmp-di +Description: EFI modules + This package contains EFI modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-armmp +Package-Type: udeb + +Package: ata-modules-4.15.0-2-armmp-di +Architecture: armhf +Section: debian-installer +Priority: optional +Provides: ata-modules +Depends: kernel-image-4.15.0-2-armmp-di, scsi-core-modules-4.15.0-2-armmp-di +Description: ATA disk modules + This package contains core ATA disk modules used by both PATA and SATA + disk drivers. +Build-Profiles: +Kernel-Version: 4.15.0-2-armmp +Package-Type: udeb + +Package: mmc-modules-4.15.0-2-armmp-di +Architecture: armhf +Section: debian-installer +Priority: optional +Provides: mmc-modules +Depends: kernel-image-4.15.0-2-armmp-di, usb-modules-4.15.0-2-armmp-di, crc-modules-4.15.0-2-armmp-di +Description: MMC/SD card modules + This package contains modules needed to support MMC (multimedia) and SD + cards. +Build-Profiles: +Kernel-Version: 4.15.0-2-armmp +Package-Type: udeb + +Package: nbd-modules-4.15.0-2-armmp-di +Architecture: armhf +Section: debian-installer +Priority: optional +Provides: nbd-modules +Depends: kernel-image-4.15.0-2-armmp-di +Description: Network Block Device modules + This package contains the modules required for support of the Network + Block Device +Build-Profiles: +Kernel-Version: 4.15.0-2-armmp +Package-Type: udeb + +Package: squashfs-modules-4.15.0-2-armmp-di +Architecture: armhf +Section: debian-installer +Priority: optional +Provides: squashfs-modules +Depends: kernel-image-4.15.0-2-armmp-di +Description: squashfs modules + This package contains squashfs modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-armmp +Package-Type: udeb + +Package: virtio-modules-4.15.0-2-armmp-di +Architecture: armhf +Section: debian-installer +Priority: optional +Provides: virtio-modules +Depends: kernel-image-4.15.0-2-armmp-di, scsi-core-modules-4.15.0-2-armmp-di +Description: virtio modules + This package contains virtio modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-armmp +Package-Type: udeb + +Package: uinput-modules-4.15.0-2-armmp-di +Architecture: armhf +Section: debian-installer +Priority: optional +Provides: uinput-modules +Depends: kernel-image-4.15.0-2-armmp-di +Description: uinput support + This package contains the uinput module. +Build-Profiles: +Kernel-Version: 4.15.0-2-armmp +Package-Type: udeb + +Package: zlib-modules-4.15.0-2-armmp-di +Architecture: armhf +Section: debian-installer +Priority: optional +Provides: zlib-modules +Depends: kernel-image-4.15.0-2-armmp-di +Description: zlib modules + This package contains zlib modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-armmp +Package-Type: udeb + +Package: leds-modules-4.15.0-2-armmp-di +Architecture: armhf +Section: debian-installer +Priority: optional +Provides: leds-modules +Depends: kernel-image-4.15.0-2-armmp-di +Description: LED modules + This package contains LED modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-armmp +Package-Type: udeb + +Package: udf-modules-4.15.0-2-armmp-di +Architecture: armhf +Section: debian-installer +Priority: optional +Provides: udf-modules +Depends: kernel-image-4.15.0-2-armmp-di, crc-modules-4.15.0-2-armmp-di +Description: UDF modules + This package contains the UDF filesystem module. +Build-Profiles: +Kernel-Version: 4.15.0-2-armmp +Package-Type: udeb + +Package: fuse-modules-4.15.0-2-armmp-di +Architecture: armhf +Section: debian-installer +Priority: optional +Provides: fuse-modules +Depends: kernel-image-4.15.0-2-armmp-di +Description: FUSE modules + This package contains the Filesystem in Userspace (FUSE) module. +Build-Profiles: +Kernel-Version: 4.15.0-2-armmp +Package-Type: udeb + +Package: mtd-modules-4.15.0-2-armmp-di +Architecture: armhf +Section: debian-installer +Priority: optional +Provides: mtd-modules +Depends: kernel-image-4.15.0-2-armmp-di +Description: MTD modules + This package contains MTD modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-armmp +Package-Type: udeb + +Package: linux-image-4.15.0-2-armmp +Architecture: armhf +Depends: kmod, linux-base (>= 4.3~), ${misc:Depends}, initramfs-tools (>= 0.120+deb8u2) [armhf] | linux-initramfs-tool [armhf] +Recommends: firmware-linux-free, ${kernel:Recommends}, apparmor [armhf] +Suggests: linux-doc-4.15, debian-kernel-handbook +Breaks: initramfs-tools (<< 0.120+deb8u2) +Description: Linux 4.15 for ARMv7 multiplatform compatible SoCs + The Linux kernel 4.15 and modules for use on ARMv7 multiplatform kernel. + See https://wiki.debian.org/DebianKernel/ARMMP for details of supported + platforms. +Build-Profiles: + +Package: linux-headers-4.15.0-2-armmp +Architecture: armhf +Depends: linux-headers-4.15.0-2-common (= ${source:Version}), linux-kbuild-4.15, ${misc:Depends}, linux-compiler-gcc-7-arm +Description: Header files for Linux 4.15.0-2-armmp + This package provides the architecture-specific kernel header files for + Linux kernel 4.15.0-2-armmp, generally used for building out-of-tree + kernel modules. These files are going to be installed into + /usr/src/linux-headers-4.15.0-2-armmp, and can be used for building + modules that load into the kernel provided by the + linux-image-4.15.0-2-armmp package. +Build-Profiles: + +Package: linux-image-4.15.0-2-armmp-dbg +Architecture: armhf +Section: debug +Priority: optional +Depends: ${misc:Depends} +Description: Debug symbols for linux-image-4.15.0-2-armmp + This package provides the detached debug symbols for the Linux kernel and + modules in linux-image-4.15.0-2-armmp. +Build-Profiles: + +Package: linux-image-4.15.0-2-armmp-lpae +Architecture: armhf +Depends: kmod, linux-base (>= 4.3~), ${misc:Depends}, initramfs-tools (>= 0.120+deb8u2) [armhf] | linux-initramfs-tool [armhf] +Recommends: firmware-linux-free, ${kernel:Recommends}, apparmor [armhf] +Suggests: linux-doc-4.15, debian-kernel-handbook +Breaks: initramfs-tools (<< 0.120+deb8u2) +Description: Linux 4.15 for ARMv7 multiplatform compatible SoCs supporting LPAE + The Linux kernel 4.15 and modules for use on ARMv7 multiplatform kernel + supporting LPAE. See https://wiki.debian.org/DebianKernel/ARMMP for + details of supported platforms.. +Build-Profiles: + +Package: linux-headers-4.15.0-2-armmp-lpae +Architecture: armhf +Depends: linux-headers-4.15.0-2-common (= ${source:Version}), linux-kbuild-4.15, ${misc:Depends}, linux-compiler-gcc-7-arm +Description: Header files for Linux 4.15.0-2-armmp-lpae + This package provides the architecture-specific kernel header files for + Linux kernel 4.15.0-2-armmp-lpae, generally used for building out-of-tree + kernel modules. These files are going to be installed into + /usr/src/linux-headers-4.15.0-2-armmp-lpae, and can be used for building + modules that load into the kernel provided by the + linux-image-4.15.0-2-armmp-lpae package. +Build-Profiles: + +Package: linux-image-4.15.0-2-armmp-lpae-dbg +Architecture: armhf +Section: debug +Priority: optional +Depends: ${misc:Depends} +Description: Debug symbols for linux-image-4.15.0-2-armmp-lpae + This package provides the detached debug symbols for the Linux kernel and + modules in linux-image-4.15.0-2-armmp-lpae. +Build-Profiles: + +Package: linux-headers-4.15.0-2-all-hppa +Architecture: hppa +Depends: ${misc:Depends}, linux-headers-4.15.0-2-parisc (= ${binary:Version}), linux-headers-4.15.0-2-parisc64-smp (= ${binary:Version}) +Description: All header files for Linux 4.15 (meta-package) + This package depends against all architecture-specific kernel header files + for Linux kernel version 4.15, generally used for building out-of-tree + kernel modules. +Build-Profiles: + +Package: kernel-image-4.15.0-2-parisc-di +Architecture: hppa +Section: debian-installer +Priority: standard +Provides: kernel-image +Description: Linux kernel image and core modules for the Debian installer + This package contains the kernel image and core modules for the Debian + installer boot images. It does _not_ provide a usable kernel for your + full Debian system. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc +Package-Type: udeb + +Package: nic-modules-4.15.0-2-parisc-di +Architecture: hppa +Section: debian-installer +Priority: standard +Provides: nic-modules, nic-extra-modules +Depends: kernel-image-4.15.0-2-parisc-di, nic-shared-modules-4.15.0-2-parisc-di, crc-modules-4.15.0-2-parisc-di +Description: NIC drivers + This package contains Ethernet and some paravirtualised network drivers + for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc +Package-Type: udeb + +Package: nic-shared-modules-4.15.0-2-parisc-di +Architecture: hppa +Section: debian-installer +Priority: standard +Provides: nic-shared-modules +Depends: kernel-image-4.15.0-2-parisc-di +Description: Shared NIC drivers + This package contains NIC drivers needed by combinations of nic-modules, + nic-pcmcia-modules, nic-usb-modules and nic-wireless-modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc +Package-Type: udeb + +Package: serial-modules-4.15.0-2-parisc-di +Architecture: hppa +Section: debian-installer +Priority: optional +Provides: serial-modules +Depends: kernel-image-4.15.0-2-parisc-di +Description: Serial drivers + This package contains serial drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc +Package-Type: udeb + +Package: usb-serial-modules-4.15.0-2-parisc-di +Architecture: hppa +Section: debian-installer +Priority: optional +Provides: usb-serial-modules +Depends: kernel-image-4.15.0-2-parisc-di, usb-modules-4.15.0-2-parisc-di +Description: USB serial drivers + This package contains USB serial drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc +Package-Type: udeb + +Package: ppp-modules-4.15.0-2-parisc-di +Architecture: hppa +Section: debian-installer +Priority: optional +Provides: ppp-modules +Depends: kernel-image-4.15.0-2-parisc-di, serial-modules-4.15.0-2-parisc-di, zlib-modules-4.15.0-2-parisc-di, crc-modules-4.15.0-2-parisc-di +Description: PPP drivers + This package contains PPP drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc +Package-Type: udeb + +Package: pata-modules-4.15.0-2-parisc-di +Architecture: hppa +Section: debian-installer +Priority: standard +Provides: pata-modules +Depends: kernel-image-4.15.0-2-parisc-di, ata-modules-4.15.0-2-parisc-di, scsi-core-modules-4.15.0-2-parisc-di +Description: PATA drivers + This package contains PATA drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc +Package-Type: udeb + +Package: cdrom-core-modules-4.15.0-2-parisc-di +Architecture: hppa +Section: debian-installer +Priority: standard +Provides: cdrom-core-modules +Depends: kernel-image-4.15.0-2-parisc-di, scsi-core-modules-4.15.0-2-parisc-di, isofs-modules-4.15.0-2-parisc-di +Description: CDROM support + This package contains core CDROM support for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc +Package-Type: udeb + +Package: scsi-core-modules-4.15.0-2-parisc-di +Architecture: hppa +Section: debian-installer +Priority: standard +Provides: scsi-core-modules +Depends: kernel-image-4.15.0-2-parisc-di +Description: Core SCSI subsystem + This package contains the core SCSI subsystem for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc +Package-Type: udeb + +Package: scsi-modules-4.15.0-2-parisc-di +Architecture: hppa +Section: debian-installer +Priority: standard +Provides: scsi-modules +Depends: kernel-image-4.15.0-2-parisc-di, scsi-core-modules-4.15.0-2-parisc-di, cdrom-core-modules-4.15.0-2-parisc-di, ata-modules-4.15.0-2-parisc-di +Description: SCSI drivers + This package contains SCSI drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc +Package-Type: udeb + +Package: loop-modules-4.15.0-2-parisc-di +Architecture: hppa +Section: debian-installer +Priority: standard +Provides: loop-modules +Depends: kernel-image-4.15.0-2-parisc-di +Description: Loopback filesystem support + This package contains loopback filesystem support for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc +Package-Type: udeb + +Package: btrfs-modules-4.15.0-2-parisc-di +Architecture: hppa +Section: debian-installer +Priority: optional +Provides: btrfs-modules +Depends: kernel-image-4.15.0-2-parisc-di, crc-modules-4.15.0-2-parisc-di, zlib-modules-4.15.0-2-parisc-di, md-modules-4.15.0-2-parisc-di +Description: BTRFS filesystem support + This package contains the BTRFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc +Package-Type: udeb + +Package: ext4-modules-4.15.0-2-parisc-di +Architecture: hppa +Section: debian-installer +Priority: standard +Provides: ext4-modules, ext2-modules, ext3-modules +Depends: kernel-image-4.15.0-2-parisc-di, crc-modules-4.15.0-2-parisc-di +Description: ext2/ext3/ext4 filesystem support + This package contains the ext4 filesystem module for the kernel, which + also supports ext2 and ext3. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc +Package-Type: udeb + +Package: isofs-modules-4.15.0-2-parisc-di +Architecture: hppa +Section: debian-installer +Priority: standard +Provides: isofs-modules +Depends: kernel-image-4.15.0-2-parisc-di +Description: ISOFS filesystem support + This package contains the ISOFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc +Package-Type: udeb + +Package: jfs-modules-4.15.0-2-parisc-di +Architecture: hppa +Section: debian-installer +Priority: standard +Provides: jfs-modules +Depends: kernel-image-4.15.0-2-parisc-di +Description: JFS filesystem support + This package contains the JFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc +Package-Type: udeb + +Package: xfs-modules-4.15.0-2-parisc-di +Architecture: hppa +Section: debian-installer +Priority: standard +Provides: xfs-modules +Depends: kernel-image-4.15.0-2-parisc-di, crc-modules-4.15.0-2-parisc-di +Description: XFS filesystem support + This package contains the XFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc +Package-Type: udeb + +Package: fat-modules-4.15.0-2-parisc-di +Architecture: hppa +Section: debian-installer +Priority: optional +Provides: fat-modules +Depends: kernel-image-4.15.0-2-parisc-di +Description: FAT filesystem support + This package contains the FAT and VFAT filesystem modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc +Package-Type: udeb + +Package: md-modules-4.15.0-2-parisc-di +Architecture: hppa +Section: debian-installer +Priority: optional +Provides: md-modules +Depends: kernel-image-4.15.0-2-parisc-di, crc-modules-4.15.0-2-parisc-di +Description: RAID and LVM support + This package contains RAID and LVM modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc +Package-Type: udeb + +Package: multipath-modules-4.15.0-2-parisc-di +Architecture: hppa +Section: debian-installer +Priority: optional +Provides: multipath-modules +Depends: kernel-image-4.15.0-2-parisc-di, md-modules-4.15.0-2-parisc-di, scsi-core-modules-4.15.0-2-parisc-di +Description: Multipath support + This package contains DM-Multipath modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc +Package-Type: udeb + +Package: usb-modules-4.15.0-2-parisc-di +Architecture: hppa +Section: debian-installer +Priority: optional +Provides: usb-modules +Depends: kernel-image-4.15.0-2-parisc-di +Description: USB support + This package contains core USB drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc +Package-Type: udeb + +Package: usb-storage-modules-4.15.0-2-parisc-di +Architecture: hppa +Section: debian-installer +Priority: standard +Provides: usb-storage-modules +Depends: kernel-image-4.15.0-2-parisc-di, scsi-modules-4.15.0-2-parisc-di, usb-modules-4.15.0-2-parisc-di +Description: USB storage support + This package contains the USB storage driver for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc +Package-Type: udeb + +Package: input-modules-4.15.0-2-parisc-di +Architecture: hppa +Section: debian-installer +Priority: optional +Provides: input-modules +Depends: kernel-image-4.15.0-2-parisc-di, usb-modules-4.15.0-2-parisc-di +Description: Input devices support + This package contains input device drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc +Package-Type: udeb + +Package: event-modules-4.15.0-2-parisc-di +Architecture: hppa +Section: debian-installer +Priority: optional +Provides: event-modules +Depends: kernel-image-4.15.0-2-parisc-di +Description: Event support + This package contains event drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc +Package-Type: udeb + +Package: mouse-modules-4.15.0-2-parisc-di +Architecture: hppa +Section: debian-installer +Priority: optional +Provides: mouse-modules +Depends: kernel-image-4.15.0-2-parisc-di, event-modules-4.15.0-2-parisc-di, input-modules-4.15.0-2-parisc-di, usb-modules-4.15.0-2-parisc-di +Description: Mouse support + This package contains mouse drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc +Package-Type: udeb + +Package: nic-usb-modules-4.15.0-2-parisc-di +Architecture: hppa +Section: debian-installer +Priority: standard +Provides: nic-usb-modules +Depends: kernel-image-4.15.0-2-parisc-di, nic-shared-modules-4.15.0-2-parisc-di, usb-modules-4.15.0-2-parisc-di, crc-modules-4.15.0-2-parisc-di +Description: USB NIC drivers + This package contains USB network adapter drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc +Package-Type: udeb + +Package: sata-modules-4.15.0-2-parisc-di +Architecture: hppa +Section: debian-installer +Priority: standard +Provides: sata-modules +Depends: kernel-image-4.15.0-2-parisc-di, scsi-core-modules-4.15.0-2-parisc-di, ata-modules-4.15.0-2-parisc-di +Description: SATA drivers + This package contains SATA drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc +Package-Type: udeb + +Package: crc-modules-4.15.0-2-parisc-di +Architecture: hppa +Section: debian-installer +Priority: optional +Provides: crc-modules +Depends: kernel-image-4.15.0-2-parisc-di +Description: CRC modules + This package contains CRC support modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc +Package-Type: udeb + +Package: crypto-modules-4.15.0-2-parisc-di +Architecture: hppa +Section: debian-installer +Priority: optional +Provides: crypto-modules +Depends: kernel-image-4.15.0-2-parisc-di +Description: crypto modules + This package contains crypto modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc +Package-Type: udeb + +Package: crypto-dm-modules-4.15.0-2-parisc-di +Architecture: hppa +Section: debian-installer +Priority: optional +Provides: crypto-dm-modules +Depends: kernel-image-4.15.0-2-parisc-di, md-modules-4.15.0-2-parisc-di +Description: devicemapper crypto module + This package contains the devicemapper crypto (dm-crypt) module. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc +Package-Type: udeb + +Package: ata-modules-4.15.0-2-parisc-di +Architecture: hppa +Section: debian-installer +Priority: optional +Provides: ata-modules +Depends: kernel-image-4.15.0-2-parisc-di, scsi-core-modules-4.15.0-2-parisc-di +Description: ATA disk modules + This package contains core ATA disk modules used by both PATA and SATA + disk drivers. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc +Package-Type: udeb + +Package: nbd-modules-4.15.0-2-parisc-di +Architecture: hppa +Section: debian-installer +Priority: optional +Provides: nbd-modules +Depends: kernel-image-4.15.0-2-parisc-di +Description: Network Block Device modules + This package contains the modules required for support of the Network + Block Device +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc +Package-Type: udeb + +Package: squashfs-modules-4.15.0-2-parisc-di +Architecture: hppa +Section: debian-installer +Priority: optional +Provides: squashfs-modules +Depends: kernel-image-4.15.0-2-parisc-di +Description: squashfs modules + This package contains squashfs modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc +Package-Type: udeb + +Package: virtio-modules-4.15.0-2-parisc-di +Architecture: hppa +Section: debian-installer +Priority: optional +Provides: virtio-modules +Depends: kernel-image-4.15.0-2-parisc-di, scsi-core-modules-4.15.0-2-parisc-di +Description: virtio modules + This package contains virtio modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc +Package-Type: udeb + +Package: zlib-modules-4.15.0-2-parisc-di +Architecture: hppa +Section: debian-installer +Priority: optional +Provides: zlib-modules +Depends: kernel-image-4.15.0-2-parisc-di +Description: zlib modules + This package contains zlib modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc +Package-Type: udeb + +Package: fuse-modules-4.15.0-2-parisc-di +Architecture: hppa +Section: debian-installer +Priority: optional +Provides: fuse-modules +Depends: kernel-image-4.15.0-2-parisc-di +Description: FUSE modules + This package contains the Filesystem in Userspace (FUSE) module. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc +Package-Type: udeb + +Package: kernel-image-4.15.0-2-parisc64-smp-di +Architecture: hppa +Section: debian-installer +Priority: standard +Provides: kernel-image, i2c-modules +Description: Linux kernel image and core modules for the Debian installer + This package contains the kernel image and core modules for the Debian + installer boot images. It does _not_ provide a usable kernel for your + full Debian system. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc64-smp +Package-Type: udeb + +Package: nic-modules-4.15.0-2-parisc64-smp-di +Architecture: hppa +Section: debian-installer +Priority: standard +Provides: nic-modules, nic-extra-modules +Depends: kernel-image-4.15.0-2-parisc64-smp-di, nic-shared-modules-4.15.0-2-parisc64-smp-di, crc-modules-4.15.0-2-parisc64-smp-di +Description: NIC drivers + This package contains Ethernet and some paravirtualised network drivers + for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc64-smp +Package-Type: udeb + +Package: nic-shared-modules-4.15.0-2-parisc64-smp-di +Architecture: hppa +Section: debian-installer +Priority: standard +Provides: nic-shared-modules +Depends: kernel-image-4.15.0-2-parisc64-smp-di +Description: Shared NIC drivers + This package contains NIC drivers needed by combinations of nic-modules, + nic-pcmcia-modules, nic-usb-modules and nic-wireless-modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc64-smp +Package-Type: udeb + +Package: serial-modules-4.15.0-2-parisc64-smp-di +Architecture: hppa +Section: debian-installer +Priority: optional +Provides: serial-modules +Depends: kernel-image-4.15.0-2-parisc64-smp-di +Description: Serial drivers + This package contains serial drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc64-smp +Package-Type: udeb + +Package: usb-serial-modules-4.15.0-2-parisc64-smp-di +Architecture: hppa +Section: debian-installer +Priority: optional +Provides: usb-serial-modules +Depends: kernel-image-4.15.0-2-parisc64-smp-di, usb-modules-4.15.0-2-parisc64-smp-di +Description: USB serial drivers + This package contains USB serial drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc64-smp +Package-Type: udeb + +Package: ppp-modules-4.15.0-2-parisc64-smp-di +Architecture: hppa +Section: debian-installer +Priority: optional +Provides: ppp-modules +Depends: kernel-image-4.15.0-2-parisc64-smp-di, serial-modules-4.15.0-2-parisc64-smp-di, zlib-modules-4.15.0-2-parisc64-smp-di, crc-modules-4.15.0-2-parisc64-smp-di +Description: PPP drivers + This package contains PPP drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc64-smp +Package-Type: udeb + +Package: pata-modules-4.15.0-2-parisc64-smp-di +Architecture: hppa +Section: debian-installer +Priority: standard +Provides: pata-modules +Depends: kernel-image-4.15.0-2-parisc64-smp-di, ata-modules-4.15.0-2-parisc64-smp-di, scsi-core-modules-4.15.0-2-parisc64-smp-di +Description: PATA drivers + This package contains PATA drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc64-smp +Package-Type: udeb + +Package: cdrom-core-modules-4.15.0-2-parisc64-smp-di +Architecture: hppa +Section: debian-installer +Priority: standard +Provides: cdrom-core-modules +Depends: kernel-image-4.15.0-2-parisc64-smp-di, scsi-core-modules-4.15.0-2-parisc64-smp-di, isofs-modules-4.15.0-2-parisc64-smp-di +Description: CDROM support + This package contains core CDROM support for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc64-smp +Package-Type: udeb + +Package: scsi-core-modules-4.15.0-2-parisc64-smp-di +Architecture: hppa +Section: debian-installer +Priority: standard +Provides: scsi-core-modules +Depends: kernel-image-4.15.0-2-parisc64-smp-di +Description: Core SCSI subsystem + This package contains the core SCSI subsystem for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc64-smp +Package-Type: udeb + +Package: scsi-modules-4.15.0-2-parisc64-smp-di +Architecture: hppa +Section: debian-installer +Priority: standard +Provides: scsi-modules +Depends: kernel-image-4.15.0-2-parisc64-smp-di, scsi-core-modules-4.15.0-2-parisc64-smp-di, cdrom-core-modules-4.15.0-2-parisc64-smp-di, ata-modules-4.15.0-2-parisc64-smp-di +Description: SCSI drivers + This package contains SCSI drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc64-smp +Package-Type: udeb + +Package: loop-modules-4.15.0-2-parisc64-smp-di +Architecture: hppa +Section: debian-installer +Priority: standard +Provides: loop-modules +Depends: kernel-image-4.15.0-2-parisc64-smp-di +Description: Loopback filesystem support + This package contains loopback filesystem support for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc64-smp +Package-Type: udeb + +Package: btrfs-modules-4.15.0-2-parisc64-smp-di +Architecture: hppa +Section: debian-installer +Priority: optional +Provides: btrfs-modules +Depends: kernel-image-4.15.0-2-parisc64-smp-di, crc-modules-4.15.0-2-parisc64-smp-di, zlib-modules-4.15.0-2-parisc64-smp-di, md-modules-4.15.0-2-parisc64-smp-di +Description: BTRFS filesystem support + This package contains the BTRFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc64-smp +Package-Type: udeb + +Package: ext4-modules-4.15.0-2-parisc64-smp-di +Architecture: hppa +Section: debian-installer +Priority: standard +Provides: ext4-modules, ext2-modules, ext3-modules +Depends: kernel-image-4.15.0-2-parisc64-smp-di, crc-modules-4.15.0-2-parisc64-smp-di +Description: ext2/ext3/ext4 filesystem support + This package contains the ext4 filesystem module for the kernel, which + also supports ext2 and ext3. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc64-smp +Package-Type: udeb + +Package: isofs-modules-4.15.0-2-parisc64-smp-di +Architecture: hppa +Section: debian-installer +Priority: standard +Provides: isofs-modules +Depends: kernel-image-4.15.0-2-parisc64-smp-di +Description: ISOFS filesystem support + This package contains the ISOFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc64-smp +Package-Type: udeb + +Package: jfs-modules-4.15.0-2-parisc64-smp-di +Architecture: hppa +Section: debian-installer +Priority: standard +Provides: jfs-modules +Depends: kernel-image-4.15.0-2-parisc64-smp-di +Description: JFS filesystem support + This package contains the JFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc64-smp +Package-Type: udeb + +Package: xfs-modules-4.15.0-2-parisc64-smp-di +Architecture: hppa +Section: debian-installer +Priority: standard +Provides: xfs-modules +Depends: kernel-image-4.15.0-2-parisc64-smp-di, crc-modules-4.15.0-2-parisc64-smp-di +Description: XFS filesystem support + This package contains the XFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc64-smp +Package-Type: udeb + +Package: fat-modules-4.15.0-2-parisc64-smp-di +Architecture: hppa +Section: debian-installer +Priority: optional +Provides: fat-modules +Depends: kernel-image-4.15.0-2-parisc64-smp-di +Description: FAT filesystem support + This package contains the FAT and VFAT filesystem modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc64-smp +Package-Type: udeb + +Package: md-modules-4.15.0-2-parisc64-smp-di +Architecture: hppa +Section: debian-installer +Priority: optional +Provides: md-modules +Depends: kernel-image-4.15.0-2-parisc64-smp-di, crc-modules-4.15.0-2-parisc64-smp-di +Description: RAID and LVM support + This package contains RAID and LVM modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc64-smp +Package-Type: udeb + +Package: multipath-modules-4.15.0-2-parisc64-smp-di +Architecture: hppa +Section: debian-installer +Priority: optional +Provides: multipath-modules +Depends: kernel-image-4.15.0-2-parisc64-smp-di, md-modules-4.15.0-2-parisc64-smp-di, scsi-core-modules-4.15.0-2-parisc64-smp-di +Description: Multipath support + This package contains DM-Multipath modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc64-smp +Package-Type: udeb + +Package: usb-modules-4.15.0-2-parisc64-smp-di +Architecture: hppa +Section: debian-installer +Priority: optional +Provides: usb-modules +Depends: kernel-image-4.15.0-2-parisc64-smp-di +Description: USB support + This package contains core USB drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc64-smp +Package-Type: udeb + +Package: usb-storage-modules-4.15.0-2-parisc64-smp-di +Architecture: hppa +Section: debian-installer +Priority: standard +Provides: usb-storage-modules +Depends: kernel-image-4.15.0-2-parisc64-smp-di, scsi-modules-4.15.0-2-parisc64-smp-di, usb-modules-4.15.0-2-parisc64-smp-di +Description: USB storage support + This package contains the USB storage driver for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc64-smp +Package-Type: udeb + +Package: fb-modules-4.15.0-2-parisc64-smp-di +Architecture: hppa +Section: debian-installer +Priority: standard +Provides: fb-modules +Depends: kernel-image-4.15.0-2-parisc64-smp-di +Description: Frame buffer support + This package contains Frame buffer drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc64-smp +Package-Type: udeb + +Package: input-modules-4.15.0-2-parisc64-smp-di +Architecture: hppa +Section: debian-installer +Priority: optional +Provides: input-modules +Depends: kernel-image-4.15.0-2-parisc64-smp-di, usb-modules-4.15.0-2-parisc64-smp-di +Description: Input devices support + This package contains input device drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc64-smp +Package-Type: udeb + +Package: event-modules-4.15.0-2-parisc64-smp-di +Architecture: hppa +Section: debian-installer +Priority: optional +Provides: event-modules +Depends: kernel-image-4.15.0-2-parisc64-smp-di +Description: Event support + This package contains event drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc64-smp +Package-Type: udeb + +Package: mouse-modules-4.15.0-2-parisc64-smp-di +Architecture: hppa +Section: debian-installer +Priority: optional +Provides: mouse-modules +Depends: kernel-image-4.15.0-2-parisc64-smp-di, event-modules-4.15.0-2-parisc64-smp-di, input-modules-4.15.0-2-parisc64-smp-di, usb-modules-4.15.0-2-parisc64-smp-di +Description: Mouse support + This package contains mouse drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc64-smp +Package-Type: udeb + +Package: nic-usb-modules-4.15.0-2-parisc64-smp-di +Architecture: hppa +Section: debian-installer +Priority: standard +Provides: nic-usb-modules +Depends: kernel-image-4.15.0-2-parisc64-smp-di, nic-shared-modules-4.15.0-2-parisc64-smp-di, usb-modules-4.15.0-2-parisc64-smp-di, crc-modules-4.15.0-2-parisc64-smp-di +Description: USB NIC drivers + This package contains USB network adapter drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc64-smp +Package-Type: udeb + +Package: sata-modules-4.15.0-2-parisc64-smp-di +Architecture: hppa +Section: debian-installer +Priority: standard +Provides: sata-modules +Depends: kernel-image-4.15.0-2-parisc64-smp-di, scsi-core-modules-4.15.0-2-parisc64-smp-di, ata-modules-4.15.0-2-parisc64-smp-di +Description: SATA drivers + This package contains SATA drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc64-smp +Package-Type: udeb + +Package: crc-modules-4.15.0-2-parisc64-smp-di +Architecture: hppa +Section: debian-installer +Priority: optional +Provides: crc-modules +Depends: kernel-image-4.15.0-2-parisc64-smp-di +Description: CRC modules + This package contains CRC support modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc64-smp +Package-Type: udeb + +Package: crypto-modules-4.15.0-2-parisc64-smp-di +Architecture: hppa +Section: debian-installer +Priority: optional +Provides: crypto-modules +Depends: kernel-image-4.15.0-2-parisc64-smp-di +Description: crypto modules + This package contains crypto modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc64-smp +Package-Type: udeb + +Package: crypto-dm-modules-4.15.0-2-parisc64-smp-di +Architecture: hppa +Section: debian-installer +Priority: optional +Provides: crypto-dm-modules +Depends: kernel-image-4.15.0-2-parisc64-smp-di, md-modules-4.15.0-2-parisc64-smp-di +Description: devicemapper crypto module + This package contains the devicemapper crypto (dm-crypt) module. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc64-smp +Package-Type: udeb + +Package: ata-modules-4.15.0-2-parisc64-smp-di +Architecture: hppa +Section: debian-installer +Priority: optional +Provides: ata-modules +Depends: kernel-image-4.15.0-2-parisc64-smp-di, scsi-core-modules-4.15.0-2-parisc64-smp-di +Description: ATA disk modules + This package contains core ATA disk modules used by both PATA and SATA + disk drivers. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc64-smp +Package-Type: udeb + +Package: nbd-modules-4.15.0-2-parisc64-smp-di +Architecture: hppa +Section: debian-installer +Priority: optional +Provides: nbd-modules +Depends: kernel-image-4.15.0-2-parisc64-smp-di +Description: Network Block Device modules + This package contains the modules required for support of the Network + Block Device +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc64-smp +Package-Type: udeb + +Package: squashfs-modules-4.15.0-2-parisc64-smp-di +Architecture: hppa +Section: debian-installer +Priority: optional +Provides: squashfs-modules +Depends: kernel-image-4.15.0-2-parisc64-smp-di +Description: squashfs modules + This package contains squashfs modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc64-smp +Package-Type: udeb + +Package: virtio-modules-4.15.0-2-parisc64-smp-di +Architecture: hppa +Section: debian-installer +Priority: optional +Provides: virtio-modules +Depends: kernel-image-4.15.0-2-parisc64-smp-di, scsi-core-modules-4.15.0-2-parisc64-smp-di +Description: virtio modules + This package contains virtio modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc64-smp +Package-Type: udeb + +Package: zlib-modules-4.15.0-2-parisc64-smp-di +Architecture: hppa +Section: debian-installer +Priority: optional +Provides: zlib-modules +Depends: kernel-image-4.15.0-2-parisc64-smp-di +Description: zlib modules + This package contains zlib modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc64-smp +Package-Type: udeb + +Package: fuse-modules-4.15.0-2-parisc64-smp-di +Architecture: hppa +Section: debian-installer +Priority: optional +Provides: fuse-modules +Depends: kernel-image-4.15.0-2-parisc64-smp-di +Description: FUSE modules + This package contains the Filesystem in Userspace (FUSE) module. +Build-Profiles: +Kernel-Version: 4.15.0-2-parisc64-smp +Package-Type: udeb + +Package: linux-image-4.15.0-2-parisc +Architecture: hppa +Depends: kmod, linux-base (>= 4.3~), ${misc:Depends}, initramfs-tools (>= 0.120+deb8u2) [hppa] | linux-initramfs-tool [hppa] +Recommends: firmware-linux-free, ${kernel:Recommends}, apparmor [hppa] +Suggests: linux-doc-4.15, debian-kernel-handbook, palo [hppa] +Breaks: initramfs-tools (<< 0.120+deb8u2) +Description: Linux 4.15 for 32-bit PA-RISC + The Linux kernel 4.15 and modules for use on HP PA-RISC 32-bit systems + with max 4 GB RAM. +Build-Profiles: + +Package: linux-headers-4.15.0-2-parisc +Architecture: hppa +Depends: linux-headers-4.15.0-2-common (= ${source:Version}), linux-kbuild-4.15, ${misc:Depends}, gcc-7, binutils-hppa64-linux-gnu, gcc-7-hppa64-linux-gnu +Description: Header files for Linux 4.15.0-2-parisc + This package provides the architecture-specific kernel header files for + Linux kernel 4.15.0-2-parisc, generally used for building out-of-tree + kernel modules. These files are going to be installed into + /usr/src/linux-headers-4.15.0-2-parisc, and can be used for building + modules that load into the kernel provided by the + linux-image-4.15.0-2-parisc package. +Build-Profiles: + +Package: linux-image-4.15.0-2-parisc-dbg +Architecture: hppa +Section: debug +Priority: optional +Depends: ${misc:Depends} +Description: Debug symbols for linux-image-4.15.0-2-parisc + This package provides the detached debug symbols for the Linux kernel and + modules in linux-image-4.15.0-2-parisc. +Build-Profiles: + +Package: linux-image-4.15.0-2-parisc64-smp +Architecture: hppa +Depends: kmod, linux-base (>= 4.3~), ${misc:Depends}, initramfs-tools (>= 0.120+deb8u2) [hppa] | linux-initramfs-tool [hppa] +Recommends: firmware-linux-free, ${kernel:Recommends}, apparmor [hppa] +Suggests: linux-doc-4.15, debian-kernel-handbook, palo [hppa] +Breaks: initramfs-tools (<< 0.120+deb8u2) +Description: Linux 4.15 for multiprocessor 64-bit PA-RISC + The Linux kernel 4.15 and modules for use on HP PA-RISC 64-bit SMP systems + with support for more than 4 GB RAM. +Build-Profiles: + +Package: linux-headers-4.15.0-2-parisc64-smp +Architecture: hppa +Depends: linux-headers-4.15.0-2-common (= ${source:Version}), linux-kbuild-4.15, ${misc:Depends}, gcc-7, binutils-hppa64-linux-gnu, gcc-7-hppa64-linux-gnu +Description: Header files for Linux 4.15.0-2-parisc64-smp + This package provides the architecture-specific kernel header files for + Linux kernel 4.15.0-2-parisc64-smp, generally used for building + out-of-tree kernel modules. These files are going to be installed into + /usr/src/linux-headers-4.15.0-2-parisc64-smp, and can be used for building + modules that load into the kernel provided by the + linux-image-4.15.0-2-parisc64-smp package. +Build-Profiles: + +Package: linux-image-4.15.0-2-parisc64-smp-dbg +Architecture: hppa +Section: debug +Priority: optional +Depends: ${misc:Depends} +Description: Debug symbols for linux-image-4.15.0-2-parisc64-smp + This package provides the detached debug symbols for the Linux kernel and + modules in linux-image-4.15.0-2-parisc64-smp. +Build-Profiles: + +Package: linux-headers-4.15.0-2-all-i386 +Architecture: i386 +Depends: ${misc:Depends}, linux-headers-4.15.0-2-686 (= ${binary:Version}), linux-headers-4.15.0-2-686-pae (= ${binary:Version}) +Description: All header files for Linux 4.15 (meta-package) + This package depends against all architecture-specific kernel header files + for Linux kernel version 4.15, generally used for building out-of-tree + kernel modules. +Build-Profiles: + +Package: kernel-image-4.15.0-2-686-di +Architecture: i386 +Section: debian-installer +Priority: standard +Provides: kernel-image, rtc-modules, zlib-modules +Description: Linux kernel image and core modules for the Debian installer + This package contains the kernel image and core modules for the Debian + installer boot images. It does _not_ provide a usable kernel for your + full Debian system. +Build-Profiles: +Kernel-Version: 4.15.0-2-686 +Package-Type: udeb + +Package: nic-modules-4.15.0-2-686-di +Architecture: i386 +Section: debian-installer +Priority: standard +Provides: nic-modules, nic-extra-modules +Depends: kernel-image-4.15.0-2-686-di, nic-shared-modules-4.15.0-2-686-di, i2c-modules-4.15.0-2-686-di, crc-modules-4.15.0-2-686-di +Description: NIC drivers + This package contains Ethernet and some paravirtualised network drivers + for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-686 +Package-Type: udeb + +Package: nic-wireless-modules-4.15.0-2-686-di +Architecture: i386 +Section: debian-installer +Priority: standard +Provides: nic-wireless-modules +Depends: kernel-image-4.15.0-2-686-di, nic-shared-modules-4.15.0-2-686-di, usb-modules-4.15.0-2-686-di, mmc-modules-4.15.0-2-686-di, pcmcia-modules-4.15.0-2-686-di, crc-modules-4.15.0-2-686-di +Description: Wireless NIC drivers + This package contains wireless NIC drivers for the kernel. Includes + crypto modules only needed for wireless (WEP, WPA). +Build-Profiles: +Kernel-Version: 4.15.0-2-686 +Package-Type: udeb + +Package: nic-shared-modules-4.15.0-2-686-di +Architecture: i386 +Section: debian-installer +Priority: standard +Provides: nic-shared-modules +Depends: kernel-image-4.15.0-2-686-di +Description: Shared NIC drivers + This package contains NIC drivers needed by combinations of nic-modules, + nic-pcmcia-modules, nic-usb-modules and nic-wireless-modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-686 +Package-Type: udeb + +Package: serial-modules-4.15.0-2-686-di +Architecture: i386 +Section: debian-installer +Priority: optional +Provides: serial-modules +Depends: kernel-image-4.15.0-2-686-di, pcmcia-modules-4.15.0-2-686-di +Description: Serial drivers + This package contains serial drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-686 +Package-Type: udeb + +Package: usb-serial-modules-4.15.0-2-686-di +Architecture: i386 +Section: debian-installer +Priority: optional +Provides: usb-serial-modules +Depends: kernel-image-4.15.0-2-686-di, usb-modules-4.15.0-2-686-di +Description: USB serial drivers + This package contains USB serial drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-686 +Package-Type: udeb + +Package: ppp-modules-4.15.0-2-686-di +Architecture: i386 +Section: debian-installer +Priority: optional +Provides: ppp-modules +Depends: kernel-image-4.15.0-2-686-di, serial-modules-4.15.0-2-686-di, crc-modules-4.15.0-2-686-di +Description: PPP drivers + This package contains PPP drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-686 +Package-Type: udeb + +Package: pata-modules-4.15.0-2-686-di +Architecture: i386 +Section: debian-installer +Priority: standard +Provides: pata-modules +Depends: kernel-image-4.15.0-2-686-di, ata-modules-4.15.0-2-686-di +Description: PATA drivers + This package contains PATA drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-686 +Package-Type: udeb + +Package: cdrom-core-modules-4.15.0-2-686-di +Architecture: i386 +Section: debian-installer +Priority: standard +Provides: cdrom-core-modules +Depends: kernel-image-4.15.0-2-686-di, scsi-core-modules-4.15.0-2-686-di, isofs-modules-4.15.0-2-686-di +Description: CDROM support + This package contains core CDROM support for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-686 +Package-Type: udeb + +Package: firewire-core-modules-4.15.0-2-686-di +Architecture: i386 +Section: debian-installer +Priority: standard +Provides: firewire-core-modules +Depends: kernel-image-4.15.0-2-686-di, scsi-core-modules-4.15.0-2-686-di, crc-modules-4.15.0-2-686-di +Description: Core FireWire drivers + This package contains core FireWire drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-686 +Package-Type: udeb + +Package: scsi-core-modules-4.15.0-2-686-di +Architecture: i386 +Section: debian-installer +Priority: standard +Provides: scsi-core-modules +Depends: kernel-image-4.15.0-2-686-di +Description: Core SCSI subsystem + This package contains the core SCSI subsystem for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-686 +Package-Type: udeb + +Package: scsi-modules-4.15.0-2-686-di +Architecture: i386 +Section: debian-installer +Priority: standard +Provides: scsi-modules +Depends: kernel-image-4.15.0-2-686-di, scsi-core-modules-4.15.0-2-686-di, cdrom-core-modules-4.15.0-2-686-di, ata-modules-4.15.0-2-686-di +Description: SCSI drivers + This package contains SCSI drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-686 +Package-Type: udeb + +Package: loop-modules-4.15.0-2-686-di +Architecture: i386 +Section: debian-installer +Priority: standard +Provides: loop-modules +Depends: kernel-image-4.15.0-2-686-di +Description: Loopback filesystem support + This package contains loopback filesystem support for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-686 +Package-Type: udeb + +Package: btrfs-modules-4.15.0-2-686-di +Architecture: i386 +Section: debian-installer +Priority: optional +Provides: btrfs-modules +Depends: kernel-image-4.15.0-2-686-di, crc-modules-4.15.0-2-686-di, md-modules-4.15.0-2-686-di +Description: BTRFS filesystem support + This package contains the BTRFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-686 +Package-Type: udeb + +Package: ext4-modules-4.15.0-2-686-di +Architecture: i386 +Section: debian-installer +Priority: standard +Provides: ext4-modules, ext2-modules, ext3-modules +Depends: kernel-image-4.15.0-2-686-di, crc-modules-4.15.0-2-686-di +Description: ext2/ext3/ext4 filesystem support + This package contains the ext4 filesystem module for the kernel, which + also supports ext2 and ext3. +Build-Profiles: +Kernel-Version: 4.15.0-2-686 +Package-Type: udeb + +Package: isofs-modules-4.15.0-2-686-di +Architecture: i386 +Section: debian-installer +Priority: standard +Provides: isofs-modules +Depends: kernel-image-4.15.0-2-686-di +Description: ISOFS filesystem support + This package contains the ISOFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-686 +Package-Type: udeb + +Package: jfs-modules-4.15.0-2-686-di +Architecture: i386 +Section: debian-installer +Priority: standard +Provides: jfs-modules +Depends: kernel-image-4.15.0-2-686-di +Description: JFS filesystem support + This package contains the JFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-686 +Package-Type: udeb + +Package: ntfs-modules-4.15.0-2-686-di +Architecture: i386 +Section: debian-installer +Priority: optional +Provides: ntfs-modules +Depends: kernel-image-4.15.0-2-686-di +Description: NTFS filesystem support + This package contains the NTFS file system module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-686 +Package-Type: udeb + +Package: xfs-modules-4.15.0-2-686-di +Architecture: i386 +Section: debian-installer +Priority: standard +Provides: xfs-modules +Depends: kernel-image-4.15.0-2-686-di, crc-modules-4.15.0-2-686-di +Description: XFS filesystem support + This package contains the XFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-686 +Package-Type: udeb + +Package: fat-modules-4.15.0-2-686-di +Architecture: i386 +Section: debian-installer +Priority: standard +Provides: fat-modules +Depends: kernel-image-4.15.0-2-686-di +Description: FAT filesystem support + This package contains the FAT and VFAT filesystem modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-686 +Package-Type: udeb + +Package: md-modules-4.15.0-2-686-di +Architecture: i386 +Section: debian-installer +Priority: optional +Provides: md-modules +Depends: kernel-image-4.15.0-2-686-di, crc-modules-4.15.0-2-686-di +Description: RAID and LVM support + This package contains RAID and LVM modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-686 +Package-Type: udeb + +Package: multipath-modules-4.15.0-2-686-di +Architecture: i386 +Section: debian-installer +Priority: optional +Provides: multipath-modules +Depends: kernel-image-4.15.0-2-686-di, md-modules-4.15.0-2-686-di, scsi-core-modules-4.15.0-2-686-di +Description: Multipath support + This package contains DM-Multipath modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-686 +Package-Type: udeb + +Package: usb-modules-4.15.0-2-686-di +Architecture: i386 +Section: debian-installer +Priority: optional +Provides: usb-modules +Depends: kernel-image-4.15.0-2-686-di +Description: USB support + This package contains core USB drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-686 +Package-Type: udeb + +Package: usb-storage-modules-4.15.0-2-686-di +Architecture: i386 +Section: debian-installer +Priority: standard +Provides: usb-storage-modules +Depends: kernel-image-4.15.0-2-686-di, scsi-core-modules-4.15.0-2-686-di, usb-modules-4.15.0-2-686-di +Description: USB storage support + This package contains the USB storage driver for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-686 +Package-Type: udeb + +Package: pcmcia-storage-modules-4.15.0-2-686-di +Architecture: i386 +Section: debian-installer +Priority: standard +Provides: pcmcia-storage-modules +Depends: kernel-image-4.15.0-2-686-di, cdrom-core-modules-4.15.0-2-686-di, pcmcia-modules-4.15.0-2-686-di, ata-modules-4.15.0-2-686-di +Description: PCMCIA storage drivers + This package contains PCMCIA storage drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-686 +Package-Type: udeb + +Package: fb-modules-4.15.0-2-686-di +Architecture: i386 +Section: debian-installer +Priority: optional +Provides: fb-modules +Depends: kernel-image-4.15.0-2-686-di, i2c-modules-4.15.0-2-686-di +Description: Frame buffer support + This package contains Frame buffer drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-686 +Package-Type: udeb + +Package: input-modules-4.15.0-2-686-di +Architecture: i386 +Section: debian-installer +Priority: optional +Provides: input-modules +Depends: kernel-image-4.15.0-2-686-di, usb-modules-4.15.0-2-686-di, i2c-modules-4.15.0-2-686-di +Description: Input devices support + This package contains input device drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-686 +Package-Type: udeb + +Package: event-modules-4.15.0-2-686-di +Architecture: i386 +Section: debian-installer +Priority: optional +Provides: event-modules +Depends: kernel-image-4.15.0-2-686-di +Description: Event support + This package contains event drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-686 +Package-Type: udeb + +Package: mouse-modules-4.15.0-2-686-di +Architecture: i386 +Section: debian-installer +Priority: optional +Provides: mouse-modules +Depends: kernel-image-4.15.0-2-686-di, event-modules-4.15.0-2-686-di, input-modules-4.15.0-2-686-di, usb-modules-4.15.0-2-686-di +Description: Mouse support + This package contains mouse drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-686 +Package-Type: udeb + +Package: nic-pcmcia-modules-4.15.0-2-686-di +Architecture: i386 +Section: debian-installer +Priority: standard +Provides: nic-pcmcia-modules +Depends: kernel-image-4.15.0-2-686-di, nic-shared-modules-4.15.0-2-686-di, nic-wireless-modules-4.15.0-2-686-di, pcmcia-modules-4.15.0-2-686-di, mmc-core-modules-4.15.0-2-686-di +Description: Common PCMCIA NIC drivers + This package contains common PCMCIA NIC drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-686 +Package-Type: udeb + +Package: pcmcia-modules-4.15.0-2-686-di +Architecture: i386 +Section: debian-installer +Priority: standard +Provides: pcmcia-modules +Depends: kernel-image-4.15.0-2-686-di +Description: Common PCMCIA drivers + This package contains common PCMCIA drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-686 +Package-Type: udeb + +Package: nic-usb-modules-4.15.0-2-686-di +Architecture: i386 +Section: debian-installer +Priority: standard +Provides: nic-usb-modules +Depends: kernel-image-4.15.0-2-686-di, nic-shared-modules-4.15.0-2-686-di, nic-wireless-modules-4.15.0-2-686-di, usb-modules-4.15.0-2-686-di, crc-modules-4.15.0-2-686-di +Description: USB NIC drivers + This package contains USB network adapter drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-686 +Package-Type: udeb + +Package: sata-modules-4.15.0-2-686-di +Architecture: i386 +Section: debian-installer +Priority: standard +Provides: sata-modules +Depends: kernel-image-4.15.0-2-686-di, scsi-core-modules-4.15.0-2-686-di, ata-modules-4.15.0-2-686-di +Description: SATA drivers + This package contains SATA drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-686 +Package-Type: udeb + +Package: acpi-modules-4.15.0-2-686-di +Architecture: i386 +Section: debian-installer +Priority: optional +Provides: acpi-modules +Depends: kernel-image-4.15.0-2-686-di +Description: ACPI support modules + This package contains kernel modules for ACPI. +Build-Profiles: +Kernel-Version: 4.15.0-2-686 +Package-Type: udeb + +Package: i2c-modules-4.15.0-2-686-di +Architecture: i386 +Section: debian-installer +Priority: optional +Provides: i2c-modules +Depends: kernel-image-4.15.0-2-686-di +Description: i2c support modules + This package contains basic i2c support modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-686 +Package-Type: udeb + +Package: crc-modules-4.15.0-2-686-di +Architecture: i386 +Section: debian-installer +Priority: optional +Provides: crc-modules +Depends: kernel-image-4.15.0-2-686-di +Description: CRC modules + This package contains CRC support modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-686 +Package-Type: udeb + +Package: crypto-modules-4.15.0-2-686-di +Architecture: i386 +Section: debian-installer +Priority: optional +Provides: crypto-modules +Depends: kernel-image-4.15.0-2-686-di +Description: crypto modules + This package contains crypto modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-686 +Package-Type: udeb + +Package: crypto-dm-modules-4.15.0-2-686-di +Architecture: i386 +Section: debian-installer +Priority: optional +Provides: crypto-dm-modules +Depends: kernel-image-4.15.0-2-686-di, md-modules-4.15.0-2-686-di +Description: devicemapper crypto module + This package contains the devicemapper crypto (dm-crypt) module. +Build-Profiles: +Kernel-Version: 4.15.0-2-686 +Package-Type: udeb + +Package: efi-modules-4.15.0-2-686-di +Architecture: i386 +Section: debian-installer +Priority: optional +Provides: efi-modules +Depends: kernel-image-4.15.0-2-686-di +Description: EFI modules + This package contains EFI modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-686 +Package-Type: udeb + +Package: ata-modules-4.15.0-2-686-di +Architecture: i386 +Section: debian-installer +Priority: optional +Provides: ata-modules +Depends: kernel-image-4.15.0-2-686-di, scsi-core-modules-4.15.0-2-686-di +Description: ATA disk modules + This package contains core ATA disk modules used by both PATA and SATA + disk drivers. +Build-Profiles: +Kernel-Version: 4.15.0-2-686 +Package-Type: udeb + +Package: mmc-core-modules-4.15.0-2-686-di +Architecture: i386 +Section: debian-installer +Priority: optional +Provides: mmc-core-modules +Depends: kernel-image-4.15.0-2-686-di +Description: MMC/SD/SDIO core modules + This package contains core modules for MMC/SD/SDIO support. +Build-Profiles: +Kernel-Version: 4.15.0-2-686 +Package-Type: udeb + +Package: mmc-modules-4.15.0-2-686-di +Architecture: i386 +Section: debian-installer +Priority: optional +Provides: mmc-modules +Depends: kernel-image-4.15.0-2-686-di, mmc-core-modules-4.15.0-2-686-di, usb-modules-4.15.0-2-686-di, crc-modules-4.15.0-2-686-di +Description: MMC/SD card modules + This package contains modules needed to support MMC (multimedia) and SD + cards. +Build-Profiles: +Kernel-Version: 4.15.0-2-686 +Package-Type: udeb + +Package: nbd-modules-4.15.0-2-686-di +Architecture: i386 +Section: debian-installer +Priority: optional +Provides: nbd-modules +Depends: kernel-image-4.15.0-2-686-di +Description: Network Block Device modules + This package contains the modules required for support of the Network + Block Device +Build-Profiles: +Kernel-Version: 4.15.0-2-686 +Package-Type: udeb + +Package: squashfs-modules-4.15.0-2-686-di +Architecture: i386 +Section: debian-installer +Priority: optional +Provides: squashfs-modules +Depends: kernel-image-4.15.0-2-686-di +Description: squashfs modules + This package contains squashfs modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-686 +Package-Type: udeb + +Package: speakup-modules-4.15.0-2-686-di +Architecture: i386 +Section: debian-installer +Priority: optional +Provides: speakup-modules +Depends: kernel-image-4.15.0-2-686-di +Description: speakup modules + This package contains speakup modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-686 +Package-Type: udeb + +Package: virtio-modules-4.15.0-2-686-di +Architecture: i386 +Section: debian-installer +Priority: optional +Provides: virtio-modules +Depends: kernel-image-4.15.0-2-686-di, scsi-core-modules-4.15.0-2-686-di +Description: virtio modules + This package contains virtio modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-686 +Package-Type: udeb + +Package: uinput-modules-4.15.0-2-686-di +Architecture: i386 +Section: debian-installer +Priority: optional +Provides: uinput-modules +Depends: kernel-image-4.15.0-2-686-di +Description: uinput support + This package contains the uinput module. +Build-Profiles: +Kernel-Version: 4.15.0-2-686 +Package-Type: udeb + +Package: sound-modules-4.15.0-2-686-di +Architecture: i386 +Section: debian-installer +Priority: optional +Provides: sound-modules +Depends: kernel-image-4.15.0-2-686-di, i2c-modules-4.15.0-2-686-di, usb-modules-4.15.0-2-686-di, pcmcia-modules-4.15.0-2-686-di, firewire-core-modules-4.15.0-2-686-di, crc-modules-4.15.0-2-686-di +Description: sound support + This package contains sound modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-686 +Package-Type: udeb + +Package: hyperv-modules-4.15.0-2-686-di +Architecture: i386 +Section: debian-installer +Priority: optional +Provides: hyperv-modules +Depends: kernel-image-4.15.0-2-686-di, input-modules-4.15.0-2-686-di, scsi-core-modules-4.15.0-2-686-di, nic-shared-modules-4.15.0-2-686-di +Description: Hyper-V modules + This package contains Hyper-V paravirtualised drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-686 +Package-Type: udeb + +Package: udf-modules-4.15.0-2-686-di +Architecture: i386 +Section: debian-installer +Priority: optional +Provides: udf-modules +Depends: kernel-image-4.15.0-2-686-di, crc-modules-4.15.0-2-686-di +Description: UDF modules + This package contains the UDF filesystem module. +Build-Profiles: +Kernel-Version: 4.15.0-2-686 +Package-Type: udeb + +Package: fuse-modules-4.15.0-2-686-di +Architecture: i386 +Section: debian-installer +Priority: optional +Provides: fuse-modules +Depends: kernel-image-4.15.0-2-686-di +Description: FUSE modules + This package contains the Filesystem in Userspace (FUSE) module. +Build-Profiles: +Kernel-Version: 4.15.0-2-686 +Package-Type: udeb + +Package: kernel-image-4.15.0-2-686-pae-di +Architecture: i386 +Section: debian-installer +Priority: standard +Provides: kernel-image, rtc-modules, zlib-modules +Description: Linux kernel image and core modules for the Debian installer + This package contains the kernel image and core modules for the Debian + installer boot images. It does _not_ provide a usable kernel for your + full Debian system. +Build-Profiles: +Kernel-Version: 4.15.0-2-686-pae +Package-Type: udeb + +Package: nic-modules-4.15.0-2-686-pae-di +Architecture: i386 +Section: debian-installer +Priority: standard +Provides: nic-modules, nic-extra-modules +Depends: kernel-image-4.15.0-2-686-pae-di, nic-shared-modules-4.15.0-2-686-pae-di, i2c-modules-4.15.0-2-686-pae-di, crc-modules-4.15.0-2-686-pae-di +Description: NIC drivers + This package contains Ethernet and some paravirtualised network drivers + for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-686-pae +Package-Type: udeb + +Package: nic-wireless-modules-4.15.0-2-686-pae-di +Architecture: i386 +Section: debian-installer +Priority: standard +Provides: nic-wireless-modules +Depends: kernel-image-4.15.0-2-686-pae-di, nic-shared-modules-4.15.0-2-686-pae-di, usb-modules-4.15.0-2-686-pae-di, mmc-modules-4.15.0-2-686-pae-di, pcmcia-modules-4.15.0-2-686-pae-di, crc-modules-4.15.0-2-686-pae-di +Description: Wireless NIC drivers + This package contains wireless NIC drivers for the kernel. Includes + crypto modules only needed for wireless (WEP, WPA). +Build-Profiles: +Kernel-Version: 4.15.0-2-686-pae +Package-Type: udeb + +Package: nic-shared-modules-4.15.0-2-686-pae-di +Architecture: i386 +Section: debian-installer +Priority: standard +Provides: nic-shared-modules +Depends: kernel-image-4.15.0-2-686-pae-di +Description: Shared NIC drivers + This package contains NIC drivers needed by combinations of nic-modules, + nic-pcmcia-modules, nic-usb-modules and nic-wireless-modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-686-pae +Package-Type: udeb + +Package: serial-modules-4.15.0-2-686-pae-di +Architecture: i386 +Section: debian-installer +Priority: optional +Provides: serial-modules +Depends: kernel-image-4.15.0-2-686-pae-di, pcmcia-modules-4.15.0-2-686-pae-di +Description: Serial drivers + This package contains serial drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-686-pae +Package-Type: udeb + +Package: usb-serial-modules-4.15.0-2-686-pae-di +Architecture: i386 +Section: debian-installer +Priority: optional +Provides: usb-serial-modules +Depends: kernel-image-4.15.0-2-686-pae-di, usb-modules-4.15.0-2-686-pae-di +Description: USB serial drivers + This package contains USB serial drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-686-pae +Package-Type: udeb + +Package: ppp-modules-4.15.0-2-686-pae-di +Architecture: i386 +Section: debian-installer +Priority: optional +Provides: ppp-modules +Depends: kernel-image-4.15.0-2-686-pae-di, serial-modules-4.15.0-2-686-pae-di, crc-modules-4.15.0-2-686-pae-di +Description: PPP drivers + This package contains PPP drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-686-pae +Package-Type: udeb + +Package: pata-modules-4.15.0-2-686-pae-di +Architecture: i386 +Section: debian-installer +Priority: standard +Provides: pata-modules +Depends: kernel-image-4.15.0-2-686-pae-di, ata-modules-4.15.0-2-686-pae-di +Description: PATA drivers + This package contains PATA drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-686-pae +Package-Type: udeb + +Package: cdrom-core-modules-4.15.0-2-686-pae-di +Architecture: i386 +Section: debian-installer +Priority: standard +Provides: cdrom-core-modules +Depends: kernel-image-4.15.0-2-686-pae-di, scsi-core-modules-4.15.0-2-686-pae-di, isofs-modules-4.15.0-2-686-pae-di +Description: CDROM support + This package contains core CDROM support for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-686-pae +Package-Type: udeb + +Package: firewire-core-modules-4.15.0-2-686-pae-di +Architecture: i386 +Section: debian-installer +Priority: standard +Provides: firewire-core-modules +Depends: kernel-image-4.15.0-2-686-pae-di, scsi-core-modules-4.15.0-2-686-pae-di, crc-modules-4.15.0-2-686-pae-di +Description: Core FireWire drivers + This package contains core FireWire drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-686-pae +Package-Type: udeb + +Package: scsi-core-modules-4.15.0-2-686-pae-di +Architecture: i386 +Section: debian-installer +Priority: standard +Provides: scsi-core-modules +Depends: kernel-image-4.15.0-2-686-pae-di +Description: Core SCSI subsystem + This package contains the core SCSI subsystem for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-686-pae +Package-Type: udeb + +Package: scsi-modules-4.15.0-2-686-pae-di +Architecture: i386 +Section: debian-installer +Priority: standard +Provides: scsi-modules +Depends: kernel-image-4.15.0-2-686-pae-di, scsi-core-modules-4.15.0-2-686-pae-di, cdrom-core-modules-4.15.0-2-686-pae-di, ata-modules-4.15.0-2-686-pae-di +Description: SCSI drivers + This package contains SCSI drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-686-pae +Package-Type: udeb + +Package: loop-modules-4.15.0-2-686-pae-di +Architecture: i386 +Section: debian-installer +Priority: standard +Provides: loop-modules +Depends: kernel-image-4.15.0-2-686-pae-di +Description: Loopback filesystem support + This package contains loopback filesystem support for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-686-pae +Package-Type: udeb + +Package: btrfs-modules-4.15.0-2-686-pae-di +Architecture: i386 +Section: debian-installer +Priority: optional +Provides: btrfs-modules +Depends: kernel-image-4.15.0-2-686-pae-di, crc-modules-4.15.0-2-686-pae-di, md-modules-4.15.0-2-686-pae-di +Description: BTRFS filesystem support + This package contains the BTRFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-686-pae +Package-Type: udeb + +Package: ext4-modules-4.15.0-2-686-pae-di +Architecture: i386 +Section: debian-installer +Priority: standard +Provides: ext4-modules, ext2-modules, ext3-modules +Depends: kernel-image-4.15.0-2-686-pae-di, crc-modules-4.15.0-2-686-pae-di +Description: ext2/ext3/ext4 filesystem support + This package contains the ext4 filesystem module for the kernel, which + also supports ext2 and ext3. +Build-Profiles: +Kernel-Version: 4.15.0-2-686-pae +Package-Type: udeb + +Package: isofs-modules-4.15.0-2-686-pae-di +Architecture: i386 +Section: debian-installer +Priority: standard +Provides: isofs-modules +Depends: kernel-image-4.15.0-2-686-pae-di +Description: ISOFS filesystem support + This package contains the ISOFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-686-pae +Package-Type: udeb + +Package: jfs-modules-4.15.0-2-686-pae-di +Architecture: i386 +Section: debian-installer +Priority: standard +Provides: jfs-modules +Depends: kernel-image-4.15.0-2-686-pae-di +Description: JFS filesystem support + This package contains the JFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-686-pae +Package-Type: udeb + +Package: ntfs-modules-4.15.0-2-686-pae-di +Architecture: i386 +Section: debian-installer +Priority: optional +Provides: ntfs-modules +Depends: kernel-image-4.15.0-2-686-pae-di +Description: NTFS filesystem support + This package contains the NTFS file system module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-686-pae +Package-Type: udeb + +Package: xfs-modules-4.15.0-2-686-pae-di +Architecture: i386 +Section: debian-installer +Priority: standard +Provides: xfs-modules +Depends: kernel-image-4.15.0-2-686-pae-di, crc-modules-4.15.0-2-686-pae-di +Description: XFS filesystem support + This package contains the XFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-686-pae +Package-Type: udeb + +Package: fat-modules-4.15.0-2-686-pae-di +Architecture: i386 +Section: debian-installer +Priority: standard +Provides: fat-modules +Depends: kernel-image-4.15.0-2-686-pae-di +Description: FAT filesystem support + This package contains the FAT and VFAT filesystem modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-686-pae +Package-Type: udeb + +Package: md-modules-4.15.0-2-686-pae-di +Architecture: i386 +Section: debian-installer +Priority: optional +Provides: md-modules +Depends: kernel-image-4.15.0-2-686-pae-di, crc-modules-4.15.0-2-686-pae-di +Description: RAID and LVM support + This package contains RAID and LVM modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-686-pae +Package-Type: udeb + +Package: multipath-modules-4.15.0-2-686-pae-di +Architecture: i386 +Section: debian-installer +Priority: optional +Provides: multipath-modules +Depends: kernel-image-4.15.0-2-686-pae-di, md-modules-4.15.0-2-686-pae-di, scsi-core-modules-4.15.0-2-686-pae-di +Description: Multipath support + This package contains DM-Multipath modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-686-pae +Package-Type: udeb + +Package: usb-modules-4.15.0-2-686-pae-di +Architecture: i386 +Section: debian-installer +Priority: optional +Provides: usb-modules +Depends: kernel-image-4.15.0-2-686-pae-di +Description: USB support + This package contains core USB drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-686-pae +Package-Type: udeb + +Package: usb-storage-modules-4.15.0-2-686-pae-di +Architecture: i386 +Section: debian-installer +Priority: standard +Provides: usb-storage-modules +Depends: kernel-image-4.15.0-2-686-pae-di, scsi-core-modules-4.15.0-2-686-pae-di, usb-modules-4.15.0-2-686-pae-di +Description: USB storage support + This package contains the USB storage driver for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-686-pae +Package-Type: udeb + +Package: pcmcia-storage-modules-4.15.0-2-686-pae-di +Architecture: i386 +Section: debian-installer +Priority: standard +Provides: pcmcia-storage-modules +Depends: kernel-image-4.15.0-2-686-pae-di, cdrom-core-modules-4.15.0-2-686-pae-di, pcmcia-modules-4.15.0-2-686-pae-di, ata-modules-4.15.0-2-686-pae-di +Description: PCMCIA storage drivers + This package contains PCMCIA storage drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-686-pae +Package-Type: udeb + +Package: fb-modules-4.15.0-2-686-pae-di +Architecture: i386 +Section: debian-installer +Priority: optional +Provides: fb-modules +Depends: kernel-image-4.15.0-2-686-pae-di, i2c-modules-4.15.0-2-686-pae-di +Description: Frame buffer support + This package contains Frame buffer drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-686-pae +Package-Type: udeb + +Package: input-modules-4.15.0-2-686-pae-di +Architecture: i386 +Section: debian-installer +Priority: optional +Provides: input-modules +Depends: kernel-image-4.15.0-2-686-pae-di, usb-modules-4.15.0-2-686-pae-di, i2c-modules-4.15.0-2-686-pae-di +Description: Input devices support + This package contains input device drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-686-pae +Package-Type: udeb + +Package: event-modules-4.15.0-2-686-pae-di +Architecture: i386 +Section: debian-installer +Priority: optional +Provides: event-modules +Depends: kernel-image-4.15.0-2-686-pae-di +Description: Event support + This package contains event drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-686-pae +Package-Type: udeb + +Package: mouse-modules-4.15.0-2-686-pae-di +Architecture: i386 +Section: debian-installer +Priority: optional +Provides: mouse-modules +Depends: kernel-image-4.15.0-2-686-pae-di, event-modules-4.15.0-2-686-pae-di, input-modules-4.15.0-2-686-pae-di, usb-modules-4.15.0-2-686-pae-di +Description: Mouse support + This package contains mouse drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-686-pae +Package-Type: udeb + +Package: nic-pcmcia-modules-4.15.0-2-686-pae-di +Architecture: i386 +Section: debian-installer +Priority: standard +Provides: nic-pcmcia-modules +Depends: kernel-image-4.15.0-2-686-pae-di, nic-shared-modules-4.15.0-2-686-pae-di, nic-wireless-modules-4.15.0-2-686-pae-di, pcmcia-modules-4.15.0-2-686-pae-di, mmc-core-modules-4.15.0-2-686-pae-di +Description: Common PCMCIA NIC drivers + This package contains common PCMCIA NIC drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-686-pae +Package-Type: udeb + +Package: pcmcia-modules-4.15.0-2-686-pae-di +Architecture: i386 +Section: debian-installer +Priority: standard +Provides: pcmcia-modules +Depends: kernel-image-4.15.0-2-686-pae-di +Description: Common PCMCIA drivers + This package contains common PCMCIA drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-686-pae +Package-Type: udeb + +Package: nic-usb-modules-4.15.0-2-686-pae-di +Architecture: i386 +Section: debian-installer +Priority: standard +Provides: nic-usb-modules +Depends: kernel-image-4.15.0-2-686-pae-di, nic-shared-modules-4.15.0-2-686-pae-di, nic-wireless-modules-4.15.0-2-686-pae-di, usb-modules-4.15.0-2-686-pae-di, crc-modules-4.15.0-2-686-pae-di +Description: USB NIC drivers + This package contains USB network adapter drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-686-pae +Package-Type: udeb + +Package: sata-modules-4.15.0-2-686-pae-di +Architecture: i386 +Section: debian-installer +Priority: standard +Provides: sata-modules +Depends: kernel-image-4.15.0-2-686-pae-di, scsi-core-modules-4.15.0-2-686-pae-di, ata-modules-4.15.0-2-686-pae-di +Description: SATA drivers + This package contains SATA drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-686-pae +Package-Type: udeb + +Package: acpi-modules-4.15.0-2-686-pae-di +Architecture: i386 +Section: debian-installer +Priority: optional +Provides: acpi-modules +Depends: kernel-image-4.15.0-2-686-pae-di +Description: ACPI support modules + This package contains kernel modules for ACPI. +Build-Profiles: +Kernel-Version: 4.15.0-2-686-pae +Package-Type: udeb + +Package: i2c-modules-4.15.0-2-686-pae-di +Architecture: i386 +Section: debian-installer +Priority: optional +Provides: i2c-modules +Depends: kernel-image-4.15.0-2-686-pae-di +Description: i2c support modules + This package contains basic i2c support modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-686-pae +Package-Type: udeb + +Package: crc-modules-4.15.0-2-686-pae-di +Architecture: i386 +Section: debian-installer +Priority: optional +Provides: crc-modules +Depends: kernel-image-4.15.0-2-686-pae-di +Description: CRC modules + This package contains CRC support modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-686-pae +Package-Type: udeb + +Package: crypto-modules-4.15.0-2-686-pae-di +Architecture: i386 +Section: debian-installer +Priority: optional +Provides: crypto-modules +Depends: kernel-image-4.15.0-2-686-pae-di +Description: crypto modules + This package contains crypto modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-686-pae +Package-Type: udeb + +Package: crypto-dm-modules-4.15.0-2-686-pae-di +Architecture: i386 +Section: debian-installer +Priority: optional +Provides: crypto-dm-modules +Depends: kernel-image-4.15.0-2-686-pae-di, md-modules-4.15.0-2-686-pae-di +Description: devicemapper crypto module + This package contains the devicemapper crypto (dm-crypt) module. +Build-Profiles: +Kernel-Version: 4.15.0-2-686-pae +Package-Type: udeb + +Package: efi-modules-4.15.0-2-686-pae-di +Architecture: i386 +Section: debian-installer +Priority: optional +Provides: efi-modules +Depends: kernel-image-4.15.0-2-686-pae-di +Description: EFI modules + This package contains EFI modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-686-pae +Package-Type: udeb + +Package: ata-modules-4.15.0-2-686-pae-di +Architecture: i386 +Section: debian-installer +Priority: optional +Provides: ata-modules +Depends: kernel-image-4.15.0-2-686-pae-di, scsi-core-modules-4.15.0-2-686-pae-di +Description: ATA disk modules + This package contains core ATA disk modules used by both PATA and SATA + disk drivers. +Build-Profiles: +Kernel-Version: 4.15.0-2-686-pae +Package-Type: udeb + +Package: mmc-core-modules-4.15.0-2-686-pae-di +Architecture: i386 +Section: debian-installer +Priority: optional +Provides: mmc-core-modules +Depends: kernel-image-4.15.0-2-686-pae-di +Description: MMC/SD/SDIO core modules + This package contains core modules for MMC/SD/SDIO support. +Build-Profiles: +Kernel-Version: 4.15.0-2-686-pae +Package-Type: udeb + +Package: mmc-modules-4.15.0-2-686-pae-di +Architecture: i386 +Section: debian-installer +Priority: optional +Provides: mmc-modules +Depends: kernel-image-4.15.0-2-686-pae-di, mmc-core-modules-4.15.0-2-686-pae-di, usb-modules-4.15.0-2-686-pae-di, crc-modules-4.15.0-2-686-pae-di +Description: MMC/SD card modules + This package contains modules needed to support MMC (multimedia) and SD + cards. +Build-Profiles: +Kernel-Version: 4.15.0-2-686-pae +Package-Type: udeb + +Package: nbd-modules-4.15.0-2-686-pae-di +Architecture: i386 +Section: debian-installer +Priority: optional +Provides: nbd-modules +Depends: kernel-image-4.15.0-2-686-pae-di +Description: Network Block Device modules + This package contains the modules required for support of the Network + Block Device +Build-Profiles: +Kernel-Version: 4.15.0-2-686-pae +Package-Type: udeb + +Package: squashfs-modules-4.15.0-2-686-pae-di +Architecture: i386 +Section: debian-installer +Priority: optional +Provides: squashfs-modules +Depends: kernel-image-4.15.0-2-686-pae-di +Description: squashfs modules + This package contains squashfs modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-686-pae +Package-Type: udeb + +Package: speakup-modules-4.15.0-2-686-pae-di +Architecture: i386 +Section: debian-installer +Priority: optional +Provides: speakup-modules +Depends: kernel-image-4.15.0-2-686-pae-di +Description: speakup modules + This package contains speakup modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-686-pae +Package-Type: udeb + +Package: virtio-modules-4.15.0-2-686-pae-di +Architecture: i386 +Section: debian-installer +Priority: optional +Provides: virtio-modules +Depends: kernel-image-4.15.0-2-686-pae-di, scsi-core-modules-4.15.0-2-686-pae-di +Description: virtio modules + This package contains virtio modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-686-pae +Package-Type: udeb + +Package: uinput-modules-4.15.0-2-686-pae-di +Architecture: i386 +Section: debian-installer +Priority: optional +Provides: uinput-modules +Depends: kernel-image-4.15.0-2-686-pae-di +Description: uinput support + This package contains the uinput module. +Build-Profiles: +Kernel-Version: 4.15.0-2-686-pae +Package-Type: udeb + +Package: sound-modules-4.15.0-2-686-pae-di +Architecture: i386 +Section: debian-installer +Priority: optional +Provides: sound-modules +Depends: kernel-image-4.15.0-2-686-pae-di, i2c-modules-4.15.0-2-686-pae-di, usb-modules-4.15.0-2-686-pae-di, pcmcia-modules-4.15.0-2-686-pae-di, firewire-core-modules-4.15.0-2-686-pae-di, crc-modules-4.15.0-2-686-pae-di +Description: sound support + This package contains sound modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-686-pae +Package-Type: udeb + +Package: hyperv-modules-4.15.0-2-686-pae-di +Architecture: i386 +Section: debian-installer +Priority: optional +Provides: hyperv-modules +Depends: kernel-image-4.15.0-2-686-pae-di, input-modules-4.15.0-2-686-pae-di, scsi-core-modules-4.15.0-2-686-pae-di, nic-shared-modules-4.15.0-2-686-pae-di +Description: Hyper-V modules + This package contains Hyper-V paravirtualised drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-686-pae +Package-Type: udeb + +Package: udf-modules-4.15.0-2-686-pae-di +Architecture: i386 +Section: debian-installer +Priority: optional +Provides: udf-modules +Depends: kernel-image-4.15.0-2-686-pae-di, crc-modules-4.15.0-2-686-pae-di +Description: UDF modules + This package contains the UDF filesystem module. +Build-Profiles: +Kernel-Version: 4.15.0-2-686-pae +Package-Type: udeb + +Package: fuse-modules-4.15.0-2-686-pae-di +Architecture: i386 +Section: debian-installer +Priority: optional +Provides: fuse-modules +Depends: kernel-image-4.15.0-2-686-pae-di +Description: FUSE modules + This package contains the Filesystem in Userspace (FUSE) module. +Build-Profiles: +Kernel-Version: 4.15.0-2-686-pae +Package-Type: udeb + +Package: linux-image-4.15.0-2-686 +Architecture: i386 +Depends: kmod, linux-base (>= 4.3~), ${misc:Depends}, initramfs-tools (>= 0.120+deb8u2) [i386] | linux-initramfs-tool [i386] +Recommends: firmware-linux-free, ${kernel:Recommends}, apparmor [i386] +Suggests: linux-doc-4.15, debian-kernel-handbook, grub-pc [i386] | extlinux [i386] +Breaks: xserver-xorg-input-vmmouse (<< 1:13.0.99) [i386], initramfs-tools (<< 0.120+deb8u2) +Description: Linux 4.15 for older PCs + The Linux kernel 4.15 and modules for use on PCs with one or more + processors not supporting PAE. +Build-Profiles: + +Package: linux-headers-4.15.0-2-686 +Architecture: i386 +Depends: linux-headers-4.15.0-2-common (= ${source:Version}), linux-kbuild-4.15, ${misc:Depends}, linux-compiler-gcc-7-x86 (>= 4.14.17-1~) +Description: Header files for Linux 4.15.0-2-686 + This package provides the architecture-specific kernel header files for + Linux kernel 4.15.0-2-686, generally used for building out-of-tree kernel + modules. These files are going to be installed into + /usr/src/linux-headers-4.15.0-2-686, and can be used for building modules + that load into the kernel provided by the linux-image-4.15.0-2-686 + package. +Build-Profiles: + +Package: linux-image-4.15.0-2-686-dbg +Architecture: i386 +Section: debug +Priority: optional +Depends: ${misc:Depends} +Description: Debug symbols for linux-image-4.15.0-2-686 + This package provides the detached debug symbols for the Linux kernel and + modules in linux-image-4.15.0-2-686. +Build-Profiles: + +Package: linux-image-4.15.0-2-686-pae +Architecture: i386 +Depends: kmod, linux-base (>= 4.3~), ${misc:Depends}, initramfs-tools (>= 0.120+deb8u2) [i386] | linux-initramfs-tool [i386] +Recommends: firmware-linux-free, ${kernel:Recommends}, apparmor [i386] +Suggests: linux-doc-4.15, debian-kernel-handbook, grub-pc [i386] | extlinux [i386] +Breaks: xserver-xorg-input-vmmouse (<< 1:13.0.99) [i386], initramfs-tools (<< 0.120+deb8u2) +Description: Linux 4.15 for modern PCs + The Linux kernel 4.15 and modules for use on PCs with one or more + processors supporting PAE. + . + This kernel requires PAE (Physical Address Extension). This feature is + supported by the Intel Pentium Pro/II/III/4/4M/D, Xeon, Core and Atom; AMD + Geode NX, Athlon (K7), Duron, Opteron, Sempron, Turion or Phenom; + Transmeta Efficeon; VIA C7; and some other processors. +Build-Profiles: + +Package: linux-headers-4.15.0-2-686-pae +Architecture: i386 +Depends: linux-headers-4.15.0-2-common (= ${source:Version}), linux-kbuild-4.15, ${misc:Depends}, linux-compiler-gcc-7-x86 (>= 4.14.17-1~) +Description: Header files for Linux 4.15.0-2-686-pae + This package provides the architecture-specific kernel header files for + Linux kernel 4.15.0-2-686-pae, generally used for building out-of-tree + kernel modules. These files are going to be installed into + /usr/src/linux-headers-4.15.0-2-686-pae, and can be used for building + modules that load into the kernel provided by the + linux-image-4.15.0-2-686-pae package. +Build-Profiles: + +Package: linux-image-4.15.0-2-686-pae-dbg +Architecture: i386 +Section: debug +Priority: optional +Depends: ${misc:Depends} +Description: Debug symbols for linux-image-4.15.0-2-686-pae + This package provides the detached debug symbols for the Linux kernel and + modules in linux-image-4.15.0-2-686-pae. +Build-Profiles: + +Package: linux-headers-4.15.0-2-all-m68k +Architecture: m68k +Depends: ${misc:Depends}, linux-headers-4.15.0-2-m68k (= ${binary:Version}) +Description: All header files for Linux 4.15 (meta-package) + This package depends against all architecture-specific kernel header files + for Linux kernel version 4.15, generally used for building out-of-tree + kernel modules. +Build-Profiles: + +Package: kernel-image-4.15.0-2-m68k-di +Architecture: m68k +Section: debian-installer +Priority: standard +Provides: kernel-image +Description: Linux kernel image and core modules for the Debian installer + This package contains the kernel image and core modules for the Debian + installer boot images. It does _not_ provide a usable kernel for your + full Debian system. +Build-Profiles: +Kernel-Version: 4.15.0-2-m68k +Package-Type: udeb + +Package: nic-modules-4.15.0-2-m68k-di +Architecture: m68k +Section: debian-installer +Priority: standard +Provides: nic-modules, nic-extra-modules +Depends: kernel-image-4.15.0-2-m68k-di, nic-shared-modules-4.15.0-2-m68k-di, crc-modules-4.15.0-2-m68k-di +Description: NIC drivers + This package contains Ethernet and some paravirtualised network drivers + for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-m68k +Package-Type: udeb + +Package: nic-shared-modules-4.15.0-2-m68k-di +Architecture: m68k +Section: debian-installer +Priority: standard +Provides: nic-shared-modules +Depends: kernel-image-4.15.0-2-m68k-di +Description: Shared NIC drivers + This package contains NIC drivers needed by combinations of nic-modules, + nic-pcmcia-modules, nic-usb-modules and nic-wireless-modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-m68k +Package-Type: udeb + +Package: ppp-modules-4.15.0-2-m68k-di +Architecture: m68k +Section: debian-installer +Priority: optional +Provides: ppp-modules +Depends: kernel-image-4.15.0-2-m68k-di, zlib-modules-4.15.0-2-m68k-di, crc-modules-4.15.0-2-m68k-di +Description: PPP drivers + This package contains PPP drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-m68k +Package-Type: udeb + +Package: pata-modules-4.15.0-2-m68k-di +Architecture: m68k +Section: debian-installer +Priority: standard +Provides: pata-modules +Depends: kernel-image-4.15.0-2-m68k-di, ata-modules-4.15.0-2-m68k-di +Description: PATA drivers + This package contains PATA drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-m68k +Package-Type: udeb + +Package: cdrom-core-modules-4.15.0-2-m68k-di +Architecture: m68k +Section: debian-installer +Priority: standard +Provides: cdrom-core-modules +Depends: kernel-image-4.15.0-2-m68k-di, scsi-core-modules-4.15.0-2-m68k-di, ide-modules-4.15.0-2-m68k-di +Description: CDROM support + This package contains core CDROM support for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-m68k +Package-Type: udeb + +Package: scsi-core-modules-4.15.0-2-m68k-di +Architecture: m68k +Section: debian-installer +Priority: standard +Provides: scsi-core-modules +Depends: kernel-image-4.15.0-2-m68k-di +Description: Core SCSI subsystem + This package contains the core SCSI subsystem for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-m68k +Package-Type: udeb + +Package: scsi-modules-4.15.0-2-m68k-di +Architecture: m68k +Section: debian-installer +Priority: standard +Provides: scsi-modules +Depends: kernel-image-4.15.0-2-m68k-di, scsi-core-modules-4.15.0-2-m68k-di, cdrom-core-modules-4.15.0-2-m68k-di, ata-modules-4.15.0-2-m68k-di +Description: SCSI drivers + This package contains SCSI drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-m68k +Package-Type: udeb + +Package: loop-modules-4.15.0-2-m68k-di +Architecture: m68k +Section: debian-installer +Priority: standard +Provides: loop-modules +Depends: kernel-image-4.15.0-2-m68k-di +Description: Loopback filesystem support + This package contains loopback filesystem support for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-m68k +Package-Type: udeb + +Package: btrfs-modules-4.15.0-2-m68k-di +Architecture: m68k +Section: debian-installer +Priority: optional +Provides: btrfs-modules +Depends: kernel-image-4.15.0-2-m68k-di, crc-modules-4.15.0-2-m68k-di, zlib-modules-4.15.0-2-m68k-di, md-modules-4.15.0-2-m68k-di +Description: BTRFS filesystem support + This package contains the BTRFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-m68k +Package-Type: udeb + +Package: ext4-modules-4.15.0-2-m68k-di +Architecture: m68k +Section: debian-installer +Priority: standard +Provides: ext4-modules, ext2-modules, ext3-modules +Depends: kernel-image-4.15.0-2-m68k-di, crc-modules-4.15.0-2-m68k-di +Description: ext2/ext3/ext4 filesystem support + This package contains the ext4 filesystem module for the kernel, which + also supports ext2 and ext3. +Build-Profiles: +Kernel-Version: 4.15.0-2-m68k +Package-Type: udeb + +Package: isofs-modules-4.15.0-2-m68k-di +Architecture: m68k +Section: debian-installer +Priority: standard +Provides: isofs-modules +Depends: kernel-image-4.15.0-2-m68k-di +Description: ISOFS filesystem support + This package contains the ISOFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-m68k +Package-Type: udeb + +Package: fat-modules-4.15.0-2-m68k-di +Architecture: m68k +Section: debian-installer +Priority: optional +Provides: fat-modules +Depends: kernel-image-4.15.0-2-m68k-di +Description: FAT filesystem support + This package contains the FAT and VFAT filesystem modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-m68k +Package-Type: udeb + +Package: hfs-modules-4.15.0-2-m68k-di +Architecture: m68k +Section: debian-installer +Priority: optional +Provides: hfs-modules +Depends: kernel-image-4.15.0-2-m68k-di +Description: HFS filesystem support + This package contains the HFS and HFS+ filesystem modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-m68k +Package-Type: udeb + +Package: affs-modules-4.15.0-2-m68k-di +Architecture: m68k +Section: debian-installer +Priority: optional +Provides: affs-modules +Depends: kernel-image-4.15.0-2-m68k-di +Description: Amiga filesystem support + This package contains the Amiga filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-m68k +Package-Type: udeb + +Package: md-modules-4.15.0-2-m68k-di +Architecture: m68k +Section: debian-installer +Priority: optional +Provides: md-modules +Depends: kernel-image-4.15.0-2-m68k-di, crc-modules-4.15.0-2-m68k-di +Description: RAID and LVM support + This package contains RAID and LVM modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-m68k +Package-Type: udeb + +Package: crc-modules-4.15.0-2-m68k-di +Architecture: m68k +Section: debian-installer +Priority: optional +Provides: crc-modules +Depends: kernel-image-4.15.0-2-m68k-di +Description: CRC modules + This package contains CRC support modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-m68k +Package-Type: udeb + +Package: crypto-modules-4.15.0-2-m68k-di +Architecture: m68k +Section: debian-installer +Priority: optional +Provides: crypto-modules +Depends: kernel-image-4.15.0-2-m68k-di +Description: crypto modules + This package contains crypto modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-m68k +Package-Type: udeb + +Package: ata-modules-4.15.0-2-m68k-di +Architecture: m68k +Section: debian-installer +Priority: optional +Provides: ata-modules +Depends: kernel-image-4.15.0-2-m68k-di, scsi-core-modules-4.15.0-2-m68k-di +Description: ATA disk modules + This package contains core ATA disk modules used by both PATA and SATA + disk drivers. +Build-Profiles: +Kernel-Version: 4.15.0-2-m68k +Package-Type: udeb + +Package: nbd-modules-4.15.0-2-m68k-di +Architecture: m68k +Section: debian-installer +Priority: optional +Provides: nbd-modules +Depends: kernel-image-4.15.0-2-m68k-di +Description: Network Block Device modules + This package contains the modules required for support of the Network + Block Device +Build-Profiles: +Kernel-Version: 4.15.0-2-m68k +Package-Type: udeb + +Package: squashfs-modules-4.15.0-2-m68k-di +Architecture: m68k +Section: debian-installer +Priority: optional +Provides: squashfs-modules +Depends: kernel-image-4.15.0-2-m68k-di +Description: squashfs modules + This package contains squashfs modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-m68k +Package-Type: udeb + +Package: zlib-modules-4.15.0-2-m68k-di +Architecture: m68k +Section: debian-installer +Priority: optional +Provides: zlib-modules +Depends: kernel-image-4.15.0-2-m68k-di +Description: zlib modules + This package contains zlib modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-m68k +Package-Type: udeb + +Package: udf-modules-4.15.0-2-m68k-di +Architecture: m68k +Section: debian-installer +Priority: optional +Provides: udf-modules +Depends: kernel-image-4.15.0-2-m68k-di, crc-modules-4.15.0-2-m68k-di +Description: UDF modules + This package contains the UDF filesystem module. +Build-Profiles: +Kernel-Version: 4.15.0-2-m68k +Package-Type: udeb + +Package: fuse-modules-4.15.0-2-m68k-di +Architecture: m68k +Section: debian-installer +Priority: optional +Provides: fuse-modules +Depends: kernel-image-4.15.0-2-m68k-di +Description: FUSE modules + This package contains the Filesystem in Userspace (FUSE) module. +Build-Profiles: +Kernel-Version: 4.15.0-2-m68k +Package-Type: udeb + +Package: ide-core-modules-4.15.0-2-m68k-di +Architecture: m68k +Section: debian-installer +Priority: standard +Provides: ide-core-modules +Depends: kernel-image-4.15.0-2-m68k-di +Description: IDE support + This package contains core IDE support for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-m68k +Package-Type: udeb + +Package: ide-modules-4.15.0-2-m68k-di +Architecture: m68k +Section: debian-installer +Priority: standard +Provides: ide-modules +Depends: kernel-image-4.15.0-2-m68k-di, ide-core-modules-4.15.0-2-m68k-di +Description: IDE drivers + This package contains IDE drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-m68k +Package-Type: udeb + +Package: linux-image-4.15.0-2-m68k +Architecture: m68k +Depends: kmod, linux-base (>= 4.3~), ${misc:Depends}, initramfs-tools (>= 0.120+deb8u2) [m68k] | linux-initramfs-tool [m68k] +Recommends: firmware-linux-free, ${kernel:Recommends}, apparmor [m68k] +Suggests: linux-doc-4.15, debian-kernel-handbook, vmelilo [m68k], fdutils [m68k] +Breaks: initramfs-tools (<< 0.120+deb8u2) +Description: Linux 4.15 for Motorola MC68020+ family + The Linux kernel 4.15 and modules for use on Motorola MC68020+ family. +Build-Profiles: + +Package: linux-headers-4.15.0-2-m68k +Architecture: m68k +Depends: linux-headers-4.15.0-2-common (= ${source:Version}), linux-kbuild-4.15, ${misc:Depends}, gcc-7 +Description: Header files for Linux 4.15.0-2-m68k + This package provides the architecture-specific kernel header files for + Linux kernel 4.15.0-2-m68k, generally used for building out-of-tree kernel + modules. These files are going to be installed into + /usr/src/linux-headers-4.15.0-2-m68k, and can be used for building modules + that load into the kernel provided by the linux-image-4.15.0-2-m68k + package. +Build-Profiles: + +Package: linux-image-4.15.0-2-m68k-dbg +Architecture: m68k +Section: debug +Priority: optional +Depends: ${misc:Depends} +Description: Debug symbols for linux-image-4.15.0-2-m68k + This package provides the detached debug symbols for the Linux kernel and + modules in linux-image-4.15.0-2-m68k. +Build-Profiles: + +Package: linux-headers-4.15.0-2-all-mips +Architecture: mips +Depends: ${misc:Depends}, linux-headers-4.15.0-2-4kc-malta (= ${binary:Version}), linux-headers-4.15.0-2-5kc-malta (= ${binary:Version}), linux-headers-4.15.0-2-octeon (= ${binary:Version}) +Description: All header files for Linux 4.15 (meta-package) + This package depends against all architecture-specific kernel header files + for Linux kernel version 4.15, generally used for building out-of-tree + kernel modules. +Build-Profiles: + +Package: kernel-image-4.15.0-2-4kc-malta-di +Architecture: mips mipsel +Section: debian-installer +Priority: standard +Provides: kernel-image, rtc-modules +Description: Linux kernel image and core modules for the Debian installer + This package contains the kernel image and core modules for the Debian + installer boot images. It does _not_ provide a usable kernel for your + full Debian system. +Build-Profiles: +Kernel-Version: 4.15.0-2-4kc-malta +Package-Type: udeb + +Package: nic-modules-4.15.0-2-4kc-malta-di +Architecture: mips mipsel +Section: debian-installer +Priority: standard +Provides: nic-modules, nic-extra-modules +Depends: kernel-image-4.15.0-2-4kc-malta-di, nic-shared-modules-4.15.0-2-4kc-malta-di, i2c-modules-4.15.0-2-4kc-malta-di, crc-modules-4.15.0-2-4kc-malta-di +Description: NIC drivers + This package contains Ethernet and some paravirtualised network drivers + for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-4kc-malta +Package-Type: udeb + +Package: nic-wireless-modules-4.15.0-2-4kc-malta-di +Architecture: mips mipsel +Section: debian-installer +Priority: standard +Provides: nic-wireless-modules +Depends: kernel-image-4.15.0-2-4kc-malta-di, nic-shared-modules-4.15.0-2-4kc-malta-di, usb-modules-4.15.0-2-4kc-malta-di, mmc-modules-4.15.0-2-4kc-malta-di, crc-modules-4.15.0-2-4kc-malta-di +Description: Wireless NIC drivers + This package contains wireless NIC drivers for the kernel. Includes + crypto modules only needed for wireless (WEP, WPA). +Build-Profiles: +Kernel-Version: 4.15.0-2-4kc-malta +Package-Type: udeb + +Package: nic-shared-modules-4.15.0-2-4kc-malta-di +Architecture: mips mipsel +Section: debian-installer +Priority: standard +Provides: nic-shared-modules +Depends: kernel-image-4.15.0-2-4kc-malta-di +Description: Shared NIC drivers + This package contains NIC drivers needed by combinations of nic-modules, + nic-pcmcia-modules, nic-usb-modules and nic-wireless-modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-4kc-malta +Package-Type: udeb + +Package: usb-serial-modules-4.15.0-2-4kc-malta-di +Architecture: mips mipsel +Section: debian-installer +Priority: optional +Provides: usb-serial-modules +Depends: kernel-image-4.15.0-2-4kc-malta-di, usb-modules-4.15.0-2-4kc-malta-di +Description: USB serial drivers + This package contains USB serial drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-4kc-malta +Package-Type: udeb + +Package: ppp-modules-4.15.0-2-4kc-malta-di +Architecture: mips mipsel +Section: debian-installer +Priority: optional +Provides: ppp-modules +Depends: kernel-image-4.15.0-2-4kc-malta-di, zlib-modules-4.15.0-2-4kc-malta-di, crc-modules-4.15.0-2-4kc-malta-di +Description: PPP drivers + This package contains PPP drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-4kc-malta +Package-Type: udeb + +Package: pata-modules-4.15.0-2-4kc-malta-di +Architecture: mips mipsel +Section: debian-installer +Priority: standard +Provides: pata-modules +Depends: kernel-image-4.15.0-2-4kc-malta-di, ata-modules-4.15.0-2-4kc-malta-di +Description: PATA drivers + This package contains PATA drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-4kc-malta +Package-Type: udeb + +Package: cdrom-core-modules-4.15.0-2-4kc-malta-di +Architecture: mips mipsel +Section: debian-installer +Priority: standard +Provides: cdrom-core-modules +Depends: kernel-image-4.15.0-2-4kc-malta-di, scsi-core-modules-4.15.0-2-4kc-malta-di, isofs-modules-4.15.0-2-4kc-malta-di +Description: CDROM support + This package contains core CDROM support for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-4kc-malta +Package-Type: udeb + +Package: scsi-core-modules-4.15.0-2-4kc-malta-di +Architecture: mips mipsel +Section: debian-installer +Priority: standard +Provides: scsi-core-modules +Depends: kernel-image-4.15.0-2-4kc-malta-di +Description: Core SCSI subsystem + This package contains the core SCSI subsystem for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-4kc-malta +Package-Type: udeb + +Package: scsi-modules-4.15.0-2-4kc-malta-di +Architecture: mips mipsel +Section: debian-installer +Priority: standard +Provides: scsi-modules +Depends: kernel-image-4.15.0-2-4kc-malta-di, scsi-core-modules-4.15.0-2-4kc-malta-di, cdrom-core-modules-4.15.0-2-4kc-malta-di, ata-modules-4.15.0-2-4kc-malta-di +Description: SCSI drivers + This package contains SCSI drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-4kc-malta +Package-Type: udeb + +Package: loop-modules-4.15.0-2-4kc-malta-di +Architecture: mips mipsel +Section: debian-installer +Priority: standard +Provides: loop-modules +Depends: kernel-image-4.15.0-2-4kc-malta-di +Description: Loopback filesystem support + This package contains loopback filesystem support for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-4kc-malta +Package-Type: udeb + +Package: btrfs-modules-4.15.0-2-4kc-malta-di +Architecture: mips mipsel +Section: debian-installer +Priority: optional +Provides: btrfs-modules +Depends: kernel-image-4.15.0-2-4kc-malta-di, crc-modules-4.15.0-2-4kc-malta-di, zlib-modules-4.15.0-2-4kc-malta-di, md-modules-4.15.0-2-4kc-malta-di +Description: BTRFS filesystem support + This package contains the BTRFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-4kc-malta +Package-Type: udeb + +Package: ext4-modules-4.15.0-2-4kc-malta-di +Architecture: mips mipsel +Section: debian-installer +Priority: standard +Provides: ext4-modules, ext2-modules, ext3-modules +Depends: kernel-image-4.15.0-2-4kc-malta-di, crc-modules-4.15.0-2-4kc-malta-di +Description: ext2/ext3/ext4 filesystem support + This package contains the ext4 filesystem module for the kernel, which + also supports ext2 and ext3. +Build-Profiles: +Kernel-Version: 4.15.0-2-4kc-malta +Package-Type: udeb + +Package: isofs-modules-4.15.0-2-4kc-malta-di +Architecture: mips mipsel +Section: debian-installer +Priority: standard +Provides: isofs-modules +Depends: kernel-image-4.15.0-2-4kc-malta-di +Description: ISOFS filesystem support + This package contains the ISOFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-4kc-malta +Package-Type: udeb + +Package: jfs-modules-4.15.0-2-4kc-malta-di +Architecture: mips mipsel +Section: debian-installer +Priority: standard +Provides: jfs-modules +Depends: kernel-image-4.15.0-2-4kc-malta-di +Description: JFS filesystem support + This package contains the JFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-4kc-malta +Package-Type: udeb + +Package: ntfs-modules-4.15.0-2-4kc-malta-di +Architecture: mips mipsel +Section: debian-installer +Priority: optional +Provides: ntfs-modules +Depends: kernel-image-4.15.0-2-4kc-malta-di +Description: NTFS filesystem support + This package contains the NTFS file system module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-4kc-malta +Package-Type: udeb + +Package: xfs-modules-4.15.0-2-4kc-malta-di +Architecture: mips mipsel +Section: debian-installer +Priority: standard +Provides: xfs-modules +Depends: kernel-image-4.15.0-2-4kc-malta-di, crc-modules-4.15.0-2-4kc-malta-di +Description: XFS filesystem support + This package contains the XFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-4kc-malta +Package-Type: udeb + +Package: fat-modules-4.15.0-2-4kc-malta-di +Architecture: mips mipsel +Section: debian-installer +Priority: optional +Provides: fat-modules +Depends: kernel-image-4.15.0-2-4kc-malta-di +Description: FAT filesystem support + This package contains the FAT and VFAT filesystem modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-4kc-malta +Package-Type: udeb + +Package: hfs-modules-4.15.0-2-4kc-malta-di +Architecture: mips mipsel +Section: debian-installer +Priority: optional +Provides: hfs-modules +Depends: kernel-image-4.15.0-2-4kc-malta-di +Description: HFS filesystem support + This package contains the HFS and HFS+ filesystem modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-4kc-malta +Package-Type: udeb + +Package: affs-modules-4.15.0-2-4kc-malta-di +Architecture: mips mipsel +Section: debian-installer +Priority: optional +Provides: affs-modules +Depends: kernel-image-4.15.0-2-4kc-malta-di +Description: Amiga filesystem support + This package contains the Amiga filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-4kc-malta +Package-Type: udeb + +Package: minix-modules-4.15.0-2-4kc-malta-di +Architecture: mips mipsel +Section: debian-installer +Priority: optional +Provides: minix-modules +Depends: kernel-image-4.15.0-2-4kc-malta-di +Description: Minix filesystem support + This package contains the Minix filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-4kc-malta +Package-Type: udeb + +Package: md-modules-4.15.0-2-4kc-malta-di +Architecture: mips mipsel +Section: debian-installer +Priority: optional +Provides: md-modules +Depends: kernel-image-4.15.0-2-4kc-malta-di, crc-modules-4.15.0-2-4kc-malta-di +Description: RAID and LVM support + This package contains RAID and LVM modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-4kc-malta +Package-Type: udeb + +Package: multipath-modules-4.15.0-2-4kc-malta-di +Architecture: mips mipsel +Section: debian-installer +Priority: optional +Provides: multipath-modules +Depends: kernel-image-4.15.0-2-4kc-malta-di, md-modules-4.15.0-2-4kc-malta-di, scsi-core-modules-4.15.0-2-4kc-malta-di +Description: Multipath support + This package contains DM-Multipath modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-4kc-malta +Package-Type: udeb + +Package: usb-modules-4.15.0-2-4kc-malta-di +Architecture: mips mipsel +Section: debian-installer +Priority: optional +Provides: usb-modules +Depends: kernel-image-4.15.0-2-4kc-malta-di +Description: USB support + This package contains core USB drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-4kc-malta +Package-Type: udeb + +Package: usb-storage-modules-4.15.0-2-4kc-malta-di +Architecture: mips mipsel +Section: debian-installer +Priority: standard +Provides: usb-storage-modules +Depends: kernel-image-4.15.0-2-4kc-malta-di, scsi-core-modules-4.15.0-2-4kc-malta-di, usb-modules-4.15.0-2-4kc-malta-di +Description: USB storage support + This package contains the USB storage driver for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-4kc-malta +Package-Type: udeb + +Package: input-modules-4.15.0-2-4kc-malta-di +Architecture: mips mipsel +Section: debian-installer +Priority: optional +Provides: input-modules +Depends: kernel-image-4.15.0-2-4kc-malta-di, usb-modules-4.15.0-2-4kc-malta-di, i2c-modules-4.15.0-2-4kc-malta-di +Description: Input devices support + This package contains input device drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-4kc-malta +Package-Type: udeb + +Package: event-modules-4.15.0-2-4kc-malta-di +Architecture: mips mipsel +Section: debian-installer +Priority: optional +Provides: event-modules +Depends: kernel-image-4.15.0-2-4kc-malta-di +Description: Event support + This package contains event drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-4kc-malta +Package-Type: udeb + +Package: mouse-modules-4.15.0-2-4kc-malta-di +Architecture: mips mipsel +Section: debian-installer +Priority: optional +Provides: mouse-modules +Depends: kernel-image-4.15.0-2-4kc-malta-di, event-modules-4.15.0-2-4kc-malta-di, input-modules-4.15.0-2-4kc-malta-di, usb-modules-4.15.0-2-4kc-malta-di +Description: Mouse support + This package contains mouse drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-4kc-malta +Package-Type: udeb + +Package: nic-usb-modules-4.15.0-2-4kc-malta-di +Architecture: mips mipsel +Section: debian-installer +Priority: standard +Provides: nic-usb-modules +Depends: kernel-image-4.15.0-2-4kc-malta-di, nic-shared-modules-4.15.0-2-4kc-malta-di, nic-wireless-modules-4.15.0-2-4kc-malta-di, usb-modules-4.15.0-2-4kc-malta-di, crc-modules-4.15.0-2-4kc-malta-di +Description: USB NIC drivers + This package contains USB network adapter drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-4kc-malta +Package-Type: udeb + +Package: sata-modules-4.15.0-2-4kc-malta-di +Architecture: mips mipsel +Section: debian-installer +Priority: standard +Provides: sata-modules +Depends: kernel-image-4.15.0-2-4kc-malta-di, scsi-core-modules-4.15.0-2-4kc-malta-di, ata-modules-4.15.0-2-4kc-malta-di +Description: SATA drivers + This package contains SATA drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-4kc-malta +Package-Type: udeb + +Package: i2c-modules-4.15.0-2-4kc-malta-di +Architecture: mips mipsel +Section: debian-installer +Priority: optional +Provides: i2c-modules +Depends: kernel-image-4.15.0-2-4kc-malta-di +Description: i2c support modules + This package contains basic i2c support modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-4kc-malta +Package-Type: udeb + +Package: crc-modules-4.15.0-2-4kc-malta-di +Architecture: mips mipsel +Section: debian-installer +Priority: optional +Provides: crc-modules +Depends: kernel-image-4.15.0-2-4kc-malta-di +Description: CRC modules + This package contains CRC support modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-4kc-malta +Package-Type: udeb + +Package: crypto-modules-4.15.0-2-4kc-malta-di +Architecture: mips mipsel +Section: debian-installer +Priority: optional +Provides: crypto-modules +Depends: kernel-image-4.15.0-2-4kc-malta-di +Description: crypto modules + This package contains crypto modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-4kc-malta +Package-Type: udeb + +Package: crypto-dm-modules-4.15.0-2-4kc-malta-di +Architecture: mips mipsel +Section: debian-installer +Priority: optional +Provides: crypto-dm-modules +Depends: kernel-image-4.15.0-2-4kc-malta-di, md-modules-4.15.0-2-4kc-malta-di +Description: devicemapper crypto module + This package contains the devicemapper crypto (dm-crypt) module. +Build-Profiles: +Kernel-Version: 4.15.0-2-4kc-malta +Package-Type: udeb + +Package: ata-modules-4.15.0-2-4kc-malta-di +Architecture: mips mipsel +Section: debian-installer +Priority: optional +Provides: ata-modules +Depends: kernel-image-4.15.0-2-4kc-malta-di, scsi-core-modules-4.15.0-2-4kc-malta-di +Description: ATA disk modules + This package contains core ATA disk modules used by both PATA and SATA + disk drivers. +Build-Profiles: +Kernel-Version: 4.15.0-2-4kc-malta +Package-Type: udeb + +Package: mmc-core-modules-4.15.0-2-4kc-malta-di +Architecture: mips mipsel +Section: debian-installer +Priority: optional +Provides: mmc-core-modules +Depends: kernel-image-4.15.0-2-4kc-malta-di +Description: MMC/SD/SDIO core modules + This package contains core modules for MMC/SD/SDIO support. +Build-Profiles: +Kernel-Version: 4.15.0-2-4kc-malta +Package-Type: udeb + +Package: mmc-modules-4.15.0-2-4kc-malta-di +Architecture: mips mipsel +Section: debian-installer +Priority: optional +Provides: mmc-modules +Depends: kernel-image-4.15.0-2-4kc-malta-di, mmc-core-modules-4.15.0-2-4kc-malta-di, usb-modules-4.15.0-2-4kc-malta-di, crc-modules-4.15.0-2-4kc-malta-di +Description: MMC/SD card modules + This package contains modules needed to support MMC (multimedia) and SD + cards. +Build-Profiles: +Kernel-Version: 4.15.0-2-4kc-malta +Package-Type: udeb + +Package: nbd-modules-4.15.0-2-4kc-malta-di +Architecture: mips mipsel +Section: debian-installer +Priority: optional +Provides: nbd-modules +Depends: kernel-image-4.15.0-2-4kc-malta-di +Description: Network Block Device modules + This package contains the modules required for support of the Network + Block Device +Build-Profiles: +Kernel-Version: 4.15.0-2-4kc-malta +Package-Type: udeb + +Package: squashfs-modules-4.15.0-2-4kc-malta-di +Architecture: mips mipsel +Section: debian-installer +Priority: optional +Provides: squashfs-modules +Depends: kernel-image-4.15.0-2-4kc-malta-di +Description: squashfs modules + This package contains squashfs modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-4kc-malta +Package-Type: udeb + +Package: virtio-modules-4.15.0-2-4kc-malta-di +Architecture: mips mipsel +Section: debian-installer +Priority: optional +Provides: virtio-modules +Depends: kernel-image-4.15.0-2-4kc-malta-di, scsi-core-modules-4.15.0-2-4kc-malta-di +Description: virtio modules + This package contains virtio modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-4kc-malta +Package-Type: udeb + +Package: sound-modules-4.15.0-2-4kc-malta-di +Architecture: mips mipsel +Section: debian-installer +Priority: optional +Provides: sound-modules +Depends: kernel-image-4.15.0-2-4kc-malta-di, i2c-modules-4.15.0-2-4kc-malta-di, usb-modules-4.15.0-2-4kc-malta-di, crc-modules-4.15.0-2-4kc-malta-di +Description: sound support + This package contains sound modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-4kc-malta +Package-Type: udeb + +Package: zlib-modules-4.15.0-2-4kc-malta-di +Architecture: mips mipsel +Section: debian-installer +Priority: optional +Provides: zlib-modules +Depends: kernel-image-4.15.0-2-4kc-malta-di +Description: zlib modules + This package contains zlib modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-4kc-malta +Package-Type: udeb + +Package: udf-modules-4.15.0-2-4kc-malta-di +Architecture: mips mipsel +Section: debian-installer +Priority: optional +Provides: udf-modules +Depends: kernel-image-4.15.0-2-4kc-malta-di, crc-modules-4.15.0-2-4kc-malta-di +Description: UDF modules + This package contains the UDF filesystem module. +Build-Profiles: +Kernel-Version: 4.15.0-2-4kc-malta +Package-Type: udeb + +Package: fuse-modules-4.15.0-2-4kc-malta-di +Architecture: mips mipsel +Section: debian-installer +Priority: optional +Provides: fuse-modules +Depends: kernel-image-4.15.0-2-4kc-malta-di +Description: FUSE modules + This package contains the Filesystem in Userspace (FUSE) module. +Build-Profiles: +Kernel-Version: 4.15.0-2-4kc-malta +Package-Type: udeb + +Package: kernel-image-4.15.0-2-octeon-di +Architecture: mips mips64 mips64el mipsel +Section: debian-installer +Priority: standard +Provides: kernel-image, rtc-modules +Description: Linux kernel image and core modules for the Debian installer + This package contains the kernel image and core modules for the Debian + installer boot images. It does _not_ provide a usable kernel for your + full Debian system. +Build-Profiles: +Kernel-Version: 4.15.0-2-octeon +Package-Type: udeb + +Package: nic-modules-4.15.0-2-octeon-di +Architecture: mips mips64 mips64el mipsel +Section: debian-installer +Priority: standard +Provides: nic-modules, nic-extra-modules +Depends: kernel-image-4.15.0-2-octeon-di, nic-shared-modules-4.15.0-2-octeon-di, crc-modules-4.15.0-2-octeon-di +Description: NIC drivers + This package contains Ethernet and some paravirtualised network drivers + for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-octeon +Package-Type: udeb + +Package: nic-wireless-modules-4.15.0-2-octeon-di +Architecture: mips mips64 mips64el mipsel +Section: debian-installer +Priority: standard +Provides: nic-wireless-modules +Depends: kernel-image-4.15.0-2-octeon-di, nic-shared-modules-4.15.0-2-octeon-di, usb-modules-4.15.0-2-octeon-di, crc-modules-4.15.0-2-octeon-di +Description: Wireless NIC drivers + This package contains wireless NIC drivers for the kernel. Includes + crypto modules only needed for wireless (WEP, WPA). +Build-Profiles: +Kernel-Version: 4.15.0-2-octeon +Package-Type: udeb + +Package: nic-shared-modules-4.15.0-2-octeon-di +Architecture: mips mips64 mips64el mipsel +Section: debian-installer +Priority: standard +Provides: nic-shared-modules +Depends: kernel-image-4.15.0-2-octeon-di +Description: Shared NIC drivers + This package contains NIC drivers needed by combinations of nic-modules, + nic-pcmcia-modules, nic-usb-modules and nic-wireless-modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-octeon +Package-Type: udeb + +Package: usb-serial-modules-4.15.0-2-octeon-di +Architecture: mips mips64 mips64el mipsel +Section: debian-installer +Priority: optional +Provides: usb-serial-modules +Depends: kernel-image-4.15.0-2-octeon-di, usb-modules-4.15.0-2-octeon-di +Description: USB serial drivers + This package contains USB serial drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-octeon +Package-Type: udeb + +Package: ppp-modules-4.15.0-2-octeon-di +Architecture: mips mips64 mips64el mipsel +Section: debian-installer +Priority: optional +Provides: ppp-modules +Depends: kernel-image-4.15.0-2-octeon-di, zlib-modules-4.15.0-2-octeon-di, crc-modules-4.15.0-2-octeon-di +Description: PPP drivers + This package contains PPP drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-octeon +Package-Type: udeb + +Package: pata-modules-4.15.0-2-octeon-di +Architecture: mips mips64 mips64el mipsel +Section: debian-installer +Priority: standard +Provides: pata-modules +Depends: kernel-image-4.15.0-2-octeon-di +Description: PATA drivers + This package contains PATA drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-octeon +Package-Type: udeb + +Package: cdrom-core-modules-4.15.0-2-octeon-di +Architecture: mips mips64 mips64el mipsel +Section: debian-installer +Priority: standard +Provides: cdrom-core-modules +Depends: kernel-image-4.15.0-2-octeon-di, scsi-core-modules-4.15.0-2-octeon-di, isofs-modules-4.15.0-2-octeon-di +Description: CDROM support + This package contains core CDROM support for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-octeon +Package-Type: udeb + +Package: scsi-core-modules-4.15.0-2-octeon-di +Architecture: mips mips64 mips64el mipsel +Section: debian-installer +Priority: standard +Provides: scsi-core-modules +Depends: kernel-image-4.15.0-2-octeon-di +Description: Core SCSI subsystem + This package contains the core SCSI subsystem for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-octeon +Package-Type: udeb + +Package: scsi-modules-4.15.0-2-octeon-di +Architecture: mips mips64 mips64el mipsel +Section: debian-installer +Priority: standard +Provides: scsi-modules +Depends: kernel-image-4.15.0-2-octeon-di, scsi-core-modules-4.15.0-2-octeon-di, cdrom-core-modules-4.15.0-2-octeon-di +Description: SCSI drivers + This package contains SCSI drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-octeon +Package-Type: udeb + +Package: loop-modules-4.15.0-2-octeon-di +Architecture: mips mips64 mips64el mipsel +Section: debian-installer +Priority: standard +Provides: loop-modules +Depends: kernel-image-4.15.0-2-octeon-di +Description: Loopback filesystem support + This package contains loopback filesystem support for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-octeon +Package-Type: udeb + +Package: btrfs-modules-4.15.0-2-octeon-di +Architecture: mips mips64 mips64el mipsel +Section: debian-installer +Priority: optional +Provides: btrfs-modules +Depends: kernel-image-4.15.0-2-octeon-di, crc-modules-4.15.0-2-octeon-di, zlib-modules-4.15.0-2-octeon-di, md-modules-4.15.0-2-octeon-di +Description: BTRFS filesystem support + This package contains the BTRFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-octeon +Package-Type: udeb + +Package: ext4-modules-4.15.0-2-octeon-di +Architecture: mips mips64 mips64el mipsel +Section: debian-installer +Priority: standard +Provides: ext4-modules, ext2-modules, ext3-modules +Depends: kernel-image-4.15.0-2-octeon-di, crc-modules-4.15.0-2-octeon-di +Description: ext2/ext3/ext4 filesystem support + This package contains the ext4 filesystem module for the kernel, which + also supports ext2 and ext3. +Build-Profiles: +Kernel-Version: 4.15.0-2-octeon +Package-Type: udeb + +Package: isofs-modules-4.15.0-2-octeon-di +Architecture: mips mips64 mips64el mipsel +Section: debian-installer +Priority: standard +Provides: isofs-modules +Depends: kernel-image-4.15.0-2-octeon-di +Description: ISOFS filesystem support + This package contains the ISOFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-octeon +Package-Type: udeb + +Package: jfs-modules-4.15.0-2-octeon-di +Architecture: mips mips64 mips64el mipsel +Section: debian-installer +Priority: standard +Provides: jfs-modules +Depends: kernel-image-4.15.0-2-octeon-di +Description: JFS filesystem support + This package contains the JFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-octeon +Package-Type: udeb + +Package: ntfs-modules-4.15.0-2-octeon-di +Architecture: mips mips64 mips64el mipsel +Section: debian-installer +Priority: optional +Provides: ntfs-modules +Depends: kernel-image-4.15.0-2-octeon-di +Description: NTFS filesystem support + This package contains the NTFS file system module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-octeon +Package-Type: udeb + +Package: xfs-modules-4.15.0-2-octeon-di +Architecture: mips mips64 mips64el mipsel +Section: debian-installer +Priority: standard +Provides: xfs-modules +Depends: kernel-image-4.15.0-2-octeon-di, crc-modules-4.15.0-2-octeon-di +Description: XFS filesystem support + This package contains the XFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-octeon +Package-Type: udeb + +Package: fat-modules-4.15.0-2-octeon-di +Architecture: mips mips64 mips64el mipsel +Section: debian-installer +Priority: optional +Provides: fat-modules +Depends: kernel-image-4.15.0-2-octeon-di +Description: FAT filesystem support + This package contains the FAT and VFAT filesystem modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-octeon +Package-Type: udeb + +Package: hfs-modules-4.15.0-2-octeon-di +Architecture: mips mips64 mips64el mipsel +Section: debian-installer +Priority: optional +Provides: hfs-modules +Depends: kernel-image-4.15.0-2-octeon-di +Description: HFS filesystem support + This package contains the HFS and HFS+ filesystem modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-octeon +Package-Type: udeb + +Package: affs-modules-4.15.0-2-octeon-di +Architecture: mips mips64 mips64el mipsel +Section: debian-installer +Priority: optional +Provides: affs-modules +Depends: kernel-image-4.15.0-2-octeon-di +Description: Amiga filesystem support + This package contains the Amiga filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-octeon +Package-Type: udeb + +Package: minix-modules-4.15.0-2-octeon-di +Architecture: mips mips64 mips64el mipsel +Section: debian-installer +Priority: optional +Provides: minix-modules +Depends: kernel-image-4.15.0-2-octeon-di +Description: Minix filesystem support + This package contains the Minix filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-octeon +Package-Type: udeb + +Package: md-modules-4.15.0-2-octeon-di +Architecture: mips mips64 mips64el mipsel +Section: debian-installer +Priority: optional +Provides: md-modules +Depends: kernel-image-4.15.0-2-octeon-di, crc-modules-4.15.0-2-octeon-di +Description: RAID and LVM support + This package contains RAID and LVM modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-octeon +Package-Type: udeb + +Package: multipath-modules-4.15.0-2-octeon-di +Architecture: mips mips64 mips64el mipsel +Section: debian-installer +Priority: optional +Provides: multipath-modules +Depends: kernel-image-4.15.0-2-octeon-di, md-modules-4.15.0-2-octeon-di, scsi-core-modules-4.15.0-2-octeon-di +Description: Multipath support + This package contains DM-Multipath modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-octeon +Package-Type: udeb + +Package: usb-modules-4.15.0-2-octeon-di +Architecture: mips mips64 mips64el mipsel +Section: debian-installer +Priority: optional +Provides: usb-modules +Depends: kernel-image-4.15.0-2-octeon-di +Description: USB support + This package contains core USB drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-octeon +Package-Type: udeb + +Package: usb-storage-modules-4.15.0-2-octeon-di +Architecture: mips mips64 mips64el mipsel +Section: debian-installer +Priority: standard +Provides: usb-storage-modules +Depends: kernel-image-4.15.0-2-octeon-di, scsi-core-modules-4.15.0-2-octeon-di, usb-modules-4.15.0-2-octeon-di +Description: USB storage support + This package contains the USB storage driver for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-octeon +Package-Type: udeb + +Package: input-modules-4.15.0-2-octeon-di +Architecture: mips mips64 mips64el mipsel +Section: debian-installer +Priority: optional +Provides: input-modules +Depends: kernel-image-4.15.0-2-octeon-di, usb-modules-4.15.0-2-octeon-di +Description: Input devices support + This package contains input device drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-octeon +Package-Type: udeb + +Package: event-modules-4.15.0-2-octeon-di +Architecture: mips mips64 mips64el mipsel +Section: debian-installer +Priority: optional +Provides: event-modules +Depends: kernel-image-4.15.0-2-octeon-di +Description: Event support + This package contains event drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-octeon +Package-Type: udeb + +Package: nic-usb-modules-4.15.0-2-octeon-di +Architecture: mips mips64 mips64el mipsel +Section: debian-installer +Priority: standard +Provides: nic-usb-modules +Depends: kernel-image-4.15.0-2-octeon-di, nic-shared-modules-4.15.0-2-octeon-di, nic-wireless-modules-4.15.0-2-octeon-di, usb-modules-4.15.0-2-octeon-di, crc-modules-4.15.0-2-octeon-di +Description: USB NIC drivers + This package contains USB network adapter drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-octeon +Package-Type: udeb + +Package: sata-modules-4.15.0-2-octeon-di +Architecture: mips mips64 mips64el mipsel +Section: debian-installer +Priority: standard +Provides: sata-modules +Depends: kernel-image-4.15.0-2-octeon-di, scsi-core-modules-4.15.0-2-octeon-di +Description: SATA drivers + This package contains SATA drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-octeon +Package-Type: udeb + +Package: crc-modules-4.15.0-2-octeon-di +Architecture: mips mips64 mips64el mipsel +Section: debian-installer +Priority: optional +Provides: crc-modules +Depends: kernel-image-4.15.0-2-octeon-di +Description: CRC modules + This package contains CRC support modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-octeon +Package-Type: udeb + +Package: crypto-modules-4.15.0-2-octeon-di +Architecture: mips mips64 mips64el mipsel +Section: debian-installer +Priority: optional +Provides: crypto-modules +Depends: kernel-image-4.15.0-2-octeon-di +Description: crypto modules + This package contains crypto modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-octeon +Package-Type: udeb + +Package: crypto-dm-modules-4.15.0-2-octeon-di +Architecture: mips mips64 mips64el mipsel +Section: debian-installer +Priority: optional +Provides: crypto-dm-modules +Depends: kernel-image-4.15.0-2-octeon-di, md-modules-4.15.0-2-octeon-di +Description: devicemapper crypto module + This package contains the devicemapper crypto (dm-crypt) module. +Build-Profiles: +Kernel-Version: 4.15.0-2-octeon +Package-Type: udeb + +Package: nbd-modules-4.15.0-2-octeon-di +Architecture: mips mips64 mips64el mipsel +Section: debian-installer +Priority: optional +Provides: nbd-modules +Depends: kernel-image-4.15.0-2-octeon-di +Description: Network Block Device modules + This package contains the modules required for support of the Network + Block Device +Build-Profiles: +Kernel-Version: 4.15.0-2-octeon +Package-Type: udeb + +Package: squashfs-modules-4.15.0-2-octeon-di +Architecture: mips mips64 mips64el mipsel +Section: debian-installer +Priority: optional +Provides: squashfs-modules +Depends: kernel-image-4.15.0-2-octeon-di +Description: squashfs modules + This package contains squashfs modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-octeon +Package-Type: udeb + +Package: rtc-modules-4.15.0-2-octeon-di +Architecture: mips mips64 mips64el mipsel +Section: debian-installer +Priority: optional +Provides: rtc-modules +Depends: kernel-image-4.15.0-2-octeon-di +Description: RTC modules + This package contains RTC modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-octeon +Package-Type: udeb + +Package: virtio-modules-4.15.0-2-octeon-di +Architecture: mips mips64 mips64el mipsel +Section: debian-installer +Priority: optional +Provides: virtio-modules +Depends: kernel-image-4.15.0-2-octeon-di, scsi-core-modules-4.15.0-2-octeon-di +Description: virtio modules + This package contains virtio modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-octeon +Package-Type: udeb + +Package: sound-modules-4.15.0-2-octeon-di +Architecture: mips mips64 mips64el mipsel +Section: debian-installer +Priority: optional +Provides: sound-modules +Depends: kernel-image-4.15.0-2-octeon-di, usb-modules-4.15.0-2-octeon-di, crc-modules-4.15.0-2-octeon-di +Description: sound support + This package contains sound modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-octeon +Package-Type: udeb + +Package: zlib-modules-4.15.0-2-octeon-di +Architecture: mips mips64 mips64el mipsel +Section: debian-installer +Priority: optional +Provides: zlib-modules +Depends: kernel-image-4.15.0-2-octeon-di +Description: zlib modules + This package contains zlib modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-octeon +Package-Type: udeb + +Package: udf-modules-4.15.0-2-octeon-di +Architecture: mips mips64 mips64el mipsel +Section: debian-installer +Priority: optional +Provides: udf-modules +Depends: kernel-image-4.15.0-2-octeon-di, crc-modules-4.15.0-2-octeon-di +Description: UDF modules + This package contains the UDF filesystem module. +Build-Profiles: +Kernel-Version: 4.15.0-2-octeon +Package-Type: udeb + +Package: fuse-modules-4.15.0-2-octeon-di +Architecture: mips mips64 mips64el mipsel +Section: debian-installer +Priority: optional +Provides: fuse-modules +Depends: kernel-image-4.15.0-2-octeon-di +Description: FUSE modules + This package contains the Filesystem in Userspace (FUSE) module. +Build-Profiles: +Kernel-Version: 4.15.0-2-octeon +Package-Type: udeb + +Package: linux-image-4.15.0-2-4kc-malta +Architecture: mips mipsel +Depends: kmod, linux-base (>= 4.3~), ${misc:Depends}, initramfs-tools (>= 0.120+deb8u2) [mips mipsel] | linux-initramfs-tool [mips mipsel] +Recommends: firmware-linux-free, ${kernel:Recommends}, apparmor [mips mipsel] +Suggests: linux-doc-4.15, debian-kernel-handbook +Breaks: initramfs-tools (<< 0.120+deb8u2) +Description: Linux 4.15 for MIPS Malta + The Linux kernel 4.15 and modules for use on MIPS Malta boards. +Build-Profiles: + +Package: linux-headers-4.15.0-2-4kc-malta +Architecture: mips mipsel +Depends: linux-headers-4.15.0-2-common (= ${source:Version}), linux-kbuild-4.15, ${misc:Depends}, gcc-7 +Description: Header files for Linux 4.15.0-2-4kc-malta + This package provides the architecture-specific kernel header files for + Linux kernel 4.15.0-2-4kc-malta, generally used for building out-of-tree + kernel modules. These files are going to be installed into + /usr/src/linux-headers-4.15.0-2-4kc-malta, and can be used for building + modules that load into the kernel provided by the + linux-image-4.15.0-2-4kc-malta package. +Build-Profiles: + +Package: linux-image-4.15.0-2-4kc-malta-dbg +Architecture: mips mipsel +Section: debug +Priority: optional +Depends: ${misc:Depends} +Description: Debug symbols for linux-image-4.15.0-2-4kc-malta + This package provides the detached debug symbols for the Linux kernel and + modules in linux-image-4.15.0-2-4kc-malta. +Build-Profiles: + +Package: linux-image-4.15.0-2-5kc-malta +Architecture: mips mips64 mips64el mipsel +Depends: kmod, linux-base (>= 4.3~), ${misc:Depends}, initramfs-tools (>= 0.120+deb8u2) [mips mips64 mips64el mipsel] | linux-initramfs-tool [mips mips64 mips64el mipsel] +Recommends: firmware-linux-free, ${kernel:Recommends}, apparmor [mips mips64 mips64el mipsel] +Suggests: linux-doc-4.15, debian-kernel-handbook +Breaks: initramfs-tools (<< 0.120+deb8u2) +Description: Linux 4.15 for MIPS Malta (64-bit) + The Linux kernel 4.15 and modules for use on MIPS Malta boards (64-bit). +Build-Profiles: + +Package: linux-headers-4.15.0-2-5kc-malta +Architecture: mips mips64 mips64el mipsel +Depends: linux-headers-4.15.0-2-common (= ${source:Version}), linux-kbuild-4.15, ${misc:Depends}, gcc-7 +Description: Header files for Linux 4.15.0-2-5kc-malta + This package provides the architecture-specific kernel header files for + Linux kernel 4.15.0-2-5kc-malta, generally used for building out-of-tree + kernel modules. These files are going to be installed into + /usr/src/linux-headers-4.15.0-2-5kc-malta, and can be used for building + modules that load into the kernel provided by the + linux-image-4.15.0-2-5kc-malta package. +Build-Profiles: + +Package: linux-image-4.15.0-2-5kc-malta-dbg +Architecture: mips mips64 mips64el mipsel +Section: debug +Priority: optional +Depends: ${misc:Depends} +Description: Debug symbols for linux-image-4.15.0-2-5kc-malta + This package provides the detached debug symbols for the Linux kernel and + modules in linux-image-4.15.0-2-5kc-malta. +Build-Profiles: + +Package: linux-image-4.15.0-2-octeon +Architecture: mips mips64 mips64el mipsel +Depends: kmod, linux-base (>= 4.3~), ${misc:Depends}, initramfs-tools (>= 0.120+deb8u2) [mips mips64 mips64el mipsel] | linux-initramfs-tool [mips mips64 mips64el mipsel] +Recommends: firmware-linux-free, ${kernel:Recommends}, apparmor [mips mips64 mips64el mipsel] +Suggests: linux-doc-4.15, debian-kernel-handbook +Breaks: initramfs-tools (<< 0.120+deb8u2) +Description: Linux 4.15 for Octeon + The Linux kernel 4.15 and modules for use on Cavium Networks Octeon. +Build-Profiles: + +Package: linux-headers-4.15.0-2-octeon +Architecture: mips mips64 mips64el mipsel +Depends: linux-headers-4.15.0-2-common (= ${source:Version}), linux-kbuild-4.15, ${misc:Depends}, gcc-7 +Description: Header files for Linux 4.15.0-2-octeon + This package provides the architecture-specific kernel header files for + Linux kernel 4.15.0-2-octeon, generally used for building out-of-tree + kernel modules. These files are going to be installed into + /usr/src/linux-headers-4.15.0-2-octeon, and can be used for building + modules that load into the kernel provided by the + linux-image-4.15.0-2-octeon package. +Build-Profiles: + +Package: linux-image-4.15.0-2-octeon-dbg +Architecture: mips mips64 mips64el mipsel +Section: debug +Priority: optional +Depends: ${misc:Depends} +Description: Debug symbols for linux-image-4.15.0-2-octeon + This package provides the detached debug symbols for the Linux kernel and + modules in linux-image-4.15.0-2-octeon. +Build-Profiles: + +Package: linux-headers-4.15.0-2-all-mips64 +Architecture: mips64 +Depends: ${misc:Depends}, linux-headers-4.15.0-2-5kc-malta (= ${binary:Version}), linux-headers-4.15.0-2-octeon (= ${binary:Version}) +Description: All header files for Linux 4.15 (meta-package) + This package depends against all architecture-specific kernel header files + for Linux kernel version 4.15, generally used for building out-of-tree + kernel modules. +Build-Profiles: + +Package: kernel-image-4.15.0-2-5kc-malta-di +Architecture: mips64 mips64el +Section: debian-installer +Priority: standard +Provides: kernel-image, rtc-modules +Description: Linux kernel image and core modules for the Debian installer + This package contains the kernel image and core modules for the Debian + installer boot images. It does _not_ provide a usable kernel for your + full Debian system. +Build-Profiles: +Kernel-Version: 4.15.0-2-5kc-malta +Package-Type: udeb + +Package: nic-modules-4.15.0-2-5kc-malta-di +Architecture: mips64 mips64el +Section: debian-installer +Priority: standard +Provides: nic-modules, nic-extra-modules +Depends: kernel-image-4.15.0-2-5kc-malta-di, nic-shared-modules-4.15.0-2-5kc-malta-di, i2c-modules-4.15.0-2-5kc-malta-di, crc-modules-4.15.0-2-5kc-malta-di +Description: NIC drivers + This package contains Ethernet and some paravirtualised network drivers + for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-5kc-malta +Package-Type: udeb + +Package: nic-wireless-modules-4.15.0-2-5kc-malta-di +Architecture: mips64 mips64el +Section: debian-installer +Priority: standard +Provides: nic-wireless-modules +Depends: kernel-image-4.15.0-2-5kc-malta-di, nic-shared-modules-4.15.0-2-5kc-malta-di, usb-modules-4.15.0-2-5kc-malta-di, mmc-modules-4.15.0-2-5kc-malta-di, crc-modules-4.15.0-2-5kc-malta-di +Description: Wireless NIC drivers + This package contains wireless NIC drivers for the kernel. Includes + crypto modules only needed for wireless (WEP, WPA). +Build-Profiles: +Kernel-Version: 4.15.0-2-5kc-malta +Package-Type: udeb + +Package: nic-shared-modules-4.15.0-2-5kc-malta-di +Architecture: mips64 mips64el +Section: debian-installer +Priority: standard +Provides: nic-shared-modules +Depends: kernel-image-4.15.0-2-5kc-malta-di +Description: Shared NIC drivers + This package contains NIC drivers needed by combinations of nic-modules, + nic-pcmcia-modules, nic-usb-modules and nic-wireless-modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-5kc-malta +Package-Type: udeb + +Package: usb-serial-modules-4.15.0-2-5kc-malta-di +Architecture: mips64 mips64el +Section: debian-installer +Priority: optional +Provides: usb-serial-modules +Depends: kernel-image-4.15.0-2-5kc-malta-di, usb-modules-4.15.0-2-5kc-malta-di +Description: USB serial drivers + This package contains USB serial drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-5kc-malta +Package-Type: udeb + +Package: ppp-modules-4.15.0-2-5kc-malta-di +Architecture: mips64 mips64el +Section: debian-installer +Priority: optional +Provides: ppp-modules +Depends: kernel-image-4.15.0-2-5kc-malta-di, zlib-modules-4.15.0-2-5kc-malta-di, crc-modules-4.15.0-2-5kc-malta-di +Description: PPP drivers + This package contains PPP drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-5kc-malta +Package-Type: udeb + +Package: pata-modules-4.15.0-2-5kc-malta-di +Architecture: mips64 mips64el +Section: debian-installer +Priority: standard +Provides: pata-modules +Depends: kernel-image-4.15.0-2-5kc-malta-di, ata-modules-4.15.0-2-5kc-malta-di +Description: PATA drivers + This package contains PATA drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-5kc-malta +Package-Type: udeb + +Package: cdrom-core-modules-4.15.0-2-5kc-malta-di +Architecture: mips64 mips64el +Section: debian-installer +Priority: standard +Provides: cdrom-core-modules +Depends: kernel-image-4.15.0-2-5kc-malta-di, scsi-core-modules-4.15.0-2-5kc-malta-di, isofs-modules-4.15.0-2-5kc-malta-di +Description: CDROM support + This package contains core CDROM support for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-5kc-malta +Package-Type: udeb + +Package: scsi-core-modules-4.15.0-2-5kc-malta-di +Architecture: mips64 mips64el +Section: debian-installer +Priority: standard +Provides: scsi-core-modules +Depends: kernel-image-4.15.0-2-5kc-malta-di +Description: Core SCSI subsystem + This package contains the core SCSI subsystem for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-5kc-malta +Package-Type: udeb + +Package: scsi-modules-4.15.0-2-5kc-malta-di +Architecture: mips64 mips64el +Section: debian-installer +Priority: standard +Provides: scsi-modules +Depends: kernel-image-4.15.0-2-5kc-malta-di, scsi-core-modules-4.15.0-2-5kc-malta-di, cdrom-core-modules-4.15.0-2-5kc-malta-di, ata-modules-4.15.0-2-5kc-malta-di +Description: SCSI drivers + This package contains SCSI drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-5kc-malta +Package-Type: udeb + +Package: loop-modules-4.15.0-2-5kc-malta-di +Architecture: mips64 mips64el +Section: debian-installer +Priority: standard +Provides: loop-modules +Depends: kernel-image-4.15.0-2-5kc-malta-di +Description: Loopback filesystem support + This package contains loopback filesystem support for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-5kc-malta +Package-Type: udeb + +Package: btrfs-modules-4.15.0-2-5kc-malta-di +Architecture: mips64 mips64el +Section: debian-installer +Priority: optional +Provides: btrfs-modules +Depends: kernel-image-4.15.0-2-5kc-malta-di, crc-modules-4.15.0-2-5kc-malta-di, zlib-modules-4.15.0-2-5kc-malta-di, md-modules-4.15.0-2-5kc-malta-di +Description: BTRFS filesystem support + This package contains the BTRFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-5kc-malta +Package-Type: udeb + +Package: ext4-modules-4.15.0-2-5kc-malta-di +Architecture: mips64 mips64el +Section: debian-installer +Priority: standard +Provides: ext4-modules, ext2-modules, ext3-modules +Depends: kernel-image-4.15.0-2-5kc-malta-di, crc-modules-4.15.0-2-5kc-malta-di +Description: ext2/ext3/ext4 filesystem support + This package contains the ext4 filesystem module for the kernel, which + also supports ext2 and ext3. +Build-Profiles: +Kernel-Version: 4.15.0-2-5kc-malta +Package-Type: udeb + +Package: isofs-modules-4.15.0-2-5kc-malta-di +Architecture: mips64 mips64el +Section: debian-installer +Priority: standard +Provides: isofs-modules +Depends: kernel-image-4.15.0-2-5kc-malta-di +Description: ISOFS filesystem support + This package contains the ISOFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-5kc-malta +Package-Type: udeb + +Package: jfs-modules-4.15.0-2-5kc-malta-di +Architecture: mips64 mips64el +Section: debian-installer +Priority: standard +Provides: jfs-modules +Depends: kernel-image-4.15.0-2-5kc-malta-di +Description: JFS filesystem support + This package contains the JFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-5kc-malta +Package-Type: udeb + +Package: ntfs-modules-4.15.0-2-5kc-malta-di +Architecture: mips64 mips64el +Section: debian-installer +Priority: optional +Provides: ntfs-modules +Depends: kernel-image-4.15.0-2-5kc-malta-di +Description: NTFS filesystem support + This package contains the NTFS file system module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-5kc-malta +Package-Type: udeb + +Package: xfs-modules-4.15.0-2-5kc-malta-di +Architecture: mips64 mips64el +Section: debian-installer +Priority: standard +Provides: xfs-modules +Depends: kernel-image-4.15.0-2-5kc-malta-di, crc-modules-4.15.0-2-5kc-malta-di +Description: XFS filesystem support + This package contains the XFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-5kc-malta +Package-Type: udeb + +Package: fat-modules-4.15.0-2-5kc-malta-di +Architecture: mips64 mips64el +Section: debian-installer +Priority: optional +Provides: fat-modules +Depends: kernel-image-4.15.0-2-5kc-malta-di +Description: FAT filesystem support + This package contains the FAT and VFAT filesystem modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-5kc-malta +Package-Type: udeb + +Package: hfs-modules-4.15.0-2-5kc-malta-di +Architecture: mips64 mips64el +Section: debian-installer +Priority: optional +Provides: hfs-modules +Depends: kernel-image-4.15.0-2-5kc-malta-di +Description: HFS filesystem support + This package contains the HFS and HFS+ filesystem modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-5kc-malta +Package-Type: udeb + +Package: affs-modules-4.15.0-2-5kc-malta-di +Architecture: mips64 mips64el +Section: debian-installer +Priority: optional +Provides: affs-modules +Depends: kernel-image-4.15.0-2-5kc-malta-di +Description: Amiga filesystem support + This package contains the Amiga filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-5kc-malta +Package-Type: udeb + +Package: minix-modules-4.15.0-2-5kc-malta-di +Architecture: mips64 mips64el +Section: debian-installer +Priority: optional +Provides: minix-modules +Depends: kernel-image-4.15.0-2-5kc-malta-di +Description: Minix filesystem support + This package contains the Minix filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-5kc-malta +Package-Type: udeb + +Package: md-modules-4.15.0-2-5kc-malta-di +Architecture: mips64 mips64el +Section: debian-installer +Priority: optional +Provides: md-modules +Depends: kernel-image-4.15.0-2-5kc-malta-di, crc-modules-4.15.0-2-5kc-malta-di +Description: RAID and LVM support + This package contains RAID and LVM modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-5kc-malta +Package-Type: udeb + +Package: multipath-modules-4.15.0-2-5kc-malta-di +Architecture: mips64 mips64el +Section: debian-installer +Priority: optional +Provides: multipath-modules +Depends: kernel-image-4.15.0-2-5kc-malta-di, md-modules-4.15.0-2-5kc-malta-di, scsi-core-modules-4.15.0-2-5kc-malta-di +Description: Multipath support + This package contains DM-Multipath modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-5kc-malta +Package-Type: udeb + +Package: usb-modules-4.15.0-2-5kc-malta-di +Architecture: mips64 mips64el +Section: debian-installer +Priority: optional +Provides: usb-modules +Depends: kernel-image-4.15.0-2-5kc-malta-di +Description: USB support + This package contains core USB drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-5kc-malta +Package-Type: udeb + +Package: usb-storage-modules-4.15.0-2-5kc-malta-di +Architecture: mips64 mips64el +Section: debian-installer +Priority: standard +Provides: usb-storage-modules +Depends: kernel-image-4.15.0-2-5kc-malta-di, scsi-core-modules-4.15.0-2-5kc-malta-di, usb-modules-4.15.0-2-5kc-malta-di +Description: USB storage support + This package contains the USB storage driver for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-5kc-malta +Package-Type: udeb + +Package: input-modules-4.15.0-2-5kc-malta-di +Architecture: mips64 mips64el +Section: debian-installer +Priority: optional +Provides: input-modules +Depends: kernel-image-4.15.0-2-5kc-malta-di, usb-modules-4.15.0-2-5kc-malta-di, i2c-modules-4.15.0-2-5kc-malta-di +Description: Input devices support + This package contains input device drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-5kc-malta +Package-Type: udeb + +Package: event-modules-4.15.0-2-5kc-malta-di +Architecture: mips64 mips64el +Section: debian-installer +Priority: optional +Provides: event-modules +Depends: kernel-image-4.15.0-2-5kc-malta-di +Description: Event support + This package contains event drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-5kc-malta +Package-Type: udeb + +Package: mouse-modules-4.15.0-2-5kc-malta-di +Architecture: mips64 mips64el +Section: debian-installer +Priority: optional +Provides: mouse-modules +Depends: kernel-image-4.15.0-2-5kc-malta-di, event-modules-4.15.0-2-5kc-malta-di, input-modules-4.15.0-2-5kc-malta-di, usb-modules-4.15.0-2-5kc-malta-di +Description: Mouse support + This package contains mouse drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-5kc-malta +Package-Type: udeb + +Package: nic-usb-modules-4.15.0-2-5kc-malta-di +Architecture: mips64 mips64el +Section: debian-installer +Priority: standard +Provides: nic-usb-modules +Depends: kernel-image-4.15.0-2-5kc-malta-di, nic-shared-modules-4.15.0-2-5kc-malta-di, nic-wireless-modules-4.15.0-2-5kc-malta-di, usb-modules-4.15.0-2-5kc-malta-di, crc-modules-4.15.0-2-5kc-malta-di +Description: USB NIC drivers + This package contains USB network adapter drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-5kc-malta +Package-Type: udeb + +Package: sata-modules-4.15.0-2-5kc-malta-di +Architecture: mips64 mips64el +Section: debian-installer +Priority: standard +Provides: sata-modules +Depends: kernel-image-4.15.0-2-5kc-malta-di, scsi-core-modules-4.15.0-2-5kc-malta-di, ata-modules-4.15.0-2-5kc-malta-di +Description: SATA drivers + This package contains SATA drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-5kc-malta +Package-Type: udeb + +Package: i2c-modules-4.15.0-2-5kc-malta-di +Architecture: mips64 mips64el +Section: debian-installer +Priority: optional +Provides: i2c-modules +Depends: kernel-image-4.15.0-2-5kc-malta-di +Description: i2c support modules + This package contains basic i2c support modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-5kc-malta +Package-Type: udeb + +Package: crc-modules-4.15.0-2-5kc-malta-di +Architecture: mips64 mips64el +Section: debian-installer +Priority: optional +Provides: crc-modules +Depends: kernel-image-4.15.0-2-5kc-malta-di +Description: CRC modules + This package contains CRC support modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-5kc-malta +Package-Type: udeb + +Package: crypto-modules-4.15.0-2-5kc-malta-di +Architecture: mips64 mips64el +Section: debian-installer +Priority: optional +Provides: crypto-modules +Depends: kernel-image-4.15.0-2-5kc-malta-di +Description: crypto modules + This package contains crypto modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-5kc-malta +Package-Type: udeb + +Package: crypto-dm-modules-4.15.0-2-5kc-malta-di +Architecture: mips64 mips64el +Section: debian-installer +Priority: optional +Provides: crypto-dm-modules +Depends: kernel-image-4.15.0-2-5kc-malta-di, md-modules-4.15.0-2-5kc-malta-di +Description: devicemapper crypto module + This package contains the devicemapper crypto (dm-crypt) module. +Build-Profiles: +Kernel-Version: 4.15.0-2-5kc-malta +Package-Type: udeb + +Package: ata-modules-4.15.0-2-5kc-malta-di +Architecture: mips64 mips64el +Section: debian-installer +Priority: optional +Provides: ata-modules +Depends: kernel-image-4.15.0-2-5kc-malta-di, scsi-core-modules-4.15.0-2-5kc-malta-di +Description: ATA disk modules + This package contains core ATA disk modules used by both PATA and SATA + disk drivers. +Build-Profiles: +Kernel-Version: 4.15.0-2-5kc-malta +Package-Type: udeb + +Package: mmc-core-modules-4.15.0-2-5kc-malta-di +Architecture: mips64 mips64el +Section: debian-installer +Priority: optional +Provides: mmc-core-modules +Depends: kernel-image-4.15.0-2-5kc-malta-di +Description: MMC/SD/SDIO core modules + This package contains core modules for MMC/SD/SDIO support. +Build-Profiles: +Kernel-Version: 4.15.0-2-5kc-malta +Package-Type: udeb + +Package: mmc-modules-4.15.0-2-5kc-malta-di +Architecture: mips64 mips64el +Section: debian-installer +Priority: optional +Provides: mmc-modules +Depends: kernel-image-4.15.0-2-5kc-malta-di, mmc-core-modules-4.15.0-2-5kc-malta-di, usb-modules-4.15.0-2-5kc-malta-di, crc-modules-4.15.0-2-5kc-malta-di +Description: MMC/SD card modules + This package contains modules needed to support MMC (multimedia) and SD + cards. +Build-Profiles: +Kernel-Version: 4.15.0-2-5kc-malta +Package-Type: udeb + +Package: nbd-modules-4.15.0-2-5kc-malta-di +Architecture: mips64 mips64el +Section: debian-installer +Priority: optional +Provides: nbd-modules +Depends: kernel-image-4.15.0-2-5kc-malta-di +Description: Network Block Device modules + This package contains the modules required for support of the Network + Block Device +Build-Profiles: +Kernel-Version: 4.15.0-2-5kc-malta +Package-Type: udeb + +Package: squashfs-modules-4.15.0-2-5kc-malta-di +Architecture: mips64 mips64el +Section: debian-installer +Priority: optional +Provides: squashfs-modules +Depends: kernel-image-4.15.0-2-5kc-malta-di +Description: squashfs modules + This package contains squashfs modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-5kc-malta +Package-Type: udeb + +Package: virtio-modules-4.15.0-2-5kc-malta-di +Architecture: mips64 mips64el +Section: debian-installer +Priority: optional +Provides: virtio-modules +Depends: kernel-image-4.15.0-2-5kc-malta-di, scsi-core-modules-4.15.0-2-5kc-malta-di +Description: virtio modules + This package contains virtio modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-5kc-malta +Package-Type: udeb + +Package: sound-modules-4.15.0-2-5kc-malta-di +Architecture: mips64 mips64el +Section: debian-installer +Priority: optional +Provides: sound-modules +Depends: kernel-image-4.15.0-2-5kc-malta-di, i2c-modules-4.15.0-2-5kc-malta-di, usb-modules-4.15.0-2-5kc-malta-di, crc-modules-4.15.0-2-5kc-malta-di +Description: sound support + This package contains sound modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-5kc-malta +Package-Type: udeb + +Package: zlib-modules-4.15.0-2-5kc-malta-di +Architecture: mips64 mips64el +Section: debian-installer +Priority: optional +Provides: zlib-modules +Depends: kernel-image-4.15.0-2-5kc-malta-di +Description: zlib modules + This package contains zlib modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-5kc-malta +Package-Type: udeb + +Package: udf-modules-4.15.0-2-5kc-malta-di +Architecture: mips64 mips64el +Section: debian-installer +Priority: optional +Provides: udf-modules +Depends: kernel-image-4.15.0-2-5kc-malta-di, crc-modules-4.15.0-2-5kc-malta-di +Description: UDF modules + This package contains the UDF filesystem module. +Build-Profiles: +Kernel-Version: 4.15.0-2-5kc-malta +Package-Type: udeb + +Package: fuse-modules-4.15.0-2-5kc-malta-di +Architecture: mips64 mips64el +Section: debian-installer +Priority: optional +Provides: fuse-modules +Depends: kernel-image-4.15.0-2-5kc-malta-di +Description: FUSE modules + This package contains the Filesystem in Userspace (FUSE) module. +Build-Profiles: +Kernel-Version: 4.15.0-2-5kc-malta +Package-Type: udeb + +Package: linux-headers-4.15.0-2-all-mips64el +Architecture: mips64el +Depends: ${misc:Depends}, linux-headers-4.15.0-2-5kc-malta (= ${binary:Version}), linux-headers-4.15.0-2-loongson-3 (= ${binary:Version}), linux-headers-4.15.0-2-octeon (= ${binary:Version}) +Description: All header files for Linux 4.15 (meta-package) + This package depends against all architecture-specific kernel header files + for Linux kernel version 4.15, generally used for building out-of-tree + kernel modules. +Build-Profiles: + +Package: kernel-image-4.15.0-2-loongson-3-di +Architecture: mips64el mipsel +Section: debian-installer +Priority: standard +Provides: kernel-image, i2c-modules, rtc-modules +Description: Linux kernel image and core modules for the Debian installer + This package contains the kernel image and core modules for the Debian + installer boot images. It does _not_ provide a usable kernel for your + full Debian system. +Build-Profiles: +Kernel-Version: 4.15.0-2-loongson-3 +Package-Type: udeb + +Package: nic-modules-4.15.0-2-loongson-3-di +Architecture: mips64el mipsel +Section: debian-installer +Priority: standard +Provides: nic-modules, nic-extra-modules +Depends: kernel-image-4.15.0-2-loongson-3-di, nic-shared-modules-4.15.0-2-loongson-3-di, crc-modules-4.15.0-2-loongson-3-di +Description: NIC drivers + This package contains Ethernet and some paravirtualised network drivers + for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-loongson-3 +Package-Type: udeb + +Package: nic-wireless-modules-4.15.0-2-loongson-3-di +Architecture: mips64el mipsel +Section: debian-installer +Priority: standard +Provides: nic-wireless-modules +Depends: kernel-image-4.15.0-2-loongson-3-di, nic-shared-modules-4.15.0-2-loongson-3-di, usb-modules-4.15.0-2-loongson-3-di, crc-modules-4.15.0-2-loongson-3-di +Description: Wireless NIC drivers + This package contains wireless NIC drivers for the kernel. Includes + crypto modules only needed for wireless (WEP, WPA). +Build-Profiles: +Kernel-Version: 4.15.0-2-loongson-3 +Package-Type: udeb + +Package: nic-shared-modules-4.15.0-2-loongson-3-di +Architecture: mips64el mipsel +Section: debian-installer +Priority: standard +Provides: nic-shared-modules +Depends: kernel-image-4.15.0-2-loongson-3-di +Description: Shared NIC drivers + This package contains NIC drivers needed by combinations of nic-modules, + nic-pcmcia-modules, nic-usb-modules and nic-wireless-modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-loongson-3 +Package-Type: udeb + +Package: usb-serial-modules-4.15.0-2-loongson-3-di +Architecture: mips64el mipsel +Section: debian-installer +Priority: optional +Provides: usb-serial-modules +Depends: kernel-image-4.15.0-2-loongson-3-di, usb-modules-4.15.0-2-loongson-3-di +Description: USB serial drivers + This package contains USB serial drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-loongson-3 +Package-Type: udeb + +Package: ppp-modules-4.15.0-2-loongson-3-di +Architecture: mips64el mipsel +Section: debian-installer +Priority: optional +Provides: ppp-modules +Depends: kernel-image-4.15.0-2-loongson-3-di, zlib-modules-4.15.0-2-loongson-3-di, crc-modules-4.15.0-2-loongson-3-di +Description: PPP drivers + This package contains PPP drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-loongson-3 +Package-Type: udeb + +Package: pata-modules-4.15.0-2-loongson-3-di +Architecture: mips64el mipsel +Section: debian-installer +Priority: standard +Provides: pata-modules +Depends: kernel-image-4.15.0-2-loongson-3-di, ata-modules-4.15.0-2-loongson-3-di +Description: PATA drivers + This package contains PATA drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-loongson-3 +Package-Type: udeb + +Package: cdrom-core-modules-4.15.0-2-loongson-3-di +Architecture: mips64el mipsel +Section: debian-installer +Priority: standard +Provides: cdrom-core-modules +Depends: kernel-image-4.15.0-2-loongson-3-di, scsi-core-modules-4.15.0-2-loongson-3-di, isofs-modules-4.15.0-2-loongson-3-di +Description: CDROM support + This package contains core CDROM support for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-loongson-3 +Package-Type: udeb + +Package: firewire-core-modules-4.15.0-2-loongson-3-di +Architecture: mips64el mipsel +Section: debian-installer +Priority: standard +Provides: firewire-core-modules +Depends: kernel-image-4.15.0-2-loongson-3-di, scsi-core-modules-4.15.0-2-loongson-3-di, crc-modules-4.15.0-2-loongson-3-di +Description: Core FireWire drivers + This package contains core FireWire drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-loongson-3 +Package-Type: udeb + +Package: scsi-core-modules-4.15.0-2-loongson-3-di +Architecture: mips64el mipsel +Section: debian-installer +Priority: standard +Provides: scsi-core-modules +Depends: kernel-image-4.15.0-2-loongson-3-di +Description: Core SCSI subsystem + This package contains the core SCSI subsystem for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-loongson-3 +Package-Type: udeb + +Package: scsi-modules-4.15.0-2-loongson-3-di +Architecture: mips64el mipsel +Section: debian-installer +Priority: standard +Provides: scsi-modules +Depends: kernel-image-4.15.0-2-loongson-3-di, scsi-core-modules-4.15.0-2-loongson-3-di, cdrom-core-modules-4.15.0-2-loongson-3-di, ata-modules-4.15.0-2-loongson-3-di +Description: SCSI drivers + This package contains SCSI drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-loongson-3 +Package-Type: udeb + +Package: loop-modules-4.15.0-2-loongson-3-di +Architecture: mips64el mipsel +Section: debian-installer +Priority: standard +Provides: loop-modules +Depends: kernel-image-4.15.0-2-loongson-3-di +Description: Loopback filesystem support + This package contains loopback filesystem support for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-loongson-3 +Package-Type: udeb + +Package: btrfs-modules-4.15.0-2-loongson-3-di +Architecture: mips64el mipsel +Section: debian-installer +Priority: optional +Provides: btrfs-modules +Depends: kernel-image-4.15.0-2-loongson-3-di, crc-modules-4.15.0-2-loongson-3-di, zlib-modules-4.15.0-2-loongson-3-di, md-modules-4.15.0-2-loongson-3-di +Description: BTRFS filesystem support + This package contains the BTRFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-loongson-3 +Package-Type: udeb + +Package: ext4-modules-4.15.0-2-loongson-3-di +Architecture: mips64el mipsel +Section: debian-installer +Priority: standard +Provides: ext4-modules, ext2-modules, ext3-modules +Depends: kernel-image-4.15.0-2-loongson-3-di, crc-modules-4.15.0-2-loongson-3-di +Description: ext2/ext3/ext4 filesystem support + This package contains the ext4 filesystem module for the kernel, which + also supports ext2 and ext3. +Build-Profiles: +Kernel-Version: 4.15.0-2-loongson-3 +Package-Type: udeb + +Package: isofs-modules-4.15.0-2-loongson-3-di +Architecture: mips64el mipsel +Section: debian-installer +Priority: standard +Provides: isofs-modules +Depends: kernel-image-4.15.0-2-loongson-3-di +Description: ISOFS filesystem support + This package contains the ISOFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-loongson-3 +Package-Type: udeb + +Package: jfs-modules-4.15.0-2-loongson-3-di +Architecture: mips64el mipsel +Section: debian-installer +Priority: standard +Provides: jfs-modules +Depends: kernel-image-4.15.0-2-loongson-3-di +Description: JFS filesystem support + This package contains the JFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-loongson-3 +Package-Type: udeb + +Package: ntfs-modules-4.15.0-2-loongson-3-di +Architecture: mips64el mipsel +Section: debian-installer +Priority: optional +Provides: ntfs-modules +Depends: kernel-image-4.15.0-2-loongson-3-di +Description: NTFS filesystem support + This package contains the NTFS file system module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-loongson-3 +Package-Type: udeb + +Package: xfs-modules-4.15.0-2-loongson-3-di +Architecture: mips64el mipsel +Section: debian-installer +Priority: standard +Provides: xfs-modules +Depends: kernel-image-4.15.0-2-loongson-3-di, crc-modules-4.15.0-2-loongson-3-di +Description: XFS filesystem support + This package contains the XFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-loongson-3 +Package-Type: udeb + +Package: fat-modules-4.15.0-2-loongson-3-di +Architecture: mips64el mipsel +Section: debian-installer +Priority: optional +Provides: fat-modules +Depends: kernel-image-4.15.0-2-loongson-3-di +Description: FAT filesystem support + This package contains the FAT and VFAT filesystem modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-loongson-3 +Package-Type: udeb + +Package: hfs-modules-4.15.0-2-loongson-3-di +Architecture: mips64el mipsel +Section: debian-installer +Priority: optional +Provides: hfs-modules +Depends: kernel-image-4.15.0-2-loongson-3-di +Description: HFS filesystem support + This package contains the HFS and HFS+ filesystem modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-loongson-3 +Package-Type: udeb + +Package: affs-modules-4.15.0-2-loongson-3-di +Architecture: mips64el mipsel +Section: debian-installer +Priority: optional +Provides: affs-modules +Depends: kernel-image-4.15.0-2-loongson-3-di +Description: Amiga filesystem support + This package contains the Amiga filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-loongson-3 +Package-Type: udeb + +Package: minix-modules-4.15.0-2-loongson-3-di +Architecture: mips64el mipsel +Section: debian-installer +Priority: optional +Provides: minix-modules +Depends: kernel-image-4.15.0-2-loongson-3-di +Description: Minix filesystem support + This package contains the Minix filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-loongson-3 +Package-Type: udeb + +Package: nfs-modules-4.15.0-2-loongson-3-di +Architecture: mips64el mipsel +Section: debian-installer +Priority: optional +Provides: nfs-modules +Depends: kernel-image-4.15.0-2-loongson-3-di +Description: NFS filesystem support + This package contains the NFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-loongson-3 +Package-Type: udeb + +Package: md-modules-4.15.0-2-loongson-3-di +Architecture: mips64el mipsel +Section: debian-installer +Priority: optional +Provides: md-modules +Depends: kernel-image-4.15.0-2-loongson-3-di, crc-modules-4.15.0-2-loongson-3-di +Description: RAID and LVM support + This package contains RAID and LVM modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-loongson-3 +Package-Type: udeb + +Package: multipath-modules-4.15.0-2-loongson-3-di +Architecture: mips64el mipsel +Section: debian-installer +Priority: optional +Provides: multipath-modules +Depends: kernel-image-4.15.0-2-loongson-3-di, md-modules-4.15.0-2-loongson-3-di, scsi-core-modules-4.15.0-2-loongson-3-di +Description: Multipath support + This package contains DM-Multipath modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-loongson-3 +Package-Type: udeb + +Package: usb-modules-4.15.0-2-loongson-3-di +Architecture: mips64el mipsel +Section: debian-installer +Priority: optional +Provides: usb-modules +Depends: kernel-image-4.15.0-2-loongson-3-di +Description: USB support + This package contains core USB drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-loongson-3 +Package-Type: udeb + +Package: usb-storage-modules-4.15.0-2-loongson-3-di +Architecture: mips64el mipsel +Section: debian-installer +Priority: standard +Provides: usb-storage-modules +Depends: kernel-image-4.15.0-2-loongson-3-di, scsi-core-modules-4.15.0-2-loongson-3-di, usb-modules-4.15.0-2-loongson-3-di +Description: USB storage support + This package contains the USB storage driver for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-loongson-3 +Package-Type: udeb + +Package: fb-modules-4.15.0-2-loongson-3-di +Architecture: mips64el mipsel +Section: debian-installer +Priority: optional +Provides: fb-modules +Depends: kernel-image-4.15.0-2-loongson-3-di +Description: Frame buffer support + This package contains Frame buffer drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-loongson-3 +Package-Type: udeb + +Package: input-modules-4.15.0-2-loongson-3-di +Architecture: mips64el mipsel +Section: debian-installer +Priority: optional +Provides: input-modules +Depends: kernel-image-4.15.0-2-loongson-3-di, usb-modules-4.15.0-2-loongson-3-di +Description: Input devices support + This package contains input device drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-loongson-3 +Package-Type: udeb + +Package: event-modules-4.15.0-2-loongson-3-di +Architecture: mips64el mipsel +Section: debian-installer +Priority: optional +Provides: event-modules +Depends: kernel-image-4.15.0-2-loongson-3-di +Description: Event support + This package contains event drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-loongson-3 +Package-Type: udeb + +Package: nic-usb-modules-4.15.0-2-loongson-3-di +Architecture: mips64el mipsel +Section: debian-installer +Priority: standard +Provides: nic-usb-modules +Depends: kernel-image-4.15.0-2-loongson-3-di, nic-shared-modules-4.15.0-2-loongson-3-di, nic-wireless-modules-4.15.0-2-loongson-3-di, usb-modules-4.15.0-2-loongson-3-di, crc-modules-4.15.0-2-loongson-3-di +Description: USB NIC drivers + This package contains USB network adapter drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-loongson-3 +Package-Type: udeb + +Package: sata-modules-4.15.0-2-loongson-3-di +Architecture: mips64el mipsel +Section: debian-installer +Priority: standard +Provides: sata-modules +Depends: kernel-image-4.15.0-2-loongson-3-di, scsi-core-modules-4.15.0-2-loongson-3-di, ata-modules-4.15.0-2-loongson-3-di +Description: SATA drivers + This package contains SATA drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-loongson-3 +Package-Type: udeb + +Package: crc-modules-4.15.0-2-loongson-3-di +Architecture: mips64el mipsel +Section: debian-installer +Priority: optional +Provides: crc-modules +Depends: kernel-image-4.15.0-2-loongson-3-di +Description: CRC modules + This package contains CRC support modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-loongson-3 +Package-Type: udeb + +Package: crypto-modules-4.15.0-2-loongson-3-di +Architecture: mips64el mipsel +Section: debian-installer +Priority: optional +Provides: crypto-modules +Depends: kernel-image-4.15.0-2-loongson-3-di +Description: crypto modules + This package contains crypto modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-loongson-3 +Package-Type: udeb + +Package: crypto-dm-modules-4.15.0-2-loongson-3-di +Architecture: mips64el mipsel +Section: debian-installer +Priority: optional +Provides: crypto-dm-modules +Depends: kernel-image-4.15.0-2-loongson-3-di, md-modules-4.15.0-2-loongson-3-di +Description: devicemapper crypto module + This package contains the devicemapper crypto (dm-crypt) module. +Build-Profiles: +Kernel-Version: 4.15.0-2-loongson-3 +Package-Type: udeb + +Package: ata-modules-4.15.0-2-loongson-3-di +Architecture: mips64el mipsel +Section: debian-installer +Priority: optional +Provides: ata-modules +Depends: kernel-image-4.15.0-2-loongson-3-di, scsi-core-modules-4.15.0-2-loongson-3-di +Description: ATA disk modules + This package contains core ATA disk modules used by both PATA and SATA + disk drivers. +Build-Profiles: +Kernel-Version: 4.15.0-2-loongson-3 +Package-Type: udeb + +Package: nbd-modules-4.15.0-2-loongson-3-di +Architecture: mips64el mipsel +Section: debian-installer +Priority: optional +Provides: nbd-modules +Depends: kernel-image-4.15.0-2-loongson-3-di +Description: Network Block Device modules + This package contains the modules required for support of the Network + Block Device +Build-Profiles: +Kernel-Version: 4.15.0-2-loongson-3 +Package-Type: udeb + +Package: squashfs-modules-4.15.0-2-loongson-3-di +Architecture: mips64el mipsel +Section: debian-installer +Priority: optional +Provides: squashfs-modules +Depends: kernel-image-4.15.0-2-loongson-3-di +Description: squashfs modules + This package contains squashfs modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-loongson-3 +Package-Type: udeb + +Package: speakup-modules-4.15.0-2-loongson-3-di +Architecture: mips64el mipsel +Section: debian-installer +Priority: optional +Provides: speakup-modules +Depends: kernel-image-4.15.0-2-loongson-3-di +Description: speakup modules + This package contains speakup modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-loongson-3 +Package-Type: udeb + +Package: virtio-modules-4.15.0-2-loongson-3-di +Architecture: mips64el mipsel +Section: debian-installer +Priority: optional +Provides: virtio-modules +Depends: kernel-image-4.15.0-2-loongson-3-di, scsi-core-modules-4.15.0-2-loongson-3-di +Description: virtio modules + This package contains virtio modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-loongson-3 +Package-Type: udeb + +Package: sound-modules-4.15.0-2-loongson-3-di +Architecture: mips64el mipsel +Section: debian-installer +Priority: optional +Provides: sound-modules +Depends: kernel-image-4.15.0-2-loongson-3-di, usb-modules-4.15.0-2-loongson-3-di, firewire-core-modules-4.15.0-2-loongson-3-di, crc-modules-4.15.0-2-loongson-3-di +Description: sound support + This package contains sound modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-loongson-3 +Package-Type: udeb + +Package: zlib-modules-4.15.0-2-loongson-3-di +Architecture: mips64el mipsel +Section: debian-installer +Priority: optional +Provides: zlib-modules +Depends: kernel-image-4.15.0-2-loongson-3-di +Description: zlib modules + This package contains zlib modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-loongson-3 +Package-Type: udeb + +Package: udf-modules-4.15.0-2-loongson-3-di +Architecture: mips64el mipsel +Section: debian-installer +Priority: optional +Provides: udf-modules +Depends: kernel-image-4.15.0-2-loongson-3-di, crc-modules-4.15.0-2-loongson-3-di +Description: UDF modules + This package contains the UDF filesystem module. +Build-Profiles: +Kernel-Version: 4.15.0-2-loongson-3 +Package-Type: udeb + +Package: fuse-modules-4.15.0-2-loongson-3-di +Architecture: mips64el mipsel +Section: debian-installer +Priority: optional +Provides: fuse-modules +Depends: kernel-image-4.15.0-2-loongson-3-di +Description: FUSE modules + This package contains the Filesystem in Userspace (FUSE) module. +Build-Profiles: +Kernel-Version: 4.15.0-2-loongson-3 +Package-Type: udeb + +Package: linux-image-4.15.0-2-loongson-3 +Architecture: mips64el mipsel +Depends: kmod, linux-base (>= 4.3~), ${misc:Depends}, initramfs-tools (>= 0.120+deb8u2) [mips64el mipsel] | linux-initramfs-tool [mips64el mipsel] +Recommends: firmware-linux-free, ${kernel:Recommends}, apparmor [mips64el mipsel] +Suggests: linux-doc-4.15, debian-kernel-handbook +Breaks: initramfs-tools (<< 0.120+deb8u2) +Description: Linux 4.15 for Loongson 3A/3B + The Linux kernel 4.15 and modules for use on Loongson 3A or 3B based + systems (e.g. from Loongson or Lemote). +Build-Profiles: + +Package: linux-headers-4.15.0-2-loongson-3 +Architecture: mips64el mipsel +Depends: linux-headers-4.15.0-2-common (= ${source:Version}), linux-kbuild-4.15, ${misc:Depends}, gcc-7 +Description: Header files for Linux 4.15.0-2-loongson-3 + This package provides the architecture-specific kernel header files for + Linux kernel 4.15.0-2-loongson-3, generally used for building out-of-tree + kernel modules. These files are going to be installed into + /usr/src/linux-headers-4.15.0-2-loongson-3, and can be used for building + modules that load into the kernel provided by the + linux-image-4.15.0-2-loongson-3 package. +Build-Profiles: + +Package: linux-image-4.15.0-2-loongson-3-dbg +Architecture: mips64el mipsel +Section: debug +Priority: optional +Depends: ${misc:Depends} +Description: Debug symbols for linux-image-4.15.0-2-loongson-3 + This package provides the detached debug symbols for the Linux kernel and + modules in linux-image-4.15.0-2-loongson-3. +Build-Profiles: + +Package: linux-headers-4.15.0-2-all-mips64r6 +Architecture: mips64r6 +Depends: ${misc:Depends}, linux-headers-4.15.0-2-mips64r6 (= ${binary:Version}) +Description: All header files for Linux 4.15 (meta-package) + This package depends against all architecture-specific kernel header files + for Linux kernel version 4.15, generally used for building out-of-tree + kernel modules. +Build-Profiles: + +Package: kernel-image-4.15.0-2-mips64r6-di +Architecture: mips64r6 mips64r6el +Section: debian-installer +Priority: standard +Provides: kernel-image, rtc-modules +Description: Linux kernel image and core modules for the Debian installer + This package contains the kernel image and core modules for the Debian + installer boot images. It does _not_ provide a usable kernel for your + full Debian system. +Build-Profiles: +Kernel-Version: 4.15.0-2-mips64r6 +Package-Type: udeb + +Package: nic-shared-modules-4.15.0-2-mips64r6-di +Architecture: mips64r6 mips64r6el +Section: debian-installer +Priority: standard +Provides: nic-shared-modules +Depends: kernel-image-4.15.0-2-mips64r6-di +Description: Shared NIC drivers + This package contains NIC drivers needed by combinations of nic-modules, + nic-pcmcia-modules, nic-usb-modules and nic-wireless-modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-mips64r6 +Package-Type: udeb + +Package: loop-modules-4.15.0-2-mips64r6-di +Architecture: mips64r6 mips64r6el +Section: debian-installer +Priority: standard +Provides: loop-modules +Depends: kernel-image-4.15.0-2-mips64r6-di +Description: Loopback filesystem support + This package contains loopback filesystem support for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-mips64r6 +Package-Type: udeb + +Package: btrfs-modules-4.15.0-2-mips64r6-di +Architecture: mips64r6 mips64r6el +Section: debian-installer +Priority: optional +Provides: btrfs-modules +Depends: kernel-image-4.15.0-2-mips64r6-di, crc-modules-4.15.0-2-mips64r6-di, zlib-modules-4.15.0-2-mips64r6-di, md-modules-4.15.0-2-mips64r6-di +Description: BTRFS filesystem support + This package contains the BTRFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-mips64r6 +Package-Type: udeb + +Package: ext4-modules-4.15.0-2-mips64r6-di +Architecture: mips64r6 mips64r6el +Section: debian-installer +Priority: standard +Provides: ext4-modules, ext2-modules, ext3-modules +Depends: kernel-image-4.15.0-2-mips64r6-di, crc-modules-4.15.0-2-mips64r6-di +Description: ext2/ext3/ext4 filesystem support + This package contains the ext4 filesystem module for the kernel, which + also supports ext2 and ext3. +Build-Profiles: +Kernel-Version: 4.15.0-2-mips64r6 +Package-Type: udeb + +Package: isofs-modules-4.15.0-2-mips64r6-di +Architecture: mips64r6 mips64r6el +Section: debian-installer +Priority: standard +Provides: isofs-modules +Depends: kernel-image-4.15.0-2-mips64r6-di +Description: ISOFS filesystem support + This package contains the ISOFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-mips64r6 +Package-Type: udeb + +Package: jfs-modules-4.15.0-2-mips64r6-di +Architecture: mips64r6 mips64r6el +Section: debian-installer +Priority: standard +Provides: jfs-modules +Depends: kernel-image-4.15.0-2-mips64r6-di +Description: JFS filesystem support + This package contains the JFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-mips64r6 +Package-Type: udeb + +Package: xfs-modules-4.15.0-2-mips64r6-di +Architecture: mips64r6 mips64r6el +Section: debian-installer +Priority: standard +Provides: xfs-modules +Depends: kernel-image-4.15.0-2-mips64r6-di, crc-modules-4.15.0-2-mips64r6-di +Description: XFS filesystem support + This package contains the XFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-mips64r6 +Package-Type: udeb + +Package: md-modules-4.15.0-2-mips64r6-di +Architecture: mips64r6 mips64r6el +Section: debian-installer +Priority: optional +Provides: md-modules +Depends: kernel-image-4.15.0-2-mips64r6-di, crc-modules-4.15.0-2-mips64r6-di +Description: RAID and LVM support + This package contains RAID and LVM modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-mips64r6 +Package-Type: udeb + +Package: multipath-modules-4.15.0-2-mips64r6-di +Architecture: mips64r6 mips64r6el +Section: debian-installer +Priority: optional +Provides: multipath-modules +Depends: kernel-image-4.15.0-2-mips64r6-di, md-modules-4.15.0-2-mips64r6-di +Description: Multipath support + This package contains DM-Multipath modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-mips64r6 +Package-Type: udeb + +Package: crc-modules-4.15.0-2-mips64r6-di +Architecture: mips64r6 mips64r6el +Section: debian-installer +Priority: optional +Provides: crc-modules +Depends: kernel-image-4.15.0-2-mips64r6-di +Description: CRC modules + This package contains CRC support modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-mips64r6 +Package-Type: udeb + +Package: crypto-modules-4.15.0-2-mips64r6-di +Architecture: mips64r6 mips64r6el +Section: debian-installer +Priority: optional +Provides: crypto-modules +Depends: kernel-image-4.15.0-2-mips64r6-di +Description: crypto modules + This package contains crypto modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-mips64r6 +Package-Type: udeb + +Package: crypto-dm-modules-4.15.0-2-mips64r6-di +Architecture: mips64r6 mips64r6el +Section: debian-installer +Priority: optional +Provides: crypto-dm-modules +Depends: kernel-image-4.15.0-2-mips64r6-di, md-modules-4.15.0-2-mips64r6-di +Description: devicemapper crypto module + This package contains the devicemapper crypto (dm-crypt) module. +Build-Profiles: +Kernel-Version: 4.15.0-2-mips64r6 +Package-Type: udeb + +Package: nbd-modules-4.15.0-2-mips64r6-di +Architecture: mips64r6 mips64r6el +Section: debian-installer +Priority: optional +Provides: nbd-modules +Depends: kernel-image-4.15.0-2-mips64r6-di +Description: Network Block Device modules + This package contains the modules required for support of the Network + Block Device +Build-Profiles: +Kernel-Version: 4.15.0-2-mips64r6 +Package-Type: udeb + +Package: squashfs-modules-4.15.0-2-mips64r6-di +Architecture: mips64r6 mips64r6el +Section: debian-installer +Priority: optional +Provides: squashfs-modules +Depends: kernel-image-4.15.0-2-mips64r6-di +Description: squashfs modules + This package contains squashfs modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-mips64r6 +Package-Type: udeb + +Package: zlib-modules-4.15.0-2-mips64r6-di +Architecture: mips64r6 mips64r6el +Section: debian-installer +Priority: optional +Provides: zlib-modules +Depends: kernel-image-4.15.0-2-mips64r6-di +Description: zlib modules + This package contains zlib modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-mips64r6 +Package-Type: udeb + +Package: udf-modules-4.15.0-2-mips64r6-di +Architecture: mips64r6 mips64r6el +Section: debian-installer +Priority: optional +Provides: udf-modules +Depends: kernel-image-4.15.0-2-mips64r6-di, crc-modules-4.15.0-2-mips64r6-di +Description: UDF modules + This package contains the UDF filesystem module. +Build-Profiles: +Kernel-Version: 4.15.0-2-mips64r6 +Package-Type: udeb + +Package: fuse-modules-4.15.0-2-mips64r6-di +Architecture: mips64r6 mips64r6el +Section: debian-installer +Priority: optional +Provides: fuse-modules +Depends: kernel-image-4.15.0-2-mips64r6-di +Description: FUSE modules + This package contains the Filesystem in Userspace (FUSE) module. +Build-Profiles: +Kernel-Version: 4.15.0-2-mips64r6 +Package-Type: udeb + +Package: linux-image-4.15.0-2-mips64r6 +Architecture: mips64r6 mipsr6 +Depends: kmod, linux-base (>= 4.3~), ${misc:Depends}, initramfs-tools (>= 0.120+deb8u2) [mips64r6 mipsr6] | linux-initramfs-tool [mips64r6 mipsr6] +Recommends: firmware-linux-free, ${kernel:Recommends}, apparmor [mips64r6 mipsr6] +Suggests: linux-doc-4.15, debian-kernel-handbook +Breaks: initramfs-tools (<< 0.120+deb8u2) +Description: Linux 4.15 for MIPS R6 (64 bit, big endian) + The Linux kernel 4.15 and modules for use on MIPS R6 (64 bit, big endian). +Build-Profiles: + +Package: linux-headers-4.15.0-2-mips64r6 +Architecture: mips64r6 mipsr6 +Depends: linux-headers-4.15.0-2-common (= ${source:Version}), linux-kbuild-4.15, ${misc:Depends}, gcc-7 +Description: Header files for Linux 4.15.0-2-mips64r6 + This package provides the architecture-specific kernel header files for + Linux kernel 4.15.0-2-mips64r6, generally used for building out-of-tree + kernel modules. These files are going to be installed into + /usr/src/linux-headers-4.15.0-2-mips64r6, and can be used for building + modules that load into the kernel provided by the + linux-image-4.15.0-2-mips64r6 package. +Build-Profiles: + +Package: linux-image-4.15.0-2-mips64r6-dbg +Architecture: mips64r6 mipsr6 +Section: debug +Priority: optional +Depends: ${misc:Depends} +Description: Debug symbols for linux-image-4.15.0-2-mips64r6 + This package provides the detached debug symbols for the Linux kernel and + modules in linux-image-4.15.0-2-mips64r6. +Build-Profiles: + +Package: linux-headers-4.15.0-2-all-mips64r6el +Architecture: mips64r6el +Depends: ${misc:Depends}, linux-headers-4.15.0-2-mips64r6el (= ${binary:Version}) +Description: All header files for Linux 4.15 (meta-package) + This package depends against all architecture-specific kernel header files + for Linux kernel version 4.15, generally used for building out-of-tree + kernel modules. +Build-Profiles: + +Package: linux-image-4.15.0-2-mips64r6el +Architecture: mips64r6el mipsr6el +Depends: kmod, linux-base (>= 4.3~), ${misc:Depends}, initramfs-tools (>= 0.120+deb8u2) [mips64r6el mipsr6el] | linux-initramfs-tool [mips64r6el mipsr6el] +Recommends: firmware-linux-free, ${kernel:Recommends}, apparmor [mips64r6el mipsr6el] +Suggests: linux-doc-4.15, debian-kernel-handbook +Breaks: initramfs-tools (<< 0.120+deb8u2) +Description: Linux 4.15 for MIPS R6 (64 bit, little endian) + The Linux kernel 4.15 and modules for use on MIPS R6 (64 bit, little + endian). +Build-Profiles: + +Package: linux-headers-4.15.0-2-mips64r6el +Architecture: mips64r6el mipsr6el +Depends: linux-headers-4.15.0-2-common (= ${source:Version}), linux-kbuild-4.15, ${misc:Depends}, gcc-7 +Description: Header files for Linux 4.15.0-2-mips64r6el + This package provides the architecture-specific kernel header files for + Linux kernel 4.15.0-2-mips64r6el, generally used for building out-of-tree + kernel modules. These files are going to be installed into + /usr/src/linux-headers-4.15.0-2-mips64r6el, and can be used for building + modules that load into the kernel provided by the + linux-image-4.15.0-2-mips64r6el package. +Build-Profiles: + +Package: linux-image-4.15.0-2-mips64r6el-dbg +Architecture: mips64r6el mipsr6el +Section: debug +Priority: optional +Depends: ${misc:Depends} +Description: Debug symbols for linux-image-4.15.0-2-mips64r6el + This package provides the detached debug symbols for the Linux kernel and + modules in linux-image-4.15.0-2-mips64r6el. +Build-Profiles: + +Package: linux-headers-4.15.0-2-all-mipsel +Architecture: mipsel +Depends: ${misc:Depends}, linux-headers-4.15.0-2-4kc-malta (= ${binary:Version}), linux-headers-4.15.0-2-5kc-malta (= ${binary:Version}), linux-headers-4.15.0-2-loongson-3 (= ${binary:Version}), linux-headers-4.15.0-2-octeon (= ${binary:Version}) +Description: All header files for Linux 4.15 (meta-package) + This package depends against all architecture-specific kernel header files + for Linux kernel version 4.15, generally used for building out-of-tree + kernel modules. +Build-Profiles: + +Package: linux-headers-4.15.0-2-all-mipsr6 +Architecture: mipsr6 +Depends: ${misc:Depends}, linux-headers-4.15.0-2-mips32r6 (= ${binary:Version}), linux-headers-4.15.0-2-mips64r6 (= ${binary:Version}) +Description: All header files for Linux 4.15 (meta-package) + This package depends against all architecture-specific kernel header files + for Linux kernel version 4.15, generally used for building out-of-tree + kernel modules. +Build-Profiles: + +Package: kernel-image-4.15.0-2-mips32r6-di +Architecture: mipsr6 mipsr6el +Section: debian-installer +Priority: standard +Provides: kernel-image, rtc-modules +Description: Linux kernel image and core modules for the Debian installer + This package contains the kernel image and core modules for the Debian + installer boot images. It does _not_ provide a usable kernel for your + full Debian system. +Build-Profiles: +Kernel-Version: 4.15.0-2-mips32r6 +Package-Type: udeb + +Package: nic-shared-modules-4.15.0-2-mips32r6-di +Architecture: mipsr6 mipsr6el +Section: debian-installer +Priority: standard +Provides: nic-shared-modules +Depends: kernel-image-4.15.0-2-mips32r6-di +Description: Shared NIC drivers + This package contains NIC drivers needed by combinations of nic-modules, + nic-pcmcia-modules, nic-usb-modules and nic-wireless-modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-mips32r6 +Package-Type: udeb + +Package: loop-modules-4.15.0-2-mips32r6-di +Architecture: mipsr6 mipsr6el +Section: debian-installer +Priority: standard +Provides: loop-modules +Depends: kernel-image-4.15.0-2-mips32r6-di +Description: Loopback filesystem support + This package contains loopback filesystem support for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-mips32r6 +Package-Type: udeb + +Package: btrfs-modules-4.15.0-2-mips32r6-di +Architecture: mipsr6 mipsr6el +Section: debian-installer +Priority: optional +Provides: btrfs-modules +Depends: kernel-image-4.15.0-2-mips32r6-di, crc-modules-4.15.0-2-mips32r6-di, zlib-modules-4.15.0-2-mips32r6-di, md-modules-4.15.0-2-mips32r6-di +Description: BTRFS filesystem support + This package contains the BTRFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-mips32r6 +Package-Type: udeb + +Package: ext4-modules-4.15.0-2-mips32r6-di +Architecture: mipsr6 mipsr6el +Section: debian-installer +Priority: standard +Provides: ext4-modules, ext2-modules, ext3-modules +Depends: kernel-image-4.15.0-2-mips32r6-di, crc-modules-4.15.0-2-mips32r6-di +Description: ext2/ext3/ext4 filesystem support + This package contains the ext4 filesystem module for the kernel, which + also supports ext2 and ext3. +Build-Profiles: +Kernel-Version: 4.15.0-2-mips32r6 +Package-Type: udeb + +Package: isofs-modules-4.15.0-2-mips32r6-di +Architecture: mipsr6 mipsr6el +Section: debian-installer +Priority: standard +Provides: isofs-modules +Depends: kernel-image-4.15.0-2-mips32r6-di +Description: ISOFS filesystem support + This package contains the ISOFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-mips32r6 +Package-Type: udeb + +Package: jfs-modules-4.15.0-2-mips32r6-di +Architecture: mipsr6 mipsr6el +Section: debian-installer +Priority: standard +Provides: jfs-modules +Depends: kernel-image-4.15.0-2-mips32r6-di +Description: JFS filesystem support + This package contains the JFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-mips32r6 +Package-Type: udeb + +Package: xfs-modules-4.15.0-2-mips32r6-di +Architecture: mipsr6 mipsr6el +Section: debian-installer +Priority: standard +Provides: xfs-modules +Depends: kernel-image-4.15.0-2-mips32r6-di, crc-modules-4.15.0-2-mips32r6-di +Description: XFS filesystem support + This package contains the XFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-mips32r6 +Package-Type: udeb + +Package: md-modules-4.15.0-2-mips32r6-di +Architecture: mipsr6 mipsr6el +Section: debian-installer +Priority: optional +Provides: md-modules +Depends: kernel-image-4.15.0-2-mips32r6-di, crc-modules-4.15.0-2-mips32r6-di +Description: RAID and LVM support + This package contains RAID and LVM modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-mips32r6 +Package-Type: udeb + +Package: multipath-modules-4.15.0-2-mips32r6-di +Architecture: mipsr6 mipsr6el +Section: debian-installer +Priority: optional +Provides: multipath-modules +Depends: kernel-image-4.15.0-2-mips32r6-di, md-modules-4.15.0-2-mips32r6-di +Description: Multipath support + This package contains DM-Multipath modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-mips32r6 +Package-Type: udeb + +Package: crc-modules-4.15.0-2-mips32r6-di +Architecture: mipsr6 mipsr6el +Section: debian-installer +Priority: optional +Provides: crc-modules +Depends: kernel-image-4.15.0-2-mips32r6-di +Description: CRC modules + This package contains CRC support modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-mips32r6 +Package-Type: udeb + +Package: crypto-modules-4.15.0-2-mips32r6-di +Architecture: mipsr6 mipsr6el +Section: debian-installer +Priority: optional +Provides: crypto-modules +Depends: kernel-image-4.15.0-2-mips32r6-di +Description: crypto modules + This package contains crypto modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-mips32r6 +Package-Type: udeb + +Package: crypto-dm-modules-4.15.0-2-mips32r6-di +Architecture: mipsr6 mipsr6el +Section: debian-installer +Priority: optional +Provides: crypto-dm-modules +Depends: kernel-image-4.15.0-2-mips32r6-di, md-modules-4.15.0-2-mips32r6-di +Description: devicemapper crypto module + This package contains the devicemapper crypto (dm-crypt) module. +Build-Profiles: +Kernel-Version: 4.15.0-2-mips32r6 +Package-Type: udeb + +Package: nbd-modules-4.15.0-2-mips32r6-di +Architecture: mipsr6 mipsr6el +Section: debian-installer +Priority: optional +Provides: nbd-modules +Depends: kernel-image-4.15.0-2-mips32r6-di +Description: Network Block Device modules + This package contains the modules required for support of the Network + Block Device +Build-Profiles: +Kernel-Version: 4.15.0-2-mips32r6 +Package-Type: udeb + +Package: squashfs-modules-4.15.0-2-mips32r6-di +Architecture: mipsr6 mipsr6el +Section: debian-installer +Priority: optional +Provides: squashfs-modules +Depends: kernel-image-4.15.0-2-mips32r6-di +Description: squashfs modules + This package contains squashfs modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-mips32r6 +Package-Type: udeb + +Package: zlib-modules-4.15.0-2-mips32r6-di +Architecture: mipsr6 mipsr6el +Section: debian-installer +Priority: optional +Provides: zlib-modules +Depends: kernel-image-4.15.0-2-mips32r6-di +Description: zlib modules + This package contains zlib modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-mips32r6 +Package-Type: udeb + +Package: udf-modules-4.15.0-2-mips32r6-di +Architecture: mipsr6 mipsr6el +Section: debian-installer +Priority: optional +Provides: udf-modules +Depends: kernel-image-4.15.0-2-mips32r6-di, crc-modules-4.15.0-2-mips32r6-di +Description: UDF modules + This package contains the UDF filesystem module. +Build-Profiles: +Kernel-Version: 4.15.0-2-mips32r6 +Package-Type: udeb + +Package: fuse-modules-4.15.0-2-mips32r6-di +Architecture: mipsr6 mipsr6el +Section: debian-installer +Priority: optional +Provides: fuse-modules +Depends: kernel-image-4.15.0-2-mips32r6-di +Description: FUSE modules + This package contains the Filesystem in Userspace (FUSE) module. +Build-Profiles: +Kernel-Version: 4.15.0-2-mips32r6 +Package-Type: udeb + +Package: linux-image-4.15.0-2-mips32r6 +Architecture: mipsr6 +Depends: kmod, linux-base (>= 4.3~), ${misc:Depends}, initramfs-tools (>= 0.120+deb8u2) [mipsr6] | linux-initramfs-tool [mipsr6] +Recommends: firmware-linux-free, ${kernel:Recommends}, apparmor [mipsr6] +Suggests: linux-doc-4.15, debian-kernel-handbook +Breaks: initramfs-tools (<< 0.120+deb8u2) +Description: Linux 4.15 for MIPS R6 (32 bit, big endian) + The Linux kernel 4.15 and modules for use on MIPS R6 (32 bit, big endian). +Build-Profiles: + +Package: linux-headers-4.15.0-2-mips32r6 +Architecture: mipsr6 +Depends: linux-headers-4.15.0-2-common (= ${source:Version}), linux-kbuild-4.15, ${misc:Depends}, gcc-7 +Description: Header files for Linux 4.15.0-2-mips32r6 + This package provides the architecture-specific kernel header files for + Linux kernel 4.15.0-2-mips32r6, generally used for building out-of-tree + kernel modules. These files are going to be installed into + /usr/src/linux-headers-4.15.0-2-mips32r6, and can be used for building + modules that load into the kernel provided by the + linux-image-4.15.0-2-mips32r6 package. +Build-Profiles: + +Package: linux-image-4.15.0-2-mips32r6-dbg +Architecture: mipsr6 +Section: debug +Priority: optional +Depends: ${misc:Depends} +Description: Debug symbols for linux-image-4.15.0-2-mips32r6 + This package provides the detached debug symbols for the Linux kernel and + modules in linux-image-4.15.0-2-mips32r6. +Build-Profiles: + +Package: linux-headers-4.15.0-2-all-mipsr6el +Architecture: mipsr6el +Depends: ${misc:Depends}, linux-headers-4.15.0-2-mips32r6el (= ${binary:Version}), linux-headers-4.15.0-2-mips64r6el (= ${binary:Version}) +Description: All header files for Linux 4.15 (meta-package) + This package depends against all architecture-specific kernel header files + for Linux kernel version 4.15, generally used for building out-of-tree + kernel modules. +Build-Profiles: + +Package: linux-image-4.15.0-2-mips32r6el +Architecture: mipsr6el +Depends: kmod, linux-base (>= 4.3~), ${misc:Depends}, initramfs-tools (>= 0.120+deb8u2) [mipsr6el] | linux-initramfs-tool [mipsr6el] +Recommends: firmware-linux-free, ${kernel:Recommends}, apparmor [mipsr6el] +Suggests: linux-doc-4.15, debian-kernel-handbook +Breaks: initramfs-tools (<< 0.120+deb8u2) +Description: Linux 4.15 for MIPS R6 (32 bit, little endian) + The Linux kernel 4.15 and modules for use on MIPS R6 (32 bit, little + endian). +Build-Profiles: + +Package: linux-headers-4.15.0-2-mips32r6el +Architecture: mipsr6el +Depends: linux-headers-4.15.0-2-common (= ${source:Version}), linux-kbuild-4.15, ${misc:Depends}, gcc-7 +Description: Header files for Linux 4.15.0-2-mips32r6el + This package provides the architecture-specific kernel header files for + Linux kernel 4.15.0-2-mips32r6el, generally used for building out-of-tree + kernel modules. These files are going to be installed into + /usr/src/linux-headers-4.15.0-2-mips32r6el, and can be used for building + modules that load into the kernel provided by the + linux-image-4.15.0-2-mips32r6el package. +Build-Profiles: + +Package: linux-image-4.15.0-2-mips32r6el-dbg +Architecture: mipsr6el +Section: debug +Priority: optional +Depends: ${misc:Depends} +Description: Debug symbols for linux-image-4.15.0-2-mips32r6el + This package provides the detached debug symbols for the Linux kernel and + modules in linux-image-4.15.0-2-mips32r6el. +Build-Profiles: + +Package: linux-headers-4.15.0-2-all-powerpc +Architecture: powerpc +Depends: ${misc:Depends}, linux-headers-4.15.0-2-powerpc (= ${binary:Version}), linux-headers-4.15.0-2-powerpc-smp (= ${binary:Version}), linux-headers-4.15.0-2-powerpc64 (= ${binary:Version}) +Description: All header files for Linux 4.15 (meta-package) + This package depends against all architecture-specific kernel header files + for Linux kernel version 4.15, generally used for building out-of-tree + kernel modules. +Build-Profiles: + +Package: kernel-image-4.15.0-2-powerpc-di +Architecture: powerpc +Section: debian-installer +Priority: standard +Provides: kernel-image +Description: Linux kernel image and core modules for the Debian installer + This package contains the kernel image and core modules for the Debian + installer boot images. It does _not_ provide a usable kernel for your + full Debian system. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc +Package-Type: udeb + +Package: nic-modules-4.15.0-2-powerpc-di +Architecture: powerpc +Section: debian-installer +Priority: standard +Provides: nic-modules, nic-extra-modules +Depends: kernel-image-4.15.0-2-powerpc-di, nic-shared-modules-4.15.0-2-powerpc-di, crc-modules-4.15.0-2-powerpc-di +Description: NIC drivers + This package contains Ethernet and some paravirtualised network drivers + for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc +Package-Type: udeb + +Package: nic-shared-modules-4.15.0-2-powerpc-di +Architecture: powerpc +Section: debian-installer +Priority: standard +Provides: nic-shared-modules +Depends: kernel-image-4.15.0-2-powerpc-di +Description: Shared NIC drivers + This package contains NIC drivers needed by combinations of nic-modules, + nic-pcmcia-modules, nic-usb-modules and nic-wireless-modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc +Package-Type: udeb + +Package: serial-modules-4.15.0-2-powerpc-di +Architecture: powerpc +Section: debian-installer +Priority: optional +Provides: serial-modules +Depends: kernel-image-4.15.0-2-powerpc-di, pcmcia-modules-4.15.0-2-powerpc-di +Description: Serial drivers + This package contains serial drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc +Package-Type: udeb + +Package: usb-serial-modules-4.15.0-2-powerpc-di +Architecture: powerpc +Section: debian-installer +Priority: optional +Provides: usb-serial-modules +Depends: kernel-image-4.15.0-2-powerpc-di, usb-modules-4.15.0-2-powerpc-di +Description: USB serial drivers + This package contains USB serial drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc +Package-Type: udeb + +Package: ppp-modules-4.15.0-2-powerpc-di +Architecture: powerpc +Section: debian-installer +Priority: optional +Provides: ppp-modules +Depends: kernel-image-4.15.0-2-powerpc-di, serial-modules-4.15.0-2-powerpc-di, zlib-modules-4.15.0-2-powerpc-di, crc-modules-4.15.0-2-powerpc-di +Description: PPP drivers + This package contains PPP drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc +Package-Type: udeb + +Package: pata-modules-4.15.0-2-powerpc-di +Architecture: powerpc +Section: debian-installer +Priority: standard +Provides: pata-modules +Depends: kernel-image-4.15.0-2-powerpc-di, ata-modules-4.15.0-2-powerpc-di +Description: PATA drivers + This package contains PATA drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc +Package-Type: udeb + +Package: cdrom-core-modules-4.15.0-2-powerpc-di +Architecture: powerpc +Section: debian-installer +Priority: standard +Provides: cdrom-core-modules +Depends: kernel-image-4.15.0-2-powerpc-di, scsi-core-modules-4.15.0-2-powerpc-di, isofs-modules-4.15.0-2-powerpc-di +Description: CDROM support + This package contains core CDROM support for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc +Package-Type: udeb + +Package: firewire-core-modules-4.15.0-2-powerpc-di +Architecture: powerpc +Section: debian-installer +Priority: standard +Provides: firewire-core-modules +Depends: kernel-image-4.15.0-2-powerpc-di, scsi-core-modules-4.15.0-2-powerpc-di, crc-modules-4.15.0-2-powerpc-di +Description: Core FireWire drivers + This package contains core FireWire drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc +Package-Type: udeb + +Package: scsi-core-modules-4.15.0-2-powerpc-di +Architecture: powerpc +Section: debian-installer +Priority: standard +Provides: scsi-core-modules +Depends: kernel-image-4.15.0-2-powerpc-di +Description: Core SCSI subsystem + This package contains the core SCSI subsystem for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc +Package-Type: udeb + +Package: scsi-modules-4.15.0-2-powerpc-di +Architecture: powerpc +Section: debian-installer +Priority: standard +Provides: scsi-modules +Depends: kernel-image-4.15.0-2-powerpc-di, scsi-core-modules-4.15.0-2-powerpc-di, cdrom-core-modules-4.15.0-2-powerpc-di, ata-modules-4.15.0-2-powerpc-di +Description: SCSI drivers + This package contains SCSI drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc +Package-Type: udeb + +Package: loop-modules-4.15.0-2-powerpc-di +Architecture: powerpc +Section: debian-installer +Priority: standard +Provides: loop-modules +Depends: kernel-image-4.15.0-2-powerpc-di +Description: Loopback filesystem support + This package contains loopback filesystem support for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc +Package-Type: udeb + +Package: btrfs-modules-4.15.0-2-powerpc-di +Architecture: powerpc +Section: debian-installer +Priority: optional +Provides: btrfs-modules +Depends: kernel-image-4.15.0-2-powerpc-di, crc-modules-4.15.0-2-powerpc-di, zlib-modules-4.15.0-2-powerpc-di, md-modules-4.15.0-2-powerpc-di +Description: BTRFS filesystem support + This package contains the BTRFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc +Package-Type: udeb + +Package: ext4-modules-4.15.0-2-powerpc-di +Architecture: powerpc +Section: debian-installer +Priority: standard +Provides: ext4-modules, ext2-modules, ext3-modules +Depends: kernel-image-4.15.0-2-powerpc-di, crc-modules-4.15.0-2-powerpc-di +Description: ext2/ext3/ext4 filesystem support + This package contains the ext4 filesystem module for the kernel, which + also supports ext2 and ext3. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc +Package-Type: udeb + +Package: isofs-modules-4.15.0-2-powerpc-di +Architecture: powerpc +Section: debian-installer +Priority: standard +Provides: isofs-modules +Depends: kernel-image-4.15.0-2-powerpc-di +Description: ISOFS filesystem support + This package contains the ISOFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc +Package-Type: udeb + +Package: jfs-modules-4.15.0-2-powerpc-di +Architecture: powerpc +Section: debian-installer +Priority: standard +Provides: jfs-modules +Depends: kernel-image-4.15.0-2-powerpc-di +Description: JFS filesystem support + This package contains the JFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc +Package-Type: udeb + +Package: xfs-modules-4.15.0-2-powerpc-di +Architecture: powerpc +Section: debian-installer +Priority: standard +Provides: xfs-modules +Depends: kernel-image-4.15.0-2-powerpc-di, crc-modules-4.15.0-2-powerpc-di +Description: XFS filesystem support + This package contains the XFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc +Package-Type: udeb + +Package: fat-modules-4.15.0-2-powerpc-di +Architecture: powerpc +Section: debian-installer +Priority: optional +Provides: fat-modules +Depends: kernel-image-4.15.0-2-powerpc-di +Description: FAT filesystem support + This package contains the FAT and VFAT filesystem modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc +Package-Type: udeb + +Package: hfs-modules-4.15.0-2-powerpc-di +Architecture: powerpc +Section: debian-installer +Priority: optional +Provides: hfs-modules +Depends: kernel-image-4.15.0-2-powerpc-di +Description: HFS filesystem support + This package contains the HFS and HFS+ filesystem modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc +Package-Type: udeb + +Package: affs-modules-4.15.0-2-powerpc-di +Architecture: powerpc +Section: debian-installer +Priority: optional +Provides: affs-modules +Depends: kernel-image-4.15.0-2-powerpc-di +Description: Amiga filesystem support + This package contains the Amiga filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc +Package-Type: udeb + +Package: md-modules-4.15.0-2-powerpc-di +Architecture: powerpc +Section: debian-installer +Priority: optional +Provides: md-modules +Depends: kernel-image-4.15.0-2-powerpc-di, crc-modules-4.15.0-2-powerpc-di +Description: RAID and LVM support + This package contains RAID and LVM modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc +Package-Type: udeb + +Package: multipath-modules-4.15.0-2-powerpc-di +Architecture: powerpc +Section: debian-installer +Priority: optional +Provides: multipath-modules +Depends: kernel-image-4.15.0-2-powerpc-di, md-modules-4.15.0-2-powerpc-di, scsi-core-modules-4.15.0-2-powerpc-di +Description: Multipath support + This package contains DM-Multipath modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc +Package-Type: udeb + +Package: usb-modules-4.15.0-2-powerpc-di +Architecture: powerpc +Section: debian-installer +Priority: optional +Provides: usb-modules +Depends: kernel-image-4.15.0-2-powerpc-di +Description: USB support + This package contains core USB drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc +Package-Type: udeb + +Package: usb-storage-modules-4.15.0-2-powerpc-di +Architecture: powerpc +Section: debian-installer +Priority: standard +Provides: usb-storage-modules +Depends: kernel-image-4.15.0-2-powerpc-di, scsi-core-modules-4.15.0-2-powerpc-di, usb-modules-4.15.0-2-powerpc-di +Description: USB storage support + This package contains the USB storage driver for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc +Package-Type: udeb + +Package: pcmcia-storage-modules-4.15.0-2-powerpc-di +Architecture: powerpc +Section: debian-installer +Priority: standard +Provides: pcmcia-storage-modules +Depends: kernel-image-4.15.0-2-powerpc-di, cdrom-core-modules-4.15.0-2-powerpc-di, pcmcia-modules-4.15.0-2-powerpc-di, ata-modules-4.15.0-2-powerpc-di +Description: PCMCIA storage drivers + This package contains PCMCIA storage drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc +Package-Type: udeb + +Package: fb-modules-4.15.0-2-powerpc-di +Architecture: powerpc +Section: debian-installer +Priority: optional +Provides: fb-modules +Depends: kernel-image-4.15.0-2-powerpc-di +Description: Frame buffer support + This package contains Frame buffer drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc +Package-Type: udeb + +Package: input-modules-4.15.0-2-powerpc-di +Architecture: powerpc +Section: debian-installer +Priority: optional +Provides: input-modules +Depends: kernel-image-4.15.0-2-powerpc-di, usb-modules-4.15.0-2-powerpc-di +Description: Input devices support + This package contains input device drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc +Package-Type: udeb + +Package: event-modules-4.15.0-2-powerpc-di +Architecture: powerpc +Section: debian-installer +Priority: optional +Provides: event-modules +Depends: kernel-image-4.15.0-2-powerpc-di +Description: Event support + This package contains event drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc +Package-Type: udeb + +Package: mouse-modules-4.15.0-2-powerpc-di +Architecture: powerpc +Section: debian-installer +Priority: optional +Provides: mouse-modules +Depends: kernel-image-4.15.0-2-powerpc-di, event-modules-4.15.0-2-powerpc-di, input-modules-4.15.0-2-powerpc-di, usb-modules-4.15.0-2-powerpc-di +Description: Mouse support + This package contains mouse drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc +Package-Type: udeb + +Package: nic-pcmcia-modules-4.15.0-2-powerpc-di +Architecture: powerpc +Section: debian-installer +Priority: standard +Provides: nic-pcmcia-modules +Depends: kernel-image-4.15.0-2-powerpc-di, nic-modules-4.15.0-2-powerpc-di, nic-shared-modules-4.15.0-2-powerpc-di, pcmcia-modules-4.15.0-2-powerpc-di +Description: Common PCMCIA NIC drivers + This package contains common PCMCIA NIC drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc +Package-Type: udeb + +Package: pcmcia-modules-4.15.0-2-powerpc-di +Architecture: powerpc +Section: debian-installer +Priority: standard +Provides: pcmcia-modules +Depends: kernel-image-4.15.0-2-powerpc-di +Description: Common PCMCIA drivers + This package contains common PCMCIA drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc +Package-Type: udeb + +Package: sata-modules-4.15.0-2-powerpc-di +Architecture: powerpc +Section: debian-installer +Priority: standard +Provides: sata-modules +Depends: kernel-image-4.15.0-2-powerpc-di, scsi-core-modules-4.15.0-2-powerpc-di, ata-modules-4.15.0-2-powerpc-di +Description: SATA drivers + This package contains SATA drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc +Package-Type: udeb + +Package: crc-modules-4.15.0-2-powerpc-di +Architecture: powerpc +Section: debian-installer +Priority: optional +Provides: crc-modules +Depends: kernel-image-4.15.0-2-powerpc-di +Description: CRC modules + This package contains CRC support modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc +Package-Type: udeb + +Package: crypto-modules-4.15.0-2-powerpc-di +Architecture: powerpc +Section: debian-installer +Priority: optional +Provides: crypto-modules +Depends: kernel-image-4.15.0-2-powerpc-di +Description: crypto modules + This package contains crypto modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc +Package-Type: udeb + +Package: crypto-dm-modules-4.15.0-2-powerpc-di +Architecture: powerpc +Section: debian-installer +Priority: optional +Provides: crypto-dm-modules +Depends: kernel-image-4.15.0-2-powerpc-di, md-modules-4.15.0-2-powerpc-di +Description: devicemapper crypto module + This package contains the devicemapper crypto (dm-crypt) module. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc +Package-Type: udeb + +Package: ata-modules-4.15.0-2-powerpc-di +Architecture: powerpc +Section: debian-installer +Priority: optional +Provides: ata-modules +Depends: kernel-image-4.15.0-2-powerpc-di, scsi-core-modules-4.15.0-2-powerpc-di +Description: ATA disk modules + This package contains core ATA disk modules used by both PATA and SATA + disk drivers. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc +Package-Type: udeb + +Package: nbd-modules-4.15.0-2-powerpc-di +Architecture: powerpc +Section: debian-installer +Priority: optional +Provides: nbd-modules +Depends: kernel-image-4.15.0-2-powerpc-di +Description: Network Block Device modules + This package contains the modules required for support of the Network + Block Device +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc +Package-Type: udeb + +Package: squashfs-modules-4.15.0-2-powerpc-di +Architecture: powerpc +Section: debian-installer +Priority: optional +Provides: squashfs-modules +Depends: kernel-image-4.15.0-2-powerpc-di +Description: squashfs modules + This package contains squashfs modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc +Package-Type: udeb + +Package: virtio-modules-4.15.0-2-powerpc-di +Architecture: powerpc +Section: debian-installer +Priority: optional +Provides: virtio-modules +Depends: kernel-image-4.15.0-2-powerpc-di, scsi-core-modules-4.15.0-2-powerpc-di +Description: virtio modules + This package contains virtio modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc +Package-Type: udeb + +Package: uinput-modules-4.15.0-2-powerpc-di +Architecture: powerpc +Section: debian-installer +Priority: optional +Provides: uinput-modules +Depends: kernel-image-4.15.0-2-powerpc-di +Description: uinput support + This package contains the uinput module. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc +Package-Type: udeb + +Package: zlib-modules-4.15.0-2-powerpc-di +Architecture: powerpc +Section: debian-installer +Priority: optional +Provides: zlib-modules +Depends: kernel-image-4.15.0-2-powerpc-di +Description: zlib modules + This package contains zlib modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc +Package-Type: udeb + +Package: udf-modules-4.15.0-2-powerpc-di +Architecture: powerpc +Section: debian-installer +Priority: optional +Provides: udf-modules +Depends: kernel-image-4.15.0-2-powerpc-di, crc-modules-4.15.0-2-powerpc-di +Description: UDF modules + This package contains the UDF filesystem module. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc +Package-Type: udeb + +Package: fuse-modules-4.15.0-2-powerpc-di +Architecture: powerpc +Section: debian-installer +Priority: optional +Provides: fuse-modules +Depends: kernel-image-4.15.0-2-powerpc-di +Description: FUSE modules + This package contains the Filesystem in Userspace (FUSE) module. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc +Package-Type: udeb + +Package: kernel-image-4.15.0-2-powerpc64-di +Architecture: powerpc ppc64 +Section: debian-installer +Priority: standard +Provides: kernel-image +Description: Linux kernel image and core modules for the Debian installer + This package contains the kernel image and core modules for the Debian + installer boot images. It does _not_ provide a usable kernel for your + full Debian system. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64 +Package-Type: udeb + +Package: nic-modules-4.15.0-2-powerpc64-di +Architecture: powerpc ppc64 +Section: debian-installer +Priority: standard +Provides: nic-modules, nic-extra-modules +Depends: kernel-image-4.15.0-2-powerpc64-di, nic-shared-modules-4.15.0-2-powerpc64-di, crc-modules-4.15.0-2-powerpc64-di +Description: NIC drivers + This package contains Ethernet and some paravirtualised network drivers + for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64 +Package-Type: udeb + +Package: nic-shared-modules-4.15.0-2-powerpc64-di +Architecture: powerpc ppc64 +Section: debian-installer +Priority: standard +Provides: nic-shared-modules +Depends: kernel-image-4.15.0-2-powerpc64-di +Description: Shared NIC drivers + This package contains NIC drivers needed by combinations of nic-modules, + nic-pcmcia-modules, nic-usb-modules and nic-wireless-modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64 +Package-Type: udeb + +Package: serial-modules-4.15.0-2-powerpc64-di +Architecture: powerpc ppc64 +Section: debian-installer +Priority: optional +Provides: serial-modules +Depends: kernel-image-4.15.0-2-powerpc64-di, pcmcia-modules-4.15.0-2-powerpc64-di +Description: Serial drivers + This package contains serial drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64 +Package-Type: udeb + +Package: usb-serial-modules-4.15.0-2-powerpc64-di +Architecture: powerpc ppc64 +Section: debian-installer +Priority: optional +Provides: usb-serial-modules +Depends: kernel-image-4.15.0-2-powerpc64-di, usb-modules-4.15.0-2-powerpc64-di +Description: USB serial drivers + This package contains USB serial drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64 +Package-Type: udeb + +Package: ppp-modules-4.15.0-2-powerpc64-di +Architecture: powerpc ppc64 +Section: debian-installer +Priority: optional +Provides: ppp-modules +Depends: kernel-image-4.15.0-2-powerpc64-di, serial-modules-4.15.0-2-powerpc64-di, crc-modules-4.15.0-2-powerpc64-di +Description: PPP drivers + This package contains PPP drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64 +Package-Type: udeb + +Package: pata-modules-4.15.0-2-powerpc64-di +Architecture: powerpc ppc64 +Section: debian-installer +Priority: standard +Provides: pata-modules +Depends: kernel-image-4.15.0-2-powerpc64-di, ata-modules-4.15.0-2-powerpc64-di +Description: PATA drivers + This package contains PATA drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64 +Package-Type: udeb + +Package: cdrom-core-modules-4.15.0-2-powerpc64-di +Architecture: powerpc ppc64 +Section: debian-installer +Priority: standard +Provides: cdrom-core-modules +Depends: kernel-image-4.15.0-2-powerpc64-di, scsi-core-modules-4.15.0-2-powerpc64-di, isofs-modules-4.15.0-2-powerpc64-di +Description: CDROM support + This package contains core CDROM support for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64 +Package-Type: udeb + +Package: firewire-core-modules-4.15.0-2-powerpc64-di +Architecture: powerpc ppc64 +Section: debian-installer +Priority: standard +Provides: firewire-core-modules +Depends: kernel-image-4.15.0-2-powerpc64-di, scsi-core-modules-4.15.0-2-powerpc64-di, crc-modules-4.15.0-2-powerpc64-di +Description: Core FireWire drivers + This package contains core FireWire drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64 +Package-Type: udeb + +Package: scsi-core-modules-4.15.0-2-powerpc64-di +Architecture: powerpc ppc64 +Section: debian-installer +Priority: standard +Provides: scsi-core-modules +Depends: kernel-image-4.15.0-2-powerpc64-di +Description: Core SCSI subsystem + This package contains the core SCSI subsystem for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64 +Package-Type: udeb + +Package: scsi-modules-4.15.0-2-powerpc64-di +Architecture: powerpc ppc64 +Section: debian-installer +Priority: standard +Provides: scsi-modules +Depends: kernel-image-4.15.0-2-powerpc64-di, scsi-core-modules-4.15.0-2-powerpc64-di, cdrom-core-modules-4.15.0-2-powerpc64-di, ata-modules-4.15.0-2-powerpc64-di +Description: SCSI drivers + This package contains SCSI drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64 +Package-Type: udeb + +Package: loop-modules-4.15.0-2-powerpc64-di +Architecture: powerpc ppc64 +Section: debian-installer +Priority: standard +Provides: loop-modules +Depends: kernel-image-4.15.0-2-powerpc64-di +Description: Loopback filesystem support + This package contains loopback filesystem support for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64 +Package-Type: udeb + +Package: btrfs-modules-4.15.0-2-powerpc64-di +Architecture: powerpc ppc64 +Section: debian-installer +Priority: optional +Provides: btrfs-modules +Depends: kernel-image-4.15.0-2-powerpc64-di, crc-modules-4.15.0-2-powerpc64-di, md-modules-4.15.0-2-powerpc64-di +Description: BTRFS filesystem support + This package contains the BTRFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64 +Package-Type: udeb + +Package: ext4-modules-4.15.0-2-powerpc64-di +Architecture: powerpc ppc64 +Section: debian-installer +Priority: standard +Provides: ext4-modules, ext2-modules, ext3-modules +Depends: kernel-image-4.15.0-2-powerpc64-di, crc-modules-4.15.0-2-powerpc64-di +Description: ext2/ext3/ext4 filesystem support + This package contains the ext4 filesystem module for the kernel, which + also supports ext2 and ext3. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64 +Package-Type: udeb + +Package: isofs-modules-4.15.0-2-powerpc64-di +Architecture: powerpc ppc64 +Section: debian-installer +Priority: standard +Provides: isofs-modules +Depends: kernel-image-4.15.0-2-powerpc64-di +Description: ISOFS filesystem support + This package contains the ISOFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64 +Package-Type: udeb + +Package: jfs-modules-4.15.0-2-powerpc64-di +Architecture: powerpc ppc64 +Section: debian-installer +Priority: standard +Provides: jfs-modules +Depends: kernel-image-4.15.0-2-powerpc64-di +Description: JFS filesystem support + This package contains the JFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64 +Package-Type: udeb + +Package: xfs-modules-4.15.0-2-powerpc64-di +Architecture: powerpc ppc64 +Section: debian-installer +Priority: standard +Provides: xfs-modules +Depends: kernel-image-4.15.0-2-powerpc64-di, crc-modules-4.15.0-2-powerpc64-di +Description: XFS filesystem support + This package contains the XFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64 +Package-Type: udeb + +Package: fat-modules-4.15.0-2-powerpc64-di +Architecture: powerpc ppc64 +Section: debian-installer +Priority: optional +Provides: fat-modules +Depends: kernel-image-4.15.0-2-powerpc64-di +Description: FAT filesystem support + This package contains the FAT and VFAT filesystem modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64 +Package-Type: udeb + +Package: hfs-modules-4.15.0-2-powerpc64-di +Architecture: powerpc ppc64 +Section: debian-installer +Priority: optional +Provides: hfs-modules +Depends: kernel-image-4.15.0-2-powerpc64-di +Description: HFS filesystem support + This package contains the HFS and HFS+ filesystem modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64 +Package-Type: udeb + +Package: affs-modules-4.15.0-2-powerpc64-di +Architecture: powerpc ppc64 +Section: debian-installer +Priority: optional +Provides: affs-modules +Depends: kernel-image-4.15.0-2-powerpc64-di +Description: Amiga filesystem support + This package contains the Amiga filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64 +Package-Type: udeb + +Package: md-modules-4.15.0-2-powerpc64-di +Architecture: powerpc ppc64 +Section: debian-installer +Priority: optional +Provides: md-modules +Depends: kernel-image-4.15.0-2-powerpc64-di, crc-modules-4.15.0-2-powerpc64-di +Description: RAID and LVM support + This package contains RAID and LVM modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64 +Package-Type: udeb + +Package: multipath-modules-4.15.0-2-powerpc64-di +Architecture: powerpc ppc64 +Section: debian-installer +Priority: optional +Provides: multipath-modules +Depends: kernel-image-4.15.0-2-powerpc64-di, md-modules-4.15.0-2-powerpc64-di, scsi-core-modules-4.15.0-2-powerpc64-di +Description: Multipath support + This package contains DM-Multipath modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64 +Package-Type: udeb + +Package: usb-modules-4.15.0-2-powerpc64-di +Architecture: powerpc ppc64 +Section: debian-installer +Priority: optional +Provides: usb-modules +Depends: kernel-image-4.15.0-2-powerpc64-di +Description: USB support + This package contains core USB drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64 +Package-Type: udeb + +Package: usb-storage-modules-4.15.0-2-powerpc64-di +Architecture: powerpc ppc64 +Section: debian-installer +Priority: standard +Provides: usb-storage-modules +Depends: kernel-image-4.15.0-2-powerpc64-di, scsi-core-modules-4.15.0-2-powerpc64-di, usb-modules-4.15.0-2-powerpc64-di +Description: USB storage support + This package contains the USB storage driver for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64 +Package-Type: udeb + +Package: pcmcia-storage-modules-4.15.0-2-powerpc64-di +Architecture: powerpc ppc64 +Section: debian-installer +Priority: standard +Provides: pcmcia-storage-modules +Depends: kernel-image-4.15.0-2-powerpc64-di, cdrom-core-modules-4.15.0-2-powerpc64-di, pcmcia-modules-4.15.0-2-powerpc64-di, ata-modules-4.15.0-2-powerpc64-di +Description: PCMCIA storage drivers + This package contains PCMCIA storage drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64 +Package-Type: udeb + +Package: input-modules-4.15.0-2-powerpc64-di +Architecture: powerpc ppc64 +Section: debian-installer +Priority: optional +Provides: input-modules +Depends: kernel-image-4.15.0-2-powerpc64-di, usb-modules-4.15.0-2-powerpc64-di +Description: Input devices support + This package contains input device drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64 +Package-Type: udeb + +Package: event-modules-4.15.0-2-powerpc64-di +Architecture: powerpc ppc64 +Section: debian-installer +Priority: optional +Provides: event-modules +Depends: kernel-image-4.15.0-2-powerpc64-di +Description: Event support + This package contains event drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64 +Package-Type: udeb + +Package: mouse-modules-4.15.0-2-powerpc64-di +Architecture: powerpc ppc64 +Section: debian-installer +Priority: optional +Provides: mouse-modules +Depends: kernel-image-4.15.0-2-powerpc64-di, event-modules-4.15.0-2-powerpc64-di, input-modules-4.15.0-2-powerpc64-di, usb-modules-4.15.0-2-powerpc64-di +Description: Mouse support + This package contains mouse drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64 +Package-Type: udeb + +Package: nic-pcmcia-modules-4.15.0-2-powerpc64-di +Architecture: powerpc ppc64 +Section: debian-installer +Priority: standard +Provides: nic-pcmcia-modules +Depends: kernel-image-4.15.0-2-powerpc64-di, nic-modules-4.15.0-2-powerpc64-di, nic-shared-modules-4.15.0-2-powerpc64-di, pcmcia-modules-4.15.0-2-powerpc64-di +Description: Common PCMCIA NIC drivers + This package contains common PCMCIA NIC drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64 +Package-Type: udeb + +Package: pcmcia-modules-4.15.0-2-powerpc64-di +Architecture: powerpc ppc64 +Section: debian-installer +Priority: standard +Provides: pcmcia-modules +Depends: kernel-image-4.15.0-2-powerpc64-di +Description: Common PCMCIA drivers + This package contains common PCMCIA drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64 +Package-Type: udeb + +Package: sata-modules-4.15.0-2-powerpc64-di +Architecture: powerpc ppc64 +Section: debian-installer +Priority: standard +Provides: sata-modules +Depends: kernel-image-4.15.0-2-powerpc64-di, scsi-core-modules-4.15.0-2-powerpc64-di, ata-modules-4.15.0-2-powerpc64-di +Description: SATA drivers + This package contains SATA drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64 +Package-Type: udeb + +Package: crc-modules-4.15.0-2-powerpc64-di +Architecture: powerpc ppc64 +Section: debian-installer +Priority: optional +Provides: crc-modules +Depends: kernel-image-4.15.0-2-powerpc64-di +Description: CRC modules + This package contains CRC support modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64 +Package-Type: udeb + +Package: crypto-modules-4.15.0-2-powerpc64-di +Architecture: powerpc ppc64 +Section: debian-installer +Priority: optional +Provides: crypto-modules +Depends: kernel-image-4.15.0-2-powerpc64-di +Description: crypto modules + This package contains crypto modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64 +Package-Type: udeb + +Package: crypto-dm-modules-4.15.0-2-powerpc64-di +Architecture: powerpc ppc64 +Section: debian-installer +Priority: optional +Provides: crypto-dm-modules +Depends: kernel-image-4.15.0-2-powerpc64-di, md-modules-4.15.0-2-powerpc64-di +Description: devicemapper crypto module + This package contains the devicemapper crypto (dm-crypt) module. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64 +Package-Type: udeb + +Package: ata-modules-4.15.0-2-powerpc64-di +Architecture: powerpc ppc64 +Section: debian-installer +Priority: optional +Provides: ata-modules +Depends: kernel-image-4.15.0-2-powerpc64-di, scsi-core-modules-4.15.0-2-powerpc64-di +Description: ATA disk modules + This package contains core ATA disk modules used by both PATA and SATA + disk drivers. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64 +Package-Type: udeb + +Package: nbd-modules-4.15.0-2-powerpc64-di +Architecture: powerpc ppc64 +Section: debian-installer +Priority: optional +Provides: nbd-modules +Depends: kernel-image-4.15.0-2-powerpc64-di +Description: Network Block Device modules + This package contains the modules required for support of the Network + Block Device +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64 +Package-Type: udeb + +Package: squashfs-modules-4.15.0-2-powerpc64-di +Architecture: powerpc ppc64 +Section: debian-installer +Priority: optional +Provides: squashfs-modules +Depends: kernel-image-4.15.0-2-powerpc64-di +Description: squashfs modules + This package contains squashfs modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64 +Package-Type: udeb + +Package: virtio-modules-4.15.0-2-powerpc64-di +Architecture: powerpc ppc64 +Section: debian-installer +Priority: optional +Provides: virtio-modules +Depends: kernel-image-4.15.0-2-powerpc64-di, scsi-core-modules-4.15.0-2-powerpc64-di +Description: virtio modules + This package contains virtio modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64 +Package-Type: udeb + +Package: uinput-modules-4.15.0-2-powerpc64-di +Architecture: powerpc ppc64 +Section: debian-installer +Priority: optional +Provides: uinput-modules +Depends: kernel-image-4.15.0-2-powerpc64-di +Description: uinput support + This package contains the uinput module. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64 +Package-Type: udeb + +Package: udf-modules-4.15.0-2-powerpc64-di +Architecture: powerpc ppc64 +Section: debian-installer +Priority: optional +Provides: udf-modules +Depends: kernel-image-4.15.0-2-powerpc64-di, crc-modules-4.15.0-2-powerpc64-di +Description: UDF modules + This package contains the UDF filesystem module. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64 +Package-Type: udeb + +Package: fuse-modules-4.15.0-2-powerpc64-di +Architecture: powerpc ppc64 +Section: debian-installer +Priority: optional +Provides: fuse-modules +Depends: kernel-image-4.15.0-2-powerpc64-di +Description: FUSE modules + This package contains the Filesystem in Userspace (FUSE) module. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64 +Package-Type: udeb + +Package: hypervisor-modules-4.15.0-2-powerpc64-di +Architecture: powerpc ppc64 +Section: debian-installer +Priority: standard +Provides: hypervisor-modules +Depends: kernel-image-4.15.0-2-powerpc64-di +Description: IBM 64bit hypervisor console modules + Contains drivers for the hypervisor console, used as console for linux + running in logical partitions of IBM hardware supporting it. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64 +Package-Type: udeb + +Package: fancontrol-modules-4.15.0-2-powerpc64-di +Architecture: powerpc ppc64 +Section: debian-installer +Priority: standard +Provides: fancontrol-modules +Depends: kernel-image-4.15.0-2-powerpc64-di +Description: Apple powermac fancontrol modules + Contains drivers for macintosh i2c bus as well as for the monitoring + devices connected to it. This allows to control the fans during + installation. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64 +Package-Type: udeb + +Package: linux-image-4.15.0-2-powerpc +Architecture: powerpc +Depends: kmod, linux-base (>= 4.3~), ${misc:Depends}, initramfs-tools (>= 0.120+deb8u2) [powerpc] | linux-initramfs-tool [powerpc] +Recommends: firmware-linux-free, ${kernel:Recommends}, apparmor [powerpc] +Suggests: linux-doc-4.15, debian-kernel-handbook, mkvmlinuz [powerpc] +Breaks: initramfs-tools (<< 0.120+deb8u2) +Description: Linux 4.15 for uniprocessor 32-bit PowerPC + The Linux kernel 4.15 and modules for use on uniprocessor 32-bit PowerPC. +Build-Profiles: + +Package: linux-headers-4.15.0-2-powerpc +Architecture: powerpc +Depends: linux-headers-4.15.0-2-common (= ${source:Version}), linux-kbuild-4.15, ${misc:Depends}, gcc-7 +Description: Header files for Linux 4.15.0-2-powerpc + This package provides the architecture-specific kernel header files for + Linux kernel 4.15.0-2-powerpc, generally used for building out-of-tree + kernel modules. These files are going to be installed into + /usr/src/linux-headers-4.15.0-2-powerpc, and can be used for building + modules that load into the kernel provided by the + linux-image-4.15.0-2-powerpc package. +Build-Profiles: + +Package: linux-image-4.15.0-2-powerpc-dbg +Architecture: powerpc +Section: debug +Priority: optional +Depends: ${misc:Depends} +Description: Debug symbols for linux-image-4.15.0-2-powerpc + This package provides the detached debug symbols for the Linux kernel and + modules in linux-image-4.15.0-2-powerpc. +Build-Profiles: + +Package: linux-image-4.15.0-2-powerpc-smp +Architecture: powerpc +Depends: kmod, linux-base (>= 4.3~), ${misc:Depends}, initramfs-tools (>= 0.120+deb8u2) [powerpc] | linux-initramfs-tool [powerpc] +Recommends: firmware-linux-free, ${kernel:Recommends}, apparmor [powerpc] +Suggests: linux-doc-4.15, debian-kernel-handbook, mkvmlinuz [powerpc] +Breaks: initramfs-tools (<< 0.120+deb8u2) +Description: Linux 4.15 for multiprocessor 32-bit PowerPC + The Linux kernel 4.15 and modules for use on multiprocessor 32-bit + PowerPC. +Build-Profiles: + +Package: linux-headers-4.15.0-2-powerpc-smp +Architecture: powerpc +Depends: linux-headers-4.15.0-2-common (= ${source:Version}), linux-kbuild-4.15, ${misc:Depends}, gcc-7 +Description: Header files for Linux 4.15.0-2-powerpc-smp + This package provides the architecture-specific kernel header files for + Linux kernel 4.15.0-2-powerpc-smp, generally used for building out-of-tree + kernel modules. These files are going to be installed into + /usr/src/linux-headers-4.15.0-2-powerpc-smp, and can be used for building + modules that load into the kernel provided by the + linux-image-4.15.0-2-powerpc-smp package. +Build-Profiles: + +Package: linux-image-4.15.0-2-powerpc-smp-dbg +Architecture: powerpc +Section: debug +Priority: optional +Depends: ${misc:Depends} +Description: Debug symbols for linux-image-4.15.0-2-powerpc-smp + This package provides the detached debug symbols for the Linux kernel and + modules in linux-image-4.15.0-2-powerpc-smp. +Build-Profiles: + +Package: linux-image-4.15.0-2-powerpc64 +Architecture: powerpc ppc64 +Depends: kmod, linux-base (>= 4.3~), ${misc:Depends}, initramfs-tools (>= 0.120+deb8u2) [powerpc ppc64] | linux-initramfs-tool [powerpc ppc64] +Recommends: firmware-linux-free, ${kernel:Recommends}, apparmor [powerpc ppc64] +Suggests: linux-doc-4.15, debian-kernel-handbook, mkvmlinuz [powerpc ppc64] +Breaks: initramfs-tools (<< 0.120+deb8u2) +Description: Linux 4.15 for 64-bit PowerPC + The Linux kernel 4.15 and modules for use on 64-bit PowerPC. +Build-Profiles: + +Package: linux-headers-4.15.0-2-powerpc64 +Architecture: powerpc ppc64 +Depends: linux-headers-4.15.0-2-common (= ${source:Version}), linux-kbuild-4.15, ${misc:Depends}, gcc-7 +Description: Header files for Linux 4.15.0-2-powerpc64 + This package provides the architecture-specific kernel header files for + Linux kernel 4.15.0-2-powerpc64, generally used for building out-of-tree + kernel modules. These files are going to be installed into + /usr/src/linux-headers-4.15.0-2-powerpc64, and can be used for building + modules that load into the kernel provided by the + linux-image-4.15.0-2-powerpc64 package. +Build-Profiles: + +Package: linux-image-4.15.0-2-powerpc64-dbg +Architecture: powerpc ppc64 +Section: debug +Priority: optional +Depends: ${misc:Depends} +Description: Debug symbols for linux-image-4.15.0-2-powerpc64 + This package provides the detached debug symbols for the Linux kernel and + modules in linux-image-4.15.0-2-powerpc64. +Build-Profiles: + +Package: linux-headers-4.15.0-2-all-powerpcspe +Architecture: powerpcspe +Depends: ${misc:Depends}, linux-headers-4.15.0-2-powerpcspe (= ${binary:Version}) +Description: All header files for Linux 4.15 (meta-package) + This package depends against all architecture-specific kernel header files + for Linux kernel version 4.15, generally used for building out-of-tree + kernel modules. +Build-Profiles: + +Package: linux-image-4.15.0-2-powerpcspe +Architecture: powerpcspe +Depends: kmod, linux-base (>= 4.3~), ${misc:Depends}, initramfs-tools (>= 0.120+deb8u2) [powerpcspe] | linux-initramfs-tool [powerpcspe] +Recommends: firmware-linux-free, ${kernel:Recommends}, apparmor [powerpcspe] +Suggests: linux-doc-4.15, debian-kernel-handbook, mkvmlinuz [powerpcspe] +Breaks: initramfs-tools (<< 0.120+deb8u2) +Description: Linux 4.15 for 32-bit PowerPC with SPE (instead of AltiVec) with SMP support + The Linux kernel 4.15 and modules for use on 32-bit PowerPC with SPE + (instead of AltiVec) with SMP support. +Build-Profiles: + +Package: linux-headers-4.15.0-2-powerpcspe +Architecture: powerpcspe +Depends: linux-headers-4.15.0-2-common (= ${source:Version}), linux-kbuild-4.15, ${misc:Depends}, gcc-7 +Description: Header files for Linux 4.15.0-2-powerpcspe + This package provides the architecture-specific kernel header files for + Linux kernel 4.15.0-2-powerpcspe, generally used for building out-of-tree + kernel modules. These files are going to be installed into + /usr/src/linux-headers-4.15.0-2-powerpcspe, and can be used for building + modules that load into the kernel provided by the + linux-image-4.15.0-2-powerpcspe package. +Build-Profiles: + +Package: linux-image-4.15.0-2-powerpcspe-dbg +Architecture: powerpcspe +Section: debug +Priority: optional +Depends: ${misc:Depends} +Description: Debug symbols for linux-image-4.15.0-2-powerpcspe + This package provides the detached debug symbols for the Linux kernel and + modules in linux-image-4.15.0-2-powerpcspe. +Build-Profiles: + +Package: linux-headers-4.15.0-2-all-ppc64 +Architecture: ppc64 +Depends: ${misc:Depends}, linux-headers-4.15.0-2-powerpc64 (= ${binary:Version}) +Description: All header files for Linux 4.15 (meta-package) + This package depends against all architecture-specific kernel header files + for Linux kernel version 4.15, generally used for building out-of-tree + kernel modules. +Build-Profiles: + +Package: linux-headers-4.15.0-2-all-ppc64el +Architecture: ppc64el +Depends: ${misc:Depends}, linux-headers-4.15.0-2-powerpc64le (= ${binary:Version}) +Description: All header files for Linux 4.15 (meta-package) + This package depends against all architecture-specific kernel header files + for Linux kernel version 4.15, generally used for building out-of-tree + kernel modules. +Build-Profiles: + +Package: kernel-image-4.15.0-2-powerpc64le-di +Architecture: ppc64el +Section: debian-installer +Priority: standard +Provides: kernel-image +Description: Linux kernel image and core modules for the Debian installer + This package contains the kernel image and core modules for the Debian + installer boot images. It does _not_ provide a usable kernel for your + full Debian system. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64le +Package-Type: udeb + +Package: nic-modules-4.15.0-2-powerpc64le-di +Architecture: ppc64el +Section: debian-installer +Priority: standard +Provides: nic-modules, nic-extra-modules +Depends: kernel-image-4.15.0-2-powerpc64le-di, nic-shared-modules-4.15.0-2-powerpc64le-di, crc-modules-4.15.0-2-powerpc64le-di +Description: NIC drivers + This package contains Ethernet and some paravirtualised network drivers + for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64le +Package-Type: udeb + +Package: nic-shared-modules-4.15.0-2-powerpc64le-di +Architecture: ppc64el +Section: debian-installer +Priority: standard +Provides: nic-shared-modules +Depends: kernel-image-4.15.0-2-powerpc64le-di +Description: Shared NIC drivers + This package contains NIC drivers needed by combinations of nic-modules, + nic-pcmcia-modules, nic-usb-modules and nic-wireless-modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64le +Package-Type: udeb + +Package: serial-modules-4.15.0-2-powerpc64le-di +Architecture: ppc64el +Section: debian-installer +Priority: optional +Provides: serial-modules +Depends: kernel-image-4.15.0-2-powerpc64le-di +Description: Serial drivers + This package contains serial drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64le +Package-Type: udeb + +Package: usb-serial-modules-4.15.0-2-powerpc64le-di +Architecture: ppc64el +Section: debian-installer +Priority: optional +Provides: usb-serial-modules +Depends: kernel-image-4.15.0-2-powerpc64le-di, usb-modules-4.15.0-2-powerpc64le-di +Description: USB serial drivers + This package contains USB serial drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64le +Package-Type: udeb + +Package: ppp-modules-4.15.0-2-powerpc64le-di +Architecture: ppc64el +Section: debian-installer +Priority: optional +Provides: ppp-modules +Depends: kernel-image-4.15.0-2-powerpc64le-di, serial-modules-4.15.0-2-powerpc64le-di, crc-modules-4.15.0-2-powerpc64le-di +Description: PPP drivers + This package contains PPP drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64le +Package-Type: udeb + +Package: cdrom-core-modules-4.15.0-2-powerpc64le-di +Architecture: ppc64el +Section: debian-installer +Priority: standard +Provides: cdrom-core-modules +Depends: kernel-image-4.15.0-2-powerpc64le-di, scsi-core-modules-4.15.0-2-powerpc64le-di, isofs-modules-4.15.0-2-powerpc64le-di +Description: CDROM support + This package contains core CDROM support for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64le +Package-Type: udeb + +Package: firewire-core-modules-4.15.0-2-powerpc64le-di +Architecture: ppc64el +Section: debian-installer +Priority: standard +Provides: firewire-core-modules +Depends: kernel-image-4.15.0-2-powerpc64le-di, scsi-core-modules-4.15.0-2-powerpc64le-di, crc-modules-4.15.0-2-powerpc64le-di +Description: Core FireWire drivers + This package contains core FireWire drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64le +Package-Type: udeb + +Package: scsi-core-modules-4.15.0-2-powerpc64le-di +Architecture: ppc64el +Section: debian-installer +Priority: standard +Provides: scsi-core-modules +Depends: kernel-image-4.15.0-2-powerpc64le-di +Description: Core SCSI subsystem + This package contains the core SCSI subsystem for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64le +Package-Type: udeb + +Package: scsi-modules-4.15.0-2-powerpc64le-di +Architecture: ppc64el +Section: debian-installer +Priority: standard +Provides: scsi-modules +Depends: kernel-image-4.15.0-2-powerpc64le-di, scsi-core-modules-4.15.0-2-powerpc64le-di, cdrom-core-modules-4.15.0-2-powerpc64le-di, ata-modules-4.15.0-2-powerpc64le-di +Description: SCSI drivers + This package contains SCSI drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64le +Package-Type: udeb + +Package: loop-modules-4.15.0-2-powerpc64le-di +Architecture: ppc64el +Section: debian-installer +Priority: standard +Provides: loop-modules +Depends: kernel-image-4.15.0-2-powerpc64le-di +Description: Loopback filesystem support + This package contains loopback filesystem support for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64le +Package-Type: udeb + +Package: btrfs-modules-4.15.0-2-powerpc64le-di +Architecture: ppc64el +Section: debian-installer +Priority: optional +Provides: btrfs-modules +Depends: kernel-image-4.15.0-2-powerpc64le-di, crc-modules-4.15.0-2-powerpc64le-di, md-modules-4.15.0-2-powerpc64le-di +Description: BTRFS filesystem support + This package contains the BTRFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64le +Package-Type: udeb + +Package: ext4-modules-4.15.0-2-powerpc64le-di +Architecture: ppc64el +Section: debian-installer +Priority: standard +Provides: ext4-modules, ext2-modules, ext3-modules +Depends: kernel-image-4.15.0-2-powerpc64le-di, crc-modules-4.15.0-2-powerpc64le-di +Description: ext2/ext3/ext4 filesystem support + This package contains the ext4 filesystem module for the kernel, which + also supports ext2 and ext3. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64le +Package-Type: udeb + +Package: isofs-modules-4.15.0-2-powerpc64le-di +Architecture: ppc64el +Section: debian-installer +Priority: standard +Provides: isofs-modules +Depends: kernel-image-4.15.0-2-powerpc64le-di +Description: ISOFS filesystem support + This package contains the ISOFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64le +Package-Type: udeb + +Package: jfs-modules-4.15.0-2-powerpc64le-di +Architecture: ppc64el +Section: debian-installer +Priority: standard +Provides: jfs-modules +Depends: kernel-image-4.15.0-2-powerpc64le-di +Description: JFS filesystem support + This package contains the JFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64le +Package-Type: udeb + +Package: xfs-modules-4.15.0-2-powerpc64le-di +Architecture: ppc64el +Section: debian-installer +Priority: standard +Provides: xfs-modules +Depends: kernel-image-4.15.0-2-powerpc64le-di, crc-modules-4.15.0-2-powerpc64le-di +Description: XFS filesystem support + This package contains the XFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64le +Package-Type: udeb + +Package: fat-modules-4.15.0-2-powerpc64le-di +Architecture: ppc64el +Section: debian-installer +Priority: optional +Provides: fat-modules +Depends: kernel-image-4.15.0-2-powerpc64le-di +Description: FAT filesystem support + This package contains the FAT and VFAT filesystem modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64le +Package-Type: udeb + +Package: md-modules-4.15.0-2-powerpc64le-di +Architecture: ppc64el +Section: debian-installer +Priority: optional +Provides: md-modules +Depends: kernel-image-4.15.0-2-powerpc64le-di, crc-modules-4.15.0-2-powerpc64le-di +Description: RAID and LVM support + This package contains RAID and LVM modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64le +Package-Type: udeb + +Package: multipath-modules-4.15.0-2-powerpc64le-di +Architecture: ppc64el +Section: debian-installer +Priority: optional +Provides: multipath-modules +Depends: kernel-image-4.15.0-2-powerpc64le-di, md-modules-4.15.0-2-powerpc64le-di, scsi-core-modules-4.15.0-2-powerpc64le-di +Description: Multipath support + This package contains DM-Multipath modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64le +Package-Type: udeb + +Package: usb-modules-4.15.0-2-powerpc64le-di +Architecture: ppc64el +Section: debian-installer +Priority: optional +Provides: usb-modules +Depends: kernel-image-4.15.0-2-powerpc64le-di +Description: USB support + This package contains core USB drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64le +Package-Type: udeb + +Package: usb-storage-modules-4.15.0-2-powerpc64le-di +Architecture: ppc64el +Section: debian-installer +Priority: standard +Provides: usb-storage-modules +Depends: kernel-image-4.15.0-2-powerpc64le-di, scsi-core-modules-4.15.0-2-powerpc64le-di, usb-modules-4.15.0-2-powerpc64le-di +Description: USB storage support + This package contains the USB storage driver for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64le +Package-Type: udeb + +Package: input-modules-4.15.0-2-powerpc64le-di +Architecture: ppc64el +Section: debian-installer +Priority: optional +Provides: input-modules +Depends: kernel-image-4.15.0-2-powerpc64le-di, usb-modules-4.15.0-2-powerpc64le-di +Description: Input devices support + This package contains input device drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64le +Package-Type: udeb + +Package: event-modules-4.15.0-2-powerpc64le-di +Architecture: ppc64el +Section: debian-installer +Priority: optional +Provides: event-modules +Depends: kernel-image-4.15.0-2-powerpc64le-di +Description: Event support + This package contains event drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64le +Package-Type: udeb + +Package: mouse-modules-4.15.0-2-powerpc64le-di +Architecture: ppc64el +Section: debian-installer +Priority: optional +Provides: mouse-modules +Depends: kernel-image-4.15.0-2-powerpc64le-di, event-modules-4.15.0-2-powerpc64le-di, input-modules-4.15.0-2-powerpc64le-di, usb-modules-4.15.0-2-powerpc64le-di +Description: Mouse support + This package contains mouse drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64le +Package-Type: udeb + +Package: sata-modules-4.15.0-2-powerpc64le-di +Architecture: ppc64el +Section: debian-installer +Priority: standard +Provides: sata-modules +Depends: kernel-image-4.15.0-2-powerpc64le-di, scsi-core-modules-4.15.0-2-powerpc64le-di, ata-modules-4.15.0-2-powerpc64le-di +Description: SATA drivers + This package contains SATA drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64le +Package-Type: udeb + +Package: crc-modules-4.15.0-2-powerpc64le-di +Architecture: ppc64el +Section: debian-installer +Priority: optional +Provides: crc-modules +Depends: kernel-image-4.15.0-2-powerpc64le-di +Description: CRC modules + This package contains CRC support modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64le +Package-Type: udeb + +Package: crypto-modules-4.15.0-2-powerpc64le-di +Architecture: ppc64el +Section: debian-installer +Priority: optional +Provides: crypto-modules +Depends: kernel-image-4.15.0-2-powerpc64le-di +Description: crypto modules + This package contains crypto modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64le +Package-Type: udeb + +Package: crypto-dm-modules-4.15.0-2-powerpc64le-di +Architecture: ppc64el +Section: debian-installer +Priority: optional +Provides: crypto-dm-modules +Depends: kernel-image-4.15.0-2-powerpc64le-di, md-modules-4.15.0-2-powerpc64le-di +Description: devicemapper crypto module + This package contains the devicemapper crypto (dm-crypt) module. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64le +Package-Type: udeb + +Package: ata-modules-4.15.0-2-powerpc64le-di +Architecture: ppc64el +Section: debian-installer +Priority: optional +Provides: ata-modules +Depends: kernel-image-4.15.0-2-powerpc64le-di, scsi-core-modules-4.15.0-2-powerpc64le-di +Description: ATA disk modules + This package contains core ATA disk modules used by both PATA and SATA + disk drivers. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64le +Package-Type: udeb + +Package: nbd-modules-4.15.0-2-powerpc64le-di +Architecture: ppc64el +Section: debian-installer +Priority: optional +Provides: nbd-modules +Depends: kernel-image-4.15.0-2-powerpc64le-di +Description: Network Block Device modules + This package contains the modules required for support of the Network + Block Device +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64le +Package-Type: udeb + +Package: squashfs-modules-4.15.0-2-powerpc64le-di +Architecture: ppc64el +Section: debian-installer +Priority: optional +Provides: squashfs-modules +Depends: kernel-image-4.15.0-2-powerpc64le-di +Description: squashfs modules + This package contains squashfs modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64le +Package-Type: udeb + +Package: virtio-modules-4.15.0-2-powerpc64le-di +Architecture: ppc64el +Section: debian-installer +Priority: optional +Provides: virtio-modules +Depends: kernel-image-4.15.0-2-powerpc64le-di, scsi-core-modules-4.15.0-2-powerpc64le-di +Description: virtio modules + This package contains virtio modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64le +Package-Type: udeb + +Package: uinput-modules-4.15.0-2-powerpc64le-di +Architecture: ppc64el +Section: debian-installer +Priority: optional +Provides: uinput-modules +Depends: kernel-image-4.15.0-2-powerpc64le-di +Description: uinput support + This package contains the uinput module. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64le +Package-Type: udeb + +Package: udf-modules-4.15.0-2-powerpc64le-di +Architecture: ppc64el +Section: debian-installer +Priority: optional +Provides: udf-modules +Depends: kernel-image-4.15.0-2-powerpc64le-di, crc-modules-4.15.0-2-powerpc64le-di +Description: UDF modules + This package contains the UDF filesystem module. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64le +Package-Type: udeb + +Package: fuse-modules-4.15.0-2-powerpc64le-di +Architecture: ppc64el +Section: debian-installer +Priority: optional +Provides: fuse-modules +Depends: kernel-image-4.15.0-2-powerpc64le-di +Description: FUSE modules + This package contains the Filesystem in Userspace (FUSE) module. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64le +Package-Type: udeb + +Package: hypervisor-modules-4.15.0-2-powerpc64le-di +Architecture: ppc64el +Section: debian-installer +Priority: standard +Provides: hypervisor-modules +Depends: kernel-image-4.15.0-2-powerpc64le-di +Description: IBM 64bit hypervisor console modules + Contains drivers for the hypervisor console, used as console for linux + running in logical partitions of IBM hardware supporting it. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64le +Package-Type: udeb + +Package: fancontrol-modules-4.15.0-2-powerpc64le-di +Architecture: ppc64el +Section: debian-installer +Priority: standard +Provides: fancontrol-modules +Depends: kernel-image-4.15.0-2-powerpc64le-di +Description: Apple powermac fancontrol modules + Contains drivers for macintosh i2c bus as well as for the monitoring + devices connected to it. This allows to control the fans during + installation. +Build-Profiles: +Kernel-Version: 4.15.0-2-powerpc64le +Package-Type: udeb + +Package: linux-image-4.15.0-2-powerpc64le +Architecture: ppc64el +Depends: kmod, linux-base (>= 4.3~), ${misc:Depends}, initramfs-tools (>= 0.120+deb8u2) [ppc64el] | linux-initramfs-tool [ppc64el] +Recommends: firmware-linux-free, ${kernel:Recommends}, apparmor [ppc64el] +Suggests: linux-doc-4.15, debian-kernel-handbook, mkvmlinuz [ppc64el] +Breaks: initramfs-tools (<< 0.120+deb8u2) +Description: Linux 4.15 for Little-endian 64-bit PowerPC + The Linux kernel 4.15 and modules for use on Little-endian 64-bit PowerPC. +Build-Profiles: + +Package: linux-headers-4.15.0-2-powerpc64le +Architecture: ppc64el +Depends: linux-headers-4.15.0-2-common (= ${source:Version}), linux-kbuild-4.15, ${misc:Depends}, gcc-7 +Description: Header files for Linux 4.15.0-2-powerpc64le + This package provides the architecture-specific kernel header files for + Linux kernel 4.15.0-2-powerpc64le, generally used for building out-of-tree + kernel modules. These files are going to be installed into + /usr/src/linux-headers-4.15.0-2-powerpc64le, and can be used for building + modules that load into the kernel provided by the + linux-image-4.15.0-2-powerpc64le package. +Build-Profiles: + +Package: linux-image-4.15.0-2-powerpc64le-dbg +Architecture: ppc64el +Section: debug +Priority: optional +Depends: ${misc:Depends} +Description: Debug symbols for linux-image-4.15.0-2-powerpc64le + This package provides the detached debug symbols for the Linux kernel and + modules in linux-image-4.15.0-2-powerpc64le. +Build-Profiles: + +Package: linux-headers-4.15.0-2-all-s390x +Architecture: s390x +Depends: ${misc:Depends}, linux-headers-4.15.0-2-s390x (= ${binary:Version}) +Description: All header files for Linux 4.15 (meta-package) + This package depends against all architecture-specific kernel header files + for Linux kernel version 4.15, generally used for building out-of-tree + kernel modules. +Build-Profiles: + +Package: kernel-image-4.15.0-2-s390x-di +Architecture: s390x +Section: debian-installer +Priority: standard +Provides: kernel-image +Description: Linux kernel image and core modules for the Debian installer + This package contains the kernel image and core modules for the Debian + installer boot images. It does _not_ provide a usable kernel for your + full Debian system. +Build-Profiles: +Kernel-Version: 4.15.0-2-s390x +Package-Type: udeb + +Package: nic-modules-4.15.0-2-s390x-di +Architecture: s390x +Section: debian-installer +Priority: standard +Provides: nic-modules, nic-extra-modules +Depends: kernel-image-4.15.0-2-s390x-di, crc-modules-4.15.0-2-s390x-di +Description: NIC drivers + This package contains Ethernet and some paravirtualised network drivers + for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-s390x +Package-Type: udeb + +Package: scsi-core-modules-4.15.0-2-s390x-di +Architecture: s390x +Section: debian-installer +Priority: standard +Provides: scsi-core-modules +Depends: kernel-image-4.15.0-2-s390x-di +Description: Core SCSI subsystem + This package contains the core SCSI subsystem for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-s390x +Package-Type: udeb + +Package: scsi-modules-4.15.0-2-s390x-di +Architecture: s390x +Section: debian-installer +Priority: standard +Provides: scsi-modules +Depends: kernel-image-4.15.0-2-s390x-di, scsi-core-modules-4.15.0-2-s390x-di +Description: SCSI drivers + This package contains SCSI drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-s390x +Package-Type: udeb + +Package: loop-modules-4.15.0-2-s390x-di +Architecture: s390x +Section: debian-installer +Priority: standard +Provides: loop-modules +Depends: kernel-image-4.15.0-2-s390x-di +Description: Loopback filesystem support + This package contains loopback filesystem support for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-s390x +Package-Type: udeb + +Package: btrfs-modules-4.15.0-2-s390x-di +Architecture: s390x +Section: debian-installer +Priority: optional +Provides: btrfs-modules +Depends: kernel-image-4.15.0-2-s390x-di, crc-modules-4.15.0-2-s390x-di, zlib-modules-4.15.0-2-s390x-di, md-modules-4.15.0-2-s390x-di +Description: BTRFS filesystem support + This package contains the BTRFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-s390x +Package-Type: udeb + +Package: ext4-modules-4.15.0-2-s390x-di +Architecture: s390x +Section: debian-installer +Priority: standard +Provides: ext4-modules, ext2-modules, ext3-modules +Depends: kernel-image-4.15.0-2-s390x-di, crc-modules-4.15.0-2-s390x-di +Description: ext2/ext3/ext4 filesystem support + This package contains the ext4 filesystem module for the kernel, which + also supports ext2 and ext3. +Build-Profiles: +Kernel-Version: 4.15.0-2-s390x +Package-Type: udeb + +Package: isofs-modules-4.15.0-2-s390x-di +Architecture: s390x +Section: debian-installer +Priority: standard +Provides: isofs-modules +Depends: kernel-image-4.15.0-2-s390x-di +Description: ISOFS filesystem support + This package contains the ISOFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-s390x +Package-Type: udeb + +Package: xfs-modules-4.15.0-2-s390x-di +Architecture: s390x +Section: debian-installer +Priority: standard +Provides: xfs-modules +Depends: kernel-image-4.15.0-2-s390x-di, crc-modules-4.15.0-2-s390x-di +Description: XFS filesystem support + This package contains the XFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-s390x +Package-Type: udeb + +Package: fat-modules-4.15.0-2-s390x-di +Architecture: s390x +Section: debian-installer +Priority: optional +Provides: fat-modules +Depends: kernel-image-4.15.0-2-s390x-di +Description: FAT filesystem support + This package contains the FAT and VFAT filesystem modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-s390x +Package-Type: udeb + +Package: md-modules-4.15.0-2-s390x-di +Architecture: s390x +Section: debian-installer +Priority: optional +Provides: md-modules +Depends: kernel-image-4.15.0-2-s390x-di, crc-modules-4.15.0-2-s390x-di +Description: RAID and LVM support + This package contains RAID and LVM modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-s390x +Package-Type: udeb + +Package: multipath-modules-4.15.0-2-s390x-di +Architecture: s390x +Section: debian-installer +Priority: optional +Provides: multipath-modules +Depends: kernel-image-4.15.0-2-s390x-di, md-modules-4.15.0-2-s390x-di, scsi-core-modules-4.15.0-2-s390x-di +Description: Multipath support + This package contains DM-Multipath modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-s390x +Package-Type: udeb + +Package: crc-modules-4.15.0-2-s390x-di +Architecture: s390x +Section: debian-installer +Priority: optional +Provides: crc-modules +Depends: kernel-image-4.15.0-2-s390x-di +Description: CRC modules + This package contains CRC support modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-s390x +Package-Type: udeb + +Package: crypto-modules-4.15.0-2-s390x-di +Architecture: s390x +Section: debian-installer +Priority: optional +Provides: crypto-modules +Depends: kernel-image-4.15.0-2-s390x-di +Description: crypto modules + This package contains crypto modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-s390x +Package-Type: udeb + +Package: crypto-dm-modules-4.15.0-2-s390x-di +Architecture: s390x +Section: debian-installer +Priority: optional +Provides: crypto-dm-modules +Depends: kernel-image-4.15.0-2-s390x-di, md-modules-4.15.0-2-s390x-di +Description: devicemapper crypto module + This package contains the devicemapper crypto (dm-crypt) module. +Build-Profiles: +Kernel-Version: 4.15.0-2-s390x +Package-Type: udeb + +Package: nbd-modules-4.15.0-2-s390x-di +Architecture: s390x +Section: debian-installer +Priority: optional +Provides: nbd-modules +Depends: kernel-image-4.15.0-2-s390x-di +Description: Network Block Device modules + This package contains the modules required for support of the Network + Block Device +Build-Profiles: +Kernel-Version: 4.15.0-2-s390x +Package-Type: udeb + +Package: virtio-modules-4.15.0-2-s390x-di +Architecture: s390x +Section: debian-installer +Priority: optional +Provides: virtio-modules +Depends: kernel-image-4.15.0-2-s390x-di, scsi-core-modules-4.15.0-2-s390x-di +Description: virtio modules + This package contains virtio modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-s390x +Package-Type: udeb + +Package: zlib-modules-4.15.0-2-s390x-di +Architecture: s390x +Section: debian-installer +Priority: optional +Provides: zlib-modules +Depends: kernel-image-4.15.0-2-s390x-di +Description: zlib modules + This package contains zlib modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-s390x +Package-Type: udeb + +Package: udf-modules-4.15.0-2-s390x-di +Architecture: s390x +Section: debian-installer +Priority: optional +Provides: udf-modules +Depends: kernel-image-4.15.0-2-s390x-di, crc-modules-4.15.0-2-s390x-di +Description: UDF modules + This package contains the UDF filesystem module. +Build-Profiles: +Kernel-Version: 4.15.0-2-s390x +Package-Type: udeb + +Package: fuse-modules-4.15.0-2-s390x-di +Architecture: s390x +Section: debian-installer +Priority: optional +Provides: fuse-modules +Depends: kernel-image-4.15.0-2-s390x-di +Description: FUSE modules + This package contains the Filesystem in Userspace (FUSE) module. +Build-Profiles: +Kernel-Version: 4.15.0-2-s390x +Package-Type: udeb + +Package: dasd-modules-4.15.0-2-s390x-di +Architecture: s390x +Section: debian-installer +Priority: standard +Provides: dasd-modules +Depends: kernel-image-4.15.0-2-s390x-di +Description: dasd modules + This package contains dasd modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-s390x +Package-Type: udeb + +Package: dasd-extra-modules-4.15.0-2-s390x-di +Architecture: s390x +Section: debian-installer +Priority: optional +Provides: dasd-extra-modules +Depends: kernel-image-4.15.0-2-s390x-di, dasd-modules-4.15.0-2-s390x-di +Description: optional dasd DIAG support + This package contains the module for dasd DIAG support. The udeb is not + loaded by default as the installer does not actually support this. It can + however be useful to have available in rescue situations. +Build-Profiles: +Kernel-Version: 4.15.0-2-s390x +Package-Type: udeb + +Package: linux-image-4.15.0-2-s390x +Architecture: s390x +Depends: kmod, linux-base (>= 4.3~), ${misc:Depends}, initramfs-tools (>= 0.120+deb8u2) [s390x] | linux-initramfs-tool [s390x] +Recommends: firmware-linux-free, ${kernel:Recommends}, apparmor [s390x] +Suggests: linux-doc-4.15, debian-kernel-handbook, s390-tools [s390x] +Breaks: initramfs-tools (<< 0.120+deb8u2) +Description: Linux 4.15 for IBM zSeries + The Linux kernel 4.15 and modules for use on IBM zSeries. +Build-Profiles: + +Package: linux-headers-4.15.0-2-s390x +Architecture: s390x +Depends: linux-headers-4.15.0-2-common (= ${source:Version}), linux-kbuild-4.15, ${misc:Depends}, linux-compiler-gcc-7-s390 +Description: Header files for Linux 4.15.0-2-s390x + This package provides the architecture-specific kernel header files for + Linux kernel 4.15.0-2-s390x, generally used for building out-of-tree + kernel modules. These files are going to be installed into + /usr/src/linux-headers-4.15.0-2-s390x, and can be used for building + modules that load into the kernel provided by the + linux-image-4.15.0-2-s390x package. +Build-Profiles: + +Package: linux-image-4.15.0-2-s390x-dbg +Architecture: s390x +Section: debug +Priority: optional +Depends: ${misc:Depends} +Description: Debug symbols for linux-image-4.15.0-2-s390x + This package provides the detached debug symbols for the Linux kernel and + modules in linux-image-4.15.0-2-s390x. +Build-Profiles: + +Package: linux-headers-4.15.0-2-all-sh4 +Architecture: sh4 +Depends: ${misc:Depends}, linux-headers-4.15.0-2-sh7751r (= ${binary:Version}), linux-headers-4.15.0-2-sh7785lcr (= ${binary:Version}) +Description: All header files for Linux 4.15 (meta-package) + This package depends against all architecture-specific kernel header files + for Linux kernel version 4.15, generally used for building out-of-tree + kernel modules. +Build-Profiles: + +Package: kernel-image-4.15.0-2-sh7751r-di +Architecture: sh4 +Section: debian-installer +Priority: standard +Provides: kernel-image, event-modules, fb-modules, input-modules, mouse-modules, nic-shared-modules, rtc-modules, uinput-modules, usb-modules +Description: Linux kernel image and core modules for the Debian installer + This package contains the kernel image and core modules for the Debian + installer boot images. It does _not_ provide a usable kernel for your + full Debian system. +Build-Profiles: +Kernel-Version: 4.15.0-2-sh7751r +Package-Type: udeb + +Package: nic-modules-4.15.0-2-sh7751r-di +Architecture: sh4 +Section: debian-installer +Priority: standard +Provides: nic-modules, nic-extra-modules +Depends: kernel-image-4.15.0-2-sh7751r-di, i2c-modules-4.15.0-2-sh7751r-di, crc-modules-4.15.0-2-sh7751r-di +Description: NIC drivers + This package contains Ethernet and some paravirtualised network drivers + for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-sh7751r +Package-Type: udeb + +Package: usb-serial-modules-4.15.0-2-sh7751r-di +Architecture: sh4 +Section: debian-installer +Priority: optional +Provides: usb-serial-modules +Depends: kernel-image-4.15.0-2-sh7751r-di +Description: USB serial drivers + This package contains USB serial drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-sh7751r +Package-Type: udeb + +Package: ppp-modules-4.15.0-2-sh7751r-di +Architecture: sh4 +Section: debian-installer +Priority: optional +Provides: ppp-modules +Depends: kernel-image-4.15.0-2-sh7751r-di, zlib-modules-4.15.0-2-sh7751r-di, crc-modules-4.15.0-2-sh7751r-di +Description: PPP drivers + This package contains PPP drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-sh7751r +Package-Type: udeb + +Package: pata-modules-4.15.0-2-sh7751r-di +Architecture: sh4 +Section: debian-installer +Priority: standard +Provides: pata-modules +Depends: kernel-image-4.15.0-2-sh7751r-di +Description: PATA drivers + This package contains PATA drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-sh7751r +Package-Type: udeb + +Package: cdrom-core-modules-4.15.0-2-sh7751r-di +Architecture: sh4 +Section: debian-installer +Priority: standard +Provides: cdrom-core-modules +Depends: kernel-image-4.15.0-2-sh7751r-di, isofs-modules-4.15.0-2-sh7751r-di +Description: CDROM support + This package contains core CDROM support for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-sh7751r +Package-Type: udeb + +Package: firewire-core-modules-4.15.0-2-sh7751r-di +Architecture: sh4 +Section: debian-installer +Priority: standard +Provides: firewire-core-modules +Depends: kernel-image-4.15.0-2-sh7751r-di, crc-modules-4.15.0-2-sh7751r-di +Description: Core FireWire drivers + This package contains core FireWire drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-sh7751r +Package-Type: udeb + +Package: loop-modules-4.15.0-2-sh7751r-di +Architecture: sh4 +Section: debian-installer +Priority: standard +Provides: loop-modules +Depends: kernel-image-4.15.0-2-sh7751r-di +Description: Loopback filesystem support + This package contains loopback filesystem support for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-sh7751r +Package-Type: udeb + +Package: btrfs-modules-4.15.0-2-sh7751r-di +Architecture: sh4 +Section: debian-installer +Priority: optional +Provides: btrfs-modules +Depends: kernel-image-4.15.0-2-sh7751r-di, crc-modules-4.15.0-2-sh7751r-di, zlib-modules-4.15.0-2-sh7751r-di, md-modules-4.15.0-2-sh7751r-di +Description: BTRFS filesystem support + This package contains the BTRFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-sh7751r +Package-Type: udeb + +Package: ext4-modules-4.15.0-2-sh7751r-di +Architecture: sh4 +Section: debian-installer +Priority: standard +Provides: ext4-modules, ext2-modules, ext3-modules +Depends: kernel-image-4.15.0-2-sh7751r-di, crc-modules-4.15.0-2-sh7751r-di +Description: ext2/ext3/ext4 filesystem support + This package contains the ext4 filesystem module for the kernel, which + also supports ext2 and ext3. +Build-Profiles: +Kernel-Version: 4.15.0-2-sh7751r +Package-Type: udeb + +Package: isofs-modules-4.15.0-2-sh7751r-di +Architecture: sh4 +Section: debian-installer +Priority: standard +Provides: isofs-modules +Depends: kernel-image-4.15.0-2-sh7751r-di +Description: ISOFS filesystem support + This package contains the ISOFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-sh7751r +Package-Type: udeb + +Package: jfs-modules-4.15.0-2-sh7751r-di +Architecture: sh4 +Section: debian-installer +Priority: standard +Provides: jfs-modules +Depends: kernel-image-4.15.0-2-sh7751r-di +Description: JFS filesystem support + This package contains the JFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-sh7751r +Package-Type: udeb + +Package: xfs-modules-4.15.0-2-sh7751r-di +Architecture: sh4 +Section: debian-installer +Priority: standard +Provides: xfs-modules +Depends: kernel-image-4.15.0-2-sh7751r-di, crc-modules-4.15.0-2-sh7751r-di +Description: XFS filesystem support + This package contains the XFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-sh7751r +Package-Type: udeb + +Package: fat-modules-4.15.0-2-sh7751r-di +Architecture: sh4 +Section: debian-installer +Priority: optional +Provides: fat-modules +Depends: kernel-image-4.15.0-2-sh7751r-di +Description: FAT filesystem support + This package contains the FAT and VFAT filesystem modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-sh7751r +Package-Type: udeb + +Package: minix-modules-4.15.0-2-sh7751r-di +Architecture: sh4 +Section: debian-installer +Priority: optional +Provides: minix-modules +Depends: kernel-image-4.15.0-2-sh7751r-di +Description: Minix filesystem support + This package contains the Minix filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-sh7751r +Package-Type: udeb + +Package: md-modules-4.15.0-2-sh7751r-di +Architecture: sh4 +Section: debian-installer +Priority: optional +Provides: md-modules +Depends: kernel-image-4.15.0-2-sh7751r-di, crc-modules-4.15.0-2-sh7751r-di +Description: RAID and LVM support + This package contains RAID and LVM modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-sh7751r +Package-Type: udeb + +Package: multipath-modules-4.15.0-2-sh7751r-di +Architecture: sh4 +Section: debian-installer +Priority: optional +Provides: multipath-modules +Depends: kernel-image-4.15.0-2-sh7751r-di, md-modules-4.15.0-2-sh7751r-di +Description: Multipath support + This package contains DM-Multipath modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-sh7751r +Package-Type: udeb + +Package: usb-storage-modules-4.15.0-2-sh7751r-di +Architecture: sh4 +Section: debian-installer +Priority: standard +Provides: usb-storage-modules +Depends: kernel-image-4.15.0-2-sh7751r-di +Description: USB storage support + This package contains the USB storage driver for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-sh7751r +Package-Type: udeb + +Package: nic-usb-modules-4.15.0-2-sh7751r-di +Architecture: sh4 +Section: debian-installer +Priority: standard +Provides: nic-usb-modules +Depends: kernel-image-4.15.0-2-sh7751r-di, crc-modules-4.15.0-2-sh7751r-di +Description: USB NIC drivers + This package contains USB network adapter drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-sh7751r +Package-Type: udeb + +Package: sata-modules-4.15.0-2-sh7751r-di +Architecture: sh4 +Section: debian-installer +Priority: standard +Provides: sata-modules +Depends: kernel-image-4.15.0-2-sh7751r-di +Description: SATA drivers + This package contains SATA drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-sh7751r +Package-Type: udeb + +Package: i2c-modules-4.15.0-2-sh7751r-di +Architecture: sh4 +Section: debian-installer +Priority: optional +Provides: i2c-modules +Depends: kernel-image-4.15.0-2-sh7751r-di +Description: i2c support modules + This package contains basic i2c support modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-sh7751r +Package-Type: udeb + +Package: crc-modules-4.15.0-2-sh7751r-di +Architecture: sh4 +Section: debian-installer +Priority: optional +Provides: crc-modules +Depends: kernel-image-4.15.0-2-sh7751r-di +Description: CRC modules + This package contains CRC support modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-sh7751r +Package-Type: udeb + +Package: crypto-modules-4.15.0-2-sh7751r-di +Architecture: sh4 +Section: debian-installer +Priority: optional +Provides: crypto-modules +Depends: kernel-image-4.15.0-2-sh7751r-di +Description: crypto modules + This package contains crypto modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-sh7751r +Package-Type: udeb + +Package: crypto-dm-modules-4.15.0-2-sh7751r-di +Architecture: sh4 +Section: debian-installer +Priority: optional +Provides: crypto-dm-modules +Depends: kernel-image-4.15.0-2-sh7751r-di, md-modules-4.15.0-2-sh7751r-di +Description: devicemapper crypto module + This package contains the devicemapper crypto (dm-crypt) module. +Build-Profiles: +Kernel-Version: 4.15.0-2-sh7751r +Package-Type: udeb + +Package: nbd-modules-4.15.0-2-sh7751r-di +Architecture: sh4 +Section: debian-installer +Priority: optional +Provides: nbd-modules +Depends: kernel-image-4.15.0-2-sh7751r-di +Description: Network Block Device modules + This package contains the modules required for support of the Network + Block Device +Build-Profiles: +Kernel-Version: 4.15.0-2-sh7751r +Package-Type: udeb + +Package: squashfs-modules-4.15.0-2-sh7751r-di +Architecture: sh4 +Section: debian-installer +Priority: optional +Provides: squashfs-modules +Depends: kernel-image-4.15.0-2-sh7751r-di +Description: squashfs modules + This package contains squashfs modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-sh7751r +Package-Type: udeb + +Package: speakup-modules-4.15.0-2-sh7751r-di +Architecture: sh4 +Section: debian-installer +Priority: optional +Provides: speakup-modules +Depends: kernel-image-4.15.0-2-sh7751r-di +Description: speakup modules + This package contains speakup modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-sh7751r +Package-Type: udeb + +Package: virtio-modules-4.15.0-2-sh7751r-di +Architecture: sh4 +Section: debian-installer +Priority: optional +Provides: virtio-modules +Depends: kernel-image-4.15.0-2-sh7751r-di +Description: virtio modules + This package contains virtio modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-sh7751r +Package-Type: udeb + +Package: sound-modules-4.15.0-2-sh7751r-di +Architecture: sh4 +Section: debian-installer +Priority: optional +Provides: sound-modules +Depends: kernel-image-4.15.0-2-sh7751r-di, i2c-modules-4.15.0-2-sh7751r-di, firewire-core-modules-4.15.0-2-sh7751r-di, crc-modules-4.15.0-2-sh7751r-di +Description: sound support + This package contains sound modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-sh7751r +Package-Type: udeb + +Package: zlib-modules-4.15.0-2-sh7751r-di +Architecture: sh4 +Section: debian-installer +Priority: optional +Provides: zlib-modules +Depends: kernel-image-4.15.0-2-sh7751r-di +Description: zlib modules + This package contains zlib modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-sh7751r +Package-Type: udeb + +Package: udf-modules-4.15.0-2-sh7751r-di +Architecture: sh4 +Section: debian-installer +Priority: optional +Provides: udf-modules +Depends: kernel-image-4.15.0-2-sh7751r-di, crc-modules-4.15.0-2-sh7751r-di +Description: UDF modules + This package contains the UDF filesystem module. +Build-Profiles: +Kernel-Version: 4.15.0-2-sh7751r +Package-Type: udeb + +Package: fuse-modules-4.15.0-2-sh7751r-di +Architecture: sh4 +Section: debian-installer +Priority: optional +Provides: fuse-modules +Depends: kernel-image-4.15.0-2-sh7751r-di +Description: FUSE modules + This package contains the Filesystem in Userspace (FUSE) module. +Build-Profiles: +Kernel-Version: 4.15.0-2-sh7751r +Package-Type: udeb + +Package: kernel-image-4.15.0-2-sh7785lcr-di +Architecture: sh4 +Section: debian-installer +Priority: standard +Provides: kernel-image, event-modules, fb-modules, input-modules, mouse-modules, nic-shared-modules, rtc-modules, uinput-modules, usb-modules +Description: Linux kernel image and core modules for the Debian installer + This package contains the kernel image and core modules for the Debian + installer boot images. It does _not_ provide a usable kernel for your + full Debian system. +Build-Profiles: +Kernel-Version: 4.15.0-2-sh7785lcr +Package-Type: udeb + +Package: nic-modules-4.15.0-2-sh7785lcr-di +Architecture: sh4 +Section: debian-installer +Priority: standard +Provides: nic-modules, nic-extra-modules +Depends: kernel-image-4.15.0-2-sh7785lcr-di, crc-modules-4.15.0-2-sh7785lcr-di +Description: NIC drivers + This package contains Ethernet and some paravirtualised network drivers + for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-sh7785lcr +Package-Type: udeb + +Package: usb-serial-modules-4.15.0-2-sh7785lcr-di +Architecture: sh4 +Section: debian-installer +Priority: optional +Provides: usb-serial-modules +Depends: kernel-image-4.15.0-2-sh7785lcr-di +Description: USB serial drivers + This package contains USB serial drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-sh7785lcr +Package-Type: udeb + +Package: ppp-modules-4.15.0-2-sh7785lcr-di +Architecture: sh4 +Section: debian-installer +Priority: optional +Provides: ppp-modules +Depends: kernel-image-4.15.0-2-sh7785lcr-di, zlib-modules-4.15.0-2-sh7785lcr-di, crc-modules-4.15.0-2-sh7785lcr-di +Description: PPP drivers + This package contains PPP drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-sh7785lcr +Package-Type: udeb + +Package: pata-modules-4.15.0-2-sh7785lcr-di +Architecture: sh4 +Section: debian-installer +Priority: standard +Provides: pata-modules +Depends: kernel-image-4.15.0-2-sh7785lcr-di +Description: PATA drivers + This package contains PATA drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-sh7785lcr +Package-Type: udeb + +Package: cdrom-core-modules-4.15.0-2-sh7785lcr-di +Architecture: sh4 +Section: debian-installer +Priority: standard +Provides: cdrom-core-modules +Depends: kernel-image-4.15.0-2-sh7785lcr-di, isofs-modules-4.15.0-2-sh7785lcr-di +Description: CDROM support + This package contains core CDROM support for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-sh7785lcr +Package-Type: udeb + +Package: firewire-core-modules-4.15.0-2-sh7785lcr-di +Architecture: sh4 +Section: debian-installer +Priority: standard +Provides: firewire-core-modules +Depends: kernel-image-4.15.0-2-sh7785lcr-di, crc-modules-4.15.0-2-sh7785lcr-di +Description: Core FireWire drivers + This package contains core FireWire drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-sh7785lcr +Package-Type: udeb + +Package: loop-modules-4.15.0-2-sh7785lcr-di +Architecture: sh4 +Section: debian-installer +Priority: standard +Provides: loop-modules +Depends: kernel-image-4.15.0-2-sh7785lcr-di +Description: Loopback filesystem support + This package contains loopback filesystem support for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-sh7785lcr +Package-Type: udeb + +Package: btrfs-modules-4.15.0-2-sh7785lcr-di +Architecture: sh4 +Section: debian-installer +Priority: optional +Provides: btrfs-modules +Depends: kernel-image-4.15.0-2-sh7785lcr-di, crc-modules-4.15.0-2-sh7785lcr-di, zlib-modules-4.15.0-2-sh7785lcr-di, md-modules-4.15.0-2-sh7785lcr-di +Description: BTRFS filesystem support + This package contains the BTRFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-sh7785lcr +Package-Type: udeb + +Package: ext4-modules-4.15.0-2-sh7785lcr-di +Architecture: sh4 +Section: debian-installer +Priority: standard +Provides: ext4-modules, ext2-modules, ext3-modules +Depends: kernel-image-4.15.0-2-sh7785lcr-di, crc-modules-4.15.0-2-sh7785lcr-di +Description: ext2/ext3/ext4 filesystem support + This package contains the ext4 filesystem module for the kernel, which + also supports ext2 and ext3. +Build-Profiles: +Kernel-Version: 4.15.0-2-sh7785lcr +Package-Type: udeb + +Package: isofs-modules-4.15.0-2-sh7785lcr-di +Architecture: sh4 +Section: debian-installer +Priority: standard +Provides: isofs-modules +Depends: kernel-image-4.15.0-2-sh7785lcr-di +Description: ISOFS filesystem support + This package contains the ISOFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-sh7785lcr +Package-Type: udeb + +Package: jfs-modules-4.15.0-2-sh7785lcr-di +Architecture: sh4 +Section: debian-installer +Priority: standard +Provides: jfs-modules +Depends: kernel-image-4.15.0-2-sh7785lcr-di +Description: JFS filesystem support + This package contains the JFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-sh7785lcr +Package-Type: udeb + +Package: xfs-modules-4.15.0-2-sh7785lcr-di +Architecture: sh4 +Section: debian-installer +Priority: standard +Provides: xfs-modules +Depends: kernel-image-4.15.0-2-sh7785lcr-di, crc-modules-4.15.0-2-sh7785lcr-di +Description: XFS filesystem support + This package contains the XFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-sh7785lcr +Package-Type: udeb + +Package: fat-modules-4.15.0-2-sh7785lcr-di +Architecture: sh4 +Section: debian-installer +Priority: optional +Provides: fat-modules +Depends: kernel-image-4.15.0-2-sh7785lcr-di +Description: FAT filesystem support + This package contains the FAT and VFAT filesystem modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-sh7785lcr +Package-Type: udeb + +Package: minix-modules-4.15.0-2-sh7785lcr-di +Architecture: sh4 +Section: debian-installer +Priority: optional +Provides: minix-modules +Depends: kernel-image-4.15.0-2-sh7785lcr-di +Description: Minix filesystem support + This package contains the Minix filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-sh7785lcr +Package-Type: udeb + +Package: md-modules-4.15.0-2-sh7785lcr-di +Architecture: sh4 +Section: debian-installer +Priority: optional +Provides: md-modules +Depends: kernel-image-4.15.0-2-sh7785lcr-di, crc-modules-4.15.0-2-sh7785lcr-di +Description: RAID and LVM support + This package contains RAID and LVM modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-sh7785lcr +Package-Type: udeb + +Package: multipath-modules-4.15.0-2-sh7785lcr-di +Architecture: sh4 +Section: debian-installer +Priority: optional +Provides: multipath-modules +Depends: kernel-image-4.15.0-2-sh7785lcr-di, md-modules-4.15.0-2-sh7785lcr-di +Description: Multipath support + This package contains DM-Multipath modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-sh7785lcr +Package-Type: udeb + +Package: nic-usb-modules-4.15.0-2-sh7785lcr-di +Architecture: sh4 +Section: debian-installer +Priority: standard +Provides: nic-usb-modules +Depends: kernel-image-4.15.0-2-sh7785lcr-di, crc-modules-4.15.0-2-sh7785lcr-di +Description: USB NIC drivers + This package contains USB network adapter drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-sh7785lcr +Package-Type: udeb + +Package: sata-modules-4.15.0-2-sh7785lcr-di +Architecture: sh4 +Section: debian-installer +Priority: standard +Provides: sata-modules +Depends: kernel-image-4.15.0-2-sh7785lcr-di +Description: SATA drivers + This package contains SATA drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-sh7785lcr +Package-Type: udeb + +Package: crc-modules-4.15.0-2-sh7785lcr-di +Architecture: sh4 +Section: debian-installer +Priority: optional +Provides: crc-modules +Depends: kernel-image-4.15.0-2-sh7785lcr-di +Description: CRC modules + This package contains CRC support modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-sh7785lcr +Package-Type: udeb + +Package: crypto-modules-4.15.0-2-sh7785lcr-di +Architecture: sh4 +Section: debian-installer +Priority: optional +Provides: crypto-modules +Depends: kernel-image-4.15.0-2-sh7785lcr-di +Description: crypto modules + This package contains crypto modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-sh7785lcr +Package-Type: udeb + +Package: crypto-dm-modules-4.15.0-2-sh7785lcr-di +Architecture: sh4 +Section: debian-installer +Priority: optional +Provides: crypto-dm-modules +Depends: kernel-image-4.15.0-2-sh7785lcr-di, md-modules-4.15.0-2-sh7785lcr-di +Description: devicemapper crypto module + This package contains the devicemapper crypto (dm-crypt) module. +Build-Profiles: +Kernel-Version: 4.15.0-2-sh7785lcr +Package-Type: udeb + +Package: nbd-modules-4.15.0-2-sh7785lcr-di +Architecture: sh4 +Section: debian-installer +Priority: optional +Provides: nbd-modules +Depends: kernel-image-4.15.0-2-sh7785lcr-di +Description: Network Block Device modules + This package contains the modules required for support of the Network + Block Device +Build-Profiles: +Kernel-Version: 4.15.0-2-sh7785lcr +Package-Type: udeb + +Package: squashfs-modules-4.15.0-2-sh7785lcr-di +Architecture: sh4 +Section: debian-installer +Priority: optional +Provides: squashfs-modules +Depends: kernel-image-4.15.0-2-sh7785lcr-di +Description: squashfs modules + This package contains squashfs modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-sh7785lcr +Package-Type: udeb + +Package: speakup-modules-4.15.0-2-sh7785lcr-di +Architecture: sh4 +Section: debian-installer +Priority: optional +Provides: speakup-modules +Depends: kernel-image-4.15.0-2-sh7785lcr-di +Description: speakup modules + This package contains speakup modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-sh7785lcr +Package-Type: udeb + +Package: sound-modules-4.15.0-2-sh7785lcr-di +Architecture: sh4 +Section: debian-installer +Priority: optional +Provides: sound-modules +Depends: kernel-image-4.15.0-2-sh7785lcr-di, firewire-core-modules-4.15.0-2-sh7785lcr-di, crc-modules-4.15.0-2-sh7785lcr-di +Description: sound support + This package contains sound modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-sh7785lcr +Package-Type: udeb + +Package: zlib-modules-4.15.0-2-sh7785lcr-di +Architecture: sh4 +Section: debian-installer +Priority: optional +Provides: zlib-modules +Depends: kernel-image-4.15.0-2-sh7785lcr-di +Description: zlib modules + This package contains zlib modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-sh7785lcr +Package-Type: udeb + +Package: udf-modules-4.15.0-2-sh7785lcr-di +Architecture: sh4 +Section: debian-installer +Priority: optional +Provides: udf-modules +Depends: kernel-image-4.15.0-2-sh7785lcr-di, crc-modules-4.15.0-2-sh7785lcr-di +Description: UDF modules + This package contains the UDF filesystem module. +Build-Profiles: +Kernel-Version: 4.15.0-2-sh7785lcr +Package-Type: udeb + +Package: fuse-modules-4.15.0-2-sh7785lcr-di +Architecture: sh4 +Section: debian-installer +Priority: optional +Provides: fuse-modules +Depends: kernel-image-4.15.0-2-sh7785lcr-di +Description: FUSE modules + This package contains the Filesystem in Userspace (FUSE) module. +Build-Profiles: +Kernel-Version: 4.15.0-2-sh7785lcr +Package-Type: udeb + +Package: linux-image-4.15.0-2-sh7751r +Architecture: sh4 +Depends: kmod, linux-base (>= 4.3~), ${misc:Depends}, initramfs-tools (>= 0.120+deb8u2) [sh4] | linux-initramfs-tool [sh4] +Recommends: firmware-linux-free, ${kernel:Recommends}, apparmor [sh4] +Suggests: linux-doc-4.15, debian-kernel-handbook +Breaks: initramfs-tools (<< 0.120+deb8u2) +Description: Linux 4.15 for sh7751r + The Linux kernel 4.15 and modules for use on Renesas SH7751R R2D plus + board. +Build-Profiles: + +Package: linux-headers-4.15.0-2-sh7751r +Architecture: sh4 +Depends: linux-headers-4.15.0-2-common (= ${source:Version}), linux-kbuild-4.15, ${misc:Depends}, gcc-7 +Description: Header files for Linux 4.15.0-2-sh7751r + This package provides the architecture-specific kernel header files for + Linux kernel 4.15.0-2-sh7751r, generally used for building out-of-tree + kernel modules. These files are going to be installed into + /usr/src/linux-headers-4.15.0-2-sh7751r, and can be used for building + modules that load into the kernel provided by the + linux-image-4.15.0-2-sh7751r package. +Build-Profiles: + +Package: linux-image-4.15.0-2-sh7751r-dbg +Architecture: sh4 +Section: debug +Priority: optional +Depends: ${misc:Depends} +Description: Debug symbols for linux-image-4.15.0-2-sh7751r + This package provides the detached debug symbols for the Linux kernel and + modules in linux-image-4.15.0-2-sh7751r. +Build-Profiles: + +Package: linux-image-4.15.0-2-sh7785lcr +Architecture: sh4 +Depends: kmod, linux-base (>= 4.3~), ${misc:Depends}, initramfs-tools (>= 0.120+deb8u2) [sh4] | linux-initramfs-tool [sh4] +Recommends: firmware-linux-free, ${kernel:Recommends}, u-boot-tools [sh4] +Suggests: linux-doc-4.15, debian-kernel-handbook +Breaks: initramfs-tools (<< 0.120+deb8u2) +Description: Linux 4.15 for sh7785lcr + The Linux kernel 4.15 and modules for use on Renesas SH7785 reference + board. +Build-Profiles: + +Package: linux-headers-4.15.0-2-sh7785lcr +Architecture: sh4 +Depends: linux-headers-4.15.0-2-common (= ${source:Version}), linux-kbuild-4.15, ${misc:Depends}, gcc-7 +Description: Header files for Linux 4.15.0-2-sh7785lcr + This package provides the architecture-specific kernel header files for + Linux kernel 4.15.0-2-sh7785lcr, generally used for building out-of-tree + kernel modules. These files are going to be installed into + /usr/src/linux-headers-4.15.0-2-sh7785lcr, and can be used for building + modules that load into the kernel provided by the + linux-image-4.15.0-2-sh7785lcr package. +Build-Profiles: + +Package: linux-image-4.15.0-2-sh7785lcr-dbg +Architecture: sh4 +Section: debug +Priority: optional +Depends: ${misc:Depends} +Description: Debug symbols for linux-image-4.15.0-2-sh7785lcr + This package provides the detached debug symbols for the Linux kernel and + modules in linux-image-4.15.0-2-sh7785lcr. +Build-Profiles: + +Package: linux-headers-4.15.0-2-all-sparc64 +Architecture: sparc64 +Depends: ${misc:Depends}, linux-headers-4.15.0-2-sparc64 (= ${binary:Version}), linux-headers-4.15.0-2-sparc64-smp (= ${binary:Version}) +Description: All header files for Linux 4.15 (meta-package) + This package depends against all architecture-specific kernel header files + for Linux kernel version 4.15, generally used for building out-of-tree + kernel modules. +Build-Profiles: + +Package: kernel-image-4.15.0-2-sparc64-di +Architecture: sparc64 +Section: debian-installer +Priority: standard +Provides: kernel-image +Description: Linux kernel image and core modules for the Debian installer + This package contains the kernel image and core modules for the Debian + installer boot images. It does _not_ provide a usable kernel for your + full Debian system. +Build-Profiles: +Kernel-Version: 4.15.0-2-sparc64 +Package-Type: udeb + +Package: nic-modules-4.15.0-2-sparc64-di +Architecture: sparc64 +Section: debian-installer +Priority: standard +Provides: nic-modules, nic-extra-modules +Depends: kernel-image-4.15.0-2-sparc64-di, crc-modules-4.15.0-2-sparc64-di +Description: Network card modules for Sparc kernels + This package contains the drivers for the Happy Meal/Big Mac 10/100BaseT, + Sun QuadEthernet and MyriCOM Gigabit Ethernet SBus devices for SPARC + systems, as well as various PCI NIC drivers (only on sparc64.) + . + Do not install this package on a real Debian system! You probably want a + kernel-image package instead. +Build-Profiles: +Kernel-Version: 4.15.0-2-sparc64 +Package-Type: udeb + +Package: ppp-modules-4.15.0-2-sparc64-di +Architecture: sparc64 +Section: debian-installer +Priority: optional +Provides: ppp-modules +Depends: kernel-image-4.15.0-2-sparc64-di, zlib-modules-4.15.0-2-sparc64-di, crc-modules-4.15.0-2-sparc64-di +Description: PPP drivers + This package contains PPP drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-sparc64 +Package-Type: udeb + +Package: pata-modules-4.15.0-2-sparc64-di +Architecture: sparc64 +Section: debian-installer +Priority: standard +Provides: pata-modules +Depends: kernel-image-4.15.0-2-sparc64-di, ata-modules-4.15.0-2-sparc64-di +Description: PATA drivers + This package contains PATA drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-sparc64 +Package-Type: udeb + +Package: cdrom-core-modules-4.15.0-2-sparc64-di +Architecture: sparc64 +Section: debian-installer +Priority: standard +Provides: cdrom-core-modules +Depends: kernel-image-4.15.0-2-sparc64-di, scsi-core-modules-4.15.0-2-sparc64-di, isofs-modules-4.15.0-2-sparc64-di +Description: CDROM support + This package contains core CDROM support for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-sparc64 +Package-Type: udeb + +Package: scsi-core-modules-4.15.0-2-sparc64-di +Architecture: sparc64 +Section: debian-installer +Priority: standard +Provides: scsi-core-modules +Depends: kernel-image-4.15.0-2-sparc64-di +Description: Core SCSI subsystem + This package contains the core SCSI subsystem for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-sparc64 +Package-Type: udeb + +Package: scsi-modules-4.15.0-2-sparc64-di +Architecture: sparc64 +Section: debian-installer +Priority: standard +Provides: scsi-modules +Depends: kernel-image-4.15.0-2-sparc64-di, scsi-core-modules-4.15.0-2-sparc64-di, cdrom-core-modules-4.15.0-2-sparc64-di, ata-modules-4.15.0-2-sparc64-di +Description: SCSI drivers + This package contains SCSI drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-sparc64 +Package-Type: udeb + +Package: btrfs-modules-4.15.0-2-sparc64-di +Architecture: sparc64 +Section: debian-installer +Priority: optional +Provides: btrfs-modules +Depends: kernel-image-4.15.0-2-sparc64-di, crc-modules-4.15.0-2-sparc64-di, zlib-modules-4.15.0-2-sparc64-di, md-modules-4.15.0-2-sparc64-di +Description: BTRFS filesystem support + This package contains the BTRFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-sparc64 +Package-Type: udeb + +Package: ext4-modules-4.15.0-2-sparc64-di +Architecture: sparc64 +Section: debian-installer +Priority: standard +Provides: ext4-modules, ext2-modules, ext3-modules +Depends: kernel-image-4.15.0-2-sparc64-di, crc-modules-4.15.0-2-sparc64-di +Description: ext2/ext3/ext4 filesystem support + This package contains the ext4 filesystem module for the kernel, which + also supports ext2 and ext3. +Build-Profiles: +Kernel-Version: 4.15.0-2-sparc64 +Package-Type: udeb + +Package: isofs-modules-4.15.0-2-sparc64-di +Architecture: sparc64 +Section: debian-installer +Priority: standard +Provides: isofs-modules +Depends: kernel-image-4.15.0-2-sparc64-di +Description: ISOFS filesystem support + This package contains the ISOFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-sparc64 +Package-Type: udeb + +Package: jfs-modules-4.15.0-2-sparc64-di +Architecture: sparc64 +Section: debian-installer +Priority: standard +Provides: jfs-modules +Depends: kernel-image-4.15.0-2-sparc64-di +Description: JFS filesystem support + This package contains the JFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-sparc64 +Package-Type: udeb + +Package: ufs-modules-4.15.0-2-sparc64-di +Architecture: sparc64 +Section: debian-installer +Priority: optional +Provides: ufs-modules +Depends: kernel-image-4.15.0-2-sparc64-di +Description: UFS filesystem support + This package contains the UFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-sparc64 +Package-Type: udeb + +Package: xfs-modules-4.15.0-2-sparc64-di +Architecture: sparc64 +Section: debian-installer +Priority: standard +Provides: xfs-modules +Depends: kernel-image-4.15.0-2-sparc64-di, crc-modules-4.15.0-2-sparc64-di +Description: XFS filesystem support + This package contains the XFS filesystem module for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-sparc64 +Package-Type: udeb + +Package: fat-modules-4.15.0-2-sparc64-di +Architecture: sparc64 +Section: debian-installer +Priority: optional +Provides: fat-modules +Depends: kernel-image-4.15.0-2-sparc64-di +Description: FAT filesystem support + This package contains the FAT and VFAT filesystem modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-sparc64 +Package-Type: udeb + +Package: md-modules-4.15.0-2-sparc64-di +Architecture: sparc64 +Section: debian-installer +Priority: optional +Provides: md-modules +Depends: kernel-image-4.15.0-2-sparc64-di, crc-modules-4.15.0-2-sparc64-di +Description: RAID and LVM support + This package contains RAID and LVM modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-sparc64 +Package-Type: udeb + +Package: multipath-modules-4.15.0-2-sparc64-di +Architecture: sparc64 +Section: debian-installer +Priority: optional +Provides: multipath-modules +Depends: kernel-image-4.15.0-2-sparc64-di, md-modules-4.15.0-2-sparc64-di, scsi-core-modules-4.15.0-2-sparc64-di +Description: Multipath support + This package contains DM-Multipath modules for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-sparc64 +Package-Type: udeb + +Package: usb-modules-4.15.0-2-sparc64-di +Architecture: sparc64 +Section: debian-installer +Priority: optional +Provides: usb-modules +Depends: kernel-image-4.15.0-2-sparc64-di +Description: USB support + This package contains core USB drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-sparc64 +Package-Type: udeb + +Package: usb-storage-modules-4.15.0-2-sparc64-di +Architecture: sparc64 +Section: debian-installer +Priority: standard +Provides: usb-storage-modules +Depends: kernel-image-4.15.0-2-sparc64-di, scsi-core-modules-4.15.0-2-sparc64-di, usb-modules-4.15.0-2-sparc64-di +Description: USB storage support + This package contains the USB storage driver for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-sparc64 +Package-Type: udeb + +Package: input-modules-4.15.0-2-sparc64-di +Architecture: sparc64 +Section: debian-installer +Priority: optional +Provides: input-modules +Depends: kernel-image-4.15.0-2-sparc64-di, usb-modules-4.15.0-2-sparc64-di +Description: Input devices support + This package contains input device drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-sparc64 +Package-Type: udeb + +Package: sata-modules-4.15.0-2-sparc64-di +Architecture: sparc64 +Section: debian-installer +Priority: standard +Provides: sata-modules +Depends: kernel-image-4.15.0-2-sparc64-di, scsi-core-modules-4.15.0-2-sparc64-di, ata-modules-4.15.0-2-sparc64-di +Description: SATA drivers + This package contains SATA drivers for the kernel. +Build-Profiles: +Kernel-Version: 4.15.0-2-sparc64 +Package-Type: udeb + +Package: crc-modules-4.15.0-2-sparc64-di +Architecture: sparc64 +Section: debian-installer +Priority: optional +Provides: crc-modules +Depends: kernel-image-4.15.0-2-sparc64-di +Description: CRC modules + This package contains CRC support modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-sparc64 +Package-Type: udeb + +Package: crypto-modules-4.15.0-2-sparc64-di +Architecture: sparc64 +Section: debian-installer +Priority: optional +Provides: crypto-modules +Depends: kernel-image-4.15.0-2-sparc64-di +Description: crypto modules + This package contains crypto modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-sparc64 +Package-Type: udeb + +Package: crypto-dm-modules-4.15.0-2-sparc64-di +Architecture: sparc64 +Section: debian-installer +Priority: optional +Provides: crypto-dm-modules +Depends: kernel-image-4.15.0-2-sparc64-di, md-modules-4.15.0-2-sparc64-di +Description: devicemapper crypto module + This package contains the devicemapper crypto (dm-crypt) module. +Build-Profiles: +Kernel-Version: 4.15.0-2-sparc64 +Package-Type: udeb + +Package: ata-modules-4.15.0-2-sparc64-di +Architecture: sparc64 +Section: debian-installer +Priority: optional +Provides: ata-modules +Depends: kernel-image-4.15.0-2-sparc64-di, scsi-core-modules-4.15.0-2-sparc64-di +Description: ATA disk modules + This package contains core ATA disk modules used by both PATA and SATA + disk drivers. +Build-Profiles: +Kernel-Version: 4.15.0-2-sparc64 +Package-Type: udeb + +Package: nbd-modules-4.15.0-2-sparc64-di +Architecture: sparc64 +Section: debian-installer +Priority: optional +Provides: nbd-modules +Depends: kernel-image-4.15.0-2-sparc64-di +Description: Network Block Device modules + This package contains the modules required for support of the Network + Block Device +Build-Profiles: +Kernel-Version: 4.15.0-2-sparc64 +Package-Type: udeb + +Package: squashfs-modules-4.15.0-2-sparc64-di +Architecture: sparc64 +Section: debian-installer +Priority: optional +Provides: squashfs-modules +Depends: kernel-image-4.15.0-2-sparc64-di +Description: squashfs modules + This package contains squashfs modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-sparc64 +Package-Type: udeb + +Package: virtio-modules-4.15.0-2-sparc64-di +Architecture: sparc64 +Section: debian-installer +Priority: optional +Provides: virtio-modules +Depends: kernel-image-4.15.0-2-sparc64-di, scsi-core-modules-4.15.0-2-sparc64-di +Description: virtio modules + This package contains virtio modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-sparc64 +Package-Type: udeb + +Package: zlib-modules-4.15.0-2-sparc64-di +Architecture: sparc64 +Section: debian-installer +Priority: optional +Provides: zlib-modules +Depends: kernel-image-4.15.0-2-sparc64-di +Description: zlib modules + This package contains zlib modules. +Build-Profiles: +Kernel-Version: 4.15.0-2-sparc64 +Package-Type: udeb + +Package: udf-modules-4.15.0-2-sparc64-di +Architecture: sparc64 +Section: debian-installer +Priority: optional +Provides: udf-modules +Depends: kernel-image-4.15.0-2-sparc64-di, crc-modules-4.15.0-2-sparc64-di +Description: UDF modules + This package contains the UDF filesystem module. +Build-Profiles: +Kernel-Version: 4.15.0-2-sparc64 +Package-Type: udeb + +Package: fuse-modules-4.15.0-2-sparc64-di +Architecture: sparc64 +Section: debian-installer +Priority: optional +Provides: fuse-modules +Depends: kernel-image-4.15.0-2-sparc64-di +Description: FUSE modules + This package contains the Filesystem in Userspace (FUSE) module. +Build-Profiles: +Kernel-Version: 4.15.0-2-sparc64 +Package-Type: udeb + +Package: linux-image-4.15.0-2-sparc64 +Architecture: sparc64 +Depends: kmod, linux-base (>= 4.3~), ${misc:Depends}, initramfs-tools (>= 0.120+deb8u2) [sparc64] | linux-initramfs-tool [sparc64] +Recommends: firmware-linux-free, ${kernel:Recommends}, apparmor [sparc64] +Suggests: linux-doc-4.15, debian-kernel-handbook, silo [sparc64], fdutils [sparc64] +Breaks: initramfs-tools (<< 0.120+deb8u2) +Description: Linux 4.15 for uniprocessor 64-bit UltraSPARC + The Linux kernel 4.15 and modules for use on uniprocessor 64-bit + UltraSPARC. +Build-Profiles: + +Package: linux-headers-4.15.0-2-sparc64 +Architecture: sparc64 +Depends: linux-headers-4.15.0-2-common (= ${source:Version}), linux-kbuild-4.15, ${misc:Depends}, gcc-7 +Description: Header files for Linux 4.15.0-2-sparc64 + This package provides the architecture-specific kernel header files for + Linux kernel 4.15.0-2-sparc64, generally used for building out-of-tree + kernel modules. These files are going to be installed into + /usr/src/linux-headers-4.15.0-2-sparc64, and can be used for building + modules that load into the kernel provided by the + linux-image-4.15.0-2-sparc64 package. +Build-Profiles: + +Package: linux-image-4.15.0-2-sparc64-dbg +Architecture: sparc64 +Section: debug +Priority: optional +Depends: ${misc:Depends} +Description: Debug symbols for linux-image-4.15.0-2-sparc64 + This package provides the detached debug symbols for the Linux kernel and + modules in linux-image-4.15.0-2-sparc64. +Build-Profiles: + +Package: linux-image-4.15.0-2-sparc64-smp +Architecture: sparc64 +Depends: kmod, linux-base (>= 4.3~), ${misc:Depends}, initramfs-tools (>= 0.120+deb8u2) [sparc64] | linux-initramfs-tool [sparc64] +Recommends: firmware-linux-free, ${kernel:Recommends}, apparmor [sparc64] +Suggests: linux-doc-4.15, debian-kernel-handbook, silo [sparc64], fdutils [sparc64] +Breaks: initramfs-tools (<< 0.120+deb8u2) +Description: Linux 4.15 for multiprocessor 64-bit UltraSPARC + The Linux kernel 4.15 and modules for use on multiprocessor 64-bit + UltraSPARC. +Build-Profiles: + +Package: linux-headers-4.15.0-2-sparc64-smp +Architecture: sparc64 +Depends: linux-headers-4.15.0-2-common (= ${source:Version}), linux-kbuild-4.15, ${misc:Depends}, gcc-7 +Description: Header files for Linux 4.15.0-2-sparc64-smp + This package provides the architecture-specific kernel header files for + Linux kernel 4.15.0-2-sparc64-smp, generally used for building out-of-tree + kernel modules. These files are going to be installed into + /usr/src/linux-headers-4.15.0-2-sparc64-smp, and can be used for building + modules that load into the kernel provided by the + linux-image-4.15.0-2-sparc64-smp package. +Build-Profiles: + +Package: linux-image-4.15.0-2-sparc64-smp-dbg +Architecture: sparc64 +Section: debug +Priority: optional +Depends: ${misc:Depends} +Description: Debug symbols for linux-image-4.15.0-2-sparc64-smp + This package provides the detached debug symbols for the Linux kernel and + modules in linux-image-4.15.0-2-sparc64-smp. +Build-Profiles: + +Package: linux-compiler-gcc-7-arm +Architecture: armel armhf +Depends: gcc-7, ${misc:Depends} +Description: Compiler for Linux on ARM (meta-package) + This package depends on GCC of the appropriate version and architecture + for Linux on armel and armhf. +Build-Profiles: +Multi-Arch: foreign + +Package: linux-compiler-gcc-7-s390 +Architecture: s390 s390x +Depends: gcc-7, ${misc:Depends} +Description: Compiler for Linux on IBM zSeries (meta-package) + This package depends on GCC of the appropriate version and architecture + for Linux on s390 and s390x. +Build-Profiles: +Multi-Arch: foreign + +Package: linux-compiler-gcc-7-x86 +Architecture: amd64 i386 x32 +Depends: gcc-7 (>= 7.2.0-20~), ${misc:Depends} +Description: Compiler for Linux on x86 (meta-package) + This package depends on GCC of the appropriate version and architecture + for Linux on amd64, i386 and x32. +Build-Profiles: +Multi-Arch: foreign + diff --git a/control.md5sum b/control.md5sum new file mode 100644 index 00000000000..c0237fcb123 --- /dev/null +++ b/control.md5sum @@ -0,0 +1,107 @@ +48e48b23af97cce8069f0eaed1bfa016 debian/bin/gencontrol.py +d71f991d8f35a46283adccf97fa21fc9 debian/changelog +e492c730e8bc71cc52aa5315391e587e debian/templates/control.main.in +38004750aa03cea41d5d3aeafff16fcc debian/templates/image.preinst.in +afb508873a44a1f196c2a525fec4b415 debian/templates/image.prerm.in +a4a60fc48b3240e46bbac6a1ddcaad30 debian/templates/image.postrm.in +63c0d01ea032d0acfa5e069d31daa938 debian/templates/control.libc-dev.in +761ffc83b2e52f84742840d9f69907d9 debian/templates/control.tools.in +814dda166c7e3ef02e6e259e805ac66a debian/templates/tests-control.main.in +54426b6625c1bbf41ff6e05eebc06f89 debian/templates/image-dbg.lintian-overrides.in +0d7f6ea42f52d0a6013535a80111ee3e debian/templates/headers.postinst.in +51797b6c275eb14e99009e78553904cc debian/templates/perf.lintian-overrides.in +8ff553ff7232b003c35bdd074913bc8a debian/templates/control.image-unsigned.in +ae49ef5fe8221e8aa846a8dd8faaed0e debian/templates/control.image.in +2e5bb43f2fceef492df4dc5ce5d3dddc debian/templates/control.image-dbg.in +90de2613b09ea9a6893779a35a4deb05 debian/templates/control.source.in +46cc93799a6214c79efea8084bc9a329 debian/templates/control.headers.featureset.in +0327750d6696dee915a532aec73a0fd6 debian/templates/image.postinst.in +ace097cb8de5c9e3bdd84e6d5d503298 debian/templates/control.headers.in +5624089e4c363b524dccb00d28e57336 debian/templates/control.extra.in +3ad9d915221b575d758fc3acfd3f89c2 debian/templates/control.docs.in +5f1df5cd150d7663b81f5c54a604a766 debian/templates/control.headers.arch.in +d3a994975693ab676d0eba56f779465a debian/config/defines +ef94db796045bf7d721d349b75789a27 debian/config/i386/defines +4987bf8df1bf042f19fdec4da87aa1d4 debian/config/ppc64el/defines +6f7d102847d8168a3c71c044ea7127ac debian/config/tilegx/defines +6efeb6f3f8ad4ecef3fff0d012fabad0 debian/config/mips64el/defines +8f2e4969633ff660d026f2b7e02e6336 debian/config/sh3/defines +ff1f9b857ee6f0c977d2f8541211a9f5 debian/config/mipsr6/defines +b66470c0288ee57b7a1e016a1da98da0 debian/config/armhf/defines +737544745c33ad637f9cdcbedc37ab7c debian/config/amd64/defines +f74b224857e0111bf2e14b124b3e2be2 debian/config/mipsr6el/defines +12c5f99fafdfd2d3696623ba86b2cc46 debian/config/mips/defines +3d514fbbc086aae2b520554dd995a705 debian/config/arm64/defines +e411d2dfe0018a7c40b6bf7efd45cd29 debian/config/mipsn32/defines +174058e52aced932bf02606d6cb5649c debian/config/mipsn32el/defines +366b94d652a66b437eabcd165bcc9610 debian/config/featureset-rt/defines +8d317c1872f3bd8da4feae25a7c61df3 debian/config/sparc/defines +e9ffe255afcab8138ebf4106c3707e44 debian/config/powerpc/defines +91a544ce36cc1717eee3e07211633e2c debian/config/ppc64/defines +f4b2921156e7b1a038862f848fdfe48f debian/config/x32/defines +c8677acd57ee1da9d592d7e1ce7ac3d7 debian/config/mips64/defines +788bca75e2379d4c6a5f937db95cf8dc debian/config/sparc64/defines +e893f7044a89425752b95b8c997938e9 debian/config/mipsel/defines +2d093d5d5d6dd1e2b27d717678cb9ece debian/config/sh4/defines +07a18ea6a8a40898c680905e01c56623 debian/config/hppa/defines +92c952083bf0523c5cdffe9f2e7dd300 debian/config/powerpcspe/defines +c638a9aa39b4381c3d1e4e10edcc97d4 debian/config/m68k/defines +47cac5237bbbf40994bdbd502708e287 debian/config/s390x/defines +882fb0fec3cbd0239817994223fa71e5 debian/config/mipsn32r6/defines +4069594eeb2a1856c6806812055249b2 debian/config/alpha/defines +73e2f095b2485f95bc164bf685684a47 debian/config/mipsn32r6el/defines +0670284b2d7ac08444107763fa38312e debian/config/armel/defines +98673c303524a87722b25c9e6b8cdd81 debian/config/mips64r6/defines +3e673c1434c6132c73c0cfb4bfe38763 debian/config/arm64ilp32/defines +8f8f7ed35c8dafdc5c6d4ded40bf5920 debian/config/mips64r6el/defines +9462622a41b618007bf9e8343f2fb3ce debian/config/s390/defines +10ca069c87c1150c5d2d010a72a90e36 debian/config/i386/none/defines +7146ff53fc4f9fbb49948225d8589b69 debian/config/i386/rt/defines +d5cd6e820002011c1183909686eca2a2 debian/config/amd64/none/defines +7dc981827930ed6844a731ed954b9b9d debian/config/amd64/rt/defines +d3c04182d8746e4871de922a63f03f97 debian/config/arm64/none/defines +a1f1e1c8213e10fb3a416d58fb61bc3c debian/installer/i386/kernel-versions +a38b614c64d74861e6c844adfd7fc935 debian/installer/ppc64el/kernel-versions +8b2032899d26c7029402cc5f3a68280d debian/installer/mips64el/kernel-versions +2c18144b7fbfd950ec1a305728e1e003 debian/installer/mipsr6/kernel-versions +3217c84b23f44f3fecb41d132f310ade debian/installer/armhf/kernel-versions +7ecaa8334419297fe6715afadae794c6 debian/installer/amd64/kernel-versions +b2f2f5b2d18a383b6b5e1961fbf8aeb1 debian/installer/mipsr6el/kernel-versions +00a8913a1998e0a7083495be7a9622f7 debian/installer/mips/kernel-versions +cc12b5c69d0930a4400e9ec072d9f915 debian/installer/arm64/kernel-versions +42aaaa53f3ecb95030e1a33654db6f8e debian/installer/powerpc/kernel-versions +0cb3424304d9602f321919da020eef8c debian/installer/ppc64/kernel-versions +18d013f76c11803b03d2ea610cc201c9 debian/installer/mips64/kernel-versions +61a070b81f93d4c9e955dc90587702f3 debian/installer/sparc64/kernel-versions +0e06b9acdcb4cd8dc06985dd49bdde05 debian/installer/mipsel/kernel-versions +49f36561dee0396410815d4e92beb01e debian/installer/sh4/kernel-versions +37c326d05ccb673603146e59a23cdda9 debian/installer/m68k/kernel-versions +f8348b90fe2b9e1e75bddda4dbb832c4 debian/installer/s390x/kernel-versions +1306c7e5b695c185d3193774b566e9e8 debian/installer/alpha/kernel-versions +8512485f3a856fe5225fa9c74ea32d5a debian/installer/hppa/kernel-versions +1c3a63f0f785539444a4e348d5588719 debian/installer/armel/kernel-versions +bb7aa9ad2c62b074f1c2258a02c5d76c debian/installer/mips64r6/kernel-versions +35e1ed0ef705c3d60069ac8f13af000d debian/installer/mips64r6el/kernel-versions +a7421d0f16ac8a0fb443591062293101 debian/installer/i386/package-list +8b7d23c8cd92a63434be9319b47d23e9 debian/installer/ppc64el/package-list +2bfc44ae55c0c1d5676946c71d1f07f4 debian/installer/mips64el/package-list +0fc827f651bf58416e4e2231b01f6908 debian/installer/mipsr6/package-list +bf0bd83d62ac9b6f58c2d9029eaca591 debian/installer/armhf/package-list +85882269667af235595b7b4b744e9ecb debian/installer/amd64/package-list +0fc827f651bf58416e4e2231b01f6908 debian/installer/mipsr6el/package-list +0fc827f651bf58416e4e2231b01f6908 debian/installer/mips/package-list +9e2b11d9b288c0400e77b23245fd0ef0 debian/installer/arm64/package-list +8b7d23c8cd92a63434be9319b47d23e9 debian/installer/powerpc/package-list +8b7d23c8cd92a63434be9319b47d23e9 debian/installer/ppc64/package-list +0fc827f651bf58416e4e2231b01f6908 debian/installer/mips64/package-list +b9df39e550a637012ccd5b1ddaa4b74a debian/installer/sparc64/package-list +2bfc44ae55c0c1d5676946c71d1f07f4 debian/installer/mipsel/package-list +829a090aa9cb3a272daf6b77006c6519 debian/installer/sh4/package-list +4621ff69c0676fb7cd4bed365c80723d debian/installer/m68k/package-list +4b8bb8b0eef18506eef56754ceeeeceb debian/installer/s390x/package-list +7f3b9396be74d9a40cfb6db48847a5dc debian/installer/alpha/package-list +42f64d483c9033b8af2bf2761a4a62fc debian/installer/hppa/package-list +2cbb54dee5b4512d847c67b20bb35caa debian/installer/armel/package-list +0fc827f651bf58416e4e2231b01f6908 debian/installer/mips64r6/package-list +0fc827f651bf58416e4e2231b01f6908 debian/installer/mips64r6el/package-list +bdb0c90ec38cca092e2e303d8b30f4e0 debian/installer/package-list diff --git a/copyright b/copyright new file mode 100644 index 00000000000..9df3aaa78be --- /dev/null +++ b/copyright @@ -0,0 +1,257 @@ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: Linux kernel +Source: https://www.kernel.org/pub/linux/kernel/ +Comment: + The 'perf' tool is dynamically linked with the Python interpreter, + which is itself dynamically linked with OpenSSL, which is not + GPL-compatible. However, since perf itself does not link with or use + OpenSSL, we believe that this indirect linking does not require + additional permissions beyond the GPL. + +Files: * +Copyright: 1991-2012 Linus Torvalds and many others +License: GPL-2 + +Files: debian/* +Copyright: 1996-2006 Manoj Srivastava + 2005-2012 Debian kernel team +License: GPL-2 + +Files: debian/rules.d/tools/hv/check-hyperv.c +Copyright: 2011 Lennart Poettering +License: LGPL-2.1 + +Files: + arch/arm/boot/dts/armada-370.dtsi + arch/arm/boot/dts/armada-370-d*.dts* + arch/arm/boot/dts/armada-370-mirabox.dts + arch/arm/boot/dts/armada-370-netgear*.dts* + arch/arm/boot/dts/armada-370-rd.dts + arch/arm/boot/dts/armada-370-synology-ds213j.dts + arch/arm/boot/dts/armada-375*.dts* + arch/arm/boot/dts/armada-38*.dts* + arch/arm/boot/dts/armada-39*.dts* + arch/arm/boot/dts/armada-xp*.dts* + arch/arm/boot/dts/artpec6.dtsi + arch/arm/boot/dts/at91sam9260ek.dts + arch/arm/boot/dts/at91sam9xe.dtsi + arch/arm/boot/dts/axp*.dts* + arch/arm/boot/dts/berlin2*.dts* + arch/arm/boot/dts/cros-ec-sbs.dtsi + arch/arm/boot/dts/cx92755*.dts* + arch/arm/boot/dts/imx7*.dts* + arch/arm/boot/dts/kirkwood-linkstation*.dts* + arch/arm/boot/dts/ls*.dts* + arch/arm/boot/dts/meson*.dts* + arch/arm/boot/dts/mps2*.dts* + arch/arm/boot/dts/mvebu-linkstation-*.dts* + arch/arm/boot/dts/orion5x-kuroboxpro.dts + arch/arm/boot/dts/orion5x-linkstation*.dts* + arch/arm/boot/dts/orion5x-ls*.dts* + arch/arm/boot/dts/qcom-mdm9615*.dts* + arch/arm/boot/dts/rk*.dts + arch/arm/boot/dts/sama5d2.dtsi + arch/arm/boot/dts/sama5d4.dtsi + arch/arm/boot/dts/socfpga_cyclone5_vining_fpga.dts + arch/arm/boot/dts/stm*.dts* + arch/arm/boot/dts/sun*.dts* + arch/arm/boot/dts/tegra124-apalis*.dts* + arch/arm/boot/dts/uniphier-*.dts* + arch/arm/boot/dts/vf610-colibri*.dts* + arch/arm/boot/dts/vf610m*.dts* + arch/arm64/boot/dts/allwinner/*.dts* + arch/arm64/boot/dts/amlogic/*.dts* + arch/arm64/boot/dts/cavium/thunder-*.dts* + arch/arm64/boot/dts/freescale/fsl-*.dts* + arch/arm64/boot/dts/marvell/armada-*.dts* + arch/arm64/boot/dts/marvell/berlin4ct-*.dts* + arch/arm64/boot/dts/rockchip/rk33*.dts* + arch/arm64/boot/dts/socionext/uniphier-ld*.dts* + arch/arm64/boot/dts/zte/zx296718*.dts* + include/dt-bindings/clock/sun*.h + include/dt-bindings/dma/axi-dmac.h + include/dt-bindings/dma/sun4i-a10.h + include/dt-bindings/pinctrl/sun4i-a10.h + include/dt-bindings/reset/sun*.h +License: GPL-2+ or X11 Dual License + +Files: drivers/crypto/vmx/*.pl +Copyright: 2006,2014 Andy Polyakov +License: CRYPTOGAMS + All rights reserved. + . + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + . + * Redistributions of source code must retain copyright notices, this + list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the + distribution. + * Neither the name of the CRYPTOGAMS nor the names of its copyright + holder and contributors may be used to endorse or promote products + derived from this software without specific prior written + permission. + . + ALTERNATIVELY, provided that this notice is retained in full, this + product may be distributed under the terms of the GNU General Public + License (GPL), in which case the provisions of the GPL apply INSTEAD + OF those given above. + . + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Files: fs/nls/mac-* +Copyright: 1991-2012 Unicode, Inc. +License: Unicode-data + All rights reserved. Distributed under the Terms of Use in + http://www.unicode.org/copyright.html. + . + Permission is hereby granted, free of charge, to any person obtaining a + copy of the Unicode data files and any associated documentation (the "Data + Files") or Unicode software and any associated documentation (the + "Software") to deal in the Data Files or Software without restriction, + including without limitation the rights to use, copy, modify, merge, + publish, distribute, and/or sell copies of the Data Files or Software, and + to permit persons to whom the Data Files or Software are furnished to do + so, provided that (a) the above copyright notice(s) and this permission + notice appear with all copies of the Data Files or Software, (b) both the + above copyright notice(s) and this permission notice appear in associated + documentation, and (c) there is clear notice in each modified Data File or + in the Software as well as in the documentation associated with the Data + File(s) or Software that the data or software has been modified. + . + THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY + KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF + THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS + INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT + OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF + USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR + OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + PERFORMANCE OF THE DATA FILES OR SOFTWARE. + . + Except as contained in this notice, the name of a copyright holder shall + not be used in advertising or otherwise to promote the sale, use or other + dealings in these Data Files or Software without prior written + authorization of the copyright holder. + +Files: include/xen/interface/* +Copyright: 2002-2006 Keir Fraser + 2004 Tim Deegan + 2004 Andrew Warfield + 2005 Nguyen Anh Quynh + 2005-2006 IBM Corporation + 2005 Anthony Liguori + 2005 Rusty Russell + 2005-2006 XenSource Ltd. + 2006 Ian Campbell + 2006 Red Hat, Inc. + 2010 Ryan Wilson +License: Xen-interface + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to + deal in the Software without restriction, including without limitation the + rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + . + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + . + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + +Files: scripts/extract-cert.c scripts/sign-file.c +Copyright: 2014-2015 Red Hat, Inc. + 2015 Intel Corporation +License: LGPL-2.1 + +License: GPL-2 + This package is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License version 2 as + published by the Free Software Foundation. + . + This package 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 package; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + . + On Debian systems, the complete text of the GNU General Public License version + 2 can be found in `/usr/share/common-licenses/GPL-2'. + +License: LGPL-2.1 + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 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 + Lesser General Public License for more details. + . + You should have received a copy of the GNU Lesser General Public License + along with this program; If not, see . + . + On Debian systems, the complete text of the GNU Lesser General Public + License version 2.1 can be found in `/usr/share/common-licenses/LGPL-2.1'. + +License: GPL-2+ or X11 Dual License + This file is dual-licensed: you can use it either under the terms + of the GPL or the X11 license, at your option. Note that this dual + licensing only applies to this file, and not this project as a + whole. + . + a) This file 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 file 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. + . + Or, alternatively, + . + b) Permission is hereby granted, free of charge, to any person + obtaining a copy of this software and associated documentation + files (the "Software"), to deal in the Software without + restriction, including without limitation the rights to use, + copy, modify, merge, publish, distribute, sublicense, and/or + sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following + conditions: + . + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + . + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + OTHER DEALINGS IN THE SOFTWARE. diff --git a/hyperv-daemons.README.Debian b/hyperv-daemons.README.Debian new file mode 100644 index 00000000000..8fff2afd342 --- /dev/null +++ b/hyperv-daemons.README.Debian @@ -0,0 +1,14 @@ +hyperv-daemon for Debian +------------------------ + + If you want to change screen resolution on Linux guest, + plese update kernel parameter. + + 1. edit /etc/default/grub file + - add 'video=hyperv_fb:"horizontal"x"vertical"' to + 'GRUB_CMDLINE_LINUX_DEFAULT=' or 'GRUB_CMDLINE_LINUX=' line + (e.g. GRUB_CMDLINE_LINUX=video=hyperv_fb:1280x1024) + 2. then, exec update-grub + 3. reboot Linux guest + + -- Hideki Yamane Thu, 28 May 2015 10:23:52 +0900 diff --git a/hyperv-daemons.hv-fcopy-daemon.init b/hyperv-daemons.hv-fcopy-daemon.init new file mode 100755 index 00000000000..7ecfc2a2560 --- /dev/null +++ b/hyperv-daemons.hv-fcopy-daemon.init @@ -0,0 +1,110 @@ +#! /bin/sh +### BEGIN INIT INFO +# Provides: hyperv-daemons.hv-fcopy-daemon +# Required-Start: $remote_fs $syslog +# Required-Stop: $remote_fs $syslog +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: Hyper-V file copy service (FCOPY) daemon +### END INIT INFO + +PATH=/sbin:/usr/sbin:/bin:/usr/bin +DESC="Hyper-V file copy service (FCOPY) daemon" +NAME=hv_fcopy_daemon +DAEMON=/usr/sbin/$NAME +PIDFILE=/run/$NAME.pid +SCRIPTNAME=/etc/init.d/hyperv-daemons.hv-fcopy-daemon + +# Exit if the package is not installed +[ -x "$DAEMON" ] || exit 0 + +# Exit if we are not running under Hyper-V or the kernel device does not exist +/lib/hyperv-daemons/check-hyperv || exit 0 +[ -e "/dev/vmbus/hv_fcopy" ] || exit 0 + +# Load the VERBOSE setting and other rcS variables +. /lib/init/vars.sh + +# Define LSB log_* functions. +. /lib/lsb/init-functions + +# +# Function that starts the daemon/service +# +do_start() +{ + # Return + # 0 if daemon has been started + # 1 if daemon was already running + # 2 if daemon could not be started + start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \ + || return 1 + start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --background --make-pidfile -- -n \ + || return 2 +} + +# +# Function that stops the daemon/service +# +do_stop() +{ + # Return + # 0 if daemon has been stopped + # 1 if daemon was already stopped + # 2 if daemon could not be stopped + # other if a failure occurred + start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME + [ "$?" = 2 ] && return 2 + start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON + RETVAL=$? + [ "$RETVAL" = 2 ] && return 2 + # Many daemons don't delete their pidfiles when they exit. + rm -f $PIDFILE + return "$RETVAL" +} + +case "$1" in + start) + [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME" + do_start + case "$?" in + 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; + 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; + esac + ;; + stop) + [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME" + do_stop + case "$?" in + 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; + 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; + esac + ;; + status) + status_of_proc -p "$PIDFILE" "$DAEMON" "$NAME" + ;; + restart|force-reload) + log_daemon_msg "Restarting $DESC" "$NAME" + do_stop + case "$?" in + 0|1) + do_start + case "$?" in + 0) log_end_msg 0 ;; + 1) log_end_msg 1 ;; # Old process is still running + *) log_end_msg 1 ;; # Failed to start + esac + ;; + *) + # Failed to stop + log_end_msg 1 + ;; + esac + ;; + *) + echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2 + exit 3 + ;; +esac + +: diff --git a/hyperv-daemons.hv-fcopy-daemon.service b/hyperv-daemons.hv-fcopy-daemon.service new file mode 100644 index 00000000000..6aec2b38883 --- /dev/null +++ b/hyperv-daemons.hv-fcopy-daemon.service @@ -0,0 +1,10 @@ +[Unit] +Description=Hyper-V file copy service (FCOPY) daemon +ConditionVirtualization=microsoft +ConditionPathExists=/dev/vmbus/hv_fcopy + +[Service] +ExecStart=/usr/sbin/hv_fcopy_daemon -n + +[Install] +WantedBy=multi-user.target diff --git a/hyperv-daemons.hv-kvp-daemon.init b/hyperv-daemons.hv-kvp-daemon.init new file mode 100755 index 00000000000..20a8117afd4 --- /dev/null +++ b/hyperv-daemons.hv-kvp-daemon.init @@ -0,0 +1,109 @@ +#! /bin/sh +### BEGIN INIT INFO +# Provides: hyperv-daemons.hv-kvp-daemon +# Required-Start: $remote_fs $syslog +# Required-Stop: $remote_fs $syslog +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: Hyper-V key-value pair (KVP) daemon +### END INIT INFO + +PATH=/sbin:/usr/sbin:/bin:/usr/bin +DESC="Hyper-V key-value pair (KVP) daemon" +NAME=hv_kvp_daemon +DAEMON=/usr/sbin/$NAME +PIDFILE=/run/$NAME.pid +SCRIPTNAME=/etc/init.d/hyperv-daemons.hv-kvp-daemon + +# Exit if the package is not installed +[ -x "$DAEMON" ] || exit 0 + +# Exit if we are not running under Hyper-V +/lib/hyperv-daemons/check-hyperv || exit 0 + +# Load the VERBOSE setting and other rcS variables +. /lib/init/vars.sh + +# Define LSB log_* functions. +. /lib/lsb/init-functions + +# +# Function that starts the daemon/service +# +do_start() +{ + # Return + # 0 if daemon has been started + # 1 if daemon was already running + # 2 if daemon could not be started + start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \ + || return 1 + start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --background --make-pidfile -- -n \ + || return 2 +} + +# +# Function that stops the daemon/service +# +do_stop() +{ + # Return + # 0 if daemon has been stopped + # 1 if daemon was already stopped + # 2 if daemon could not be stopped + # other if a failure occurred + start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME + [ "$?" = 2 ] && return 2 + start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON + RETVAL=$? + [ "$RETVAL" = 2 ] && return 2 + # Many daemons don't delete their pidfiles when they exit. + rm -f $PIDFILE + return "$RETVAL" +} + +case "$1" in + start) + [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME" + do_start + case "$?" in + 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; + 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; + esac + ;; + stop) + [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME" + do_stop + case "$?" in + 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; + 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; + esac + ;; + status) + status_of_proc -p "$PIDFILE" "$DAEMON" "$NAME" + ;; + restart|force-reload) + log_daemon_msg "Restarting $DESC" "$NAME" + do_stop + case "$?" in + 0|1) + do_start + case "$?" in + 0) log_end_msg 0 ;; + 1) log_end_msg 1 ;; # Old process is still running + *) log_end_msg 1 ;; # Failed to start + esac + ;; + *) + # Failed to stop + log_end_msg 1 + ;; + esac + ;; + *) + echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2 + exit 3 + ;; +esac + +: diff --git a/hyperv-daemons.hv-kvp-daemon.service b/hyperv-daemons.hv-kvp-daemon.service new file mode 100644 index 00000000000..f6f6f0d2995 --- /dev/null +++ b/hyperv-daemons.hv-kvp-daemon.service @@ -0,0 +1,9 @@ +[Unit] +Description=Hyper-V key-value pair (KVP) daemon +ConditionVirtualization=microsoft + +[Service] +ExecStart=/usr/sbin/hv_kvp_daemon -n + +[Install] +WantedBy=multi-user.target diff --git a/hyperv-daemons.hv-vss-daemon.init b/hyperv-daemons.hv-vss-daemon.init new file mode 100755 index 00000000000..ec2df0a1823 --- /dev/null +++ b/hyperv-daemons.hv-vss-daemon.init @@ -0,0 +1,109 @@ +#! /bin/sh +### BEGIN INIT INFO +# Provides: hyperv-daemons.hv-vss-daemon +# Required-Start: $remote_fs $syslog +# Required-Stop: $remote_fs $syslog +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: Hyper-V volume shadow copy service (VSS) daemon +### END INIT INFO + +PATH=/sbin:/usr/sbin:/bin:/usr/bin +DESC="Hyper-V volume shadow copy service (VSS) daemon" +NAME=hv_vss_daemon +DAEMON=/usr/sbin/$NAME +PIDFILE=/run/$NAME.pid +SCRIPTNAME=/etc/init.d/hyperv-daemons.hv-vss-daemon + +# Exit if the package is not installed +[ -x "$DAEMON" ] || exit 0 + +# Exit if we are not running under Hyper-V +/lib/hyperv-daemons/check-hyperv || exit 0 + +# Load the VERBOSE setting and other rcS variables +. /lib/init/vars.sh + +# Define LSB log_* functions. +. /lib/lsb/init-functions + +# +# Function that starts the daemon/service +# +do_start() +{ + # Return + # 0 if daemon has been started + # 1 if daemon was already running + # 2 if daemon could not be started + start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \ + || return 1 + start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --background --make-pidfile -- -n \ + || return 2 +} + +# +# Function that stops the daemon/service +# +do_stop() +{ + # Return + # 0 if daemon has been stopped + # 1 if daemon was already stopped + # 2 if daemon could not be stopped + # other if a failure occurred + start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME + [ "$?" = 2 ] && return 2 + start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON + RETVAL=$? + [ "$RETVAL" = 2 ] && return 2 + # Many daemons don't delete their pidfiles when they exit. + rm -f $PIDFILE + return "$RETVAL" +} + +case "$1" in + start) + [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME" + do_start + case "$?" in + 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; + 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; + esac + ;; + stop) + [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME" + do_stop + case "$?" in + 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; + 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; + esac + ;; + status) + status_of_proc -p "$PIDFILE" "$DAEMON" "$NAME" + ;; + restart|force-reload) + log_daemon_msg "Restarting $DESC" "$NAME" + do_stop + case "$?" in + 0|1) + do_start + case "$?" in + 0) log_end_msg 0 ;; + 1) log_end_msg 1 ;; # Old process is still running + *) log_end_msg 1 ;; # Failed to start + esac + ;; + *) + # Failed to stop + log_end_msg 1 + ;; + esac + ;; + *) + echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2 + exit 3 + ;; +esac + +: diff --git a/hyperv-daemons.hv-vss-daemon.service b/hyperv-daemons.hv-vss-daemon.service new file mode 100644 index 00000000000..3e6534d55e3 --- /dev/null +++ b/hyperv-daemons.hv-vss-daemon.service @@ -0,0 +1,9 @@ +[Unit] +Description=Hyper-V volume shadow copy service (VSS) daemon +ConditionVirtualization=microsoft + +[Service] +ExecStart=/usr/sbin/hv_vss_daemon -n + +[Install] +WantedBy=multi-user.target diff --git a/hyperv-daemons.install b/hyperv-daemons.install new file mode 100644 index 00000000000..2c00a4a79a1 --- /dev/null +++ b/hyperv-daemons.install @@ -0,0 +1 @@ +debian/hyperv-daemons.*.service lib/systemd/system/ diff --git a/installer/alpha/kernel-versions b/installer/alpha/kernel-versions new file mode 100644 index 00000000000..1a479fb203c --- /dev/null +++ b/installer/alpha/kernel-versions @@ -0,0 +1,2 @@ +# arch version flavour installedname suffix build-depends +alpha - alpha-generic - y - diff --git a/installer/alpha/modules/alpha-generic/ata-modules b/installer/alpha/modules/alpha-generic/ata-modules new file mode 100644 index 00000000000..b81c0f38b74 --- /dev/null +++ b/installer/alpha/modules/alpha-generic/ata-modules @@ -0,0 +1 @@ +#include diff --git a/installer/alpha/modules/alpha-generic/btrfs-modules b/installer/alpha/modules/alpha-generic/btrfs-modules new file mode 100644 index 00000000000..e261e138838 --- /dev/null +++ b/installer/alpha/modules/alpha-generic/btrfs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/alpha/modules/alpha-generic/cdrom-core-modules b/installer/alpha/modules/alpha-generic/cdrom-core-modules new file mode 100644 index 00000000000..3ff69b48f4f --- /dev/null +++ b/installer/alpha/modules/alpha-generic/cdrom-core-modules @@ -0,0 +1 @@ +#include diff --git a/installer/alpha/modules/alpha-generic/crc-modules b/installer/alpha/modules/alpha-generic/crc-modules new file mode 100644 index 00000000000..7e00de705e4 --- /dev/null +++ b/installer/alpha/modules/alpha-generic/crc-modules @@ -0,0 +1 @@ +#include diff --git a/installer/alpha/modules/alpha-generic/crypto-dm-modules b/installer/alpha/modules/alpha-generic/crypto-dm-modules new file mode 100644 index 00000000000..4c8f2354cd2 --- /dev/null +++ b/installer/alpha/modules/alpha-generic/crypto-dm-modules @@ -0,0 +1 @@ +#include diff --git a/installer/alpha/modules/alpha-generic/crypto-modules b/installer/alpha/modules/alpha-generic/crypto-modules new file mode 100644 index 00000000000..3a1e862b4cc --- /dev/null +++ b/installer/alpha/modules/alpha-generic/crypto-modules @@ -0,0 +1 @@ +#include diff --git a/installer/alpha/modules/alpha-generic/event-modules b/installer/alpha/modules/alpha-generic/event-modules new file mode 100644 index 00000000000..f8819afd361 --- /dev/null +++ b/installer/alpha/modules/alpha-generic/event-modules @@ -0,0 +1 @@ +#include diff --git a/installer/alpha/modules/alpha-generic/ext4-modules b/installer/alpha/modules/alpha-generic/ext4-modules new file mode 100644 index 00000000000..394c577ce40 --- /dev/null +++ b/installer/alpha/modules/alpha-generic/ext4-modules @@ -0,0 +1 @@ +#include diff --git a/installer/alpha/modules/alpha-generic/fat-modules b/installer/alpha/modules/alpha-generic/fat-modules new file mode 100644 index 00000000000..274584eb65f --- /dev/null +++ b/installer/alpha/modules/alpha-generic/fat-modules @@ -0,0 +1 @@ +#include diff --git a/installer/alpha/modules/alpha-generic/fuse-modules b/installer/alpha/modules/alpha-generic/fuse-modules new file mode 100644 index 00000000000..0b6ba0c8c8f --- /dev/null +++ b/installer/alpha/modules/alpha-generic/fuse-modules @@ -0,0 +1 @@ +#include diff --git a/installer/alpha/modules/alpha-generic/i2c-modules b/installer/alpha/modules/alpha-generic/i2c-modules new file mode 100644 index 00000000000..203a607e73c --- /dev/null +++ b/installer/alpha/modules/alpha-generic/i2c-modules @@ -0,0 +1 @@ +#include diff --git a/installer/alpha/modules/alpha-generic/input-modules b/installer/alpha/modules/alpha-generic/input-modules new file mode 100644 index 00000000000..5ecb595a4a4 --- /dev/null +++ b/installer/alpha/modules/alpha-generic/input-modules @@ -0,0 +1 @@ +#include diff --git a/installer/alpha/modules/alpha-generic/isofs-modules b/installer/alpha/modules/alpha-generic/isofs-modules new file mode 100644 index 00000000000..da4fa9a3c77 --- /dev/null +++ b/installer/alpha/modules/alpha-generic/isofs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/alpha/modules/alpha-generic/jfs-modules b/installer/alpha/modules/alpha-generic/jfs-modules new file mode 100644 index 00000000000..7e4d912b952 --- /dev/null +++ b/installer/alpha/modules/alpha-generic/jfs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/alpha/modules/alpha-generic/kernel-image b/installer/alpha/modules/alpha-generic/kernel-image new file mode 100644 index 00000000000..1d11b1921da --- /dev/null +++ b/installer/alpha/modules/alpha-generic/kernel-image @@ -0,0 +1 @@ +#include diff --git a/installer/alpha/modules/alpha-generic/loop-modules b/installer/alpha/modules/alpha-generic/loop-modules new file mode 100644 index 00000000000..c1c948fa331 --- /dev/null +++ b/installer/alpha/modules/alpha-generic/loop-modules @@ -0,0 +1 @@ +#include diff --git a/installer/alpha/modules/alpha-generic/md-modules b/installer/alpha/modules/alpha-generic/md-modules new file mode 100644 index 00000000000..26115e10b80 --- /dev/null +++ b/installer/alpha/modules/alpha-generic/md-modules @@ -0,0 +1 @@ +#include diff --git a/installer/alpha/modules/alpha-generic/mouse-modules b/installer/alpha/modules/alpha-generic/mouse-modules new file mode 100644 index 00000000000..15fcb00eaa0 --- /dev/null +++ b/installer/alpha/modules/alpha-generic/mouse-modules @@ -0,0 +1 @@ +#include diff --git a/installer/alpha/modules/alpha-generic/multipath-modules b/installer/alpha/modules/alpha-generic/multipath-modules new file mode 100644 index 00000000000..a8b69b2537a --- /dev/null +++ b/installer/alpha/modules/alpha-generic/multipath-modules @@ -0,0 +1 @@ +#include diff --git a/installer/alpha/modules/alpha-generic/nbd-modules b/installer/alpha/modules/alpha-generic/nbd-modules new file mode 100644 index 00000000000..3c9b3e5d426 --- /dev/null +++ b/installer/alpha/modules/alpha-generic/nbd-modules @@ -0,0 +1 @@ +#include diff --git a/installer/alpha/modules/alpha-generic/nic-modules b/installer/alpha/modules/alpha-generic/nic-modules new file mode 100644 index 00000000000..2512e83950d --- /dev/null +++ b/installer/alpha/modules/alpha-generic/nic-modules @@ -0,0 +1 @@ +#include diff --git a/installer/alpha/modules/alpha-generic/nic-pcmcia-modules b/installer/alpha/modules/alpha-generic/nic-pcmcia-modules new file mode 100644 index 00000000000..7a0702cd558 --- /dev/null +++ b/installer/alpha/modules/alpha-generic/nic-pcmcia-modules @@ -0,0 +1 @@ +#include diff --git a/installer/alpha/modules/alpha-generic/nic-shared-modules b/installer/alpha/modules/alpha-generic/nic-shared-modules new file mode 100644 index 00000000000..cc84b14dcd1 --- /dev/null +++ b/installer/alpha/modules/alpha-generic/nic-shared-modules @@ -0,0 +1 @@ +#include diff --git a/installer/alpha/modules/alpha-generic/nic-usb-modules b/installer/alpha/modules/alpha-generic/nic-usb-modules new file mode 100644 index 00000000000..c479669b477 --- /dev/null +++ b/installer/alpha/modules/alpha-generic/nic-usb-modules @@ -0,0 +1 @@ +#include diff --git a/installer/alpha/modules/alpha-generic/nic-wireless-modules b/installer/alpha/modules/alpha-generic/nic-wireless-modules new file mode 100644 index 00000000000..53fd18d7f4c --- /dev/null +++ b/installer/alpha/modules/alpha-generic/nic-wireless-modules @@ -0,0 +1 @@ +#include diff --git a/installer/alpha/modules/alpha-generic/pata-modules b/installer/alpha/modules/alpha-generic/pata-modules new file mode 100644 index 00000000000..b0cd6337a28 --- /dev/null +++ b/installer/alpha/modules/alpha-generic/pata-modules @@ -0,0 +1 @@ +#include diff --git a/installer/alpha/modules/alpha-generic/pcmcia-modules b/installer/alpha/modules/alpha-generic/pcmcia-modules new file mode 100644 index 00000000000..2bb5350fe14 --- /dev/null +++ b/installer/alpha/modules/alpha-generic/pcmcia-modules @@ -0,0 +1 @@ +#include diff --git a/installer/alpha/modules/alpha-generic/ppp-modules b/installer/alpha/modules/alpha-generic/ppp-modules new file mode 100644 index 00000000000..1f26aa1ee60 --- /dev/null +++ b/installer/alpha/modules/alpha-generic/ppp-modules @@ -0,0 +1 @@ +#include diff --git a/installer/alpha/modules/alpha-generic/sata-modules b/installer/alpha/modules/alpha-generic/sata-modules new file mode 100644 index 00000000000..01318c258b5 --- /dev/null +++ b/installer/alpha/modules/alpha-generic/sata-modules @@ -0,0 +1 @@ +#include diff --git a/installer/alpha/modules/alpha-generic/scsi-core-modules b/installer/alpha/modules/alpha-generic/scsi-core-modules new file mode 100644 index 00000000000..dd65d661433 --- /dev/null +++ b/installer/alpha/modules/alpha-generic/scsi-core-modules @@ -0,0 +1 @@ +#include diff --git a/installer/alpha/modules/alpha-generic/scsi-modules b/installer/alpha/modules/alpha-generic/scsi-modules new file mode 100644 index 00000000000..8909dfb7948 --- /dev/null +++ b/installer/alpha/modules/alpha-generic/scsi-modules @@ -0,0 +1 @@ +#include diff --git a/installer/alpha/modules/alpha-generic/serial-modules b/installer/alpha/modules/alpha-generic/serial-modules new file mode 100644 index 00000000000..6ab8b8c3551 --- /dev/null +++ b/installer/alpha/modules/alpha-generic/serial-modules @@ -0,0 +1 @@ +#include diff --git a/installer/alpha/modules/alpha-generic/squashfs-modules b/installer/alpha/modules/alpha-generic/squashfs-modules new file mode 100644 index 00000000000..42d77887ad3 --- /dev/null +++ b/installer/alpha/modules/alpha-generic/squashfs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/alpha/modules/alpha-generic/srm-modules b/installer/alpha/modules/alpha-generic/srm-modules new file mode 100644 index 00000000000..01601199779 --- /dev/null +++ b/installer/alpha/modules/alpha-generic/srm-modules @@ -0,0 +1 @@ +srm_env diff --git a/installer/alpha/modules/alpha-generic/usb-modules b/installer/alpha/modules/alpha-generic/usb-modules new file mode 100644 index 00000000000..c598dedd811 --- /dev/null +++ b/installer/alpha/modules/alpha-generic/usb-modules @@ -0,0 +1 @@ +#include diff --git a/installer/alpha/modules/alpha-generic/usb-serial-modules b/installer/alpha/modules/alpha-generic/usb-serial-modules new file mode 100644 index 00000000000..c0a0dc3bd17 --- /dev/null +++ b/installer/alpha/modules/alpha-generic/usb-serial-modules @@ -0,0 +1 @@ +#include diff --git a/installer/alpha/modules/alpha-generic/usb-storage-modules b/installer/alpha/modules/alpha-generic/usb-storage-modules new file mode 100644 index 00000000000..8c5e81b55e3 --- /dev/null +++ b/installer/alpha/modules/alpha-generic/usb-storage-modules @@ -0,0 +1 @@ +#include diff --git a/installer/alpha/modules/alpha-generic/virtio-modules b/installer/alpha/modules/alpha-generic/virtio-modules new file mode 100644 index 00000000000..61da39659c6 --- /dev/null +++ b/installer/alpha/modules/alpha-generic/virtio-modules @@ -0,0 +1 @@ +#include diff --git a/installer/alpha/modules/alpha-generic/xfs-modules b/installer/alpha/modules/alpha-generic/xfs-modules new file mode 100644 index 00000000000..98374e2bbaf --- /dev/null +++ b/installer/alpha/modules/alpha-generic/xfs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/alpha/modules/alpha-generic/zlib-modules b/installer/alpha/modules/alpha-generic/zlib-modules new file mode 100644 index 00000000000..e02ad64bf9c --- /dev/null +++ b/installer/alpha/modules/alpha-generic/zlib-modules @@ -0,0 +1 @@ +#include diff --git a/installer/alpha/package-list b/installer/alpha/package-list new file mode 100644 index 00000000000..d3332079024 --- /dev/null +++ b/installer/alpha/package-list @@ -0,0 +1,22 @@ +# This file is used to build up the control file. The kernel version and +# "-di" are appended to the package names. Section can be left out. So can +# architecture, which is derived from the files in the modules directory. +# It overwrites specifications from /usr/share/kernel-wedge/package-list. +# +Package: kernel-image + +Package: usb-storage-modules +Depends: kernel-image, scsi-modules, usb-modules + +Package: pata-modules +Depends: kernel-image, ata-modules, scsi-core-modules + +Package: fb-modules +Depends: kernel-image, i2c-modules + +Package: srm-modules +Depends: kernel-image +Priority: standard +Description: SRM modules + This package contains the srm_env module which provides access to the SRM + environment. diff --git a/installer/amd64/TODO b/installer/amd64/TODO new file mode 100644 index 00000000000..d02dd6c7dab --- /dev/null +++ b/installer/amd64/TODO @@ -0,0 +1,3 @@ +* The 2.6 kernel is missing a lot of modules, need to get a list of all + modules included in the udebs, and compare vs. the full module list and + add missing stuff. diff --git a/installer/amd64/kernel-versions b/installer/amd64/kernel-versions new file mode 100644 index 00000000000..1700a9426c1 --- /dev/null +++ b/installer/amd64/kernel-versions @@ -0,0 +1,2 @@ +# arch version flavour installedname suffix build-depends +amd64 - amd64 - - - diff --git a/installer/amd64/modules/amd64/acpi-modules b/installer/amd64/modules/amd64/acpi-modules new file mode 100644 index 00000000000..307528fb17e --- /dev/null +++ b/installer/amd64/modules/amd64/acpi-modules @@ -0,0 +1,2 @@ +#include + diff --git a/installer/amd64/modules/amd64/ata-modules b/installer/amd64/modules/amd64/ata-modules new file mode 100644 index 00000000000..9409e7cde81 --- /dev/null +++ b/installer/amd64/modules/amd64/ata-modules @@ -0,0 +1,2 @@ +#include + diff --git a/installer/amd64/modules/amd64/btrfs-modules b/installer/amd64/modules/amd64/btrfs-modules new file mode 100644 index 00000000000..e261e138838 --- /dev/null +++ b/installer/amd64/modules/amd64/btrfs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/amd64/modules/amd64/cdrom-core-modules b/installer/amd64/modules/amd64/cdrom-core-modules new file mode 100644 index 00000000000..e264d7aa348 --- /dev/null +++ b/installer/amd64/modules/amd64/cdrom-core-modules @@ -0,0 +1,2 @@ +#include + diff --git a/installer/amd64/modules/amd64/crc-modules b/installer/amd64/modules/amd64/crc-modules new file mode 100644 index 00000000000..7e00de705e4 --- /dev/null +++ b/installer/amd64/modules/amd64/crc-modules @@ -0,0 +1 @@ +#include diff --git a/installer/amd64/modules/amd64/crypto-dm-modules b/installer/amd64/modules/amd64/crypto-dm-modules new file mode 100644 index 00000000000..4c8f2354cd2 --- /dev/null +++ b/installer/amd64/modules/amd64/crypto-dm-modules @@ -0,0 +1 @@ +#include diff --git a/installer/amd64/modules/amd64/crypto-modules b/installer/amd64/modules/amd64/crypto-modules new file mode 100644 index 00000000000..3a1e862b4cc --- /dev/null +++ b/installer/amd64/modules/amd64/crypto-modules @@ -0,0 +1 @@ +#include diff --git a/installer/amd64/modules/amd64/efi-modules b/installer/amd64/modules/amd64/efi-modules new file mode 100644 index 00000000000..e1dc05e8f24 --- /dev/null +++ b/installer/amd64/modules/amd64/efi-modules @@ -0,0 +1 @@ +#include diff --git a/installer/amd64/modules/amd64/event-modules b/installer/amd64/modules/amd64/event-modules new file mode 100644 index 00000000000..f8819afd361 --- /dev/null +++ b/installer/amd64/modules/amd64/event-modules @@ -0,0 +1 @@ +#include diff --git a/installer/amd64/modules/amd64/ext4-modules b/installer/amd64/modules/amd64/ext4-modules new file mode 100644 index 00000000000..394c577ce40 --- /dev/null +++ b/installer/amd64/modules/amd64/ext4-modules @@ -0,0 +1 @@ +#include diff --git a/installer/amd64/modules/amd64/fat-modules b/installer/amd64/modules/amd64/fat-modules new file mode 100644 index 00000000000..cce8fd30ca4 --- /dev/null +++ b/installer/amd64/modules/amd64/fat-modules @@ -0,0 +1,2 @@ +#include + diff --git a/installer/amd64/modules/amd64/fb-modules b/installer/amd64/modules/amd64/fb-modules new file mode 100644 index 00000000000..06fb9d2f8ff --- /dev/null +++ b/installer/amd64/modules/amd64/fb-modules @@ -0,0 +1,2 @@ +vesafb ? +vga16fb diff --git a/installer/amd64/modules/amd64/firewire-core-modules b/installer/amd64/modules/amd64/firewire-core-modules new file mode 100644 index 00000000000..dcac80af965 --- /dev/null +++ b/installer/amd64/modules/amd64/firewire-core-modules @@ -0,0 +1 @@ +#include diff --git a/installer/amd64/modules/amd64/fuse-modules b/installer/amd64/modules/amd64/fuse-modules new file mode 100644 index 00000000000..0b6ba0c8c8f --- /dev/null +++ b/installer/amd64/modules/amd64/fuse-modules @@ -0,0 +1 @@ +#include diff --git a/installer/amd64/modules/amd64/hyperv-modules b/installer/amd64/modules/amd64/hyperv-modules new file mode 100644 index 00000000000..69fdd5d22a8 --- /dev/null +++ b/installer/amd64/modules/amd64/hyperv-modules @@ -0,0 +1 @@ +#include diff --git a/installer/amd64/modules/amd64/i2c-modules b/installer/amd64/modules/amd64/i2c-modules new file mode 100644 index 00000000000..203a607e73c --- /dev/null +++ b/installer/amd64/modules/amd64/i2c-modules @@ -0,0 +1 @@ +#include diff --git a/installer/amd64/modules/amd64/input-modules b/installer/amd64/modules/amd64/input-modules new file mode 100644 index 00000000000..5ecb595a4a4 --- /dev/null +++ b/installer/amd64/modules/amd64/input-modules @@ -0,0 +1 @@ +#include diff --git a/installer/amd64/modules/amd64/isofs-modules b/installer/amd64/modules/amd64/isofs-modules new file mode 100644 index 00000000000..da4fa9a3c77 --- /dev/null +++ b/installer/amd64/modules/amd64/isofs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/amd64/modules/amd64/jfs-modules b/installer/amd64/modules/amd64/jfs-modules new file mode 100644 index 00000000000..7e4d912b952 --- /dev/null +++ b/installer/amd64/modules/amd64/jfs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/amd64/modules/amd64/kernel-image b/installer/amd64/modules/amd64/kernel-image new file mode 100644 index 00000000000..1d11b1921da --- /dev/null +++ b/installer/amd64/modules/amd64/kernel-image @@ -0,0 +1 @@ +#include diff --git a/installer/amd64/modules/amd64/loop-modules b/installer/amd64/modules/amd64/loop-modules new file mode 100644 index 00000000000..16446771376 --- /dev/null +++ b/installer/amd64/modules/amd64/loop-modules @@ -0,0 +1,2 @@ +#include + diff --git a/installer/amd64/modules/amd64/md-modules b/installer/amd64/modules/amd64/md-modules new file mode 100644 index 00000000000..ade088ddbb2 --- /dev/null +++ b/installer/amd64/modules/amd64/md-modules @@ -0,0 +1,2 @@ +#include + diff --git a/installer/amd64/modules/amd64/mmc-core-modules b/installer/amd64/modules/amd64/mmc-core-modules new file mode 100644 index 00000000000..7bf38465cf1 --- /dev/null +++ b/installer/amd64/modules/amd64/mmc-core-modules @@ -0,0 +1 @@ +#include diff --git a/installer/amd64/modules/amd64/mmc-modules b/installer/amd64/modules/amd64/mmc-modules new file mode 100644 index 00000000000..dadfd5334d6 --- /dev/null +++ b/installer/amd64/modules/amd64/mmc-modules @@ -0,0 +1 @@ +#include diff --git a/installer/amd64/modules/amd64/mouse-modules b/installer/amd64/modules/amd64/mouse-modules new file mode 100644 index 00000000000..15fcb00eaa0 --- /dev/null +++ b/installer/amd64/modules/amd64/mouse-modules @@ -0,0 +1 @@ +#include diff --git a/installer/amd64/modules/amd64/multipath-modules b/installer/amd64/modules/amd64/multipath-modules new file mode 100644 index 00000000000..a8b69b2537a --- /dev/null +++ b/installer/amd64/modules/amd64/multipath-modules @@ -0,0 +1 @@ +#include diff --git a/installer/amd64/modules/amd64/nbd-modules b/installer/amd64/modules/amd64/nbd-modules new file mode 100644 index 00000000000..3c9b3e5d426 --- /dev/null +++ b/installer/amd64/modules/amd64/nbd-modules @@ -0,0 +1 @@ +#include diff --git a/installer/amd64/modules/amd64/nic-modules b/installer/amd64/modules/amd64/nic-modules new file mode 100644 index 00000000000..2512e83950d --- /dev/null +++ b/installer/amd64/modules/amd64/nic-modules @@ -0,0 +1 @@ +#include diff --git a/installer/amd64/modules/amd64/nic-pcmcia-modules b/installer/amd64/modules/amd64/nic-pcmcia-modules new file mode 100644 index 00000000000..7a0702cd558 --- /dev/null +++ b/installer/amd64/modules/amd64/nic-pcmcia-modules @@ -0,0 +1 @@ +#include diff --git a/installer/amd64/modules/amd64/nic-shared-modules b/installer/amd64/modules/amd64/nic-shared-modules new file mode 100644 index 00000000000..cc84b14dcd1 --- /dev/null +++ b/installer/amd64/modules/amd64/nic-shared-modules @@ -0,0 +1 @@ +#include diff --git a/installer/amd64/modules/amd64/nic-usb-modules b/installer/amd64/modules/amd64/nic-usb-modules new file mode 100644 index 00000000000..c479669b477 --- /dev/null +++ b/installer/amd64/modules/amd64/nic-usb-modules @@ -0,0 +1 @@ +#include diff --git a/installer/amd64/modules/amd64/nic-wireless-modules b/installer/amd64/modules/amd64/nic-wireless-modules new file mode 100644 index 00000000000..53fd18d7f4c --- /dev/null +++ b/installer/amd64/modules/amd64/nic-wireless-modules @@ -0,0 +1 @@ +#include diff --git a/installer/amd64/modules/amd64/ntfs-modules b/installer/amd64/modules/amd64/ntfs-modules new file mode 100644 index 00000000000..ac1bc6a9601 --- /dev/null +++ b/installer/amd64/modules/amd64/ntfs-modules @@ -0,0 +1 @@ +ntfs diff --git a/installer/amd64/modules/amd64/pata-modules b/installer/amd64/modules/amd64/pata-modules new file mode 100644 index 00000000000..8c4e514ae72 --- /dev/null +++ b/installer/amd64/modules/amd64/pata-modules @@ -0,0 +1,2 @@ +#include + diff --git a/installer/amd64/modules/amd64/pcmcia-modules b/installer/amd64/modules/amd64/pcmcia-modules new file mode 100644 index 00000000000..2bb5350fe14 --- /dev/null +++ b/installer/amd64/modules/amd64/pcmcia-modules @@ -0,0 +1 @@ +#include diff --git a/installer/amd64/modules/amd64/pcmcia-storage-modules b/installer/amd64/modules/amd64/pcmcia-storage-modules new file mode 100644 index 00000000000..f73ae5bb9b4 --- /dev/null +++ b/installer/amd64/modules/amd64/pcmcia-storage-modules @@ -0,0 +1 @@ +#include diff --git a/installer/amd64/modules/amd64/ppp-modules b/installer/amd64/modules/amd64/ppp-modules new file mode 100644 index 00000000000..f1ae9b3d15a --- /dev/null +++ b/installer/amd64/modules/amd64/ppp-modules @@ -0,0 +1,2 @@ +#include + diff --git a/installer/amd64/modules/amd64/sata-modules b/installer/amd64/modules/amd64/sata-modules new file mode 100644 index 00000000000..01318c258b5 --- /dev/null +++ b/installer/amd64/modules/amd64/sata-modules @@ -0,0 +1 @@ +#include diff --git a/installer/amd64/modules/amd64/scsi-core-modules b/installer/amd64/modules/amd64/scsi-core-modules new file mode 100644 index 00000000000..778a022fa75 --- /dev/null +++ b/installer/amd64/modules/amd64/scsi-core-modules @@ -0,0 +1,4 @@ +#include + +# Needed by hv_storvsc in hyperv-modules as well as scsi-modules +scsi_transport_fc diff --git a/installer/amd64/modules/amd64/scsi-modules b/installer/amd64/modules/amd64/scsi-modules new file mode 100644 index 00000000000..9b1fa27b98a --- /dev/null +++ b/installer/amd64/modules/amd64/scsi-modules @@ -0,0 +1,3 @@ +#include +# To support nvme +vmd diff --git a/installer/amd64/modules/amd64/serial-modules b/installer/amd64/modules/amd64/serial-modules new file mode 100644 index 00000000000..6ab8b8c3551 --- /dev/null +++ b/installer/amd64/modules/amd64/serial-modules @@ -0,0 +1 @@ +#include diff --git a/installer/amd64/modules/amd64/sound-modules b/installer/amd64/modules/amd64/sound-modules new file mode 100644 index 00000000000..68395ab3d99 --- /dev/null +++ b/installer/amd64/modules/amd64/sound-modules @@ -0,0 +1 @@ +#include diff --git a/installer/amd64/modules/amd64/speakup-modules b/installer/amd64/modules/amd64/speakup-modules new file mode 100644 index 00000000000..29592721a7a --- /dev/null +++ b/installer/amd64/modules/amd64/speakup-modules @@ -0,0 +1 @@ +#include diff --git a/installer/amd64/modules/amd64/squashfs-modules b/installer/amd64/modules/amd64/squashfs-modules new file mode 100644 index 00000000000..42d77887ad3 --- /dev/null +++ b/installer/amd64/modules/amd64/squashfs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/amd64/modules/amd64/udf-modules b/installer/amd64/modules/amd64/udf-modules new file mode 100644 index 00000000000..b90d7ee9b52 --- /dev/null +++ b/installer/amd64/modules/amd64/udf-modules @@ -0,0 +1 @@ +#include diff --git a/installer/amd64/modules/amd64/uinput-modules b/installer/amd64/modules/amd64/uinput-modules new file mode 100644 index 00000000000..58a83377944 --- /dev/null +++ b/installer/amd64/modules/amd64/uinput-modules @@ -0,0 +1 @@ +#include diff --git a/installer/amd64/modules/amd64/usb-modules b/installer/amd64/modules/amd64/usb-modules new file mode 100644 index 00000000000..c598dedd811 --- /dev/null +++ b/installer/amd64/modules/amd64/usb-modules @@ -0,0 +1 @@ +#include diff --git a/installer/amd64/modules/amd64/usb-serial-modules b/installer/amd64/modules/amd64/usb-serial-modules new file mode 100644 index 00000000000..c0a0dc3bd17 --- /dev/null +++ b/installer/amd64/modules/amd64/usb-serial-modules @@ -0,0 +1 @@ +#include diff --git a/installer/amd64/modules/amd64/usb-storage-modules b/installer/amd64/modules/amd64/usb-storage-modules new file mode 100644 index 00000000000..272d95e2e8b --- /dev/null +++ b/installer/amd64/modules/amd64/usb-storage-modules @@ -0,0 +1,2 @@ +#include + diff --git a/installer/amd64/modules/amd64/virtio-modules b/installer/amd64/modules/amd64/virtio-modules new file mode 100644 index 00000000000..61da39659c6 --- /dev/null +++ b/installer/amd64/modules/amd64/virtio-modules @@ -0,0 +1 @@ +#include diff --git a/installer/amd64/modules/amd64/xfs-modules b/installer/amd64/modules/amd64/xfs-modules new file mode 100644 index 00000000000..c020b5d399f --- /dev/null +++ b/installer/amd64/modules/amd64/xfs-modules @@ -0,0 +1,2 @@ +#include + diff --git a/installer/amd64/package-list b/installer/amd64/package-list new file mode 100644 index 00000000000..e55a71031af --- /dev/null +++ b/installer/amd64/package-list @@ -0,0 +1,14 @@ +# This file is used to build up the control file. The kernel version and +# "-di" are appended to the package names. Section can be left out. So can +# architecture, which is derived from the files in the modules directory. +# It overwrites specifications from /usr/share/kernel-wedge/package-list. +# + +Package: fat-modules +Priority: standard + +Package: scsi-modules +Depends: kernel-image, scsi-core-modules, cdrom-core-modules, core-modules, ata-modules + +Package: kernel-image +Provides: zlib-modules diff --git a/installer/arm64/kernel-versions b/installer/arm64/kernel-versions new file mode 100644 index 00000000000..11d7399544a --- /dev/null +++ b/installer/arm64/kernel-versions @@ -0,0 +1,2 @@ +# arch version flavour installedname suffix build-depends +arm64 - arm64 - - - diff --git a/installer/arm64/modules/arm64/ata-modules b/installer/arm64/modules/arm64/ata-modules new file mode 100644 index 00000000000..04d9c88411a --- /dev/null +++ b/installer/arm64/modules/arm64/ata-modules @@ -0,0 +1 @@ +libata diff --git a/installer/arm64/modules/arm64/btrfs-modules b/installer/arm64/modules/arm64/btrfs-modules new file mode 100644 index 00000000000..e261e138838 --- /dev/null +++ b/installer/arm64/modules/arm64/btrfs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/arm64/modules/arm64/cdrom-core-modules b/installer/arm64/modules/arm64/cdrom-core-modules new file mode 100644 index 00000000000..e264d7aa348 --- /dev/null +++ b/installer/arm64/modules/arm64/cdrom-core-modules @@ -0,0 +1,2 @@ +#include + diff --git a/installer/arm64/modules/arm64/crc-modules b/installer/arm64/modules/arm64/crc-modules new file mode 100644 index 00000000000..7e00de705e4 --- /dev/null +++ b/installer/arm64/modules/arm64/crc-modules @@ -0,0 +1 @@ +#include diff --git a/installer/arm64/modules/arm64/crypto-dm-modules b/installer/arm64/modules/arm64/crypto-dm-modules new file mode 100644 index 00000000000..4c8f2354cd2 --- /dev/null +++ b/installer/arm64/modules/arm64/crypto-dm-modules @@ -0,0 +1 @@ +#include diff --git a/installer/arm64/modules/arm64/crypto-modules b/installer/arm64/modules/arm64/crypto-modules new file mode 100644 index 00000000000..3a1e862b4cc --- /dev/null +++ b/installer/arm64/modules/arm64/crypto-modules @@ -0,0 +1 @@ +#include diff --git a/installer/arm64/modules/arm64/efi-modules b/installer/arm64/modules/arm64/efi-modules new file mode 100644 index 00000000000..e1dc05e8f24 --- /dev/null +++ b/installer/arm64/modules/arm64/efi-modules @@ -0,0 +1 @@ +#include diff --git a/installer/arm64/modules/arm64/event-modules b/installer/arm64/modules/arm64/event-modules new file mode 100644 index 00000000000..f8819afd361 --- /dev/null +++ b/installer/arm64/modules/arm64/event-modules @@ -0,0 +1 @@ +#include diff --git a/installer/arm64/modules/arm64/ext4-modules b/installer/arm64/modules/arm64/ext4-modules new file mode 100644 index 00000000000..394c577ce40 --- /dev/null +++ b/installer/arm64/modules/arm64/ext4-modules @@ -0,0 +1 @@ +#include diff --git a/installer/arm64/modules/arm64/fat-modules b/installer/arm64/modules/arm64/fat-modules new file mode 100644 index 00000000000..274584eb65f --- /dev/null +++ b/installer/arm64/modules/arm64/fat-modules @@ -0,0 +1 @@ +#include diff --git a/installer/arm64/modules/arm64/fb-modules b/installer/arm64/modules/arm64/fb-modules new file mode 100644 index 00000000000..f96aaeadaf4 --- /dev/null +++ b/installer/arm64/modules/arm64/fb-modules @@ -0,0 +1,2 @@ +ast +tegra-drm diff --git a/installer/arm64/modules/arm64/fuse-modules b/installer/arm64/modules/arm64/fuse-modules new file mode 100644 index 00000000000..0b6ba0c8c8f --- /dev/null +++ b/installer/arm64/modules/arm64/fuse-modules @@ -0,0 +1 @@ +#include diff --git a/installer/arm64/modules/arm64/i2c-modules b/installer/arm64/modules/arm64/i2c-modules new file mode 100644 index 00000000000..bfe65b4cd88 --- /dev/null +++ b/installer/arm64/modules/arm64/i2c-modules @@ -0,0 +1,2 @@ +#include +i2c-tegra diff --git a/installer/arm64/modules/arm64/input-modules b/installer/arm64/modules/arm64/input-modules new file mode 100644 index 00000000000..5ecb595a4a4 --- /dev/null +++ b/installer/arm64/modules/arm64/input-modules @@ -0,0 +1 @@ +#include diff --git a/installer/arm64/modules/arm64/isofs-modules b/installer/arm64/modules/arm64/isofs-modules new file mode 100644 index 00000000000..da4fa9a3c77 --- /dev/null +++ b/installer/arm64/modules/arm64/isofs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/arm64/modules/arm64/jfs-modules b/installer/arm64/modules/arm64/jfs-modules new file mode 100644 index 00000000000..7e4d912b952 --- /dev/null +++ b/installer/arm64/modules/arm64/jfs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/arm64/modules/arm64/kernel-image b/installer/arm64/modules/arm64/kernel-image new file mode 100644 index 00000000000..415e620ee1c --- /dev/null +++ b/installer/arm64/modules/arm64/kernel-image @@ -0,0 +1,16 @@ +#include + +# Multifunction devices +drivers/mfd/** + +# Regulators +drivers/regulator/** + +# NIC,sata, and USB on Armada 8K +phy-mvebu-cp110-comphy ? + +# SoC modules +drivers/soc/** + +# Watchdog needed for reboot +sunxi_wdt ? diff --git a/installer/arm64/modules/arm64/leds-modules b/installer/arm64/modules/arm64/leds-modules new file mode 100644 index 00000000000..85d9f2565c1 --- /dev/null +++ b/installer/arm64/modules/arm64/leds-modules @@ -0,0 +1 @@ +#include diff --git a/installer/arm64/modules/arm64/loop-modules b/installer/arm64/modules/arm64/loop-modules new file mode 100644 index 00000000000..c1c948fa331 --- /dev/null +++ b/installer/arm64/modules/arm64/loop-modules @@ -0,0 +1 @@ +#include diff --git a/installer/arm64/modules/arm64/md-modules b/installer/arm64/modules/arm64/md-modules new file mode 100644 index 00000000000..26115e10b80 --- /dev/null +++ b/installer/arm64/modules/arm64/md-modules @@ -0,0 +1 @@ +#include diff --git a/installer/arm64/modules/arm64/mmc-modules b/installer/arm64/modules/arm64/mmc-modules new file mode 100644 index 00000000000..dadfd5334d6 --- /dev/null +++ b/installer/arm64/modules/arm64/mmc-modules @@ -0,0 +1 @@ +#include diff --git a/installer/arm64/modules/arm64/multipath-modules b/installer/arm64/modules/arm64/multipath-modules new file mode 100644 index 00000000000..a8b69b2537a --- /dev/null +++ b/installer/arm64/modules/arm64/multipath-modules @@ -0,0 +1 @@ +#include diff --git a/installer/arm64/modules/arm64/nbd-modules b/installer/arm64/modules/arm64/nbd-modules new file mode 100644 index 00000000000..3c9b3e5d426 --- /dev/null +++ b/installer/arm64/modules/arm64/nbd-modules @@ -0,0 +1 @@ +#include diff --git a/installer/arm64/modules/arm64/nic-modules b/installer/arm64/modules/arm64/nic-modules new file mode 100644 index 00000000000..22ea989ab8f --- /dev/null +++ b/installer/arm64/modules/arm64/nic-modules @@ -0,0 +1,9 @@ +#include +amd-xgbe +smc91x +smsc911x +stmmac +stmmac-platform +dwmac-generic +dwmac-ipq806x +xgene-enet diff --git a/installer/arm64/modules/arm64/nic-shared-modules b/installer/arm64/modules/arm64/nic-shared-modules new file mode 100644 index 00000000000..cc84b14dcd1 --- /dev/null +++ b/installer/arm64/modules/arm64/nic-shared-modules @@ -0,0 +1 @@ +#include diff --git a/installer/arm64/modules/arm64/nic-usb-modules b/installer/arm64/modules/arm64/nic-usb-modules new file mode 100644 index 00000000000..c479669b477 --- /dev/null +++ b/installer/arm64/modules/arm64/nic-usb-modules @@ -0,0 +1 @@ +#include diff --git a/installer/arm64/modules/arm64/nic-wireless-modules b/installer/arm64/modules/arm64/nic-wireless-modules new file mode 100644 index 00000000000..53fd18d7f4c --- /dev/null +++ b/installer/arm64/modules/arm64/nic-wireless-modules @@ -0,0 +1 @@ +#include diff --git a/installer/arm64/modules/arm64/ppp-modules b/installer/arm64/modules/arm64/ppp-modules new file mode 100644 index 00000000000..1f26aa1ee60 --- /dev/null +++ b/installer/arm64/modules/arm64/ppp-modules @@ -0,0 +1 @@ +#include diff --git a/installer/arm64/modules/arm64/sata-modules b/installer/arm64/modules/arm64/sata-modules new file mode 100644 index 00000000000..740a93c365a --- /dev/null +++ b/installer/arm64/modules/arm64/sata-modules @@ -0,0 +1,4 @@ +#include +phy-qcom-apq8064-sata +phy-qcom-ipq806x-sata +phy-xgene diff --git a/installer/arm64/modules/arm64/scsi-core-modules b/installer/arm64/modules/arm64/scsi-core-modules new file mode 100644 index 00000000000..dd65d661433 --- /dev/null +++ b/installer/arm64/modules/arm64/scsi-core-modules @@ -0,0 +1 @@ +#include diff --git a/installer/arm64/modules/arm64/scsi-modules b/installer/arm64/modules/arm64/scsi-modules new file mode 100644 index 00000000000..8909dfb7948 --- /dev/null +++ b/installer/arm64/modules/arm64/scsi-modules @@ -0,0 +1 @@ +#include diff --git a/installer/arm64/modules/arm64/squashfs-modules b/installer/arm64/modules/arm64/squashfs-modules new file mode 100644 index 00000000000..42d77887ad3 --- /dev/null +++ b/installer/arm64/modules/arm64/squashfs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/arm64/modules/arm64/udf-modules b/installer/arm64/modules/arm64/udf-modules new file mode 100644 index 00000000000..b90d7ee9b52 --- /dev/null +++ b/installer/arm64/modules/arm64/udf-modules @@ -0,0 +1 @@ +#include diff --git a/installer/arm64/modules/arm64/uinput-modules b/installer/arm64/modules/arm64/uinput-modules new file mode 100644 index 00000000000..58a83377944 --- /dev/null +++ b/installer/arm64/modules/arm64/uinput-modules @@ -0,0 +1 @@ +#include diff --git a/installer/arm64/modules/arm64/usb-modules b/installer/arm64/modules/arm64/usb-modules new file mode 100644 index 00000000000..0d2a7592450 --- /dev/null +++ b/installer/arm64/modules/arm64/usb-modules @@ -0,0 +1,4 @@ +#include +dwc2 +dwc3 +usb3503 diff --git a/installer/arm64/modules/arm64/usb-storage-modules b/installer/arm64/modules/arm64/usb-storage-modules new file mode 100644 index 00000000000..8c5e81b55e3 --- /dev/null +++ b/installer/arm64/modules/arm64/usb-storage-modules @@ -0,0 +1 @@ +#include diff --git a/installer/arm64/modules/arm64/virtio-modules b/installer/arm64/modules/arm64/virtio-modules new file mode 100644 index 00000000000..61da39659c6 --- /dev/null +++ b/installer/arm64/modules/arm64/virtio-modules @@ -0,0 +1 @@ +#include diff --git a/installer/arm64/modules/arm64/xfs-modules b/installer/arm64/modules/arm64/xfs-modules new file mode 100644 index 00000000000..98374e2bbaf --- /dev/null +++ b/installer/arm64/modules/arm64/xfs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/arm64/package-list b/installer/arm64/package-list new file mode 100644 index 00000000000..22daaa6cc16 --- /dev/null +++ b/installer/arm64/package-list @@ -0,0 +1,8 @@ +# This file is used to build up the control file. The kernel version and +# "-di" are appended to the package names. Section can be left out. So can +# architecture, which is derived from the files in the modules directory. +# It overwrites specifications from /usr/share/kernel-wedge/package-list. +# + +Package: kernel-image +Provides: zlib-modules diff --git a/installer/armel/kernel-versions b/installer/armel/kernel-versions new file mode 100644 index 00000000000..c4ad82d0fd1 --- /dev/null +++ b/installer/armel/kernel-versions @@ -0,0 +1,2 @@ +# arch version flavour installedname suffix build-depends +#armel - marvell - y - diff --git a/installer/armel/modules/armel-marvell/btrfs-modules b/installer/armel/modules/armel-marvell/btrfs-modules new file mode 100644 index 00000000000..e261e138838 --- /dev/null +++ b/installer/armel/modules/armel-marvell/btrfs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/armel/modules/armel-marvell/cdrom-core-modules b/installer/armel/modules/armel-marvell/cdrom-core-modules new file mode 100644 index 00000000000..e264d7aa348 --- /dev/null +++ b/installer/armel/modules/armel-marvell/cdrom-core-modules @@ -0,0 +1,2 @@ +#include + diff --git a/installer/armel/modules/armel-marvell/crc-modules b/installer/armel/modules/armel-marvell/crc-modules new file mode 100644 index 00000000000..7e00de705e4 --- /dev/null +++ b/installer/armel/modules/armel-marvell/crc-modules @@ -0,0 +1 @@ +#include diff --git a/installer/armel/modules/armel-marvell/crypto-dm-modules b/installer/armel/modules/armel-marvell/crypto-dm-modules new file mode 100644 index 00000000000..4c8f2354cd2 --- /dev/null +++ b/installer/armel/modules/armel-marvell/crypto-dm-modules @@ -0,0 +1 @@ +#include diff --git a/installer/armel/modules/armel-marvell/crypto-modules b/installer/armel/modules/armel-marvell/crypto-modules new file mode 100644 index 00000000000..3a1e862b4cc --- /dev/null +++ b/installer/armel/modules/armel-marvell/crypto-modules @@ -0,0 +1 @@ +#include diff --git a/installer/armel/modules/armel-marvell/event-modules b/installer/armel/modules/armel-marvell/event-modules new file mode 100644 index 00000000000..0bc9f776dae --- /dev/null +++ b/installer/armel/modules/armel-marvell/event-modules @@ -0,0 +1,2 @@ +#include +gpio_keys diff --git a/installer/armel/modules/armel-marvell/ext4-modules b/installer/armel/modules/armel-marvell/ext4-modules new file mode 100644 index 00000000000..394c577ce40 --- /dev/null +++ b/installer/armel/modules/armel-marvell/ext4-modules @@ -0,0 +1 @@ +#include diff --git a/installer/armel/modules/armel-marvell/fat-modules b/installer/armel/modules/armel-marvell/fat-modules new file mode 100644 index 00000000000..274584eb65f --- /dev/null +++ b/installer/armel/modules/armel-marvell/fat-modules @@ -0,0 +1 @@ +#include diff --git a/installer/armel/modules/armel-marvell/fb-modules b/installer/armel/modules/armel-marvell/fb-modules new file mode 100644 index 00000000000..c860f18783b --- /dev/null +++ b/installer/armel/modules/armel-marvell/fb-modules @@ -0,0 +1,2 @@ +udlfb +xgifb diff --git a/installer/armel/modules/armel-marvell/fuse-modules b/installer/armel/modules/armel-marvell/fuse-modules new file mode 100644 index 00000000000..0b6ba0c8c8f --- /dev/null +++ b/installer/armel/modules/armel-marvell/fuse-modules @@ -0,0 +1 @@ +#include diff --git a/installer/armel/modules/armel-marvell/input-modules b/installer/armel/modules/armel-marvell/input-modules new file mode 100644 index 00000000000..34183581c0e --- /dev/null +++ b/installer/armel/modules/armel-marvell/input-modules @@ -0,0 +1,3 @@ +#include +# Moved to event-modules for use in network-console builds +gpio_keys - diff --git a/installer/armel/modules/armel-marvell/ipv6-modules b/installer/armel/modules/armel-marvell/ipv6-modules new file mode 100644 index 00000000000..1e3fc3388c0 --- /dev/null +++ b/installer/armel/modules/armel-marvell/ipv6-modules @@ -0,0 +1 @@ +#include diff --git a/installer/armel/modules/armel-marvell/isofs-modules b/installer/armel/modules/armel-marvell/isofs-modules new file mode 100644 index 00000000000..da4fa9a3c77 --- /dev/null +++ b/installer/armel/modules/armel-marvell/isofs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/armel/modules/armel-marvell/jffs2-modules b/installer/armel/modules/armel-marvell/jffs2-modules new file mode 100644 index 00000000000..245c7d8a520 --- /dev/null +++ b/installer/armel/modules/armel-marvell/jffs2-modules @@ -0,0 +1 @@ +#include diff --git a/installer/armel/modules/armel-marvell/jfs-modules b/installer/armel/modules/armel-marvell/jfs-modules new file mode 100644 index 00000000000..7e4d912b952 --- /dev/null +++ b/installer/armel/modules/armel-marvell/jfs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/armel/modules/armel-marvell/kernel-image b/installer/armel/modules/armel-marvell/kernel-image new file mode 100644 index 00000000000..1d11b1921da --- /dev/null +++ b/installer/armel/modules/armel-marvell/kernel-image @@ -0,0 +1 @@ +#include diff --git a/installer/armel/modules/armel-marvell/leds-modules b/installer/armel/modules/armel-marvell/leds-modules new file mode 100644 index 00000000000..b18bac13fb2 --- /dev/null +++ b/installer/armel/modules/armel-marvell/leds-modules @@ -0,0 +1,2 @@ +leds-ns2 +leds-netxbig diff --git a/installer/armel/modules/armel-marvell/loop-modules b/installer/armel/modules/armel-marvell/loop-modules new file mode 100644 index 00000000000..c1c948fa331 --- /dev/null +++ b/installer/armel/modules/armel-marvell/loop-modules @@ -0,0 +1 @@ +#include diff --git a/installer/armel/modules/armel-marvell/md-modules b/installer/armel/modules/armel-marvell/md-modules new file mode 100644 index 00000000000..26115e10b80 --- /dev/null +++ b/installer/armel/modules/armel-marvell/md-modules @@ -0,0 +1 @@ +#include diff --git a/installer/armel/modules/armel-marvell/minix-modules b/installer/armel/modules/armel-marvell/minix-modules new file mode 100644 index 00000000000..82b9843720a --- /dev/null +++ b/installer/armel/modules/armel-marvell/minix-modules @@ -0,0 +1 @@ +#include diff --git a/installer/armel/modules/armel-marvell/mmc-modules b/installer/armel/modules/armel-marvell/mmc-modules new file mode 100644 index 00000000000..e8c7b46f522 --- /dev/null +++ b/installer/armel/modules/armel-marvell/mmc-modules @@ -0,0 +1,2 @@ +#include +mvsdio diff --git a/installer/armel/modules/armel-marvell/mouse-modules b/installer/armel/modules/armel-marvell/mouse-modules new file mode 100644 index 00000000000..15fcb00eaa0 --- /dev/null +++ b/installer/armel/modules/armel-marvell/mouse-modules @@ -0,0 +1 @@ +#include diff --git a/installer/armel/modules/armel-marvell/mtd-modules b/installer/armel/modules/armel-marvell/mtd-modules new file mode 100644 index 00000000000..2a064755fae --- /dev/null +++ b/installer/armel/modules/armel-marvell/mtd-modules @@ -0,0 +1,10 @@ +#include +m25p80 +cfi_probe +gen_probe +jedec_probe +nand +orion_nand +ofpart +mtdblock +physmap_of diff --git a/installer/armel/modules/armel-marvell/multipath-modules b/installer/armel/modules/armel-marvell/multipath-modules new file mode 100644 index 00000000000..a8b69b2537a --- /dev/null +++ b/installer/armel/modules/armel-marvell/multipath-modules @@ -0,0 +1 @@ +#include diff --git a/installer/armel/modules/armel-marvell/nbd-modules b/installer/armel/modules/armel-marvell/nbd-modules new file mode 100644 index 00000000000..3c9b3e5d426 --- /dev/null +++ b/installer/armel/modules/armel-marvell/nbd-modules @@ -0,0 +1 @@ +#include diff --git a/installer/armel/modules/armel-marvell/nic-modules b/installer/armel/modules/armel-marvell/nic-modules new file mode 100644 index 00000000000..1a2cdb1fc9f --- /dev/null +++ b/installer/armel/modules/armel-marvell/nic-modules @@ -0,0 +1,2 @@ +mv643xx_eth +mvmdio diff --git a/installer/armel/modules/armel-marvell/nic-shared-modules b/installer/armel/modules/armel-marvell/nic-shared-modules new file mode 100644 index 00000000000..e02d64f7143 --- /dev/null +++ b/installer/armel/modules/armel-marvell/nic-shared-modules @@ -0,0 +1,2 @@ +#include +of_mdio diff --git a/installer/armel/modules/armel-marvell/nic-usb-modules b/installer/armel/modules/armel-marvell/nic-usb-modules new file mode 100644 index 00000000000..c479669b477 --- /dev/null +++ b/installer/armel/modules/armel-marvell/nic-usb-modules @@ -0,0 +1 @@ +#include diff --git a/installer/armel/modules/armel-marvell/ppp-modules b/installer/armel/modules/armel-marvell/ppp-modules new file mode 100644 index 00000000000..f1ae9b3d15a --- /dev/null +++ b/installer/armel/modules/armel-marvell/ppp-modules @@ -0,0 +1,2 @@ +#include + diff --git a/installer/armel/modules/armel-marvell/sata-modules b/installer/armel/modules/armel-marvell/sata-modules new file mode 100644 index 00000000000..3adbfa16df8 --- /dev/null +++ b/installer/armel/modules/armel-marvell/sata-modules @@ -0,0 +1,2 @@ +ahci +sata_mv diff --git a/installer/armel/modules/armel-marvell/scsi-core-modules b/installer/armel/modules/armel-marvell/scsi-core-modules new file mode 100644 index 00000000000..dd65d661433 --- /dev/null +++ b/installer/armel/modules/armel-marvell/scsi-core-modules @@ -0,0 +1 @@ +#include diff --git a/installer/armel/modules/armel-marvell/squashfs-modules b/installer/armel/modules/armel-marvell/squashfs-modules new file mode 100644 index 00000000000..42d77887ad3 --- /dev/null +++ b/installer/armel/modules/armel-marvell/squashfs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/armel/modules/armel-marvell/udf-modules b/installer/armel/modules/armel-marvell/udf-modules new file mode 100644 index 00000000000..b90d7ee9b52 --- /dev/null +++ b/installer/armel/modules/armel-marvell/udf-modules @@ -0,0 +1 @@ +#include diff --git a/installer/armel/modules/armel-marvell/uinput-modules b/installer/armel/modules/armel-marvell/uinput-modules new file mode 100644 index 00000000000..58a83377944 --- /dev/null +++ b/installer/armel/modules/armel-marvell/uinput-modules @@ -0,0 +1 @@ +#include diff --git a/installer/armel/modules/armel-marvell/usb-modules b/installer/armel/modules/armel-marvell/usb-modules new file mode 100644 index 00000000000..772c4afee3a --- /dev/null +++ b/installer/armel/modules/armel-marvell/usb-modules @@ -0,0 +1,2 @@ +#include +ehci-orion diff --git a/installer/armel/modules/armel-marvell/usb-serial-modules b/installer/armel/modules/armel-marvell/usb-serial-modules new file mode 100644 index 00000000000..c0a0dc3bd17 --- /dev/null +++ b/installer/armel/modules/armel-marvell/usb-serial-modules @@ -0,0 +1 @@ +#include diff --git a/installer/armel/modules/armel-marvell/usb-storage-modules b/installer/armel/modules/armel-marvell/usb-storage-modules new file mode 100644 index 00000000000..8c5e81b55e3 --- /dev/null +++ b/installer/armel/modules/armel-marvell/usb-storage-modules @@ -0,0 +1 @@ +#include diff --git a/installer/armel/modules/armel-marvell/zlib-modules b/installer/armel/modules/armel-marvell/zlib-modules new file mode 100644 index 00000000000..e02ad64bf9c --- /dev/null +++ b/installer/armel/modules/armel-marvell/zlib-modules @@ -0,0 +1 @@ +#include diff --git a/installer/armel/package-list b/installer/armel/package-list new file mode 100644 index 00000000000..d975323d3e2 --- /dev/null +++ b/installer/armel/package-list @@ -0,0 +1,11 @@ +# This file is used to build up the control file. The kernel version and +# "-di" are appended to the package names. Section can be left out. So can +# architecture, which is derived from the files in the modules directory. +# It overwrites specifications from /usr/share/kernel-wedge/package-list. +# +Package: kernel-image +Provides_marvell: rtc-modules +Provides_versatile: rtc-modules + +Package: fb-modules +Depends: kernel-image, usb-modules diff --git a/installer/armhf/kernel-versions b/installer/armhf/kernel-versions new file mode 100644 index 00000000000..c73dcc7a47c --- /dev/null +++ b/installer/armhf/kernel-versions @@ -0,0 +1,2 @@ +# arch version flavour installedname suffix build-depends +armhf - armmp - - - diff --git a/installer/armhf/modules/armhf-armmp/ata-modules b/installer/armhf/modules/armhf-armmp/ata-modules new file mode 100644 index 00000000000..04d9c88411a --- /dev/null +++ b/installer/armhf/modules/armhf-armmp/ata-modules @@ -0,0 +1 @@ +libata diff --git a/installer/armhf/modules/armhf-armmp/btrfs-modules b/installer/armhf/modules/armhf-armmp/btrfs-modules new file mode 100644 index 00000000000..e261e138838 --- /dev/null +++ b/installer/armhf/modules/armhf-armmp/btrfs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/armhf/modules/armhf-armmp/crc-modules b/installer/armhf/modules/armhf-armmp/crc-modules new file mode 100644 index 00000000000..7e00de705e4 --- /dev/null +++ b/installer/armhf/modules/armhf-armmp/crc-modules @@ -0,0 +1 @@ +#include diff --git a/installer/armhf/modules/armhf-armmp/crypto-dm-modules b/installer/armhf/modules/armhf-armmp/crypto-dm-modules new file mode 100644 index 00000000000..4c8f2354cd2 --- /dev/null +++ b/installer/armhf/modules/armhf-armmp/crypto-dm-modules @@ -0,0 +1 @@ +#include diff --git a/installer/armhf/modules/armhf-armmp/crypto-modules b/installer/armhf/modules/armhf-armmp/crypto-modules new file mode 100644 index 00000000000..3a1e862b4cc --- /dev/null +++ b/installer/armhf/modules/armhf-armmp/crypto-modules @@ -0,0 +1 @@ +#include diff --git a/installer/armhf/modules/armhf-armmp/efi-modules b/installer/armhf/modules/armhf-armmp/efi-modules new file mode 100644 index 00000000000..e1dc05e8f24 --- /dev/null +++ b/installer/armhf/modules/armhf-armmp/efi-modules @@ -0,0 +1 @@ +#include diff --git a/installer/armhf/modules/armhf-armmp/event-modules b/installer/armhf/modules/armhf-armmp/event-modules new file mode 100644 index 00000000000..f8819afd361 --- /dev/null +++ b/installer/armhf/modules/armhf-armmp/event-modules @@ -0,0 +1 @@ +#include diff --git a/installer/armhf/modules/armhf-armmp/ext4-modules b/installer/armhf/modules/armhf-armmp/ext4-modules new file mode 100644 index 00000000000..394c577ce40 --- /dev/null +++ b/installer/armhf/modules/armhf-armmp/ext4-modules @@ -0,0 +1 @@ +#include diff --git a/installer/armhf/modules/armhf-armmp/fat-modules b/installer/armhf/modules/armhf-armmp/fat-modules new file mode 100644 index 00000000000..274584eb65f --- /dev/null +++ b/installer/armhf/modules/armhf-armmp/fat-modules @@ -0,0 +1 @@ +#include diff --git a/installer/armhf/modules/armhf-armmp/fb-modules b/installer/armhf/modules/armhf-armmp/fb-modules new file mode 100644 index 00000000000..8ec57ab80a8 --- /dev/null +++ b/installer/armhf/modules/armhf-armmp/fb-modules @@ -0,0 +1,3 @@ +imxdrm +dw_hdmi-imx +tegra-drm diff --git a/installer/armhf/modules/armhf-armmp/fuse-modules b/installer/armhf/modules/armhf-armmp/fuse-modules new file mode 100644 index 00000000000..0b6ba0c8c8f --- /dev/null +++ b/installer/armhf/modules/armhf-armmp/fuse-modules @@ -0,0 +1 @@ +#include diff --git a/installer/armhf/modules/armhf-armmp/i2c-modules b/installer/armhf/modules/armhf-armmp/i2c-modules new file mode 100644 index 00000000000..9b4450eb8cb --- /dev/null +++ b/installer/armhf/modules/armhf-armmp/i2c-modules @@ -0,0 +1,4 @@ +#include +i2c-mv64xxx +i2c-rk3x + diff --git a/installer/armhf/modules/armhf-armmp/input-modules b/installer/armhf/modules/armhf-armmp/input-modules new file mode 100644 index 00000000000..5ecb595a4a4 --- /dev/null +++ b/installer/armhf/modules/armhf-armmp/input-modules @@ -0,0 +1 @@ +#include diff --git a/installer/armhf/modules/armhf-armmp/isofs-modules b/installer/armhf/modules/armhf-armmp/isofs-modules new file mode 100644 index 00000000000..da4fa9a3c77 --- /dev/null +++ b/installer/armhf/modules/armhf-armmp/isofs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/armhf/modules/armhf-armmp/jfs-modules b/installer/armhf/modules/armhf-armmp/jfs-modules new file mode 100644 index 00000000000..7e4d912b952 --- /dev/null +++ b/installer/armhf/modules/armhf-armmp/jfs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/armhf/modules/armhf-armmp/kernel-image b/installer/armhf/modules/armhf-armmp/kernel-image new file mode 100644 index 00000000000..0651d89dcca --- /dev/null +++ b/installer/armhf/modules/armhf-armmp/kernel-image @@ -0,0 +1,23 @@ +#include + +# Clocks +clk-palmas ? +clk-s2mps11 ? +clk-twl6040 ? + +# GPIO +gpio-da9052 ? +gpio-pca953x ? + +# PCIe PHYs +phy-omap-control ? +phy-ti-pipe3 ? + +# Regulators +drivers/regulator/** + +# Powersupply +axp20x_usb_power ? + +# Watchdog needed for reboot +sunxi_wdt ? diff --git a/installer/armhf/modules/armhf-armmp/leds-modules b/installer/armhf/modules/armhf-armmp/leds-modules new file mode 100644 index 00000000000..85d9f2565c1 --- /dev/null +++ b/installer/armhf/modules/armhf-armmp/leds-modules @@ -0,0 +1 @@ +#include diff --git a/installer/armhf/modules/armhf-armmp/loop-modules b/installer/armhf/modules/armhf-armmp/loop-modules new file mode 100644 index 00000000000..c1c948fa331 --- /dev/null +++ b/installer/armhf/modules/armhf-armmp/loop-modules @@ -0,0 +1 @@ +#include diff --git a/installer/armhf/modules/armhf-armmp/md-modules b/installer/armhf/modules/armhf-armmp/md-modules new file mode 100644 index 00000000000..26115e10b80 --- /dev/null +++ b/installer/armhf/modules/armhf-armmp/md-modules @@ -0,0 +1 @@ +#include diff --git a/installer/armhf/modules/armhf-armmp/mmc-modules b/installer/armhf/modules/armhf-armmp/mmc-modules new file mode 100644 index 00000000000..dadfd5334d6 --- /dev/null +++ b/installer/armhf/modules/armhf-armmp/mmc-modules @@ -0,0 +1 @@ +#include diff --git a/installer/armhf/modules/armhf-armmp/mtd-modules b/installer/armhf/modules/armhf-armmp/mtd-modules new file mode 100644 index 00000000000..7370cda4e6d --- /dev/null +++ b/installer/armhf/modules/armhf-armmp/mtd-modules @@ -0,0 +1,3 @@ +#include +mxc_nand +pxa3xx_nand diff --git a/installer/armhf/modules/armhf-armmp/multipath-modules b/installer/armhf/modules/armhf-armmp/multipath-modules new file mode 100644 index 00000000000..a8b69b2537a --- /dev/null +++ b/installer/armhf/modules/armhf-armmp/multipath-modules @@ -0,0 +1 @@ +#include diff --git a/installer/armhf/modules/armhf-armmp/nbd-modules b/installer/armhf/modules/armhf-armmp/nbd-modules new file mode 100644 index 00000000000..3c9b3e5d426 --- /dev/null +++ b/installer/armhf/modules/armhf-armmp/nbd-modules @@ -0,0 +1 @@ +#include diff --git a/installer/armhf/modules/armhf-armmp/nic-modules b/installer/armhf/modules/armhf-armmp/nic-modules new file mode 100644 index 00000000000..75a4eb93100 --- /dev/null +++ b/installer/armhf/modules/armhf-armmp/nic-modules @@ -0,0 +1,14 @@ +#include +mvneta +mvmdio +smsc911x +stmmac +stmmac-platform +dwmac-generic +dwmac-altr-socfpga +dwmac-sunxi +sun4i-emac +xgmac +ti_cpsw +davinci_mdio +davinci_cpdma diff --git a/installer/armhf/modules/armhf-armmp/nic-shared-modules b/installer/armhf/modules/armhf-armmp/nic-shared-modules new file mode 100644 index 00000000000..cc84b14dcd1 --- /dev/null +++ b/installer/armhf/modules/armhf-armmp/nic-shared-modules @@ -0,0 +1 @@ +#include diff --git a/installer/armhf/modules/armhf-armmp/nic-usb-modules b/installer/armhf/modules/armhf-armmp/nic-usb-modules new file mode 100644 index 00000000000..c479669b477 --- /dev/null +++ b/installer/armhf/modules/armhf-armmp/nic-usb-modules @@ -0,0 +1 @@ +#include diff --git a/installer/armhf/modules/armhf-armmp/nic-wireless-modules b/installer/armhf/modules/armhf-armmp/nic-wireless-modules new file mode 100644 index 00000000000..53fd18d7f4c --- /dev/null +++ b/installer/armhf/modules/armhf-armmp/nic-wireless-modules @@ -0,0 +1 @@ +#include diff --git a/installer/armhf/modules/armhf-armmp/pata-modules b/installer/armhf/modules/armhf-armmp/pata-modules new file mode 100644 index 00000000000..2ff7276d402 --- /dev/null +++ b/installer/armhf/modules/armhf-armmp/pata-modules @@ -0,0 +1 @@ +pata_imx diff --git a/installer/armhf/modules/armhf-armmp/ppp-modules b/installer/armhf/modules/armhf-armmp/ppp-modules new file mode 100644 index 00000000000..1f26aa1ee60 --- /dev/null +++ b/installer/armhf/modules/armhf-armmp/ppp-modules @@ -0,0 +1 @@ +#include diff --git a/installer/armhf/modules/armhf-armmp/sata-modules b/installer/armhf/modules/armhf-armmp/sata-modules new file mode 100644 index 00000000000..8e7e1ed2c5e --- /dev/null +++ b/installer/armhf/modules/armhf-armmp/sata-modules @@ -0,0 +1,5 @@ +#include +sata_highbank + +# SATA PHYs +phy-exynos5250-sata diff --git a/installer/armhf/modules/armhf-armmp/scsi-core-modules b/installer/armhf/modules/armhf-armmp/scsi-core-modules new file mode 100644 index 00000000000..dd65d661433 --- /dev/null +++ b/installer/armhf/modules/armhf-armmp/scsi-core-modules @@ -0,0 +1 @@ +#include diff --git a/installer/armhf/modules/armhf-armmp/scsi-modules b/installer/armhf/modules/armhf-armmp/scsi-modules new file mode 100644 index 00000000000..675462a141f --- /dev/null +++ b/installer/armhf/modules/armhf-armmp/scsi-modules @@ -0,0 +1,2 @@ +#include + diff --git a/installer/armhf/modules/armhf-armmp/squashfs-modules b/installer/armhf/modules/armhf-armmp/squashfs-modules new file mode 100644 index 00000000000..42d77887ad3 --- /dev/null +++ b/installer/armhf/modules/armhf-armmp/squashfs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/armhf/modules/armhf-armmp/udf-modules b/installer/armhf/modules/armhf-armmp/udf-modules new file mode 100644 index 00000000000..b90d7ee9b52 --- /dev/null +++ b/installer/armhf/modules/armhf-armmp/udf-modules @@ -0,0 +1 @@ +#include diff --git a/installer/armhf/modules/armhf-armmp/uinput-modules b/installer/armhf/modules/armhf-armmp/uinput-modules new file mode 100644 index 00000000000..58a83377944 --- /dev/null +++ b/installer/armhf/modules/armhf-armmp/uinput-modules @@ -0,0 +1 @@ +#include diff --git a/installer/armhf/modules/armhf-armmp/usb-modules b/installer/armhf/modules/armhf-armmp/usb-modules new file mode 100644 index 00000000000..5917b7f79ae --- /dev/null +++ b/installer/armhf/modules/armhf-armmp/usb-modules @@ -0,0 +1,4 @@ +#include +omap-ocp2scp +extcon-usb-gpio +usb3503 diff --git a/installer/armhf/modules/armhf-armmp/usb-storage-modules b/installer/armhf/modules/armhf-armmp/usb-storage-modules new file mode 100644 index 00000000000..8c5e81b55e3 --- /dev/null +++ b/installer/armhf/modules/armhf-armmp/usb-storage-modules @@ -0,0 +1 @@ +#include diff --git a/installer/armhf/modules/armhf-armmp/virtio-modules b/installer/armhf/modules/armhf-armmp/virtio-modules new file mode 100644 index 00000000000..61da39659c6 --- /dev/null +++ b/installer/armhf/modules/armhf-armmp/virtio-modules @@ -0,0 +1 @@ +#include diff --git a/installer/armhf/modules/armhf-armmp/zlib-modules b/installer/armhf/modules/armhf-armmp/zlib-modules new file mode 100644 index 00000000000..e02ad64bf9c --- /dev/null +++ b/installer/armhf/modules/armhf-armmp/zlib-modules @@ -0,0 +1 @@ +#include diff --git a/installer/armhf/package-list b/installer/armhf/package-list new file mode 100644 index 00000000000..bc7a587d1e8 --- /dev/null +++ b/installer/armhf/package-list @@ -0,0 +1,9 @@ +# This file is used to build up the control file. The kernel version and +# "-di" are appended to the package names. Section can be left out. So can +# architecture, which is derived from the files in the modules directory. +# It overwrites specifications from /usr/share/kernel-wedge/package-list. +# +Package: kernel-image + +Package: pata-modules +Priority: optional diff --git a/installer/hppa/kernel-versions b/installer/hppa/kernel-versions new file mode 100644 index 00000000000..e59e12c0a7a --- /dev/null +++ b/installer/hppa/kernel-versions @@ -0,0 +1,3 @@ +# arch version flavour installedname suffix build-depends +hppa - parisc - y - +hppa - parisc64-smp - y - diff --git a/installer/hppa/modules/hppa-parisc64-smp/ata-modules b/installer/hppa/modules/hppa-parisc64-smp/ata-modules new file mode 100644 index 00000000000..08f295ad210 --- /dev/null +++ b/installer/hppa/modules/hppa-parisc64-smp/ata-modules @@ -0,0 +1 @@ +#include "../hppa/ata-modules" diff --git a/installer/hppa/modules/hppa-parisc64-smp/btrfs-modules b/installer/hppa/modules/hppa-parisc64-smp/btrfs-modules new file mode 100644 index 00000000000..677b351f7b9 --- /dev/null +++ b/installer/hppa/modules/hppa-parisc64-smp/btrfs-modules @@ -0,0 +1 @@ +#include "../hppa/btrfs-modules" diff --git a/installer/hppa/modules/hppa-parisc64-smp/cdrom-core-modules b/installer/hppa/modules/hppa-parisc64-smp/cdrom-core-modules new file mode 100644 index 00000000000..9656269beb6 --- /dev/null +++ b/installer/hppa/modules/hppa-parisc64-smp/cdrom-core-modules @@ -0,0 +1 @@ +#include "../hppa/cdrom-core-modules" diff --git a/installer/hppa/modules/hppa-parisc64-smp/crc-modules b/installer/hppa/modules/hppa-parisc64-smp/crc-modules new file mode 100644 index 00000000000..f75e86b30df --- /dev/null +++ b/installer/hppa/modules/hppa-parisc64-smp/crc-modules @@ -0,0 +1 @@ +#include "../hppa/crc-modules" diff --git a/installer/hppa/modules/hppa-parisc64-smp/crypto-dm-modules b/installer/hppa/modules/hppa-parisc64-smp/crypto-dm-modules new file mode 100644 index 00000000000..ed740a5513f --- /dev/null +++ b/installer/hppa/modules/hppa-parisc64-smp/crypto-dm-modules @@ -0,0 +1 @@ +#include "../hppa/crypto-dm-modules" diff --git a/installer/hppa/modules/hppa-parisc64-smp/crypto-modules b/installer/hppa/modules/hppa-parisc64-smp/crypto-modules new file mode 100644 index 00000000000..1c4d2d0cf59 --- /dev/null +++ b/installer/hppa/modules/hppa-parisc64-smp/crypto-modules @@ -0,0 +1 @@ +#include "../hppa/crypto-modules" diff --git a/installer/hppa/modules/hppa-parisc64-smp/event-modules b/installer/hppa/modules/hppa-parisc64-smp/event-modules new file mode 100644 index 00000000000..1a5cbb04af9 --- /dev/null +++ b/installer/hppa/modules/hppa-parisc64-smp/event-modules @@ -0,0 +1 @@ +#include "../hppa/event-modules" diff --git a/installer/hppa/modules/hppa-parisc64-smp/ext4-modules b/installer/hppa/modules/hppa-parisc64-smp/ext4-modules new file mode 100644 index 00000000000..00920ace111 --- /dev/null +++ b/installer/hppa/modules/hppa-parisc64-smp/ext4-modules @@ -0,0 +1 @@ +#include "../hppa/ext4-modules" diff --git a/installer/hppa/modules/hppa-parisc64-smp/fat-modules b/installer/hppa/modules/hppa-parisc64-smp/fat-modules new file mode 100644 index 00000000000..ef6dd33ff50 --- /dev/null +++ b/installer/hppa/modules/hppa-parisc64-smp/fat-modules @@ -0,0 +1 @@ +#include "../hppa/fat-modules" diff --git a/installer/hppa/modules/hppa-parisc64-smp/fb-modules b/installer/hppa/modules/hppa-parisc64-smp/fb-modules new file mode 100644 index 00000000000..acaf53bbaa5 --- /dev/null +++ b/installer/hppa/modules/hppa-parisc64-smp/fb-modules @@ -0,0 +1,6 @@ +drm ? +drm_kms_helper ? +radeon ? +ttm ? + + diff --git a/installer/hppa/modules/hppa-parisc64-smp/fuse-modules b/installer/hppa/modules/hppa-parisc64-smp/fuse-modules new file mode 100644 index 00000000000..06f8ccf6317 --- /dev/null +++ b/installer/hppa/modules/hppa-parisc64-smp/fuse-modules @@ -0,0 +1 @@ +#include "../hppa/fuse-modules" diff --git a/installer/hppa/modules/hppa-parisc64-smp/input-modules b/installer/hppa/modules/hppa-parisc64-smp/input-modules new file mode 100644 index 00000000000..cdeaa30fed3 --- /dev/null +++ b/installer/hppa/modules/hppa-parisc64-smp/input-modules @@ -0,0 +1 @@ +#include "../hppa/input-modules" diff --git a/installer/hppa/modules/hppa-parisc64-smp/isofs-modules b/installer/hppa/modules/hppa-parisc64-smp/isofs-modules new file mode 100644 index 00000000000..9e8e2dfb1fa --- /dev/null +++ b/installer/hppa/modules/hppa-parisc64-smp/isofs-modules @@ -0,0 +1 @@ +#include "../hppa/isofs-modules" diff --git a/installer/hppa/modules/hppa-parisc64-smp/jfs-modules b/installer/hppa/modules/hppa-parisc64-smp/jfs-modules new file mode 100644 index 00000000000..a3b6beb7d3a --- /dev/null +++ b/installer/hppa/modules/hppa-parisc64-smp/jfs-modules @@ -0,0 +1 @@ +#include "../hppa/jfs-modules" diff --git a/installer/hppa/modules/hppa-parisc64-smp/kernel-image b/installer/hppa/modules/hppa-parisc64-smp/kernel-image new file mode 100644 index 00000000000..93d59f53981 --- /dev/null +++ b/installer/hppa/modules/hppa-parisc64-smp/kernel-image @@ -0,0 +1 @@ +#include "../hppa/kernel-image" diff --git a/installer/hppa/modules/hppa-parisc64-smp/loop-modules b/installer/hppa/modules/hppa-parisc64-smp/loop-modules new file mode 100644 index 00000000000..721ffecf45e --- /dev/null +++ b/installer/hppa/modules/hppa-parisc64-smp/loop-modules @@ -0,0 +1 @@ +#include "../hppa/loop-modules" diff --git a/installer/hppa/modules/hppa-parisc64-smp/md-modules b/installer/hppa/modules/hppa-parisc64-smp/md-modules new file mode 100644 index 00000000000..d7e97202280 --- /dev/null +++ b/installer/hppa/modules/hppa-parisc64-smp/md-modules @@ -0,0 +1 @@ +#include "../hppa/md-modules" diff --git a/installer/hppa/modules/hppa-parisc64-smp/mouse-modules b/installer/hppa/modules/hppa-parisc64-smp/mouse-modules new file mode 100644 index 00000000000..f9edf83b016 --- /dev/null +++ b/installer/hppa/modules/hppa-parisc64-smp/mouse-modules @@ -0,0 +1 @@ +#include "../hppa/mouse-modules" diff --git a/installer/hppa/modules/hppa-parisc64-smp/multipath-modules b/installer/hppa/modules/hppa-parisc64-smp/multipath-modules new file mode 100644 index 00000000000..46f68a37a48 --- /dev/null +++ b/installer/hppa/modules/hppa-parisc64-smp/multipath-modules @@ -0,0 +1 @@ +#include "../hppa/multipath-modules" diff --git a/installer/hppa/modules/hppa-parisc64-smp/nbd-modules b/installer/hppa/modules/hppa-parisc64-smp/nbd-modules new file mode 100644 index 00000000000..b4c4622c731 --- /dev/null +++ b/installer/hppa/modules/hppa-parisc64-smp/nbd-modules @@ -0,0 +1 @@ +#include "../hppa/nbd-modules" diff --git a/installer/hppa/modules/hppa-parisc64-smp/nic-modules b/installer/hppa/modules/hppa-parisc64-smp/nic-modules new file mode 100644 index 00000000000..e15b2d57390 --- /dev/null +++ b/installer/hppa/modules/hppa-parisc64-smp/nic-modules @@ -0,0 +1 @@ +#include "../hppa/nic-modules" diff --git a/installer/hppa/modules/hppa-parisc64-smp/nic-shared-modules b/installer/hppa/modules/hppa-parisc64-smp/nic-shared-modules new file mode 100644 index 00000000000..fd0b19c8071 --- /dev/null +++ b/installer/hppa/modules/hppa-parisc64-smp/nic-shared-modules @@ -0,0 +1 @@ +#include "../hppa/nic-shared-modules" diff --git a/installer/hppa/modules/hppa-parisc64-smp/nic-usb-modules b/installer/hppa/modules/hppa-parisc64-smp/nic-usb-modules new file mode 100644 index 00000000000..261192d2e87 --- /dev/null +++ b/installer/hppa/modules/hppa-parisc64-smp/nic-usb-modules @@ -0,0 +1 @@ +#include "../hppa/nic-usb-modules" diff --git a/installer/hppa/modules/hppa-parisc64-smp/pata-modules b/installer/hppa/modules/hppa-parisc64-smp/pata-modules new file mode 100644 index 00000000000..46bc71900e6 --- /dev/null +++ b/installer/hppa/modules/hppa-parisc64-smp/pata-modules @@ -0,0 +1 @@ +#include "../hppa/pata-modules" diff --git a/installer/hppa/modules/hppa-parisc64-smp/ppp-modules b/installer/hppa/modules/hppa-parisc64-smp/ppp-modules new file mode 100644 index 00000000000..b78085c3487 --- /dev/null +++ b/installer/hppa/modules/hppa-parisc64-smp/ppp-modules @@ -0,0 +1 @@ +#include "../hppa/ppp-modules" diff --git a/installer/hppa/modules/hppa-parisc64-smp/sata-modules b/installer/hppa/modules/hppa-parisc64-smp/sata-modules new file mode 100644 index 00000000000..a2ebc29835d --- /dev/null +++ b/installer/hppa/modules/hppa-parisc64-smp/sata-modules @@ -0,0 +1 @@ +#include "../hppa/sata-modules" diff --git a/installer/hppa/modules/hppa-parisc64-smp/scsi-core-modules b/installer/hppa/modules/hppa-parisc64-smp/scsi-core-modules new file mode 100644 index 00000000000..ff84a7089d9 --- /dev/null +++ b/installer/hppa/modules/hppa-parisc64-smp/scsi-core-modules @@ -0,0 +1 @@ +#include "../hppa/scsi-core-modules" diff --git a/installer/hppa/modules/hppa-parisc64-smp/scsi-modules b/installer/hppa/modules/hppa-parisc64-smp/scsi-modules new file mode 100644 index 00000000000..229e060a8f0 --- /dev/null +++ b/installer/hppa/modules/hppa-parisc64-smp/scsi-modules @@ -0,0 +1 @@ +#include "../hppa/scsi-modules" diff --git a/installer/hppa/modules/hppa-parisc64-smp/serial-modules b/installer/hppa/modules/hppa-parisc64-smp/serial-modules new file mode 100644 index 00000000000..a84a550e85b --- /dev/null +++ b/installer/hppa/modules/hppa-parisc64-smp/serial-modules @@ -0,0 +1 @@ +#include "../hppa/serial-modules" diff --git a/installer/hppa/modules/hppa-parisc64-smp/squashfs-modules b/installer/hppa/modules/hppa-parisc64-smp/squashfs-modules new file mode 100644 index 00000000000..f0c79aa4ee9 --- /dev/null +++ b/installer/hppa/modules/hppa-parisc64-smp/squashfs-modules @@ -0,0 +1 @@ +#include "../hppa/squashfs-modules" diff --git a/installer/hppa/modules/hppa-parisc64-smp/usb-modules b/installer/hppa/modules/hppa-parisc64-smp/usb-modules new file mode 100644 index 00000000000..df2abbbd9f3 --- /dev/null +++ b/installer/hppa/modules/hppa-parisc64-smp/usb-modules @@ -0,0 +1 @@ +#include "../hppa/usb-modules" diff --git a/installer/hppa/modules/hppa-parisc64-smp/usb-serial-modules b/installer/hppa/modules/hppa-parisc64-smp/usb-serial-modules new file mode 100644 index 00000000000..1dd05036f22 --- /dev/null +++ b/installer/hppa/modules/hppa-parisc64-smp/usb-serial-modules @@ -0,0 +1 @@ +#include "../hppa/usb-serial-modules" diff --git a/installer/hppa/modules/hppa-parisc64-smp/usb-storage-modules b/installer/hppa/modules/hppa-parisc64-smp/usb-storage-modules new file mode 100644 index 00000000000..5562ed4c879 --- /dev/null +++ b/installer/hppa/modules/hppa-parisc64-smp/usb-storage-modules @@ -0,0 +1 @@ +#include "../hppa/usb-storage-modules" diff --git a/installer/hppa/modules/hppa-parisc64-smp/virtio-modules b/installer/hppa/modules/hppa-parisc64-smp/virtio-modules new file mode 100644 index 00000000000..2f4e67a8a6a --- /dev/null +++ b/installer/hppa/modules/hppa-parisc64-smp/virtio-modules @@ -0,0 +1 @@ +#include "../hppa/virtio-modules" diff --git a/installer/hppa/modules/hppa-parisc64-smp/xfs-modules b/installer/hppa/modules/hppa-parisc64-smp/xfs-modules new file mode 100644 index 00000000000..7960e0bb2a6 --- /dev/null +++ b/installer/hppa/modules/hppa-parisc64-smp/xfs-modules @@ -0,0 +1 @@ +#include "../hppa/xfs-modules" diff --git a/installer/hppa/modules/hppa-parisc64-smp/zlib-modules b/installer/hppa/modules/hppa-parisc64-smp/zlib-modules new file mode 100644 index 00000000000..b3f829cf2dd --- /dev/null +++ b/installer/hppa/modules/hppa-parisc64-smp/zlib-modules @@ -0,0 +1 @@ +#include "../hppa/zlib-modules" diff --git a/installer/hppa/modules/hppa/ata-modules b/installer/hppa/modules/hppa/ata-modules new file mode 100644 index 00000000000..b81c0f38b74 --- /dev/null +++ b/installer/hppa/modules/hppa/ata-modules @@ -0,0 +1 @@ +#include diff --git a/installer/hppa/modules/hppa/btrfs-modules b/installer/hppa/modules/hppa/btrfs-modules new file mode 100644 index 00000000000..e261e138838 --- /dev/null +++ b/installer/hppa/modules/hppa/btrfs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/hppa/modules/hppa/cdrom-core-modules b/installer/hppa/modules/hppa/cdrom-core-modules new file mode 100644 index 00000000000..e264d7aa348 --- /dev/null +++ b/installer/hppa/modules/hppa/cdrom-core-modules @@ -0,0 +1,2 @@ +#include + diff --git a/installer/hppa/modules/hppa/crc-modules b/installer/hppa/modules/hppa/crc-modules new file mode 100644 index 00000000000..7e00de705e4 --- /dev/null +++ b/installer/hppa/modules/hppa/crc-modules @@ -0,0 +1 @@ +#include diff --git a/installer/hppa/modules/hppa/crypto-dm-modules b/installer/hppa/modules/hppa/crypto-dm-modules new file mode 100644 index 00000000000..4c8f2354cd2 --- /dev/null +++ b/installer/hppa/modules/hppa/crypto-dm-modules @@ -0,0 +1 @@ +#include diff --git a/installer/hppa/modules/hppa/crypto-modules b/installer/hppa/modules/hppa/crypto-modules new file mode 100644 index 00000000000..3a1e862b4cc --- /dev/null +++ b/installer/hppa/modules/hppa/crypto-modules @@ -0,0 +1 @@ +#include diff --git a/installer/hppa/modules/hppa/event-modules b/installer/hppa/modules/hppa/event-modules new file mode 100644 index 00000000000..f8819afd361 --- /dev/null +++ b/installer/hppa/modules/hppa/event-modules @@ -0,0 +1 @@ +#include diff --git a/installer/hppa/modules/hppa/ext4-modules b/installer/hppa/modules/hppa/ext4-modules new file mode 100644 index 00000000000..394c577ce40 --- /dev/null +++ b/installer/hppa/modules/hppa/ext4-modules @@ -0,0 +1 @@ +#include diff --git a/installer/hppa/modules/hppa/fat-modules b/installer/hppa/modules/hppa/fat-modules new file mode 100644 index 00000000000..cce8fd30ca4 --- /dev/null +++ b/installer/hppa/modules/hppa/fat-modules @@ -0,0 +1,2 @@ +#include + diff --git a/installer/hppa/modules/hppa/fuse-modules b/installer/hppa/modules/hppa/fuse-modules new file mode 100644 index 00000000000..0b6ba0c8c8f --- /dev/null +++ b/installer/hppa/modules/hppa/fuse-modules @@ -0,0 +1 @@ +#include diff --git a/installer/hppa/modules/hppa/input-modules b/installer/hppa/modules/hppa/input-modules new file mode 100644 index 00000000000..9d4cbf6fa7a --- /dev/null +++ b/installer/hppa/modules/hppa/input-modules @@ -0,0 +1,6 @@ +#include +hil_kbd ? +hilkbd ? +hp_sdc_mlc ? +hil_mlc ? +hp_sdc ? diff --git a/installer/hppa/modules/hppa/isofs-modules b/installer/hppa/modules/hppa/isofs-modules new file mode 100644 index 00000000000..da4fa9a3c77 --- /dev/null +++ b/installer/hppa/modules/hppa/isofs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/hppa/modules/hppa/jfs-modules b/installer/hppa/modules/hppa/jfs-modules new file mode 100644 index 00000000000..7e4d912b952 --- /dev/null +++ b/installer/hppa/modules/hppa/jfs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/hppa/modules/hppa/kernel-image b/installer/hppa/modules/hppa/kernel-image new file mode 100644 index 00000000000..1d11b1921da --- /dev/null +++ b/installer/hppa/modules/hppa/kernel-image @@ -0,0 +1 @@ +#include diff --git a/installer/hppa/modules/hppa/loop-modules b/installer/hppa/modules/hppa/loop-modules new file mode 100644 index 00000000000..16446771376 --- /dev/null +++ b/installer/hppa/modules/hppa/loop-modules @@ -0,0 +1,2 @@ +#include + diff --git a/installer/hppa/modules/hppa/md-modules b/installer/hppa/modules/hppa/md-modules new file mode 100644 index 00000000000..ade088ddbb2 --- /dev/null +++ b/installer/hppa/modules/hppa/md-modules @@ -0,0 +1,2 @@ +#include + diff --git a/installer/hppa/modules/hppa/mouse-modules b/installer/hppa/modules/hppa/mouse-modules new file mode 100644 index 00000000000..15fcb00eaa0 --- /dev/null +++ b/installer/hppa/modules/hppa/mouse-modules @@ -0,0 +1 @@ +#include diff --git a/installer/hppa/modules/hppa/multipath-modules b/installer/hppa/modules/hppa/multipath-modules new file mode 100644 index 00000000000..a8b69b2537a --- /dev/null +++ b/installer/hppa/modules/hppa/multipath-modules @@ -0,0 +1 @@ +#include diff --git a/installer/hppa/modules/hppa/nbd-modules b/installer/hppa/modules/hppa/nbd-modules new file mode 100644 index 00000000000..3c9b3e5d426 --- /dev/null +++ b/installer/hppa/modules/hppa/nbd-modules @@ -0,0 +1 @@ +#include diff --git a/installer/hppa/modules/hppa/nic-modules b/installer/hppa/modules/hppa/nic-modules new file mode 100644 index 00000000000..8a4b656c9ad --- /dev/null +++ b/installer/hppa/modules/hppa/nic-modules @@ -0,0 +1,4 @@ +lasi_82596 +tg3 +tulip +e1000 diff --git a/installer/hppa/modules/hppa/nic-shared-modules b/installer/hppa/modules/hppa/nic-shared-modules new file mode 100644 index 00000000000..cc84b14dcd1 --- /dev/null +++ b/installer/hppa/modules/hppa/nic-shared-modules @@ -0,0 +1 @@ +#include diff --git a/installer/hppa/modules/hppa/nic-usb-modules b/installer/hppa/modules/hppa/nic-usb-modules new file mode 100644 index 00000000000..c479669b477 --- /dev/null +++ b/installer/hppa/modules/hppa/nic-usb-modules @@ -0,0 +1 @@ +#include diff --git a/installer/hppa/modules/hppa/pata-modules b/installer/hppa/modules/hppa/pata-modules new file mode 100644 index 00000000000..8c4e514ae72 --- /dev/null +++ b/installer/hppa/modules/hppa/pata-modules @@ -0,0 +1,2 @@ +#include + diff --git a/installer/hppa/modules/hppa/ppp-modules b/installer/hppa/modules/hppa/ppp-modules new file mode 100644 index 00000000000..f1ae9b3d15a --- /dev/null +++ b/installer/hppa/modules/hppa/ppp-modules @@ -0,0 +1,2 @@ +#include + diff --git a/installer/hppa/modules/hppa/sata-modules b/installer/hppa/modules/hppa/sata-modules new file mode 100644 index 00000000000..071cb860bbc --- /dev/null +++ b/installer/hppa/modules/hppa/sata-modules @@ -0,0 +1,2 @@ +#include + diff --git a/installer/hppa/modules/hppa/scsi-core-modules b/installer/hppa/modules/hppa/scsi-core-modules new file mode 100644 index 00000000000..dd65d661433 --- /dev/null +++ b/installer/hppa/modules/hppa/scsi-core-modules @@ -0,0 +1 @@ +#include diff --git a/installer/hppa/modules/hppa/scsi-modules b/installer/hppa/modules/hppa/scsi-modules new file mode 100644 index 00000000000..43d9b0397d6 --- /dev/null +++ b/installer/hppa/modules/hppa/scsi-modules @@ -0,0 +1,19 @@ +aic79xx +aic7xxx +BusLogic ? +sym53c8xx +sym53c8xx_2 ? +53c700 +ch +lasi700 +osst +sg +st +zalon7xx +megaraid ? +megaraid_mbox ? +megaraid_mm ? +megaraid_sas ? +qlogicfas408 +mptbase +mptspi diff --git a/installer/hppa/modules/hppa/serial-modules b/installer/hppa/modules/hppa/serial-modules new file mode 100644 index 00000000000..6ab8b8c3551 --- /dev/null +++ b/installer/hppa/modules/hppa/serial-modules @@ -0,0 +1 @@ +#include diff --git a/installer/hppa/modules/hppa/squashfs-modules b/installer/hppa/modules/hppa/squashfs-modules new file mode 100644 index 00000000000..42d77887ad3 --- /dev/null +++ b/installer/hppa/modules/hppa/squashfs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/hppa/modules/hppa/usb-modules b/installer/hppa/modules/hppa/usb-modules new file mode 100644 index 00000000000..c598dedd811 --- /dev/null +++ b/installer/hppa/modules/hppa/usb-modules @@ -0,0 +1 @@ +#include diff --git a/installer/hppa/modules/hppa/usb-serial-modules b/installer/hppa/modules/hppa/usb-serial-modules new file mode 100644 index 00000000000..c0a0dc3bd17 --- /dev/null +++ b/installer/hppa/modules/hppa/usb-serial-modules @@ -0,0 +1 @@ +#include diff --git a/installer/hppa/modules/hppa/usb-storage-modules b/installer/hppa/modules/hppa/usb-storage-modules new file mode 100644 index 00000000000..272d95e2e8b --- /dev/null +++ b/installer/hppa/modules/hppa/usb-storage-modules @@ -0,0 +1,2 @@ +#include + diff --git a/installer/hppa/modules/hppa/virtio-modules b/installer/hppa/modules/hppa/virtio-modules new file mode 100644 index 00000000000..61da39659c6 --- /dev/null +++ b/installer/hppa/modules/hppa/virtio-modules @@ -0,0 +1 @@ +#include diff --git a/installer/hppa/modules/hppa/xfs-modules b/installer/hppa/modules/hppa/xfs-modules new file mode 100644 index 00000000000..98374e2bbaf --- /dev/null +++ b/installer/hppa/modules/hppa/xfs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/hppa/modules/hppa/zlib-modules b/installer/hppa/modules/hppa/zlib-modules new file mode 100644 index 00000000000..e02ad64bf9c --- /dev/null +++ b/installer/hppa/modules/hppa/zlib-modules @@ -0,0 +1 @@ +#include diff --git a/installer/hppa/package-list b/installer/hppa/package-list new file mode 100644 index 00000000000..ef7512943f0 --- /dev/null +++ b/installer/hppa/package-list @@ -0,0 +1,17 @@ +# This file is used to build up the control file. The kernel version and +# "-di" are appended to the package names. Section can be left out. So can +# architecture, which is derived from the files in the modules directory. +# It overwrites specifications from /usr/share/kernel-wedge/package-list. +# +Package: kernel-image +Provides_parisc64-smp: i2c-modules + +Package: usb-storage-modules +Depends: kernel-image, scsi-modules, usb-modules + +Package: pata-modules +Depends: kernel-image, ata-modules, scsi-core-modules + +Package: fb-modules +Depends: kernel-image +Priority: standard diff --git a/installer/i386/kernel-versions b/installer/i386/kernel-versions new file mode 100644 index 00000000000..c08de144429 --- /dev/null +++ b/installer/i386/kernel-versions @@ -0,0 +1,3 @@ +# arch version flavour installedname suffix build-depends +i386 - 686 - - - +i386 - 686-pae - - - diff --git a/installer/i386/modules/i386/acpi-modules b/installer/i386/modules/i386/acpi-modules new file mode 100644 index 00000000000..307528fb17e --- /dev/null +++ b/installer/i386/modules/i386/acpi-modules @@ -0,0 +1,2 @@ +#include + diff --git a/installer/i386/modules/i386/ata-modules b/installer/i386/modules/i386/ata-modules new file mode 100644 index 00000000000..9409e7cde81 --- /dev/null +++ b/installer/i386/modules/i386/ata-modules @@ -0,0 +1,2 @@ +#include + diff --git a/installer/i386/modules/i386/btrfs-modules b/installer/i386/modules/i386/btrfs-modules new file mode 100644 index 00000000000..e261e138838 --- /dev/null +++ b/installer/i386/modules/i386/btrfs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/i386/modules/i386/cdrom-core-modules b/installer/i386/modules/i386/cdrom-core-modules new file mode 100644 index 00000000000..e264d7aa348 --- /dev/null +++ b/installer/i386/modules/i386/cdrom-core-modules @@ -0,0 +1,2 @@ +#include + diff --git a/installer/i386/modules/i386/crc-modules b/installer/i386/modules/i386/crc-modules new file mode 100644 index 00000000000..7e00de705e4 --- /dev/null +++ b/installer/i386/modules/i386/crc-modules @@ -0,0 +1 @@ +#include diff --git a/installer/i386/modules/i386/crypto-dm-modules b/installer/i386/modules/i386/crypto-dm-modules new file mode 100644 index 00000000000..4c8f2354cd2 --- /dev/null +++ b/installer/i386/modules/i386/crypto-dm-modules @@ -0,0 +1 @@ +#include diff --git a/installer/i386/modules/i386/crypto-modules b/installer/i386/modules/i386/crypto-modules new file mode 100644 index 00000000000..3a1e862b4cc --- /dev/null +++ b/installer/i386/modules/i386/crypto-modules @@ -0,0 +1 @@ +#include diff --git a/installer/i386/modules/i386/efi-modules b/installer/i386/modules/i386/efi-modules new file mode 100644 index 00000000000..e1dc05e8f24 --- /dev/null +++ b/installer/i386/modules/i386/efi-modules @@ -0,0 +1 @@ +#include diff --git a/installer/i386/modules/i386/event-modules b/installer/i386/modules/i386/event-modules new file mode 100644 index 00000000000..f8819afd361 --- /dev/null +++ b/installer/i386/modules/i386/event-modules @@ -0,0 +1 @@ +#include diff --git a/installer/i386/modules/i386/ext4-modules b/installer/i386/modules/i386/ext4-modules new file mode 100644 index 00000000000..394c577ce40 --- /dev/null +++ b/installer/i386/modules/i386/ext4-modules @@ -0,0 +1 @@ +#include diff --git a/installer/i386/modules/i386/fat-modules b/installer/i386/modules/i386/fat-modules new file mode 100644 index 00000000000..cce8fd30ca4 --- /dev/null +++ b/installer/i386/modules/i386/fat-modules @@ -0,0 +1,2 @@ +#include + diff --git a/installer/i386/modules/i386/fb-modules b/installer/i386/modules/i386/fb-modules new file mode 100644 index 00000000000..b664dcb55a7 --- /dev/null +++ b/installer/i386/modules/i386/fb-modules @@ -0,0 +1,4 @@ +lxfb ? +vesafb ? +vga16fb +viafb diff --git a/installer/i386/modules/i386/firewire-core-modules b/installer/i386/modules/i386/firewire-core-modules new file mode 100644 index 00000000000..dcac80af965 --- /dev/null +++ b/installer/i386/modules/i386/firewire-core-modules @@ -0,0 +1 @@ +#include diff --git a/installer/i386/modules/i386/fuse-modules b/installer/i386/modules/i386/fuse-modules new file mode 100644 index 00000000000..0b6ba0c8c8f --- /dev/null +++ b/installer/i386/modules/i386/fuse-modules @@ -0,0 +1 @@ +#include diff --git a/installer/i386/modules/i386/hyperv-modules b/installer/i386/modules/i386/hyperv-modules new file mode 100644 index 00000000000..69fdd5d22a8 --- /dev/null +++ b/installer/i386/modules/i386/hyperv-modules @@ -0,0 +1 @@ +#include diff --git a/installer/i386/modules/i386/i2c-modules b/installer/i386/modules/i386/i2c-modules new file mode 100644 index 00000000000..203a607e73c --- /dev/null +++ b/installer/i386/modules/i386/i2c-modules @@ -0,0 +1 @@ +#include diff --git a/installer/i386/modules/i386/input-modules b/installer/i386/modules/i386/input-modules new file mode 100644 index 00000000000..cdba2e4a79c --- /dev/null +++ b/installer/i386/modules/i386/input-modules @@ -0,0 +1,5 @@ +#include +# Needed on some Geode LX boards - Alix2/3/6, Soekris net5501, Traverse GEOS +# so only built for 586 flavour +gpio_keys_polled ? +leds-gpio ? diff --git a/installer/i386/modules/i386/isofs-modules b/installer/i386/modules/i386/isofs-modules new file mode 100644 index 00000000000..da4fa9a3c77 --- /dev/null +++ b/installer/i386/modules/i386/isofs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/i386/modules/i386/jfs-modules b/installer/i386/modules/i386/jfs-modules new file mode 100644 index 00000000000..7e4d912b952 --- /dev/null +++ b/installer/i386/modules/i386/jfs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/i386/modules/i386/kernel-image b/installer/i386/modules/i386/kernel-image new file mode 100644 index 00000000000..1d11b1921da --- /dev/null +++ b/installer/i386/modules/i386/kernel-image @@ -0,0 +1 @@ +#include diff --git a/installer/i386/modules/i386/loop-modules b/installer/i386/modules/i386/loop-modules new file mode 100644 index 00000000000..16446771376 --- /dev/null +++ b/installer/i386/modules/i386/loop-modules @@ -0,0 +1,2 @@ +#include + diff --git a/installer/i386/modules/i386/md-modules b/installer/i386/modules/i386/md-modules new file mode 100644 index 00000000000..ade088ddbb2 --- /dev/null +++ b/installer/i386/modules/i386/md-modules @@ -0,0 +1,2 @@ +#include + diff --git a/installer/i386/modules/i386/mmc-core-modules b/installer/i386/modules/i386/mmc-core-modules new file mode 100644 index 00000000000..7bf38465cf1 --- /dev/null +++ b/installer/i386/modules/i386/mmc-core-modules @@ -0,0 +1 @@ +#include diff --git a/installer/i386/modules/i386/mmc-modules b/installer/i386/modules/i386/mmc-modules new file mode 100644 index 00000000000..dadfd5334d6 --- /dev/null +++ b/installer/i386/modules/i386/mmc-modules @@ -0,0 +1 @@ +#include diff --git a/installer/i386/modules/i386/mouse-modules b/installer/i386/modules/i386/mouse-modules new file mode 100644 index 00000000000..15fcb00eaa0 --- /dev/null +++ b/installer/i386/modules/i386/mouse-modules @@ -0,0 +1 @@ +#include diff --git a/installer/i386/modules/i386/multipath-modules b/installer/i386/modules/i386/multipath-modules new file mode 100644 index 00000000000..a8b69b2537a --- /dev/null +++ b/installer/i386/modules/i386/multipath-modules @@ -0,0 +1 @@ +#include diff --git a/installer/i386/modules/i386/nbd-modules b/installer/i386/modules/i386/nbd-modules new file mode 100644 index 00000000000..3c9b3e5d426 --- /dev/null +++ b/installer/i386/modules/i386/nbd-modules @@ -0,0 +1 @@ +#include diff --git a/installer/i386/modules/i386/nic-modules b/installer/i386/modules/i386/nic-modules new file mode 100644 index 00000000000..2512e83950d --- /dev/null +++ b/installer/i386/modules/i386/nic-modules @@ -0,0 +1 @@ +#include diff --git a/installer/i386/modules/i386/nic-pcmcia-modules b/installer/i386/modules/i386/nic-pcmcia-modules new file mode 100644 index 00000000000..7a0702cd558 --- /dev/null +++ b/installer/i386/modules/i386/nic-pcmcia-modules @@ -0,0 +1 @@ +#include diff --git a/installer/i386/modules/i386/nic-shared-modules b/installer/i386/modules/i386/nic-shared-modules new file mode 100644 index 00000000000..cc84b14dcd1 --- /dev/null +++ b/installer/i386/modules/i386/nic-shared-modules @@ -0,0 +1 @@ +#include diff --git a/installer/i386/modules/i386/nic-usb-modules b/installer/i386/modules/i386/nic-usb-modules new file mode 100644 index 00000000000..c479669b477 --- /dev/null +++ b/installer/i386/modules/i386/nic-usb-modules @@ -0,0 +1 @@ +#include diff --git a/installer/i386/modules/i386/nic-wireless-modules b/installer/i386/modules/i386/nic-wireless-modules new file mode 100644 index 00000000000..53fd18d7f4c --- /dev/null +++ b/installer/i386/modules/i386/nic-wireless-modules @@ -0,0 +1 @@ +#include diff --git a/installer/i386/modules/i386/ntfs-modules b/installer/i386/modules/i386/ntfs-modules new file mode 100644 index 00000000000..ac1bc6a9601 --- /dev/null +++ b/installer/i386/modules/i386/ntfs-modules @@ -0,0 +1 @@ +ntfs diff --git a/installer/i386/modules/i386/pata-modules b/installer/i386/modules/i386/pata-modules new file mode 100644 index 00000000000..8c4e514ae72 --- /dev/null +++ b/installer/i386/modules/i386/pata-modules @@ -0,0 +1,2 @@ +#include + diff --git a/installer/i386/modules/i386/pcmcia-modules b/installer/i386/modules/i386/pcmcia-modules new file mode 100644 index 00000000000..2bb5350fe14 --- /dev/null +++ b/installer/i386/modules/i386/pcmcia-modules @@ -0,0 +1 @@ +#include diff --git a/installer/i386/modules/i386/pcmcia-storage-modules b/installer/i386/modules/i386/pcmcia-storage-modules new file mode 100644 index 00000000000..f73ae5bb9b4 --- /dev/null +++ b/installer/i386/modules/i386/pcmcia-storage-modules @@ -0,0 +1 @@ +#include diff --git a/installer/i386/modules/i386/ppp-modules b/installer/i386/modules/i386/ppp-modules new file mode 100644 index 00000000000..f1ae9b3d15a --- /dev/null +++ b/installer/i386/modules/i386/ppp-modules @@ -0,0 +1,2 @@ +#include + diff --git a/installer/i386/modules/i386/sata-modules b/installer/i386/modules/i386/sata-modules new file mode 100644 index 00000000000..071cb860bbc --- /dev/null +++ b/installer/i386/modules/i386/sata-modules @@ -0,0 +1,2 @@ +#include + diff --git a/installer/i386/modules/i386/scsi-core-modules b/installer/i386/modules/i386/scsi-core-modules new file mode 100644 index 00000000000..778a022fa75 --- /dev/null +++ b/installer/i386/modules/i386/scsi-core-modules @@ -0,0 +1,4 @@ +#include + +# Needed by hv_storvsc in hyperv-modules as well as scsi-modules +scsi_transport_fc diff --git a/installer/i386/modules/i386/scsi-modules b/installer/i386/modules/i386/scsi-modules new file mode 100644 index 00000000000..8909dfb7948 --- /dev/null +++ b/installer/i386/modules/i386/scsi-modules @@ -0,0 +1 @@ +#include diff --git a/installer/i386/modules/i386/serial-modules b/installer/i386/modules/i386/serial-modules new file mode 100644 index 00000000000..6ab8b8c3551 --- /dev/null +++ b/installer/i386/modules/i386/serial-modules @@ -0,0 +1 @@ +#include diff --git a/installer/i386/modules/i386/sound-modules b/installer/i386/modules/i386/sound-modules new file mode 100644 index 00000000000..68395ab3d99 --- /dev/null +++ b/installer/i386/modules/i386/sound-modules @@ -0,0 +1 @@ +#include diff --git a/installer/i386/modules/i386/speakup-modules b/installer/i386/modules/i386/speakup-modules new file mode 100644 index 00000000000..29592721a7a --- /dev/null +++ b/installer/i386/modules/i386/speakup-modules @@ -0,0 +1 @@ +#include diff --git a/installer/i386/modules/i386/squashfs-modules b/installer/i386/modules/i386/squashfs-modules new file mode 100644 index 00000000000..42d77887ad3 --- /dev/null +++ b/installer/i386/modules/i386/squashfs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/i386/modules/i386/udf-modules b/installer/i386/modules/i386/udf-modules new file mode 100644 index 00000000000..b90d7ee9b52 --- /dev/null +++ b/installer/i386/modules/i386/udf-modules @@ -0,0 +1 @@ +#include diff --git a/installer/i386/modules/i386/uinput-modules b/installer/i386/modules/i386/uinput-modules new file mode 100644 index 00000000000..58a83377944 --- /dev/null +++ b/installer/i386/modules/i386/uinput-modules @@ -0,0 +1 @@ +#include diff --git a/installer/i386/modules/i386/usb-modules b/installer/i386/modules/i386/usb-modules new file mode 100644 index 00000000000..c598dedd811 --- /dev/null +++ b/installer/i386/modules/i386/usb-modules @@ -0,0 +1 @@ +#include diff --git a/installer/i386/modules/i386/usb-serial-modules b/installer/i386/modules/i386/usb-serial-modules new file mode 100644 index 00000000000..c0a0dc3bd17 --- /dev/null +++ b/installer/i386/modules/i386/usb-serial-modules @@ -0,0 +1 @@ +#include diff --git a/installer/i386/modules/i386/usb-storage-modules b/installer/i386/modules/i386/usb-storage-modules new file mode 100644 index 00000000000..272d95e2e8b --- /dev/null +++ b/installer/i386/modules/i386/usb-storage-modules @@ -0,0 +1,2 @@ +#include + diff --git a/installer/i386/modules/i386/virtio-modules b/installer/i386/modules/i386/virtio-modules new file mode 100644 index 00000000000..61da39659c6 --- /dev/null +++ b/installer/i386/modules/i386/virtio-modules @@ -0,0 +1 @@ +#include diff --git a/installer/i386/modules/i386/xfs-modules b/installer/i386/modules/i386/xfs-modules new file mode 100644 index 00000000000..c020b5d399f --- /dev/null +++ b/installer/i386/modules/i386/xfs-modules @@ -0,0 +1,2 @@ +#include + diff --git a/installer/i386/package-list b/installer/i386/package-list new file mode 100644 index 00000000000..b92d6959536 --- /dev/null +++ b/installer/i386/package-list @@ -0,0 +1,14 @@ +# This file is used to build up the control file. The kernel version and +# "-di" are appended to the package names. Section can be left out. So can +# architecture, which is derived from the files in the modules directory. +# It overwrites specifications from /usr/share/kernel-wedge/package-list. +# + +Package: kernel-image +Provides: rtc-modules, zlib-modules + +Package: fat-modules +Priority: standard + +Package: fb-modules +Depends: kernel-image, i2c-modules diff --git a/installer/m68k/kernel-versions b/installer/m68k/kernel-versions new file mode 100644 index 00000000000..ec5f9d3c471 --- /dev/null +++ b/installer/m68k/kernel-versions @@ -0,0 +1,2 @@ +# arch version flavour installedname suffix build-depends +m68k - m68k - y - diff --git a/installer/m68k/modules/m68k/affs-modules b/installer/m68k/modules/m68k/affs-modules new file mode 100644 index 00000000000..21d616a1cc9 --- /dev/null +++ b/installer/m68k/modules/m68k/affs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/m68k/modules/m68k/ata-modules b/installer/m68k/modules/m68k/ata-modules new file mode 100644 index 00000000000..04d9c88411a --- /dev/null +++ b/installer/m68k/modules/m68k/ata-modules @@ -0,0 +1 @@ +libata diff --git a/installer/m68k/modules/m68k/btrfs-modules b/installer/m68k/modules/m68k/btrfs-modules new file mode 100644 index 00000000000..e261e138838 --- /dev/null +++ b/installer/m68k/modules/m68k/btrfs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/m68k/modules/m68k/cdrom-core-modules b/installer/m68k/modules/m68k/cdrom-core-modules new file mode 100644 index 00000000000..71cccaeaab3 --- /dev/null +++ b/installer/m68k/modules/m68k/cdrom-core-modules @@ -0,0 +1,3 @@ +#include + +ide-cd_mod diff --git a/installer/m68k/modules/m68k/crc-modules b/installer/m68k/modules/m68k/crc-modules new file mode 100644 index 00000000000..7e00de705e4 --- /dev/null +++ b/installer/m68k/modules/m68k/crc-modules @@ -0,0 +1 @@ +#include diff --git a/installer/m68k/modules/m68k/crypto-modules b/installer/m68k/modules/m68k/crypto-modules new file mode 100644 index 00000000000..3a1e862b4cc --- /dev/null +++ b/installer/m68k/modules/m68k/crypto-modules @@ -0,0 +1 @@ +#include diff --git a/installer/m68k/modules/m68k/ext4-modules b/installer/m68k/modules/m68k/ext4-modules new file mode 100644 index 00000000000..394c577ce40 --- /dev/null +++ b/installer/m68k/modules/m68k/ext4-modules @@ -0,0 +1 @@ +#include diff --git a/installer/m68k/modules/m68k/fat-modules b/installer/m68k/modules/m68k/fat-modules new file mode 100644 index 00000000000..274584eb65f --- /dev/null +++ b/installer/m68k/modules/m68k/fat-modules @@ -0,0 +1 @@ +#include diff --git a/installer/m68k/modules/m68k/fuse-modules b/installer/m68k/modules/m68k/fuse-modules new file mode 100644 index 00000000000..0b6ba0c8c8f --- /dev/null +++ b/installer/m68k/modules/m68k/fuse-modules @@ -0,0 +1 @@ +#include diff --git a/installer/m68k/modules/m68k/hfs-modules b/installer/m68k/modules/m68k/hfs-modules new file mode 100644 index 00000000000..57d12f64921 --- /dev/null +++ b/installer/m68k/modules/m68k/hfs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/m68k/modules/m68k/ide-core-modules b/installer/m68k/modules/m68k/ide-core-modules new file mode 100644 index 00000000000..96284d15501 --- /dev/null +++ b/installer/m68k/modules/m68k/ide-core-modules @@ -0,0 +1 @@ +ide-core diff --git a/installer/m68k/modules/m68k/ide-modules b/installer/m68k/modules/m68k/ide-modules new file mode 100644 index 00000000000..b01a927557a --- /dev/null +++ b/installer/m68k/modules/m68k/ide-modules @@ -0,0 +1,6 @@ +buddha +falconide +gayle +ide-gd_mod +macide +q40ide diff --git a/installer/m68k/modules/m68k/isofs-modules b/installer/m68k/modules/m68k/isofs-modules new file mode 100644 index 00000000000..da4fa9a3c77 --- /dev/null +++ b/installer/m68k/modules/m68k/isofs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/m68k/modules/m68k/kernel-image b/installer/m68k/modules/m68k/kernel-image new file mode 100644 index 00000000000..1d11b1921da --- /dev/null +++ b/installer/m68k/modules/m68k/kernel-image @@ -0,0 +1 @@ +#include diff --git a/installer/m68k/modules/m68k/loop-modules b/installer/m68k/modules/m68k/loop-modules new file mode 100644 index 00000000000..c1c948fa331 --- /dev/null +++ b/installer/m68k/modules/m68k/loop-modules @@ -0,0 +1 @@ +#include diff --git a/installer/m68k/modules/m68k/md-modules b/installer/m68k/modules/m68k/md-modules new file mode 100644 index 00000000000..26115e10b80 --- /dev/null +++ b/installer/m68k/modules/m68k/md-modules @@ -0,0 +1 @@ +#include diff --git a/installer/m68k/modules/m68k/nbd-modules b/installer/m68k/modules/m68k/nbd-modules new file mode 100644 index 00000000000..3c9b3e5d426 --- /dev/null +++ b/installer/m68k/modules/m68k/nbd-modules @@ -0,0 +1 @@ +#include diff --git a/installer/m68k/modules/m68k/nic-modules b/installer/m68k/modules/m68k/nic-modules new file mode 100644 index 00000000000..d17bfb788bc --- /dev/null +++ b/installer/m68k/modules/m68k/nic-modules @@ -0,0 +1,15 @@ +#include + +a2065 ? +apne ? +ariadne ? +ariadne2 ? +atari_ethernec ? +atarilance ? +hydra ? +mac8390 ? +mac89x0 ? +macsonic ? +ne ? +smc91x ? +zorro8390 ? diff --git a/installer/m68k/modules/m68k/nic-shared-modules b/installer/m68k/modules/m68k/nic-shared-modules new file mode 100644 index 00000000000..cc84b14dcd1 --- /dev/null +++ b/installer/m68k/modules/m68k/nic-shared-modules @@ -0,0 +1 @@ +#include diff --git a/installer/m68k/modules/m68k/pata-modules b/installer/m68k/modules/m68k/pata-modules new file mode 100644 index 00000000000..b0cd6337a28 --- /dev/null +++ b/installer/m68k/modules/m68k/pata-modules @@ -0,0 +1 @@ +#include diff --git a/installer/m68k/modules/m68k/ppp-modules b/installer/m68k/modules/m68k/ppp-modules new file mode 100644 index 00000000000..1f26aa1ee60 --- /dev/null +++ b/installer/m68k/modules/m68k/ppp-modules @@ -0,0 +1 @@ +#include diff --git a/installer/m68k/modules/m68k/scsi-core-modules b/installer/m68k/modules/m68k/scsi-core-modules new file mode 100644 index 00000000000..dd65d661433 --- /dev/null +++ b/installer/m68k/modules/m68k/scsi-core-modules @@ -0,0 +1 @@ +#include diff --git a/installer/m68k/modules/m68k/scsi-modules b/installer/m68k/modules/m68k/scsi-modules new file mode 100644 index 00000000000..8717c1907a3 --- /dev/null +++ b/installer/m68k/modules/m68k/scsi-modules @@ -0,0 +1,12 @@ +sg + +a2091 +a3000 +a4000t +atari_scsi +bvme6000_scsi +gvp11 +mac_esp +mac_scsi +mvme16x_scsi +zorro7xx diff --git a/installer/m68k/modules/m68k/squashfs-modules b/installer/m68k/modules/m68k/squashfs-modules new file mode 100644 index 00000000000..42d77887ad3 --- /dev/null +++ b/installer/m68k/modules/m68k/squashfs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/m68k/modules/m68k/udf-modules b/installer/m68k/modules/m68k/udf-modules new file mode 100644 index 00000000000..b90d7ee9b52 --- /dev/null +++ b/installer/m68k/modules/m68k/udf-modules @@ -0,0 +1 @@ +#include diff --git a/installer/m68k/modules/m68k/zlib-modules b/installer/m68k/modules/m68k/zlib-modules new file mode 100644 index 00000000000..e02ad64bf9c --- /dev/null +++ b/installer/m68k/modules/m68k/zlib-modules @@ -0,0 +1 @@ +#include diff --git a/installer/m68k/package-list b/installer/m68k/package-list new file mode 100644 index 00000000000..fab89fd0c96 --- /dev/null +++ b/installer/m68k/package-list @@ -0,0 +1,21 @@ +# This file is used to build up the control file. The kernel version and +# "-di" are appended to the package names. Section can be left out. So can +# architecture, which is derived from the files in the modules directory. +# It overwrites specifications from /usr/share/kernel-wedge/package-list. +# + +Package: cdrom-core-modules +Depends: kernel-image, scsi-core-modules, ide-modules, isofs-modules + This package contains core CDROM support for the kernel. + +Package: ide-core-modules +Depends: kernel-image +Priority: standard +Description: IDE support + This package contains core IDE support for the kernel. + +Package: ide-modules +Depends: kernel-image, ide-core-modules +Priority: standard +Description: IDE drivers + This package contains IDE drivers for the kernel. diff --git a/installer/mips/kernel-versions b/installer/mips/kernel-versions new file mode 100644 index 00000000000..4bc557556d1 --- /dev/null +++ b/installer/mips/kernel-versions @@ -0,0 +1,3 @@ +# arch version flavour installedname suffix build-depends +mips - 4kc-malta - y - +mips - octeon - y - diff --git a/installer/mips/modules/mips-4kc-malta/affs-modules b/installer/mips/modules/mips-4kc-malta/affs-modules new file mode 100644 index 00000000000..21d616a1cc9 --- /dev/null +++ b/installer/mips/modules/mips-4kc-malta/affs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-4kc-malta/ata-modules b/installer/mips/modules/mips-4kc-malta/ata-modules new file mode 100644 index 00000000000..b81c0f38b74 --- /dev/null +++ b/installer/mips/modules/mips-4kc-malta/ata-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-4kc-malta/btrfs-modules b/installer/mips/modules/mips-4kc-malta/btrfs-modules new file mode 100644 index 00000000000..e261e138838 --- /dev/null +++ b/installer/mips/modules/mips-4kc-malta/btrfs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-4kc-malta/cdrom-core-modules b/installer/mips/modules/mips-4kc-malta/cdrom-core-modules new file mode 100644 index 00000000000..3ff69b48f4f --- /dev/null +++ b/installer/mips/modules/mips-4kc-malta/cdrom-core-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-4kc-malta/crc-modules b/installer/mips/modules/mips-4kc-malta/crc-modules new file mode 100644 index 00000000000..7e00de705e4 --- /dev/null +++ b/installer/mips/modules/mips-4kc-malta/crc-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-4kc-malta/crypto-dm-modules b/installer/mips/modules/mips-4kc-malta/crypto-dm-modules new file mode 100644 index 00000000000..4c8f2354cd2 --- /dev/null +++ b/installer/mips/modules/mips-4kc-malta/crypto-dm-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-4kc-malta/crypto-modules b/installer/mips/modules/mips-4kc-malta/crypto-modules new file mode 100644 index 00000000000..3a1e862b4cc --- /dev/null +++ b/installer/mips/modules/mips-4kc-malta/crypto-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-4kc-malta/event-modules b/installer/mips/modules/mips-4kc-malta/event-modules new file mode 100644 index 00000000000..f8819afd361 --- /dev/null +++ b/installer/mips/modules/mips-4kc-malta/event-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-4kc-malta/ext4-modules b/installer/mips/modules/mips-4kc-malta/ext4-modules new file mode 100644 index 00000000000..394c577ce40 --- /dev/null +++ b/installer/mips/modules/mips-4kc-malta/ext4-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-4kc-malta/fat-modules b/installer/mips/modules/mips-4kc-malta/fat-modules new file mode 100644 index 00000000000..274584eb65f --- /dev/null +++ b/installer/mips/modules/mips-4kc-malta/fat-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-4kc-malta/fuse-modules b/installer/mips/modules/mips-4kc-malta/fuse-modules new file mode 100644 index 00000000000..0b6ba0c8c8f --- /dev/null +++ b/installer/mips/modules/mips-4kc-malta/fuse-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-4kc-malta/hfs-modules b/installer/mips/modules/mips-4kc-malta/hfs-modules new file mode 100644 index 00000000000..57d12f64921 --- /dev/null +++ b/installer/mips/modules/mips-4kc-malta/hfs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-4kc-malta/i2c-modules b/installer/mips/modules/mips-4kc-malta/i2c-modules new file mode 100644 index 00000000000..203a607e73c --- /dev/null +++ b/installer/mips/modules/mips-4kc-malta/i2c-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-4kc-malta/input-modules b/installer/mips/modules/mips-4kc-malta/input-modules new file mode 100644 index 00000000000..5ecb595a4a4 --- /dev/null +++ b/installer/mips/modules/mips-4kc-malta/input-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-4kc-malta/isofs-modules b/installer/mips/modules/mips-4kc-malta/isofs-modules new file mode 100644 index 00000000000..da4fa9a3c77 --- /dev/null +++ b/installer/mips/modules/mips-4kc-malta/isofs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-4kc-malta/jfs-modules b/installer/mips/modules/mips-4kc-malta/jfs-modules new file mode 100644 index 00000000000..7e4d912b952 --- /dev/null +++ b/installer/mips/modules/mips-4kc-malta/jfs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-4kc-malta/kernel-image b/installer/mips/modules/mips-4kc-malta/kernel-image new file mode 100644 index 00000000000..1d11b1921da --- /dev/null +++ b/installer/mips/modules/mips-4kc-malta/kernel-image @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-4kc-malta/loop-modules b/installer/mips/modules/mips-4kc-malta/loop-modules new file mode 100644 index 00000000000..c1c948fa331 --- /dev/null +++ b/installer/mips/modules/mips-4kc-malta/loop-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-4kc-malta/md-modules b/installer/mips/modules/mips-4kc-malta/md-modules new file mode 100644 index 00000000000..26115e10b80 --- /dev/null +++ b/installer/mips/modules/mips-4kc-malta/md-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-4kc-malta/minix-modules b/installer/mips/modules/mips-4kc-malta/minix-modules new file mode 100644 index 00000000000..82b9843720a --- /dev/null +++ b/installer/mips/modules/mips-4kc-malta/minix-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-4kc-malta/mmc-core-modules b/installer/mips/modules/mips-4kc-malta/mmc-core-modules new file mode 100644 index 00000000000..7bf38465cf1 --- /dev/null +++ b/installer/mips/modules/mips-4kc-malta/mmc-core-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-4kc-malta/mmc-modules b/installer/mips/modules/mips-4kc-malta/mmc-modules new file mode 100644 index 00000000000..dadfd5334d6 --- /dev/null +++ b/installer/mips/modules/mips-4kc-malta/mmc-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-4kc-malta/mouse-modules b/installer/mips/modules/mips-4kc-malta/mouse-modules new file mode 100644 index 00000000000..15fcb00eaa0 --- /dev/null +++ b/installer/mips/modules/mips-4kc-malta/mouse-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-4kc-malta/multipath-modules b/installer/mips/modules/mips-4kc-malta/multipath-modules new file mode 100644 index 00000000000..a8b69b2537a --- /dev/null +++ b/installer/mips/modules/mips-4kc-malta/multipath-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-4kc-malta/nbd-modules b/installer/mips/modules/mips-4kc-malta/nbd-modules new file mode 100644 index 00000000000..3c9b3e5d426 --- /dev/null +++ b/installer/mips/modules/mips-4kc-malta/nbd-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-4kc-malta/nic-modules b/installer/mips/modules/mips-4kc-malta/nic-modules new file mode 100644 index 00000000000..44a607e904c --- /dev/null +++ b/installer/mips/modules/mips-4kc-malta/nic-modules @@ -0,0 +1,4 @@ +#include +skfp - +starfire - +winbond-840 - diff --git a/installer/mips/modules/mips-4kc-malta/nic-shared-modules b/installer/mips/modules/mips-4kc-malta/nic-shared-modules new file mode 100644 index 00000000000..cc84b14dcd1 --- /dev/null +++ b/installer/mips/modules/mips-4kc-malta/nic-shared-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-4kc-malta/nic-usb-modules b/installer/mips/modules/mips-4kc-malta/nic-usb-modules new file mode 100644 index 00000000000..c479669b477 --- /dev/null +++ b/installer/mips/modules/mips-4kc-malta/nic-usb-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-4kc-malta/nic-wireless-modules b/installer/mips/modules/mips-4kc-malta/nic-wireless-modules new file mode 100644 index 00000000000..53fd18d7f4c --- /dev/null +++ b/installer/mips/modules/mips-4kc-malta/nic-wireless-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-4kc-malta/ntfs-modules b/installer/mips/modules/mips-4kc-malta/ntfs-modules new file mode 100644 index 00000000000..ac1bc6a9601 --- /dev/null +++ b/installer/mips/modules/mips-4kc-malta/ntfs-modules @@ -0,0 +1 @@ +ntfs diff --git a/installer/mips/modules/mips-4kc-malta/pata-modules b/installer/mips/modules/mips-4kc-malta/pata-modules new file mode 100644 index 00000000000..b0cd6337a28 --- /dev/null +++ b/installer/mips/modules/mips-4kc-malta/pata-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-4kc-malta/ppp-modules b/installer/mips/modules/mips-4kc-malta/ppp-modules new file mode 100644 index 00000000000..1f26aa1ee60 --- /dev/null +++ b/installer/mips/modules/mips-4kc-malta/ppp-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-4kc-malta/qnx4-modules b/installer/mips/modules/mips-4kc-malta/qnx4-modules new file mode 100644 index 00000000000..cd0c96d414d --- /dev/null +++ b/installer/mips/modules/mips-4kc-malta/qnx4-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-4kc-malta/sata-modules b/installer/mips/modules/mips-4kc-malta/sata-modules new file mode 100644 index 00000000000..01318c258b5 --- /dev/null +++ b/installer/mips/modules/mips-4kc-malta/sata-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-4kc-malta/scsi-core-modules b/installer/mips/modules/mips-4kc-malta/scsi-core-modules new file mode 100644 index 00000000000..dd65d661433 --- /dev/null +++ b/installer/mips/modules/mips-4kc-malta/scsi-core-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-4kc-malta/scsi-modules b/installer/mips/modules/mips-4kc-malta/scsi-modules new file mode 100644 index 00000000000..8909dfb7948 --- /dev/null +++ b/installer/mips/modules/mips-4kc-malta/scsi-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-4kc-malta/sound-modules b/installer/mips/modules/mips-4kc-malta/sound-modules new file mode 100644 index 00000000000..68395ab3d99 --- /dev/null +++ b/installer/mips/modules/mips-4kc-malta/sound-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-4kc-malta/squashfs-modules b/installer/mips/modules/mips-4kc-malta/squashfs-modules new file mode 100644 index 00000000000..42d77887ad3 --- /dev/null +++ b/installer/mips/modules/mips-4kc-malta/squashfs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-4kc-malta/udf-modules b/installer/mips/modules/mips-4kc-malta/udf-modules new file mode 100644 index 00000000000..b90d7ee9b52 --- /dev/null +++ b/installer/mips/modules/mips-4kc-malta/udf-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-4kc-malta/usb-modules b/installer/mips/modules/mips-4kc-malta/usb-modules new file mode 100644 index 00000000000..c598dedd811 --- /dev/null +++ b/installer/mips/modules/mips-4kc-malta/usb-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-4kc-malta/usb-serial-modules b/installer/mips/modules/mips-4kc-malta/usb-serial-modules new file mode 100644 index 00000000000..c0a0dc3bd17 --- /dev/null +++ b/installer/mips/modules/mips-4kc-malta/usb-serial-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-4kc-malta/usb-storage-modules b/installer/mips/modules/mips-4kc-malta/usb-storage-modules new file mode 100644 index 00000000000..8c5e81b55e3 --- /dev/null +++ b/installer/mips/modules/mips-4kc-malta/usb-storage-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-4kc-malta/virtio-modules b/installer/mips/modules/mips-4kc-malta/virtio-modules new file mode 100644 index 00000000000..61da39659c6 --- /dev/null +++ b/installer/mips/modules/mips-4kc-malta/virtio-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-4kc-malta/xfs-modules b/installer/mips/modules/mips-4kc-malta/xfs-modules new file mode 100644 index 00000000000..98374e2bbaf --- /dev/null +++ b/installer/mips/modules/mips-4kc-malta/xfs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-4kc-malta/zlib-modules b/installer/mips/modules/mips-4kc-malta/zlib-modules new file mode 100644 index 00000000000..e02ad64bf9c --- /dev/null +++ b/installer/mips/modules/mips-4kc-malta/zlib-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-octeon/affs-modules b/installer/mips/modules/mips-octeon/affs-modules new file mode 100644 index 00000000000..21d616a1cc9 --- /dev/null +++ b/installer/mips/modules/mips-octeon/affs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-octeon/btrfs-modules b/installer/mips/modules/mips-octeon/btrfs-modules new file mode 100644 index 00000000000..e261e138838 --- /dev/null +++ b/installer/mips/modules/mips-octeon/btrfs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-octeon/cdrom-core-modules b/installer/mips/modules/mips-octeon/cdrom-core-modules new file mode 100644 index 00000000000..3ff69b48f4f --- /dev/null +++ b/installer/mips/modules/mips-octeon/cdrom-core-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-octeon/crc-modules b/installer/mips/modules/mips-octeon/crc-modules new file mode 100644 index 00000000000..7e00de705e4 --- /dev/null +++ b/installer/mips/modules/mips-octeon/crc-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-octeon/crypto-dm-modules b/installer/mips/modules/mips-octeon/crypto-dm-modules new file mode 100644 index 00000000000..4c8f2354cd2 --- /dev/null +++ b/installer/mips/modules/mips-octeon/crypto-dm-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-octeon/crypto-modules b/installer/mips/modules/mips-octeon/crypto-modules new file mode 100644 index 00000000000..3a1e862b4cc --- /dev/null +++ b/installer/mips/modules/mips-octeon/crypto-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-octeon/event-modules b/installer/mips/modules/mips-octeon/event-modules new file mode 100644 index 00000000000..f8819afd361 --- /dev/null +++ b/installer/mips/modules/mips-octeon/event-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-octeon/ext4-modules b/installer/mips/modules/mips-octeon/ext4-modules new file mode 100644 index 00000000000..394c577ce40 --- /dev/null +++ b/installer/mips/modules/mips-octeon/ext4-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-octeon/fat-modules b/installer/mips/modules/mips-octeon/fat-modules new file mode 100644 index 00000000000..274584eb65f --- /dev/null +++ b/installer/mips/modules/mips-octeon/fat-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-octeon/fuse-modules b/installer/mips/modules/mips-octeon/fuse-modules new file mode 100644 index 00000000000..0b6ba0c8c8f --- /dev/null +++ b/installer/mips/modules/mips-octeon/fuse-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-octeon/hfs-modules b/installer/mips/modules/mips-octeon/hfs-modules new file mode 100644 index 00000000000..57d12f64921 --- /dev/null +++ b/installer/mips/modules/mips-octeon/hfs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-octeon/input-modules b/installer/mips/modules/mips-octeon/input-modules new file mode 100644 index 00000000000..5ecb595a4a4 --- /dev/null +++ b/installer/mips/modules/mips-octeon/input-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-octeon/isofs-modules b/installer/mips/modules/mips-octeon/isofs-modules new file mode 100644 index 00000000000..da4fa9a3c77 --- /dev/null +++ b/installer/mips/modules/mips-octeon/isofs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-octeon/jfs-modules b/installer/mips/modules/mips-octeon/jfs-modules new file mode 100644 index 00000000000..7e4d912b952 --- /dev/null +++ b/installer/mips/modules/mips-octeon/jfs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-octeon/kernel-image b/installer/mips/modules/mips-octeon/kernel-image new file mode 100644 index 00000000000..1d11b1921da --- /dev/null +++ b/installer/mips/modules/mips-octeon/kernel-image @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-octeon/loop-modules b/installer/mips/modules/mips-octeon/loop-modules new file mode 100644 index 00000000000..c1c948fa331 --- /dev/null +++ b/installer/mips/modules/mips-octeon/loop-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-octeon/md-modules b/installer/mips/modules/mips-octeon/md-modules new file mode 100644 index 00000000000..26115e10b80 --- /dev/null +++ b/installer/mips/modules/mips-octeon/md-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-octeon/minix-modules b/installer/mips/modules/mips-octeon/minix-modules new file mode 100644 index 00000000000..82b9843720a --- /dev/null +++ b/installer/mips/modules/mips-octeon/minix-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-octeon/multipath-modules b/installer/mips/modules/mips-octeon/multipath-modules new file mode 100644 index 00000000000..a8b69b2537a --- /dev/null +++ b/installer/mips/modules/mips-octeon/multipath-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-octeon/nbd-modules b/installer/mips/modules/mips-octeon/nbd-modules new file mode 100644 index 00000000000..3c9b3e5d426 --- /dev/null +++ b/installer/mips/modules/mips-octeon/nbd-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-octeon/nic-modules b/installer/mips/modules/mips-octeon/nic-modules new file mode 100644 index 00000000000..3a2814f9ed0 --- /dev/null +++ b/installer/mips/modules/mips-octeon/nic-modules @@ -0,0 +1,15 @@ +#include +8139cp - +8139too - +dmfe - +e100 - +epic100 - +fealnx - +natsemi - +ne2k-pci - +skfp - +sundance - +starfire - +tulip - +typhoon - +winbond-840 - diff --git a/installer/mips/modules/mips-octeon/nic-shared-modules b/installer/mips/modules/mips-octeon/nic-shared-modules new file mode 100644 index 00000000000..cc84b14dcd1 --- /dev/null +++ b/installer/mips/modules/mips-octeon/nic-shared-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-octeon/nic-usb-modules b/installer/mips/modules/mips-octeon/nic-usb-modules new file mode 100644 index 00000000000..c479669b477 --- /dev/null +++ b/installer/mips/modules/mips-octeon/nic-usb-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-octeon/nic-wireless-modules b/installer/mips/modules/mips-octeon/nic-wireless-modules new file mode 100644 index 00000000000..53fd18d7f4c --- /dev/null +++ b/installer/mips/modules/mips-octeon/nic-wireless-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-octeon/ntfs-modules b/installer/mips/modules/mips-octeon/ntfs-modules new file mode 100644 index 00000000000..ac1bc6a9601 --- /dev/null +++ b/installer/mips/modules/mips-octeon/ntfs-modules @@ -0,0 +1 @@ +ntfs diff --git a/installer/mips/modules/mips-octeon/pata-modules b/installer/mips/modules/mips-octeon/pata-modules new file mode 100644 index 00000000000..b0cd6337a28 --- /dev/null +++ b/installer/mips/modules/mips-octeon/pata-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-octeon/ppp-modules b/installer/mips/modules/mips-octeon/ppp-modules new file mode 100644 index 00000000000..1f26aa1ee60 --- /dev/null +++ b/installer/mips/modules/mips-octeon/ppp-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-octeon/qnx4-modules b/installer/mips/modules/mips-octeon/qnx4-modules new file mode 100644 index 00000000000..cd0c96d414d --- /dev/null +++ b/installer/mips/modules/mips-octeon/qnx4-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-octeon/rtc-modules b/installer/mips/modules/mips-octeon/rtc-modules new file mode 100644 index 00000000000..e20e792f206 --- /dev/null +++ b/installer/mips/modules/mips-octeon/rtc-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-octeon/sata-modules b/installer/mips/modules/mips-octeon/sata-modules new file mode 100644 index 00000000000..01318c258b5 --- /dev/null +++ b/installer/mips/modules/mips-octeon/sata-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-octeon/scsi-core-modules b/installer/mips/modules/mips-octeon/scsi-core-modules new file mode 100644 index 00000000000..dd65d661433 --- /dev/null +++ b/installer/mips/modules/mips-octeon/scsi-core-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-octeon/scsi-modules b/installer/mips/modules/mips-octeon/scsi-modules new file mode 100644 index 00000000000..b9ea5de6f00 --- /dev/null +++ b/installer/mips/modules/mips-octeon/scsi-modules @@ -0,0 +1,5 @@ +#include +DAC960 - +dmx3191d - +ips - +sym53c8xx - diff --git a/installer/mips/modules/mips-octeon/sound-modules b/installer/mips/modules/mips-octeon/sound-modules new file mode 100644 index 00000000000..68395ab3d99 --- /dev/null +++ b/installer/mips/modules/mips-octeon/sound-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-octeon/squashfs-modules b/installer/mips/modules/mips-octeon/squashfs-modules new file mode 100644 index 00000000000..42d77887ad3 --- /dev/null +++ b/installer/mips/modules/mips-octeon/squashfs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-octeon/udf-modules b/installer/mips/modules/mips-octeon/udf-modules new file mode 100644 index 00000000000..b90d7ee9b52 --- /dev/null +++ b/installer/mips/modules/mips-octeon/udf-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-octeon/usb-modules b/installer/mips/modules/mips-octeon/usb-modules new file mode 100644 index 00000000000..6c3464a6c30 --- /dev/null +++ b/installer/mips/modules/mips-octeon/usb-modules @@ -0,0 +1,2 @@ +#include +octeon-hcd diff --git a/installer/mips/modules/mips-octeon/usb-serial-modules b/installer/mips/modules/mips-octeon/usb-serial-modules new file mode 100644 index 00000000000..c0a0dc3bd17 --- /dev/null +++ b/installer/mips/modules/mips-octeon/usb-serial-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-octeon/usb-storage-modules b/installer/mips/modules/mips-octeon/usb-storage-modules new file mode 100644 index 00000000000..8c5e81b55e3 --- /dev/null +++ b/installer/mips/modules/mips-octeon/usb-storage-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-octeon/virtio-modules b/installer/mips/modules/mips-octeon/virtio-modules new file mode 100644 index 00000000000..61da39659c6 --- /dev/null +++ b/installer/mips/modules/mips-octeon/virtio-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-octeon/xfs-modules b/installer/mips/modules/mips-octeon/xfs-modules new file mode 100644 index 00000000000..98374e2bbaf --- /dev/null +++ b/installer/mips/modules/mips-octeon/xfs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips-octeon/zlib-modules b/installer/mips/modules/mips-octeon/zlib-modules new file mode 100644 index 00000000000..e02ad64bf9c --- /dev/null +++ b/installer/mips/modules/mips-octeon/zlib-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips/btrfs-modules b/installer/mips/modules/mips/btrfs-modules new file mode 100644 index 00000000000..e261e138838 --- /dev/null +++ b/installer/mips/modules/mips/btrfs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips/crc-modules b/installer/mips/modules/mips/crc-modules new file mode 100644 index 00000000000..7e00de705e4 --- /dev/null +++ b/installer/mips/modules/mips/crc-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips/crypto-dm-modules b/installer/mips/modules/mips/crypto-dm-modules new file mode 100644 index 00000000000..4c8f2354cd2 --- /dev/null +++ b/installer/mips/modules/mips/crypto-dm-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips/crypto-modules b/installer/mips/modules/mips/crypto-modules new file mode 100644 index 00000000000..3a1e862b4cc --- /dev/null +++ b/installer/mips/modules/mips/crypto-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips/ext4-modules b/installer/mips/modules/mips/ext4-modules new file mode 100644 index 00000000000..394c577ce40 --- /dev/null +++ b/installer/mips/modules/mips/ext4-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips/fuse-modules b/installer/mips/modules/mips/fuse-modules new file mode 100644 index 00000000000..0b6ba0c8c8f --- /dev/null +++ b/installer/mips/modules/mips/fuse-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips/isofs-modules b/installer/mips/modules/mips/isofs-modules new file mode 100644 index 00000000000..da4fa9a3c77 --- /dev/null +++ b/installer/mips/modules/mips/isofs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips/jfs-modules b/installer/mips/modules/mips/jfs-modules new file mode 100644 index 00000000000..925a43a9e2a --- /dev/null +++ b/installer/mips/modules/mips/jfs-modules @@ -0,0 +1,2 @@ +#include + diff --git a/installer/mips/modules/mips/kernel-image b/installer/mips/modules/mips/kernel-image new file mode 100644 index 00000000000..1d11b1921da --- /dev/null +++ b/installer/mips/modules/mips/kernel-image @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips/loop-modules b/installer/mips/modules/mips/loop-modules new file mode 100644 index 00000000000..16446771376 --- /dev/null +++ b/installer/mips/modules/mips/loop-modules @@ -0,0 +1,2 @@ +#include + diff --git a/installer/mips/modules/mips/md-modules b/installer/mips/modules/mips/md-modules new file mode 100644 index 00000000000..ade088ddbb2 --- /dev/null +++ b/installer/mips/modules/mips/md-modules @@ -0,0 +1,2 @@ +#include + diff --git a/installer/mips/modules/mips/multipath-modules b/installer/mips/modules/mips/multipath-modules new file mode 100644 index 00000000000..a8b69b2537a --- /dev/null +++ b/installer/mips/modules/mips/multipath-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips/nbd-modules b/installer/mips/modules/mips/nbd-modules new file mode 100644 index 00000000000..3c9b3e5d426 --- /dev/null +++ b/installer/mips/modules/mips/nbd-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips/nic-shared-modules b/installer/mips/modules/mips/nic-shared-modules new file mode 100644 index 00000000000..cc84b14dcd1 --- /dev/null +++ b/installer/mips/modules/mips/nic-shared-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips/squashfs-modules b/installer/mips/modules/mips/squashfs-modules new file mode 100644 index 00000000000..42d77887ad3 --- /dev/null +++ b/installer/mips/modules/mips/squashfs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips/udf-modules b/installer/mips/modules/mips/udf-modules new file mode 100644 index 00000000000..b90d7ee9b52 --- /dev/null +++ b/installer/mips/modules/mips/udf-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/modules/mips/xfs-modules b/installer/mips/modules/mips/xfs-modules new file mode 100644 index 00000000000..c020b5d399f --- /dev/null +++ b/installer/mips/modules/mips/xfs-modules @@ -0,0 +1,2 @@ +#include + diff --git a/installer/mips/modules/mips/zlib-modules b/installer/mips/modules/mips/zlib-modules new file mode 100644 index 00000000000..e02ad64bf9c --- /dev/null +++ b/installer/mips/modules/mips/zlib-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mips/package-list b/installer/mips/package-list new file mode 100644 index 00000000000..b7141bb2020 --- /dev/null +++ b/installer/mips/package-list @@ -0,0 +1,7 @@ +# This file is used to build up the control file. The kernel version and +# "-di" are appended to the package names. Section can be left out. So can +# architecture, which is derived from the files in the modules directory. +# It overwrites specifications from /usr/share/kernel-wedge/package-list. +# +Package: kernel-image +Provides: rtc-modules diff --git a/installer/mips64/kernel-versions b/installer/mips64/kernel-versions new file mode 100644 index 00000000000..24a6c52affe --- /dev/null +++ b/installer/mips64/kernel-versions @@ -0,0 +1,3 @@ +# arch version flavour installedname suffix build-depends +mips64 - 5kc-malta - y - +mips64 - octeon - y - diff --git a/installer/mips64/modules/mips64 b/installer/mips64/modules/mips64 new file mode 120000 index 00000000000..d3bf739f6b7 --- /dev/null +++ b/installer/mips64/modules/mips64 @@ -0,0 +1 @@ +../../mips/modules/mips \ No newline at end of file diff --git a/installer/mips64/modules/mips64-5kc-malta b/installer/mips64/modules/mips64-5kc-malta new file mode 120000 index 00000000000..84b512ec477 --- /dev/null +++ b/installer/mips64/modules/mips64-5kc-malta @@ -0,0 +1 @@ +../../mips/modules/mips-4kc-malta \ No newline at end of file diff --git a/installer/mips64/modules/mips64-octeon b/installer/mips64/modules/mips64-octeon new file mode 120000 index 00000000000..da584c69bbc --- /dev/null +++ b/installer/mips64/modules/mips64-octeon @@ -0,0 +1 @@ +../../mips/modules/mips-octeon \ No newline at end of file diff --git a/installer/mips64/package-list b/installer/mips64/package-list new file mode 100644 index 00000000000..b7141bb2020 --- /dev/null +++ b/installer/mips64/package-list @@ -0,0 +1,7 @@ +# This file is used to build up the control file. The kernel version and +# "-di" are appended to the package names. Section can be left out. So can +# architecture, which is derived from the files in the modules directory. +# It overwrites specifications from /usr/share/kernel-wedge/package-list. +# +Package: kernel-image +Provides: rtc-modules diff --git a/installer/mips64el/kernel-versions b/installer/mips64el/kernel-versions new file mode 100644 index 00000000000..7135f748041 --- /dev/null +++ b/installer/mips64el/kernel-versions @@ -0,0 +1,4 @@ +# arch version flavour installedname suffix build-depends +mips64el - 5kc-malta - y - +mips64el - loongson-3 - y - +mips64el - octeon - y - diff --git a/installer/mips64el/modules/mips64el-5kc-malta b/installer/mips64el/modules/mips64el-5kc-malta new file mode 120000 index 00000000000..84b512ec477 --- /dev/null +++ b/installer/mips64el/modules/mips64el-5kc-malta @@ -0,0 +1 @@ +../../mips/modules/mips-4kc-malta \ No newline at end of file diff --git a/installer/mips64el/modules/mips64el-loongson-3 b/installer/mips64el/modules/mips64el-loongson-3 new file mode 120000 index 00000000000..7f6e9670c78 --- /dev/null +++ b/installer/mips64el/modules/mips64el-loongson-3 @@ -0,0 +1 @@ +../../mipsel/modules/mipsel-loongson-3 \ No newline at end of file diff --git a/installer/mips64el/modules/mips64el-octeon b/installer/mips64el/modules/mips64el-octeon new file mode 120000 index 00000000000..da584c69bbc --- /dev/null +++ b/installer/mips64el/modules/mips64el-octeon @@ -0,0 +1 @@ +../../mips/modules/mips-octeon \ No newline at end of file diff --git a/installer/mips64el/package-list b/installer/mips64el/package-list new file mode 100644 index 00000000000..621363abeb8 --- /dev/null +++ b/installer/mips64el/package-list @@ -0,0 +1,8 @@ +# This file is used to build up the control file. The kernel version and +# "-di" are appended to the package names. Section can be left out. So can +# architecture, which is derived from the files in the modules directory. +# It overwrites specifications from /usr/share/kernel-wedge/package-list. +# +Package: kernel-image +Provides: rtc-modules +Provides_loongson-3: i2c-modules, rtc-modules diff --git a/installer/mips64r6/kernel-versions b/installer/mips64r6/kernel-versions new file mode 100644 index 00000000000..a4e378707e0 --- /dev/null +++ b/installer/mips64r6/kernel-versions @@ -0,0 +1,2 @@ +# arch version flavour installedname suffix build-depends +mips64r6 - mips64r6 - y - diff --git a/installer/mips64r6/modules/mips64r6 b/installer/mips64r6/modules/mips64r6 new file mode 120000 index 00000000000..d3bf739f6b7 --- /dev/null +++ b/installer/mips64r6/modules/mips64r6 @@ -0,0 +1 @@ +../../mips/modules/mips \ No newline at end of file diff --git a/installer/mips64r6/package-list b/installer/mips64r6/package-list new file mode 100644 index 00000000000..b7141bb2020 --- /dev/null +++ b/installer/mips64r6/package-list @@ -0,0 +1,7 @@ +# This file is used to build up the control file. The kernel version and +# "-di" are appended to the package names. Section can be left out. So can +# architecture, which is derived from the files in the modules directory. +# It overwrites specifications from /usr/share/kernel-wedge/package-list. +# +Package: kernel-image +Provides: rtc-modules diff --git a/installer/mips64r6el/kernel-versions b/installer/mips64r6el/kernel-versions new file mode 100644 index 00000000000..426e2badb42 --- /dev/null +++ b/installer/mips64r6el/kernel-versions @@ -0,0 +1,2 @@ +# arch version flavour installedname suffix build-depends +mips64r6el - mips64r6 - y - diff --git a/installer/mips64r6el/modules/mips64r6 b/installer/mips64r6el/modules/mips64r6 new file mode 120000 index 00000000000..d3bf739f6b7 --- /dev/null +++ b/installer/mips64r6el/modules/mips64r6 @@ -0,0 +1 @@ +../../mips/modules/mips \ No newline at end of file diff --git a/installer/mips64r6el/package-list b/installer/mips64r6el/package-list new file mode 100644 index 00000000000..b7141bb2020 --- /dev/null +++ b/installer/mips64r6el/package-list @@ -0,0 +1,7 @@ +# This file is used to build up the control file. The kernel version and +# "-di" are appended to the package names. Section can be left out. So can +# architecture, which is derived from the files in the modules directory. +# It overwrites specifications from /usr/share/kernel-wedge/package-list. +# +Package: kernel-image +Provides: rtc-modules diff --git a/installer/mipsel/kernel-versions b/installer/mipsel/kernel-versions new file mode 100644 index 00000000000..dcf35104bbd --- /dev/null +++ b/installer/mipsel/kernel-versions @@ -0,0 +1,4 @@ +# arch version flavour installedname suffix build-depends +mipsel - 4kc-malta - y - +mipsel - loongson-3 - y - +mipsel - octeon - y - diff --git a/installer/mipsel/modules/mipsel-4kc-malta b/installer/mipsel/modules/mipsel-4kc-malta new file mode 120000 index 00000000000..84b512ec477 --- /dev/null +++ b/installer/mipsel/modules/mipsel-4kc-malta @@ -0,0 +1 @@ +../../mips/modules/mips-4kc-malta \ No newline at end of file diff --git a/installer/mipsel/modules/mipsel-loongson-3/affs-modules b/installer/mipsel/modules/mipsel-loongson-3/affs-modules new file mode 100644 index 00000000000..21d616a1cc9 --- /dev/null +++ b/installer/mipsel/modules/mipsel-loongson-3/affs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mipsel/modules/mipsel-loongson-3/ata-modules b/installer/mipsel/modules/mipsel-loongson-3/ata-modules new file mode 100644 index 00000000000..b81c0f38b74 --- /dev/null +++ b/installer/mipsel/modules/mipsel-loongson-3/ata-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mipsel/modules/mipsel-loongson-3/btrfs-modules b/installer/mipsel/modules/mipsel-loongson-3/btrfs-modules new file mode 100644 index 00000000000..e261e138838 --- /dev/null +++ b/installer/mipsel/modules/mipsel-loongson-3/btrfs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mipsel/modules/mipsel-loongson-3/cdrom-core-modules b/installer/mipsel/modules/mipsel-loongson-3/cdrom-core-modules new file mode 100644 index 00000000000..3ff69b48f4f --- /dev/null +++ b/installer/mipsel/modules/mipsel-loongson-3/cdrom-core-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mipsel/modules/mipsel-loongson-3/crc-modules b/installer/mipsel/modules/mipsel-loongson-3/crc-modules new file mode 100644 index 00000000000..7e00de705e4 --- /dev/null +++ b/installer/mipsel/modules/mipsel-loongson-3/crc-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mipsel/modules/mipsel-loongson-3/crypto-dm-modules b/installer/mipsel/modules/mipsel-loongson-3/crypto-dm-modules new file mode 100644 index 00000000000..4c8f2354cd2 --- /dev/null +++ b/installer/mipsel/modules/mipsel-loongson-3/crypto-dm-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mipsel/modules/mipsel-loongson-3/crypto-modules b/installer/mipsel/modules/mipsel-loongson-3/crypto-modules new file mode 100644 index 00000000000..3a1e862b4cc --- /dev/null +++ b/installer/mipsel/modules/mipsel-loongson-3/crypto-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mipsel/modules/mipsel-loongson-3/event-modules b/installer/mipsel/modules/mipsel-loongson-3/event-modules new file mode 100644 index 00000000000..f8819afd361 --- /dev/null +++ b/installer/mipsel/modules/mipsel-loongson-3/event-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mipsel/modules/mipsel-loongson-3/ext4-modules b/installer/mipsel/modules/mipsel-loongson-3/ext4-modules new file mode 100644 index 00000000000..394c577ce40 --- /dev/null +++ b/installer/mipsel/modules/mipsel-loongson-3/ext4-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mipsel/modules/mipsel-loongson-3/fat-modules b/installer/mipsel/modules/mipsel-loongson-3/fat-modules new file mode 100644 index 00000000000..274584eb65f --- /dev/null +++ b/installer/mipsel/modules/mipsel-loongson-3/fat-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mipsel/modules/mipsel-loongson-3/fb-modules b/installer/mipsel/modules/mipsel-loongson-3/fb-modules new file mode 100644 index 00000000000..553c79c743a --- /dev/null +++ b/installer/mipsel/modules/mipsel-loongson-3/fb-modules @@ -0,0 +1 @@ +radeon diff --git a/installer/mipsel/modules/mipsel-loongson-3/firewire-core-modules b/installer/mipsel/modules/mipsel-loongson-3/firewire-core-modules new file mode 100644 index 00000000000..dcac80af965 --- /dev/null +++ b/installer/mipsel/modules/mipsel-loongson-3/firewire-core-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mipsel/modules/mipsel-loongson-3/fuse-modules b/installer/mipsel/modules/mipsel-loongson-3/fuse-modules new file mode 100644 index 00000000000..0b6ba0c8c8f --- /dev/null +++ b/installer/mipsel/modules/mipsel-loongson-3/fuse-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mipsel/modules/mipsel-loongson-3/hfs-modules b/installer/mipsel/modules/mipsel-loongson-3/hfs-modules new file mode 100644 index 00000000000..57d12f64921 --- /dev/null +++ b/installer/mipsel/modules/mipsel-loongson-3/hfs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mipsel/modules/mipsel-loongson-3/input-modules b/installer/mipsel/modules/mipsel-loongson-3/input-modules new file mode 100644 index 00000000000..5ecb595a4a4 --- /dev/null +++ b/installer/mipsel/modules/mipsel-loongson-3/input-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mipsel/modules/mipsel-loongson-3/isofs-modules b/installer/mipsel/modules/mipsel-loongson-3/isofs-modules new file mode 100644 index 00000000000..da4fa9a3c77 --- /dev/null +++ b/installer/mipsel/modules/mipsel-loongson-3/isofs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mipsel/modules/mipsel-loongson-3/jfs-modules b/installer/mipsel/modules/mipsel-loongson-3/jfs-modules new file mode 100644 index 00000000000..7e4d912b952 --- /dev/null +++ b/installer/mipsel/modules/mipsel-loongson-3/jfs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mipsel/modules/mipsel-loongson-3/kernel-image b/installer/mipsel/modules/mipsel-loongson-3/kernel-image new file mode 100644 index 00000000000..1d11b1921da --- /dev/null +++ b/installer/mipsel/modules/mipsel-loongson-3/kernel-image @@ -0,0 +1 @@ +#include diff --git a/installer/mipsel/modules/mipsel-loongson-3/loop-modules b/installer/mipsel/modules/mipsel-loongson-3/loop-modules new file mode 100644 index 00000000000..c1c948fa331 --- /dev/null +++ b/installer/mipsel/modules/mipsel-loongson-3/loop-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mipsel/modules/mipsel-loongson-3/md-modules b/installer/mipsel/modules/mipsel-loongson-3/md-modules new file mode 100644 index 00000000000..26115e10b80 --- /dev/null +++ b/installer/mipsel/modules/mipsel-loongson-3/md-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mipsel/modules/mipsel-loongson-3/minix-modules b/installer/mipsel/modules/mipsel-loongson-3/minix-modules new file mode 100644 index 00000000000..82b9843720a --- /dev/null +++ b/installer/mipsel/modules/mipsel-loongson-3/minix-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mipsel/modules/mipsel-loongson-3/multipath-modules b/installer/mipsel/modules/mipsel-loongson-3/multipath-modules new file mode 100644 index 00000000000..a8b69b2537a --- /dev/null +++ b/installer/mipsel/modules/mipsel-loongson-3/multipath-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mipsel/modules/mipsel-loongson-3/nbd-modules b/installer/mipsel/modules/mipsel-loongson-3/nbd-modules new file mode 100644 index 00000000000..3c9b3e5d426 --- /dev/null +++ b/installer/mipsel/modules/mipsel-loongson-3/nbd-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mipsel/modules/mipsel-loongson-3/nfs-modules b/installer/mipsel/modules/mipsel-loongson-3/nfs-modules new file mode 100644 index 00000000000..946fb8e4424 --- /dev/null +++ b/installer/mipsel/modules/mipsel-loongson-3/nfs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mipsel/modules/mipsel-loongson-3/nic-modules b/installer/mipsel/modules/mipsel-loongson-3/nic-modules new file mode 100644 index 00000000000..a2feefcfc5d --- /dev/null +++ b/installer/mipsel/modules/mipsel-loongson-3/nic-modules @@ -0,0 +1,11 @@ +#include +dmfe - +epic100 - +fealnx - +natsemi - +skfp - +starfire - +sundance - +tulip - +typhoon - +winbond-840 - diff --git a/installer/mipsel/modules/mipsel-loongson-3/nic-shared-modules b/installer/mipsel/modules/mipsel-loongson-3/nic-shared-modules new file mode 100644 index 00000000000..cc84b14dcd1 --- /dev/null +++ b/installer/mipsel/modules/mipsel-loongson-3/nic-shared-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mipsel/modules/mipsel-loongson-3/nic-usb-modules b/installer/mipsel/modules/mipsel-loongson-3/nic-usb-modules new file mode 100644 index 00000000000..c479669b477 --- /dev/null +++ b/installer/mipsel/modules/mipsel-loongson-3/nic-usb-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mipsel/modules/mipsel-loongson-3/nic-wireless-modules b/installer/mipsel/modules/mipsel-loongson-3/nic-wireless-modules new file mode 100644 index 00000000000..53fd18d7f4c --- /dev/null +++ b/installer/mipsel/modules/mipsel-loongson-3/nic-wireless-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mipsel/modules/mipsel-loongson-3/ntfs-modules b/installer/mipsel/modules/mipsel-loongson-3/ntfs-modules new file mode 100644 index 00000000000..ac1bc6a9601 --- /dev/null +++ b/installer/mipsel/modules/mipsel-loongson-3/ntfs-modules @@ -0,0 +1 @@ +ntfs diff --git a/installer/mipsel/modules/mipsel-loongson-3/pata-modules b/installer/mipsel/modules/mipsel-loongson-3/pata-modules new file mode 100644 index 00000000000..b0cd6337a28 --- /dev/null +++ b/installer/mipsel/modules/mipsel-loongson-3/pata-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mipsel/modules/mipsel-loongson-3/ppp-modules b/installer/mipsel/modules/mipsel-loongson-3/ppp-modules new file mode 100644 index 00000000000..1f26aa1ee60 --- /dev/null +++ b/installer/mipsel/modules/mipsel-loongson-3/ppp-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mipsel/modules/mipsel-loongson-3/qnx4-modules b/installer/mipsel/modules/mipsel-loongson-3/qnx4-modules new file mode 100644 index 00000000000..cd0c96d414d --- /dev/null +++ b/installer/mipsel/modules/mipsel-loongson-3/qnx4-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mipsel/modules/mipsel-loongson-3/sata-modules b/installer/mipsel/modules/mipsel-loongson-3/sata-modules new file mode 100644 index 00000000000..01318c258b5 --- /dev/null +++ b/installer/mipsel/modules/mipsel-loongson-3/sata-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mipsel/modules/mipsel-loongson-3/scsi-core-modules b/installer/mipsel/modules/mipsel-loongson-3/scsi-core-modules new file mode 100644 index 00000000000..dd65d661433 --- /dev/null +++ b/installer/mipsel/modules/mipsel-loongson-3/scsi-core-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mipsel/modules/mipsel-loongson-3/scsi-modules b/installer/mipsel/modules/mipsel-loongson-3/scsi-modules new file mode 100644 index 00000000000..b9ea5de6f00 --- /dev/null +++ b/installer/mipsel/modules/mipsel-loongson-3/scsi-modules @@ -0,0 +1,5 @@ +#include +DAC960 - +dmx3191d - +ips - +sym53c8xx - diff --git a/installer/mipsel/modules/mipsel-loongson-3/sound-modules b/installer/mipsel/modules/mipsel-loongson-3/sound-modules new file mode 100644 index 00000000000..68395ab3d99 --- /dev/null +++ b/installer/mipsel/modules/mipsel-loongson-3/sound-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mipsel/modules/mipsel-loongson-3/speakup-modules b/installer/mipsel/modules/mipsel-loongson-3/speakup-modules new file mode 100644 index 00000000000..29592721a7a --- /dev/null +++ b/installer/mipsel/modules/mipsel-loongson-3/speakup-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mipsel/modules/mipsel-loongson-3/squashfs-modules b/installer/mipsel/modules/mipsel-loongson-3/squashfs-modules new file mode 100644 index 00000000000..42d77887ad3 --- /dev/null +++ b/installer/mipsel/modules/mipsel-loongson-3/squashfs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mipsel/modules/mipsel-loongson-3/udf-modules b/installer/mipsel/modules/mipsel-loongson-3/udf-modules new file mode 100644 index 00000000000..b90d7ee9b52 --- /dev/null +++ b/installer/mipsel/modules/mipsel-loongson-3/udf-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mipsel/modules/mipsel-loongson-3/usb-modules b/installer/mipsel/modules/mipsel-loongson-3/usb-modules new file mode 100644 index 00000000000..c598dedd811 --- /dev/null +++ b/installer/mipsel/modules/mipsel-loongson-3/usb-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mipsel/modules/mipsel-loongson-3/usb-serial-modules b/installer/mipsel/modules/mipsel-loongson-3/usb-serial-modules new file mode 100644 index 00000000000..c0a0dc3bd17 --- /dev/null +++ b/installer/mipsel/modules/mipsel-loongson-3/usb-serial-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mipsel/modules/mipsel-loongson-3/usb-storage-modules b/installer/mipsel/modules/mipsel-loongson-3/usb-storage-modules new file mode 100644 index 00000000000..8c5e81b55e3 --- /dev/null +++ b/installer/mipsel/modules/mipsel-loongson-3/usb-storage-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mipsel/modules/mipsel-loongson-3/virtio-modules b/installer/mipsel/modules/mipsel-loongson-3/virtio-modules new file mode 100644 index 00000000000..61da39659c6 --- /dev/null +++ b/installer/mipsel/modules/mipsel-loongson-3/virtio-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mipsel/modules/mipsel-loongson-3/xfs-modules b/installer/mipsel/modules/mipsel-loongson-3/xfs-modules new file mode 100644 index 00000000000..98374e2bbaf --- /dev/null +++ b/installer/mipsel/modules/mipsel-loongson-3/xfs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mipsel/modules/mipsel-loongson-3/zlib-modules b/installer/mipsel/modules/mipsel-loongson-3/zlib-modules new file mode 100644 index 00000000000..e02ad64bf9c --- /dev/null +++ b/installer/mipsel/modules/mipsel-loongson-3/zlib-modules @@ -0,0 +1 @@ +#include diff --git a/installer/mipsel/modules/mipsel-octeon b/installer/mipsel/modules/mipsel-octeon new file mode 120000 index 00000000000..da584c69bbc --- /dev/null +++ b/installer/mipsel/modules/mipsel-octeon @@ -0,0 +1 @@ +../../mips/modules/mips-octeon \ No newline at end of file diff --git a/installer/mipsel/package-list b/installer/mipsel/package-list new file mode 100644 index 00000000000..621363abeb8 --- /dev/null +++ b/installer/mipsel/package-list @@ -0,0 +1,8 @@ +# This file is used to build up the control file. The kernel version and +# "-di" are appended to the package names. Section can be left out. So can +# architecture, which is derived from the files in the modules directory. +# It overwrites specifications from /usr/share/kernel-wedge/package-list. +# +Package: kernel-image +Provides: rtc-modules +Provides_loongson-3: i2c-modules, rtc-modules diff --git a/installer/mipsr6/kernel-versions b/installer/mipsr6/kernel-versions new file mode 100644 index 00000000000..db5d2d2ca07 --- /dev/null +++ b/installer/mipsr6/kernel-versions @@ -0,0 +1,2 @@ +# arch version flavour installedname suffix build-depends +mipsr6 - mips32r6 - y - diff --git a/installer/mipsr6/modules/mips32r6 b/installer/mipsr6/modules/mips32r6 new file mode 120000 index 00000000000..d3bf739f6b7 --- /dev/null +++ b/installer/mipsr6/modules/mips32r6 @@ -0,0 +1 @@ +../../mips/modules/mips \ No newline at end of file diff --git a/installer/mipsr6/package-list b/installer/mipsr6/package-list new file mode 100644 index 00000000000..b7141bb2020 --- /dev/null +++ b/installer/mipsr6/package-list @@ -0,0 +1,7 @@ +# This file is used to build up the control file. The kernel version and +# "-di" are appended to the package names. Section can be left out. So can +# architecture, which is derived from the files in the modules directory. +# It overwrites specifications from /usr/share/kernel-wedge/package-list. +# +Package: kernel-image +Provides: rtc-modules diff --git a/installer/mipsr6el/kernel-versions b/installer/mipsr6el/kernel-versions new file mode 100644 index 00000000000..330e1ed7be7 --- /dev/null +++ b/installer/mipsr6el/kernel-versions @@ -0,0 +1,2 @@ +# arch version flavour installedname suffix build-depends +mipsr6el - mips32r6 - y - diff --git a/installer/mipsr6el/modules/mips32r6 b/installer/mipsr6el/modules/mips32r6 new file mode 120000 index 00000000000..d3bf739f6b7 --- /dev/null +++ b/installer/mipsr6el/modules/mips32r6 @@ -0,0 +1 @@ +../../mips/modules/mips \ No newline at end of file diff --git a/installer/mipsr6el/package-list b/installer/mipsr6el/package-list new file mode 100644 index 00000000000..b7141bb2020 --- /dev/null +++ b/installer/mipsr6el/package-list @@ -0,0 +1,7 @@ +# This file is used to build up the control file. The kernel version and +# "-di" are appended to the package names. Section can be left out. So can +# architecture, which is derived from the files in the modules directory. +# It overwrites specifications from /usr/share/kernel-wedge/package-list. +# +Package: kernel-image +Provides: rtc-modules diff --git a/installer/modules/acpi-modules b/installer/modules/acpi-modules new file mode 100644 index 00000000000..d4723a10b54 --- /dev/null +++ b/installer/modules/acpi-modules @@ -0,0 +1,2 @@ +fan +thermal diff --git a/installer/modules/affs-modules b/installer/modules/affs-modules new file mode 100644 index 00000000000..ac282591109 --- /dev/null +++ b/installer/modules/affs-modules @@ -0,0 +1 @@ +affs diff --git a/installer/modules/ata-modules b/installer/modules/ata-modules new file mode 100644 index 00000000000..6ca33ce0a15 --- /dev/null +++ b/installer/modules/ata-modules @@ -0,0 +1,2 @@ +libata +ata_generic diff --git a/installer/modules/btrfs-modules b/installer/modules/btrfs-modules new file mode 100644 index 00000000000..00531f65421 --- /dev/null +++ b/installer/modules/btrfs-modules @@ -0,0 +1 @@ +btrfs diff --git a/installer/modules/cdrom-core-modules b/installer/modules/cdrom-core-modules new file mode 100644 index 00000000000..62e5e83a3be --- /dev/null +++ b/installer/modules/cdrom-core-modules @@ -0,0 +1,2 @@ +cdrom ? +sr_mod ? diff --git a/installer/modules/crc-modules b/installer/modules/crc-modules new file mode 100644 index 00000000000..5654d805224 --- /dev/null +++ b/installer/modules/crc-modules @@ -0,0 +1,5 @@ +crc-ccitt +libcrc32c +crc32c_generic +crc-itu-t +crc16 diff --git a/installer/modules/crypto-dm-modules b/installer/modules/crypto-dm-modules new file mode 100644 index 00000000000..189131fc1cf --- /dev/null +++ b/installer/modules/crypto-dm-modules @@ -0,0 +1 @@ +dm-crypt diff --git a/installer/modules/crypto-modules b/installer/modules/crypto-modules new file mode 100644 index 00000000000..40ee863b61f --- /dev/null +++ b/installer/modules/crypto-modules @@ -0,0 +1,9 @@ +aes_generic +blowfish_generic +twofish_generic +serpent_generic +sha256_generic +cbc ? +ccm +ctr +xts diff --git a/installer/modules/efi-modules b/installer/modules/efi-modules new file mode 100644 index 00000000000..63bedfc37a6 --- /dev/null +++ b/installer/modules/efi-modules @@ -0,0 +1,2 @@ +efivars +efivarfs diff --git a/installer/modules/event-modules b/installer/modules/event-modules new file mode 100644 index 00000000000..97a5e58aa9c --- /dev/null +++ b/installer/modules/event-modules @@ -0,0 +1 @@ +evdev diff --git a/installer/modules/ext4-modules b/installer/modules/ext4-modules new file mode 100644 index 00000000000..610034258b6 --- /dev/null +++ b/installer/modules/ext4-modules @@ -0,0 +1,2 @@ +ext4 +jbd2 diff --git a/installer/modules/fat-modules b/installer/modules/fat-modules new file mode 100644 index 00000000000..0498cf834d4 --- /dev/null +++ b/installer/modules/fat-modules @@ -0,0 +1,6 @@ +fat ? +vfat +# the default codepage for fat (as of 2.6.8) +nls_cp437 ? +# the default i/o character set for fat (as of 4.7.2-1) +nls_ascii ? diff --git a/installer/modules/firewire-core-modules b/installer/modules/firewire-core-modules new file mode 100644 index 00000000000..bcc31d50aa4 --- /dev/null +++ b/installer/modules/firewire-core-modules @@ -0,0 +1,3 @@ +firewire-core +firewire-ohci +firewire-sbp2 diff --git a/installer/modules/fuse-modules b/installer/modules/fuse-modules new file mode 100644 index 00000000000..a517c488f34 --- /dev/null +++ b/installer/modules/fuse-modules @@ -0,0 +1 @@ +fuse diff --git a/installer/modules/hfs-modules b/installer/modules/hfs-modules new file mode 100644 index 00000000000..4a311558e6f --- /dev/null +++ b/installer/modules/hfs-modules @@ -0,0 +1,2 @@ +hfs +hfsplus diff --git a/installer/modules/hyperv-modules b/installer/modules/hyperv-modules new file mode 100644 index 00000000000..4c7d2cdc4f9 --- /dev/null +++ b/installer/modules/hyperv-modules @@ -0,0 +1,7 @@ +# All Hyper-V paravirtual drivers +hid-hyperv +hv_netvsc +hv_storvsc +hv_utils +hv_vmbus +hyperv-keyboard diff --git a/installer/modules/i2c-modules b/installer/modules/i2c-modules new file mode 100644 index 00000000000..0c4999fa74e --- /dev/null +++ b/installer/modules/i2c-modules @@ -0,0 +1,3 @@ +i2c-core +i2c-algo-bit +i2c-designware-platform ? diff --git a/installer/modules/input-modules b/installer/modules/input-modules new file mode 100644 index 00000000000..3245d16eafc --- /dev/null +++ b/installer/modules/input-modules @@ -0,0 +1,39 @@ +# Include HID drivers by default +drivers/hid/** + +# Exclude hid-hyperv, packaged in hyperv-modules +hid-hyperv - + +# Exclude drivers for anything but keyboard and mouse/trackball/touchpad +drivers/hid/hid-*ff - +hid-dr - +hid-elecom - +hid-gyration - +hid-icade - +hid-lcpower - +hid-ntrig - +hid-petalynx - +hid-picolcd - +hid-pl - +hid-prodikeys - +hid-ps3remote - +hid-quanta - +drivers/hid/hid-roccat-ko* - +hid-roccat-pyra - +hid-saitek - +hid-sensor-hub - +hid-sony - +hid-tivo - +hid-twinhan - +hid-uclogic - +hid-wacom - +hid-waltop - +hid-wiimote - +hid-zydacron - +wacom - + +# Miscellaneous input drivers +synaptics_usb ? +wistron_btns ? +gpio_keys ? +soc_button_array ? diff --git a/installer/modules/ipv6-modules b/installer/modules/ipv6-modules new file mode 100644 index 00000000000..13ac34b44dd --- /dev/null +++ b/installer/modules/ipv6-modules @@ -0,0 +1 @@ +ipv6 diff --git a/installer/modules/isofs-modules b/installer/modules/isofs-modules new file mode 100644 index 00000000000..0f41779b756 --- /dev/null +++ b/installer/modules/isofs-modules @@ -0,0 +1 @@ +isofs diff --git a/installer/modules/jffs2-modules b/installer/modules/jffs2-modules new file mode 100644 index 00000000000..19f4e109485 --- /dev/null +++ b/installer/modules/jffs2-modules @@ -0,0 +1 @@ +jffs2 diff --git a/installer/modules/jfs-modules b/installer/modules/jfs-modules new file mode 100644 index 00000000000..aa604c46849 --- /dev/null +++ b/installer/modules/jfs-modules @@ -0,0 +1 @@ +jfs diff --git a/installer/modules/kernel-image b/installer/modules/kernel-image new file mode 100644 index 00000000000..334f1371768 --- /dev/null +++ b/installer/modules/kernel-image @@ -0,0 +1,10 @@ +af_packet +bitrev ? +eeprom_93cx6 ? +firmware_class +led-class ? +mbcache +mfd-core ? +nls_base +# Default I/O charset for most filesystems that do character conversion +nls_utf8 diff --git a/installer/modules/leds-modules b/installer/modules/leds-modules new file mode 100644 index 00000000000..fef2e5303cc --- /dev/null +++ b/installer/modules/leds-modules @@ -0,0 +1 @@ +leds-gpio diff --git a/installer/modules/loop-modules b/installer/modules/loop-modules new file mode 100644 index 00000000000..1ef2ddf24a4 --- /dev/null +++ b/installer/modules/loop-modules @@ -0,0 +1 @@ +loop diff --git a/installer/modules/lzo-modules b/installer/modules/lzo-modules new file mode 100644 index 00000000000..d1a158350f4 --- /dev/null +++ b/installer/modules/lzo-modules @@ -0,0 +1 @@ +lzo_compress diff --git a/installer/modules/md-modules b/installer/modules/md-modules new file mode 100644 index 00000000000..d4f710406d4 --- /dev/null +++ b/installer/modules/md-modules @@ -0,0 +1,16 @@ +linear +md-mod +dm-mod +multipath +raid0 +raid1 +raid456 +raid10 +dm-mirror +dm-raid +dm-snapshot +bcache + +# RAID-related libraries, also used by btrfs +raid6_pq +xor diff --git a/installer/modules/minix-modules b/installer/modules/minix-modules new file mode 100644 index 00000000000..aa6ca5db63d --- /dev/null +++ b/installer/modules/minix-modules @@ -0,0 +1 @@ +minix diff --git a/installer/modules/mmc-core-modules b/installer/modules/mmc-core-modules new file mode 100644 index 00000000000..67128eac000 --- /dev/null +++ b/installer/modules/mmc-core-modules @@ -0,0 +1 @@ +mmc_core diff --git a/installer/modules/mmc-modules b/installer/modules/mmc-modules new file mode 100644 index 00000000000..c7aa372bd73 --- /dev/null +++ b/installer/modules/mmc-modules @@ -0,0 +1,8 @@ +mmc_block +drivers/mmc/host/** + +# Multifunction card reader driver +tifm_7xx1 ? + +# Adds a dependency on pcmcia-modules +sdricoh_cs - diff --git a/installer/modules/mouse-modules b/installer/modules/mouse-modules new file mode 100644 index 00000000000..8d65ba4d894 --- /dev/null +++ b/installer/modules/mouse-modules @@ -0,0 +1 @@ +psmouse diff --git a/installer/modules/mtd-modules b/installer/modules/mtd-modules new file mode 100644 index 00000000000..637116fa493 --- /dev/null +++ b/installer/modules/mtd-modules @@ -0,0 +1,2 @@ +mtd +mtdblock diff --git a/installer/modules/multipath-modules b/installer/modules/multipath-modules new file mode 100644 index 00000000000..3b96ab99cc4 --- /dev/null +++ b/installer/modules/multipath-modules @@ -0,0 +1,3 @@ +dm-multipath +dm-round-robin +dm-service-time diff --git a/installer/modules/nbd-modules b/installer/modules/nbd-modules new file mode 100644 index 00000000000..cb3ca605f1e --- /dev/null +++ b/installer/modules/nbd-modules @@ -0,0 +1 @@ +nbd diff --git a/installer/modules/nfs-modules b/installer/modules/nfs-modules new file mode 100644 index 00000000000..a5bfd2ce6d3 --- /dev/null +++ b/installer/modules/nfs-modules @@ -0,0 +1,3 @@ +nfs +lockd +sunrpc diff --git a/installer/modules/nic-modules b/installer/modules/nic-modules new file mode 100644 index 00000000000..0c4b2fb0ca6 --- /dev/null +++ b/installer/modules/nic-modules @@ -0,0 +1,23 @@ +# Include Ethernet switch, controller and PHY drivers by default +drivers/net/dsa/** ? +drivers/net/ethernet/** +drivers/net/phy/* + +# Include paravirtual network drivers with minimal dependencies +vmxnet3 ? +xen-netfront ? + +# Include VLAN driver +8021q + +# Exclude drivers packaged in nic-pcmcia-modules +drivers/net/**_cs - +b44 - +xircom_cb - + +# Exclude libraries packaged in nic-{common,shared} modules +8390 - +libphy - + +# Exclude iSCSI drivers packaged in scsi-modules +cnic - diff --git a/installer/modules/nic-pcmcia-modules b/installer/modules/nic-pcmcia-modules new file mode 100644 index 00000000000..31c360d5a60 --- /dev/null +++ b/installer/modules/nic-pcmcia-modules @@ -0,0 +1,10 @@ +# Include PCMCIA Ethernet and wireless drivers by default +drivers/net/ethernet/**_cs +drivers/net/wireless/**_cs +b44 ? +hostap_plx ? +xircom_cb + +# Exclude drivers packaged in nic-wireless-modules +libertas_cs - +spectrum_cs - diff --git a/installer/modules/nic-shared-modules b/installer/modules/nic-shared-modules new file mode 100644 index 00000000000..c672dfbc134 --- /dev/null +++ b/installer/modules/nic-shared-modules @@ -0,0 +1,5 @@ +8390 ? +libphy ? +mii ? +pps_core ? +ptp ? diff --git a/installer/modules/nic-usb-modules b/installer/modules/nic-usb-modules new file mode 100644 index 00000000000..332e0151804 --- /dev/null +++ b/installer/modules/nic-usb-modules @@ -0,0 +1,15 @@ +# Include USB wired drivers by default +drivers/net/usb/* + +# Include rndis_wlan, which depends on rndis_host +rndis_wlan + +# Exclude wireless modem drivers which need extra configuration +cdc_mbim - +cdc-phonet - +hso - +huawei_cdc_ncm - +kalmia - +lg-vl600 - +qmi_wwan - +sierra_net - diff --git a/installer/modules/nic-wireless-modules b/installer/modules/nic-wireless-modules new file mode 100644 index 00000000000..104a3a1130d --- /dev/null +++ b/installer/modules/nic-wireless-modules @@ -0,0 +1,31 @@ +# Include wireless drivers by default +drivers/net/wireless/** + +# Include staging wireless drivers +prism2_usb ? +drivers/staging/rtl8** ? +vt6656_stage ? + +# Exclude drivers packaged in nic-pcmcia-modules +drivers/net/wireless/**_cs - +airo - +hostap_plx - + +# Don't separate these from their driver families +libertas_cs ? +spectrum_cs ? + +# Exclude drivers packaged in nic-usb-modules +rndis_wlan - + +# Exclude debug driver +mac80211_hwsim - + +# lib80211 encryption algorithms +lib80211_crypt_wep ? +lib80211_crypt_ccmp ? +lib80211_crypt_tkip ? + +# Crypto modules needed for ieee80211 WEP support +ecb ? +arc4 ? diff --git a/installer/modules/pata-modules b/installer/modules/pata-modules new file mode 100644 index 00000000000..1d963a18eda --- /dev/null +++ b/installer/modules/pata-modules @@ -0,0 +1,9 @@ +# Include PATA drivers by default +drivers/ata/pata_* + +# Exclude pata_sis, which goes in sata-modules as a dependency of sata_sis +pata_sis - + +# Exclude drivers packaged in pcmcia-storage-modules +pata_ninja32 - +pata_pcmcia - diff --git a/installer/modules/pcmcia-modules b/installer/modules/pcmcia-modules new file mode 100644 index 00000000000..ab5b4b234ce --- /dev/null +++ b/installer/modules/pcmcia-modules @@ -0,0 +1,8 @@ +pcmcia + +i82092 +i82365 ? +pcmcia_core +tcic ? +yenta_socket +pd6729 ? diff --git a/installer/modules/pcmcia-storage-modules b/installer/modules/pcmcia-storage-modules new file mode 100644 index 00000000000..b6b1721644c --- /dev/null +++ b/installer/modules/pcmcia-storage-modules @@ -0,0 +1,2 @@ +pata_ninja32 ? +pata_pcmcia ? diff --git a/installer/modules/ppp-modules b/installer/modules/ppp-modules new file mode 100644 index 00000000000..0dd77f0b592 --- /dev/null +++ b/installer/modules/ppp-modules @@ -0,0 +1,5 @@ +ppp_async ? +ppp_deflate +ppp_synctty ? +pppoe +pppox diff --git a/installer/modules/qnx4-modules b/installer/modules/qnx4-modules new file mode 100644 index 00000000000..05d4adc6271 --- /dev/null +++ b/installer/modules/qnx4-modules @@ -0,0 +1 @@ +qnx4 diff --git a/installer/modules/rtc-modules b/installer/modules/rtc-modules new file mode 100644 index 00000000000..0a78e785634 --- /dev/null +++ b/installer/modules/rtc-modules @@ -0,0 +1,2 @@ +rtc ? +rtc-cmos diff --git a/installer/modules/sata-modules b/installer/modules/sata-modules new file mode 100644 index 00000000000..da038b7396c --- /dev/null +++ b/installer/modules/sata-modules @@ -0,0 +1,13 @@ +# Include SATA drivers by default +drivers/ata/ahci* ? +drivers/ata/sata_* + +# sata-sis depends on pata-sis; avoid a dependency +pata_sis ? + +# Include more SATA drivers with unusual names +acard-ahci ? +ata_piix ? +sx8 ? +pdc_adma ? +mtip32xx ? diff --git a/installer/modules/scsi-core-modules b/installer/modules/scsi-core-modules new file mode 100644 index 00000000000..e0d1d8fca1e --- /dev/null +++ b/installer/modules/scsi-core-modules @@ -0,0 +1,4 @@ +scsi_mod +sd_mod +scsi_transport_sas ? +scsi_transport_spi ? diff --git a/installer/modules/scsi-modules b/installer/modules/scsi-modules new file mode 100644 index 00000000000..24f40995734 --- /dev/null +++ b/installer/modules/scsi-modules @@ -0,0 +1,52 @@ +# Include SCSI controller drivers by default +drivers/scsi/** +DAC960 ? +mptfc +mptsas +mptspi + +# Include iSCSI boot support +iscsi_ibft ? + +# Include Xen block driver even though it's not SCSI +xen-blkfront ? + +# Exclude hv_storvsc, packaged in hyperv-modules +hv_storvsc - + +# Exclude virtio_scsi, packaged in virtio-modules +virtio_scsi - + +# Exclude PCMCIA drivers, which depend on pcmcia-modules (FIXME) +drivers/scsi/pcmcia/* - + +# Exclude Chelsio iSCSI drivers, which depend on the corresponding Ethernet +# drivers in nic-modules (FIXME) +drivers/scsi/cxgbi/* - +cxgb3i - +cxgb4i - + +# Exclude enclosure driver +ses - + +# Exclude target drivers +tcm_qla2xxx - + +# Exclude common code packaged in {cdrom,scsi}-core-modules +scsi_mod - +sd_mod - +sr_mod - +scsi_transport_sas - +scsi_transport_spi - + +# Exclude any other common code that isn't pulled in by dependencies +drivers/scsi/device_handler/* - +drivers/scsi/lib** - +drivers/scsi/osd/* - +drivers/scsi/scsi_transport_* - +fcoe - +raid_class - +scsi_debug - + +# XXX not actually SCSI +nvme ? diff --git a/installer/modules/serial-modules b/installer/modules/serial-modules new file mode 100644 index 00000000000..e046330c1d0 --- /dev/null +++ b/installer/modules/serial-modules @@ -0,0 +1,3 @@ +rp2 ? +serial_cs +synclink_cs ? diff --git a/installer/modules/sound-modules b/installer/modules/sound-modules new file mode 100644 index 00000000000..7bd30ee8e55 --- /dev/null +++ b/installer/modules/sound-modules @@ -0,0 +1,15 @@ +# Include sound drivers by default +sound/** + +# Exclude any core/shared modules that aren't pulled in by dependencies +sound/core/** - +sound/drivers/** - +sound/i2c/** - + +# Exclude synthesiser drivers +snd-adlib - +sound/**-synth - + +# Exclude soft-modem drivers +sound/**-modem - +snd-intel8x0m - diff --git a/installer/modules/speakup-modules b/installer/modules/speakup-modules new file mode 100644 index 00000000000..16822b914bc --- /dev/null +++ b/installer/modules/speakup-modules @@ -0,0 +1,15 @@ +speakup +speakup_acntpc ? +speakup_acntsa +speakup_apollo +speakup_audptr +speakup_bns +speakup_decext +speakup_dectlk +speakup_dtlk ? +speakup_dummy +speakup_keypc ? +speakup_ltlk +speakup_soft +speakup_spkout +speakup_txprt diff --git a/installer/modules/squashfs-modules b/installer/modules/squashfs-modules new file mode 100644 index 00000000000..7c1157fa31e --- /dev/null +++ b/installer/modules/squashfs-modules @@ -0,0 +1 @@ +squashfs diff --git a/installer/modules/udf-modules b/installer/modules/udf-modules new file mode 100644 index 00000000000..97c604ff2f1 --- /dev/null +++ b/installer/modules/udf-modules @@ -0,0 +1 @@ +udf diff --git a/installer/modules/ufs-modules b/installer/modules/ufs-modules new file mode 100644 index 00000000000..19173e9aac3 --- /dev/null +++ b/installer/modules/ufs-modules @@ -0,0 +1 @@ +ufs diff --git a/installer/modules/uinput-modules b/installer/modules/uinput-modules new file mode 100644 index 00000000000..42bc0053c78 --- /dev/null +++ b/installer/modules/uinput-modules @@ -0,0 +1 @@ +uinput diff --git a/installer/modules/usb-modules b/installer/modules/usb-modules new file mode 100644 index 00000000000..68490ca76d4 --- /dev/null +++ b/installer/modules/usb-modules @@ -0,0 +1,21 @@ +# Include USB host and dual-role drivers by default +drivers/usb/host/** +drivers/usb/c67x00/* ? +drivers/usb/chipidea/* ? +drivers/usb/dwc2/* ? +drivers/usb/dwc3/* ? +drivers/usb/isp1760/* ? +drivers/usb/musb/* ? +drivers/usb/renesas_usbhs/* ? + +# Exclude some obscure host drivers +hwa-hc - +sl811_cs - +sl811-hcd - +u132-hcd - +whci-hcd - + +# Include USB PHY drivers by default +drivers/phy/phy-*-usb* ? +drivers/phy/*/phy-*-usb* ? +drivers/usb/phy/* ? diff --git a/installer/modules/usb-serial-modules b/installer/modules/usb-serial-modules new file mode 100644 index 00000000000..28f3aa76006 --- /dev/null +++ b/installer/modules/usb-serial-modules @@ -0,0 +1,28 @@ +# Include USB serial drivers by default +drivers/usb/serial/* + +# Exclude drivers that are useless for serial consoles +aircable - +cyberjack - +cypress_m8 - +empeg - +garmin_gps - +ipaq - +ipw - +ir-usb - +iuu_phoenix - +kobil_sct - +metro-usb - +navman - +omninet - +opticon - +option - +qcaux - +qcserial - +sierra - +symbolserial - +usb_debug - +usb_wwan - +visor - +wishbone-serial - +xsens_mt - diff --git a/installer/modules/usb-storage-modules b/installer/modules/usb-storage-modules new file mode 100644 index 00000000000..013c58cfc14 --- /dev/null +++ b/installer/modules/usb-storage-modules @@ -0,0 +1,2 @@ +# Include USB storage drivers by default +drivers/usb/storage/* diff --git a/installer/modules/virtio-modules b/installer/modules/virtio-modules new file mode 100644 index 00000000000..bb89475252e --- /dev/null +++ b/installer/modules/virtio-modules @@ -0,0 +1,9 @@ +virtio_net +virtio_blk +virtio_balloon +virtio_scsi +virtio_input + +# Some architectures do not have PCI bus +virtio_pci ? +virtio_mmio ? diff --git a/installer/modules/xfs-modules b/installer/modules/xfs-modules new file mode 100644 index 00000000000..7bd8fb2ac47 --- /dev/null +++ b/installer/modules/xfs-modules @@ -0,0 +1,2 @@ +# Not available currently on all kernel versions, so marked optional. +xfs ? diff --git a/installer/modules/zlib-modules b/installer/modules/zlib-modules new file mode 100644 index 00000000000..322c546d199 --- /dev/null +++ b/installer/modules/zlib-modules @@ -0,0 +1 @@ +zlib_deflate diff --git a/installer/package-list b/installer/package-list new file mode 100644 index 00000000000..a148a42cc01 --- /dev/null +++ b/installer/package-list @@ -0,0 +1,391 @@ +# This file is used to build up the control file. The kernel version and +# "-di" are appended to the package names. Section can be left out. So can +# architecture, which is derived from the files in the modules directory. +# +Package: kernel-image +Priority: standard +Description: Linux kernel image and core modules for the Debian installer + This package contains the kernel image and core modules for the Debian + installer boot images. It does _not_ provide a usable kernel for your full + Debian system. + +Package: nic-modules +Depends: kernel-image, nic-shared-modules, i2c-modules, crc-modules +Provides: nic-extra-modules +Priority: standard +Description: NIC drivers + This package contains Ethernet and some paravirtualised network drivers + for the kernel. + +Package: nic-wireless-modules +Depends: kernel-image, nic-shared-modules, usb-modules, mmc-modules, pcmcia-modules, crc-modules +Priority: standard +Description: Wireless NIC drivers + This package contains wireless NIC drivers for the kernel. + Includes crypto modules only needed for wireless (WEP, WPA). + +Package: nic-shared-modules +Depends: kernel-image +Priority: standard +Description: Shared NIC drivers + This package contains NIC drivers needed by combinations of nic-modules, + nic-pcmcia-modules, nic-usb-modules and nic-wireless-modules. + +Package: serial-modules +Depends: kernel-image, pcmcia-modules +Priority: optional +Description: Serial drivers + This package contains serial drivers for the kernel. + +Package: usb-serial-modules +Depends: kernel-image, usb-modules +Priority: optional +Description: USB serial drivers + This package contains USB serial drivers for the kernel. + +Package: ppp-modules +Depends: kernel-image, serial-modules, zlib-modules, crc-modules +Priority: optional +Description: PPP drivers + This package contains PPP drivers for the kernel. + +Package: pata-modules +Depends: kernel-image, ata-modules +Priority: standard +Description: PATA drivers + This package contains PATA drivers for the kernel. + +Package: cdrom-core-modules +Depends: kernel-image, scsi-core-modules, isofs-modules +Priority: standard +Description: CDROM support + This package contains core CDROM support for the kernel. + +Package: firewire-core-modules +Depends: kernel-image, scsi-core-modules, crc-modules +Priority: standard +Description: Core FireWire drivers + This package contains core FireWire drivers for the kernel. + +Package: scsi-core-modules +Depends: kernel-image +Priority: standard +Description: Core SCSI subsystem + This package contains the core SCSI subsystem for the kernel. + +Package: scsi-modules +Depends: kernel-image, scsi-core-modules, cdrom-core-modules, ata-modules +Priority: standard +Description: SCSI drivers + This package contains SCSI drivers for the kernel. + +Package: loop-modules +Depends: kernel-image +Priority: standard +Description: Loopback filesystem support + This package contains loopback filesystem support for the kernel. + +Package: ipv6-modules +Depends: kernel-image +Priority: optional +Description: IPv6 driver + This package contains the IPv6 driver for the kernel. + +Package: btrfs-modules +Depends: kernel-image, crc-modules, zlib-modules, lzo-modules, md-modules +Priority: optional +Description: BTRFS filesystem support + This package contains the BTRFS filesystem module for the kernel. + +Package: ext4-modules +Depends: kernel-image, crc-modules +Provides: ext2-modules, ext3-modules +Priority: standard +Description: ext2/ext3/ext4 filesystem support + This package contains the ext4 filesystem module for the kernel, which + also supports ext2 and ext3. + +Package: isofs-modules +Depends: kernel-image +Priority: standard +Description: ISOFS filesystem support + This package contains the ISOFS filesystem module for the kernel. + +Package: jffs2-modules +Depends: kernel-image, zlib-modules, lzo-modules +Priority: optional +Description: JFFS2 filesystem support + This package contains the JFFS2 filesystem module for the kernel. + +Package: jfs-modules +Depends: kernel-image +Priority: standard +Description: JFS filesystem support + This package contains the JFS filesystem module for the kernel. + +Package: ntfs-modules +Depends: kernel-image +Priority: optional +Description: NTFS filesystem support + This package contains the NTFS file system module for the kernel. + +Package: ufs-modules +Depends: kernel-image +Priority: optional +Description: UFS filesystem support + This package contains the UFS filesystem module for the kernel. + +Package: xfs-modules +Depends: kernel-image, crc-modules +Priority: standard +Description: XFS filesystem support + This package contains the XFS filesystem module for the kernel. + +Package: fat-modules +Depends: kernel-image +Priority: optional +Description: FAT filesystem support + This package contains the FAT and VFAT filesystem modules for the kernel. + +Package: hfs-modules +Depends: kernel-image +Priority: optional +Description: HFS filesystem support + This package contains the HFS and HFS+ filesystem modules for the kernel. + +Package: affs-modules +Depends: kernel-image +Priority: optional +Description: Amiga filesystem support + This package contains the Amiga filesystem module for the kernel. + +Package: minix-modules +Depends: kernel-image +Priority: optional +Description: Minix filesystem support + This package contains the Minix filesystem module for the kernel. + +Package: nfs-modules +Depends: kernel-image +Priority: optional +Description: NFS filesystem support + This package contains the NFS filesystem module for the kernel. + +Package: md-modules +Depends: kernel-image, crc-modules +Priority: optional +Description: RAID and LVM support + This package contains RAID and LVM modules for the kernel. + +Package: multipath-modules +Depends: kernel-image, md-modules, scsi-core-modules +Priority: optional +Description: Multipath support + This package contains DM-Multipath modules for the kernel. + +Package: usb-modules +Depends: kernel-image +Priority: optional +Description: USB support + This package contains core USB drivers for the kernel. + +Package: usb-storage-modules +Depends: kernel-image, scsi-core-modules, usb-modules +Priority: standard +Description: USB storage support + This package contains the USB storage driver for the kernel. + +Package: pcmcia-storage-modules +Depends: kernel-image, cdrom-core-modules, pcmcia-modules, ata-modules +Priority: standard +Description: PCMCIA storage drivers + This package contains PCMCIA storage drivers for the kernel. + +Package: fb-modules +Depends: kernel-image, i2c-modules +Priority: optional +Description: Frame buffer support + This package contains Frame buffer drivers for the kernel. + +Package: input-modules +Depends: kernel-image, usb-modules, i2c-modules +Priority: optional +Description: Input devices support + This package contains input device drivers for the kernel. + +Package: event-modules +Depends: kernel-image +Priority: optional +Description: Event support + This package contains event drivers for the kernel. + +Package: mouse-modules +Depends: kernel-image, event-modules, input-modules, usb-modules +Priority: optional +Description: Mouse support + This package contains mouse drivers for the kernel. + +Package: nic-pcmcia-modules +Depends: kernel-image, nic-shared-modules, nic-wireless-modules, pcmcia-modules, mmc-core-modules +Priority: standard +Description: Common PCMCIA NIC drivers + This package contains common PCMCIA NIC drivers for the kernel. + +Package: pcmcia-modules +Depends: kernel-image +Priority: standard +Description: Common PCMCIA drivers + This package contains common PCMCIA drivers for the kernel. + +Package: nic-usb-modules +Depends: kernel-image, nic-shared-modules, nic-wireless-modules, usb-modules, crc-modules +Priority: standard +Description: USB NIC drivers + This package contains USB network adapter drivers for the kernel. + +Package: sata-modules +Depends: kernel-image, scsi-core-modules, ata-modules +Priority: standard +Description: SATA drivers + This package contains SATA drivers for the kernel. + +Package: acpi-modules +Depends: kernel-image +Priority: optional +Description: ACPI support modules + This package contains kernel modules for ACPI. + +Package: i2c-modules +Depends: kernel-image +Priority: optional +Description: i2c support modules + This package contains basic i2c support modules. + +Package: crc-modules +Depends: kernel-image +Priority: optional +Description: CRC modules + This package contains CRC support modules. + +Package: crypto-modules +Depends: kernel-image +Priority: optional +Description: crypto modules + This package contains crypto modules. + +Package: crypto-dm-modules +Depends: kernel-image, md-modules +Priority: optional +Description: devicemapper crypto module + This package contains the devicemapper crypto (dm-crypt) module. + +Package: efi-modules +Depends: kernel-image +Priority: optional +Description: EFI modules + This package contains EFI modules. + +Package: ata-modules +Depends: kernel-image, scsi-core-modules +Priority: optional +Description: ATA disk modules + This package contains core ATA disk modules used by both PATA and SATA + disk drivers. + +Package: mmc-core-modules +Depends: kernel-image +Priority: optional +Description: MMC/SD/SDIO core modules + This package contains core modules for MMC/SD/SDIO support. + +Package: mmc-modules +Depends: kernel-image, mmc-core-modules, usb-modules, crc-modules +Priority: optional +Description: MMC/SD card modules + This package contains modules needed to support MMC (multimedia) and + SD cards. + +Package: nbd-modules +Depends: kernel-image +Priority: optional +Description: Network Block Device modules + This package contains the modules required for support of the Network Block + Device + +Package: squashfs-modules +Depends: kernel-image +Priority: optional +Description: squashfs modules + This package contains squashfs modules. + +Package: speakup-modules +Depends: kernel-image +Priority: optional +Description: speakup modules + This package contains speakup modules. + +Package: rtc-modules +Depends: kernel-image +Priority: optional +Description: RTC modules + This package contains RTC modules. + +Package: virtio-modules +Depends: kernel-image, scsi-core-modules +Priority: optional +Description: virtio modules + This package contains virtio modules. + +Package: uinput-modules +Depends: kernel-image +Priority: optional +Description: uinput support + This package contains the uinput module. + +Package: sound-modules +Depends: kernel-image, i2c-modules, usb-modules, pcmcia-modules, firewire-core-modules, crc-modules +Priority: optional +Description: sound support + This package contains sound modules. + +Package: zlib-modules +Depends: kernel-image +Priority: optional +Description: zlib modules + This package contains zlib modules. + +Package: lzo-modules +Depends: kernel-image +Priority: optional +Description: lzo modules + This package contains lzo modules. + +Package: leds-modules +Depends: kernel-image +Priority: optional +Description: LED modules + This package contains LED modules. + +Package: hyperv-modules +Depends: kernel-image, input-modules, scsi-core-modules, nic-shared-modules +Priority: optional +Description: Hyper-V modules + This package contains Hyper-V paravirtualised drivers for the kernel. + +Package: udf-modules +Depends: kernel-image, crc-modules +Priority: optional +Description: UDF modules + This package contains the UDF filesystem module. + +Package: fuse-modules +Depends: kernel-image +Priority: optional +Description: FUSE modules + This package contains the Filesystem in Userspace (FUSE) module. + +Package: mtd-modules +Depends: kernel-image +Priority: optional +Description: MTD modules + This package contains MTD modules. diff --git a/installer/powerpc/kernel-versions b/installer/powerpc/kernel-versions new file mode 100644 index 00000000000..50cf2120af6 --- /dev/null +++ b/installer/powerpc/kernel-versions @@ -0,0 +1,3 @@ +# arch version flavour installedname suffix build-depends +powerpc - powerpc - - - +powerpc - powerpc64 - - - diff --git a/installer/powerpc/modules/powerpc-powerpc-miboot/affs-modules b/installer/powerpc/modules/powerpc-powerpc-miboot/affs-modules new file mode 100644 index 00000000000..f12f6ace215 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc-miboot/affs-modules @@ -0,0 +1 @@ +#include "../powerpc/affs-modules" diff --git a/installer/powerpc/modules/powerpc-powerpc-miboot/ata-modules b/installer/powerpc/modules/powerpc-powerpc-miboot/ata-modules new file mode 100644 index 00000000000..39540d4b6a4 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc-miboot/ata-modules @@ -0,0 +1 @@ +#include "../powerpc/ata-modules" diff --git a/installer/powerpc/modules/powerpc-powerpc-miboot/btrfs-modules b/installer/powerpc/modules/powerpc-powerpc-miboot/btrfs-modules new file mode 100644 index 00000000000..e261e138838 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc-miboot/btrfs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/powerpc/modules/powerpc-powerpc-miboot/cdrom-core-modules b/installer/powerpc/modules/powerpc-powerpc-miboot/cdrom-core-modules new file mode 100644 index 00000000000..feed89a1a49 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc-miboot/cdrom-core-modules @@ -0,0 +1 @@ +#include "../powerpc/cdrom-core-modules" diff --git a/installer/powerpc/modules/powerpc-powerpc-miboot/crc-modules b/installer/powerpc/modules/powerpc-powerpc-miboot/crc-modules new file mode 100644 index 00000000000..7e00de705e4 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc-miboot/crc-modules @@ -0,0 +1 @@ +#include diff --git a/installer/powerpc/modules/powerpc-powerpc-miboot/crypto-dm-modules b/installer/powerpc/modules/powerpc-powerpc-miboot/crypto-dm-modules new file mode 100644 index 00000000000..4c8f2354cd2 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc-miboot/crypto-dm-modules @@ -0,0 +1 @@ +#include diff --git a/installer/powerpc/modules/powerpc-powerpc-miboot/crypto-modules b/installer/powerpc/modules/powerpc-powerpc-miboot/crypto-modules new file mode 100644 index 00000000000..3a1e862b4cc --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc-miboot/crypto-modules @@ -0,0 +1 @@ +#include diff --git a/installer/powerpc/modules/powerpc-powerpc-miboot/event-modules b/installer/powerpc/modules/powerpc-powerpc-miboot/event-modules new file mode 100644 index 00000000000..f8819afd361 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc-miboot/event-modules @@ -0,0 +1 @@ +#include diff --git a/installer/powerpc/modules/powerpc-powerpc-miboot/ext4-modules b/installer/powerpc/modules/powerpc-powerpc-miboot/ext4-modules new file mode 100644 index 00000000000..394c577ce40 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc-miboot/ext4-modules @@ -0,0 +1 @@ +#include diff --git a/installer/powerpc/modules/powerpc-powerpc-miboot/fat-modules b/installer/powerpc/modules/powerpc-powerpc-miboot/fat-modules new file mode 100644 index 00000000000..043dc560295 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc-miboot/fat-modules @@ -0,0 +1 @@ +#include "../powerpc/fat-modules" diff --git a/installer/powerpc/modules/powerpc-powerpc-miboot/firewire-core-modules b/installer/powerpc/modules/powerpc-powerpc-miboot/firewire-core-modules new file mode 100644 index 00000000000..035ab316250 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc-miboot/firewire-core-modules @@ -0,0 +1 @@ +#include "../powerpc/firewire-core-modules" diff --git a/installer/powerpc/modules/powerpc-powerpc-miboot/fuse-modules b/installer/powerpc/modules/powerpc-powerpc-miboot/fuse-modules new file mode 100644 index 00000000000..49bdce41b07 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc-miboot/fuse-modules @@ -0,0 +1 @@ +#include "../powerpc/fuse-modules" diff --git a/installer/powerpc/modules/powerpc-powerpc-miboot/hfs-modules b/installer/powerpc/modules/powerpc-powerpc-miboot/hfs-modules new file mode 100644 index 00000000000..a85f6914303 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc-miboot/hfs-modules @@ -0,0 +1 @@ +#include "../powerpc/hfs-modules" diff --git a/installer/powerpc/modules/powerpc-powerpc-miboot/input-modules b/installer/powerpc/modules/powerpc-powerpc-miboot/input-modules new file mode 100644 index 00000000000..38a888940fa --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc-miboot/input-modules @@ -0,0 +1 @@ +#include "../powerpc/input-modules" diff --git a/installer/powerpc/modules/powerpc-powerpc-miboot/isofs-modules b/installer/powerpc/modules/powerpc-powerpc-miboot/isofs-modules new file mode 100644 index 00000000000..da4fa9a3c77 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc-miboot/isofs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/powerpc/modules/powerpc-powerpc-miboot/jfs-modules b/installer/powerpc/modules/powerpc-powerpc-miboot/jfs-modules new file mode 100644 index 00000000000..b71ebd35e86 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc-miboot/jfs-modules @@ -0,0 +1 @@ +#include "../powerpc/jfs-modules" diff --git a/installer/powerpc/modules/powerpc-powerpc-miboot/kernel-image b/installer/powerpc/modules/powerpc-powerpc-miboot/kernel-image new file mode 100644 index 00000000000..a0b7d0cf49c --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc-miboot/kernel-image @@ -0,0 +1 @@ +#include "../powerpc/kernel-image" diff --git a/installer/powerpc/modules/powerpc-powerpc-miboot/loop-modules b/installer/powerpc/modules/powerpc-powerpc-miboot/loop-modules new file mode 100644 index 00000000000..e2273687f54 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc-miboot/loop-modules @@ -0,0 +1 @@ +#include "../powerpc/loop-modules" diff --git a/installer/powerpc/modules/powerpc-powerpc-miboot/md-modules b/installer/powerpc/modules/powerpc-powerpc-miboot/md-modules new file mode 100644 index 00000000000..93be33f95c5 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc-miboot/md-modules @@ -0,0 +1 @@ +#include "../powerpc/md-modules" diff --git a/installer/powerpc/modules/powerpc-powerpc-miboot/mouse-modules b/installer/powerpc/modules/powerpc-powerpc-miboot/mouse-modules new file mode 100644 index 00000000000..22aca9411c6 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc-miboot/mouse-modules @@ -0,0 +1 @@ +#include "../powerpc/mouse-modules" diff --git a/installer/powerpc/modules/powerpc-powerpc-miboot/multipath-modules b/installer/powerpc/modules/powerpc-powerpc-miboot/multipath-modules new file mode 100644 index 00000000000..a8b69b2537a --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc-miboot/multipath-modules @@ -0,0 +1 @@ +#include diff --git a/installer/powerpc/modules/powerpc-powerpc-miboot/nbd-modules b/installer/powerpc/modules/powerpc-powerpc-miboot/nbd-modules new file mode 100644 index 00000000000..3c9b3e5d426 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc-miboot/nbd-modules @@ -0,0 +1 @@ +#include diff --git a/installer/powerpc/modules/powerpc-powerpc-miboot/nic-modules b/installer/powerpc/modules/powerpc-powerpc-miboot/nic-modules new file mode 100644 index 00000000000..b32747c68e2 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc-miboot/nic-modules @@ -0,0 +1,28 @@ +3c59x +8139too +de2104x +dl2k +dmfe +e100 +fealnx +hamachi +ixgb +natsemi +ne2k-pci +ns83820 +p54pci +p54usb +prism54 ? +r8169 +s2io +starfire +tg3 ? +tlan +tulip +winbond-840 +winbond-840 +yellowfin + +broadcom ? + +8021q diff --git a/installer/powerpc/modules/powerpc-powerpc-miboot/nic-pcmcia-modules b/installer/powerpc/modules/powerpc-powerpc-miboot/nic-pcmcia-modules new file mode 100644 index 00000000000..3f521e9db03 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc-miboot/nic-pcmcia-modules @@ -0,0 +1 @@ +#include "../powerpc/nic-pcmcia-modules" diff --git a/installer/powerpc/modules/powerpc-powerpc-miboot/nic-shared-modules b/installer/powerpc/modules/powerpc-powerpc-miboot/nic-shared-modules new file mode 100644 index 00000000000..5b05e0d43cb --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc-miboot/nic-shared-modules @@ -0,0 +1 @@ +#include "../powerpc/nic-shared-modules" diff --git a/installer/powerpc/modules/powerpc-powerpc-miboot/pata-modules b/installer/powerpc/modules/powerpc-powerpc-miboot/pata-modules new file mode 100644 index 00000000000..bb9cbe3abe7 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc-miboot/pata-modules @@ -0,0 +1 @@ +#include "../powerpc/pata-modules" diff --git a/installer/powerpc/modules/powerpc-powerpc-miboot/pcmcia-modules b/installer/powerpc/modules/powerpc-powerpc-miboot/pcmcia-modules new file mode 100644 index 00000000000..e508df66435 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc-miboot/pcmcia-modules @@ -0,0 +1 @@ +#include "../powerpc/pcmcia-modules" diff --git a/installer/powerpc/modules/powerpc-powerpc-miboot/pcmcia-storage-modules b/installer/powerpc/modules/powerpc-powerpc-miboot/pcmcia-storage-modules new file mode 100644 index 00000000000..f00f24605f5 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc-miboot/pcmcia-storage-modules @@ -0,0 +1 @@ +#include "../powerpc/pcmcia-storage-modules" diff --git a/installer/powerpc/modules/powerpc-powerpc-miboot/ppp-modules b/installer/powerpc/modules/powerpc-powerpc-miboot/ppp-modules new file mode 100644 index 00000000000..eb7ab74a52f --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc-miboot/ppp-modules @@ -0,0 +1 @@ +#include "../powerpc/ppp-modules" diff --git a/installer/powerpc/modules/powerpc-powerpc-miboot/sata-modules b/installer/powerpc/modules/powerpc-powerpc-miboot/sata-modules new file mode 100644 index 00000000000..591ad741022 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc-miboot/sata-modules @@ -0,0 +1 @@ +#include "../powerpc/sata-modules" diff --git a/installer/powerpc/modules/powerpc-powerpc-miboot/scsi-core-modules b/installer/powerpc/modules/powerpc-powerpc-miboot/scsi-core-modules new file mode 100644 index 00000000000..c972a471740 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc-miboot/scsi-core-modules @@ -0,0 +1 @@ +#include "../powerpc/scsi-core-modules" diff --git a/installer/powerpc/modules/powerpc-powerpc-miboot/scsi-modules b/installer/powerpc/modules/powerpc-powerpc-miboot/scsi-modules new file mode 100644 index 00000000000..dd5ae9ccee6 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc-miboot/scsi-modules @@ -0,0 +1 @@ +#include "../powerpc/scsi-modules" diff --git a/installer/powerpc/modules/powerpc-powerpc-miboot/serial-modules b/installer/powerpc/modules/powerpc-powerpc-miboot/serial-modules new file mode 100644 index 00000000000..349196e30e8 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc-miboot/serial-modules @@ -0,0 +1 @@ +#include "../powerpc/serial-modules" diff --git a/installer/powerpc/modules/powerpc-powerpc-miboot/squashfs-modules b/installer/powerpc/modules/powerpc-powerpc-miboot/squashfs-modules new file mode 100644 index 00000000000..42d77887ad3 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc-miboot/squashfs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/powerpc/modules/powerpc-powerpc-miboot/udf-modules b/installer/powerpc/modules/powerpc-powerpc-miboot/udf-modules new file mode 100644 index 00000000000..b90d7ee9b52 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc-miboot/udf-modules @@ -0,0 +1 @@ +#include diff --git a/installer/powerpc/modules/powerpc-powerpc-miboot/uinput-modules b/installer/powerpc/modules/powerpc-powerpc-miboot/uinput-modules new file mode 100644 index 00000000000..58a83377944 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc-miboot/uinput-modules @@ -0,0 +1 @@ +#include diff --git a/installer/powerpc/modules/powerpc-powerpc-miboot/usb-modules b/installer/powerpc/modules/powerpc-powerpc-miboot/usb-modules new file mode 100644 index 00000000000..9c5b10a7b9e --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc-miboot/usb-modules @@ -0,0 +1 @@ +#include "../powerpc/usb-modules" diff --git a/installer/powerpc/modules/powerpc-powerpc-miboot/usb-serial-modules b/installer/powerpc/modules/powerpc-powerpc-miboot/usb-serial-modules new file mode 100644 index 00000000000..e25b5586285 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc-miboot/usb-serial-modules @@ -0,0 +1 @@ +#include "../powerpc/usb-serial-modules" diff --git a/installer/powerpc/modules/powerpc-powerpc-miboot/usb-storage-modules b/installer/powerpc/modules/powerpc-powerpc-miboot/usb-storage-modules new file mode 100644 index 00000000000..5f278e65f83 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc-miboot/usb-storage-modules @@ -0,0 +1 @@ +#include "../powerpc/usb-storage-modules" diff --git a/installer/powerpc/modules/powerpc-powerpc-miboot/xfs-modules b/installer/powerpc/modules/powerpc-powerpc-miboot/xfs-modules new file mode 100644 index 00000000000..c850127e905 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc-miboot/xfs-modules @@ -0,0 +1 @@ +#include "../powerpc/xfs-modules" diff --git a/installer/powerpc/modules/powerpc-powerpc-miboot/zlib-modules b/installer/powerpc/modules/powerpc-powerpc-miboot/zlib-modules new file mode 100644 index 00000000000..e02ad64bf9c --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc-miboot/zlib-modules @@ -0,0 +1 @@ +#include diff --git a/installer/powerpc/modules/powerpc-powerpc64/affs-modules b/installer/powerpc/modules/powerpc-powerpc64/affs-modules new file mode 100644 index 00000000000..f12f6ace215 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc64/affs-modules @@ -0,0 +1 @@ +#include "../powerpc/affs-modules" diff --git a/installer/powerpc/modules/powerpc-powerpc64/ata-modules b/installer/powerpc/modules/powerpc-powerpc64/ata-modules new file mode 100644 index 00000000000..39540d4b6a4 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc64/ata-modules @@ -0,0 +1 @@ +#include "../powerpc/ata-modules" diff --git a/installer/powerpc/modules/powerpc-powerpc64/btrfs-modules b/installer/powerpc/modules/powerpc-powerpc64/btrfs-modules new file mode 100644 index 00000000000..e261e138838 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc64/btrfs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/powerpc/modules/powerpc-powerpc64/cdrom-core-modules b/installer/powerpc/modules/powerpc-powerpc64/cdrom-core-modules new file mode 100644 index 00000000000..feed89a1a49 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc64/cdrom-core-modules @@ -0,0 +1 @@ +#include "../powerpc/cdrom-core-modules" diff --git a/installer/powerpc/modules/powerpc-powerpc64/crc-modules b/installer/powerpc/modules/powerpc-powerpc64/crc-modules new file mode 100644 index 00000000000..7e00de705e4 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc64/crc-modules @@ -0,0 +1 @@ +#include diff --git a/installer/powerpc/modules/powerpc-powerpc64/crypto-dm-modules b/installer/powerpc/modules/powerpc-powerpc64/crypto-dm-modules new file mode 100644 index 00000000000..4c8f2354cd2 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc64/crypto-dm-modules @@ -0,0 +1 @@ +#include diff --git a/installer/powerpc/modules/powerpc-powerpc64/crypto-modules b/installer/powerpc/modules/powerpc-powerpc64/crypto-modules new file mode 100644 index 00000000000..3a1e862b4cc --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc64/crypto-modules @@ -0,0 +1 @@ +#include diff --git a/installer/powerpc/modules/powerpc-powerpc64/event-modules b/installer/powerpc/modules/powerpc-powerpc64/event-modules new file mode 100644 index 00000000000..f8819afd361 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc64/event-modules @@ -0,0 +1 @@ +#include diff --git a/installer/powerpc/modules/powerpc-powerpc64/ext4-modules b/installer/powerpc/modules/powerpc-powerpc64/ext4-modules new file mode 100644 index 00000000000..394c577ce40 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc64/ext4-modules @@ -0,0 +1 @@ +#include diff --git a/installer/powerpc/modules/powerpc-powerpc64/fancontrol-modules b/installer/powerpc/modules/powerpc-powerpc64/fancontrol-modules new file mode 100644 index 00000000000..a3fc55cca94 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc64/fancontrol-modules @@ -0,0 +1,19 @@ +i2c-powermac ? +windfarm_core ? +windfarm_cpufreq_clamp ? +windfarm_lm75_sensor ? +windfarm_max6690_sensor ? +windfarm_pid ? +windfarm_pm121 ? +windfarm_pm112 ? +windfarm_pm81 ? +windfarm_pm91 ? +windfarm_pm72 ? +windfarm_rm31 ? +windfarm_smu_controls ? +windfarm_smu_sat ? +windfarm_smu_sensors ? +windfarm_ad7417_sensor ? +windfarm_fcu_controls ? +windfarm_lm87_sensor ? +windfarm_pid ? diff --git a/installer/powerpc/modules/powerpc-powerpc64/fat-modules b/installer/powerpc/modules/powerpc-powerpc64/fat-modules new file mode 100644 index 00000000000..043dc560295 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc64/fat-modules @@ -0,0 +1 @@ +#include "../powerpc/fat-modules" diff --git a/installer/powerpc/modules/powerpc-powerpc64/firewire-core-modules b/installer/powerpc/modules/powerpc-powerpc64/firewire-core-modules new file mode 100644 index 00000000000..035ab316250 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc64/firewire-core-modules @@ -0,0 +1 @@ +#include "../powerpc/firewire-core-modules" diff --git a/installer/powerpc/modules/powerpc-powerpc64/fuse-modules b/installer/powerpc/modules/powerpc-powerpc64/fuse-modules new file mode 100644 index 00000000000..49bdce41b07 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc64/fuse-modules @@ -0,0 +1 @@ +#include "../powerpc/fuse-modules" diff --git a/installer/powerpc/modules/powerpc-powerpc64/hfs-modules b/installer/powerpc/modules/powerpc-powerpc64/hfs-modules new file mode 100644 index 00000000000..a85f6914303 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc64/hfs-modules @@ -0,0 +1 @@ +#include "../powerpc/hfs-modules" diff --git a/installer/powerpc/modules/powerpc-powerpc64/hypervisor-modules b/installer/powerpc/modules/powerpc-powerpc64/hypervisor-modules new file mode 100644 index 00000000000..29ceb6154d7 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc64/hypervisor-modules @@ -0,0 +1,2 @@ +hvcserver +hvcs diff --git a/installer/powerpc/modules/powerpc-powerpc64/input-modules b/installer/powerpc/modules/powerpc-powerpc64/input-modules new file mode 100644 index 00000000000..38a888940fa --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc64/input-modules @@ -0,0 +1 @@ +#include "../powerpc/input-modules" diff --git a/installer/powerpc/modules/powerpc-powerpc64/isofs-modules b/installer/powerpc/modules/powerpc-powerpc64/isofs-modules new file mode 100644 index 00000000000..da4fa9a3c77 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc64/isofs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/powerpc/modules/powerpc-powerpc64/jfs-modules b/installer/powerpc/modules/powerpc-powerpc64/jfs-modules new file mode 100644 index 00000000000..b71ebd35e86 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc64/jfs-modules @@ -0,0 +1 @@ +#include "../powerpc/jfs-modules" diff --git a/installer/powerpc/modules/powerpc-powerpc64/kernel-image b/installer/powerpc/modules/powerpc-powerpc64/kernel-image new file mode 100644 index 00000000000..a0b7d0cf49c --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc64/kernel-image @@ -0,0 +1 @@ +#include "../powerpc/kernel-image" diff --git a/installer/powerpc/modules/powerpc-powerpc64/loop-modules b/installer/powerpc/modules/powerpc-powerpc64/loop-modules new file mode 100644 index 00000000000..e2273687f54 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc64/loop-modules @@ -0,0 +1 @@ +#include "../powerpc/loop-modules" diff --git a/installer/powerpc/modules/powerpc-powerpc64/md-modules b/installer/powerpc/modules/powerpc-powerpc64/md-modules new file mode 100644 index 00000000000..93be33f95c5 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc64/md-modules @@ -0,0 +1 @@ +#include "../powerpc/md-modules" diff --git a/installer/powerpc/modules/powerpc-powerpc64/mouse-modules b/installer/powerpc/modules/powerpc-powerpc64/mouse-modules new file mode 100644 index 00000000000..22aca9411c6 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc64/mouse-modules @@ -0,0 +1 @@ +#include "../powerpc/mouse-modules" diff --git a/installer/powerpc/modules/powerpc-powerpc64/multipath-modules b/installer/powerpc/modules/powerpc-powerpc64/multipath-modules new file mode 100644 index 00000000000..a8b69b2537a --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc64/multipath-modules @@ -0,0 +1 @@ +#include diff --git a/installer/powerpc/modules/powerpc-powerpc64/nbd-modules b/installer/powerpc/modules/powerpc-powerpc64/nbd-modules new file mode 100644 index 00000000000..3c9b3e5d426 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc64/nbd-modules @@ -0,0 +1 @@ +#include diff --git a/installer/powerpc/modules/powerpc-powerpc64/nic-modules b/installer/powerpc/modules/powerpc-powerpc64/nic-modules new file mode 100644 index 00000000000..95052e97766 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc64/nic-modules @@ -0,0 +1,7 @@ +#include "../powerpc/nic-modules" + +ehea +ibmveth +pasemi_mac ? +ps3_gelic +spidernet diff --git a/installer/powerpc/modules/powerpc-powerpc64/nic-pcmcia-modules b/installer/powerpc/modules/powerpc-powerpc64/nic-pcmcia-modules new file mode 100644 index 00000000000..7a0702cd558 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc64/nic-pcmcia-modules @@ -0,0 +1 @@ +#include diff --git a/installer/powerpc/modules/powerpc-powerpc64/nic-shared-modules b/installer/powerpc/modules/powerpc-powerpc64/nic-shared-modules new file mode 100644 index 00000000000..5b05e0d43cb --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc64/nic-shared-modules @@ -0,0 +1 @@ +#include "../powerpc/nic-shared-modules" diff --git a/installer/powerpc/modules/powerpc-powerpc64/pata-modules b/installer/powerpc/modules/powerpc-powerpc64/pata-modules new file mode 100644 index 00000000000..bb9cbe3abe7 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc64/pata-modules @@ -0,0 +1 @@ +#include "../powerpc/pata-modules" diff --git a/installer/powerpc/modules/powerpc-powerpc64/pcmcia-modules b/installer/powerpc/modules/powerpc-powerpc64/pcmcia-modules new file mode 100644 index 00000000000..e508df66435 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc64/pcmcia-modules @@ -0,0 +1 @@ +#include "../powerpc/pcmcia-modules" diff --git a/installer/powerpc/modules/powerpc-powerpc64/pcmcia-storage-modules b/installer/powerpc/modules/powerpc-powerpc64/pcmcia-storage-modules new file mode 100644 index 00000000000..f00f24605f5 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc64/pcmcia-storage-modules @@ -0,0 +1 @@ +#include "../powerpc/pcmcia-storage-modules" diff --git a/installer/powerpc/modules/powerpc-powerpc64/ppp-modules b/installer/powerpc/modules/powerpc-powerpc64/ppp-modules new file mode 100644 index 00000000000..eb7ab74a52f --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc64/ppp-modules @@ -0,0 +1 @@ +#include "../powerpc/ppp-modules" diff --git a/installer/powerpc/modules/powerpc-powerpc64/sata-modules b/installer/powerpc/modules/powerpc-powerpc64/sata-modules new file mode 100644 index 00000000000..591ad741022 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc64/sata-modules @@ -0,0 +1 @@ +#include "../powerpc/sata-modules" diff --git a/installer/powerpc/modules/powerpc-powerpc64/scsi-core-modules b/installer/powerpc/modules/powerpc-powerpc64/scsi-core-modules new file mode 100644 index 00000000000..c972a471740 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc64/scsi-core-modules @@ -0,0 +1 @@ +#include "../powerpc/scsi-core-modules" diff --git a/installer/powerpc/modules/powerpc-powerpc64/scsi-modules b/installer/powerpc/modules/powerpc-powerpc64/scsi-modules new file mode 100644 index 00000000000..d0671e575e5 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc64/scsi-modules @@ -0,0 +1,8 @@ +#include + +ibmvscsi +ps3disk ? +ps3rom + +# Exclude target driver +ibmvscsis - diff --git a/installer/powerpc/modules/powerpc-powerpc64/serial-modules b/installer/powerpc/modules/powerpc-powerpc64/serial-modules new file mode 100644 index 00000000000..349196e30e8 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc64/serial-modules @@ -0,0 +1 @@ +#include "../powerpc/serial-modules" diff --git a/installer/powerpc/modules/powerpc-powerpc64/squashfs-modules b/installer/powerpc/modules/powerpc-powerpc64/squashfs-modules new file mode 100644 index 00000000000..42d77887ad3 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc64/squashfs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/powerpc/modules/powerpc-powerpc64/udf-modules b/installer/powerpc/modules/powerpc-powerpc64/udf-modules new file mode 100644 index 00000000000..b90d7ee9b52 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc64/udf-modules @@ -0,0 +1 @@ +#include diff --git a/installer/powerpc/modules/powerpc-powerpc64/uinput-modules b/installer/powerpc/modules/powerpc-powerpc64/uinput-modules new file mode 100644 index 00000000000..58a83377944 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc64/uinput-modules @@ -0,0 +1 @@ +#include diff --git a/installer/powerpc/modules/powerpc-powerpc64/usb-modules b/installer/powerpc/modules/powerpc-powerpc64/usb-modules new file mode 100644 index 00000000000..9c5b10a7b9e --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc64/usb-modules @@ -0,0 +1 @@ +#include "../powerpc/usb-modules" diff --git a/installer/powerpc/modules/powerpc-powerpc64/usb-serial-modules b/installer/powerpc/modules/powerpc-powerpc64/usb-serial-modules new file mode 100644 index 00000000000..e25b5586285 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc64/usb-serial-modules @@ -0,0 +1 @@ +#include "../powerpc/usb-serial-modules" diff --git a/installer/powerpc/modules/powerpc-powerpc64/usb-storage-modules b/installer/powerpc/modules/powerpc-powerpc64/usb-storage-modules new file mode 100644 index 00000000000..5f278e65f83 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc64/usb-storage-modules @@ -0,0 +1 @@ +#include "../powerpc/usb-storage-modules" diff --git a/installer/powerpc/modules/powerpc-powerpc64/virtio-modules b/installer/powerpc/modules/powerpc-powerpc64/virtio-modules new file mode 100644 index 00000000000..61da39659c6 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc64/virtio-modules @@ -0,0 +1 @@ +#include diff --git a/installer/powerpc/modules/powerpc-powerpc64/xfs-modules b/installer/powerpc/modules/powerpc-powerpc64/xfs-modules new file mode 100644 index 00000000000..c850127e905 --- /dev/null +++ b/installer/powerpc/modules/powerpc-powerpc64/xfs-modules @@ -0,0 +1 @@ +#include "../powerpc/xfs-modules" diff --git a/installer/powerpc/modules/powerpc/affs-modules b/installer/powerpc/modules/powerpc/affs-modules new file mode 100644 index 00000000000..3f0e4bb909e --- /dev/null +++ b/installer/powerpc/modules/powerpc/affs-modules @@ -0,0 +1,2 @@ +#include + diff --git a/installer/powerpc/modules/powerpc/ata-modules b/installer/powerpc/modules/powerpc/ata-modules new file mode 100644 index 00000000000..b81c0f38b74 --- /dev/null +++ b/installer/powerpc/modules/powerpc/ata-modules @@ -0,0 +1 @@ +#include diff --git a/installer/powerpc/modules/powerpc/btrfs-modules b/installer/powerpc/modules/powerpc/btrfs-modules new file mode 100644 index 00000000000..e261e138838 --- /dev/null +++ b/installer/powerpc/modules/powerpc/btrfs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/powerpc/modules/powerpc/cdrom-core-modules b/installer/powerpc/modules/powerpc/cdrom-core-modules new file mode 100644 index 00000000000..e264d7aa348 --- /dev/null +++ b/installer/powerpc/modules/powerpc/cdrom-core-modules @@ -0,0 +1,2 @@ +#include + diff --git a/installer/powerpc/modules/powerpc/crc-modules b/installer/powerpc/modules/powerpc/crc-modules new file mode 100644 index 00000000000..7e00de705e4 --- /dev/null +++ b/installer/powerpc/modules/powerpc/crc-modules @@ -0,0 +1 @@ +#include diff --git a/installer/powerpc/modules/powerpc/crypto-dm-modules b/installer/powerpc/modules/powerpc/crypto-dm-modules new file mode 100644 index 00000000000..4c8f2354cd2 --- /dev/null +++ b/installer/powerpc/modules/powerpc/crypto-dm-modules @@ -0,0 +1 @@ +#include diff --git a/installer/powerpc/modules/powerpc/crypto-modules b/installer/powerpc/modules/powerpc/crypto-modules new file mode 100644 index 00000000000..3a1e862b4cc --- /dev/null +++ b/installer/powerpc/modules/powerpc/crypto-modules @@ -0,0 +1 @@ +#include diff --git a/installer/powerpc/modules/powerpc/event-modules b/installer/powerpc/modules/powerpc/event-modules new file mode 100644 index 00000000000..f8819afd361 --- /dev/null +++ b/installer/powerpc/modules/powerpc/event-modules @@ -0,0 +1 @@ +#include diff --git a/installer/powerpc/modules/powerpc/ext4-modules b/installer/powerpc/modules/powerpc/ext4-modules new file mode 100644 index 00000000000..394c577ce40 --- /dev/null +++ b/installer/powerpc/modules/powerpc/ext4-modules @@ -0,0 +1 @@ +#include diff --git a/installer/powerpc/modules/powerpc/fat-modules b/installer/powerpc/modules/powerpc/fat-modules new file mode 100644 index 00000000000..cce8fd30ca4 --- /dev/null +++ b/installer/powerpc/modules/powerpc/fat-modules @@ -0,0 +1,2 @@ +#include + diff --git a/installer/powerpc/modules/powerpc/fb-modules b/installer/powerpc/modules/powerpc/fb-modules new file mode 100644 index 00000000000..29bfc4c3905 --- /dev/null +++ b/installer/powerpc/modules/powerpc/fb-modules @@ -0,0 +1,5 @@ +# 32-bit PowerMacs mostly have either ATI Rage 128 or Radeon graphics +# chips for which the offb driver doesn't work properly. aty128fb is +# currently built-in but that could plausibly change in future. +aty128fb +radeonfb diff --git a/installer/powerpc/modules/powerpc/firewire-core-modules b/installer/powerpc/modules/powerpc/firewire-core-modules new file mode 100644 index 00000000000..dcac80af965 --- /dev/null +++ b/installer/powerpc/modules/powerpc/firewire-core-modules @@ -0,0 +1 @@ +#include diff --git a/installer/powerpc/modules/powerpc/fuse-modules b/installer/powerpc/modules/powerpc/fuse-modules new file mode 100644 index 00000000000..0b6ba0c8c8f --- /dev/null +++ b/installer/powerpc/modules/powerpc/fuse-modules @@ -0,0 +1 @@ +#include diff --git a/installer/powerpc/modules/powerpc/hfs-modules b/installer/powerpc/modules/powerpc/hfs-modules new file mode 100644 index 00000000000..57d12f64921 --- /dev/null +++ b/installer/powerpc/modules/powerpc/hfs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/powerpc/modules/powerpc/input-modules b/installer/powerpc/modules/powerpc/input-modules new file mode 100644 index 00000000000..51e37ced9a7 --- /dev/null +++ b/installer/powerpc/modules/powerpc/input-modules @@ -0,0 +1,3 @@ +#include +atkbd +i8042 diff --git a/installer/powerpc/modules/powerpc/isofs-modules b/installer/powerpc/modules/powerpc/isofs-modules new file mode 100644 index 00000000000..da4fa9a3c77 --- /dev/null +++ b/installer/powerpc/modules/powerpc/isofs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/powerpc/modules/powerpc/jfs-modules b/installer/powerpc/modules/powerpc/jfs-modules new file mode 100644 index 00000000000..925a43a9e2a --- /dev/null +++ b/installer/powerpc/modules/powerpc/jfs-modules @@ -0,0 +1,2 @@ +#include + diff --git a/installer/powerpc/modules/powerpc/kernel-image b/installer/powerpc/modules/powerpc/kernel-image new file mode 100644 index 00000000000..b17bb591a8a --- /dev/null +++ b/installer/powerpc/modules/powerpc/kernel-image @@ -0,0 +1,2 @@ +#include +bestcomm-core ? diff --git a/installer/powerpc/modules/powerpc/loop-modules b/installer/powerpc/modules/powerpc/loop-modules new file mode 100644 index 00000000000..16446771376 --- /dev/null +++ b/installer/powerpc/modules/powerpc/loop-modules @@ -0,0 +1,2 @@ +#include + diff --git a/installer/powerpc/modules/powerpc/md-modules b/installer/powerpc/modules/powerpc/md-modules new file mode 100644 index 00000000000..ade088ddbb2 --- /dev/null +++ b/installer/powerpc/modules/powerpc/md-modules @@ -0,0 +1,2 @@ +#include + diff --git a/installer/powerpc/modules/powerpc/mouse-modules b/installer/powerpc/modules/powerpc/mouse-modules new file mode 100644 index 00000000000..15fcb00eaa0 --- /dev/null +++ b/installer/powerpc/modules/powerpc/mouse-modules @@ -0,0 +1 @@ +#include diff --git a/installer/powerpc/modules/powerpc/multipath-modules b/installer/powerpc/modules/powerpc/multipath-modules new file mode 100644 index 00000000000..a8b69b2537a --- /dev/null +++ b/installer/powerpc/modules/powerpc/multipath-modules @@ -0,0 +1 @@ +#include diff --git a/installer/powerpc/modules/powerpc/nbd-modules b/installer/powerpc/modules/powerpc/nbd-modules new file mode 100644 index 00000000000..3c9b3e5d426 --- /dev/null +++ b/installer/powerpc/modules/powerpc/nbd-modules @@ -0,0 +1 @@ +#include diff --git a/installer/powerpc/modules/powerpc/nic-modules b/installer/powerpc/modules/powerpc/nic-modules new file mode 100644 index 00000000000..fa151067e0d --- /dev/null +++ b/installer/powerpc/modules/powerpc/nic-modules @@ -0,0 +1,8 @@ +#include + +ipddp +sunhme +airport +sungem +sungem_phy +bmac ? diff --git a/installer/powerpc/modules/powerpc/nic-pcmcia-modules b/installer/powerpc/modules/powerpc/nic-pcmcia-modules new file mode 100644 index 00000000000..7a0702cd558 --- /dev/null +++ b/installer/powerpc/modules/powerpc/nic-pcmcia-modules @@ -0,0 +1 @@ +#include diff --git a/installer/powerpc/modules/powerpc/nic-shared-modules b/installer/powerpc/modules/powerpc/nic-shared-modules new file mode 100644 index 00000000000..a6f274a444b --- /dev/null +++ b/installer/powerpc/modules/powerpc/nic-shared-modules @@ -0,0 +1,2 @@ +#include +llc diff --git a/installer/powerpc/modules/powerpc/pata-modules b/installer/powerpc/modules/powerpc/pata-modules new file mode 100644 index 00000000000..4c7d4296b8a --- /dev/null +++ b/installer/powerpc/modules/powerpc/pata-modules @@ -0,0 +1,3 @@ +#include +pata_mpc52xx ? +pata_macio ? diff --git a/installer/powerpc/modules/powerpc/pcmcia-modules b/installer/powerpc/modules/powerpc/pcmcia-modules new file mode 100644 index 00000000000..2bb5350fe14 --- /dev/null +++ b/installer/powerpc/modules/powerpc/pcmcia-modules @@ -0,0 +1 @@ +#include diff --git a/installer/powerpc/modules/powerpc/pcmcia-storage-modules b/installer/powerpc/modules/powerpc/pcmcia-storage-modules new file mode 100644 index 00000000000..9fbaff306db --- /dev/null +++ b/installer/powerpc/modules/powerpc/pcmcia-storage-modules @@ -0,0 +1,2 @@ +#include + diff --git a/installer/powerpc/modules/powerpc/ppp-modules b/installer/powerpc/modules/powerpc/ppp-modules new file mode 100644 index 00000000000..f1ae9b3d15a --- /dev/null +++ b/installer/powerpc/modules/powerpc/ppp-modules @@ -0,0 +1,2 @@ +#include + diff --git a/installer/powerpc/modules/powerpc/sata-modules b/installer/powerpc/modules/powerpc/sata-modules new file mode 100644 index 00000000000..071cb860bbc --- /dev/null +++ b/installer/powerpc/modules/powerpc/sata-modules @@ -0,0 +1,2 @@ +#include + diff --git a/installer/powerpc/modules/powerpc/scsi-core-modules b/installer/powerpc/modules/powerpc/scsi-core-modules new file mode 100644 index 00000000000..dd65d661433 --- /dev/null +++ b/installer/powerpc/modules/powerpc/scsi-core-modules @@ -0,0 +1 @@ +#include diff --git a/installer/powerpc/modules/powerpc/scsi-modules b/installer/powerpc/modules/powerpc/scsi-modules new file mode 100644 index 00000000000..c75c32da5e5 --- /dev/null +++ b/installer/powerpc/modules/powerpc/scsi-modules @@ -0,0 +1,5 @@ +#include + +a100u2w +mac53c94 +mesh diff --git a/installer/powerpc/modules/powerpc/serial-modules b/installer/powerpc/modules/powerpc/serial-modules new file mode 100644 index 00000000000..6ab8b8c3551 --- /dev/null +++ b/installer/powerpc/modules/powerpc/serial-modules @@ -0,0 +1 @@ +#include diff --git a/installer/powerpc/modules/powerpc/squashfs-modules b/installer/powerpc/modules/powerpc/squashfs-modules new file mode 100644 index 00000000000..42d77887ad3 --- /dev/null +++ b/installer/powerpc/modules/powerpc/squashfs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/powerpc/modules/powerpc/udf-modules b/installer/powerpc/modules/powerpc/udf-modules new file mode 100644 index 00000000000..b90d7ee9b52 --- /dev/null +++ b/installer/powerpc/modules/powerpc/udf-modules @@ -0,0 +1 @@ +#include diff --git a/installer/powerpc/modules/powerpc/uinput-modules b/installer/powerpc/modules/powerpc/uinput-modules new file mode 100644 index 00000000000..58a83377944 --- /dev/null +++ b/installer/powerpc/modules/powerpc/uinput-modules @@ -0,0 +1 @@ +#include diff --git a/installer/powerpc/modules/powerpc/usb-modules b/installer/powerpc/modules/powerpc/usb-modules new file mode 100644 index 00000000000..c598dedd811 --- /dev/null +++ b/installer/powerpc/modules/powerpc/usb-modules @@ -0,0 +1 @@ +#include diff --git a/installer/powerpc/modules/powerpc/usb-serial-modules b/installer/powerpc/modules/powerpc/usb-serial-modules new file mode 100644 index 00000000000..c0a0dc3bd17 --- /dev/null +++ b/installer/powerpc/modules/powerpc/usb-serial-modules @@ -0,0 +1 @@ +#include diff --git a/installer/powerpc/modules/powerpc/usb-storage-modules b/installer/powerpc/modules/powerpc/usb-storage-modules new file mode 100644 index 00000000000..272d95e2e8b --- /dev/null +++ b/installer/powerpc/modules/powerpc/usb-storage-modules @@ -0,0 +1,2 @@ +#include + diff --git a/installer/powerpc/modules/powerpc/virtio-modules b/installer/powerpc/modules/powerpc/virtio-modules new file mode 100644 index 00000000000..61da39659c6 --- /dev/null +++ b/installer/powerpc/modules/powerpc/virtio-modules @@ -0,0 +1 @@ +#include diff --git a/installer/powerpc/modules/powerpc/xfs-modules b/installer/powerpc/modules/powerpc/xfs-modules new file mode 100644 index 00000000000..c020b5d399f --- /dev/null +++ b/installer/powerpc/modules/powerpc/xfs-modules @@ -0,0 +1,2 @@ +#include + diff --git a/installer/powerpc/modules/powerpc/zlib-modules b/installer/powerpc/modules/powerpc/zlib-modules new file mode 100644 index 00000000000..e02ad64bf9c --- /dev/null +++ b/installer/powerpc/modules/powerpc/zlib-modules @@ -0,0 +1 @@ +#include diff --git a/installer/powerpc/package-list b/installer/powerpc/package-list new file mode 100644 index 00000000000..798bdf521e3 --- /dev/null +++ b/installer/powerpc/package-list @@ -0,0 +1,25 @@ +# This file is used to build up the control file. The kernel version and +# "-di" are appended to the package names. Section can be left out. So can +# architecture, which is derived from the files in the modules directory. +# It overwrites specifications from /usr/share/kernel-wedge/package-list. +# + +Package: pata-modules +Depends: kernel-image, ata-modules, core-modules + +Package: nic-pcmcia-modules +Depends: kernel-image, nic-modules, nic-shared-modules, nic-wireless-modules, pcmcia-modules, core-modules + +Package: hypervisor-modules +Depends: kernel-image +Priority: standard +Description: IBM 64bit hypervisor console modules + Contains drivers for the hypervisor console, used as console for linux + running in logical partitions of IBM hardware supporting it. + +Package: fancontrol-modules +Depends: kernel-image +Priority: standard +Description: Apple powermac fancontrol modules + Contains drivers for macintosh i2c bus as well as for the monitoring devices + connected to it. This allows to control the fans during installation. diff --git a/installer/ppc64/kernel-versions b/installer/ppc64/kernel-versions new file mode 100644 index 00000000000..359bd103c70 --- /dev/null +++ b/installer/ppc64/kernel-versions @@ -0,0 +1,2 @@ +# arch version flavour installedname suffix build-depends +ppc64 - powerpc64 - - - diff --git a/installer/ppc64/modules/powerpc b/installer/ppc64/modules/powerpc new file mode 120000 index 00000000000..207f2439cc9 --- /dev/null +++ b/installer/ppc64/modules/powerpc @@ -0,0 +1 @@ +../../powerpc/modules/powerpc \ No newline at end of file diff --git a/installer/ppc64/modules/ppc64 b/installer/ppc64/modules/ppc64 new file mode 120000 index 00000000000..f007b6a7880 --- /dev/null +++ b/installer/ppc64/modules/ppc64 @@ -0,0 +1 @@ +../../powerpc/modules/powerpc-powerpc64 \ No newline at end of file diff --git a/installer/ppc64/package-list b/installer/ppc64/package-list new file mode 120000 index 00000000000..d5716760226 --- /dev/null +++ b/installer/ppc64/package-list @@ -0,0 +1 @@ +../powerpc/package-list \ No newline at end of file diff --git a/installer/ppc64el/kernel-versions b/installer/ppc64el/kernel-versions new file mode 100644 index 00000000000..5f0d460d3eb --- /dev/null +++ b/installer/ppc64el/kernel-versions @@ -0,0 +1,2 @@ +# arch version flavour installedname suffix build-depends +ppc64el - powerpc64le - - - diff --git a/installer/ppc64el/modules/ppc64el/ata-modules b/installer/ppc64el/modules/ppc64el/ata-modules new file mode 100644 index 00000000000..77a471d2f78 --- /dev/null +++ b/installer/ppc64el/modules/ppc64el/ata-modules @@ -0,0 +1 @@ +#include "../../../ppc64/modules/ppc64/ata-modules" diff --git a/installer/ppc64el/modules/ppc64el/btrfs-modules b/installer/ppc64el/modules/ppc64el/btrfs-modules new file mode 100644 index 00000000000..4ab00bed8c2 --- /dev/null +++ b/installer/ppc64el/modules/ppc64el/btrfs-modules @@ -0,0 +1 @@ +#include "../../../ppc64/modules/ppc64/btrfs-modules" diff --git a/installer/ppc64el/modules/ppc64el/cdrom-core-modules b/installer/ppc64el/modules/ppc64el/cdrom-core-modules new file mode 100644 index 00000000000..ab06dbd9b92 --- /dev/null +++ b/installer/ppc64el/modules/ppc64el/cdrom-core-modules @@ -0,0 +1 @@ +#include "../../../ppc64/modules/ppc64/cdrom-core-modules" diff --git a/installer/ppc64el/modules/ppc64el/crc-modules b/installer/ppc64el/modules/ppc64el/crc-modules new file mode 100644 index 00000000000..faf2d628d40 --- /dev/null +++ b/installer/ppc64el/modules/ppc64el/crc-modules @@ -0,0 +1 @@ +#include "../../../ppc64/modules/ppc64/crc-modules" diff --git a/installer/ppc64el/modules/ppc64el/crypto-dm-modules b/installer/ppc64el/modules/ppc64el/crypto-dm-modules new file mode 100644 index 00000000000..2c530b3d41e --- /dev/null +++ b/installer/ppc64el/modules/ppc64el/crypto-dm-modules @@ -0,0 +1 @@ +#include "../../../ppc64/modules/ppc64/crypto-dm-modules" diff --git a/installer/ppc64el/modules/ppc64el/crypto-modules b/installer/ppc64el/modules/ppc64el/crypto-modules new file mode 100644 index 00000000000..c6170b1d3e8 --- /dev/null +++ b/installer/ppc64el/modules/ppc64el/crypto-modules @@ -0,0 +1 @@ +#include "../../../ppc64/modules/ppc64/crypto-modules" diff --git a/installer/ppc64el/modules/ppc64el/event-modules b/installer/ppc64el/modules/ppc64el/event-modules new file mode 100644 index 00000000000..b0e5f562626 --- /dev/null +++ b/installer/ppc64el/modules/ppc64el/event-modules @@ -0,0 +1 @@ +#include "../../../ppc64/modules/ppc64/event-modules" diff --git a/installer/ppc64el/modules/ppc64el/ext4-modules b/installer/ppc64el/modules/ppc64el/ext4-modules new file mode 100644 index 00000000000..ac5f4c066d3 --- /dev/null +++ b/installer/ppc64el/modules/ppc64el/ext4-modules @@ -0,0 +1 @@ +#include "../../../ppc64/modules/ppc64/ext4-modules" diff --git a/installer/ppc64el/modules/ppc64el/fancontrol-modules b/installer/ppc64el/modules/ppc64el/fancontrol-modules new file mode 100644 index 00000000000..55cde68adfb --- /dev/null +++ b/installer/ppc64el/modules/ppc64el/fancontrol-modules @@ -0,0 +1 @@ +#include "../../../ppc64/modules/ppc64/fancontrol-modules" diff --git a/installer/ppc64el/modules/ppc64el/fat-modules b/installer/ppc64el/modules/ppc64el/fat-modules new file mode 100644 index 00000000000..9ef0e07a2f4 --- /dev/null +++ b/installer/ppc64el/modules/ppc64el/fat-modules @@ -0,0 +1 @@ +#include "../../../ppc64/modules/ppc64/fat-modules" diff --git a/installer/ppc64el/modules/ppc64el/firewire-core-modules b/installer/ppc64el/modules/ppc64el/firewire-core-modules new file mode 100644 index 00000000000..30b2c4c7c66 --- /dev/null +++ b/installer/ppc64el/modules/ppc64el/firewire-core-modules @@ -0,0 +1 @@ +#include "../../../ppc64/modules/ppc64/firewire-core-modules" diff --git a/installer/ppc64el/modules/ppc64el/fuse-modules b/installer/ppc64el/modules/ppc64el/fuse-modules new file mode 100644 index 00000000000..73597f9e752 --- /dev/null +++ b/installer/ppc64el/modules/ppc64el/fuse-modules @@ -0,0 +1 @@ +#include "../../../ppc64/modules/ppc64/fuse-modules" diff --git a/installer/ppc64el/modules/ppc64el/hypervisor-modules b/installer/ppc64el/modules/ppc64el/hypervisor-modules new file mode 100644 index 00000000000..f2edc4b7757 --- /dev/null +++ b/installer/ppc64el/modules/ppc64el/hypervisor-modules @@ -0,0 +1 @@ +#include "../../../ppc64/modules/ppc64/hypervisor-modules" diff --git a/installer/ppc64el/modules/ppc64el/input-modules b/installer/ppc64el/modules/ppc64el/input-modules new file mode 100644 index 00000000000..e4625ac7792 --- /dev/null +++ b/installer/ppc64el/modules/ppc64el/input-modules @@ -0,0 +1 @@ +#include "../../../ppc64/modules/ppc64/input-modules" diff --git a/installer/ppc64el/modules/ppc64el/isofs-modules b/installer/ppc64el/modules/ppc64el/isofs-modules new file mode 100644 index 00000000000..18fb993d20e --- /dev/null +++ b/installer/ppc64el/modules/ppc64el/isofs-modules @@ -0,0 +1 @@ +#include "../../../ppc64/modules/ppc64/isofs-modules" diff --git a/installer/ppc64el/modules/ppc64el/jfs-modules b/installer/ppc64el/modules/ppc64el/jfs-modules new file mode 100644 index 00000000000..193513f5ff7 --- /dev/null +++ b/installer/ppc64el/modules/ppc64el/jfs-modules @@ -0,0 +1 @@ +#include "../../../ppc64/modules/ppc64/jfs-modules" diff --git a/installer/ppc64el/modules/ppc64el/kernel-image b/installer/ppc64el/modules/ppc64el/kernel-image new file mode 100644 index 00000000000..93f4a3702a4 --- /dev/null +++ b/installer/ppc64el/modules/ppc64el/kernel-image @@ -0,0 +1 @@ +#include "../../../ppc64/modules/ppc64/kernel-image" diff --git a/installer/ppc64el/modules/ppc64el/loop-modules b/installer/ppc64el/modules/ppc64el/loop-modules new file mode 100644 index 00000000000..fac3d38d443 --- /dev/null +++ b/installer/ppc64el/modules/ppc64el/loop-modules @@ -0,0 +1 @@ +#include "../../../ppc64/modules/ppc64/loop-modules" diff --git a/installer/ppc64el/modules/ppc64el/md-modules b/installer/ppc64el/modules/ppc64el/md-modules new file mode 100644 index 00000000000..03b10183f0e --- /dev/null +++ b/installer/ppc64el/modules/ppc64el/md-modules @@ -0,0 +1 @@ +#include "../../../ppc64/modules/ppc64/md-modules" diff --git a/installer/ppc64el/modules/ppc64el/mouse-modules b/installer/ppc64el/modules/ppc64el/mouse-modules new file mode 100644 index 00000000000..163e3bab08d --- /dev/null +++ b/installer/ppc64el/modules/ppc64el/mouse-modules @@ -0,0 +1 @@ +#include "../../../ppc64/modules/ppc64/mouse-modules" diff --git a/installer/ppc64el/modules/ppc64el/multipath-modules b/installer/ppc64el/modules/ppc64el/multipath-modules new file mode 100644 index 00000000000..cb7afcb659c --- /dev/null +++ b/installer/ppc64el/modules/ppc64el/multipath-modules @@ -0,0 +1 @@ +#include "../../../ppc64/modules/ppc64/multipath-modules" diff --git a/installer/ppc64el/modules/ppc64el/nbd-modules b/installer/ppc64el/modules/ppc64el/nbd-modules new file mode 100644 index 00000000000..6540c0af63b --- /dev/null +++ b/installer/ppc64el/modules/ppc64el/nbd-modules @@ -0,0 +1 @@ +#include "../../../ppc64/modules/ppc64/nbd-modules" diff --git a/installer/ppc64el/modules/ppc64el/nic-modules b/installer/ppc64el/modules/ppc64el/nic-modules new file mode 100644 index 00000000000..f8c5bb011ed --- /dev/null +++ b/installer/ppc64el/modules/ppc64el/nic-modules @@ -0,0 +1,6 @@ +#include "../../../ppc64/modules/ppc64/nic-modules" + +airport - +ehea - +ps3_gelic - +spidernet - diff --git a/installer/ppc64el/modules/ppc64el/nic-shared-modules b/installer/ppc64el/modules/ppc64el/nic-shared-modules new file mode 100644 index 00000000000..13812a86997 --- /dev/null +++ b/installer/ppc64el/modules/ppc64el/nic-shared-modules @@ -0,0 +1 @@ +#include "../../../ppc64/modules/ppc64/nic-shared-modules" diff --git a/installer/ppc64el/modules/ppc64el/ppp-modules b/installer/ppc64el/modules/ppc64el/ppp-modules new file mode 100644 index 00000000000..62620196758 --- /dev/null +++ b/installer/ppc64el/modules/ppc64el/ppp-modules @@ -0,0 +1 @@ +#include "../../../ppc64/modules/ppc64/ppp-modules" diff --git a/installer/ppc64el/modules/ppc64el/sata-modules b/installer/ppc64el/modules/ppc64el/sata-modules new file mode 100644 index 00000000000..6907d272eba --- /dev/null +++ b/installer/ppc64el/modules/ppc64el/sata-modules @@ -0,0 +1 @@ +#include "../../../ppc64/modules/ppc64/sata-modules" diff --git a/installer/ppc64el/modules/ppc64el/scsi-core-modules b/installer/ppc64el/modules/ppc64el/scsi-core-modules new file mode 100644 index 00000000000..dd496f79b5c --- /dev/null +++ b/installer/ppc64el/modules/ppc64el/scsi-core-modules @@ -0,0 +1 @@ +#include "../../../ppc64/modules/ppc64/scsi-core-modules" diff --git a/installer/ppc64el/modules/ppc64el/scsi-modules b/installer/ppc64el/modules/ppc64el/scsi-modules new file mode 100644 index 00000000000..da4567b84af --- /dev/null +++ b/installer/ppc64el/modules/ppc64el/scsi-modules @@ -0,0 +1,3 @@ +#include "../../../ppc64/modules/ppc64/scsi-modules" + +ps3rom - diff --git a/installer/ppc64el/modules/ppc64el/serial-modules b/installer/ppc64el/modules/ppc64el/serial-modules new file mode 100644 index 00000000000..22548f450ae --- /dev/null +++ b/installer/ppc64el/modules/ppc64el/serial-modules @@ -0,0 +1 @@ +#include "../../../ppc64/modules/ppc64/serial-modules" diff --git a/installer/ppc64el/modules/ppc64el/squashfs-modules b/installer/ppc64el/modules/ppc64el/squashfs-modules new file mode 100644 index 00000000000..8c0c6d1c2b8 --- /dev/null +++ b/installer/ppc64el/modules/ppc64el/squashfs-modules @@ -0,0 +1 @@ +#include "../../../ppc64/modules/ppc64/squashfs-modules" diff --git a/installer/ppc64el/modules/ppc64el/udf-modules b/installer/ppc64el/modules/ppc64el/udf-modules new file mode 100644 index 00000000000..9ab96e02600 --- /dev/null +++ b/installer/ppc64el/modules/ppc64el/udf-modules @@ -0,0 +1 @@ +#include "../../../ppc64/modules/ppc64/udf-modules" diff --git a/installer/ppc64el/modules/ppc64el/uinput-modules b/installer/ppc64el/modules/ppc64el/uinput-modules new file mode 100644 index 00000000000..3d3929e24ac --- /dev/null +++ b/installer/ppc64el/modules/ppc64el/uinput-modules @@ -0,0 +1 @@ +#include "../../../ppc64/modules/ppc64/uinput-modules" diff --git a/installer/ppc64el/modules/ppc64el/usb-modules b/installer/ppc64el/modules/ppc64el/usb-modules new file mode 100644 index 00000000000..45ac3cf89c0 --- /dev/null +++ b/installer/ppc64el/modules/ppc64el/usb-modules @@ -0,0 +1 @@ +#include "../../../ppc64/modules/ppc64/usb-modules" diff --git a/installer/ppc64el/modules/ppc64el/usb-serial-modules b/installer/ppc64el/modules/ppc64el/usb-serial-modules new file mode 100644 index 00000000000..63a8412e7ea --- /dev/null +++ b/installer/ppc64el/modules/ppc64el/usb-serial-modules @@ -0,0 +1 @@ +#include "../../../ppc64/modules/ppc64/usb-serial-modules" diff --git a/installer/ppc64el/modules/ppc64el/usb-storage-modules b/installer/ppc64el/modules/ppc64el/usb-storage-modules new file mode 100644 index 00000000000..1679b922b3a --- /dev/null +++ b/installer/ppc64el/modules/ppc64el/usb-storage-modules @@ -0,0 +1 @@ +#include "../../../ppc64/modules/ppc64/usb-storage-modules" diff --git a/installer/ppc64el/modules/ppc64el/virtio-modules b/installer/ppc64el/modules/ppc64el/virtio-modules new file mode 100644 index 00000000000..cbfbd113742 --- /dev/null +++ b/installer/ppc64el/modules/ppc64el/virtio-modules @@ -0,0 +1 @@ +#include "../../../ppc64/modules/ppc64/virtio-modules" diff --git a/installer/ppc64el/modules/ppc64el/xfs-modules b/installer/ppc64el/modules/ppc64el/xfs-modules new file mode 100644 index 00000000000..5e8a7ce69d9 --- /dev/null +++ b/installer/ppc64el/modules/ppc64el/xfs-modules @@ -0,0 +1 @@ +#include "../../../ppc64/modules/ppc64/xfs-modules" diff --git a/installer/ppc64el/package-list b/installer/ppc64el/package-list new file mode 120000 index 00000000000..a872ee13ea7 --- /dev/null +++ b/installer/ppc64el/package-list @@ -0,0 +1 @@ +../ppc64/package-list \ No newline at end of file diff --git a/installer/s390x/kernel-versions b/installer/s390x/kernel-versions new file mode 100644 index 00000000000..bbe139d5aa7 --- /dev/null +++ b/installer/s390x/kernel-versions @@ -0,0 +1,2 @@ +# arch version flavour installedname suffix build-depends +s390x - s390x - - - diff --git a/installer/s390x/modules/s390x/btrfs-modules b/installer/s390x/modules/s390x/btrfs-modules new file mode 100644 index 00000000000..e261e138838 --- /dev/null +++ b/installer/s390x/modules/s390x/btrfs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/s390x/modules/s390x/crc-modules b/installer/s390x/modules/s390x/crc-modules new file mode 100644 index 00000000000..7e00de705e4 --- /dev/null +++ b/installer/s390x/modules/s390x/crc-modules @@ -0,0 +1 @@ +#include diff --git a/installer/s390x/modules/s390x/crypto-dm-modules b/installer/s390x/modules/s390x/crypto-dm-modules new file mode 100644 index 00000000000..4c8f2354cd2 --- /dev/null +++ b/installer/s390x/modules/s390x/crypto-dm-modules @@ -0,0 +1 @@ +#include diff --git a/installer/s390x/modules/s390x/crypto-modules b/installer/s390x/modules/s390x/crypto-modules new file mode 100644 index 00000000000..3a1e862b4cc --- /dev/null +++ b/installer/s390x/modules/s390x/crypto-modules @@ -0,0 +1 @@ +#include diff --git a/installer/s390x/modules/s390x/dasd-extra-modules b/installer/s390x/modules/s390x/dasd-extra-modules new file mode 100644 index 00000000000..ddd10cdfb11 --- /dev/null +++ b/installer/s390x/modules/s390x/dasd-extra-modules @@ -0,0 +1 @@ +dasd_diag_mod diff --git a/installer/s390x/modules/s390x/dasd-modules b/installer/s390x/modules/s390x/dasd-modules new file mode 100644 index 00000000000..d3df219e70f --- /dev/null +++ b/installer/s390x/modules/s390x/dasd-modules @@ -0,0 +1,2 @@ +dasd_eckd_mod +dasd_fba_mod diff --git a/installer/s390x/modules/s390x/ext4-modules b/installer/s390x/modules/s390x/ext4-modules new file mode 100644 index 00000000000..394c577ce40 --- /dev/null +++ b/installer/s390x/modules/s390x/ext4-modules @@ -0,0 +1 @@ +#include diff --git a/installer/s390x/modules/s390x/fat-modules b/installer/s390x/modules/s390x/fat-modules new file mode 100644 index 00000000000..cce8fd30ca4 --- /dev/null +++ b/installer/s390x/modules/s390x/fat-modules @@ -0,0 +1,2 @@ +#include + diff --git a/installer/s390x/modules/s390x/fuse-modules b/installer/s390x/modules/s390x/fuse-modules new file mode 100644 index 00000000000..0b6ba0c8c8f --- /dev/null +++ b/installer/s390x/modules/s390x/fuse-modules @@ -0,0 +1 @@ +#include diff --git a/installer/s390x/modules/s390x/isofs-modules b/installer/s390x/modules/s390x/isofs-modules new file mode 100644 index 00000000000..da4fa9a3c77 --- /dev/null +++ b/installer/s390x/modules/s390x/isofs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/s390x/modules/s390x/kernel-image b/installer/s390x/modules/s390x/kernel-image new file mode 100644 index 00000000000..fd8c3a7721e --- /dev/null +++ b/installer/s390x/modules/s390x/kernel-image @@ -0,0 +1,2 @@ +#include +vmcp ? diff --git a/installer/s390x/modules/s390x/loop-modules b/installer/s390x/modules/s390x/loop-modules new file mode 100644 index 00000000000..c1c948fa331 --- /dev/null +++ b/installer/s390x/modules/s390x/loop-modules @@ -0,0 +1 @@ +#include diff --git a/installer/s390x/modules/s390x/md-modules b/installer/s390x/modules/s390x/md-modules new file mode 100644 index 00000000000..ade088ddbb2 --- /dev/null +++ b/installer/s390x/modules/s390x/md-modules @@ -0,0 +1,2 @@ +#include + diff --git a/installer/s390x/modules/s390x/multipath-modules b/installer/s390x/modules/s390x/multipath-modules new file mode 100644 index 00000000000..a8b69b2537a --- /dev/null +++ b/installer/s390x/modules/s390x/multipath-modules @@ -0,0 +1 @@ +#include diff --git a/installer/s390x/modules/s390x/nbd-modules b/installer/s390x/modules/s390x/nbd-modules new file mode 100644 index 00000000000..3c9b3e5d426 --- /dev/null +++ b/installer/s390x/modules/s390x/nbd-modules @@ -0,0 +1 @@ +#include diff --git a/installer/s390x/modules/s390x/nic-modules b/installer/s390x/modules/s390x/nic-modules new file mode 100644 index 00000000000..32056514d48 --- /dev/null +++ b/installer/s390x/modules/s390x/nic-modules @@ -0,0 +1,6 @@ +netiucv +ctcm +lcs +qeth +qeth_l2 +qeth_l3 diff --git a/installer/s390x/modules/s390x/scsi-core-modules b/installer/s390x/modules/s390x/scsi-core-modules new file mode 100644 index 00000000000..3537f82349a --- /dev/null +++ b/installer/s390x/modules/s390x/scsi-core-modules @@ -0,0 +1,2 @@ +#include + diff --git a/installer/s390x/modules/s390x/scsi-modules b/installer/s390x/modules/s390x/scsi-modules new file mode 100644 index 00000000000..1f0171d7e7a --- /dev/null +++ b/installer/s390x/modules/s390x/scsi-modules @@ -0,0 +1 @@ +zfcp diff --git a/installer/s390x/modules/s390x/udf-modules b/installer/s390x/modules/s390x/udf-modules new file mode 100644 index 00000000000..b90d7ee9b52 --- /dev/null +++ b/installer/s390x/modules/s390x/udf-modules @@ -0,0 +1 @@ +#include diff --git a/installer/s390x/modules/s390x/virtio-modules b/installer/s390x/modules/s390x/virtio-modules new file mode 100644 index 00000000000..61da39659c6 --- /dev/null +++ b/installer/s390x/modules/s390x/virtio-modules @@ -0,0 +1 @@ +#include diff --git a/installer/s390x/modules/s390x/xfs-modules b/installer/s390x/modules/s390x/xfs-modules new file mode 100644 index 00000000000..c020b5d399f --- /dev/null +++ b/installer/s390x/modules/s390x/xfs-modules @@ -0,0 +1,2 @@ +#include + diff --git a/installer/s390x/modules/s390x/zlib-modules b/installer/s390x/modules/s390x/zlib-modules new file mode 100644 index 00000000000..e02ad64bf9c --- /dev/null +++ b/installer/s390x/modules/s390x/zlib-modules @@ -0,0 +1 @@ +#include diff --git a/installer/s390x/package-list b/installer/s390x/package-list new file mode 100644 index 00000000000..4744d084a25 --- /dev/null +++ b/installer/s390x/package-list @@ -0,0 +1,19 @@ +# This file is used to build up the control file. The kernel version and +# "-di" are appended to the package names. Section can be left out. So can +# architecture, which is derived from the files in the modules directory. +# It overwrites specifications from /usr/share/kernel-wedge/package-list. +# + +Package: dasd-modules +Depends: kernel-image +Priority: standard +Description: dasd modules + This package contains dasd modules. + +Package: dasd-extra-modules +Depends: kernel-image, dasd-modules +Priority: optional +Description: optional dasd DIAG support + This package contains the module for dasd DIAG support. The udeb is + not loaded by default as the installer does not actually support this. + It can however be useful to have available in rescue situations. diff --git a/installer/sh4/kernel-versions b/installer/sh4/kernel-versions new file mode 100644 index 00000000000..b39e3cfb6e6 --- /dev/null +++ b/installer/sh4/kernel-versions @@ -0,0 +1,3 @@ +# arch version flavour installedname suffix build-depends +sh4 - sh7751r - y - +sh4 - sh7785lcr - y - diff --git a/installer/sh4/modules/sh4-sh7751r/btrfs-modules b/installer/sh4/modules/sh4-sh7751r/btrfs-modules new file mode 100644 index 00000000000..e261e138838 --- /dev/null +++ b/installer/sh4/modules/sh4-sh7751r/btrfs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sh4/modules/sh4-sh7751r/cdrom-core-modules b/installer/sh4/modules/sh4-sh7751r/cdrom-core-modules new file mode 100644 index 00000000000..e264d7aa348 --- /dev/null +++ b/installer/sh4/modules/sh4-sh7751r/cdrom-core-modules @@ -0,0 +1,2 @@ +#include + diff --git a/installer/sh4/modules/sh4-sh7751r/crc-modules b/installer/sh4/modules/sh4-sh7751r/crc-modules new file mode 100644 index 00000000000..7e00de705e4 --- /dev/null +++ b/installer/sh4/modules/sh4-sh7751r/crc-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sh4/modules/sh4-sh7751r/crypto-dm-modules b/installer/sh4/modules/sh4-sh7751r/crypto-dm-modules new file mode 100644 index 00000000000..4c8f2354cd2 --- /dev/null +++ b/installer/sh4/modules/sh4-sh7751r/crypto-dm-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sh4/modules/sh4-sh7751r/crypto-modules b/installer/sh4/modules/sh4-sh7751r/crypto-modules new file mode 100644 index 00000000000..3a1e862b4cc --- /dev/null +++ b/installer/sh4/modules/sh4-sh7751r/crypto-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sh4/modules/sh4-sh7751r/ext4-modules b/installer/sh4/modules/sh4-sh7751r/ext4-modules new file mode 100644 index 00000000000..394c577ce40 --- /dev/null +++ b/installer/sh4/modules/sh4-sh7751r/ext4-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sh4/modules/sh4-sh7751r/fat-modules b/installer/sh4/modules/sh4-sh7751r/fat-modules new file mode 100644 index 00000000000..274584eb65f --- /dev/null +++ b/installer/sh4/modules/sh4-sh7751r/fat-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sh4/modules/sh4-sh7751r/firewire-core-modules b/installer/sh4/modules/sh4-sh7751r/firewire-core-modules new file mode 100644 index 00000000000..dcac80af965 --- /dev/null +++ b/installer/sh4/modules/sh4-sh7751r/firewire-core-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sh4/modules/sh4-sh7751r/fuse-modules b/installer/sh4/modules/sh4-sh7751r/fuse-modules new file mode 100644 index 00000000000..0b6ba0c8c8f --- /dev/null +++ b/installer/sh4/modules/sh4-sh7751r/fuse-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sh4/modules/sh4-sh7751r/i2c-modules b/installer/sh4/modules/sh4-sh7751r/i2c-modules new file mode 100644 index 00000000000..203a607e73c --- /dev/null +++ b/installer/sh4/modules/sh4-sh7751r/i2c-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sh4/modules/sh4-sh7751r/isofs-modules b/installer/sh4/modules/sh4-sh7751r/isofs-modules new file mode 100644 index 00000000000..da4fa9a3c77 --- /dev/null +++ b/installer/sh4/modules/sh4-sh7751r/isofs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sh4/modules/sh4-sh7751r/jfs-modules b/installer/sh4/modules/sh4-sh7751r/jfs-modules new file mode 100644 index 00000000000..7e4d912b952 --- /dev/null +++ b/installer/sh4/modules/sh4-sh7751r/jfs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sh4/modules/sh4-sh7751r/kernel-image b/installer/sh4/modules/sh4-sh7751r/kernel-image new file mode 100644 index 00000000000..1d11b1921da --- /dev/null +++ b/installer/sh4/modules/sh4-sh7751r/kernel-image @@ -0,0 +1 @@ +#include diff --git a/installer/sh4/modules/sh4-sh7751r/loop-modules b/installer/sh4/modules/sh4-sh7751r/loop-modules new file mode 100644 index 00000000000..c1c948fa331 --- /dev/null +++ b/installer/sh4/modules/sh4-sh7751r/loop-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sh4/modules/sh4-sh7751r/md-modules b/installer/sh4/modules/sh4-sh7751r/md-modules new file mode 100644 index 00000000000..26115e10b80 --- /dev/null +++ b/installer/sh4/modules/sh4-sh7751r/md-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sh4/modules/sh4-sh7751r/minix-modules b/installer/sh4/modules/sh4-sh7751r/minix-modules new file mode 100644 index 00000000000..82b9843720a --- /dev/null +++ b/installer/sh4/modules/sh4-sh7751r/minix-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sh4/modules/sh4-sh7751r/multipath-modules b/installer/sh4/modules/sh4-sh7751r/multipath-modules new file mode 100644 index 00000000000..a8b69b2537a --- /dev/null +++ b/installer/sh4/modules/sh4-sh7751r/multipath-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sh4/modules/sh4-sh7751r/nbd-modules b/installer/sh4/modules/sh4-sh7751r/nbd-modules new file mode 100644 index 00000000000..3c9b3e5d426 --- /dev/null +++ b/installer/sh4/modules/sh4-sh7751r/nbd-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sh4/modules/sh4-sh7751r/nic-modules b/installer/sh4/modules/sh4-sh7751r/nic-modules new file mode 100644 index 00000000000..67761a69cc7 --- /dev/null +++ b/installer/sh4/modules/sh4-sh7751r/nic-modules @@ -0,0 +1,6 @@ +3c59x ? +8139too ? +e100 ? +e1000 ? +ne2k-pci ? +r8169 ? diff --git a/installer/sh4/modules/sh4-sh7751r/nic-usb-modules b/installer/sh4/modules/sh4-sh7751r/nic-usb-modules new file mode 100644 index 00000000000..c479669b477 --- /dev/null +++ b/installer/sh4/modules/sh4-sh7751r/nic-usb-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sh4/modules/sh4-sh7751r/pata-modules b/installer/sh4/modules/sh4-sh7751r/pata-modules new file mode 100644 index 00000000000..b0cd6337a28 --- /dev/null +++ b/installer/sh4/modules/sh4-sh7751r/pata-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sh4/modules/sh4-sh7751r/ppp-modules b/installer/sh4/modules/sh4-sh7751r/ppp-modules new file mode 100644 index 00000000000..1f26aa1ee60 --- /dev/null +++ b/installer/sh4/modules/sh4-sh7751r/ppp-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sh4/modules/sh4-sh7751r/sata-modules b/installer/sh4/modules/sh4-sh7751r/sata-modules new file mode 100644 index 00000000000..01318c258b5 --- /dev/null +++ b/installer/sh4/modules/sh4-sh7751r/sata-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sh4/modules/sh4-sh7751r/sound-modules b/installer/sh4/modules/sh4-sh7751r/sound-modules new file mode 100644 index 00000000000..68395ab3d99 --- /dev/null +++ b/installer/sh4/modules/sh4-sh7751r/sound-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sh4/modules/sh4-sh7751r/speakup-modules b/installer/sh4/modules/sh4-sh7751r/speakup-modules new file mode 100644 index 00000000000..29592721a7a --- /dev/null +++ b/installer/sh4/modules/sh4-sh7751r/speakup-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sh4/modules/sh4-sh7751r/squashfs-modules b/installer/sh4/modules/sh4-sh7751r/squashfs-modules new file mode 100644 index 00000000000..42d77887ad3 --- /dev/null +++ b/installer/sh4/modules/sh4-sh7751r/squashfs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sh4/modules/sh4-sh7751r/udf-modules b/installer/sh4/modules/sh4-sh7751r/udf-modules new file mode 100644 index 00000000000..b90d7ee9b52 --- /dev/null +++ b/installer/sh4/modules/sh4-sh7751r/udf-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sh4/modules/sh4-sh7751r/usb-serial-modules b/installer/sh4/modules/sh4-sh7751r/usb-serial-modules new file mode 100644 index 00000000000..c0a0dc3bd17 --- /dev/null +++ b/installer/sh4/modules/sh4-sh7751r/usb-serial-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sh4/modules/sh4-sh7751r/usb-storage-modules b/installer/sh4/modules/sh4-sh7751r/usb-storage-modules new file mode 100644 index 00000000000..8c5e81b55e3 --- /dev/null +++ b/installer/sh4/modules/sh4-sh7751r/usb-storage-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sh4/modules/sh4-sh7751r/virtio-modules b/installer/sh4/modules/sh4-sh7751r/virtio-modules new file mode 100644 index 00000000000..61da39659c6 --- /dev/null +++ b/installer/sh4/modules/sh4-sh7751r/virtio-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sh4/modules/sh4-sh7751r/xfs-modules b/installer/sh4/modules/sh4-sh7751r/xfs-modules new file mode 100644 index 00000000000..98374e2bbaf --- /dev/null +++ b/installer/sh4/modules/sh4-sh7751r/xfs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sh4/modules/sh4-sh7751r/zlib-modules b/installer/sh4/modules/sh4-sh7751r/zlib-modules new file mode 100644 index 00000000000..e02ad64bf9c --- /dev/null +++ b/installer/sh4/modules/sh4-sh7751r/zlib-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sh4/modules/sh4-sh7785lcr/btrfs-modules b/installer/sh4/modules/sh4-sh7785lcr/btrfs-modules new file mode 100644 index 00000000000..e261e138838 --- /dev/null +++ b/installer/sh4/modules/sh4-sh7785lcr/btrfs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sh4/modules/sh4-sh7785lcr/cdrom-core-modules b/installer/sh4/modules/sh4-sh7785lcr/cdrom-core-modules new file mode 100644 index 00000000000..e264d7aa348 --- /dev/null +++ b/installer/sh4/modules/sh4-sh7785lcr/cdrom-core-modules @@ -0,0 +1,2 @@ +#include + diff --git a/installer/sh4/modules/sh4-sh7785lcr/crc-modules b/installer/sh4/modules/sh4-sh7785lcr/crc-modules new file mode 100644 index 00000000000..7e00de705e4 --- /dev/null +++ b/installer/sh4/modules/sh4-sh7785lcr/crc-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sh4/modules/sh4-sh7785lcr/crypto-dm-modules b/installer/sh4/modules/sh4-sh7785lcr/crypto-dm-modules new file mode 100644 index 00000000000..4c8f2354cd2 --- /dev/null +++ b/installer/sh4/modules/sh4-sh7785lcr/crypto-dm-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sh4/modules/sh4-sh7785lcr/crypto-modules b/installer/sh4/modules/sh4-sh7785lcr/crypto-modules new file mode 100644 index 00000000000..3a1e862b4cc --- /dev/null +++ b/installer/sh4/modules/sh4-sh7785lcr/crypto-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sh4/modules/sh4-sh7785lcr/ext4-modules b/installer/sh4/modules/sh4-sh7785lcr/ext4-modules new file mode 100644 index 00000000000..394c577ce40 --- /dev/null +++ b/installer/sh4/modules/sh4-sh7785lcr/ext4-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sh4/modules/sh4-sh7785lcr/fat-modules b/installer/sh4/modules/sh4-sh7785lcr/fat-modules new file mode 100644 index 00000000000..274584eb65f --- /dev/null +++ b/installer/sh4/modules/sh4-sh7785lcr/fat-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sh4/modules/sh4-sh7785lcr/firewire-core-modules b/installer/sh4/modules/sh4-sh7785lcr/firewire-core-modules new file mode 100644 index 00000000000..dcac80af965 --- /dev/null +++ b/installer/sh4/modules/sh4-sh7785lcr/firewire-core-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sh4/modules/sh4-sh7785lcr/fuse-modules b/installer/sh4/modules/sh4-sh7785lcr/fuse-modules new file mode 100644 index 00000000000..0b6ba0c8c8f --- /dev/null +++ b/installer/sh4/modules/sh4-sh7785lcr/fuse-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sh4/modules/sh4-sh7785lcr/isofs-modules b/installer/sh4/modules/sh4-sh7785lcr/isofs-modules new file mode 100644 index 00000000000..da4fa9a3c77 --- /dev/null +++ b/installer/sh4/modules/sh4-sh7785lcr/isofs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sh4/modules/sh4-sh7785lcr/jfs-modules b/installer/sh4/modules/sh4-sh7785lcr/jfs-modules new file mode 100644 index 00000000000..7e4d912b952 --- /dev/null +++ b/installer/sh4/modules/sh4-sh7785lcr/jfs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sh4/modules/sh4-sh7785lcr/kernel-image b/installer/sh4/modules/sh4-sh7785lcr/kernel-image new file mode 100644 index 00000000000..1d11b1921da --- /dev/null +++ b/installer/sh4/modules/sh4-sh7785lcr/kernel-image @@ -0,0 +1 @@ +#include diff --git a/installer/sh4/modules/sh4-sh7785lcr/loop-modules b/installer/sh4/modules/sh4-sh7785lcr/loop-modules new file mode 100644 index 00000000000..c1c948fa331 --- /dev/null +++ b/installer/sh4/modules/sh4-sh7785lcr/loop-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sh4/modules/sh4-sh7785lcr/md-modules b/installer/sh4/modules/sh4-sh7785lcr/md-modules new file mode 100644 index 00000000000..26115e10b80 --- /dev/null +++ b/installer/sh4/modules/sh4-sh7785lcr/md-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sh4/modules/sh4-sh7785lcr/minix-modules b/installer/sh4/modules/sh4-sh7785lcr/minix-modules new file mode 100644 index 00000000000..82b9843720a --- /dev/null +++ b/installer/sh4/modules/sh4-sh7785lcr/minix-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sh4/modules/sh4-sh7785lcr/multipath-modules b/installer/sh4/modules/sh4-sh7785lcr/multipath-modules new file mode 100644 index 00000000000..a8b69b2537a --- /dev/null +++ b/installer/sh4/modules/sh4-sh7785lcr/multipath-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sh4/modules/sh4-sh7785lcr/nbd-modules b/installer/sh4/modules/sh4-sh7785lcr/nbd-modules new file mode 100644 index 00000000000..3c9b3e5d426 --- /dev/null +++ b/installer/sh4/modules/sh4-sh7785lcr/nbd-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sh4/modules/sh4-sh7785lcr/nic-modules b/installer/sh4/modules/sh4-sh7785lcr/nic-modules new file mode 100644 index 00000000000..67761a69cc7 --- /dev/null +++ b/installer/sh4/modules/sh4-sh7785lcr/nic-modules @@ -0,0 +1,6 @@ +3c59x ? +8139too ? +e100 ? +e1000 ? +ne2k-pci ? +r8169 ? diff --git a/installer/sh4/modules/sh4-sh7785lcr/nic-usb-modules b/installer/sh4/modules/sh4-sh7785lcr/nic-usb-modules new file mode 100644 index 00000000000..c479669b477 --- /dev/null +++ b/installer/sh4/modules/sh4-sh7785lcr/nic-usb-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sh4/modules/sh4-sh7785lcr/pata-modules b/installer/sh4/modules/sh4-sh7785lcr/pata-modules new file mode 100644 index 00000000000..b0cd6337a28 --- /dev/null +++ b/installer/sh4/modules/sh4-sh7785lcr/pata-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sh4/modules/sh4-sh7785lcr/ppp-modules b/installer/sh4/modules/sh4-sh7785lcr/ppp-modules new file mode 100644 index 00000000000..1f26aa1ee60 --- /dev/null +++ b/installer/sh4/modules/sh4-sh7785lcr/ppp-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sh4/modules/sh4-sh7785lcr/sata-modules b/installer/sh4/modules/sh4-sh7785lcr/sata-modules new file mode 100644 index 00000000000..01318c258b5 --- /dev/null +++ b/installer/sh4/modules/sh4-sh7785lcr/sata-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sh4/modules/sh4-sh7785lcr/sound-modules b/installer/sh4/modules/sh4-sh7785lcr/sound-modules new file mode 100644 index 00000000000..68395ab3d99 --- /dev/null +++ b/installer/sh4/modules/sh4-sh7785lcr/sound-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sh4/modules/sh4-sh7785lcr/speakup-modules b/installer/sh4/modules/sh4-sh7785lcr/speakup-modules new file mode 100644 index 00000000000..29592721a7a --- /dev/null +++ b/installer/sh4/modules/sh4-sh7785lcr/speakup-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sh4/modules/sh4-sh7785lcr/squashfs-modules b/installer/sh4/modules/sh4-sh7785lcr/squashfs-modules new file mode 100644 index 00000000000..42d77887ad3 --- /dev/null +++ b/installer/sh4/modules/sh4-sh7785lcr/squashfs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sh4/modules/sh4-sh7785lcr/udf-modules b/installer/sh4/modules/sh4-sh7785lcr/udf-modules new file mode 100644 index 00000000000..b90d7ee9b52 --- /dev/null +++ b/installer/sh4/modules/sh4-sh7785lcr/udf-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sh4/modules/sh4-sh7785lcr/usb-serial-modules b/installer/sh4/modules/sh4-sh7785lcr/usb-serial-modules new file mode 100644 index 00000000000..c0a0dc3bd17 --- /dev/null +++ b/installer/sh4/modules/sh4-sh7785lcr/usb-serial-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sh4/modules/sh4-sh7785lcr/xfs-modules b/installer/sh4/modules/sh4-sh7785lcr/xfs-modules new file mode 100644 index 00000000000..98374e2bbaf --- /dev/null +++ b/installer/sh4/modules/sh4-sh7785lcr/xfs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sh4/modules/sh4-sh7785lcr/zlib-modules b/installer/sh4/modules/sh4-sh7785lcr/zlib-modules new file mode 100644 index 00000000000..e02ad64bf9c --- /dev/null +++ b/installer/sh4/modules/sh4-sh7785lcr/zlib-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sh4/package-list b/installer/sh4/package-list new file mode 100644 index 00000000000..934de9c7f8b --- /dev/null +++ b/installer/sh4/package-list @@ -0,0 +1,7 @@ +# This file is used to build up the control file. The kernel version and +# "-di" are appended to the package names. Section can be left out. So can +# architecture, which is derived from the files in the modules directory. +# It overwrites specifications from /usr/share/kernel-wedge/package-list. +# +Package: kernel-image +Provides: event-modules, fb-modules, input-modules, mouse-modules, nic-shared-modules, rtc-modules, uinput-modules, usb-modules diff --git a/installer/sparc64/kernel-versions b/installer/sparc64/kernel-versions new file mode 100644 index 00000000000..4811933864c --- /dev/null +++ b/installer/sparc64/kernel-versions @@ -0,0 +1,2 @@ +# arch version flavour installedname suffix build-depends +sparc64 - sparc64 - y - diff --git a/installer/sparc64/modules/sparc64/ata-modules b/installer/sparc64/modules/sparc64/ata-modules new file mode 100644 index 00000000000..b81c0f38b74 --- /dev/null +++ b/installer/sparc64/modules/sparc64/ata-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sparc64/modules/sparc64/btrfs-modules b/installer/sparc64/modules/sparc64/btrfs-modules new file mode 100644 index 00000000000..e261e138838 --- /dev/null +++ b/installer/sparc64/modules/sparc64/btrfs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sparc64/modules/sparc64/cdrom-core-modules b/installer/sparc64/modules/sparc64/cdrom-core-modules new file mode 100644 index 00000000000..e264d7aa348 --- /dev/null +++ b/installer/sparc64/modules/sparc64/cdrom-core-modules @@ -0,0 +1,2 @@ +#include + diff --git a/installer/sparc64/modules/sparc64/crc-modules b/installer/sparc64/modules/sparc64/crc-modules new file mode 100644 index 00000000000..7e00de705e4 --- /dev/null +++ b/installer/sparc64/modules/sparc64/crc-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sparc64/modules/sparc64/crypto-dm-modules b/installer/sparc64/modules/sparc64/crypto-dm-modules new file mode 100644 index 00000000000..4c8f2354cd2 --- /dev/null +++ b/installer/sparc64/modules/sparc64/crypto-dm-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sparc64/modules/sparc64/crypto-modules b/installer/sparc64/modules/sparc64/crypto-modules new file mode 100644 index 00000000000..3a1e862b4cc --- /dev/null +++ b/installer/sparc64/modules/sparc64/crypto-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sparc64/modules/sparc64/ext4-modules b/installer/sparc64/modules/sparc64/ext4-modules new file mode 100644 index 00000000000..394c577ce40 --- /dev/null +++ b/installer/sparc64/modules/sparc64/ext4-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sparc64/modules/sparc64/fat-modules b/installer/sparc64/modules/sparc64/fat-modules new file mode 100644 index 00000000000..cce8fd30ca4 --- /dev/null +++ b/installer/sparc64/modules/sparc64/fat-modules @@ -0,0 +1,2 @@ +#include + diff --git a/installer/sparc64/modules/sparc64/fuse-modules b/installer/sparc64/modules/sparc64/fuse-modules new file mode 100644 index 00000000000..0b6ba0c8c8f --- /dev/null +++ b/installer/sparc64/modules/sparc64/fuse-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sparc64/modules/sparc64/input-modules b/installer/sparc64/modules/sparc64/input-modules new file mode 100644 index 00000000000..5ecb595a4a4 --- /dev/null +++ b/installer/sparc64/modules/sparc64/input-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sparc64/modules/sparc64/isofs-modules b/installer/sparc64/modules/sparc64/isofs-modules new file mode 100644 index 00000000000..da4fa9a3c77 --- /dev/null +++ b/installer/sparc64/modules/sparc64/isofs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sparc64/modules/sparc64/jfs-modules b/installer/sparc64/modules/sparc64/jfs-modules new file mode 100644 index 00000000000..7e4d912b952 --- /dev/null +++ b/installer/sparc64/modules/sparc64/jfs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sparc64/modules/sparc64/kernel-image b/installer/sparc64/modules/sparc64/kernel-image new file mode 100644 index 00000000000..1d11b1921da --- /dev/null +++ b/installer/sparc64/modules/sparc64/kernel-image @@ -0,0 +1 @@ +#include diff --git a/installer/sparc64/modules/sparc64/md-modules b/installer/sparc64/modules/sparc64/md-modules new file mode 100644 index 00000000000..ade088ddbb2 --- /dev/null +++ b/installer/sparc64/modules/sparc64/md-modules @@ -0,0 +1,2 @@ +#include + diff --git a/installer/sparc64/modules/sparc64/multipath-modules b/installer/sparc64/modules/sparc64/multipath-modules new file mode 100644 index 00000000000..a8b69b2537a --- /dev/null +++ b/installer/sparc64/modules/sparc64/multipath-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sparc64/modules/sparc64/nbd-modules b/installer/sparc64/modules/sparc64/nbd-modules new file mode 100644 index 00000000000..3c9b3e5d426 --- /dev/null +++ b/installer/sparc64/modules/sparc64/nbd-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sparc64/modules/sparc64/nic-modules b/installer/sparc64/modules/sparc64/nic-modules new file mode 100644 index 00000000000..ed625047dc1 --- /dev/null +++ b/installer/sparc64/modules/sparc64/nic-modules @@ -0,0 +1,50 @@ +3c59x +8139too +8390 +b44 +dl2k +epic100 +eql +fealnx +mii +natsemi +ne2k-pci +ns83820 +pcnet32 +sis900 +starfire +sundance +typhoon +via-rhine +yellowfin +e100 +e1000 +e1000e +skfp +tg3 +sungem +sungem_phy +tulip +winbond-840 +dmfe +sunhme +sunqe +sunlance +sunbmac +myri_sbus ? +cassini +cxgb +sis190 +skge +uli526x +qla3xxx +atl1 +niu +igb +igbvf + +# Support for virtual network devices under Sun Logical Domains. +sunvnet ? + +pps_core +ptp diff --git a/installer/sparc64/modules/sparc64/pata-modules b/installer/sparc64/modules/sparc64/pata-modules new file mode 100644 index 00000000000..b0cd6337a28 --- /dev/null +++ b/installer/sparc64/modules/sparc64/pata-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sparc64/modules/sparc64/ppp-modules b/installer/sparc64/modules/sparc64/ppp-modules new file mode 100644 index 00000000000..f1ae9b3d15a --- /dev/null +++ b/installer/sparc64/modules/sparc64/ppp-modules @@ -0,0 +1,2 @@ +#include + diff --git a/installer/sparc64/modules/sparc64/sata-modules b/installer/sparc64/modules/sparc64/sata-modules new file mode 100644 index 00000000000..01318c258b5 --- /dev/null +++ b/installer/sparc64/modules/sparc64/sata-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sparc64/modules/sparc64/scsi-core-modules b/installer/sparc64/modules/sparc64/scsi-core-modules new file mode 100644 index 00000000000..6026fdf46e6 --- /dev/null +++ b/installer/sparc64/modules/sparc64/scsi-core-modules @@ -0,0 +1,6 @@ +#include + +# Support for virtual disk devices as a client under Sun Logical Domains. +# Does not really belong here, but it's better than adding a new kernel +# udeb just for this module. +sunvdc ? diff --git a/installer/sparc64/modules/sparc64/scsi-modules b/installer/sparc64/modules/sparc64/scsi-modules new file mode 100644 index 00000000000..afceaf8ecfe --- /dev/null +++ b/installer/sparc64/modules/sparc64/scsi-modules @@ -0,0 +1,27 @@ +3w-9xxx +3w-xxxx +aacraid +aic79xx +aic7xxx +aic94xx +arcmsr +atp870u ? +dc395x +dmx3191d +hptiop +initio +ipr +lpfc +megaraid +megaraid_sas +mpt3sas +mptsas +mptspi +osst +qla1280 ? +qla2xxx ? +qla4xxx ? +qlogicpti ? +stex +sun_esp +sym53c8xx diff --git a/installer/sparc64/modules/sparc64/squashfs-modules b/installer/sparc64/modules/sparc64/squashfs-modules new file mode 100644 index 00000000000..42d77887ad3 --- /dev/null +++ b/installer/sparc64/modules/sparc64/squashfs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sparc64/modules/sparc64/udf-modules b/installer/sparc64/modules/sparc64/udf-modules new file mode 100644 index 00000000000..b90d7ee9b52 --- /dev/null +++ b/installer/sparc64/modules/sparc64/udf-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sparc64/modules/sparc64/ufs-modules b/installer/sparc64/modules/sparc64/ufs-modules new file mode 100644 index 00000000000..163ead095a5 --- /dev/null +++ b/installer/sparc64/modules/sparc64/ufs-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sparc64/modules/sparc64/usb-modules b/installer/sparc64/modules/sparc64/usb-modules new file mode 100644 index 00000000000..c598dedd811 --- /dev/null +++ b/installer/sparc64/modules/sparc64/usb-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sparc64/modules/sparc64/usb-storage-modules b/installer/sparc64/modules/sparc64/usb-storage-modules new file mode 100644 index 00000000000..272d95e2e8b --- /dev/null +++ b/installer/sparc64/modules/sparc64/usb-storage-modules @@ -0,0 +1,2 @@ +#include + diff --git a/installer/sparc64/modules/sparc64/virtio-modules b/installer/sparc64/modules/sparc64/virtio-modules new file mode 100644 index 00000000000..61da39659c6 --- /dev/null +++ b/installer/sparc64/modules/sparc64/virtio-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sparc64/modules/sparc64/xfs-modules b/installer/sparc64/modules/sparc64/xfs-modules new file mode 100644 index 00000000000..c020b5d399f --- /dev/null +++ b/installer/sparc64/modules/sparc64/xfs-modules @@ -0,0 +1,2 @@ +#include + diff --git a/installer/sparc64/modules/sparc64/zlib-modules b/installer/sparc64/modules/sparc64/zlib-modules new file mode 100644 index 00000000000..e02ad64bf9c --- /dev/null +++ b/installer/sparc64/modules/sparc64/zlib-modules @@ -0,0 +1 @@ +#include diff --git a/installer/sparc64/package-list b/installer/sparc64/package-list new file mode 100644 index 00000000000..1e5e2f638fd --- /dev/null +++ b/installer/sparc64/package-list @@ -0,0 +1,15 @@ +# This file is used to build up the control file. The kernel version and +# "-di" are appended to the package names. Section can be left out. So can +# architecture, which is derived from the files in the modules directory. +# It overwrites specifications from /usr/share/kernel-wedge/package-list. +# + +Package: nic-modules +Priority: standard +Description: Network card modules for Sparc kernels + This package contains the drivers for the Happy Meal/Big Mac 10/100BaseT, + Sun QuadEthernet and MyriCOM Gigabit Ethernet SBus devices for SPARC + systems, as well as various PCI NIC drivers (only on sparc64.) + . + Do not install this package on a real Debian system! You probably + want a kernel-image package instead. diff --git a/lib/python/debian_linux/__init__.py b/lib/python/debian_linux/__init__.py new file mode 100644 index 00000000000..b785cebf710 --- /dev/null +++ b/lib/python/debian_linux/__init__.py @@ -0,0 +1 @@ +# Module diff --git a/lib/python/debian_linux/abi.py b/lib/python/debian_linux/abi.py new file mode 100644 index 00000000000..0c4b3bdbc7c --- /dev/null +++ b/lib/python/debian_linux/abi.py @@ -0,0 +1,42 @@ +class Symbol(object): + def __init__(self, name, module, version, export): + self.name, self.module = name, module + self.version, self.export = version, export + + def __eq__(self, other): + if not isinstance(other, Symbol): + return NotImplemented + + # Symbols are resolved to modules by depmod at installation/ + # upgrade time, not compile time, so moving a symbol between + # modules is not an ABI change. Compare everything else. + if self.name != other.name: + return False + if self.version != other.version: + return False + if self.export != other.export: + return False + + return True + + def __ne__(self, other): + ret = self.__eq__(other) + if ret is NotImplemented: + return ret + return not ret + + +class Symbols(dict): + def __init__(self, file=None): + if file: + self.read(file) + + def read(self, file): + for line in file: + version, name, module, export = line.strip().split() + self[name] = Symbol(name, module, version, export) + + def write(self, file): + for s in sorted(self.values(), key=lambda i: i.name): + file.write("%s %s %s %s\n" % + (s.version, s.name, s.module, s.export)) diff --git a/lib/python/debian_linux/config.py b/lib/python/debian_linux/config.py new file mode 100644 index 00000000000..004469af8fa --- /dev/null +++ b/lib/python/debian_linux/config.py @@ -0,0 +1,260 @@ +import collections +import os +import os.path +import pickle +import re +import sys +import textwrap + +from configparser import RawConfigParser + +__all__ = [ + 'ConfigCoreDump', + 'ConfigCoreHierarchy', + 'ConfigParser', +] + + +class SchemaItemBoolean(object): + def __call__(self, i): + i = i.strip().lower() + if i in ("true", "1"): + return True + if i in ("false", "0"): + return False + raise Error + + +class SchemaItemInteger(object): + def __call__(self, i): + try: + return int(i.strip(), 0) + except ValueError: + raise Error + + +class SchemaItemList(object): + def __init__(self, type="\s+"): + self.type = type + + def __call__(self, i): + i = i.strip() + if not i: + return [] + return [j.strip() for j in re.split(self.type, i)] + + +# Using OrderedDict instead of dict makes the pickled config reproducible +class ConfigCore(collections.OrderedDict): + def get_merge(self, section, arch, featureset, flavour, key, default=None): + temp = [] + + if arch and featureset and flavour: + temp.append(self.get((section, arch, featureset, flavour), {}).get(key)) + temp.append(self.get((section, arch, None, flavour), {}).get(key)) + if arch and featureset: + temp.append(self.get((section, arch, featureset), {}).get(key)) + if arch: + temp.append(self.get((section, arch), {}).get(key)) + if featureset: + temp.append(self.get((section, None, featureset), {}).get(key)) + temp.append(self.get((section,), {}).get(key)) + + ret = [] + + for i in temp: + if i is None: + continue + elif isinstance(i, (list, tuple)): + ret.extend(i) + elif ret: + # TODO + return ret + else: + return i + + return ret or default + + def merge(self, section, arch=None, featureset=None, flavour=None): + ret = {} + ret.update(self.get((section,), {})) + if featureset: + ret.update(self.get((section, None, featureset), {})) + if arch: + ret.update(self.get((section, arch), {})) + if arch and featureset: + ret.update(self.get((section, arch, featureset), {})) + if arch and featureset and flavour: + ret.update(self.get((section, arch, None, flavour), {})) + ret.update(self.get((section, arch, featureset, flavour), {})) + return ret + + def dump(self, fp): + pickle.dump(self, fp, 0) + + +class ConfigCoreDump(object): + def __new__(self, fp): + return pickle.load(fp) + + +class ConfigCoreHierarchy(object): + schema_base = { + 'base': { + 'arches': SchemaItemList(), + 'enabled': SchemaItemBoolean(), + 'featuresets': SchemaItemList(), + 'flavours': SchemaItemList(), + }, + } + + def __new__(cls, schema, dirs=[]): + schema_complete = cls.schema_base.copy() + for key, value in schema.items(): + schema_complete.setdefault(key, {}).update(value) + return cls.Reader(dirs, schema_complete)() + + class Reader(object): + config_name = "defines" + + def __init__(self, dirs, schema): + self.dirs, self.schema = dirs, schema + + def __call__(self): + ret = ConfigCore() + self.read(ret) + return ret + + def get_files(self, *dirs): + dirs = list(dirs) + dirs.append(self.config_name) + return (os.path.join(i, *dirs) for i in self.dirs if i) + + def read_arch(self, ret, arch): + config = ConfigParser(self.schema) + config.read(self.get_files(arch)) + + featuresets = config['base', ].get('featuresets', []) + flavours = config['base', ].get('flavours', []) + + for section in iter(config): + if section[0] in featuresets: + real = (section[-1], arch, section[0]) + elif len(section) > 1: + real = (section[-1], arch, None) + section[:-1] + else: + real = (section[-1], arch) + section[:-1] + s = ret.get(real, {}) + s.update(config[section]) + ret[tuple(real)] = s + + for featureset in featuresets: + self.read_arch_featureset(ret, arch, featureset) + + if flavours: + base = ret['base', arch] + featuresets.insert(0, 'none') + base['featuresets'] = featuresets + del base['flavours'] + ret['base', arch] = base + ret['base', arch, 'none'] = {'flavours': flavours, 'implicit-flavour': True} + + def read_arch_featureset(self, ret, arch, featureset): + config = ConfigParser(self.schema) + config.read(self.get_files(arch, featureset)) + + flavours = config['base', ].get('flavours', []) + + for section in iter(config): + real = (section[-1], arch, featureset) + section[:-1] + s = ret.get(real, {}) + s.update(config[section]) + ret[tuple(real)] = s + + def read(self, ret): + config = ConfigParser(self.schema) + config.read(self.get_files()) + + arches = config['base', ]['arches'] + featuresets = config['base', ].get('featuresets', []) + + for section in iter(config): + if section[0].startswith('featureset-'): + real = (section[-1], None, section[0][11:]) + else: + real = (section[-1],) + section[1:] + ret[real] = config[section] + + for arch in arches: + self.read_arch(ret, arch) + for featureset in featuresets: + self.read_featureset(ret, featureset) + + def read_featureset(self, ret, featureset): + config = ConfigParser(self.schema) + config.read(self.get_files('featureset-%s' % featureset)) + + for section in iter(config): + real = (section[-1], None, featureset) + s = ret.get(real, {}) + s.update(config[section]) + ret[real] = s + + +class ConfigParser(object): + __slots__ = '_config', 'schemas' + + def __init__(self, schemas): + self.schemas = schemas + + self._config = config = RawConfigParser() + + def __getitem__(self, key): + return self._convert()[key] + + def __iter__(self): + return iter(self._convert()) + + def __str__(self): + return '<%s(%s)>' % (self.__class__.__name__, self._convert()) + + def _convert(self): + ret = {} + for section in self._config.sections(): + data = {} + for key, value in self._config.items(section): + data[key] = value + section_list = section.split('_') + section_base = section_list[-1] + if section_base in self.schemas: + section_ret = tuple(section_list) + data = self._convert_one(self.schemas[section_base], data) + else: + section_ret = (section, ) + ret[section_ret] = data + return ret + + def _convert_one(self, schema, data): + ret = {} + for key, value in data.items(): + if key in schema: + value = schema[key](value) + ret[key] = value + return ret + + def keys(self): + return self._convert().keys() + + def read(self, data): + return self._config.read(data) + + +if __name__ == '__main__': + import sys + sys.path.append('debian/lib/python') + config = ConfigCoreDump(open('debian/config.defines.dump', 'rb')) + for section, items in sorted(config.items(), key=lambda a:tuple(i or '' for i in a[0])): + print(u"[%s]" % (section,)) + for item, value in sorted(items.items()): + print(u"%s: %s" % (item, value)) + print() diff --git a/lib/python/debian_linux/debian.py b/lib/python/debian_linux/debian.py new file mode 100644 index 00000000000..7ad5f93274c --- /dev/null +++ b/lib/python/debian_linux/debian.py @@ -0,0 +1,468 @@ +import collections +import os.path +import re + +from . import utils + + +class Changelog(list): + _rules = r""" +^ +(?P + \w[-+0-9a-z.]+ +) +\ +\( +(?P + [^\(\)\ \t]+ +) +\) +\s+ +(?P + [-+0-9a-zA-Z.]+ +) +\;\s+urgency= +(?P + \w+ +) +""" + _re = re.compile(_rules, re.X) + + class Entry(object): + __slot__ = 'distribution', 'source', 'version', 'urgency' + + def __init__(self, distribution, source, version, urgency): + self.distribution, self.source, self.version, self.urgency = \ + distribution, source, version, urgency + + def __init__(self, dir='', version=None): + if version is None: + version = Version + f = open(os.path.join(dir, "debian/changelog"), encoding="UTF-8") + while True: + line = f.readline() + if not line: + break + match = self._re.match(line) + if not match: + continue + try: + v = version(match.group('version')) + except Exception: + if not len(self): + raise + v = Version(match.group('version')) + self.append(self.Entry(match.group('distribution'), + match.group('source'), v, + match.group('urgency'))) + + +class Version(object): + _version_rules = r""" +^ +(?: + (?P + \d+ + ) + : +)? +(?P + .+? +) +(?: + - + (?P[^-]+) +)? +$ +""" + _version_re = re.compile(_version_rules, re.X) + + def __init__(self, version): + match = self._version_re.match(version) + if match is None: + raise RuntimeError(u"Invalid debian version") + self.epoch = None + if match.group("epoch") is not None: + self.epoch = int(match.group("epoch")) + self.upstream = match.group("upstream") + self.revision = match.group("revision") + + def __str__(self): + return self.complete + + @property + def complete(self): + if self.epoch is not None: + return u"%d:%s" % (self.epoch, self.complete_noepoch) + return self.complete_noepoch + + @property + def complete_noepoch(self): + if self.revision is not None: + return u"%s-%s" % (self.upstream, self.revision) + return self.upstream + + @property + def debian(self): + from warnings import warn + warn(u"debian argument was replaced by revision", DeprecationWarning, stacklevel=2) + return self.revision + + +class VersionLinux(Version): + _version_linux_rules = r""" +^ +(?P + \d+\.\d+ +) +(?P + (?:\.\d+)? + (?:-[a-z]+\d+)? +) +(?: + ~ + (?P + .+? + ) +)? +(?: + \.dfsg\. + (?P + \d+ + ) +)? +- +\d+ +(\.\d+)? +(?: + (?P + ~exp\d+ + ) + | + (?P + [~+]deb\d+u\d+ + )? + (?P + ~bpo\d+\+\d+ + )? + | + (?P + [^-]+ + ) +) +$ +""" + _version_linux_re = re.compile(_version_linux_rules, re.X) + + def __init__(self, version): + super(VersionLinux, self).__init__(version) + match = self._version_linux_re.match(version) + if match is None: + raise RuntimeError(u"Invalid debian linux version") + d = match.groupdict() + self.linux_modifier = d['modifier'] + self.linux_version = d['version'] + if d['modifier'] is not None: + assert not d['update'] + self.linux_upstream = '-'.join((d['version'], d['modifier'])) + else: + self.linux_upstream = d['version'] + self.linux_upstream_full = self.linux_upstream + d['update'] + self.linux_dfsg = d['dfsg'] + self.linux_revision_experimental = match.group('revision_experimental') and True + self.linux_revision_security = match.group('revision_security') and True + self.linux_revision_backports = match.group('revision_backports') and True + self.linux_revision_other = match.group('revision_other') and True + + +class PackageArchitecture(collections.MutableSet): + __slots__ = '_data' + + def __init__(self, value=None): + self._data = set() + if value: + self.extend(value) + + def __contains__(self, value): + return self._data.__contains__(value) + + def __iter__(self): + return self._data.__iter__() + + def __len__(self): + return self._data.__len__() + + def __str__(self): + return ' '.join(sorted(self)) + + def add(self, value): + self._data.add(value) + + def discard(self, value): + self._data.discard(value) + + def extend(self, value): + if isinstance(value, str): + for i in re.split('\s', value.strip()): + self.add(i) + else: + raise RuntimeError + + +class PackageDescription(object): + __slots__ = "short", "long" + + def __init__(self, value=None): + self.short = [] + self.long = [] + if value is not None: + desc_split = value.split("\n", 1) + self.append_short(desc_split[0]) + if len(desc_split) == 2: + self.append(desc_split[1]) + + def __str__(self): + wrap = utils.TextWrapper(width=74, fix_sentence_endings=True).wrap + short = ', '.join(self.short) + long_pars = [] + for i in self.long: + long_pars.append(wrap(i)) + long = '\n .\n '.join(['\n '.join(i) for i in long_pars]) + return short + '\n ' + long if long else short + + def append(self, str): + str = str.strip() + if str: + self.long.extend(str.split(u"\n.\n")) + + def append_short(self, str): + for i in [i.strip() for i in str.split(u",")]: + if i: + self.short.append(i) + + def extend(self, desc): + if isinstance(desc, PackageDescription): + self.short.extend(desc.short) + self.long.extend(desc.long) + else: + raise TypeError + + +class PackageRelation(list): + def __init__(self, value=None, override_arches=None): + if value: + self.extend(value, override_arches) + + def __str__(self): + return ', '.join(str(i) for i in self) + + def _search_value(self, value): + for i in self: + if i._search_value(value): + return i + return None + + def append(self, value, override_arches=None): + if isinstance(value, str): + value = PackageRelationGroup(value, override_arches) + elif not isinstance(value, PackageRelationGroup): + raise ValueError(u"got %s" % type(value)) + j = self._search_value(value) + if j: + j._update_arches(value) + else: + super(PackageRelation, self).append(value) + + def extend(self, value, override_arches=None): + if isinstance(value, str): + value = (j.strip() for j in re.split(',', value.strip())) + for i in value: + self.append(i, override_arches) + + +class PackageRelationGroup(list): + def __init__(self, value=None, override_arches=None): + if value: + self.extend(value, override_arches) + + def __str__(self): + return ' | '.join(str(i) for i in self) + + def _search_value(self, value): + for i, j in zip(self, value): + if i.name != j.name or i.operator != j.operator or \ + i.version != j.version or i.restrictions != j.restrictions: + return None + return self + + def _update_arches(self, value): + for i, j in zip(self, value): + if i.arches: + for arch in j.arches: + if arch not in i.arches: + i.arches.append(arch) + + def append(self, value, override_arches=None): + if isinstance(value, str): + value = PackageRelationEntry(value, override_arches) + elif not isinstance(value, PackageRelationEntry): + raise ValueError + super(PackageRelationGroup, self).append(value) + + def extend(self, value, override_arches=None): + if isinstance(value, str): + value = (j.strip() for j in re.split('\|', value.strip())) + for i in value: + self.append(i, override_arches) + + +class PackageRelationEntry(object): + __slots__ = "name", "operator", "version", "arches", "restrictions" + + _re = re.compile(r'^(\S+)(?: \((<<|<=|=|!=|>=|>>)\s*([^)]+)\))?(?: \[([^]]+)\])?(?: <([^>]+)>)?$') + + class _operator(object): + OP_LT = 1 + OP_LE = 2 + OP_EQ = 3 + OP_NE = 4 + OP_GE = 5 + OP_GT = 6 + + operators = { + '<<': OP_LT, + '<=': OP_LE, + '=': OP_EQ, + '!=': OP_NE, + '>=': OP_GE, + '>>': OP_GT, + } + + operators_neg = { + OP_LT: OP_GE, + OP_LE: OP_GT, + OP_EQ: OP_NE, + OP_NE: OP_EQ, + OP_GE: OP_LT, + OP_GT: OP_LE, + } + + operators_text = dict((b, a) for a, b in operators.items()) + + __slots__ = '_op', + + def __init__(self, value): + self._op = self.operators[value] + + def __neg__(self): + return self.__class__(self.operators_text[self.operators_neg[self._op]]) + + def __str__(self): + return self.operators_text[self._op] + + def __eq__(self, other): + return type(other) == type(self) and self._op == other._op + + def __init__(self, value=None, override_arches=None): + if not isinstance(value, str): + raise ValueError + + self.parse(value) + + if override_arches: + self.arches = list(override_arches) + + def __str__(self): + ret = [self.name] + if self.operator is not None and self.version is not None: + ret.extend((' (', str(self.operator), ' ', self.version, ')')) + if self.arches: + ret.extend((' [', ' '.join(self.arches), ']')) + if self.restrictions: + ret.extend((' <', ' '.join(self.restrictions), '>')) + return ''.join(ret) + + def parse(self, value): + match = self._re.match(value) + if match is None: + raise RuntimeError(u"Can't parse dependency %s" % value) + match = match.groups() + self.name = match[0] + if match[1] is not None: + self.operator = self._operator(match[1]) + else: + self.operator = None + self.version = match[2] + if match[3] is not None: + self.arches = re.split('\s+', match[3]) + else: + self.arches = [] + if match[4] is not None: + self.restrictions = re.split('\s+', match[4]) + else: + self.restrictions = [] + + +class _ControlFileDict(dict): + def __setitem__(self, key, value): + try: + cls = self._fields[key] + if not isinstance(value, cls): + value = cls(value) + except KeyError: + pass + super(_ControlFileDict, self).__setitem__(key, value) + + def keys(self): + keys = set(super(_ControlFileDict, self).keys()) + for i in self._fields.keys(): + if i in self: + keys.remove(i) + yield i + for i in sorted(list(keys)): + yield i + + def items(self): + for i in self.keys(): + yield (i, self[i]) + + def values(self): + for i in self.keys(): + yield self[i] + + +class Package(_ControlFileDict): + _fields = collections.OrderedDict(( + ('Package', str), + ('Source', str), + ('Architecture', PackageArchitecture), + ('Section', str), + ('Priority', str), + ('Maintainer', str), + ('Uploaders', str), + ('Standards-Version', str), + ('Build-Depends', PackageRelation), + ('Build-Depends-Arch', PackageRelation), + ('Build-Depends-Indep', PackageRelation), + ('Provides', PackageRelation), + ('Pre-Depends', PackageRelation), + ('Depends', PackageRelation), + ('Recommends', PackageRelation), + ('Suggests', PackageRelation), + ('Replaces', PackageRelation), + ('Breaks', PackageRelation), + ('Conflicts', PackageRelation), + ('Description', PackageDescription), + )) + + +class TestsControl(_ControlFileDict): + _fields = collections.OrderedDict(( + ('Tests', str), + ('Test-Command', str), + ('Restrictions', str), + ('Features', str), + ('Depends', PackageRelation), + ('Tests-Directory', str), + ('Classes', str), + )) diff --git a/lib/python/debian_linux/firmware.py b/lib/python/debian_linux/firmware.py new file mode 100644 index 00000000000..ece3743d395 --- /dev/null +++ b/lib/python/debian_linux/firmware.py @@ -0,0 +1,89 @@ +import re + + +class FirmwareFile(object): + def __init__(self, binary, desc=None, source=None, version=None): + self.binary = binary + self.desc = desc + self.source = source + self.version = version + + +class FirmwareSection(object): + def __init__(self, driver, files, licence): + self.driver = driver + self.files = files + self.licence = licence + + +class FirmwareWhence(list): + def __init__(self, file): + self.read(file) + + def read(self, file): + in_header = True + driver = None + files = {} + licence = None + binary = [] + desc = None + source = [] + version = None + + for line in file: + if line.startswith('----------'): + if in_header: + in_header = False + else: + # Finish old section + if driver: + self.append(FirmwareSection(driver, files, licence)) + driver = None + files = {} + licence = None + continue + + if in_header: + continue + + if line == '\n': + # End of field; end of file fields + for b in binary: + # XXX The WHENCE file isn't yet consistent in its + # association of binaries and their sources and + # metadata. This associates all sources and + # metadata in a group with each binary. + files[b] = FirmwareFile(b, desc, source, version) + binary = [] + desc = None + source = [] + version = None + continue + + match = re.match( + r'(Driver|File|Info|Licen[cs]e|Source|Version' + r'|Original licen[cs]e info(?:rmation)?):\s*(.*)\n', + line) + if match: + keyword, value = match.group(1, 2) + if keyword == 'Driver': + driver = value.split(' ')[0].lower() + elif keyword == 'File': + match = re.match(r'(\S+)(?:\s+--\s+(.*))?', value) + binary.append(match.group(1)) + desc = match.group(2) + elif keyword in ['Info', 'Version']: + version = value + elif keyword == 'Source': + source.append(value) + else: + licence = value + elif licence is not None: + licence = (licence + '\n' + + re.sub(r'^(?:[/ ]\*| \*/)?\s*(.*?)\s*$', r'\1', line)) + + # Finish last section if non-empty + for b in binary: + files[b] = FirmwareFile(b, desc, source, version) + if driver: + self.append(FirmwareSection(driver, files, licence)) diff --git a/lib/python/debian_linux/gencontrol.py b/lib/python/debian_linux/gencontrol.py new file mode 100644 index 00000000000..370dccb2692 --- /dev/null +++ b/lib/python/debian_linux/gencontrol.py @@ -0,0 +1,355 @@ +import codecs +from collections import OrderedDict + +from .debian import * + + +class PackagesList(OrderedDict): + def append(self, package): + self[package['Package']] = package + + def extend(self, packages): + for package in packages: + self[package['Package']] = package + + +class Makefile(object): + def __init__(self): + self.rules = {} + self.add('.NOTPARALLEL') + + def add(self, name, deps=None, cmds=None): + if name in self.rules: + self.rules[name].add(deps, cmds) + else: + self.rules[name] = self.Rule(name, deps, cmds) + if deps is not None: + for i in deps: + if i not in self.rules: + self.rules[i] = self.Rule(i) + + def write(self, out): + for i in sorted(self.rules.keys()): + self.rules[i].write(out) + + class Rule(object): + def __init__(self, name, deps=None, cmds=None): + self.name = name + self.deps, self.cmds = set(), [] + self.add(deps, cmds) + + def add(self, deps=None, cmds=None): + if deps is not None: + self.deps.update(deps) + if cmds is not None: + self.cmds.append(cmds) + + def write(self, out): + deps_string = '' + if self.deps: + deps = list(self.deps) + deps.sort() + deps_string = ' ' + ' '.join(deps) + + if self.cmds: + if deps_string: + out.write('%s::%s\n' % (self.name, deps_string)) + for c in self.cmds: + out.write('%s::\n' % self.name) + for i in c: + out.write('\t%s\n' % i) + else: + out.write('%s:%s\n' % (self.name, deps_string)) + + +class MakeFlags(dict): + def __repr__(self): + repr = super(flags, self).__repr__() + return "%s(%s)" % (self.__class__.__name__, repr) + + def __str__(self): + return ' '.join("%s='%s'" % i for i in sorted(self.items())) + + def copy(self): + return self.__class__(super(MakeFlags, self).copy()) + + +class Gencontrol(object): + makefile_targets = ('binary-arch', 'build-arch', 'setup') + makefile_targets_indep = ('binary-indep', 'build-indep', 'setup') + + def __init__(self, config, templates, version=Version): + self.config, self.templates = config, templates + self.changelog = Changelog(version=version) + self.vars = {} + + def __call__(self): + packages = PackagesList() + makefile = Makefile() + + self.do_source(packages) + self.do_main(packages, makefile) + self.do_extra(packages, makefile) + + self.write(packages, makefile) + + def do_source(self, packages): + source = self.templates["control.source"][0] + source['Source'] = self.changelog[0].source + packages['source'] = self.process_package(source, self.vars) + + def do_main(self, packages, makefile): + config_entry = self.config['base', ] + vars = self.vars.copy() + + makeflags = MakeFlags() + extra = {} + + self.do_main_setup(vars, makeflags, extra) + self.do_main_makefile(makefile, makeflags, extra) + self.do_main_packages(packages, vars, makeflags, extra) + self.do_main_recurse(packages, makefile, vars, makeflags, extra) + + def do_main_setup(self, vars, makeflags, extra): + pass + + def do_main_makefile(self, makefile, makeflags, extra): + makefile.add('build-indep', cmds=["$(MAKE) -f debian/rules.real build-indep %s" % makeflags]) + makefile.add('binary-indep', cmds=["$(MAKE) -f debian/rules.real binary-indep %s" % makeflags]) + + def do_main_packages(self, packages, vars, makeflags, extra): + pass + + def do_main_recurse(self, packages, makefile, vars, makeflags, extra): + for featureset in self.config['base', ]['featuresets']: + if self.config.merge('base', None, featureset).get('enabled', True): + self.do_indep_featureset(packages, makefile, featureset, + vars.copy(), makeflags.copy(), extra) + for arch in iter(self.config['base', ]['arches']): + self.do_arch(packages, makefile, arch, vars.copy(), makeflags.copy(), extra) + + def do_extra(self, packages, makefile): + templates_extra = self.templates.get("control.extra", None) + if templates_extra is None: + return + + packages_extra = self.process_packages(templates_extra, self.vars) + packages.extend(packages_extra) + extra_arches = {} + for package in packages_extra: + arches = package['Architecture'] + for arch in arches: + i = extra_arches.get(arch, []) + i.append(package) + extra_arches[arch] = i + for arch in sorted(extra_arches.keys()): + cmds = [] + for i in extra_arches[arch]: + cmds.append("$(MAKE) -f debian/rules.real install-dummy ARCH='%s' DH_OPTIONS='-p%s'" % (arch, i['Package'])) + makefile.add('binary-arch_%s' % arch, ['binary-arch_%s_extra' % arch]) + makefile.add("binary-arch_%s_extra" % arch, cmds = cmds) + + def do_indep_featureset(self, packages, makefile, featureset, vars, + makeflags, extra): + vars['localversion'] = '' + if featureset != 'none': + vars['localversion'] = '-' + featureset + + self.do_indep_featureset_setup(vars, makeflags, featureset, extra) + self.do_indep_featureset_makefile(makefile, featureset, makeflags, + extra) + self.do_indep_featureset_packages(packages, makefile, featureset, + vars, makeflags, extra) + + def do_indep_featureset_setup(self, vars, makeflags, featureset, extra): + pass + + def do_indep_featureset_makefile(self, makefile, featureset, makeflags, + extra): + makeflags['FEATURESET'] = featureset + + for i in self.makefile_targets_indep: + target1 = i + target2 = '_'.join((target1, featureset)) + target3 = '_'.join((target2, 'real')) + makefile.add(target1, [target2]) + makefile.add(target2, [target3]) + + def do_indep_featureset_packages(self, packages, makefile, featureset, + vars, makeflags, extra): + pass + + def do_arch(self, packages, makefile, arch, vars, makeflags, extra): + vars['arch'] = arch + + self.do_arch_setup(vars, makeflags, arch, extra) + self.do_arch_makefile(makefile, arch, makeflags, extra) + self.do_arch_packages(packages, makefile, arch, vars, makeflags, extra) + self.do_arch_recurse(packages, makefile, arch, vars, makeflags, extra) + + def do_arch_setup(self, vars, makeflags, arch, extra): + pass + + def do_arch_makefile(self, makefile, arch, makeflags, extra): + makeflags['ARCH'] = arch + + for i in self.makefile_targets: + target1 = i + target2 = '_'.join((target1, arch)) + target3 = '_'.join((target2, 'real')) + makefile.add(target1, [target2]) + makefile.add(target2, [target3]) + + def do_arch_packages(self, packages, makefile, arch, vars, makeflags, extra): + pass + + def do_arch_recurse(self, packages, makefile, arch, vars, makeflags, extra): + for featureset in self.config['base', arch].get('featuresets', ()): + self.do_featureset(packages, makefile, arch, featureset, vars.copy(), makeflags.copy(), extra) + + def do_featureset(self, packages, makefile, arch, featureset, vars, makeflags, extra): + config_base = self.config.merge('base', arch, featureset) + if not config_base.get('enabled', True): + return + + vars['localversion'] = '' + if featureset != 'none': + vars['localversion'] = '-' + featureset + + self.do_featureset_setup(vars, makeflags, arch, featureset, extra) + self.do_featureset_makefile(makefile, arch, featureset, makeflags, extra) + self.do_featureset_packages(packages, makefile, arch, featureset, vars, makeflags, extra) + self.do_featureset_recurse(packages, makefile, arch, featureset, vars, makeflags, extra) + + def do_featureset_setup(self, vars, makeflags, arch, featureset, extra): + pass + + def do_featureset_makefile(self, makefile, arch, featureset, makeflags, extra): + makeflags['FEATURESET'] = featureset + + for i in self.makefile_targets: + target1 = '_'.join((i, arch)) + target2 = '_'.join((target1, featureset)) + target3 = '_'.join((target2, 'real')) + makefile.add(target1, [target2]) + makefile.add(target2, [target3]) + + def do_featureset_packages(self, packages, makefile, arch, featureset, vars, makeflags, extra): + pass + + def do_featureset_recurse(self, packages, makefile, arch, featureset, vars, makeflags, extra): + for flavour in self.config['base', arch, featureset]['flavours']: + self.do_flavour(packages, makefile, arch, featureset, flavour, vars.copy(), makeflags.copy(), extra) + + def do_flavour(self, packages, makefile, arch, featureset, flavour, vars, makeflags, extra): + config_base = self.config.merge('base', arch, featureset, flavour) + + vars['localversion'] += '-' + flavour + + self.do_flavour_setup(vars, makeflags, arch, featureset, flavour, extra) + self.do_flavour_makefile(makefile, arch, featureset, flavour, makeflags, extra) + self.do_flavour_packages(packages, makefile, arch, featureset, flavour, vars, makeflags, extra) + + def do_flavour_setup(self, vars, makeflags, arch, featureset, flavour, extra): + for i in ( + ('kernel-arch', 'KERNEL_ARCH'), + ('localversion', 'LOCALVERSION'), + ): + if i[0] in vars: + makeflags[i[1]] = vars[i[0]] + + def do_flavour_makefile(self, makefile, arch, featureset, flavour, makeflags, extra): + makeflags['FLAVOUR'] = flavour + + for i in self.makefile_targets: + target1 = '_'.join((i, arch, featureset)) + target2 = '_'.join((target1, flavour)) + target3 = '_'.join((target2, 'real')) + makefile.add(target1, [target2]) + makefile.add(target2, [target3]) + + def do_flavour_packages(self, packages, makefile, arch, featureset, flavour, vars, makeflags, extra): + pass + + def process_relation(self, dep, vars): + import copy + dep = copy.deepcopy(dep) + for groups in dep: + for item in groups: + item.name = self.substitute(item.name, vars) + if item.version: + item.version = self.substitute(item.version, vars) + return dep + + def process_description(self, in_desc, vars): + desc = in_desc.__class__() + desc.short = self.substitute(in_desc.short, vars) + for i in in_desc.long: + desc.append(self.substitute(i, vars)) + return desc + + def process_package(self, in_entry, vars={}): + entry = in_entry.__class__() + for key, value in in_entry.items(): + if isinstance(value, PackageRelation): + value = self.process_relation(value, vars) + elif isinstance(value, PackageDescription): + value = self.process_description(value, vars) + else: + value = self.substitute(value, vars) + entry[key] = value + return entry + + def process_packages(self, entries, vars): + return [self.process_package(i, vars) for i in entries] + + def substitute(self, s, vars): + if isinstance(s, (list, tuple)): + return [self.substitute(i, vars) for i in s] + + def subst(match): + return vars[match.group(1)] + + return re.sub(r'@([-_a-z0-9]+)@', subst, str(s)) + + def write(self, packages, makefile): + self.write_control(packages.values()) + self.write_makefile(makefile) + + def write_config(self): + f = file("debian/config.dump", 'w') + self.config.write(f) + f.close() + + def write_control(self, list): + self.write_rfc822(codecs.open("debian/control", 'w', 'utf-8'), list) + + def write_makefile(self, makefile): + f = open("debian/rules.gen", 'w') + makefile.write(f) + f.close() + + def write_rfc822(self, f, list): + for entry in list: + for key, value in entry.items(): + f.write(u"%s: %s\n" % (key, value)) + f.write('\n') + +def merge_packages(packages, new, arch): + for new_package in new: + name = new_package['Package'] + if name in packages: + package = packages.get(name) + package['Architecture'].add(arch) + + for field in 'Depends', 'Provides', 'Suggests', 'Recommends', 'Conflicts': + if field in new_package: + if field in package: + v = package[field] + v.extend(new_package[field]) + else: + package[field] = new_package[field] + + else: + new_package['Architecture'] = arch + packages.append(new_package) diff --git a/lib/python/debian_linux/kconfig.py b/lib/python/debian_linux/kconfig.py new file mode 100644 index 00000000000..67309e3a07a --- /dev/null +++ b/lib/python/debian_linux/kconfig.py @@ -0,0 +1,91 @@ +from collections import OrderedDict + +__all__ = ( + "KconfigFile", +) + + +class KConfigEntry(object): + __slots__ = 'name', 'value', 'comments' + + def __init__(self, name, value, comments=None): + self.name, self.value = name, value + self.comments = comments or [] + + def __eq__(self, other): + return self.name == other.name and self.value == other.value + + def __hash__(self): + return hash(self.name) | hash(self.value) + + def __repr__(self): + return '<{}({!r}, {!r}, {!r})>'.format(self.__class__.__name__, self.name, self.value, self.comments) + + def __str__(self): + return 'CONFIG_{}={}'.format(self.name, self.value) + + def write(self): + for comment in self.comments: + yield '#. ' + comment + yield str(self) + + +class KConfigEntryTristate(KConfigEntry): + __slots__ = () + + VALUE_NO = False + VALUE_YES = True + VALUE_MOD = object() + + def __init__(self, name, value, comments=None): + if value == 'n' or value is None: + value = self.VALUE_NO + elif value == 'y': + value = self.VALUE_YES + elif value == 'm': + value = self.VALUE_MOD + else: + raise NotImplementedError + super(KConfigEntryTristate, self).__init__(name, value, comments) + + def __str__(self): + if self.value is self.VALUE_MOD: + return 'CONFIG_{}=m'.format(self.name) + if self.value: + return 'CONFIG_{}=y'.format(self.name) + return '# CONFIG_{} is not set'.format(self.name) + + +class KconfigFile(OrderedDict): + def __str__(self): + ret = [] + for i in self.str_iter(): + ret.append(i) + return '\n'.join(ret) + '\n' + + def read(self, f): + for line in iter(f.readlines()): + line = line.strip() + if line.startswith("CONFIG_"): + i = line.find('=') + option = line[7:i] + value = line[i + 1:] + self.set(option, value) + elif line.startswith("# CONFIG_"): + option = line[9:-11] + self.set(option, 'n') + elif line.startswith("#") or not line: + pass + else: + raise RuntimeError("Can't recognize %s" % line) + + def set(self, key, value): + if value in ('y', 'm', 'n'): + entry = KConfigEntryTristate(key, value) + else: + entry = KConfigEntry(key, value) + self[key] = entry + + def str_iter(self): + for key, value in self.items(): + yield str(value) diff --git a/lib/python/debian_linux/patches.py b/lib/python/debian_linux/patches.py new file mode 100644 index 00000000000..984e48f0edf --- /dev/null +++ b/lib/python/debian_linux/patches.py @@ -0,0 +1,180 @@ +from __future__ import print_function + +import glob +import os +import shutil +import subprocess + + +class Operation(object): + def __init__(self, name, data): + self.name, self.data = name, data + + def __call__(self, dir='.', reverse=False): + try: + if not reverse: + self.do(dir) + else: + self.do_reverse(dir) + self._log(True) + except: + self._log(False) + raise + + def _log(self, result): + if result: + s = "OK" + else: + s = "FAIL" + print(""" (%s) %-4s %s""" % (self.operation, s, self.name)) + + def do(self, dir): + raise NotImplementedError + + def do_reverse(self, dir): + raise NotImplementedError + + +class OperationPatch(Operation): + def __init__(self, name, filename, data): + super(OperationPatch, self).__init__(name, data) + self.filename = filename + + def _call(self, dir, *extraargs): + with open(self.filename) as f: + subprocess.check_call( + ("patch", "-p1", "-f", "-s", "-t", "--no-backup-if-mismatch") + extraargs, + cwd=dir, + stdin=f, + ) + + def patch_push(self, dir): + self._call(dir, '--fuzz=1') + + def patch_pop(self, dir): + self._call(dir, '-R') + + +class OperationPatchPush(OperationPatch): + operation = '+' + + do = OperationPatch.patch_push + do_reverse = OperationPatch.patch_pop + + +class OperationPatchPop(OperationPatch): + operation = '-' + + do = OperationPatch.patch_pop + do_reverse = OperationPatch.patch_push + + +class SubOperation(Operation): + def _log(self, result): + if result: + s = "OK" + else: + s = "FAIL" + print(""" %-10s %-4s %s""" % ('(%s)' % self.operation, s, self.name)) + + +class SubOperationFilesRemove(SubOperation): + operation = "remove" + + def do(self, dir): + name = os.path.join(dir, self.name) + for n in glob.iglob(name): + if os.path.isdir(n): + shutil.rmtree(n) + else: + os.unlink(n) + + +class SubOperationFilesUnifdef(SubOperation): + operation = "unifdef" + + def do(self, dir): + filename = os.path.join(dir, self.name) + ret = subprocess.call(("unifdef", "-o", filename, filename) + tuple(self.data)) + if ret == 0: + raise RuntimeError("unifdef of %s removed nothing" % self.name) + elif ret != 1: + raise RuntimeError("unifdef failed") + + +class OperationFiles(Operation): + operation = 'X' + + suboperations = { + 'remove': SubOperationFilesRemove, + 'rm': SubOperationFilesRemove, + 'unifdef': SubOperationFilesUnifdef, + } + + def __init__(self, name, filename, data): + super(OperationFiles, self).__init__(name, data) + + ops = [] + + with open(filename) as f: + for line in f: + line = line.strip() + if not line or line[0] == '#': + continue + + items = line.split() + operation, filename = items[:2] + data = items[2:] + + if operation not in self.suboperations: + raise RuntimeError('Undefined operation "%s" in series %s' % (operation, name)) + + ops.append(self.suboperations[operation](filename, data)) + + self.ops = ops + + def do(self, dir): + for i in self.ops: + i(dir=dir) + + +class PatchSeries(list): + operations = { + '+': OperationPatchPush, + '-': OperationPatchPop, + 'X': OperationFiles, + } + + def __init__(self, name, root, fp): + self.name, self.root = name, root + + for line in fp: + line = line.strip() + + if not len(line) or line[0] == '#': + continue + + items = line.split(' ') + operation, filename = items[:2] + data = items[2:] + + if operation in self.operations: + f = os.path.join(self.root, filename) + if os.path.exists(f): + self.append(self.operations[operation](filename, f, data)) + else: + raise RuntimeError("Can't find patch %s for series %s" % (filename, self.name)) + else: + raise RuntimeError('Undefined operation "%s" in series %s' % (operation, name)) + + def __call__(self, cond=bool, dir='.', reverse=False): + if not reverse: + l = self + else: + l = self[::-1] + for i in l: + if cond(i): + i(dir=dir, reverse=reverse) + + def __repr__(self): + return '<%s object for %s>' % (self.__class__.__name__, self.name) diff --git a/lib/python/debian_linux/utils.py b/lib/python/debian_linux/utils.py new file mode 100644 index 00000000000..5d6a7d47306 --- /dev/null +++ b/lib/python/debian_linux/utils.py @@ -0,0 +1,93 @@ +import codecs +import os +import re +import textwrap + + +class Templates(object): + def __init__(self, dirs=["debian/templates"]): + self.dirs = dirs + + self._cache = {} + + def __getitem__(self, key): + ret = self.get(key) + if ret is not None: + return ret + raise KeyError(key) + + def _read(self, name): + prefix, id = name.split('.', 1) + + for suffix in ['.in', '']: + for dir in self.dirs: + filename = "%s/%s%s" % (dir, name, suffix) + if os.path.exists(filename): + f = codecs.open(filename, 'r', 'utf-8') + if prefix == 'control': + return read_control(f) + if prefix == 'tests-control': + return read_tests_control(f) + return f.read() + + def get(self, key, default=None): + if key in self._cache: + return self._cache[key] + + value = self._cache.setdefault(key, self._read(key)) + if value is None: + return default + return value + + +def read_control(f): + from .debian import Package + return _read_rfc822(f, Package) + +def read_tests_control(f): + from .debian import TestsControl + return _read_rfc822(f, TestsControl) + +def _read_rfc822(f, cls): + entries = [] + eof = False + + while not eof: + e = cls() + last = None + lines = [] + while True: + line = f.readline() + if not line: + eof = True + break + # Strip comments rather than trying to preserve them + if line[0] == '#': + continue + line = line.strip('\n') + if not line: + break + if line[0] in ' \t': + if not last: + raise ValueError('Continuation line seen before first header') + lines.append(line.lstrip()) + continue + if last: + e[last] = '\n'.join(lines) + i = line.find(':') + if i < 0: + raise ValueError(u"Not a header, not a continuation: ``%s''" % line) + last = line[:i] + lines = [line[i + 1:].lstrip()] + if last: + e[last] = '\n'.join(lines) + if e: + entries.append(e) + + return entries + + +class TextWrapper(textwrap.TextWrapper): + wordsep_re = re.compile( + r'(\s+|' # any whitespace + r'(?<=[\w\!\"\'\&\.\,\?])-{2,}(?=\w))') # em-dash diff --git a/libcpupower-dev.install b/libcpupower-dev.install new file mode 100644 index 00000000000..f3800aad52c --- /dev/null +++ b/libcpupower-dev.install @@ -0,0 +1,2 @@ +usr/include/* +usr/lib/*/lib*.so diff --git a/libcpupower1.install b/libcpupower1.install new file mode 100644 index 00000000000..3ddde584198 --- /dev/null +++ b/libcpupower1.install @@ -0,0 +1 @@ +usr/lib/*/lib*.so.* diff --git a/libcpupower1.symbols b/libcpupower1.symbols new file mode 100644 index 00000000000..1e691c28f22 --- /dev/null +++ b/libcpupower1.symbols @@ -0,0 +1,39 @@ +libcpupower.so.1 libcpupower1 #MINVER# + cpu_topology_release@Base 4.7~rc2-1~exp1 + cpufreq_get_affected_cpus@Base 4.7~rc2-1~exp1 + cpufreq_get_available_frequencies@Base 4.7~rc2-1~exp1 + cpufreq_get_available_governors@Base 4.7~rc2-1~exp1 + cpufreq_get_driver@Base 4.7~rc2-1~exp1 + cpufreq_get_freq_hardware@Base 4.7~rc2-1~exp1 + cpufreq_get_freq_kernel@Base 4.7~rc2-1~exp1 + cpufreq_get_hardware_limits@Base 4.7~rc2-1~exp1 + cpufreq_get_policy@Base 4.7~rc2-1~exp1 + cpufreq_get_related_cpus@Base 4.7~rc2-1~exp1 + cpufreq_get_stats@Base 4.7~rc2-1~exp1 + cpufreq_get_transition_latency@Base 4.7~rc2-1~exp1 + cpufreq_get_transitions@Base 4.7~rc2-1~exp1 + cpufreq_modify_policy_governor@Base 4.7~rc2-1~exp1 + cpufreq_modify_policy_max@Base 4.7~rc2-1~exp1 + cpufreq_modify_policy_min@Base 4.7~rc2-1~exp1 + cpufreq_put_affected_cpus@Base 4.7~rc2-1~exp1 + cpufreq_put_available_frequencies@Base 4.7~rc2-1~exp1 + cpufreq_put_available_governors@Base 4.7~rc2-1~exp1 + cpufreq_put_driver@Base 4.7~rc2-1~exp1 + cpufreq_put_policy@Base 4.7~rc2-1~exp1 + cpufreq_put_related_cpus@Base 4.7~rc2-1~exp1 + cpufreq_put_stats@Base 4.7~rc2-1~exp1 + cpufreq_set_frequency@Base 4.7~rc2-1~exp1 + cpufreq_set_policy@Base 4.7~rc2-1~exp1 + cpuidle_get_driver@Base 4.7~rc2-1~exp1 + cpuidle_get_governor@Base 4.7~rc2-1~exp1 + cpuidle_is_state_disabled@Base 4.7~rc2-1~exp1 + cpuidle_state_count@Base 4.7~rc2-1~exp1 + cpuidle_state_desc@Base 4.7~rc2-1~exp1 + cpuidle_state_disable@Base 4.7~rc2-1~exp1 + cpuidle_state_latency@Base 4.7~rc2-1~exp1 + cpuidle_state_name@Base 4.7~rc2-1~exp1 + cpuidle_state_time@Base 4.7~rc2-1~exp1 + cpuidle_state_usage@Base 4.7~rc2-1~exp1 + cpupower_is_cpu_online@Base 4.7~rc2-1~exp1 + get_cpu_topology@Base 4.7~rc2-1~exp1 + sysfs_read_file@Base 4.7~rc2-1~exp1 diff --git a/liblockdep-dev.README.Debian b/liblockdep-dev.README.Debian new file mode 100644 index 00000000000..a0673a1707d --- /dev/null +++ b/liblockdep-dev.README.Debian @@ -0,0 +1,13 @@ +liblockdep for Debian +--------------------- + +liblockdep does not have proper documentation, but these articles +provide an introduction: + + https://lwn.net/Articles/536363/ + http://www.vctlabs.com/posts/2014/Jul/09/liblockdep/ + +'lockdep-design.txt' explains some more detail about what lockdep +does, both in the kernel and as liblockdep. + + -- Ben Hutchings , Fri, 14 Aug 2015 14:22:55 +0200 diff --git a/liblockdep-dev.docs b/liblockdep-dev.docs new file mode 100644 index 00000000000..15b2bbe123e --- /dev/null +++ b/liblockdep-dev.docs @@ -0,0 +1 @@ +Documentation/locking/lockdep-design.txt diff --git a/liblockdep-dev.install b/liblockdep-dev.install new file mode 100644 index 00000000000..bd857244bef --- /dev/null +++ b/liblockdep-dev.install @@ -0,0 +1,3 @@ +usr/include/liblockdep +usr/lib/*/liblockdep.a +usr/lib/*/liblockdep.so diff --git a/linux-cpupower.install b/linux-cpupower.install new file mode 100755 index 00000000000..cbed747b987 --- /dev/null +++ b/linux-cpupower.install @@ -0,0 +1,4 @@ +#!/usr/bin/dh-exec +usr/bin +[i386 amd64 x32] usr/sbin +usr/share/ diff --git a/linux-cpupower.manpages b/linux-cpupower.manpages new file mode 100755 index 00000000000..96f9593efbf --- /dev/null +++ b/linux-cpupower.manpages @@ -0,0 +1,3 @@ +#!/usr/bin/dh-exec +[i386 amd64 x32] tools/power/x86/turbostat/turbostat.8 +[i386 amd64 x32] tools/power/x86/x86_energy_perf_policy/x86_energy_perf_policy.8 diff --git a/linux-headers-4.15.0-2-4kc-malta.postinst b/linux-headers-4.15.0-2-4kc-malta.postinst new file mode 100644 index 00000000000..f7a05d699be --- /dev/null +++ b/linux-headers-4.15.0-2-4kc-malta.postinst @@ -0,0 +1,18 @@ +#!/usr/bin/perl +# Author: Michael Gilbert +# Origin: Stripped down version of the linux-headers postinst from Ubuntu's +# 2.6.32-14-generic kernel, which was itself derived from a +# Debian linux-image postinst script. + +$|=1; +my $version = "4.15.0-2-4kc-malta"; + +if (-d "/etc/kernel/header_postinst.d") { + system ("run-parts --report --exit-on-error --arg=$version " . + "/etc/kernel/header_postinst.d") && + die "Failed to process /etc/kernel/header_postinst.d"; +} + +exit 0; + +__END__ diff --git a/linux-headers-4.15.0-2-5kc-malta.postinst b/linux-headers-4.15.0-2-5kc-malta.postinst new file mode 100644 index 00000000000..860d1a8a6ea --- /dev/null +++ b/linux-headers-4.15.0-2-5kc-malta.postinst @@ -0,0 +1,18 @@ +#!/usr/bin/perl +# Author: Michael Gilbert +# Origin: Stripped down version of the linux-headers postinst from Ubuntu's +# 2.6.32-14-generic kernel, which was itself derived from a +# Debian linux-image postinst script. + +$|=1; +my $version = "4.15.0-2-5kc-malta"; + +if (-d "/etc/kernel/header_postinst.d") { + system ("run-parts --report --exit-on-error --arg=$version " . + "/etc/kernel/header_postinst.d") && + die "Failed to process /etc/kernel/header_postinst.d"; +} + +exit 0; + +__END__ diff --git a/linux-headers-4.15.0-2-686-pae.postinst b/linux-headers-4.15.0-2-686-pae.postinst new file mode 100644 index 00000000000..fe5131f3162 --- /dev/null +++ b/linux-headers-4.15.0-2-686-pae.postinst @@ -0,0 +1,18 @@ +#!/usr/bin/perl +# Author: Michael Gilbert +# Origin: Stripped down version of the linux-headers postinst from Ubuntu's +# 2.6.32-14-generic kernel, which was itself derived from a +# Debian linux-image postinst script. + +$|=1; +my $version = "4.15.0-2-686-pae"; + +if (-d "/etc/kernel/header_postinst.d") { + system ("run-parts --report --exit-on-error --arg=$version " . + "/etc/kernel/header_postinst.d") && + die "Failed to process /etc/kernel/header_postinst.d"; +} + +exit 0; + +__END__ diff --git a/linux-headers-4.15.0-2-686.postinst b/linux-headers-4.15.0-2-686.postinst new file mode 100644 index 00000000000..006d99024fa --- /dev/null +++ b/linux-headers-4.15.0-2-686.postinst @@ -0,0 +1,18 @@ +#!/usr/bin/perl +# Author: Michael Gilbert +# Origin: Stripped down version of the linux-headers postinst from Ubuntu's +# 2.6.32-14-generic kernel, which was itself derived from a +# Debian linux-image postinst script. + +$|=1; +my $version = "4.15.0-2-686"; + +if (-d "/etc/kernel/header_postinst.d") { + system ("run-parts --report --exit-on-error --arg=$version " . + "/etc/kernel/header_postinst.d") && + die "Failed to process /etc/kernel/header_postinst.d"; +} + +exit 0; + +__END__ diff --git a/linux-headers-4.15.0-2-alpha-generic.postinst b/linux-headers-4.15.0-2-alpha-generic.postinst new file mode 100644 index 00000000000..abddf4e1214 --- /dev/null +++ b/linux-headers-4.15.0-2-alpha-generic.postinst @@ -0,0 +1,18 @@ +#!/usr/bin/perl +# Author: Michael Gilbert +# Origin: Stripped down version of the linux-headers postinst from Ubuntu's +# 2.6.32-14-generic kernel, which was itself derived from a +# Debian linux-image postinst script. + +$|=1; +my $version = "4.15.0-2-alpha-generic"; + +if (-d "/etc/kernel/header_postinst.d") { + system ("run-parts --report --exit-on-error --arg=$version " . + "/etc/kernel/header_postinst.d") && + die "Failed to process /etc/kernel/header_postinst.d"; +} + +exit 0; + +__END__ diff --git a/linux-headers-4.15.0-2-alpha-smp.postinst b/linux-headers-4.15.0-2-alpha-smp.postinst new file mode 100644 index 00000000000..ce158ecd564 --- /dev/null +++ b/linux-headers-4.15.0-2-alpha-smp.postinst @@ -0,0 +1,18 @@ +#!/usr/bin/perl +# Author: Michael Gilbert +# Origin: Stripped down version of the linux-headers postinst from Ubuntu's +# 2.6.32-14-generic kernel, which was itself derived from a +# Debian linux-image postinst script. + +$|=1; +my $version = "4.15.0-2-alpha-smp"; + +if (-d "/etc/kernel/header_postinst.d") { + system ("run-parts --report --exit-on-error --arg=$version " . + "/etc/kernel/header_postinst.d") && + die "Failed to process /etc/kernel/header_postinst.d"; +} + +exit 0; + +__END__ diff --git a/linux-headers-4.15.0-2-amd64.postinst b/linux-headers-4.15.0-2-amd64.postinst new file mode 100644 index 00000000000..c5f3cc99c09 --- /dev/null +++ b/linux-headers-4.15.0-2-amd64.postinst @@ -0,0 +1,18 @@ +#!/usr/bin/perl +# Author: Michael Gilbert +# Origin: Stripped down version of the linux-headers postinst from Ubuntu's +# 2.6.32-14-generic kernel, which was itself derived from a +# Debian linux-image postinst script. + +$|=1; +my $version = "4.15.0-2-amd64"; + +if (-d "/etc/kernel/header_postinst.d") { + system ("run-parts --report --exit-on-error --arg=$version " . + "/etc/kernel/header_postinst.d") && + die "Failed to process /etc/kernel/header_postinst.d"; +} + +exit 0; + +__END__ diff --git a/linux-headers-4.15.0-2-arm64.postinst b/linux-headers-4.15.0-2-arm64.postinst new file mode 100644 index 00000000000..d1c60a155d2 --- /dev/null +++ b/linux-headers-4.15.0-2-arm64.postinst @@ -0,0 +1,18 @@ +#!/usr/bin/perl +# Author: Michael Gilbert +# Origin: Stripped down version of the linux-headers postinst from Ubuntu's +# 2.6.32-14-generic kernel, which was itself derived from a +# Debian linux-image postinst script. + +$|=1; +my $version = "4.15.0-2-arm64"; + +if (-d "/etc/kernel/header_postinst.d") { + system ("run-parts --report --exit-on-error --arg=$version " . + "/etc/kernel/header_postinst.d") && + die "Failed to process /etc/kernel/header_postinst.d"; +} + +exit 0; + +__END__ diff --git a/linux-headers-4.15.0-2-armmp-lpae.postinst b/linux-headers-4.15.0-2-armmp-lpae.postinst new file mode 100644 index 00000000000..31e08d5c8eb --- /dev/null +++ b/linux-headers-4.15.0-2-armmp-lpae.postinst @@ -0,0 +1,18 @@ +#!/usr/bin/perl +# Author: Michael Gilbert +# Origin: Stripped down version of the linux-headers postinst from Ubuntu's +# 2.6.32-14-generic kernel, which was itself derived from a +# Debian linux-image postinst script. + +$|=1; +my $version = "4.15.0-2-armmp-lpae"; + +if (-d "/etc/kernel/header_postinst.d") { + system ("run-parts --report --exit-on-error --arg=$version " . + "/etc/kernel/header_postinst.d") && + die "Failed to process /etc/kernel/header_postinst.d"; +} + +exit 0; + +__END__ diff --git a/linux-headers-4.15.0-2-armmp.postinst b/linux-headers-4.15.0-2-armmp.postinst new file mode 100644 index 00000000000..69b6757fe07 --- /dev/null +++ b/linux-headers-4.15.0-2-armmp.postinst @@ -0,0 +1,18 @@ +#!/usr/bin/perl +# Author: Michael Gilbert +# Origin: Stripped down version of the linux-headers postinst from Ubuntu's +# 2.6.32-14-generic kernel, which was itself derived from a +# Debian linux-image postinst script. + +$|=1; +my $version = "4.15.0-2-armmp"; + +if (-d "/etc/kernel/header_postinst.d") { + system ("run-parts --report --exit-on-error --arg=$version " . + "/etc/kernel/header_postinst.d") && + die "Failed to process /etc/kernel/header_postinst.d"; +} + +exit 0; + +__END__ diff --git a/linux-headers-4.15.0-2-cloud-amd64.postinst b/linux-headers-4.15.0-2-cloud-amd64.postinst new file mode 100644 index 00000000000..29904675eae --- /dev/null +++ b/linux-headers-4.15.0-2-cloud-amd64.postinst @@ -0,0 +1,18 @@ +#!/usr/bin/perl +# Author: Michael Gilbert +# Origin: Stripped down version of the linux-headers postinst from Ubuntu's +# 2.6.32-14-generic kernel, which was itself derived from a +# Debian linux-image postinst script. + +$|=1; +my $version = "4.15.0-2-cloud-amd64"; + +if (-d "/etc/kernel/header_postinst.d") { + system ("run-parts --report --exit-on-error --arg=$version " . + "/etc/kernel/header_postinst.d") && + die "Failed to process /etc/kernel/header_postinst.d"; +} + +exit 0; + +__END__ diff --git a/linux-headers-4.15.0-2-loongson-3.postinst b/linux-headers-4.15.0-2-loongson-3.postinst new file mode 100644 index 00000000000..d08b9dc21fe --- /dev/null +++ b/linux-headers-4.15.0-2-loongson-3.postinst @@ -0,0 +1,18 @@ +#!/usr/bin/perl +# Author: Michael Gilbert +# Origin: Stripped down version of the linux-headers postinst from Ubuntu's +# 2.6.32-14-generic kernel, which was itself derived from a +# Debian linux-image postinst script. + +$|=1; +my $version = "4.15.0-2-loongson-3"; + +if (-d "/etc/kernel/header_postinst.d") { + system ("run-parts --report --exit-on-error --arg=$version " . + "/etc/kernel/header_postinst.d") && + die "Failed to process /etc/kernel/header_postinst.d"; +} + +exit 0; + +__END__ diff --git a/linux-headers-4.15.0-2-m68k.postinst b/linux-headers-4.15.0-2-m68k.postinst new file mode 100644 index 00000000000..001d0d15717 --- /dev/null +++ b/linux-headers-4.15.0-2-m68k.postinst @@ -0,0 +1,18 @@ +#!/usr/bin/perl +# Author: Michael Gilbert +# Origin: Stripped down version of the linux-headers postinst from Ubuntu's +# 2.6.32-14-generic kernel, which was itself derived from a +# Debian linux-image postinst script. + +$|=1; +my $version = "4.15.0-2-m68k"; + +if (-d "/etc/kernel/header_postinst.d") { + system ("run-parts --report --exit-on-error --arg=$version " . + "/etc/kernel/header_postinst.d") && + die "Failed to process /etc/kernel/header_postinst.d"; +} + +exit 0; + +__END__ diff --git a/linux-headers-4.15.0-2-mips32r6.postinst b/linux-headers-4.15.0-2-mips32r6.postinst new file mode 100644 index 00000000000..382256a7ed0 --- /dev/null +++ b/linux-headers-4.15.0-2-mips32r6.postinst @@ -0,0 +1,18 @@ +#!/usr/bin/perl +# Author: Michael Gilbert +# Origin: Stripped down version of the linux-headers postinst from Ubuntu's +# 2.6.32-14-generic kernel, which was itself derived from a +# Debian linux-image postinst script. + +$|=1; +my $version = "4.15.0-2-mips32r6"; + +if (-d "/etc/kernel/header_postinst.d") { + system ("run-parts --report --exit-on-error --arg=$version " . + "/etc/kernel/header_postinst.d") && + die "Failed to process /etc/kernel/header_postinst.d"; +} + +exit 0; + +__END__ diff --git a/linux-headers-4.15.0-2-mips32r6el.postinst b/linux-headers-4.15.0-2-mips32r6el.postinst new file mode 100644 index 00000000000..dd5bdabd0d9 --- /dev/null +++ b/linux-headers-4.15.0-2-mips32r6el.postinst @@ -0,0 +1,18 @@ +#!/usr/bin/perl +# Author: Michael Gilbert +# Origin: Stripped down version of the linux-headers postinst from Ubuntu's +# 2.6.32-14-generic kernel, which was itself derived from a +# Debian linux-image postinst script. + +$|=1; +my $version = "4.15.0-2-mips32r6el"; + +if (-d "/etc/kernel/header_postinst.d") { + system ("run-parts --report --exit-on-error --arg=$version " . + "/etc/kernel/header_postinst.d") && + die "Failed to process /etc/kernel/header_postinst.d"; +} + +exit 0; + +__END__ diff --git a/linux-headers-4.15.0-2-mips64r6.postinst b/linux-headers-4.15.0-2-mips64r6.postinst new file mode 100644 index 00000000000..5aa926ec1b0 --- /dev/null +++ b/linux-headers-4.15.0-2-mips64r6.postinst @@ -0,0 +1,18 @@ +#!/usr/bin/perl +# Author: Michael Gilbert +# Origin: Stripped down version of the linux-headers postinst from Ubuntu's +# 2.6.32-14-generic kernel, which was itself derived from a +# Debian linux-image postinst script. + +$|=1; +my $version = "4.15.0-2-mips64r6"; + +if (-d "/etc/kernel/header_postinst.d") { + system ("run-parts --report --exit-on-error --arg=$version " . + "/etc/kernel/header_postinst.d") && + die "Failed to process /etc/kernel/header_postinst.d"; +} + +exit 0; + +__END__ diff --git a/linux-headers-4.15.0-2-mips64r6el.postinst b/linux-headers-4.15.0-2-mips64r6el.postinst new file mode 100644 index 00000000000..d443923adb6 --- /dev/null +++ b/linux-headers-4.15.0-2-mips64r6el.postinst @@ -0,0 +1,18 @@ +#!/usr/bin/perl +# Author: Michael Gilbert +# Origin: Stripped down version of the linux-headers postinst from Ubuntu's +# 2.6.32-14-generic kernel, which was itself derived from a +# Debian linux-image postinst script. + +$|=1; +my $version = "4.15.0-2-mips64r6el"; + +if (-d "/etc/kernel/header_postinst.d") { + system ("run-parts --report --exit-on-error --arg=$version " . + "/etc/kernel/header_postinst.d") && + die "Failed to process /etc/kernel/header_postinst.d"; +} + +exit 0; + +__END__ diff --git a/linux-headers-4.15.0-2-octeon.postinst b/linux-headers-4.15.0-2-octeon.postinst new file mode 100644 index 00000000000..ebcc707a1f2 --- /dev/null +++ b/linux-headers-4.15.0-2-octeon.postinst @@ -0,0 +1,18 @@ +#!/usr/bin/perl +# Author: Michael Gilbert +# Origin: Stripped down version of the linux-headers postinst from Ubuntu's +# 2.6.32-14-generic kernel, which was itself derived from a +# Debian linux-image postinst script. + +$|=1; +my $version = "4.15.0-2-octeon"; + +if (-d "/etc/kernel/header_postinst.d") { + system ("run-parts --report --exit-on-error --arg=$version " . + "/etc/kernel/header_postinst.d") && + die "Failed to process /etc/kernel/header_postinst.d"; +} + +exit 0; + +__END__ diff --git a/linux-headers-4.15.0-2-parisc.postinst b/linux-headers-4.15.0-2-parisc.postinst new file mode 100644 index 00000000000..81d3a5b10c9 --- /dev/null +++ b/linux-headers-4.15.0-2-parisc.postinst @@ -0,0 +1,18 @@ +#!/usr/bin/perl +# Author: Michael Gilbert +# Origin: Stripped down version of the linux-headers postinst from Ubuntu's +# 2.6.32-14-generic kernel, which was itself derived from a +# Debian linux-image postinst script. + +$|=1; +my $version = "4.15.0-2-parisc"; + +if (-d "/etc/kernel/header_postinst.d") { + system ("run-parts --report --exit-on-error --arg=$version " . + "/etc/kernel/header_postinst.d") && + die "Failed to process /etc/kernel/header_postinst.d"; +} + +exit 0; + +__END__ diff --git a/linux-headers-4.15.0-2-parisc64-smp.postinst b/linux-headers-4.15.0-2-parisc64-smp.postinst new file mode 100644 index 00000000000..c321f9b3b73 --- /dev/null +++ b/linux-headers-4.15.0-2-parisc64-smp.postinst @@ -0,0 +1,18 @@ +#!/usr/bin/perl +# Author: Michael Gilbert +# Origin: Stripped down version of the linux-headers postinst from Ubuntu's +# 2.6.32-14-generic kernel, which was itself derived from a +# Debian linux-image postinst script. + +$|=1; +my $version = "4.15.0-2-parisc64-smp"; + +if (-d "/etc/kernel/header_postinst.d") { + system ("run-parts --report --exit-on-error --arg=$version " . + "/etc/kernel/header_postinst.d") && + die "Failed to process /etc/kernel/header_postinst.d"; +} + +exit 0; + +__END__ diff --git a/linux-headers-4.15.0-2-powerpc-smp.postinst b/linux-headers-4.15.0-2-powerpc-smp.postinst new file mode 100644 index 00000000000..617d56255d1 --- /dev/null +++ b/linux-headers-4.15.0-2-powerpc-smp.postinst @@ -0,0 +1,18 @@ +#!/usr/bin/perl +# Author: Michael Gilbert +# Origin: Stripped down version of the linux-headers postinst from Ubuntu's +# 2.6.32-14-generic kernel, which was itself derived from a +# Debian linux-image postinst script. + +$|=1; +my $version = "4.15.0-2-powerpc-smp"; + +if (-d "/etc/kernel/header_postinst.d") { + system ("run-parts --report --exit-on-error --arg=$version " . + "/etc/kernel/header_postinst.d") && + die "Failed to process /etc/kernel/header_postinst.d"; +} + +exit 0; + +__END__ diff --git a/linux-headers-4.15.0-2-powerpc.postinst b/linux-headers-4.15.0-2-powerpc.postinst new file mode 100644 index 00000000000..15355500c68 --- /dev/null +++ b/linux-headers-4.15.0-2-powerpc.postinst @@ -0,0 +1,18 @@ +#!/usr/bin/perl +# Author: Michael Gilbert +# Origin: Stripped down version of the linux-headers postinst from Ubuntu's +# 2.6.32-14-generic kernel, which was itself derived from a +# Debian linux-image postinst script. + +$|=1; +my $version = "4.15.0-2-powerpc"; + +if (-d "/etc/kernel/header_postinst.d") { + system ("run-parts --report --exit-on-error --arg=$version " . + "/etc/kernel/header_postinst.d") && + die "Failed to process /etc/kernel/header_postinst.d"; +} + +exit 0; + +__END__ diff --git a/linux-headers-4.15.0-2-powerpc64.postinst b/linux-headers-4.15.0-2-powerpc64.postinst new file mode 100644 index 00000000000..b2bf9c6985e --- /dev/null +++ b/linux-headers-4.15.0-2-powerpc64.postinst @@ -0,0 +1,18 @@ +#!/usr/bin/perl +# Author: Michael Gilbert +# Origin: Stripped down version of the linux-headers postinst from Ubuntu's +# 2.6.32-14-generic kernel, which was itself derived from a +# Debian linux-image postinst script. + +$|=1; +my $version = "4.15.0-2-powerpc64"; + +if (-d "/etc/kernel/header_postinst.d") { + system ("run-parts --report --exit-on-error --arg=$version " . + "/etc/kernel/header_postinst.d") && + die "Failed to process /etc/kernel/header_postinst.d"; +} + +exit 0; + +__END__ diff --git a/linux-headers-4.15.0-2-powerpc64le.postinst b/linux-headers-4.15.0-2-powerpc64le.postinst new file mode 100644 index 00000000000..2a524f86ff6 --- /dev/null +++ b/linux-headers-4.15.0-2-powerpc64le.postinst @@ -0,0 +1,18 @@ +#!/usr/bin/perl +# Author: Michael Gilbert +# Origin: Stripped down version of the linux-headers postinst from Ubuntu's +# 2.6.32-14-generic kernel, which was itself derived from a +# Debian linux-image postinst script. + +$|=1; +my $version = "4.15.0-2-powerpc64le"; + +if (-d "/etc/kernel/header_postinst.d") { + system ("run-parts --report --exit-on-error --arg=$version " . + "/etc/kernel/header_postinst.d") && + die "Failed to process /etc/kernel/header_postinst.d"; +} + +exit 0; + +__END__ diff --git a/linux-headers-4.15.0-2-powerpcspe.postinst b/linux-headers-4.15.0-2-powerpcspe.postinst new file mode 100644 index 00000000000..44f94f95c59 --- /dev/null +++ b/linux-headers-4.15.0-2-powerpcspe.postinst @@ -0,0 +1,18 @@ +#!/usr/bin/perl +# Author: Michael Gilbert +# Origin: Stripped down version of the linux-headers postinst from Ubuntu's +# 2.6.32-14-generic kernel, which was itself derived from a +# Debian linux-image postinst script. + +$|=1; +my $version = "4.15.0-2-powerpcspe"; + +if (-d "/etc/kernel/header_postinst.d") { + system ("run-parts --report --exit-on-error --arg=$version " . + "/etc/kernel/header_postinst.d") && + die "Failed to process /etc/kernel/header_postinst.d"; +} + +exit 0; + +__END__ diff --git a/linux-headers-4.15.0-2-s390x.postinst b/linux-headers-4.15.0-2-s390x.postinst new file mode 100644 index 00000000000..e23ce1c1951 --- /dev/null +++ b/linux-headers-4.15.0-2-s390x.postinst @@ -0,0 +1,18 @@ +#!/usr/bin/perl +# Author: Michael Gilbert +# Origin: Stripped down version of the linux-headers postinst from Ubuntu's +# 2.6.32-14-generic kernel, which was itself derived from a +# Debian linux-image postinst script. + +$|=1; +my $version = "4.15.0-2-s390x"; + +if (-d "/etc/kernel/header_postinst.d") { + system ("run-parts --report --exit-on-error --arg=$version " . + "/etc/kernel/header_postinst.d") && + die "Failed to process /etc/kernel/header_postinst.d"; +} + +exit 0; + +__END__ diff --git a/linux-headers-4.15.0-2-sh7751r.postinst b/linux-headers-4.15.0-2-sh7751r.postinst new file mode 100644 index 00000000000..fc310fc9f64 --- /dev/null +++ b/linux-headers-4.15.0-2-sh7751r.postinst @@ -0,0 +1,18 @@ +#!/usr/bin/perl +# Author: Michael Gilbert +# Origin: Stripped down version of the linux-headers postinst from Ubuntu's +# 2.6.32-14-generic kernel, which was itself derived from a +# Debian linux-image postinst script. + +$|=1; +my $version = "4.15.0-2-sh7751r"; + +if (-d "/etc/kernel/header_postinst.d") { + system ("run-parts --report --exit-on-error --arg=$version " . + "/etc/kernel/header_postinst.d") && + die "Failed to process /etc/kernel/header_postinst.d"; +} + +exit 0; + +__END__ diff --git a/linux-headers-4.15.0-2-sh7785lcr.postinst b/linux-headers-4.15.0-2-sh7785lcr.postinst new file mode 100644 index 00000000000..bbc11857d67 --- /dev/null +++ b/linux-headers-4.15.0-2-sh7785lcr.postinst @@ -0,0 +1,18 @@ +#!/usr/bin/perl +# Author: Michael Gilbert +# Origin: Stripped down version of the linux-headers postinst from Ubuntu's +# 2.6.32-14-generic kernel, which was itself derived from a +# Debian linux-image postinst script. + +$|=1; +my $version = "4.15.0-2-sh7785lcr"; + +if (-d "/etc/kernel/header_postinst.d") { + system ("run-parts --report --exit-on-error --arg=$version " . + "/etc/kernel/header_postinst.d") && + die "Failed to process /etc/kernel/header_postinst.d"; +} + +exit 0; + +__END__ diff --git a/linux-headers-4.15.0-2-sparc64-smp.postinst b/linux-headers-4.15.0-2-sparc64-smp.postinst new file mode 100644 index 00000000000..fc4cecea592 --- /dev/null +++ b/linux-headers-4.15.0-2-sparc64-smp.postinst @@ -0,0 +1,18 @@ +#!/usr/bin/perl +# Author: Michael Gilbert +# Origin: Stripped down version of the linux-headers postinst from Ubuntu's +# 2.6.32-14-generic kernel, which was itself derived from a +# Debian linux-image postinst script. + +$|=1; +my $version = "4.15.0-2-sparc64-smp"; + +if (-d "/etc/kernel/header_postinst.d") { + system ("run-parts --report --exit-on-error --arg=$version " . + "/etc/kernel/header_postinst.d") && + die "Failed to process /etc/kernel/header_postinst.d"; +} + +exit 0; + +__END__ diff --git a/linux-headers-4.15.0-2-sparc64.postinst b/linux-headers-4.15.0-2-sparc64.postinst new file mode 100644 index 00000000000..0935742f730 --- /dev/null +++ b/linux-headers-4.15.0-2-sparc64.postinst @@ -0,0 +1,18 @@ +#!/usr/bin/perl +# Author: Michael Gilbert +# Origin: Stripped down version of the linux-headers postinst from Ubuntu's +# 2.6.32-14-generic kernel, which was itself derived from a +# Debian linux-image postinst script. + +$|=1; +my $version = "4.15.0-2-sparc64"; + +if (-d "/etc/kernel/header_postinst.d") { + system ("run-parts --report --exit-on-error --arg=$version " . + "/etc/kernel/header_postinst.d") && + die "Failed to process /etc/kernel/header_postinst.d"; +} + +exit 0; + +__END__ diff --git a/linux-image-4.15.0-2-4kc-malta-dbg.lintian-overrides b/linux-image-4.15.0-2-4kc-malta-dbg.lintian-overrides new file mode 100755 index 00000000000..c5b8dffc54e --- /dev/null +++ b/linux-image-4.15.0-2-4kc-malta-dbg.lintian-overrides @@ -0,0 +1,15 @@ +#!/usr/bin/dh-exec + +# Kernel dbg packages contain a full image with debug data +linux-image-4.15.0-2-4kc-malta-dbg: dbg-package-missing-depends + +# glibc doesn't seem to check for a PT_GNU_STACK section in vDSOs, so +# it's OK that they don't have it +[arm64 armhf] linux-image-4.15.0-2-4kc-malta-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-4kc-malta/vdso/vdso.so +[amd64 i386 ppc64el s390x] linux-image-4.15.0-2-4kc-malta-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-4kc-malta/vdso/vdso32.so +[amd64 ppc64el s390x] linux-image-4.15.0-2-4kc-malta-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-4kc-malta/vdso/vdso64.so +[amd64] linux-image-4.15.0-2-4kc-malta-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-4kc-malta/vdso/vdsox32.so + +# It is intended that 64-bit kernels provide vDSOs for 32-bit executables +[amd64 ppc64el s390x] linux-image-4.15.0-2-4kc-malta-dbg: binary-from-other-architecture usr/lib/debug/lib/modules/4.15.0-2-4kc-malta/vdso/vdso32.so +[amd64] linux-image-4.15.0-2-4kc-malta-dbg: binary-from-other-architecture usr/lib/debug/lib/modules/4.15.0-2-4kc-malta/vdso/vdsox32.so diff --git a/linux-image-4.15.0-2-4kc-malta.postinst b/linux-image-4.15.0-2-4kc-malta.postinst new file mode 100644 index 00000000000..fc129354388 --- /dev/null +++ b/linux-image-4.15.0-2-4kc-malta.postinst @@ -0,0 +1,25 @@ +#!/bin/sh -e + +version=4.15.0-2-4kc-malta +image_path=/boot/vmlinux-$version + +if [ "$1" != configure ]; then + exit 0 +fi + +depmod $version + +if [ -f /lib/modules/$version/.fresh-install ]; then + change=install +else + change=upgrade +fi +linux-update-symlinks $change $version $image_path +rm -f /lib/modules/$version/.fresh-install + +if [ -d /etc/kernel/postinst.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/postinst.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-4kc-malta.postrm b/linux-image-4.15.0-2-4kc-malta.postrm new file mode 100644 index 00000000000..8550467980e --- /dev/null +++ b/linux-image-4.15.0-2-4kc-malta.postrm @@ -0,0 +1,31 @@ +#!/bin/sh -e + +version=4.15.0-2-4kc-malta +image_path=/boot/vmlinux-$version + +rm -f /lib/modules/$version/.fresh-install + +if [ "$1" != upgrade ] && command -v linux-update-symlinks >/dev/null; then + linux-update-symlinks remove $version $image_path +fi + +if [ -d /etc/kernel/postrm.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/postrm.d +fi + +if [ "$1" = purge ]; then + for extra_file in modules.dep modules.isapnpmap modules.pcimap \ + modules.usbmap modules.parportmap \ + modules.generic_string modules.ieee1394map \ + modules.ieee1394map modules.pnpbiosmap \ + modules.alias modules.ccwmap modules.inputmap \ + modules.symbols modules.ofmap \ + modules.seriomap modules.\*.bin \ + modules.softdep modules.devname; do + eval rm -f /lib/modules/$version/$extra_file + done + rmdir /lib/modules/$version || true +fi + +exit 0 diff --git a/linux-image-4.15.0-2-4kc-malta.preinst b/linux-image-4.15.0-2-4kc-malta.preinst new file mode 100644 index 00000000000..da8ba608c63 --- /dev/null +++ b/linux-image-4.15.0-2-4kc-malta.preinst @@ -0,0 +1,21 @@ +#!/bin/sh -e + +version=4.15.0-2-4kc-malta +image_path=/boot/vmlinux-$version + +if [ "$1" = abort-upgrade ]; then + exit 0 +fi + +if [ "$1" = install ]; then + # Create a flag file for postinst + mkdir -p /lib/modules/$version + touch /lib/modules/$version/.fresh-install +fi + +if [ -d /etc/kernel/preinst.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/preinst.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-4kc-malta.prerm b/linux-image-4.15.0-2-4kc-malta.prerm new file mode 100644 index 00000000000..ae6ebf4a98c --- /dev/null +++ b/linux-image-4.15.0-2-4kc-malta.prerm @@ -0,0 +1,17 @@ +#!/bin/sh -e + +version=4.15.0-2-4kc-malta +image_path=/boot/vmlinux-$version + +if [ "$1" != remove ]; then + exit 0 +fi + +linux-check-removal $version + +if [ -d /etc/kernel/prerm.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/prerm.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-5kc-malta-dbg.lintian-overrides b/linux-image-4.15.0-2-5kc-malta-dbg.lintian-overrides new file mode 100755 index 00000000000..90354954e24 --- /dev/null +++ b/linux-image-4.15.0-2-5kc-malta-dbg.lintian-overrides @@ -0,0 +1,15 @@ +#!/usr/bin/dh-exec + +# Kernel dbg packages contain a full image with debug data +linux-image-4.15.0-2-5kc-malta-dbg: dbg-package-missing-depends + +# glibc doesn't seem to check for a PT_GNU_STACK section in vDSOs, so +# it's OK that they don't have it +[arm64 armhf] linux-image-4.15.0-2-5kc-malta-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-5kc-malta/vdso/vdso.so +[amd64 i386 ppc64el s390x] linux-image-4.15.0-2-5kc-malta-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-5kc-malta/vdso/vdso32.so +[amd64 ppc64el s390x] linux-image-4.15.0-2-5kc-malta-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-5kc-malta/vdso/vdso64.so +[amd64] linux-image-4.15.0-2-5kc-malta-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-5kc-malta/vdso/vdsox32.so + +# It is intended that 64-bit kernels provide vDSOs for 32-bit executables +[amd64 ppc64el s390x] linux-image-4.15.0-2-5kc-malta-dbg: binary-from-other-architecture usr/lib/debug/lib/modules/4.15.0-2-5kc-malta/vdso/vdso32.so +[amd64] linux-image-4.15.0-2-5kc-malta-dbg: binary-from-other-architecture usr/lib/debug/lib/modules/4.15.0-2-5kc-malta/vdso/vdsox32.so diff --git a/linux-image-4.15.0-2-5kc-malta.postinst b/linux-image-4.15.0-2-5kc-malta.postinst new file mode 100644 index 00000000000..fee81a4a934 --- /dev/null +++ b/linux-image-4.15.0-2-5kc-malta.postinst @@ -0,0 +1,25 @@ +#!/bin/sh -e + +version=4.15.0-2-5kc-malta +image_path=/boot/vmlinux-$version + +if [ "$1" != configure ]; then + exit 0 +fi + +depmod $version + +if [ -f /lib/modules/$version/.fresh-install ]; then + change=install +else + change=upgrade +fi +linux-update-symlinks $change $version $image_path +rm -f /lib/modules/$version/.fresh-install + +if [ -d /etc/kernel/postinst.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/postinst.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-5kc-malta.postrm b/linux-image-4.15.0-2-5kc-malta.postrm new file mode 100644 index 00000000000..f15a01f0741 --- /dev/null +++ b/linux-image-4.15.0-2-5kc-malta.postrm @@ -0,0 +1,31 @@ +#!/bin/sh -e + +version=4.15.0-2-5kc-malta +image_path=/boot/vmlinux-$version + +rm -f /lib/modules/$version/.fresh-install + +if [ "$1" != upgrade ] && command -v linux-update-symlinks >/dev/null; then + linux-update-symlinks remove $version $image_path +fi + +if [ -d /etc/kernel/postrm.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/postrm.d +fi + +if [ "$1" = purge ]; then + for extra_file in modules.dep modules.isapnpmap modules.pcimap \ + modules.usbmap modules.parportmap \ + modules.generic_string modules.ieee1394map \ + modules.ieee1394map modules.pnpbiosmap \ + modules.alias modules.ccwmap modules.inputmap \ + modules.symbols modules.ofmap \ + modules.seriomap modules.\*.bin \ + modules.softdep modules.devname; do + eval rm -f /lib/modules/$version/$extra_file + done + rmdir /lib/modules/$version || true +fi + +exit 0 diff --git a/linux-image-4.15.0-2-5kc-malta.preinst b/linux-image-4.15.0-2-5kc-malta.preinst new file mode 100644 index 00000000000..43478626a76 --- /dev/null +++ b/linux-image-4.15.0-2-5kc-malta.preinst @@ -0,0 +1,21 @@ +#!/bin/sh -e + +version=4.15.0-2-5kc-malta +image_path=/boot/vmlinux-$version + +if [ "$1" = abort-upgrade ]; then + exit 0 +fi + +if [ "$1" = install ]; then + # Create a flag file for postinst + mkdir -p /lib/modules/$version + touch /lib/modules/$version/.fresh-install +fi + +if [ -d /etc/kernel/preinst.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/preinst.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-5kc-malta.prerm b/linux-image-4.15.0-2-5kc-malta.prerm new file mode 100644 index 00000000000..fe593ec55e0 --- /dev/null +++ b/linux-image-4.15.0-2-5kc-malta.prerm @@ -0,0 +1,17 @@ +#!/bin/sh -e + +version=4.15.0-2-5kc-malta +image_path=/boot/vmlinux-$version + +if [ "$1" != remove ]; then + exit 0 +fi + +linux-check-removal $version + +if [ -d /etc/kernel/prerm.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/prerm.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-686-dbg.lintian-overrides b/linux-image-4.15.0-2-686-dbg.lintian-overrides new file mode 100755 index 00000000000..5199ba3c5e5 --- /dev/null +++ b/linux-image-4.15.0-2-686-dbg.lintian-overrides @@ -0,0 +1,15 @@ +#!/usr/bin/dh-exec + +# Kernel dbg packages contain a full image with debug data +linux-image-4.15.0-2-686-dbg: dbg-package-missing-depends + +# glibc doesn't seem to check for a PT_GNU_STACK section in vDSOs, so +# it's OK that they don't have it +[arm64 armhf] linux-image-4.15.0-2-686-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-686/vdso/vdso.so +[amd64 i386 ppc64el s390x] linux-image-4.15.0-2-686-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-686/vdso/vdso32.so +[amd64 ppc64el s390x] linux-image-4.15.0-2-686-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-686/vdso/vdso64.so +[amd64] linux-image-4.15.0-2-686-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-686/vdso/vdsox32.so + +# It is intended that 64-bit kernels provide vDSOs for 32-bit executables +[amd64 ppc64el s390x] linux-image-4.15.0-2-686-dbg: binary-from-other-architecture usr/lib/debug/lib/modules/4.15.0-2-686/vdso/vdso32.so +[amd64] linux-image-4.15.0-2-686-dbg: binary-from-other-architecture usr/lib/debug/lib/modules/4.15.0-2-686/vdso/vdsox32.so diff --git a/linux-image-4.15.0-2-686-pae-dbg.lintian-overrides b/linux-image-4.15.0-2-686-pae-dbg.lintian-overrides new file mode 100755 index 00000000000..0c6763cda15 --- /dev/null +++ b/linux-image-4.15.0-2-686-pae-dbg.lintian-overrides @@ -0,0 +1,15 @@ +#!/usr/bin/dh-exec + +# Kernel dbg packages contain a full image with debug data +linux-image-4.15.0-2-686-pae-dbg: dbg-package-missing-depends + +# glibc doesn't seem to check for a PT_GNU_STACK section in vDSOs, so +# it's OK that they don't have it +[arm64 armhf] linux-image-4.15.0-2-686-pae-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-686-pae/vdso/vdso.so +[amd64 i386 ppc64el s390x] linux-image-4.15.0-2-686-pae-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-686-pae/vdso/vdso32.so +[amd64 ppc64el s390x] linux-image-4.15.0-2-686-pae-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-686-pae/vdso/vdso64.so +[amd64] linux-image-4.15.0-2-686-pae-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-686-pae/vdso/vdsox32.so + +# It is intended that 64-bit kernels provide vDSOs for 32-bit executables +[amd64 ppc64el s390x] linux-image-4.15.0-2-686-pae-dbg: binary-from-other-architecture usr/lib/debug/lib/modules/4.15.0-2-686-pae/vdso/vdso32.so +[amd64] linux-image-4.15.0-2-686-pae-dbg: binary-from-other-architecture usr/lib/debug/lib/modules/4.15.0-2-686-pae/vdso/vdsox32.so diff --git a/linux-image-4.15.0-2-686-pae.postinst b/linux-image-4.15.0-2-686-pae.postinst new file mode 100644 index 00000000000..d8004bfdca4 --- /dev/null +++ b/linux-image-4.15.0-2-686-pae.postinst @@ -0,0 +1,25 @@ +#!/bin/sh -e + +version=4.15.0-2-686-pae +image_path=/boot/vmlinuz-$version + +if [ "$1" != configure ]; then + exit 0 +fi + +depmod $version + +if [ -f /lib/modules/$version/.fresh-install ]; then + change=install +else + change=upgrade +fi +linux-update-symlinks $change $version $image_path +rm -f /lib/modules/$version/.fresh-install + +if [ -d /etc/kernel/postinst.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/postinst.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-686-pae.postrm b/linux-image-4.15.0-2-686-pae.postrm new file mode 100644 index 00000000000..ecc70ad25e7 --- /dev/null +++ b/linux-image-4.15.0-2-686-pae.postrm @@ -0,0 +1,31 @@ +#!/bin/sh -e + +version=4.15.0-2-686-pae +image_path=/boot/vmlinuz-$version + +rm -f /lib/modules/$version/.fresh-install + +if [ "$1" != upgrade ] && command -v linux-update-symlinks >/dev/null; then + linux-update-symlinks remove $version $image_path +fi + +if [ -d /etc/kernel/postrm.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/postrm.d +fi + +if [ "$1" = purge ]; then + for extra_file in modules.dep modules.isapnpmap modules.pcimap \ + modules.usbmap modules.parportmap \ + modules.generic_string modules.ieee1394map \ + modules.ieee1394map modules.pnpbiosmap \ + modules.alias modules.ccwmap modules.inputmap \ + modules.symbols modules.ofmap \ + modules.seriomap modules.\*.bin \ + modules.softdep modules.devname; do + eval rm -f /lib/modules/$version/$extra_file + done + rmdir /lib/modules/$version || true +fi + +exit 0 diff --git a/linux-image-4.15.0-2-686-pae.preinst b/linux-image-4.15.0-2-686-pae.preinst new file mode 100644 index 00000000000..1d9be360df4 --- /dev/null +++ b/linux-image-4.15.0-2-686-pae.preinst @@ -0,0 +1,21 @@ +#!/bin/sh -e + +version=4.15.0-2-686-pae +image_path=/boot/vmlinuz-$version + +if [ "$1" = abort-upgrade ]; then + exit 0 +fi + +if [ "$1" = install ]; then + # Create a flag file for postinst + mkdir -p /lib/modules/$version + touch /lib/modules/$version/.fresh-install +fi + +if [ -d /etc/kernel/preinst.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/preinst.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-686-pae.prerm b/linux-image-4.15.0-2-686-pae.prerm new file mode 100644 index 00000000000..54418c50290 --- /dev/null +++ b/linux-image-4.15.0-2-686-pae.prerm @@ -0,0 +1,17 @@ +#!/bin/sh -e + +version=4.15.0-2-686-pae +image_path=/boot/vmlinuz-$version + +if [ "$1" != remove ]; then + exit 0 +fi + +linux-check-removal $version + +if [ -d /etc/kernel/prerm.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/prerm.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-686.postinst b/linux-image-4.15.0-2-686.postinst new file mode 100644 index 00000000000..9df2183420a --- /dev/null +++ b/linux-image-4.15.0-2-686.postinst @@ -0,0 +1,25 @@ +#!/bin/sh -e + +version=4.15.0-2-686 +image_path=/boot/vmlinuz-$version + +if [ "$1" != configure ]; then + exit 0 +fi + +depmod $version + +if [ -f /lib/modules/$version/.fresh-install ]; then + change=install +else + change=upgrade +fi +linux-update-symlinks $change $version $image_path +rm -f /lib/modules/$version/.fresh-install + +if [ -d /etc/kernel/postinst.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/postinst.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-686.postrm b/linux-image-4.15.0-2-686.postrm new file mode 100644 index 00000000000..090a0f51928 --- /dev/null +++ b/linux-image-4.15.0-2-686.postrm @@ -0,0 +1,31 @@ +#!/bin/sh -e + +version=4.15.0-2-686 +image_path=/boot/vmlinuz-$version + +rm -f /lib/modules/$version/.fresh-install + +if [ "$1" != upgrade ] && command -v linux-update-symlinks >/dev/null; then + linux-update-symlinks remove $version $image_path +fi + +if [ -d /etc/kernel/postrm.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/postrm.d +fi + +if [ "$1" = purge ]; then + for extra_file in modules.dep modules.isapnpmap modules.pcimap \ + modules.usbmap modules.parportmap \ + modules.generic_string modules.ieee1394map \ + modules.ieee1394map modules.pnpbiosmap \ + modules.alias modules.ccwmap modules.inputmap \ + modules.symbols modules.ofmap \ + modules.seriomap modules.\*.bin \ + modules.softdep modules.devname; do + eval rm -f /lib/modules/$version/$extra_file + done + rmdir /lib/modules/$version || true +fi + +exit 0 diff --git a/linux-image-4.15.0-2-686.preinst b/linux-image-4.15.0-2-686.preinst new file mode 100644 index 00000000000..f189df2f9d5 --- /dev/null +++ b/linux-image-4.15.0-2-686.preinst @@ -0,0 +1,21 @@ +#!/bin/sh -e + +version=4.15.0-2-686 +image_path=/boot/vmlinuz-$version + +if [ "$1" = abort-upgrade ]; then + exit 0 +fi + +if [ "$1" = install ]; then + # Create a flag file for postinst + mkdir -p /lib/modules/$version + touch /lib/modules/$version/.fresh-install +fi + +if [ -d /etc/kernel/preinst.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/preinst.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-686.prerm b/linux-image-4.15.0-2-686.prerm new file mode 100644 index 00000000000..6072313b4d4 --- /dev/null +++ b/linux-image-4.15.0-2-686.prerm @@ -0,0 +1,17 @@ +#!/bin/sh -e + +version=4.15.0-2-686 +image_path=/boot/vmlinuz-$version + +if [ "$1" != remove ]; then + exit 0 +fi + +linux-check-removal $version + +if [ -d /etc/kernel/prerm.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/prerm.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-alpha-generic-dbg.lintian-overrides b/linux-image-4.15.0-2-alpha-generic-dbg.lintian-overrides new file mode 100755 index 00000000000..9d97319958c --- /dev/null +++ b/linux-image-4.15.0-2-alpha-generic-dbg.lintian-overrides @@ -0,0 +1,15 @@ +#!/usr/bin/dh-exec + +# Kernel dbg packages contain a full image with debug data +linux-image-4.15.0-2-alpha-generic-dbg: dbg-package-missing-depends + +# glibc doesn't seem to check for a PT_GNU_STACK section in vDSOs, so +# it's OK that they don't have it +[arm64 armhf] linux-image-4.15.0-2-alpha-generic-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-alpha-generic/vdso/vdso.so +[amd64 i386 ppc64el s390x] linux-image-4.15.0-2-alpha-generic-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-alpha-generic/vdso/vdso32.so +[amd64 ppc64el s390x] linux-image-4.15.0-2-alpha-generic-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-alpha-generic/vdso/vdso64.so +[amd64] linux-image-4.15.0-2-alpha-generic-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-alpha-generic/vdso/vdsox32.so + +# It is intended that 64-bit kernels provide vDSOs for 32-bit executables +[amd64 ppc64el s390x] linux-image-4.15.0-2-alpha-generic-dbg: binary-from-other-architecture usr/lib/debug/lib/modules/4.15.0-2-alpha-generic/vdso/vdso32.so +[amd64] linux-image-4.15.0-2-alpha-generic-dbg: binary-from-other-architecture usr/lib/debug/lib/modules/4.15.0-2-alpha-generic/vdso/vdsox32.so diff --git a/linux-image-4.15.0-2-alpha-generic.postinst b/linux-image-4.15.0-2-alpha-generic.postinst new file mode 100644 index 00000000000..c85767a5571 --- /dev/null +++ b/linux-image-4.15.0-2-alpha-generic.postinst @@ -0,0 +1,25 @@ +#!/bin/sh -e + +version=4.15.0-2-alpha-generic +image_path=/boot/vmlinuz-$version + +if [ "$1" != configure ]; then + exit 0 +fi + +depmod $version + +if [ -f /lib/modules/$version/.fresh-install ]; then + change=install +else + change=upgrade +fi +linux-update-symlinks $change $version $image_path +rm -f /lib/modules/$version/.fresh-install + +if [ -d /etc/kernel/postinst.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/postinst.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-alpha-generic.postrm b/linux-image-4.15.0-2-alpha-generic.postrm new file mode 100644 index 00000000000..50da215edfb --- /dev/null +++ b/linux-image-4.15.0-2-alpha-generic.postrm @@ -0,0 +1,31 @@ +#!/bin/sh -e + +version=4.15.0-2-alpha-generic +image_path=/boot/vmlinuz-$version + +rm -f /lib/modules/$version/.fresh-install + +if [ "$1" != upgrade ] && command -v linux-update-symlinks >/dev/null; then + linux-update-symlinks remove $version $image_path +fi + +if [ -d /etc/kernel/postrm.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/postrm.d +fi + +if [ "$1" = purge ]; then + for extra_file in modules.dep modules.isapnpmap modules.pcimap \ + modules.usbmap modules.parportmap \ + modules.generic_string modules.ieee1394map \ + modules.ieee1394map modules.pnpbiosmap \ + modules.alias modules.ccwmap modules.inputmap \ + modules.symbols modules.ofmap \ + modules.seriomap modules.\*.bin \ + modules.softdep modules.devname; do + eval rm -f /lib/modules/$version/$extra_file + done + rmdir /lib/modules/$version || true +fi + +exit 0 diff --git a/linux-image-4.15.0-2-alpha-generic.preinst b/linux-image-4.15.0-2-alpha-generic.preinst new file mode 100644 index 00000000000..88eddf362a5 --- /dev/null +++ b/linux-image-4.15.0-2-alpha-generic.preinst @@ -0,0 +1,21 @@ +#!/bin/sh -e + +version=4.15.0-2-alpha-generic +image_path=/boot/vmlinuz-$version + +if [ "$1" = abort-upgrade ]; then + exit 0 +fi + +if [ "$1" = install ]; then + # Create a flag file for postinst + mkdir -p /lib/modules/$version + touch /lib/modules/$version/.fresh-install +fi + +if [ -d /etc/kernel/preinst.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/preinst.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-alpha-generic.prerm b/linux-image-4.15.0-2-alpha-generic.prerm new file mode 100644 index 00000000000..662f46a5029 --- /dev/null +++ b/linux-image-4.15.0-2-alpha-generic.prerm @@ -0,0 +1,17 @@ +#!/bin/sh -e + +version=4.15.0-2-alpha-generic +image_path=/boot/vmlinuz-$version + +if [ "$1" != remove ]; then + exit 0 +fi + +linux-check-removal $version + +if [ -d /etc/kernel/prerm.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/prerm.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-alpha-smp-dbg.lintian-overrides b/linux-image-4.15.0-2-alpha-smp-dbg.lintian-overrides new file mode 100755 index 00000000000..7d44c9e8860 --- /dev/null +++ b/linux-image-4.15.0-2-alpha-smp-dbg.lintian-overrides @@ -0,0 +1,15 @@ +#!/usr/bin/dh-exec + +# Kernel dbg packages contain a full image with debug data +linux-image-4.15.0-2-alpha-smp-dbg: dbg-package-missing-depends + +# glibc doesn't seem to check for a PT_GNU_STACK section in vDSOs, so +# it's OK that they don't have it +[arm64 armhf] linux-image-4.15.0-2-alpha-smp-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-alpha-smp/vdso/vdso.so +[amd64 i386 ppc64el s390x] linux-image-4.15.0-2-alpha-smp-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-alpha-smp/vdso/vdso32.so +[amd64 ppc64el s390x] linux-image-4.15.0-2-alpha-smp-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-alpha-smp/vdso/vdso64.so +[amd64] linux-image-4.15.0-2-alpha-smp-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-alpha-smp/vdso/vdsox32.so + +# It is intended that 64-bit kernels provide vDSOs for 32-bit executables +[amd64 ppc64el s390x] linux-image-4.15.0-2-alpha-smp-dbg: binary-from-other-architecture usr/lib/debug/lib/modules/4.15.0-2-alpha-smp/vdso/vdso32.so +[amd64] linux-image-4.15.0-2-alpha-smp-dbg: binary-from-other-architecture usr/lib/debug/lib/modules/4.15.0-2-alpha-smp/vdso/vdsox32.so diff --git a/linux-image-4.15.0-2-alpha-smp.postinst b/linux-image-4.15.0-2-alpha-smp.postinst new file mode 100644 index 00000000000..1da58389206 --- /dev/null +++ b/linux-image-4.15.0-2-alpha-smp.postinst @@ -0,0 +1,25 @@ +#!/bin/sh -e + +version=4.15.0-2-alpha-smp +image_path=/boot/vmlinuz-$version + +if [ "$1" != configure ]; then + exit 0 +fi + +depmod $version + +if [ -f /lib/modules/$version/.fresh-install ]; then + change=install +else + change=upgrade +fi +linux-update-symlinks $change $version $image_path +rm -f /lib/modules/$version/.fresh-install + +if [ -d /etc/kernel/postinst.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/postinst.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-alpha-smp.postrm b/linux-image-4.15.0-2-alpha-smp.postrm new file mode 100644 index 00000000000..4b2081dce7b --- /dev/null +++ b/linux-image-4.15.0-2-alpha-smp.postrm @@ -0,0 +1,31 @@ +#!/bin/sh -e + +version=4.15.0-2-alpha-smp +image_path=/boot/vmlinuz-$version + +rm -f /lib/modules/$version/.fresh-install + +if [ "$1" != upgrade ] && command -v linux-update-symlinks >/dev/null; then + linux-update-symlinks remove $version $image_path +fi + +if [ -d /etc/kernel/postrm.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/postrm.d +fi + +if [ "$1" = purge ]; then + for extra_file in modules.dep modules.isapnpmap modules.pcimap \ + modules.usbmap modules.parportmap \ + modules.generic_string modules.ieee1394map \ + modules.ieee1394map modules.pnpbiosmap \ + modules.alias modules.ccwmap modules.inputmap \ + modules.symbols modules.ofmap \ + modules.seriomap modules.\*.bin \ + modules.softdep modules.devname; do + eval rm -f /lib/modules/$version/$extra_file + done + rmdir /lib/modules/$version || true +fi + +exit 0 diff --git a/linux-image-4.15.0-2-alpha-smp.preinst b/linux-image-4.15.0-2-alpha-smp.preinst new file mode 100644 index 00000000000..fbaf5ae3993 --- /dev/null +++ b/linux-image-4.15.0-2-alpha-smp.preinst @@ -0,0 +1,21 @@ +#!/bin/sh -e + +version=4.15.0-2-alpha-smp +image_path=/boot/vmlinuz-$version + +if [ "$1" = abort-upgrade ]; then + exit 0 +fi + +if [ "$1" = install ]; then + # Create a flag file for postinst + mkdir -p /lib/modules/$version + touch /lib/modules/$version/.fresh-install +fi + +if [ -d /etc/kernel/preinst.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/preinst.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-alpha-smp.prerm b/linux-image-4.15.0-2-alpha-smp.prerm new file mode 100644 index 00000000000..901a8649566 --- /dev/null +++ b/linux-image-4.15.0-2-alpha-smp.prerm @@ -0,0 +1,17 @@ +#!/bin/sh -e + +version=4.15.0-2-alpha-smp +image_path=/boot/vmlinuz-$version + +if [ "$1" != remove ]; then + exit 0 +fi + +linux-check-removal $version + +if [ -d /etc/kernel/prerm.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/prerm.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-amd64-dbg.lintian-overrides b/linux-image-4.15.0-2-amd64-dbg.lintian-overrides new file mode 100755 index 00000000000..2eda157b867 --- /dev/null +++ b/linux-image-4.15.0-2-amd64-dbg.lintian-overrides @@ -0,0 +1,15 @@ +#!/usr/bin/dh-exec + +# Kernel dbg packages contain a full image with debug data +linux-image-4.15.0-2-amd64-dbg: dbg-package-missing-depends + +# glibc doesn't seem to check for a PT_GNU_STACK section in vDSOs, so +# it's OK that they don't have it +[arm64 armhf] linux-image-4.15.0-2-amd64-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-amd64/vdso/vdso.so +[amd64 i386 ppc64el s390x] linux-image-4.15.0-2-amd64-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-amd64/vdso/vdso32.so +[amd64 ppc64el s390x] linux-image-4.15.0-2-amd64-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-amd64/vdso/vdso64.so +[amd64] linux-image-4.15.0-2-amd64-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-amd64/vdso/vdsox32.so + +# It is intended that 64-bit kernels provide vDSOs for 32-bit executables +[amd64 ppc64el s390x] linux-image-4.15.0-2-amd64-dbg: binary-from-other-architecture usr/lib/debug/lib/modules/4.15.0-2-amd64/vdso/vdso32.so +[amd64] linux-image-4.15.0-2-amd64-dbg: binary-from-other-architecture usr/lib/debug/lib/modules/4.15.0-2-amd64/vdso/vdsox32.so diff --git a/linux-image-4.15.0-2-amd64.postinst b/linux-image-4.15.0-2-amd64.postinst new file mode 100644 index 00000000000..840cb63de7c --- /dev/null +++ b/linux-image-4.15.0-2-amd64.postinst @@ -0,0 +1,25 @@ +#!/bin/sh -e + +version=4.15.0-2-amd64 +image_path=/boot/vmlinuz-$version + +if [ "$1" != configure ]; then + exit 0 +fi + +depmod $version + +if [ -f /lib/modules/$version/.fresh-install ]; then + change=install +else + change=upgrade +fi +linux-update-symlinks $change $version $image_path +rm -f /lib/modules/$version/.fresh-install + +if [ -d /etc/kernel/postinst.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/postinst.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-amd64.postrm b/linux-image-4.15.0-2-amd64.postrm new file mode 100644 index 00000000000..ee08f472115 --- /dev/null +++ b/linux-image-4.15.0-2-amd64.postrm @@ -0,0 +1,31 @@ +#!/bin/sh -e + +version=4.15.0-2-amd64 +image_path=/boot/vmlinuz-$version + +rm -f /lib/modules/$version/.fresh-install + +if [ "$1" != upgrade ] && command -v linux-update-symlinks >/dev/null; then + linux-update-symlinks remove $version $image_path +fi + +if [ -d /etc/kernel/postrm.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/postrm.d +fi + +if [ "$1" = purge ]; then + for extra_file in modules.dep modules.isapnpmap modules.pcimap \ + modules.usbmap modules.parportmap \ + modules.generic_string modules.ieee1394map \ + modules.ieee1394map modules.pnpbiosmap \ + modules.alias modules.ccwmap modules.inputmap \ + modules.symbols modules.ofmap \ + modules.seriomap modules.\*.bin \ + modules.softdep modules.devname; do + eval rm -f /lib/modules/$version/$extra_file + done + rmdir /lib/modules/$version || true +fi + +exit 0 diff --git a/linux-image-4.15.0-2-amd64.preinst b/linux-image-4.15.0-2-amd64.preinst new file mode 100644 index 00000000000..97496baa604 --- /dev/null +++ b/linux-image-4.15.0-2-amd64.preinst @@ -0,0 +1,21 @@ +#!/bin/sh -e + +version=4.15.0-2-amd64 +image_path=/boot/vmlinuz-$version + +if [ "$1" = abort-upgrade ]; then + exit 0 +fi + +if [ "$1" = install ]; then + # Create a flag file for postinst + mkdir -p /lib/modules/$version + touch /lib/modules/$version/.fresh-install +fi + +if [ -d /etc/kernel/preinst.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/preinst.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-amd64.prerm b/linux-image-4.15.0-2-amd64.prerm new file mode 100644 index 00000000000..34e75422c35 --- /dev/null +++ b/linux-image-4.15.0-2-amd64.prerm @@ -0,0 +1,17 @@ +#!/bin/sh -e + +version=4.15.0-2-amd64 +image_path=/boot/vmlinuz-$version + +if [ "$1" != remove ]; then + exit 0 +fi + +linux-check-removal $version + +if [ -d /etc/kernel/prerm.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/prerm.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-arm64-dbg.lintian-overrides b/linux-image-4.15.0-2-arm64-dbg.lintian-overrides new file mode 100755 index 00000000000..70f334f48d0 --- /dev/null +++ b/linux-image-4.15.0-2-arm64-dbg.lintian-overrides @@ -0,0 +1,15 @@ +#!/usr/bin/dh-exec + +# Kernel dbg packages contain a full image with debug data +linux-image-4.15.0-2-arm64-dbg: dbg-package-missing-depends + +# glibc doesn't seem to check for a PT_GNU_STACK section in vDSOs, so +# it's OK that they don't have it +[arm64 armhf] linux-image-4.15.0-2-arm64-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-arm64/vdso/vdso.so +[amd64 i386 ppc64el s390x] linux-image-4.15.0-2-arm64-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-arm64/vdso/vdso32.so +[amd64 ppc64el s390x] linux-image-4.15.0-2-arm64-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-arm64/vdso/vdso64.so +[amd64] linux-image-4.15.0-2-arm64-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-arm64/vdso/vdsox32.so + +# It is intended that 64-bit kernels provide vDSOs for 32-bit executables +[amd64 ppc64el s390x] linux-image-4.15.0-2-arm64-dbg: binary-from-other-architecture usr/lib/debug/lib/modules/4.15.0-2-arm64/vdso/vdso32.so +[amd64] linux-image-4.15.0-2-arm64-dbg: binary-from-other-architecture usr/lib/debug/lib/modules/4.15.0-2-arm64/vdso/vdsox32.so diff --git a/linux-image-4.15.0-2-arm64.postinst b/linux-image-4.15.0-2-arm64.postinst new file mode 100644 index 00000000000..b92fcac643c --- /dev/null +++ b/linux-image-4.15.0-2-arm64.postinst @@ -0,0 +1,25 @@ +#!/bin/sh -e + +version=4.15.0-2-arm64 +image_path=/boot/vmlinuz-$version + +if [ "$1" != configure ]; then + exit 0 +fi + +depmod $version + +if [ -f /lib/modules/$version/.fresh-install ]; then + change=install +else + change=upgrade +fi +linux-update-symlinks $change $version $image_path +rm -f /lib/modules/$version/.fresh-install + +if [ -d /etc/kernel/postinst.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/postinst.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-arm64.postrm b/linux-image-4.15.0-2-arm64.postrm new file mode 100644 index 00000000000..e0944a977fd --- /dev/null +++ b/linux-image-4.15.0-2-arm64.postrm @@ -0,0 +1,31 @@ +#!/bin/sh -e + +version=4.15.0-2-arm64 +image_path=/boot/vmlinuz-$version + +rm -f /lib/modules/$version/.fresh-install + +if [ "$1" != upgrade ] && command -v linux-update-symlinks >/dev/null; then + linux-update-symlinks remove $version $image_path +fi + +if [ -d /etc/kernel/postrm.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/postrm.d +fi + +if [ "$1" = purge ]; then + for extra_file in modules.dep modules.isapnpmap modules.pcimap \ + modules.usbmap modules.parportmap \ + modules.generic_string modules.ieee1394map \ + modules.ieee1394map modules.pnpbiosmap \ + modules.alias modules.ccwmap modules.inputmap \ + modules.symbols modules.ofmap \ + modules.seriomap modules.\*.bin \ + modules.softdep modules.devname; do + eval rm -f /lib/modules/$version/$extra_file + done + rmdir /lib/modules/$version || true +fi + +exit 0 diff --git a/linux-image-4.15.0-2-arm64.preinst b/linux-image-4.15.0-2-arm64.preinst new file mode 100644 index 00000000000..c7d3e971774 --- /dev/null +++ b/linux-image-4.15.0-2-arm64.preinst @@ -0,0 +1,21 @@ +#!/bin/sh -e + +version=4.15.0-2-arm64 +image_path=/boot/vmlinuz-$version + +if [ "$1" = abort-upgrade ]; then + exit 0 +fi + +if [ "$1" = install ]; then + # Create a flag file for postinst + mkdir -p /lib/modules/$version + touch /lib/modules/$version/.fresh-install +fi + +if [ -d /etc/kernel/preinst.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/preinst.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-arm64.prerm b/linux-image-4.15.0-2-arm64.prerm new file mode 100644 index 00000000000..575d6db7647 --- /dev/null +++ b/linux-image-4.15.0-2-arm64.prerm @@ -0,0 +1,17 @@ +#!/bin/sh -e + +version=4.15.0-2-arm64 +image_path=/boot/vmlinuz-$version + +if [ "$1" != remove ]; then + exit 0 +fi + +linux-check-removal $version + +if [ -d /etc/kernel/prerm.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/prerm.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-armmp-dbg.lintian-overrides b/linux-image-4.15.0-2-armmp-dbg.lintian-overrides new file mode 100755 index 00000000000..8a72c38d6f9 --- /dev/null +++ b/linux-image-4.15.0-2-armmp-dbg.lintian-overrides @@ -0,0 +1,15 @@ +#!/usr/bin/dh-exec + +# Kernel dbg packages contain a full image with debug data +linux-image-4.15.0-2-armmp-dbg: dbg-package-missing-depends + +# glibc doesn't seem to check for a PT_GNU_STACK section in vDSOs, so +# it's OK that they don't have it +[arm64 armhf] linux-image-4.15.0-2-armmp-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-armmp/vdso/vdso.so +[amd64 i386 ppc64el s390x] linux-image-4.15.0-2-armmp-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-armmp/vdso/vdso32.so +[amd64 ppc64el s390x] linux-image-4.15.0-2-armmp-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-armmp/vdso/vdso64.so +[amd64] linux-image-4.15.0-2-armmp-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-armmp/vdso/vdsox32.so + +# It is intended that 64-bit kernels provide vDSOs for 32-bit executables +[amd64 ppc64el s390x] linux-image-4.15.0-2-armmp-dbg: binary-from-other-architecture usr/lib/debug/lib/modules/4.15.0-2-armmp/vdso/vdso32.so +[amd64] linux-image-4.15.0-2-armmp-dbg: binary-from-other-architecture usr/lib/debug/lib/modules/4.15.0-2-armmp/vdso/vdsox32.so diff --git a/linux-image-4.15.0-2-armmp-lpae-dbg.lintian-overrides b/linux-image-4.15.0-2-armmp-lpae-dbg.lintian-overrides new file mode 100755 index 00000000000..61616ab93f1 --- /dev/null +++ b/linux-image-4.15.0-2-armmp-lpae-dbg.lintian-overrides @@ -0,0 +1,15 @@ +#!/usr/bin/dh-exec + +# Kernel dbg packages contain a full image with debug data +linux-image-4.15.0-2-armmp-lpae-dbg: dbg-package-missing-depends + +# glibc doesn't seem to check for a PT_GNU_STACK section in vDSOs, so +# it's OK that they don't have it +[arm64 armhf] linux-image-4.15.0-2-armmp-lpae-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-armmp-lpae/vdso/vdso.so +[amd64 i386 ppc64el s390x] linux-image-4.15.0-2-armmp-lpae-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-armmp-lpae/vdso/vdso32.so +[amd64 ppc64el s390x] linux-image-4.15.0-2-armmp-lpae-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-armmp-lpae/vdso/vdso64.so +[amd64] linux-image-4.15.0-2-armmp-lpae-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-armmp-lpae/vdso/vdsox32.so + +# It is intended that 64-bit kernels provide vDSOs for 32-bit executables +[amd64 ppc64el s390x] linux-image-4.15.0-2-armmp-lpae-dbg: binary-from-other-architecture usr/lib/debug/lib/modules/4.15.0-2-armmp-lpae/vdso/vdso32.so +[amd64] linux-image-4.15.0-2-armmp-lpae-dbg: binary-from-other-architecture usr/lib/debug/lib/modules/4.15.0-2-armmp-lpae/vdso/vdsox32.so diff --git a/linux-image-4.15.0-2-armmp-lpae.postinst b/linux-image-4.15.0-2-armmp-lpae.postinst new file mode 100644 index 00000000000..94822b2c69b --- /dev/null +++ b/linux-image-4.15.0-2-armmp-lpae.postinst @@ -0,0 +1,25 @@ +#!/bin/sh -e + +version=4.15.0-2-armmp-lpae +image_path=/boot/vmlinuz-$version + +if [ "$1" != configure ]; then + exit 0 +fi + +depmod $version + +if [ -f /lib/modules/$version/.fresh-install ]; then + change=install +else + change=upgrade +fi +linux-update-symlinks $change $version $image_path +rm -f /lib/modules/$version/.fresh-install + +if [ -d /etc/kernel/postinst.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/postinst.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-armmp-lpae.postrm b/linux-image-4.15.0-2-armmp-lpae.postrm new file mode 100644 index 00000000000..7d4c36d388b --- /dev/null +++ b/linux-image-4.15.0-2-armmp-lpae.postrm @@ -0,0 +1,31 @@ +#!/bin/sh -e + +version=4.15.0-2-armmp-lpae +image_path=/boot/vmlinuz-$version + +rm -f /lib/modules/$version/.fresh-install + +if [ "$1" != upgrade ] && command -v linux-update-symlinks >/dev/null; then + linux-update-symlinks remove $version $image_path +fi + +if [ -d /etc/kernel/postrm.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/postrm.d +fi + +if [ "$1" = purge ]; then + for extra_file in modules.dep modules.isapnpmap modules.pcimap \ + modules.usbmap modules.parportmap \ + modules.generic_string modules.ieee1394map \ + modules.ieee1394map modules.pnpbiosmap \ + modules.alias modules.ccwmap modules.inputmap \ + modules.symbols modules.ofmap \ + modules.seriomap modules.\*.bin \ + modules.softdep modules.devname; do + eval rm -f /lib/modules/$version/$extra_file + done + rmdir /lib/modules/$version || true +fi + +exit 0 diff --git a/linux-image-4.15.0-2-armmp-lpae.preinst b/linux-image-4.15.0-2-armmp-lpae.preinst new file mode 100644 index 00000000000..733fedf7aa9 --- /dev/null +++ b/linux-image-4.15.0-2-armmp-lpae.preinst @@ -0,0 +1,21 @@ +#!/bin/sh -e + +version=4.15.0-2-armmp-lpae +image_path=/boot/vmlinuz-$version + +if [ "$1" = abort-upgrade ]; then + exit 0 +fi + +if [ "$1" = install ]; then + # Create a flag file for postinst + mkdir -p /lib/modules/$version + touch /lib/modules/$version/.fresh-install +fi + +if [ -d /etc/kernel/preinst.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/preinst.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-armmp-lpae.prerm b/linux-image-4.15.0-2-armmp-lpae.prerm new file mode 100644 index 00000000000..07554dac7ba --- /dev/null +++ b/linux-image-4.15.0-2-armmp-lpae.prerm @@ -0,0 +1,17 @@ +#!/bin/sh -e + +version=4.15.0-2-armmp-lpae +image_path=/boot/vmlinuz-$version + +if [ "$1" != remove ]; then + exit 0 +fi + +linux-check-removal $version + +if [ -d /etc/kernel/prerm.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/prerm.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-armmp.postinst b/linux-image-4.15.0-2-armmp.postinst new file mode 100644 index 00000000000..d628a45fd4c --- /dev/null +++ b/linux-image-4.15.0-2-armmp.postinst @@ -0,0 +1,25 @@ +#!/bin/sh -e + +version=4.15.0-2-armmp +image_path=/boot/vmlinuz-$version + +if [ "$1" != configure ]; then + exit 0 +fi + +depmod $version + +if [ -f /lib/modules/$version/.fresh-install ]; then + change=install +else + change=upgrade +fi +linux-update-symlinks $change $version $image_path +rm -f /lib/modules/$version/.fresh-install + +if [ -d /etc/kernel/postinst.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/postinst.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-armmp.postrm b/linux-image-4.15.0-2-armmp.postrm new file mode 100644 index 00000000000..83f022e04f8 --- /dev/null +++ b/linux-image-4.15.0-2-armmp.postrm @@ -0,0 +1,31 @@ +#!/bin/sh -e + +version=4.15.0-2-armmp +image_path=/boot/vmlinuz-$version + +rm -f /lib/modules/$version/.fresh-install + +if [ "$1" != upgrade ] && command -v linux-update-symlinks >/dev/null; then + linux-update-symlinks remove $version $image_path +fi + +if [ -d /etc/kernel/postrm.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/postrm.d +fi + +if [ "$1" = purge ]; then + for extra_file in modules.dep modules.isapnpmap modules.pcimap \ + modules.usbmap modules.parportmap \ + modules.generic_string modules.ieee1394map \ + modules.ieee1394map modules.pnpbiosmap \ + modules.alias modules.ccwmap modules.inputmap \ + modules.symbols modules.ofmap \ + modules.seriomap modules.\*.bin \ + modules.softdep modules.devname; do + eval rm -f /lib/modules/$version/$extra_file + done + rmdir /lib/modules/$version || true +fi + +exit 0 diff --git a/linux-image-4.15.0-2-armmp.preinst b/linux-image-4.15.0-2-armmp.preinst new file mode 100644 index 00000000000..8180a5ce334 --- /dev/null +++ b/linux-image-4.15.0-2-armmp.preinst @@ -0,0 +1,21 @@ +#!/bin/sh -e + +version=4.15.0-2-armmp +image_path=/boot/vmlinuz-$version + +if [ "$1" = abort-upgrade ]; then + exit 0 +fi + +if [ "$1" = install ]; then + # Create a flag file for postinst + mkdir -p /lib/modules/$version + touch /lib/modules/$version/.fresh-install +fi + +if [ -d /etc/kernel/preinst.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/preinst.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-armmp.prerm b/linux-image-4.15.0-2-armmp.prerm new file mode 100644 index 00000000000..42eb865f2a0 --- /dev/null +++ b/linux-image-4.15.0-2-armmp.prerm @@ -0,0 +1,17 @@ +#!/bin/sh -e + +version=4.15.0-2-armmp +image_path=/boot/vmlinuz-$version + +if [ "$1" != remove ]; then + exit 0 +fi + +linux-check-removal $version + +if [ -d /etc/kernel/prerm.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/prerm.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-cloud-amd64-dbg.lintian-overrides b/linux-image-4.15.0-2-cloud-amd64-dbg.lintian-overrides new file mode 100755 index 00000000000..1f19f38c9eb --- /dev/null +++ b/linux-image-4.15.0-2-cloud-amd64-dbg.lintian-overrides @@ -0,0 +1,15 @@ +#!/usr/bin/dh-exec + +# Kernel dbg packages contain a full image with debug data +linux-image-4.15.0-2-cloud-amd64-dbg: dbg-package-missing-depends + +# glibc doesn't seem to check for a PT_GNU_STACK section in vDSOs, so +# it's OK that they don't have it +[arm64 armhf] linux-image-4.15.0-2-cloud-amd64-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-cloud-amd64/vdso/vdso.so +[amd64 i386 ppc64el s390x] linux-image-4.15.0-2-cloud-amd64-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-cloud-amd64/vdso/vdso32.so +[amd64 ppc64el s390x] linux-image-4.15.0-2-cloud-amd64-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-cloud-amd64/vdso/vdso64.so +[amd64] linux-image-4.15.0-2-cloud-amd64-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-cloud-amd64/vdso/vdsox32.so + +# It is intended that 64-bit kernels provide vDSOs for 32-bit executables +[amd64 ppc64el s390x] linux-image-4.15.0-2-cloud-amd64-dbg: binary-from-other-architecture usr/lib/debug/lib/modules/4.15.0-2-cloud-amd64/vdso/vdso32.so +[amd64] linux-image-4.15.0-2-cloud-amd64-dbg: binary-from-other-architecture usr/lib/debug/lib/modules/4.15.0-2-cloud-amd64/vdso/vdsox32.so diff --git a/linux-image-4.15.0-2-cloud-amd64.postinst b/linux-image-4.15.0-2-cloud-amd64.postinst new file mode 100644 index 00000000000..060680ff8de --- /dev/null +++ b/linux-image-4.15.0-2-cloud-amd64.postinst @@ -0,0 +1,25 @@ +#!/bin/sh -e + +version=4.15.0-2-cloud-amd64 +image_path=/boot/vmlinuz-$version + +if [ "$1" != configure ]; then + exit 0 +fi + +depmod $version + +if [ -f /lib/modules/$version/.fresh-install ]; then + change=install +else + change=upgrade +fi +linux-update-symlinks $change $version $image_path +rm -f /lib/modules/$version/.fresh-install + +if [ -d /etc/kernel/postinst.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/postinst.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-cloud-amd64.postrm b/linux-image-4.15.0-2-cloud-amd64.postrm new file mode 100644 index 00000000000..899818b9c95 --- /dev/null +++ b/linux-image-4.15.0-2-cloud-amd64.postrm @@ -0,0 +1,31 @@ +#!/bin/sh -e + +version=4.15.0-2-cloud-amd64 +image_path=/boot/vmlinuz-$version + +rm -f /lib/modules/$version/.fresh-install + +if [ "$1" != upgrade ] && command -v linux-update-symlinks >/dev/null; then + linux-update-symlinks remove $version $image_path +fi + +if [ -d /etc/kernel/postrm.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/postrm.d +fi + +if [ "$1" = purge ]; then + for extra_file in modules.dep modules.isapnpmap modules.pcimap \ + modules.usbmap modules.parportmap \ + modules.generic_string modules.ieee1394map \ + modules.ieee1394map modules.pnpbiosmap \ + modules.alias modules.ccwmap modules.inputmap \ + modules.symbols modules.ofmap \ + modules.seriomap modules.\*.bin \ + modules.softdep modules.devname; do + eval rm -f /lib/modules/$version/$extra_file + done + rmdir /lib/modules/$version || true +fi + +exit 0 diff --git a/linux-image-4.15.0-2-cloud-amd64.preinst b/linux-image-4.15.0-2-cloud-amd64.preinst new file mode 100644 index 00000000000..a3a726fdd05 --- /dev/null +++ b/linux-image-4.15.0-2-cloud-amd64.preinst @@ -0,0 +1,21 @@ +#!/bin/sh -e + +version=4.15.0-2-cloud-amd64 +image_path=/boot/vmlinuz-$version + +if [ "$1" = abort-upgrade ]; then + exit 0 +fi + +if [ "$1" = install ]; then + # Create a flag file for postinst + mkdir -p /lib/modules/$version + touch /lib/modules/$version/.fresh-install +fi + +if [ -d /etc/kernel/preinst.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/preinst.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-cloud-amd64.prerm b/linux-image-4.15.0-2-cloud-amd64.prerm new file mode 100644 index 00000000000..a1ef7c72ff8 --- /dev/null +++ b/linux-image-4.15.0-2-cloud-amd64.prerm @@ -0,0 +1,17 @@ +#!/bin/sh -e + +version=4.15.0-2-cloud-amd64 +image_path=/boot/vmlinuz-$version + +if [ "$1" != remove ]; then + exit 0 +fi + +linux-check-removal $version + +if [ -d /etc/kernel/prerm.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/prerm.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-loongson-3-dbg.lintian-overrides b/linux-image-4.15.0-2-loongson-3-dbg.lintian-overrides new file mode 100755 index 00000000000..101702669f1 --- /dev/null +++ b/linux-image-4.15.0-2-loongson-3-dbg.lintian-overrides @@ -0,0 +1,15 @@ +#!/usr/bin/dh-exec + +# Kernel dbg packages contain a full image with debug data +linux-image-4.15.0-2-loongson-3-dbg: dbg-package-missing-depends + +# glibc doesn't seem to check for a PT_GNU_STACK section in vDSOs, so +# it's OK that they don't have it +[arm64 armhf] linux-image-4.15.0-2-loongson-3-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-loongson-3/vdso/vdso.so +[amd64 i386 ppc64el s390x] linux-image-4.15.0-2-loongson-3-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-loongson-3/vdso/vdso32.so +[amd64 ppc64el s390x] linux-image-4.15.0-2-loongson-3-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-loongson-3/vdso/vdso64.so +[amd64] linux-image-4.15.0-2-loongson-3-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-loongson-3/vdso/vdsox32.so + +# It is intended that 64-bit kernels provide vDSOs for 32-bit executables +[amd64 ppc64el s390x] linux-image-4.15.0-2-loongson-3-dbg: binary-from-other-architecture usr/lib/debug/lib/modules/4.15.0-2-loongson-3/vdso/vdso32.so +[amd64] linux-image-4.15.0-2-loongson-3-dbg: binary-from-other-architecture usr/lib/debug/lib/modules/4.15.0-2-loongson-3/vdso/vdsox32.so diff --git a/linux-image-4.15.0-2-loongson-3.postinst b/linux-image-4.15.0-2-loongson-3.postinst new file mode 100644 index 00000000000..40857b0f7ab --- /dev/null +++ b/linux-image-4.15.0-2-loongson-3.postinst @@ -0,0 +1,25 @@ +#!/bin/sh -e + +version=4.15.0-2-loongson-3 +image_path=/boot/vmlinux-$version + +if [ "$1" != configure ]; then + exit 0 +fi + +depmod $version + +if [ -f /lib/modules/$version/.fresh-install ]; then + change=install +else + change=upgrade +fi +linux-update-symlinks $change $version $image_path +rm -f /lib/modules/$version/.fresh-install + +if [ -d /etc/kernel/postinst.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/postinst.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-loongson-3.postrm b/linux-image-4.15.0-2-loongson-3.postrm new file mode 100644 index 00000000000..e90ee4964ec --- /dev/null +++ b/linux-image-4.15.0-2-loongson-3.postrm @@ -0,0 +1,31 @@ +#!/bin/sh -e + +version=4.15.0-2-loongson-3 +image_path=/boot/vmlinux-$version + +rm -f /lib/modules/$version/.fresh-install + +if [ "$1" != upgrade ] && command -v linux-update-symlinks >/dev/null; then + linux-update-symlinks remove $version $image_path +fi + +if [ -d /etc/kernel/postrm.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/postrm.d +fi + +if [ "$1" = purge ]; then + for extra_file in modules.dep modules.isapnpmap modules.pcimap \ + modules.usbmap modules.parportmap \ + modules.generic_string modules.ieee1394map \ + modules.ieee1394map modules.pnpbiosmap \ + modules.alias modules.ccwmap modules.inputmap \ + modules.symbols modules.ofmap \ + modules.seriomap modules.\*.bin \ + modules.softdep modules.devname; do + eval rm -f /lib/modules/$version/$extra_file + done + rmdir /lib/modules/$version || true +fi + +exit 0 diff --git a/linux-image-4.15.0-2-loongson-3.preinst b/linux-image-4.15.0-2-loongson-3.preinst new file mode 100644 index 00000000000..f95c49f9059 --- /dev/null +++ b/linux-image-4.15.0-2-loongson-3.preinst @@ -0,0 +1,21 @@ +#!/bin/sh -e + +version=4.15.0-2-loongson-3 +image_path=/boot/vmlinux-$version + +if [ "$1" = abort-upgrade ]; then + exit 0 +fi + +if [ "$1" = install ]; then + # Create a flag file for postinst + mkdir -p /lib/modules/$version + touch /lib/modules/$version/.fresh-install +fi + +if [ -d /etc/kernel/preinst.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/preinst.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-loongson-3.prerm b/linux-image-4.15.0-2-loongson-3.prerm new file mode 100644 index 00000000000..461d816e65f --- /dev/null +++ b/linux-image-4.15.0-2-loongson-3.prerm @@ -0,0 +1,17 @@ +#!/bin/sh -e + +version=4.15.0-2-loongson-3 +image_path=/boot/vmlinux-$version + +if [ "$1" != remove ]; then + exit 0 +fi + +linux-check-removal $version + +if [ -d /etc/kernel/prerm.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/prerm.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-m68k-dbg.lintian-overrides b/linux-image-4.15.0-2-m68k-dbg.lintian-overrides new file mode 100755 index 00000000000..ff1d1706d0a --- /dev/null +++ b/linux-image-4.15.0-2-m68k-dbg.lintian-overrides @@ -0,0 +1,15 @@ +#!/usr/bin/dh-exec + +# Kernel dbg packages contain a full image with debug data +linux-image-4.15.0-2-m68k-dbg: dbg-package-missing-depends + +# glibc doesn't seem to check for a PT_GNU_STACK section in vDSOs, so +# it's OK that they don't have it +[arm64 armhf] linux-image-4.15.0-2-m68k-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-m68k/vdso/vdso.so +[amd64 i386 ppc64el s390x] linux-image-4.15.0-2-m68k-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-m68k/vdso/vdso32.so +[amd64 ppc64el s390x] linux-image-4.15.0-2-m68k-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-m68k/vdso/vdso64.so +[amd64] linux-image-4.15.0-2-m68k-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-m68k/vdso/vdsox32.so + +# It is intended that 64-bit kernels provide vDSOs for 32-bit executables +[amd64 ppc64el s390x] linux-image-4.15.0-2-m68k-dbg: binary-from-other-architecture usr/lib/debug/lib/modules/4.15.0-2-m68k/vdso/vdso32.so +[amd64] linux-image-4.15.0-2-m68k-dbg: binary-from-other-architecture usr/lib/debug/lib/modules/4.15.0-2-m68k/vdso/vdsox32.so diff --git a/linux-image-4.15.0-2-m68k.postinst b/linux-image-4.15.0-2-m68k.postinst new file mode 100644 index 00000000000..4d6b770b96f --- /dev/null +++ b/linux-image-4.15.0-2-m68k.postinst @@ -0,0 +1,25 @@ +#!/bin/sh -e + +version=4.15.0-2-m68k +image_path=/boot/vmlinux-$version + +if [ "$1" != configure ]; then + exit 0 +fi + +depmod $version + +if [ -f /lib/modules/$version/.fresh-install ]; then + change=install +else + change=upgrade +fi +linux-update-symlinks $change $version $image_path +rm -f /lib/modules/$version/.fresh-install + +if [ -d /etc/kernel/postinst.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/postinst.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-m68k.postrm b/linux-image-4.15.0-2-m68k.postrm new file mode 100644 index 00000000000..430a8d2dd1a --- /dev/null +++ b/linux-image-4.15.0-2-m68k.postrm @@ -0,0 +1,31 @@ +#!/bin/sh -e + +version=4.15.0-2-m68k +image_path=/boot/vmlinux-$version + +rm -f /lib/modules/$version/.fresh-install + +if [ "$1" != upgrade ] && command -v linux-update-symlinks >/dev/null; then + linux-update-symlinks remove $version $image_path +fi + +if [ -d /etc/kernel/postrm.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/postrm.d +fi + +if [ "$1" = purge ]; then + for extra_file in modules.dep modules.isapnpmap modules.pcimap \ + modules.usbmap modules.parportmap \ + modules.generic_string modules.ieee1394map \ + modules.ieee1394map modules.pnpbiosmap \ + modules.alias modules.ccwmap modules.inputmap \ + modules.symbols modules.ofmap \ + modules.seriomap modules.\*.bin \ + modules.softdep modules.devname; do + eval rm -f /lib/modules/$version/$extra_file + done + rmdir /lib/modules/$version || true +fi + +exit 0 diff --git a/linux-image-4.15.0-2-m68k.preinst b/linux-image-4.15.0-2-m68k.preinst new file mode 100644 index 00000000000..0fdc98def45 --- /dev/null +++ b/linux-image-4.15.0-2-m68k.preinst @@ -0,0 +1,21 @@ +#!/bin/sh -e + +version=4.15.0-2-m68k +image_path=/boot/vmlinux-$version + +if [ "$1" = abort-upgrade ]; then + exit 0 +fi + +if [ "$1" = install ]; then + # Create a flag file for postinst + mkdir -p /lib/modules/$version + touch /lib/modules/$version/.fresh-install +fi + +if [ -d /etc/kernel/preinst.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/preinst.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-m68k.prerm b/linux-image-4.15.0-2-m68k.prerm new file mode 100644 index 00000000000..100eb2f652c --- /dev/null +++ b/linux-image-4.15.0-2-m68k.prerm @@ -0,0 +1,17 @@ +#!/bin/sh -e + +version=4.15.0-2-m68k +image_path=/boot/vmlinux-$version + +if [ "$1" != remove ]; then + exit 0 +fi + +linux-check-removal $version + +if [ -d /etc/kernel/prerm.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/prerm.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-mips32r6-dbg.lintian-overrides b/linux-image-4.15.0-2-mips32r6-dbg.lintian-overrides new file mode 100755 index 00000000000..737f57992e6 --- /dev/null +++ b/linux-image-4.15.0-2-mips32r6-dbg.lintian-overrides @@ -0,0 +1,15 @@ +#!/usr/bin/dh-exec + +# Kernel dbg packages contain a full image with debug data +linux-image-4.15.0-2-mips32r6-dbg: dbg-package-missing-depends + +# glibc doesn't seem to check for a PT_GNU_STACK section in vDSOs, so +# it's OK that they don't have it +[arm64 armhf] linux-image-4.15.0-2-mips32r6-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-mips32r6/vdso/vdso.so +[amd64 i386 ppc64el s390x] linux-image-4.15.0-2-mips32r6-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-mips32r6/vdso/vdso32.so +[amd64 ppc64el s390x] linux-image-4.15.0-2-mips32r6-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-mips32r6/vdso/vdso64.so +[amd64] linux-image-4.15.0-2-mips32r6-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-mips32r6/vdso/vdsox32.so + +# It is intended that 64-bit kernels provide vDSOs for 32-bit executables +[amd64 ppc64el s390x] linux-image-4.15.0-2-mips32r6-dbg: binary-from-other-architecture usr/lib/debug/lib/modules/4.15.0-2-mips32r6/vdso/vdso32.so +[amd64] linux-image-4.15.0-2-mips32r6-dbg: binary-from-other-architecture usr/lib/debug/lib/modules/4.15.0-2-mips32r6/vdso/vdsox32.so diff --git a/linux-image-4.15.0-2-mips32r6.postinst b/linux-image-4.15.0-2-mips32r6.postinst new file mode 100644 index 00000000000..7297960d1d3 --- /dev/null +++ b/linux-image-4.15.0-2-mips32r6.postinst @@ -0,0 +1,25 @@ +#!/bin/sh -e + +version=4.15.0-2-mips32r6 +image_path=/boot/vmlinux-$version + +if [ "$1" != configure ]; then + exit 0 +fi + +depmod $version + +if [ -f /lib/modules/$version/.fresh-install ]; then + change=install +else + change=upgrade +fi +linux-update-symlinks $change $version $image_path +rm -f /lib/modules/$version/.fresh-install + +if [ -d /etc/kernel/postinst.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/postinst.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-mips32r6.postrm b/linux-image-4.15.0-2-mips32r6.postrm new file mode 100644 index 00000000000..7e11283a2d3 --- /dev/null +++ b/linux-image-4.15.0-2-mips32r6.postrm @@ -0,0 +1,31 @@ +#!/bin/sh -e + +version=4.15.0-2-mips32r6 +image_path=/boot/vmlinux-$version + +rm -f /lib/modules/$version/.fresh-install + +if [ "$1" != upgrade ] && command -v linux-update-symlinks >/dev/null; then + linux-update-symlinks remove $version $image_path +fi + +if [ -d /etc/kernel/postrm.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/postrm.d +fi + +if [ "$1" = purge ]; then + for extra_file in modules.dep modules.isapnpmap modules.pcimap \ + modules.usbmap modules.parportmap \ + modules.generic_string modules.ieee1394map \ + modules.ieee1394map modules.pnpbiosmap \ + modules.alias modules.ccwmap modules.inputmap \ + modules.symbols modules.ofmap \ + modules.seriomap modules.\*.bin \ + modules.softdep modules.devname; do + eval rm -f /lib/modules/$version/$extra_file + done + rmdir /lib/modules/$version || true +fi + +exit 0 diff --git a/linux-image-4.15.0-2-mips32r6.preinst b/linux-image-4.15.0-2-mips32r6.preinst new file mode 100644 index 00000000000..fdaf7f6839d --- /dev/null +++ b/linux-image-4.15.0-2-mips32r6.preinst @@ -0,0 +1,21 @@ +#!/bin/sh -e + +version=4.15.0-2-mips32r6 +image_path=/boot/vmlinux-$version + +if [ "$1" = abort-upgrade ]; then + exit 0 +fi + +if [ "$1" = install ]; then + # Create a flag file for postinst + mkdir -p /lib/modules/$version + touch /lib/modules/$version/.fresh-install +fi + +if [ -d /etc/kernel/preinst.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/preinst.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-mips32r6.prerm b/linux-image-4.15.0-2-mips32r6.prerm new file mode 100644 index 00000000000..ccc5e4e66ac --- /dev/null +++ b/linux-image-4.15.0-2-mips32r6.prerm @@ -0,0 +1,17 @@ +#!/bin/sh -e + +version=4.15.0-2-mips32r6 +image_path=/boot/vmlinux-$version + +if [ "$1" != remove ]; then + exit 0 +fi + +linux-check-removal $version + +if [ -d /etc/kernel/prerm.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/prerm.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-mips32r6el-dbg.lintian-overrides b/linux-image-4.15.0-2-mips32r6el-dbg.lintian-overrides new file mode 100755 index 00000000000..3a114cc573c --- /dev/null +++ b/linux-image-4.15.0-2-mips32r6el-dbg.lintian-overrides @@ -0,0 +1,15 @@ +#!/usr/bin/dh-exec + +# Kernel dbg packages contain a full image with debug data +linux-image-4.15.0-2-mips32r6el-dbg: dbg-package-missing-depends + +# glibc doesn't seem to check for a PT_GNU_STACK section in vDSOs, so +# it's OK that they don't have it +[arm64 armhf] linux-image-4.15.0-2-mips32r6el-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-mips32r6el/vdso/vdso.so +[amd64 i386 ppc64el s390x] linux-image-4.15.0-2-mips32r6el-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-mips32r6el/vdso/vdso32.so +[amd64 ppc64el s390x] linux-image-4.15.0-2-mips32r6el-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-mips32r6el/vdso/vdso64.so +[amd64] linux-image-4.15.0-2-mips32r6el-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-mips32r6el/vdso/vdsox32.so + +# It is intended that 64-bit kernels provide vDSOs for 32-bit executables +[amd64 ppc64el s390x] linux-image-4.15.0-2-mips32r6el-dbg: binary-from-other-architecture usr/lib/debug/lib/modules/4.15.0-2-mips32r6el/vdso/vdso32.so +[amd64] linux-image-4.15.0-2-mips32r6el-dbg: binary-from-other-architecture usr/lib/debug/lib/modules/4.15.0-2-mips32r6el/vdso/vdsox32.so diff --git a/linux-image-4.15.0-2-mips32r6el.postinst b/linux-image-4.15.0-2-mips32r6el.postinst new file mode 100644 index 00000000000..43cf9bde13a --- /dev/null +++ b/linux-image-4.15.0-2-mips32r6el.postinst @@ -0,0 +1,25 @@ +#!/bin/sh -e + +version=4.15.0-2-mips32r6el +image_path=/boot/vmlinux-$version + +if [ "$1" != configure ]; then + exit 0 +fi + +depmod $version + +if [ -f /lib/modules/$version/.fresh-install ]; then + change=install +else + change=upgrade +fi +linux-update-symlinks $change $version $image_path +rm -f /lib/modules/$version/.fresh-install + +if [ -d /etc/kernel/postinst.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/postinst.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-mips32r6el.postrm b/linux-image-4.15.0-2-mips32r6el.postrm new file mode 100644 index 00000000000..681e8fdac13 --- /dev/null +++ b/linux-image-4.15.0-2-mips32r6el.postrm @@ -0,0 +1,31 @@ +#!/bin/sh -e + +version=4.15.0-2-mips32r6el +image_path=/boot/vmlinux-$version + +rm -f /lib/modules/$version/.fresh-install + +if [ "$1" != upgrade ] && command -v linux-update-symlinks >/dev/null; then + linux-update-symlinks remove $version $image_path +fi + +if [ -d /etc/kernel/postrm.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/postrm.d +fi + +if [ "$1" = purge ]; then + for extra_file in modules.dep modules.isapnpmap modules.pcimap \ + modules.usbmap modules.parportmap \ + modules.generic_string modules.ieee1394map \ + modules.ieee1394map modules.pnpbiosmap \ + modules.alias modules.ccwmap modules.inputmap \ + modules.symbols modules.ofmap \ + modules.seriomap modules.\*.bin \ + modules.softdep modules.devname; do + eval rm -f /lib/modules/$version/$extra_file + done + rmdir /lib/modules/$version || true +fi + +exit 0 diff --git a/linux-image-4.15.0-2-mips32r6el.preinst b/linux-image-4.15.0-2-mips32r6el.preinst new file mode 100644 index 00000000000..38b258b2cdf --- /dev/null +++ b/linux-image-4.15.0-2-mips32r6el.preinst @@ -0,0 +1,21 @@ +#!/bin/sh -e + +version=4.15.0-2-mips32r6el +image_path=/boot/vmlinux-$version + +if [ "$1" = abort-upgrade ]; then + exit 0 +fi + +if [ "$1" = install ]; then + # Create a flag file for postinst + mkdir -p /lib/modules/$version + touch /lib/modules/$version/.fresh-install +fi + +if [ -d /etc/kernel/preinst.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/preinst.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-mips32r6el.prerm b/linux-image-4.15.0-2-mips32r6el.prerm new file mode 100644 index 00000000000..f1159a39363 --- /dev/null +++ b/linux-image-4.15.0-2-mips32r6el.prerm @@ -0,0 +1,17 @@ +#!/bin/sh -e + +version=4.15.0-2-mips32r6el +image_path=/boot/vmlinux-$version + +if [ "$1" != remove ]; then + exit 0 +fi + +linux-check-removal $version + +if [ -d /etc/kernel/prerm.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/prerm.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-mips64r6-dbg.lintian-overrides b/linux-image-4.15.0-2-mips64r6-dbg.lintian-overrides new file mode 100755 index 00000000000..5f686dc8c5a --- /dev/null +++ b/linux-image-4.15.0-2-mips64r6-dbg.lintian-overrides @@ -0,0 +1,15 @@ +#!/usr/bin/dh-exec + +# Kernel dbg packages contain a full image with debug data +linux-image-4.15.0-2-mips64r6-dbg: dbg-package-missing-depends + +# glibc doesn't seem to check for a PT_GNU_STACK section in vDSOs, so +# it's OK that they don't have it +[arm64 armhf] linux-image-4.15.0-2-mips64r6-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-mips64r6/vdso/vdso.so +[amd64 i386 ppc64el s390x] linux-image-4.15.0-2-mips64r6-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-mips64r6/vdso/vdso32.so +[amd64 ppc64el s390x] linux-image-4.15.0-2-mips64r6-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-mips64r6/vdso/vdso64.so +[amd64] linux-image-4.15.0-2-mips64r6-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-mips64r6/vdso/vdsox32.so + +# It is intended that 64-bit kernels provide vDSOs for 32-bit executables +[amd64 ppc64el s390x] linux-image-4.15.0-2-mips64r6-dbg: binary-from-other-architecture usr/lib/debug/lib/modules/4.15.0-2-mips64r6/vdso/vdso32.so +[amd64] linux-image-4.15.0-2-mips64r6-dbg: binary-from-other-architecture usr/lib/debug/lib/modules/4.15.0-2-mips64r6/vdso/vdsox32.so diff --git a/linux-image-4.15.0-2-mips64r6.postinst b/linux-image-4.15.0-2-mips64r6.postinst new file mode 100644 index 00000000000..4f64369f5bb --- /dev/null +++ b/linux-image-4.15.0-2-mips64r6.postinst @@ -0,0 +1,25 @@ +#!/bin/sh -e + +version=4.15.0-2-mips64r6 +image_path=/boot/vmlinux-$version + +if [ "$1" != configure ]; then + exit 0 +fi + +depmod $version + +if [ -f /lib/modules/$version/.fresh-install ]; then + change=install +else + change=upgrade +fi +linux-update-symlinks $change $version $image_path +rm -f /lib/modules/$version/.fresh-install + +if [ -d /etc/kernel/postinst.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/postinst.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-mips64r6.postrm b/linux-image-4.15.0-2-mips64r6.postrm new file mode 100644 index 00000000000..e8e4dbdcfc2 --- /dev/null +++ b/linux-image-4.15.0-2-mips64r6.postrm @@ -0,0 +1,31 @@ +#!/bin/sh -e + +version=4.15.0-2-mips64r6 +image_path=/boot/vmlinux-$version + +rm -f /lib/modules/$version/.fresh-install + +if [ "$1" != upgrade ] && command -v linux-update-symlinks >/dev/null; then + linux-update-symlinks remove $version $image_path +fi + +if [ -d /etc/kernel/postrm.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/postrm.d +fi + +if [ "$1" = purge ]; then + for extra_file in modules.dep modules.isapnpmap modules.pcimap \ + modules.usbmap modules.parportmap \ + modules.generic_string modules.ieee1394map \ + modules.ieee1394map modules.pnpbiosmap \ + modules.alias modules.ccwmap modules.inputmap \ + modules.symbols modules.ofmap \ + modules.seriomap modules.\*.bin \ + modules.softdep modules.devname; do + eval rm -f /lib/modules/$version/$extra_file + done + rmdir /lib/modules/$version || true +fi + +exit 0 diff --git a/linux-image-4.15.0-2-mips64r6.preinst b/linux-image-4.15.0-2-mips64r6.preinst new file mode 100644 index 00000000000..a1e021e6e35 --- /dev/null +++ b/linux-image-4.15.0-2-mips64r6.preinst @@ -0,0 +1,21 @@ +#!/bin/sh -e + +version=4.15.0-2-mips64r6 +image_path=/boot/vmlinux-$version + +if [ "$1" = abort-upgrade ]; then + exit 0 +fi + +if [ "$1" = install ]; then + # Create a flag file for postinst + mkdir -p /lib/modules/$version + touch /lib/modules/$version/.fresh-install +fi + +if [ -d /etc/kernel/preinst.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/preinst.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-mips64r6.prerm b/linux-image-4.15.0-2-mips64r6.prerm new file mode 100644 index 00000000000..04b50a33117 --- /dev/null +++ b/linux-image-4.15.0-2-mips64r6.prerm @@ -0,0 +1,17 @@ +#!/bin/sh -e + +version=4.15.0-2-mips64r6 +image_path=/boot/vmlinux-$version + +if [ "$1" != remove ]; then + exit 0 +fi + +linux-check-removal $version + +if [ -d /etc/kernel/prerm.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/prerm.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-mips64r6el-dbg.lintian-overrides b/linux-image-4.15.0-2-mips64r6el-dbg.lintian-overrides new file mode 100755 index 00000000000..d2d3bb58012 --- /dev/null +++ b/linux-image-4.15.0-2-mips64r6el-dbg.lintian-overrides @@ -0,0 +1,15 @@ +#!/usr/bin/dh-exec + +# Kernel dbg packages contain a full image with debug data +linux-image-4.15.0-2-mips64r6el-dbg: dbg-package-missing-depends + +# glibc doesn't seem to check for a PT_GNU_STACK section in vDSOs, so +# it's OK that they don't have it +[arm64 armhf] linux-image-4.15.0-2-mips64r6el-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-mips64r6el/vdso/vdso.so +[amd64 i386 ppc64el s390x] linux-image-4.15.0-2-mips64r6el-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-mips64r6el/vdso/vdso32.so +[amd64 ppc64el s390x] linux-image-4.15.0-2-mips64r6el-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-mips64r6el/vdso/vdso64.so +[amd64] linux-image-4.15.0-2-mips64r6el-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-mips64r6el/vdso/vdsox32.so + +# It is intended that 64-bit kernels provide vDSOs for 32-bit executables +[amd64 ppc64el s390x] linux-image-4.15.0-2-mips64r6el-dbg: binary-from-other-architecture usr/lib/debug/lib/modules/4.15.0-2-mips64r6el/vdso/vdso32.so +[amd64] linux-image-4.15.0-2-mips64r6el-dbg: binary-from-other-architecture usr/lib/debug/lib/modules/4.15.0-2-mips64r6el/vdso/vdsox32.so diff --git a/linux-image-4.15.0-2-mips64r6el.postinst b/linux-image-4.15.0-2-mips64r6el.postinst new file mode 100644 index 00000000000..2138b43ce79 --- /dev/null +++ b/linux-image-4.15.0-2-mips64r6el.postinst @@ -0,0 +1,25 @@ +#!/bin/sh -e + +version=4.15.0-2-mips64r6el +image_path=/boot/vmlinux-$version + +if [ "$1" != configure ]; then + exit 0 +fi + +depmod $version + +if [ -f /lib/modules/$version/.fresh-install ]; then + change=install +else + change=upgrade +fi +linux-update-symlinks $change $version $image_path +rm -f /lib/modules/$version/.fresh-install + +if [ -d /etc/kernel/postinst.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/postinst.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-mips64r6el.postrm b/linux-image-4.15.0-2-mips64r6el.postrm new file mode 100644 index 00000000000..5589908e124 --- /dev/null +++ b/linux-image-4.15.0-2-mips64r6el.postrm @@ -0,0 +1,31 @@ +#!/bin/sh -e + +version=4.15.0-2-mips64r6el +image_path=/boot/vmlinux-$version + +rm -f /lib/modules/$version/.fresh-install + +if [ "$1" != upgrade ] && command -v linux-update-symlinks >/dev/null; then + linux-update-symlinks remove $version $image_path +fi + +if [ -d /etc/kernel/postrm.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/postrm.d +fi + +if [ "$1" = purge ]; then + for extra_file in modules.dep modules.isapnpmap modules.pcimap \ + modules.usbmap modules.parportmap \ + modules.generic_string modules.ieee1394map \ + modules.ieee1394map modules.pnpbiosmap \ + modules.alias modules.ccwmap modules.inputmap \ + modules.symbols modules.ofmap \ + modules.seriomap modules.\*.bin \ + modules.softdep modules.devname; do + eval rm -f /lib/modules/$version/$extra_file + done + rmdir /lib/modules/$version || true +fi + +exit 0 diff --git a/linux-image-4.15.0-2-mips64r6el.preinst b/linux-image-4.15.0-2-mips64r6el.preinst new file mode 100644 index 00000000000..0b5f457d6c7 --- /dev/null +++ b/linux-image-4.15.0-2-mips64r6el.preinst @@ -0,0 +1,21 @@ +#!/bin/sh -e + +version=4.15.0-2-mips64r6el +image_path=/boot/vmlinux-$version + +if [ "$1" = abort-upgrade ]; then + exit 0 +fi + +if [ "$1" = install ]; then + # Create a flag file for postinst + mkdir -p /lib/modules/$version + touch /lib/modules/$version/.fresh-install +fi + +if [ -d /etc/kernel/preinst.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/preinst.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-mips64r6el.prerm b/linux-image-4.15.0-2-mips64r6el.prerm new file mode 100644 index 00000000000..b9dc4007ffe --- /dev/null +++ b/linux-image-4.15.0-2-mips64r6el.prerm @@ -0,0 +1,17 @@ +#!/bin/sh -e + +version=4.15.0-2-mips64r6el +image_path=/boot/vmlinux-$version + +if [ "$1" != remove ]; then + exit 0 +fi + +linux-check-removal $version + +if [ -d /etc/kernel/prerm.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/prerm.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-octeon-dbg.lintian-overrides b/linux-image-4.15.0-2-octeon-dbg.lintian-overrides new file mode 100755 index 00000000000..223238cb6c8 --- /dev/null +++ b/linux-image-4.15.0-2-octeon-dbg.lintian-overrides @@ -0,0 +1,15 @@ +#!/usr/bin/dh-exec + +# Kernel dbg packages contain a full image with debug data +linux-image-4.15.0-2-octeon-dbg: dbg-package-missing-depends + +# glibc doesn't seem to check for a PT_GNU_STACK section in vDSOs, so +# it's OK that they don't have it +[arm64 armhf] linux-image-4.15.0-2-octeon-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-octeon/vdso/vdso.so +[amd64 i386 ppc64el s390x] linux-image-4.15.0-2-octeon-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-octeon/vdso/vdso32.so +[amd64 ppc64el s390x] linux-image-4.15.0-2-octeon-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-octeon/vdso/vdso64.so +[amd64] linux-image-4.15.0-2-octeon-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-octeon/vdso/vdsox32.so + +# It is intended that 64-bit kernels provide vDSOs for 32-bit executables +[amd64 ppc64el s390x] linux-image-4.15.0-2-octeon-dbg: binary-from-other-architecture usr/lib/debug/lib/modules/4.15.0-2-octeon/vdso/vdso32.so +[amd64] linux-image-4.15.0-2-octeon-dbg: binary-from-other-architecture usr/lib/debug/lib/modules/4.15.0-2-octeon/vdso/vdsox32.so diff --git a/linux-image-4.15.0-2-octeon.postinst b/linux-image-4.15.0-2-octeon.postinst new file mode 100644 index 00000000000..b7ae823a01c --- /dev/null +++ b/linux-image-4.15.0-2-octeon.postinst @@ -0,0 +1,25 @@ +#!/bin/sh -e + +version=4.15.0-2-octeon +image_path=/boot/vmlinux-$version + +if [ "$1" != configure ]; then + exit 0 +fi + +depmod $version + +if [ -f /lib/modules/$version/.fresh-install ]; then + change=install +else + change=upgrade +fi +linux-update-symlinks $change $version $image_path +rm -f /lib/modules/$version/.fresh-install + +if [ -d /etc/kernel/postinst.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/postinst.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-octeon.postrm b/linux-image-4.15.0-2-octeon.postrm new file mode 100644 index 00000000000..699c4c308a8 --- /dev/null +++ b/linux-image-4.15.0-2-octeon.postrm @@ -0,0 +1,31 @@ +#!/bin/sh -e + +version=4.15.0-2-octeon +image_path=/boot/vmlinux-$version + +rm -f /lib/modules/$version/.fresh-install + +if [ "$1" != upgrade ] && command -v linux-update-symlinks >/dev/null; then + linux-update-symlinks remove $version $image_path +fi + +if [ -d /etc/kernel/postrm.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/postrm.d +fi + +if [ "$1" = purge ]; then + for extra_file in modules.dep modules.isapnpmap modules.pcimap \ + modules.usbmap modules.parportmap \ + modules.generic_string modules.ieee1394map \ + modules.ieee1394map modules.pnpbiosmap \ + modules.alias modules.ccwmap modules.inputmap \ + modules.symbols modules.ofmap \ + modules.seriomap modules.\*.bin \ + modules.softdep modules.devname; do + eval rm -f /lib/modules/$version/$extra_file + done + rmdir /lib/modules/$version || true +fi + +exit 0 diff --git a/linux-image-4.15.0-2-octeon.preinst b/linux-image-4.15.0-2-octeon.preinst new file mode 100644 index 00000000000..07b19dc1abd --- /dev/null +++ b/linux-image-4.15.0-2-octeon.preinst @@ -0,0 +1,21 @@ +#!/bin/sh -e + +version=4.15.0-2-octeon +image_path=/boot/vmlinux-$version + +if [ "$1" = abort-upgrade ]; then + exit 0 +fi + +if [ "$1" = install ]; then + # Create a flag file for postinst + mkdir -p /lib/modules/$version + touch /lib/modules/$version/.fresh-install +fi + +if [ -d /etc/kernel/preinst.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/preinst.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-octeon.prerm b/linux-image-4.15.0-2-octeon.prerm new file mode 100644 index 00000000000..9676ee1fba1 --- /dev/null +++ b/linux-image-4.15.0-2-octeon.prerm @@ -0,0 +1,17 @@ +#!/bin/sh -e + +version=4.15.0-2-octeon +image_path=/boot/vmlinux-$version + +if [ "$1" != remove ]; then + exit 0 +fi + +linux-check-removal $version + +if [ -d /etc/kernel/prerm.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/prerm.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-parisc-dbg.lintian-overrides b/linux-image-4.15.0-2-parisc-dbg.lintian-overrides new file mode 100755 index 00000000000..7221ad7f41b --- /dev/null +++ b/linux-image-4.15.0-2-parisc-dbg.lintian-overrides @@ -0,0 +1,15 @@ +#!/usr/bin/dh-exec + +# Kernel dbg packages contain a full image with debug data +linux-image-4.15.0-2-parisc-dbg: dbg-package-missing-depends + +# glibc doesn't seem to check for a PT_GNU_STACK section in vDSOs, so +# it's OK that they don't have it +[arm64 armhf] linux-image-4.15.0-2-parisc-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-parisc/vdso/vdso.so +[amd64 i386 ppc64el s390x] linux-image-4.15.0-2-parisc-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-parisc/vdso/vdso32.so +[amd64 ppc64el s390x] linux-image-4.15.0-2-parisc-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-parisc/vdso/vdso64.so +[amd64] linux-image-4.15.0-2-parisc-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-parisc/vdso/vdsox32.so + +# It is intended that 64-bit kernels provide vDSOs for 32-bit executables +[amd64 ppc64el s390x] linux-image-4.15.0-2-parisc-dbg: binary-from-other-architecture usr/lib/debug/lib/modules/4.15.0-2-parisc/vdso/vdso32.so +[amd64] linux-image-4.15.0-2-parisc-dbg: binary-from-other-architecture usr/lib/debug/lib/modules/4.15.0-2-parisc/vdso/vdsox32.so diff --git a/linux-image-4.15.0-2-parisc.postinst b/linux-image-4.15.0-2-parisc.postinst new file mode 100644 index 00000000000..3df9ef6e055 --- /dev/null +++ b/linux-image-4.15.0-2-parisc.postinst @@ -0,0 +1,25 @@ +#!/bin/sh -e + +version=4.15.0-2-parisc +image_path=/boot/vmlinux-$version + +if [ "$1" != configure ]; then + exit 0 +fi + +depmod $version + +if [ -f /lib/modules/$version/.fresh-install ]; then + change=install +else + change=upgrade +fi +linux-update-symlinks $change $version $image_path +rm -f /lib/modules/$version/.fresh-install + +if [ -d /etc/kernel/postinst.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/postinst.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-parisc.postrm b/linux-image-4.15.0-2-parisc.postrm new file mode 100644 index 00000000000..004df488958 --- /dev/null +++ b/linux-image-4.15.0-2-parisc.postrm @@ -0,0 +1,31 @@ +#!/bin/sh -e + +version=4.15.0-2-parisc +image_path=/boot/vmlinux-$version + +rm -f /lib/modules/$version/.fresh-install + +if [ "$1" != upgrade ] && command -v linux-update-symlinks >/dev/null; then + linux-update-symlinks remove $version $image_path +fi + +if [ -d /etc/kernel/postrm.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/postrm.d +fi + +if [ "$1" = purge ]; then + for extra_file in modules.dep modules.isapnpmap modules.pcimap \ + modules.usbmap modules.parportmap \ + modules.generic_string modules.ieee1394map \ + modules.ieee1394map modules.pnpbiosmap \ + modules.alias modules.ccwmap modules.inputmap \ + modules.symbols modules.ofmap \ + modules.seriomap modules.\*.bin \ + modules.softdep modules.devname; do + eval rm -f /lib/modules/$version/$extra_file + done + rmdir /lib/modules/$version || true +fi + +exit 0 diff --git a/linux-image-4.15.0-2-parisc.preinst b/linux-image-4.15.0-2-parisc.preinst new file mode 100644 index 00000000000..860503b3635 --- /dev/null +++ b/linux-image-4.15.0-2-parisc.preinst @@ -0,0 +1,21 @@ +#!/bin/sh -e + +version=4.15.0-2-parisc +image_path=/boot/vmlinux-$version + +if [ "$1" = abort-upgrade ]; then + exit 0 +fi + +if [ "$1" = install ]; then + # Create a flag file for postinst + mkdir -p /lib/modules/$version + touch /lib/modules/$version/.fresh-install +fi + +if [ -d /etc/kernel/preinst.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/preinst.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-parisc.prerm b/linux-image-4.15.0-2-parisc.prerm new file mode 100644 index 00000000000..2162cd3c9e7 --- /dev/null +++ b/linux-image-4.15.0-2-parisc.prerm @@ -0,0 +1,17 @@ +#!/bin/sh -e + +version=4.15.0-2-parisc +image_path=/boot/vmlinux-$version + +if [ "$1" != remove ]; then + exit 0 +fi + +linux-check-removal $version + +if [ -d /etc/kernel/prerm.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/prerm.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-parisc64-smp-dbg.lintian-overrides b/linux-image-4.15.0-2-parisc64-smp-dbg.lintian-overrides new file mode 100755 index 00000000000..76852cc3f28 --- /dev/null +++ b/linux-image-4.15.0-2-parisc64-smp-dbg.lintian-overrides @@ -0,0 +1,15 @@ +#!/usr/bin/dh-exec + +# Kernel dbg packages contain a full image with debug data +linux-image-4.15.0-2-parisc64-smp-dbg: dbg-package-missing-depends + +# glibc doesn't seem to check for a PT_GNU_STACK section in vDSOs, so +# it's OK that they don't have it +[arm64 armhf] linux-image-4.15.0-2-parisc64-smp-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-parisc64-smp/vdso/vdso.so +[amd64 i386 ppc64el s390x] linux-image-4.15.0-2-parisc64-smp-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-parisc64-smp/vdso/vdso32.so +[amd64 ppc64el s390x] linux-image-4.15.0-2-parisc64-smp-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-parisc64-smp/vdso/vdso64.so +[amd64] linux-image-4.15.0-2-parisc64-smp-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-parisc64-smp/vdso/vdsox32.so + +# It is intended that 64-bit kernels provide vDSOs for 32-bit executables +[amd64 ppc64el s390x] linux-image-4.15.0-2-parisc64-smp-dbg: binary-from-other-architecture usr/lib/debug/lib/modules/4.15.0-2-parisc64-smp/vdso/vdso32.so +[amd64] linux-image-4.15.0-2-parisc64-smp-dbg: binary-from-other-architecture usr/lib/debug/lib/modules/4.15.0-2-parisc64-smp/vdso/vdsox32.so diff --git a/linux-image-4.15.0-2-parisc64-smp.postinst b/linux-image-4.15.0-2-parisc64-smp.postinst new file mode 100644 index 00000000000..bbefef0537f --- /dev/null +++ b/linux-image-4.15.0-2-parisc64-smp.postinst @@ -0,0 +1,25 @@ +#!/bin/sh -e + +version=4.15.0-2-parisc64-smp +image_path=/boot/vmlinux-$version + +if [ "$1" != configure ]; then + exit 0 +fi + +depmod $version + +if [ -f /lib/modules/$version/.fresh-install ]; then + change=install +else + change=upgrade +fi +linux-update-symlinks $change $version $image_path +rm -f /lib/modules/$version/.fresh-install + +if [ -d /etc/kernel/postinst.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/postinst.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-parisc64-smp.postrm b/linux-image-4.15.0-2-parisc64-smp.postrm new file mode 100644 index 00000000000..ff149aecf58 --- /dev/null +++ b/linux-image-4.15.0-2-parisc64-smp.postrm @@ -0,0 +1,31 @@ +#!/bin/sh -e + +version=4.15.0-2-parisc64-smp +image_path=/boot/vmlinux-$version + +rm -f /lib/modules/$version/.fresh-install + +if [ "$1" != upgrade ] && command -v linux-update-symlinks >/dev/null; then + linux-update-symlinks remove $version $image_path +fi + +if [ -d /etc/kernel/postrm.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/postrm.d +fi + +if [ "$1" = purge ]; then + for extra_file in modules.dep modules.isapnpmap modules.pcimap \ + modules.usbmap modules.parportmap \ + modules.generic_string modules.ieee1394map \ + modules.ieee1394map modules.pnpbiosmap \ + modules.alias modules.ccwmap modules.inputmap \ + modules.symbols modules.ofmap \ + modules.seriomap modules.\*.bin \ + modules.softdep modules.devname; do + eval rm -f /lib/modules/$version/$extra_file + done + rmdir /lib/modules/$version || true +fi + +exit 0 diff --git a/linux-image-4.15.0-2-parisc64-smp.preinst b/linux-image-4.15.0-2-parisc64-smp.preinst new file mode 100644 index 00000000000..5160af94742 --- /dev/null +++ b/linux-image-4.15.0-2-parisc64-smp.preinst @@ -0,0 +1,21 @@ +#!/bin/sh -e + +version=4.15.0-2-parisc64-smp +image_path=/boot/vmlinux-$version + +if [ "$1" = abort-upgrade ]; then + exit 0 +fi + +if [ "$1" = install ]; then + # Create a flag file for postinst + mkdir -p /lib/modules/$version + touch /lib/modules/$version/.fresh-install +fi + +if [ -d /etc/kernel/preinst.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/preinst.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-parisc64-smp.prerm b/linux-image-4.15.0-2-parisc64-smp.prerm new file mode 100644 index 00000000000..0e5434eef5c --- /dev/null +++ b/linux-image-4.15.0-2-parisc64-smp.prerm @@ -0,0 +1,17 @@ +#!/bin/sh -e + +version=4.15.0-2-parisc64-smp +image_path=/boot/vmlinux-$version + +if [ "$1" != remove ]; then + exit 0 +fi + +linux-check-removal $version + +if [ -d /etc/kernel/prerm.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/prerm.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-powerpc-dbg.lintian-overrides b/linux-image-4.15.0-2-powerpc-dbg.lintian-overrides new file mode 100755 index 00000000000..947d0ddf728 --- /dev/null +++ b/linux-image-4.15.0-2-powerpc-dbg.lintian-overrides @@ -0,0 +1,15 @@ +#!/usr/bin/dh-exec + +# Kernel dbg packages contain a full image with debug data +linux-image-4.15.0-2-powerpc-dbg: dbg-package-missing-depends + +# glibc doesn't seem to check for a PT_GNU_STACK section in vDSOs, so +# it's OK that they don't have it +[arm64 armhf] linux-image-4.15.0-2-powerpc-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-powerpc/vdso/vdso.so +[amd64 i386 ppc64el s390x] linux-image-4.15.0-2-powerpc-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-powerpc/vdso/vdso32.so +[amd64 ppc64el s390x] linux-image-4.15.0-2-powerpc-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-powerpc/vdso/vdso64.so +[amd64] linux-image-4.15.0-2-powerpc-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-powerpc/vdso/vdsox32.so + +# It is intended that 64-bit kernels provide vDSOs for 32-bit executables +[amd64 ppc64el s390x] linux-image-4.15.0-2-powerpc-dbg: binary-from-other-architecture usr/lib/debug/lib/modules/4.15.0-2-powerpc/vdso/vdso32.so +[amd64] linux-image-4.15.0-2-powerpc-dbg: binary-from-other-architecture usr/lib/debug/lib/modules/4.15.0-2-powerpc/vdso/vdsox32.so diff --git a/linux-image-4.15.0-2-powerpc-smp-dbg.lintian-overrides b/linux-image-4.15.0-2-powerpc-smp-dbg.lintian-overrides new file mode 100755 index 00000000000..1b95d2e0192 --- /dev/null +++ b/linux-image-4.15.0-2-powerpc-smp-dbg.lintian-overrides @@ -0,0 +1,15 @@ +#!/usr/bin/dh-exec + +# Kernel dbg packages contain a full image with debug data +linux-image-4.15.0-2-powerpc-smp-dbg: dbg-package-missing-depends + +# glibc doesn't seem to check for a PT_GNU_STACK section in vDSOs, so +# it's OK that they don't have it +[arm64 armhf] linux-image-4.15.0-2-powerpc-smp-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-powerpc-smp/vdso/vdso.so +[amd64 i386 ppc64el s390x] linux-image-4.15.0-2-powerpc-smp-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-powerpc-smp/vdso/vdso32.so +[amd64 ppc64el s390x] linux-image-4.15.0-2-powerpc-smp-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-powerpc-smp/vdso/vdso64.so +[amd64] linux-image-4.15.0-2-powerpc-smp-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-powerpc-smp/vdso/vdsox32.so + +# It is intended that 64-bit kernels provide vDSOs for 32-bit executables +[amd64 ppc64el s390x] linux-image-4.15.0-2-powerpc-smp-dbg: binary-from-other-architecture usr/lib/debug/lib/modules/4.15.0-2-powerpc-smp/vdso/vdso32.so +[amd64] linux-image-4.15.0-2-powerpc-smp-dbg: binary-from-other-architecture usr/lib/debug/lib/modules/4.15.0-2-powerpc-smp/vdso/vdsox32.so diff --git a/linux-image-4.15.0-2-powerpc-smp.postinst b/linux-image-4.15.0-2-powerpc-smp.postinst new file mode 100644 index 00000000000..2ecc2271c9c --- /dev/null +++ b/linux-image-4.15.0-2-powerpc-smp.postinst @@ -0,0 +1,25 @@ +#!/bin/sh -e + +version=4.15.0-2-powerpc-smp +image_path=/boot/vmlinux-$version + +if [ "$1" != configure ]; then + exit 0 +fi + +depmod $version + +if [ -f /lib/modules/$version/.fresh-install ]; then + change=install +else + change=upgrade +fi +linux-update-symlinks $change $version $image_path +rm -f /lib/modules/$version/.fresh-install + +if [ -d /etc/kernel/postinst.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/postinst.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-powerpc-smp.postrm b/linux-image-4.15.0-2-powerpc-smp.postrm new file mode 100644 index 00000000000..da9921b3769 --- /dev/null +++ b/linux-image-4.15.0-2-powerpc-smp.postrm @@ -0,0 +1,31 @@ +#!/bin/sh -e + +version=4.15.0-2-powerpc-smp +image_path=/boot/vmlinux-$version + +rm -f /lib/modules/$version/.fresh-install + +if [ "$1" != upgrade ] && command -v linux-update-symlinks >/dev/null; then + linux-update-symlinks remove $version $image_path +fi + +if [ -d /etc/kernel/postrm.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/postrm.d +fi + +if [ "$1" = purge ]; then + for extra_file in modules.dep modules.isapnpmap modules.pcimap \ + modules.usbmap modules.parportmap \ + modules.generic_string modules.ieee1394map \ + modules.ieee1394map modules.pnpbiosmap \ + modules.alias modules.ccwmap modules.inputmap \ + modules.symbols modules.ofmap \ + modules.seriomap modules.\*.bin \ + modules.softdep modules.devname; do + eval rm -f /lib/modules/$version/$extra_file + done + rmdir /lib/modules/$version || true +fi + +exit 0 diff --git a/linux-image-4.15.0-2-powerpc-smp.preinst b/linux-image-4.15.0-2-powerpc-smp.preinst new file mode 100644 index 00000000000..292bd1b277c --- /dev/null +++ b/linux-image-4.15.0-2-powerpc-smp.preinst @@ -0,0 +1,21 @@ +#!/bin/sh -e + +version=4.15.0-2-powerpc-smp +image_path=/boot/vmlinux-$version + +if [ "$1" = abort-upgrade ]; then + exit 0 +fi + +if [ "$1" = install ]; then + # Create a flag file for postinst + mkdir -p /lib/modules/$version + touch /lib/modules/$version/.fresh-install +fi + +if [ -d /etc/kernel/preinst.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/preinst.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-powerpc-smp.prerm b/linux-image-4.15.0-2-powerpc-smp.prerm new file mode 100644 index 00000000000..cb1164975e3 --- /dev/null +++ b/linux-image-4.15.0-2-powerpc-smp.prerm @@ -0,0 +1,17 @@ +#!/bin/sh -e + +version=4.15.0-2-powerpc-smp +image_path=/boot/vmlinux-$version + +if [ "$1" != remove ]; then + exit 0 +fi + +linux-check-removal $version + +if [ -d /etc/kernel/prerm.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/prerm.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-powerpc.postinst b/linux-image-4.15.0-2-powerpc.postinst new file mode 100644 index 00000000000..ca29f02a866 --- /dev/null +++ b/linux-image-4.15.0-2-powerpc.postinst @@ -0,0 +1,25 @@ +#!/bin/sh -e + +version=4.15.0-2-powerpc +image_path=/boot/vmlinux-$version + +if [ "$1" != configure ]; then + exit 0 +fi + +depmod $version + +if [ -f /lib/modules/$version/.fresh-install ]; then + change=install +else + change=upgrade +fi +linux-update-symlinks $change $version $image_path +rm -f /lib/modules/$version/.fresh-install + +if [ -d /etc/kernel/postinst.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/postinst.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-powerpc.postrm b/linux-image-4.15.0-2-powerpc.postrm new file mode 100644 index 00000000000..e331689854e --- /dev/null +++ b/linux-image-4.15.0-2-powerpc.postrm @@ -0,0 +1,31 @@ +#!/bin/sh -e + +version=4.15.0-2-powerpc +image_path=/boot/vmlinux-$version + +rm -f /lib/modules/$version/.fresh-install + +if [ "$1" != upgrade ] && command -v linux-update-symlinks >/dev/null; then + linux-update-symlinks remove $version $image_path +fi + +if [ -d /etc/kernel/postrm.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/postrm.d +fi + +if [ "$1" = purge ]; then + for extra_file in modules.dep modules.isapnpmap modules.pcimap \ + modules.usbmap modules.parportmap \ + modules.generic_string modules.ieee1394map \ + modules.ieee1394map modules.pnpbiosmap \ + modules.alias modules.ccwmap modules.inputmap \ + modules.symbols modules.ofmap \ + modules.seriomap modules.\*.bin \ + modules.softdep modules.devname; do + eval rm -f /lib/modules/$version/$extra_file + done + rmdir /lib/modules/$version || true +fi + +exit 0 diff --git a/linux-image-4.15.0-2-powerpc.preinst b/linux-image-4.15.0-2-powerpc.preinst new file mode 100644 index 00000000000..920cddd7f59 --- /dev/null +++ b/linux-image-4.15.0-2-powerpc.preinst @@ -0,0 +1,21 @@ +#!/bin/sh -e + +version=4.15.0-2-powerpc +image_path=/boot/vmlinux-$version + +if [ "$1" = abort-upgrade ]; then + exit 0 +fi + +if [ "$1" = install ]; then + # Create a flag file for postinst + mkdir -p /lib/modules/$version + touch /lib/modules/$version/.fresh-install +fi + +if [ -d /etc/kernel/preinst.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/preinst.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-powerpc.prerm b/linux-image-4.15.0-2-powerpc.prerm new file mode 100644 index 00000000000..dcb9af86c5c --- /dev/null +++ b/linux-image-4.15.0-2-powerpc.prerm @@ -0,0 +1,17 @@ +#!/bin/sh -e + +version=4.15.0-2-powerpc +image_path=/boot/vmlinux-$version + +if [ "$1" != remove ]; then + exit 0 +fi + +linux-check-removal $version + +if [ -d /etc/kernel/prerm.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/prerm.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-powerpc64-dbg.lintian-overrides b/linux-image-4.15.0-2-powerpc64-dbg.lintian-overrides new file mode 100755 index 00000000000..467f1d2d7de --- /dev/null +++ b/linux-image-4.15.0-2-powerpc64-dbg.lintian-overrides @@ -0,0 +1,15 @@ +#!/usr/bin/dh-exec + +# Kernel dbg packages contain a full image with debug data +linux-image-4.15.0-2-powerpc64-dbg: dbg-package-missing-depends + +# glibc doesn't seem to check for a PT_GNU_STACK section in vDSOs, so +# it's OK that they don't have it +[arm64 armhf] linux-image-4.15.0-2-powerpc64-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-powerpc64/vdso/vdso.so +[amd64 i386 ppc64el s390x] linux-image-4.15.0-2-powerpc64-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-powerpc64/vdso/vdso32.so +[amd64 ppc64el s390x] linux-image-4.15.0-2-powerpc64-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-powerpc64/vdso/vdso64.so +[amd64] linux-image-4.15.0-2-powerpc64-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-powerpc64/vdso/vdsox32.so + +# It is intended that 64-bit kernels provide vDSOs for 32-bit executables +[amd64 ppc64el s390x] linux-image-4.15.0-2-powerpc64-dbg: binary-from-other-architecture usr/lib/debug/lib/modules/4.15.0-2-powerpc64/vdso/vdso32.so +[amd64] linux-image-4.15.0-2-powerpc64-dbg: binary-from-other-architecture usr/lib/debug/lib/modules/4.15.0-2-powerpc64/vdso/vdsox32.so diff --git a/linux-image-4.15.0-2-powerpc64.postinst b/linux-image-4.15.0-2-powerpc64.postinst new file mode 100644 index 00000000000..d29a26c9a49 --- /dev/null +++ b/linux-image-4.15.0-2-powerpc64.postinst @@ -0,0 +1,25 @@ +#!/bin/sh -e + +version=4.15.0-2-powerpc64 +image_path=/boot/vmlinux-$version + +if [ "$1" != configure ]; then + exit 0 +fi + +depmod $version + +if [ -f /lib/modules/$version/.fresh-install ]; then + change=install +else + change=upgrade +fi +linux-update-symlinks $change $version $image_path +rm -f /lib/modules/$version/.fresh-install + +if [ -d /etc/kernel/postinst.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/postinst.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-powerpc64.postrm b/linux-image-4.15.0-2-powerpc64.postrm new file mode 100644 index 00000000000..09afc3a008b --- /dev/null +++ b/linux-image-4.15.0-2-powerpc64.postrm @@ -0,0 +1,31 @@ +#!/bin/sh -e + +version=4.15.0-2-powerpc64 +image_path=/boot/vmlinux-$version + +rm -f /lib/modules/$version/.fresh-install + +if [ "$1" != upgrade ] && command -v linux-update-symlinks >/dev/null; then + linux-update-symlinks remove $version $image_path +fi + +if [ -d /etc/kernel/postrm.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/postrm.d +fi + +if [ "$1" = purge ]; then + for extra_file in modules.dep modules.isapnpmap modules.pcimap \ + modules.usbmap modules.parportmap \ + modules.generic_string modules.ieee1394map \ + modules.ieee1394map modules.pnpbiosmap \ + modules.alias modules.ccwmap modules.inputmap \ + modules.symbols modules.ofmap \ + modules.seriomap modules.\*.bin \ + modules.softdep modules.devname; do + eval rm -f /lib/modules/$version/$extra_file + done + rmdir /lib/modules/$version || true +fi + +exit 0 diff --git a/linux-image-4.15.0-2-powerpc64.preinst b/linux-image-4.15.0-2-powerpc64.preinst new file mode 100644 index 00000000000..ff6c1c6bfef --- /dev/null +++ b/linux-image-4.15.0-2-powerpc64.preinst @@ -0,0 +1,21 @@ +#!/bin/sh -e + +version=4.15.0-2-powerpc64 +image_path=/boot/vmlinux-$version + +if [ "$1" = abort-upgrade ]; then + exit 0 +fi + +if [ "$1" = install ]; then + # Create a flag file for postinst + mkdir -p /lib/modules/$version + touch /lib/modules/$version/.fresh-install +fi + +if [ -d /etc/kernel/preinst.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/preinst.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-powerpc64.prerm b/linux-image-4.15.0-2-powerpc64.prerm new file mode 100644 index 00000000000..9d7989f274a --- /dev/null +++ b/linux-image-4.15.0-2-powerpc64.prerm @@ -0,0 +1,17 @@ +#!/bin/sh -e + +version=4.15.0-2-powerpc64 +image_path=/boot/vmlinux-$version + +if [ "$1" != remove ]; then + exit 0 +fi + +linux-check-removal $version + +if [ -d /etc/kernel/prerm.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/prerm.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-powerpc64le-dbg.lintian-overrides b/linux-image-4.15.0-2-powerpc64le-dbg.lintian-overrides new file mode 100755 index 00000000000..0caf7f83864 --- /dev/null +++ b/linux-image-4.15.0-2-powerpc64le-dbg.lintian-overrides @@ -0,0 +1,15 @@ +#!/usr/bin/dh-exec + +# Kernel dbg packages contain a full image with debug data +linux-image-4.15.0-2-powerpc64le-dbg: dbg-package-missing-depends + +# glibc doesn't seem to check for a PT_GNU_STACK section in vDSOs, so +# it's OK that they don't have it +[arm64 armhf] linux-image-4.15.0-2-powerpc64le-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-powerpc64le/vdso/vdso.so +[amd64 i386 ppc64el s390x] linux-image-4.15.0-2-powerpc64le-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-powerpc64le/vdso/vdso32.so +[amd64 ppc64el s390x] linux-image-4.15.0-2-powerpc64le-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-powerpc64le/vdso/vdso64.so +[amd64] linux-image-4.15.0-2-powerpc64le-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-powerpc64le/vdso/vdsox32.so + +# It is intended that 64-bit kernels provide vDSOs for 32-bit executables +[amd64 ppc64el s390x] linux-image-4.15.0-2-powerpc64le-dbg: binary-from-other-architecture usr/lib/debug/lib/modules/4.15.0-2-powerpc64le/vdso/vdso32.so +[amd64] linux-image-4.15.0-2-powerpc64le-dbg: binary-from-other-architecture usr/lib/debug/lib/modules/4.15.0-2-powerpc64le/vdso/vdsox32.so diff --git a/linux-image-4.15.0-2-powerpc64le.postinst b/linux-image-4.15.0-2-powerpc64le.postinst new file mode 100644 index 00000000000..aeed31a6a30 --- /dev/null +++ b/linux-image-4.15.0-2-powerpc64le.postinst @@ -0,0 +1,25 @@ +#!/bin/sh -e + +version=4.15.0-2-powerpc64le +image_path=/boot/vmlinux-$version + +if [ "$1" != configure ]; then + exit 0 +fi + +depmod $version + +if [ -f /lib/modules/$version/.fresh-install ]; then + change=install +else + change=upgrade +fi +linux-update-symlinks $change $version $image_path +rm -f /lib/modules/$version/.fresh-install + +if [ -d /etc/kernel/postinst.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/postinst.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-powerpc64le.postrm b/linux-image-4.15.0-2-powerpc64le.postrm new file mode 100644 index 00000000000..6b7dc8d3783 --- /dev/null +++ b/linux-image-4.15.0-2-powerpc64le.postrm @@ -0,0 +1,31 @@ +#!/bin/sh -e + +version=4.15.0-2-powerpc64le +image_path=/boot/vmlinux-$version + +rm -f /lib/modules/$version/.fresh-install + +if [ "$1" != upgrade ] && command -v linux-update-symlinks >/dev/null; then + linux-update-symlinks remove $version $image_path +fi + +if [ -d /etc/kernel/postrm.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/postrm.d +fi + +if [ "$1" = purge ]; then + for extra_file in modules.dep modules.isapnpmap modules.pcimap \ + modules.usbmap modules.parportmap \ + modules.generic_string modules.ieee1394map \ + modules.ieee1394map modules.pnpbiosmap \ + modules.alias modules.ccwmap modules.inputmap \ + modules.symbols modules.ofmap \ + modules.seriomap modules.\*.bin \ + modules.softdep modules.devname; do + eval rm -f /lib/modules/$version/$extra_file + done + rmdir /lib/modules/$version || true +fi + +exit 0 diff --git a/linux-image-4.15.0-2-powerpc64le.preinst b/linux-image-4.15.0-2-powerpc64le.preinst new file mode 100644 index 00000000000..d9a22e85e7b --- /dev/null +++ b/linux-image-4.15.0-2-powerpc64le.preinst @@ -0,0 +1,21 @@ +#!/bin/sh -e + +version=4.15.0-2-powerpc64le +image_path=/boot/vmlinux-$version + +if [ "$1" = abort-upgrade ]; then + exit 0 +fi + +if [ "$1" = install ]; then + # Create a flag file for postinst + mkdir -p /lib/modules/$version + touch /lib/modules/$version/.fresh-install +fi + +if [ -d /etc/kernel/preinst.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/preinst.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-powerpc64le.prerm b/linux-image-4.15.0-2-powerpc64le.prerm new file mode 100644 index 00000000000..2ca3462632e --- /dev/null +++ b/linux-image-4.15.0-2-powerpc64le.prerm @@ -0,0 +1,17 @@ +#!/bin/sh -e + +version=4.15.0-2-powerpc64le +image_path=/boot/vmlinux-$version + +if [ "$1" != remove ]; then + exit 0 +fi + +linux-check-removal $version + +if [ -d /etc/kernel/prerm.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/prerm.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-powerpcspe-dbg.lintian-overrides b/linux-image-4.15.0-2-powerpcspe-dbg.lintian-overrides new file mode 100755 index 00000000000..12404c063c9 --- /dev/null +++ b/linux-image-4.15.0-2-powerpcspe-dbg.lintian-overrides @@ -0,0 +1,15 @@ +#!/usr/bin/dh-exec + +# Kernel dbg packages contain a full image with debug data +linux-image-4.15.0-2-powerpcspe-dbg: dbg-package-missing-depends + +# glibc doesn't seem to check for a PT_GNU_STACK section in vDSOs, so +# it's OK that they don't have it +[arm64 armhf] linux-image-4.15.0-2-powerpcspe-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-powerpcspe/vdso/vdso.so +[amd64 i386 ppc64el s390x] linux-image-4.15.0-2-powerpcspe-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-powerpcspe/vdso/vdso32.so +[amd64 ppc64el s390x] linux-image-4.15.0-2-powerpcspe-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-powerpcspe/vdso/vdso64.so +[amd64] linux-image-4.15.0-2-powerpcspe-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-powerpcspe/vdso/vdsox32.so + +# It is intended that 64-bit kernels provide vDSOs for 32-bit executables +[amd64 ppc64el s390x] linux-image-4.15.0-2-powerpcspe-dbg: binary-from-other-architecture usr/lib/debug/lib/modules/4.15.0-2-powerpcspe/vdso/vdso32.so +[amd64] linux-image-4.15.0-2-powerpcspe-dbg: binary-from-other-architecture usr/lib/debug/lib/modules/4.15.0-2-powerpcspe/vdso/vdsox32.so diff --git a/linux-image-4.15.0-2-powerpcspe.postinst b/linux-image-4.15.0-2-powerpcspe.postinst new file mode 100644 index 00000000000..9d8f2177632 --- /dev/null +++ b/linux-image-4.15.0-2-powerpcspe.postinst @@ -0,0 +1,25 @@ +#!/bin/sh -e + +version=4.15.0-2-powerpcspe +image_path=/boot/vmlinux-$version + +if [ "$1" != configure ]; then + exit 0 +fi + +depmod $version + +if [ -f /lib/modules/$version/.fresh-install ]; then + change=install +else + change=upgrade +fi +linux-update-symlinks $change $version $image_path +rm -f /lib/modules/$version/.fresh-install + +if [ -d /etc/kernel/postinst.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/postinst.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-powerpcspe.postrm b/linux-image-4.15.0-2-powerpcspe.postrm new file mode 100644 index 00000000000..558d1ff4084 --- /dev/null +++ b/linux-image-4.15.0-2-powerpcspe.postrm @@ -0,0 +1,31 @@ +#!/bin/sh -e + +version=4.15.0-2-powerpcspe +image_path=/boot/vmlinux-$version + +rm -f /lib/modules/$version/.fresh-install + +if [ "$1" != upgrade ] && command -v linux-update-symlinks >/dev/null; then + linux-update-symlinks remove $version $image_path +fi + +if [ -d /etc/kernel/postrm.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/postrm.d +fi + +if [ "$1" = purge ]; then + for extra_file in modules.dep modules.isapnpmap modules.pcimap \ + modules.usbmap modules.parportmap \ + modules.generic_string modules.ieee1394map \ + modules.ieee1394map modules.pnpbiosmap \ + modules.alias modules.ccwmap modules.inputmap \ + modules.symbols modules.ofmap \ + modules.seriomap modules.\*.bin \ + modules.softdep modules.devname; do + eval rm -f /lib/modules/$version/$extra_file + done + rmdir /lib/modules/$version || true +fi + +exit 0 diff --git a/linux-image-4.15.0-2-powerpcspe.preinst b/linux-image-4.15.0-2-powerpcspe.preinst new file mode 100644 index 00000000000..bcf3dd7111c --- /dev/null +++ b/linux-image-4.15.0-2-powerpcspe.preinst @@ -0,0 +1,21 @@ +#!/bin/sh -e + +version=4.15.0-2-powerpcspe +image_path=/boot/vmlinux-$version + +if [ "$1" = abort-upgrade ]; then + exit 0 +fi + +if [ "$1" = install ]; then + # Create a flag file for postinst + mkdir -p /lib/modules/$version + touch /lib/modules/$version/.fresh-install +fi + +if [ -d /etc/kernel/preinst.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/preinst.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-powerpcspe.prerm b/linux-image-4.15.0-2-powerpcspe.prerm new file mode 100644 index 00000000000..51ece0e38eb --- /dev/null +++ b/linux-image-4.15.0-2-powerpcspe.prerm @@ -0,0 +1,17 @@ +#!/bin/sh -e + +version=4.15.0-2-powerpcspe +image_path=/boot/vmlinux-$version + +if [ "$1" != remove ]; then + exit 0 +fi + +linux-check-removal $version + +if [ -d /etc/kernel/prerm.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/prerm.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-s390x-dbg.lintian-overrides b/linux-image-4.15.0-2-s390x-dbg.lintian-overrides new file mode 100755 index 00000000000..8f682f9bde9 --- /dev/null +++ b/linux-image-4.15.0-2-s390x-dbg.lintian-overrides @@ -0,0 +1,15 @@ +#!/usr/bin/dh-exec + +# Kernel dbg packages contain a full image with debug data +linux-image-4.15.0-2-s390x-dbg: dbg-package-missing-depends + +# glibc doesn't seem to check for a PT_GNU_STACK section in vDSOs, so +# it's OK that they don't have it +[arm64 armhf] linux-image-4.15.0-2-s390x-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-s390x/vdso/vdso.so +[amd64 i386 ppc64el s390x] linux-image-4.15.0-2-s390x-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-s390x/vdso/vdso32.so +[amd64 ppc64el s390x] linux-image-4.15.0-2-s390x-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-s390x/vdso/vdso64.so +[amd64] linux-image-4.15.0-2-s390x-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-s390x/vdso/vdsox32.so + +# It is intended that 64-bit kernels provide vDSOs for 32-bit executables +[amd64 ppc64el s390x] linux-image-4.15.0-2-s390x-dbg: binary-from-other-architecture usr/lib/debug/lib/modules/4.15.0-2-s390x/vdso/vdso32.so +[amd64] linux-image-4.15.0-2-s390x-dbg: binary-from-other-architecture usr/lib/debug/lib/modules/4.15.0-2-s390x/vdso/vdsox32.so diff --git a/linux-image-4.15.0-2-s390x.postinst b/linux-image-4.15.0-2-s390x.postinst new file mode 100644 index 00000000000..15714a8ac11 --- /dev/null +++ b/linux-image-4.15.0-2-s390x.postinst @@ -0,0 +1,25 @@ +#!/bin/sh -e + +version=4.15.0-2-s390x +image_path=/boot/vmlinuz-$version + +if [ "$1" != configure ]; then + exit 0 +fi + +depmod $version + +if [ -f /lib/modules/$version/.fresh-install ]; then + change=install +else + change=upgrade +fi +linux-update-symlinks $change $version $image_path +rm -f /lib/modules/$version/.fresh-install + +if [ -d /etc/kernel/postinst.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/postinst.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-s390x.postrm b/linux-image-4.15.0-2-s390x.postrm new file mode 100644 index 00000000000..0ac794277c9 --- /dev/null +++ b/linux-image-4.15.0-2-s390x.postrm @@ -0,0 +1,31 @@ +#!/bin/sh -e + +version=4.15.0-2-s390x +image_path=/boot/vmlinuz-$version + +rm -f /lib/modules/$version/.fresh-install + +if [ "$1" != upgrade ] && command -v linux-update-symlinks >/dev/null; then + linux-update-symlinks remove $version $image_path +fi + +if [ -d /etc/kernel/postrm.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/postrm.d +fi + +if [ "$1" = purge ]; then + for extra_file in modules.dep modules.isapnpmap modules.pcimap \ + modules.usbmap modules.parportmap \ + modules.generic_string modules.ieee1394map \ + modules.ieee1394map modules.pnpbiosmap \ + modules.alias modules.ccwmap modules.inputmap \ + modules.symbols modules.ofmap \ + modules.seriomap modules.\*.bin \ + modules.softdep modules.devname; do + eval rm -f /lib/modules/$version/$extra_file + done + rmdir /lib/modules/$version || true +fi + +exit 0 diff --git a/linux-image-4.15.0-2-s390x.preinst b/linux-image-4.15.0-2-s390x.preinst new file mode 100644 index 00000000000..eab552e4cf1 --- /dev/null +++ b/linux-image-4.15.0-2-s390x.preinst @@ -0,0 +1,21 @@ +#!/bin/sh -e + +version=4.15.0-2-s390x +image_path=/boot/vmlinuz-$version + +if [ "$1" = abort-upgrade ]; then + exit 0 +fi + +if [ "$1" = install ]; then + # Create a flag file for postinst + mkdir -p /lib/modules/$version + touch /lib/modules/$version/.fresh-install +fi + +if [ -d /etc/kernel/preinst.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/preinst.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-s390x.prerm b/linux-image-4.15.0-2-s390x.prerm new file mode 100644 index 00000000000..e3eeb8dd586 --- /dev/null +++ b/linux-image-4.15.0-2-s390x.prerm @@ -0,0 +1,17 @@ +#!/bin/sh -e + +version=4.15.0-2-s390x +image_path=/boot/vmlinuz-$version + +if [ "$1" != remove ]; then + exit 0 +fi + +linux-check-removal $version + +if [ -d /etc/kernel/prerm.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/prerm.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-sh7751r-dbg.lintian-overrides b/linux-image-4.15.0-2-sh7751r-dbg.lintian-overrides new file mode 100755 index 00000000000..fcc3b2bfd5f --- /dev/null +++ b/linux-image-4.15.0-2-sh7751r-dbg.lintian-overrides @@ -0,0 +1,15 @@ +#!/usr/bin/dh-exec + +# Kernel dbg packages contain a full image with debug data +linux-image-4.15.0-2-sh7751r-dbg: dbg-package-missing-depends + +# glibc doesn't seem to check for a PT_GNU_STACK section in vDSOs, so +# it's OK that they don't have it +[arm64 armhf] linux-image-4.15.0-2-sh7751r-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-sh7751r/vdso/vdso.so +[amd64 i386 ppc64el s390x] linux-image-4.15.0-2-sh7751r-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-sh7751r/vdso/vdso32.so +[amd64 ppc64el s390x] linux-image-4.15.0-2-sh7751r-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-sh7751r/vdso/vdso64.so +[amd64] linux-image-4.15.0-2-sh7751r-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-sh7751r/vdso/vdsox32.so + +# It is intended that 64-bit kernels provide vDSOs for 32-bit executables +[amd64 ppc64el s390x] linux-image-4.15.0-2-sh7751r-dbg: binary-from-other-architecture usr/lib/debug/lib/modules/4.15.0-2-sh7751r/vdso/vdso32.so +[amd64] linux-image-4.15.0-2-sh7751r-dbg: binary-from-other-architecture usr/lib/debug/lib/modules/4.15.0-2-sh7751r/vdso/vdsox32.so diff --git a/linux-image-4.15.0-2-sh7751r.postinst b/linux-image-4.15.0-2-sh7751r.postinst new file mode 100644 index 00000000000..efb40d54d60 --- /dev/null +++ b/linux-image-4.15.0-2-sh7751r.postinst @@ -0,0 +1,25 @@ +#!/bin/sh -e + +version=4.15.0-2-sh7751r +image_path=/boot/vmlinuz-$version + +if [ "$1" != configure ]; then + exit 0 +fi + +depmod $version + +if [ -f /lib/modules/$version/.fresh-install ]; then + change=install +else + change=upgrade +fi +linux-update-symlinks $change $version $image_path +rm -f /lib/modules/$version/.fresh-install + +if [ -d /etc/kernel/postinst.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/postinst.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-sh7751r.postrm b/linux-image-4.15.0-2-sh7751r.postrm new file mode 100644 index 00000000000..751df888af4 --- /dev/null +++ b/linux-image-4.15.0-2-sh7751r.postrm @@ -0,0 +1,31 @@ +#!/bin/sh -e + +version=4.15.0-2-sh7751r +image_path=/boot/vmlinuz-$version + +rm -f /lib/modules/$version/.fresh-install + +if [ "$1" != upgrade ] && command -v linux-update-symlinks >/dev/null; then + linux-update-symlinks remove $version $image_path +fi + +if [ -d /etc/kernel/postrm.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/postrm.d +fi + +if [ "$1" = purge ]; then + for extra_file in modules.dep modules.isapnpmap modules.pcimap \ + modules.usbmap modules.parportmap \ + modules.generic_string modules.ieee1394map \ + modules.ieee1394map modules.pnpbiosmap \ + modules.alias modules.ccwmap modules.inputmap \ + modules.symbols modules.ofmap \ + modules.seriomap modules.\*.bin \ + modules.softdep modules.devname; do + eval rm -f /lib/modules/$version/$extra_file + done + rmdir /lib/modules/$version || true +fi + +exit 0 diff --git a/linux-image-4.15.0-2-sh7751r.preinst b/linux-image-4.15.0-2-sh7751r.preinst new file mode 100644 index 00000000000..313c9b549dd --- /dev/null +++ b/linux-image-4.15.0-2-sh7751r.preinst @@ -0,0 +1,21 @@ +#!/bin/sh -e + +version=4.15.0-2-sh7751r +image_path=/boot/vmlinuz-$version + +if [ "$1" = abort-upgrade ]; then + exit 0 +fi + +if [ "$1" = install ]; then + # Create a flag file for postinst + mkdir -p /lib/modules/$version + touch /lib/modules/$version/.fresh-install +fi + +if [ -d /etc/kernel/preinst.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/preinst.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-sh7751r.prerm b/linux-image-4.15.0-2-sh7751r.prerm new file mode 100644 index 00000000000..6215ef8469a --- /dev/null +++ b/linux-image-4.15.0-2-sh7751r.prerm @@ -0,0 +1,17 @@ +#!/bin/sh -e + +version=4.15.0-2-sh7751r +image_path=/boot/vmlinuz-$version + +if [ "$1" != remove ]; then + exit 0 +fi + +linux-check-removal $version + +if [ -d /etc/kernel/prerm.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/prerm.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-sh7785lcr-dbg.lintian-overrides b/linux-image-4.15.0-2-sh7785lcr-dbg.lintian-overrides new file mode 100755 index 00000000000..07855408c01 --- /dev/null +++ b/linux-image-4.15.0-2-sh7785lcr-dbg.lintian-overrides @@ -0,0 +1,15 @@ +#!/usr/bin/dh-exec + +# Kernel dbg packages contain a full image with debug data +linux-image-4.15.0-2-sh7785lcr-dbg: dbg-package-missing-depends + +# glibc doesn't seem to check for a PT_GNU_STACK section in vDSOs, so +# it's OK that they don't have it +[arm64 armhf] linux-image-4.15.0-2-sh7785lcr-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-sh7785lcr/vdso/vdso.so +[amd64 i386 ppc64el s390x] linux-image-4.15.0-2-sh7785lcr-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-sh7785lcr/vdso/vdso32.so +[amd64 ppc64el s390x] linux-image-4.15.0-2-sh7785lcr-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-sh7785lcr/vdso/vdso64.so +[amd64] linux-image-4.15.0-2-sh7785lcr-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-sh7785lcr/vdso/vdsox32.so + +# It is intended that 64-bit kernels provide vDSOs for 32-bit executables +[amd64 ppc64el s390x] linux-image-4.15.0-2-sh7785lcr-dbg: binary-from-other-architecture usr/lib/debug/lib/modules/4.15.0-2-sh7785lcr/vdso/vdso32.so +[amd64] linux-image-4.15.0-2-sh7785lcr-dbg: binary-from-other-architecture usr/lib/debug/lib/modules/4.15.0-2-sh7785lcr/vdso/vdsox32.so diff --git a/linux-image-4.15.0-2-sh7785lcr.postinst b/linux-image-4.15.0-2-sh7785lcr.postinst new file mode 100644 index 00000000000..3c3936c4135 --- /dev/null +++ b/linux-image-4.15.0-2-sh7785lcr.postinst @@ -0,0 +1,25 @@ +#!/bin/sh -e + +version=4.15.0-2-sh7785lcr +image_path=/boot/vmlinuz-$version + +if [ "$1" != configure ]; then + exit 0 +fi + +depmod $version + +if [ -f /lib/modules/$version/.fresh-install ]; then + change=install +else + change=upgrade +fi +linux-update-symlinks $change $version $image_path +rm -f /lib/modules/$version/.fresh-install + +if [ -d /etc/kernel/postinst.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/postinst.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-sh7785lcr.postrm b/linux-image-4.15.0-2-sh7785lcr.postrm new file mode 100644 index 00000000000..bbd71a54da9 --- /dev/null +++ b/linux-image-4.15.0-2-sh7785lcr.postrm @@ -0,0 +1,31 @@ +#!/bin/sh -e + +version=4.15.0-2-sh7785lcr +image_path=/boot/vmlinuz-$version + +rm -f /lib/modules/$version/.fresh-install + +if [ "$1" != upgrade ] && command -v linux-update-symlinks >/dev/null; then + linux-update-symlinks remove $version $image_path +fi + +if [ -d /etc/kernel/postrm.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/postrm.d +fi + +if [ "$1" = purge ]; then + for extra_file in modules.dep modules.isapnpmap modules.pcimap \ + modules.usbmap modules.parportmap \ + modules.generic_string modules.ieee1394map \ + modules.ieee1394map modules.pnpbiosmap \ + modules.alias modules.ccwmap modules.inputmap \ + modules.symbols modules.ofmap \ + modules.seriomap modules.\*.bin \ + modules.softdep modules.devname; do + eval rm -f /lib/modules/$version/$extra_file + done + rmdir /lib/modules/$version || true +fi + +exit 0 diff --git a/linux-image-4.15.0-2-sh7785lcr.preinst b/linux-image-4.15.0-2-sh7785lcr.preinst new file mode 100644 index 00000000000..4da35c378cf --- /dev/null +++ b/linux-image-4.15.0-2-sh7785lcr.preinst @@ -0,0 +1,21 @@ +#!/bin/sh -e + +version=4.15.0-2-sh7785lcr +image_path=/boot/vmlinuz-$version + +if [ "$1" = abort-upgrade ]; then + exit 0 +fi + +if [ "$1" = install ]; then + # Create a flag file for postinst + mkdir -p /lib/modules/$version + touch /lib/modules/$version/.fresh-install +fi + +if [ -d /etc/kernel/preinst.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/preinst.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-sh7785lcr.prerm b/linux-image-4.15.0-2-sh7785lcr.prerm new file mode 100644 index 00000000000..a43bffac9e9 --- /dev/null +++ b/linux-image-4.15.0-2-sh7785lcr.prerm @@ -0,0 +1,17 @@ +#!/bin/sh -e + +version=4.15.0-2-sh7785lcr +image_path=/boot/vmlinuz-$version + +if [ "$1" != remove ]; then + exit 0 +fi + +linux-check-removal $version + +if [ -d /etc/kernel/prerm.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/prerm.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-sparc64-dbg.lintian-overrides b/linux-image-4.15.0-2-sparc64-dbg.lintian-overrides new file mode 100755 index 00000000000..76e5132ceae --- /dev/null +++ b/linux-image-4.15.0-2-sparc64-dbg.lintian-overrides @@ -0,0 +1,15 @@ +#!/usr/bin/dh-exec + +# Kernel dbg packages contain a full image with debug data +linux-image-4.15.0-2-sparc64-dbg: dbg-package-missing-depends + +# glibc doesn't seem to check for a PT_GNU_STACK section in vDSOs, so +# it's OK that they don't have it +[arm64 armhf] linux-image-4.15.0-2-sparc64-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-sparc64/vdso/vdso.so +[amd64 i386 ppc64el s390x] linux-image-4.15.0-2-sparc64-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-sparc64/vdso/vdso32.so +[amd64 ppc64el s390x] linux-image-4.15.0-2-sparc64-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-sparc64/vdso/vdso64.so +[amd64] linux-image-4.15.0-2-sparc64-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-sparc64/vdso/vdsox32.so + +# It is intended that 64-bit kernels provide vDSOs for 32-bit executables +[amd64 ppc64el s390x] linux-image-4.15.0-2-sparc64-dbg: binary-from-other-architecture usr/lib/debug/lib/modules/4.15.0-2-sparc64/vdso/vdso32.so +[amd64] linux-image-4.15.0-2-sparc64-dbg: binary-from-other-architecture usr/lib/debug/lib/modules/4.15.0-2-sparc64/vdso/vdsox32.so diff --git a/linux-image-4.15.0-2-sparc64-smp-dbg.lintian-overrides b/linux-image-4.15.0-2-sparc64-smp-dbg.lintian-overrides new file mode 100755 index 00000000000..e2907ef17fa --- /dev/null +++ b/linux-image-4.15.0-2-sparc64-smp-dbg.lintian-overrides @@ -0,0 +1,15 @@ +#!/usr/bin/dh-exec + +# Kernel dbg packages contain a full image with debug data +linux-image-4.15.0-2-sparc64-smp-dbg: dbg-package-missing-depends + +# glibc doesn't seem to check for a PT_GNU_STACK section in vDSOs, so +# it's OK that they don't have it +[arm64 armhf] linux-image-4.15.0-2-sparc64-smp-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-sparc64-smp/vdso/vdso.so +[amd64 i386 ppc64el s390x] linux-image-4.15.0-2-sparc64-smp-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-sparc64-smp/vdso/vdso32.so +[amd64 ppc64el s390x] linux-image-4.15.0-2-sparc64-smp-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-sparc64-smp/vdso/vdso64.so +[amd64] linux-image-4.15.0-2-sparc64-smp-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/4.15.0-2-sparc64-smp/vdso/vdsox32.so + +# It is intended that 64-bit kernels provide vDSOs for 32-bit executables +[amd64 ppc64el s390x] linux-image-4.15.0-2-sparc64-smp-dbg: binary-from-other-architecture usr/lib/debug/lib/modules/4.15.0-2-sparc64-smp/vdso/vdso32.so +[amd64] linux-image-4.15.0-2-sparc64-smp-dbg: binary-from-other-architecture usr/lib/debug/lib/modules/4.15.0-2-sparc64-smp/vdso/vdsox32.so diff --git a/linux-image-4.15.0-2-sparc64-smp.postinst b/linux-image-4.15.0-2-sparc64-smp.postinst new file mode 100644 index 00000000000..363eb760376 --- /dev/null +++ b/linux-image-4.15.0-2-sparc64-smp.postinst @@ -0,0 +1,25 @@ +#!/bin/sh -e + +version=4.15.0-2-sparc64-smp +image_path=/boot/vmlinuz-$version + +if [ "$1" != configure ]; then + exit 0 +fi + +depmod $version + +if [ -f /lib/modules/$version/.fresh-install ]; then + change=install +else + change=upgrade +fi +linux-update-symlinks $change $version $image_path +rm -f /lib/modules/$version/.fresh-install + +if [ -d /etc/kernel/postinst.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/postinst.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-sparc64-smp.postrm b/linux-image-4.15.0-2-sparc64-smp.postrm new file mode 100644 index 00000000000..98af9da997c --- /dev/null +++ b/linux-image-4.15.0-2-sparc64-smp.postrm @@ -0,0 +1,31 @@ +#!/bin/sh -e + +version=4.15.0-2-sparc64-smp +image_path=/boot/vmlinuz-$version + +rm -f /lib/modules/$version/.fresh-install + +if [ "$1" != upgrade ] && command -v linux-update-symlinks >/dev/null; then + linux-update-symlinks remove $version $image_path +fi + +if [ -d /etc/kernel/postrm.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/postrm.d +fi + +if [ "$1" = purge ]; then + for extra_file in modules.dep modules.isapnpmap modules.pcimap \ + modules.usbmap modules.parportmap \ + modules.generic_string modules.ieee1394map \ + modules.ieee1394map modules.pnpbiosmap \ + modules.alias modules.ccwmap modules.inputmap \ + modules.symbols modules.ofmap \ + modules.seriomap modules.\*.bin \ + modules.softdep modules.devname; do + eval rm -f /lib/modules/$version/$extra_file + done + rmdir /lib/modules/$version || true +fi + +exit 0 diff --git a/linux-image-4.15.0-2-sparc64-smp.preinst b/linux-image-4.15.0-2-sparc64-smp.preinst new file mode 100644 index 00000000000..e2ea816a0ba --- /dev/null +++ b/linux-image-4.15.0-2-sparc64-smp.preinst @@ -0,0 +1,21 @@ +#!/bin/sh -e + +version=4.15.0-2-sparc64-smp +image_path=/boot/vmlinuz-$version + +if [ "$1" = abort-upgrade ]; then + exit 0 +fi + +if [ "$1" = install ]; then + # Create a flag file for postinst + mkdir -p /lib/modules/$version + touch /lib/modules/$version/.fresh-install +fi + +if [ -d /etc/kernel/preinst.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/preinst.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-sparc64-smp.prerm b/linux-image-4.15.0-2-sparc64-smp.prerm new file mode 100644 index 00000000000..71edf31b961 --- /dev/null +++ b/linux-image-4.15.0-2-sparc64-smp.prerm @@ -0,0 +1,17 @@ +#!/bin/sh -e + +version=4.15.0-2-sparc64-smp +image_path=/boot/vmlinuz-$version + +if [ "$1" != remove ]; then + exit 0 +fi + +linux-check-removal $version + +if [ -d /etc/kernel/prerm.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/prerm.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-sparc64.postinst b/linux-image-4.15.0-2-sparc64.postinst new file mode 100644 index 00000000000..c95cbd40a32 --- /dev/null +++ b/linux-image-4.15.0-2-sparc64.postinst @@ -0,0 +1,25 @@ +#!/bin/sh -e + +version=4.15.0-2-sparc64 +image_path=/boot/vmlinuz-$version + +if [ "$1" != configure ]; then + exit 0 +fi + +depmod $version + +if [ -f /lib/modules/$version/.fresh-install ]; then + change=install +else + change=upgrade +fi +linux-update-symlinks $change $version $image_path +rm -f /lib/modules/$version/.fresh-install + +if [ -d /etc/kernel/postinst.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/postinst.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-sparc64.postrm b/linux-image-4.15.0-2-sparc64.postrm new file mode 100644 index 00000000000..94b65e2f49e --- /dev/null +++ b/linux-image-4.15.0-2-sparc64.postrm @@ -0,0 +1,31 @@ +#!/bin/sh -e + +version=4.15.0-2-sparc64 +image_path=/boot/vmlinuz-$version + +rm -f /lib/modules/$version/.fresh-install + +if [ "$1" != upgrade ] && command -v linux-update-symlinks >/dev/null; then + linux-update-symlinks remove $version $image_path +fi + +if [ -d /etc/kernel/postrm.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/postrm.d +fi + +if [ "$1" = purge ]; then + for extra_file in modules.dep modules.isapnpmap modules.pcimap \ + modules.usbmap modules.parportmap \ + modules.generic_string modules.ieee1394map \ + modules.ieee1394map modules.pnpbiosmap \ + modules.alias modules.ccwmap modules.inputmap \ + modules.symbols modules.ofmap \ + modules.seriomap modules.\*.bin \ + modules.softdep modules.devname; do + eval rm -f /lib/modules/$version/$extra_file + done + rmdir /lib/modules/$version || true +fi + +exit 0 diff --git a/linux-image-4.15.0-2-sparc64.preinst b/linux-image-4.15.0-2-sparc64.preinst new file mode 100644 index 00000000000..3961127bd5e --- /dev/null +++ b/linux-image-4.15.0-2-sparc64.preinst @@ -0,0 +1,21 @@ +#!/bin/sh -e + +version=4.15.0-2-sparc64 +image_path=/boot/vmlinuz-$version + +if [ "$1" = abort-upgrade ]; then + exit 0 +fi + +if [ "$1" = install ]; then + # Create a flag file for postinst + mkdir -p /lib/modules/$version + touch /lib/modules/$version/.fresh-install +fi + +if [ -d /etc/kernel/preinst.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/preinst.d +fi + +exit 0 diff --git a/linux-image-4.15.0-2-sparc64.prerm b/linux-image-4.15.0-2-sparc64.prerm new file mode 100644 index 00000000000..ca0256adffd --- /dev/null +++ b/linux-image-4.15.0-2-sparc64.prerm @@ -0,0 +1,17 @@ +#!/bin/sh -e + +version=4.15.0-2-sparc64 +image_path=/boot/vmlinuz-$version + +if [ "$1" != remove ]; then + exit 0 +fi + +linux-check-removal $version + +if [ -d /etc/kernel/prerm.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/prerm.d +fi + +exit 0 diff --git a/linux-perf-4.15.lintian-overrides b/linux-perf-4.15.lintian-overrides new file mode 100644 index 00000000000..ebe2a80f0f3 --- /dev/null +++ b/linux-perf-4.15.lintian-overrides @@ -0,0 +1,3 @@ +# These executables are needed to handle processes running in compat mode +linux-perf-4.15: binary-from-other-architecture usr/lib/perf_4.15-core/perf-read-vdso32 +linux-perf-4.15: binary-from-other-architecture usr/lib/perf_4.15-core/perf-read-vdsox32 diff --git a/lockdep.dirs b/lockdep.dirs new file mode 100644 index 00000000000..e7724817552 --- /dev/null +++ b/lockdep.dirs @@ -0,0 +1 @@ +usr/bin diff --git a/patches/bugfix/all/cpupower-bump-soname-version.patch b/patches/bugfix/all/cpupower-bump-soname-version.patch new file mode 100644 index 00000000000..eebb23b4467 --- /dev/null +++ b/patches/bugfix/all/cpupower-bump-soname-version.patch @@ -0,0 +1,29 @@ +From: Ben Hutchings +Date: Thu, 9 Jun 2016 23:35:08 +0100 +Subject: cpupower: Bump soname version +Forwarded: http://mid.gmane.org/20160610005619.GQ7555@decadent.org.uk + +Several functions in the libcpupower API are renamed or removed in +Linux 4.7. This is an backward-incompatible ABI change, so the +library soname should change from libcpupower.so.0 to +libcpupower.so.1. + +Fixes: ac5a181d065d ("cpupower: Add cpuidle parts into library") +Signed-off-by: Ben Hutchings +--- + tools/power/cpupower/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/tools/power/cpupower/Makefile b/tools/power/cpupower/Makefile +index 8358863259c5..0b85f5915ce8 100644 +--- a/tools/power/cpupower/Makefile ++++ b/tools/power/cpupower/Makefile +@@ -64,7 +64,7 @@ DESTDIR ?= + + VERSION= $(shell ./utils/version-gen.sh) + LIB_MAJ= 0.0.1 +-LIB_MIN= 0 ++LIB_MIN= 1 + + PACKAGE = cpupower + PACKAGE_BUGREPORT = linux-pm@vger.kernel.org diff --git a/patches/bugfix/all/cpupower-fix-checks-for-cpu-existence.patch b/patches/bugfix/all/cpupower-fix-checks-for-cpu-existence.patch new file mode 100644 index 00000000000..5cce9b76a24 --- /dev/null +++ b/patches/bugfix/all/cpupower-fix-checks-for-cpu-existence.patch @@ -0,0 +1,49 @@ +From: Ben Hutchings +Date: Thu, 03 Nov 2016 15:25:26 -0600 +Subject: cpupower: Fix checks for CPU existence +Forwarded: https://marc.info/?l=linux-pm&m=149248268214265 + +Calls to cpufreq_cpu_exists(cpu) were converted to +cpupower_is_cpu_online(cpu) when libcpupower was introduced and the +former function was deleted. However, cpupower_is_cpu_online() does +not distinguish physically absent and offline CPUs, and does not set +errno. + +cpufreq-set has already been fixed (commit c25badc9ceb6). + +In cpufreq-bench, which prints an error message for offline CPUs, +properly distinguish and report the zero and negative cases. + +Fixes: ac5a181d065d ("cpupower: Add cpuidle parts into library") +Fixes: 53d1cd6b125f ("cpupowerutils: bench - Fix cpu online check") +Signed-off-by: Ben Hutchings +[carnil: Update/Refresh patch for 4.14.17: The issue with the +incorrect check has been fixed with upstream commit 53d1cd6b125f. +Keep in the patch the distinction and report for the zero and +negative cases.] +--- +--- a/tools/power/cpupower/bench/system.c ++++ b/tools/power/cpupower/bench/system.c +@@ -58,12 +58,19 @@ long long int get_time() + + int set_cpufreq_governor(char *governor, unsigned int cpu) + { ++ int rc; + + dprintf("set %s as cpufreq governor\n", governor); + +- if (cpupower_is_cpu_online(cpu) != 1) { +- perror("cpufreq_cpu_exists"); +- fprintf(stderr, "error: cpu %u does not exist\n", cpu); ++ rc = cpupower_is_cpu_online(cpu); ++ if (rc != 1) { ++ if (rc < 0) ++ fprintf(stderr, "cpupower_is_cpu_online: %s\n", ++ strerror(-rc)); ++ else ++ fprintf(stderr, ++ "error: cpu %u is offline or does not exist\n", ++ cpu); + return -1; + } + diff --git a/patches/bugfix/all/disable-some-marvell-phys.patch b/patches/bugfix/all/disable-some-marvell-phys.patch new file mode 100644 index 00000000000..8a42a6521ca --- /dev/null +++ b/patches/bugfix/all/disable-some-marvell-phys.patch @@ -0,0 +1,91 @@ +From: Ian Campbell +Subject: phy/marvell: disable 4-port phys +Date: Wed, 20 Nov 2013 08:30:14 +0000 +Bug-Debian: https://bugs.debian.org/723177 +Forwarded: http://thread.gmane.org/gmane.linux.debian.devel.bugs.general/1107774/ + +The Marvell PHY was originally disabled because it can cause networking +failures on some systems. According to Lennert Buytenhek this is because some +of the variants added did not share the same register layout. Since the known +cases are all 4-ports disable those variants (indicated by a 4 in the +penultimate position of the model name) until they can be audited for +correctness. + +[bwh: Also #if-out the init functions for these PHYs to avoid + compiler warnings] + +--- a/drivers/net/phy/marvell.c ++++ b/drivers/net/phy/marvell.c +@@ -956,6 +956,7 @@ static int m88e1118_config_init(struct p + return genphy_soft_reset(phydev); + } + ++#if 0 + static int m88e1149_config_init(struct phy_device *phydev) + { + int err; +@@ -981,7 +982,9 @@ static int m88e1149_config_init(struct p + + return genphy_soft_reset(phydev); + } ++#endif + ++#if 0 + static int m88e1145_config_init_rgmii(struct phy_device *phydev) + { + int temp; +@@ -1063,6 +1066,7 @@ static int m88e1145_config_init(struct p + + return 0; + } ++#endif + + /** + * fiber_lpa_to_ethtool_lpa_t +@@ -2059,6 +2063,7 @@ static struct phy_driver marvell_drivers + .get_strings = marvell_get_strings, + .get_stats = marvell_get_stats, + }, ++#if 0 + { + .phy_id = MARVELL_PHY_ID_88E1145, + .phy_id_mask = MARVELL_PHY_ID_MASK, +@@ -2077,6 +2082,8 @@ static struct phy_driver marvell_drivers + .get_strings = marvell_get_strings, + .get_stats = marvell_get_stats, + }, ++#endif ++#if 0 + { + .phy_id = MARVELL_PHY_ID_88E1149R, + .phy_id_mask = MARVELL_PHY_ID_MASK, +@@ -2095,6 +2102,8 @@ static struct phy_driver marvell_drivers + .get_strings = marvell_get_strings, + .get_stats = marvell_get_stats, + }, ++#endif ++#if 0 + { + .phy_id = MARVELL_PHY_ID_88E1240, + .phy_id_mask = MARVELL_PHY_ID_MASK, +@@ -2113,6 +2122,7 @@ static struct phy_driver marvell_drivers + .get_strings = marvell_get_strings, + .get_stats = marvell_get_stats, + }, ++#endif + { + .phy_id = MARVELL_PHY_ID_88E1116R, + .phy_id_mask = MARVELL_PHY_ID_MASK, +@@ -2240,9 +2250,9 @@ static struct mdio_device_id __maybe_unu + { MARVELL_PHY_ID_88E1111, MARVELL_PHY_ID_MASK }, + { MARVELL_PHY_ID_88E1118, MARVELL_PHY_ID_MASK }, + { MARVELL_PHY_ID_88E1121R, MARVELL_PHY_ID_MASK }, +- { MARVELL_PHY_ID_88E1145, MARVELL_PHY_ID_MASK }, +- { MARVELL_PHY_ID_88E1149R, MARVELL_PHY_ID_MASK }, +- { MARVELL_PHY_ID_88E1240, MARVELL_PHY_ID_MASK }, ++/* { MARVELL_PHY_ID_88E1145, MARVELL_PHY_ID_MASK }, */ ++/* { MARVELL_PHY_ID_88E1149R, MARVELL_PHY_ID_MASK }, */ ++/* { MARVELL_PHY_ID_88E1240, MARVELL_PHY_ID_MASK }, */ + { MARVELL_PHY_ID_88E1318S, MARVELL_PHY_ID_MASK }, + { MARVELL_PHY_ID_88E1116R, MARVELL_PHY_ID_MASK }, + { MARVELL_PHY_ID_88E1510, MARVELL_PHY_ID_MASK }, diff --git a/patches/bugfix/all/firmware-remove-redundant-log-messages-from-drivers.patch b/patches/bugfix/all/firmware-remove-redundant-log-messages-from-drivers.patch new file mode 100644 index 00000000000..300479d242c --- /dev/null +++ b/patches/bugfix/all/firmware-remove-redundant-log-messages-from-drivers.patch @@ -0,0 +1,2625 @@ +From: Ben Hutchings +Subject: firmware: Remove redundant log messages from drivers +Date: Sun, 09 Dec 2012 16:40:31 +0000 +Forwarded: no + +Now that firmware_class logs every success and failure consistently, +many other log messages can be removed from drivers. + +This will probably need to be split up into multiple patches prior to +upstream submission. + +--- a/arch/arm/mach-netx/xc.c ++++ b/arch/arm/mach-netx/xc.c +@@ -127,10 +127,8 @@ int xc_request_firmware(struct xc *x) + + ret = request_firmware(&fw, name, x->dev); + +- if (ret < 0) { +- dev_err(x->dev, "request_firmware failed\n"); ++ if (ret) + return ret; +- } + + head = (struct fw_header *)fw->data; + if (head->magic != 0x4e657458) { +--- a/arch/cris/arch-v32/drivers/iop_fw_load.c ++++ b/arch/cris/arch-v32/drivers/iop_fw_load.c +@@ -74,12 +74,7 @@ int iop_fw_load_spu(const unsigned char + fw_name, + &iop_spu_device[spu_inst]); + if (retval != 0) +- { +- printk(KERN_ERR +- "iop_load_spu: Failed to load firmware \"%s\"\n", +- fw_name); + return retval; +- } + data = (u32 *) fw_entry->data; + + /* acquire ownership of memory controller */ +@@ -137,12 +132,7 @@ int iop_fw_load_mpu(unsigned char *fw_na + /* get firmware */ + retval = request_firmware(&fw_entry, fw_name, &iop_mpu_device); + if (retval != 0) +- { +- printk(KERN_ERR +- "iop_load_spu: Failed to load firmware \"%s\"\n", +- fw_name); + return retval; +- } + data = (u32 *) fw_entry->data; + + /* disable MPU */ +--- a/arch/x86/kernel/cpu/microcode/amd.c ++++ b/arch/x86/kernel/cpu/microcode/amd.c +@@ -739,10 +739,8 @@ static enum ucode_state request_microcod + if (c->x86 >= 0x15) + snprintf(fw_name, sizeof(fw_name), "amd-ucode/microcode_amd_fam%.2xh.bin", c->x86); + +- if (request_firmware_direct(&fw, (const char *)fw_name, device)) { +- pr_debug("failed to load file %s\n", fw_name); ++ if (request_firmware_direct(&fw, (const char *)fw_name, device)) + goto out; +- } + + ret = UCODE_ERROR; + if (*(u32 *)fw->data != UCODE_MAGIC) { +--- a/drivers/atm/ambassador.c ++++ b/drivers/atm/ambassador.c +@@ -1929,10 +1929,8 @@ static int ucode_init(loader_block *lb, + int res; + + res = request_ihex_firmware(&fw, "atmsar11.fw", &dev->pci_dev->dev); +- if (res) { +- PRINTK (KERN_ERR, "Cannot load microcode data"); ++ if (res) + return res; +- } + + /* First record contains just the start address */ + rec = (const struct ihex_binrec *)fw->data; +--- a/drivers/atm/fore200e.c ++++ b/drivers/atm/fore200e.c +@@ -2504,10 +2504,9 @@ static int fore200e_load_and_start_fw(st + return err; + + sprintf(buf, "%s%s", fore200e->bus->proc_name, FW_EXT); +- if ((err = request_firmware(&firmware, buf, device)) < 0) { +- printk(FORE200E "problem loading firmware image %s\n", fore200e->bus->model_name); ++ err = request_firmware(&firmware, buf, device); ++ if (err) + return err; +- } + + fw_data = (const __le32 *)firmware->data; + fw_size = firmware->size / sizeof(u32); +--- a/drivers/bluetooth/ath3k.c ++++ b/drivers/bluetooth/ath3k.c +@@ -425,10 +425,8 @@ static int ath3k_load_patch(struct usb_d + le32_to_cpu(fw_version.rom_version)); + + ret = request_firmware(&firmware, filename, &udev->dev); +- if (ret < 0) { +- BT_ERR("Patch file not found %s", filename); ++ if (ret) + return ret; +- } + + pt_rom_version = get_unaligned_le32(firmware->data + + firmware->size - 8); +@@ -488,10 +486,8 @@ static int ath3k_load_syscfg(struct usb_ + le32_to_cpu(fw_version.rom_version), clk_value, ".dfu"); + + ret = request_firmware(&firmware, filename, &udev->dev); +- if (ret < 0) { +- BT_ERR("Configuration file not found %s", filename); ++ if (ret) + return ret; +- } + + ret = ath3k_load_fwfile(udev, firmware); + release_firmware(firmware); +--- a/drivers/bluetooth/bcm203x.c ++++ b/drivers/bluetooth/bcm203x.c +@@ -189,7 +189,6 @@ static int bcm203x_probe(struct usb_inte + return -ENOMEM; + + if (request_firmware(&firmware, "BCM2033-MD.hex", &udev->dev) < 0) { +- BT_ERR("Mini driver request failed"); + usb_free_urb(data->urb); + return -EIO; + } +@@ -214,7 +213,6 @@ static int bcm203x_probe(struct usb_inte + release_firmware(firmware); + + if (request_firmware(&firmware, "BCM2033-FW.bin", &udev->dev) < 0) { +- BT_ERR("Firmware request failed"); + usb_free_urb(data->urb); + kfree(data->buffer); + return -EIO; +--- a/drivers/bluetooth/bfusb.c ++++ b/drivers/bluetooth/bfusb.c +@@ -652,10 +652,8 @@ static int bfusb_probe(struct usb_interf + skb_queue_head_init(&data->pending_q); + skb_queue_head_init(&data->completed_q); + +- if (request_firmware(&firmware, "bfubase.frm", &udev->dev) < 0) { +- BT_ERR("Firmware request failed"); ++ if (request_firmware(&firmware, "bfubase.frm", &udev->dev)) + goto done; +- } + + BT_DBG("firmware data %p size %zu", firmware->data, firmware->size); + +--- a/drivers/bluetooth/bt3c_cs.c ++++ b/drivers/bluetooth/bt3c_cs.c +@@ -566,10 +566,8 @@ static int bt3c_open(struct bt3c_info *i + + /* Load firmware */ + err = request_firmware(&firmware, "BT3CPCC.bin", &info->p_dev->dev); +- if (err < 0) { +- BT_ERR("Firmware request failed"); ++ if (err) + goto error; +- } + + err = bt3c_load_firmware(info, firmware->data, firmware->size); + +--- a/drivers/bluetooth/btmrvl_sdio.c ++++ b/drivers/bluetooth/btmrvl_sdio.c +@@ -455,8 +455,6 @@ static int btmrvl_sdio_download_helper(s + ret = request_firmware(&fw_helper, card->helper, + &card->func->dev); + if ((ret < 0) || !fw_helper) { +- BT_ERR("request_firmware(helper) failed, error code = %d", +- ret); + ret = -ENOENT; + goto done; + } +@@ -555,8 +553,6 @@ static int btmrvl_sdio_download_fw_w_hel + ret = request_firmware(&fw_firmware, card->firmware, + &card->func->dev); + if ((ret < 0) || !fw_firmware) { +- BT_ERR("request_firmware(firmware) failed, error code = %d", +- ret); + ret = -ENOENT; + goto done; + } +--- a/drivers/char/dsp56k.c ++++ b/drivers/char/dsp56k.c +@@ -140,11 +140,8 @@ static int dsp56k_upload(u_char __user * + } + err = request_firmware(&fw, fw_name, &pdev->dev); + platform_device_unregister(pdev); +- if (err) { +- printk(KERN_ERR "Failed to load image \"%s\" err %d\n", +- fw_name, err); ++ if (err) + return err; +- } + if (fw->size % 3) { + printk(KERN_ERR "Bogus length %d in image \"%s\"\n", + fw->size, fw_name); +--- a/drivers/dma/imx-sdma.c ++++ b/drivers/dma/imx-sdma.c +@@ -1461,11 +1461,8 @@ static void sdma_load_firmware(const str + const struct sdma_script_start_addrs *addr; + unsigned short *ram_code; + +- if (!fw) { +- dev_info(sdma->dev, "external firmware not found, using ROM firmware\n"); +- /* In this case we just use the ROM firmware. */ ++ if (!fw) + return; +- } + + if (fw->size < sizeof(*header)) + goto err_firmware; +--- a/drivers/gpu/drm/mga/mga_warp.c ++++ b/drivers/gpu/drm/mga/mga_warp.c +@@ -79,11 +79,8 @@ int mga_warp_install_microcode(drm_mga_p + } + rc = request_ihex_firmware(&fw, firmware_name, &pdev->dev); + platform_device_unregister(pdev); +- if (rc) { +- DRM_ERROR("mga: Failed to load microcode \"%s\"\n", +- firmware_name); ++ if (rc) + return rc; +- } + + size = 0; + where = 0; +--- a/drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.c ++++ b/drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.c +@@ -1839,10 +1839,8 @@ gf100_gr_ctor_fw_legacy(struct gf100_gr + if (ret) { + snprintf(f, sizeof(f), "nouveau/%s", fwname); + ret = request_firmware(&fw, f, device->dev); +- if (ret) { +- nvkm_error(subdev, "failed to load %s\n", fwname); ++ if (ret) + return ret; +- } + } + + fuc->size = fw->size; +--- a/drivers/gpu/drm/r128/r128_cce.c ++++ b/drivers/gpu/drm/r128/r128_cce.c +@@ -154,11 +154,8 @@ static int r128_cce_load_microcode(drm_r + } + rc = request_firmware(&fw, FIRMWARE_NAME, &pdev->dev); + platform_device_unregister(pdev); +- if (rc) { +- pr_err("r128_cce: Failed to load firmware \"%s\"\n", +- FIRMWARE_NAME); ++ if (rc) + return rc; +- } + + if (fw->size != 256 * 8) { + pr_err("r128_cce: Bogus length %zu in firmware \"%s\"\n", +--- a/drivers/gpu/drm/radeon/ni.c ++++ b/drivers/gpu/drm/radeon/ni.c +@@ -830,9 +830,6 @@ int ni_init_microcode(struct radeon_devi + + out: + if (err) { +- if (err != -EINVAL) +- pr_err("ni_cp: Failed to load firmware \"%s\"\n", +- fw_name); + release_firmware(rdev->pfp_fw); + rdev->pfp_fw = NULL; + release_firmware(rdev->me_fw); +--- a/drivers/gpu/drm/radeon/r100.c ++++ b/drivers/gpu/drm/radeon/r100.c +@@ -1041,9 +1041,7 @@ static int r100_cp_init_microcode(struct + } + + err = request_firmware(&rdev->me_fw, fw_name, rdev->dev); +- if (err) { +- pr_err("radeon_cp: Failed to load firmware \"%s\"\n", fw_name); +- } else if (rdev->me_fw->size % 8) { ++ if (err == 0 && rdev->me_fw->size % 8) { + pr_err("radeon_cp: Bogus length %zu in firmware \"%s\"\n", + rdev->me_fw->size, fw_name); + err = -EINVAL; +--- a/drivers/gpu/drm/radeon/r600.c ++++ b/drivers/gpu/drm/radeon/r600.c +@@ -2593,9 +2593,6 @@ int r600_init_microcode(struct radeon_de + + out: + if (err) { +- if (err != -EINVAL) +- pr_err("r600_cp: Failed to load firmware \"%s\"\n", +- fw_name); + release_firmware(rdev->pfp_fw); + rdev->pfp_fw = NULL; + release_firmware(rdev->me_fw); +--- a/drivers/infiniband/hw/qib/qib_sd7220.c ++++ b/drivers/infiniband/hw/qib/qib_sd7220.c +@@ -406,10 +406,8 @@ int qib_sd7220_init(struct qib_devdata * + } + + ret = request_firmware(&fw, SD7220_FW_NAME, &dd->pcidev->dev); +- if (ret) { +- qib_dev_err(dd, "Failed to load IB SERDES image\n"); ++ if (ret) + goto done; +- } + + /* Substitute our deduced value for was_reset */ + ret = qib_ibsd_ucode_loaded(dd->pport, fw); +--- a/drivers/input/touchscreen/atmel_mxt_ts.c ++++ b/drivers/input/touchscreen/atmel_mxt_ts.c +@@ -2717,10 +2717,8 @@ static int mxt_load_fw(struct device *de + int ret; + + ret = request_firmware(&fw, fn, dev); +- if (ret) { +- dev_err(dev, "Unable to open firmware %s\n", fn); ++ if (ret) + return ret; +- } + + /* Check for incorrect enc file */ + ret = mxt_check_firmware_format(dev, fw); +--- a/drivers/isdn/hardware/mISDN/speedfax.c ++++ b/drivers/isdn/hardware/mISDN/speedfax.c +@@ -392,11 +392,8 @@ setup_instance(struct sfax_hw *card) + card->isar.owner = THIS_MODULE; + + err = request_firmware(&firmware, "isdn/ISAR.BIN", &card->pdev->dev); +- if (err < 0) { +- pr_info("%s: firmware request failed %d\n", +- card->name, err); ++ if (err) + goto error_fw; +- } + if (debug & DEBUG_HW) + pr_notice("%s: got firmware %zu bytes\n", + card->name, firmware->size); +--- a/drivers/media/tuners/tuner-xc2028.c ++++ b/drivers/media/tuners/tuner-xc2028.c +@@ -1370,7 +1370,6 @@ static void load_firmware_cb(const struc + + tuner_dbg("request_firmware_nowait(): %s\n", fw ? "OK" : "error"); + if (!fw) { +- tuner_err("Could not load firmware %s.\n", priv->fname); + priv->state = XC2028_NODEV; + return; + } +--- a/drivers/media/usb/dvb-usb/dib0700_devices.c ++++ b/drivers/media/usb/dvb-usb/dib0700_devices.c +@@ -2411,12 +2411,9 @@ static int stk9090m_frontend_attach(stru + + dib9000_i2c_enumeration(&adap->dev->i2c_adap, 1, 0x10, 0x80); + +- if (request_firmware(&state->frontend_firmware, "dib9090.fw", &adap->dev->udev->dev)) { +- deb_info("%s: Upload failed. (file not found?)\n", __func__); ++ if (request_firmware(&state->frontend_firmware, "dib9090.fw", &adap->dev->udev->dev)) + return -ENODEV; +- } else { +- deb_info("%s: firmware read %zu bytes.\n", __func__, state->frontend_firmware->size); +- } ++ deb_info("%s: firmware read %zu bytes.\n", __func__, state->frontend_firmware->size); + stk9090m_config.microcode_B_fe_size = state->frontend_firmware->size; + stk9090m_config.microcode_B_fe_buffer = state->frontend_firmware->data; + +@@ -2477,12 +2474,9 @@ static int nim9090md_frontend_attach(str + msleep(20); + dib0700_set_gpio(adap->dev, GPIO0, GPIO_OUT, 1); + +- if (request_firmware(&state->frontend_firmware, "dib9090.fw", &adap->dev->udev->dev)) { +- deb_info("%s: Upload failed. (file not found?)\n", __func__); ++ if (request_firmware(&state->frontend_firmware, "dib9090.fw", &adap->dev->udev->dev)) + return -EIO; +- } else { +- deb_info("%s: firmware read %zu bytes.\n", __func__, state->frontend_firmware->size); +- } ++ deb_info("%s: firmware read %zu bytes.\n", __func__, state->frontend_firmware->size); + nim9090md_config[0].microcode_B_fe_size = state->frontend_firmware->size; + nim9090md_config[0].microcode_B_fe_buffer = state->frontend_firmware->data; + nim9090md_config[1].microcode_B_fe_size = state->frontend_firmware->size; +--- a/drivers/media/usb/dvb-usb/dvb-usb-firmware.c ++++ b/drivers/media/usb/dvb-usb/dvb-usb-firmware.c +@@ -89,13 +89,9 @@ int dvb_usb_download_firmware(struct usb + int ret; + const struct firmware *fw = NULL; + +- if ((ret = request_firmware(&fw, props->firmware, &udev->dev)) != 0) { +- err("did not find the firmware file. (%s) Please see linux/Documentation/dvb/ for more details on firmware-problems. (%d)", +- props->firmware,ret); ++ ret = request_firmware(&fw, props->firmware, &udev->dev); ++ if (ret) + return ret; +- } +- +- info("downloading firmware from file '%s'",props->firmware); + + switch (props->usb_ctrl) { + case CYPRESS_AN2135: +--- a/drivers/media/usb/dvb-usb/gp8psk.c ++++ b/drivers/media/usb/dvb-usb/gp8psk.c +@@ -134,19 +134,14 @@ static int gp8psk_load_bcm4500fw(struct + const u8 *ptr; + u8 *buf; + if ((ret = request_firmware(&fw, bcm4500_firmware, +- &d->udev->dev)) != 0) { +- err("did not find the bcm4500 firmware file. (%s) Please see linux/Documentation/dvb/ for more details on firmware-problems. (%d)", +- bcm4500_firmware,ret); ++ &d->udev->dev)) != 0) + return ret; +- } + + ret = -EINVAL; + + if (gp8psk_usb_out_op(d, LOAD_BCM4500,1,0,NULL, 0)) + goto out_rel_fw; + +- info("downloading bcm4500 firmware from file '%s'",bcm4500_firmware); +- + ptr = fw->data; + buf = kmalloc(64, GFP_KERNEL | GFP_DMA); + if (!buf) { +--- a/drivers/media/usb/dvb-usb/opera1.c ++++ b/drivers/media/usb/dvb-usb/opera1.c +@@ -453,8 +453,6 @@ static int opera1_xilinx_load_firmware(s + info("start downloading fpga firmware %s",filename); + + if ((ret = request_firmware(&fw, filename, &dev->dev)) != 0) { +- err("did not find the firmware file. (%s) Please see linux/Documentation/dvb/ for more details on firmware-problems.", +- filename); + return ret; + } else { + p = kmalloc(fw->size, GFP_KERNEL); +--- a/drivers/media/dvb-frontends/af9013.c ++++ b/drivers/media/dvb-frontends/af9013.c +@@ -1140,14 +1140,8 @@ static int af9013_download_firmware(stru + + /* Request the firmware, will block and timeout */ + ret = request_firmware(&firmware, name, &client->dev); +- if (ret) { +- dev_info(&client->dev, "firmware file '%s' not found %d\n", +- name, ret); ++ if (ret) + goto err; +- } +- +- dev_info(&client->dev, "downloading firmware from file '%s'\n", +- name); + + /* Write firmware checksum & size */ + for (i = 0; i < firmware->size; i++) +--- a/drivers/media/dvb-frontends/bcm3510.c ++++ b/drivers/media/dvb-frontends/bcm3510.c +@@ -636,10 +636,9 @@ static int bcm3510_download_firmware(str + int ret,i; + + deb_info("requesting firmware\n"); +- if ((ret = st->config->request_firmware(fe, &fw, BCM3510_DEFAULT_FIRMWARE)) < 0) { +- err("could not load firmware (%s): %d",BCM3510_DEFAULT_FIRMWARE,ret); ++ ret = st->config->request_firmware(fe, &fw, BCM3510_DEFAULT_FIRMWARE); ++ if (ret) + return ret; +- } + deb_info("got firmware: %zu\n", fw->size); + + b = fw->data; +--- a/drivers/media/dvb-frontends/cx24116.c ++++ b/drivers/media/dvb-frontends/cx24116.c +@@ -491,13 +491,8 @@ static int cx24116_firmware_ondemand(str + __func__, CX24116_DEFAULT_FIRMWARE); + ret = request_firmware(&fw, CX24116_DEFAULT_FIRMWARE, + state->i2c->dev.parent); +- printk(KERN_INFO "%s: Waiting for firmware upload(2)...\n", +- __func__); +- if (ret) { +- printk(KERN_ERR "%s: No firmware uploaded (timeout or file not found?)\n", +- __func__); ++ if (ret) + return ret; +- } + + /* Make sure we don't recurse back through here + * during loading */ +--- a/drivers/media/dvb-frontends/drxd_hard.c ++++ b/drivers/media/dvb-frontends/drxd_hard.c +@@ -903,10 +903,8 @@ static int load_firmware(struct drxd_sta + { + const struct firmware *fw; + +- if (request_firmware(&fw, fw_name, state->dev) < 0) { +- printk(KERN_ERR "drxd: firmware load failure [%s]\n", fw_name); ++ if (request_firmware(&fw, fw_name, state->dev)) + return -EIO; +- } + + state->microcode = kmemdup(fw->data, fw->size, GFP_KERNEL); + if (!state->microcode) { +--- a/drivers/media/dvb-frontends/drxk_hard.c ++++ b/drivers/media/dvb-frontends/drxk_hard.c +@@ -6287,10 +6287,6 @@ static void load_firmware_cb(const struc + + dprintk(1, ": %s\n", fw ? "firmware loaded" : "firmware not loaded"); + if (!fw) { +- pr_err("Could not load firmware file %s.\n", +- state->microcode_name); +- pr_info("Copy %s to your hotplug directory!\n", +- state->microcode_name); + state->microcode_name = NULL; + + /* +--- a/drivers/media/dvb-frontends/ds3000.c ++++ b/drivers/media/dvb-frontends/ds3000.c +@@ -360,12 +360,8 @@ static int ds3000_firmware_ondemand(stru + DS3000_DEFAULT_FIRMWARE); + ret = request_firmware(&fw, DS3000_DEFAULT_FIRMWARE, + state->i2c->dev.parent); +- printk(KERN_INFO "%s: Waiting for firmware upload(2)...\n", __func__); +- if (ret) { +- printk(KERN_ERR "%s: No firmware uploaded (timeout or file not found?)\n", +- __func__); ++ if (ret) + return ret; +- } + + ret = ds3000_load_firmware(fe, fw); + if (ret) +--- a/drivers/media/dvb-frontends/nxt200x.c ++++ b/drivers/media/dvb-frontends/nxt200x.c +@@ -886,12 +886,8 @@ static int nxt2002_init(struct dvb_front + __func__, NXT2002_DEFAULT_FIRMWARE); + ret = request_firmware(&fw, NXT2002_DEFAULT_FIRMWARE, + state->i2c->dev.parent); +- pr_debug("%s: Waiting for firmware upload(2)...\n", __func__); +- if (ret) { +- pr_err("%s: No firmware uploaded (timeout or file not found?)\n", +- __func__); ++ if (ret) + return ret; +- } + + ret = nxt2002_load_firmware(fe, fw); + release_firmware(fw); +@@ -953,12 +949,8 @@ static int nxt2004_init(struct dvb_front + __func__, NXT2004_DEFAULT_FIRMWARE); + ret = request_firmware(&fw, NXT2004_DEFAULT_FIRMWARE, + state->i2c->dev.parent); +- pr_debug("%s: Waiting for firmware upload(2)...\n", __func__); +- if (ret) { +- pr_err("%s: No firmware uploaded (timeout or file not found?)\n", +- __func__); ++ if (ret) + return ret; +- } + + ret = nxt2004_load_firmware(fe, fw); + release_firmware(fw); +--- a/drivers/media/dvb-frontends/or51132.c ++++ b/drivers/media/dvb-frontends/or51132.c +@@ -337,10 +337,8 @@ static int or51132_set_parameters(struct + printk("or51132: Waiting for firmware upload(%s)...\n", + fwname); + ret = request_firmware(&fw, fwname, state->i2c->dev.parent); +- if (ret) { +- printk(KERN_WARNING "or51132: No firmware uploaded(timeout or file not found?)\n"); ++ if (ret) + return ret; +- } + ret = or51132_load_firmware(fe, fw); + release_firmware(fw); + if (ret) { +--- a/drivers/media/dvb-frontends/or51211.c ++++ b/drivers/media/dvb-frontends/or51211.c +@@ -371,11 +371,8 @@ static int or51211_init(struct dvb_front + OR51211_DEFAULT_FIRMWARE); + ret = config->request_firmware(fe, &fw, + OR51211_DEFAULT_FIRMWARE); +- pr_info("Got Hotplug firmware\n"); +- if (ret) { +- pr_warn("No firmware uploaded (timeout or file not found?)\n"); ++ if (ret) + return ret; +- } + + ret = or51211_load_firmware(fe, fw); + release_firmware(fw); +--- a/drivers/media/dvb-frontends/sp8870.c ++++ b/drivers/media/dvb-frontends/sp8870.c +@@ -315,10 +315,8 @@ static int sp8870_init (struct dvb_front + + /* request the firmware, this will block until someone uploads it */ + printk("sp8870: waiting for firmware upload (%s)...\n", SP8870_DEFAULT_FIRMWARE); +- if (state->config->request_firmware(fe, &fw, SP8870_DEFAULT_FIRMWARE)) { +- printk("sp8870: no firmware upload (timeout or file not found?)\n"); ++ if (state->config->request_firmware(fe, &fw, SP8870_DEFAULT_FIRMWARE)) + return -EIO; +- } + + if (sp8870_firmware_upload(state, fw)) { + printk("sp8870: writing firmware to device failed\n"); +--- a/drivers/media/dvb-frontends/sp887x.c ++++ b/drivers/media/dvb-frontends/sp887x.c +@@ -526,10 +526,8 @@ static int sp887x_init(struct dvb_fronte + /* request the firmware, this will block until someone uploads it */ + printk("sp887x: waiting for firmware upload (%s)...\n", SP887X_DEFAULT_FIRMWARE); + ret = state->config->request_firmware(fe, &fw, SP887X_DEFAULT_FIRMWARE); +- if (ret) { +- printk("sp887x: no firmware upload (timeout or file not found?)\n"); ++ if (ret) + return ret; +- } + + ret = sp887x_initial_setup(fe, fw); + release_firmware(fw); +--- a/drivers/media/dvb-frontends/tda10048.c ++++ b/drivers/media/dvb-frontends/tda10048.c +@@ -495,8 +495,6 @@ static int tda10048_firmware_upload(stru + ret = request_firmware(&fw, TDA10048_DEFAULT_FIRMWARE, + state->i2c->dev.parent); + if (ret) { +- printk(KERN_ERR "%s: Upload failed. (file not found?)\n", +- __func__); + return -EIO; + } else { + printk(KERN_INFO "%s: firmware read %zu bytes.\n", +--- a/drivers/media/dvb-frontends/tda1004x.c ++++ b/drivers/media/dvb-frontends/tda1004x.c +@@ -401,10 +401,8 @@ static int tda10045_fwupload(struct dvb_ + /* request the firmware, this will block until someone uploads it */ + printk(KERN_INFO "tda1004x: waiting for firmware upload (%s)...\n", TDA10045_DEFAULT_FIRMWARE); + ret = state->config->request_firmware(fe, &fw, TDA10045_DEFAULT_FIRMWARE); +- if (ret) { +- printk(KERN_ERR "tda1004x: no firmware upload (timeout or file not found?)\n"); ++ if (ret) + return ret; +- } + + /* reset chip */ + tda1004x_write_mask(state, TDA1004X_CONFC4, 0x10, 0); +@@ -545,7 +543,6 @@ static int tda10046_fwupload(struct dvb_ + /* remain compatible to old bug: try to load with tda10045 image name */ + ret = state->config->request_firmware(fe, &fw, TDA10045_DEFAULT_FIRMWARE); + if (ret) { +- printk(KERN_ERR "tda1004x: no firmware upload (timeout or file not found?)\n"); + return ret; + } else { + printk(KERN_INFO "tda1004x: please rename the firmware file to %s\n", +--- a/drivers/media/dvb-frontends/tda10071.c ++++ b/drivers/media/dvb-frontends/tda10071.c +@@ -850,12 +850,8 @@ static int tda10071_init(struct dvb_fron + + /* request the firmware, this will block and timeout */ + ret = request_firmware(&fw, fw_file, &client->dev); +- if (ret) { +- dev_err(&client->dev, +- "did not find the firmware file. (%s) Please see linux/Documentation/dvb/ for more details on firmware-problems. (%d)\n", +- fw_file, ret); ++ if (ret) + goto error; +- } + + /* init */ + for (i = 0; i < ARRAY_SIZE(tab2); i++) { +--- a/drivers/media/pci/ngene/ngene-core.c ++++ b/drivers/media/pci/ngene/ngene-core.c +@@ -1252,13 +1252,8 @@ static int ngene_load_firm(struct ngene + break; + } + +- if (request_firmware(&fw, fw_name, &dev->pci_dev->dev) < 0) { +- printk(KERN_ERR DEVICE_NAME +- ": Could not load firmware file %s.\n", fw_name); +- printk(KERN_INFO DEVICE_NAME +- ": Copy %s to your hotplug directory!\n", fw_name); ++ if (request_firmware(&fw, fw_name, &dev->pci_dev->dev)) + return -1; +- } + if (size == 0) + size = fw->size; + if (size != fw->size) { +@@ -1266,8 +1261,6 @@ static int ngene_load_firm(struct ngene + ": Firmware %s has invalid size!", fw_name); + err = -1; + } else { +- printk(KERN_INFO DEVICE_NAME +- ": Loading firmware file %s.\n", fw_name); + ngene_fw = (u8 *) fw->data; + err = ngene_command_load_firmware(dev, ngene_fw, size); + } +--- a/drivers/media/common/siano/smscoreapi.c ++++ b/drivers/media/common/siano/smscoreapi.c +@@ -1156,10 +1156,8 @@ static int smscore_load_firmware_from_fi + return -EINVAL; + + rc = request_firmware(&fw, fw_filename, coredev->device); +- if (rc < 0) { +- pr_err("failed to open firmware file '%s'\n", fw_filename); ++ if (rc < 0) + return rc; +- } + pr_debug("read fw %s, buffer size=0x%zx\n", fw_filename, fw->size); + fw_buf = kmalloc(ALIGN(fw->size + sizeof(struct sms_firmware), + SMS_ALLOC_ALIGNMENT), GFP_KERNEL | GFP_DMA); +--- a/drivers/media/pci/ttpci/av7110.c ++++ b/drivers/media/pci/ttpci/av7110.c +@@ -1515,13 +1515,8 @@ static int get_firmware(struct av7110* a + /* request the av7110 firmware, this will block until someone uploads it */ + ret = request_firmware(&fw, "dvb-ttpci-01.fw", &av7110->dev->pci->dev); + if (ret) { +- if (ret == -ENOENT) { +- printk(KERN_ERR "dvb-ttpci: could not load firmware, file not found: dvb-ttpci-01.fw\n"); +- printk(KERN_ERR "dvb-ttpci: usually this should be in /usr/lib/hotplug/firmware or /lib/firmware\n"); +- printk(KERN_ERR "dvb-ttpci: and can be downloaded from https://linuxtv.org/download/dvb/firmware/\n"); +- } else +- printk(KERN_ERR "dvb-ttpci: cannot request firmware (error %i)\n", +- ret); ++ if (ret == -ENOENT) ++ printk(KERN_ERR "dvb-ttpci: firmware can be downloaded from https://linuxtv.org/download/dvb/firmware/\n"); + return -EINVAL; + } + +--- a/drivers/media/pci/ttpci/av7110_hw.c ++++ b/drivers/media/pci/ttpci/av7110_hw.c +@@ -247,11 +247,8 @@ int av7110_bootarm(struct av7110 *av7110 + //saa7146_setgpio(dev, 3, SAA7146_GPIO_INPUT); + + ret = request_firmware(&fw, fw_name, &dev->pci->dev); +- if (ret) { +- printk(KERN_ERR "dvb-ttpci: Failed to load firmware \"%s\"\n", +- fw_name); ++ if (ret) + return ret; +- } + + mwdebi(av7110, DEBISWAB, DPRAM_BASE, fw->data, fw->size); + release_firmware(fw); +--- a/drivers/media/usb/ttusb-budget/dvb-ttusb-budget.c ++++ b/drivers/media/usb/ttusb-budget/dvb-ttusb-budget.c +@@ -296,10 +296,8 @@ static int ttusb_boot_dsp(struct ttusb * + + err = request_firmware(&fw, "ttusb-budget/dspbootcode.bin", + &ttusb->dev->dev); +- if (err) { +- printk(KERN_ERR "ttusb-budget: failed to request firmware\n"); ++ if (err) + return err; +- } + + /* BootBlock */ + b[0] = 0xaa; +--- a/drivers/media/usb/ttusb-dec/ttusb_dec.c ++++ b/drivers/media/usb/ttusb-dec/ttusb_dec.c +@@ -1344,11 +1344,8 @@ static int ttusb_dec_boot_dsp(struct ttu + dprintk("%s\n", __func__); + + result = request_firmware(&fw_entry, dec->firmware_name, &dec->udev->dev); +- if (result) { +- printk(KERN_ERR "%s: Firmware (%s) unavailable.\n", +- __func__, dec->firmware_name); ++ if (result) + return result; +- } + + firmware = fw_entry->data; + firmware_size = fw_entry->size; +--- a/drivers/media/radio/radio-wl1273.c ++++ b/drivers/media/radio/radio-wl1273.c +@@ -510,11 +510,8 @@ static int wl1273_fm_upload_firmware_pat + * Uploading the firmware patch is not always necessary, + * so we only print an info message. + */ +- if (request_firmware(&fw_p, fw_name, dev)) { +- dev_info(dev, "%s - %s not found\n", __func__, fw_name); +- ++ if (request_firmware(&fw_p, fw_name, dev)) + return 0; +- } + + ptr = (__u8 *) fw_p->data; + packet_num = ptr[0]; +--- a/drivers/media/radio/wl128x/fmdrv_common.c ++++ b/drivers/media/radio/wl128x/fmdrv_common.c +@@ -1242,10 +1242,8 @@ static int fm_download_firmware(struct f + + ret = request_firmware(&fw_entry, fw_name, + &fmdev->radio_dev->dev); +- if (ret < 0) { +- fmerr("Unable to read firmware(%s) content\n", fw_name); ++ if (ret) + return ret; +- } + fmdbg("Firmware(%s) length : %zu bytes\n", fw_name, fw_entry->size); + + fw_data = (void *)fw_entry->data; +--- a/drivers/media/pci/bt8xx/bttv-cards.c ++++ b/drivers/media/pci/bt8xx/bttv-cards.c +@@ -3909,10 +3909,8 @@ static int pvr_boot(struct bttv *btv) + int rc; + + rc = request_firmware(&fw_entry, "hcwamc.rbf", &btv->c.pci->dev); +- if (rc != 0) { +- pr_warn("%d: no altera firmware [via hotplug]\n", btv->c.nr); ++ if (rc != 0) + return rc; +- } + rc = pvr_altera_load(btv, fw_entry->data, fw_entry->size); + pr_info("%d: altera firmware upload %s\n", + btv->c.nr, (rc < 0) ? "failed" : "ok"); +--- a/drivers/media/usb/cpia2/cpia2_core.c ++++ b/drivers/media/usb/cpia2/cpia2_core.c +@@ -921,11 +921,8 @@ static int apply_vp_patch(struct camera_ + struct cpia2_command cmd; + + ret = request_firmware(&fw, fw_name, &cam->dev->dev); +- if (ret) { +- printk(KERN_ERR "cpia2: failed to load VP patch \"%s\"\n", +- fw_name); ++ if (ret) + return ret; +- } + + cmd.req_mode = CAMERAACCESS_TYPE_REPEAT | CAMERAACCESS_VP; + cmd.direction = TRANSFER_WRITE; +--- a/drivers/media/pci/cx18/cx18-av-firmware.c ++++ b/drivers/media/pci/cx18/cx18-av-firmware.c +@@ -79,10 +79,8 @@ int cx18_av_loadfw(struct cx18 *cx) + int i; + int retries1 = 0; + +- if (request_firmware(&fw, FWFILE, &cx->pci_dev->dev) != 0) { +- CX18_ERR_DEV(sd, "unable to open firmware %s\n", FWFILE); ++ if (request_firmware(&fw, FWFILE, &cx->pci_dev->dev) != 0) + return -EINVAL; +- } + + /* The firmware load often has byte errors, so allow for several + retries, both at byte level and at the firmware load level. */ +--- a/drivers/media/pci/cx18/cx18-dvb.c ++++ b/drivers/media/pci/cx18/cx18-dvb.c +@@ -137,9 +137,7 @@ static int yuan_mpc718_mt352_reqfw(struc + int ret; + + ret = request_firmware(fw, fn, &cx->pci_dev->dev); +- if (ret) +- CX18_ERR("Unable to open firmware file %s\n", fn); +- else { ++ if (!ret) { + size_t sz = (*fw)->size; + if (sz < 2 || sz > 64 || (sz % 2) != 0) { + CX18_ERR("Firmware %s has a bad size: %lu bytes\n", +--- a/drivers/media/pci/cx18/cx18-firmware.c ++++ b/drivers/media/pci/cx18/cx18-firmware.c +@@ -101,11 +101,8 @@ static int load_cpu_fw_direct(const char + u32 __iomem *dst = (u32 __iomem *)mem; + const u32 *src; + +- if (request_firmware(&fw, fn, &cx->pci_dev->dev)) { +- CX18_ERR("Unable to open firmware %s\n", fn); +- CX18_ERR("Did you put the firmware in the hotplug firmware directory?\n"); ++ if (request_firmware(&fw, fn, &cx->pci_dev->dev)) + return -ENOMEM; +- } + + src = (const u32 *)fw->data; + +@@ -146,8 +143,6 @@ static int load_apu_fw_direct(const char + int sz; + + if (request_firmware(&fw, fn, &cx->pci_dev->dev)) { +- CX18_ERR("unable to open firmware %s\n", fn); +- CX18_ERR("did you put the firmware in the hotplug firmware directory?\n"); + cx18_setup_page(cx, 0); + return -ENOMEM; + } +--- a/drivers/media/usb/cx231xx/cx231xx-417.c ++++ b/drivers/media/usb/cx231xx/cx231xx-417.c +@@ -995,11 +995,6 @@ static int cx231xx_load_firmware(struct + dev->dev); + + if (retval != 0) { +- dev_err(dev->dev, +- "ERROR: Hotplug firmware request failed (%s).\n", +- CX231xx_FIRM_IMAGE_NAME); +- dev_err(dev->dev, +- "Please fix your hotplug setup, the board will not work without firmware loaded!\n"); + vfree(p_current_fw); + vfree(p_buffer); + return retval; +--- a/drivers/media/pci/cx23885/cx23885-417.c ++++ b/drivers/media/pci/cx23885/cx23885-417.c +@@ -929,12 +929,8 @@ static int cx23885_load_firmware(struct + retval = request_firmware(&firmware, CX23885_FIRM_IMAGE_NAME, + &dev->pci->dev); + +- if (retval != 0) { +- pr_err("ERROR: Hotplug firmware request failed (%s).\n", +- CX23885_FIRM_IMAGE_NAME); +- pr_err("Please fix your hotplug setup, the board will not work without firmware loaded!\n"); ++ if (retval != 0) + return -1; +- } + + if (firmware->size != CX23885_FIRM_IMAGE_SIZE) { + pr_err("ERROR: Firmware size mismatch (have %zu, expected %d)\n", +--- a/drivers/media/pci/cx23885/cx23885-cards.c ++++ b/drivers/media/pci/cx23885/cx23885-cards.c +@@ -2345,10 +2345,7 @@ void cx23885_card_setup(struct cx23885_d + cinfo.rev, filename); + + ret = request_firmware(&fw, filename, &dev->pci->dev); +- if (ret != 0) +- pr_err("did not find the firmware file. (%s) Please see linux/Documentation/dvb/ for more details on firmware-problems.", +- filename); +- else ++ if (ret == 0) + altera_init(&netup_config, fw); + + release_firmware(fw); +--- a/drivers/media/i2c/cx25840/cx25840-firmware.c ++++ b/drivers/media/i2c/cx25840/cx25840-firmware.c +@@ -122,10 +122,8 @@ int cx25840_loadfw(struct i2c_client *cl + if (is_cx231xx(state) && max_buf_size > 16) + max_buf_size = 16; + +- if (request_firmware(&fw, fwname, FWDEV(client)) != 0) { +- v4l_err(client, "unable to open firmware %s\n", fwname); ++ if (request_firmware(&fw, fwname, FWDEV(client)) != 0) + return -EINVAL; +- } + + start_fw_load(client); + +--- a/drivers/media/pci/cx88/cx88-blackbird.c ++++ b/drivers/media/pci/cx88/cx88-blackbird.c +@@ -471,12 +471,8 @@ static int blackbird_load_firmware(struc + retval = request_firmware(&firmware, CX2341X_FIRM_ENC_FILENAME, + &dev->pci->dev); + +- if (retval != 0) { +- pr_err("Hotplug firmware request failed (%s).\n", +- CX2341X_FIRM_ENC_FILENAME); +- pr_err("Please fix your hotplug setup, the board will not work without firmware loaded!\n"); ++ if (retval != 0) + return -EIO; +- } + + if (firmware->size != BLACKBIRD_FIRM_IMAGE_SIZE) { + pr_err("Firmware size mismatch (have %zd, expected %d)\n", +--- a/drivers/media/usb/gspca/vicam.c ++++ b/drivers/media/usb/gspca/vicam.c +@@ -239,10 +239,8 @@ static int sd_init(struct gspca_dev *gsp + + ret = request_ihex_firmware(&fw, VICAM_FIRMWARE, + &gspca_dev->dev->dev); +- if (ret) { +- pr_err("Failed to load \"vicam/firmware.fw\": %d\n", ret); ++ if (ret) + return ret; +- } + + firmware_buf = kmalloc(PAGE_SIZE, GFP_KERNEL); + if (!firmware_buf) { +--- a/drivers/media/pci/ivtv/ivtv-firmware.c ++++ b/drivers/media/pci/ivtv/ivtv-firmware.c +@@ -80,8 +80,6 @@ retry: + release_firmware(fw); + return size; + } +- IVTV_ERR("Unable to open firmware %s (must be %ld bytes)\n", fn, size); +- IVTV_ERR("Did you put the firmware in the hotplug firmware directory?\n"); + return -ENOMEM; + } + +--- a/drivers/media/usb/pvrusb2/pvrusb2-hdw.c ++++ b/drivers/media/usb/pvrusb2/pvrusb2-hdw.c +@@ -1377,25 +1377,6 @@ static int pvr2_locate_firmware(struct p + "request_firmware fatal error with code=%d",ret); + return ret; + } +- pvr2_trace(PVR2_TRACE_ERROR_LEGS, +- "***WARNING*** Device %s firmware seems to be missing.", +- fwtypename); +- pvr2_trace(PVR2_TRACE_ERROR_LEGS, +- "Did you install the pvrusb2 firmware files in their proper location?"); +- if (fwcount == 1) { +- pvr2_trace(PVR2_TRACE_ERROR_LEGS, +- "request_firmware unable to locate %s file %s", +- fwtypename,fwnames[0]); +- } else { +- pvr2_trace(PVR2_TRACE_ERROR_LEGS, +- "request_firmware unable to locate one of the following %s files:", +- fwtypename); +- for (idx = 0; idx < fwcount; idx++) { +- pvr2_trace(PVR2_TRACE_ERROR_LEGS, +- "request_firmware: Failed to find %s", +- fwnames[idx]); +- } +- } + return ret; + } + +--- a/drivers/media/usb/s2255/s2255drv.c ++++ b/drivers/media/usb/s2255/s2255drv.c +@@ -2307,10 +2307,8 @@ static int s2255_probe(struct usb_interf + } + /* load the first chunk */ + if (request_firmware(&dev->fw_data->fw, +- FIRMWARE_FILE_NAME, &dev->udev->dev)) { +- dev_err(&interface->dev, "sensoray 2255 failed to get firmware\n"); ++ FIRMWARE_FILE_NAME, &dev->udev->dev)) + goto errorREQFW; +- } + /* check the firmware is valid */ + fw_size = dev->fw_data->fw->size; + pdata = (__le32 *) &dev->fw_data->fw->data[fw_size - 8]; +--- a/drivers/media/platform/s5p-mfc/s5p_mfc_ctrl.c ++++ b/drivers/media/platform/s5p-mfc/s5p_mfc_ctrl.c +@@ -66,10 +66,8 @@ int s5p_mfc_load_firmware(struct s5p_mfc + } + } + +- if (err != 0) { +- mfc_err("Firmware is not present in the /lib/firmware directory nor compiled in kernel\n"); ++ if (err != 0) + return -EINVAL; +- } + if (fw_blob->size > dev->fw_buf.size) { + mfc_err("MFC firmware is too big to be loaded\n"); + release_firmware(fw_blob); +--- a/drivers/media/pci/saa7164/saa7164-fw.c ++++ b/drivers/media/pci/saa7164/saa7164-fw.c +@@ -416,11 +416,8 @@ int saa7164_downloadfirmware(struct saa7 + __func__, fwname); + + ret = request_firmware(&fw, fwname, &dev->pci->dev); +- if (ret) { +- printk(KERN_ERR "%s() Upload failed. (file not found?)\n", +- __func__); ++ if (ret) + return -ENOMEM; +- } + + printk(KERN_INFO "%s() firmware read %zu bytes.\n", + __func__, fw->size); +--- a/drivers/misc/ti-st/st_kim.c ++++ b/drivers/misc/ti-st/st_kim.c +@@ -302,11 +302,8 @@ static long download_firmware(struct kim + request_firmware(&kim_gdata->fw_entry, bts_scr_name, + &kim_gdata->kim_pdev->dev); + if (unlikely((err != 0) || (kim_gdata->fw_entry->data == NULL) || +- (kim_gdata->fw_entry->size == 0))) { +- pr_err(" request_firmware failed(errno %ld) for %s", err, +- bts_scr_name); ++ (kim_gdata->fw_entry->size == 0))) + return -EINVAL; +- } + ptr = (void *)kim_gdata->fw_entry->data; + len = kim_gdata->fw_entry->size; + /* bts_header to remove out magic number and +--- a/drivers/net/can/softing/softing_fw.c ++++ b/drivers/net/can/softing/softing_fw.c +@@ -237,11 +237,8 @@ int softing_load_app_fw(const char *file + int8_t type_end = 0, type_entrypoint = 0; + + ret = request_firmware(&fw, file, &card->pdev->dev); +- if (ret) { +- dev_alert(&card->pdev->dev, "request_firmware(%s) got %i\n", +- file, ret); ++ if (ret) + return ret; +- } + dev_dbg(&card->pdev->dev, "firmware(%s) got %lu bytes\n", + file, (unsigned long)fw->size); + /* parse the firmware */ +--- a/drivers/net/ethernet/3com/typhoon.c ++++ b/drivers/net/ethernet/3com/typhoon.c +@@ -1283,11 +1283,8 @@ typhoon_request_firmware(struct typhoon + return 0; + + err = request_firmware(&typhoon_fw, FIRMWARE_NAME, &tp->pdev->dev); +- if (err) { +- netdev_err(tp->dev, "Failed to load firmware \"%s\"\n", +- FIRMWARE_NAME); ++ if (err) + return err; +- } + + image_data = typhoon_fw->data; + remaining = typhoon_fw->size; +--- a/drivers/net/ethernet/adaptec/starfire.c ++++ b/drivers/net/ethernet/adaptec/starfire.c +@@ -1015,11 +1015,8 @@ static int netdev_open(struct net_device + #endif /* VLAN_SUPPORT */ + + retval = request_firmware(&fw_rx, FIRMWARE_RX, &np->pci_dev->dev); +- if (retval) { +- printk(KERN_ERR "starfire: Failed to load firmware \"%s\"\n", +- FIRMWARE_RX); ++ if (retval) + goto out_init; +- } + if (fw_rx->size % 4) { + printk(KERN_ERR "starfire: bogus length %zu in \"%s\"\n", + fw_rx->size, FIRMWARE_RX); +@@ -1027,11 +1024,8 @@ static int netdev_open(struct net_device + goto out_rx; + } + retval = request_firmware(&fw_tx, FIRMWARE_TX, &np->pci_dev->dev); +- if (retval) { +- printk(KERN_ERR "starfire: Failed to load firmware \"%s\"\n", +- FIRMWARE_TX); ++ if (retval) + goto out_rx; +- } + if (fw_tx->size % 4) { + printk(KERN_ERR "starfire: bogus length %zu in \"%s\"\n", + fw_tx->size, FIRMWARE_TX); +--- a/drivers/net/ethernet/alteon/acenic.c ++++ b/drivers/net/ethernet/alteon/acenic.c +@@ -2892,11 +2892,8 @@ static int ace_load_firmware(struct net_ + fw_name = "acenic/tg1.bin"; + + ret = request_firmware(&fw, fw_name, &ap->pdev->dev); +- if (ret) { +- printk(KERN_ERR "%s: Failed to load firmware \"%s\"\n", +- ap->name, fw_name); ++ if (ret) + return ret; +- } + + fw_data = (void *)fw->data; + +--- a/drivers/net/ethernet/broadcom/bnx2.c ++++ b/drivers/net/ethernet/broadcom/bnx2.c +@@ -3719,16 +3719,13 @@ static int bnx2_request_uncached_firmwar + } + + rc = request_firmware(&bp->mips_firmware, mips_fw_file, &bp->pdev->dev); +- if (rc) { +- pr_err("Can't load firmware file \"%s\"\n", mips_fw_file); ++ if (rc) + goto out; +- } + + rc = request_firmware(&bp->rv2p_firmware, rv2p_fw_file, &bp->pdev->dev); +- if (rc) { +- pr_err("Can't load firmware file \"%s\"\n", rv2p_fw_file); ++ if (rc) + goto err_release_mips_firmware; +- } ++ + mips_fw = (const struct bnx2_mips_fw_file *) bp->mips_firmware->data; + rv2p_fw = (const struct bnx2_rv2p_fw_file *) bp->rv2p_firmware->data; + if (bp->mips_firmware->size < sizeof(*mips_fw) || +--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c ++++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c +@@ -13495,11 +13495,8 @@ static int bnx2x_init_firmware(struct bn + BNX2X_DEV_INFO("Loading %s\n", fw_file_name); + + rc = request_firmware(&bp->firmware, fw_file_name, &bp->pdev->dev); +- if (rc) { +- BNX2X_ERR("Can't load firmware file %s\n", +- fw_file_name); ++ if (rc) + goto request_firmware_exit; +- } + + rc = bnx2x_check_firmware(bp); + if (rc) { +--- a/drivers/net/ethernet/broadcom/tg3.c ++++ b/drivers/net/ethernet/broadcom/tg3.c +@@ -11355,11 +11355,8 @@ static int tg3_request_firmware(struct t + { + const struct tg3_firmware_hdr *fw_hdr; + +- if (request_firmware(&tp->fw, tp->fw_needed, &tp->pdev->dev)) { +- netdev_err(tp->dev, "Failed to load firmware \"%s\"\n", +- tp->fw_needed); ++ if (request_firmware(&tp->fw, tp->fw_needed, &tp->pdev->dev)) + return -ENOENT; +- } + + fw_hdr = (struct tg3_firmware_hdr *)tp->fw->data; + +--- a/drivers/net/ethernet/brocade/bna/cna_fwimg.c ++++ b/drivers/net/ethernet/brocade/bna/cna_fwimg.c +@@ -32,10 +32,8 @@ cna_read_firmware(struct pci_dev *pdev, + const struct firmware *fw; + u32 n; + +- if (request_firmware(&fw, fw_name, &pdev->dev)) { +- dev_alert(&pdev->dev, "can't load firmware %s\n", fw_name); ++ if (request_firmware(&fw, fw_name, &pdev->dev)) + goto error; +- } + + *bfi_image = (u32 *)fw->data; + *bfi_image_size = fw->size/sizeof(u32); +--- a/drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c ++++ b/drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c +@@ -1037,12 +1037,8 @@ int t3_get_edc_fw(struct cphy *phy, int + fw_name = get_edc_fw_name(edc_idx); + if (fw_name) + ret = request_firmware(&fw, fw_name, &adapter->pdev->dev); +- if (ret < 0) { +- dev_err(&adapter->pdev->dev, +- "could not upgrade firmware: unable to load %s\n", +- fw_name); ++ if (ret) + return ret; +- } + + /* check size, take checksum in account */ + if (fw->size > size + 4) { +@@ -1079,11 +1075,8 @@ static int upgrade_fw(struct adapter *ad + struct device *dev = &adap->pdev->dev; + + ret = request_firmware(&fw, FW_FNAME, dev); +- if (ret < 0) { +- dev_err(dev, "could not upgrade firmware: unable to load %s\n", +- FW_FNAME); ++ if (ret) + return ret; +- } + ret = t3_load_fw(adap, fw->data, fw->size); + release_firmware(fw); + +@@ -1128,11 +1121,8 @@ static int update_tpsram(struct adapter + snprintf(buf, sizeof(buf), TPSRAM_NAME, rev); + + ret = request_firmware(&tpsram, buf, dev); +- if (ret < 0) { +- dev_err(dev, "could not load TP SRAM: unable to load %s\n", +- buf); ++ if (ret) + return ret; +- } + + ret = t3_check_tpsram(adap, tpsram->data, tpsram->size); + if (ret) +--- a/drivers/net/ethernet/intel/e100.c ++++ b/drivers/net/ethernet/intel/e100.c +@@ -1290,9 +1290,6 @@ static const struct firmware *e100_reque + + if (err) { + if (required) { +- netif_err(nic, probe, nic->netdev, +- "Failed to load firmware \"%s\": %d\n", +- fw_name, err); + return ERR_PTR(err); + } else { + netif_info(nic, probe, nic->netdev, +--- a/drivers/net/ethernet/myricom/myri10ge/myri10ge.c ++++ b/drivers/net/ethernet/myricom/myri10ge/myri10ge.c +@@ -581,8 +581,6 @@ static int myri10ge_load_hotplug_firmwar + unsigned i; + + if ((status = request_firmware(&fw, mgp->fw_name, dev)) < 0) { +- dev_err(dev, "Unable to load %s firmware image via hotplug\n", +- mgp->fw_name); + status = -EINVAL; + goto abort_with_nothing; + } +--- a/drivers/net/ethernet/smsc/smc91c92_cs.c ++++ b/drivers/net/ethernet/smsc/smc91c92_cs.c +@@ -647,10 +647,8 @@ static int osi_load_firmware(struct pcmc + int i, err; + + err = request_firmware(&fw, FIRMWARE_NAME, &link->dev); +- if (err) { +- pr_err("Failed to load firmware \"%s\"\n", FIRMWARE_NAME); ++ if (err) + return err; +- } + + /* Download the Seven of Diamonds firmware */ + for (i = 0; i < fw->size; i++) { +--- a/drivers/net/ethernet/sun/cassini.c ++++ b/drivers/net/ethernet/sun/cassini.c +@@ -817,11 +817,8 @@ static void cas_saturn_firmware_init(str + return; + + err = request_firmware(&fw, fw_name, &cp->pdev->dev); +- if (err) { +- pr_err("Failed to load firmware \"%s\"\n", +- fw_name); ++ if (err) + return; +- } + if (fw->size < 2) { + pr_err("bogus length %zu in \"%s\"\n", + fw->size, fw_name); +--- a/drivers/net/hamradio/yam.c ++++ b/drivers/net/hamradio/yam.c +@@ -372,11 +372,8 @@ static unsigned char *add_mcs(unsigned c + } + err = request_firmware(&fw, fw_name[predef], &pdev->dev); + platform_device_unregister(pdev); +- if (err) { +- printk(KERN_ERR "Failed to load firmware \"%s\"\n", +- fw_name[predef]); ++ if (err) + return NULL; +- } + if (fw->size != YAM_FPGA_SIZE) { + printk(KERN_ERR "Bogus length %zu in firmware \"%s\"\n", + fw->size, fw_name[predef]); +--- a/drivers/net/usb/kaweth.c ++++ b/drivers/net/usb/kaweth.c +@@ -390,10 +390,8 @@ static int kaweth_download_firmware(stru + int ret; + + ret = request_firmware(&fw, fwname, &kaweth->dev->dev); +- if (ret) { +- dev_err(&kaweth->intf->dev, "Firmware request failed\n"); ++ if (ret) + return ret; +- } + + if (fw->size > KAWETH_FIRMWARE_BUF_SIZE) { + dev_err(&kaweth->intf->dev, "Firmware too big: %zu\n", +--- a/drivers/net/wimax/i2400m/fw.c ++++ b/drivers/net/wimax/i2400m/fw.c +@@ -1582,11 +1582,8 @@ int i2400m_dev_bootstrap(struct i2400m * + } + d_printf(1, dev, "trying firmware %s (%d)\n", fw_name, itr); + ret = request_firmware(&fw, fw_name, dev); +- if (ret < 0) { +- dev_err(dev, "fw %s: cannot load file: %d\n", +- fw_name, ret); ++ if (ret) + continue; +- } + i2400m->fw_name = fw_name; + ret = i2400m_fw_bootstrap(i2400m, fw, flags); + release_firmware(fw); +@@ -1629,8 +1626,6 @@ void i2400m_fw_cache(struct i2400m *i240 + kref_init(&i2400m_fw->kref); + result = request_firmware(&i2400m_fw->fw, i2400m->fw_name, dev); + if (result < 0) { +- dev_err(dev, "firmware %s: failed to cache: %d\n", +- i2400m->fw_name, result); + kfree(i2400m_fw); + i2400m_fw = (void *) ~0; + } else +--- a/drivers/net/wireless/atmel/at76c50x-usb.c ++++ b/drivers/net/wireless/atmel/at76c50x-usb.c +@@ -1622,13 +1622,8 @@ static struct fwentry *at76_load_firmwar + + at76_dbg(DBG_FW, "downloading firmware %s", fwe->fwname); + ret = request_firmware(&fwe->fw, fwe->fwname, &udev->dev); +- if (ret < 0) { +- dev_err(&udev->dev, "firmware %s not found!\n", +- fwe->fwname); +- dev_err(&udev->dev, +- "you may need to download the firmware from http://developer.berlios.de/projects/at76c503a/\n"); ++ if (ret) + goto exit; +- } + + at76_dbg(DBG_FW, "got it."); + fwh = (struct at76_fw_header *)(fwe->fw->data); +--- a/drivers/net/wireless/ath/ath9k/hif_usb.c ++++ b/drivers/net/wireless/ath/ath9k/hif_usb.c +@@ -1162,9 +1162,6 @@ static void ath9k_hif_usb_firmware_cb(co + if (!ret) + return; + +- dev_err(&hif_dev->udev->dev, +- "ath9k_htc: Failed to get firmware %s\n", +- hif_dev->fw_name); + goto err_fw; + } + +--- a/drivers/net/wireless/ath/carl9170/usb.c ++++ b/drivers/net/wireless/ath/carl9170/usb.c +@@ -1031,7 +1031,6 @@ static void carl9170_usb_firmware_step2( + return; + } + +- dev_err(&ar->udev->dev, "firmware not found.\n"); + carl9170_usb_firmware_failed(ar); + } + +--- a/drivers/net/wireless/atmel/atmel.c ++++ b/drivers/net/wireless/atmel/atmel.c +@@ -3908,12 +3908,8 @@ static int reset_atmel_card(struct net_d + strcpy(priv->firmware_id, "atmel_at76c502.bin"); + } + err = request_firmware(&fw_entry, priv->firmware_id, priv->sys_dev); +- if (err != 0) { +- printk(KERN_ALERT +- "%s: firmware %s is missing, cannot continue.\n", +- dev->name, priv->firmware_id); ++ if (err != 0) + return err; +- } + } else { + int fw_index = 0; + int success = 0; +--- a/drivers/net/wireless/broadcom/b43/main.c ++++ b/drivers/net/wireless/broadcom/b43/main.c +@@ -2263,19 +2263,8 @@ int b43_do_request_fw(struct b43_request + } + err = request_firmware(&ctx->blob, ctx->fwname, + ctx->dev->dev->dev); +- if (err == -ENOENT) { +- snprintf(ctx->errors[ctx->req_type], +- sizeof(ctx->errors[ctx->req_type]), +- "Firmware file \"%s\" not found\n", +- ctx->fwname); ++ if (err) + return err; +- } else if (err) { +- snprintf(ctx->errors[ctx->req_type], +- sizeof(ctx->errors[ctx->req_type]), +- "Firmware file \"%s\" request failed (err=%d)\n", +- ctx->fwname, err); +- return err; +- } + fw_ready: + if (ctx->blob->size < sizeof(struct b43_fw_header)) + goto err_format; +--- a/drivers/net/wireless/broadcom/b43legacy/main.c ++++ b/drivers/net/wireless/broadcom/b43legacy/main.c +@@ -1554,11 +1554,8 @@ static int do_request_fw(struct b43legac + } else { + err = request_firmware(fw, path, dev->dev->dev); + } +- if (err) { +- b43legacyerr(dev->wl, "Firmware file \"%s\" not found " +- "or load failed.\n", path); ++ if (err) + return err; +- } + if ((*fw)->size < sizeof(struct b43legacy_fw_header)) + goto err_format; + hdr = (struct b43legacy_fw_header *)((*fw)->data); +--- a/drivers/net/wireless/broadcom/brcm80211/brcmsmac/mac80211_if.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmsmac/mac80211_if.c +@@ -378,19 +378,13 @@ static int brcms_request_fw(struct brcms + sprintf(fw_name, "%s-%d.fw", brcms_firmwares[i], + UCODE_LOADER_API_VER); + status = request_firmware(&wl->fw.fw_bin[i], fw_name, device); +- if (status) { +- wiphy_err(wl->wiphy, "%s: fail to load firmware %s\n", +- KBUILD_MODNAME, fw_name); ++ if (status) + return status; +- } + sprintf(fw_name, "%s_hdr-%d.fw", brcms_firmwares[i], + UCODE_LOADER_API_VER); + status = request_firmware(&wl->fw.fw_hdr[i], fw_name, device); +- if (status) { +- wiphy_err(wl->wiphy, "%s: fail to load firmware %s\n", +- KBUILD_MODNAME, fw_name); ++ if (status) + return status; +- } + wl->fw.hdr_num_entries[i] = + wl->fw.fw_hdr[i]->size / (sizeof(struct firmware_hdr)); + } +--- a/drivers/net/wireless/intel/ipw2x00/ipw2100.c ++++ b/drivers/net/wireless/intel/ipw2x00/ipw2100.c +@@ -8417,12 +8417,8 @@ static int ipw2100_get_firmware(struct i + + rc = request_firmware(&fw->fw_entry, fw_name, &priv->pci_dev->dev); + +- if (rc < 0) { +- printk(KERN_ERR DRV_NAME ": " +- "%s: Firmware '%s' not available or load failed.\n", +- priv->net_dev->name, fw_name); ++ if (rc) + return rc; +- } + IPW_DEBUG_INFO("firmware data %p size %zd\n", fw->fw_entry->data, + fw->fw_entry->size); + +--- a/drivers/net/wireless/intel/ipw2x00/ipw2200.c ++++ b/drivers/net/wireless/intel/ipw2x00/ipw2200.c +@@ -3417,10 +3417,8 @@ static int ipw_get_fw(struct ipw_priv *p + + /* ask firmware_class module to get the boot firmware off disk */ + rc = request_firmware(raw, name, &priv->pci_dev->dev); +- if (rc < 0) { +- IPW_ERROR("%s request_firmware failed: Reason %d\n", name, rc); ++ if (rc) + return rc; +- } + + if ((*raw)->size < sizeof(*fw)) { + IPW_ERROR("%s is too small (%zd)\n", name, (*raw)->size); +--- a/drivers/net/wireless/intel/iwlegacy/3945-mac.c ++++ b/drivers/net/wireless/intel/iwlegacy/3945-mac.c +@@ -1861,7 +1861,6 @@ il3945_read_ucode(struct il_priv *il) + sprintf(buf, "%s%u%s", name_pre, idx, ".ucode"); + ret = request_firmware(&ucode_raw, buf, &il->pci_dev->dev); + if (ret < 0) { +- IL_ERR("%s firmware file req failed: %d\n", buf, ret); + if (ret == -ENOENT) + continue; + else +--- a/drivers/net/wireless/intel/iwlwifi/iwl-drv.c ++++ b/drivers/net/wireless/intel/iwlwifi/iwl-drv.c +@@ -235,8 +235,6 @@ static int iwl_request_firmware(struct i + } + + if (drv->fw_index < cfg->ucode_api_min) { +- IWL_ERR(drv, "no suitable firmware found!\n"); +- + if (cfg->ucode_api_min == cfg->ucode_api_max) { + IWL_ERR(drv, "%s%d is required\n", fw_pre_name, + cfg->ucode_api_max); +--- a/drivers/net/wireless/marvell/libertas_tf/if_usb.c ++++ b/drivers/net/wireless/marvell/libertas_tf/if_usb.c +@@ -818,8 +818,6 @@ static int if_usb_prog_firmware(struct i + kernel_param_lock(THIS_MODULE); + ret = request_firmware(&cardp->fw, lbtf_fw_name, &cardp->udev->dev); + if (ret < 0) { +- pr_err("request_firmware() failed with %#x\n", ret); +- pr_err("firmware %s not found\n", lbtf_fw_name); + kernel_param_unlock(THIS_MODULE); + goto done; + } +--- a/drivers/net/wireless/marvell/mwifiex/main.c ++++ b/drivers/net/wireless/marvell/mwifiex/main.c +@@ -525,11 +525,8 @@ static int _mwifiex_fw_dpc(const struct + struct wireless_dev *wdev; + struct completion *fw_done = adapter->fw_done; + +- if (!firmware) { +- mwifiex_dbg(adapter, ERROR, +- "Failed to get firmware %s\n", adapter->fw_name); ++ if (!firmware) + goto err_dnld_fw; +- } + + memset(&fw, 0, sizeof(struct mwifiex_fw_image)); + adapter->firmware = firmware; +--- a/drivers/net/wireless/marvell/mwl8k.c ++++ b/drivers/net/wireless/marvell/mwl8k.c +@@ -5714,16 +5714,12 @@ static int mwl8k_firmware_load_success(s + static void mwl8k_fw_state_machine(const struct firmware *fw, void *context) + { + struct mwl8k_priv *priv = context; +- struct mwl8k_device_info *di = priv->device_info; + int rc; + + switch (priv->fw_state) { + case FW_STATE_INIT: +- if (!fw) { +- printk(KERN_ERR "%s: Error requesting helper fw %s\n", +- pci_name(priv->pdev), di->helper_image); ++ if (!fw) + goto fail; +- } + priv->fw_helper = fw; + rc = mwl8k_request_fw(priv, priv->fw_pref, &priv->fw_ucode, + true); +@@ -5758,11 +5754,8 @@ static void mwl8k_fw_state_machine(const + break; + + case FW_STATE_LOADING_ALT: +- if (!fw) { +- printk(KERN_ERR "%s: Error requesting alt fw %s\n", +- pci_name(priv->pdev), di->helper_image); ++ if (!fw) + goto fail; +- } + priv->fw_ucode = fw; + rc = mwl8k_firmware_load_success(priv); + if (rc) +@@ -5800,10 +5793,8 @@ retry: + + /* Ask userland hotplug daemon for the device firmware */ + rc = mwl8k_request_firmware(priv, fw_image, nowait); +- if (rc) { +- wiphy_err(hw->wiphy, "Firmware files not found\n"); ++ if (rc) + return rc; +- } + + if (nowait) + return rc; +--- a/drivers/net/wireless/intersil/orinoco/fw.c ++++ b/drivers/net/wireless/intersil/orinoco/fw.c +@@ -132,7 +132,6 @@ orinoco_dl_firmware(struct orinoco_priva + err = request_firmware(&fw_entry, firmware, priv->dev); + + if (err) { +- dev_err(dev, "Cannot find firmware %s\n", firmware); + err = -ENOENT; + goto free; + } +@@ -292,10 +291,8 @@ symbol_dl_firmware(struct orinoco_privat + const struct firmware *fw_entry; + + if (!orinoco_cached_fw_get(priv, true)) { +- if (request_firmware(&fw_entry, fw->pri_fw, priv->dev) != 0) { +- dev_err(dev, "Cannot find firmware: %s\n", fw->pri_fw); ++ if (request_firmware(&fw_entry, fw->pri_fw, priv->dev) != 0) + return -ENOENT; +- } + } else + fw_entry = orinoco_cached_fw_get(priv, true); + +@@ -311,10 +308,8 @@ symbol_dl_firmware(struct orinoco_privat + } + + if (!orinoco_cached_fw_get(priv, false)) { +- if (request_firmware(&fw_entry, fw->sta_fw, priv->dev) != 0) { +- dev_err(dev, "Cannot find firmware: %s\n", fw->sta_fw); ++ if (request_firmware(&fw_entry, fw->sta_fw, priv->dev) != 0) + return -ENOENT; +- } + } else + fw_entry = orinoco_cached_fw_get(priv, false); + +--- a/drivers/net/wireless/intersil/orinoco/orinoco_usb.c ++++ b/drivers/net/wireless/intersil/orinoco/orinoco_usb.c +@@ -1677,7 +1677,6 @@ static int ezusb_probe(struct usb_interf + if (ezusb_firmware_download(upriv, &firmware) < 0) + goto error; + } else { +- err("No firmware to download"); + goto error; + } + +--- a/drivers/net/wireless/intersil/p54/p54pci.c ++++ b/drivers/net/wireless/intersil/p54/p54pci.c +@@ -499,7 +499,6 @@ static void p54p_firmware_step2(const st + int err; + + if (!fw) { +- dev_err(&pdev->dev, "Cannot find firmware (isl3886pci)\n"); + err = -ENOENT; + goto out; + } +--- a/drivers/net/wireless/intersil/p54/p54spi.c ++++ b/drivers/net/wireless/intersil/p54/p54spi.c +@@ -170,10 +170,8 @@ static int p54spi_request_firmware(struc + /* FIXME: should driver use it's own struct device? */ + ret = request_firmware(&priv->firmware, "3826.arm", &priv->spi->dev); + +- if (ret < 0) { +- dev_err(&priv->spi->dev, "request_firmware() failed: %d", ret); ++ if (ret) + return ret; +- } + + ret = p54_parse_firmware(dev, priv->firmware); + if (ret) { +--- a/drivers/net/wireless/intersil/p54/p54usb.c ++++ b/drivers/net/wireless/intersil/p54/p54usb.c +@@ -929,7 +929,6 @@ static void p54u_load_firmware_cb(const + err = p54u_start_ops(priv); + } else { + err = -ENOENT; +- dev_err(&udev->dev, "Firmware not found.\n"); + } + + if (err) { +--- a/drivers/net/wireless/intersil/prism54/islpci_dev.c ++++ b/drivers/net/wireless/intersil/prism54/islpci_dev.c +@@ -92,12 +92,9 @@ isl_upload_firmware(islpci_private *priv + const u32 *fw_ptr; + + rc = request_firmware(&fw_entry, priv->firmware, PRISM_FW_PDEV); +- if (rc) { +- printk(KERN_ERR +- "%s: request_firmware() failed for '%s'\n", +- "prism54", priv->firmware); ++ if (rc) + return rc; +- } ++ + /* prepare the Direct Memory Base register */ + reg = ISL38XX_DEV_FIRMWARE_ADDRES; + +--- a/drivers/net/wireless/ralink/rt2x00/rt2x00firmware.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt2x00firmware.c +@@ -49,10 +49,8 @@ static int rt2x00lib_request_firmware(st + rt2x00_info(rt2x00dev, "Loading firmware file '%s'\n", fw_name); + + retval = request_firmware(&fw, fw_name, device); +- if (retval) { +- rt2x00_err(rt2x00dev, "Failed to request Firmware\n"); ++ if (retval) + return retval; +- } + + if (!fw || !fw->size || !fw->data) { + rt2x00_err(rt2x00dev, "Failed to read Firmware\n"); +--- a/drivers/net/wireless/realtek/rtlwifi/core.c ++++ b/drivers/net/wireless/realtek/rtlwifi/core.c +@@ -111,7 +111,6 @@ static void rtl_fw_do_work(const struct + if (!err) + goto found_alt; + } +- pr_err("Selected firmware is not available\n"); + rtlpriv->max_fw_size = 0; + return; + } +--- a/drivers/net/wireless/realtek/rtlwifi/rtl8192se/sw.c ++++ b/drivers/net/wireless/realtek/rtlwifi/rtl8192se/sw.c +@@ -92,7 +92,6 @@ static void rtl92se_fw_cb(const struct f + "Firmware callback routine entered!\n"); + complete(&rtlpriv->firmware_loading_complete); + if (!firmware) { +- pr_err("Firmware %s not available\n", fw_name); + rtlpriv->max_fw_size = 0; + return; + } +--- a/drivers/net/wireless/ti/wl1251/main.c ++++ b/drivers/net/wireless/ti/wl1251/main.c +@@ -71,10 +71,8 @@ static int wl1251_fetch_firmware(struct + + ret = request_firmware(&fw, WL1251_FW_NAME, dev); + +- if (ret < 0) { +- wl1251_error("could not get firmware: %d", ret); ++ if (ret) + return ret; +- } + + if (fw->size % 4) { + wl1251_error("firmware size is not multiple of 32 bits: %zu", +@@ -110,10 +108,8 @@ static int wl1251_fetch_nvs(struct wl125 + + ret = request_firmware(&fw, WL1251_NVS_NAME, dev); + +- if (ret < 0) { +- wl1251_error("could not get nvs file: %d", ret); ++ if (ret) + return ret; +- } + + if (fw->size % 4) { + wl1251_error("nvs size is not multiple of 32 bits: %zu", +--- a/drivers/net/wireless/ti/wlcore/main.c ++++ b/drivers/net/wireless/ti/wlcore/main.c +@@ -756,10 +756,8 @@ static int wl12xx_fetch_firmware(struct + + ret = request_firmware(&fw, fw_name, wl->dev); + +- if (ret < 0) { +- wl1271_error("could not get firmware %s: %d", fw_name, ret); ++ if (ret) + return ret; +- } + + if (fw->size % 4) { + wl1271_error("firmware size is not multiple of 32 bits: %zu", +--- a/drivers/net/wireless/zydas/zd1201.c ++++ b/drivers/net/wireless/zydas/zd1201.c +@@ -65,8 +65,6 @@ static int zd1201_fw_upload(struct usb_d + + err = request_firmware(&fw_entry, fwfile, &dev->dev); + if (err) { +- dev_err(&dev->dev, "Failed to load %s firmware file!\n", fwfile); +- dev_err(&dev->dev, "Make sure the hotplug firmware loader is installed.\n"); + dev_err(&dev->dev, "Goto http://linux-lc100020.sourceforge.net for more info.\n"); + return err; + } +--- a/drivers/net/wireless/zydas/zd1211rw/zd_usb.c ++++ b/drivers/net/wireless/zydas/zd1211rw/zd_usb.c +@@ -120,16 +120,9 @@ static void int_urb_complete(struct urb + static int request_fw_file( + const struct firmware **fw, const char *name, struct device *device) + { +- int r; +- + dev_dbg_f(device, "fw name %s\n", name); + +- r = request_firmware(fw, name, device); +- if (r) +- dev_err(device, +- "Could not load firmware file %s. Error number %d\n", +- name, r); +- return r; ++ return request_firmware(fw, name, device); + } + + static inline u16 get_bcdDevice(const struct usb_device *udev) +--- a/drivers/scsi/advansys.c ++++ b/drivers/scsi/advansys.c +@@ -4107,8 +4107,6 @@ static int AscInitAsc1000Driver(ASC_DVC_ + + err = request_firmware(&fw, fwname, asc_dvc->drv_ptr->dev); + if (err) { +- printk(KERN_ERR "Failed to load image \"%s\" err %d\n", +- fwname, err); + asc_dvc->err_code |= ASC_IERR_MCODE_CHKSUM; + return err; + } +@@ -4473,8 +4471,6 @@ static int AdvInitAsc3550Driver(ADV_DVC_ + + err = request_firmware(&fw, fwname, asc_dvc->drv_ptr->dev); + if (err) { +- printk(KERN_ERR "Failed to load image \"%s\" err %d\n", +- fwname, err); + asc_dvc->err_code = ASC_IERR_MCODE_CHKSUM; + return err; + } +@@ -4973,8 +4969,6 @@ static int AdvInitAsc38C0800Driver(ADV_D + + err = request_firmware(&fw, fwname, asc_dvc->drv_ptr->dev); + if (err) { +- printk(KERN_ERR "Failed to load image \"%s\" err %d\n", +- fwname, err); + asc_dvc->err_code = ASC_IERR_MCODE_CHKSUM; + return err; + } +@@ -5461,8 +5455,6 @@ static int AdvInitAsc38C1600Driver(ADV_D + + err = request_firmware(&fw, fwname, asc_dvc->drv_ptr->dev); + if (err) { +- printk(KERN_ERR "Failed to load image \"%s\" err %d\n", +- fwname, err); + asc_dvc->err_code = ASC_IERR_MCODE_CHKSUM; + return err; + } +--- a/drivers/scsi/aic94xx/aic94xx_init.c ++++ b/drivers/scsi/aic94xx/aic94xx_init.c +@@ -384,8 +384,6 @@ static ssize_t asd_store_update_bios(str + filename_ptr, + &asd_ha->pcidev->dev); + if (err) { +- asd_printk("Failed to load bios image file %s, error %d\n", +- filename_ptr, err); + err = FAIL_OPEN_BIOS_FILE; + goto out1; + } +--- a/drivers/scsi/aic94xx/aic94xx_seq.c ++++ b/drivers/scsi/aic94xx/aic94xx_seq.c +@@ -1317,11 +1317,8 @@ int asd_init_seqs(struct asd_ha_struct * + + err = asd_request_firmware(asd_ha); + +- if (err) { +- asd_printk("Failed to load sequencer firmware file %s, error %d\n", +- SAS_RAZOR_SEQUENCER_FW_FILE, err); ++ if (err) + return err; +- } + + err = asd_seq_download_seqs(asd_ha); + if (err) { +--- a/drivers/scsi/bfa/bfad.c ++++ b/drivers/scsi/bfa/bfad.c +@@ -1756,7 +1756,6 @@ bfad_read_firmware(struct pci_dev *pdev, + const struct firmware *fw; + + if (request_firmware(&fw, fw_name, &pdev->dev)) { +- printk(KERN_ALERT "Can't locate firmware %s\n", fw_name); + *bfi_image = NULL; + goto out; + } +--- a/drivers/scsi/ipr.c ++++ b/drivers/scsi/ipr.c +@@ -4094,10 +4094,8 @@ static ssize_t ipr_store_update_fw(struc + if (endline) + *endline = '\0'; + +- if (request_firmware(&fw_entry, fname, &ioa_cfg->pdev->dev)) { +- dev_err(&ioa_cfg->pdev->dev, "Firmware file %s not found\n", fname); ++ if (request_firmware(&fw_entry, fname, &ioa_cfg->pdev->dev)) + return -EIO; +- } + + image_hdr = (struct ipr_ucode_image_header *)fw_entry->data; + +--- a/drivers/scsi/pm8001/pm8001_ctl.c ++++ b/drivers/scsi/pm8001/pm8001_ctl.c +@@ -737,10 +737,6 @@ static ssize_t pm8001_store_update_fw(st + pm8001_ha->dev); + + if (ret) { +- PM8001_FAIL_DBG(pm8001_ha, +- pm8001_printk( +- "Failed to load firmware image file %s, error %d\n", +- filename_ptr, ret)); + pm8001_ha->fw_status = FAIL_OPEN_BIOS_FILE; + goto out; + } +--- a/drivers/scsi/qla1280.c ++++ b/drivers/scsi/qla1280.c +@@ -1552,8 +1552,6 @@ qla1280_request_firmware(struct scsi_qla + err = request_firmware(&fw, fwname, &ha->pdev->dev); + + if (err) { +- printk(KERN_ERR "Failed to load image \"%s\" err %d\n", +- fwname, err); + fw = ERR_PTR(err); + goto unlock; + } +--- a/drivers/scsi/qla2xxx/qla_init.c ++++ b/drivers/scsi/qla2xxx/qla_init.c +@@ -6906,8 +6906,6 @@ qla2x00_load_risc(scsi_qla_host_t *vha, + /* Load firmware blob. */ + blob = qla2x00_request_firmware(vha); + if (!blob) { +- ql_log(ql_log_info, vha, 0x0083, +- "Firmware image unavailable.\n"); + ql_log(ql_log_info, vha, 0x0084, + "Firmware images can be retrieved from: "QLA_FW_URL ".\n"); + return QLA_FUNCTION_FAILED; +@@ -7009,8 +7007,6 @@ qla24xx_load_risc_blob(scsi_qla_host_t * + /* Load firmware blob. */ + blob = qla2x00_request_firmware(vha); + if (!blob) { +- ql_log(ql_log_warn, vha, 0x0090, +- "Firmware image unavailable.\n"); + ql_log(ql_log_warn, vha, 0x0091, + "Firmware images can be retrieved from: " + QLA_FW_URL ".\n"); +--- a/drivers/scsi/qla2xxx/qla_nx.c ++++ b/drivers/scsi/qla2xxx/qla_nx.c +@@ -2465,11 +2465,8 @@ try_blob_fw: + + /* Load firmware blob. */ + blob = ha->hablob = qla2x00_request_firmware(vha); +- if (!blob) { +- ql_log(ql_log_fatal, vha, 0x00a3, +- "Firmware image not present.\n"); ++ if (!blob) + goto fw_load_failed; +- } + + /* Validating firmware blob */ + if (qla82xx_validate_firmware_blob(vha, +--- a/drivers/scsi/qla2xxx/qla_os.c ++++ b/drivers/scsi/qla2xxx/qla_os.c +@@ -6269,8 +6269,6 @@ qla2x00_request_firmware(scsi_qla_host_t + goto out; + + if (request_firmware(&blob->fw, blob->name, &ha->pdev->dev)) { +- ql_log(ql_log_warn, vha, 0x0063, +- "Failed to load firmware image (%s).\n", blob->name); + blob->fw = NULL; + blob = NULL; + goto out; +--- a/drivers/scsi/qlogicpti.c ++++ b/drivers/scsi/qlogicpti.c +@@ -475,11 +475,8 @@ static int qlogicpti_load_firmware(struc + int i, timeout; + + err = request_firmware(&fw, fwname, &qpti->op->dev); +- if (err) { +- printk(KERN_ERR "Failed to load image \"%s\" err %d\n", +- fwname, err); ++ if (err) + return err; +- } + if (fw->size % 2) { + printk(KERN_ERR "Bogus length %zu in image \"%s\"\n", + fw->size, fwname); +--- a/drivers/media/usb/go7007/go7007-driver.c ++++ b/drivers/media/usb/go7007/go7007-driver.c +@@ -92,10 +92,8 @@ static int go7007_load_encoder(struct go + u16 intr_val, intr_data; + + if (go->boot_fw == NULL) { +- if (request_firmware(&fw_entry, fw_name, go->dev)) { +- v4l2_err(go, "unable to load firmware from file \"%s\"\n", fw_name); ++ if (request_firmware(&fw_entry, fw_name, go->dev)) + return -1; +- } + if (fw_entry->size < 16 || memcmp(fw_entry->data, "WISGO7007FW", 11)) { + v4l2_err(go, "file \"%s\" does not appear to be go7007 firmware\n", fw_name); + release_firmware(fw_entry); +--- a/drivers/media/usb/go7007/go7007-fw.c ++++ b/drivers/media/usb/go7007/go7007-fw.c +@@ -1570,12 +1570,8 @@ int go7007_construct_fw_image(struct go7 + default: + return -1; + } +- if (request_firmware(&fw_entry, GO7007_FW_NAME, go->dev)) { +- dev_err(go->dev, +- "unable to load firmware from file \"%s\"\n", +- GO7007_FW_NAME); ++ if (request_firmware(&fw_entry, GO7007_FW_NAME, go->dev)) + return -1; +- } + code = kzalloc(codespace * 2, GFP_KERNEL); + if (code == NULL) + goto fw_failed; +--- a/drivers/media/usb/go7007/go7007-loader.c ++++ b/drivers/media/usb/go7007/go7007-loader.c +@@ -75,11 +75,8 @@ static int go7007_loader_probe(struct us + + dev_info(&interface->dev, "loading firmware %s\n", fw1); + +- if (request_firmware(&fw, fw1, &usbdev->dev)) { +- dev_err(&interface->dev, +- "unable to load firmware from file \"%s\"\n", fw1); ++ if (request_firmware(&fw, fw1, &usbdev->dev)) + goto failed2; +- } + ret = cypress_load_firmware(usbdev, fw, CYPRESS_FX2); + release_firmware(fw); + if (0 != ret) { +@@ -90,11 +87,8 @@ static int go7007_loader_probe(struct us + if (fw2 == NULL) + return 0; + +- if (request_firmware(&fw, fw2, &usbdev->dev)) { +- dev_err(&interface->dev, +- "unable to load firmware from file \"%s\"\n", fw2); ++ if (request_firmware(&fw, fw2, &usbdev->dev)) + goto failed2; +- } + ret = cypress_load_firmware(usbdev, fw, CYPRESS_FX2); + release_firmware(fw); + if (0 != ret) { +--- a/drivers/staging/media/lirc/lirc_zilog.c ++++ b/drivers/staging/media/lirc/lirc_zilog.c +@@ -752,9 +752,6 @@ static int fw_load(struct IR_tx *tx) + /* Request codeset data file */ + ret = request_firmware(&fw_entry, "haup-ir-blaster.bin", tx->ir->dev); + if (ret != 0) { +- dev_err(tx->ir->dev, +- "firmware haup-ir-blaster.bin not available (%d)\n", +- ret); + ret = ret < 0 ? ret : -EFAULT; + goto out; + } +--- a/drivers/staging/rtl8192u/r819xU_firmware.c ++++ b/drivers/staging/rtl8192u/r819xU_firmware.c +@@ -245,10 +245,8 @@ bool init_firmware(struct net_device *de + */ + if (rst_opt == OPT_SYSTEM_RESET) { + rc = request_firmware(&fw_entry, fw_name[init_step], &priv->udev->dev); +- if (rc < 0) { +- RT_TRACE(COMP_ERR, "request firmware fail!\n"); ++ if (rc) + goto download_firmware_fail; +- } + + if (fw_entry->size > sizeof(pfirmware->firmware_buf)) { + RT_TRACE(COMP_ERR, "img file size exceed the container buffer fail!\n"); +--- a/drivers/staging/rtl8712/hal_init.c ++++ b/drivers/staging/rtl8712/hal_init.c +@@ -67,8 +67,6 @@ int rtl871x_load_fw(struct _adapter *pad + dev_info(dev, "r8712u: Loading firmware from \"%s\"\n", firmware_file); + rc = request_firmware_nowait(THIS_MODULE, 1, firmware_file, dev, + GFP_KERNEL, padapter, rtl871x_load_fw_cb); +- if (rc) +- dev_err(dev, "r8712u: Firmware request error %d\n", rc); + return rc; + } + MODULE_FIRMWARE("rtlwifi/rtl8712u.bin"); +--- a/drivers/net/ethernet/alacritech/slicoss.c ++++ b/drivers/net/ethernet/alacritech/slicoss.c +@@ -1063,11 +1063,8 @@ static int slic_load_rcvseq_firmware(str + file = (sdev->model == SLIC_MODEL_OASIS) ? SLIC_RCV_FIRMWARE_OASIS : + SLIC_RCV_FIRMWARE_MOJAVE; + err = request_firmware(&fw, file, &sdev->pdev->dev); +- if (err) { +- dev_err(&sdev->pdev->dev, +- "failed to load receive sequencer firmware %s\n", file); ++ if (err) + return err; +- } + /* Do an initial sanity check concerning firmware size now. A further + * check follows below. + */ +@@ -1138,10 +1135,8 @@ static int slic_load_firmware(struct sli + file = (sdev->model == SLIC_MODEL_OASIS) ? SLIC_FIRMWARE_OASIS : + SLIC_FIRMWARE_MOJAVE; + err = request_firmware(&fw, file, &sdev->pdev->dev); +- if (err) { +- dev_err(&sdev->pdev->dev, "failed to load firmware %s\n", file); ++ if (err) + return err; +- } + /* Do an initial sanity check concerning firmware size now. A further + * check follows below. + */ +--- a/drivers/staging/vt6656/firmware.c ++++ b/drivers/staging/vt6656/firmware.c +@@ -49,11 +49,8 @@ int vnt_download_firmware(struct vnt_pri + dev_dbg(dev, "---->Download firmware\n"); + + rc = request_firmware(&fw, FIRMWARE_NAME, dev); +- if (rc) { +- dev_err(dev, "firmware file %s request failed (%d)\n", +- FIRMWARE_NAME, rc); +- goto out; +- } ++ if (rc) ++ goto out; + + buffer = kmalloc(FIRMWARE_CHUNK_SIZE, GFP_KERNEL); + if (!buffer) +--- a/drivers/tty/cyclades.c ++++ b/drivers/tty/cyclades.c +@@ -3489,10 +3489,8 @@ static int cyz_load_fw(struct pci_dev *p + int retval; + + retval = request_firmware(&fw, "cyzfirm.bin", &pdev->dev); +- if (retval) { +- dev_err(&pdev->dev, "can't get firmware\n"); ++ if (retval) + goto err; +- } + + /* Check whether the firmware is already loaded and running. If + positive, skip this board */ +--- a/drivers/tty/moxa.c ++++ b/drivers/tty/moxa.c +@@ -862,13 +862,8 @@ static int moxa_init_board(struct moxa_b + } + + ret = request_firmware(&fw, file, dev); +- if (ret) { +- printk(KERN_ERR "MOXA: request_firmware failed. Make sure " +- "you've placed '%s' file into your firmware " +- "loader directory (e.g. /lib/firmware)\n", +- file); ++ if (ret) + goto err_free; +- } + + ret = moxa_load_fw(brd, fw); + +--- a/drivers/tty/serial/icom.c ++++ b/drivers/tty/serial/icom.c +@@ -360,7 +360,6 @@ static void load_code(struct icom_port * + + /* Load Call Setup into Adapter */ + if (request_firmware(&fw, "icom_call_setup.bin", &dev->dev) < 0) { +- dev_err(&dev->dev,"Unable to load icom_call_setup.bin firmware image\n"); + status = -1; + goto load_code_exit; + } +@@ -380,7 +379,6 @@ static void load_code(struct icom_port * + + /* Load Resident DCE portion of Adapter */ + if (request_firmware(&fw, "icom_res_dce.bin", &dev->dev) < 0) { +- dev_err(&dev->dev,"Unable to load icom_res_dce.bin firmware image\n"); + status = -1; + goto load_code_exit; + } +@@ -425,7 +423,6 @@ static void load_code(struct icom_port * + } + + if (request_firmware(&fw, "icom_asc.bin", &dev->dev) < 0) { +- dev_err(&dev->dev,"Unable to load icom_asc.bin firmware image\n"); + status = -1; + goto load_code_exit; + } +--- a/drivers/tty/serial/ucc_uart.c ++++ b/drivers/tty/serial/ucc_uart.c +@@ -1165,10 +1165,8 @@ static void uart_firmware_cont(const str + struct device *dev = context; + int ret; + +- if (!fw) { +- dev_err(dev, "firmware not found\n"); ++ if (!fw) + return; +- } + + firmware = (struct qe_firmware *) fw->data; + +--- a/drivers/usb/atm/cxacru.c ++++ b/drivers/usb/atm/cxacru.c +@@ -1082,8 +1082,6 @@ static int cxacru_find_firmware(struct c + return -ENOENT; + } + +- usb_info(usbatm, "found firmware %s\n", buf); +- + return 0; + } + +--- a/drivers/usb/atm/ueagle-atm.c ++++ b/drivers/usb/atm/ueagle-atm.c +@@ -650,10 +650,8 @@ static void uea_upload_pre_firmware(cons + int ret, size; + + uea_enters(usb); +- if (!fw_entry) { +- uea_err(usb, "firmware is not available\n"); ++ if (!fw_entry) + goto err; +- } + + pfw = fw_entry->data; + size = fw_entry->size; +@@ -748,10 +746,6 @@ static int uea_load_firmware(struct usb_ + ret = request_firmware_nowait(THIS_MODULE, 1, fw_name, &usb->dev, + GFP_KERNEL, usb, + uea_upload_pre_firmware); +- if (ret) +- uea_err(usb, "firmware %s is not available\n", fw_name); +- else +- uea_info(usb, "loading firmware %s\n", fw_name); + + uea_leaves(usb); + return ret; +@@ -913,12 +907,8 @@ static int request_dsp(struct uea_softc + } + + ret = request_firmware(&sc->dsp_firm, dsp_name, &sc->usb_dev->dev); +- if (ret < 0) { +- uea_err(INS_TO_USBDEV(sc), +- "requesting firmware %s failed with error %d\n", +- dsp_name, ret); ++ if (ret) + return ret; +- } + + if (UEA_CHIP_VERSION(sc) == EAGLE_IV) + ret = check_dsp_e4(sc->dsp_firm->data, sc->dsp_firm->size); +@@ -1631,12 +1621,8 @@ static int request_cmvs_old(struct uea_s + + cmvs_file_name(sc, cmv_name, 1); + ret = request_firmware(fw, cmv_name, &sc->usb_dev->dev); +- if (ret < 0) { +- uea_err(INS_TO_USBDEV(sc), +- "requesting firmware %s failed with error %d\n", +- cmv_name, ret); ++ if (ret) + return ret; +- } + + data = (u8 *) (*fw)->data; + size = (*fw)->size; +@@ -1673,9 +1659,6 @@ static int request_cmvs(struct uea_softc + "try to get older cmvs\n", cmv_name); + return request_cmvs_old(sc, cmvs, fw); + } +- uea_err(INS_TO_USBDEV(sc), +- "requesting firmware %s failed with error %d\n", +- cmv_name, ret); + return ret; + } + +@@ -1958,11 +1941,8 @@ static int load_XILINX_firmware(struct u + uea_enters(INS_TO_USBDEV(sc)); + + ret = request_firmware(&fw_entry, fw_name, &sc->usb_dev->dev); +- if (ret) { +- uea_err(INS_TO_USBDEV(sc), "firmware %s is not available\n", +- fw_name); ++ if (ret) + goto err0; +- } + + pfw = fw_entry->data; + size = fw_entry->size; +--- a/drivers/usb/misc/emi26.c ++++ b/drivers/usb/misc/emi26.c +@@ -85,21 +85,17 @@ static int emi26_load_firmware (struct u + + err = request_ihex_firmware(&loader_fw, "emi26/loader.fw", &dev->dev); + if (err) +- goto nofw; ++ goto wraperr; + + err = request_ihex_firmware(&bitstream_fw, "emi26/bitstream.fw", + &dev->dev); + if (err) +- goto nofw; ++ goto wraperr; + + err = request_ihex_firmware(&firmware_fw, "emi26/firmware.fw", + &dev->dev); +- if (err) { +- nofw: +- dev_err(&dev->dev, "%s - request_firmware() failed\n", +- __func__); ++ if (err) + goto wraperr; +- } + + /* Assert reset (stop the CPU in the EMI) */ + err = emi26_set_reset(dev,1); +--- a/drivers/usb/misc/ezusb.c ++++ b/drivers/usb/misc/ezusb.c +@@ -76,12 +76,8 @@ static int ezusb_ihex_firmware_download( + const struct ihex_binrec *record; + + if (request_ihex_firmware(&firmware, firmware_path, +- &dev->dev)) { +- dev_err(&dev->dev, +- "%s - request \"%s\" failed\n", +- __func__, firmware_path); ++ &dev->dev)) + goto out; +- } + + ret = ezusb_set_reset(dev, fx.cpucs_reg, 0); + if (ret < 0) +--- a/drivers/usb/misc/isight_firmware.c ++++ b/drivers/usb/misc/isight_firmware.c +@@ -45,7 +45,6 @@ static int isight_firmware_load(struct u + return -ENOMEM; + + if (request_firmware(&firmware, "isight.fw", &dev->dev) != 0) { +- printk(KERN_ERR "Unable to load isight firmware\n"); + ret = -ENODEV; + goto out; + } +--- a/drivers/usb/serial/io_edgeport.c ++++ b/drivers/usb/serial/io_edgeport.c +@@ -375,11 +375,8 @@ static void update_edgeport_E2PROM(struc + + response = request_ihex_firmware(&fw, fw_name, + &edge_serial->serial->dev->dev); +- if (response) { +- dev_err(dev, "Failed to load image \"%s\" err %d\n", +- fw_name, response); ++ if (response) + return; +- } + + rec = (const struct ihex_binrec *)fw->data; + BootMajorVersion = rec->data[0]; +--- a/drivers/usb/serial/io_ti.c ++++ b/drivers/usb/serial/io_ti.c +@@ -1010,8 +1010,6 @@ static int download_fw(struct edgeport_s + + status = request_firmware(&fw, fw_name, dev); + if (status) { +- dev_err(dev, "Failed to load image \"%s\" err %d\n", +- fw_name, status); + return status; + } + +--- a/drivers/usb/serial/ti_usb_3410_5052.c ++++ b/drivers/usb/serial/ti_usb_3410_5052.c +@@ -1692,10 +1692,8 @@ static int ti_download_firmware(struct t + } + + check_firmware: +- if (status) { +- dev_err(&dev->dev, "%s - firmware not found\n", __func__); ++ if (status) + return -ENOENT; +- } + if (fw_p->size > TI_FIRMWARE_BUF_SIZE) { + dev_err(&dev->dev, "%s - firmware too large %zu\n", __func__, fw_p->size); + release_firmware(fw_p); +--- a/drivers/video/fbdev/broadsheetfb.c ++++ b/drivers/video/fbdev/broadsheetfb.c +@@ -743,10 +743,8 @@ static ssize_t broadsheet_loadstore_wave + return -EINVAL; + + err = request_firmware(&fw_entry, "broadsheet.wbf", dev); +- if (err < 0) { +- dev_err(dev, "Failed to get broadsheet waveform\n"); ++ if (err) + goto err_failed; +- } + + /* try to enforce reasonable min max on waveform */ + if ((fw_entry->size < 8*1024) || (fw_entry->size > 64*1024)) { +--- a/drivers/video/fbdev/metronomefb.c ++++ b/drivers/video/fbdev/metronomefb.c +@@ -679,10 +679,8 @@ static int metronomefb_probe(struct plat + a) request the waveform file from userspace + b) process waveform and decode into metromem */ + retval = request_firmware(&fw_entry, "metronome.wbf", &dev->dev); +- if (retval < 0) { +- dev_err(&dev->dev, "Failed to get waveform\n"); ++ if (retval) + goto err_csum_table; +- } + + retval = load_waveform((u8 *) fw_entry->data, fw_entry->size, 3, 31, + par); +--- a/sound/drivers/vx/vx_hwdep.c ++++ b/sound/drivers/vx/vx_hwdep.c +@@ -71,10 +71,8 @@ int snd_vx_setup_firmware(struct vx_core + if (! fw_files[chip->type][i]) + continue; + sprintf(path, "vx/%s", fw_files[chip->type][i]); +- if (request_firmware(&fw, path, chip->dev)) { +- snd_printk(KERN_ERR "vx: can't load firmware %s\n", path); ++ if (request_firmware(&fw, path, chip->dev)) + return -ENOENT; +- } + err = chip->ops->load_dsp(chip, i, fw); + if (err < 0) { + release_firmware(fw); +--- a/sound/isa/msnd/msnd_pinnacle.c ++++ b/sound/isa/msnd/msnd_pinnacle.c +@@ -390,15 +390,11 @@ static int upload_dsp_code(struct snd_ca + outb(HPBLKSEL_0, chip->io + HP_BLKS); + + err = request_firmware(&init_fw, INITCODEFILE, card->dev); +- if (err < 0) { +- printk(KERN_ERR LOGNAME ": Error loading " INITCODEFILE); ++ if (err) + goto cleanup1; +- } + err = request_firmware(&perm_fw, PERMCODEFILE, card->dev); +- if (err < 0) { +- printk(KERN_ERR LOGNAME ": Error loading " PERMCODEFILE); ++ if (err) + goto cleanup; +- } + + memcpy_toio(chip->mappedbase, perm_fw->data, perm_fw->size); + if (snd_msnd_upload_host(chip, init_fw->data, init_fw->size) < 0) { +--- a/sound/isa/sscape.c ++++ b/sound/isa/sscape.c +@@ -544,10 +544,8 @@ static int sscape_upload_bootblock(struc + int ret; + + ret = request_firmware(&init_fw, "scope.cod", card->dev); +- if (ret < 0) { +- snd_printk(KERN_ERR "sscape: Error loading scope.cod"); ++ if (ret) + return ret; +- } + ret = upload_dma_data(sscape, init_fw->data, init_fw->size); + + release_firmware(init_fw); +@@ -584,11 +582,8 @@ static int sscape_upload_microcode(struc + snprintf(name, sizeof(name), "sndscape.co%d", version); + + err = request_firmware(&init_fw, name, card->dev); +- if (err < 0) { +- snd_printk(KERN_ERR "sscape: Error loading sndscape.co%d", +- version); ++ if (err) + return err; +- } + err = upload_dma_data(sscape, init_fw->data, init_fw->size); + if (err == 0) + snd_printk(KERN_INFO "sscape: MIDI firmware loaded %zu KBs\n", +--- a/sound/isa/wavefront/wavefront_synth.c ++++ b/sound/isa/wavefront/wavefront_synth.c +@@ -1957,10 +1957,8 @@ wavefront_download_firmware (snd_wavefro + const struct firmware *firmware; + + err = request_firmware(&firmware, path, dev->card->dev); +- if (err < 0) { +- snd_printk(KERN_ERR "firmware (%s) download failed!!!\n", path); ++ if (err) + return 1; +- } + + len = 0; + buf = firmware->data; +--- a/sound/pci/asihpi/hpidspcd.c ++++ b/sound/pci/asihpi/hpidspcd.c +@@ -46,8 +46,6 @@ short hpi_dsp_code_open(u32 adapter, voi + err = request_firmware(&firmware, fw_name, &dev->dev); + + if (err || !firmware) { +- dev_err(&dev->dev, "%d, request_firmware failed for %s\n", +- err, fw_name); + goto error1; + } + if (firmware->size < sizeof(header)) { +--- a/sound/pci/echoaudio/echoaudio.c ++++ b/sound/pci/echoaudio/echoaudio.c +@@ -60,11 +60,8 @@ static int get_firmware(const struct fir + "firmware requested: %s\n", card_fw[fw_index].data); + snprintf(name, sizeof(name), "ea/%s", card_fw[fw_index].data); + err = request_firmware(fw_entry, name, pci_device(chip)); +- if (err < 0) +- dev_err(chip->card->dev, +- "get_firmware(): Firmware not available (%d)\n", err); + #ifdef CONFIG_PM_SLEEP +- else ++ if (!err) + chip->fw_cache[fw_index] = *fw_entry; + #endif + return err; +--- a/sound/pci/emu10k1/emu10k1_main.c ++++ b/sound/pci/emu10k1/emu10k1_main.c +@@ -887,10 +887,8 @@ static int snd_emu10k1_emu1010_init(stru + dev_info(emu->card->dev, "emu1010: EMU_HANA_ID = 0x%x\n", reg); + + err = snd_emu1010_load_firmware(emu, 0, &emu->firmware); +- if (err < 0) { +- dev_info(emu->card->dev, "emu1010: Loading Firmware failed\n"); ++ if (err < 0) + return err; +- } + + /* ID, should read & 0x7f = 0x55 when FPGA programmed. */ + snd_emu1010_fpga_read(emu, EMU_HANA_ID, ®); +--- a/sound/pci/hda/hda_intel.c ++++ b/sound/pci/hda/hda_intel.c +@@ -1959,10 +1959,8 @@ static void azx_firmware_cb(const struct + struct azx *chip = card->private_data; + struct pci_dev *pci = chip->pci; + +- if (!fw) { +- dev_err(card->dev, "Cannot load firmware, aborting\n"); ++ if (!fw) + goto error; +- } + + chip->fw = fw; + if (!chip->disabled) { +--- a/sound/pci/korg1212/korg1212.c ++++ b/sound/pci/korg1212/korg1212.c +@@ -2349,7 +2349,6 @@ static int snd_korg1212_create(struct sn + err = request_firmware(&dsp_code, "korg/k1212.dsp", &pci->dev); + if (err < 0) { + release_firmware(dsp_code); +- snd_printk(KERN_ERR "firmware not available\n"); + snd_korg1212_free(korg1212); + return err; + } +--- a/sound/pci/mixart/mixart_hwdep.c ++++ b/sound/pci/mixart/mixart_hwdep.c +@@ -571,11 +571,8 @@ int snd_mixart_setup_firmware(struct mix + + for (i = 0; i < 3; i++) { + sprintf(path, "mixart/%s", fw_files[i]); +- if (request_firmware(&fw_entry, path, &mgr->pci->dev)) { +- dev_err(&mgr->pci->dev, +- "miXart: can't load firmware %s\n", path); ++ if (request_firmware(&fw_entry, path, &mgr->pci->dev)) + return -ENOENT; +- } + /* fake hwdep dsp record */ + err = mixart_dsp_load(mgr, i, fw_entry); + release_firmware(fw_entry); +--- a/sound/pci/pcxhr/pcxhr_hwdep.c ++++ b/sound/pci/pcxhr/pcxhr_hwdep.c +@@ -385,12 +385,8 @@ int pcxhr_setup_firmware(struct pcxhr_mg + if (!fw_files[fw_set][i]) + continue; + sprintf(path, "pcxhr/%s", fw_files[fw_set][i]); +- if (request_firmware(&fw_entry, path, &mgr->pci->dev)) { +- dev_err(&mgr->pci->dev, +- "pcxhr: can't load firmware %s\n", +- path); ++ if (request_firmware(&fw_entry, path, &mgr->pci->dev)) + return -ENOENT; +- } + /* fake hwdep dsp record */ + err = pcxhr_dsp_load(mgr, i, fw_entry); + release_firmware(fw_entry); +--- a/sound/pci/riptide/riptide.c ++++ b/sound/pci/riptide/riptide.c +@@ -1231,11 +1231,8 @@ static int try_to_load_firmware(struct c + if (!chip->fw_entry) { + err = request_firmware(&chip->fw_entry, "riptide.hex", + &chip->pci->dev); +- if (err) { +- snd_printk(KERN_ERR +- "Riptide: Firmware not available %d\n", err); ++ if (err) + return -EIO; +- } + } + err = loadfirmware(cif, chip->fw_entry->data, chip->fw_entry->size); + if (err) { +--- a/sound/pci/rme9652/hdsp.c ++++ b/sound/pci/rme9652/hdsp.c +@@ -5132,11 +5132,8 @@ static int hdsp_request_fw_loader(struct + return -EINVAL; + } + +- if (request_firmware(&fw, fwfile, &hdsp->pci->dev)) { +- dev_err(hdsp->card->dev, +- "cannot load firmware %s\n", fwfile); ++ if (request_firmware(&fw, fwfile, &hdsp->pci->dev)) + return -ENOENT; +- } + if (fw->size < HDSP_FIRMWARE_SIZE) { + dev_err(hdsp->card->dev, + "too short firmware size %d (expected %d)\n", +--- a/sound/soc/codecs/wm2000.c ++++ b/sound/soc/codecs/wm2000.c +@@ -891,10 +891,8 @@ static int wm2000_i2c_probe(struct i2c_c + } + + ret = request_firmware(&fw, filename, &i2c->dev); +- if (ret != 0) { +- dev_err(&i2c->dev, "Failed to acquire ANC data: %d\n", ret); ++ if (ret != 0) + goto err_supplies; +- } + + /* Pre-cook the concatenation of the register address onto the image */ + wm2000->anc_download_size = fw->size + 2; +--- a/sound/usb/6fire/firmware.c ++++ b/sound/usb/6fire/firmware.c +@@ -219,8 +219,6 @@ static int usb6fire_fw_ezusb_upload( + ret = request_firmware(&fw, fwname, &device->dev); + if (ret < 0) { + kfree(rec); +- dev_err(&intf->dev, +- "error requesting ezusb firmware %s.\n", fwname); + return ret; + } + ret = usb6fire_fw_ihex_init(fw, rec); +@@ -296,8 +294,6 @@ static int usb6fire_fw_fpga_upload( + + ret = request_firmware(&fw, fwname, &device->dev); + if (ret < 0) { +- dev_err(&intf->dev, "unable to get fpga firmware %s.\n", +- fwname); + kfree(buffer); + return -EIO; + } +--- a/sound/pci/cs46xx/cs46xx_lib.c ++++ b/sound/pci/cs46xx/cs46xx_lib.c +@@ -3253,11 +3253,8 @@ int snd_cs46xx_start_dsp(struct snd_cs46 + #ifdef CONFIG_SND_CS46XX_NEW_DSP + for (i = 0; i < CS46XX_DSP_MODULES; i++) { + err = load_firmware(chip, &chip->modules[i], module_names[i]); +- if (err < 0) { +- dev_err(chip->card->dev, "firmware load error [%s]\n", +- module_names[i]); ++ if (err < 0) + return err; +- } + err = cs46xx_dsp_load_module(chip, chip->modules[i]); + if (err < 0) { + dev_err(chip->card->dev, "image download error [%s]\n", diff --git a/patches/bugfix/all/firmware_class-log-every-success-and-failure.patch b/patches/bugfix/all/firmware_class-log-every-success-and-failure.patch new file mode 100644 index 00000000000..b18580e4228 --- /dev/null +++ b/patches/bugfix/all/firmware_class-log-every-success-and-failure.patch @@ -0,0 +1,64 @@ +From: Ben Hutchings +Subject: firmware_class: Log every success and failure against given device +Date: Sun, 09 Dec 2012 16:02:00 +0000 +Forwarded: no + +The hundreds of users of request_firmware() have nearly as many +different log formats for reporting failures. They also have only the +vaguest hint as to what went wrong; only firmware_class really knows +that. Therefore, add specific log messages for the failure modes that +aren't currently logged. + +In case of a driver that tries multiple names, this may result in the +impression that it failed to initialise. Therefore, also log successes. + +This makes many error messages in drivers redundant, which will be +removed in later patches. + +This does not cover the case where we fall back to a user-mode helper +(which is no longer enabled in Debian). + +NOTE: hw-detect will depend on the "firmware: failed to load %s (%d)\n" +format to detect missing firmware. +--- +--- a/drivers/base/firmware_class.c ++++ b/drivers/base/firmware_class.c +@@ -450,21 +450,22 @@ fw_get_filesystem_firmware(struct device + rc = kernel_read_file_from_path(path, &buf->data, &size, msize, + id); + if (rc) { +- if (rc == -ENOENT) +- dev_dbg(device, "loading %s failed with error %d\n", +- path, rc); +- else +- dev_warn(device, "loading %s failed with error %d\n", +- path, rc); ++ dev_dbg(device, "loading %s failed with error %d\n", ++ path, rc); + continue; + } +- dev_dbg(device, "direct-loading %s\n", buf->fw_id); ++ dev_info(device, "firmware: direct-loading firmware %s\n", ++ buf->fw_id); + buf->size = size; + fw_state_done(&buf->fw_st); + break; + } + __putname(path); + ++ if (rc) ++ dev_err(device, "firmware: failed to load %s (%d)\n", ++ buf->fw_id, rc); ++ + return rc; + } + +@@ -1112,7 +1113,7 @@ static int fw_load_from_user_helper(stru + if (opt_flags & FW_OPT_NOWAIT) { + timeout = usermodehelper_read_lock_wait(timeout); + if (!timeout) { +- dev_dbg(device, "firmware: %s loading timed out\n", ++ dev_err(device, "firmware: %s loading timed out\n", + name); + return -EBUSY; + } diff --git a/patches/bugfix/all/fs-add-module_softdep-declarations-for-hard-coded-cr.patch b/patches/bugfix/all/fs-add-module_softdep-declarations-for-hard-coded-cr.patch new file mode 100644 index 00000000000..9b5b3b84f24 --- /dev/null +++ b/patches/bugfix/all/fs-add-module_softdep-declarations-for-hard-coded-cr.patch @@ -0,0 +1,71 @@ +From: Ben Hutchings +Date: Wed, 13 Apr 2016 21:48:06 +0100 +Subject: fs: Add MODULE_SOFTDEP declarations for hard-coded crypto drivers +Bug-Debian: https://bugs.debian.org/819725 +Forwarded: http://mid.gmane.org/20160517133631.GF7555@decadent.org.uk + +This helps initramfs builders and other tools to find the full +dependencies of a module. + +Signed-off-by: Ben Hutchings +[Lukas Wunner: Forward-ported to 4.11: drop parts applied upstream] +--- +--- a/fs/btrfs/super.c ++++ b/fs/btrfs/super.c +@@ -2473,3 +2473,4 @@ late_initcall(init_btrfs_fs); + module_exit(exit_btrfs_fs) + + MODULE_LICENSE("GPL"); ++MODULE_SOFTDEP("pre: crypto-crc32c"); +--- a/fs/crypto/crypto.c ++++ b/fs/crypto/crypto.c +@@ -614,3 +614,4 @@ static void __exit fscrypt_exit(void) + module_exit(fscrypt_exit); + + MODULE_LICENSE("GPL"); ++MODULE_SOFTDEP("pre: crypto-aes crypto-ecb"); +--- a/fs/ext4/super.c ++++ b/fs/ext4/super.c +@@ -5692,5 +5692,13 @@ static void __exit ext4_exit_fs(void) + MODULE_AUTHOR("Remy Card, Stephen Tweedie, Andrew Morton, Andreas Dilger, Theodore Ts'o and others"); + MODULE_DESCRIPTION("Fourth Extended Filesystem"); + MODULE_LICENSE("GPL"); ++ ++#ifdef CONFIG_EXT4_FS_ENCRYPTION ++#define EXT4_ENC_EXTRA_SOFTDEPS " crypto-aes crypto-ecb" ++#else ++#define EXT4_ENC_EXTRA_SOFTDEPS "" ++#endif ++MODULE_SOFTDEP("pre: crypto-crc32c" EXT4_ENC_EXTRA_SOFTDEPS); ++ + module_init(ext4_init_fs) + module_exit(ext4_exit_fs) +--- a/fs/f2fs/super.c ++++ b/fs/f2fs/super.c +@@ -2244,4 +2244,5 @@ module_exit(exit_f2fs_fs) + MODULE_AUTHOR("Samsung Electronics's Praesto Team"); + MODULE_DESCRIPTION("Flash Friendly File System"); + MODULE_LICENSE("GPL"); ++MODULE_SOFTDEP("pre: crypto-crc32c"); + +--- a/fs/jbd2/journal.c ++++ b/fs/jbd2/journal.c +@@ -2674,6 +2674,7 @@ static void __exit journal_exit(void) + } + + MODULE_LICENSE("GPL"); ++MODULE_SOFTDEP("pre: crypto-crc32c"); + module_init(journal_init); + module_exit(journal_exit); + +--- a/fs/nfsd/nfsctl.c ++++ b/fs/nfsd/nfsctl.c +@@ -1308,5 +1308,8 @@ static void __exit exit_nfsd(void) + + MODULE_AUTHOR("Olaf Kirch "); + MODULE_LICENSE("GPL"); ++#ifdef CONFIG_NFSD_V4 ++MODULE_SOFTDEP("pre: crypto-md5"); ++#endif + module_init(init_nfsd) + module_exit(exit_nfsd) diff --git a/patches/bugfix/all/kbuild-fix-recordmcount-dependency.patch b/patches/bugfix/all/kbuild-fix-recordmcount-dependency.patch new file mode 100644 index 00000000000..ee3ddd171b8 --- /dev/null +++ b/patches/bugfix/all/kbuild-fix-recordmcount-dependency.patch @@ -0,0 +1,23 @@ +From: Ben Hutchings +Subject: kbuild: Fix recordmcount dependency for OOT modules +Date: Mon, 08 Sep 2014 18:31:24 +0100 +Forwarded: no + +We never rebuild anything in-tree when building an out-of-tree +modules, so external modules should not depend on the recordmcount +sources. + +--- a/scripts/Makefile.build ++++ b/scripts/Makefile.build +@@ -253,6 +253,11 @@ cmd_record_mcount = \ + fi; + endif # CONFIG_FTRACE_MCOUNT_RECORD + ++# Don't require recordmcount source for an OOT build. ++ifdef KBUILD_EXTMOD ++recordmcount_source := ++endif ++ + ifdef CONFIG_STACK_VALIDATION + ifneq ($(SKIP_STACK_VALIDATION),1) + diff --git a/patches/bugfix/all/kbuild-include-addtree-remove-quotes-before-matching-path.patch b/patches/bugfix/all/kbuild-include-addtree-remove-quotes-before-matching-path.patch new file mode 100644 index 00000000000..df7a8605181 --- /dev/null +++ b/patches/bugfix/all/kbuild-include-addtree-remove-quotes-before-matching-path.patch @@ -0,0 +1,40 @@ +From: Ben Hutchings +Date: Sat, 04 Mar 2017 01:44:15 +0000 +Subject: Kbuild.include: addtree: Remove quotes before matching path +Bug-Debian: https://bugs.debian.org/856474 +Forwarded: https://marc.info/?l=linux-kbuild&m=148987677205629 + +systemtap currently fails to build modules when the kernel source and +object trees are separate. + +systemtap adds something like -I"/usr/share/systemtap/runtime" to +EXTRA_CFLAGS, and addtree should not adjust this as it's specifying an +absolute directory. But since make has no understanding of shell +quoting, it does anyway. + +For a long time this didn't matter, because addtree would still emit +the original -I option after the adjusted one. However, commit +db547ef19064 ("Kbuild: don't add obj tree in additional includes") +changed it to remove the original -I option. + +Remove quotes (both double and single) before matching against the +excluded patterns. + +References: https://bugs.debian.org/856474 +Reported-by: Jack Henschel +Reported-by: Ritesh Raj Sarraf +Fixes: db547ef19064 ("Kbuild: don't add obj tree in additional includes") +Cc: stable@vger.kernel.org # 4.8+ +Signed-off-by: Ben Hutchings +--- +--- a/scripts/Kbuild.include ++++ b/scripts/Kbuild.include +@@ -207,7 +207,7 @@ hdr-inst := -f $(srctree)/scripts/Makefi + # Prefix -I with $(srctree) if it is not an absolute path. + # skip if -I has no parameter + addtree = $(if $(patsubst -I%,%,$(1)), \ +-$(if $(filter-out -I/% -I./% -I../%,$(1)),$(patsubst -I%,-I$(srctree)/%,$(1)),$(1))) ++$(if $(filter-out -I/% -I./% -I../%,$(subst $(quote),,$(subst $(squote),,$(1)))),$(patsubst -I%,-I$(srctree)/%,$(1)),$(1))) + + # Find all -I options and call addtree + flags = $(foreach o,$($(1)),$(if $(filter -I%,$(o)),$(call addtree,$(o)),$(o))) diff --git a/patches/bugfix/all/kbuild-use-nostdinc-in-compile-tests.patch b/patches/bugfix/all/kbuild-use-nostdinc-in-compile-tests.patch new file mode 100644 index 00000000000..4e98a7bdabc --- /dev/null +++ b/patches/bugfix/all/kbuild-use-nostdinc-in-compile-tests.patch @@ -0,0 +1,91 @@ +From: Ben Hutchings +Date: Sat, 19 Oct 2013 19:43:35 +0100 +Subject: kbuild: Use -nostdinc in compile tests +Bug-Debian: https://bugs.debian.org/726861 +Bug-Debian: https://bugs.debian.org/717557 +Forwarded: https://marc.info/?l=linux-kbuild&m=141523555023625 + +gcc 4.8 and later include by default. In some +versions of eglibc that includes , but that may be +missing when building with a biarch compiler. Also +itself could be missing as we are only trying to build a kernel, not +userland. + +The -nostdinc option disables this, though it isn't explicitly +documented. This option is already used when actually building +the kernel, but not by cc-option and other tests. This can result +in silently miscompiling the kernel. + +References: https://bugs.debian.org/717557 +References: https://bugs.debian.org/726861 +Signed-off-by: Ben Hutchings +--- +--- a/scripts/Kbuild.include ++++ b/scripts/Kbuild.include +@@ -194,7 +194,7 @@ CC_OPTION_CFLAGS = $(filter-out $(GCC_PL + # Usage: cflags-y += $(call cc-option,-march=winchip-c6,-march=i586) + + cc-option = $(call __cc-option, $(CC),\ +- $(KBUILD_CPPFLAGS) $(CC_OPTION_CFLAGS),$(1),$(2)) ++ $(NOSTDINC_FLAGS) $(KBUILD_CPPFLAGS) $(CC_OPTION_CFLAGS),$(1),$(2)) + + # hostcc-option + # Usage: cflags-y += $(call hostcc-option,-march=winchip-c6,-march=i586) +@@ -204,23 +204,24 @@ hostcc-option = $(call __cc-option, $(HO + # cc-option-yn + # Usage: flag := $(call cc-option-yn,-march=winchip-c6) + cc-option-yn = $(call try-run-cached,\ +- $(CC) -Werror $(KBUILD_CPPFLAGS) $(CC_OPTION_CFLAGS) $(1) -c -x c /dev/null -o "$$TMP",y,n) ++ $(CC) -Werror $(NOSTDINC_FLAGS) $(KBUILD_CPPFLAGS) $(CC_OPTION_CFLAGS) $(1) -c -x c /dev/null -o "$$TMP",y,n) + + # cc-disable-warning + # Usage: cflags-y += $(call cc-disable-warning,unused-but-set-variable) + cc-disable-warning = $(call try-run-cached,\ +- $(CC) -Werror $(KBUILD_CPPFLAGS) $(CC_OPTION_CFLAGS) -W$(strip $(1)) -c -x c /dev/null -o "$$TMP",-Wno-$(strip $(1))) ++ $(CC) -Werror $(NOSTDINC_FLAGS) $(KBUILD_CPPFLAGS) $(CC_OPTION_CFLAGS) -W$(strip $(1)) -c -x c /dev/null -o "$$TMP",-Wno-$(strip $(1))) + + # cc-name + # Expands to either gcc or clang + cc-name = $(call shell-cached,$(CC) -v 2>&1 | grep -q "clang version" && echo clang || echo gcc) + + # cc-version +-cc-version = $(call shell-cached,$(CONFIG_SHELL) $(srctree)/scripts/gcc-version.sh $(CC)) ++cc-version = $(call shell-cached,$(CONFIG_SHELL) \ ++ $(srctree)/scripts/gcc-version.sh $(CC) $(NOSTDINC_FLAGS)) + + # cc-fullversion + cc-fullversion = $(call shell-cached,$(CONFIG_SHELL) \ +- $(srctree)/scripts/gcc-version.sh -p $(CC)) ++ $(srctree)/scripts/gcc-version.sh -p $(CC) $(NOSTDINC_FLAGS)) + + # cc-ifversion + # Usage: EXTRA_CFLAGS += $(call cc-ifversion, -lt, 0402, -O1) +@@ -238,7 +239,7 @@ cc-ldoption = $(call try-run-cached,\ + # ld-option + # Usage: LDFLAGS += $(call ld-option, -X) + ld-option = $(call try-run-cached,\ +- $(CC) $(KBUILD_CPPFLAGS) $(CC_OPTION_CFLAGS) -x c /dev/null -c -o "$$TMPO"; \ ++ $(CC) $(NOSTDINC_FLAGS) $(KBUILD_CPPFLAGS) $(CC_OPTION_CFLAGS) -x c /dev/null -c -o "$$TMPO"; \ + $(LD) $(LDFLAGS) $(1) "$$TMPO" -o "$$TMP",$(1),$(2)) + + # ar-option +--- a/Makefile ++++ b/Makefile +@@ -667,6 +667,8 @@ endif + KBUILD_CFLAGS += $(call cc-ifversion, -lt, 0409, \ + $(call cc-disable-warning,maybe-uninitialized,)) + ++NOSTDINC_FLAGS += -nostdinc ++ + # Tell gcc to never replace conditional load with a non-conditional one + KBUILD_CFLAGS += $(call cc-option,--param=allow-store-data-races=0) + +@@ -776,7 +778,7 @@ KBUILD_CFLAGS += $(call cc-option,-fdata + endif + + # arch Makefile may override CC so keep this after arch Makefile is included +-NOSTDINC_FLAGS += -nostdinc -isystem $(call shell-cached,$(CC) -print-file-name=include) ++NOSTDINC_FLAGS += -isystem $(call shell-cached,$(CC) -print-file-name=include) + CHECKFLAGS += $(NOSTDINC_FLAGS) + + # warn about C99 declaration after statement diff --git a/patches/bugfix/all/lockdep-stub-nmi-watchdog-reset.patch b/patches/bugfix/all/lockdep-stub-nmi-watchdog-reset.patch new file mode 100644 index 00000000000..49701917d04 --- /dev/null +++ b/patches/bugfix/all/lockdep-stub-nmi-watchdog-reset.patch @@ -0,0 +1,31 @@ +From 2b14169744f9aeccd09c30926d9f0b6a80ff6156 Mon Sep 17 00:00:00 2001 +From: Bastian Blank +Date: Sun, 11 Feb 2018 06:24:15 +0000 +Subject: [PATCH 3/3] lockdep: Stub NMI watchdog reset + +--- + tools/include/linux/nmi.h | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + create mode 100644 tools/include/linux/nmi.h + +diff --git a/tools/include/linux/nmi.h b/tools/include/linux/nmi.h +new file mode 100644 +index 000000000000..81ffb39343cc +--- /dev/null ++++ b/tools/include/linux/nmi.h +@@ -0,0 +1,12 @@ ++/* SPDX-License-Identifier: GPL-2.0 */ ++/* ++ * linux/include/linux/nmi.h ++ */ ++#ifndef LINUX_NMI_H ++#define LINUX_NMI_H ++ ++static inline void touch_nmi_watchdog(void) ++{ ++} ++ ++#endif +-- +2.16.1 + diff --git a/patches/bugfix/all/mac80211_hwsim-fix-possible-memory-leak-in-hwsim_new.patch b/patches/bugfix/all/mac80211_hwsim-fix-possible-memory-leak-in-hwsim_new.patch new file mode 100644 index 00000000000..910907ae393 --- /dev/null +++ b/patches/bugfix/all/mac80211_hwsim-fix-possible-memory-leak-in-hwsim_new.patch @@ -0,0 +1,37 @@ +From: "weiyongjun (A)" +Date: Thu, 18 Jan 2018 02:23:34 +0000 +Subject: mac80211_hwsim: fix possible memory leak in hwsim_new_radio_nl() +Origin: https://git.kernel.org/linus/0ddcff49b672239dda94d70d0fcf50317a9f4b51 +Bug-Debian-Security: https://security-tracker.debian.org/tracker/CVE-2018-8087 + +'hwname' is malloced in hwsim_new_radio_nl() and should be freed +before leaving from the error handling cases, otherwise it will cause +memory leak. + +Fixes: ff4dd73dd2b4 ("mac80211_hwsim: check HWSIM_ATTR_RADIO_NAME length") +Signed-off-by: Wei Yongjun +Reviewed-by: Ben Hutchings +Signed-off-by: Johannes Berg +--- + drivers/net/wireless/mac80211_hwsim.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/drivers/net/wireless/mac80211_hwsim.c b/drivers/net/wireless/mac80211_hwsim.c +index 6bf063adcbde..66c2ac0397da 100644 +--- a/drivers/net/wireless/mac80211_hwsim.c ++++ b/drivers/net/wireless/mac80211_hwsim.c +@@ -3197,8 +3197,10 @@ static int hwsim_new_radio_nl(struct sk_buff *msg, struct genl_info *info) + if (info->attrs[HWSIM_ATTR_REG_CUSTOM_REG]) { + u32 idx = nla_get_u32(info->attrs[HWSIM_ATTR_REG_CUSTOM_REG]); + +- if (idx >= ARRAY_SIZE(hwsim_world_regdom_custom)) ++ if (idx >= ARRAY_SIZE(hwsim_world_regdom_custom)) { ++ kfree(hwname); + return -EINVAL; ++ } + param.regd = hwsim_world_regdom_custom[idx]; + } + +-- +2.16.2 + diff --git a/patches/bugfix/all/module-disable-matching-missing-version-crc.patch b/patches/bugfix/all/module-disable-matching-missing-version-crc.patch new file mode 100644 index 00000000000..2ab62688a76 --- /dev/null +++ b/patches/bugfix/all/module-disable-matching-missing-version-crc.patch @@ -0,0 +1,23 @@ +From: Ben Hutchings +Date: Fri, 02 Dec 2016 23:06:18 +0000 +Subject: module: Disable matching missing version CRC +Forwarded: not-needed + +This partly reverts commit cd3caefb4663e3811d37cc2afad3cce642d60061. +We want to fail closed if a symbol version CRC is missing, as the +alternative may allow subverting module signing. +--- +--- a/kernel/module.c ++++ b/kernel/module.c +@@ -1313,9 +1313,8 @@ static int check_version(const struct lo + goto bad_version; + } + +- /* Broken toolchain. Warn once, then let it go.. */ +- pr_warn_once("%s: no symbol version for %s\n", info->name, symname); +- return 1; ++ pr_warn("%s: no symbol version for %s\n", info->name, symname); ++ return 0; + + bad_version: + pr_warn("%s: disagrees about version of symbol %s\n", diff --git a/patches/bugfix/all/partially-revert-usb-kconfig-using-select-for-usb_co.patch b/patches/bugfix/all/partially-revert-usb-kconfig-using-select-for-usb_co.patch new file mode 100644 index 00000000000..b126826fdae --- /dev/null +++ b/patches/bugfix/all/partially-revert-usb-kconfig-using-select-for-usb_co.patch @@ -0,0 +1,30 @@ +From: Ben Hutchings +Date: Wed, 11 Jan 2017 04:30:40 +0000 +Subject: Partially revert "usb: Kconfig: using select for USB_COMMON dependency" +Forwarded: https://marc.info/?l=linux-usb&m=149248300414300 + +This reverts commit cb9c1cfc86926d0e86d19c8e34f6c23458cd3478 for +USB_LED_TRIG. This config symbol has bool type and enables extra code +in usb_common itself, not a separate driver. Enabling it should not +force usb_common to be built-in! + +Fixes: cb9c1cfc8692 ("usb: Kconfig: using select for USB_COMMON dependency") +Signed-off-by: Ben Hutchings +--- + drivers/usb/Kconfig | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/drivers/usb/Kconfig b/drivers/usb/Kconfig +index 644e978cbd3e..989c6208678f 100644 +--- a/drivers/usb/Kconfig ++++ b/drivers/usb/Kconfig +@@ -152,8 +152,7 @@ source "drivers/usb/gadget/Kconfig" + + config USB_LED_TRIG + bool "USB LED Triggers" +- depends on LEDS_CLASS && LEDS_TRIGGERS +- select USB_COMMON ++ depends on LEDS_CLASS && USB_COMMON && LEDS_TRIGGERS + help + This option adds LED triggers for USB host and/or gadget activity. + diff --git a/patches/bugfix/all/radeon-amdgpu-firmware-is-required-for-drm-and-kms-on-r600-onward.patch b/patches/bugfix/all/radeon-amdgpu-firmware-is-required-for-drm-and-kms-on-r600-onward.patch new file mode 100644 index 00000000000..fe13c96b88b --- /dev/null +++ b/patches/bugfix/all/radeon-amdgpu-firmware-is-required-for-drm-and-kms-on-r600-onward.patch @@ -0,0 +1,131 @@ +From: Ben Hutchings +Subject: radeon, amdgpu: Firmware is required for DRM and KMS on R600 onward +Date: Tue, 08 Jan 2013 03:25:52 +0000 +Bug-Debian: https://bugs.debian.org/607194 +Bug-Debian: https://bugs.debian.org/607471 +Bug-Debian: https://bugs.debian.org/610851 +Bug-Debian: https://bugs.debian.org/627497 +Bug-Debian: https://bugs.debian.org/632212 +Bug-Debian: https://bugs.debian.org/637943 +Bug-Debian: https://bugs.debian.org/649448 +Bug-Debian: https://bugs.debian.org/697229 +Forwarded: no + +radeon requires firmware/microcode for the GPU in all chips, but for +newer chips (apparently R600 'Evergreen' onward) it also expects +firmware for the memory controller and other sub-blocks. + +radeon attempts to gracefully fall back and disable some features if +the firmware is not available, but becomes unstable - the framebuffer +and/or system memory may be corrupted, or the display may stay black. + +Therefore, perform a basic check for the existence of +/lib/firmware/{radeon,amdgpu} when a device is probed, and abort if it +is missing, except for the pre-R600 case. + +--- +--- a/drivers/gpu/drm/radeon/radeon_drv.c ++++ b/drivers/gpu/drm/radeon/radeon_drv.c +@@ -43,6 +43,8 @@ + #include + + #include ++#include ++#include + + /* + * KMS wrapper. +@@ -311,6 +313,28 @@ static struct drm_driver kms_driver; + + bool radeon_device_is_virtual(void); + ++/* Test that /lib/firmware/radeon is a directory (or symlink to a ++ * directory). We could try to match the udev search path, but let's ++ * keep it simple. ++ */ ++static bool radeon_firmware_installed(void) ++{ ++#if IS_BUILTIN(CONFIG_DRM_RADEON) ++ /* It may be too early to tell. Assume it's there. */ ++ return true; ++#else ++ struct path path; ++ ++ if (kern_path("/lib/firmware/radeon", LOOKUP_DIRECTORY | LOOKUP_FOLLOW, ++ &path) == 0) { ++ path_put(&path); ++ return true; ++ } ++ ++ return false; ++#endif ++} ++ + static int radeon_kick_out_firmware_fb(struct pci_dev *pdev) + { + struct apertures_struct *ap; +@@ -340,6 +364,12 @@ static int radeon_pci_probe(struct pci_d + if (vga_switcheroo_client_probe_defer(pdev)) + return -EPROBE_DEFER; + ++ if ((ent->driver_data & RADEON_FAMILY_MASK) >= CHIP_R600 && ++ !radeon_firmware_installed()) { ++ DRM_ERROR("radeon kernel modesetting for R600 or later requires firmware installed\n"); ++ return -ENODEV; ++ } ++ + /* Get rid of things like offb */ + ret = radeon_kick_out_firmware_fb(pdev); + if (ret) +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +@@ -40,6 +40,8 @@ + #include + #include + #include ++#include ++#include + + #include "amdgpu.h" + #include "amdgpu_irq.h" +@@ -545,6 +547,28 @@ MODULE_DEVICE_TABLE(pci, pciidlist); + + static struct drm_driver kms_driver; + ++/* Test that /lib/firmware/amdgpu is a directory (or symlink to a ++ * directory). We could try to match the udev search path, but let's ++ * keep it simple. ++ */ ++static bool amdgpu_firmware_installed(void) ++{ ++#if IS_BUILTIN(CONFIG_DRM_AMDGPU) ++ /* It may be too early to tell. Assume it's there. */ ++ return true; ++#else ++ struct path path; ++ ++ if (kern_path("/lib/firmware/amdgpu", LOOKUP_DIRECTORY | LOOKUP_FOLLOW, ++ &path) == 0) { ++ path_put(&path); ++ return true; ++ } ++ ++ return false; ++#endif ++} ++ + static int amdgpu_kick_out_firmware_fb(struct pci_dev *pdev) + { + struct apertures_struct *ap; +@@ -579,6 +603,11 @@ static int amdgpu_pci_probe(struct pci_d + return -ENODEV; + } + ++ if (!amdgpu_firmware_installed()) { ++ DRM_ERROR("amdgpu requires firmware installed\n"); ++ return -ENODEV; ++ } ++ + /* + * Initialize amdkfd before starting radeon. If it was not loaded yet, + * defer radeon probing diff --git a/patches/bugfix/all/tools-build-remove-bpf-run-time-check-at-build-time.patch b/patches/bugfix/all/tools-build-remove-bpf-run-time-check-at-build-time.patch new file mode 100644 index 00000000000..a8b64755e73 --- /dev/null +++ b/patches/bugfix/all/tools-build-remove-bpf-run-time-check-at-build-time.patch @@ -0,0 +1,24 @@ +From: Ben Hutchings +Date: Sun, 21 Feb 2016 15:33:15 +0000 +Subject: tools/build: Remove bpf() run-time check at build time +Forwarded: no + +It is not correct to test that a syscall works on the build system's +kernel. We might be building on an earlier kernel version or with +security restrictions that block bpf(). + +Signed-off-by: Ben Hutchings +--- +--- a/tools/build/feature/test-bpf.c ++++ b/tools/build/feature/test-bpf.c +@@ -31,9 +31,5 @@ int main(void) + attr.kern_version = 0; + attr.prog_flags = 0; + +- /* +- * Test existence of __NR_bpf and BPF_PROG_LOAD. +- * This call should fail if we run the testcase. +- */ +- return syscall(__NR_bpf, BPF_PROG_LOAD, &attr, sizeof(attr)); ++ return 0; + } diff --git a/patches/bugfix/all/tools-lib-traceevent-use-ldflags.patch b/patches/bugfix/all/tools-lib-traceevent-use-ldflags.patch new file mode 100644 index 00000000000..d1612f7bb51 --- /dev/null +++ b/patches/bugfix/all/tools-lib-traceevent-use-ldflags.patch @@ -0,0 +1,27 @@ +From: Ben Hutchings +Date: Fri, 25 Sep 2015 21:26:48 +0100 +Subject: tools/lib/traceevent: Use LDFLAGS +Forwarded: no + +Signed-off-by: Ben Hutchings +--- +--- a/tools/lib/traceevent/Makefile ++++ b/tools/lib/traceevent/Makefile +@@ -173,7 +173,7 @@ $(TE_IN): force + $(Q)$(MAKE) $(build)=libtraceevent + + $(OUTPUT)libtraceevent.so.$(EVENT_PARSE_VERSION): $(TE_IN) +- $(QUIET_LINK)$(CC) --shared $^ -Wl,-soname,libtraceevent.so.$(EP_VERSION) -o $@ ++ $(QUIET_LINK)$(CC) $(LDFLAGS) --shared $^ -Wl,-soname,libtraceevent.so.$(EP_VERSION) -o $@ + @ln -sf $(@F) $(OUTPUT)libtraceevent.so + @ln -sf $(@F) $(OUTPUT)libtraceevent.so.$(EP_VERSION) + +@@ -192,7 +192,7 @@ $(PLUGINS_IN): force + $(Q)$(MAKE) $(build)=$(plugin_obj) + + $(OUTPUT)%.so: $(OUTPUT)%-in.o +- $(QUIET_LINK)$(CC) $(CFLAGS) -shared -nostartfiles -o $@ $^ ++ $(QUIET_LINK)$(CC) $(CFLAGS) $(LDFLAGS) -shared -nostartfiles -o $@ $^ + + define make_version.h + (echo '/* This file is automatically generated. Do not modify. */'; \ diff --git a/patches/bugfix/all/tools-perf-man-date.patch b/patches/bugfix/all/tools-perf-man-date.patch new file mode 100644 index 00000000000..00eb466448f --- /dev/null +++ b/patches/bugfix/all/tools-perf-man-date.patch @@ -0,0 +1,33 @@ +From: Ben Hutchings +Date: Mon, 13 Jul 2015 20:29:20 +0100 +Subject: perf tools: Use $KBUILD_BUILD_TIMESTAMP as man page date +Forwarded: http://mid.gmane.org/20160517132809.GE7555@decadent.org.uk + +This allows man pages to be built reproducibly. + +Signed-off-by: Ben Hutchings +--- +--- a/tools/perf/Documentation/Makefile ++++ b/tools/perf/Documentation/Makefile +@@ -120,6 +120,9 @@ endif + ifdef DOCBOOK_SUPPRESS_SP + XMLTO_EXTRA += -m manpage-suppress-sp.xsl + endif ++ifdef KBUILD_BUILD_TIMESTAMP ++ASCIIDOC_EXTRA += -a revdate=$(shell date -u -d '$(KBUILD_BUILD_TIMESTAMP)' +%Y-%m-%d) ++endif + + SHELL_PATH ?= $(SHELL) + # Shell quote; +--- a/tools/perf/Documentation/asciidoc.conf ++++ b/tools/perf/Documentation/asciidoc.conf +@@ -71,6 +71,9 @@ ifdef::backend-docbook[] + [header] + template::[header-declarations] + ++ ++template::[docinfo] ++ + + {mantitle} + {manvolnum} diff --git a/patches/bugfix/all/tools-perf-remove-shebangs.patch b/patches/bugfix/all/tools-perf-remove-shebangs.patch new file mode 100644 index 00000000000..07953ca7ec4 --- /dev/null +++ b/patches/bugfix/all/tools-perf-remove-shebangs.patch @@ -0,0 +1,39 @@ +From: Ben Hutchings +Date: Fri, 25 Sep 2015 20:09:23 +0100 +Subject: tools/perf: Remove shebang lines from perf scripts +Forwarded: no + +perf scripts need to be invoked through perf, not directly through +perl (or other language interpreter). So including shebang lines in +them is useless and possibly misleading. + +Signed-off-by: Ben Hutchings +--- +--- a/tools/perf/scripts/perl/rw-by-file.pl ++++ b/tools/perf/scripts/perl/rw-by-file.pl +@@ -1,4 +1,3 @@ +-#!/usr/bin/perl -w + # (c) 2009, Tom Zanussi + # Licensed under the terms of the GNU GPL License version 2 + +--- a/tools/perf/scripts/perl/rw-by-pid.pl ++++ b/tools/perf/scripts/perl/rw-by-pid.pl +@@ -1,4 +1,3 @@ +-#!/usr/bin/perl -w + # (c) 2009, Tom Zanussi + # Licensed under the terms of the GNU GPL License version 2 + +--- a/tools/perf/scripts/perl/rwtop.pl ++++ b/tools/perf/scripts/perl/rwtop.pl +@@ -1,4 +1,3 @@ +-#!/usr/bin/perl -w + # (c) 2010, Tom Zanussi + # Licensed under the terms of the GNU GPL License version 2 + +--- a/tools/perf/scripts/perl/wakeup-latency.pl ++++ b/tools/perf/scripts/perl/wakeup-latency.pl +@@ -1,4 +1,3 @@ +-#!/usr/bin/perl -w + # (c) 2009, Tom Zanussi + # Licensed under the terms of the GNU GPL License version 2 + diff --git a/patches/bugfix/all/usbip-document-tcp-wrappers.patch b/patches/bugfix/all/usbip-document-tcp-wrappers.patch new file mode 100644 index 00000000000..d9d7b301dd3 --- /dev/null +++ b/patches/bugfix/all/usbip-document-tcp-wrappers.patch @@ -0,0 +1,29 @@ +From: Ben Hutchings +Date: Sun, 24 Jun 2012 02:51:39 +0100 +Subject: usbip: Document TCP wrappers +Forwarded: no + +Add references to TCP wrappers configuration in the manual page. + +--- a/tools/usb/usbip/doc/usbipd.8 ++++ b/tools/usb/usbip/doc/usbipd.8 +@@ -14,7 +14,8 @@ Devices have to explicitly be exported u + before usbipd makes them available to other hosts. + + The daemon accepts connections from USB/IP clients +-on TCP port 3240 by default. ++on TCP port 3240 by default. The clients authorised to connect may be ++configured as documented in hosts_access(5). + + .SH OPTIONS + .HP +@@ -69,7 +70,8 @@ Show version. + + .B usbipd + offers no authentication or authorization for USB/IP. Any +-USB/IP client can connect and use exported devices. ++USB/IP client running on an authorised host can connect and ++use exported devices. + + .SH EXAMPLES + diff --git a/patches/bugfix/arm/arm-dts-kirkwood-fix-sata-pinmux-ing-for-ts419.patch b/patches/bugfix/arm/arm-dts-kirkwood-fix-sata-pinmux-ing-for-ts419.patch new file mode 100644 index 00000000000..9e6622fb039 --- /dev/null +++ b/patches/bugfix/arm/arm-dts-kirkwood-fix-sata-pinmux-ing-for-ts419.patch @@ -0,0 +1,37 @@ +From: Ben Hutchings +Date: Fri, 17 Feb 2017 01:30:30 +0000 +Subject: ARM: dts: kirkwood: Fix SATA pinmux-ing for TS419 +Forwarded: https://www.spinics.net/lists/arm-kernel/msg563610.html +Bug-Debian: https://bugs.debian.org/855017 + +The old board code for the TS419 assigns MPP pins 15 and 16 as SATA +activity signals (and none as SATA presence signals). Currently the +device tree assigns the SoC's default pinmux groups for SATA, which +conflict with the second Ethernet port. + +Reported-by: gmbh@gazeta.pl +Tested-by: gmbh@gazeta.pl +References: https://bugs.debian.org/855017 +Cc: stable@vger.kernel.org # 3.15+ +Fixes: 934b524b3f49 ("ARM: Kirkwood: Add DT description of QNAP 419") +Signed-off-by: Ben Hutchings +--- + arch/arm/boot/dts/kirkwood-ts419.dtsi | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/arch/arm/boot/dts/kirkwood-ts419.dtsi b/arch/arm/boot/dts/kirkwood-ts419.dtsi +index 02bd53762705..532506cb0f4a 100644 +--- a/arch/arm/boot/dts/kirkwood-ts419.dtsi ++++ b/arch/arm/boot/dts/kirkwood-ts419.dtsi +@@ -73,3 +73,11 @@ + phy-handle = <ðphy1>; + }; + }; ++ ++&pmx_sata0 { ++ marvell,pins = "mpp15"; ++}; ++ ++&pmx_sata1 { ++ marvell,pins = "mpp16"; ++}; diff --git a/patches/bugfix/arm64/ARM64-dts-meson-reduce-odroid-c2-eMMC-maximum-rate.patch b/patches/bugfix/arm64/ARM64-dts-meson-reduce-odroid-c2-eMMC-maximum-rate.patch new file mode 100644 index 00000000000..214a8e3591e --- /dev/null +++ b/patches/bugfix/arm64/ARM64-dts-meson-reduce-odroid-c2-eMMC-maximum-rate.patch @@ -0,0 +1,43 @@ +Origin: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts?h=next-20180309&id=c04ffa71ff491220cac28f55237c9aad379a8656 +From c04ffa71ff491220cac28f55237c9aad379a8656 Mon Sep 17 00:00:00 2001 +From: Jerome Brunet +Date: Fri, 2 Mar 2018 14:44:36 +0100 +Subject: [PATCH] ARM64: dts: meson: reduce odroid-c2 eMMC maximum rate + +Different modules maybe installed by the user on the eMMC connector +of the odroid-c2. While the red modules are working without an issue, +it seems some black modules (apparently Samsung based) are having +issue at 200MHz + +While the tuning algorithm introduced in v4.14 enables high speed modes +on every other tested designs, it seems a problem remains for this +particular combination of board and eMMC module. + +Lowering the maximum frequency of the eMMC on this board until we can +figure out a better solution. + +Fixes: d341ca88eead ("mmc: meson-gx: rework tuning function") +Suggested-by: Ellie Reeves +Signed-off-by: Jerome Brunet +Cc: stable@vger.kernel.org +Signed-off-by: Kevin Hilman +--- + arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts b/arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts +index 0bc0f65e4f37..54954b314a45 100644 +--- a/arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts ++++ b/arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts +@@ -274,7 +274,7 @@ + pinctrl-names = "default", "clk-gate"; + + bus-width = <8>; +- max-frequency = <200000000>; ++ max-frequency = <100000000>; + non-removable; + disable-wp; + cap-mmc-highspeed; +-- +2.11.0 + diff --git a/patches/bugfix/sh/sh-boot-do-not-use-hyphen-in-exported-variable-name.patch b/patches/bugfix/sh/sh-boot-do-not-use-hyphen-in-exported-variable-name.patch new file mode 100644 index 00000000000..948f76c11c6 --- /dev/null +++ b/patches/bugfix/sh/sh-boot-do-not-use-hyphen-in-exported-variable-name.patch @@ -0,0 +1,124 @@ +From: Ben Hutchings +Date: Sat, 19 Aug 2017 21:42:09 +0100 +Subject: sh: Do not use hyphen in exported variable names +Forwarded: https://marc.info/?l=linux-sh&m=150317827322995&w=2 + +arch/sh/Makefile defines and exports ld-bfd to be used by +arch/sh/boot/Makefile and arch/sh/boot/compressed/Makefile. Similarly +arch/sh/boot/Makefile defines and exports suffix-y to be used by +arch/sh/boot/compressed/Makefile. However some shells, including +dash, will not pass through environment variables whose name includes +a hyphen. Usually GNU make does not use a shell to recurse, but if +e.g. $(srctree) contains '~' it will use a shell here. + +Rename these variables to ld_bfd and suffix_y. + +References: https://buildd.debian.org/status/fetch.php?pkg=linux&arch=sh4&ver=4.13%7Erc5-1%7Eexp1&stamp=1502943967&raw=0 +Fixes: ef9b542fce00 ("sh: bzip2/lzma uImage support.") +Signed-off-by: Ben Hutchings +--- + arch/sh/Makefile | 10 +++++----- + arch/sh/boot/Makefile | 16 ++++++++-------- + arch/sh/boot/compressed/Makefile | 6 +++--- + arch/sh/boot/romimage/Makefile | 4 ++-- + 4 files changed, 18 insertions(+), 18 deletions(-) + +--- a/arch/sh/Makefile ++++ b/arch/sh/Makefile +@@ -115,16 +115,16 @@ KBUILD_DEFCONFIG := cayman_defconfig + endif + + ifdef CONFIG_CPU_LITTLE_ENDIAN +-ld-bfd := elf32-$(UTS_MACHINE)-linux +-LDFLAGS_vmlinux += --defsym jiffies=jiffies_64 --oformat $(ld-bfd) ++ld_bfd := elf32-$(UTS_MACHINE)-linux ++LDFLAGS_vmlinux += --defsym jiffies=jiffies_64 --oformat $(ld_bfd) + LDFLAGS += -EL + else +-ld-bfd := elf32-$(UTS_MACHINE)big-linux +-LDFLAGS_vmlinux += --defsym jiffies=jiffies_64+4 --oformat $(ld-bfd) ++ld_bfd := elf32-$(UTS_MACHINE)big-linux ++LDFLAGS_vmlinux += --defsym jiffies=jiffies_64+4 --oformat $(ld_bfd) + LDFLAGS += -EB + endif + +-export ld-bfd BITS ++export ld_bfd BITS + + head-y := arch/sh/kernel/head_$(BITS).o + +--- a/arch/sh/boot/Makefile ++++ b/arch/sh/boot/Makefile +@@ -19,12 +19,12 @@ CONFIG_ZERO_PAGE_OFFSET ?= 0x00001000 + CONFIG_ENTRY_OFFSET ?= 0x00001000 + CONFIG_PHYSICAL_START ?= $(CONFIG_MEMORY_START) + +-suffix-y := bin +-suffix-$(CONFIG_KERNEL_GZIP) := gz +-suffix-$(CONFIG_KERNEL_BZIP2) := bz2 +-suffix-$(CONFIG_KERNEL_LZMA) := lzma +-suffix-$(CONFIG_KERNEL_XZ) := xz +-suffix-$(CONFIG_KERNEL_LZO) := lzo ++suffix_y := bin ++suffix_$(CONFIG_KERNEL_GZIP) := gz ++suffix_$(CONFIG_KERNEL_BZIP2) := bz2 ++suffix_$(CONFIG_KERNEL_LZMA) := lzma ++suffix_$(CONFIG_KERNEL_XZ) := xz ++suffix_$(CONFIG_KERNEL_LZO) := lzo + + targets := zImage vmlinux.srec romImage uImage uImage.srec uImage.gz \ + uImage.bz2 uImage.lzma uImage.xz uImage.lzo uImage.bin +@@ -106,10 +106,10 @@ OBJCOPYFLAGS_uImage.srec := -I binary -O + $(obj)/uImage.srec: $(obj)/uImage + $(call if_changed,objcopy) + +-$(obj)/uImage: $(obj)/uImage.$(suffix-y) ++$(obj)/uImage: $(obj)/uImage.$(suffix_y) + @ln -sf $(notdir $<) $@ + @echo ' Image $@ is ready' + + export CONFIG_PAGE_OFFSET CONFIG_MEMORY_START CONFIG_BOOT_LINK_OFFSET \ + CONFIG_PHYSICAL_START CONFIG_ZERO_PAGE_OFFSET CONFIG_ENTRY_OFFSET \ +- KERNEL_MEMORY suffix-y ++ KERNEL_MEMORY suffix_y +--- a/arch/sh/boot/compressed/Makefile ++++ b/arch/sh/boot/compressed/Makefile +@@ -32,7 +32,7 @@ ORIG_CFLAGS := $(KBUILD_CFLAGS) + KBUILD_CFLAGS = $(subst -pg, , $(ORIG_CFLAGS)) + endif + +-LDFLAGS_vmlinux := --oformat $(ld-bfd) -Ttext $(IMAGE_OFFSET) -e startup \ ++LDFLAGS_vmlinux := --oformat $(ld_bfd) -Ttext $(IMAGE_OFFSET) -e startup \ + -T $(obj)/../../kernel/vmlinux.lds + + # +@@ -74,7 +74,7 @@ $(obj)/vmlinux.bin.lzo: $(vmlinux.bin.al + + OBJCOPYFLAGS += -R .empty_zero_page + +-LDFLAGS_piggy.o := -r --format binary --oformat $(ld-bfd) -T ++LDFLAGS_piggy.o := -r --format binary --oformat $(ld_bfd) -T + +-$(obj)/piggy.o: $(obj)/vmlinux.scr $(obj)/vmlinux.bin.$(suffix-y) FORCE ++$(obj)/piggy.o: $(obj)/vmlinux.scr $(obj)/vmlinux.bin.$(suffix_y) FORCE + $(call if_changed,ld) +--- a/arch/sh/boot/romimage/Makefile ++++ b/arch/sh/boot/romimage/Makefile +@@ -12,7 +12,7 @@ mmcif-obj-$(CONFIG_CPU_SUBTYPE_SH7724) : + load-$(CONFIG_ROMIMAGE_MMCIF) := $(mmcif-load-y) + obj-$(CONFIG_ROMIMAGE_MMCIF) := $(mmcif-obj-y) + +-LDFLAGS_vmlinux := --oformat $(ld-bfd) -Ttext $(load-y) -e romstart \ ++LDFLAGS_vmlinux := --oformat $(ld_bfd) -Ttext $(load-y) -e romstart \ + -T $(obj)/../../kernel/vmlinux.lds + + $(obj)/vmlinux: $(obj)/head.o $(obj-y) $(obj)/piggy.o FORCE +@@ -23,7 +23,7 @@ OBJCOPYFLAGS += -j .empty_zero_page + $(obj)/zeropage.bin: vmlinux FORCE + $(call if_changed,objcopy) + +-LDFLAGS_piggy.o := -r --format binary --oformat $(ld-bfd) -T ++LDFLAGS_piggy.o := -r --format binary --oformat $(ld_bfd) -T + + $(obj)/piggy.o: $(obj)/vmlinux.scr $(obj)/zeropage.bin arch/sh/boot/zImage FORCE + $(call if_changed,ld) diff --git a/patches/bugfix/x86/mmap-add-an-exception-to-the-stack-gap-for-hotspot-jvm.patch b/patches/bugfix/x86/mmap-add-an-exception-to-the-stack-gap-for-hotspot-jvm.patch new file mode 100644 index 00000000000..45d8db9b94f --- /dev/null +++ b/patches/bugfix/x86/mmap-add-an-exception-to-the-stack-gap-for-hotspot-jvm.patch @@ -0,0 +1,45 @@ +From: Ben Hutchings +Date: Thu, 30 Nov 2017 00:29:18 +0000 +Subject: mmap: Add an exception to the stack gap for Hotspot JVM compatibility +Bug-Debian: https://bugs.debian.org/865303 + +The Hotspot JVM can easily exhaust the default stack, and has a +SIGSEGV handler to cope with this by switching to a new stack segment. + +However, on i386 it creates a single writable and executable page just +under the stack limit as a workaround for a bug in Exec Shield. That +together with the enlarged stack gap causes the SIGSEGV handler to be +triggered when the stack pointer is further away from the stack limit, +and it doesn't recognise this as being a stack overflow. + +This specifically affects programs that use JNI. Hotspot doesn't +normally run Java code on the initial thread. + +Reduce the effective stack guard gap on x86 if the previous vma is +a single page allocated as MAP_FIXED. + +References: https://bugs.debian.org/865303 +Signed-off-by: Ben Hutchings +--- + mm/mmap.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +--- a/mm/mmap.c ++++ b/mm/mmap.c +@@ -2328,6 +2328,16 @@ int expand_downwards(struct vm_area_struct *vma, + /* Check that both stack segments have the same anon_vma? */ + if (prev && !(prev->vm_flags & VM_GROWSDOWN) && + (prev->vm_flags & (VM_WRITE|VM_READ|VM_EXEC))) { ++ /* ++ * bwh: Reduce the stack guard gap if this looks like ++ * Hotspot JVM craziness - see Debian bug #865303 ++ */ ++ if (IS_ENABLED(CONFIG_X86) && (prev->vm_flags & VM_FIXED) && ++ prev->vm_end - prev->vm_start == PAGE_SIZE) { ++ if (address - prev->vm_end < ++ min(stack_guard_gap, 4UL << PAGE_SHIFT)) ++ return -ENOMEM; ++ } else + if (address - prev->vm_end < stack_guard_gap) + return -ENOMEM; + } diff --git a/patches/bugfix/x86/mmap-remember-the-map_fixed-flag-as-vm_fixed.patch b/patches/bugfix/x86/mmap-remember-the-map_fixed-flag-as-vm_fixed.patch new file mode 100644 index 00000000000..0e5a5117155 --- /dev/null +++ b/patches/bugfix/x86/mmap-remember-the-map_fixed-flag-as-vm_fixed.patch @@ -0,0 +1,40 @@ +From: Ben Hutchings +Date: Wed, 5 Jul 2017 13:32:43 +0100 +Subject: mmap: Remember the MAP_FIXED flag as VM_FIXED + +Since 4.15 there are no spare bits, but we can use VM_ARCH_1 as +VM_FIXED wil only be needed on x86. + +Signed-off-by: Ben Hutchings +--- + include/linux/mm.h | 1 + + include/linux/mman.h | 3 ++- + 2 files changed, 3 insertions(+), 1 deletion(-) + +--- a/include/linux/mm.h ++++ b/include/linux/mm.h +@@ -201,6 +201,11 @@ extern unsigned int kobjsize(const void + #define VM_HUGETLB 0x00400000 /* Huge TLB Page VM */ + #define VM_SYNC 0x00800000 /* Synchronous page faults */ + #define VM_ARCH_1 0x01000000 /* Architecture-specific flag */ ++#ifdef CONFIG_X86 ++#define VM_FIXED VM_ARCH_1 /* Allocated at fixed address */ ++#else ++#define VM_FIXED 0 ++#endif + #define VM_WIPEONFORK 0x02000000 /* Wipe VMA contents in child. */ + #define VM_DONTDUMP 0x04000000 /* Do not include in the core dump */ + +--- a/include/linux/mman.h ++++ b/include/linux/mman.h +@@ -131,7 +131,9 @@ calc_vm_flag_bits(unsigned long flags) + return _calc_vm_trans(flags, MAP_GROWSDOWN, VM_GROWSDOWN ) | + _calc_vm_trans(flags, MAP_DENYWRITE, VM_DENYWRITE ) | + _calc_vm_trans(flags, MAP_LOCKED, VM_LOCKED ) | +- _calc_vm_trans(flags, MAP_SYNC, VM_SYNC ); ++ _calc_vm_trans(flags, MAP_SYNC, VM_SYNC ) | ++ (VM_FIXED ? ++ _calc_vm_trans(flags, MAP_FIXED, VM_FIXED ) : 0); + } + + unsigned long vm_commit_limit(void); diff --git a/patches/bugfix/x86/perf-tools-fix-unwind-build-on-i386.patch b/patches/bugfix/x86/perf-tools-fix-unwind-build-on-i386.patch new file mode 100644 index 00000000000..f9baa7bd3c1 --- /dev/null +++ b/patches/bugfix/x86/perf-tools-fix-unwind-build-on-i386.patch @@ -0,0 +1,35 @@ +From: Ben Hutchings +Date: Sat, 22 Jul 2017 17:37:33 +0100 +Subject: perf tools: Fix unwind build on i386 +Forwarded: no + +EINVAL may not be defined when building unwind-libunwind.c with +REMOTE_UNWIND_LIBUNWIND, resulting in a compiler error in +LIBUNWIND__ARCH_REG_ID(). Its only caller, access_reg(), only checks +for a negative return value and doesn't care what it is. So change +-EINVAL to -1. + +Fixes: 52ffe0ff02fc ("Support x86(32-bit) cross platform callchain unwind.") +Signed-off-by: Ben Hutchings +--- + +--- a/tools/perf/arch/x86/util/unwind-libunwind.c ++++ b/tools/perf/arch/x86/util/unwind-libunwind.c +@@ -66,7 +66,7 @@ int LIBUNWIND__ARCH_REG_ID(int regnum) + break; + default: + pr_err("unwind: invalid reg id %d\n", regnum); +- return -EINVAL; ++ return -1; + } + + return id; +@@ -106,7 +106,7 @@ int LIBUNWIND__ARCH_REG_ID(int regnum) + break; + default: + pr_err("unwind: invalid reg id %d\n", regnum); +- return -EINVAL; ++ return -1; + } + + return id; diff --git a/patches/bugfix/x86/platform-x86-ideapad-laptop-add-ideapad-310-15ikb-to.patch b/patches/bugfix/x86/platform-x86-ideapad-laptop-add-ideapad-310-15ikb-to.patch new file mode 100644 index 00000000000..1272bdd8207 --- /dev/null +++ b/patches/bugfix/x86/platform-x86-ideapad-laptop-add-ideapad-310-15ikb-to.patch @@ -0,0 +1,35 @@ +From: Sven Rebhan +Date: Tue, 21 Feb 2017 20:53:48 +0100 +Subject: platform/x86: ideapad-laptop: Add IdeaPad 310-15IKB to no_hw_rfkill +Origin: https://git.kernel.org/linus/1f3bc53d843f92d6e7e7cf56ee79acec918e6421 + +Like other Lenovo models the IdeaPad 310-15IKB does not have an hw rfkill +switch. This results in hard-blocked radios after boot, resulting in +always blocked radios rendering them unusable. + +Add the IdeaPad 310-15IKB to the no_hw_rfkill DMI list and allows using +the built-in radios. + +Signed-off-by: Sven Rebhan +[andy: massaged commit message] +Signed-off-by: Andy Shevchenko +--- + drivers/platform/x86/ideapad-laptop.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +--- a/drivers/platform/x86/ideapad-laptop.c ++++ b/drivers/platform/x86/ideapad-laptop.c +@@ -872,6 +872,13 @@ static const struct dmi_system_id no_hw_ + }, + }, + { ++ .ident = "Lenovo ideapad 310-15IKB", ++ .matches = { ++ DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), ++ DMI_MATCH(DMI_PRODUCT_VERSION, "Lenovo ideapad 310-15IKB"), ++ }, ++ }, ++ { + .ident = "Lenovo ideapad Y700-15ACZ", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), diff --git a/patches/bugfix/x86/platform-x86-ideapad-laptop-add-ideapad-v310-15isk-t.patch b/patches/bugfix/x86/platform-x86-ideapad-laptop-add-ideapad-v310-15isk-t.patch new file mode 100644 index 00000000000..c9c69229e38 --- /dev/null +++ b/patches/bugfix/x86/platform-x86-ideapad-laptop-add-ideapad-v310-15isk-t.patch @@ -0,0 +1,33 @@ +From: Andy Shevchenko +Date: Tue, 21 Feb 2017 20:53:48 +0100 +Subject: platform/x86: ideapad-laptop: Add IdeaPad V310-15ISK to no_hw_rfkill +Origin: https://git.kernel.org/linus/ccc7179f4d9467947c94f4302d61cd5143842fcd + +Like other Lenovo models the IdeaPad V310-15ISK does not have an hw +rfkill switch. This results in hard-blocked radios after boot, resulting +in always blocked radios rendering them unusable. + +Add the IdeaPad V310-15ISK to the no_hw_rfkill DMI list and allows using +the built-in radios. + +Signed-off-by: Andy Shevchenko +--- + drivers/platform/x86/ideapad-laptop.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +--- a/drivers/platform/x86/ideapad-laptop.c ++++ b/drivers/platform/x86/ideapad-laptop.c +@@ -872,6 +872,13 @@ static const struct dmi_system_id no_hw_ + }, + }, + { ++ .ident = "Lenovo V310-15ISK", ++ .matches = { ++ DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), ++ DMI_MATCH(DMI_PRODUCT_VERSION, "Lenovo V310-15ISK"), ++ }, ++ }, ++ { + .ident = "Lenovo ideapad 310-15IKB", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), diff --git a/patches/bugfix/x86/platform-x86-ideapad-laptop-add-ideapad-v510-15ikb-t.patch b/patches/bugfix/x86/platform-x86-ideapad-laptop-add-ideapad-v510-15ikb-t.patch new file mode 100644 index 00000000000..cbb03f7dd83 --- /dev/null +++ b/patches/bugfix/x86/platform-x86-ideapad-laptop-add-ideapad-v510-15ikb-t.patch @@ -0,0 +1,35 @@ +From: Sven Eckelmann +Date: Sat, 1 Jul 2017 08:20:18 +0200 +Subject: platform/x86: ideapad-laptop: Add IdeaPad V510-15IKB to no_hw_rfkill +Origin: https://git.kernel.org/linus/0df4b805cbccbe3f8378f49c415adb2fcffdd3dc +Bug-Debian: https://bugs.debian.org/866706 + +Like other Lenovo models the IdeaPad V510-15IKB does not have an hw +rfkill switch. This results in hard-blocked radios after boot, resulting +in always blocked radios rendering them unusable. + +Add the IdeaPad V510-15IKB to the no_hw_rfkill DMI list and allows using +the built-in radios. + +Signed-off-by: Sven Eckelmann +Signed-off-by: Andy Shevchenko +--- + drivers/platform/x86/ideapad-laptop.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +--- a/drivers/platform/x86/ideapad-laptop.c ++++ b/drivers/platform/x86/ideapad-laptop.c +@@ -879,6 +879,13 @@ static const struct dmi_system_id no_hw_ + }, + }, + { ++ .ident = "Lenovo V510-15IKB", ++ .matches = { ++ DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), ++ DMI_MATCH(DMI_PRODUCT_VERSION, "Lenovo V510-15IKB"), ++ }, ++ }, ++ { + .ident = "Lenovo ideapad 310-15IKB", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), diff --git a/patches/bugfix/x86/platform-x86-ideapad-laptop-add-several-models-to-no.patch b/patches/bugfix/x86/platform-x86-ideapad-laptop-add-several-models-to-no.patch new file mode 100644 index 00000000000..f00a08bf347 --- /dev/null +++ b/patches/bugfix/x86/platform-x86-ideapad-laptop-add-several-models-to-no.patch @@ -0,0 +1,110 @@ +From: Yang Jiaxun +Date: Tue, 4 Jul 2017 14:39:19 +0000 +Subject: platform/x86: ideapad-laptop: Add several models to no_hw_rfkill +Origin: https://git.kernel.org/linus/710c059c248a24609051f5a3dd1d8468cdc675b0 + +Some Lenovo ideapad models do not have hardware rfkill switches, but +trying to read the rfkill switches through the ideapad-laptop module. +It caused to always reported blocking breaking wifi. + +Fix it by adding those models to no_hw_rfkill_list. + +Signed-off-by: Yang Jiaxun +Signed-off-by: Andy Shevchenko +--- + drivers/platform/x86/ideapad-laptop.c | 70 +++++++++++++++++++++++++++++++++++ + 1 file changed, 70 insertions(+) + +--- a/drivers/platform/x86/ideapad-laptop.c ++++ b/drivers/platform/x86/ideapad-laptop.c +@@ -872,6 +872,27 @@ static const struct dmi_system_id no_hw_ + }, + }, + { ++ .ident = "Lenovo V310-14IKB", ++ .matches = { ++ DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), ++ DMI_MATCH(DMI_PRODUCT_VERSION, "Lenovo V310-14IKB"), ++ }, ++ }, ++ { ++ .ident = "Lenovo V310-14ISK", ++ .matches = { ++ DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), ++ DMI_MATCH(DMI_PRODUCT_VERSION, "Lenovo V310-14ISK"), ++ }, ++ }, ++ { ++ .ident = "Lenovo V310-15IKB", ++ .matches = { ++ DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), ++ DMI_MATCH(DMI_PRODUCT_VERSION, "Lenovo V310-15IKB"), ++ }, ++ }, ++ { + .ident = "Lenovo V310-15ISK", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), +@@ -886,6 +907,41 @@ static const struct dmi_system_id no_hw_ + }, + }, + { ++ .ident = "Lenovo ideapad 300-15IBR", ++ .matches = { ++ DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), ++ DMI_MATCH(DMI_PRODUCT_VERSION, "Lenovo ideapad 300-15IBR"), ++ }, ++ }, ++ { ++ .ident = "Lenovo ideapad 300-15IKB", ++ .matches = { ++ DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), ++ DMI_MATCH(DMI_PRODUCT_VERSION, "Lenovo ideapad 300-15IKB"), ++ }, ++ }, ++ { ++ .ident = "Lenovo ideapad 300S-11IBR", ++ .matches = { ++ DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), ++ DMI_MATCH(DMI_PRODUCT_VERSION, "Lenovo ideapad 300S-11BR"), ++ }, ++ }, ++ { ++ .ident = "Lenovo ideapad 310-15ABR", ++ .matches = { ++ DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), ++ DMI_MATCH(DMI_PRODUCT_VERSION, "Lenovo ideapad 310-15ABR"), ++ }, ++ }, ++ { ++ .ident = "Lenovo ideapad 310-15IAP", ++ .matches = { ++ DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), ++ DMI_MATCH(DMI_PRODUCT_VERSION, "Lenovo ideapad 310-15IAP"), ++ }, ++ }, ++ { + .ident = "Lenovo ideapad 310-15IKB", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), +@@ -893,6 +949,20 @@ static const struct dmi_system_id no_hw_ + }, + }, + { ++ .ident = "Lenovo ideapad 310-15ISK", ++ .matches = { ++ DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), ++ DMI_MATCH(DMI_PRODUCT_VERSION, "Lenovo ideapad 310-15ISK"), ++ }, ++ }, ++ { ++ .ident = "Lenovo ideapad Y700-14ISK", ++ .matches = { ++ DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), ++ DMI_MATCH(DMI_PRODUCT_VERSION, "Lenovo ideapad Y700-14ISK"), ++ }, ++ }, ++ { + .ident = "Lenovo ideapad Y700-15ACZ", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), diff --git a/patches/bugfix/x86/platform-x86-ideapad-laptop-add-y520-15ikbn-to-no_hw.patch b/patches/bugfix/x86/platform-x86-ideapad-laptop-add-y520-15ikbn-to-no_hw.patch new file mode 100644 index 00000000000..53cd0c93a2c --- /dev/null +++ b/patches/bugfix/x86/platform-x86-ideapad-laptop-add-y520-15ikbn-to-no_hw.patch @@ -0,0 +1,33 @@ +From: Olle Liljenzin +Date: Sun, 18 Jun 2017 13:09:31 +0200 +Subject: platform/x86: ideapad-laptop: Add Y520-15IKBN to no_hw_rfkill +Origin: https://git.kernel.org/linus/5d9f40b56630a8702b5f7a61a770f9b73aa07464 + +Lenovo Legion Y520-15IKBN is yet another Lenovo model that does not +have an hw rfkill switch, resulting in wifi always reported as hard +blocked. + +Add the model to the list of models without rfkill switch. + +Signed-off-by: Olle Liljenzin +Signed-off-by: Andy Shevchenko +--- + drivers/platform/x86/ideapad-laptop.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +--- a/drivers/platform/x86/ideapad-laptop.c ++++ b/drivers/platform/x86/ideapad-laptop.c +@@ -921,6 +921,13 @@ static const struct dmi_system_id no_hw_ + }, + }, + { ++ .ident = "Lenovo Legion Y520-15IKBN", ++ .matches = { ++ DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), ++ DMI_MATCH(DMI_PRODUCT_VERSION, "Lenovo Y520-15IKBN"), ++ }, ++ }, ++ { + .ident = "Lenovo Yoga 2 11 / 13 / Pro", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), diff --git a/patches/bugfix/x86/platform-x86-ideapad-laptop-add-y720-15ikbn-to-no_hw.patch b/patches/bugfix/x86/platform-x86-ideapad-laptop-add-y720-15ikbn-to-no_hw.patch new file mode 100644 index 00000000000..b4062eef8bb --- /dev/null +++ b/patches/bugfix/x86/platform-x86-ideapad-laptop-add-y720-15ikbn-to-no_hw.patch @@ -0,0 +1,33 @@ +From: Olle Liljenzin +Date: Sun, 18 Jun 2017 14:37:58 +0200 +Subject: platform/x86: ideapad-laptop: Add Y720-15IKBN to no_hw_rfkill +Origin: https://git.kernel.org/linus/b2f2fe205c3b9b595dc50ee431230a45d03f9c2c + +Lenovo Legion Y720-15IKBN is yet another Lenovo model that does not +have an hw rfkill switch, resulting in wifi always reported as hard +blocked. + +Add the model to the list of models without rfkill switch. + +Signed-off-by: Olle Liljenzin +Signed-off-by: Andy Shevchenko +--- + drivers/platform/x86/ideapad-laptop.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +--- a/drivers/platform/x86/ideapad-laptop.c ++++ b/drivers/platform/x86/ideapad-laptop.c +@@ -928,6 +928,13 @@ static const struct dmi_system_id no_hw_ + }, + }, + { ++ .ident = "Lenovo Legion Y720-15IKBN", ++ .matches = { ++ DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), ++ DMI_MATCH(DMI_PRODUCT_VERSION, "Lenovo Y720-15IKBN"), ++ }, ++ }, ++ { + .ident = "Lenovo Yoga 2 11 / 13 / Pro", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), diff --git a/patches/bugfix/x86/revert-perf-build-fix-libunwind-feature-detection-on.patch b/patches/bugfix/x86/revert-perf-build-fix-libunwind-feature-detection-on.patch new file mode 100644 index 00000000000..cfbf98e8245 --- /dev/null +++ b/patches/bugfix/x86/revert-perf-build-fix-libunwind-feature-detection-on.patch @@ -0,0 +1,22 @@ +From: Ben Hutchings +Date: Fri, 25 Sep 2015 22:50:50 +0100 +Subject: Revert "perf build: Fix libunwind feature detection on 32-bit x86" +Forwarded: no + +This reverts commit 05b41775e2edd69a83f592e3534930c934d4038e. +It broke feature detection that was working just fine for us. +--- + tools/perf/Makefile.config | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/tools/perf/Makefile.config ++++ b/tools/perf/Makefile.config +@@ -38,7 +38,7 @@ ifeq ($(SRCARCH),x86) + LIBUNWIND_LIBS = -lunwind-x86_64 -lunwind -llzma + $(call detected,CONFIG_X86_64) + else +- LIBUNWIND_LIBS = -lunwind-x86 -llzma -lunwind ++ LIBUNWIND_LIBS = -lunwind -lunwind-x86 + endif + NO_PERF_REGS := 0 + endif diff --git a/patches/bugfix/x86/viafb-autoload-on-olpc-xo1.5-only.patch b/patches/bugfix/x86/viafb-autoload-on-olpc-xo1.5-only.patch new file mode 100644 index 00000000000..d3957338f85 --- /dev/null +++ b/patches/bugfix/x86/viafb-autoload-on-olpc-xo1.5-only.patch @@ -0,0 +1,34 @@ +From: Ben Hutchings +Date: Sat, 20 Apr 2013 15:52:02 +0100 +Subject: viafb: Autoload on OLPC XO 1.5 only +Bug-Debian: https://bugs.debian.org/705788 +Forwarded: no + +It appears that viafb won't work automatically on all the boards for +which it has a PCI device ID match. Currently, it is blacklisted by +udev along with most other framebuffer drivers, so this doesn't matter +much. + +However, this driver is required for console support on the XO 1.5. +We need to allow it to be autoloaded on this model only, and then +un-blacklist it in udev. + +--- +--- a/drivers/video/fbdev/via/via-core.c ++++ b/drivers/video/fbdev/via/via-core.c +@@ -753,7 +753,14 @@ static struct pci_device_id via_pci_tabl + .driver_data = UNICHROME_VX900 }, + { } + }; +-MODULE_DEVICE_TABLE(pci, via_pci_table); ++ ++static const struct pci_device_id via_pci_autoload_table[] __initconst = { ++ /* OLPC XO 1.5 */ ++ { PCI_DEVICE(PCI_VENDOR_ID_VIA, UNICHROME_VX855_DID), ++ .subvendor = 0x152d, .subdevice = 0x0833 }, ++ { } ++}; ++MODULE_DEVICE_TABLE(pci, via_pci_autoload_table); + + static struct pci_driver via_driver = { + .name = "viafb", diff --git a/patches/debian/add-sysctl-to-disallow-unprivileged-CLONE_NEWUSER-by-default.patch b/patches/debian/add-sysctl-to-disallow-unprivileged-CLONE_NEWUSER-by-default.patch new file mode 100644 index 00000000000..55edbc75c0b --- /dev/null +++ b/patches/debian/add-sysctl-to-disallow-unprivileged-CLONE_NEWUSER-by-default.patch @@ -0,0 +1,93 @@ +From: Serge Hallyn +Date: Fri, 31 May 2013 19:12:12 +0000 (+0100) +Subject: add sysctl to disallow unprivileged CLONE_NEWUSER by default +Origin: http://kernel.ubuntu.com/git?p=serge%2Fubuntu-saucy.git;a=commit;h=5c847404dcb2e3195ad0057877e1422ae90892b8 + +add sysctl to disallow unprivileged CLONE_NEWUSER by default + +This is a short-term patch. Unprivileged use of CLONE_NEWUSER +is certainly an intended feature of user namespaces. However +for at least saucy we want to make sure that, if any security +issues are found, we have a fail-safe. + +Signed-off-by: Serge Hallyn +[bwh: Remove unneeded binary sysctl bits] +--- +--- a/kernel/fork.c ++++ b/kernel/fork.c +@@ -102,6 +102,11 @@ + + #define CREATE_TRACE_POINTS + #include ++#ifdef CONFIG_USER_NS ++extern int unprivileged_userns_clone; ++#else ++#define unprivileged_userns_clone 0 ++#endif + + /* + * Minimum number of threads to boot the kernel +@@ -1550,6 +1555,10 @@ static __latent_entropy struct task_stru + if ((clone_flags & (CLONE_NEWUSER|CLONE_FS)) == (CLONE_NEWUSER|CLONE_FS)) + return ERR_PTR(-EINVAL); + ++ if ((clone_flags & CLONE_NEWUSER) && !unprivileged_userns_clone) ++ if (!capable(CAP_SYS_ADMIN)) ++ return ERR_PTR(-EPERM); ++ + /* + * Thread groups must share signals as well, and detached threads + * can only be started up within the thread group. +@@ -2343,6 +2352,12 @@ SYSCALL_DEFINE1(unshare, unsigned long, + if (unshare_flags & CLONE_NEWNS) + unshare_flags |= CLONE_FS; + ++ if ((unshare_flags & CLONE_NEWUSER) && !unprivileged_userns_clone) { ++ err = -EPERM; ++ if (!capable(CAP_SYS_ADMIN)) ++ goto bad_unshare_out; ++ } ++ + err = check_unshare_flags(unshare_flags); + if (err) + goto bad_unshare_out; +--- a/kernel/sysctl.c ++++ b/kernel/sysctl.c +@@ -105,6 +105,9 @@ extern int core_uses_pid; + extern char core_pattern[]; + extern unsigned int core_pipe_limit; + #endif ++#ifdef CONFIG_USER_NS ++extern int unprivileged_userns_clone; ++#endif + extern int pid_max; + extern int pid_max_min, pid_max_max; + extern int percpu_pagelist_fraction; +@@ -512,6 +515,15 @@ static struct ctl_table kern_table[] = { + .mode = 0644, + .proc_handler = proc_dointvec, + }, ++#endif ++#ifdef CONFIG_USER_NS ++ { ++ .procname = "unprivileged_userns_clone", ++ .data = &unprivileged_userns_clone, ++ .maxlen = sizeof(int), ++ .mode = 0644, ++ .proc_handler = proc_dointvec, ++ }, + #endif + #ifdef CONFIG_PROC_SYSCTL + { +--- a/kernel/user_namespace.c ++++ b/kernel/user_namespace.c +@@ -26,6 +26,9 @@ + #include + #include + ++/* sysctl */ ++int unprivileged_userns_clone; ++ + static struct kmem_cache *user_ns_cachep __read_mostly; + static DEFINE_MUTEX(userns_state_mutex); + diff --git a/patches/debian/af_802154-Disable-auto-loading-as-mitigation-against.patch b/patches/debian/af_802154-Disable-auto-loading-as-mitigation-against.patch new file mode 100644 index 00000000000..3b33f845ab4 --- /dev/null +++ b/patches/debian/af_802154-Disable-auto-loading-as-mitigation-against.patch @@ -0,0 +1,29 @@ +From: Ben Hutchings +Date: Fri, 19 Nov 2010 02:12:48 +0000 +Subject: [PATCH 2/3] af_802154: Disable auto-loading as mitigation against local exploits +Forwarded: not-needed + +Recent review has revealed several bugs in obscure protocol +implementations that can be exploited by local users for denial of +service or privilege escalation. We can mitigate the effect of any +remaining vulnerabilities in such protocols by preventing unprivileged +users from loading the modules, so that they are only exploitable on +systems where the administrator has chosen to load the protocol. + +The 'af_802154' (IEEE 802.15.4) protocol is not widely used, was +not present in the 'lenny' kernel, and seems to receive only sporadic +maintenance. Therefore disable auto-loading. + +Signed-off-by: Ben Hutchings +--- + net/ieee802154/socket.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +--- a/net/ieee802154/socket.c ++++ b/net/ieee802154/socket.c +@@ -1122,4 +1122,4 @@ module_init(af_ieee802154_init); + module_exit(af_ieee802154_remove); + + MODULE_LICENSE("GPL"); +-MODULE_ALIAS_NETPROTO(PF_IEEE802154); ++/* MODULE_ALIAS_NETPROTO(PF_IEEE802154); */ diff --git a/patches/debian/amd64-don-t-warn-about-expected-w+x-pages-on-xen.patch b/patches/debian/amd64-don-t-warn-about-expected-w+x-pages-on-xen.patch new file mode 100644 index 00000000000..6827c94f1cf --- /dev/null +++ b/patches/debian/amd64-don-t-warn-about-expected-w+x-pages-on-xen.patch @@ -0,0 +1,32 @@ +From: Ben Hutchings +Date: Thu, 16 Mar 2017 03:05:43 +0000 +Subject: [amd64] Don't WARN about expected W+X pages on Xen +Bug-Debian: https://bugs.debian.org/852324 +Forwarded: not-needed + +Currently Xen PV domains (or at least dom0) on amd64 tend to have a +large number of low kernel pages with W+X permissions. It's not +obvious how to fix this, and we're not going to get any new +information by WARNing about this, but we do still want to hear about +other W+X cases. So add a condition to the WARN_ON. + +--- +--- a/arch/x86/mm/dump_pagetables.c ++++ b/arch/x86/mm/dump_pagetables.c +@@ -18,6 +18,7 @@ + #include + #include + #include ++#include + + #include + +@@ -231,7 +232,7 @@ static void note_page(struct seq_file *m + pgprotval_t pr = pgprot_val(st->current_prot); + + if (st->check_wx && (pr & _PAGE_RW) && !(pr & _PAGE_NX)) { +- WARN_ONCE(1, ++ WARN_ONCE(!(IS_ENABLED(CONFIG_X86_64) && xen_pv_domain()), + "x86/mm: Found insecure W+X mapping at address %p/%pS\n", + (void *)st->start_address, + (void *)st->start_address); diff --git a/patches/debian/arch-sh4-fix-uimage-build.patch b/patches/debian/arch-sh4-fix-uimage-build.patch new file mode 100644 index 00000000000..6fc5a08e842 --- /dev/null +++ b/patches/debian/arch-sh4-fix-uimage-build.patch @@ -0,0 +1,18 @@ +From: Nobuhiro Iwamatsu +Subject: [sh4] Fix uImage build +Bug-Debian: https://bugs.debian.org/569034 +Forwarded: not-needed + +[bwh: This was added without a description, but I think it is dealing +with a similar issue to powerpcspe-omit-uimage.patch] + +--- a/arch/sh/Makefile ++++ b/arch/sh/Makefile +@@ -75,7 +75,6 @@ + + # Give the various platforms the opportunity to set default image types + defaultimage-$(CONFIG_SUPERH32) := zImage +-defaultimage-$(CONFIG_SH_SH7785LCR) := uImage + defaultimage-$(CONFIG_SH_RSK) := uImage + defaultimage-$(CONFIG_SH_URQUELL) := uImage + defaultimage-$(CONFIG_SH_MIGOR) := uImage diff --git a/patches/debian/btrfs-warn-about-raid5-6-being-experimental-at-mount.patch b/patches/debian/btrfs-warn-about-raid5-6-being-experimental-at-mount.patch new file mode 100644 index 00000000000..4a1943dbfd0 --- /dev/null +++ b/patches/debian/btrfs-warn-about-raid5-6-being-experimental-at-mount.patch @@ -0,0 +1,35 @@ +From: Adam Borowski +Date: Tue, 28 Mar 2017 16:55:05 +0200 +Subject: btrfs: warn about RAID5/6 being experimental at mount time +Bug-Debian: https://bugs.debian.org/863290 +Origin: https://bugs.debian.org/863290#5 + +Too many people come complaining about losing their data -- and indeed, +there's no warning outside a wiki and the mailing list tribal knowledge. +Message severity chosen for consistency with XFS -- "alert" makes dmesg +produce nice red background which should get the point across. + +Signed-off-by: Adam Borowski +[bwh: Also add_taint() so this is flagged in bug reports] +--- + fs/btrfs/disk-io.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +--- a/fs/btrfs/disk-io.c ++++ b/fs/btrfs/disk-io.c +@@ -3060,6 +3060,15 @@ retry_root_backup: + btrfs_set_and_info(fs_info, SSD, "enabling ssd optimizations"); + } + ++ if ((fs_info->avail_data_alloc_bits | ++ fs_info->avail_metadata_alloc_bits | ++ fs_info->avail_system_alloc_bits) & ++ BTRFS_BLOCK_GROUP_RAID56_MASK) { ++ btrfs_alert(fs_info, ++ "btrfs RAID5/6 is EXPERIMENTAL and has known data-loss bugs"); ++ add_taint(TAINT_USER, LOCKDEP_STILL_OK); ++ } ++ + /* + * Mount does not set all options immediately, we can do it now and do + * not have to wait for transaction commit diff --git a/patches/debian/cdc_ncm-cdc_mbim-use-ncm-by-default.patch b/patches/debian/cdc_ncm-cdc_mbim-use-ncm-by-default.patch new file mode 100644 index 00000000000..e169cf5d792 --- /dev/null +++ b/patches/debian/cdc_ncm-cdc_mbim-use-ncm-by-default.patch @@ -0,0 +1,27 @@ +From: Ben Hutchings +Subject: cdc_ncm,cdc_mbim: Use NCM by default +Date: Sun, 31 Mar 2013 03:58:04 +0100 +Forwarded: not-needed + +Devices that support both NCM and MBIM modes should be kept in NCM +mode unless there is userland support for MBIM. + +Set the default value of cdc_ncm.prefer_mbim to false and leave it to +userland (modem-manager) to override this with a modprobe.conf file +once it's ready to speak MBIM. + +--- +--- a/drivers/net/usb/cdc_ncm.c ++++ b/drivers/net/usb/cdc_ncm.c +@@ -53,11 +53,7 @@ + #include + #include + +-#if IS_ENABLED(CONFIG_USB_NET_CDC_MBIM) +-static bool prefer_mbim = true; +-#else + static bool prefer_mbim; +-#endif + module_param(prefer_mbim, bool, S_IRUGO | S_IWUSR); + MODULE_PARM_DESC(prefer_mbim, "Prefer MBIM setting on dual NCM/MBIM functions"); + diff --git a/patches/debian/dccp-disable-auto-loading-as-mitigation-against-local-exploits.patch b/patches/debian/dccp-disable-auto-loading-as-mitigation-against-local-exploits.patch new file mode 100644 index 00000000000..83583184e48 --- /dev/null +++ b/patches/debian/dccp-disable-auto-loading-as-mitigation-against-local-exploits.patch @@ -0,0 +1,41 @@ +From: Ben Hutchings +Date: Thu, 16 Feb 2017 19:09:17 +0000 +Subject: dccp: Disable auto-loading as mitigation against local exploits +Forwarded: not-needed + +We can mitigate the effect of vulnerabilities in obscure protocols by +preventing unprivileged users from loading the modules, so that they +are only exploitable on systems where the administrator has chosen to +load the protocol. + +The 'dccp' protocol is not actively maintained or widely used. +Therefore disable auto-loading. + +Signed-off-by: Ben Hutchings +--- +--- a/net/dccp/ipv4.c ++++ b/net/dccp/ipv4.c +@@ -1071,8 +1071,8 @@ module_exit(dccp_v4_exit); + * values directly, Also cover the case where the protocol is not specified, + * i.e. net-pf-PF_INET-proto-0-type-SOCK_DCCP + */ +-MODULE_ALIAS_NET_PF_PROTO_TYPE(PF_INET, 33, 6); +-MODULE_ALIAS_NET_PF_PROTO_TYPE(PF_INET, 0, 6); ++/* MODULE_ALIAS_NET_PF_PROTO_TYPE(PF_INET, 33, 6); */ ++/* MODULE_ALIAS_NET_PF_PROTO_TYPE(PF_INET, 0, 6); */ + MODULE_LICENSE("GPL"); + MODULE_AUTHOR("Arnaldo Carvalho de Melo "); + MODULE_DESCRIPTION("DCCP - Datagram Congestion Controlled Protocol"); +--- a/net/dccp/ipv6.c ++++ b/net/dccp/ipv6.c +@@ -1125,8 +1125,8 @@ module_exit(dccp_v6_exit); + * values directly, Also cover the case where the protocol is not specified, + * i.e. net-pf-PF_INET6-proto-0-type-SOCK_DCCP + */ +-MODULE_ALIAS_NET_PF_PROTO_TYPE(PF_INET6, 33, 6); +-MODULE_ALIAS_NET_PF_PROTO_TYPE(PF_INET6, 0, 6); ++/* MODULE_ALIAS_NET_PF_PROTO_TYPE(PF_INET6, 33, 6); */ ++/* MODULE_ALIAS_NET_PF_PROTO_TYPE(PF_INET6, 0, 6); */ + MODULE_LICENSE("GPL"); + MODULE_AUTHOR("Arnaldo Carvalho de Melo "); + MODULE_DESCRIPTION("DCCPv6 - Datagram Congestion Controlled Protocol"); diff --git a/patches/debian/decnet-Disable-auto-loading-as-mitigation-against-lo.patch b/patches/debian/decnet-Disable-auto-loading-as-mitigation-against-lo.patch new file mode 100644 index 00000000000..fc3de36fb81 --- /dev/null +++ b/patches/debian/decnet-Disable-auto-loading-as-mitigation-against-lo.patch @@ -0,0 +1,32 @@ +From: Ben Hutchings +Date: Sat, 20 Nov 2010 02:24:55 +0000 +Subject: [PATCH] decnet: Disable auto-loading as mitigation against local exploits +Forwarded: not-needed + +Recent review has revealed several bugs in obscure protocol +implementations that can be exploited by local users for denial of +service or privilege escalation. We can mitigate the effect of any +remaining vulnerabilities in such protocols by preventing unprivileged +users from loading the modules, so that they are only exploitable on +systems where the administrator has chosen to load the protocol. + +The 'decnet' protocol is unmaintained and of mostly historical +interest, and the user-space support package 'dnet-common' loads the +module explicitly. Therefore disable auto-loading. + +Signed-off-by: Ben Hutchings +--- + net/decnet/af_decnet.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +--- a/net/decnet/af_decnet.c ++++ b/net/decnet/af_decnet.c +@@ -2359,7 +2359,7 @@ static const struct proto_ops dn_proto_o + MODULE_DESCRIPTION("The Linux DECnet Network Protocol"); + MODULE_AUTHOR("Linux DECnet Project Team"); + MODULE_LICENSE("GPL"); +-MODULE_ALIAS_NETPROTO(PF_DECnet); ++/* MODULE_ALIAS_NETPROTO(PF_DECnet); */ + + static const char banner[] __initconst = KERN_INFO + "NET4: DECnet for Linux: V.2.5.68s (C) 1995-2003 Linux DECnet Project Team\n"; diff --git a/patches/debian/dfsg/arch-powerpc-platforms-8xx-ucode-disable.patch b/patches/debian/dfsg/arch-powerpc-platforms-8xx-ucode-disable.patch new file mode 100644 index 00000000000..0e5176908ac --- /dev/null +++ b/patches/debian/dfsg/arch-powerpc-platforms-8xx-ucode-disable.patch @@ -0,0 +1,29 @@ +From: Ben Hutchings +Date: Mon, 13 Apr 2009 17:34:00 +0100 +Subject: Remove microcode patches for mgsuvd (not enabled in Debian configs) +Forwarded: not-needed + +diff --git a/arch/powerpc/platforms/8xx/Kconfig b/arch/powerpc/platforms/8xx/Kconfig +index 48a920a..81570b6 100644 +--- a/arch/powerpc/platforms/8xx/Kconfig ++++ b/arch/powerpc/platforms/8xx/Kconfig +@@ -160,16 +160,19 @@ config NO_UCODE_PATCH + + config USB_SOF_UCODE_PATCH + bool "USB SOF patch" ++ depends on BROKEN + help + Help not implemented yet, coming soon. + + config I2C_SPI_UCODE_PATCH + bool "I2C/SPI relocation patch" ++ depends on BROKEN + help + Help not implemented yet, coming soon. + + config I2C_SPI_SMC1_UCODE_PATCH + bool "I2C/SPI/SMC1 relocation patch" ++ depends on BROKEN + help + Help not implemented yet, coming soon. + diff --git a/patches/debian/dfsg/drivers-media-dvb-dvb-usb-af9005-disable.patch b/patches/debian/dfsg/drivers-media-dvb-dvb-usb-af9005-disable.patch new file mode 100644 index 00000000000..4e42da9a9bc --- /dev/null +++ b/patches/debian/dfsg/drivers-media-dvb-dvb-usb-af9005-disable.patch @@ -0,0 +1,15 @@ +From: Ben Hutchings +Date: Mon, 17 Aug 2009 02:45:41 +0100 +Subject: dvb-usb-af9005: mark as broken +Forwarded: not-needed + +--- a/drivers/media/usb/dvb-usb/Kconfig ++++ b/drivers/media/usb/dvb-usb/Kconfig +@@ -227,6 +227,7 @@ config DVB_USB_OPERA1 + + config DVB_USB_AF9005 + tristate "Afatech AF9005 DVB-T USB1.1 support" ++ depends on BROKEN + depends on DVB_USB + select MEDIA_TUNER_MT2060 if MEDIA_SUBDRV_AUTOSELECT + select MEDIA_TUNER_QT1010 if MEDIA_SUBDRV_AUTOSELECT diff --git a/patches/debian/dfsg/drivers-net-appletalk-cops.patch b/patches/debian/dfsg/drivers-net-appletalk-cops.patch new file mode 100644 index 00000000000..2b195ec4d9e --- /dev/null +++ b/patches/debian/dfsg/drivers-net-appletalk-cops.patch @@ -0,0 +1,50 @@ +From: Frederik Schüler +Date: Fri, 05 Jan 2007 15:55:24 +0000 +Subject: Add removal patches for: 3c359, smctr, keyspan, cops +Forwarded: not-needed + +diff -ruN a/drivers/net/appletalk/Kconfig b/drivers/net/appletalk/Kconfig +--- a/drivers/net/appletalk/Kconfig 2006-11-29 21:57:37.000000000 +0000 ++++ b/drivers/net/appletalk/Kconfig 2007-01-05 15:34:44.000000000 +0000 +@@ -49,32 +49,6 @@ + This driver is experimental, which means that it may not work. + See the file . + +-config COPS +- tristate "COPS LocalTalk PC support" +- depends on DEV_APPLETALK && (ISA || EISA) +- help +- This allows you to use COPS AppleTalk cards to connect to LocalTalk +- networks. You also need version 1.3.3 or later of the netatalk +- package. This driver is experimental, which means that it may not +- work. This driver will only work if you choose "AppleTalk DDP" +- networking support, above. +- Please read the file . +- +-config COPS_DAYNA +- bool "Dayna firmware support" +- depends on COPS +- help +- Support COPS compatible cards with Dayna style firmware (Dayna +- DL2000/ Daynatalk/PC (half length), COPS LT-95, Farallon PhoneNET PC +- III, Farallon PhoneNET PC II). +- +-config COPS_TANGENT +- bool "Tangent firmware support" +- depends on COPS +- help +- Support COPS compatible cards with Tangent style firmware (Tangent +- ATB_II, Novell NL-1000, Daystar Digital LT-200. +- + config IPDDP + tristate "Appletalk-IP driver support" + depends on DEV_APPLETALK && ATALK +diff -ruN a/drivers/net/appletalk/Makefile b/drivers/net/appletalk/Makefile +--- a/drivers/net/appletalk/Makefile 2006-11-29 21:57:37.000000000 +0000 ++++ b/drivers/net/appletalk/Makefile 2007-01-05 15:34:11.000000000 +0000 +@@ -3,5 +3,4 @@ + # + + obj-$(CONFIG_IPDDP) += ipddp.o +-obj-$(CONFIG_COPS) += cops.o + obj-$(CONFIG_LTPC) += ltpc.o diff --git a/patches/debian/dfsg/files-1 b/patches/debian/dfsg/files-1 new file mode 100644 index 00000000000..e1c0edfc959 --- /dev/null +++ b/patches/debian/dfsg/files-1 @@ -0,0 +1,16 @@ +rm Documentation/netlabel/draft-ietf-cipso-ipsecurity-01.txt + +rm arch/powerpc/sysdev/micropatch.c + +rm drivers/media/usb/dvb-usb/af9005-script.h + +rm drivers/media/i2c/vs6624.c + +rm drivers/net/appletalk/cops.c +rm drivers/net/appletalk/cops.h +rm drivers/net/appletalk/cops_ffdrv.h +rm drivers/net/appletalk/cops_ltdrv.h + +# These include apparently obfuscated code +rm drivers/video/fbdev/nvidia/ +rm drivers/video/fbdev/riva/ diff --git a/patches/debian/dfsg/video-remove-nvidiafb-and-rivafb.patch b/patches/debian/dfsg/video-remove-nvidiafb-and-rivafb.patch new file mode 100644 index 00000000000..9e251358d31 --- /dev/null +++ b/patches/debian/dfsg/video-remove-nvidiafb-and-rivafb.patch @@ -0,0 +1,130 @@ +From: Ben Hutchings +Date: Sat, 2 Jun 2012 19:53:38 +0100 +Subject: video: Remove nvidiafb and rivafb +Bug-Debian: https://bugs.debian.org/383481 +Forwarded: no + +These drivers contain register programming code provided by the +hardware vendor that appears to have been deliberately obfuscated. +This is arguably not the preferred form for modification. + +These drivers are also largely redundant with nouveau. The RIVA 128 +(NV3) is not supported by nouveau but is about 15 years old and +probably discontinued 10 years ago. + +--- +--- a/drivers/video/fbdev/Kconfig ++++ b/drivers/video/fbdev/Kconfig +@@ -991,101 +991,6 @@ config FB_ATMEL_STN + help + This enables support for the AT91/AT32 LCD Controller. + +-config FB_NVIDIA +- tristate "nVidia Framebuffer Support" +- depends on FB && PCI +- select FB_BACKLIGHT if FB_NVIDIA_BACKLIGHT +- select FB_MODE_HELPERS +- select FB_CFB_FILLRECT +- select FB_CFB_COPYAREA +- select FB_CFB_IMAGEBLIT +- select BITREVERSE +- select VGASTATE +- help +- This driver supports graphics boards with the nVidia chips, TNT +- and newer. For very old chipsets, such as the RIVA128, then use +- the rivafb. +- Say Y if you have such a graphics board. +- +- To compile this driver as a module, choose M here: the +- module will be called nvidiafb. +- +-config FB_NVIDIA_I2C +- bool "Enable DDC Support" +- depends on FB_NVIDIA +- select FB_DDC +- help +- This enables I2C support for nVidia Chipsets. This is used +- only for getting EDID information from the attached display +- allowing for robust video mode handling and switching. +- +- Because fbdev-2.6 requires that drivers must be able to +- independently validate video mode parameters, you should say Y +- here. +- +-config FB_NVIDIA_DEBUG +- bool "Lots of debug output" +- depends on FB_NVIDIA +- default n +- help +- Say Y here if you want the nVidia driver to output all sorts +- of debugging information to provide to the maintainer when +- something goes wrong. +- +-config FB_NVIDIA_BACKLIGHT +- bool "Support for backlight control" +- depends on FB_NVIDIA +- default y +- help +- Say Y here if you want to control the backlight of your display. +- +-config FB_RIVA +- tristate "nVidia Riva support" +- depends on FB && PCI +- select FB_BACKLIGHT if FB_RIVA_BACKLIGHT +- select FB_MODE_HELPERS +- select FB_CFB_FILLRECT +- select FB_CFB_COPYAREA +- select FB_CFB_IMAGEBLIT +- select BITREVERSE +- select VGASTATE +- help +- This driver supports graphics boards with the nVidia Riva/Geforce +- chips. +- Say Y if you have such a graphics board. +- +- To compile this driver as a module, choose M here: the +- module will be called rivafb. +- +-config FB_RIVA_I2C +- bool "Enable DDC Support" +- depends on FB_RIVA +- select FB_DDC +- help +- This enables I2C support for nVidia Chipsets. This is used +- only for getting EDID information from the attached display +- allowing for robust video mode handling and switching. +- +- Because fbdev-2.6 requires that drivers must be able to +- independently validate video mode parameters, you should say Y +- here. +- +-config FB_RIVA_DEBUG +- bool "Lots of debug output" +- depends on FB_RIVA +- default n +- help +- Say Y here if you want the Riva driver to output all sorts +- of debugging information to provide to the maintainer when +- something goes wrong. +- +-config FB_RIVA_BACKLIGHT +- bool "Support for backlight control" +- depends on FB_RIVA +- default y +- help +- Say Y here if you want to control the backlight of your display. +- + config FB_I740 + tristate "Intel740 support" + depends on FB && PCI +--- a/drivers/video/fbdev/Makefile ++++ b/drivers/video/fbdev/Makefile +@@ -22,8 +22,6 @@ obj-$(CONFIG_FB_PM3) += pm3fb.o + + obj-$(CONFIG_FB_I740) += i740fb.o + obj-$(CONFIG_FB_MATROX) += matrox/ +-obj-$(CONFIG_FB_RIVA) += riva/ +-obj-$(CONFIG_FB_NVIDIA) += nvidia/ + obj-$(CONFIG_FB_ATY) += aty/ macmodes.o + obj-$(CONFIG_FB_ATY128) += aty/ macmodes.o + obj-$(CONFIG_FB_RADEON) += aty/ diff --git a/patches/debian/dfsg/vs6624-disable.patch b/patches/debian/dfsg/vs6624-disable.patch new file mode 100644 index 00000000000..7a62d6bd3db --- /dev/null +++ b/patches/debian/dfsg/vs6624-disable.patch @@ -0,0 +1,15 @@ +From: Ben Hutchings +Date: Sun, 27 May 2012 01:56:58 +0100 +Subject: vs6624: mark as broken +Forwarded: not-needed + +--- a/drivers/media/i2c/Kconfig ++++ b/drivers/media/i2c/Kconfig +@@ -422,6 +422,7 @@ config VIDEO_OV7670 + controller. + + config VIDEO_VS6624 ++ depends on BROKEN + tristate "ST VS6624 sensor support" + depends on VIDEO_V4L2 && I2C + depends on MEDIA_CAMERA_SUPPORT diff --git a/patches/debian/fanotify-taint-on-use-of-fanotify_access_permissions.patch b/patches/debian/fanotify-taint-on-use-of-fanotify_access_permissions.patch new file mode 100644 index 00000000000..3806f94bd32 --- /dev/null +++ b/patches/debian/fanotify-taint-on-use-of-fanotify_access_permissions.patch @@ -0,0 +1,29 @@ +From: Ben Hutchings +Subject: fanotify: Taint on use of FANOTIFY_ACCESS_PERMISSIONS +Date: Wed, 13 Jul 2016 01:37:22 +0100 +Forwarded: not-needed + +Various free and proprietary AV products use this feature and users +apparently want it. But punting access checks to userland seems like +an easy way to deadlock the system, and there will be nothing we can +do about that. So warn and taint the kernel if this feature is +actually used. + +--- +--- a/fs/notify/fanotify/fanotify_user.c ++++ b/fs/notify/fanotify/fanotify_user.c +@@ -866,6 +866,14 @@ SYSCALL_DEFINE5(fanotify_mark, int, fano + if (mask & ~valid_mask) + return -EINVAL; + ++#ifdef CONFIG_FANOTIFY_ACCESS_PERMISSIONS ++ if (mask & FAN_ALL_PERM_EVENTS) { ++ pr_warn_once("%s (%d): Using fanotify permission checks may lead to deadlock; tainting kernel\n", ++ current->comm, current->pid); ++ add_taint(TAINT_USER, LOCKDEP_STILL_OK); ++ } ++#endif ++ + f = fdget(fanotify_fd); + if (unlikely(!f.file)) + return -EBADF; diff --git a/patches/debian/firmware_class-refer-to-debian-wiki-firmware-page.patch b/patches/debian/firmware_class-refer-to-debian-wiki-firmware-page.patch new file mode 100644 index 00000000000..a8c1c361c6f --- /dev/null +++ b/patches/debian/firmware_class-refer-to-debian-wiki-firmware-page.patch @@ -0,0 +1,52 @@ +From: Ben Hutchings +Date: Mon, 12 Mar 2018 01:14:03 +0000 +Subject: firmware_class: Refer to Debian wiki page when logging missing firmware +Bug-Debian: https://bugs.debian.org/888405 +Forwarded: not-needed + +If firmware loading fails due to a missing file, log a second error +message referring to our wiki page about firmware. This will explain +why some firmware is in non-free, or can't be packaged at all. Only +do this once per boot. + +Do something similar in the radeon and amdgpu drivers, where we have +an early check to avoid failing at a point where we cannot display +anything. + +--- +--- a/drivers/base/firmware_class.c ++++ b/drivers/base/firmware_class.c +@@ -430,9 +430,12 @@ fw_get_filesystem_firmware(struct device + } + __putname(path); + +- if (rc) ++ if (rc) { + dev_err(device, "firmware: failed to load %s (%d)\n", + buf->fw_id, rc); ++ if (rc == -ENOENT) ++ pr_err_once("See https://wiki.debian.org/Firmware for information about missing firmware\n"); ++ } + + return rc; + } +--- a/drivers/gpu/drm/radeon/radeon_drv.c ++++ b/drivers/gpu/drm/radeon/radeon_drv.c +@@ -367,6 +367,7 @@ static int radeon_pci_probe(struct pci_d + if ((ent->driver_data & RADEON_FAMILY_MASK) >= CHIP_R600 && + !radeon_firmware_installed()) { + DRM_ERROR("radeon kernel modesetting for R600 or later requires firmware installed\n"); ++ pr_err_once("See https://wiki.debian.org/Firmware for information about missing firmware\n"); + return -ENODEV; + } + +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +@@ -605,6 +605,7 @@ static int amdgpu_pci_probe(struct pci_d + + if (!amdgpu_firmware_installed()) { + DRM_ERROR("amdgpu requires firmware installed\n"); ++ pr_err_once("See https://wiki.debian.org/Firmware for information about missing firmware\n"); + return -ENODEV; + } + diff --git a/patches/debian/fjes-disable-autoload.patch b/patches/debian/fjes-disable-autoload.patch new file mode 100644 index 00000000000..59b56708e71 --- /dev/null +++ b/patches/debian/fjes-disable-autoload.patch @@ -0,0 +1,24 @@ +From: Ben Hutchings +Date: Sat, 18 Mar 2017 20:47:58 +0000 +Subject: fjes: Disable auto-loading +Bug-Debian: https://bugs.debian.org/853976 +Forwarded: no + +fjes matches a generic ACPI device ID, and relies on its probe +function to distinguish whether that really corresponds to a supported +device. Very few system will need the driver and it wastes memory on +all the other systems where the same device ID appears, so disable +auto-loading. + +--- +--- a/drivers/net/fjes/fjes_main.c ++++ b/drivers/net/fjes/fjes_main.c +@@ -81,7 +81,7 @@ static const struct acpi_device_id fjes_ + {ACPI_MOTHERBOARD_RESOURCE_HID, 0}, + {"", 0}, + }; +-MODULE_DEVICE_TABLE(acpi, fjes_acpi_ids); ++/* MODULE_DEVICE_TABLE(acpi, fjes_acpi_ids); */ + + static struct acpi_driver fjes_acpi_driver = { + .name = DRV_NAME, diff --git a/patches/debian/fs-enable-link-security-restrictions-by-default.patch b/patches/debian/fs-enable-link-security-restrictions-by-default.patch new file mode 100644 index 00000000000..d487c87f4da --- /dev/null +++ b/patches/debian/fs-enable-link-security-restrictions-by-default.patch @@ -0,0 +1,22 @@ +From: Ben Hutchings +Subject: fs: Enable link security restrictions by default +Date: Fri, 02 Nov 2012 05:32:06 +0000 +Bug-Debian: https://bugs.debian.org/609455 +Forwarded: not-needed + +This reverts commit 561ec64ae67ef25cac8d72bb9c4bfc955edfd415 +('VFS: don't do protected {sym,hard}links by default'). + +--- a/fs/namei.c ++++ b/fs/namei.c +@@ -847,8 +847,8 @@ static inline void put_link(struct namei + path_put(&last->link); + } + +-int sysctl_protected_symlinks __read_mostly = 0; +-int sysctl_protected_hardlinks __read_mostly = 0; ++int sysctl_protected_symlinks __read_mostly = 1; ++int sysctl_protected_hardlinks __read_mostly = 1; + + /** + * may_follow_link - Check symlink following for unsafe situations diff --git a/patches/debian/gitignore.patch b/patches/debian/gitignore.patch new file mode 100644 index 00000000000..3932721d53f --- /dev/null +++ b/patches/debian/gitignore.patch @@ -0,0 +1,44 @@ +From: Ian Campbell +Date: Thu, 17 Jan 2013 08:55:21 +0000 +Subject: Tweak gitignore for Debian pkg-kernel using git svn. +Forwarded: not-needed + +[bwh: Tweak further for pure git] + +--- a/.gitignore ++++ b/.gitignore +@@ -61,23 +61,11 @@ modules.builtin + /*.spec + + # +-# Debian directory (make deb-pkg) +-# +-/debian/ +- +-# + # tar directory (make tar*-pkg) + # + /tar-install/ + + # +-# git files that we don't want to ignore even if they are dot-files +-# +-!.gitignore +-!.mailmap +-!.cocciconfig +- +-# + # Generated include files + # + include/config +@@ -122,3 +110,10 @@ all.config + + # Kdevelop4 + *.kdev4 ++ ++# ++# Debian packaging: ignore everything at the top level, since it isn't ++# included in our repository ++# ++/* ++!/debian/ diff --git a/patches/debian/i386-686-pae-pci-set-pci-nobios-by-default.patch b/patches/debian/i386-686-pae-pci-set-pci-nobios-by-default.patch new file mode 100644 index 00000000000..2787c2518b5 --- /dev/null +++ b/patches/debian/i386-686-pae-pci-set-pci-nobios-by-default.patch @@ -0,0 +1,27 @@ +From: Ben Hutchings +Date: Tue, 16 Feb 2016 02:45:42 +0000 +Subject: [i386/686-pae] PCI: Set pci=nobios by default +Forwarded: not-needed + +CONFIG_PCI_GOBIOS results in physical addresses 640KB-1MB being mapped +W+X, which is undesirable for security reasons and will result in a +warning at boot now that we enable CONFIG_DEBUG_WX. + +This can be overridden using the kernel parameter "pci=nobios", but we +want to disable W+X by default. Disable PCI BIOS probing by default; +it can still be enabled using "pci=bios". + +--- +--- a/arch/x86/pci/common.c ++++ b/arch/x86/pci/common.c +@@ -20,8 +20,8 @@ + #include + #include + +-unsigned int pci_probe = PCI_PROBE_BIOS | PCI_PROBE_CONF1 | PCI_PROBE_CONF2 | +- PCI_PROBE_MMCONF; ++unsigned int pci_probe = PCI_PROBE_CONF1 | PCI_PROBE_CONF2 | PCI_PROBE_MMCONF | ++ (IS_ENABLED(CONFIG_X86_64) || IS_ENABLED(CONFIG_X86_PAE) ? 0 : PCI_PROBE_BIOS); + + unsigned int pci_early_dump_regs; + static int pci_bf_sort; diff --git a/patches/debian/iwlwifi-do-not-request-unreleased-firmware.patch b/patches/debian/iwlwifi-do-not-request-unreleased-firmware.patch new file mode 100644 index 00000000000..c8061436d00 --- /dev/null +++ b/patches/debian/iwlwifi-do-not-request-unreleased-firmware.patch @@ -0,0 +1,26 @@ +From: Ben Hutchings +Subject: iwlwifi: Do not request unreleased firmware for IWL6000 +Bug-Debian: https://bugs.debian.org/689416 +Forwarded: not-needed + +The iwlwifi driver currently supports firmware API versions 4-6 for +these devices. It will request the file for the latest supported +version and then fall back to earlier versions. However, the latest +version that has actually been released is 4, so we expect the +requests for versions 6 and then 5 to fail. + +The installer appears to report any failed request, and it is probably +not easy to detect that this particular failure is harmless. So stop +requesting the unreleased firmware. + +--- a/drivers/net/wireless/intel/iwlwifi/cfg/6000.c ++++ b/drivers/net/wireless/intel/iwlwifi/cfg/6000.c +@@ -31,7 +31,7 @@ + #include "dvm/commands.h" /* needed for BT for now */ + + /* Highest firmware API version supported */ +-#define IWL6000_UCODE_API_MAX 6 ++#define IWL6000_UCODE_API_MAX 4 /* v5-6 are supported but not released */ + #define IWL6050_UCODE_API_MAX 5 + #define IWL6000G2_UCODE_API_MAX 6 + #define IWL6035_UCODE_API_MAX 6 diff --git a/patches/debian/kernelvariables.patch b/patches/debian/kernelvariables.patch new file mode 100644 index 00000000000..93c8c0bef8d --- /dev/null +++ b/patches/debian/kernelvariables.patch @@ -0,0 +1,95 @@ +From: Bastian Blank +Subject: kbuild: Make the toolchain variables easily overwritable +Date: Sun, 22 Feb 2009 15:39:35 +0100 +Forwarded: not-needed + +Allow make variables to be overridden for each flavour by a file in +the build tree, .kernelvariables. + +We currently use this for ARCH, KERNELRELEASE, CC, and in some cases +also CROSS_COMPILE, CFLAGS_KERNEL and CFLAGS_MODULE. + +This file can only be read after we establish the build tree, and all +use of $(ARCH) needs to be moved after this. + +--- a/Makefile ++++ b/Makefile +@@ -314,39 +314,6 @@ SUBARCH := $(shell uname -m | sed -e s/i + ARCH ?= $(SUBARCH) + CROSS_COMPILE ?= $(CONFIG_CROSS_COMPILE:"%"=%) + +-# Architecture as present in compile.h +-UTS_MACHINE := $(ARCH) +-SRCARCH := $(ARCH) +- +-# Additional ARCH settings for x86 +-ifeq ($(ARCH),i386) +- SRCARCH := x86 +-endif +-ifeq ($(ARCH),x86_64) +- SRCARCH := x86 +-endif +- +-# Additional ARCH settings for sparc +-ifeq ($(ARCH),sparc32) +- SRCARCH := sparc +-endif +-ifeq ($(ARCH),sparc64) +- SRCARCH := sparc +-endif +- +-# Additional ARCH settings for sh +-ifeq ($(ARCH),sh64) +- SRCARCH := sh +-endif +- +-# Additional ARCH settings for tile +-ifeq ($(ARCH),tilepro) +- SRCARCH := tile +-endif +-ifeq ($(ARCH),tilegx) +- SRCARCH := tile +-endif +- + KCONFIG_CONFIG ?= .config + export KCONFIG_CONFIG + +@@ -395,6 +362,38 @@ CFLAGS_KERNEL = + AFLAGS_KERNEL = + LDFLAGS_vmlinux = + ++-include $(obj)/.kernelvariables ++ ++# Architecture as present in compile.h ++UTS_MACHINE := $(ARCH) ++SRCARCH := $(ARCH) ++ ++# Additional ARCH settings for x86 ++ifeq ($(ARCH),i386) ++ SRCARCH := x86 ++endif ++ifeq ($(ARCH),x86_64) ++ SRCARCH := x86 ++endif ++ ++# Additional ARCH settings for sparc ++ifeq ($(ARCH),sparc64) ++ SRCARCH := sparc ++endif ++ ++# Additional ARCH settings for sh ++ifeq ($(ARCH),sh64) ++ SRCARCH := sh ++endif ++ ++# Additional ARCH settings for tile ++ifeq ($(ARCH),tilepro) ++ SRCARCH := tile ++endif ++ifeq ($(ARCH),tilegx) ++ SRCARCH := tile ++endif ++ + # Use USERINCLUDE when you must reference the UAPI directories only. + USERINCLUDE := \ + -I$(srctree)/arch/$(SRCARCH)/include/uapi \ diff --git a/patches/debian/mips-disable-werror.patch b/patches/debian/mips-disable-werror.patch new file mode 100644 index 00000000000..c56c633a5a5 --- /dev/null +++ b/patches/debian/mips-disable-werror.patch @@ -0,0 +1,23 @@ +From: Ben Hutchings +Date: Mon, 13 Sep 2010 02:16:18 +0100 +Subject: [PATCH] Partially revert "MIPS: Add -Werror to arch/mips/Kbuild" +Forwarded: not-needed + +This reverts commits 66f9ba101f54bda63ab1db97f9e9e94763d0651b and +5373633cc9253ba82547473e899cab141c54133e. + +We really don't want to add -Werror anywhere. +--- +--- a/arch/mips/Kbuild ++++ b/arch/mips/Kbuild +@@ -1,10 +1,3 @@ +-# Fail on warnings - also for files referenced in subdirs +-# -Werror can be disabled for specific files using: +-# CFLAGS_ := -Wno-error +-ifeq ($(W),) +-subdir-ccflags-y := -Werror +-endif +- + # platform specific definitions + include arch/mips/Kbuild.platforms + obj-y := $(platform-y) diff --git a/patches/debian/modpost-symbol-prefix.patch b/patches/debian/modpost-symbol-prefix.patch new file mode 100644 index 00000000000..0bda5f2424b --- /dev/null +++ b/patches/debian/modpost-symbol-prefix.patch @@ -0,0 +1,22 @@ +From: Chris Boot +Date: Mon, 01 Jul 2013 23:10:02 +0100 +Subject: modpost symbol prefix setting +Forwarded: not-needed + +[bwh: The original version of this was added by Bastian Blank. The +upstream code includes so that +can tell whether C symbols have an underscore prefix. Since we build +modpost separately from the kernel, won't exist. +However, no Debian Linux architecture uses the symbol prefix, so we +can simply omit it.] + +--- a/scripts/mod/modpost.c ++++ b/scripts/mod/modpost.c +@@ -19,7 +19,6 @@ + #include + #include + #include "modpost.h" +-#include "../../include/generated/autoconf.h" + #include "../../include/linux/license.h" + #include "../../include/linux/export.h" + diff --git a/patches/debian/powerpcspe-omit-uimage.patch b/patches/debian/powerpcspe-omit-uimage.patch new file mode 100644 index 00000000000..cb80858936c --- /dev/null +++ b/patches/debian/powerpcspe-omit-uimage.patch @@ -0,0 +1,43 @@ +Description: Prevent building uImage with missing mkimage + On some powerpc platforms, CONFIG_DEFAULT_UIMAGE is selected automatically, + which leads to uImage being built automatically with mkimage. This tool is not + available in linux's build-dependencies, and the file is not strictly + necessary, so we are omitting this step in the build process, Debian-specific. +Author: Roland Stigge +Bug-Debian: https://bugs.debian.org/708094 +Forwarded: not-needed + +--- a/arch/powerpc/boot/Makefile ++++ b/arch/powerpc/boot/Makefile +@@ -221,7 +221,6 @@ image-$(CONFIG_PPC_CHRP) += zImage.chrp + image-$(CONFIG_PPC_EFIKA) += zImage.chrp + image-$(CONFIG_PPC_PMAC) += zImage.pmac + image-$(CONFIG_PPC_HOLLY) += dtbImage.holly +-image-$(CONFIG_DEFAULT_UIMAGE) += uImage + image-$(CONFIG_EPAPR_BOOT) += zImage.epapr + + # +@@ -280,23 +279,6 @@ image-$(CONFIG_MPC834x_MDS) += cuImage. + image-$(CONFIG_MPC836x_MDS) += cuImage.mpc836x_mds + image-$(CONFIG_ASP834x) += dtbImage.asp834x-redboot + +-# Board ports in arch/powerpc/platform/85xx/Kconfig +-image-$(CONFIG_MPC8540_ADS) += cuImage.mpc8540ads +-image-$(CONFIG_MPC8560_ADS) += cuImage.mpc8560ads +-image-$(CONFIG_MPC85xx_CDS) += cuImage.mpc8541cds \ +- cuImage.mpc8548cds_32b \ +- cuImage.mpc8555cds +-image-$(CONFIG_MPC85xx_MDS) += cuImage.mpc8568mds +-image-$(CONFIG_MPC85xx_DS) += cuImage.mpc8544ds \ +- cuImage.mpc8572ds +-image-$(CONFIG_TQM8540) += cuImage.tqm8540 +-image-$(CONFIG_TQM8541) += cuImage.tqm8541 +-image-$(CONFIG_TQM8548) += cuImage.tqm8548 +-image-$(CONFIG_TQM8555) += cuImage.tqm8555 +-image-$(CONFIG_TQM8560) += cuImage.tqm8560 +-image-$(CONFIG_SBC8548) += cuImage.sbc8548 +-image-$(CONFIG_KSI8560) += cuImage.ksi8560 +- + # Board ports in arch/powerpc/platform/86xx/Kconfig + image-$(CONFIG_MVME7100) += dtbImage.mvme7100 + diff --git a/patches/debian/rds-Disable-auto-loading-as-mitigation-against-local.patch b/patches/debian/rds-Disable-auto-loading-as-mitigation-against-local.patch new file mode 100644 index 00000000000..3343aecace3 --- /dev/null +++ b/patches/debian/rds-Disable-auto-loading-as-mitigation-against-local.patch @@ -0,0 +1,34 @@ +From: Ben Hutchings +Date: Fri, 19 Nov 2010 02:12:48 +0000 +Subject: [PATCH 1/3] rds: Disable auto-loading as mitigation against local exploits +Forwarded: not-needed + +Recent review has revealed several bugs in obscure protocol +implementations that can be exploited by local users for denial of +service or privilege escalation. We can mitigate the effect of any +remaining vulnerabilities in such protocols by preventing unprivileged +users from loading the modules, so that they are only exploitable on +systems where the administrator has chosen to load the protocol. + +The 'rds' protocol is one such protocol that has been found to be +vulnerable, and which was not present in the 'lenny' kernel. +Therefore disable auto-loading. + +Signed-off-by: Ben Hutchings +--- + net/rds/af_rds.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/net/rds/af_rds.c b/net/rds/af_rds.c +index 98e0538..d8d4525 100644 +--- a/net/rds/af_rds.c ++++ b/net/rds/af_rds.c +@@ -574,4 +574,4 @@ MODULE_DESCRIPTION("RDS: Reliable Datagram Sockets" + " v" DRV_VERSION " (" DRV_RELDATE ")"); + MODULE_VERSION(DRV_VERSION); + MODULE_LICENSE("Dual BSD/GPL"); +-MODULE_ALIAS_NETPROTO(PF_RDS); ++/* MODULE_ALIAS_NETPROTO(PF_RDS); */ +-- +1.7.2.3 + diff --git a/patches/debian/revert-gpu-host1x-add-iommu-support.patch b/patches/debian/revert-gpu-host1x-add-iommu-support.patch new file mode 100644 index 00000000000..954156583cf --- /dev/null +++ b/patches/debian/revert-gpu-host1x-add-iommu-support.patch @@ -0,0 +1,456 @@ +From: Ben Hutchings +Date: Sat, 22 Jul 2017 01:14:38 +0100 +Subject: Revert "gpu: host1x: Add IOMMU support" +Forwarded: no + +This reverts commit 404bfb78daf3bedafb0bfab24947059575cbea3d, which +resulted in a build failure: + +drivers/gpu/host1x/cdma.c: In function 'host1x_pushbuffer_init': +drivers/gpu/host1x/cdma.c:94:48: error: passing argument 3 of 'dma_alloc_wc' from incompatible pointer type [-Werror=incompatible-pointer-types] + pb->mapped = dma_alloc_wc(host1x->dev, size, &pb->phys, + ^ +In file included from drivers/gpu/host1x/cdma.c:22:0: +include/linux/dma-mapping.h:773:21: note: expected 'dma_addr_t * {aka long long unsigned int *}' but argument is of type 'phys_addr_t * {aka unsigned int *}' + static inline void *dma_alloc_wc(struct device *dev, size_t size, + ^~~~~~~~~~~~ + +This code is mixing up dma_addr_t and phys_addr_t, and this looks had +to avoid when combining the two address mapping APIs. But with XEN +enabled and ARM_LPAE not enabled, as in the armmp config, dma_addr_t +is 64-bit while phys_addr_t is 32-bit. + +It also reverts commit fea20995976f4b2e8968f852a18e280487d42f0d +"gpu: host1x: Free the IOMMU domain when there is no device to attach" +and commit 8b3f5ac6b55f5f3f60723a58f14ec235a5b8cfe +"gpu: host1x: Don't fail on NULL bo physical address" which depend on it. + +--- +--- a/drivers/gpu/host1x/cdma.c ++++ b/drivers/gpu/host1x/cdma.c +@@ -51,15 +51,9 @@ static void host1x_pushbuffer_destroy(st + struct host1x_cdma *cdma = pb_to_cdma(pb); + struct host1x *host1x = cdma_to_host1x(cdma); + +- if (!pb->phys) +- return; +- +- if (host1x->domain) { +- iommu_unmap(host1x->domain, pb->dma, pb->alloc_size); +- free_iova(&host1x->iova, iova_pfn(&host1x->iova, pb->dma)); +- } +- +- dma_free_wc(host1x->dev, pb->alloc_size, pb->mapped, pb->phys); ++ if (pb->phys != 0) ++ dma_free_wc(host1x->dev, pb->size_bytes + 4, pb->mapped, ++ pb->phys); + + pb->mapped = NULL; + pb->phys = 0; +@@ -72,64 +66,28 @@ static int host1x_pushbuffer_init(struct + { + struct host1x_cdma *cdma = pb_to_cdma(pb); + struct host1x *host1x = cdma_to_host1x(cdma); +- struct iova *alloc; +- u32 size; +- int err; + + pb->mapped = NULL; + pb->phys = 0; +- pb->size = HOST1X_PUSHBUFFER_SLOTS * 8; +- +- size = pb->size + 4; ++ pb->size_bytes = HOST1X_PUSHBUFFER_SLOTS * 8; + + /* initialize buffer pointers */ +- pb->fence = pb->size - 8; ++ pb->fence = pb->size_bytes - 8; + pb->pos = 0; + +- if (host1x->domain) { +- unsigned long shift; +- +- size = iova_align(&host1x->iova, size); +- +- pb->mapped = dma_alloc_wc(host1x->dev, size, &pb->phys, +- GFP_KERNEL); +- if (!pb->mapped) +- return -ENOMEM; +- +- shift = iova_shift(&host1x->iova); +- alloc = alloc_iova(&host1x->iova, size >> shift, +- host1x->iova_end >> shift, true); +- if (!alloc) { +- err = -ENOMEM; +- goto iommu_free_mem; +- } +- +- pb->dma = iova_dma_addr(&host1x->iova, alloc); +- err = iommu_map(host1x->domain, pb->dma, pb->phys, size, +- IOMMU_READ); +- if (err) +- goto iommu_free_iova; +- } else { +- pb->mapped = dma_alloc_wc(host1x->dev, size, &pb->phys, +- GFP_KERNEL); +- if (!pb->mapped) +- return -ENOMEM; +- +- pb->dma = pb->phys; +- } +- +- pb->alloc_size = size; ++ /* allocate and map pushbuffer memory */ ++ pb->mapped = dma_alloc_wc(host1x->dev, pb->size_bytes + 4, &pb->phys, ++ GFP_KERNEL); ++ if (!pb->mapped) ++ goto fail; + + host1x_hw_pushbuffer_init(host1x, pb); + + return 0; + +-iommu_free_iova: +- __free_iova(&host1x->iova, alloc); +-iommu_free_mem: +- dma_free_wc(host1x->dev, pb->alloc_size, pb->mapped, pb->phys); +- +- return err; ++fail: ++ host1x_pushbuffer_destroy(pb); ++ return -ENOMEM; + } + + /* +@@ -143,7 +101,7 @@ static void host1x_pushbuffer_push(struc + WARN_ON(pb->pos == pb->fence); + *(p++) = op1; + *(p++) = op2; +- pb->pos = (pb->pos + 8) & (pb->size - 1); ++ pb->pos = (pb->pos + 8) & (pb->size_bytes - 1); + } + + /* +@@ -153,7 +111,7 @@ static void host1x_pushbuffer_push(struc + static void host1x_pushbuffer_pop(struct push_buffer *pb, unsigned int slots) + { + /* Advance the next write position */ +- pb->fence = (pb->fence + slots * 8) & (pb->size - 1); ++ pb->fence = (pb->fence + slots * 8) & (pb->size_bytes - 1); + } + + /* +@@ -161,7 +119,7 @@ static void host1x_pushbuffer_pop(struct + */ + static u32 host1x_pushbuffer_space(struct push_buffer *pb) + { +- return ((pb->fence - pb->pos) & (pb->size - 1)) / 8; ++ return ((pb->fence - pb->pos) & (pb->size_bytes - 1)) / 8; + } + + /* +--- a/drivers/gpu/host1x/cdma.h ++++ b/drivers/gpu/host1x/cdma.h +@@ -43,12 +43,10 @@ struct host1x_job; + + struct push_buffer { + void *mapped; /* mapped pushbuffer memory */ +- dma_addr_t dma; /* device address of pushbuffer */ +- phys_addr_t phys; /* physical address of pushbuffer */ ++ dma_addr_t phys; /* physical address of pushbuffer */ + u32 fence; /* index we've written */ + u32 pos; /* index to write to */ +- u32 size; +- u32 alloc_size; ++ u32 size_bytes; + }; + + struct buffer_timeout { +--- a/drivers/gpu/host1x/dev.c ++++ b/drivers/gpu/host1x/dev.c +@@ -27,7 +27,6 @@ + + #define CREATE_TRACE_POINTS + #include +-#undef CREATE_TRACE_POINTS + + #include "bus.h" + #include "channel.h" +@@ -218,37 +217,11 @@ static int host1x_probe(struct platform_ + return err; + } + +- if (iommu_present(&platform_bus_type)) { +- struct iommu_domain_geometry *geometry; +- unsigned long order; +- +- host->domain = iommu_domain_alloc(&platform_bus_type); +- if (!host->domain) +- return -ENOMEM; +- +- err = iommu_attach_device(host->domain, &pdev->dev); +- if (err == -ENODEV) { +- iommu_domain_free(host->domain); +- host->domain = NULL; +- goto skip_iommu; +- } else if (err) { +- goto fail_free_domain; +- } +- +- geometry = &host->domain->geometry; +- +- order = __ffs(host->domain->pgsize_bitmap); +- init_iova_domain(&host->iova, 1UL << order, +- geometry->aperture_start >> order); +- host->iova_end = geometry->aperture_end; +- } +- +-skip_iommu: + err = host1x_channel_list_init(&host->channel_list, + host->info->nb_channels); + if (err) { + dev_err(&pdev->dev, "failed to initialize channel list\n"); +- goto fail_detach_device; ++ return err; + } + + err = clk_prepare_enable(host->clk); +@@ -293,15 +266,6 @@ fail_unprepare_disable: + clk_disable_unprepare(host->clk); + fail_free_channels: + host1x_channel_list_free(&host->channel_list); +-fail_detach_device: +- if (host->domain) { +- put_iova_domain(&host->iova); +- iommu_detach_device(host->domain, &pdev->dev); +- } +-fail_free_domain: +- if (host->domain) +- iommu_domain_free(host->domain); +- + return err; + } + +@@ -315,12 +279,6 @@ static int host1x_remove(struct platform + reset_control_assert(host->rst); + clk_disable_unprepare(host->clk); + +- if (host->domain) { +- put_iova_domain(&host->iova); +- iommu_detach_device(host->domain, &pdev->dev); +- iommu_domain_free(host->domain); +- } +- + return 0; + } + +--- a/drivers/gpu/host1x/dev.h ++++ b/drivers/gpu/host1x/dev.h +@@ -18,8 +18,6 @@ + #define HOST1X_DEV_H + + #include +-#include +-#include + #include + #include + +@@ -117,10 +115,6 @@ struct host1x { + struct clk *clk; + struct reset_control *rst; + +- struct iommu_domain *domain; +- struct iova_domain iova; +- dma_addr_t iova_end; +- + struct mutex intr_mutex; + int intr_syncpt_irq; + +--- a/drivers/gpu/host1x/hw/cdma_hw.c ++++ b/drivers/gpu/host1x/hw/cdma_hw.c +@@ -30,7 +30,7 @@ + */ + static void push_buffer_init(struct push_buffer *pb) + { +- *(u32 *)(pb->mapped + pb->size) = host1x_opcode_restart(0); ++ *(u32 *)(pb->mapped + pb->size_bytes) = host1x_opcode_restart(0); + } + + /* +@@ -55,8 +55,8 @@ static void cdma_timeout_cpu_incr(struct + *(p++) = HOST1X_OPCODE_NOP; + *(p++) = HOST1X_OPCODE_NOP; + dev_dbg(host1x->dev, "%s: NOP at %pad+%#x\n", __func__, +- &pb->dma, getptr); +- getptr = (getptr + 8) & (pb->size - 1); ++ &pb->phys, getptr); ++ getptr = (getptr + 8) & (pb->size_bytes - 1); + } + + wmb(); +@@ -78,9 +78,10 @@ static void cdma_start(struct host1x_cdm + HOST1X_CHANNEL_DMACTRL); + + /* set base, put and end pointer */ +- host1x_ch_writel(ch, cdma->push_buffer.dma, HOST1X_CHANNEL_DMASTART); ++ host1x_ch_writel(ch, cdma->push_buffer.phys, HOST1X_CHANNEL_DMASTART); + host1x_ch_writel(ch, cdma->push_buffer.pos, HOST1X_CHANNEL_DMAPUT); +- host1x_ch_writel(ch, cdma->push_buffer.dma + cdma->push_buffer.size + 4, ++ host1x_ch_writel(ch, cdma->push_buffer.phys + ++ cdma->push_buffer.size_bytes + 4, + HOST1X_CHANNEL_DMAEND); + + /* reset GET */ +@@ -114,8 +115,9 @@ static void cdma_timeout_restart(struct + HOST1X_CHANNEL_DMACTRL); + + /* set base, end pointer (all of memory) */ +- host1x_ch_writel(ch, cdma->push_buffer.dma, HOST1X_CHANNEL_DMASTART); +- host1x_ch_writel(ch, cdma->push_buffer.dma + cdma->push_buffer.size, ++ host1x_ch_writel(ch, cdma->push_buffer.phys, HOST1X_CHANNEL_DMASTART); ++ host1x_ch_writel(ch, cdma->push_buffer.phys + ++ cdma->push_buffer.size_bytes, + HOST1X_CHANNEL_DMAEND); + + /* set GET, by loading the value in PUT (then reset GET) */ +--- a/drivers/gpu/host1x/job.c ++++ b/drivers/gpu/host1x/job.c +@@ -178,10 +178,9 @@ static int do_waitchks(struct host1x_job + return 0; + } + +-static unsigned int pin_job(struct host1x *host, struct host1x_job *job) ++static unsigned int pin_job(struct host1x_job *job) + { + unsigned int i; +- int err; + + job->num_unpins = 0; + +@@ -191,12 +190,12 @@ static unsigned int pin_job(struct host1 + dma_addr_t phys_addr; + + reloc->target.bo = host1x_bo_get(reloc->target.bo); +- if (!reloc->target.bo) { +- err = -EINVAL; ++ if (!reloc->target.bo) + goto unpin; +- } + + phys_addr = host1x_bo_pin(reloc->target.bo, &sgt); ++ if (!phys_addr) ++ goto unpin; + + job->addr_phys[job->num_unpins] = phys_addr; + job->unpins[job->num_unpins].bo = reloc->target.bo; +@@ -206,63 +205,28 @@ static unsigned int pin_job(struct host1 + + for (i = 0; i < job->num_gathers; i++) { + struct host1x_job_gather *g = &job->gathers[i]; +- size_t gather_size = 0; +- struct scatterlist *sg; + struct sg_table *sgt; + dma_addr_t phys_addr; +- unsigned long shift; +- struct iova *alloc; +- unsigned int j; + + g->bo = host1x_bo_get(g->bo); +- if (!g->bo) { +- err = -EINVAL; ++ if (!g->bo) + goto unpin; +- } + + phys_addr = host1x_bo_pin(g->bo, &sgt); ++ if (!phys_addr) ++ goto unpin; + +- if (!IS_ENABLED(CONFIG_TEGRA_HOST1X_FIREWALL) && host->domain) { +- for_each_sg(sgt->sgl, sg, sgt->nents, j) +- gather_size += sg->length; +- gather_size = iova_align(&host->iova, gather_size); +- +- shift = iova_shift(&host->iova); +- alloc = alloc_iova(&host->iova, gather_size >> shift, +- host->iova_end >> shift, true); +- if (!alloc) { +- err = -ENOMEM; +- goto unpin; +- } +- +- err = iommu_map_sg(host->domain, +- iova_dma_addr(&host->iova, alloc), +- sgt->sgl, sgt->nents, IOMMU_READ); +- if (err == 0) { +- __free_iova(&host->iova, alloc); +- err = -EINVAL; +- goto unpin; +- } +- +- job->addr_phys[job->num_unpins] = +- iova_dma_addr(&host->iova, alloc); +- job->unpins[job->num_unpins].size = gather_size; +- } else { +- job->addr_phys[job->num_unpins] = phys_addr; +- } +- +- job->gather_addr_phys[i] = job->addr_phys[job->num_unpins]; +- ++ job->addr_phys[job->num_unpins] = phys_addr; + job->unpins[job->num_unpins].bo = g->bo; + job->unpins[job->num_unpins].sgt = sgt; + job->num_unpins++; + } + +- return 0; ++ return job->num_unpins; + + unpin: + host1x_job_unpin(job); +- return err; ++ return 0; + } + + static int do_relocs(struct host1x_job *job, struct host1x_job_gather *g) +@@ -631,8 +595,8 @@ int host1x_job_pin(struct host1x_job *jo + host1x_syncpt_load(host->syncpt + i); + + /* pin memory */ +- err = pin_job(host, job); +- if (err) ++ err = pin_job(job); ++ if (!err) + goto out; + + if (IS_ENABLED(CONFIG_TEGRA_HOST1X_FIREWALL)) { +@@ -680,19 +644,11 @@ EXPORT_SYMBOL(host1x_job_pin); + + void host1x_job_unpin(struct host1x_job *job) + { +- struct host1x *host = dev_get_drvdata(job->channel->dev->parent); + unsigned int i; + + for (i = 0; i < job->num_unpins; i++) { + struct host1x_job_unpin_data *unpin = &job->unpins[i]; + +- if (!IS_ENABLED(CONFIG_TEGRA_HOST1X_FIREWALL) && host->domain) { +- iommu_unmap(host->domain, job->addr_phys[i], +- unpin->size); +- free_iova(&host->iova, +- iova_pfn(&host->iova, job->addr_phys[i])); +- } +- + host1x_bo_unpin(unpin->bo, unpin->sgt); + host1x_bo_put(unpin->bo); + } +--- a/drivers/gpu/host1x/job.h ++++ b/drivers/gpu/host1x/job.h +@@ -30,7 +30,6 @@ struct host1x_job_gather { + struct host1x_job_unpin_data { + struct host1x_bo *bo; + struct sg_table *sgt; +- size_t size; + }; + + /* diff --git a/patches/debian/revert-objtool-fix-config_stack_validation-y-warning.patch b/patches/debian/revert-objtool-fix-config_stack_validation-y-warning.patch new file mode 100644 index 00000000000..3997617df4e --- /dev/null +++ b/patches/debian/revert-objtool-fix-config_stack_validation-y-warning.patch @@ -0,0 +1,60 @@ +From: Ben Hutchings +Date: Sun, 14 Jan 2018 19:27:18 +0000 +Subject: Revert "objtool: Fix CONFIG_STACK_VALIDATION=y warning for + out-of-tree modules" + +This reverts commit 9f0c18aec620bc9d82268b3cb937568dd07b43ff. This +check doesn't make sense for OOT modules as they should always use +a pre-built objtool. +--- + Makefile | 33 ++++++++++++++++----------------- + 1 file changed, 16 insertions(+), 17 deletions(-) + +--- a/Makefile ++++ b/Makefile +@@ -923,22 +923,6 @@ mod_sign_cmd = true + endif + export mod_sign_cmd + +-ifdef CONFIG_STACK_VALIDATION +- has_libelf := $(call try-run,\ +- echo "int main() {}" | $(HOSTCC) -xc -o /dev/null -lelf -,1,0) +- ifeq ($(has_libelf),1) +- objtool_target := tools/objtool FORCE +- else +- ifdef CONFIG_UNWINDER_ORC +- $(error "Cannot generate ORC metadata for CONFIG_UNWINDER_ORC=y, please install libelf-dev, libelf-devel or elfutils-libelf-devel") +- else +- $(warning "Cannot use CONFIG_STACK_VALIDATION=y, please install libelf-dev, libelf-devel or elfutils-libelf-devel") +- endif +- SKIP_STACK_VALIDATION := 1 +- export SKIP_STACK_VALIDATION +- endif +-endif +- + + ifeq ($(KBUILD_EXTMOD),) + core-y += kernel/ certs/ mm/ fs/ ipc/ security/ crypto/ block/ +@@ -1075,6 +1059,22 @@ uapi-asm-generic: + $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.asm-generic \ + src=uapi/asm obj=arch/$(SRCARCH)/include/generated/uapi/asm + ++ifdef CONFIG_STACK_VALIDATION ++ has_libelf := $(call try-run,\ ++ echo "int main() {}" | $(HOSTCC) -xc -o /dev/null -lelf -,1,0) ++ ifeq ($(has_libelf),1) ++ objtool_target := tools/objtool FORCE ++ else ++ ifdef CONFIG_UNWINDER_ORC ++ $(error "Cannot generate ORC metadata for CONFIG_UNWINDER_ORC=y, please install libelf-dev, libelf-devel or elfutils-libelf-devel") ++ else ++ $(warning "Cannot use CONFIG_STACK_VALIDATION=y, please install libelf-dev, libelf-devel or elfutils-libelf-devel") ++ endif ++ SKIP_STACK_VALIDATION := 1 ++ export SKIP_STACK_VALIDATION ++ endif ++endif ++ + PHONY += prepare-objtool + prepare-objtool: $(objtool_target) + diff --git a/patches/debian/sched-autogroup-disabled.patch b/patches/debian/sched-autogroup-disabled.patch new file mode 100644 index 00000000000..cc75a05c17b --- /dev/null +++ b/patches/debian/sched-autogroup-disabled.patch @@ -0,0 +1,19 @@ +From: Ben Hutchings +Subject: sched: Do not enable autogrouping by default +Date: Wed, 16 Mar 2011 03:17:06 +0000 +Forwarded: not-needed + +We want to provide the option of autogrouping but without enabling +it by default yet. + +--- a/kernel/sched/autogroup.c ++++ b/kernel/sched/autogroup.c +@@ -9,7 +9,7 @@ + #include + #include + +-unsigned int __read_mostly sysctl_sched_autogroup_enabled = 1; ++unsigned int __read_mostly sysctl_sched_autogroup_enabled = 0; + static struct autogroup autogroup_default; + static atomic_t autogroup_seq_nr; + diff --git a/patches/debian/snd-pcsp-disable-autoload.patch b/patches/debian/snd-pcsp-disable-autoload.patch new file mode 100644 index 00000000000..5871dc6ef0f --- /dev/null +++ b/patches/debian/snd-pcsp-disable-autoload.patch @@ -0,0 +1,30 @@ +From: Ben Hutchings +Date: Wed, 05 Feb 2014 23:01:30 +0000 +Subject: snd-pcsp: Disable autoload +Forwarded: not-needed +Bug-Debian: https://bugs.debian.org/697709 + +There are two drivers claiming the platform:pcspkr device: +- pcspkr creates an input(!) device that can only beep +- snd-pcsp creates an equivalent input device plus a PCM device that can + play barely recognisable renditions of sampled sound + +snd-pcsp is blacklisted by the alsa-base package, but not everyone +installs that. On PCs where no sound is wanted at all, both drivers +will still be loaded and one or other will complain that it couldn't +claim the relevant I/O range. + +In case anyone finds snd-pcsp useful, we continue to build it. But +remove the alias, to ensure it's not loaded where it's not wanted. + +--- a/sound/drivers/pcsp/pcsp.c ++++ b/sound/drivers/pcsp/pcsp.c +@@ -21,7 +21,7 @@ MODULE_AUTHOR("Stas Sergeev +Date: Fri, 07 Oct 2011 21:37:52 +0100 +Subject: Install perf scripts non-executable +Forwarded: no + +[bwh: Forward-ported to 4.13] + +--- a/tools/perf/Makefile.perf ++++ b/tools/perf/Makefile.perf +@@ -750,8 +750,8 @@ endif + ifndef NO_LIBPERL + $(call QUIET_INSTALL, perl-scripts) \ + $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/perl/Perf-Trace-Util/lib/Perf/Trace'; \ +- $(INSTALL) scripts/perl/Perf-Trace-Util/lib/Perf/Trace/* -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/perl/Perf-Trace-Util/lib/Perf/Trace'; \ +- $(INSTALL) scripts/perl/*.pl -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/perl'; \ ++ $(INSTALL) -m 644 scripts/perl/Perf-Trace-Util/lib/Perf/Trace/* -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/perl/Perf-Trace-Util/lib/Perf/Trace'; \ ++ $(INSTALL) -m 644 scripts/perl/*.pl -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/perl'; \ + $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/perl/bin'; \ + $(INSTALL) scripts/perl/bin/* -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/perl/bin' + endif +@@ -759,27 +759,27 @@ ifndef NO_LIBPYTHON + $(call QUIET_INSTALL, python-scripts) \ + $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/python/Perf-Trace-Util/lib/Perf/Trace'; \ + $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/python/bin'; \ +- $(INSTALL) scripts/python/Perf-Trace-Util/lib/Perf/Trace/* -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/python/Perf-Trace-Util/lib/Perf/Trace'; \ +- $(INSTALL) scripts/python/*.py -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/python'; \ ++ $(INSTALL) -m 644 scripts/python/Perf-Trace-Util/lib/Perf/Trace/* -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/python/Perf-Trace-Util/lib/Perf/Trace'; \ ++ $(INSTALL) -m 644 scripts/python/*.py -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/python'; \ + $(INSTALL) scripts/python/bin/* -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/python/bin' + endif + $(call QUIET_INSTALL, perf_completion-script) \ + $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(sysconfdir_SQ)/bash_completion.d'; \ +- $(INSTALL) perf-completion.sh '$(DESTDIR_SQ)$(sysconfdir_SQ)/bash_completion.d/perf_$(VERSION)' ++ $(INSTALL) -m 644 perf-completion.sh '$(DESTDIR_SQ)$(sysconfdir_SQ)/bash_completion.d/perf_$(VERSION)' + $(call QUIET_INSTALL, perf-tip) \ + $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(tip_instdir_SQ)'; \ +- $(INSTALL) Documentation/tips.txt -t '$(DESTDIR_SQ)$(tip_instdir_SQ)' ++ $(INSTALL) -m 644 Documentation/tips.txt -t '$(DESTDIR_SQ)$(tip_instdir_SQ)' + + install-tests: all install-gtk + $(call QUIET_INSTALL, tests) \ + $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/tests'; \ +- $(INSTALL) tests/attr.py '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/tests'; \ ++ $(INSTALL) -m 644 tests/attr.py '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/tests'; \ + $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/tests/attr'; \ +- $(INSTALL) tests/attr/* '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/tests/attr'; \ ++ $(INSTALL) -m 644 tests/attr/* '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/tests/attr'; \ + $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/tests/shell'; \ +- $(INSTALL) tests/shell/*.sh '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/tests/shell'; \ ++ $(INSTALL) -m 644 tests/shell/*.sh '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/tests/shell'; \ + $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/tests/shell/lib'; \ +- $(INSTALL) tests/shell/lib/*.sh '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/tests/shell/lib' ++ $(INSTALL) -m 644 tests/shell/lib/*.sh '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/tests/shell/lib' + + install-bin: install-tools install-tests install-traceevent-plugins + diff --git a/patches/debian/tools-perf-version.patch b/patches/debian/tools-perf-version.patch new file mode 100644 index 00000000000..4e99ee492c7 --- /dev/null +++ b/patches/debian/tools-perf-version.patch @@ -0,0 +1,111 @@ +From: Bastian Blank +Date: Mon, 26 Sep 2011 13:53:12 +0100 +Subject: Create manpages and binaries including the version +Forwarded: no + +[bwh: Fix version insertion in perf man page cross-references and perf +man page title. Install bash_completion script for perf with a +version-dependent name. And do the same for trace.] + +--- a/tools/perf/Makefile.perf ++++ b/tools/perf/Makefile.perf +@@ -721,23 +721,23 @@ endif + install-tools: all install-gtk + $(call QUIET_INSTALL, binaries) \ + $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(bindir_SQ)'; \ +- $(INSTALL) $(OUTPUT)perf '$(DESTDIR_SQ)$(bindir_SQ)'; \ +- $(LN) '$(DESTDIR_SQ)$(bindir_SQ)/perf' '$(DESTDIR_SQ)$(bindir_SQ)/trace' ++ $(INSTALL) $(OUTPUT)perf '$(DESTDIR_SQ)$(bindir_SQ)/perf_$(VERSION)'; \ ++ $(LN) '$(DESTDIR_SQ)$(bindir_SQ)/perf_$(VERSION)' '$(DESTDIR_SQ)$(bindir_SQ)/trace_$(VERSION)' ++ $(call QUIET_INSTALL, libexec) \ ++ $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)' + ifndef NO_PERF_READ_VDSO32 + $(call QUIET_INSTALL, perf-read-vdso32) \ +- $(INSTALL) $(OUTPUT)perf-read-vdso32 '$(DESTDIR_SQ)$(bindir_SQ)'; ++ $(INSTALL) $(OUTPUT)perf-read-vdso32 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)'; + endif + ifndef NO_PERF_READ_VDSOX32 + $(call QUIET_INSTALL, perf-read-vdsox32) \ +- $(INSTALL) $(OUTPUT)perf-read-vdsox32 '$(DESTDIR_SQ)$(bindir_SQ)'; ++ $(INSTALL) $(OUTPUT)perf-read-vdsox32 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)'; + endif + ifndef NO_JVMTI + $(call QUIET_INSTALL, $(LIBJVMTI)) \ + $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(libdir_SQ)'; \ + $(INSTALL) $(OUTPUT)$(LIBJVMTI) '$(DESTDIR_SQ)$(libdir_SQ)'; + endif +- $(call QUIET_INSTALL, libexec) \ +- $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)' + $(call QUIET_INSTALL, perf-archive) \ + $(INSTALL) $(OUTPUT)perf-archive -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)' + $(call QUIET_INSTALL, perf-with-kcore) \ +@@ -765,7 +765,7 @@ ifndef NO_LIBPYTHON + endif + $(call QUIET_INSTALL, perf_completion-script) \ + $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(sysconfdir_SQ)/bash_completion.d'; \ +- $(INSTALL) perf-completion.sh '$(DESTDIR_SQ)$(sysconfdir_SQ)/bash_completion.d/perf' ++ $(INSTALL) perf-completion.sh '$(DESTDIR_SQ)$(sysconfdir_SQ)/bash_completion.d/perf_$(VERSION)' + $(call QUIET_INSTALL, perf-tip) \ + $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(tip_instdir_SQ)'; \ + $(INSTALL) Documentation/tips.txt -t '$(DESTDIR_SQ)$(tip_instdir_SQ)' +@@ -790,7 +790,7 @@ install-python_ext: + + # 'make install-doc' should call 'make -C Documentation install' + $(INSTALL_DOC_TARGETS): +- $(QUIET_SUBDIR0)Documentation $(QUIET_SUBDIR1) $(@:-doc=) ++ $(QUIET_SUBDIR0)Documentation $(QUIET_SUBDIR1) $(@:-doc=) VERSION=$(VERSION) + + ### Cleaning rules + +--- a/tools/perf/Documentation/Makefile ++++ b/tools/perf/Documentation/Makefile +@@ -183,14 +183,16 @@ ifdef missing_tools + $(error "You need to install $(missing_tools) for man pages") + endif + +-do-install-man: man ++do-install-man: $(addprefix install-man-,$(_DOC_MAN1)) ++ ++install-man-perf.1: $(OUTPUT)perf.1 ++ $(INSTALL) -d -m 755 $(DESTDIR)$(man1dir) ++ sed -e 's/"PERF"/"PERF_$(VERSION)"/' -e 's/fBperf-/fBperf_$(VERSION)-/g' $^ > $(DESTDIR)$(man1dir)/perf_$(VERSION).1 ++ ++install-man-perf%.1: $(OUTPUT)perf%.1 + $(call QUIET_INSTALL, Documentation-man) \ + $(INSTALL) -d -m 755 $(DESTDIR)$(man1dir); \ +-# $(INSTALL) -d -m 755 $(DESTDIR)$(man5dir); \ +-# $(INSTALL) -d -m 755 $(DESTDIR)$(man7dir); \ +- $(INSTALL) -m 644 $(DOC_MAN1) $(DESTDIR)$(man1dir); \ +-# $(INSTALL) -m 644 $(DOC_MAN5) $(DESTDIR)$(man5dir); \ +-# $(INSTALL) -m 644 $(DOC_MAN7) $(DESTDIR)$(man7dir) ++ sed -e 's/"PERF\\-/"PERF_$(VERSION)\\-/' -e 's/fBperf-/fBperf_$(VERSION)-/g' $^ > $(DESTDIR)$(man1dir)/perf_$(VERSION)$*.1 + + install-man: check-man-tools man do-install-man + +--- a/tools/perf/util/Build ++++ b/tools/perf/util/Build +@@ -179,6 +179,7 @@ CFLAGS_libstring.o += -Wno-unused-pa + CFLAGS_hweight.o += -Wno-unused-parameter -DETC_PERFCONFIG="BUILD_STR($(ETC_PERFCONFIG_SQ))" + CFLAGS_parse-events.o += -Wno-redundant-decls + CFLAGS_header.o += -include $(OUTPUT)PERF-VERSION-FILE ++CFLAGS_vdso.o += -DPERFEXECDIR='"$(perfexec_instdir_SQ)"' + + $(OUTPUT)util/kallsyms.o: ../lib/symbol/kallsyms.c FORCE + $(call rule_mkdir) +--- a/tools/perf/util/vdso.c ++++ b/tools/perf/util/vdso.c +@@ -51,12 +51,12 @@ static struct vdso_info *vdso_info__new( + .vdso32 = { + .temp_file_name = VDSO__TEMP_FILE_NAME, + .dso_name = DSO__NAME_VDSO32, +- .read_prog = "perf-read-vdso32", ++ .read_prog = PERFEXECDIR "/perf-read-vdso32", + }, + .vdsox32 = { + .temp_file_name = VDSO__TEMP_FILE_NAME, + .dso_name = DSO__NAME_VDSOX32, +- .read_prog = "perf-read-vdsox32", ++ .read_prog = PERFEXECDIR "/perf-read-vdsox32", + }, + #endif + }; diff --git a/patches/debian/uname-version-timestamp.patch b/patches/debian/uname-version-timestamp.patch new file mode 100644 index 00000000000..5cd565c1e01 --- /dev/null +++ b/patches/debian/uname-version-timestamp.patch @@ -0,0 +1,33 @@ +From: Ben Hutchings +Subject: Make mkcompile_h accept an alternate timestamp string +Date: Tue, 12 May 2015 19:29:22 +0100 +Forwarded: not-needed + +We want to include the Debian version in the utsname::version string +instead of a full timestamp string. However, we still need to provide +a standard timestamp string for gen_initramfs_list.sh to make the +kernel image reproducible. + +Make mkcompile_h use $KBUILD_BUILD_VERSION_TIMESTAMP in preference to +$KBUILD_BUILD_TIMESTAMP. + +--- a/scripts/mkcompile_h ++++ b/scripts/mkcompile_h +@@ -37,10 +37,14 @@ else + VERSION=$KBUILD_BUILD_VERSION + fi + +-if [ -z "$KBUILD_BUILD_TIMESTAMP" ]; then +- TIMESTAMP=`date` ++if [ -z "$KBUILD_BUILD_VERSION_TIMESTAMP" ]; then ++ if [ -z "$KBUILD_BUILD_TIMESTAMP" ]; then ++ TIMESTAMP=`date` ++ else ++ TIMESTAMP=$KBUILD_BUILD_TIMESTAMP ++ fi + else +- TIMESTAMP=$KBUILD_BUILD_TIMESTAMP ++ TIMESTAMP=$KBUILD_BUILD_VERSION_TIMESTAMP + fi + if test -z "$KBUILD_BUILD_USER"; then + LINUX_COMPILE_BY=$(whoami | sed 's/\\/\\\\/') diff --git a/patches/debian/version.patch b/patches/debian/version.patch new file mode 100644 index 00000000000..547b85f4516 --- /dev/null +++ b/patches/debian/version.patch @@ -0,0 +1,162 @@ +From: Ben Hutchings +Subject: Include package version along with kernel release in stack traces +Date: Tue, 24 Jul 2012 03:13:10 +0100 +Forwarded: not-needed + +For distribution binary packages we assume +$DISTRIBUTION_OFFICIAL_BUILD, $DISTRIBUTOR and $DISTRIBUTION_VERSION +are set. + +--- a/Makefile ++++ b/Makefile +@@ -1048,7 +1048,7 @@ endif + prepare2: prepare3 prepare-compiler-check outputmakefile asm-generic + + prepare1: prepare2 $(version_h) include/generated/utsrelease.h \ +- include/config/auto.conf ++ include/config/auto.conf include/generated/package.h + $(cmd_crmodverdir) + + archprepare: archheaders archscripts prepare1 scripts_basic +@@ -1118,6 +1118,16 @@ define filechk_version.h + echo '#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))';) + endef + ++ifneq ($(DISTRIBUTION_OFFICIAL_BUILD),) ++define filechk_package.h ++ echo \#define LINUX_PACKAGE_ID \" $(DISTRIBUTOR) $(DISTRIBUTION_VERSION)\" ++endef ++else ++define filechk_package.h ++ echo \#define LINUX_PACKAGE_ID \"\" ++endef ++endif ++ + $(version_h): $(srctree)/Makefile FORCE + $(call filechk,version.h) + $(Q)rm -f $(old_version_h) +@@ -1125,6 +1135,9 @@ $(version_h): $(srctree)/Makefile FORCE + include/generated/utsrelease.h: include/config/kernel.release FORCE + $(call filechk,utsrelease.h) + ++include/generated/package.h: $(srctree)/Makefile FORCE ++ $(call filechk,package.h) ++ + PHONY += headerdep + headerdep: + $(Q)find $(srctree)/include/ -name '*.h' | xargs --max-args 1 \ +--- a/arch/x86/um/sysrq_64.c ++++ b/arch/x86/um/sysrq_64.c +@@ -9,6 +9,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -17,8 +18,9 @@ void show_regs(struct pt_regs *regs) + { + printk("\n"); + print_modules(); +- printk(KERN_INFO "Pid: %d, comm: %.20s %s %s\n", task_pid_nr(current), +- current->comm, print_tainted(), init_utsname()->release); ++ printk(KERN_INFO "Pid: %d, comm: %.20s %s %s%s\n", task_pid_nr(current), ++ current->comm, print_tainted(), init_utsname()->release, ++ LINUX_PACKAGE_ID); + printk(KERN_INFO "RIP: %04lx:[<%016lx>]\n", PT_REGS_CS(regs) & 0xffff, + PT_REGS_IP(regs)); + printk(KERN_INFO "RSP: %016lx EFLAGS: %08lx\n", PT_REGS_SP(regs), +--- a/arch/ia64/kernel/process.c ++++ b/arch/ia64/kernel/process.c +@@ -35,6 +35,7 @@ + #include + #include + #include ++#include + + #include + #include +@@ -108,9 +109,9 @@ show_regs (struct pt_regs *regs) + print_modules(); + printk("\n"); + show_regs_print_info(KERN_DEFAULT); +- printk("psr : %016lx ifs : %016lx ip : [<%016lx>] %s (%s)\n", ++ printk("psr : %016lx ifs : %016lx ip : [<%016lx>] %s (%s%s)\n", + regs->cr_ipsr, regs->cr_ifs, ip, print_tainted(), +- init_utsname()->release); ++ init_utsname()->release, LINUX_PACKAGE_ID); + print_symbol("ip is at %s\n", ip); + printk("unat: %016lx pfs : %016lx rsc : %016lx\n", + regs->ar_unat, regs->ar_pfs, regs->ar_rsc); +--- a/arch/powerpc/kernel/process.c ++++ b/arch/powerpc/kernel/process.c +@@ -42,6 +42,7 @@ + #include + #include + #include ++#include + + #include + #include +@@ -1403,8 +1404,9 @@ void show_regs(struct pt_regs * regs) + + printk("NIP: "REG" LR: "REG" CTR: "REG"\n", + regs->nip, regs->link, regs->ctr); +- printk("REGS: %px TRAP: %04lx %s (%s)\n", +- regs, regs->trap, print_tainted(), init_utsname()->release); ++ printk("REGS: %px TRAP: %04lx %s (%s%s)\n", ++ regs, regs->trap, print_tainted(), init_utsname()->release, ++ LINUX_PACKAGE_ID); + printk("MSR: "REG" ", regs->msr); + print_msr_bits(regs->msr); + pr_cont(" CR: %08lx XER: %08lx\n", regs->ccr, regs->xer); +--- a/kernel/hung_task.c ++++ b/kernel/hung_task.c +@@ -20,6 +20,7 @@ + #include + + #include ++#include + + /* + * The number of tasks checked: +@@ -114,10 +115,11 @@ static void check_hung_task(struct task_ + sysctl_hung_task_warnings--; + pr_err("INFO: task %s:%d blocked for more than %ld seconds.\n", + t->comm, t->pid, timeout); +- pr_err(" %s %s %.*s\n", ++ pr_err(" %s %s %.*s%s\n", + print_tainted(), init_utsname()->release, + (int)strcspn(init_utsname()->version, " "), +- init_utsname()->version); ++ init_utsname()->version, ++ LINUX_PACKAGE_ID); + pr_err("\"echo 0 > /proc/sys/kernel/hung_task_timeout_secs\"" + " disables this message.\n"); + sched_show_task(t); +--- a/kernel/printk/printk.c ++++ b/kernel/printk/printk.c +@@ -48,6 +48,7 @@ + #include + #include + #include ++#include + + #include + #include +@@ -3118,11 +3119,12 @@ void __init dump_stack_set_arch_desc(con + */ + void dump_stack_print_info(const char *log_lvl) + { +- printk("%sCPU: %d PID: %d Comm: %.20s %s %s %.*s\n", ++ printk("%sCPU: %d PID: %d Comm: %.20s %s %s %.*s%s\n", + log_lvl, raw_smp_processor_id(), current->pid, current->comm, + print_tainted(), init_utsname()->release, + (int)strcspn(init_utsname()->version, " "), +- init_utsname()->version); ++ init_utsname()->version, ++ LINUX_PACKAGE_ID); + + if (dump_stack_arch_desc_str[0] != '\0') + printk("%sHardware name: %s\n", diff --git a/patches/debian/yama-disable-by-default.patch b/patches/debian/yama-disable-by-default.patch new file mode 100644 index 00000000000..270d9034454 --- /dev/null +++ b/patches/debian/yama-disable-by-default.patch @@ -0,0 +1,26 @@ +From: Ben Hutchings +Subject: yama: Disable by default +Date: Wed, 19 Jun 2013 04:35:28 +0100 +Bug-Debian: https://bugs.debian.org/712740 +Forwarded: not-needed + +--- a/security/yama/yama_lsm.c ++++ b/security/yama/yama_lsm.c +@@ -24,7 +24,7 @@ + #define YAMA_SCOPE_CAPABILITY 2 + #define YAMA_SCOPE_NO_ATTACH 3 + +-static int ptrace_scope = YAMA_SCOPE_RELATIONAL; ++static int ptrace_scope = YAMA_SCOPE_DISABLED; + + /* describe a ptrace relationship for potential exception */ + struct ptrace_relation { +@@ -402,7 +402,7 @@ static inline void yama_init_sysctl(void + + void __init yama_add_hooks(void) + { +- pr_info("Yama: becoming mindful.\n"); ++ pr_info("Yama: disabled by default; enable with sysctl kernel.yama.*\n"); + security_add_hooks(yama_hooks, ARRAY_SIZE(yama_hooks), "yama"); + yama_init_sysctl(); + } diff --git a/patches/features/all/Kbuild-kconfig-Verbose-version-of-listnewconfig.patch b/patches/features/all/Kbuild-kconfig-Verbose-version-of-listnewconfig.patch new file mode 100644 index 00000000000..efabde1806c --- /dev/null +++ b/patches/features/all/Kbuild-kconfig-Verbose-version-of-listnewconfig.patch @@ -0,0 +1,155 @@ +From: Ben Hutchings +Date: Tue, 14 Sep 2010 04:33:34 +0100 +Subject: Kbuild: kconfig: Verbose version of --listnewconfig +Forwarded: http://thread.gmane.org/gmane.linux.kbuild.devel/5774 + +If the KBUILD_VERBOSE environment variable is set to non-zero, show +the default values of new symbols and not just their names. + +Based on work by Bastian Blank and +maximilian attems . Simplified by Michal Marek +. + +Signed-off-by: Ben Hutchings +--- + scripts/kconfig/conf.c | 42 ++++++++++++++++++++++++++++++++---------- + scripts/kconfig/confdata.c | 9 +++++++++ + scripts/kconfig/expr.h | 2 ++ + scripts/kconfig/lkc_proto.h | 1 + + 4 files changed, 44 insertions(+), 10 deletions(-) + +--- a/scripts/kconfig/conf.c ++++ b/scripts/kconfig/conf.c +@@ -369,7 +369,6 @@ static void conf(struct menu *menu) + switch (prop->type) { + case P_MENU: + if ((input_mode == silentoldconfig || +- input_mode == listnewconfig || + input_mode == olddefconfig) && + rootEntry != menu) { + check_conf(menu); +@@ -430,11 +429,7 @@ static void check_conf(struct menu *menu + if (sym && !sym_has_value(sym)) { + if (sym_is_changable(sym) || + (sym_is_choice(sym) && sym_get_tristate_value(sym) == yes)) { +- if (input_mode == listnewconfig) { +- if (sym->name && !sym_is_choice_value(sym)) { +- printf("%s%s\n", CONFIG_, sym->name); +- } +- } else if (input_mode != olddefconfig) { ++ if (input_mode != olddefconfig) { + if (!conf_cnt++) + printf(_("*\n* Restart config...\n*\n")); + rootEntry = menu_get_parent_menu(menu); +@@ -447,6 +442,30 @@ static void check_conf(struct menu *menu + check_conf(child); + } + ++static void report_conf(struct menu *menu, bool verbose) ++{ ++ struct symbol *sym; ++ struct menu *child; ++ ++ if (!menu_is_visible(menu)) ++ return; ++ ++ if (verbose && menu == &rootmenu) { ++ printf("\n#\n" ++ "# Changes:\n" ++ "#\n"); ++ } ++ ++ sym = menu->sym; ++ if (sym && (sym->flags & SYMBOL_NEW) && ++ sym_is_changable(sym) && sym->name && !sym_is_choice_value(sym)) { ++ conf_write_new_symbol(stdout, sym, verbose); ++ } ++ ++ for (child = menu->list; child; child = child->next) ++ report_conf(child, verbose); ++} ++ + static struct option long_opts[] = { + {"oldaskconfig", no_argument, NULL, oldaskconfig}, + {"oldconfig", no_argument, NULL, oldconfig}, +@@ -494,6 +513,7 @@ int main(int ac, char **av) + const char *progname = av[0]; + int opt; + const char *name, *defconfig_file = NULL /* gcc uninit */; ++ const char *value; + struct stat tmpstat; + + setlocale(LC_ALL, ""); +@@ -673,16 +693,18 @@ int main(int ac, char **av) + input_mode = silentoldconfig; + /* fall through */ + case oldconfig: +- case listnewconfig: + case olddefconfig: + case silentoldconfig: + /* Update until a loop caused no more changes */ + do { + conf_cnt = 0; + check_conf(&rootmenu); +- } while (conf_cnt && +- (input_mode != listnewconfig && +- input_mode != olddefconfig)); ++ } while (conf_cnt && input_mode != olddefconfig); ++ break; ++ case listnewconfig: ++ conf_set_all_new_symbols(def_default); ++ value = getenv("KBUILD_VERBOSE"); ++ report_conf(&rootmenu, value && atoi(value)); + break; + } + +--- a/scripts/kconfig/confdata.c ++++ b/scripts/kconfig/confdata.c +@@ -738,6 +738,14 @@ next_menu: + return 0; + } + ++void conf_write_new_symbol(FILE *fp, struct symbol *sym, bool verbose) ++{ ++ if (verbose) ++ conf_write_symbol(fp, sym, &kconfig_printer_cb, NULL); ++ else ++ fprintf(fp, "%s%s\n", CONFIG_, sym->name); ++} ++ + int conf_write(const char *name) + { + FILE *out; +@@ -1171,7 +1179,10 @@ bool conf_set_all_new_symbols(enum conf_ + bool has_changed = false; + + for_all_symbols(i, sym) { +- if (sym_has_value(sym) || (sym->flags & SYMBOL_VALID)) ++ if (sym_has_value(sym)) ++ continue; ++ sym->flags |= SYMBOL_NEW; ++ if (sym->flags & SYMBOL_VALID) + continue; + switch (sym_get_type(sym)) { + case S_BOOLEAN: +--- a/scripts/kconfig/expr.h ++++ b/scripts/kconfig/expr.h +@@ -114,6 +114,8 @@ struct symbol { + /* Set symbol to y if allnoconfig; used for symbols that hide others */ + #define SYMBOL_ALLNOCONFIG_Y 0x200000 + ++#define SYMBOL_NEW 0x400000 /* symbol is new (loaded config did not provide a value) */ ++ + #define SYMBOL_MAXLENGTH 256 + #define SYMBOL_HASHSIZE 9973 + +--- a/scripts/kconfig/lkc_proto.h ++++ b/scripts/kconfig/lkc_proto.h +@@ -7,6 +7,7 @@ int conf_read_simple(const char *name, i + int conf_write_defconfig(const char *name); + int conf_write(const char *name); + int conf_write_autoconf(void); ++void conf_write_new_symbol(FILE*, struct symbol*, bool); + bool conf_get_changed(void); + void conf_set_changed_callback(void (*fn)(void)); + void conf_set_message_callback(void (*fn)(const char *fmt, va_list ap)); diff --git a/patches/features/all/aufs4/aufs4-base.patch b/patches/features/all/aufs4/aufs4-base.patch new file mode 100644 index 00000000000..74846182880 --- /dev/null +++ b/patches/features/all/aufs4/aufs4-base.patch @@ -0,0 +1,340 @@ +From: J. R. Okajima +Date: Sun Feb 18 15:24:12 2018 +0900 +Subject: aufs4.15 base patch +Origin: https://github.com/sfjro/aufs4-standalone/tree/caea84a33dce187ad77f9ee524d7ec46acc69c63 +Bug-Debian: https://bugs.debian.org/541828 + +Patch headers added by debian/patches/features/all/aufs4/gen-patch + +SPDX-License-Identifier: GPL-2.0 +aufs4.15 base patch + +diff --git a/MAINTAINERS b/MAINTAINERS +index 845fc25..7dc2813 100644 +--- a/MAINTAINERS ++++ b/MAINTAINERS +@@ -2486,6 +2486,19 @@ F: include/linux/audit.h + F: include/uapi/linux/audit.h + F: kernel/audit* + ++AUFS (advanced multi layered unification filesystem) FILESYSTEM ++M: "J. R. Okajima" ++L: linux-unionfs@vger.kernel.org ++L: aufs-users@lists.sourceforge.net (members only) ++W: http://aufs.sourceforge.net ++T: git://github.com/sfjro/aufs4-linux.git ++S: Supported ++F: Documentation/filesystems/aufs/ ++F: Documentation/ABI/testing/debugfs-aufs ++F: Documentation/ABI/testing/sysfs-aufs ++F: fs/aufs/ ++F: include/uapi/linux/aufs_type.h ++ + AUXILIARY DISPLAY DRIVERS + M: Miguel Ojeda Sandonis + W: http://miguelojeda.es/auxdisplay.htm +diff --git a/drivers/block/loop.c b/drivers/block/loop.c +index d5fe720..c292afa 100644 +--- a/drivers/block/loop.c ++++ b/drivers/block/loop.c +@@ -691,6 +691,24 @@ static inline int is_loop_device(struct file *file) + return i && S_ISBLK(i->i_mode) && MAJOR(i->i_rdev) == LOOP_MAJOR; + } + ++/* ++ * for AUFS ++ * no get/put for file. ++ */ ++struct file *loop_backing_file(struct super_block *sb) ++{ ++ struct file *ret; ++ struct loop_device *l; ++ ++ ret = NULL; ++ if (MAJOR(sb->s_dev) == LOOP_MAJOR) { ++ l = sb->s_bdev->bd_disk->private_data; ++ ret = l->lo_backing_file; ++ } ++ return ret; ++} ++EXPORT_SYMBOL_GPL(loop_backing_file); ++ + /* loop sysfs attributes */ + + static ssize_t loop_attr_show(struct device *dev, char *page, +diff --git a/fs/dcache.c b/fs/dcache.c +index 5c7df1d..019f14b 100644 +--- a/fs/dcache.c ++++ b/fs/dcache.c +@@ -1197,7 +1197,7 @@ enum d_walk_ret { + * + * The @enter() and @finish() callbacks are called with d_lock held. + */ +-static void d_walk(struct dentry *parent, void *data, ++void d_walk(struct dentry *parent, void *data, + enum d_walk_ret (*enter)(void *, struct dentry *), + void (*finish)(void *)) + { +diff --git a/fs/fcntl.c b/fs/fcntl.c +index 0522e28..74c255d 100644 +--- a/fs/fcntl.c ++++ b/fs/fcntl.c +@@ -32,7 +32,7 @@ + + #define SETFL_MASK (O_APPEND | O_NONBLOCK | O_NDELAY | O_DIRECT | O_NOATIME) + +-static int setfl(int fd, struct file * filp, unsigned long arg) ++int setfl(int fd, struct file * filp, unsigned long arg) + { + struct inode * inode = file_inode(filp); + int error = 0; +@@ -63,6 +63,8 @@ static int setfl(int fd, struct file * filp, unsigned long arg) + + if (filp->f_op->check_flags) + error = filp->f_op->check_flags(arg); ++ if (!error && filp->f_op->setfl) ++ error = filp->f_op->setfl(filp, arg); + if (error) + return error; + +diff --git a/fs/inode.c b/fs/inode.c +index 03102d6..517883c 100644 +--- a/fs/inode.c ++++ b/fs/inode.c +@@ -1655,7 +1655,7 @@ EXPORT_SYMBOL(generic_update_time); + * This does the actual work of updating an inodes time or version. Must have + * had called mnt_want_write() before calling this. + */ +-static int update_time(struct inode *inode, struct timespec *time, int flags) ++int update_time(struct inode *inode, struct timespec *time, int flags) + { + int (*update_time)(struct inode *, struct timespec *, int); + +diff --git a/fs/namespace.c b/fs/namespace.c +index 9d1374a..26ef600 100644 +--- a/fs/namespace.c ++++ b/fs/namespace.c +@@ -846,6 +846,12 @@ static inline int check_mnt(struct mount *mnt) + return mnt->mnt_ns == current->nsproxy->mnt_ns; + } + ++/* for aufs, CONFIG_AUFS_BR_FUSE */ ++int is_current_mnt_ns(struct vfsmount *mnt) ++{ ++ return check_mnt(real_mount(mnt)); ++} ++ + /* + * vfsmount lock must be held for write + */ +diff --git a/fs/read_write.c b/fs/read_write.c +index f8547b8..0a5c47b 100644 +--- a/fs/read_write.c ++++ b/fs/read_write.c +@@ -484,6 +484,28 @@ ssize_t __vfs_write(struct file *file, const char __user *p, size_t count, + return -EINVAL; + } + ++vfs_readf_t vfs_readf(struct file *file) ++{ ++ const struct file_operations *fop = file->f_op; ++ ++ if (fop->read) ++ return fop->read; ++ if (fop->read_iter) ++ return new_sync_read; ++ return ERR_PTR(-ENOSYS); ++} ++ ++vfs_writef_t vfs_writef(struct file *file) ++{ ++ const struct file_operations *fop = file->f_op; ++ ++ if (fop->write) ++ return fop->write; ++ if (fop->write_iter) ++ return new_sync_write; ++ return ERR_PTR(-ENOSYS); ++} ++ + ssize_t __kernel_write(struct file *file, const void *buf, size_t count, loff_t *pos) + { + mm_segment_t old_fs; +diff --git a/fs/splice.c b/fs/splice.c +index 39e2dc0..c5fb195 100644 +--- a/fs/splice.c ++++ b/fs/splice.c +@@ -837,8 +837,8 @@ EXPORT_SYMBOL(generic_splice_sendpage); + /* + * Attempt to initiate a splice from pipe to file. + */ +-static long do_splice_from(struct pipe_inode_info *pipe, struct file *out, +- loff_t *ppos, size_t len, unsigned int flags) ++long do_splice_from(struct pipe_inode_info *pipe, struct file *out, ++ loff_t *ppos, size_t len, unsigned int flags) + { + ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, + loff_t *, size_t, unsigned int); +@@ -854,9 +854,9 @@ static long do_splice_from(struct pipe_inode_info *pipe, struct file *out, + /* + * Attempt to initiate a splice from a file to a pipe. + */ +-static long do_splice_to(struct file *in, loff_t *ppos, +- struct pipe_inode_info *pipe, size_t len, +- unsigned int flags) ++long do_splice_to(struct file *in, loff_t *ppos, ++ struct pipe_inode_info *pipe, size_t len, ++ unsigned int flags) + { + ssize_t (*splice_read)(struct file *, loff_t *, + struct pipe_inode_info *, size_t, unsigned int); +diff --git a/fs/sync.c b/fs/sync.c +index 6e0a2cb..a6891ee 100644 +--- a/fs/sync.c ++++ b/fs/sync.c +@@ -28,7 +28,7 @@ + * wait == 1 case since in that case write_inode() functions do + * sync_dirty_buffer() and thus effectively write one block at a time. + */ +-static int __sync_filesystem(struct super_block *sb, int wait) ++int __sync_filesystem(struct super_block *sb, int wait) + { + if (wait) + sync_inodes_sb(sb); +diff --git a/include/linux/file.h b/include/linux/file.h +index 279720d..76e38ea 100644 +--- a/include/linux/file.h ++++ b/include/linux/file.h +@@ -20,6 +20,7 @@ struct dentry; + struct path; + extern struct file *alloc_file(const struct path *, fmode_t mode, + const struct file_operations *fop); ++extern struct file *get_empty_filp(void); + + static inline void fput_light(struct file *file, int fput_needed) + { +diff --git a/include/linux/fs.h b/include/linux/fs.h +index 511fbaa..96e05b3 100644 +--- a/include/linux/fs.h ++++ b/include/linux/fs.h +@@ -1265,6 +1265,7 @@ extern void fasync_free(struct fasync_struct *); + /* can be called from interrupts */ + extern void kill_fasync(struct fasync_struct **, int, int); + ++extern int setfl(int fd, struct file * filp, unsigned long arg); + extern void __f_setown(struct file *filp, struct pid *, enum pid_type, int force); + extern int f_setown(struct file *filp, unsigned long arg, int force); + extern void f_delown(struct file *filp); +@@ -1712,6 +1713,7 @@ struct file_operations { + ssize_t (*sendpage) (struct file *, struct page *, int, size_t, loff_t *, int); + unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long); + int (*check_flags)(int); ++ int (*setfl)(struct file *, unsigned long); + int (*flock) (struct file *, int, struct file_lock *); + ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, loff_t *, size_t, unsigned int); + ssize_t (*splice_read)(struct file *, loff_t *, struct pipe_inode_info *, size_t, unsigned int); +@@ -1782,6 +1784,12 @@ ssize_t rw_copy_check_uvector(int type, const struct iovec __user * uvector, + struct iovec *fast_pointer, + struct iovec **ret_pointer); + ++typedef ssize_t (*vfs_readf_t)(struct file *, char __user *, size_t, loff_t *); ++typedef ssize_t (*vfs_writef_t)(struct file *, const char __user *, size_t, ++ loff_t *); ++vfs_readf_t vfs_readf(struct file *file); ++vfs_writef_t vfs_writef(struct file *file); ++ + extern ssize_t __vfs_read(struct file *, char __user *, size_t, loff_t *); + extern ssize_t vfs_read(struct file *, char __user *, size_t, loff_t *); + extern ssize_t vfs_write(struct file *, const char __user *, size_t, loff_t *); +@@ -2201,6 +2209,7 @@ extern int current_umask(void); + extern void ihold(struct inode * inode); + extern void iput(struct inode *); + extern int generic_update_time(struct inode *, struct timespec *, int); ++extern int update_time(struct inode *, struct timespec *, int); + + /* /sys/fs */ + extern struct kobject *fs_kobj; +@@ -2481,6 +2490,7 @@ static inline bool sb_is_blkdev_sb(struct super_block *sb) + return false; + } + #endif ++extern int __sync_filesystem(struct super_block *, int); + extern int sync_filesystem(struct super_block *); + extern const struct file_operations def_blk_fops; + extern const struct file_operations def_chr_fops; +diff --git a/include/linux/lockdep.h b/include/linux/lockdep.h +index 3251d9c..0360952 100644 +--- a/include/linux/lockdep.h ++++ b/include/linux/lockdep.h +@@ -313,6 +313,8 @@ static inline int lockdep_match_key(struct lockdep_map *lock, + return lock->key == key; + } + ++struct lock_class *lockdep_hlock_class(struct held_lock *hlock); ++ + /* + * Acquire a lock. + * +@@ -442,6 +444,7 @@ struct lockdep_map { }; + + #define lockdep_depth(tsk) (0) + ++#define lockdep_is_held(lock) (1) + #define lockdep_is_held_type(l, r) (1) + + #define lockdep_assert_held(l) do { (void)(l); } while (0) +diff --git a/include/linux/mnt_namespace.h b/include/linux/mnt_namespace.h +index 3594208..24f5fd1 100644 +--- a/include/linux/mnt_namespace.h ++++ b/include/linux/mnt_namespace.h +@@ -6,11 +6,14 @@ + struct mnt_namespace; + struct fs_struct; + struct user_namespace; ++struct vfsmount; + + extern struct mnt_namespace *copy_mnt_ns(unsigned long, struct mnt_namespace *, + struct user_namespace *, struct fs_struct *); + extern void put_mnt_ns(struct mnt_namespace *ns); + ++extern int is_current_mnt_ns(struct vfsmount *mnt); ++ + extern const struct file_operations proc_mounts_operations; + extern const struct file_operations proc_mountinfo_operations; + extern const struct file_operations proc_mountstats_operations; +diff --git a/include/linux/splice.h b/include/linux/splice.h +index 74b4911..19789fb 100644 +--- a/include/linux/splice.h ++++ b/include/linux/splice.h +@@ -87,4 +87,10 @@ extern void splice_shrink_spd(struct splice_pipe_desc *); + + extern const struct pipe_buf_operations page_cache_pipe_buf_ops; + extern const struct pipe_buf_operations default_pipe_buf_ops; ++ ++extern long do_splice_from(struct pipe_inode_info *pipe, struct file *out, ++ loff_t *ppos, size_t len, unsigned int flags); ++extern long do_splice_to(struct file *in, loff_t *ppos, ++ struct pipe_inode_info *pipe, size_t len, ++ unsigned int flags); + #endif +diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c +index 5216590..8b5f44d 100644 +--- a/kernel/locking/lockdep.c ++++ b/kernel/locking/lockdep.c +@@ -140,7 +140,7 @@ static struct lock_list list_entries[MAX_LOCKDEP_ENTRIES]; + unsigned long nr_lock_classes; + static struct lock_class lock_classes[MAX_LOCKDEP_KEYS]; + +-static inline struct lock_class *hlock_class(struct held_lock *hlock) ++inline struct lock_class *lockdep_hlock_class(struct held_lock *hlock) + { + if (!hlock->class_idx) { + /* +@@ -151,6 +151,7 @@ static inline struct lock_class *hlock_class(struct held_lock *hlock) + } + return lock_classes + hlock->class_idx - 1; + } ++#define hlock_class(hlock) lockdep_hlock_class(hlock) + + #ifdef CONFIG_LOCK_STAT + static DEFINE_PER_CPU(struct lock_class_stats[MAX_LOCKDEP_KEYS], cpu_lock_stats); diff --git a/patches/features/all/aufs4/aufs4-mmap.patch b/patches/features/all/aufs4/aufs4-mmap.patch new file mode 100644 index 00000000000..0e0574cfb82 --- /dev/null +++ b/patches/features/all/aufs4/aufs4-mmap.patch @@ -0,0 +1,406 @@ +From: J. R. Okajima +Date: Sun Feb 18 15:24:12 2018 +0900 +Subject: aufs4.15 mmap patch +Origin: https://github.com/sfjro/aufs4-standalone/tree/caea84a33dce187ad77f9ee524d7ec46acc69c63 +Bug-Debian: https://bugs.debian.org/541828 + +Patch headers added by debian/patches/features/all/aufs4/gen-patch + +SPDX-License-Identifier: GPL-2.0 +aufs4.15 mmap patch + +diff --git a/fs/proc/base.c b/fs/proc/base.c +index 60316b5..ce5314e 100644 +--- a/fs/proc/base.c ++++ b/fs/proc/base.c +@@ -1987,7 +1987,7 @@ static int map_files_get_link(struct dentry *dentry, struct path *path) + down_read(&mm->mmap_sem); + vma = find_exact_vma(mm, vm_start, vm_end); + if (vma && vma->vm_file) { +- *path = vma->vm_file->f_path; ++ *path = vma_pr_or_file(vma)->f_path; + path_get(path); + rc = 0; + } +diff --git a/fs/proc/nommu.c b/fs/proc/nommu.c +index 7563437..7c0dc0f 100644 +--- a/fs/proc/nommu.c ++++ b/fs/proc/nommu.c +@@ -45,7 +45,10 @@ static int nommu_region_show(struct seq_file *m, struct vm_region *region) + file = region->vm_file; + + if (file) { +- struct inode *inode = file_inode(region->vm_file); ++ struct inode *inode; ++ ++ file = vmr_pr_or_file(region); ++ inode = file_inode(file); + dev = inode->i_sb->s_dev; + ino = inode->i_ino; + } +diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c +index 339e4c1..1138098 100644 +--- a/fs/proc/task_mmu.c ++++ b/fs/proc/task_mmu.c +@@ -306,7 +306,10 @@ show_map_vma(struct seq_file *m, struct vm_area_struct *vma, int is_pid) + const char *name = NULL; + + if (file) { +- struct inode *inode = file_inode(vma->vm_file); ++ struct inode *inode; ++ ++ file = vma_pr_or_file(vma); ++ inode = file_inode(file); + dev = inode->i_sb->s_dev; + ino = inode->i_ino; + pgoff = ((loff_t)vma->vm_pgoff) << PAGE_SHIFT; +@@ -1736,7 +1739,7 @@ static int show_numa_map(struct seq_file *m, void *v, int is_pid) + struct proc_maps_private *proc_priv = &numa_priv->proc_maps; + struct vm_area_struct *vma = v; + struct numa_maps *md = &numa_priv->md; +- struct file *file = vma->vm_file; ++ struct file *file = vma_pr_or_file(vma); + struct mm_struct *mm = vma->vm_mm; + struct mm_walk walk = { + .hugetlb_entry = gather_hugetlb_stats, +diff --git a/fs/proc/task_nommu.c b/fs/proc/task_nommu.c +index 5b62f57..dfb4a3b 100644 +--- a/fs/proc/task_nommu.c ++++ b/fs/proc/task_nommu.c +@@ -156,7 +156,10 @@ static int nommu_vma_show(struct seq_file *m, struct vm_area_struct *vma, + file = vma->vm_file; + + if (file) { +- struct inode *inode = file_inode(vma->vm_file); ++ struct inode *inode; ++ ++ file = vma_pr_or_file(vma); ++ inode = file_inode(file); + dev = inode->i_sb->s_dev; + ino = inode->i_ino; + pgoff = (loff_t)vma->vm_pgoff << PAGE_SHIFT; +diff --git a/include/linux/mm.h b/include/linux/mm.h +index ea818ff..fbd4799 100644 +--- a/include/linux/mm.h ++++ b/include/linux/mm.h +@@ -1362,6 +1362,28 @@ static inline int fixup_user_fault(struct task_struct *tsk, + } + #endif + ++extern void vma_do_file_update_time(struct vm_area_struct *, const char[], int); ++extern struct file *vma_do_pr_or_file(struct vm_area_struct *, const char[], ++ int); ++extern void vma_do_get_file(struct vm_area_struct *, const char[], int); ++extern void vma_do_fput(struct vm_area_struct *, const char[], int); ++ ++#define vma_file_update_time(vma) vma_do_file_update_time(vma, __func__, \ ++ __LINE__) ++#define vma_pr_or_file(vma) vma_do_pr_or_file(vma, __func__, \ ++ __LINE__) ++#define vma_get_file(vma) vma_do_get_file(vma, __func__, __LINE__) ++#define vma_fput(vma) vma_do_fput(vma, __func__, __LINE__) ++ ++#ifndef CONFIG_MMU ++extern struct file *vmr_do_pr_or_file(struct vm_region *, const char[], int); ++extern void vmr_do_fput(struct vm_region *, const char[], int); ++ ++#define vmr_pr_or_file(region) vmr_do_pr_or_file(region, __func__, \ ++ __LINE__) ++#define vmr_fput(region) vmr_do_fput(region, __func__, __LINE__) ++#endif /* !CONFIG_MMU */ ++ + extern int access_process_vm(struct task_struct *tsk, unsigned long addr, void *buf, int len, + unsigned int gup_flags); + extern int access_remote_vm(struct mm_struct *mm, unsigned long addr, +diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h +index cfd0ac4..135e11c 100644 +--- a/include/linux/mm_types.h ++++ b/include/linux/mm_types.h +@@ -255,6 +255,7 @@ struct vm_region { + unsigned long vm_top; /* region allocated to here */ + unsigned long vm_pgoff; /* the offset in vm_file corresponding to vm_start */ + struct file *vm_file; /* the backing file or NULL */ ++ struct file *vm_prfile; /* the virtual backing file or NULL */ + + int vm_usage; /* region usage count (access under nommu_region_sem) */ + bool vm_icache_flushed : 1; /* true if the icache has been flushed for +@@ -329,6 +330,7 @@ struct vm_area_struct { + unsigned long vm_pgoff; /* Offset (within vm_file) in PAGE_SIZE + units */ + struct file * vm_file; /* File we map to (can be NULL). */ ++ struct file *vm_prfile; /* shadow of vm_file */ + void * vm_private_data; /* was vm_pte (shared mem) */ + + atomic_long_t swap_readahead_info; +diff --git a/kernel/fork.c b/kernel/fork.c +index 2295fc6..80e1fee 100644 +--- a/kernel/fork.c ++++ b/kernel/fork.c +@@ -676,7 +676,7 @@ static __latent_entropy int dup_mmap(struct mm_struct *mm, + struct inode *inode = file_inode(file); + struct address_space *mapping = file->f_mapping; + +- get_file(file); ++ vma_get_file(tmp); + if (tmp->vm_flags & VM_DENYWRITE) + atomic_dec(&inode->i_writecount); + i_mmap_lock_write(mapping); +diff --git a/mm/Makefile b/mm/Makefile +index e669f02..9c36567 100644 +--- a/mm/Makefile ++++ b/mm/Makefile +@@ -39,7 +39,7 @@ obj-y := filemap.o mempool.o oom_kill.o \ + mm_init.o mmu_context.o percpu.o slab_common.o \ + compaction.o vmacache.o swap_slots.o \ + interval_tree.o list_lru.o workingset.o \ +- debug.o $(mmu-y) ++ prfile.o debug.o $(mmu-y) + + obj-y += init-mm.o + +diff --git a/mm/filemap.c b/mm/filemap.c +index ee83baa..7677d13 100644 +--- a/mm/filemap.c ++++ b/mm/filemap.c +@@ -2704,7 +2704,7 @@ int filemap_page_mkwrite(struct vm_fault *vmf) + int ret = VM_FAULT_LOCKED; + + sb_start_pagefault(inode->i_sb); +- file_update_time(vmf->vma->vm_file); ++ vma_file_update_time(vmf->vma); + lock_page(page); + if (page->mapping != inode->i_mapping) { + unlock_page(page); +diff --git a/mm/mmap.c b/mm/mmap.c +index 9efdc021..d77f01f 100644 +--- a/mm/mmap.c ++++ b/mm/mmap.c +@@ -171,7 +171,7 @@ static struct vm_area_struct *remove_vma(struct vm_area_struct *vma) + if (vma->vm_ops && vma->vm_ops->close) + vma->vm_ops->close(vma); + if (vma->vm_file) +- fput(vma->vm_file); ++ vma_fput(vma); + mpol_put(vma_policy(vma)); + kmem_cache_free(vm_area_cachep, vma); + return next; +@@ -896,7 +896,7 @@ int __vma_adjust(struct vm_area_struct *vma, unsigned long start, + if (remove_next) { + if (file) { + uprobe_munmap(next, next->vm_start, next->vm_end); +- fput(file); ++ vma_fput(vma); + } + if (next->anon_vma) + anon_vma_merge(vma, next); +@@ -1761,8 +1761,8 @@ unsigned long mmap_region(struct file *file, unsigned long addr, + return addr; + + unmap_and_free_vma: ++ vma_fput(vma); + vma->vm_file = NULL; +- fput(file); + + /* Undo any partial mapping done by a device driver. */ + unmap_region(mm, vma, prev, vma->vm_start, vma->vm_end); +@@ -2586,7 +2586,7 @@ int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma, + goto out_free_mpol; + + if (new->vm_file) +- get_file(new->vm_file); ++ vma_get_file(new); + + if (new->vm_ops && new->vm_ops->open) + new->vm_ops->open(new); +@@ -2605,7 +2605,7 @@ int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma, + if (new->vm_ops && new->vm_ops->close) + new->vm_ops->close(new); + if (new->vm_file) +- fput(new->vm_file); ++ vma_fput(new); + unlink_anon_vmas(new); + out_free_mpol: + mpol_put(vma_policy(new)); +@@ -2767,7 +2767,7 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size, + struct vm_area_struct *vma; + unsigned long populate = 0; + unsigned long ret = -EINVAL; +- struct file *file; ++ struct file *file, *prfile; + + pr_warn_once("%s (%d) uses deprecated remap_file_pages() syscall. See Documentation/vm/remap_file_pages.txt.\n", + current->comm, current->pid); +@@ -2842,10 +2842,27 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size, + } + } + +- file = get_file(vma->vm_file); ++ vma_get_file(vma); ++ file = vma->vm_file; ++ prfile = vma->vm_prfile; + ret = do_mmap_pgoff(vma->vm_file, start, size, + prot, flags, pgoff, &populate, NULL); ++ if (!IS_ERR_VALUE(ret) && file && prfile) { ++ struct vm_area_struct *new_vma; ++ ++ new_vma = find_vma(mm, ret); ++ if (!new_vma->vm_prfile) ++ new_vma->vm_prfile = prfile; ++ if (new_vma != vma) ++ get_file(prfile); ++ } ++ /* ++ * two fput()s instead of vma_fput(vma), ++ * coz vma may not be available anymore. ++ */ + fput(file); ++ if (prfile) ++ fput(prfile); + out: + up_write(&mm->mmap_sem); + if (populate) +@@ -3153,7 +3170,7 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap, + if (anon_vma_clone(new_vma, vma)) + goto out_free_mempol; + if (new_vma->vm_file) +- get_file(new_vma->vm_file); ++ vma_get_file(new_vma); + if (new_vma->vm_ops && new_vma->vm_ops->open) + new_vma->vm_ops->open(new_vma); + vma_link(mm, new_vma, prev, rb_link, rb_parent); +diff --git a/mm/nommu.c b/mm/nommu.c +index 17c00d9..4bcdf94 100644 +--- a/mm/nommu.c ++++ b/mm/nommu.c +@@ -641,7 +641,7 @@ static void __put_nommu_region(struct vm_region *region) + up_write(&nommu_region_sem); + + if (region->vm_file) +- fput(region->vm_file); ++ vmr_fput(region); + + /* IO memory and memory shared directly out of the pagecache + * from ramfs/tmpfs mustn't be released here */ +@@ -799,7 +799,7 @@ static void delete_vma(struct mm_struct *mm, struct vm_area_struct *vma) + if (vma->vm_ops && vma->vm_ops->close) + vma->vm_ops->close(vma); + if (vma->vm_file) +- fput(vma->vm_file); ++ vma_fput(vma); + put_nommu_region(vma->vm_region); + kmem_cache_free(vm_area_cachep, vma); + } +@@ -1321,7 +1321,7 @@ unsigned long do_mmap(struct file *file, + goto error_just_free; + } + } +- fput(region->vm_file); ++ vmr_fput(region); + kmem_cache_free(vm_region_jar, region); + region = pregion; + result = start; +@@ -1396,10 +1396,10 @@ unsigned long do_mmap(struct file *file, + up_write(&nommu_region_sem); + error: + if (region->vm_file) +- fput(region->vm_file); ++ vmr_fput(region); + kmem_cache_free(vm_region_jar, region); + if (vma->vm_file) +- fput(vma->vm_file); ++ vma_fput(vma); + kmem_cache_free(vm_area_cachep, vma); + return ret; + +diff --git a/mm/prfile.c b/mm/prfile.c +new file mode 100644 +index 0000000..3f56669 +--- /dev/null ++++ b/mm/prfile.c +@@ -0,0 +1,86 @@ ++/* ++ * SPDX-License-Identifier: GPL-2.0 ++ * Mainly for aufs which mmap(2) different file and wants to print different ++ * path in /proc/PID/maps. ++ * Call these functions via macros defined in linux/mm.h. ++ * ++ * See Documentation/filesystems/aufs/design/06mmap.txt ++ * ++ * Copyright (c) 2014-2017 Junjro R. Okajima ++ * Copyright (c) 2014 Ian Campbell ++ */ ++ ++#include ++#include ++#include ++ ++/* #define PRFILE_TRACE */ ++static inline void prfile_trace(struct file *f, struct file *pr, ++ const char func[], int line, const char func2[]) ++{ ++#ifdef PRFILE_TRACE ++ if (pr) ++ pr_info("%s:%d: %s, %pD2\n", func, line, func2, f); ++#endif ++} ++ ++void vma_do_file_update_time(struct vm_area_struct *vma, const char func[], ++ int line) ++{ ++ struct file *f = vma->vm_file, *pr = vma->vm_prfile; ++ ++ prfile_trace(f, pr, func, line, __func__); ++ file_update_time(f); ++ if (f && pr) ++ file_update_time(pr); ++} ++ ++struct file *vma_do_pr_or_file(struct vm_area_struct *vma, const char func[], ++ int line) ++{ ++ struct file *f = vma->vm_file, *pr = vma->vm_prfile; ++ ++ prfile_trace(f, pr, func, line, __func__); ++ return (f && pr) ? pr : f; ++} ++ ++void vma_do_get_file(struct vm_area_struct *vma, const char func[], int line) ++{ ++ struct file *f = vma->vm_file, *pr = vma->vm_prfile; ++ ++ prfile_trace(f, pr, func, line, __func__); ++ get_file(f); ++ if (f && pr) ++ get_file(pr); ++} ++ ++void vma_do_fput(struct vm_area_struct *vma, const char func[], int line) ++{ ++ struct file *f = vma->vm_file, *pr = vma->vm_prfile; ++ ++ prfile_trace(f, pr, func, line, __func__); ++ fput(f); ++ if (f && pr) ++ fput(pr); ++} ++ ++#ifndef CONFIG_MMU ++struct file *vmr_do_pr_or_file(struct vm_region *region, const char func[], ++ int line) ++{ ++ struct file *f = region->vm_file, *pr = region->vm_prfile; ++ ++ prfile_trace(f, pr, func, line, __func__); ++ return (f && pr) ? pr : f; ++} ++ ++void vmr_do_fput(struct vm_region *region, const char func[], int line) ++{ ++ struct file *f = region->vm_file, *pr = region->vm_prfile; ++ ++ prfile_trace(f, pr, func, line, __func__); ++ fput(f); ++ if (f && pr) ++ fput(pr); ++} ++#endif /* !CONFIG_MMU */ diff --git a/patches/features/all/aufs4/aufs4-standalone.patch b/patches/features/all/aufs4/aufs4-standalone.patch new file mode 100644 index 00000000000..b4ddc760889 --- /dev/null +++ b/patches/features/all/aufs4/aufs4-standalone.patch @@ -0,0 +1,444 @@ +From: J. R. Okajima +Date: Sun Feb 18 15:24:12 2018 +0900 +Subject: aufs4.15 standalone patch +Origin: https://github.com/sfjro/aufs4-standalone/tree/caea84a33dce187ad77f9ee524d7ec46acc69c63 +Bug-Debian: https://bugs.debian.org/541828 + +Patch headers added by debian/patches/features/all/aufs4/gen-patch + +SPDX-License-Identifier: GPL-2.0 +aufs4.15 standalone patch + +diff --git a/fs/dcache.c b/fs/dcache.c +index 019f14b..10c1a6d 100644 +--- a/fs/dcache.c ++++ b/fs/dcache.c +@@ -1305,6 +1305,7 @@ void d_walk(struct dentry *parent, void *data, + seq = 1; + goto again; + } ++EXPORT_SYMBOL_GPL(d_walk); + + struct check_mount { + struct vfsmount *mnt; +@@ -2892,6 +2893,7 @@ void d_exchange(struct dentry *dentry1, struct dentry *dentry2) + + write_sequnlock(&rename_lock); + } ++EXPORT_SYMBOL_GPL(d_exchange); + + /** + * d_ancestor - search for an ancestor +diff --git a/fs/exec.c b/fs/exec.c +index 7eb8d21..56d7985 100644 +--- a/fs/exec.c ++++ b/fs/exec.c +@@ -109,6 +109,7 @@ bool path_noexec(const struct path *path) + return (path->mnt->mnt_flags & MNT_NOEXEC) || + (path->mnt->mnt_sb->s_iflags & SB_I_NOEXEC); + } ++EXPORT_SYMBOL_GPL(path_noexec); + + #ifdef CONFIG_USELIB + /* +diff --git a/fs/fcntl.c b/fs/fcntl.c +index 74c255d..ec53ee1 100644 +--- a/fs/fcntl.c ++++ b/fs/fcntl.c +@@ -85,6 +85,7 @@ int setfl(int fd, struct file * filp, unsigned long arg) + out: + return error; + } ++EXPORT_SYMBOL_GPL(setfl); + + static void f_modown(struct file *filp, struct pid *pid, enum pid_type type, + int force) +diff --git a/fs/file_table.c b/fs/file_table.c +index 2dc9f38..7bf57df 100644 +--- a/fs/file_table.c ++++ b/fs/file_table.c +@@ -148,6 +148,7 @@ struct file *get_empty_filp(void) + } + return ERR_PTR(-ENFILE); + } ++EXPORT_SYMBOL_GPL(get_empty_filp); + + /** + * alloc_file - allocate and initialize a 'struct file' +@@ -258,6 +259,7 @@ void flush_delayed_fput(void) + { + delayed_fput(NULL); + } ++EXPORT_SYMBOL_GPL(flush_delayed_fput); + + static DECLARE_DELAYED_WORK(delayed_fput_work, delayed_fput); + +@@ -300,6 +302,7 @@ void __fput_sync(struct file *file) + } + + EXPORT_SYMBOL(fput); ++EXPORT_SYMBOL_GPL(__fput_sync); + + void put_filp(struct file *file) + { +@@ -308,6 +311,7 @@ void put_filp(struct file *file) + file_free(file); + } + } ++EXPORT_SYMBOL_GPL(put_filp); + + void __init files_init(void) + { +diff --git a/fs/inode.c b/fs/inode.c +index 517883c..5cece5e 100644 +--- a/fs/inode.c ++++ b/fs/inode.c +@@ -1664,6 +1664,7 @@ int update_time(struct inode *inode, struct timespec *time, int flags) + + return update_time(inode, time, flags); + } ++EXPORT_SYMBOL_GPL(update_time); + + /** + * touch_atime - update the access time +diff --git a/fs/namespace.c b/fs/namespace.c +index 26ef600..a4b9707 100644 +--- a/fs/namespace.c ++++ b/fs/namespace.c +@@ -517,6 +517,7 @@ void __mnt_drop_write(struct vfsmount *mnt) + mnt_dec_writers(real_mount(mnt)); + preempt_enable(); + } ++EXPORT_SYMBOL_GPL(__mnt_drop_write); + + /** + * mnt_drop_write - give up write access to a mount +@@ -851,6 +852,7 @@ int is_current_mnt_ns(struct vfsmount *mnt) + { + return check_mnt(real_mount(mnt)); + } ++EXPORT_SYMBOL_GPL(is_current_mnt_ns); + + /* + * vfsmount lock must be held for write +@@ -1887,6 +1889,7 @@ int iterate_mounts(int (*f)(struct vfsmount *, void *), void *arg, + } + return 0; + } ++EXPORT_SYMBOL_GPL(iterate_mounts); + + static void cleanup_group_ids(struct mount *mnt, struct mount *end) + { +diff --git a/fs/notify/group.c b/fs/notify/group.c +index b7a4b6a..5a69d60 100644 +--- a/fs/notify/group.c ++++ b/fs/notify/group.c +@@ -22,6 +22,7 @@ + #include + #include + #include ++#include + + #include + #include "fsnotify.h" +@@ -109,6 +110,7 @@ void fsnotify_get_group(struct fsnotify_group *group) + { + refcount_inc(&group->refcnt); + } ++EXPORT_SYMBOL_GPL(fsnotify_get_group); + + /* + * Drop a reference to a group. Free it if it's through. +@@ -118,6 +120,7 @@ void fsnotify_put_group(struct fsnotify_group *group) + if (refcount_dec_and_test(&group->refcnt)) + fsnotify_final_destroy_group(group); + } ++EXPORT_SYMBOL_GPL(fsnotify_put_group); + + /* + * Create a new fsnotify_group and hold a reference for the group returned. +@@ -147,6 +150,7 @@ struct fsnotify_group *fsnotify_alloc_group(const struct fsnotify_ops *ops) + + return group; + } ++EXPORT_SYMBOL_GPL(fsnotify_alloc_group); + + int fsnotify_fasync(int fd, struct file *file, int on) + { +diff --git a/fs/notify/mark.c b/fs/notify/mark.c +index e9191b4..1f8ccfa 100644 +--- a/fs/notify/mark.c ++++ b/fs/notify/mark.c +@@ -108,6 +108,7 @@ void fsnotify_get_mark(struct fsnotify_mark *mark) + WARN_ON_ONCE(!refcount_read(&mark->refcnt)); + refcount_inc(&mark->refcnt); + } ++EXPORT_SYMBOL_GPL(fsnotify_put_mark); + + static void __fsnotify_recalc_mask(struct fsnotify_mark_connector *conn) + { +@@ -392,6 +393,7 @@ void fsnotify_destroy_mark(struct fsnotify_mark *mark, + mutex_unlock(&group->mark_mutex); + fsnotify_free_mark(mark); + } ++EXPORT_SYMBOL_GPL(fsnotify_destroy_mark); + + /* + * Sorting function for lists of fsnotify marks. +@@ -606,6 +608,7 @@ int fsnotify_add_mark_locked(struct fsnotify_mark *mark, struct inode *inode, + fsnotify_put_mark(mark); + return ret; + } ++EXPORT_SYMBOL_GPL(fsnotify_add_mark); + + int fsnotify_add_mark(struct fsnotify_mark *mark, struct inode *inode, + struct vfsmount *mnt, int allow_dups) +@@ -741,6 +744,7 @@ void fsnotify_init_mark(struct fsnotify_mark *mark, + fsnotify_get_group(group); + mark->group = group; + } ++EXPORT_SYMBOL_GPL(fsnotify_init_mark); + + /* + * Destroy all marks in destroy_list, waits for SRCU period to finish before +diff --git a/fs/open.c b/fs/open.c +index 7ea1184..6e2e241 100644 +--- a/fs/open.c ++++ b/fs/open.c +@@ -64,6 +64,7 @@ int do_truncate(struct dentry *dentry, loff_t length, unsigned int time_attrs, + inode_unlock(dentry->d_inode); + return ret; + } ++EXPORT_SYMBOL_GPL(do_truncate); + + long vfs_truncate(const struct path *path, loff_t length) + { +@@ -691,6 +692,7 @@ int open_check_o_direct(struct file *f) + } + return 0; + } ++EXPORT_SYMBOL_GPL(open_check_o_direct); + + static int do_dentry_open(struct file *f, + struct inode *inode, +diff --git a/fs/read_write.c b/fs/read_write.c +index 0a5c47b..d423a5f 100644 +--- a/fs/read_write.c ++++ b/fs/read_write.c +@@ -454,6 +454,7 @@ ssize_t vfs_read(struct file *file, char __user *buf, size_t count, loff_t *pos) + + return ret; + } ++EXPORT_SYMBOL_GPL(vfs_read); + + static ssize_t new_sync_write(struct file *filp, const char __user *buf, size_t len, loff_t *ppos) + { +@@ -494,6 +495,7 @@ vfs_readf_t vfs_readf(struct file *file) + return new_sync_read; + return ERR_PTR(-ENOSYS); + } ++EXPORT_SYMBOL_GPL(vfs_readf); + + vfs_writef_t vfs_writef(struct file *file) + { +@@ -505,6 +507,7 @@ vfs_writef_t vfs_writef(struct file *file) + return new_sync_write; + return ERR_PTR(-ENOSYS); + } ++EXPORT_SYMBOL_GPL(vfs_writef); + + ssize_t __kernel_write(struct file *file, const void *buf, size_t count, loff_t *pos) + { +@@ -574,6 +577,7 @@ ssize_t vfs_write(struct file *file, const char __user *buf, size_t count, loff_ + + return ret; + } ++EXPORT_SYMBOL_GPL(vfs_write); + + static inline loff_t file_pos_read(struct file *file) + { +diff --git a/fs/splice.c b/fs/splice.c +index c5fb195..ce01a74 100644 +--- a/fs/splice.c ++++ b/fs/splice.c +@@ -850,6 +850,7 @@ long do_splice_from(struct pipe_inode_info *pipe, struct file *out, + + return splice_write(pipe, out, ppos, len, flags); + } ++EXPORT_SYMBOL_GPL(do_splice_from); + + /* + * Attempt to initiate a splice from a file to a pipe. +@@ -879,6 +880,7 @@ long do_splice_to(struct file *in, loff_t *ppos, + + return splice_read(in, ppos, pipe, len, flags); + } ++EXPORT_SYMBOL_GPL(do_splice_to); + + /** + * splice_direct_to_actor - splices data directly between two non-pipes +diff --git a/fs/sync.c b/fs/sync.c +index a6891ee..47a78bd 100644 +--- a/fs/sync.c ++++ b/fs/sync.c +@@ -39,6 +39,7 @@ int __sync_filesystem(struct super_block *sb, int wait) + sb->s_op->sync_fs(sb, wait); + return __sync_blockdev(sb->s_bdev, wait); + } ++EXPORT_SYMBOL_GPL(__sync_filesystem); + + /* + * Write out and wait upon all dirty data associated with this +diff --git a/fs/xattr.c b/fs/xattr.c +index 61cd28b..35570cd 100644 +--- a/fs/xattr.c ++++ b/fs/xattr.c +@@ -297,6 +297,7 @@ vfs_getxattr_alloc(struct dentry *dentry, const char *name, char **xattr_value, + *xattr_value = value; + return error; + } ++EXPORT_SYMBOL_GPL(vfs_getxattr_alloc); + + ssize_t + __vfs_getxattr(struct dentry *dentry, struct inode *inode, const char *name, +diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c +index 8b5f44d..979db63 100644 +--- a/kernel/locking/lockdep.c ++++ b/kernel/locking/lockdep.c +@@ -151,6 +151,7 @@ inline struct lock_class *lockdep_hlock_class(struct held_lock *hlock) + } + return lock_classes + hlock->class_idx - 1; + } ++EXPORT_SYMBOL_GPL(lockdep_hlock_class); + #define hlock_class(hlock) lockdep_hlock_class(hlock) + + #ifdef CONFIG_LOCK_STAT +diff --git a/kernel/task_work.c b/kernel/task_work.c +index 0fef395..83fb1ec 100644 +--- a/kernel/task_work.c ++++ b/kernel/task_work.c +@@ -116,3 +116,4 @@ void task_work_run(void) + } while (work); + } + } ++EXPORT_SYMBOL_GPL(task_work_run); +diff --git a/security/commoncap.c b/security/commoncap.c +index 48620c9..4981104 100644 +--- a/security/commoncap.c ++++ b/security/commoncap.c +@@ -1330,12 +1330,14 @@ int cap_mmap_addr(unsigned long addr) + } + return ret; + } ++EXPORT_SYMBOL_GPL(cap_mmap_addr); + + int cap_mmap_file(struct file *file, unsigned long reqprot, + unsigned long prot, unsigned long flags) + { + return 0; + } ++EXPORT_SYMBOL_GPL(cap_mmap_file); + + #ifdef CONFIG_SECURITY + +diff --git a/security/device_cgroup.c b/security/device_cgroup.c +index c65b39b..e363d22 100644 +--- a/security/device_cgroup.c ++++ b/security/device_cgroup.c +@@ -8,6 +8,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -824,3 +825,4 @@ int __devcgroup_check_permission(short type, u32 major, u32 minor, + + return 0; + } ++EXPORT_SYMBOL_GPL(__devcgroup_check_permission); +diff --git a/security/security.c b/security/security.c +index 1cd8526..f2e4736 100644 +--- a/security/security.c ++++ b/security/security.c +@@ -531,6 +531,7 @@ int security_path_rmdir(const struct path *dir, struct dentry *dentry) + return 0; + return call_int_hook(path_rmdir, 0, dir, dentry); + } ++EXPORT_SYMBOL_GPL(security_path_rmdir); + + int security_path_unlink(const struct path *dir, struct dentry *dentry) + { +@@ -547,6 +548,7 @@ int security_path_symlink(const struct path *dir, struct dentry *dentry, + return 0; + return call_int_hook(path_symlink, 0, dir, dentry, old_name); + } ++EXPORT_SYMBOL_GPL(security_path_symlink); + + int security_path_link(struct dentry *old_dentry, const struct path *new_dir, + struct dentry *new_dentry) +@@ -555,6 +557,7 @@ int security_path_link(struct dentry *old_dentry, const struct path *new_dir, + return 0; + return call_int_hook(path_link, 0, old_dentry, new_dir, new_dentry); + } ++EXPORT_SYMBOL_GPL(security_path_link); + + int security_path_rename(const struct path *old_dir, struct dentry *old_dentry, + const struct path *new_dir, struct dentry *new_dentry, +@@ -582,6 +585,7 @@ int security_path_truncate(const struct path *path) + return 0; + return call_int_hook(path_truncate, 0, path); + } ++EXPORT_SYMBOL_GPL(security_path_truncate); + + int security_path_chmod(const struct path *path, umode_t mode) + { +@@ -589,6 +593,7 @@ int security_path_chmod(const struct path *path, umode_t mode) + return 0; + return call_int_hook(path_chmod, 0, path, mode); + } ++EXPORT_SYMBOL_GPL(security_path_chmod); + + int security_path_chown(const struct path *path, kuid_t uid, kgid_t gid) + { +@@ -596,6 +601,7 @@ int security_path_chown(const struct path *path, kuid_t uid, kgid_t gid) + return 0; + return call_int_hook(path_chown, 0, path, uid, gid); + } ++EXPORT_SYMBOL_GPL(security_path_chown); + + int security_path_chroot(const struct path *path) + { +@@ -681,6 +687,7 @@ int security_inode_readlink(struct dentry *dentry) + return 0; + return call_int_hook(inode_readlink, 0, dentry); + } ++EXPORT_SYMBOL_GPL(security_inode_readlink); + + int security_inode_follow_link(struct dentry *dentry, struct inode *inode, + bool rcu) +@@ -696,6 +703,7 @@ int security_inode_permission(struct inode *inode, int mask) + return 0; + return call_int_hook(inode_permission, 0, inode, mask); + } ++EXPORT_SYMBOL_GPL(security_inode_permission); + + int security_inode_setattr(struct dentry *dentry, struct iattr *attr) + { +@@ -867,6 +875,7 @@ int security_file_permission(struct file *file, int mask) + + return fsnotify_perm(file, mask); + } ++EXPORT_SYMBOL_GPL(security_file_permission); + + int security_file_alloc(struct file *file) + { +@@ -926,6 +935,7 @@ int security_mmap_file(struct file *file, unsigned long prot, + return ret; + return ima_file_mmap(file, prot); + } ++EXPORT_SYMBOL_GPL(security_mmap_file); + + int security_mmap_addr(unsigned long addr) + { diff --git a/patches/features/all/aufs4/gen-patch b/patches/features/all/aufs4/gen-patch new file mode 100755 index 00000000000..f37ec0b2c11 --- /dev/null +++ b/patches/features/all/aufs4/gen-patch @@ -0,0 +1,31 @@ +#!/bin/bash -e + +aufs_dir="$1" + +export GIT_DIR="$aufs_dir/.git" + +from_line='From: J. R. Okajima ' +if [ -d "$GIT_DIR" ]; then + origin_line="Origin: https://github.com/sfjro/aufs4-standalone/tree/$(git rev-list HEAD -1)" +else + echo >&2 "W: Cannot include a specific origin URL without an aufs git repo" + origin_line='Origin: https://github.com/sfjro/aufs4-standalone/branches' +fi +bug_line='Bug-Debian: https://bugs.debian.org/541828' + +for patch in aufs4-{base,mmap,standalone}.patch; do + { + echo "$from_line" + if [ -d "$GIT_DIR" ]; then + git log --pretty='Date: %ad' HEAD -1 -- "$patch" + fi + echo -n 'Subject: ' + grep -v '^SPDX-License-Identifier:' "$aufs_dir/$patch" | head -1 + echo "$origin_line" + echo "$bug_line" + echo + echo 'Patch headers added by debian/patches/features/all/aufs4/gen-patch' + echo + sed 's/^+.*EXPORT_SYMBOL\b/&_GPL/' < "$aufs_dir"/"$patch" + } > debian/patches/features/all/aufs4/"$patch" +done diff --git a/patches/features/all/drivers-media-dvb-usb-af9005-request_firmware.patch b/patches/features/all/drivers-media-dvb-usb-af9005-request_firmware.patch new file mode 100644 index 00000000000..7ab3e6bf1ff --- /dev/null +++ b/patches/features/all/drivers-media-dvb-usb-af9005-request_firmware.patch @@ -0,0 +1,145 @@ +From: Ben Hutchings +Date: Mon, 24 Aug 2009 23:19:58 +0100 +Subject: af9005: Use request_firmware() to load register init script +Forwarded: no + +Read the register init script from the Windows driver. This is sick +but should avoid the potential copyright infringement in distributing +a version of the script which is directly derived from the driver. +--- + drivers/media/dvb/dvb-usb/Kconfig | 2 +- + drivers/media/dvb/dvb-usb/af9005-fe.c | 66 ++++++++++++++++++++++++++------ + 2 files changed, 54 insertions(+), 14 deletions(-) + +--- a/drivers/media/usb/dvb-usb/Kconfig ++++ b/drivers/media/usb/dvb-usb/Kconfig +@@ -227,10 +227,10 @@ config DVB_USB_OPERA1 + + config DVB_USB_AF9005 + tristate "Afatech AF9005 DVB-T USB1.1 support" +- depends on BROKEN + depends on DVB_USB + select MEDIA_TUNER_MT2060 if MEDIA_SUBDRV_AUTOSELECT + select MEDIA_TUNER_QT1010 if MEDIA_SUBDRV_AUTOSELECT ++ select FW_LOADER + help + Say Y here to support the Afatech AF9005 based DVB-T USB1.1 receiver + and the TerraTec Cinergy T USB XE (Rev.1) +--- a/drivers/media/usb/dvb-usb/af9005-fe.c ++++ b/drivers/media/usb/dvb-usb/af9005-fe.c +@@ -22,10 +22,26 @@ + * see Documentation/dvb/README.dvb-usb for more information + */ + #include "af9005.h" +-#include "af9005-script.h" + #include "mt2060.h" + #include "qt1010.h" + #include ++#include ++ ++/* Register initialisation script to be extracted from the Windows driver */ ++ ++typedef struct { ++ __le16 reg; ++ u8 pos; ++ u8 len; ++ u8 val; ++ u8 pad; ++} __packed RegDesc; ++ ++#define WIN_DRV_NAME "AF05BDA.sys" ++#define WIN_DRV_VERSION "6.3.2.1" ++#define WIN_DRV_SIZE 133504 ++#define WIN_DRV_SCRIPT_OFFSET 88316 ++#define WIN_DRV_SCRIPT_SIZE 1110 + + struct af9005_fe_state { + struct dvb_usb_device *d; +@@ -816,6 +832,8 @@ static int af9005_fe_init(struct dvb_fro + { + struct af9005_fe_state *state = fe->demodulator_priv; + struct dvb_usb_adapter *adap = fe->dvb->priv; ++ const struct firmware *fw; ++ const RegDesc *script; + int ret, i, scriptlen; + u8 temp, temp0 = 0, temp1 = 0, temp2 = 0; + u8 buf[2]; +@@ -968,37 +986,55 @@ static int af9005_fe_init(struct dvb_fro + if ((ret = af9005_write_ofdm_register(state->d, 0xaefb, 0x01))) + return ret; + +- /* load init script */ +- deb_info("load init script\n"); +- scriptlen = sizeof(script) / sizeof(RegDesc); ++ /* load and validate init script */ ++ deb_info("load init script from Windows driver\n"); ++ ret = request_firmware(&fw, WIN_DRV_NAME, &state->d->udev->dev); ++ if (ret) ++ return ret; ++ BUILD_BUG_ON(sizeof(RegDesc) != 6); ++ if (fw->size != WIN_DRV_SIZE || ++ memcmp(fw->data + WIN_DRV_SCRIPT_OFFSET, ++ "\x80\xa1\x00\x08\x0a\x00", 6) || ++ memcmp(fw->data + WIN_DRV_SCRIPT_OFFSET + WIN_DRV_SCRIPT_SIZE - 6, ++ "\x49\xa3\x00\x06\x02\x00", 6)) { ++ err("%s is invalid - should be version %s, size %u bytes\n", ++ WIN_DRV_NAME, WIN_DRV_VERSION, WIN_DRV_SIZE); ++ ret = -EINVAL; ++ goto fail_release; ++ } ++ ++ script = (const RegDesc *)(fw->data + WIN_DRV_SCRIPT_OFFSET); ++ scriptlen = WIN_DRV_SCRIPT_SIZE / sizeof(RegDesc); + for (i = 0; i < scriptlen; i++) { ++ u16 reg = le16_to_cpu(script[i].reg); + if ((ret = +- af9005_write_register_bits(state->d, script[i].reg, ++ af9005_write_register_bits(state->d, reg, + script[i].pos, + script[i].len, script[i].val))) +- return ret; ++ goto fail_release; + /* save 3 bytes of original fcw */ +- if (script[i].reg == 0xae18) ++ if (reg == 0xae18) + temp2 = script[i].val; +- if (script[i].reg == 0xae19) ++ if (reg == 0xae19) + temp1 = script[i].val; +- if (script[i].reg == 0xae1a) ++ if (reg == 0xae1a) + temp0 = script[i].val; + + /* save original unplug threshold */ +- if (script[i].reg == xd_p_reg_unplug_th) ++ if (reg == xd_p_reg_unplug_th) + state->original_if_unplug_th = script[i].val; +- if (script[i].reg == xd_p_reg_unplug_rf_gain_th) ++ if (reg == xd_p_reg_unplug_rf_gain_th) + state->original_rf_unplug_th = script[i].val; +- if (script[i].reg == xd_p_reg_unplug_dtop_if_gain_th) ++ if (reg == xd_p_reg_unplug_dtop_if_gain_th) + state->original_dtop_if_unplug_th = script[i].val; +- if (script[i].reg == xd_p_reg_unplug_dtop_rf_gain_th) ++ if (reg == xd_p_reg_unplug_dtop_rf_gain_th) + state->original_dtop_rf_unplug_th = script[i].val; + + } + state->original_fcw = + ((u32) temp2 << 16) + ((u32) temp1 << 8) + (u32) temp0; + ++ release_firmware(fw); + + /* save original TOPs */ + deb_info("save original TOPs\n"); +@@ -1078,6 +1114,10 @@ static int af9005_fe_init(struct dvb_fro + + deb_info("profit!\n"); + return 0; ++ ++fail_release: ++ release_firmware(fw); ++ return ret; + } + + static int af9005_fe_sleep(struct dvb_frontend *fe) diff --git a/patches/features/all/lockdown/0001-Add-the-ability-to-lock-down-access-to-the-running-k.patch b/patches/features/all/lockdown/0001-Add-the-ability-to-lock-down-access-to-the-running-k.patch new file mode 100644 index 00000000000..27129101515 --- /dev/null +++ b/patches/features/all/lockdown/0001-Add-the-ability-to-lock-down-access-to-the-running-k.patch @@ -0,0 +1,165 @@ +From: David Howells +Date: Wed, 8 Nov 2017 15:11:31 +0000 +Subject: [01/29] Add the ability to lock down access to the running kernel + image +Origin: https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git/commit?id=6d350e2534bfaaaa3e523484b2ca44d22377e951 + +Provide a single call to allow kernel code to determine whether the system +should be locked down, thereby disallowing various accesses that might +allow the running kernel image to be changed including the loading of +modules that aren't validly signed with a key we recognise, fiddling with +MSR registers and disallowing hibernation, + +Signed-off-by: David Howells +Acked-by: James Morris +--- + include/linux/kernel.h | 17 ++++++++++++++ + include/linux/security.h | 8 +++++++ + security/Kconfig | 8 +++++++ + security/Makefile | 3 +++ + security/lock_down.c | 60 ++++++++++++++++++++++++++++++++++++++++++++++++ + 5 files changed, 96 insertions(+) + create mode 100644 security/lock_down.c + +diff --git a/include/linux/kernel.h b/include/linux/kernel.h +index 0ad4c3044cf9..362da2e4bf53 100644 +--- a/include/linux/kernel.h ++++ b/include/linux/kernel.h +@@ -287,6 +287,23 @@ static inline void refcount_error_report(struct pt_regs *regs, const char *err) + { } + #endif + ++#ifdef CONFIG_LOCK_DOWN_KERNEL ++extern bool __kernel_is_locked_down(const char *what, bool first); ++#else ++static inline bool __kernel_is_locked_down(const char *what, bool first) ++{ ++ return false; ++} ++#endif ++ ++#define kernel_is_locked_down(what) \ ++ ({ \ ++ static bool message_given; \ ++ bool locked_down = __kernel_is_locked_down(what, !message_given); \ ++ message_given = true; \ ++ locked_down; \ ++ }) ++ + /* Internal, do not use. */ + int __must_check _kstrtoul(const char *s, unsigned int base, unsigned long *res); + int __must_check _kstrtol(const char *s, unsigned int base, long *res); +diff --git a/include/linux/security.h b/include/linux/security.h +index ce6265960d6c..310775476b68 100644 +--- a/include/linux/security.h ++++ b/include/linux/security.h +@@ -1753,5 +1753,13 @@ static inline void free_secdata(void *secdata) + { } + #endif /* CONFIG_SECURITY */ + ++#ifdef CONFIG_LOCK_DOWN_KERNEL ++extern void __init init_lockdown(void); ++#else ++static inline void __init init_lockdown(void) ++{ ++} ++#endif ++ + #endif /* ! __LINUX_SECURITY_H */ + +diff --git a/security/Kconfig b/security/Kconfig +index e8e449444e65..8e01fd59ae7e 100644 +--- a/security/Kconfig ++++ b/security/Kconfig +@@ -205,6 +205,14 @@ config STATIC_USERMODEHELPER_PATH + If you wish for all usermode helper programs to be disabled, + specify an empty string here (i.e. ""). + ++config LOCK_DOWN_KERNEL ++ bool "Allow the kernel to be 'locked down'" ++ help ++ Allow the kernel to be locked down under certain circumstances, for ++ instance if UEFI secure boot is enabled. Locking down the kernel ++ turns off various features that might otherwise allow access to the ++ kernel image (eg. setting MSR registers). ++ + source security/selinux/Kconfig + source security/smack/Kconfig + source security/tomoyo/Kconfig +diff --git a/security/Makefile b/security/Makefile +index f2d71cdb8e19..8c4a43e3d4e0 100644 +--- a/security/Makefile ++++ b/security/Makefile +@@ -29,3 +29,6 @@ obj-$(CONFIG_CGROUP_DEVICE) += device_cgroup.o + # Object integrity file lists + subdir-$(CONFIG_INTEGRITY) += integrity + obj-$(CONFIG_INTEGRITY) += integrity/ ++ ++# Allow the kernel to be locked down ++obj-$(CONFIG_LOCK_DOWN_KERNEL) += lock_down.o +diff --git a/security/lock_down.c b/security/lock_down.c +new file mode 100644 +index 000000000000..d8595c0e6673 +--- /dev/null ++++ b/security/lock_down.c +@@ -0,0 +1,60 @@ ++/* Lock down the kernel ++ * ++ * Copyright (C) 2016 Red Hat, Inc. All Rights Reserved. ++ * Written by David Howells (dhowells@redhat.com) ++ * ++ * This program is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU General Public Licence ++ * as published by the Free Software Foundation; either version ++ * 2 of the Licence, or (at your option) any later version. ++ */ ++ ++#include ++#include ++ ++static __ro_after_init bool kernel_locked_down; ++ ++/* ++ * Put the kernel into lock-down mode. ++ */ ++static void __init lock_kernel_down(const char *where) ++{ ++ if (!kernel_locked_down) { ++ kernel_locked_down = true; ++ pr_notice("Kernel is locked down from %s; see man kernel_lockdown.7\n", ++ where); ++ } ++} ++ ++static int __init lockdown_param(char *ignored) ++{ ++ lock_kernel_down("command line"); ++ return 0; ++} ++ ++early_param("lockdown", lockdown_param); ++ ++/* ++ * Lock the kernel down from very early in the arch setup. This must happen ++ * prior to things like ACPI being initialised. ++ */ ++void __init init_lockdown(void) ++{ ++#ifdef CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT ++ if (efi_enabled(EFI_SECURE_BOOT)) ++ lock_kernel_down("EFI secure boot"); ++#endif ++} ++ ++/** ++ * kernel_is_locked_down - Find out if the kernel is locked down ++ * @what: Tag to use in notice generated if lockdown is in effect ++ */ ++bool __kernel_is_locked_down(const char *what, bool first) ++{ ++ if (what && first && kernel_locked_down) ++ pr_notice("Lockdown: %s is restricted; see man kernel_lockdown.7\n", ++ what); ++ return kernel_locked_down; ++} ++EXPORT_SYMBOL(__kernel_is_locked_down); diff --git a/patches/features/all/lockdown/0002-Add-a-SysRq-option-to-lift-kernel-lockdown.patch b/patches/features/all/lockdown/0002-Add-a-SysRq-option-to-lift-kernel-lockdown.patch new file mode 100644 index 00000000000..bcaa6767859 --- /dev/null +++ b/patches/features/all/lockdown/0002-Add-a-SysRq-option-to-lift-kernel-lockdown.patch @@ -0,0 +1,269 @@ +From: Kyle McMartin +Date: Wed, 8 Nov 2017 15:11:31 +0000 +Subject: [02/29] Add a SysRq option to lift kernel lockdown +Origin: https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git/commit?id=47a04d29e952d4dd896f2ec4c2ecee6971ab364d + +Make an option to provide a sysrq key that will lift the kernel lockdown, +thereby allowing the running kernel image to be accessed and modified. + +On x86 this is triggered with SysRq+x, but this key may not be available on +all arches, so it is set by setting LOCKDOWN_LIFT_KEY in asm/setup.h. +Since this macro must be defined in an arch to be able to use this facility +for that arch, the Kconfig option is restricted to arches that support it. + +Signed-off-by: Kyle McMartin +Signed-off-by: David Howells +cc: x86@kernel.org +[bwh: Forward-ported to 4.15] +--- + arch/x86/include/asm/setup.h | 2 ++ + drivers/input/misc/uinput.c | 1 + + drivers/tty/sysrq.c | 19 ++++++++++++------ + include/linux/input.h | 5 +++++ + include/linux/sysrq.h | 8 +++++++- + kernel/debug/kdb/kdb_main.c | 2 +- + security/Kconfig | 10 ++++++++++ + security/lock_down.c | 47 ++++++++++++++++++++++++++++++++++++++++++++ + 8 files changed, 86 insertions(+), 8 deletions(-) + +--- a/arch/x86/include/asm/setup.h ++++ b/arch/x86/include/asm/setup.h +@@ -9,6 +9,8 @@ + #include + #include + ++#define LOCKDOWN_LIFT_KEY 'x' ++ + #ifdef __i386__ + + #include +--- a/drivers/input/misc/uinput.c ++++ b/drivers/input/misc/uinput.c +@@ -362,6 +362,7 @@ static int uinput_create_device(struct u + dev->flush = uinput_dev_flush; + } + ++ dev->flags |= INPUTDEV_FLAGS_SYNTHETIC; + dev->event = uinput_dev_event; + + input_set_drvdata(udev->dev, udev); +--- a/drivers/tty/sysrq.c ++++ b/drivers/tty/sysrq.c +@@ -487,6 +487,7 @@ static struct sysrq_key_op *sysrq_key_ta + /* x: May be registered on mips for TLB dump */ + /* x: May be registered on ppc/powerpc for xmon */ + /* x: May be registered on sparc64 for global PMU dump */ ++ /* x: May be registered on x86_64 for disabling secure boot */ + NULL, /* x */ + /* y: May be registered on sparc64 for global register dump */ + NULL, /* y */ +@@ -530,7 +531,7 @@ static void __sysrq_put_key_op(int key, + sysrq_key_table[i] = op_p; + } + +-void __handle_sysrq(int key, bool check_mask) ++void __handle_sysrq(int key, unsigned int from) + { + struct sysrq_key_op *op_p; + int orig_log_level; +@@ -550,11 +551,15 @@ void __handle_sysrq(int key, bool check_ + + op_p = __sysrq_get_key_op(key); + if (op_p) { ++ /* Ban synthetic events from some sysrq functionality */ ++ if ((from == SYSRQ_FROM_PROC || from == SYSRQ_FROM_SYNTHETIC) && ++ op_p->enable_mask & SYSRQ_DISABLE_USERSPACE) ++ printk("This sysrq operation is disabled from userspace.\n"); + /* + * Should we check for enabled operations (/proc/sysrq-trigger + * should not) and is the invoked operation enabled? + */ +- if (!check_mask || sysrq_on_mask(op_p->enable_mask)) { ++ if (from == SYSRQ_FROM_KERNEL || sysrq_on_mask(op_p->enable_mask)) { + pr_cont("%s\n", op_p->action_msg); + console_loglevel = orig_log_level; + op_p->handler(key); +@@ -586,7 +591,7 @@ void __handle_sysrq(int key, bool check_ + void handle_sysrq(int key) + { + if (sysrq_on()) +- __handle_sysrq(key, true); ++ __handle_sysrq(key, SYSRQ_FROM_KERNEL); + } + EXPORT_SYMBOL(handle_sysrq); + +@@ -667,7 +672,7 @@ static void sysrq_do_reset(struct timer_ + static void sysrq_handle_reset_request(struct sysrq_state *state) + { + if (state->reset_requested) +- __handle_sysrq(sysrq_xlate[KEY_B], false); ++ __handle_sysrq(sysrq_xlate[KEY_B], SYSRQ_FROM_KERNEL); + + if (sysrq_reset_downtime_ms) + mod_timer(&state->keyreset_timer, +@@ -818,8 +823,10 @@ static bool sysrq_handle_keypress(struct + + default: + if (sysrq->active && value && value != 2) { ++ int from = sysrq->handle.dev->flags & INPUTDEV_FLAGS_SYNTHETIC ? ++ SYSRQ_FROM_SYNTHETIC : 0; + sysrq->need_reinject = false; +- __handle_sysrq(sysrq_xlate[code], true); ++ __handle_sysrq(sysrq_xlate[code], from); + } + break; + } +@@ -1102,7 +1109,7 @@ static ssize_t write_sysrq_trigger(struc + + if (get_user(c, buf)) + return -EFAULT; +- __handle_sysrq(c, false); ++ __handle_sysrq(c, SYSRQ_FROM_PROC); + } + + return count; +--- a/include/linux/input.h ++++ b/include/linux/input.h +@@ -42,6 +42,7 @@ struct input_value { + * @phys: physical path to the device in the system hierarchy + * @uniq: unique identification code for the device (if device has it) + * @id: id of the device (struct input_id) ++ * @flags: input device flags (SYNTHETIC, etc.) + * @propbit: bitmap of device properties and quirks + * @evbit: bitmap of types of events supported by the device (EV_KEY, + * EV_REL, etc.) +@@ -124,6 +125,8 @@ struct input_dev { + const char *uniq; + struct input_id id; + ++ unsigned int flags; ++ + unsigned long propbit[BITS_TO_LONGS(INPUT_PROP_CNT)]; + + unsigned long evbit[BITS_TO_LONGS(EV_CNT)]; +@@ -190,6 +193,8 @@ struct input_dev { + }; + #define to_input_dev(d) container_of(d, struct input_dev, dev) + ++#define INPUTDEV_FLAGS_SYNTHETIC 0x000000001 ++ + /* + * Verify that we are in sync with input_device_id mod_devicetable.h #defines + */ +--- a/include/linux/sysrq.h ++++ b/include/linux/sysrq.h +@@ -29,6 +29,8 @@ + #define SYSRQ_ENABLE_BOOT 0x0080 + #define SYSRQ_ENABLE_RTNICE 0x0100 + ++#define SYSRQ_DISABLE_USERSPACE 0x00010000 ++ + struct sysrq_key_op { + void (*handler)(int); + char *help_msg; +@@ -43,8 +45,12 @@ struct sysrq_key_op { + * are available -- else NULL's). + */ + ++#define SYSRQ_FROM_KERNEL 0x0001 ++#define SYSRQ_FROM_PROC 0x0002 ++#define SYSRQ_FROM_SYNTHETIC 0x0004 ++ + void handle_sysrq(int key); +-void __handle_sysrq(int key, bool check_mask); ++void __handle_sysrq(int key, unsigned int from); + int register_sysrq_key(int key, struct sysrq_key_op *op); + int unregister_sysrq_key(int key, struct sysrq_key_op *op); + struct sysrq_key_op *__sysrq_get_key_op(int key); +--- a/kernel/debug/kdb/kdb_main.c ++++ b/kernel/debug/kdb/kdb_main.c +@@ -1970,7 +1970,7 @@ static int kdb_sr(int argc, const char * + return KDB_ARGCOUNT; + + kdb_trap_printk++; +- __handle_sysrq(*argv[1], check_mask); ++ __handle_sysrq(*argv[1], check_mask ? SYSRQ_FROM_KERNEL : 0); + kdb_trap_printk--; + + return 0; +--- a/security/Kconfig ++++ b/security/Kconfig +@@ -222,6 +222,16 @@ config LOCK_DOWN_KERNEL + turns off various features that might otherwise allow access to the + kernel image (eg. setting MSR registers). + ++config ALLOW_LOCKDOWN_LIFT_BY_SYSRQ ++ bool "Allow the kernel lockdown to be lifted by SysRq" ++ depends on LOCK_DOWN_KERNEL ++ depends on MAGIC_SYSRQ ++ depends on X86 ++ help ++ Allow the lockdown on a kernel to be lifted, by pressing a SysRq key ++ combination on a wired keyboard. ++ ++ + source security/selinux/Kconfig + source security/smack/Kconfig + source security/tomoyo/Kconfig +--- a/security/lock_down.c ++++ b/security/lock_down.c +@@ -11,8 +11,14 @@ + + #include + #include ++#include ++#include + ++#ifdef CONFIG_ALLOW_LOCKDOWN_LIFT_BY_SYSRQ ++static __read_mostly bool kernel_locked_down; ++#else + static __ro_after_init bool kernel_locked_down; ++#endif + + /* + * Put the kernel into lock-down mode. +@@ -58,3 +64,44 @@ bool __kernel_is_locked_down(const char + return kernel_locked_down; + } + EXPORT_SYMBOL(__kernel_is_locked_down); ++ ++#ifdef CONFIG_ALLOW_LOCKDOWN_LIFT_BY_SYSRQ ++ ++/* ++ * Take the kernel out of lockdown mode. ++ */ ++static void lift_kernel_lockdown(void) ++{ ++ pr_notice("Lifting lockdown\n"); ++ kernel_locked_down = false; ++} ++ ++/* ++ * Allow lockdown to be lifted by pressing something like SysRq+x (and not by ++ * echoing the appropriate letter into the sysrq-trigger file). ++ */ ++static void sysrq_handle_lockdown_lift(int key) ++{ ++ if (kernel_locked_down) ++ lift_kernel_lockdown(); ++} ++ ++static struct sysrq_key_op lockdown_lift_sysrq_op = { ++ .handler = sysrq_handle_lockdown_lift, ++ .help_msg = "unSB(x)", ++ .action_msg = "Disabling Secure Boot restrictions", ++ .enable_mask = SYSRQ_DISABLE_USERSPACE, ++}; ++ ++static int __init lockdown_lift_sysrq(void) ++{ ++ if (kernel_locked_down) { ++ lockdown_lift_sysrq_op.help_msg[5] = LOCKDOWN_LIFT_KEY; ++ register_sysrq_key(LOCKDOWN_LIFT_KEY, &lockdown_lift_sysrq_op); ++ } ++ return 0; ++} ++ ++late_initcall(lockdown_lift_sysrq); ++ ++#endif /* CONFIG_ALLOW_LOCKDOWN_LIFT_BY_SYSRQ */ diff --git a/patches/features/all/lockdown/0003-ima-require-secure_boot-rules-in-lockdown-mode.patch b/patches/features/all/lockdown/0003-ima-require-secure_boot-rules-in-lockdown-mode.patch new file mode 100644 index 00000000000..fd9bc7a67c2 --- /dev/null +++ b/patches/features/all/lockdown/0003-ima-require-secure_boot-rules-in-lockdown-mode.patch @@ -0,0 +1,75 @@ +From: Mimi Zohar +Date: Wed, 8 Nov 2017 15:11:32 +0000 +Subject: [03/29] ima: require secure_boot rules in lockdown mode +Origin: https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git/commit?id=29c55d71a8185208c7962843a29c9a84ae27b2b0 + +Require the "secure_boot" rules, whether or not it is specified +on the boot command line, for both the builtin and custom policies +in secure boot lockdown mode. + +Signed-off-by: Mimi Zohar +Signed-off-by: David Howells +--- + security/integrity/ima/ima_policy.c | 39 +++++++++++++++++++++++++++---------- + 1 file changed, 29 insertions(+), 10 deletions(-) + +diff --git a/security/integrity/ima/ima_policy.c b/security/integrity/ima/ima_policy.c +index 95209a5f8595..49c75e2a1ec5 100644 +--- a/security/integrity/ima/ima_policy.c ++++ b/security/integrity/ima/ima_policy.c +@@ -427,14 +427,21 @@ void ima_update_policy_flag(void) + */ + void __init ima_init_policy(void) + { +- int i, measure_entries, appraise_entries, secure_boot_entries; ++ int i; ++ int measure_entries = 0; ++ int appraise_entries = 0; ++ int secure_boot_entries = 0; ++ bool kernel_locked_down = __kernel_is_locked_down(NULL, false); + + /* if !ima_policy set entries = 0 so we load NO default rules */ +- measure_entries = ima_policy ? ARRAY_SIZE(dont_measure_rules) : 0; +- appraise_entries = ima_use_appraise_tcb ? +- ARRAY_SIZE(default_appraise_rules) : 0; +- secure_boot_entries = ima_use_secure_boot ? +- ARRAY_SIZE(secure_boot_rules) : 0; ++ if (ima_policy) ++ measure_entries = ARRAY_SIZE(dont_measure_rules); ++ ++ if (ima_use_appraise_tcb) ++ appraise_entries = ARRAY_SIZE(default_appraise_rules); ++ ++ if (ima_use_secure_boot || kernel_locked_down) ++ secure_boot_entries = ARRAY_SIZE(secure_boot_rules); + + for (i = 0; i < measure_entries; i++) + list_add_tail(&dont_measure_rules[i].list, &ima_default_rules); +@@ -455,11 +462,23 @@ void __init ima_init_policy(void) + + /* + * Insert the appraise rules requiring file signatures, prior to +- * any other appraise rules. ++ * any other appraise rules. In secure boot lock-down mode, also ++ * require these appraise rules for custom policies. + */ +- for (i = 0; i < secure_boot_entries; i++) +- list_add_tail(&secure_boot_rules[i].list, +- &ima_default_rules); ++ for (i = 0; i < secure_boot_entries; i++) { ++ struct ima_rule_entry *entry; ++ ++ /* Include for builtin policies */ ++ list_add_tail(&secure_boot_rules[i].list, &ima_default_rules); ++ ++ /* Include for custom policies */ ++ if (kernel_locked_down) { ++ entry = kmemdup(&secure_boot_rules[i], sizeof(*entry), ++ GFP_KERNEL); ++ if (entry) ++ list_add_tail(&entry->list, &ima_policy_rules); ++ } ++ } + + for (i = 0; i < appraise_entries; i++) { + list_add_tail(&default_appraise_rules[i].list, diff --git a/patches/features/all/lockdown/0004-Enforce-module-signatures-if-the-kernel-is-locked-do.patch b/patches/features/all/lockdown/0004-Enforce-module-signatures-if-the-kernel-is-locked-do.patch new file mode 100644 index 00000000000..87ce05432c8 --- /dev/null +++ b/patches/features/all/lockdown/0004-Enforce-module-signatures-if-the-kernel-is-locked-do.patch @@ -0,0 +1,90 @@ +From: David Howells +Date: Wed, 8 Nov 2017 15:11:32 +0000 +Subject: [04/29] Enforce module signatures if the kernel is locked down +Origin: https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git/commit?id=1616ef1deccf5fdb525643a6b3efae34946a148d + +If the kernel is locked down, require that all modules have valid +signatures that we can verify or that IMA can validate the file. + +Signed-off-by: David Howells +Reviewed-by: "Lee, Chun-Yi" +Reviewed-by: James Morris +--- + kernel/module.c | 19 ++++++++++++------- + 1 file changed, 12 insertions(+), 7 deletions(-) + +diff --git a/kernel/module.c b/kernel/module.c +index de66ec825992..0ce29c8aa75a 100644 +--- a/kernel/module.c ++++ b/kernel/module.c +@@ -64,6 +64,7 @@ + #include + #include + #include ++#include + #include + #include "module-internal.h" + +@@ -2757,7 +2758,8 @@ static inline void kmemleak_load_module(const struct module *mod, + #endif + + #ifdef CONFIG_MODULE_SIG +-static int module_sig_check(struct load_info *info, int flags) ++static int module_sig_check(struct load_info *info, int flags, ++ bool can_do_ima_check) + { + int err = -ENOKEY; + const unsigned long markerlen = sizeof(MODULE_SIG_STRING) - 1; +@@ -2781,13 +2783,16 @@ static int module_sig_check(struct load_info *info, int flags) + } + + /* Not having a signature is only an error if we're strict. */ +- if (err == -ENOKEY && !sig_enforce) ++ if (err == -ENOKEY && !sig_enforce && ++ (!can_do_ima_check || !is_ima_appraise_enabled()) && ++ !kernel_is_locked_down("Loading of unsigned modules")) + err = 0; + + return err; + } + #else /* !CONFIG_MODULE_SIG */ +-static int module_sig_check(struct load_info *info, int flags) ++static int module_sig_check(struct load_info *info, int flags, ++ bool can_do_ima_check) + { + return 0; + } +@@ -3630,13 +3635,13 @@ static int unknown_module_param_cb(char *param, char *val, const char *modname, + /* Allocate and load the module: note that size of section 0 is always + zero, and we rely on this for optional sections. */ + static int load_module(struct load_info *info, const char __user *uargs, +- int flags) ++ int flags, bool can_do_ima_check) + { + struct module *mod; + long err; + char *after_dashes; + +- err = module_sig_check(info, flags); ++ err = module_sig_check(info, flags, can_do_ima_check); + if (err) + goto free_copy; + +@@ -3830,7 +3835,7 @@ SYSCALL_DEFINE3(init_module, void __user *, umod, + if (err) + return err; + +- return load_module(&info, uargs, 0); ++ return load_module(&info, uargs, 0, false); + } + + SYSCALL_DEFINE3(finit_module, int, fd, const char __user *, uargs, int, flags) +@@ -3857,7 +3862,7 @@ SYSCALL_DEFINE3(finit_module, int, fd, const char __user *, uargs, int, flags) + info.hdr = hdr; + info.len = size; + +- return load_module(&info, uargs, flags); ++ return load_module(&info, uargs, flags, true); + } + + static inline int within(unsigned long addr, void *start, unsigned long size) diff --git a/patches/features/all/lockdown/0005-Restrict-dev-mem-kmem-port-when-the-kernel-is-locked.patch b/patches/features/all/lockdown/0005-Restrict-dev-mem-kmem-port-when-the-kernel-is-locked.patch new file mode 100644 index 00000000000..436885d77f2 --- /dev/null +++ b/patches/features/all/lockdown/0005-Restrict-dev-mem-kmem-port-when-the-kernel-is-locked.patch @@ -0,0 +1,35 @@ +From: Matthew Garrett +Date: Wed, 8 Nov 2017 15:11:32 +0000 +Subject: [05/29] Restrict /dev/{mem,kmem,port} when the kernel is locked down +Origin: https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git/commit?id=8214bb0d847928bf08a7d8475f84c06541c5a352 + +Allowing users to read and write to core kernel memory makes it possible +for the kernel to be subverted, avoiding module loading restrictions, and +also to steal cryptographic information. + +Disallow /dev/mem and /dev/kmem from being opened this when the kernel has +been locked down to prevent this. + +Also disallow /dev/port from being opened to prevent raw ioport access and +thus DMA from being used to accomplish the same thing. + +Signed-off-by: Matthew Garrett +Signed-off-by: David Howells +Reviewed-by: "Lee, Chun-Yi" +--- + drivers/char/mem.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/drivers/char/mem.c b/drivers/char/mem.c +index 593a8818aca9..0ce5ac0a5c6b 100644 +--- a/drivers/char/mem.c ++++ b/drivers/char/mem.c +@@ -762,6 +762,8 @@ static loff_t memory_lseek(struct file *file, loff_t offset, int orig) + + static int open_port(struct inode *inode, struct file *filp) + { ++ if (kernel_is_locked_down("/dev/mem,kmem,port")) ++ return -EPERM; + return capable(CAP_SYS_RAWIO) ? 0 : -EPERM; + } + diff --git a/patches/features/all/lockdown/0006-kexec-Disable-at-runtime-if-the-kernel-is-locked-dow.patch b/patches/features/all/lockdown/0006-kexec-Disable-at-runtime-if-the-kernel-is-locked-dow.patch new file mode 100644 index 00000000000..005ae73c459 --- /dev/null +++ b/patches/features/all/lockdown/0006-kexec-Disable-at-runtime-if-the-kernel-is-locked-dow.patch @@ -0,0 +1,40 @@ +From: Matthew Garrett +Date: Wed, 8 Nov 2017 15:11:32 +0000 +Subject: [06/29] kexec: Disable at runtime if the kernel is locked down +Origin: https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git/commit?id=6081db9ba435b757a3a3473d0cd50ee2252ccaeb + +kexec permits the loading and execution of arbitrary code in ring 0, which +is something that lock-down is meant to prevent. It makes sense to disable +kexec in this situation. + +This does not affect kexec_file_load() which can check for a signature on the +image to be booted. + +Signed-off-by: Matthew Garrett +Signed-off-by: David Howells +Acked-by: Dave Young +Reviewed-by: "Lee, Chun-Yi" +Reviewed-by: James Morris +cc: kexec@lists.infradead.org +--- + kernel/kexec.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/kernel/kexec.c b/kernel/kexec.c +index e62ec4dc6620..7dadfed9b676 100644 +--- a/kernel/kexec.c ++++ b/kernel/kexec.c +@@ -201,6 +201,13 @@ SYSCALL_DEFINE4(kexec_load, unsigned long, entry, unsigned long, nr_segments, + if (!capable(CAP_SYS_BOOT) || kexec_load_disabled) + return -EPERM; + ++ /* ++ * kexec can be used to circumvent module loading restrictions, so ++ * prevent loading in that case ++ */ ++ if (kernel_is_locked_down("kexec of unsigned images")) ++ return -EPERM; ++ + /* + * Verify we have a legal set of flags + * This leaves us room for future extensions. diff --git a/patches/features/all/lockdown/0007-Copy-secure_boot-flag-in-boot-params-across-kexec-re.patch b/patches/features/all/lockdown/0007-Copy-secure_boot-flag-in-boot-params-across-kexec-re.patch new file mode 100644 index 00000000000..d93a737db92 --- /dev/null +++ b/patches/features/all/lockdown/0007-Copy-secure_boot-flag-in-boot-params-across-kexec-re.patch @@ -0,0 +1,36 @@ +From: Dave Young +Date: Wed, 8 Nov 2017 15:11:32 +0000 +Subject: [07/29] Copy secure_boot flag in boot params across kexec reboot +Origin: https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git/commit?id=a6b7f780bdaa731f3e2970d65dcd52fe9ba2409d + +Kexec reboot in case secure boot being enabled does not keep the secure +boot mode in new kernel, so later one can load unsigned kernel via legacy +kexec_load. In this state, the system is missing the protections provided +by secure boot. + +Adding a patch to fix this by retain the secure_boot flag in original +kernel. + +secure_boot flag in boot_params is set in EFI stub, but kexec bypasses the +stub. Fixing this issue by copying secure_boot flag across kexec reboot. + +Signed-off-by: Dave Young +Signed-off-by: David Howells +Reviewed-by: "Lee, Chun-Yi" +cc: kexec@lists.infradead.org +--- + arch/x86/kernel/kexec-bzimage64.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/arch/x86/kernel/kexec-bzimage64.c b/arch/x86/kernel/kexec-bzimage64.c +index fb095ba0c02f..7d0fac5bcbbe 100644 +--- a/arch/x86/kernel/kexec-bzimage64.c ++++ b/arch/x86/kernel/kexec-bzimage64.c +@@ -179,6 +179,7 @@ setup_efi_state(struct boot_params *params, unsigned long params_load_addr, + if (efi_enabled(EFI_OLD_MEMMAP)) + return 0; + ++ params->secure_boot = boot_params.secure_boot; + ei->efi_loader_signature = current_ei->efi_loader_signature; + ei->efi_systab = current_ei->efi_systab; + ei->efi_systab_hi = current_ei->efi_systab_hi; diff --git a/patches/features/all/lockdown/0008-kexec_file-Restrict-at-runtime-if-the-kernel-is-lock.patch b/patches/features/all/lockdown/0008-kexec_file-Restrict-at-runtime-if-the-kernel-is-lock.patch new file mode 100644 index 00000000000..130e4488df0 --- /dev/null +++ b/patches/features/all/lockdown/0008-kexec_file-Restrict-at-runtime-if-the-kernel-is-lock.patch @@ -0,0 +1,40 @@ +From: Chun-Yi Lee +Date: Wed, 8 Nov 2017 15:11:33 +0000 +Subject: [08/29] kexec_file: Restrict at runtime if the kernel is locked down +Origin: https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git/commit?id=eed4aca0409692d7d24bc64f5c98d346cd0506c4 + +When KEXEC_VERIFY_SIG is not enabled, kernel should not load images through +kexec_file systemcall if the kernel is locked down unless IMA can be used +to validate the image. + +This code was showed in Matthew's patch but not in git: +https://lkml.org/lkml/2015/3/13/778 + +Cc: Matthew Garrett +Signed-off-by: Chun-Yi Lee +Signed-off-by: David Howells +Reviewed-by: James Morris +cc: kexec@lists.infradead.org +--- + kernel/kexec_file.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/kernel/kexec_file.c b/kernel/kexec_file.c +index 9f48f4412297..3ba28fc3fab0 100644 +--- a/kernel/kexec_file.c ++++ b/kernel/kexec_file.c +@@ -255,6 +255,14 @@ SYSCALL_DEFINE5(kexec_file_load, int, kernel_fd, int, initrd_fd, + if (!capable(CAP_SYS_BOOT) || kexec_load_disabled) + return -EPERM; + ++ /* Don't permit images to be loaded into trusted kernels if we're not ++ * going to verify the signature on them ++ */ ++ if (!IS_ENABLED(CONFIG_KEXEC_VERIFY_SIG) && ++ !is_ima_appraise_enabled() && ++ kernel_is_locked_down("kexec of unsigned images")) ++ return -EPERM; ++ + /* Make sure we have a legal set of flags */ + if (flags != (flags & KEXEC_FILE_FLAGS)) + return -EINVAL; diff --git a/patches/features/all/lockdown/0009-hibernate-Disable-when-the-kernel-is-locked-down.patch b/patches/features/all/lockdown/0009-hibernate-Disable-when-the-kernel-is-locked-down.patch new file mode 100644 index 00000000000..80f5be580be --- /dev/null +++ b/patches/features/all/lockdown/0009-hibernate-Disable-when-the-kernel-is-locked-down.patch @@ -0,0 +1,31 @@ +From: Josh Boyer +Date: Wed, 8 Nov 2017 15:11:33 +0000 +Subject: [09/29] hibernate: Disable when the kernel is locked down +Origin: https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git/commit?id=480ddca2a40c2efd1c01cfa20d8f6c1377ddafe3 + +There is currently no way to verify the resume image when returning +from hibernate. This might compromise the signed modules trust model, +so until we can work with signed hibernate images we disable it when the +kernel is locked down. + +Signed-off-by: Josh Boyer +Signed-off-by: David Howells +Reviewed-by: "Lee, Chun-Yi" +cc: linux-pm@vger.kernel.org +--- + kernel/power/hibernate.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/kernel/power/hibernate.c b/kernel/power/hibernate.c +index a5c36e9c56a6..f2eafefeec50 100644 +--- a/kernel/power/hibernate.c ++++ b/kernel/power/hibernate.c +@@ -70,7 +70,7 @@ static const struct platform_hibernation_ops *hibernation_ops; + + bool hibernation_available(void) + { +- return (nohibernate == 0); ++ return nohibernate == 0 && !kernel_is_locked_down("Hibernation"); + } + + /** diff --git a/patches/features/all/lockdown/0010-uswsusp-Disable-when-the-kernel-is-locked-down.patch b/patches/features/all/lockdown/0010-uswsusp-Disable-when-the-kernel-is-locked-down.patch new file mode 100644 index 00000000000..3d164554fe7 --- /dev/null +++ b/patches/features/all/lockdown/0010-uswsusp-Disable-when-the-kernel-is-locked-down.patch @@ -0,0 +1,32 @@ +From: Matthew Garrett +Date: Wed, 8 Nov 2017 15:11:33 +0000 +Subject: [10/29] uswsusp: Disable when the kernel is locked down +Origin: https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git/commit?id=706def46d58e9c69e91db506305485731f615e44 + +uswsusp allows a user process to dump and then restore kernel state, which +makes it possible to modify the running kernel. Disable this if the kernel +is locked down. + +Signed-off-by: Matthew Garrett +Signed-off-by: David Howells +Reviewed-by: "Lee, Chun-Yi" +Reviewed-by: James Morris +cc: linux-pm@vger.kernel.org +--- + kernel/power/user.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/kernel/power/user.c b/kernel/power/user.c +index 22df9f7ff672..678ade9decfe 100644 +--- a/kernel/power/user.c ++++ b/kernel/power/user.c +@@ -52,6 +52,9 @@ static int snapshot_open(struct inode *inode, struct file *filp) + if (!hibernation_available()) + return -EPERM; + ++ if (kernel_is_locked_down("/dev/snapshot")) ++ return -EPERM; ++ + lock_system_sleep(); + + if (!atomic_add_unless(&snapshot_device_available, -1, 0)) { diff --git a/patches/features/all/lockdown/0011-PCI-Lock-down-BAR-access-when-the-kernel-is-locked-d.patch b/patches/features/all/lockdown/0011-PCI-Lock-down-BAR-access-when-the-kernel-is-locked-d.patch new file mode 100644 index 00000000000..79b3ec11007 --- /dev/null +++ b/patches/features/all/lockdown/0011-PCI-Lock-down-BAR-access-when-the-kernel-is-locked-d.patch @@ -0,0 +1,104 @@ +From: Matthew Garrett +Date: Wed, 8 Nov 2017 15:11:33 +0000 +Subject: [11/29] PCI: Lock down BAR access when the kernel is locked down +Origin: https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git/commit?id=d107d11fd7ac982a34b1233722cb3e72f9fe5a20 + +Any hardware that can potentially generate DMA has to be locked down in +order to avoid it being possible for an attacker to modify kernel code, +allowing them to circumvent disabled module loading or module signing. +Default to paranoid - in future we can potentially relax this for +sufficiently IOMMU-isolated devices. + +Signed-off-by: Matthew Garrett +Signed-off-by: David Howells +Acked-by: Bjorn Helgaas +Reviewed-by: "Lee, Chun-Yi" +cc: linux-pci@vger.kernel.org +--- + drivers/pci/pci-sysfs.c | 9 +++++++++ + drivers/pci/proc.c | 9 ++++++++- + drivers/pci/syscall.c | 3 ++- + 3 files changed, 19 insertions(+), 2 deletions(-) + +diff --git a/drivers/pci/pci-sysfs.c b/drivers/pci/pci-sysfs.c +index 1eecfa301f7f..e1a3b0e765c2 100644 +--- a/drivers/pci/pci-sysfs.c ++++ b/drivers/pci/pci-sysfs.c +@@ -881,6 +881,9 @@ static ssize_t pci_write_config(struct file *filp, struct kobject *kobj, + loff_t init_off = off; + u8 *data = (u8 *) buf; + ++ if (kernel_is_locked_down("Direct PCI access")) ++ return -EPERM; ++ + if (off > dev->cfg_size) + return 0; + if (off + count > dev->cfg_size) { +@@ -1175,6 +1178,9 @@ static int pci_mmap_resource(struct kobject *kobj, struct bin_attribute *attr, + enum pci_mmap_state mmap_type; + struct resource *res = &pdev->resource[bar]; + ++ if (kernel_is_locked_down("Direct PCI access")) ++ return -EPERM; ++ + if (res->flags & IORESOURCE_MEM && iomem_is_exclusive(res->start)) + return -EINVAL; + +@@ -1255,6 +1261,9 @@ static ssize_t pci_write_resource_io(struct file *filp, struct kobject *kobj, + struct bin_attribute *attr, char *buf, + loff_t off, size_t count) + { ++ if (kernel_is_locked_down("Direct PCI access")) ++ return -EPERM; ++ + return pci_resource_io(filp, kobj, attr, buf, off, count, true); + } + +diff --git a/drivers/pci/proc.c b/drivers/pci/proc.c +index 098360d7ff81..a6c53d855daa 100644 +--- a/drivers/pci/proc.c ++++ b/drivers/pci/proc.c +@@ -116,6 +116,9 @@ static ssize_t proc_bus_pci_write(struct file *file, const char __user *buf, + int size = dev->cfg_size; + int cnt; + ++ if (kernel_is_locked_down("Direct PCI access")) ++ return -EPERM; ++ + if (pos >= size) + return 0; + if (nbytes >= size) +@@ -195,6 +198,9 @@ static long proc_bus_pci_ioctl(struct file *file, unsigned int cmd, + #endif /* HAVE_PCI_MMAP */ + int ret = 0; + ++ if (kernel_is_locked_down("Direct PCI access")) ++ return -EPERM; ++ + switch (cmd) { + case PCIIOC_CONTROLLER: + ret = pci_domain_nr(dev->bus); +@@ -236,7 +242,8 @@ static int proc_bus_pci_mmap(struct file *file, struct vm_area_struct *vma) + struct pci_filp_private *fpriv = file->private_data; + int i, ret, write_combine = 0, res_bit = IORESOURCE_MEM; + +- if (!capable(CAP_SYS_RAWIO)) ++ if (!capable(CAP_SYS_RAWIO) || ++ kernel_is_locked_down("Direct PCI access")) + return -EPERM; + + if (fpriv->mmap_state == pci_mmap_io) { +diff --git a/drivers/pci/syscall.c b/drivers/pci/syscall.c +index 9bf993e1f71e..afa01cc3ceec 100644 +--- a/drivers/pci/syscall.c ++++ b/drivers/pci/syscall.c +@@ -92,7 +92,8 @@ SYSCALL_DEFINE5(pciconfig_write, unsigned long, bus, unsigned long, dfn, + u32 dword; + int err = 0; + +- if (!capable(CAP_SYS_ADMIN)) ++ if (!capable(CAP_SYS_ADMIN) || ++ kernel_is_locked_down("Direct PCI access")) + return -EPERM; + + dev = pci_get_bus_and_slot(bus, dfn); diff --git a/patches/features/all/lockdown/0012-x86-Lock-down-IO-port-access-when-the-kernel-is-lock.patch b/patches/features/all/lockdown/0012-x86-Lock-down-IO-port-access-when-the-kernel-is-lock.patch new file mode 100644 index 00000000000..f3b4e39aa75 --- /dev/null +++ b/patches/features/all/lockdown/0012-x86-Lock-down-IO-port-access-when-the-kernel-is-lock.patch @@ -0,0 +1,46 @@ +From: Matthew Garrett +Date: Wed, 8 Nov 2017 15:11:34 +0000 +Subject: [12/29] x86: Lock down IO port access when the kernel is locked down +Origin: https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git/commit?id=00ebba940247d4c37c06da4aedecf6b80db213cf + +IO port access would permit users to gain access to PCI configuration +registers, which in turn (on a lot of hardware) give access to MMIO +register space. This would potentially permit root to trigger arbitrary +DMA, so lock it down by default. + +This also implicitly locks down the KDADDIO, KDDELIO, KDENABIO and +KDDISABIO console ioctls. + +Signed-off-by: Matthew Garrett +Signed-off-by: David Howells +Reviewed-by: Thomas Gleixner +Reviewed-by: "Lee, Chun-Yi" +cc: x86@kernel.org +--- + arch/x86/kernel/ioport.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/arch/x86/kernel/ioport.c b/arch/x86/kernel/ioport.c +index 9c3cf0944bce..2c0f058651c5 100644 +--- a/arch/x86/kernel/ioport.c ++++ b/arch/x86/kernel/ioport.c +@@ -30,7 +30,8 @@ asmlinkage long sys_ioperm(unsigned long from, unsigned long num, int turn_on) + + if ((from + num <= from) || (from + num > IO_BITMAP_BITS)) + return -EINVAL; +- if (turn_on && !capable(CAP_SYS_RAWIO)) ++ if (turn_on && (!capable(CAP_SYS_RAWIO) || ++ kernel_is_locked_down("ioperm"))) + return -EPERM; + + /* +@@ -120,7 +121,8 @@ SYSCALL_DEFINE1(iopl, unsigned int, level) + return -EINVAL; + /* Trying to gain more privileges? */ + if (level > old) { +- if (!capable(CAP_SYS_RAWIO)) ++ if (!capable(CAP_SYS_RAWIO) || ++ kernel_is_locked_down("iopl")) + return -EPERM; + } + regs->flags = (regs->flags & ~X86_EFLAGS_IOPL) | diff --git a/patches/features/all/lockdown/0013-x86-msr-Restrict-MSR-access-when-the-kernel-is-locke.patch b/patches/features/all/lockdown/0013-x86-msr-Restrict-MSR-access-when-the-kernel-is-locke.patch new file mode 100644 index 00000000000..00c295bc2d0 --- /dev/null +++ b/patches/features/all/lockdown/0013-x86-msr-Restrict-MSR-access-when-the-kernel-is-locke.patch @@ -0,0 +1,50 @@ +From: Matthew Garrett +Date: Wed, 8 Nov 2017 15:11:34 +0000 +Subject: [13/29] x86/msr: Restrict MSR access when the kernel is locked down +Origin: https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git/commit?id=696dcddb285558b4febf318fe620a344d2b2fa47 + +Writing to MSRs should not be allowed if the kernel is locked down, since +it could lead to execution of arbitrary code in kernel mode. Based on a +patch by Kees Cook. + +MSR accesses are logged for the purposes of building up a whitelist as per +Alan Cox's suggestion. + +Signed-off-by: Matthew Garrett +Signed-off-by: David Howells +Acked-by: Kees Cook +Reviewed-by: Thomas Gleixner +Reviewed-by: "Lee, Chun-Yi" +cc: x86@kernel.org +--- + arch/x86/kernel/msr.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/arch/x86/kernel/msr.c b/arch/x86/kernel/msr.c +index ef688804f80d..dfb61d358196 100644 +--- a/arch/x86/kernel/msr.c ++++ b/arch/x86/kernel/msr.c +@@ -84,6 +84,11 @@ static ssize_t msr_write(struct file *file, const char __user *buf, + int err = 0; + ssize_t bytes = 0; + ++ if (kernel_is_locked_down("Direct MSR access")) { ++ pr_info("Direct access to MSR %x\n", reg); ++ return -EPERM; ++ } ++ + if (count % 8) + return -EINVAL; /* Invalid chunk size */ + +@@ -135,6 +140,11 @@ static long msr_ioctl(struct file *file, unsigned int ioc, unsigned long arg) + err = -EFAULT; + break; + } ++ if (kernel_is_locked_down("Direct MSR access")) { ++ pr_info("Direct access to MSR %x\n", regs[1]); /* Display %ecx */ ++ err = -EPERM; ++ break; ++ } + err = wrmsr_safe_regs_on_cpu(cpu, regs); + if (err) + break; diff --git a/patches/features/all/lockdown/0014-asus-wmi-Restrict-debugfs-interface-when-the-kernel-.patch b/patches/features/all/lockdown/0014-asus-wmi-Restrict-debugfs-interface-when-the-kernel-.patch new file mode 100644 index 00000000000..433316650d4 --- /dev/null +++ b/patches/features/all/lockdown/0014-asus-wmi-Restrict-debugfs-interface-when-the-kernel-.patch @@ -0,0 +1,55 @@ +From: Matthew Garrett +Date: Wed, 8 Nov 2017 15:11:34 +0000 +Subject: [14/29] asus-wmi: Restrict debugfs interface when the kernel is + locked down +Origin: https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git/commit?id=2e6d31b3176ee27d216bb92a3b108f6b19d4719a + +We have no way of validating what all of the Asus WMI methods do on a given +machine - and there's a risk that some will allow hardware state to be +manipulated in such a way that arbitrary code can be executed in the +kernel, circumventing module loading restrictions. Prevent that if the +kernel is locked down. + +Signed-off-by: Matthew Garrett +Signed-off-by: David Howells +Reviewed-by: "Lee, Chun-Yi" +cc: acpi4asus-user@lists.sourceforge.net +cc: platform-driver-x86@vger.kernel.org +--- + drivers/platform/x86/asus-wmi.c | 9 +++++++++ + 1 file changed, 9 insertions(+) + +diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/x86/asus-wmi.c +index 48e1541dc8d4..ef5587469337 100644 +--- a/drivers/platform/x86/asus-wmi.c ++++ b/drivers/platform/x86/asus-wmi.c +@@ -1905,6 +1905,9 @@ static int show_dsts(struct seq_file *m, void *data) + int err; + u32 retval = -1; + ++ if (kernel_is_locked_down("Asus WMI")) ++ return -EPERM; ++ + err = asus_wmi_get_devstate(asus, asus->debug.dev_id, &retval); + + if (err < 0) +@@ -1921,6 +1924,9 @@ static int show_devs(struct seq_file *m, void *data) + int err; + u32 retval = -1; + ++ if (kernel_is_locked_down("Asus WMI")) ++ return -EPERM; ++ + err = asus_wmi_set_devstate(asus->debug.dev_id, asus->debug.ctrl_param, + &retval); + +@@ -1945,6 +1951,9 @@ static int show_call(struct seq_file *m, void *data) + union acpi_object *obj; + acpi_status status; + ++ if (kernel_is_locked_down("Asus WMI")) ++ return -EPERM; ++ + status = wmi_evaluate_method(ASUS_WMI_MGMT_GUID, + 0, asus->debug.method_id, + &input, &output); diff --git a/patches/features/all/lockdown/0015-ACPI-Limit-access-to-custom_method-when-the-kernel-i.patch b/patches/features/all/lockdown/0015-ACPI-Limit-access-to-custom_method-when-the-kernel-i.patch new file mode 100644 index 00000000000..a184f3c83bf --- /dev/null +++ b/patches/features/all/lockdown/0015-ACPI-Limit-access-to-custom_method-when-the-kernel-i.patch @@ -0,0 +1,32 @@ +From: Matthew Garrett +Date: Wed, 8 Nov 2017 15:11:34 +0000 +Subject: [15/29] ACPI: Limit access to custom_method when the kernel is locked + down +Origin: https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git/commit?id=5ff99c830aacf02f25816a0da427216fb63ba16d + +custom_method effectively allows arbitrary access to system memory, making +it possible for an attacker to circumvent restrictions on module loading. +Disable it if the kernel is locked down. + +Signed-off-by: Matthew Garrett +Signed-off-by: David Howells +Reviewed-by: "Lee, Chun-Yi" +cc: linux-acpi@vger.kernel.org +--- + drivers/acpi/custom_method.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/drivers/acpi/custom_method.c b/drivers/acpi/custom_method.c +index c68e72414a67..b33fba70ec51 100644 +--- a/drivers/acpi/custom_method.c ++++ b/drivers/acpi/custom_method.c +@@ -29,6 +29,9 @@ static ssize_t cm_write(struct file *file, const char __user * user_buf, + struct acpi_table_header table; + acpi_status status; + ++ if (kernel_is_locked_down("ACPI custom methods")) ++ return -EPERM; ++ + if (!(*ppos)) { + /* parse the table header to get the table length */ + if (count <= sizeof(struct acpi_table_header)) diff --git a/patches/features/all/lockdown/0016-acpi-Ignore-acpi_rsdp-kernel-param-when-the-kernel-h.patch b/patches/features/all/lockdown/0016-acpi-Ignore-acpi_rsdp-kernel-param-when-the-kernel-h.patch new file mode 100644 index 00000000000..ba074877f9b --- /dev/null +++ b/patches/features/all/lockdown/0016-acpi-Ignore-acpi_rsdp-kernel-param-when-the-kernel-h.patch @@ -0,0 +1,32 @@ +From: Josh Boyer +Date: Wed, 8 Nov 2017 15:11:34 +0000 +Subject: [16/29] acpi: Ignore acpi_rsdp kernel param when the kernel has been + locked down +Origin: https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git/commit?id=67890a0361626ec3e035264656896c77670c414b + +This option allows userspace to pass the RSDP address to the kernel, which +makes it possible for a user to modify the workings of hardware . Reject +the option when the kernel is locked down. + +Signed-off-by: Josh Boyer +Signed-off-by: David Howells +Reviewed-by: "Lee, Chun-Yi" +cc: Dave Young +cc: linux-acpi@vger.kernel.org +--- + drivers/acpi/osl.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/acpi/osl.c b/drivers/acpi/osl.c +index db78d353bab1..36c6527c1b0a 100644 +--- a/drivers/acpi/osl.c ++++ b/drivers/acpi/osl.c +@@ -192,7 +192,7 @@ acpi_physical_address __init acpi_os_get_root_pointer(void) + acpi_physical_address pa = 0; + + #ifdef CONFIG_KEXEC +- if (acpi_rsdp) ++ if (acpi_rsdp && !kernel_is_locked_down("ACPI RSDP specification")) + return acpi_rsdp; + #endif + diff --git a/patches/features/all/lockdown/0017-acpi-Disable-ACPI-table-override-if-the-kernel-is-lo.patch b/patches/features/all/lockdown/0017-acpi-Disable-ACPI-table-override-if-the-kernel-is-lo.patch new file mode 100644 index 00000000000..3da877bb6ec --- /dev/null +++ b/patches/features/all/lockdown/0017-acpi-Disable-ACPI-table-override-if-the-kernel-is-lo.patch @@ -0,0 +1,40 @@ +From: Linn Crosetto +Date: Wed, 8 Nov 2017 15:11:34 +0000 +Subject: [17/29] acpi: Disable ACPI table override if the kernel is locked + down +Origin: https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git/commit?id=5976d26de05569951641ebeb95f7240993b66063 + +From the kernel documentation (initrd_table_override.txt): + + If the ACPI_INITRD_TABLE_OVERRIDE compile option is true, it is possible + to override nearly any ACPI table provided by the BIOS with an + instrumented, modified one. + +When securelevel is set, the kernel should disallow any unauthenticated +changes to kernel space. ACPI tables contain code invoked by the kernel, +so do not allow ACPI tables to be overridden if the kernel is locked down. + +Signed-off-by: Linn Crosetto +Signed-off-by: David Howells +Reviewed-by: "Lee, Chun-Yi" +cc: linux-acpi@vger.kernel.org +--- + drivers/acpi/tables.c | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/drivers/acpi/tables.c b/drivers/acpi/tables.c +index 80ce2a7d224b..5cc13c42daf9 100644 +--- a/drivers/acpi/tables.c ++++ b/drivers/acpi/tables.c +@@ -526,6 +526,11 @@ void __init acpi_table_upgrade(void) + if (table_nr == 0) + return; + ++ if (kernel_is_locked_down("ACPI table override")) { ++ pr_notice("kernel is locked down, ignoring table override\n"); ++ return; ++ } ++ + acpi_tables_addr = + memblock_find_in_range(0, ACPI_TABLE_UPGRADE_MAX_PHYS, + all_tables_size, PAGE_SIZE); diff --git a/patches/features/all/lockdown/0018-acpi-Disable-APEI-error-injection-if-the-kernel-is-l.patch b/patches/features/all/lockdown/0018-acpi-Disable-APEI-error-injection-if-the-kernel-is-l.patch new file mode 100644 index 00000000000..3ce9cdfc699 --- /dev/null +++ b/patches/features/all/lockdown/0018-acpi-Disable-APEI-error-injection-if-the-kernel-is-l.patch @@ -0,0 +1,43 @@ +From: Linn Crosetto +Date: Wed, 8 Nov 2017 15:11:35 +0000 +Subject: [18/29] acpi: Disable APEI error injection if the kernel is locked + down +Origin: https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git/commit?id=a9c239382bce17b9108f941130392151d5fff262 + +ACPI provides an error injection mechanism, EINJ, for debugging and testing +the ACPI Platform Error Interface (APEI) and other RAS features. If +supported by the firmware, ACPI specification 5.0 and later provide for a +way to specify a physical memory address to which to inject the error. + +Injecting errors through EINJ can produce errors which to the platform are +indistinguishable from real hardware errors. This can have undesirable +side-effects, such as causing the platform to mark hardware as needing +replacement. + +While it does not provide a method to load unauthenticated privileged code, +the effect of these errors may persist across reboots and affect trust in +the underlying hardware, so disable error injection through EINJ if +the kernel is locked down. + +Signed-off-by: Linn Crosetto +Signed-off-by: David Howells +Reviewed-by: "Lee, Chun-Yi" +cc: linux-acpi@vger.kernel.org +--- + drivers/acpi/apei/einj.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/drivers/acpi/apei/einj.c b/drivers/acpi/apei/einj.c +index b38737c83a24..6d71e1e97b20 100644 +--- a/drivers/acpi/apei/einj.c ++++ b/drivers/acpi/apei/einj.c +@@ -518,6 +518,9 @@ static int einj_error_inject(u32 type, u32 flags, u64 param1, u64 param2, + int rc; + u64 base_addr, size; + ++ if (kernel_is_locked_down("ACPI error injection")) ++ return -EPERM; ++ + /* If user manually set "flags", make sure it is legal */ + if (flags && (flags & + ~(SETWA_FLAGS_APICID|SETWA_FLAGS_MEM|SETWA_FLAGS_PCIE_SBDF))) diff --git a/patches/features/all/lockdown/0019-scsi-Lock-down-the-eata-driver.patch b/patches/features/all/lockdown/0019-scsi-Lock-down-the-eata-driver.patch new file mode 100644 index 00000000000..b2370534eeb --- /dev/null +++ b/patches/features/all/lockdown/0019-scsi-Lock-down-the-eata-driver.patch @@ -0,0 +1,42 @@ +From: David Howells +Date: Wed, 8 Nov 2017 15:11:35 +0000 +Subject: [19/29] scsi: Lock down the eata driver +Origin: https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git/commit?id=54aab7f5b0e4e6f68cec46d92c37e6c482b5e56e + +When the kernel is running in secure boot mode, we lock down the kernel to +prevent userspace from modifying the running kernel image. Whilst this +includes prohibiting access to things like /dev/mem, it must also prevent +access by means of configuring driver modules in such a way as to cause a +device to access or modify the kernel image. + +The eata driver takes a single string parameter that contains a slew of +settings, including hardware resource configuration. Prohibit use of the +parameter if the kernel is locked down. + +Suggested-by: Alan Cox +Signed-off-by: David Howells +cc: Dario Ballabio +cc: "James E.J. Bottomley" +cc: "Martin K. Petersen" +cc: linux-scsi@vger.kernel.org +--- + drivers/scsi/eata.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/drivers/scsi/eata.c b/drivers/scsi/eata.c +index 6501c330d8c8..72fceaa8f3da 100644 +--- a/drivers/scsi/eata.c ++++ b/drivers/scsi/eata.c +@@ -1552,8 +1552,11 @@ static int eata2x_detect(struct scsi_host_template *tpnt) + + tpnt->proc_name = "eata2x"; + +- if (strlen(boot_options)) ++ if (strlen(boot_options)) { ++ if (kernel_is_locked_down("Command line-specified device addresses, irqs and dma channels")) ++ return -EPERM; + option_setup(boot_options); ++ } + + #if defined(MODULE) + /* io_port could have been modified when loading as a module */ diff --git a/patches/features/all/lockdown/0020-Prohibit-PCMCIA-CIS-storage-when-the-kernel-is-locke.patch b/patches/features/all/lockdown/0020-Prohibit-PCMCIA-CIS-storage-when-the-kernel-is-locke.patch new file mode 100644 index 00000000000..058d543b800 --- /dev/null +++ b/patches/features/all/lockdown/0020-Prohibit-PCMCIA-CIS-storage-when-the-kernel-is-locke.patch @@ -0,0 +1,29 @@ +From: David Howells +Date: Wed, 8 Nov 2017 15:11:35 +0000 +Subject: [20/29] Prohibit PCMCIA CIS storage when the kernel is locked down +Origin: https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git/commit?id=18b2dfc74efeafbdbb8f5d4d28da6334b7e1f1ac + +Prohibit replacement of the PCMCIA Card Information Structure when the +kernel is locked down. + +Suggested-by: Dominik Brodowski +Signed-off-by: David Howells +cc: linux-pcmcia@lists.infradead.org +--- + drivers/pcmcia/cistpl.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/drivers/pcmcia/cistpl.c b/drivers/pcmcia/cistpl.c +index 55ef7d1fd8da..b7a0e42eeb25 100644 +--- a/drivers/pcmcia/cistpl.c ++++ b/drivers/pcmcia/cistpl.c +@@ -1578,6 +1578,9 @@ static ssize_t pccard_store_cis(struct file *filp, struct kobject *kobj, + struct pcmcia_socket *s; + int error; + ++ if (kernel_is_locked_down("Direct PCMCIA CIS storage")) ++ return -EPERM; ++ + s = to_socket(container_of(kobj, struct device, kobj)); + + if (off) diff --git a/patches/features/all/lockdown/0021-Lock-down-TIOCSSERIAL.patch b/patches/features/all/lockdown/0021-Lock-down-TIOCSSERIAL.patch new file mode 100644 index 00000000000..a8d6a339fe4 --- /dev/null +++ b/patches/features/all/lockdown/0021-Lock-down-TIOCSSERIAL.patch @@ -0,0 +1,34 @@ +From: David Howells +Date: Wed, 8 Nov 2017 15:11:35 +0000 +Subject: [21/29] Lock down TIOCSSERIAL +Origin: https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git/commit?id=f5fdeda0622ca040961521819794193777a03e8a + +Lock down TIOCSSERIAL as that can be used to change the ioport and irq +settings on a serial port. This only appears to be an issue for the serial +drivers that use the core serial code. All other drivers seem to either +ignore attempts to change port/irq or give an error. + +Reported-by: Greg Kroah-Hartman +Signed-off-by: David Howells +cc: Jiri Slaby +--- + drivers/tty/serial/serial_core.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/drivers/tty/serial/serial_core.c b/drivers/tty/serial/serial_core.c +index 3a14cccbd7ff..41f0922ad842 100644 +--- a/drivers/tty/serial/serial_core.c ++++ b/drivers/tty/serial/serial_core.c +@@ -842,6 +842,12 @@ static int uart_set_info(struct tty_struct *tty, struct tty_port *port, + new_flags = (__force upf_t)new_info->flags; + old_custom_divisor = uport->custom_divisor; + ++ if ((change_port || change_irq) && ++ kernel_is_locked_down("Using TIOCSSERIAL to change device addresses, irqs and dma channels")) { ++ retval = -EPERM; ++ goto exit; ++ } ++ + if (!capable(CAP_SYS_ADMIN)) { + retval = -EPERM; + if (change_irq || change_port || diff --git a/patches/features/all/lockdown/0022-Lock-down-module-params-that-specify-hardware-parame.patch b/patches/features/all/lockdown/0022-Lock-down-module-params-that-specify-hardware-parame.patch new file mode 100644 index 00000000000..c50e15ab47f --- /dev/null +++ b/patches/features/all/lockdown/0022-Lock-down-module-params-that-specify-hardware-parame.patch @@ -0,0 +1,80 @@ +From: David Howells +Date: Wed, 8 Nov 2017 15:11:36 +0000 +Subject: [22/29] Lock down module params that specify hardware parameters (eg. + ioport) +Origin: https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git/commit?id=d20a28efda02a7ce70b943c15246ea2f07e780f4 + +Provided an annotation for module parameters that specify hardware +parameters (such as io ports, iomem addresses, irqs, dma channels, fixed +dma buffers and other types). + +Suggested-by: Alan Cox +Signed-off-by: David Howells +--- + kernel/params.c | 26 +++++++++++++++++++++----- + 1 file changed, 21 insertions(+), 5 deletions(-) + +diff --git a/kernel/params.c b/kernel/params.c +index 60b2d8101355..422979adb60a 100644 +--- a/kernel/params.c ++++ b/kernel/params.c +@@ -108,13 +108,19 @@ bool parameq(const char *a, const char *b) + return parameqn(a, b, strlen(a)+1); + } + +-static void param_check_unsafe(const struct kernel_param *kp) ++static bool param_check_unsafe(const struct kernel_param *kp, ++ const char *doing) + { + if (kp->flags & KERNEL_PARAM_FL_UNSAFE) { + pr_warn("Setting dangerous option %s - tainting kernel\n", + kp->name); + add_taint(TAINT_USER, LOCKDEP_STILL_OK); + } ++ ++ if (kp->flags & KERNEL_PARAM_FL_HWPARAM && ++ kernel_is_locked_down("Command line-specified device addresses, irqs and dma channels")) ++ return false; ++ return true; + } + + static int parse_one(char *param, +@@ -144,8 +150,10 @@ static int parse_one(char *param, + pr_debug("handling %s with %p\n", param, + params[i].ops->set); + kernel_param_lock(params[i].mod); +- param_check_unsafe(¶ms[i]); +- err = params[i].ops->set(val, ¶ms[i]); ++ if (param_check_unsafe(¶ms[i], doing)) ++ err = params[i].ops->set(val, ¶ms[i]); ++ else ++ err = -EPERM; + kernel_param_unlock(params[i].mod); + return err; + } +@@ -556,6 +564,12 @@ static ssize_t param_attr_show(struct module_attribute *mattr, + return count; + } + ++#ifdef CONFIG_MODULES ++#define mod_name(mod) (mod)->name ++#else ++#define mod_name(mod) "unknown" ++#endif ++ + /* sysfs always hands a nul-terminated string in buf. We rely on that. */ + static ssize_t param_attr_store(struct module_attribute *mattr, + struct module_kobject *mk, +@@ -568,8 +582,10 @@ static ssize_t param_attr_store(struct module_attribute *mattr, + return -EPERM; + + kernel_param_lock(mk->mod); +- param_check_unsafe(attribute->param); +- err = attribute->param->ops->set(buf, attribute->param); ++ if (param_check_unsafe(attribute->param, mod_name(mk->mod))) ++ err = attribute->param->ops->set(buf, attribute->param); ++ else ++ err = -EPERM; + kernel_param_unlock(mk->mod); + if (!err) + return len; diff --git a/patches/features/all/lockdown/0023-x86-mmiotrace-Lock-down-the-testmmiotrace-module.patch b/patches/features/all/lockdown/0023-x86-mmiotrace-Lock-down-the-testmmiotrace-module.patch new file mode 100644 index 00000000000..f3e9a760269 --- /dev/null +++ b/patches/features/all/lockdown/0023-x86-mmiotrace-Lock-down-the-testmmiotrace-module.patch @@ -0,0 +1,33 @@ +From: David Howells +Date: Wed, 8 Nov 2017 15:11:36 +0000 +Subject: [23/29] x86/mmiotrace: Lock down the testmmiotrace module +Origin: https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git/commit?id=20af3be0bcf6a78e3632770561fba6531dd3b444 + +The testmmiotrace module shouldn't be permitted when the kernel is locked +down as it can be used to arbitrarily read and write MMIO space. + +Suggested-by: Thomas Gleixner +Signed-off-by: David Howells +cc: Steven Rostedt +cc: Ingo Molnar +cc: "H. Peter Anvin" +cc: x86@kernel.org +--- + arch/x86/mm/testmmiotrace.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/arch/x86/mm/testmmiotrace.c b/arch/x86/mm/testmmiotrace.c +index f6ae6830b341..bbaad357f5d7 100644 +--- a/arch/x86/mm/testmmiotrace.c ++++ b/arch/x86/mm/testmmiotrace.c +@@ -115,6 +115,9 @@ static int __init init(void) + { + unsigned long size = (read_far) ? (8 << 20) : (16 << 10); + ++ if (kernel_is_locked_down("MMIO trace testing")) ++ return -EPERM; ++ + if (mmio_address == 0) { + pr_err("you have to use the module argument mmio_address.\n"); + pr_err("DO NOT LOAD THIS MODULE UNLESS YOU REALLY KNOW WHAT YOU ARE DOING!\n"); diff --git a/patches/features/all/lockdown/0024-debugfs-Disallow-use-of-debugfs-files-when-the-kerne.patch b/patches/features/all/lockdown/0024-debugfs-Disallow-use-of-debugfs-files-when-the-kerne.patch new file mode 100644 index 00000000000..6c38911d918 --- /dev/null +++ b/patches/features/all/lockdown/0024-debugfs-Disallow-use-of-debugfs-files-when-the-kerne.patch @@ -0,0 +1,51 @@ +From: David Howells +Date: Wed, 8 Nov 2017 15:11:36 +0000 +Subject: [24/29] debugfs: Disallow use of debugfs files when the kernel is + locked down +Origin: https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git/commit?id=118cc5e1c27e1a75640cf2379c1299e12791063e + +Disallow opening of debugfs files when the kernel is locked down as various +drivers give raw access to hardware through debugfs. + +Accesses to tracefs should use /sys/kernel/tracing/ rather than +/sys/kernel/debug/tracing/. Possibly a symlink should be emplaced. + +Normal device interaction should be done through configfs or a miscdev, not +debugfs. + +Note that this makes it unnecessary to specifically lock down show_dsts(), +show_devs() and show_call() in the asus-wmi driver. + +Signed-off-by: David Howells +cc: Andy Shevchenko +cc: acpi4asus-user@lists.sourceforge.net +cc: platform-driver-x86@vger.kernel.org +cc: Matthew Garrett +cc: Thomas Gleixner +[bwh: Forward-ported to 4.15] +--- + fs/debugfs/file.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +--- a/fs/debugfs/file.c ++++ b/fs/debugfs/file.c +@@ -142,6 +142,9 @@ static int open_proxy_open(struct inode + const struct file_operations *real_fops = NULL; + int r; + ++ if (kernel_is_locked_down("debugfs")) ++ return -EPERM; ++ + r = debugfs_file_get(dentry); + if (r) + return r == -EIO ? -ENOENT : r; +@@ -267,6 +270,9 @@ static int full_proxy_open(struct inode + struct file_operations *proxy_fops = NULL; + int r; + ++ if (kernel_is_locked_down("debugfs")) ++ return -EPERM; ++ + r = debugfs_file_get(dentry); + if (r) + return r == -EIO ? -ENOENT : r; diff --git a/patches/features/all/lockdown/0025-Lock-down-proc-kcore.patch b/patches/features/all/lockdown/0025-Lock-down-proc-kcore.patch new file mode 100644 index 00000000000..335afcebcb5 --- /dev/null +++ b/patches/features/all/lockdown/0025-Lock-down-proc-kcore.patch @@ -0,0 +1,27 @@ +From: David Howells +Date: Wed, 8 Nov 2017 15:11:37 +0000 +Subject: [25/29] Lock down /proc/kcore +Origin: https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git/commit?id=797378dc4498207c3abc1101cfdc9ef2581d8c71 + +Disallow access to /proc/kcore when the kernel is locked down to prevent +access to cryptographic data. + +Signed-off-by: David Howells +Reviewed-by: James Morris +--- + fs/proc/kcore.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/fs/proc/kcore.c b/fs/proc/kcore.c +index 45629f4b5402..176cf749e650 100644 +--- a/fs/proc/kcore.c ++++ b/fs/proc/kcore.c +@@ -549,6 +549,8 @@ read_kcore(struct file *file, char __user *buffer, size_t buflen, loff_t *fpos) + + static int open_kcore(struct inode *inode, struct file *filp) + { ++ if (kernel_is_locked_down("/proc/kcore")) ++ return -EPERM; + if (!capable(CAP_SYS_RAWIO)) + return -EPERM; + diff --git a/patches/features/all/lockdown/0026-Lock-down-kprobes.patch b/patches/features/all/lockdown/0026-Lock-down-kprobes.patch new file mode 100644 index 00000000000..bbf000a4b44 --- /dev/null +++ b/patches/features/all/lockdown/0026-Lock-down-kprobes.patch @@ -0,0 +1,29 @@ +From: David Howells +Date: Wed, 8 Nov 2017 16:14:12 +0000 +Subject: [26/29] Lock down kprobes +Origin: https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git/commit?id=cfacbbe6ef95336d99817fb8063c19bd36dfaa3d + +Disallow the creation of kprobes when the kernel is locked down by +preventing their registration. This prevents kprobes from being used to +access kernel memory, either to make modifications or to steal crypto data. + +Reported-by: Alexei Starovoitov +Signed-off-by: David Howells +--- + kernel/kprobes.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/kernel/kprobes.c b/kernel/kprobes.c +index a1606a4224e1..f06023b0936c 100644 +--- a/kernel/kprobes.c ++++ b/kernel/kprobes.c +@@ -1530,6 +1530,9 @@ int register_kprobe(struct kprobe *p) + struct module *probed_mod; + kprobe_opcode_t *addr; + ++ if (kernel_is_locked_down("Use of kprobes")) ++ return -EPERM; ++ + /* Adjust probe address from symbol */ + addr = kprobe_addr(p); + if (IS_ERR(addr)) diff --git a/patches/features/all/lockdown/0027-bpf-Restrict-kernel-image-access-functions-when-the-.patch b/patches/features/all/lockdown/0027-bpf-Restrict-kernel-image-access-functions-when-the-.patch new file mode 100644 index 00000000000..a87a2f73c29 --- /dev/null +++ b/patches/features/all/lockdown/0027-bpf-Restrict-kernel-image-access-functions-when-the-.patch @@ -0,0 +1,37 @@ +From: David Howells +Date: Wed, 24 May 2017 14:56:05 +0100 +Subject: [27/29] bpf: Restrict kernel image access functions when the kernel + is locked down +Origin: https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git/commit?id=a13e9f58894129d9fd02fdb81b56ac7590704155 + +There are some bpf functions can be used to read kernel memory: +bpf_probe_read, bpf_probe_write_user and bpf_trace_printk. These allow +private keys in kernel memory (e.g. the hibernation image signing key) to +be read by an eBPF program and kernel memory to be altered without +restriction. + +Completely prohibit the use of BPF when the kernel is locked down. + +Suggested-by: Alexei Starovoitov +Signed-off-by: David Howells +cc: netdev@vger.kernel.org +cc: Chun-Yi Lee +cc: Alexei Starovoitov +--- + kernel/bpf/syscall.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/kernel/bpf/syscall.c b/kernel/bpf/syscall.c +index 25d074920a00..fa58ad74cde6 100644 +--- a/kernel/bpf/syscall.c ++++ b/kernel/bpf/syscall.c +@@ -1458,6 +1458,9 @@ SYSCALL_DEFINE3(bpf, int, cmd, union bpf_attr __user *, uattr, unsigned int, siz + if (!capable(CAP_SYS_ADMIN) && sysctl_unprivileged_bpf_disabled) + return -EPERM; + ++ if (kernel_is_locked_down("BPF")) ++ return -EPERM; ++ + err = check_uarg_tail_zero(uattr, sizeof(attr), size); + if (err) + return err; diff --git a/patches/features/all/lockdown/0028-efi-Add-an-EFI_SECURE_BOOT-flag-to-indicate-secure-b.patch b/patches/features/all/lockdown/0028-efi-Add-an-EFI_SECURE_BOOT-flag-to-indicate-secure-b.patch new file mode 100644 index 00000000000..ff6dbcb05c7 --- /dev/null +++ b/patches/features/all/lockdown/0028-efi-Add-an-EFI_SECURE_BOOT-flag-to-indicate-secure-b.patch @@ -0,0 +1,153 @@ +From: David Howells +Date: Wed, 8 Nov 2017 15:11:37 +0000 +Subject: [28/29] efi: Add an EFI_SECURE_BOOT flag to indicate secure boot mode +Origin: https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git/commit?id=eb4a8603eb727afaeb9c6123eda2eda4b2757bf3 + +UEFI machines can be booted in Secure Boot mode. Add an EFI_SECURE_BOOT +flag that can be passed to efi_enabled() to find out whether secure boot is +enabled. + +Move the switch-statement in x86's setup_arch() that inteprets the +secure_boot boot parameter to generic code and set the bit there. + +Suggested-by: Ard Biesheuvel +Signed-off-by: David Howells +Reviewed-by: Ard Biesheuvel +cc: linux-efi@vger.kernel.org +--- + arch/x86/kernel/setup.c | 14 +------------- + drivers/firmware/efi/Makefile | 1 + + drivers/firmware/efi/secureboot.c | 38 ++++++++++++++++++++++++++++++++++++++ + include/linux/efi.h | 16 ++++++++++------ + 4 files changed, 50 insertions(+), 19 deletions(-) + create mode 100644 drivers/firmware/efi/secureboot.c + +diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c +index 0957dd73d127..7c2162f9e769 100644 +--- a/arch/x86/kernel/setup.c ++++ b/arch/x86/kernel/setup.c +@@ -1197,19 +1197,7 @@ void __init setup_arch(char **cmdline_p) + /* Allocate bigger log buffer */ + setup_log_buf(1); + +- if (efi_enabled(EFI_BOOT)) { +- switch (boot_params.secure_boot) { +- case efi_secureboot_mode_disabled: +- pr_info("Secure boot disabled\n"); +- break; +- case efi_secureboot_mode_enabled: +- pr_info("Secure boot enabled\n"); +- break; +- default: +- pr_info("Secure boot could not be determined\n"); +- break; +- } +- } ++ efi_set_secure_boot(boot_params.secure_boot); + + reserve_initrd(); + +diff --git a/drivers/firmware/efi/Makefile b/drivers/firmware/efi/Makefile +index 0329d319d89a..883f9f7eefc6 100644 +--- a/drivers/firmware/efi/Makefile ++++ b/drivers/firmware/efi/Makefile +@@ -23,6 +23,7 @@ obj-$(CONFIG_EFI_FAKE_MEMMAP) += fake_mem.o + obj-$(CONFIG_EFI_BOOTLOADER_CONTROL) += efibc.o + obj-$(CONFIG_EFI_TEST) += test/ + obj-$(CONFIG_EFI_DEV_PATH_PARSER) += dev-path-parser.o ++obj-$(CONFIG_EFI) += secureboot.o + obj-$(CONFIG_APPLE_PROPERTIES) += apple-properties.o + + arm-obj-$(CONFIG_EFI) := arm-init.o arm-runtime.o +diff --git a/drivers/firmware/efi/secureboot.c b/drivers/firmware/efi/secureboot.c +new file mode 100644 +index 000000000000..9070055de0a1 +--- /dev/null ++++ b/drivers/firmware/efi/secureboot.c +@@ -0,0 +1,38 @@ ++/* Core kernel secure boot support. ++ * ++ * Copyright (C) 2017 Red Hat, Inc. All Rights Reserved. ++ * Written by David Howells (dhowells@redhat.com) ++ * ++ * This program is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU General Public Licence ++ * as published by the Free Software Foundation; either version ++ * 2 of the Licence, or (at your option) any later version. ++ */ ++ ++#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt ++ ++#include ++#include ++#include ++ ++/* ++ * Decide what to do when UEFI secure boot mode is enabled. ++ */ ++void __init efi_set_secure_boot(enum efi_secureboot_mode mode) ++{ ++ if (efi_enabled(EFI_BOOT)) { ++ switch (mode) { ++ case efi_secureboot_mode_disabled: ++ pr_info("Secure boot disabled\n"); ++ break; ++ case efi_secureboot_mode_enabled: ++ set_bit(EFI_SECURE_BOOT, &efi.flags); ++ pr_info("Secure boot enabled\n"); ++ break; ++ default: ++ pr_warning("Secure boot could not be determined (mode %u)\n", ++ mode); ++ break; ++ } ++ } ++} +diff --git a/include/linux/efi.h b/include/linux/efi.h +index 66f4a4e79f4b..7c7a7e33e4d1 100644 +--- a/include/linux/efi.h ++++ b/include/linux/efi.h +@@ -1103,6 +1103,14 @@ extern int __init efi_setup_pcdp_console(char *); + #define EFI_DBG 8 /* Print additional debug info at runtime */ + #define EFI_NX_PE_DATA 9 /* Can runtime data regions be mapped non-executable? */ + #define EFI_MEM_ATTR 10 /* Did firmware publish an EFI_MEMORY_ATTRIBUTES table? */ ++#define EFI_SECURE_BOOT 11 /* Are we in Secure Boot mode? */ ++ ++enum efi_secureboot_mode { ++ efi_secureboot_mode_unset, ++ efi_secureboot_mode_unknown, ++ efi_secureboot_mode_disabled, ++ efi_secureboot_mode_enabled, ++}; + + #ifdef CONFIG_EFI + /* +@@ -1115,6 +1123,7 @@ static inline bool efi_enabled(int feature) + extern void efi_reboot(enum reboot_mode reboot_mode, const char *__unused); + + extern bool efi_is_table_address(unsigned long phys_addr); ++extern void __init efi_set_secure_boot(enum efi_secureboot_mode mode); + #else + static inline bool efi_enabled(int feature) + { +@@ -1133,6 +1142,7 @@ static inline bool efi_is_table_address(unsigned long phys_addr) + { + return false; + } ++static inline void efi_set_secure_boot(enum efi_secureboot_mode mode) {} + #endif + + extern int efi_status_to_err(efi_status_t status); +@@ -1518,12 +1528,6 @@ efi_status_t efi_setup_gop(efi_system_table_t *sys_table_arg, + bool efi_runtime_disabled(void); + extern void efi_call_virt_check_flags(unsigned long flags, const char *call); + +-enum efi_secureboot_mode { +- efi_secureboot_mode_unset, +- efi_secureboot_mode_unknown, +- efi_secureboot_mode_disabled, +- efi_secureboot_mode_enabled, +-}; + enum efi_secureboot_mode efi_get_secureboot(efi_system_table_t *sys_table); + + #ifdef CONFIG_RESET_ATTACK_MITIGATION diff --git a/patches/features/all/lockdown/0029-efi-Lock-down-the-kernel-if-booted-in-secure-boot-mo.patch b/patches/features/all/lockdown/0029-efi-Lock-down-the-kernel-if-booted-in-secure-boot-mo.patch new file mode 100644 index 00000000000..e1eb03bfa7e --- /dev/null +++ b/patches/features/all/lockdown/0029-efi-Lock-down-the-kernel-if-booted-in-secure-boot-mo.patch @@ -0,0 +1,88 @@ +From: David Howells +Date: Wed, 8 Nov 2017 15:11:37 +0000 +Subject: [29/29] efi: Lock down the kernel if booted in secure boot mode +Origin: https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git/commit?id=a364bd945ffc141a7b17cb331bda0d8ad68f7e72 + +UEFI Secure Boot provides a mechanism for ensuring that the firmware will +only load signed bootloaders and kernels. Certain use cases may also +require that all kernel modules also be signed. Add a configuration option +that to lock down the kernel - which includes requiring validly signed +modules - if the kernel is secure-booted. + +Signed-off-by: David Howells +Acked-by: Ard Biesheuvel +cc: linux-efi@vger.kernel.org +--- + arch/x86/kernel/setup.c | 6 ++++-- + security/Kconfig | 14 ++++++++++++++ + security/lock_down.c | 1 + + 3 files changed, 19 insertions(+), 2 deletions(-) + +diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c +index 7c2162f9e769..4e38327efb2e 100644 +--- a/arch/x86/kernel/setup.c ++++ b/arch/x86/kernel/setup.c +@@ -64,6 +64,7 @@ + #include + #include + #include ++#include + + #include + #include +@@ -1039,6 +1040,9 @@ void __init setup_arch(char **cmdline_p) + if (efi_enabled(EFI_BOOT)) + efi_init(); + ++ efi_set_secure_boot(boot_params.secure_boot); ++ init_lockdown(); ++ + dmi_scan_machine(); + dmi_memdev_walk(); + dmi_set_dump_stack_arch_desc(); +@@ -1197,8 +1201,6 @@ void __init setup_arch(char **cmdline_p) + /* Allocate bigger log buffer */ + setup_log_buf(1); + +- efi_set_secure_boot(boot_params.secure_boot); +- + reserve_initrd(); + + acpi_table_upgrade(); +diff --git a/security/Kconfig b/security/Kconfig +index 1e997be94ba2..a4fa8b826039 100644 +--- a/security/Kconfig ++++ b/security/Kconfig +@@ -222,6 +222,20 @@ config ALLOW_LOCKDOWN_LIFT_BY_SYSRQ + Allow the lockdown on a kernel to be lifted, by pressing a SysRq key + combination on a wired keyboard. + ++config LOCK_DOWN_IN_EFI_SECURE_BOOT ++ bool "Lock down the kernel in EFI Secure Boot mode" ++ default n ++ select LOCK_DOWN_KERNEL ++ depends on EFI ++ help ++ UEFI Secure Boot provides a mechanism for ensuring that the firmware ++ will only load signed bootloaders and kernels. Secure boot mode may ++ be determined from EFI variables provided by the system firmware if ++ not indicated by the boot parameters. ++ ++ Enabling this option turns on results in kernel lockdown being ++ triggered if EFI Secure Boot is set. ++ + + source security/selinux/Kconfig + source security/smack/Kconfig +diff --git a/security/lock_down.c b/security/lock_down.c +index 2c6b00f0c229..527f7e51dc8d 100644 +--- a/security/lock_down.c ++++ b/security/lock_down.c +@@ -12,6 +12,7 @@ + #include + #include + #include ++#include + #include + + #ifdef CONFIG_ALLOW_LOCKDOWN_LIFT_BY_SYSRQ diff --git a/patches/features/all/lockdown/arm64-add-kernel-config-option-to-lock-down-when.patch b/patches/features/all/lockdown/arm64-add-kernel-config-option-to-lock-down-when.patch new file mode 100644 index 00000000000..e9ede65b8c4 --- /dev/null +++ b/patches/features/all/lockdown/arm64-add-kernel-config-option-to-lock-down-when.patch @@ -0,0 +1,88 @@ +From: Linn Crosetto +Date: Tue, 30 Aug 2016 11:54:38 -0600 +Subject: arm64: add kernel config option to lock down when in Secure Boot mode +Bug-Debian: https://bugs.debian.org/831827 +Forwarded: no + +Add a kernel configuration option to lock down the kernel, to restrict +userspace's ability to modify the running kernel when UEFI Secure Boot is +enabled. Based on the x86 patch by Matthew Garrett. + +Determine the state of Secure Boot in the EFI stub and pass this to the +kernel using the FDT. + +Signed-off-by: Linn Crosetto +[bwh: Forward-ported to 4.10: adjust context] +[Lukas Wunner: Forward-ported to 4.11: drop parts applied upstream] +[bwh: Forward-ported to 4.15 and lockdown patch set: + - Pass result of efi_get_secureboot() in stub through to + efi_set_secure_boot() in main kernel + - Use lockdown API and naming] +--- + arch/arm64/Kconfig | 13 +++++++++++++ + drivers/firmware/efi/arm-init.c | 7 +++++++ + drivers/firmware/efi/efi.c | 3 ++- + drivers/firmware/efi/libstub/arm-stub.c | 2 +- + drivers/firmware/efi/libstub/efistub.h | 1 + + drivers/firmware/efi/libstub/fdt.c | 7 +++++++ + include/linux/efi.h | 1 + + 7 files changed, 32 insertions(+), 2 deletions(-) + +--- a/drivers/firmware/efi/arm-init.c ++++ b/drivers/firmware/efi/arm-init.c +@@ -21,6 +21,7 @@ + #include + #include + #include ++#include + + #include + +@@ -252,6 +253,9 @@ void __init efi_init(void) + "Unexpected EFI_MEMORY_DESCRIPTOR version %ld", + efi.memmap.desc_version); + ++ efi_set_secure_boot(params.secure_boot); ++ init_lockdown(); ++ + if (uefi_init() < 0) { + efi_memmap_unmap(); + return; +--- a/drivers/firmware/efi/efi.c ++++ b/drivers/firmware/efi/efi.c +@@ -635,7 +635,8 @@ static __initdata struct params fdt_para + UEFI_PARAM("MemMap Address", "linux,uefi-mmap-start", mmap), + UEFI_PARAM("MemMap Size", "linux,uefi-mmap-size", mmap_size), + UEFI_PARAM("MemMap Desc. Size", "linux,uefi-mmap-desc-size", desc_size), +- UEFI_PARAM("MemMap Desc. Version", "linux,uefi-mmap-desc-ver", desc_ver) ++ UEFI_PARAM("MemMap Desc. Version", "linux,uefi-mmap-desc-ver", desc_ver), ++ UEFI_PARAM("Secure Boot Enabled", "linux,uefi-secure-boot", secure_boot) + }; + + static __initdata struct params xen_fdt_params[] = { +--- a/drivers/firmware/efi/libstub/fdt.c ++++ b/drivers/firmware/efi/libstub/fdt.c +@@ -158,6 +158,13 @@ static efi_status_t update_fdt(efi_syste + return efi_status; + } + } ++ ++ fdt_val32 = cpu_to_fdt32(efi_get_secureboot(sys_table)); ++ status = fdt_setprop(fdt, node, "linux,uefi-secure-boot", ++ &fdt_val32, sizeof(fdt_val32)); ++ if (status) ++ goto fdt_set_fail; ++ + return EFI_SUCCESS; + + fdt_set_fail: +--- a/include/linux/efi.h ++++ b/include/linux/efi.h +@@ -749,6 +749,7 @@ struct efi_fdt_params { + u32 mmap_size; + u32 desc_size; + u32 desc_ver; ++ u32 secure_boot; + }; + + typedef struct { diff --git a/patches/features/all/lockdown/enable-cold-boot-attack-mitigation.patch b/patches/features/all/lockdown/enable-cold-boot-attack-mitigation.patch new file mode 100644 index 00000000000..2b089959c48 --- /dev/null +++ b/patches/features/all/lockdown/enable-cold-boot-attack-mitigation.patch @@ -0,0 +1,48 @@ +From: Matthew Garrett +Date: Tue, 12 Jan 2016 12:51:27 -0800 +Subject: [18/18] Enable cold boot attack mitigation +Origin: https://github.com/mjg59/linux/commit/02d999574936dd234a508c0112a0200c135a5c34 + +[Lukas Wunner: Forward-ported to 4.11: adjust context] +--- + arch/x86/boot/compressed/eboot.c | 22 ++++++++++++++++++++++ + 1 file changed, 22 insertions(+) + +--- a/arch/x86/boot/compressed/eboot.c ++++ b/arch/x86/boot/compressed/eboot.c +@@ -604,6 +604,22 @@ void setup_graphics(struct boot_params * + } + } + ++#define MEMORY_ONLY_RESET_CONTROL_GUID \ ++ EFI_GUID (0xe20939be, 0x32d4, 0x41be, 0xa1, 0x50, 0x89, 0x7f, 0x85, 0xd4, 0x98, 0x29) ++ ++static void enable_reset_attack_mitigation(void) ++{ ++ u8 val = 1; ++ efi_guid_t var_guid = MEMORY_ONLY_RESET_CONTROL_GUID; ++ ++ /* Ignore the return value here - there's not really a lot we can do */ ++ efi_early->call((unsigned long)sys_table->runtime->set_variable, ++ L"MemoryOverwriteRequestControl", &var_guid, ++ EFI_VARIABLE_NON_VOLATILE | ++ EFI_VARIABLE_BOOTSERVICE_ACCESS | ++ EFI_VARIABLE_RUNTIME_ACCESS, sizeof(val), val); ++} ++ + /* + * Because the x86 boot code expects to be passed a boot_params we + * need to create one ourselves (usually the bootloader would create +@@ -989,6 +1005,12 @@ struct boot_params *efi_main(struct efi_ + setup_boot_services32(efi_early); + + /* ++ * Ask the firmware to clear memory if we don't have a clean ++ * shutdown ++ */ ++ enable_reset_attack_mitigation(); ++ ++ /* + * If the boot loader gave us a value for secure_boot then we use that, + * otherwise we ask the BIOS. + */ diff --git a/patches/features/all/lockdown/genpatch.py b/patches/features/all/lockdown/genpatch.py new file mode 100755 index 00000000000..aa8b785132c --- /dev/null +++ b/patches/features/all/lockdown/genpatch.py @@ -0,0 +1,99 @@ +#!/usr/bin/python3 + +import codecs, errno, io, os, os.path, re, shutil, subprocess, sys, tempfile + +def main(repo, range='torvalds/master..dhowells/efi-lock-down'): + patch_dir = 'debian/patches' + lockdown_patch_dir = 'features/all/lockdown' + series_name = 'series' + + # Only replace patches in this subdirectory and starting with a digit + # - the others are presumably Debian-specific for now + lockdown_patch_name_re = re.compile( + r'^' + re.escape(lockdown_patch_dir) + r'/\d') + series_before = [] + series_after = [] + + old_series = set() + new_series = set() + + try: + with open(os.path.join(patch_dir, series_name), 'r') as series_fh: + for line in series_fh: + name = line.strip() + if lockdown_patch_name_re.match(name): + old_series.add(name) + elif len(old_series) == 0: + series_before.append(line) + else: + series_after.append(line) + except FileNotFoundError: + pass + + with open(os.path.join(patch_dir, series_name), 'w') as series_fh: + for line in series_before: + series_fh.write(line) + + # Add directory prefix to all filenames. + # Add Origin to all patch headers. + def add_patch(name, source_patch, origin): + name = os.path.join(lockdown_patch_dir, name) + path = os.path.join(patch_dir, name) + try: + os.unlink(path) + except FileNotFoundError: + pass + with open(path, 'w') as patch: + in_header = True + for line in source_patch: + if in_header and re.match(r'^(\n|[^\w\s]|Index:)', line): + patch.write('Origin: %s\n' % origin) + if line != '\n': + patch.write('\n') + in_header = False + patch.write(line) + series_fh.write(name) + series_fh.write('\n') + new_series.add(name) + + # XXX No signature to verify + + env = os.environ.copy() + env['GIT_DIR'] = os.path.join(repo, '.git') + args = ['git', 'format-patch', '--subject-prefix=', range] + format_proc = subprocess.Popen(args, + cwd=os.path.join(patch_dir, lockdown_patch_dir), + env=env, stdout=subprocess.PIPE) + with io.open(format_proc.stdout.fileno(), encoding='utf-8') as pipe: + for line in pipe: + name = line.strip('\n') + with open(os.path.join(patch_dir, lockdown_patch_dir, name)) as \ + source_patch: + patch_from = source_patch.readline() + match = re.match(r'From ([0-9a-f]{40}) ', patch_from) + assert match + origin = 'https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git/commit?id=%s' % match.group(1) + add_patch(name, source_patch, origin) + + for line in series_after: + series_fh.write(line) + + for name in new_series: + if name in old_series: + old_series.remove(name) + else: + print('Added patch', os.path.join(patch_dir, name)) + + for name in old_series: + print('Obsoleted patch', os.path.join(patch_dir, name)) + +if __name__ == '__main__': + if not (2 <= len(sys.argv) <= 3): + sys.stderr.write('''\ +Usage: %s REPO [REVISION-RANGE] +REPO is a git repo containing the REVISION-RANGE. The default range is +torvalds/master..dhowells/efi-lock-down. +''' % sys.argv[0]) + print('BASE is the base branch (default: torvalds/master).') + sys.exit(2) + main(*sys.argv[1:]) diff --git a/patches/features/all/lockdown/mtd-disable-slram-and-phram-when-locked-down.patch b/patches/features/all/lockdown/mtd-disable-slram-and-phram-when-locked-down.patch new file mode 100644 index 00000000000..7a7f4658030 --- /dev/null +++ b/patches/features/all/lockdown/mtd-disable-slram-and-phram-when-locked-down.patch @@ -0,0 +1,37 @@ +From: Ben Hutchings +Date: Fri, 03 Jun 2016 00:48:39 +0100 +Subject: mtd: Disable slram and phram when locked down +Forwarded: no + +The slram and phram drivers both allow mapping regions of physical +address space such that they can then be read and written by userland +through the MTD interface. This is probably usable to manipulate +hardware into overwriting kernel code on many systems. Prevent that +if locked down. + +Signed-off-by: Ben Hutchings +--- +--- a/drivers/mtd/devices/phram.c ++++ b/drivers/mtd/devices/phram.c +@@ -226,6 +226,9 @@ static int phram_setup(const char *val) + uint64_t len; + int i, ret; + ++ if (kernel_is_locked_down("Command line-specified device addresses")) ++ return -EPERM; ++ + if (strnlen(val, sizeof(buf)) >= sizeof(buf)) + parse_err("parameter too long\n"); + +--- a/drivers/mtd/devices/slram.c ++++ b/drivers/mtd/devices/slram.c +@@ -231,6 +231,9 @@ static int parse_cmdline(char *devname, + unsigned long devstart; + unsigned long devlength; + ++ if (kernel_is_locked_down("Command line-specified device addresses")) ++ return -EPERM; ++ + if ((!devname) || (!szstart) || (!szlength)) { + unregister_devices(); + return(-EINVAL); diff --git a/patches/features/all/rt/0001-timers-Use-static-keys-for-migrate_enable-nohz_activ.patch b/patches/features/all/rt/0001-timers-Use-static-keys-for-migrate_enable-nohz_activ.patch new file mode 100644 index 00000000000..ac9755bcccf --- /dev/null +++ b/patches/features/all/rt/0001-timers-Use-static-keys-for-migrate_enable-nohz_activ.patch @@ -0,0 +1,273 @@ +From: Thomas Gleixner +Date: Wed, 20 Dec 2017 17:12:50 +0100 +Subject: [PATCH 01/29] timers: Use static keys for migrate_enable/nohz_active +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +The members migrate_enable and nohz_active in the timer/hrtimer per CPU +bases have been introduced to avoid accessing global variables for these +decisions. + +Still that results in a (cache hot) load and conditional branch, which can +be avoided by using static keys. + +Implement it with static keys and optimize for the most critical case of +high performance networking which tends to disable the timer migration +functionality. + +Signed-off-by: Thomas Gleixner +Signed-off-by: Anna-Maria Gleixner +Signed-off-by: Sebastian Andrzej Siewior +--- + include/linux/hrtimer.h | 4 -- + kernel/time/hrtimer.c | 17 ++------- + kernel/time/tick-internal.h | 19 ++++++---- + kernel/time/tick-sched.c | 2 - + kernel/time/timer.c | 83 ++++++++++++++++++++++---------------------- + 5 files changed, 61 insertions(+), 64 deletions(-) + +--- a/include/linux/hrtimer.h ++++ b/include/linux/hrtimer.h +@@ -153,8 +153,6 @@ enum hrtimer_base_type { + * @cpu: cpu number + * @active_bases: Bitfield to mark bases with active timers + * @clock_was_set_seq: Sequence counter of clock was set events +- * @migration_enabled: The migration of hrtimers to other cpus is enabled +- * @nohz_active: The nohz functionality is enabled + * @expires_next: absolute time of the next event which was scheduled + * via clock_set_next_event() + * @next_timer: Pointer to the first expiring timer +@@ -178,8 +176,6 @@ struct hrtimer_cpu_base { + unsigned int cpu; + unsigned int active_bases; + unsigned int clock_was_set_seq; +- bool migration_enabled; +- bool nohz_active; + #ifdef CONFIG_HIGH_RES_TIMERS + unsigned int in_hrtirq : 1, + hres_active : 1, +--- a/kernel/time/hrtimer.c ++++ b/kernel/time/hrtimer.c +@@ -178,23 +178,16 @@ hrtimer_check_target(struct hrtimer *tim + #endif + } + +-#ifdef CONFIG_NO_HZ_COMMON +-static inline +-struct hrtimer_cpu_base *get_target_base(struct hrtimer_cpu_base *base, +- int pinned) +-{ +- if (pinned || !base->migration_enabled) +- return base; +- return &per_cpu(hrtimer_bases, get_nohz_timer_target()); +-} +-#else + static inline + struct hrtimer_cpu_base *get_target_base(struct hrtimer_cpu_base *base, + int pinned) + { ++#if defined(CONFIG_SMP) && defined(CONFIG_NO_HZ_COMMON) ++ if (static_branch_unlikely(&timers_migration_enabled) && !pinned) ++ return &per_cpu(hrtimer_bases, get_nohz_timer_target()); ++#endif + return base; + } +-#endif + + /* + * We switch the timer base to a power-optimized selected CPU target, +@@ -971,7 +964,7 @@ void hrtimer_start_range_ns(struct hrtim + * Kick to reschedule the next tick to handle the new timer + * on dynticks target. + */ +- if (new_base->cpu_base->nohz_active) ++ if (is_timers_nohz_active()) + wake_up_nohz_cpu(new_base->cpu_base->cpu); + } else { + hrtimer_reprogram(timer, new_base); +--- a/kernel/time/tick-internal.h ++++ b/kernel/time/tick-internal.h +@@ -150,14 +150,19 @@ static inline void tick_nohz_init(void) + + #ifdef CONFIG_NO_HZ_COMMON + extern unsigned long tick_nohz_active; +-#else ++extern void timers_update_nohz(void); ++extern struct static_key_false timers_nohz_active; ++static inline bool is_timers_nohz_active(void) ++{ ++ return static_branch_unlikely(&timers_nohz_active); ++} ++# ifdef CONFIG_SMP ++extern struct static_key_false timers_migration_enabled; ++# endif ++#else /* CONFIG_NO_HZ_COMMON */ ++static inline void timers_update_nohz(void) { } + #define tick_nohz_active (0) +-#endif +- +-#if defined(CONFIG_SMP) && defined(CONFIG_NO_HZ_COMMON) +-extern void timers_update_migration(bool update_nohz); +-#else +-static inline void timers_update_migration(bool update_nohz) { } ++static inline bool is_timers_nohz_active(void) { return false; } + #endif + + DECLARE_PER_CPU(struct hrtimer_cpu_base, hrtimer_bases); +--- a/kernel/time/tick-sched.c ++++ b/kernel/time/tick-sched.c +@@ -1131,7 +1131,7 @@ static inline void tick_nohz_activate(st + ts->nohz_mode = mode; + /* One update is enough */ + if (!test_and_set_bit(0, &tick_nohz_active)) +- timers_update_migration(true); ++ timers_update_nohz(); + } + + /** +--- a/kernel/time/timer.c ++++ b/kernel/time/timer.c +@@ -200,8 +200,6 @@ struct timer_base { + unsigned long clk; + unsigned long next_expiry; + unsigned int cpu; +- bool migration_enabled; +- bool nohz_active; + bool is_idle; + bool must_forward_clk; + DECLARE_BITMAP(pending_map, WHEEL_SIZE); +@@ -210,45 +208,59 @@ struct timer_base { + + static DEFINE_PER_CPU(struct timer_base, timer_bases[NR_BASES]); + +-#if defined(CONFIG_SMP) && defined(CONFIG_NO_HZ_COMMON) ++#ifdef CONFIG_NO_HZ_COMMON ++ ++DEFINE_STATIC_KEY_FALSE(timers_nohz_active); ++static DEFINE_MUTEX(timer_keys_mutex); ++ ++static void timer_update_keys(struct work_struct *work); ++static DECLARE_WORK(timer_update_work, timer_update_keys); ++ ++#ifdef CONFIG_SMP + unsigned int sysctl_timer_migration = 1; + +-void timers_update_migration(bool update_nohz) ++DEFINE_STATIC_KEY_FALSE(timers_migration_enabled); ++ ++static void timers_update_migration(void) + { + bool on = sysctl_timer_migration && tick_nohz_active; +- unsigned int cpu; + +- /* Avoid the loop, if nothing to update */ +- if (this_cpu_read(timer_bases[BASE_STD].migration_enabled) == on) +- return; ++ if (on) ++ static_branch_enable(&timers_migration_enabled); ++ else ++ static_branch_disable(&timers_migration_enabled); ++} ++#else ++static inline void timers_update_migration(void) { } ++#endif /* !CONFIG_SMP */ + +- for_each_possible_cpu(cpu) { +- per_cpu(timer_bases[BASE_STD].migration_enabled, cpu) = on; +- per_cpu(timer_bases[BASE_DEF].migration_enabled, cpu) = on; +- per_cpu(hrtimer_bases.migration_enabled, cpu) = on; +- if (!update_nohz) +- continue; +- per_cpu(timer_bases[BASE_STD].nohz_active, cpu) = true; +- per_cpu(timer_bases[BASE_DEF].nohz_active, cpu) = true; +- per_cpu(hrtimer_bases.nohz_active, cpu) = true; +- } ++static void timer_update_keys(struct work_struct *work) ++{ ++ mutex_lock(&timer_keys_mutex); ++ timers_update_migration(); ++ static_branch_enable(&timers_nohz_active); ++ mutex_unlock(&timer_keys_mutex); ++} ++ ++void timers_update_nohz(void) ++{ ++ schedule_work(&timer_update_work); + } + + int timer_migration_handler(struct ctl_table *table, int write, + void __user *buffer, size_t *lenp, + loff_t *ppos) + { +- static DEFINE_MUTEX(mutex); + int ret; + +- mutex_lock(&mutex); ++ mutex_lock(&timer_keys_mutex); + ret = proc_dointvec_minmax(table, write, buffer, lenp, ppos); + if (!ret && write) +- timers_update_migration(false); +- mutex_unlock(&mutex); ++ timers_update_migration(); ++ mutex_unlock(&timer_keys_mutex); + return ret; + } +-#endif ++#endif /* NO_HZ_COMMON */ + + static unsigned long round_jiffies_common(unsigned long j, int cpu, + bool force_up) +@@ -534,7 +546,7 @@ static void + static void + trigger_dyntick_cpu(struct timer_base *base, struct timer_list *timer) + { +- if (!IS_ENABLED(CONFIG_NO_HZ_COMMON) || !base->nohz_active) ++ if (!is_timers_nohz_active()) + return; + + /* +@@ -840,21 +852,20 @@ static inline struct timer_base *get_tim + return get_timer_cpu_base(tflags, tflags & TIMER_CPUMASK); + } + +-#ifdef CONFIG_NO_HZ_COMMON + static inline struct timer_base * + get_target_base(struct timer_base *base, unsigned tflags) + { +-#ifdef CONFIG_SMP +- if ((tflags & TIMER_PINNED) || !base->migration_enabled) +- return get_timer_this_cpu_base(tflags); +- return get_timer_cpu_base(tflags, get_nohz_timer_target()); +-#else +- return get_timer_this_cpu_base(tflags); ++#if defined(CONFIG_SMP) && defined(CONFIG_NO_HZ_COMMON) ++ if (static_branch_unlikely(&timers_migration_enabled) && ++ !(tflags & TIMER_PINNED)) ++ return get_timer_cpu_base(tflags, get_nohz_timer_target()); + #endif ++ return get_timer_this_cpu_base(tflags); + } + + static inline void forward_timer_base(struct timer_base *base) + { ++#ifdef CONFIG_NO_HZ_COMMON + unsigned long jnow; + + /* +@@ -878,16 +889,8 @@ static inline void forward_timer_base(st + base->clk = jnow; + else + base->clk = base->next_expiry; +-} +-#else +-static inline struct timer_base * +-get_target_base(struct timer_base *base, unsigned tflags) +-{ +- return get_timer_this_cpu_base(tflags); +-} +- +-static inline void forward_timer_base(struct timer_base *base) { } + #endif ++} + + + /* diff --git a/patches/features/all/rt/0001-tracing-Move-hist-trigger-Documentation-to-histogram.patch b/patches/features/all/rt/0001-tracing-Move-hist-trigger-Documentation-to-histogram.patch new file mode 100644 index 00000000000..d60379287ce --- /dev/null +++ b/patches/features/all/rt/0001-tracing-Move-hist-trigger-Documentation-to-histogram.patch @@ -0,0 +1,3142 @@ +From: Tom Zanussi +Date: Mon, 15 Jan 2018 20:51:35 -0600 +Subject: [PATCH 01/37] tracing: Move hist trigger Documentation to + histogram.txt +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +The hist trigger Documentation takes up a large part of events.txt - +since it will be getting even larger, move it to a separate file. + +Signed-off-by: Tom Zanussi +Signed-off-by: Sebastian Andrzej Siewior +--- + Documentation/trace/events.txt | 1548 ------------------------------------- + Documentation/trace/histogram.txt | 1568 ++++++++++++++++++++++++++++++++++++++ + 2 files changed, 1569 insertions(+), 1547 deletions(-) + create mode 100644 Documentation/trace/histogram.txt + +--- a/Documentation/trace/events.txt ++++ b/Documentation/trace/events.txt +@@ -517,1550 +517,4 @@ triggers (you have to use '!' for each o + totals derived from one or more trace event format fields and/or + event counts (hitcount). + +- The format of a hist trigger is as follows: +- +- hist:keys=[:values=] +- [:sort=][:size=#entries][:pause][:continue] +- [:clear][:name=histname1] [if ] +- +- When a matching event is hit, an entry is added to a hash table +- using the key(s) and value(s) named. Keys and values correspond to +- fields in the event's format description. Values must correspond to +- numeric fields - on an event hit, the value(s) will be added to a +- sum kept for that field. The special string 'hitcount' can be used +- in place of an explicit value field - this is simply a count of +- event hits. If 'values' isn't specified, an implicit 'hitcount' +- value will be automatically created and used as the only value. +- Keys can be any field, or the special string 'stacktrace', which +- will use the event's kernel stacktrace as the key. The keywords +- 'keys' or 'key' can be used to specify keys, and the keywords +- 'values', 'vals', or 'val' can be used to specify values. Compound +- keys consisting of up to two fields can be specified by the 'keys' +- keyword. Hashing a compound key produces a unique entry in the +- table for each unique combination of component keys, and can be +- useful for providing more fine-grained summaries of event data. +- Additionally, sort keys consisting of up to two fields can be +- specified by the 'sort' keyword. If more than one field is +- specified, the result will be a 'sort within a sort': the first key +- is taken to be the primary sort key and the second the secondary +- key. If a hist trigger is given a name using the 'name' parameter, +- its histogram data will be shared with other triggers of the same +- name, and trigger hits will update this common data. Only triggers +- with 'compatible' fields can be combined in this way; triggers are +- 'compatible' if the fields named in the trigger share the same +- number and type of fields and those fields also have the same names. +- Note that any two events always share the compatible 'hitcount' and +- 'stacktrace' fields and can therefore be combined using those +- fields, however pointless that may be. +- +- 'hist' triggers add a 'hist' file to each event's subdirectory. +- Reading the 'hist' file for the event will dump the hash table in +- its entirety to stdout. If there are multiple hist triggers +- attached to an event, there will be a table for each trigger in the +- output. The table displayed for a named trigger will be the same as +- any other instance having the same name. Each printed hash table +- entry is a simple list of the keys and values comprising the entry; +- keys are printed first and are delineated by curly braces, and are +- followed by the set of value fields for the entry. By default, +- numeric fields are displayed as base-10 integers. This can be +- modified by appending any of the following modifiers to the field +- name: +- +- .hex display a number as a hex value +- .sym display an address as a symbol +- .sym-offset display an address as a symbol and offset +- .syscall display a syscall id as a system call name +- .execname display a common_pid as a program name +- +- Note that in general the semantics of a given field aren't +- interpreted when applying a modifier to it, but there are some +- restrictions to be aware of in this regard: +- +- - only the 'hex' modifier can be used for values (because values +- are essentially sums, and the other modifiers don't make sense +- in that context). +- - the 'execname' modifier can only be used on a 'common_pid'. The +- reason for this is that the execname is simply the 'comm' value +- saved for the 'current' process when an event was triggered, +- which is the same as the common_pid value saved by the event +- tracing code. Trying to apply that comm value to other pid +- values wouldn't be correct, and typically events that care save +- pid-specific comm fields in the event itself. +- +- A typical usage scenario would be the following to enable a hist +- trigger, read its current contents, and then turn it off: +- +- # echo 'hist:keys=skbaddr.hex:vals=len' > \ +- /sys/kernel/debug/tracing/events/net/netif_rx/trigger +- +- # cat /sys/kernel/debug/tracing/events/net/netif_rx/hist +- +- # echo '!hist:keys=skbaddr.hex:vals=len' > \ +- /sys/kernel/debug/tracing/events/net/netif_rx/trigger +- +- The trigger file itself can be read to show the details of the +- currently attached hist trigger. This information is also displayed +- at the top of the 'hist' file when read. +- +- By default, the size of the hash table is 2048 entries. The 'size' +- parameter can be used to specify more or fewer than that. The units +- are in terms of hashtable entries - if a run uses more entries than +- specified, the results will show the number of 'drops', the number +- of hits that were ignored. The size should be a power of 2 between +- 128 and 131072 (any non- power-of-2 number specified will be rounded +- up). +- +- The 'sort' parameter can be used to specify a value field to sort +- on. The default if unspecified is 'hitcount' and the default sort +- order is 'ascending'. To sort in the opposite direction, append +- .descending' to the sort key. +- +- The 'pause' parameter can be used to pause an existing hist trigger +- or to start a hist trigger but not log any events until told to do +- so. 'continue' or 'cont' can be used to start or restart a paused +- hist trigger. +- +- The 'clear' parameter will clear the contents of a running hist +- trigger and leave its current paused/active state. +- +- Note that the 'pause', 'cont', and 'clear' parameters should be +- applied using 'append' shell operator ('>>') if applied to an +- existing trigger, rather than via the '>' operator, which will cause +- the trigger to be removed through truncation. +- +-- enable_hist/disable_hist +- +- The enable_hist and disable_hist triggers can be used to have one +- event conditionally start and stop another event's already-attached +- hist trigger. Any number of enable_hist and disable_hist triggers +- can be attached to a given event, allowing that event to kick off +- and stop aggregations on a host of other events. +- +- The format is very similar to the enable/disable_event triggers: +- +- enable_hist::[:count] +- disable_hist::[:count] +- +- Instead of enabling or disabling the tracing of the target event +- into the trace buffer as the enable/disable_event triggers do, the +- enable/disable_hist triggers enable or disable the aggregation of +- the target event into a hash table. +- +- A typical usage scenario for the enable_hist/disable_hist triggers +- would be to first set up a paused hist trigger on some event, +- followed by an enable_hist/disable_hist pair that turns the hist +- aggregation on and off when conditions of interest are hit: +- +- # echo 'hist:keys=skbaddr.hex:vals=len:pause' > \ +- /sys/kernel/debug/tracing/events/net/netif_receive_skb/trigger +- +- # echo 'enable_hist:net:netif_receive_skb if filename==/usr/bin/wget' > \ +- /sys/kernel/debug/tracing/events/sched/sched_process_exec/trigger +- +- # echo 'disable_hist:net:netif_receive_skb if comm==wget' > \ +- /sys/kernel/debug/tracing/events/sched/sched_process_exit/trigger +- +- The above sets up an initially paused hist trigger which is unpaused +- and starts aggregating events when a given program is executed, and +- which stops aggregating when the process exits and the hist trigger +- is paused again. +- +- The examples below provide a more concrete illustration of the +- concepts and typical usage patterns discussed above. +- +- +-6.2 'hist' trigger examples +---------------------------- +- +- The first set of examples creates aggregations using the kmalloc +- event. The fields that can be used for the hist trigger are listed +- in the kmalloc event's format file: +- +- # cat /sys/kernel/debug/tracing/events/kmem/kmalloc/format +- name: kmalloc +- ID: 374 +- format: +- field:unsigned short common_type; offset:0; size:2; signed:0; +- field:unsigned char common_flags; offset:2; size:1; signed:0; +- field:unsigned char common_preempt_count; offset:3; size:1; signed:0; +- field:int common_pid; offset:4; size:4; signed:1; +- +- field:unsigned long call_site; offset:8; size:8; signed:0; +- field:const void * ptr; offset:16; size:8; signed:0; +- field:size_t bytes_req; offset:24; size:8; signed:0; +- field:size_t bytes_alloc; offset:32; size:8; signed:0; +- field:gfp_t gfp_flags; offset:40; size:4; signed:0; +- +- We'll start by creating a hist trigger that generates a simple table +- that lists the total number of bytes requested for each function in +- the kernel that made one or more calls to kmalloc: +- +- # echo 'hist:key=call_site:val=bytes_req' > \ +- /sys/kernel/debug/tracing/events/kmem/kmalloc/trigger +- +- This tells the tracing system to create a 'hist' trigger using the +- call_site field of the kmalloc event as the key for the table, which +- just means that each unique call_site address will have an entry +- created for it in the table. The 'val=bytes_req' parameter tells +- the hist trigger that for each unique entry (call_site) in the +- table, it should keep a running total of the number of bytes +- requested by that call_site. +- +- We'll let it run for awhile and then dump the contents of the 'hist' +- file in the kmalloc event's subdirectory (for readability, a number +- of entries have been omitted): +- +- # cat /sys/kernel/debug/tracing/events/kmem/kmalloc/hist +- # trigger info: hist:keys=call_site:vals=bytes_req:sort=hitcount:size=2048 [active] +- +- { call_site: 18446744072106379007 } hitcount: 1 bytes_req: 176 +- { call_site: 18446744071579557049 } hitcount: 1 bytes_req: 1024 +- { call_site: 18446744071580608289 } hitcount: 1 bytes_req: 16384 +- { call_site: 18446744071581827654 } hitcount: 1 bytes_req: 24 +- { call_site: 18446744071580700980 } hitcount: 1 bytes_req: 8 +- { call_site: 18446744071579359876 } hitcount: 1 bytes_req: 152 +- { call_site: 18446744071580795365 } hitcount: 3 bytes_req: 144 +- { call_site: 18446744071581303129 } hitcount: 3 bytes_req: 144 +- { call_site: 18446744071580713234 } hitcount: 4 bytes_req: 2560 +- { call_site: 18446744071580933750 } hitcount: 4 bytes_req: 736 +- . +- . +- . +- { call_site: 18446744072106047046 } hitcount: 69 bytes_req: 5576 +- { call_site: 18446744071582116407 } hitcount: 73 bytes_req: 2336 +- { call_site: 18446744072106054684 } hitcount: 136 bytes_req: 140504 +- { call_site: 18446744072106224230 } hitcount: 136 bytes_req: 19584 +- { call_site: 18446744072106078074 } hitcount: 153 bytes_req: 2448 +- { call_site: 18446744072106062406 } hitcount: 153 bytes_req: 36720 +- { call_site: 18446744071582507929 } hitcount: 153 bytes_req: 37088 +- { call_site: 18446744072102520590 } hitcount: 273 bytes_req: 10920 +- { call_site: 18446744071582143559 } hitcount: 358 bytes_req: 716 +- { call_site: 18446744072106465852 } hitcount: 417 bytes_req: 56712 +- { call_site: 18446744072102523378 } hitcount: 485 bytes_req: 27160 +- { call_site: 18446744072099568646 } hitcount: 1676 bytes_req: 33520 +- +- Totals: +- Hits: 4610 +- Entries: 45 +- Dropped: 0 +- +- The output displays a line for each entry, beginning with the key +- specified in the trigger, followed by the value(s) also specified in +- the trigger. At the beginning of the output is a line that displays +- the trigger info, which can also be displayed by reading the +- 'trigger' file: +- +- # cat /sys/kernel/debug/tracing/events/kmem/kmalloc/trigger +- hist:keys=call_site:vals=bytes_req:sort=hitcount:size=2048 [active] +- +- At the end of the output are a few lines that display the overall +- totals for the run. The 'Hits' field shows the total number of +- times the event trigger was hit, the 'Entries' field shows the total +- number of used entries in the hash table, and the 'Dropped' field +- shows the number of hits that were dropped because the number of +- used entries for the run exceeded the maximum number of entries +- allowed for the table (normally 0, but if not a hint that you may +- want to increase the size of the table using the 'size' parameter). +- +- Notice in the above output that there's an extra field, 'hitcount', +- which wasn't specified in the trigger. Also notice that in the +- trigger info output, there's a parameter, 'sort=hitcount', which +- wasn't specified in the trigger either. The reason for that is that +- every trigger implicitly keeps a count of the total number of hits +- attributed to a given entry, called the 'hitcount'. That hitcount +- information is explicitly displayed in the output, and in the +- absence of a user-specified sort parameter, is used as the default +- sort field. +- +- The value 'hitcount' can be used in place of an explicit value in +- the 'values' parameter if you don't really need to have any +- particular field summed and are mainly interested in hit +- frequencies. +- +- To turn the hist trigger off, simply call up the trigger in the +- command history and re-execute it with a '!' prepended: +- +- # echo '!hist:key=call_site:val=bytes_req' > \ +- /sys/kernel/debug/tracing/events/kmem/kmalloc/trigger +- +- Finally, notice that the call_site as displayed in the output above +- isn't really very useful. It's an address, but normally addresses +- are displayed in hex. To have a numeric field displayed as a hex +- value, simply append '.hex' to the field name in the trigger: +- +- # echo 'hist:key=call_site.hex:val=bytes_req' > \ +- /sys/kernel/debug/tracing/events/kmem/kmalloc/trigger +- +- # cat /sys/kernel/debug/tracing/events/kmem/kmalloc/hist +- # trigger info: hist:keys=call_site.hex:vals=bytes_req:sort=hitcount:size=2048 [active] +- +- { call_site: ffffffffa026b291 } hitcount: 1 bytes_req: 433 +- { call_site: ffffffffa07186ff } hitcount: 1 bytes_req: 176 +- { call_site: ffffffff811ae721 } hitcount: 1 bytes_req: 16384 +- { call_site: ffffffff811c5134 } hitcount: 1 bytes_req: 8 +- { call_site: ffffffffa04a9ebb } hitcount: 1 bytes_req: 511 +- { call_site: ffffffff8122e0a6 } hitcount: 1 bytes_req: 12 +- { call_site: ffffffff8107da84 } hitcount: 1 bytes_req: 152 +- { call_site: ffffffff812d8246 } hitcount: 1 bytes_req: 24 +- { call_site: ffffffff811dc1e5 } hitcount: 3 bytes_req: 144 +- { call_site: ffffffffa02515e8 } hitcount: 3 bytes_req: 648 +- { call_site: ffffffff81258159 } hitcount: 3 bytes_req: 144 +- { call_site: ffffffff811c80f4 } hitcount: 4 bytes_req: 544 +- . +- . +- . +- { call_site: ffffffffa06c7646 } hitcount: 106 bytes_req: 8024 +- { call_site: ffffffffa06cb246 } hitcount: 132 bytes_req: 31680 +- { call_site: ffffffffa06cef7a } hitcount: 132 bytes_req: 2112 +- { call_site: ffffffff8137e399 } hitcount: 132 bytes_req: 23232 +- { call_site: ffffffffa06c941c } hitcount: 185 bytes_req: 171360 +- { call_site: ffffffffa06f2a66 } hitcount: 185 bytes_req: 26640 +- { call_site: ffffffffa036a70e } hitcount: 265 bytes_req: 10600 +- { call_site: ffffffff81325447 } hitcount: 292 bytes_req: 584 +- { call_site: ffffffffa072da3c } hitcount: 446 bytes_req: 60656 +- { call_site: ffffffffa036b1f2 } hitcount: 526 bytes_req: 29456 +- { call_site: ffffffffa0099c06 } hitcount: 1780 bytes_req: 35600 +- +- Totals: +- Hits: 4775 +- Entries: 46 +- Dropped: 0 +- +- Even that's only marginally more useful - while hex values do look +- more like addresses, what users are typically more interested in +- when looking at text addresses are the corresponding symbols +- instead. To have an address displayed as symbolic value instead, +- simply append '.sym' or '.sym-offset' to the field name in the +- trigger: +- +- # echo 'hist:key=call_site.sym:val=bytes_req' > \ +- /sys/kernel/debug/tracing/events/kmem/kmalloc/trigger +- +- # cat /sys/kernel/debug/tracing/events/kmem/kmalloc/hist +- # trigger info: hist:keys=call_site.sym:vals=bytes_req:sort=hitcount:size=2048 [active] +- +- { call_site: [ffffffff810adcb9] syslog_print_all } hitcount: 1 bytes_req: 1024 +- { call_site: [ffffffff8154bc62] usb_control_msg } hitcount: 1 bytes_req: 8 +- { call_site: [ffffffffa00bf6fe] hidraw_send_report [hid] } hitcount: 1 bytes_req: 7 +- { call_site: [ffffffff8154acbe] usb_alloc_urb } hitcount: 1 bytes_req: 192 +- { call_site: [ffffffffa00bf1ca] hidraw_report_event [hid] } hitcount: 1 bytes_req: 7 +- { call_site: [ffffffff811e3a25] __seq_open_private } hitcount: 1 bytes_req: 40 +- { call_site: [ffffffff8109524a] alloc_fair_sched_group } hitcount: 2 bytes_req: 128 +- { call_site: [ffffffff811febd5] fsnotify_alloc_group } hitcount: 2 bytes_req: 528 +- { call_site: [ffffffff81440f58] __tty_buffer_request_room } hitcount: 2 bytes_req: 2624 +- { call_site: [ffffffff81200ba6] inotify_new_group } hitcount: 2 bytes_req: 96 +- { call_site: [ffffffffa05e19af] ieee80211_start_tx_ba_session [mac80211] } hitcount: 2 bytes_req: 464 +- { call_site: [ffffffff81672406] tcp_get_metrics } hitcount: 2 bytes_req: 304 +- { call_site: [ffffffff81097ec2] alloc_rt_sched_group } hitcount: 2 bytes_req: 128 +- { call_site: [ffffffff81089b05] sched_create_group } hitcount: 2 bytes_req: 1424 +- . +- . +- . +- { call_site: [ffffffffa04a580c] intel_crtc_page_flip [i915] } hitcount: 1185 bytes_req: 123240 +- { call_site: [ffffffffa0287592] drm_mode_page_flip_ioctl [drm] } hitcount: 1185 bytes_req: 104280 +- { call_site: [ffffffffa04c4a3c] intel_plane_duplicate_state [i915] } hitcount: 1402 bytes_req: 190672 +- { call_site: [ffffffff812891ca] ext4_find_extent } hitcount: 1518 bytes_req: 146208 +- { call_site: [ffffffffa029070e] drm_vma_node_allow [drm] } hitcount: 1746 bytes_req: 69840 +- { call_site: [ffffffffa045e7c4] i915_gem_do_execbuffer.isra.23 [i915] } hitcount: 2021 bytes_req: 792312 +- { call_site: [ffffffffa02911f2] drm_modeset_lock_crtc [drm] } hitcount: 2592 bytes_req: 145152 +- { call_site: [ffffffffa0489a66] intel_ring_begin [i915] } hitcount: 2629 bytes_req: 378576 +- { call_site: [ffffffffa046041c] i915_gem_execbuffer2 [i915] } hitcount: 2629 bytes_req: 3783248 +- { call_site: [ffffffff81325607] apparmor_file_alloc_security } hitcount: 5192 bytes_req: 10384 +- { call_site: [ffffffffa00b7c06] hid_report_raw_event [hid] } hitcount: 5529 bytes_req: 110584 +- { call_site: [ffffffff8131ebf7] aa_alloc_task_context } hitcount: 21943 bytes_req: 702176 +- { call_site: [ffffffff8125847d] ext4_htree_store_dirent } hitcount: 55759 bytes_req: 5074265 +- +- Totals: +- Hits: 109928 +- Entries: 71 +- Dropped: 0 +- +- Because the default sort key above is 'hitcount', the above shows a +- the list of call_sites by increasing hitcount, so that at the bottom +- we see the functions that made the most kmalloc calls during the +- run. If instead we we wanted to see the top kmalloc callers in +- terms of the number of bytes requested rather than the number of +- calls, and we wanted the top caller to appear at the top, we can use +- the 'sort' parameter, along with the 'descending' modifier: +- +- # echo 'hist:key=call_site.sym:val=bytes_req:sort=bytes_req.descending' > \ +- /sys/kernel/debug/tracing/events/kmem/kmalloc/trigger +- +- # cat /sys/kernel/debug/tracing/events/kmem/kmalloc/hist +- # trigger info: hist:keys=call_site.sym:vals=bytes_req:sort=bytes_req.descending:size=2048 [active] +- +- { call_site: [ffffffffa046041c] i915_gem_execbuffer2 [i915] } hitcount: 2186 bytes_req: 3397464 +- { call_site: [ffffffffa045e7c4] i915_gem_do_execbuffer.isra.23 [i915] } hitcount: 1790 bytes_req: 712176 +- { call_site: [ffffffff8125847d] ext4_htree_store_dirent } hitcount: 8132 bytes_req: 513135 +- { call_site: [ffffffff811e2a1b] seq_buf_alloc } hitcount: 106 bytes_req: 440128 +- { call_site: [ffffffffa0489a66] intel_ring_begin [i915] } hitcount: 2186 bytes_req: 314784 +- { call_site: [ffffffff812891ca] ext4_find_extent } hitcount: 2174 bytes_req: 208992 +- { call_site: [ffffffff811ae8e1] __kmalloc } hitcount: 8 bytes_req: 131072 +- { call_site: [ffffffffa04c4a3c] intel_plane_duplicate_state [i915] } hitcount: 859 bytes_req: 116824 +- { call_site: [ffffffffa02911f2] drm_modeset_lock_crtc [drm] } hitcount: 1834 bytes_req: 102704 +- { call_site: [ffffffffa04a580c] intel_crtc_page_flip [i915] } hitcount: 972 bytes_req: 101088 +- { call_site: [ffffffffa0287592] drm_mode_page_flip_ioctl [drm] } hitcount: 972 bytes_req: 85536 +- { call_site: [ffffffffa00b7c06] hid_report_raw_event [hid] } hitcount: 3333 bytes_req: 66664 +- { call_site: [ffffffff8137e559] sg_kmalloc } hitcount: 209 bytes_req: 61632 +- . +- . +- . +- { call_site: [ffffffff81095225] alloc_fair_sched_group } hitcount: 2 bytes_req: 128 +- { call_site: [ffffffff81097ec2] alloc_rt_sched_group } hitcount: 2 bytes_req: 128 +- { call_site: [ffffffff812d8406] copy_semundo } hitcount: 2 bytes_req: 48 +- { call_site: [ffffffff81200ba6] inotify_new_group } hitcount: 1 bytes_req: 48 +- { call_site: [ffffffffa027121a] drm_getmagic [drm] } hitcount: 1 bytes_req: 48 +- { call_site: [ffffffff811e3a25] __seq_open_private } hitcount: 1 bytes_req: 40 +- { call_site: [ffffffff811c52f4] bprm_change_interp } hitcount: 2 bytes_req: 16 +- { call_site: [ffffffff8154bc62] usb_control_msg } hitcount: 1 bytes_req: 8 +- { call_site: [ffffffffa00bf1ca] hidraw_report_event [hid] } hitcount: 1 bytes_req: 7 +- { call_site: [ffffffffa00bf6fe] hidraw_send_report [hid] } hitcount: 1 bytes_req: 7 +- +- Totals: +- Hits: 32133 +- Entries: 81 +- Dropped: 0 +- +- To display the offset and size information in addition to the symbol +- name, just use 'sym-offset' instead: +- +- # echo 'hist:key=call_site.sym-offset:val=bytes_req:sort=bytes_req.descending' > \ +- /sys/kernel/debug/tracing/events/kmem/kmalloc/trigger +- +- # cat /sys/kernel/debug/tracing/events/kmem/kmalloc/hist +- # trigger info: hist:keys=call_site.sym-offset:vals=bytes_req:sort=bytes_req.descending:size=2048 [active] +- +- { call_site: [ffffffffa046041c] i915_gem_execbuffer2+0x6c/0x2c0 [i915] } hitcount: 4569 bytes_req: 3163720 +- { call_site: [ffffffffa0489a66] intel_ring_begin+0xc6/0x1f0 [i915] } hitcount: 4569 bytes_req: 657936 +- { call_site: [ffffffffa045e7c4] i915_gem_do_execbuffer.isra.23+0x694/0x1020 [i915] } hitcount: 1519 bytes_req: 472936 +- { call_site: [ffffffffa045e646] i915_gem_do_execbuffer.isra.23+0x516/0x1020 [i915] } hitcount: 3050 bytes_req: 211832 +- { call_site: [ffffffff811e2a1b] seq_buf_alloc+0x1b/0x50 } hitcount: 34 bytes_req: 148384 +- { call_site: [ffffffffa04a580c] intel_crtc_page_flip+0xbc/0x870 [i915] } hitcount: 1385 bytes_req: 144040 +- { call_site: [ffffffff811ae8e1] __kmalloc+0x191/0x1b0 } hitcount: 8 bytes_req: 131072 +- { call_site: [ffffffffa0287592] drm_mode_page_flip_ioctl+0x282/0x360 [drm] } hitcount: 1385 bytes_req: 121880 +- { call_site: [ffffffffa02911f2] drm_modeset_lock_crtc+0x32/0x100 [drm] } hitcount: 1848 bytes_req: 103488 +- { call_site: [ffffffffa04c4a3c] intel_plane_duplicate_state+0x2c/0xa0 [i915] } hitcount: 461 bytes_req: 62696 +- { call_site: [ffffffffa029070e] drm_vma_node_allow+0x2e/0xd0 [drm] } hitcount: 1541 bytes_req: 61640 +- { call_site: [ffffffff815f8d7b] sk_prot_alloc+0xcb/0x1b0 } hitcount: 57 bytes_req: 57456 +- . +- . +- . +- { call_site: [ffffffff8109524a] alloc_fair_sched_group+0x5a/0x1a0 } hitcount: 2 bytes_req: 128 +- { call_site: [ffffffffa027b921] drm_vm_open_locked+0x31/0xa0 [drm] } hitcount: 3 bytes_req: 96 +- { call_site: [ffffffff8122e266] proc_self_follow_link+0x76/0xb0 } hitcount: 8 bytes_req: 96 +- { call_site: [ffffffff81213e80] load_elf_binary+0x240/0x1650 } hitcount: 3 bytes_req: 84 +- { call_site: [ffffffff8154bc62] usb_control_msg+0x42/0x110 } hitcount: 1 bytes_req: 8 +- { call_site: [ffffffffa00bf6fe] hidraw_send_report+0x7e/0x1a0 [hid] } hitcount: 1 bytes_req: 7 +- { call_site: [ffffffffa00bf1ca] hidraw_report_event+0x8a/0x120 [hid] } hitcount: 1 bytes_req: 7 +- +- Totals: +- Hits: 26098 +- Entries: 64 +- Dropped: 0 +- +- We can also add multiple fields to the 'values' parameter. For +- example, we might want to see the total number of bytes allocated +- alongside bytes requested, and display the result sorted by bytes +- allocated in a descending order: +- +- # echo 'hist:keys=call_site.sym:values=bytes_req,bytes_alloc:sort=bytes_alloc.descending' > \ +- /sys/kernel/debug/tracing/events/kmem/kmalloc/trigger +- +- # cat /sys/kernel/debug/tracing/events/kmem/kmalloc/hist +- # trigger info: hist:keys=call_site.sym:vals=bytes_req,bytes_alloc:sort=bytes_alloc.descending:size=2048 [active] +- +- { call_site: [ffffffffa046041c] i915_gem_execbuffer2 [i915] } hitcount: 7403 bytes_req: 4084360 bytes_alloc: 5958016 +- { call_site: [ffffffff811e2a1b] seq_buf_alloc } hitcount: 541 bytes_req: 2213968 bytes_alloc: 2228224 +- { call_site: [ffffffffa0489a66] intel_ring_begin [i915] } hitcount: 7404 bytes_req: 1066176 bytes_alloc: 1421568 +- { call_site: [ffffffffa045e7c4] i915_gem_do_execbuffer.isra.23 [i915] } hitcount: 1565 bytes_req: 557368 bytes_alloc: 1037760 +- { call_site: [ffffffff8125847d] ext4_htree_store_dirent } hitcount: 9557 bytes_req: 595778 bytes_alloc: 695744 +- { call_site: [ffffffffa045e646] i915_gem_do_execbuffer.isra.23 [i915] } hitcount: 5839 bytes_req: 430680 bytes_alloc: 470400 +- { call_site: [ffffffffa04c4a3c] intel_plane_duplicate_state [i915] } hitcount: 2388 bytes_req: 324768 bytes_alloc: 458496 +- { call_site: [ffffffffa02911f2] drm_modeset_lock_crtc [drm] } hitcount: 3911 bytes_req: 219016 bytes_alloc: 250304 +- { call_site: [ffffffff815f8d7b] sk_prot_alloc } hitcount: 235 bytes_req: 236880 bytes_alloc: 240640 +- { call_site: [ffffffff8137e559] sg_kmalloc } hitcount: 557 bytes_req: 169024 bytes_alloc: 221760 +- { call_site: [ffffffffa00b7c06] hid_report_raw_event [hid] } hitcount: 9378 bytes_req: 187548 bytes_alloc: 206312 +- { call_site: [ffffffffa04a580c] intel_crtc_page_flip [i915] } hitcount: 1519 bytes_req: 157976 bytes_alloc: 194432 +- . +- . +- . +- { call_site: [ffffffff8109bd3b] sched_autogroup_create_attach } hitcount: 2 bytes_req: 144 bytes_alloc: 192 +- { call_site: [ffffffff81097ee8] alloc_rt_sched_group } hitcount: 2 bytes_req: 128 bytes_alloc: 128 +- { call_site: [ffffffff8109524a] alloc_fair_sched_group } hitcount: 2 bytes_req: 128 bytes_alloc: 128 +- { call_site: [ffffffff81095225] alloc_fair_sched_group } hitcount: 2 bytes_req: 128 bytes_alloc: 128 +- { call_site: [ffffffff81097ec2] alloc_rt_sched_group } hitcount: 2 bytes_req: 128 bytes_alloc: 128 +- { call_site: [ffffffff81213e80] load_elf_binary } hitcount: 3 bytes_req: 84 bytes_alloc: 96 +- { call_site: [ffffffff81079a2e] kthread_create_on_node } hitcount: 1 bytes_req: 56 bytes_alloc: 64 +- { call_site: [ffffffffa00bf6fe] hidraw_send_report [hid] } hitcount: 1 bytes_req: 7 bytes_alloc: 8 +- { call_site: [ffffffff8154bc62] usb_control_msg } hitcount: 1 bytes_req: 8 bytes_alloc: 8 +- { call_site: [ffffffffa00bf1ca] hidraw_report_event [hid] } hitcount: 1 bytes_req: 7 bytes_alloc: 8 +- +- Totals: +- Hits: 66598 +- Entries: 65 +- Dropped: 0 +- +- Finally, to finish off our kmalloc example, instead of simply having +- the hist trigger display symbolic call_sites, we can have the hist +- trigger additionally display the complete set of kernel stack traces +- that led to each call_site. To do that, we simply use the special +- value 'stacktrace' for the key parameter: +- +- # echo 'hist:keys=stacktrace:values=bytes_req,bytes_alloc:sort=bytes_alloc' > \ +- /sys/kernel/debug/tracing/events/kmem/kmalloc/trigger +- +- The above trigger will use the kernel stack trace in effect when an +- event is triggered as the key for the hash table. This allows the +- enumeration of every kernel callpath that led up to a particular +- event, along with a running total of any of the event fields for +- that event. Here we tally bytes requested and bytes allocated for +- every callpath in the system that led up to a kmalloc (in this case +- every callpath to a kmalloc for a kernel compile): +- +- # cat /sys/kernel/debug/tracing/events/kmem/kmalloc/hist +- # trigger info: hist:keys=stacktrace:vals=bytes_req,bytes_alloc:sort=bytes_alloc:size=2048 [active] +- +- { stacktrace: +- __kmalloc_track_caller+0x10b/0x1a0 +- kmemdup+0x20/0x50 +- hidraw_report_event+0x8a/0x120 [hid] +- hid_report_raw_event+0x3ea/0x440 [hid] +- hid_input_report+0x112/0x190 [hid] +- hid_irq_in+0xc2/0x260 [usbhid] +- __usb_hcd_giveback_urb+0x72/0x120 +- usb_giveback_urb_bh+0x9e/0xe0 +- tasklet_hi_action+0xf8/0x100 +- __do_softirq+0x114/0x2c0 +- irq_exit+0xa5/0xb0 +- do_IRQ+0x5a/0xf0 +- ret_from_intr+0x0/0x30 +- cpuidle_enter+0x17/0x20 +- cpu_startup_entry+0x315/0x3e0 +- rest_init+0x7c/0x80 +- } hitcount: 3 bytes_req: 21 bytes_alloc: 24 +- { stacktrace: +- __kmalloc_track_caller+0x10b/0x1a0 +- kmemdup+0x20/0x50 +- hidraw_report_event+0x8a/0x120 [hid] +- hid_report_raw_event+0x3ea/0x440 [hid] +- hid_input_report+0x112/0x190 [hid] +- hid_irq_in+0xc2/0x260 [usbhid] +- __usb_hcd_giveback_urb+0x72/0x120 +- usb_giveback_urb_bh+0x9e/0xe0 +- tasklet_hi_action+0xf8/0x100 +- __do_softirq+0x114/0x2c0 +- irq_exit+0xa5/0xb0 +- do_IRQ+0x5a/0xf0 +- ret_from_intr+0x0/0x30 +- } hitcount: 3 bytes_req: 21 bytes_alloc: 24 +- { stacktrace: +- kmem_cache_alloc_trace+0xeb/0x150 +- aa_alloc_task_context+0x27/0x40 +- apparmor_cred_prepare+0x1f/0x50 +- security_prepare_creds+0x16/0x20 +- prepare_creds+0xdf/0x1a0 +- SyS_capset+0xb5/0x200 +- system_call_fastpath+0x12/0x6a +- } hitcount: 1 bytes_req: 32 bytes_alloc: 32 +- . +- . +- . +- { stacktrace: +- __kmalloc+0x11b/0x1b0 +- i915_gem_execbuffer2+0x6c/0x2c0 [i915] +- drm_ioctl+0x349/0x670 [drm] +- do_vfs_ioctl+0x2f0/0x4f0 +- SyS_ioctl+0x81/0xa0 +- system_call_fastpath+0x12/0x6a +- } hitcount: 17726 bytes_req: 13944120 bytes_alloc: 19593808 +- { stacktrace: +- __kmalloc+0x11b/0x1b0 +- load_elf_phdrs+0x76/0xa0 +- load_elf_binary+0x102/0x1650 +- search_binary_handler+0x97/0x1d0 +- do_execveat_common.isra.34+0x551/0x6e0 +- SyS_execve+0x3a/0x50 +- return_from_execve+0x0/0x23 +- } hitcount: 33348 bytes_req: 17152128 bytes_alloc: 20226048 +- { stacktrace: +- kmem_cache_alloc_trace+0xeb/0x150 +- apparmor_file_alloc_security+0x27/0x40 +- security_file_alloc+0x16/0x20 +- get_empty_filp+0x93/0x1c0 +- path_openat+0x31/0x5f0 +- do_filp_open+0x3a/0x90 +- do_sys_open+0x128/0x220 +- SyS_open+0x1e/0x20 +- system_call_fastpath+0x12/0x6a +- } hitcount: 4766422 bytes_req: 9532844 bytes_alloc: 38131376 +- { stacktrace: +- __kmalloc+0x11b/0x1b0 +- seq_buf_alloc+0x1b/0x50 +- seq_read+0x2cc/0x370 +- proc_reg_read+0x3d/0x80 +- __vfs_read+0x28/0xe0 +- vfs_read+0x86/0x140 +- SyS_read+0x46/0xb0 +- system_call_fastpath+0x12/0x6a +- } hitcount: 19133 bytes_req: 78368768 bytes_alloc: 78368768 +- +- Totals: +- Hits: 6085872 +- Entries: 253 +- Dropped: 0 +- +- If you key a hist trigger on common_pid, in order for example to +- gather and display sorted totals for each process, you can use the +- special .execname modifier to display the executable names for the +- processes in the table rather than raw pids. The example below +- keeps a per-process sum of total bytes read: +- +- # echo 'hist:key=common_pid.execname:val=count:sort=count.descending' > \ +- /sys/kernel/debug/tracing/events/syscalls/sys_enter_read/trigger +- +- # cat /sys/kernel/debug/tracing/events/syscalls/sys_enter_read/hist +- # trigger info: hist:keys=common_pid.execname:vals=count:sort=count.descending:size=2048 [active] +- +- { common_pid: gnome-terminal [ 3196] } hitcount: 280 count: 1093512 +- { common_pid: Xorg [ 1309] } hitcount: 525 count: 256640 +- { common_pid: compiz [ 2889] } hitcount: 59 count: 254400 +- { common_pid: bash [ 8710] } hitcount: 3 count: 66369 +- { common_pid: dbus-daemon-lau [ 8703] } hitcount: 49 count: 47739 +- { common_pid: irqbalance [ 1252] } hitcount: 27 count: 27648 +- { common_pid: 01ifupdown [ 8705] } hitcount: 3 count: 17216 +- { common_pid: dbus-daemon [ 772] } hitcount: 10 count: 12396 +- { common_pid: Socket Thread [ 8342] } hitcount: 11 count: 11264 +- { common_pid: nm-dhcp-client. [ 8701] } hitcount: 6 count: 7424 +- { common_pid: gmain [ 1315] } hitcount: 18 count: 6336 +- . +- . +- . +- { common_pid: postgres [ 1892] } hitcount: 2 count: 32 +- { common_pid: postgres [ 1891] } hitcount: 2 count: 32 +- { common_pid: gmain [ 8704] } hitcount: 2 count: 32 +- { common_pid: upstart-dbus-br [ 2740] } hitcount: 21 count: 21 +- { common_pid: nm-dispatcher.a [ 8696] } hitcount: 1 count: 16 +- { common_pid: indicator-datet [ 2904] } hitcount: 1 count: 16 +- { common_pid: gdbus [ 2998] } hitcount: 1 count: 16 +- { common_pid: rtkit-daemon [ 2052] } hitcount: 1 count: 8 +- { common_pid: init [ 1] } hitcount: 2 count: 2 +- +- Totals: +- Hits: 2116 +- Entries: 51 +- Dropped: 0 +- +- Similarly, if you key a hist trigger on syscall id, for example to +- gather and display a list of systemwide syscall hits, you can use +- the special .syscall modifier to display the syscall names rather +- than raw ids. The example below keeps a running total of syscall +- counts for the system during the run: +- +- # echo 'hist:key=id.syscall:val=hitcount' > \ +- /sys/kernel/debug/tracing/events/raw_syscalls/sys_enter/trigger +- +- # cat /sys/kernel/debug/tracing/events/raw_syscalls/sys_enter/hist +- # trigger info: hist:keys=id.syscall:vals=hitcount:sort=hitcount:size=2048 [active] +- +- { id: sys_fsync [ 74] } hitcount: 1 +- { id: sys_newuname [ 63] } hitcount: 1 +- { id: sys_prctl [157] } hitcount: 1 +- { id: sys_statfs [137] } hitcount: 1 +- { id: sys_symlink [ 88] } hitcount: 1 +- { id: sys_sendmmsg [307] } hitcount: 1 +- { id: sys_semctl [ 66] } hitcount: 1 +- { id: sys_readlink [ 89] } hitcount: 3 +- { id: sys_bind [ 49] } hitcount: 3 +- { id: sys_getsockname [ 51] } hitcount: 3 +- { id: sys_unlink [ 87] } hitcount: 3 +- { id: sys_rename [ 82] } hitcount: 4 +- { id: unknown_syscall [ 58] } hitcount: 4 +- { id: sys_connect [ 42] } hitcount: 4 +- { id: sys_getpid [ 39] } hitcount: 4 +- . +- . +- . +- { id: sys_rt_sigprocmask [ 14] } hitcount: 952 +- { id: sys_futex [202] } hitcount: 1534 +- { id: sys_write [ 1] } hitcount: 2689 +- { id: sys_setitimer [ 38] } hitcount: 2797 +- { id: sys_read [ 0] } hitcount: 3202 +- { id: sys_select [ 23] } hitcount: 3773 +- { id: sys_writev [ 20] } hitcount: 4531 +- { id: sys_poll [ 7] } hitcount: 8314 +- { id: sys_recvmsg [ 47] } hitcount: 13738 +- { id: sys_ioctl [ 16] } hitcount: 21843 +- +- Totals: +- Hits: 67612 +- Entries: 72 +- Dropped: 0 +- +- The syscall counts above provide a rough overall picture of system +- call activity on the system; we can see for example that the most +- popular system call on this system was the 'sys_ioctl' system call. +- +- We can use 'compound' keys to refine that number and provide some +- further insight as to which processes exactly contribute to the +- overall ioctl count. +- +- The command below keeps a hitcount for every unique combination of +- system call id and pid - the end result is essentially a table +- that keeps a per-pid sum of system call hits. The results are +- sorted using the system call id as the primary key, and the +- hitcount sum as the secondary key: +- +- # echo 'hist:key=id.syscall,common_pid.execname:val=hitcount:sort=id,hitcount' > \ +- /sys/kernel/debug/tracing/events/raw_syscalls/sys_enter/trigger +- +- # cat /sys/kernel/debug/tracing/events/raw_syscalls/sys_enter/hist +- # trigger info: hist:keys=id.syscall,common_pid.execname:vals=hitcount:sort=id.syscall,hitcount:size=2048 [active] +- +- { id: sys_read [ 0], common_pid: rtkit-daemon [ 1877] } hitcount: 1 +- { id: sys_read [ 0], common_pid: gdbus [ 2976] } hitcount: 1 +- { id: sys_read [ 0], common_pid: console-kit-dae [ 3400] } hitcount: 1 +- { id: sys_read [ 0], common_pid: postgres [ 1865] } hitcount: 1 +- { id: sys_read [ 0], common_pid: deja-dup-monito [ 3543] } hitcount: 2 +- { id: sys_read [ 0], common_pid: NetworkManager [ 890] } hitcount: 2 +- { id: sys_read [ 0], common_pid: evolution-calen [ 3048] } hitcount: 2 +- { id: sys_read [ 0], common_pid: postgres [ 1864] } hitcount: 2 +- { id: sys_read [ 0], common_pid: nm-applet [ 3022] } hitcount: 2 +- { id: sys_read [ 0], common_pid: whoopsie [ 1212] } hitcount: 2 +- . +- . +- . +- { id: sys_ioctl [ 16], common_pid: bash [ 8479] } hitcount: 1 +- { id: sys_ioctl [ 16], common_pid: bash [ 3472] } hitcount: 12 +- { id: sys_ioctl [ 16], common_pid: gnome-terminal [ 3199] } hitcount: 16 +- { id: sys_ioctl [ 16], common_pid: Xorg [ 1267] } hitcount: 1808 +- { id: sys_ioctl [ 16], common_pid: compiz [ 2994] } hitcount: 5580 +- . +- . +- . +- { id: sys_waitid [247], common_pid: upstart-dbus-br [ 2690] } hitcount: 3 +- { id: sys_waitid [247], common_pid: upstart-dbus-br [ 2688] } hitcount: 16 +- { id: sys_inotify_add_watch [254], common_pid: gmain [ 975] } hitcount: 2 +- { id: sys_inotify_add_watch [254], common_pid: gmain [ 3204] } hitcount: 4 +- { id: sys_inotify_add_watch [254], common_pid: gmain [ 2888] } hitcount: 4 +- { id: sys_inotify_add_watch [254], common_pid: gmain [ 3003] } hitcount: 4 +- { id: sys_inotify_add_watch [254], common_pid: gmain [ 2873] } hitcount: 4 +- { id: sys_inotify_add_watch [254], common_pid: gmain [ 3196] } hitcount: 6 +- { id: sys_openat [257], common_pid: java [ 2623] } hitcount: 2 +- { id: sys_eventfd2 [290], common_pid: ibus-ui-gtk3 [ 2760] } hitcount: 4 +- { id: sys_eventfd2 [290], common_pid: compiz [ 2994] } hitcount: 6 +- +- Totals: +- Hits: 31536 +- Entries: 323 +- Dropped: 0 +- +- The above list does give us a breakdown of the ioctl syscall by +- pid, but it also gives us quite a bit more than that, which we +- don't really care about at the moment. Since we know the syscall +- id for sys_ioctl (16, displayed next to the sys_ioctl name), we +- can use that to filter out all the other syscalls: +- +- # echo 'hist:key=id.syscall,common_pid.execname:val=hitcount:sort=id,hitcount if id == 16' > \ +- /sys/kernel/debug/tracing/events/raw_syscalls/sys_enter/trigger +- +- # cat /sys/kernel/debug/tracing/events/raw_syscalls/sys_enter/hist +- # trigger info: hist:keys=id.syscall,common_pid.execname:vals=hitcount:sort=id.syscall,hitcount:size=2048 if id == 16 [active] +- +- { id: sys_ioctl [ 16], common_pid: gmain [ 2769] } hitcount: 1 +- { id: sys_ioctl [ 16], common_pid: evolution-addre [ 8571] } hitcount: 1 +- { id: sys_ioctl [ 16], common_pid: gmain [ 3003] } hitcount: 1 +- { id: sys_ioctl [ 16], common_pid: gmain [ 2781] } hitcount: 1 +- { id: sys_ioctl [ 16], common_pid: gmain [ 2829] } hitcount: 1 +- { id: sys_ioctl [ 16], common_pid: bash [ 8726] } hitcount: 1 +- { id: sys_ioctl [ 16], common_pid: bash [ 8508] } hitcount: 1 +- { id: sys_ioctl [ 16], common_pid: gmain [ 2970] } hitcount: 1 +- { id: sys_ioctl [ 16], common_pid: gmain [ 2768] } hitcount: 1 +- . +- . +- . +- { id: sys_ioctl [ 16], common_pid: pool [ 8559] } hitcount: 45 +- { id: sys_ioctl [ 16], common_pid: pool [ 8555] } hitcount: 48 +- { id: sys_ioctl [ 16], common_pid: pool [ 8551] } hitcount: 48 +- { id: sys_ioctl [ 16], common_pid: avahi-daemon [ 896] } hitcount: 66 +- { id: sys_ioctl [ 16], common_pid: Xorg [ 1267] } hitcount: 26674 +- { id: sys_ioctl [ 16], common_pid: compiz [ 2994] } hitcount: 73443 +- +- Totals: +- Hits: 101162 +- Entries: 103 +- Dropped: 0 +- +- The above output shows that 'compiz' and 'Xorg' are far and away +- the heaviest ioctl callers (which might lead to questions about +- whether they really need to be making all those calls and to +- possible avenues for further investigation.) +- +- The compound key examples used a key and a sum value (hitcount) to +- sort the output, but we can just as easily use two keys instead. +- Here's an example where we use a compound key composed of the the +- common_pid and size event fields. Sorting with pid as the primary +- key and 'size' as the secondary key allows us to display an +- ordered summary of the recvfrom sizes, with counts, received by +- each process: +- +- # echo 'hist:key=common_pid.execname,size:val=hitcount:sort=common_pid,size' > \ +- /sys/kernel/debug/tracing/events/syscalls/sys_enter_recvfrom/trigger +- +- # cat /sys/kernel/debug/tracing/events/syscalls/sys_enter_recvfrom/hist +- # trigger info: hist:keys=common_pid.execname,size:vals=hitcount:sort=common_pid.execname,size:size=2048 [active] +- +- { common_pid: smbd [ 784], size: 4 } hitcount: 1 +- { common_pid: dnsmasq [ 1412], size: 4096 } hitcount: 672 +- { common_pid: postgres [ 1796], size: 1000 } hitcount: 6 +- { common_pid: postgres [ 1867], size: 1000 } hitcount: 10 +- { common_pid: bamfdaemon [ 2787], size: 28 } hitcount: 2 +- { common_pid: bamfdaemon [ 2787], size: 14360 } hitcount: 1 +- { common_pid: compiz [ 2994], size: 8 } hitcount: 1 +- { common_pid: compiz [ 2994], size: 20 } hitcount: 11 +- { common_pid: gnome-terminal [ 3199], size: 4 } hitcount: 2 +- { common_pid: firefox [ 8817], size: 4 } hitcount: 1 +- { common_pid: firefox [ 8817], size: 8 } hitcount: 5 +- { common_pid: firefox [ 8817], size: 588 } hitcount: 2 +- { common_pid: firefox [ 8817], size: 628 } hitcount: 1 +- { common_pid: firefox [ 8817], size: 6944 } hitcount: 1 +- { common_pid: firefox [ 8817], size: 408880 } hitcount: 2 +- { common_pid: firefox [ 8822], size: 8 } hitcount: 2 +- { common_pid: firefox [ 8822], size: 160 } hitcount: 2 +- { common_pid: firefox [ 8822], size: 320 } hitcount: 2 +- { common_pid: firefox [ 8822], size: 352 } hitcount: 1 +- . +- . +- . +- { common_pid: pool [ 8923], size: 1960 } hitcount: 10 +- { common_pid: pool [ 8923], size: 2048 } hitcount: 10 +- { common_pid: pool [ 8924], size: 1960 } hitcount: 10 +- { common_pid: pool [ 8924], size: 2048 } hitcount: 10 +- { common_pid: pool [ 8928], size: 1964 } hitcount: 4 +- { common_pid: pool [ 8928], size: 1965 } hitcount: 2 +- { common_pid: pool [ 8928], size: 2048 } hitcount: 6 +- { common_pid: pool [ 8929], size: 1982 } hitcount: 1 +- { common_pid: pool [ 8929], size: 2048 } hitcount: 1 +- +- Totals: +- Hits: 2016 +- Entries: 224 +- Dropped: 0 +- +- The above example also illustrates the fact that although a compound +- key is treated as a single entity for hashing purposes, the sub-keys +- it's composed of can be accessed independently. +- +- The next example uses a string field as the hash key and +- demonstrates how you can manually pause and continue a hist trigger. +- In this example, we'll aggregate fork counts and don't expect a +- large number of entries in the hash table, so we'll drop it to a +- much smaller number, say 256: +- +- # echo 'hist:key=child_comm:val=hitcount:size=256' > \ +- /sys/kernel/debug/tracing/events/sched/sched_process_fork/trigger +- +- # cat /sys/kernel/debug/tracing/events/sched/sched_process_fork/hist +- # trigger info: hist:keys=child_comm:vals=hitcount:sort=hitcount:size=256 [active] +- +- { child_comm: dconf worker } hitcount: 1 +- { child_comm: ibus-daemon } hitcount: 1 +- { child_comm: whoopsie } hitcount: 1 +- { child_comm: smbd } hitcount: 1 +- { child_comm: gdbus } hitcount: 1 +- { child_comm: kthreadd } hitcount: 1 +- { child_comm: dconf worker } hitcount: 1 +- { child_comm: evolution-alarm } hitcount: 2 +- { child_comm: Socket Thread } hitcount: 2 +- { child_comm: postgres } hitcount: 2 +- { child_comm: bash } hitcount: 3 +- { child_comm: compiz } hitcount: 3 +- { child_comm: evolution-sourc } hitcount: 4 +- { child_comm: dhclient } hitcount: 4 +- { child_comm: pool } hitcount: 5 +- { child_comm: nm-dispatcher.a } hitcount: 8 +- { child_comm: firefox } hitcount: 8 +- { child_comm: dbus-daemon } hitcount: 8 +- { child_comm: glib-pacrunner } hitcount: 10 +- { child_comm: evolution } hitcount: 23 +- +- Totals: +- Hits: 89 +- Entries: 20 +- Dropped: 0 +- +- If we want to pause the hist trigger, we can simply append :pause to +- the command that started the trigger. Notice that the trigger info +- displays as [paused]: +- +- # echo 'hist:key=child_comm:val=hitcount:size=256:pause' >> \ +- /sys/kernel/debug/tracing/events/sched/sched_process_fork/trigger +- +- # cat /sys/kernel/debug/tracing/events/sched/sched_process_fork/hist +- # trigger info: hist:keys=child_comm:vals=hitcount:sort=hitcount:size=256 [paused] +- +- { child_comm: dconf worker } hitcount: 1 +- { child_comm: kthreadd } hitcount: 1 +- { child_comm: dconf worker } hitcount: 1 +- { child_comm: gdbus } hitcount: 1 +- { child_comm: ibus-daemon } hitcount: 1 +- { child_comm: Socket Thread } hitcount: 2 +- { child_comm: evolution-alarm } hitcount: 2 +- { child_comm: smbd } hitcount: 2 +- { child_comm: bash } hitcount: 3 +- { child_comm: whoopsie } hitcount: 3 +- { child_comm: compiz } hitcount: 3 +- { child_comm: evolution-sourc } hitcount: 4 +- { child_comm: pool } hitcount: 5 +- { child_comm: postgres } hitcount: 6 +- { child_comm: firefox } hitcount: 8 +- { child_comm: dhclient } hitcount: 10 +- { child_comm: emacs } hitcount: 12 +- { child_comm: dbus-daemon } hitcount: 20 +- { child_comm: nm-dispatcher.a } hitcount: 20 +- { child_comm: evolution } hitcount: 35 +- { child_comm: glib-pacrunner } hitcount: 59 +- +- Totals: +- Hits: 199 +- Entries: 21 +- Dropped: 0 +- +- To manually continue having the trigger aggregate events, append +- :cont instead. Notice that the trigger info displays as [active] +- again, and the data has changed: +- +- # echo 'hist:key=child_comm:val=hitcount:size=256:cont' >> \ +- /sys/kernel/debug/tracing/events/sched/sched_process_fork/trigger +- +- # cat /sys/kernel/debug/tracing/events/sched/sched_process_fork/hist +- # trigger info: hist:keys=child_comm:vals=hitcount:sort=hitcount:size=256 [active] +- +- { child_comm: dconf worker } hitcount: 1 +- { child_comm: dconf worker } hitcount: 1 +- { child_comm: kthreadd } hitcount: 1 +- { child_comm: gdbus } hitcount: 1 +- { child_comm: ibus-daemon } hitcount: 1 +- { child_comm: Socket Thread } hitcount: 2 +- { child_comm: evolution-alarm } hitcount: 2 +- { child_comm: smbd } hitcount: 2 +- { child_comm: whoopsie } hitcount: 3 +- { child_comm: compiz } hitcount: 3 +- { child_comm: evolution-sourc } hitcount: 4 +- { child_comm: bash } hitcount: 5 +- { child_comm: pool } hitcount: 5 +- { child_comm: postgres } hitcount: 6 +- { child_comm: firefox } hitcount: 8 +- { child_comm: dhclient } hitcount: 11 +- { child_comm: emacs } hitcount: 12 +- { child_comm: dbus-daemon } hitcount: 22 +- { child_comm: nm-dispatcher.a } hitcount: 22 +- { child_comm: evolution } hitcount: 35 +- { child_comm: glib-pacrunner } hitcount: 59 +- +- Totals: +- Hits: 206 +- Entries: 21 +- Dropped: 0 +- +- The previous example showed how to start and stop a hist trigger by +- appending 'pause' and 'continue' to the hist trigger command. A +- hist trigger can also be started in a paused state by initially +- starting the trigger with ':pause' appended. This allows you to +- start the trigger only when you're ready to start collecting data +- and not before. For example, you could start the trigger in a +- paused state, then unpause it and do something you want to measure, +- then pause the trigger again when done. +- +- Of course, doing this manually can be difficult and error-prone, but +- it is possible to automatically start and stop a hist trigger based +- on some condition, via the enable_hist and disable_hist triggers. +- +- For example, suppose we wanted to take a look at the relative +- weights in terms of skb length for each callpath that leads to a +- netif_receieve_skb event when downloading a decent-sized file using +- wget. +- +- First we set up an initially paused stacktrace trigger on the +- netif_receive_skb event: +- +- # echo 'hist:key=stacktrace:vals=len:pause' > \ +- /sys/kernel/debug/tracing/events/net/netif_receive_skb/trigger +- +- Next, we set up an 'enable_hist' trigger on the sched_process_exec +- event, with an 'if filename==/usr/bin/wget' filter. The effect of +- this new trigger is that it will 'unpause' the hist trigger we just +- set up on netif_receive_skb if and only if it sees a +- sched_process_exec event with a filename of '/usr/bin/wget'. When +- that happens, all netif_receive_skb events are aggregated into a +- hash table keyed on stacktrace: +- +- # echo 'enable_hist:net:netif_receive_skb if filename==/usr/bin/wget' > \ +- /sys/kernel/debug/tracing/events/sched/sched_process_exec/trigger +- +- The aggregation continues until the netif_receive_skb is paused +- again, which is what the following disable_hist event does by +- creating a similar setup on the sched_process_exit event, using the +- filter 'comm==wget': +- +- # echo 'disable_hist:net:netif_receive_skb if comm==wget' > \ +- /sys/kernel/debug/tracing/events/sched/sched_process_exit/trigger +- +- Whenever a process exits and the comm field of the disable_hist +- trigger filter matches 'comm==wget', the netif_receive_skb hist +- trigger is disabled. +- +- The overall effect is that netif_receive_skb events are aggregated +- into the hash table for only the duration of the wget. Executing a +- wget command and then listing the 'hist' file will display the +- output generated by the wget command: +- +- $ wget https://www.kernel.org/pub/linux/kernel/v3.x/patch-3.19.xz +- +- # cat /sys/kernel/debug/tracing/events/net/netif_receive_skb/hist +- # trigger info: hist:keys=stacktrace:vals=len:sort=hitcount:size=2048 [paused] +- +- { stacktrace: +- __netif_receive_skb_core+0x46d/0x990 +- __netif_receive_skb+0x18/0x60 +- netif_receive_skb_internal+0x23/0x90 +- napi_gro_receive+0xc8/0x100 +- ieee80211_deliver_skb+0xd6/0x270 [mac80211] +- ieee80211_rx_handlers+0xccf/0x22f0 [mac80211] +- ieee80211_prepare_and_rx_handle+0x4e7/0xc40 [mac80211] +- ieee80211_rx+0x31d/0x900 [mac80211] +- iwlagn_rx_reply_rx+0x3db/0x6f0 [iwldvm] +- iwl_rx_dispatch+0x8e/0xf0 [iwldvm] +- iwl_pcie_irq_handler+0xe3c/0x12f0 [iwlwifi] +- irq_thread_fn+0x20/0x50 +- irq_thread+0x11f/0x150 +- kthread+0xd2/0xf0 +- ret_from_fork+0x42/0x70 +- } hitcount: 85 len: 28884 +- { stacktrace: +- __netif_receive_skb_core+0x46d/0x990 +- __netif_receive_skb+0x18/0x60 +- netif_receive_skb_internal+0x23/0x90 +- napi_gro_complete+0xa4/0xe0 +- dev_gro_receive+0x23a/0x360 +- napi_gro_receive+0x30/0x100 +- ieee80211_deliver_skb+0xd6/0x270 [mac80211] +- ieee80211_rx_handlers+0xccf/0x22f0 [mac80211] +- ieee80211_prepare_and_rx_handle+0x4e7/0xc40 [mac80211] +- ieee80211_rx+0x31d/0x900 [mac80211] +- iwlagn_rx_reply_rx+0x3db/0x6f0 [iwldvm] +- iwl_rx_dispatch+0x8e/0xf0 [iwldvm] +- iwl_pcie_irq_handler+0xe3c/0x12f0 [iwlwifi] +- irq_thread_fn+0x20/0x50 +- irq_thread+0x11f/0x150 +- kthread+0xd2/0xf0 +- } hitcount: 98 len: 664329 +- { stacktrace: +- __netif_receive_skb_core+0x46d/0x990 +- __netif_receive_skb+0x18/0x60 +- process_backlog+0xa8/0x150 +- net_rx_action+0x15d/0x340 +- __do_softirq+0x114/0x2c0 +- do_softirq_own_stack+0x1c/0x30 +- do_softirq+0x65/0x70 +- __local_bh_enable_ip+0xb5/0xc0 +- ip_finish_output+0x1f4/0x840 +- ip_output+0x6b/0xc0 +- ip_local_out_sk+0x31/0x40 +- ip_send_skb+0x1a/0x50 +- udp_send_skb+0x173/0x2a0 +- udp_sendmsg+0x2bf/0x9f0 +- inet_sendmsg+0x64/0xa0 +- sock_sendmsg+0x3d/0x50 +- } hitcount: 115 len: 13030 +- { stacktrace: +- __netif_receive_skb_core+0x46d/0x990 +- __netif_receive_skb+0x18/0x60 +- netif_receive_skb_internal+0x23/0x90 +- napi_gro_complete+0xa4/0xe0 +- napi_gro_flush+0x6d/0x90 +- iwl_pcie_irq_handler+0x92a/0x12f0 [iwlwifi] +- irq_thread_fn+0x20/0x50 +- irq_thread+0x11f/0x150 +- kthread+0xd2/0xf0 +- ret_from_fork+0x42/0x70 +- } hitcount: 934 len: 5512212 +- +- Totals: +- Hits: 1232 +- Entries: 4 +- Dropped: 0 +- +- The above shows all the netif_receive_skb callpaths and their total +- lengths for the duration of the wget command. +- +- The 'clear' hist trigger param can be used to clear the hash table. +- Suppose we wanted to try another run of the previous example but +- this time also wanted to see the complete list of events that went +- into the histogram. In order to avoid having to set everything up +- again, we can just clear the histogram first: +- +- # echo 'hist:key=stacktrace:vals=len:clear' >> \ +- /sys/kernel/debug/tracing/events/net/netif_receive_skb/trigger +- +- Just to verify that it is in fact cleared, here's what we now see in +- the hist file: +- +- # cat /sys/kernel/debug/tracing/events/net/netif_receive_skb/hist +- # trigger info: hist:keys=stacktrace:vals=len:sort=hitcount:size=2048 [paused] +- +- Totals: +- Hits: 0 +- Entries: 0 +- Dropped: 0 +- +- Since we want to see the detailed list of every netif_receive_skb +- event occurring during the new run, which are in fact the same +- events being aggregated into the hash table, we add some additional +- 'enable_event' events to the triggering sched_process_exec and +- sched_process_exit events as such: +- +- # echo 'enable_event:net:netif_receive_skb if filename==/usr/bin/wget' > \ +- /sys/kernel/debug/tracing/events/sched/sched_process_exec/trigger +- +- # echo 'disable_event:net:netif_receive_skb if comm==wget' > \ +- /sys/kernel/debug/tracing/events/sched/sched_process_exit/trigger +- +- If you read the trigger files for the sched_process_exec and +- sched_process_exit triggers, you should see two triggers for each: +- one enabling/disabling the hist aggregation and the other +- enabling/disabling the logging of events: +- +- # cat /sys/kernel/debug/tracing/events/sched/sched_process_exec/trigger +- enable_event:net:netif_receive_skb:unlimited if filename==/usr/bin/wget +- enable_hist:net:netif_receive_skb:unlimited if filename==/usr/bin/wget +- +- # cat /sys/kernel/debug/tracing/events/sched/sched_process_exit/trigger +- enable_event:net:netif_receive_skb:unlimited if comm==wget +- disable_hist:net:netif_receive_skb:unlimited if comm==wget +- +- In other words, whenever either of the sched_process_exec or +- sched_process_exit events is hit and matches 'wget', it enables or +- disables both the histogram and the event log, and what you end up +- with is a hash table and set of events just covering the specified +- duration. Run the wget command again: +- +- $ wget https://www.kernel.org/pub/linux/kernel/v3.x/patch-3.19.xz +- +- Displaying the 'hist' file should show something similar to what you +- saw in the last run, but this time you should also see the +- individual events in the trace file: +- +- # cat /sys/kernel/debug/tracing/trace +- +- # tracer: nop +- # +- # entries-in-buffer/entries-written: 183/1426 #P:4 +- # +- # _-----=> irqs-off +- # / _----=> need-resched +- # | / _---=> hardirq/softirq +- # || / _--=> preempt-depth +- # ||| / delay +- # TASK-PID CPU# |||| TIMESTAMP FUNCTION +- # | | | |||| | | +- wget-15108 [000] ..s1 31769.606929: netif_receive_skb: dev=lo skbaddr=ffff88009c353100 len=60 +- wget-15108 [000] ..s1 31769.606999: netif_receive_skb: dev=lo skbaddr=ffff88009c353200 len=60 +- dnsmasq-1382 [000] ..s1 31769.677652: netif_receive_skb: dev=lo skbaddr=ffff88009c352b00 len=130 +- dnsmasq-1382 [000] ..s1 31769.685917: netif_receive_skb: dev=lo skbaddr=ffff88009c352200 len=138 +- ##### CPU 2 buffer started #### +- irq/29-iwlwifi-559 [002] ..s. 31772.031529: netif_receive_skb: dev=wlan0 skbaddr=ffff88009d433d00 len=2948 +- irq/29-iwlwifi-559 [002] ..s. 31772.031572: netif_receive_skb: dev=wlan0 skbaddr=ffff88009d432200 len=1500 +- irq/29-iwlwifi-559 [002] ..s. 31772.032196: netif_receive_skb: dev=wlan0 skbaddr=ffff88009d433100 len=2948 +- irq/29-iwlwifi-559 [002] ..s. 31772.032761: netif_receive_skb: dev=wlan0 skbaddr=ffff88009d433000 len=2948 +- irq/29-iwlwifi-559 [002] ..s. 31772.033220: netif_receive_skb: dev=wlan0 skbaddr=ffff88009d432e00 len=1500 +- . +- . +- . +- +- The following example demonstrates how multiple hist triggers can be +- attached to a given event. This capability can be useful for +- creating a set of different summaries derived from the same set of +- events, or for comparing the effects of different filters, among +- other things. +- +- # echo 'hist:keys=skbaddr.hex:vals=len if len < 0' >> \ +- /sys/kernel/debug/tracing/events/net/netif_receive_skb/trigger +- # echo 'hist:keys=skbaddr.hex:vals=len if len > 4096' >> \ +- /sys/kernel/debug/tracing/events/net/netif_receive_skb/trigger +- # echo 'hist:keys=skbaddr.hex:vals=len if len == 256' >> \ +- /sys/kernel/debug/tracing/events/net/netif_receive_skb/trigger +- # echo 'hist:keys=skbaddr.hex:vals=len' >> \ +- /sys/kernel/debug/tracing/events/net/netif_receive_skb/trigger +- # echo 'hist:keys=len:vals=common_preempt_count' >> \ +- /sys/kernel/debug/tracing/events/net/netif_receive_skb/trigger +- +- The above set of commands create four triggers differing only in +- their filters, along with a completely different though fairly +- nonsensical trigger. Note that in order to append multiple hist +- triggers to the same file, you should use the '>>' operator to +- append them ('>' will also add the new hist trigger, but will remove +- any existing hist triggers beforehand). +- +- Displaying the contents of the 'hist' file for the event shows the +- contents of all five histograms: +- +- # cat /sys/kernel/debug/tracing/events/net/netif_receive_skb/hist +- +- # event histogram +- # +- # trigger info: hist:keys=len:vals=hitcount,common_preempt_count:sort=hitcount:size=2048 [active] +- # +- +- { len: 176 } hitcount: 1 common_preempt_count: 0 +- { len: 223 } hitcount: 1 common_preempt_count: 0 +- { len: 4854 } hitcount: 1 common_preempt_count: 0 +- { len: 395 } hitcount: 1 common_preempt_count: 0 +- { len: 177 } hitcount: 1 common_preempt_count: 0 +- { len: 446 } hitcount: 1 common_preempt_count: 0 +- { len: 1601 } hitcount: 1 common_preempt_count: 0 +- . +- . +- . +- { len: 1280 } hitcount: 66 common_preempt_count: 0 +- { len: 116 } hitcount: 81 common_preempt_count: 40 +- { len: 708 } hitcount: 112 common_preempt_count: 0 +- { len: 46 } hitcount: 221 common_preempt_count: 0 +- { len: 1264 } hitcount: 458 common_preempt_count: 0 +- +- Totals: +- Hits: 1428 +- Entries: 147 +- Dropped: 0 +- +- +- # event histogram +- # +- # trigger info: hist:keys=skbaddr.hex:vals=hitcount,len:sort=hitcount:size=2048 [active] +- # +- +- { skbaddr: ffff8800baee5e00 } hitcount: 1 len: 130 +- { skbaddr: ffff88005f3d5600 } hitcount: 1 len: 1280 +- { skbaddr: ffff88005f3d4900 } hitcount: 1 len: 1280 +- { skbaddr: ffff88009fed6300 } hitcount: 1 len: 115 +- { skbaddr: ffff88009fe0ad00 } hitcount: 1 len: 115 +- { skbaddr: ffff88008cdb1900 } hitcount: 1 len: 46 +- { skbaddr: ffff880064b5ef00 } hitcount: 1 len: 118 +- { skbaddr: ffff880044e3c700 } hitcount: 1 len: 60 +- { skbaddr: ffff880100065900 } hitcount: 1 len: 46 +- { skbaddr: ffff8800d46bd500 } hitcount: 1 len: 116 +- { skbaddr: ffff88005f3d5f00 } hitcount: 1 len: 1280 +- { skbaddr: ffff880100064700 } hitcount: 1 len: 365 +- { skbaddr: ffff8800badb6f00 } hitcount: 1 len: 60 +- . +- . +- . +- { skbaddr: ffff88009fe0be00 } hitcount: 27 len: 24677 +- { skbaddr: ffff88009fe0a400 } hitcount: 27 len: 23052 +- { skbaddr: ffff88009fe0b700 } hitcount: 31 len: 25589 +- { skbaddr: ffff88009fe0b600 } hitcount: 32 len: 27326 +- { skbaddr: ffff88006a462800 } hitcount: 68 len: 71678 +- { skbaddr: ffff88006a463700 } hitcount: 70 len: 72678 +- { skbaddr: ffff88006a462b00 } hitcount: 71 len: 77589 +- { skbaddr: ffff88006a463600 } hitcount: 73 len: 71307 +- { skbaddr: ffff88006a462200 } hitcount: 81 len: 81032 +- +- Totals: +- Hits: 1451 +- Entries: 318 +- Dropped: 0 +- +- +- # event histogram +- # +- # trigger info: hist:keys=skbaddr.hex:vals=hitcount,len:sort=hitcount:size=2048 if len == 256 [active] +- # +- +- +- Totals: +- Hits: 0 +- Entries: 0 +- Dropped: 0 +- +- +- # event histogram +- # +- # trigger info: hist:keys=skbaddr.hex:vals=hitcount,len:sort=hitcount:size=2048 if len > 4096 [active] +- # +- +- { skbaddr: ffff88009fd2c300 } hitcount: 1 len: 7212 +- { skbaddr: ffff8800d2bcce00 } hitcount: 1 len: 7212 +- { skbaddr: ffff8800d2bcd700 } hitcount: 1 len: 7212 +- { skbaddr: ffff8800d2bcda00 } hitcount: 1 len: 21492 +- { skbaddr: ffff8800ae2e2d00 } hitcount: 1 len: 7212 +- { skbaddr: ffff8800d2bcdb00 } hitcount: 1 len: 7212 +- { skbaddr: ffff88006a4df500 } hitcount: 1 len: 4854 +- { skbaddr: ffff88008ce47b00 } hitcount: 1 len: 18636 +- { skbaddr: ffff8800ae2e2200 } hitcount: 1 len: 12924 +- { skbaddr: ffff88005f3e1000 } hitcount: 1 len: 4356 +- { skbaddr: ffff8800d2bcdc00 } hitcount: 2 len: 24420 +- { skbaddr: ffff8800d2bcc200 } hitcount: 2 len: 12996 +- +- Totals: +- Hits: 14 +- Entries: 12 +- Dropped: 0 +- +- +- # event histogram +- # +- # trigger info: hist:keys=skbaddr.hex:vals=hitcount,len:sort=hitcount:size=2048 if len < 0 [active] +- # +- +- +- Totals: +- Hits: 0 +- Entries: 0 +- Dropped: 0 +- +- Named triggers can be used to have triggers share a common set of +- histogram data. This capability is mostly useful for combining the +- output of events generated by tracepoints contained inside inline +- functions, but names can be used in a hist trigger on any event. +- For example, these two triggers when hit will update the same 'len' +- field in the shared 'foo' histogram data: +- +- # echo 'hist:name=foo:keys=skbaddr.hex:vals=len' > \ +- /sys/kernel/debug/tracing/events/net/netif_receive_skb/trigger +- # echo 'hist:name=foo:keys=skbaddr.hex:vals=len' > \ +- /sys/kernel/debug/tracing/events/net/netif_rx/trigger +- +- You can see that they're updating common histogram data by reading +- each event's hist files at the same time: +- +- # cat /sys/kernel/debug/tracing/events/net/netif_receive_skb/hist; +- cat /sys/kernel/debug/tracing/events/net/netif_rx/hist +- +- # event histogram +- # +- # trigger info: hist:name=foo:keys=skbaddr.hex:vals=hitcount,len:sort=hitcount:size=2048 [active] +- # +- +- { skbaddr: ffff88000ad53500 } hitcount: 1 len: 46 +- { skbaddr: ffff8800af5a1500 } hitcount: 1 len: 76 +- { skbaddr: ffff8800d62a1900 } hitcount: 1 len: 46 +- { skbaddr: ffff8800d2bccb00 } hitcount: 1 len: 468 +- { skbaddr: ffff8800d3c69900 } hitcount: 1 len: 46 +- { skbaddr: ffff88009ff09100 } hitcount: 1 len: 52 +- { skbaddr: ffff88010f13ab00 } hitcount: 1 len: 168 +- { skbaddr: ffff88006a54f400 } hitcount: 1 len: 46 +- { skbaddr: ffff8800d2bcc500 } hitcount: 1 len: 260 +- { skbaddr: ffff880064505000 } hitcount: 1 len: 46 +- { skbaddr: ffff8800baf24e00 } hitcount: 1 len: 32 +- { skbaddr: ffff88009fe0ad00 } hitcount: 1 len: 46 +- { skbaddr: ffff8800d3edff00 } hitcount: 1 len: 44 +- { skbaddr: ffff88009fe0b400 } hitcount: 1 len: 168 +- { skbaddr: ffff8800a1c55a00 } hitcount: 1 len: 40 +- { skbaddr: ffff8800d2bcd100 } hitcount: 1 len: 40 +- { skbaddr: ffff880064505f00 } hitcount: 1 len: 174 +- { skbaddr: ffff8800a8bff200 } hitcount: 1 len: 160 +- { skbaddr: ffff880044e3cc00 } hitcount: 1 len: 76 +- { skbaddr: ffff8800a8bfe700 } hitcount: 1 len: 46 +- { skbaddr: ffff8800d2bcdc00 } hitcount: 1 len: 32 +- { skbaddr: ffff8800a1f64800 } hitcount: 1 len: 46 +- { skbaddr: ffff8800d2bcde00 } hitcount: 1 len: 988 +- { skbaddr: ffff88006a5dea00 } hitcount: 1 len: 46 +- { skbaddr: ffff88002e37a200 } hitcount: 1 len: 44 +- { skbaddr: ffff8800a1f32c00 } hitcount: 2 len: 676 +- { skbaddr: ffff88000ad52600 } hitcount: 2 len: 107 +- { skbaddr: ffff8800a1f91e00 } hitcount: 2 len: 92 +- { skbaddr: ffff8800af5a0200 } hitcount: 2 len: 142 +- { skbaddr: ffff8800d2bcc600 } hitcount: 2 len: 220 +- { skbaddr: ffff8800ba36f500 } hitcount: 2 len: 92 +- { skbaddr: ffff8800d021f800 } hitcount: 2 len: 92 +- { skbaddr: ffff8800a1f33600 } hitcount: 2 len: 675 +- { skbaddr: ffff8800a8bfff00 } hitcount: 3 len: 138 +- { skbaddr: ffff8800d62a1300 } hitcount: 3 len: 138 +- { skbaddr: ffff88002e37a100 } hitcount: 4 len: 184 +- { skbaddr: ffff880064504400 } hitcount: 4 len: 184 +- { skbaddr: ffff8800a8bfec00 } hitcount: 4 len: 184 +- { skbaddr: ffff88000ad53700 } hitcount: 5 len: 230 +- { skbaddr: ffff8800d2bcdb00 } hitcount: 5 len: 196 +- { skbaddr: ffff8800a1f90000 } hitcount: 6 len: 276 +- { skbaddr: ffff88006a54f900 } hitcount: 6 len: 276 +- +- Totals: +- Hits: 81 +- Entries: 42 +- Dropped: 0 +- # event histogram +- # +- # trigger info: hist:name=foo:keys=skbaddr.hex:vals=hitcount,len:sort=hitcount:size=2048 [active] +- # +- +- { skbaddr: ffff88000ad53500 } hitcount: 1 len: 46 +- { skbaddr: ffff8800af5a1500 } hitcount: 1 len: 76 +- { skbaddr: ffff8800d62a1900 } hitcount: 1 len: 46 +- { skbaddr: ffff8800d2bccb00 } hitcount: 1 len: 468 +- { skbaddr: ffff8800d3c69900 } hitcount: 1 len: 46 +- { skbaddr: ffff88009ff09100 } hitcount: 1 len: 52 +- { skbaddr: ffff88010f13ab00 } hitcount: 1 len: 168 +- { skbaddr: ffff88006a54f400 } hitcount: 1 len: 46 +- { skbaddr: ffff8800d2bcc500 } hitcount: 1 len: 260 +- { skbaddr: ffff880064505000 } hitcount: 1 len: 46 +- { skbaddr: ffff8800baf24e00 } hitcount: 1 len: 32 +- { skbaddr: ffff88009fe0ad00 } hitcount: 1 len: 46 +- { skbaddr: ffff8800d3edff00 } hitcount: 1 len: 44 +- { skbaddr: ffff88009fe0b400 } hitcount: 1 len: 168 +- { skbaddr: ffff8800a1c55a00 } hitcount: 1 len: 40 +- { skbaddr: ffff8800d2bcd100 } hitcount: 1 len: 40 +- { skbaddr: ffff880064505f00 } hitcount: 1 len: 174 +- { skbaddr: ffff8800a8bff200 } hitcount: 1 len: 160 +- { skbaddr: ffff880044e3cc00 } hitcount: 1 len: 76 +- { skbaddr: ffff8800a8bfe700 } hitcount: 1 len: 46 +- { skbaddr: ffff8800d2bcdc00 } hitcount: 1 len: 32 +- { skbaddr: ffff8800a1f64800 } hitcount: 1 len: 46 +- { skbaddr: ffff8800d2bcde00 } hitcount: 1 len: 988 +- { skbaddr: ffff88006a5dea00 } hitcount: 1 len: 46 +- { skbaddr: ffff88002e37a200 } hitcount: 1 len: 44 +- { skbaddr: ffff8800a1f32c00 } hitcount: 2 len: 676 +- { skbaddr: ffff88000ad52600 } hitcount: 2 len: 107 +- { skbaddr: ffff8800a1f91e00 } hitcount: 2 len: 92 +- { skbaddr: ffff8800af5a0200 } hitcount: 2 len: 142 +- { skbaddr: ffff8800d2bcc600 } hitcount: 2 len: 220 +- { skbaddr: ffff8800ba36f500 } hitcount: 2 len: 92 +- { skbaddr: ffff8800d021f800 } hitcount: 2 len: 92 +- { skbaddr: ffff8800a1f33600 } hitcount: 2 len: 675 +- { skbaddr: ffff8800a8bfff00 } hitcount: 3 len: 138 +- { skbaddr: ffff8800d62a1300 } hitcount: 3 len: 138 +- { skbaddr: ffff88002e37a100 } hitcount: 4 len: 184 +- { skbaddr: ffff880064504400 } hitcount: 4 len: 184 +- { skbaddr: ffff8800a8bfec00 } hitcount: 4 len: 184 +- { skbaddr: ffff88000ad53700 } hitcount: 5 len: 230 +- { skbaddr: ffff8800d2bcdb00 } hitcount: 5 len: 196 +- { skbaddr: ffff8800a1f90000 } hitcount: 6 len: 276 +- { skbaddr: ffff88006a54f900 } hitcount: 6 len: 276 +- +- Totals: +- Hits: 81 +- Entries: 42 +- Dropped: 0 +- +- And here's an example that shows how to combine histogram data from +- any two events even if they don't share any 'compatible' fields +- other than 'hitcount' and 'stacktrace'. These commands create a +- couple of triggers named 'bar' using those fields: +- +- # echo 'hist:name=bar:key=stacktrace:val=hitcount' > \ +- /sys/kernel/debug/tracing/events/sched/sched_process_fork/trigger +- # echo 'hist:name=bar:key=stacktrace:val=hitcount' > \ +- /sys/kernel/debug/tracing/events/net/netif_rx/trigger +- +- And displaying the output of either shows some interesting if +- somewhat confusing output: +- +- # cat /sys/kernel/debug/tracing/events/sched/sched_process_fork/hist +- # cat /sys/kernel/debug/tracing/events/net/netif_rx/hist +- +- # event histogram +- # +- # trigger info: hist:name=bar:keys=stacktrace:vals=hitcount:sort=hitcount:size=2048 [active] +- # +- +- { stacktrace: +- _do_fork+0x18e/0x330 +- kernel_thread+0x29/0x30 +- kthreadd+0x154/0x1b0 +- ret_from_fork+0x3f/0x70 +- } hitcount: 1 +- { stacktrace: +- netif_rx_internal+0xb2/0xd0 +- netif_rx_ni+0x20/0x70 +- dev_loopback_xmit+0xaa/0xd0 +- ip_mc_output+0x126/0x240 +- ip_local_out_sk+0x31/0x40 +- igmp_send_report+0x1e9/0x230 +- igmp_timer_expire+0xe9/0x120 +- call_timer_fn+0x39/0xf0 +- run_timer_softirq+0x1e1/0x290 +- __do_softirq+0xfd/0x290 +- irq_exit+0x98/0xb0 +- smp_apic_timer_interrupt+0x4a/0x60 +- apic_timer_interrupt+0x6d/0x80 +- cpuidle_enter+0x17/0x20 +- call_cpuidle+0x3b/0x60 +- cpu_startup_entry+0x22d/0x310 +- } hitcount: 1 +- { stacktrace: +- netif_rx_internal+0xb2/0xd0 +- netif_rx_ni+0x20/0x70 +- dev_loopback_xmit+0xaa/0xd0 +- ip_mc_output+0x17f/0x240 +- ip_local_out_sk+0x31/0x40 +- ip_send_skb+0x1a/0x50 +- udp_send_skb+0x13e/0x270 +- udp_sendmsg+0x2bf/0x980 +- inet_sendmsg+0x67/0xa0 +- sock_sendmsg+0x38/0x50 +- SYSC_sendto+0xef/0x170 +- SyS_sendto+0xe/0x10 +- entry_SYSCALL_64_fastpath+0x12/0x6a +- } hitcount: 2 +- { stacktrace: +- netif_rx_internal+0xb2/0xd0 +- netif_rx+0x1c/0x60 +- loopback_xmit+0x6c/0xb0 +- dev_hard_start_xmit+0x219/0x3a0 +- __dev_queue_xmit+0x415/0x4f0 +- dev_queue_xmit_sk+0x13/0x20 +- ip_finish_output2+0x237/0x340 +- ip_finish_output+0x113/0x1d0 +- ip_output+0x66/0xc0 +- ip_local_out_sk+0x31/0x40 +- ip_send_skb+0x1a/0x50 +- udp_send_skb+0x16d/0x270 +- udp_sendmsg+0x2bf/0x980 +- inet_sendmsg+0x67/0xa0 +- sock_sendmsg+0x38/0x50 +- ___sys_sendmsg+0x14e/0x270 +- } hitcount: 76 +- { stacktrace: +- netif_rx_internal+0xb2/0xd0 +- netif_rx+0x1c/0x60 +- loopback_xmit+0x6c/0xb0 +- dev_hard_start_xmit+0x219/0x3a0 +- __dev_queue_xmit+0x415/0x4f0 +- dev_queue_xmit_sk+0x13/0x20 +- ip_finish_output2+0x237/0x340 +- ip_finish_output+0x113/0x1d0 +- ip_output+0x66/0xc0 +- ip_local_out_sk+0x31/0x40 +- ip_send_skb+0x1a/0x50 +- udp_send_skb+0x16d/0x270 +- udp_sendmsg+0x2bf/0x980 +- inet_sendmsg+0x67/0xa0 +- sock_sendmsg+0x38/0x50 +- ___sys_sendmsg+0x269/0x270 +- } hitcount: 77 +- { stacktrace: +- netif_rx_internal+0xb2/0xd0 +- netif_rx+0x1c/0x60 +- loopback_xmit+0x6c/0xb0 +- dev_hard_start_xmit+0x219/0x3a0 +- __dev_queue_xmit+0x415/0x4f0 +- dev_queue_xmit_sk+0x13/0x20 +- ip_finish_output2+0x237/0x340 +- ip_finish_output+0x113/0x1d0 +- ip_output+0x66/0xc0 +- ip_local_out_sk+0x31/0x40 +- ip_send_skb+0x1a/0x50 +- udp_send_skb+0x16d/0x270 +- udp_sendmsg+0x2bf/0x980 +- inet_sendmsg+0x67/0xa0 +- sock_sendmsg+0x38/0x50 +- SYSC_sendto+0xef/0x170 +- } hitcount: 88 +- { stacktrace: +- _do_fork+0x18e/0x330 +- SyS_clone+0x19/0x20 +- entry_SYSCALL_64_fastpath+0x12/0x6a +- } hitcount: 244 +- +- Totals: +- Hits: 489 +- Entries: 7 +- Dropped: 0 ++ See Documentation/trace/histogram.txt for details and examples. +--- /dev/null ++++ b/Documentation/trace/histogram.txt +@@ -0,0 +1,1568 @@ ++ Event Histograms ++ ++ Documentation written by Tom Zanussi ++ ++1. Introduction ++=============== ++ ++ Histogram triggers are special event triggers that can be used to ++ aggregate trace event data into histograms. For information on ++ trace events and event triggers, see Documentation/trace/events.txt. ++ ++ ++2. Histogram Trigger Command ++============================ ++ ++ A histogram trigger command is an event trigger command that ++ aggregates event hits into a hash table keyed on one or more trace ++ event format fields (or stacktrace) and a set of running totals ++ derived from one or more trace event format fields and/or event ++ counts (hitcount). ++ ++ The format of a hist trigger is as follows: ++ ++ hist:keys=[:values=] ++ [:sort=][:size=#entries][:pause][:continue] ++ [:clear][:name=histname1] [if ] ++ ++ When a matching event is hit, an entry is added to a hash table ++ using the key(s) and value(s) named. Keys and values correspond to ++ fields in the event's format description. Values must correspond to ++ numeric fields - on an event hit, the value(s) will be added to a ++ sum kept for that field. The special string 'hitcount' can be used ++ in place of an explicit value field - this is simply a count of ++ event hits. If 'values' isn't specified, an implicit 'hitcount' ++ value will be automatically created and used as the only value. ++ Keys can be any field, or the special string 'stacktrace', which ++ will use the event's kernel stacktrace as the key. The keywords ++ 'keys' or 'key' can be used to specify keys, and the keywords ++ 'values', 'vals', or 'val' can be used to specify values. Compound ++ keys consisting of up to two fields can be specified by the 'keys' ++ keyword. Hashing a compound key produces a unique entry in the ++ table for each unique combination of component keys, and can be ++ useful for providing more fine-grained summaries of event data. ++ Additionally, sort keys consisting of up to two fields can be ++ specified by the 'sort' keyword. If more than one field is ++ specified, the result will be a 'sort within a sort': the first key ++ is taken to be the primary sort key and the second the secondary ++ key. If a hist trigger is given a name using the 'name' parameter, ++ its histogram data will be shared with other triggers of the same ++ name, and trigger hits will update this common data. Only triggers ++ with 'compatible' fields can be combined in this way; triggers are ++ 'compatible' if the fields named in the trigger share the same ++ number and type of fields and those fields also have the same names. ++ Note that any two events always share the compatible 'hitcount' and ++ 'stacktrace' fields and can therefore be combined using those ++ fields, however pointless that may be. ++ ++ 'hist' triggers add a 'hist' file to each event's subdirectory. ++ Reading the 'hist' file for the event will dump the hash table in ++ its entirety to stdout. If there are multiple hist triggers ++ attached to an event, there will be a table for each trigger in the ++ output. The table displayed for a named trigger will be the same as ++ any other instance having the same name. Each printed hash table ++ entry is a simple list of the keys and values comprising the entry; ++ keys are printed first and are delineated by curly braces, and are ++ followed by the set of value fields for the entry. By default, ++ numeric fields are displayed as base-10 integers. This can be ++ modified by appending any of the following modifiers to the field ++ name: ++ ++ .hex display a number as a hex value ++ .sym display an address as a symbol ++ .sym-offset display an address as a symbol and offset ++ .syscall display a syscall id as a system call name ++ .execname display a common_pid as a program name ++ ++ Note that in general the semantics of a given field aren't ++ interpreted when applying a modifier to it, but there are some ++ restrictions to be aware of in this regard: ++ ++ - only the 'hex' modifier can be used for values (because values ++ are essentially sums, and the other modifiers don't make sense ++ in that context). ++ - the 'execname' modifier can only be used on a 'common_pid'. The ++ reason for this is that the execname is simply the 'comm' value ++ saved for the 'current' process when an event was triggered, ++ which is the same as the common_pid value saved by the event ++ tracing code. Trying to apply that comm value to other pid ++ values wouldn't be correct, and typically events that care save ++ pid-specific comm fields in the event itself. ++ ++ A typical usage scenario would be the following to enable a hist ++ trigger, read its current contents, and then turn it off: ++ ++ # echo 'hist:keys=skbaddr.hex:vals=len' > \ ++ /sys/kernel/debug/tracing/events/net/netif_rx/trigger ++ ++ # cat /sys/kernel/debug/tracing/events/net/netif_rx/hist ++ ++ # echo '!hist:keys=skbaddr.hex:vals=len' > \ ++ /sys/kernel/debug/tracing/events/net/netif_rx/trigger ++ ++ The trigger file itself can be read to show the details of the ++ currently attached hist trigger. This information is also displayed ++ at the top of the 'hist' file when read. ++ ++ By default, the size of the hash table is 2048 entries. The 'size' ++ parameter can be used to specify more or fewer than that. The units ++ are in terms of hashtable entries - if a run uses more entries than ++ specified, the results will show the number of 'drops', the number ++ of hits that were ignored. The size should be a power of 2 between ++ 128 and 131072 (any non- power-of-2 number specified will be rounded ++ up). ++ ++ The 'sort' parameter can be used to specify a value field to sort ++ on. The default if unspecified is 'hitcount' and the default sort ++ order is 'ascending'. To sort in the opposite direction, append ++ .descending' to the sort key. ++ ++ The 'pause' parameter can be used to pause an existing hist trigger ++ or to start a hist trigger but not log any events until told to do ++ so. 'continue' or 'cont' can be used to start or restart a paused ++ hist trigger. ++ ++ The 'clear' parameter will clear the contents of a running hist ++ trigger and leave its current paused/active state. ++ ++ Note that the 'pause', 'cont', and 'clear' parameters should be ++ applied using 'append' shell operator ('>>') if applied to an ++ existing trigger, rather than via the '>' operator, which will cause ++ the trigger to be removed through truncation. ++ ++- enable_hist/disable_hist ++ ++ The enable_hist and disable_hist triggers can be used to have one ++ event conditionally start and stop another event's already-attached ++ hist trigger. Any number of enable_hist and disable_hist triggers ++ can be attached to a given event, allowing that event to kick off ++ and stop aggregations on a host of other events. ++ ++ The format is very similar to the enable/disable_event triggers: ++ ++ enable_hist::[:count] ++ disable_hist::[:count] ++ ++ Instead of enabling or disabling the tracing of the target event ++ into the trace buffer as the enable/disable_event triggers do, the ++ enable/disable_hist triggers enable or disable the aggregation of ++ the target event into a hash table. ++ ++ A typical usage scenario for the enable_hist/disable_hist triggers ++ would be to first set up a paused hist trigger on some event, ++ followed by an enable_hist/disable_hist pair that turns the hist ++ aggregation on and off when conditions of interest are hit: ++ ++ # echo 'hist:keys=skbaddr.hex:vals=len:pause' > \ ++ /sys/kernel/debug/tracing/events/net/netif_receive_skb/trigger ++ ++ # echo 'enable_hist:net:netif_receive_skb if filename==/usr/bin/wget' > \ ++ /sys/kernel/debug/tracing/events/sched/sched_process_exec/trigger ++ ++ # echo 'disable_hist:net:netif_receive_skb if comm==wget' > \ ++ /sys/kernel/debug/tracing/events/sched/sched_process_exit/trigger ++ ++ The above sets up an initially paused hist trigger which is unpaused ++ and starts aggregating events when a given program is executed, and ++ which stops aggregating when the process exits and the hist trigger ++ is paused again. ++ ++ The examples below provide a more concrete illustration of the ++ concepts and typical usage patterns discussed above. ++ ++ ++6.2 'hist' trigger examples ++--------------------------- ++ ++ The first set of examples creates aggregations using the kmalloc ++ event. The fields that can be used for the hist trigger are listed ++ in the kmalloc event's format file: ++ ++ # cat /sys/kernel/debug/tracing/events/kmem/kmalloc/format ++ name: kmalloc ++ ID: 374 ++ format: ++ field:unsigned short common_type; offset:0; size:2; signed:0; ++ field:unsigned char common_flags; offset:2; size:1; signed:0; ++ field:unsigned char common_preempt_count; offset:3; size:1; signed:0; ++ field:int common_pid; offset:4; size:4; signed:1; ++ ++ field:unsigned long call_site; offset:8; size:8; signed:0; ++ field:const void * ptr; offset:16; size:8; signed:0; ++ field:size_t bytes_req; offset:24; size:8; signed:0; ++ field:size_t bytes_alloc; offset:32; size:8; signed:0; ++ field:gfp_t gfp_flags; offset:40; size:4; signed:0; ++ ++ We'll start by creating a hist trigger that generates a simple table ++ that lists the total number of bytes requested for each function in ++ the kernel that made one or more calls to kmalloc: ++ ++ # echo 'hist:key=call_site:val=bytes_req' > \ ++ /sys/kernel/debug/tracing/events/kmem/kmalloc/trigger ++ ++ This tells the tracing system to create a 'hist' trigger using the ++ call_site field of the kmalloc event as the key for the table, which ++ just means that each unique call_site address will have an entry ++ created for it in the table. The 'val=bytes_req' parameter tells ++ the hist trigger that for each unique entry (call_site) in the ++ table, it should keep a running total of the number of bytes ++ requested by that call_site. ++ ++ We'll let it run for awhile and then dump the contents of the 'hist' ++ file in the kmalloc event's subdirectory (for readability, a number ++ of entries have been omitted): ++ ++ # cat /sys/kernel/debug/tracing/events/kmem/kmalloc/hist ++ # trigger info: hist:keys=call_site:vals=bytes_req:sort=hitcount:size=2048 [active] ++ ++ { call_site: 18446744072106379007 } hitcount: 1 bytes_req: 176 ++ { call_site: 18446744071579557049 } hitcount: 1 bytes_req: 1024 ++ { call_site: 18446744071580608289 } hitcount: 1 bytes_req: 16384 ++ { call_site: 18446744071581827654 } hitcount: 1 bytes_req: 24 ++ { call_site: 18446744071580700980 } hitcount: 1 bytes_req: 8 ++ { call_site: 18446744071579359876 } hitcount: 1 bytes_req: 152 ++ { call_site: 18446744071580795365 } hitcount: 3 bytes_req: 144 ++ { call_site: 18446744071581303129 } hitcount: 3 bytes_req: 144 ++ { call_site: 18446744071580713234 } hitcount: 4 bytes_req: 2560 ++ { call_site: 18446744071580933750 } hitcount: 4 bytes_req: 736 ++ . ++ . ++ . ++ { call_site: 18446744072106047046 } hitcount: 69 bytes_req: 5576 ++ { call_site: 18446744071582116407 } hitcount: 73 bytes_req: 2336 ++ { call_site: 18446744072106054684 } hitcount: 136 bytes_req: 140504 ++ { call_site: 18446744072106224230 } hitcount: 136 bytes_req: 19584 ++ { call_site: 18446744072106078074 } hitcount: 153 bytes_req: 2448 ++ { call_site: 18446744072106062406 } hitcount: 153 bytes_req: 36720 ++ { call_site: 18446744071582507929 } hitcount: 153 bytes_req: 37088 ++ { call_site: 18446744072102520590 } hitcount: 273 bytes_req: 10920 ++ { call_site: 18446744071582143559 } hitcount: 358 bytes_req: 716 ++ { call_site: 18446744072106465852 } hitcount: 417 bytes_req: 56712 ++ { call_site: 18446744072102523378 } hitcount: 485 bytes_req: 27160 ++ { call_site: 18446744072099568646 } hitcount: 1676 bytes_req: 33520 ++ ++ Totals: ++ Hits: 4610 ++ Entries: 45 ++ Dropped: 0 ++ ++ The output displays a line for each entry, beginning with the key ++ specified in the trigger, followed by the value(s) also specified in ++ the trigger. At the beginning of the output is a line that displays ++ the trigger info, which can also be displayed by reading the ++ 'trigger' file: ++ ++ # cat /sys/kernel/debug/tracing/events/kmem/kmalloc/trigger ++ hist:keys=call_site:vals=bytes_req:sort=hitcount:size=2048 [active] ++ ++ At the end of the output are a few lines that display the overall ++ totals for the run. The 'Hits' field shows the total number of ++ times the event trigger was hit, the 'Entries' field shows the total ++ number of used entries in the hash table, and the 'Dropped' field ++ shows the number of hits that were dropped because the number of ++ used entries for the run exceeded the maximum number of entries ++ allowed for the table (normally 0, but if not a hint that you may ++ want to increase the size of the table using the 'size' parameter). ++ ++ Notice in the above output that there's an extra field, 'hitcount', ++ which wasn't specified in the trigger. Also notice that in the ++ trigger info output, there's a parameter, 'sort=hitcount', which ++ wasn't specified in the trigger either. The reason for that is that ++ every trigger implicitly keeps a count of the total number of hits ++ attributed to a given entry, called the 'hitcount'. That hitcount ++ information is explicitly displayed in the output, and in the ++ absence of a user-specified sort parameter, is used as the default ++ sort field. ++ ++ The value 'hitcount' can be used in place of an explicit value in ++ the 'values' parameter if you don't really need to have any ++ particular field summed and are mainly interested in hit ++ frequencies. ++ ++ To turn the hist trigger off, simply call up the trigger in the ++ command history and re-execute it with a '!' prepended: ++ ++ # echo '!hist:key=call_site:val=bytes_req' > \ ++ /sys/kernel/debug/tracing/events/kmem/kmalloc/trigger ++ ++ Finally, notice that the call_site as displayed in the output above ++ isn't really very useful. It's an address, but normally addresses ++ are displayed in hex. To have a numeric field displayed as a hex ++ value, simply append '.hex' to the field name in the trigger: ++ ++ # echo 'hist:key=call_site.hex:val=bytes_req' > \ ++ /sys/kernel/debug/tracing/events/kmem/kmalloc/trigger ++ ++ # cat /sys/kernel/debug/tracing/events/kmem/kmalloc/hist ++ # trigger info: hist:keys=call_site.hex:vals=bytes_req:sort=hitcount:size=2048 [active] ++ ++ { call_site: ffffffffa026b291 } hitcount: 1 bytes_req: 433 ++ { call_site: ffffffffa07186ff } hitcount: 1 bytes_req: 176 ++ { call_site: ffffffff811ae721 } hitcount: 1 bytes_req: 16384 ++ { call_site: ffffffff811c5134 } hitcount: 1 bytes_req: 8 ++ { call_site: ffffffffa04a9ebb } hitcount: 1 bytes_req: 511 ++ { call_site: ffffffff8122e0a6 } hitcount: 1 bytes_req: 12 ++ { call_site: ffffffff8107da84 } hitcount: 1 bytes_req: 152 ++ { call_site: ffffffff812d8246 } hitcount: 1 bytes_req: 24 ++ { call_site: ffffffff811dc1e5 } hitcount: 3 bytes_req: 144 ++ { call_site: ffffffffa02515e8 } hitcount: 3 bytes_req: 648 ++ { call_site: ffffffff81258159 } hitcount: 3 bytes_req: 144 ++ { call_site: ffffffff811c80f4 } hitcount: 4 bytes_req: 544 ++ . ++ . ++ . ++ { call_site: ffffffffa06c7646 } hitcount: 106 bytes_req: 8024 ++ { call_site: ffffffffa06cb246 } hitcount: 132 bytes_req: 31680 ++ { call_site: ffffffffa06cef7a } hitcount: 132 bytes_req: 2112 ++ { call_site: ffffffff8137e399 } hitcount: 132 bytes_req: 23232 ++ { call_site: ffffffffa06c941c } hitcount: 185 bytes_req: 171360 ++ { call_site: ffffffffa06f2a66 } hitcount: 185 bytes_req: 26640 ++ { call_site: ffffffffa036a70e } hitcount: 265 bytes_req: 10600 ++ { call_site: ffffffff81325447 } hitcount: 292 bytes_req: 584 ++ { call_site: ffffffffa072da3c } hitcount: 446 bytes_req: 60656 ++ { call_site: ffffffffa036b1f2 } hitcount: 526 bytes_req: 29456 ++ { call_site: ffffffffa0099c06 } hitcount: 1780 bytes_req: 35600 ++ ++ Totals: ++ Hits: 4775 ++ Entries: 46 ++ Dropped: 0 ++ ++ Even that's only marginally more useful - while hex values do look ++ more like addresses, what users are typically more interested in ++ when looking at text addresses are the corresponding symbols ++ instead. To have an address displayed as symbolic value instead, ++ simply append '.sym' or '.sym-offset' to the field name in the ++ trigger: ++ ++ # echo 'hist:key=call_site.sym:val=bytes_req' > \ ++ /sys/kernel/debug/tracing/events/kmem/kmalloc/trigger ++ ++ # cat /sys/kernel/debug/tracing/events/kmem/kmalloc/hist ++ # trigger info: hist:keys=call_site.sym:vals=bytes_req:sort=hitcount:size=2048 [active] ++ ++ { call_site: [ffffffff810adcb9] syslog_print_all } hitcount: 1 bytes_req: 1024 ++ { call_site: [ffffffff8154bc62] usb_control_msg } hitcount: 1 bytes_req: 8 ++ { call_site: [ffffffffa00bf6fe] hidraw_send_report [hid] } hitcount: 1 bytes_req: 7 ++ { call_site: [ffffffff8154acbe] usb_alloc_urb } hitcount: 1 bytes_req: 192 ++ { call_site: [ffffffffa00bf1ca] hidraw_report_event [hid] } hitcount: 1 bytes_req: 7 ++ { call_site: [ffffffff811e3a25] __seq_open_private } hitcount: 1 bytes_req: 40 ++ { call_site: [ffffffff8109524a] alloc_fair_sched_group } hitcount: 2 bytes_req: 128 ++ { call_site: [ffffffff811febd5] fsnotify_alloc_group } hitcount: 2 bytes_req: 528 ++ { call_site: [ffffffff81440f58] __tty_buffer_request_room } hitcount: 2 bytes_req: 2624 ++ { call_site: [ffffffff81200ba6] inotify_new_group } hitcount: 2 bytes_req: 96 ++ { call_site: [ffffffffa05e19af] ieee80211_start_tx_ba_session [mac80211] } hitcount: 2 bytes_req: 464 ++ { call_site: [ffffffff81672406] tcp_get_metrics } hitcount: 2 bytes_req: 304 ++ { call_site: [ffffffff81097ec2] alloc_rt_sched_group } hitcount: 2 bytes_req: 128 ++ { call_site: [ffffffff81089b05] sched_create_group } hitcount: 2 bytes_req: 1424 ++ . ++ . ++ . ++ { call_site: [ffffffffa04a580c] intel_crtc_page_flip [i915] } hitcount: 1185 bytes_req: 123240 ++ { call_site: [ffffffffa0287592] drm_mode_page_flip_ioctl [drm] } hitcount: 1185 bytes_req: 104280 ++ { call_site: [ffffffffa04c4a3c] intel_plane_duplicate_state [i915] } hitcount: 1402 bytes_req: 190672 ++ { call_site: [ffffffff812891ca] ext4_find_extent } hitcount: 1518 bytes_req: 146208 ++ { call_site: [ffffffffa029070e] drm_vma_node_allow [drm] } hitcount: 1746 bytes_req: 69840 ++ { call_site: [ffffffffa045e7c4] i915_gem_do_execbuffer.isra.23 [i915] } hitcount: 2021 bytes_req: 792312 ++ { call_site: [ffffffffa02911f2] drm_modeset_lock_crtc [drm] } hitcount: 2592 bytes_req: 145152 ++ { call_site: [ffffffffa0489a66] intel_ring_begin [i915] } hitcount: 2629 bytes_req: 378576 ++ { call_site: [ffffffffa046041c] i915_gem_execbuffer2 [i915] } hitcount: 2629 bytes_req: 3783248 ++ { call_site: [ffffffff81325607] apparmor_file_alloc_security } hitcount: 5192 bytes_req: 10384 ++ { call_site: [ffffffffa00b7c06] hid_report_raw_event [hid] } hitcount: 5529 bytes_req: 110584 ++ { call_site: [ffffffff8131ebf7] aa_alloc_task_context } hitcount: 21943 bytes_req: 702176 ++ { call_site: [ffffffff8125847d] ext4_htree_store_dirent } hitcount: 55759 bytes_req: 5074265 ++ ++ Totals: ++ Hits: 109928 ++ Entries: 71 ++ Dropped: 0 ++ ++ Because the default sort key above is 'hitcount', the above shows a ++ the list of call_sites by increasing hitcount, so that at the bottom ++ we see the functions that made the most kmalloc calls during the ++ run. If instead we we wanted to see the top kmalloc callers in ++ terms of the number of bytes requested rather than the number of ++ calls, and we wanted the top caller to appear at the top, we can use ++ the 'sort' parameter, along with the 'descending' modifier: ++ ++ # echo 'hist:key=call_site.sym:val=bytes_req:sort=bytes_req.descending' > \ ++ /sys/kernel/debug/tracing/events/kmem/kmalloc/trigger ++ ++ # cat /sys/kernel/debug/tracing/events/kmem/kmalloc/hist ++ # trigger info: hist:keys=call_site.sym:vals=bytes_req:sort=bytes_req.descending:size=2048 [active] ++ ++ { call_site: [ffffffffa046041c] i915_gem_execbuffer2 [i915] } hitcount: 2186 bytes_req: 3397464 ++ { call_site: [ffffffffa045e7c4] i915_gem_do_execbuffer.isra.23 [i915] } hitcount: 1790 bytes_req: 712176 ++ { call_site: [ffffffff8125847d] ext4_htree_store_dirent } hitcount: 8132 bytes_req: 513135 ++ { call_site: [ffffffff811e2a1b] seq_buf_alloc } hitcount: 106 bytes_req: 440128 ++ { call_site: [ffffffffa0489a66] intel_ring_begin [i915] } hitcount: 2186 bytes_req: 314784 ++ { call_site: [ffffffff812891ca] ext4_find_extent } hitcount: 2174 bytes_req: 208992 ++ { call_site: [ffffffff811ae8e1] __kmalloc } hitcount: 8 bytes_req: 131072 ++ { call_site: [ffffffffa04c4a3c] intel_plane_duplicate_state [i915] } hitcount: 859 bytes_req: 116824 ++ { call_site: [ffffffffa02911f2] drm_modeset_lock_crtc [drm] } hitcount: 1834 bytes_req: 102704 ++ { call_site: [ffffffffa04a580c] intel_crtc_page_flip [i915] } hitcount: 972 bytes_req: 101088 ++ { call_site: [ffffffffa0287592] drm_mode_page_flip_ioctl [drm] } hitcount: 972 bytes_req: 85536 ++ { call_site: [ffffffffa00b7c06] hid_report_raw_event [hid] } hitcount: 3333 bytes_req: 66664 ++ { call_site: [ffffffff8137e559] sg_kmalloc } hitcount: 209 bytes_req: 61632 ++ . ++ . ++ . ++ { call_site: [ffffffff81095225] alloc_fair_sched_group } hitcount: 2 bytes_req: 128 ++ { call_site: [ffffffff81097ec2] alloc_rt_sched_group } hitcount: 2 bytes_req: 128 ++ { call_site: [ffffffff812d8406] copy_semundo } hitcount: 2 bytes_req: 48 ++ { call_site: [ffffffff81200ba6] inotify_new_group } hitcount: 1 bytes_req: 48 ++ { call_site: [ffffffffa027121a] drm_getmagic [drm] } hitcount: 1 bytes_req: 48 ++ { call_site: [ffffffff811e3a25] __seq_open_private } hitcount: 1 bytes_req: 40 ++ { call_site: [ffffffff811c52f4] bprm_change_interp } hitcount: 2 bytes_req: 16 ++ { call_site: [ffffffff8154bc62] usb_control_msg } hitcount: 1 bytes_req: 8 ++ { call_site: [ffffffffa00bf1ca] hidraw_report_event [hid] } hitcount: 1 bytes_req: 7 ++ { call_site: [ffffffffa00bf6fe] hidraw_send_report [hid] } hitcount: 1 bytes_req: 7 ++ ++ Totals: ++ Hits: 32133 ++ Entries: 81 ++ Dropped: 0 ++ ++ To display the offset and size information in addition to the symbol ++ name, just use 'sym-offset' instead: ++ ++ # echo 'hist:key=call_site.sym-offset:val=bytes_req:sort=bytes_req.descending' > \ ++ /sys/kernel/debug/tracing/events/kmem/kmalloc/trigger ++ ++ # cat /sys/kernel/debug/tracing/events/kmem/kmalloc/hist ++ # trigger info: hist:keys=call_site.sym-offset:vals=bytes_req:sort=bytes_req.descending:size=2048 [active] ++ ++ { call_site: [ffffffffa046041c] i915_gem_execbuffer2+0x6c/0x2c0 [i915] } hitcount: 4569 bytes_req: 3163720 ++ { call_site: [ffffffffa0489a66] intel_ring_begin+0xc6/0x1f0 [i915] } hitcount: 4569 bytes_req: 657936 ++ { call_site: [ffffffffa045e7c4] i915_gem_do_execbuffer.isra.23+0x694/0x1020 [i915] } hitcount: 1519 bytes_req: 472936 ++ { call_site: [ffffffffa045e646] i915_gem_do_execbuffer.isra.23+0x516/0x1020 [i915] } hitcount: 3050 bytes_req: 211832 ++ { call_site: [ffffffff811e2a1b] seq_buf_alloc+0x1b/0x50 } hitcount: 34 bytes_req: 148384 ++ { call_site: [ffffffffa04a580c] intel_crtc_page_flip+0xbc/0x870 [i915] } hitcount: 1385 bytes_req: 144040 ++ { call_site: [ffffffff811ae8e1] __kmalloc+0x191/0x1b0 } hitcount: 8 bytes_req: 131072 ++ { call_site: [ffffffffa0287592] drm_mode_page_flip_ioctl+0x282/0x360 [drm] } hitcount: 1385 bytes_req: 121880 ++ { call_site: [ffffffffa02911f2] drm_modeset_lock_crtc+0x32/0x100 [drm] } hitcount: 1848 bytes_req: 103488 ++ { call_site: [ffffffffa04c4a3c] intel_plane_duplicate_state+0x2c/0xa0 [i915] } hitcount: 461 bytes_req: 62696 ++ { call_site: [ffffffffa029070e] drm_vma_node_allow+0x2e/0xd0 [drm] } hitcount: 1541 bytes_req: 61640 ++ { call_site: [ffffffff815f8d7b] sk_prot_alloc+0xcb/0x1b0 } hitcount: 57 bytes_req: 57456 ++ . ++ . ++ . ++ { call_site: [ffffffff8109524a] alloc_fair_sched_group+0x5a/0x1a0 } hitcount: 2 bytes_req: 128 ++ { call_site: [ffffffffa027b921] drm_vm_open_locked+0x31/0xa0 [drm] } hitcount: 3 bytes_req: 96 ++ { call_site: [ffffffff8122e266] proc_self_follow_link+0x76/0xb0 } hitcount: 8 bytes_req: 96 ++ { call_site: [ffffffff81213e80] load_elf_binary+0x240/0x1650 } hitcount: 3 bytes_req: 84 ++ { call_site: [ffffffff8154bc62] usb_control_msg+0x42/0x110 } hitcount: 1 bytes_req: 8 ++ { call_site: [ffffffffa00bf6fe] hidraw_send_report+0x7e/0x1a0 [hid] } hitcount: 1 bytes_req: 7 ++ { call_site: [ffffffffa00bf1ca] hidraw_report_event+0x8a/0x120 [hid] } hitcount: 1 bytes_req: 7 ++ ++ Totals: ++ Hits: 26098 ++ Entries: 64 ++ Dropped: 0 ++ ++ We can also add multiple fields to the 'values' parameter. For ++ example, we might want to see the total number of bytes allocated ++ alongside bytes requested, and display the result sorted by bytes ++ allocated in a descending order: ++ ++ # echo 'hist:keys=call_site.sym:values=bytes_req,bytes_alloc:sort=bytes_alloc.descending' > \ ++ /sys/kernel/debug/tracing/events/kmem/kmalloc/trigger ++ ++ # cat /sys/kernel/debug/tracing/events/kmem/kmalloc/hist ++ # trigger info: hist:keys=call_site.sym:vals=bytes_req,bytes_alloc:sort=bytes_alloc.descending:size=2048 [active] ++ ++ { call_site: [ffffffffa046041c] i915_gem_execbuffer2 [i915] } hitcount: 7403 bytes_req: 4084360 bytes_alloc: 5958016 ++ { call_site: [ffffffff811e2a1b] seq_buf_alloc } hitcount: 541 bytes_req: 2213968 bytes_alloc: 2228224 ++ { call_site: [ffffffffa0489a66] intel_ring_begin [i915] } hitcount: 7404 bytes_req: 1066176 bytes_alloc: 1421568 ++ { call_site: [ffffffffa045e7c4] i915_gem_do_execbuffer.isra.23 [i915] } hitcount: 1565 bytes_req: 557368 bytes_alloc: 1037760 ++ { call_site: [ffffffff8125847d] ext4_htree_store_dirent } hitcount: 9557 bytes_req: 595778 bytes_alloc: 695744 ++ { call_site: [ffffffffa045e646] i915_gem_do_execbuffer.isra.23 [i915] } hitcount: 5839 bytes_req: 430680 bytes_alloc: 470400 ++ { call_site: [ffffffffa04c4a3c] intel_plane_duplicate_state [i915] } hitcount: 2388 bytes_req: 324768 bytes_alloc: 458496 ++ { call_site: [ffffffffa02911f2] drm_modeset_lock_crtc [drm] } hitcount: 3911 bytes_req: 219016 bytes_alloc: 250304 ++ { call_site: [ffffffff815f8d7b] sk_prot_alloc } hitcount: 235 bytes_req: 236880 bytes_alloc: 240640 ++ { call_site: [ffffffff8137e559] sg_kmalloc } hitcount: 557 bytes_req: 169024 bytes_alloc: 221760 ++ { call_site: [ffffffffa00b7c06] hid_report_raw_event [hid] } hitcount: 9378 bytes_req: 187548 bytes_alloc: 206312 ++ { call_site: [ffffffffa04a580c] intel_crtc_page_flip [i915] } hitcount: 1519 bytes_req: 157976 bytes_alloc: 194432 ++ . ++ . ++ . ++ { call_site: [ffffffff8109bd3b] sched_autogroup_create_attach } hitcount: 2 bytes_req: 144 bytes_alloc: 192 ++ { call_site: [ffffffff81097ee8] alloc_rt_sched_group } hitcount: 2 bytes_req: 128 bytes_alloc: 128 ++ { call_site: [ffffffff8109524a] alloc_fair_sched_group } hitcount: 2 bytes_req: 128 bytes_alloc: 128 ++ { call_site: [ffffffff81095225] alloc_fair_sched_group } hitcount: 2 bytes_req: 128 bytes_alloc: 128 ++ { call_site: [ffffffff81097ec2] alloc_rt_sched_group } hitcount: 2 bytes_req: 128 bytes_alloc: 128 ++ { call_site: [ffffffff81213e80] load_elf_binary } hitcount: 3 bytes_req: 84 bytes_alloc: 96 ++ { call_site: [ffffffff81079a2e] kthread_create_on_node } hitcount: 1 bytes_req: 56 bytes_alloc: 64 ++ { call_site: [ffffffffa00bf6fe] hidraw_send_report [hid] } hitcount: 1 bytes_req: 7 bytes_alloc: 8 ++ { call_site: [ffffffff8154bc62] usb_control_msg } hitcount: 1 bytes_req: 8 bytes_alloc: 8 ++ { call_site: [ffffffffa00bf1ca] hidraw_report_event [hid] } hitcount: 1 bytes_req: 7 bytes_alloc: 8 ++ ++ Totals: ++ Hits: 66598 ++ Entries: 65 ++ Dropped: 0 ++ ++ Finally, to finish off our kmalloc example, instead of simply having ++ the hist trigger display symbolic call_sites, we can have the hist ++ trigger additionally display the complete set of kernel stack traces ++ that led to each call_site. To do that, we simply use the special ++ value 'stacktrace' for the key parameter: ++ ++ # echo 'hist:keys=stacktrace:values=bytes_req,bytes_alloc:sort=bytes_alloc' > \ ++ /sys/kernel/debug/tracing/events/kmem/kmalloc/trigger ++ ++ The above trigger will use the kernel stack trace in effect when an ++ event is triggered as the key for the hash table. This allows the ++ enumeration of every kernel callpath that led up to a particular ++ event, along with a running total of any of the event fields for ++ that event. Here we tally bytes requested and bytes allocated for ++ every callpath in the system that led up to a kmalloc (in this case ++ every callpath to a kmalloc for a kernel compile): ++ ++ # cat /sys/kernel/debug/tracing/events/kmem/kmalloc/hist ++ # trigger info: hist:keys=stacktrace:vals=bytes_req,bytes_alloc:sort=bytes_alloc:size=2048 [active] ++ ++ { stacktrace: ++ __kmalloc_track_caller+0x10b/0x1a0 ++ kmemdup+0x20/0x50 ++ hidraw_report_event+0x8a/0x120 [hid] ++ hid_report_raw_event+0x3ea/0x440 [hid] ++ hid_input_report+0x112/0x190 [hid] ++ hid_irq_in+0xc2/0x260 [usbhid] ++ __usb_hcd_giveback_urb+0x72/0x120 ++ usb_giveback_urb_bh+0x9e/0xe0 ++ tasklet_hi_action+0xf8/0x100 ++ __do_softirq+0x114/0x2c0 ++ irq_exit+0xa5/0xb0 ++ do_IRQ+0x5a/0xf0 ++ ret_from_intr+0x0/0x30 ++ cpuidle_enter+0x17/0x20 ++ cpu_startup_entry+0x315/0x3e0 ++ rest_init+0x7c/0x80 ++ } hitcount: 3 bytes_req: 21 bytes_alloc: 24 ++ { stacktrace: ++ __kmalloc_track_caller+0x10b/0x1a0 ++ kmemdup+0x20/0x50 ++ hidraw_report_event+0x8a/0x120 [hid] ++ hid_report_raw_event+0x3ea/0x440 [hid] ++ hid_input_report+0x112/0x190 [hid] ++ hid_irq_in+0xc2/0x260 [usbhid] ++ __usb_hcd_giveback_urb+0x72/0x120 ++ usb_giveback_urb_bh+0x9e/0xe0 ++ tasklet_hi_action+0xf8/0x100 ++ __do_softirq+0x114/0x2c0 ++ irq_exit+0xa5/0xb0 ++ do_IRQ+0x5a/0xf0 ++ ret_from_intr+0x0/0x30 ++ } hitcount: 3 bytes_req: 21 bytes_alloc: 24 ++ { stacktrace: ++ kmem_cache_alloc_trace+0xeb/0x150 ++ aa_alloc_task_context+0x27/0x40 ++ apparmor_cred_prepare+0x1f/0x50 ++ security_prepare_creds+0x16/0x20 ++ prepare_creds+0xdf/0x1a0 ++ SyS_capset+0xb5/0x200 ++ system_call_fastpath+0x12/0x6a ++ } hitcount: 1 bytes_req: 32 bytes_alloc: 32 ++ . ++ . ++ . ++ { stacktrace: ++ __kmalloc+0x11b/0x1b0 ++ i915_gem_execbuffer2+0x6c/0x2c0 [i915] ++ drm_ioctl+0x349/0x670 [drm] ++ do_vfs_ioctl+0x2f0/0x4f0 ++ SyS_ioctl+0x81/0xa0 ++ system_call_fastpath+0x12/0x6a ++ } hitcount: 17726 bytes_req: 13944120 bytes_alloc: 19593808 ++ { stacktrace: ++ __kmalloc+0x11b/0x1b0 ++ load_elf_phdrs+0x76/0xa0 ++ load_elf_binary+0x102/0x1650 ++ search_binary_handler+0x97/0x1d0 ++ do_execveat_common.isra.34+0x551/0x6e0 ++ SyS_execve+0x3a/0x50 ++ return_from_execve+0x0/0x23 ++ } hitcount: 33348 bytes_req: 17152128 bytes_alloc: 20226048 ++ { stacktrace: ++ kmem_cache_alloc_trace+0xeb/0x150 ++ apparmor_file_alloc_security+0x27/0x40 ++ security_file_alloc+0x16/0x20 ++ get_empty_filp+0x93/0x1c0 ++ path_openat+0x31/0x5f0 ++ do_filp_open+0x3a/0x90 ++ do_sys_open+0x128/0x220 ++ SyS_open+0x1e/0x20 ++ system_call_fastpath+0x12/0x6a ++ } hitcount: 4766422 bytes_req: 9532844 bytes_alloc: 38131376 ++ { stacktrace: ++ __kmalloc+0x11b/0x1b0 ++ seq_buf_alloc+0x1b/0x50 ++ seq_read+0x2cc/0x370 ++ proc_reg_read+0x3d/0x80 ++ __vfs_read+0x28/0xe0 ++ vfs_read+0x86/0x140 ++ SyS_read+0x46/0xb0 ++ system_call_fastpath+0x12/0x6a ++ } hitcount: 19133 bytes_req: 78368768 bytes_alloc: 78368768 ++ ++ Totals: ++ Hits: 6085872 ++ Entries: 253 ++ Dropped: 0 ++ ++ If you key a hist trigger on common_pid, in order for example to ++ gather and display sorted totals for each process, you can use the ++ special .execname modifier to display the executable names for the ++ processes in the table rather than raw pids. The example below ++ keeps a per-process sum of total bytes read: ++ ++ # echo 'hist:key=common_pid.execname:val=count:sort=count.descending' > \ ++ /sys/kernel/debug/tracing/events/syscalls/sys_enter_read/trigger ++ ++ # cat /sys/kernel/debug/tracing/events/syscalls/sys_enter_read/hist ++ # trigger info: hist:keys=common_pid.execname:vals=count:sort=count.descending:size=2048 [active] ++ ++ { common_pid: gnome-terminal [ 3196] } hitcount: 280 count: 1093512 ++ { common_pid: Xorg [ 1309] } hitcount: 525 count: 256640 ++ { common_pid: compiz [ 2889] } hitcount: 59 count: 254400 ++ { common_pid: bash [ 8710] } hitcount: 3 count: 66369 ++ { common_pid: dbus-daemon-lau [ 8703] } hitcount: 49 count: 47739 ++ { common_pid: irqbalance [ 1252] } hitcount: 27 count: 27648 ++ { common_pid: 01ifupdown [ 8705] } hitcount: 3 count: 17216 ++ { common_pid: dbus-daemon [ 772] } hitcount: 10 count: 12396 ++ { common_pid: Socket Thread [ 8342] } hitcount: 11 count: 11264 ++ { common_pid: nm-dhcp-client. [ 8701] } hitcount: 6 count: 7424 ++ { common_pid: gmain [ 1315] } hitcount: 18 count: 6336 ++ . ++ . ++ . ++ { common_pid: postgres [ 1892] } hitcount: 2 count: 32 ++ { common_pid: postgres [ 1891] } hitcount: 2 count: 32 ++ { common_pid: gmain [ 8704] } hitcount: 2 count: 32 ++ { common_pid: upstart-dbus-br [ 2740] } hitcount: 21 count: 21 ++ { common_pid: nm-dispatcher.a [ 8696] } hitcount: 1 count: 16 ++ { common_pid: indicator-datet [ 2904] } hitcount: 1 count: 16 ++ { common_pid: gdbus [ 2998] } hitcount: 1 count: 16 ++ { common_pid: rtkit-daemon [ 2052] } hitcount: 1 count: 8 ++ { common_pid: init [ 1] } hitcount: 2 count: 2 ++ ++ Totals: ++ Hits: 2116 ++ Entries: 51 ++ Dropped: 0 ++ ++ Similarly, if you key a hist trigger on syscall id, for example to ++ gather and display a list of systemwide syscall hits, you can use ++ the special .syscall modifier to display the syscall names rather ++ than raw ids. The example below keeps a running total of syscall ++ counts for the system during the run: ++ ++ # echo 'hist:key=id.syscall:val=hitcount' > \ ++ /sys/kernel/debug/tracing/events/raw_syscalls/sys_enter/trigger ++ ++ # cat /sys/kernel/debug/tracing/events/raw_syscalls/sys_enter/hist ++ # trigger info: hist:keys=id.syscall:vals=hitcount:sort=hitcount:size=2048 [active] ++ ++ { id: sys_fsync [ 74] } hitcount: 1 ++ { id: sys_newuname [ 63] } hitcount: 1 ++ { id: sys_prctl [157] } hitcount: 1 ++ { id: sys_statfs [137] } hitcount: 1 ++ { id: sys_symlink [ 88] } hitcount: 1 ++ { id: sys_sendmmsg [307] } hitcount: 1 ++ { id: sys_semctl [ 66] } hitcount: 1 ++ { id: sys_readlink [ 89] } hitcount: 3 ++ { id: sys_bind [ 49] } hitcount: 3 ++ { id: sys_getsockname [ 51] } hitcount: 3 ++ { id: sys_unlink [ 87] } hitcount: 3 ++ { id: sys_rename [ 82] } hitcount: 4 ++ { id: unknown_syscall [ 58] } hitcount: 4 ++ { id: sys_connect [ 42] } hitcount: 4 ++ { id: sys_getpid [ 39] } hitcount: 4 ++ . ++ . ++ . ++ { id: sys_rt_sigprocmask [ 14] } hitcount: 952 ++ { id: sys_futex [202] } hitcount: 1534 ++ { id: sys_write [ 1] } hitcount: 2689 ++ { id: sys_setitimer [ 38] } hitcount: 2797 ++ { id: sys_read [ 0] } hitcount: 3202 ++ { id: sys_select [ 23] } hitcount: 3773 ++ { id: sys_writev [ 20] } hitcount: 4531 ++ { id: sys_poll [ 7] } hitcount: 8314 ++ { id: sys_recvmsg [ 47] } hitcount: 13738 ++ { id: sys_ioctl [ 16] } hitcount: 21843 ++ ++ Totals: ++ Hits: 67612 ++ Entries: 72 ++ Dropped: 0 ++ ++ The syscall counts above provide a rough overall picture of system ++ call activity on the system; we can see for example that the most ++ popular system call on this system was the 'sys_ioctl' system call. ++ ++ We can use 'compound' keys to refine that number and provide some ++ further insight as to which processes exactly contribute to the ++ overall ioctl count. ++ ++ The command below keeps a hitcount for every unique combination of ++ system call id and pid - the end result is essentially a table ++ that keeps a per-pid sum of system call hits. The results are ++ sorted using the system call id as the primary key, and the ++ hitcount sum as the secondary key: ++ ++ # echo 'hist:key=id.syscall,common_pid.execname:val=hitcount:sort=id,hitcount' > \ ++ /sys/kernel/debug/tracing/events/raw_syscalls/sys_enter/trigger ++ ++ # cat /sys/kernel/debug/tracing/events/raw_syscalls/sys_enter/hist ++ # trigger info: hist:keys=id.syscall,common_pid.execname:vals=hitcount:sort=id.syscall,hitcount:size=2048 [active] ++ ++ { id: sys_read [ 0], common_pid: rtkit-daemon [ 1877] } hitcount: 1 ++ { id: sys_read [ 0], common_pid: gdbus [ 2976] } hitcount: 1 ++ { id: sys_read [ 0], common_pid: console-kit-dae [ 3400] } hitcount: 1 ++ { id: sys_read [ 0], common_pid: postgres [ 1865] } hitcount: 1 ++ { id: sys_read [ 0], common_pid: deja-dup-monito [ 3543] } hitcount: 2 ++ { id: sys_read [ 0], common_pid: NetworkManager [ 890] } hitcount: 2 ++ { id: sys_read [ 0], common_pid: evolution-calen [ 3048] } hitcount: 2 ++ { id: sys_read [ 0], common_pid: postgres [ 1864] } hitcount: 2 ++ { id: sys_read [ 0], common_pid: nm-applet [ 3022] } hitcount: 2 ++ { id: sys_read [ 0], common_pid: whoopsie [ 1212] } hitcount: 2 ++ . ++ . ++ . ++ { id: sys_ioctl [ 16], common_pid: bash [ 8479] } hitcount: 1 ++ { id: sys_ioctl [ 16], common_pid: bash [ 3472] } hitcount: 12 ++ { id: sys_ioctl [ 16], common_pid: gnome-terminal [ 3199] } hitcount: 16 ++ { id: sys_ioctl [ 16], common_pid: Xorg [ 1267] } hitcount: 1808 ++ { id: sys_ioctl [ 16], common_pid: compiz [ 2994] } hitcount: 5580 ++ . ++ . ++ . ++ { id: sys_waitid [247], common_pid: upstart-dbus-br [ 2690] } hitcount: 3 ++ { id: sys_waitid [247], common_pid: upstart-dbus-br [ 2688] } hitcount: 16 ++ { id: sys_inotify_add_watch [254], common_pid: gmain [ 975] } hitcount: 2 ++ { id: sys_inotify_add_watch [254], common_pid: gmain [ 3204] } hitcount: 4 ++ { id: sys_inotify_add_watch [254], common_pid: gmain [ 2888] } hitcount: 4 ++ { id: sys_inotify_add_watch [254], common_pid: gmain [ 3003] } hitcount: 4 ++ { id: sys_inotify_add_watch [254], common_pid: gmain [ 2873] } hitcount: 4 ++ { id: sys_inotify_add_watch [254], common_pid: gmain [ 3196] } hitcount: 6 ++ { id: sys_openat [257], common_pid: java [ 2623] } hitcount: 2 ++ { id: sys_eventfd2 [290], common_pid: ibus-ui-gtk3 [ 2760] } hitcount: 4 ++ { id: sys_eventfd2 [290], common_pid: compiz [ 2994] } hitcount: 6 ++ ++ Totals: ++ Hits: 31536 ++ Entries: 323 ++ Dropped: 0 ++ ++ The above list does give us a breakdown of the ioctl syscall by ++ pid, but it also gives us quite a bit more than that, which we ++ don't really care about at the moment. Since we know the syscall ++ id for sys_ioctl (16, displayed next to the sys_ioctl name), we ++ can use that to filter out all the other syscalls: ++ ++ # echo 'hist:key=id.syscall,common_pid.execname:val=hitcount:sort=id,hitcount if id == 16' > \ ++ /sys/kernel/debug/tracing/events/raw_syscalls/sys_enter/trigger ++ ++ # cat /sys/kernel/debug/tracing/events/raw_syscalls/sys_enter/hist ++ # trigger info: hist:keys=id.syscall,common_pid.execname:vals=hitcount:sort=id.syscall,hitcount:size=2048 if id == 16 [active] ++ ++ { id: sys_ioctl [ 16], common_pid: gmain [ 2769] } hitcount: 1 ++ { id: sys_ioctl [ 16], common_pid: evolution-addre [ 8571] } hitcount: 1 ++ { id: sys_ioctl [ 16], common_pid: gmain [ 3003] } hitcount: 1 ++ { id: sys_ioctl [ 16], common_pid: gmain [ 2781] } hitcount: 1 ++ { id: sys_ioctl [ 16], common_pid: gmain [ 2829] } hitcount: 1 ++ { id: sys_ioctl [ 16], common_pid: bash [ 8726] } hitcount: 1 ++ { id: sys_ioctl [ 16], common_pid: bash [ 8508] } hitcount: 1 ++ { id: sys_ioctl [ 16], common_pid: gmain [ 2970] } hitcount: 1 ++ { id: sys_ioctl [ 16], common_pid: gmain [ 2768] } hitcount: 1 ++ . ++ . ++ . ++ { id: sys_ioctl [ 16], common_pid: pool [ 8559] } hitcount: 45 ++ { id: sys_ioctl [ 16], common_pid: pool [ 8555] } hitcount: 48 ++ { id: sys_ioctl [ 16], common_pid: pool [ 8551] } hitcount: 48 ++ { id: sys_ioctl [ 16], common_pid: avahi-daemon [ 896] } hitcount: 66 ++ { id: sys_ioctl [ 16], common_pid: Xorg [ 1267] } hitcount: 26674 ++ { id: sys_ioctl [ 16], common_pid: compiz [ 2994] } hitcount: 73443 ++ ++ Totals: ++ Hits: 101162 ++ Entries: 103 ++ Dropped: 0 ++ ++ The above output shows that 'compiz' and 'Xorg' are far and away ++ the heaviest ioctl callers (which might lead to questions about ++ whether they really need to be making all those calls and to ++ possible avenues for further investigation.) ++ ++ The compound key examples used a key and a sum value (hitcount) to ++ sort the output, but we can just as easily use two keys instead. ++ Here's an example where we use a compound key composed of the the ++ common_pid and size event fields. Sorting with pid as the primary ++ key and 'size' as the secondary key allows us to display an ++ ordered summary of the recvfrom sizes, with counts, received by ++ each process: ++ ++ # echo 'hist:key=common_pid.execname,size:val=hitcount:sort=common_pid,size' > \ ++ /sys/kernel/debug/tracing/events/syscalls/sys_enter_recvfrom/trigger ++ ++ # cat /sys/kernel/debug/tracing/events/syscalls/sys_enter_recvfrom/hist ++ # trigger info: hist:keys=common_pid.execname,size:vals=hitcount:sort=common_pid.execname,size:size=2048 [active] ++ ++ { common_pid: smbd [ 784], size: 4 } hitcount: 1 ++ { common_pid: dnsmasq [ 1412], size: 4096 } hitcount: 672 ++ { common_pid: postgres [ 1796], size: 1000 } hitcount: 6 ++ { common_pid: postgres [ 1867], size: 1000 } hitcount: 10 ++ { common_pid: bamfdaemon [ 2787], size: 28 } hitcount: 2 ++ { common_pid: bamfdaemon [ 2787], size: 14360 } hitcount: 1 ++ { common_pid: compiz [ 2994], size: 8 } hitcount: 1 ++ { common_pid: compiz [ 2994], size: 20 } hitcount: 11 ++ { common_pid: gnome-terminal [ 3199], size: 4 } hitcount: 2 ++ { common_pid: firefox [ 8817], size: 4 } hitcount: 1 ++ { common_pid: firefox [ 8817], size: 8 } hitcount: 5 ++ { common_pid: firefox [ 8817], size: 588 } hitcount: 2 ++ { common_pid: firefox [ 8817], size: 628 } hitcount: 1 ++ { common_pid: firefox [ 8817], size: 6944 } hitcount: 1 ++ { common_pid: firefox [ 8817], size: 408880 } hitcount: 2 ++ { common_pid: firefox [ 8822], size: 8 } hitcount: 2 ++ { common_pid: firefox [ 8822], size: 160 } hitcount: 2 ++ { common_pid: firefox [ 8822], size: 320 } hitcount: 2 ++ { common_pid: firefox [ 8822], size: 352 } hitcount: 1 ++ . ++ . ++ . ++ { common_pid: pool [ 8923], size: 1960 } hitcount: 10 ++ { common_pid: pool [ 8923], size: 2048 } hitcount: 10 ++ { common_pid: pool [ 8924], size: 1960 } hitcount: 10 ++ { common_pid: pool [ 8924], size: 2048 } hitcount: 10 ++ { common_pid: pool [ 8928], size: 1964 } hitcount: 4 ++ { common_pid: pool [ 8928], size: 1965 } hitcount: 2 ++ { common_pid: pool [ 8928], size: 2048 } hitcount: 6 ++ { common_pid: pool [ 8929], size: 1982 } hitcount: 1 ++ { common_pid: pool [ 8929], size: 2048 } hitcount: 1 ++ ++ Totals: ++ Hits: 2016 ++ Entries: 224 ++ Dropped: 0 ++ ++ The above example also illustrates the fact that although a compound ++ key is treated as a single entity for hashing purposes, the sub-keys ++ it's composed of can be accessed independently. ++ ++ The next example uses a string field as the hash key and ++ demonstrates how you can manually pause and continue a hist trigger. ++ In this example, we'll aggregate fork counts and don't expect a ++ large number of entries in the hash table, so we'll drop it to a ++ much smaller number, say 256: ++ ++ # echo 'hist:key=child_comm:val=hitcount:size=256' > \ ++ /sys/kernel/debug/tracing/events/sched/sched_process_fork/trigger ++ ++ # cat /sys/kernel/debug/tracing/events/sched/sched_process_fork/hist ++ # trigger info: hist:keys=child_comm:vals=hitcount:sort=hitcount:size=256 [active] ++ ++ { child_comm: dconf worker } hitcount: 1 ++ { child_comm: ibus-daemon } hitcount: 1 ++ { child_comm: whoopsie } hitcount: 1 ++ { child_comm: smbd } hitcount: 1 ++ { child_comm: gdbus } hitcount: 1 ++ { child_comm: kthreadd } hitcount: 1 ++ { child_comm: dconf worker } hitcount: 1 ++ { child_comm: evolution-alarm } hitcount: 2 ++ { child_comm: Socket Thread } hitcount: 2 ++ { child_comm: postgres } hitcount: 2 ++ { child_comm: bash } hitcount: 3 ++ { child_comm: compiz } hitcount: 3 ++ { child_comm: evolution-sourc } hitcount: 4 ++ { child_comm: dhclient } hitcount: 4 ++ { child_comm: pool } hitcount: 5 ++ { child_comm: nm-dispatcher.a } hitcount: 8 ++ { child_comm: firefox } hitcount: 8 ++ { child_comm: dbus-daemon } hitcount: 8 ++ { child_comm: glib-pacrunner } hitcount: 10 ++ { child_comm: evolution } hitcount: 23 ++ ++ Totals: ++ Hits: 89 ++ Entries: 20 ++ Dropped: 0 ++ ++ If we want to pause the hist trigger, we can simply append :pause to ++ the command that started the trigger. Notice that the trigger info ++ displays as [paused]: ++ ++ # echo 'hist:key=child_comm:val=hitcount:size=256:pause' >> \ ++ /sys/kernel/debug/tracing/events/sched/sched_process_fork/trigger ++ ++ # cat /sys/kernel/debug/tracing/events/sched/sched_process_fork/hist ++ # trigger info: hist:keys=child_comm:vals=hitcount:sort=hitcount:size=256 [paused] ++ ++ { child_comm: dconf worker } hitcount: 1 ++ { child_comm: kthreadd } hitcount: 1 ++ { child_comm: dconf worker } hitcount: 1 ++ { child_comm: gdbus } hitcount: 1 ++ { child_comm: ibus-daemon } hitcount: 1 ++ { child_comm: Socket Thread } hitcount: 2 ++ { child_comm: evolution-alarm } hitcount: 2 ++ { child_comm: smbd } hitcount: 2 ++ { child_comm: bash } hitcount: 3 ++ { child_comm: whoopsie } hitcount: 3 ++ { child_comm: compiz } hitcount: 3 ++ { child_comm: evolution-sourc } hitcount: 4 ++ { child_comm: pool } hitcount: 5 ++ { child_comm: postgres } hitcount: 6 ++ { child_comm: firefox } hitcount: 8 ++ { child_comm: dhclient } hitcount: 10 ++ { child_comm: emacs } hitcount: 12 ++ { child_comm: dbus-daemon } hitcount: 20 ++ { child_comm: nm-dispatcher.a } hitcount: 20 ++ { child_comm: evolution } hitcount: 35 ++ { child_comm: glib-pacrunner } hitcount: 59 ++ ++ Totals: ++ Hits: 199 ++ Entries: 21 ++ Dropped: 0 ++ ++ To manually continue having the trigger aggregate events, append ++ :cont instead. Notice that the trigger info displays as [active] ++ again, and the data has changed: ++ ++ # echo 'hist:key=child_comm:val=hitcount:size=256:cont' >> \ ++ /sys/kernel/debug/tracing/events/sched/sched_process_fork/trigger ++ ++ # cat /sys/kernel/debug/tracing/events/sched/sched_process_fork/hist ++ # trigger info: hist:keys=child_comm:vals=hitcount:sort=hitcount:size=256 [active] ++ ++ { child_comm: dconf worker } hitcount: 1 ++ { child_comm: dconf worker } hitcount: 1 ++ { child_comm: kthreadd } hitcount: 1 ++ { child_comm: gdbus } hitcount: 1 ++ { child_comm: ibus-daemon } hitcount: 1 ++ { child_comm: Socket Thread } hitcount: 2 ++ { child_comm: evolution-alarm } hitcount: 2 ++ { child_comm: smbd } hitcount: 2 ++ { child_comm: whoopsie } hitcount: 3 ++ { child_comm: compiz } hitcount: 3 ++ { child_comm: evolution-sourc } hitcount: 4 ++ { child_comm: bash } hitcount: 5 ++ { child_comm: pool } hitcount: 5 ++ { child_comm: postgres } hitcount: 6 ++ { child_comm: firefox } hitcount: 8 ++ { child_comm: dhclient } hitcount: 11 ++ { child_comm: emacs } hitcount: 12 ++ { child_comm: dbus-daemon } hitcount: 22 ++ { child_comm: nm-dispatcher.a } hitcount: 22 ++ { child_comm: evolution } hitcount: 35 ++ { child_comm: glib-pacrunner } hitcount: 59 ++ ++ Totals: ++ Hits: 206 ++ Entries: 21 ++ Dropped: 0 ++ ++ The previous example showed how to start and stop a hist trigger by ++ appending 'pause' and 'continue' to the hist trigger command. A ++ hist trigger can also be started in a paused state by initially ++ starting the trigger with ':pause' appended. This allows you to ++ start the trigger only when you're ready to start collecting data ++ and not before. For example, you could start the trigger in a ++ paused state, then unpause it and do something you want to measure, ++ then pause the trigger again when done. ++ ++ Of course, doing this manually can be difficult and error-prone, but ++ it is possible to automatically start and stop a hist trigger based ++ on some condition, via the enable_hist and disable_hist triggers. ++ ++ For example, suppose we wanted to take a look at the relative ++ weights in terms of skb length for each callpath that leads to a ++ netif_receieve_skb event when downloading a decent-sized file using ++ wget. ++ ++ First we set up an initially paused stacktrace trigger on the ++ netif_receive_skb event: ++ ++ # echo 'hist:key=stacktrace:vals=len:pause' > \ ++ /sys/kernel/debug/tracing/events/net/netif_receive_skb/trigger ++ ++ Next, we set up an 'enable_hist' trigger on the sched_process_exec ++ event, with an 'if filename==/usr/bin/wget' filter. The effect of ++ this new trigger is that it will 'unpause' the hist trigger we just ++ set up on netif_receive_skb if and only if it sees a ++ sched_process_exec event with a filename of '/usr/bin/wget'. When ++ that happens, all netif_receive_skb events are aggregated into a ++ hash table keyed on stacktrace: ++ ++ # echo 'enable_hist:net:netif_receive_skb if filename==/usr/bin/wget' > \ ++ /sys/kernel/debug/tracing/events/sched/sched_process_exec/trigger ++ ++ The aggregation continues until the netif_receive_skb is paused ++ again, which is what the following disable_hist event does by ++ creating a similar setup on the sched_process_exit event, using the ++ filter 'comm==wget': ++ ++ # echo 'disable_hist:net:netif_receive_skb if comm==wget' > \ ++ /sys/kernel/debug/tracing/events/sched/sched_process_exit/trigger ++ ++ Whenever a process exits and the comm field of the disable_hist ++ trigger filter matches 'comm==wget', the netif_receive_skb hist ++ trigger is disabled. ++ ++ The overall effect is that netif_receive_skb events are aggregated ++ into the hash table for only the duration of the wget. Executing a ++ wget command and then listing the 'hist' file will display the ++ output generated by the wget command: ++ ++ $ wget https://www.kernel.org/pub/linux/kernel/v3.x/patch-3.19.xz ++ ++ # cat /sys/kernel/debug/tracing/events/net/netif_receive_skb/hist ++ # trigger info: hist:keys=stacktrace:vals=len:sort=hitcount:size=2048 [paused] ++ ++ { stacktrace: ++ __netif_receive_skb_core+0x46d/0x990 ++ __netif_receive_skb+0x18/0x60 ++ netif_receive_skb_internal+0x23/0x90 ++ napi_gro_receive+0xc8/0x100 ++ ieee80211_deliver_skb+0xd6/0x270 [mac80211] ++ ieee80211_rx_handlers+0xccf/0x22f0 [mac80211] ++ ieee80211_prepare_and_rx_handle+0x4e7/0xc40 [mac80211] ++ ieee80211_rx+0x31d/0x900 [mac80211] ++ iwlagn_rx_reply_rx+0x3db/0x6f0 [iwldvm] ++ iwl_rx_dispatch+0x8e/0xf0 [iwldvm] ++ iwl_pcie_irq_handler+0xe3c/0x12f0 [iwlwifi] ++ irq_thread_fn+0x20/0x50 ++ irq_thread+0x11f/0x150 ++ kthread+0xd2/0xf0 ++ ret_from_fork+0x42/0x70 ++ } hitcount: 85 len: 28884 ++ { stacktrace: ++ __netif_receive_skb_core+0x46d/0x990 ++ __netif_receive_skb+0x18/0x60 ++ netif_receive_skb_internal+0x23/0x90 ++ napi_gro_complete+0xa4/0xe0 ++ dev_gro_receive+0x23a/0x360 ++ napi_gro_receive+0x30/0x100 ++ ieee80211_deliver_skb+0xd6/0x270 [mac80211] ++ ieee80211_rx_handlers+0xccf/0x22f0 [mac80211] ++ ieee80211_prepare_and_rx_handle+0x4e7/0xc40 [mac80211] ++ ieee80211_rx+0x31d/0x900 [mac80211] ++ iwlagn_rx_reply_rx+0x3db/0x6f0 [iwldvm] ++ iwl_rx_dispatch+0x8e/0xf0 [iwldvm] ++ iwl_pcie_irq_handler+0xe3c/0x12f0 [iwlwifi] ++ irq_thread_fn+0x20/0x50 ++ irq_thread+0x11f/0x150 ++ kthread+0xd2/0xf0 ++ } hitcount: 98 len: 664329 ++ { stacktrace: ++ __netif_receive_skb_core+0x46d/0x990 ++ __netif_receive_skb+0x18/0x60 ++ process_backlog+0xa8/0x150 ++ net_rx_action+0x15d/0x340 ++ __do_softirq+0x114/0x2c0 ++ do_softirq_own_stack+0x1c/0x30 ++ do_softirq+0x65/0x70 ++ __local_bh_enable_ip+0xb5/0xc0 ++ ip_finish_output+0x1f4/0x840 ++ ip_output+0x6b/0xc0 ++ ip_local_out_sk+0x31/0x40 ++ ip_send_skb+0x1a/0x50 ++ udp_send_skb+0x173/0x2a0 ++ udp_sendmsg+0x2bf/0x9f0 ++ inet_sendmsg+0x64/0xa0 ++ sock_sendmsg+0x3d/0x50 ++ } hitcount: 115 len: 13030 ++ { stacktrace: ++ __netif_receive_skb_core+0x46d/0x990 ++ __netif_receive_skb+0x18/0x60 ++ netif_receive_skb_internal+0x23/0x90 ++ napi_gro_complete+0xa4/0xe0 ++ napi_gro_flush+0x6d/0x90 ++ iwl_pcie_irq_handler+0x92a/0x12f0 [iwlwifi] ++ irq_thread_fn+0x20/0x50 ++ irq_thread+0x11f/0x150 ++ kthread+0xd2/0xf0 ++ ret_from_fork+0x42/0x70 ++ } hitcount: 934 len: 5512212 ++ ++ Totals: ++ Hits: 1232 ++ Entries: 4 ++ Dropped: 0 ++ ++ The above shows all the netif_receive_skb callpaths and their total ++ lengths for the duration of the wget command. ++ ++ The 'clear' hist trigger param can be used to clear the hash table. ++ Suppose we wanted to try another run of the previous example but ++ this time also wanted to see the complete list of events that went ++ into the histogram. In order to avoid having to set everything up ++ again, we can just clear the histogram first: ++ ++ # echo 'hist:key=stacktrace:vals=len:clear' >> \ ++ /sys/kernel/debug/tracing/events/net/netif_receive_skb/trigger ++ ++ Just to verify that it is in fact cleared, here's what we now see in ++ the hist file: ++ ++ # cat /sys/kernel/debug/tracing/events/net/netif_receive_skb/hist ++ # trigger info: hist:keys=stacktrace:vals=len:sort=hitcount:size=2048 [paused] ++ ++ Totals: ++ Hits: 0 ++ Entries: 0 ++ Dropped: 0 ++ ++ Since we want to see the detailed list of every netif_receive_skb ++ event occurring during the new run, which are in fact the same ++ events being aggregated into the hash table, we add some additional ++ 'enable_event' events to the triggering sched_process_exec and ++ sched_process_exit events as such: ++ ++ # echo 'enable_event:net:netif_receive_skb if filename==/usr/bin/wget' > \ ++ /sys/kernel/debug/tracing/events/sched/sched_process_exec/trigger ++ ++ # echo 'disable_event:net:netif_receive_skb if comm==wget' > \ ++ /sys/kernel/debug/tracing/events/sched/sched_process_exit/trigger ++ ++ If you read the trigger files for the sched_process_exec and ++ sched_process_exit triggers, you should see two triggers for each: ++ one enabling/disabling the hist aggregation and the other ++ enabling/disabling the logging of events: ++ ++ # cat /sys/kernel/debug/tracing/events/sched/sched_process_exec/trigger ++ enable_event:net:netif_receive_skb:unlimited if filename==/usr/bin/wget ++ enable_hist:net:netif_receive_skb:unlimited if filename==/usr/bin/wget ++ ++ # cat /sys/kernel/debug/tracing/events/sched/sched_process_exit/trigger ++ enable_event:net:netif_receive_skb:unlimited if comm==wget ++ disable_hist:net:netif_receive_skb:unlimited if comm==wget ++ ++ In other words, whenever either of the sched_process_exec or ++ sched_process_exit events is hit and matches 'wget', it enables or ++ disables both the histogram and the event log, and what you end up ++ with is a hash table and set of events just covering the specified ++ duration. Run the wget command again: ++ ++ $ wget https://www.kernel.org/pub/linux/kernel/v3.x/patch-3.19.xz ++ ++ Displaying the 'hist' file should show something similar to what you ++ saw in the last run, but this time you should also see the ++ individual events in the trace file: ++ ++ # cat /sys/kernel/debug/tracing/trace ++ ++ # tracer: nop ++ # ++ # entries-in-buffer/entries-written: 183/1426 #P:4 ++ # ++ # _-----=> irqs-off ++ # / _----=> need-resched ++ # | / _---=> hardirq/softirq ++ # || / _--=> preempt-depth ++ # ||| / delay ++ # TASK-PID CPU# |||| TIMESTAMP FUNCTION ++ # | | | |||| | | ++ wget-15108 [000] ..s1 31769.606929: netif_receive_skb: dev=lo skbaddr=ffff88009c353100 len=60 ++ wget-15108 [000] ..s1 31769.606999: netif_receive_skb: dev=lo skbaddr=ffff88009c353200 len=60 ++ dnsmasq-1382 [000] ..s1 31769.677652: netif_receive_skb: dev=lo skbaddr=ffff88009c352b00 len=130 ++ dnsmasq-1382 [000] ..s1 31769.685917: netif_receive_skb: dev=lo skbaddr=ffff88009c352200 len=138 ++ ##### CPU 2 buffer started #### ++ irq/29-iwlwifi-559 [002] ..s. 31772.031529: netif_receive_skb: dev=wlan0 skbaddr=ffff88009d433d00 len=2948 ++ irq/29-iwlwifi-559 [002] ..s. 31772.031572: netif_receive_skb: dev=wlan0 skbaddr=ffff88009d432200 len=1500 ++ irq/29-iwlwifi-559 [002] ..s. 31772.032196: netif_receive_skb: dev=wlan0 skbaddr=ffff88009d433100 len=2948 ++ irq/29-iwlwifi-559 [002] ..s. 31772.032761: netif_receive_skb: dev=wlan0 skbaddr=ffff88009d433000 len=2948 ++ irq/29-iwlwifi-559 [002] ..s. 31772.033220: netif_receive_skb: dev=wlan0 skbaddr=ffff88009d432e00 len=1500 ++ . ++ . ++ . ++ ++ The following example demonstrates how multiple hist triggers can be ++ attached to a given event. This capability can be useful for ++ creating a set of different summaries derived from the same set of ++ events, or for comparing the effects of different filters, among ++ other things. ++ ++ # echo 'hist:keys=skbaddr.hex:vals=len if len < 0' >> \ ++ /sys/kernel/debug/tracing/events/net/netif_receive_skb/trigger ++ # echo 'hist:keys=skbaddr.hex:vals=len if len > 4096' >> \ ++ /sys/kernel/debug/tracing/events/net/netif_receive_skb/trigger ++ # echo 'hist:keys=skbaddr.hex:vals=len if len == 256' >> \ ++ /sys/kernel/debug/tracing/events/net/netif_receive_skb/trigger ++ # echo 'hist:keys=skbaddr.hex:vals=len' >> \ ++ /sys/kernel/debug/tracing/events/net/netif_receive_skb/trigger ++ # echo 'hist:keys=len:vals=common_preempt_count' >> \ ++ /sys/kernel/debug/tracing/events/net/netif_receive_skb/trigger ++ ++ The above set of commands create four triggers differing only in ++ their filters, along with a completely different though fairly ++ nonsensical trigger. Note that in order to append multiple hist ++ triggers to the same file, you should use the '>>' operator to ++ append them ('>' will also add the new hist trigger, but will remove ++ any existing hist triggers beforehand). ++ ++ Displaying the contents of the 'hist' file for the event shows the ++ contents of all five histograms: ++ ++ # cat /sys/kernel/debug/tracing/events/net/netif_receive_skb/hist ++ ++ # event histogram ++ # ++ # trigger info: hist:keys=len:vals=hitcount,common_preempt_count:sort=hitcount:size=2048 [active] ++ # ++ ++ { len: 176 } hitcount: 1 common_preempt_count: 0 ++ { len: 223 } hitcount: 1 common_preempt_count: 0 ++ { len: 4854 } hitcount: 1 common_preempt_count: 0 ++ { len: 395 } hitcount: 1 common_preempt_count: 0 ++ { len: 177 } hitcount: 1 common_preempt_count: 0 ++ { len: 446 } hitcount: 1 common_preempt_count: 0 ++ { len: 1601 } hitcount: 1 common_preempt_count: 0 ++ . ++ . ++ . ++ { len: 1280 } hitcount: 66 common_preempt_count: 0 ++ { len: 116 } hitcount: 81 common_preempt_count: 40 ++ { len: 708 } hitcount: 112 common_preempt_count: 0 ++ { len: 46 } hitcount: 221 common_preempt_count: 0 ++ { len: 1264 } hitcount: 458 common_preempt_count: 0 ++ ++ Totals: ++ Hits: 1428 ++ Entries: 147 ++ Dropped: 0 ++ ++ ++ # event histogram ++ # ++ # trigger info: hist:keys=skbaddr.hex:vals=hitcount,len:sort=hitcount:size=2048 [active] ++ # ++ ++ { skbaddr: ffff8800baee5e00 } hitcount: 1 len: 130 ++ { skbaddr: ffff88005f3d5600 } hitcount: 1 len: 1280 ++ { skbaddr: ffff88005f3d4900 } hitcount: 1 len: 1280 ++ { skbaddr: ffff88009fed6300 } hitcount: 1 len: 115 ++ { skbaddr: ffff88009fe0ad00 } hitcount: 1 len: 115 ++ { skbaddr: ffff88008cdb1900 } hitcount: 1 len: 46 ++ { skbaddr: ffff880064b5ef00 } hitcount: 1 len: 118 ++ { skbaddr: ffff880044e3c700 } hitcount: 1 len: 60 ++ { skbaddr: ffff880100065900 } hitcount: 1 len: 46 ++ { skbaddr: ffff8800d46bd500 } hitcount: 1 len: 116 ++ { skbaddr: ffff88005f3d5f00 } hitcount: 1 len: 1280 ++ { skbaddr: ffff880100064700 } hitcount: 1 len: 365 ++ { skbaddr: ffff8800badb6f00 } hitcount: 1 len: 60 ++ . ++ . ++ . ++ { skbaddr: ffff88009fe0be00 } hitcount: 27 len: 24677 ++ { skbaddr: ffff88009fe0a400 } hitcount: 27 len: 23052 ++ { skbaddr: ffff88009fe0b700 } hitcount: 31 len: 25589 ++ { skbaddr: ffff88009fe0b600 } hitcount: 32 len: 27326 ++ { skbaddr: ffff88006a462800 } hitcount: 68 len: 71678 ++ { skbaddr: ffff88006a463700 } hitcount: 70 len: 72678 ++ { skbaddr: ffff88006a462b00 } hitcount: 71 len: 77589 ++ { skbaddr: ffff88006a463600 } hitcount: 73 len: 71307 ++ { skbaddr: ffff88006a462200 } hitcount: 81 len: 81032 ++ ++ Totals: ++ Hits: 1451 ++ Entries: 318 ++ Dropped: 0 ++ ++ ++ # event histogram ++ # ++ # trigger info: hist:keys=skbaddr.hex:vals=hitcount,len:sort=hitcount:size=2048 if len == 256 [active] ++ # ++ ++ ++ Totals: ++ Hits: 0 ++ Entries: 0 ++ Dropped: 0 ++ ++ ++ # event histogram ++ # ++ # trigger info: hist:keys=skbaddr.hex:vals=hitcount,len:sort=hitcount:size=2048 if len > 4096 [active] ++ # ++ ++ { skbaddr: ffff88009fd2c300 } hitcount: 1 len: 7212 ++ { skbaddr: ffff8800d2bcce00 } hitcount: 1 len: 7212 ++ { skbaddr: ffff8800d2bcd700 } hitcount: 1 len: 7212 ++ { skbaddr: ffff8800d2bcda00 } hitcount: 1 len: 21492 ++ { skbaddr: ffff8800ae2e2d00 } hitcount: 1 len: 7212 ++ { skbaddr: ffff8800d2bcdb00 } hitcount: 1 len: 7212 ++ { skbaddr: ffff88006a4df500 } hitcount: 1 len: 4854 ++ { skbaddr: ffff88008ce47b00 } hitcount: 1 len: 18636 ++ { skbaddr: ffff8800ae2e2200 } hitcount: 1 len: 12924 ++ { skbaddr: ffff88005f3e1000 } hitcount: 1 len: 4356 ++ { skbaddr: ffff8800d2bcdc00 } hitcount: 2 len: 24420 ++ { skbaddr: ffff8800d2bcc200 } hitcount: 2 len: 12996 ++ ++ Totals: ++ Hits: 14 ++ Entries: 12 ++ Dropped: 0 ++ ++ ++ # event histogram ++ # ++ # trigger info: hist:keys=skbaddr.hex:vals=hitcount,len:sort=hitcount:size=2048 if len < 0 [active] ++ # ++ ++ ++ Totals: ++ Hits: 0 ++ Entries: 0 ++ Dropped: 0 ++ ++ Named triggers can be used to have triggers share a common set of ++ histogram data. This capability is mostly useful for combining the ++ output of events generated by tracepoints contained inside inline ++ functions, but names can be used in a hist trigger on any event. ++ For example, these two triggers when hit will update the same 'len' ++ field in the shared 'foo' histogram data: ++ ++ # echo 'hist:name=foo:keys=skbaddr.hex:vals=len' > \ ++ /sys/kernel/debug/tracing/events/net/netif_receive_skb/trigger ++ # echo 'hist:name=foo:keys=skbaddr.hex:vals=len' > \ ++ /sys/kernel/debug/tracing/events/net/netif_rx/trigger ++ ++ You can see that they're updating common histogram data by reading ++ each event's hist files at the same time: ++ ++ # cat /sys/kernel/debug/tracing/events/net/netif_receive_skb/hist; ++ cat /sys/kernel/debug/tracing/events/net/netif_rx/hist ++ ++ # event histogram ++ # ++ # trigger info: hist:name=foo:keys=skbaddr.hex:vals=hitcount,len:sort=hitcount:size=2048 [active] ++ # ++ ++ { skbaddr: ffff88000ad53500 } hitcount: 1 len: 46 ++ { skbaddr: ffff8800af5a1500 } hitcount: 1 len: 76 ++ { skbaddr: ffff8800d62a1900 } hitcount: 1 len: 46 ++ { skbaddr: ffff8800d2bccb00 } hitcount: 1 len: 468 ++ { skbaddr: ffff8800d3c69900 } hitcount: 1 len: 46 ++ { skbaddr: ffff88009ff09100 } hitcount: 1 len: 52 ++ { skbaddr: ffff88010f13ab00 } hitcount: 1 len: 168 ++ { skbaddr: ffff88006a54f400 } hitcount: 1 len: 46 ++ { skbaddr: ffff8800d2bcc500 } hitcount: 1 len: 260 ++ { skbaddr: ffff880064505000 } hitcount: 1 len: 46 ++ { skbaddr: ffff8800baf24e00 } hitcount: 1 len: 32 ++ { skbaddr: ffff88009fe0ad00 } hitcount: 1 len: 46 ++ { skbaddr: ffff8800d3edff00 } hitcount: 1 len: 44 ++ { skbaddr: ffff88009fe0b400 } hitcount: 1 len: 168 ++ { skbaddr: ffff8800a1c55a00 } hitcount: 1 len: 40 ++ { skbaddr: ffff8800d2bcd100 } hitcount: 1 len: 40 ++ { skbaddr: ffff880064505f00 } hitcount: 1 len: 174 ++ { skbaddr: ffff8800a8bff200 } hitcount: 1 len: 160 ++ { skbaddr: ffff880044e3cc00 } hitcount: 1 len: 76 ++ { skbaddr: ffff8800a8bfe700 } hitcount: 1 len: 46 ++ { skbaddr: ffff8800d2bcdc00 } hitcount: 1 len: 32 ++ { skbaddr: ffff8800a1f64800 } hitcount: 1 len: 46 ++ { skbaddr: ffff8800d2bcde00 } hitcount: 1 len: 988 ++ { skbaddr: ffff88006a5dea00 } hitcount: 1 len: 46 ++ { skbaddr: ffff88002e37a200 } hitcount: 1 len: 44 ++ { skbaddr: ffff8800a1f32c00 } hitcount: 2 len: 676 ++ { skbaddr: ffff88000ad52600 } hitcount: 2 len: 107 ++ { skbaddr: ffff8800a1f91e00 } hitcount: 2 len: 92 ++ { skbaddr: ffff8800af5a0200 } hitcount: 2 len: 142 ++ { skbaddr: ffff8800d2bcc600 } hitcount: 2 len: 220 ++ { skbaddr: ffff8800ba36f500 } hitcount: 2 len: 92 ++ { skbaddr: ffff8800d021f800 } hitcount: 2 len: 92 ++ { skbaddr: ffff8800a1f33600 } hitcount: 2 len: 675 ++ { skbaddr: ffff8800a8bfff00 } hitcount: 3 len: 138 ++ { skbaddr: ffff8800d62a1300 } hitcount: 3 len: 138 ++ { skbaddr: ffff88002e37a100 } hitcount: 4 len: 184 ++ { skbaddr: ffff880064504400 } hitcount: 4 len: 184 ++ { skbaddr: ffff8800a8bfec00 } hitcount: 4 len: 184 ++ { skbaddr: ffff88000ad53700 } hitcount: 5 len: 230 ++ { skbaddr: ffff8800d2bcdb00 } hitcount: 5 len: 196 ++ { skbaddr: ffff8800a1f90000 } hitcount: 6 len: 276 ++ { skbaddr: ffff88006a54f900 } hitcount: 6 len: 276 ++ ++ Totals: ++ Hits: 81 ++ Entries: 42 ++ Dropped: 0 ++ # event histogram ++ # ++ # trigger info: hist:name=foo:keys=skbaddr.hex:vals=hitcount,len:sort=hitcount:size=2048 [active] ++ # ++ ++ { skbaddr: ffff88000ad53500 } hitcount: 1 len: 46 ++ { skbaddr: ffff8800af5a1500 } hitcount: 1 len: 76 ++ { skbaddr: ffff8800d62a1900 } hitcount: 1 len: 46 ++ { skbaddr: ffff8800d2bccb00 } hitcount: 1 len: 468 ++ { skbaddr: ffff8800d3c69900 } hitcount: 1 len: 46 ++ { skbaddr: ffff88009ff09100 } hitcount: 1 len: 52 ++ { skbaddr: ffff88010f13ab00 } hitcount: 1 len: 168 ++ { skbaddr: ffff88006a54f400 } hitcount: 1 len: 46 ++ { skbaddr: ffff8800d2bcc500 } hitcount: 1 len: 260 ++ { skbaddr: ffff880064505000 } hitcount: 1 len: 46 ++ { skbaddr: ffff8800baf24e00 } hitcount: 1 len: 32 ++ { skbaddr: ffff88009fe0ad00 } hitcount: 1 len: 46 ++ { skbaddr: ffff8800d3edff00 } hitcount: 1 len: 44 ++ { skbaddr: ffff88009fe0b400 } hitcount: 1 len: 168 ++ { skbaddr: ffff8800a1c55a00 } hitcount: 1 len: 40 ++ { skbaddr: ffff8800d2bcd100 } hitcount: 1 len: 40 ++ { skbaddr: ffff880064505f00 } hitcount: 1 len: 174 ++ { skbaddr: ffff8800a8bff200 } hitcount: 1 len: 160 ++ { skbaddr: ffff880044e3cc00 } hitcount: 1 len: 76 ++ { skbaddr: ffff8800a8bfe700 } hitcount: 1 len: 46 ++ { skbaddr: ffff8800d2bcdc00 } hitcount: 1 len: 32 ++ { skbaddr: ffff8800a1f64800 } hitcount: 1 len: 46 ++ { skbaddr: ffff8800d2bcde00 } hitcount: 1 len: 988 ++ { skbaddr: ffff88006a5dea00 } hitcount: 1 len: 46 ++ { skbaddr: ffff88002e37a200 } hitcount: 1 len: 44 ++ { skbaddr: ffff8800a1f32c00 } hitcount: 2 len: 676 ++ { skbaddr: ffff88000ad52600 } hitcount: 2 len: 107 ++ { skbaddr: ffff8800a1f91e00 } hitcount: 2 len: 92 ++ { skbaddr: ffff8800af5a0200 } hitcount: 2 len: 142 ++ { skbaddr: ffff8800d2bcc600 } hitcount: 2 len: 220 ++ { skbaddr: ffff8800ba36f500 } hitcount: 2 len: 92 ++ { skbaddr: ffff8800d021f800 } hitcount: 2 len: 92 ++ { skbaddr: ffff8800a1f33600 } hitcount: 2 len: 675 ++ { skbaddr: ffff8800a8bfff00 } hitcount: 3 len: 138 ++ { skbaddr: ffff8800d62a1300 } hitcount: 3 len: 138 ++ { skbaddr: ffff88002e37a100 } hitcount: 4 len: 184 ++ { skbaddr: ffff880064504400 } hitcount: 4 len: 184 ++ { skbaddr: ffff8800a8bfec00 } hitcount: 4 len: 184 ++ { skbaddr: ffff88000ad53700 } hitcount: 5 len: 230 ++ { skbaddr: ffff8800d2bcdb00 } hitcount: 5 len: 196 ++ { skbaddr: ffff8800a1f90000 } hitcount: 6 len: 276 ++ { skbaddr: ffff88006a54f900 } hitcount: 6 len: 276 ++ ++ Totals: ++ Hits: 81 ++ Entries: 42 ++ Dropped: 0 ++ ++ And here's an example that shows how to combine histogram data from ++ any two events even if they don't share any 'compatible' fields ++ other than 'hitcount' and 'stacktrace'. These commands create a ++ couple of triggers named 'bar' using those fields: ++ ++ # echo 'hist:name=bar:key=stacktrace:val=hitcount' > \ ++ /sys/kernel/debug/tracing/events/sched/sched_process_fork/trigger ++ # echo 'hist:name=bar:key=stacktrace:val=hitcount' > \ ++ /sys/kernel/debug/tracing/events/net/netif_rx/trigger ++ ++ And displaying the output of either shows some interesting if ++ somewhat confusing output: ++ ++ # cat /sys/kernel/debug/tracing/events/sched/sched_process_fork/hist ++ # cat /sys/kernel/debug/tracing/events/net/netif_rx/hist ++ ++ # event histogram ++ # ++ # trigger info: hist:name=bar:keys=stacktrace:vals=hitcount:sort=hitcount:size=2048 [active] ++ # ++ ++ { stacktrace: ++ _do_fork+0x18e/0x330 ++ kernel_thread+0x29/0x30 ++ kthreadd+0x154/0x1b0 ++ ret_from_fork+0x3f/0x70 ++ } hitcount: 1 ++ { stacktrace: ++ netif_rx_internal+0xb2/0xd0 ++ netif_rx_ni+0x20/0x70 ++ dev_loopback_xmit+0xaa/0xd0 ++ ip_mc_output+0x126/0x240 ++ ip_local_out_sk+0x31/0x40 ++ igmp_send_report+0x1e9/0x230 ++ igmp_timer_expire+0xe9/0x120 ++ call_timer_fn+0x39/0xf0 ++ run_timer_softirq+0x1e1/0x290 ++ __do_softirq+0xfd/0x290 ++ irq_exit+0x98/0xb0 ++ smp_apic_timer_interrupt+0x4a/0x60 ++ apic_timer_interrupt+0x6d/0x80 ++ cpuidle_enter+0x17/0x20 ++ call_cpuidle+0x3b/0x60 ++ cpu_startup_entry+0x22d/0x310 ++ } hitcount: 1 ++ { stacktrace: ++ netif_rx_internal+0xb2/0xd0 ++ netif_rx_ni+0x20/0x70 ++ dev_loopback_xmit+0xaa/0xd0 ++ ip_mc_output+0x17f/0x240 ++ ip_local_out_sk+0x31/0x40 ++ ip_send_skb+0x1a/0x50 ++ udp_send_skb+0x13e/0x270 ++ udp_sendmsg+0x2bf/0x980 ++ inet_sendmsg+0x67/0xa0 ++ sock_sendmsg+0x38/0x50 ++ SYSC_sendto+0xef/0x170 ++ SyS_sendto+0xe/0x10 ++ entry_SYSCALL_64_fastpath+0x12/0x6a ++ } hitcount: 2 ++ { stacktrace: ++ netif_rx_internal+0xb2/0xd0 ++ netif_rx+0x1c/0x60 ++ loopback_xmit+0x6c/0xb0 ++ dev_hard_start_xmit+0x219/0x3a0 ++ __dev_queue_xmit+0x415/0x4f0 ++ dev_queue_xmit_sk+0x13/0x20 ++ ip_finish_output2+0x237/0x340 ++ ip_finish_output+0x113/0x1d0 ++ ip_output+0x66/0xc0 ++ ip_local_out_sk+0x31/0x40 ++ ip_send_skb+0x1a/0x50 ++ udp_send_skb+0x16d/0x270 ++ udp_sendmsg+0x2bf/0x980 ++ inet_sendmsg+0x67/0xa0 ++ sock_sendmsg+0x38/0x50 ++ ___sys_sendmsg+0x14e/0x270 ++ } hitcount: 76 ++ { stacktrace: ++ netif_rx_internal+0xb2/0xd0 ++ netif_rx+0x1c/0x60 ++ loopback_xmit+0x6c/0xb0 ++ dev_hard_start_xmit+0x219/0x3a0 ++ __dev_queue_xmit+0x415/0x4f0 ++ dev_queue_xmit_sk+0x13/0x20 ++ ip_finish_output2+0x237/0x340 ++ ip_finish_output+0x113/0x1d0 ++ ip_output+0x66/0xc0 ++ ip_local_out_sk+0x31/0x40 ++ ip_send_skb+0x1a/0x50 ++ udp_send_skb+0x16d/0x270 ++ udp_sendmsg+0x2bf/0x980 ++ inet_sendmsg+0x67/0xa0 ++ sock_sendmsg+0x38/0x50 ++ ___sys_sendmsg+0x269/0x270 ++ } hitcount: 77 ++ { stacktrace: ++ netif_rx_internal+0xb2/0xd0 ++ netif_rx+0x1c/0x60 ++ loopback_xmit+0x6c/0xb0 ++ dev_hard_start_xmit+0x219/0x3a0 ++ __dev_queue_xmit+0x415/0x4f0 ++ dev_queue_xmit_sk+0x13/0x20 ++ ip_finish_output2+0x237/0x340 ++ ip_finish_output+0x113/0x1d0 ++ ip_output+0x66/0xc0 ++ ip_local_out_sk+0x31/0x40 ++ ip_send_skb+0x1a/0x50 ++ udp_send_skb+0x16d/0x270 ++ udp_sendmsg+0x2bf/0x980 ++ inet_sendmsg+0x67/0xa0 ++ sock_sendmsg+0x38/0x50 ++ SYSC_sendto+0xef/0x170 ++ } hitcount: 88 ++ { stacktrace: ++ _do_fork+0x18e/0x330 ++ SyS_clone+0x19/0x20 ++ entry_SYSCALL_64_fastpath+0x12/0x6a ++ } hitcount: 244 ++ ++ Totals: ++ Hits: 489 ++ Entries: 7 ++ Dropped: 0 diff --git a/patches/features/all/rt/0001-tracing-Steve-s-unofficial-trace_recursive_lock-patc.patch b/patches/features/all/rt/0001-tracing-Steve-s-unofficial-trace_recursive_lock-patc.patch new file mode 100644 index 00000000000..82acdc732fa --- /dev/null +++ b/patches/features/all/rt/0001-tracing-Steve-s-unofficial-trace_recursive_lock-patc.patch @@ -0,0 +1,128 @@ +From: Steven Rostedt +Date: Fri, 22 Sep 2017 14:58:15 -0500 +Subject: [PATCH 01/42] tracing: Steve's unofficial trace_recursive_lock() + patch +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +On Tue, 5 Sep 2017 16:57:52 -0500 +Tom Zanussi wrote: + +> Synthetic event generation requires the reservation of a second event +> while the reservation of a previous event is still in progress. The +> trace_recursive_lock() check in ring_buffer_lock_reserve() prevents +> this however. +> +> This sets up a special reserve pathway for this particular case, +> leaving existing pathways untouched, other than an additional check in +> ring_buffer_lock_reserve() and trace_event_buffer_reserve(). These +> checks could be gotten rid of as well, with copies of those functions, +> but for now try to avoid that unless necessary. +> +> Signed-off-by: Tom Zanussi + +I've been planing on changing that lock, which may help you here +without having to mess around with parameters. That is to simply add a +counter. Would this patch help you. You can add a patch to increment +the count to 5 with an explanation of handling synthetic events, but +even getting to 4 is extremely unlikely. + +I'll make this into an official patch if this works for you, and then +you can include it in your series. + +-- Steve + +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/trace/ring_buffer.c | 66 ++++++++++++--------------------------------- + 1 file changed, 18 insertions(+), 48 deletions(-) + +--- a/kernel/trace/ring_buffer.c ++++ b/kernel/trace/ring_buffer.c +@@ -2542,61 +2542,29 @@ rb_wakeups(struct ring_buffer *buffer, s + * The lock and unlock are done within a preempt disable section. + * The current_context per_cpu variable can only be modified + * by the current task between lock and unlock. But it can +- * be modified more than once via an interrupt. To pass this +- * information from the lock to the unlock without having to +- * access the 'in_interrupt()' functions again (which do show +- * a bit of overhead in something as critical as function tracing, +- * we use a bitmask trick. ++ * be modified more than once via an interrupt. There are four ++ * different contexts that we need to consider. + * +- * bit 0 = NMI context +- * bit 1 = IRQ context +- * bit 2 = SoftIRQ context +- * bit 3 = normal context. +- * +- * This works because this is the order of contexts that can +- * preempt other contexts. A SoftIRQ never preempts an IRQ +- * context. +- * +- * When the context is determined, the corresponding bit is +- * checked and set (if it was set, then a recursion of that context +- * happened). +- * +- * On unlock, we need to clear this bit. To do so, just subtract +- * 1 from the current_context and AND it to itself. +- * +- * (binary) +- * 101 - 1 = 100 +- * 101 & 100 = 100 (clearing bit zero) +- * +- * 1010 - 1 = 1001 +- * 1010 & 1001 = 1000 (clearing bit 1) +- * +- * The least significant bit can be cleared this way, and it +- * just so happens that it is the same bit corresponding to +- * the current context. ++ * Normal context. ++ * SoftIRQ context ++ * IRQ context ++ * NMI context ++ * ++ * If for some reason the ring buffer starts to recurse, we ++ * only allow that to happen at most 4 times (one for each ++ * context). If it happens 5 times, then we consider this a ++ * recusive loop and do not let it go further. + */ + + static __always_inline int + trace_recursive_lock(struct ring_buffer_per_cpu *cpu_buffer) + { +- unsigned int val = cpu_buffer->current_context; +- int bit; +- +- if (in_interrupt()) { +- if (in_nmi()) +- bit = RB_CTX_NMI; +- else if (in_irq()) +- bit = RB_CTX_IRQ; +- else +- bit = RB_CTX_SOFTIRQ; +- } else +- bit = RB_CTX_NORMAL; +- +- if (unlikely(val & (1 << bit))) ++ if (cpu_buffer->current_context >= 4) + return 1; + +- val |= (1 << bit); +- cpu_buffer->current_context = val; ++ cpu_buffer->current_context++; ++ /* Interrupts must see this update */ ++ barrier(); + + return 0; + } +@@ -2604,7 +2572,9 @@ trace_recursive_lock(struct ring_buffer_ + static __always_inline void + trace_recursive_unlock(struct ring_buffer_per_cpu *cpu_buffer) + { +- cpu_buffer->current_context &= cpu_buffer->current_context - 1; ++ /* Don't let the dec leak out */ ++ barrier(); ++ cpu_buffer->current_context--; + } + + /** diff --git a/patches/features/all/rt/0002-hrtimer-Correct-blantanly-wrong-comment.patch b/patches/features/all/rt/0002-hrtimer-Correct-blantanly-wrong-comment.patch new file mode 100644 index 00000000000..a2aea8eed15 --- /dev/null +++ b/patches/features/all/rt/0002-hrtimer-Correct-blantanly-wrong-comment.patch @@ -0,0 +1,37 @@ +From: Thomas Gleixner +Date: Wed, 20 Dec 2017 17:12:51 +0100 +Subject: [PATCH 02/29] hrtimer: Correct blantanly wrong comment +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +The protection of a hrtimer which runs its callback against migration to a +different CPU has nothing to do with hard interrupt context. + +The protection against migration of a hrtimer running the expiry callback +is the pointer in the cpu_base which holds a pointer to the currently +running timer. This pointer is evaluated in the code which potentially +switches the timer base and makes sure it's kept on the CPU on which the +callback is running. + +Reported-by: Anna-Maria Gleixner +Signed-off-by: Thomas Gleixner +Signed-off-by: Anna-Maria Gleixner +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/time/hrtimer.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +--- a/kernel/time/hrtimer.c ++++ b/kernel/time/hrtimer.c +@@ -1197,9 +1197,9 @@ static void __run_hrtimer(struct hrtimer + timer->is_rel = false; + + /* +- * Because we run timers from hardirq context, there is no chance +- * they get migrated to another cpu, therefore its safe to unlock +- * the timer base. ++ * The timer is marked as running in the cpu base, so it is ++ * protected against migration to a different CPU even if the lock ++ * is dropped. + */ + raw_spin_unlock(&cpu_base->lock); + trace_hrtimer_expire_entry(timer, now); diff --git a/patches/features/all/rt/0002-nohz-Prevent-erroneous-tick-stop-invocations.patch b/patches/features/all/rt/0002-nohz-Prevent-erroneous-tick-stop-invocations.patch new file mode 100644 index 00000000000..2be6d512cb9 --- /dev/null +++ b/patches/features/all/rt/0002-nohz-Prevent-erroneous-tick-stop-invocations.patch @@ -0,0 +1,53 @@ +From: Thomas Gleixner +Date: Fri, 22 Dec 2017 15:51:13 +0100 +Subject: [PATCH 2/4] nohz: Prevent erroneous tick stop invocations +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.8-rt9.tar.xz + +The conditions in irq_exit() to invoke tick_nohz_irq_exit() are: + + if ((idle_cpu(cpu) && !need_resched()) || tick_nohz_full_cpu(cpu)) + +This is too permissive in various aspects: + + 1) If need_resched() is set, then the tick cannot be stopped whether + the CPU is idle or in nohz full mode. + + 2) If need_resched() is not set, but softirqs are pending then this is an + indication that the softirq code punted and delegated the execution to + softirqd. need_resched() is not true because the current interrupted + task takes precedence over softirqd. + +Invoking tick_nohz_irq_exit() in these cases can cause an endless loop of +timer interrupts because the timer wheel contains an expired timer, but +softirqs are not yet executed. So it returns an immediate expiry request, +which causes the timer to fire immediately again. Lather, rinse and +repeat.... + +Prevent that by making the conditions proper and only allow invokation when +in idle or nohz full mode and neither need_resched() nor +local_softirq_pending() are set. + +Signed-off-by: Thomas Gleixner +Cc: stable@vger.kernel.org +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/softirq.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/kernel/softirq.c b/kernel/softirq.c +index 4e09821f9d9e..6d260b1229a1 100644 +--- a/kernel/softirq.c ++++ b/kernel/softirq.c +@@ -381,7 +381,8 @@ static inline void tick_irq_exit(void) + int cpu = smp_processor_id(); + + /* Make sure that timer wheel updates are propagated */ +- if ((idle_cpu(cpu) && !need_resched()) || tick_nohz_full_cpu(cpu)) { ++ if ((idle_cpu(cpu) || tick_nohz_full_cpu(cpu)) && ++ !need_resched() && !local_softirq_pending()) { + if (!in_interrupt()) + tick_nohz_irq_exit(); + } +-- +2.15.1 + diff --git a/patches/features/all/rt/0002-tracing-Add-Documentation-for-log2-modifier.patch b/patches/features/all/rt/0002-tracing-Add-Documentation-for-log2-modifier.patch new file mode 100644 index 00000000000..b12593ea4c2 --- /dev/null +++ b/patches/features/all/rt/0002-tracing-Add-Documentation-for-log2-modifier.patch @@ -0,0 +1,24 @@ +From: Tom Zanussi +Date: Mon, 15 Jan 2018 20:51:36 -0600 +Subject: [PATCH 02/37] tracing: Add Documentation for log2 modifier +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Add a line for the log2 modifier, to keep it aligned with +tracing/README. + +Signed-off-by: Tom Zanussi +Signed-off-by: Sebastian Andrzej Siewior +--- + Documentation/trace/histogram.txt | 1 + + 1 file changed, 1 insertion(+) + +--- a/Documentation/trace/histogram.txt ++++ b/Documentation/trace/histogram.txt +@@ -73,6 +73,7 @@ + .sym-offset display an address as a symbol and offset + .syscall display a syscall id as a system call name + .execname display a common_pid as a program name ++ .log2 display log2 value rather than raw number + + Note that in general the semantics of a given field aren't + interpreted when applying a modifier to it, but there are some diff --git a/patches/features/all/rt/0002-tracing-Reverse-the-order-of-trace_types_lock-and-ev.patch b/patches/features/all/rt/0002-tracing-Reverse-the-order-of-trace_types_lock-and-ev.patch new file mode 100644 index 00000000000..bb7800f9547 --- /dev/null +++ b/patches/features/all/rt/0002-tracing-Reverse-the-order-of-trace_types_lock-and-ev.patch @@ -0,0 +1,189 @@ +From: "Steven Rostedt (VMware)" +Date: Fri, 22 Sep 2017 14:58:16 -0500 +Subject: [PATCH 02/42] tracing: Reverse the order of trace_types_lock and + event_mutex +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +In order to make future changes where we need to call +tracing_set_clock() from within an event command, the order of +trace_types_lock and event_mutex must be reversed, as the event command +will hold event_mutex and the trace_types_lock is taken from within +tracing_set_clock(). + +Requested-by: Tom Zanussi +Signed-off-by: Steven Rostedt (VMware) +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/trace/trace.c | 5 +++++ + kernel/trace/trace_events.c | 31 +++++++++++++++---------------- + 2 files changed, 20 insertions(+), 16 deletions(-) + +--- a/kernel/trace/trace.c ++++ b/kernel/trace/trace.c +@@ -7671,6 +7671,7 @@ static int instance_mkdir(const char *na + struct trace_array *tr; + int ret; + ++ mutex_lock(&event_mutex); + mutex_lock(&trace_types_lock); + + ret = -EEXIST; +@@ -7726,6 +7727,7 @@ static int instance_mkdir(const char *na + list_add(&tr->list, &ftrace_trace_arrays); + + mutex_unlock(&trace_types_lock); ++ mutex_unlock(&event_mutex); + + return 0; + +@@ -7737,6 +7739,7 @@ static int instance_mkdir(const char *na + + out_unlock: + mutex_unlock(&trace_types_lock); ++ mutex_unlock(&event_mutex); + + return ret; + +@@ -7749,6 +7752,7 @@ static int instance_rmdir(const char *na + int ret; + int i; + ++ mutex_lock(&event_mutex); + mutex_lock(&trace_types_lock); + + ret = -ENODEV; +@@ -7794,6 +7798,7 @@ static int instance_rmdir(const char *na + + out_unlock: + mutex_unlock(&trace_types_lock); ++ mutex_unlock(&event_mutex); + + return ret; + } +--- a/kernel/trace/trace_events.c ++++ b/kernel/trace/trace_events.c +@@ -1406,8 +1406,8 @@ static int subsystem_open(struct inode * + return -ENODEV; + + /* Make sure the system still exists */ +- mutex_lock(&trace_types_lock); + mutex_lock(&event_mutex); ++ mutex_lock(&trace_types_lock); + list_for_each_entry(tr, &ftrace_trace_arrays, list) { + list_for_each_entry(dir, &tr->systems, list) { + if (dir == inode->i_private) { +@@ -1421,8 +1421,8 @@ static int subsystem_open(struct inode * + } + } + exit_loop: +- mutex_unlock(&event_mutex); + mutex_unlock(&trace_types_lock); ++ mutex_unlock(&event_mutex); + + if (!system) + return -ENODEV; +@@ -2308,15 +2308,15 @@ static void __add_event_to_tracers(struc + int trace_add_event_call(struct trace_event_call *call) + { + int ret; +- mutex_lock(&trace_types_lock); + mutex_lock(&event_mutex); ++ mutex_lock(&trace_types_lock); + + ret = __register_event(call, NULL); + if (ret >= 0) + __add_event_to_tracers(call); + +- mutex_unlock(&event_mutex); + mutex_unlock(&trace_types_lock); ++ mutex_unlock(&event_mutex); + return ret; + } + +@@ -2370,13 +2370,13 @@ int trace_remove_event_call(struct trace + { + int ret; + +- mutex_lock(&trace_types_lock); + mutex_lock(&event_mutex); ++ mutex_lock(&trace_types_lock); + down_write(&trace_event_sem); + ret = probe_remove_event_call(call); + up_write(&trace_event_sem); +- mutex_unlock(&event_mutex); + mutex_unlock(&trace_types_lock); ++ mutex_unlock(&event_mutex); + + return ret; + } +@@ -2438,8 +2438,8 @@ static int trace_module_notify(struct no + { + struct module *mod = data; + +- mutex_lock(&trace_types_lock); + mutex_lock(&event_mutex); ++ mutex_lock(&trace_types_lock); + switch (val) { + case MODULE_STATE_COMING: + trace_module_add_events(mod); +@@ -2448,8 +2448,8 @@ static int trace_module_notify(struct no + trace_module_remove_events(mod); + break; + } +- mutex_unlock(&event_mutex); + mutex_unlock(&trace_types_lock); ++ mutex_unlock(&event_mutex); + + return 0; + } +@@ -2964,24 +2964,24 @@ create_event_toplevel_files(struct dentr + * creates the event hierachry in the @parent/events directory. + * + * Returns 0 on success. ++ * ++ * Must be called with event_mutex held. + */ + int event_trace_add_tracer(struct dentry *parent, struct trace_array *tr) + { + int ret; + +- mutex_lock(&event_mutex); ++ lockdep_assert_held(&event_mutex); + + ret = create_event_toplevel_files(parent, tr); + if (ret) +- goto out_unlock; ++ goto out; + + down_write(&trace_event_sem); + __trace_add_event_dirs(tr); + up_write(&trace_event_sem); + +- out_unlock: +- mutex_unlock(&event_mutex); +- ++ out: + return ret; + } + +@@ -3010,9 +3010,10 @@ early_event_add_tracer(struct dentry *pa + return ret; + } + ++/* Must be called with event_mutex held */ + int event_trace_del_tracer(struct trace_array *tr) + { +- mutex_lock(&event_mutex); ++ lockdep_assert_held(&event_mutex); + + /* Disable any event triggers and associated soft-disabled events */ + clear_event_triggers(tr); +@@ -3033,8 +3034,6 @@ int event_trace_del_tracer(struct trace_ + + tr->event_dir = NULL; + +- mutex_unlock(&event_mutex); +- + return 0; + } + diff --git a/patches/features/all/rt/0003-hrtimer-Fix-kerneldoc-for-struct-hrtimer_cpu_base.patch b/patches/features/all/rt/0003-hrtimer-Fix-kerneldoc-for-struct-hrtimer_cpu_base.patch new file mode 100644 index 00000000000..03f17cba8d2 --- /dev/null +++ b/patches/features/all/rt/0003-hrtimer-Fix-kerneldoc-for-struct-hrtimer_cpu_base.patch @@ -0,0 +1,43 @@ +From: Anna-Maria Gleixner +Date: Wed, 20 Dec 2017 17:12:52 +0100 +Subject: [PATCH 03/29] hrtimer: Fix kerneldoc for struct hrtimer_cpu_base +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +The sequence '/**' marks the start of a struct description. Add the +missing second asterisk. While at it adapt the ordering of the struct +members to the struct definition and document the purpose of +expires_next more precisely. + +Signed-off-by: Anna-Maria Gleixner +Signed-off-by: Sebastian Andrzej Siewior +--- + include/linux/hrtimer.h | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +--- a/include/linux/hrtimer.h ++++ b/include/linux/hrtimer.h +@@ -144,7 +144,7 @@ enum hrtimer_base_type { + HRTIMER_MAX_CLOCK_BASES, + }; + +-/* ++/** + * struct hrtimer_cpu_base - the per cpu clock bases + * @lock: lock protecting the base and associated clock bases + * and timers +@@ -153,12 +153,12 @@ enum hrtimer_base_type { + * @cpu: cpu number + * @active_bases: Bitfield to mark bases with active timers + * @clock_was_set_seq: Sequence counter of clock was set events +- * @expires_next: absolute time of the next event which was scheduled +- * via clock_set_next_event() +- * @next_timer: Pointer to the first expiring timer + * @in_hrtirq: hrtimer_interrupt() is currently executing + * @hres_active: State of high resolution mode + * @hang_detected: The last hrtimer interrupt detected a hang ++ * @expires_next: absolute time of the next event, is required for remote ++ * hrtimer enqueue ++ * @next_timer: Pointer to the first expiring timer + * @nr_events: Total number of hrtimer interrupt events + * @nr_retries: Total number of hrtimer interrupt retries + * @nr_hangs: Total number of hrtimer interrupt hangs diff --git a/patches/features/all/rt/0003-tracing-Add-support-to-detect-and-avoid-duplicates.patch b/patches/features/all/rt/0003-tracing-Add-support-to-detect-and-avoid-duplicates.patch new file mode 100644 index 00000000000..6886f161f54 --- /dev/null +++ b/patches/features/all/rt/0003-tracing-Add-support-to-detect-and-avoid-duplicates.patch @@ -0,0 +1,115 @@ +From: Vedang Patel +Date: Mon, 15 Jan 2018 20:51:37 -0600 +Subject: [PATCH 03/37] tracing: Add support to detect and avoid duplicates +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +A duplicate in the tracing_map hash table is when 2 different entries +have the same key and, as a result, the key_hash. This is possible due +to a race condition in the algorithm. This race condition is inherent to +the algorithm and not a bug. This was fine because, until now, we were +only interested in the sum of all the values related to a particular +key (the duplicates are dealt with in tracing_map_sort_entries()). But, +with the inclusion of variables[1], we are interested in individual +values. So, it will not be clear what value to choose when +there are duplicates. So, the duplicates need to be removed. + +The duplicates can occur in the code in the following scenarios: + +- A thread is in the process of adding a new element. It has +successfully executed cmpxchg() and inserted the key. But, it is still +not done acquiring the trace_map_elt struct, populating it and storing +the pointer to the struct in the value field of tracing_map hash table. +If another thread comes in at this time and wants to add an element with +the same key, it will not see the current element and add a new one. + +- There are multiple threads trying to execute cmpxchg at the same time, +one of the threads will succeed and the others will fail. The ones which +fail will go ahead increment 'idx' and add a new element there creating +a duplicate. + +This patch detects and avoids the first condition by asking the thread +which detects the duplicate to loop one more time. There is also a +possibility of infinite loop if the thread which is trying to insert +goes to sleep indefinitely and the one which is trying to insert a new +element detects a duplicate. Which is why, the thread loops for +map_size iterations before returning NULL. + +The second scenario is avoided by preventing the threads which failed +cmpxchg() from incrementing idx. This way, they will loop +around and check if the thread which succeeded in executing cmpxchg() +had the same key. + +[1] http://lkml.kernel.org/r/cover.1498510759.git.tom.zanussi@linux.intel.com + +Signed-off-by: Vedang Patel +Signed-off-by: Tom Zanussi +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/trace/tracing_map.c | 41 ++++++++++++++++++++++++++++++++++++----- + 1 file changed, 36 insertions(+), 5 deletions(-) + +--- a/kernel/trace/tracing_map.c ++++ b/kernel/trace/tracing_map.c +@@ -414,7 +414,9 @@ static inline struct tracing_map_elt * + __tracing_map_insert(struct tracing_map *map, void *key, bool lookup_only) + { + u32 idx, key_hash, test_key; ++ int dup_try = 0; + struct tracing_map_entry *entry; ++ struct tracing_map_elt *val; + + key_hash = jhash(key, map->key_size, 0); + if (key_hash == 0) +@@ -426,11 +428,33 @@ static inline struct tracing_map_elt * + entry = TRACING_MAP_ENTRY(map->map, idx); + test_key = entry->key; + +- if (test_key && test_key == key_hash && entry->val && +- keys_match(key, entry->val->key, map->key_size)) { +- if (!lookup_only) +- atomic64_inc(&map->hits); +- return entry->val; ++ if (test_key && test_key == key_hash) { ++ val = READ_ONCE(entry->val); ++ if (val && ++ keys_match(key, val->key, map->key_size)) { ++ if (!lookup_only) ++ atomic64_inc(&map->hits); ++ return val; ++ } else if (unlikely(!val)) { ++ /* ++ * The key is present. But, val (pointer to elt ++ * struct) is still NULL. which means some other ++ * thread is in the process of inserting an ++ * element. ++ * ++ * On top of that, it's key_hash is same as the ++ * one being inserted right now. So, it's ++ * possible that the element has the same ++ * key as well. ++ */ ++ ++ dup_try++; ++ if (dup_try > map->map_size) { ++ atomic64_inc(&map->drops); ++ break; ++ } ++ continue; ++ } + } + + if (!test_key) { +@@ -452,6 +476,13 @@ static inline struct tracing_map_elt * + atomic64_inc(&map->hits); + + return entry->val; ++ } else { ++ /* ++ * cmpxchg() failed. Loop around once ++ * more to check what key was inserted. ++ */ ++ dup_try++; ++ continue; + } + } + diff --git a/patches/features/all/rt/0004-hrtimer-Cleanup-clock-argument-in-schedule_hrtimeout.patch b/patches/features/all/rt/0004-hrtimer-Cleanup-clock-argument-in-schedule_hrtimeout.patch new file mode 100644 index 00000000000..535c38dc76f --- /dev/null +++ b/patches/features/all/rt/0004-hrtimer-Cleanup-clock-argument-in-schedule_hrtimeout.patch @@ -0,0 +1,81 @@ +From: Anna-Maria Gleixner +Date: Wed, 20 Dec 2017 17:12:53 +0100 +Subject: [PATCH 04/29] hrtimer: Cleanup clock argument in + schedule_hrtimeout_range_clock() +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +schedule_hrtimeout_range_clock() uses an integer for the clock id +instead of the predefined type "clockid_t". The ID of the clock is +indicated in hrtimer code as clock_id. Therefore change the name of +the variable as well to make it consistent. + +While at it, clean up the description for the function parameters clock_id +and mode. The clock modes and the clock ids are not restricted as the +comment suggests. Fix the mode description as well for the callers of +schedule_hrtimeout_range_clock(). + +No functional change. + +Signed-off-by: Anna-Maria Gleixner +Signed-off-by: Sebastian Andrzej Siewior +--- + include/linux/hrtimer.h | 2 +- + kernel/time/hrtimer.c | 12 ++++++------ + 2 files changed, 7 insertions(+), 7 deletions(-) + +--- a/include/linux/hrtimer.h ++++ b/include/linux/hrtimer.h +@@ -462,7 +462,7 @@ extern int schedule_hrtimeout_range(ktim + extern int schedule_hrtimeout_range_clock(ktime_t *expires, + u64 delta, + const enum hrtimer_mode mode, +- int clock); ++ clockid_t clock_id); + extern int schedule_hrtimeout(ktime_t *expires, const enum hrtimer_mode mode); + + /* Soft interrupt function to run the hrtimer queues: */ +--- a/kernel/time/hrtimer.c ++++ b/kernel/time/hrtimer.c +@@ -1664,12 +1664,12 @@ void __init hrtimers_init(void) + * schedule_hrtimeout_range_clock - sleep until timeout + * @expires: timeout value (ktime_t) + * @delta: slack in expires timeout (ktime_t) +- * @mode: timer mode, HRTIMER_MODE_ABS or HRTIMER_MODE_REL +- * @clock: timer clock, CLOCK_MONOTONIC or CLOCK_REALTIME ++ * @mode: timer mode ++ * @clock_id: timer clock to be used + */ + int __sched + schedule_hrtimeout_range_clock(ktime_t *expires, u64 delta, +- const enum hrtimer_mode mode, int clock) ++ const enum hrtimer_mode mode, clockid_t clock_id) + { + struct hrtimer_sleeper t; + +@@ -1690,7 +1690,7 @@ schedule_hrtimeout_range_clock(ktime_t * + return -EINTR; + } + +- hrtimer_init_on_stack(&t.timer, clock, mode); ++ hrtimer_init_on_stack(&t.timer, clock_id, mode); + hrtimer_set_expires_range_ns(&t.timer, *expires, delta); + + hrtimer_init_sleeper(&t, current); +@@ -1712,7 +1712,7 @@ schedule_hrtimeout_range_clock(ktime_t * + * schedule_hrtimeout_range - sleep until timeout + * @expires: timeout value (ktime_t) + * @delta: slack in expires timeout (ktime_t) +- * @mode: timer mode, HRTIMER_MODE_ABS or HRTIMER_MODE_REL ++ * @mode: timer mode + * + * Make the current task sleep until the given expiry time has + * elapsed. The routine will return immediately unless +@@ -1751,7 +1751,7 @@ EXPORT_SYMBOL_GPL(schedule_hrtimeout_ran + /** + * schedule_hrtimeout - sleep until timeout + * @expires: timeout value (ktime_t) +- * @mode: timer mode, HRTIMER_MODE_ABS or HRTIMER_MODE_REL ++ * @mode: timer mode + * + * Make the current task sleep until the given expiry time has + * elapsed. The routine will return immediately unless diff --git a/patches/features/all/rt/0004-timerqueue-Document-return-values-of-timerqueue_add-.patch b/patches/features/all/rt/0004-timerqueue-Document-return-values-of-timerqueue_add-.patch new file mode 100644 index 00000000000..9d79677728e --- /dev/null +++ b/patches/features/all/rt/0004-timerqueue-Document-return-values-of-timerqueue_add-.patch @@ -0,0 +1,45 @@ +From: Thomas Gleixner +Date: Fri, 22 Dec 2017 15:51:15 +0100 +Subject: [PATCH 4/4] timerqueue: Document return values of + timerqueue_add/del() +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.8-rt9.tar.xz + +The return values of timerqueue_add/del() are not documented in the kernel doc +comment. Add proper documentation. + +Signed-off-by: Thomas Gleixner +Cc: rt@linutronix.de +Signed-off-by: Sebastian Andrzej Siewior +--- + lib/timerqueue.c | 8 +++++--- + 1 file changed, 5 insertions(+), 3 deletions(-) + +diff --git a/lib/timerqueue.c b/lib/timerqueue.c +index 4a720ed4fdaf..0d54bcbc8170 100644 +--- a/lib/timerqueue.c ++++ b/lib/timerqueue.c +@@ -33,8 +33,9 @@ + * @head: head of timerqueue + * @node: timer node to be added + * +- * Adds the timer node to the timerqueue, sorted by the +- * node's expires value. ++ * Adds the timer node to the timerqueue, sorted by the node's expires ++ * value. Returns true if the newly added timer is the first expiring timer in ++ * the queue. + */ + bool timerqueue_add(struct timerqueue_head *head, struct timerqueue_node *node) + { +@@ -70,7 +71,8 @@ EXPORT_SYMBOL_GPL(timerqueue_add); + * @head: head of timerqueue + * @node: timer node to be removed + * +- * Removes the timer node from the timerqueue. ++ * Removes the timer node from the timerqueue. Returns true if the queue is ++ * not empty after the remove. + */ + bool timerqueue_del(struct timerqueue_head *head, struct timerqueue_node *node) + { +-- +2.15.1 + diff --git a/patches/features/all/rt/0004-tracing-Remove-code-which-merges-duplicates.patch b/patches/features/all/rt/0004-tracing-Remove-code-which-merges-duplicates.patch new file mode 100644 index 00000000000..d57cc59e208 --- /dev/null +++ b/patches/features/all/rt/0004-tracing-Remove-code-which-merges-duplicates.patch @@ -0,0 +1,189 @@ +From: Vedang Patel +Date: Mon, 15 Jan 2018 20:51:38 -0600 +Subject: [PATCH 04/37] tracing: Remove code which merges duplicates +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +We now have the logic to detect and remove duplicates in the +tracing_map hash table. The code which merges duplicates in the +histogram is redundant now. So, modify this code just to detect +duplicates. The duplication detection code is still kept to ensure +that any rare race condition which might cause duplicates does not go +unnoticed. + +Signed-off-by: Vedang Patel +Signed-off-by: Tom Zanussi +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/trace/trace_events_hist.c | 11 ----- + kernel/trace/tracing_map.c | 83 ++------------------------------------- + kernel/trace/tracing_map.h | 7 --- + 3 files changed, 6 insertions(+), 95 deletions(-) + +--- a/kernel/trace/trace_events_hist.c ++++ b/kernel/trace/trace_events_hist.c +@@ -340,16 +340,6 @@ static int hist_trigger_elt_comm_alloc(s + return 0; + } + +-static void hist_trigger_elt_comm_copy(struct tracing_map_elt *to, +- struct tracing_map_elt *from) +-{ +- char *comm_from = from->private_data; +- char *comm_to = to->private_data; +- +- if (comm_from) +- memcpy(comm_to, comm_from, TASK_COMM_LEN + 1); +-} +- + static void hist_trigger_elt_comm_init(struct tracing_map_elt *elt) + { + char *comm = elt->private_data; +@@ -360,7 +350,6 @@ static void hist_trigger_elt_comm_init(s + + static const struct tracing_map_ops hist_trigger_elt_comm_ops = { + .elt_alloc = hist_trigger_elt_comm_alloc, +- .elt_copy = hist_trigger_elt_comm_copy, + .elt_free = hist_trigger_elt_comm_free, + .elt_init = hist_trigger_elt_comm_init, + }; +--- a/kernel/trace/tracing_map.c ++++ b/kernel/trace/tracing_map.c +@@ -847,67 +847,15 @@ create_sort_entry(void *key, struct trac + return sort_entry; + } + +-static struct tracing_map_elt *copy_elt(struct tracing_map_elt *elt) +-{ +- struct tracing_map_elt *dup_elt; +- unsigned int i; +- +- dup_elt = tracing_map_elt_alloc(elt->map); +- if (IS_ERR(dup_elt)) +- return NULL; +- +- if (elt->map->ops && elt->map->ops->elt_copy) +- elt->map->ops->elt_copy(dup_elt, elt); +- +- dup_elt->private_data = elt->private_data; +- memcpy(dup_elt->key, elt->key, elt->map->key_size); +- +- for (i = 0; i < elt->map->n_fields; i++) { +- atomic64_set(&dup_elt->fields[i].sum, +- atomic64_read(&elt->fields[i].sum)); +- dup_elt->fields[i].cmp_fn = elt->fields[i].cmp_fn; +- } +- +- return dup_elt; +-} +- +-static int merge_dup(struct tracing_map_sort_entry **sort_entries, +- unsigned int target, unsigned int dup) +-{ +- struct tracing_map_elt *target_elt, *elt; +- bool first_dup = (target - dup) == 1; +- int i; +- +- if (first_dup) { +- elt = sort_entries[target]->elt; +- target_elt = copy_elt(elt); +- if (!target_elt) +- return -ENOMEM; +- sort_entries[target]->elt = target_elt; +- sort_entries[target]->elt_copied = true; +- } else +- target_elt = sort_entries[target]->elt; +- +- elt = sort_entries[dup]->elt; +- +- for (i = 0; i < elt->map->n_fields; i++) +- atomic64_add(atomic64_read(&elt->fields[i].sum), +- &target_elt->fields[i].sum); +- +- sort_entries[dup]->dup = true; +- +- return 0; +-} +- +-static int merge_dups(struct tracing_map_sort_entry **sort_entries, ++static void detect_dups(struct tracing_map_sort_entry **sort_entries, + int n_entries, unsigned int key_size) + { + unsigned int dups = 0, total_dups = 0; +- int err, i, j; ++ int i; + void *key; + + if (n_entries < 2) +- return total_dups; ++ return; + + sort(sort_entries, n_entries, sizeof(struct tracing_map_sort_entry *), + (int (*)(const void *, const void *))cmp_entries_dup, NULL); +@@ -916,30 +864,14 @@ static int merge_dups(struct tracing_map + for (i = 1; i < n_entries; i++) { + if (!memcmp(sort_entries[i]->key, key, key_size)) { + dups++; total_dups++; +- err = merge_dup(sort_entries, i - dups, i); +- if (err) +- return err; + continue; + } + key = sort_entries[i]->key; + dups = 0; + } + +- if (!total_dups) +- return total_dups; +- +- for (i = 0, j = 0; i < n_entries; i++) { +- if (!sort_entries[i]->dup) { +- sort_entries[j] = sort_entries[i]; +- if (j++ != i) +- sort_entries[i] = NULL; +- } else { +- destroy_sort_entry(sort_entries[i]); +- sort_entries[i] = NULL; +- } +- } +- +- return total_dups; ++ WARN_ONCE(total_dups > 0, ++ "Duplicates detected: %d\n", total_dups); + } + + static bool is_key(struct tracing_map *map, unsigned int field_idx) +@@ -1065,10 +997,7 @@ int tracing_map_sort_entries(struct trac + return 1; + } + +- ret = merge_dups(entries, n_entries, map->key_size); +- if (ret < 0) +- goto free; +- n_entries -= ret; ++ detect_dups(entries, n_entries, map->key_size); + + if (is_key(map, sort_keys[0].field_idx)) + cmp_entries_fn = cmp_entries_key; +--- a/kernel/trace/tracing_map.h ++++ b/kernel/trace/tracing_map.h +@@ -215,11 +215,6 @@ struct tracing_map { + * Element allocation occurs before tracing begins, when the + * tracing_map_init() call is made by client code. + * +- * @elt_copy: At certain points in the lifetime of an element, it may +- * need to be copied. The copy should include a copy of the +- * client-allocated data, which can be copied into the 'to' +- * element from the 'from' element. +- * + * @elt_free: When a tracing_map_elt is freed, this function is called + * and allows client-allocated per-element data to be freed. + * +@@ -233,8 +228,6 @@ struct tracing_map { + */ + struct tracing_map_ops { + int (*elt_alloc)(struct tracing_map_elt *elt); +- void (*elt_copy)(struct tracing_map_elt *to, +- struct tracing_map_elt *from); + void (*elt_free)(struct tracing_map_elt *elt); + void (*elt_clear)(struct tracing_map_elt *elt); + void (*elt_init)(struct tracing_map_elt *elt); diff --git a/patches/features/all/rt/0004-tracing-Remove-lookups-from-tracing_map-hitcount.patch b/patches/features/all/rt/0004-tracing-Remove-lookups-from-tracing_map-hitcount.patch new file mode 100644 index 00000000000..2cb5843e1c4 --- /dev/null +++ b/patches/features/all/rt/0004-tracing-Remove-lookups-from-tracing_map-hitcount.patch @@ -0,0 +1,27 @@ +From: Tom Zanussi +Date: Fri, 22 Sep 2017 14:58:18 -0500 +Subject: [PATCH 04/42] tracing: Remove lookups from tracing_map hitcount +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Lookups inflate the hitcount, making it essentially useless. Only +inserts and updates should really affect the hitcount anyway, so +explicitly filter lookups out. + +Signed-off-by: Tom Zanussi +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/trace/tracing_map.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/kernel/trace/tracing_map.c ++++ b/kernel/trace/tracing_map.c +@@ -428,7 +428,8 @@ static inline struct tracing_map_elt * + + if (test_key && test_key == key_hash && entry->val && + keys_match(key, entry->val->key, map->key_size)) { +- atomic64_inc(&map->hits); ++ if (!lookup_only) ++ atomic64_inc(&map->hits); + return entry->val; + } + diff --git a/patches/features/all/rt/0005-hrtimer-Fix-hrtimer-function-description.patch b/patches/features/all/rt/0005-hrtimer-Fix-hrtimer-function-description.patch new file mode 100644 index 00000000000..3aed4986806 --- /dev/null +++ b/patches/features/all/rt/0005-hrtimer-Fix-hrtimer-function-description.patch @@ -0,0 +1,61 @@ +From: Anna-Maria Gleixner +Date: Wed, 20 Dec 2017 17:12:54 +0100 +Subject: [PATCH 05/29] hrtimer: Fix hrtimer function description +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +The hrtimer_start[_range_ns]() starts a timer reliable on this CPU only +when HRTIMER_MODE_PINNED is set. Furthermore the HRTIMER_MODE_PINNED mode +is not considered, when a hrtimer is initialized. + +Signed-off-by: Anna-Maria Gleixner +Signed-off-by: Sebastian Andrzej Siewior +--- + include/linux/hrtimer.h | 6 +++--- + kernel/time/hrtimer.c | 9 +++++---- + 2 files changed, 8 insertions(+), 7 deletions(-) + +--- a/include/linux/hrtimer.h ++++ b/include/linux/hrtimer.h +@@ -361,11 +361,11 @@ extern void hrtimer_start_range_ns(struc + u64 range_ns, const enum hrtimer_mode mode); + + /** +- * hrtimer_start - (re)start an hrtimer on the current CPU ++ * hrtimer_start - (re)start an hrtimer + * @timer: the timer to be added + * @tim: expiry time +- * @mode: expiry mode: absolute (HRTIMER_MODE_ABS) or +- * relative (HRTIMER_MODE_REL) ++ * @mode: timer mode: absolute (HRTIMER_MODE_ABS) or ++ * relative (HRTIMER_MODE_REL), and pinned (HRTIMER_MODE_PINNED) + */ + static inline void hrtimer_start(struct hrtimer *timer, ktime_t tim, + const enum hrtimer_mode mode) +--- a/kernel/time/hrtimer.c ++++ b/kernel/time/hrtimer.c +@@ -926,12 +926,12 @@ static inline ktime_t hrtimer_update_low + } + + /** +- * hrtimer_start_range_ns - (re)start an hrtimer on the current CPU ++ * hrtimer_start_range_ns - (re)start an hrtimer + * @timer: the timer to be added + * @tim: expiry time + * @delta_ns: "slack" range for the timer +- * @mode: expiry mode: absolute (HRTIMER_MODE_ABS) or +- * relative (HRTIMER_MODE_REL) ++ * @mode: timer mode: absolute (HRTIMER_MODE_ABS) or ++ * relative (HRTIMER_MODE_REL), and pinned (HRTIMER_MODE_PINNED) + */ + void hrtimer_start_range_ns(struct hrtimer *timer, ktime_t tim, + u64 delta_ns, const enum hrtimer_mode mode) +@@ -1109,7 +1109,8 @@ static void __hrtimer_init(struct hrtime + * hrtimer_init - initialize a timer to the given clock + * @timer: the timer to be initialized + * @clock_id: the clock to be used +- * @mode: timer mode abs/rel ++ * @mode: timer mode: absolute (HRTIMER_MODE_ABS) or ++ * relative (HRTIMER_MODE_REL); pinned is not considered here! + */ + void hrtimer_init(struct hrtimer *timer, clockid_t clock_id, + enum hrtimer_mode mode) diff --git a/patches/features/all/rt/0005-ring-buffer-Add-interface-for-setting-absolute-time-.patch b/patches/features/all/rt/0005-ring-buffer-Add-interface-for-setting-absolute-time-.patch new file mode 100644 index 00000000000..90777bf28ce --- /dev/null +++ b/patches/features/all/rt/0005-ring-buffer-Add-interface-for-setting-absolute-time-.patch @@ -0,0 +1,129 @@ +From: Tom Zanussi +Date: Mon, 15 Jan 2018 20:51:39 -0600 +Subject: [PATCH 05/37] ring-buffer: Add interface for setting absolute time + stamps +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Define a new function, tracing_set_time_stamp_abs(), which can be used +to enable or disable the use of absolute timestamps rather than time +deltas for a trace array. + +Only the interface is added here; a subsequent patch will add the +underlying implementation. + +Signed-off-by: Tom Zanussi +Signed-off-by: Baohong Liu +Signed-off-by: Sebastian Andrzej Siewior +--- + include/linux/ring_buffer.h | 2 ++ + kernel/trace/ring_buffer.c | 11 +++++++++++ + kernel/trace/trace.c | 33 ++++++++++++++++++++++++++++++++- + kernel/trace/trace.h | 3 +++ + 4 files changed, 48 insertions(+), 1 deletion(-) + +--- a/include/linux/ring_buffer.h ++++ b/include/linux/ring_buffer.h +@@ -181,6 +181,8 @@ void ring_buffer_normalize_time_stamp(st + int cpu, u64 *ts); + void ring_buffer_set_clock(struct ring_buffer *buffer, + u64 (*clock)(void)); ++void ring_buffer_set_time_stamp_abs(struct ring_buffer *buffer, bool abs); ++bool ring_buffer_time_stamp_abs(struct ring_buffer *buffer); + + size_t ring_buffer_page_len(void *page); + +--- a/kernel/trace/ring_buffer.c ++++ b/kernel/trace/ring_buffer.c +@@ -489,6 +489,7 @@ struct ring_buffer { + u64 (*clock)(void); + + struct rb_irq_work irq_work; ++ bool time_stamp_abs; + }; + + struct ring_buffer_iter { +@@ -1383,6 +1384,16 @@ void ring_buffer_set_clock(struct ring_b + buffer->clock = clock; + } + ++void ring_buffer_set_time_stamp_abs(struct ring_buffer *buffer, bool abs) ++{ ++ buffer->time_stamp_abs = abs; ++} ++ ++bool ring_buffer_time_stamp_abs(struct ring_buffer *buffer) ++{ ++ return buffer->time_stamp_abs; ++} ++ + static void rb_reset_cpu(struct ring_buffer_per_cpu *cpu_buffer); + + static inline unsigned long rb_page_entries(struct buffer_page *bpage) +--- a/kernel/trace/trace.c ++++ b/kernel/trace/trace.c +@@ -2269,7 +2269,7 @@ trace_event_buffer_lock_reserve(struct r + + *current_rb = trace_file->tr->trace_buffer.buffer; + +- if ((trace_file->flags & ++ if (!ring_buffer_time_stamp_abs(*current_rb) && (trace_file->flags & + (EVENT_FILE_FL_SOFT_DISABLED | EVENT_FILE_FL_FILTERED)) && + (entry = this_cpu_read(trace_buffered_event))) { + /* Try to use the per cpu buffer first */ +@@ -6286,6 +6286,37 @@ static int tracing_clock_open(struct ino + + return ret; + } ++ ++int tracing_set_time_stamp_abs(struct trace_array *tr, bool abs) ++{ ++ int ret = 0; ++ ++ mutex_lock(&trace_types_lock); ++ ++ if (abs && tr->time_stamp_abs_ref++) ++ goto out; ++ ++ if (!abs) { ++ if (WARN_ON_ONCE(!tr->time_stamp_abs_ref)) { ++ ret = -EINVAL; ++ goto out; ++ } ++ ++ if (--tr->time_stamp_abs_ref) ++ goto out; ++ } ++ ++ ring_buffer_set_time_stamp_abs(tr->trace_buffer.buffer, abs); ++ ++#ifdef CONFIG_TRACER_MAX_TRACE ++ if (tr->max_buffer.buffer) ++ ring_buffer_set_time_stamp_abs(tr->max_buffer.buffer, abs); ++#endif ++ out: ++ mutex_unlock(&trace_types_lock); ++ ++ return ret; ++} + + struct ftrace_buffer_info { + struct trace_iterator iter; +--- a/kernel/trace/trace.h ++++ b/kernel/trace/trace.h +@@ -273,6 +273,7 @@ struct trace_array { + /* function tracing enabled */ + int function_enabled; + #endif ++ int time_stamp_abs_ref; + }; + + enum { +@@ -286,6 +287,8 @@ extern struct mutex trace_types_lock; + extern int trace_array_get(struct trace_array *tr); + extern void trace_array_put(struct trace_array *tr); + ++extern int tracing_set_time_stamp_abs(struct trace_array *tr, bool abs); ++ + /* + * The global tracer (top) should be the first trace array added, + * but we check the flag anyway. diff --git a/patches/features/all/rt/0005-tracing-Increase-tracing-map-KEYS_MAX-size.patch b/patches/features/all/rt/0005-tracing-Increase-tracing-map-KEYS_MAX-size.patch new file mode 100644 index 00000000000..ec434b1cd44 --- /dev/null +++ b/patches/features/all/rt/0005-tracing-Increase-tracing-map-KEYS_MAX-size.patch @@ -0,0 +1,25 @@ +From: Tom Zanussi +Date: Fri, 22 Sep 2017 14:58:19 -0500 +Subject: [PATCH 05/42] tracing: Increase tracing map KEYS_MAX size +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +The current default for the number of subkeys in a compound key is 2, +which is too restrictive. Increase it to a more realistic value of 3. + +Signed-off-by: Tom Zanussi +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/trace/tracing_map.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/kernel/trace/tracing_map.h ++++ b/kernel/trace/tracing_map.h +@@ -6,7 +6,7 @@ + #define TRACING_MAP_BITS_MAX 17 + #define TRACING_MAP_BITS_MIN 7 + +-#define TRACING_MAP_KEYS_MAX 2 ++#define TRACING_MAP_KEYS_MAX 3 + #define TRACING_MAP_VALS_MAX 3 + #define TRACING_MAP_FIELDS_MAX (TRACING_MAP_KEYS_MAX + \ + TRACING_MAP_VALS_MAX) diff --git a/patches/features/all/rt/0006-hrtimer-Ensure-POSIX-compliance-relative-CLOCK_REALT.patch b/patches/features/all/rt/0006-hrtimer-Ensure-POSIX-compliance-relative-CLOCK_REALT.patch new file mode 100644 index 00000000000..2d1aaef6fa9 --- /dev/null +++ b/patches/features/all/rt/0006-hrtimer-Ensure-POSIX-compliance-relative-CLOCK_REALT.patch @@ -0,0 +1,41 @@ +From: Anna-Maria Gleixner +Date: Wed, 20 Dec 2017 17:12:55 +0100 +Subject: [PATCH 06/29] hrtimer: Ensure POSIX compliance (relative + CLOCK_REALTIME hrtimers) +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +POSIX specification defines, that relative CLOCK_REALTIME timers are not +affected by clock modifications. Those timers have to use CLOCK_MONOTONIC +to ensure POSIX compliance. + +The introduction of the additional mode HRTIMER_MODE_PINNED broke this +requirement for pinned timers. There is no user space visible impact +because user space timers are not using the pinned mode, but for +consistency reasons this needs to be fixed. + +Check whether the mode has the HRTIMER_MODE_REL bit set instead of +comparing with HRTIMER_MODE_ABS. + +Fixes: 597d0275736d ("timers: Framework for identifying pinned timers") +Signed-off-by: Anna-Maria Gleixner +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/time/hrtimer.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +--- a/kernel/time/hrtimer.c ++++ b/kernel/time/hrtimer.c +@@ -1097,7 +1097,12 @@ static void __hrtimer_init(struct hrtime + + cpu_base = raw_cpu_ptr(&hrtimer_bases); + +- if (clock_id == CLOCK_REALTIME && mode != HRTIMER_MODE_ABS) ++ /* ++ * Posix magic: Relative CLOCK_REALTIME timers are not affected by ++ * clock modifications, so they needs to become CLOCK_MONOTONIC to ++ * ensure Posix compliance. ++ */ ++ if (clock_id == CLOCK_REALTIME && mode & HRTIMER_MODE_REL) + clock_id = CLOCK_MONOTONIC; + + base = hrtimer_clockid_to_base(clock_id); diff --git a/patches/features/all/rt/0006-ring-buffer-Redefine-the-unimplemented-RINGBUF_TYPE_.patch b/patches/features/all/rt/0006-ring-buffer-Redefine-the-unimplemented-RINGBUF_TYPE_.patch new file mode 100644 index 00000000000..86bf281217c --- /dev/null +++ b/patches/features/all/rt/0006-ring-buffer-Redefine-the-unimplemented-RINGBUF_TYPE_.patch @@ -0,0 +1,319 @@ +From: Tom Zanussi +Date: Mon, 15 Jan 2018 20:51:40 -0600 +Subject: [PATCH 06/37] ring-buffer: Redefine the unimplemented + RINGBUF_TYPE_TIME_STAMP +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +RINGBUF_TYPE_TIME_STAMP is defined but not used, and from what I can +gather was reserved for something like an absolute timestamp feature +for the ring buffer, if not a complete replacement of the current +time_delta scheme. + +This code redefines RINGBUF_TYPE_TIME_STAMP to implement absolute time +stamps. Another way to look at it is that it essentially forces +extended time_deltas for all events. + +The motivation for doing this is to enable time_deltas that aren't +dependent on previous events in the ring buffer, making it feasible to +use the ring_buffer_event timetamps in a more random-access way, for +purposes other than serial event printing. + +To set/reset this mode, use tracing_set_timestamp_abs() from the +previous interface patch. + +Signed-off-by: Tom Zanussi +Signed-off-by: Sebastian Andrzej Siewior +--- + include/linux/ring_buffer.h | 12 ++--- + kernel/trace/ring_buffer.c | 104 ++++++++++++++++++++++++++++++++------------ + 2 files changed, 83 insertions(+), 33 deletions(-) + +--- a/include/linux/ring_buffer.h ++++ b/include/linux/ring_buffer.h +@@ -37,10 +37,12 @@ struct ring_buffer_event { + * array[0] = time delta (28 .. 59) + * size = 8 bytes + * +- * @RINGBUF_TYPE_TIME_STAMP: Sync time stamp with external clock +- * array[0] = tv_nsec +- * array[1..2] = tv_sec +- * size = 16 bytes ++ * @RINGBUF_TYPE_TIME_STAMP: Absolute timestamp ++ * Same format as TIME_EXTEND except that the ++ * value is an absolute timestamp, not a delta ++ * event.time_delta contains bottom 27 bits ++ * array[0] = top (28 .. 59) bits ++ * size = 8 bytes + * + * <= @RINGBUF_TYPE_DATA_TYPE_LEN_MAX: + * Data record +@@ -57,12 +59,12 @@ enum ring_buffer_type { + RINGBUF_TYPE_DATA_TYPE_LEN_MAX = 28, + RINGBUF_TYPE_PADDING, + RINGBUF_TYPE_TIME_EXTEND, +- /* FIXME: RINGBUF_TYPE_TIME_STAMP not implemented */ + RINGBUF_TYPE_TIME_STAMP, + }; + + unsigned ring_buffer_event_length(struct ring_buffer_event *event); + void *ring_buffer_event_data(struct ring_buffer_event *event); ++u64 ring_buffer_event_time_stamp(struct ring_buffer_event *event); + + /* + * ring_buffer_discard_commit will remove an event that has not +--- a/kernel/trace/ring_buffer.c ++++ b/kernel/trace/ring_buffer.c +@@ -42,6 +42,8 @@ int ring_buffer_print_entry_header(struc + RINGBUF_TYPE_PADDING); + trace_seq_printf(s, "\ttime_extend : type == %d\n", + RINGBUF_TYPE_TIME_EXTEND); ++ trace_seq_printf(s, "\ttime_stamp : type == %d\n", ++ RINGBUF_TYPE_TIME_STAMP); + trace_seq_printf(s, "\tdata max type_len == %d\n", + RINGBUF_TYPE_DATA_TYPE_LEN_MAX); + +@@ -141,12 +143,15 @@ int ring_buffer_print_entry_header(struc + + enum { + RB_LEN_TIME_EXTEND = 8, +- RB_LEN_TIME_STAMP = 16, ++ RB_LEN_TIME_STAMP = 8, + }; + + #define skip_time_extend(event) \ + ((struct ring_buffer_event *)((char *)event + RB_LEN_TIME_EXTEND)) + ++#define extended_time(event) \ ++ (event->type_len >= RINGBUF_TYPE_TIME_EXTEND) ++ + static inline int rb_null_event(struct ring_buffer_event *event) + { + return event->type_len == RINGBUF_TYPE_PADDING && !event->time_delta; +@@ -210,7 +215,7 @@ rb_event_ts_length(struct ring_buffer_ev + { + unsigned len = 0; + +- if (event->type_len == RINGBUF_TYPE_TIME_EXTEND) { ++ if (extended_time(event)) { + /* time extends include the data event after it */ + len = RB_LEN_TIME_EXTEND; + event = skip_time_extend(event); +@@ -232,7 +237,7 @@ unsigned ring_buffer_event_length(struct + { + unsigned length; + +- if (event->type_len == RINGBUF_TYPE_TIME_EXTEND) ++ if (extended_time(event)) + event = skip_time_extend(event); + + length = rb_event_length(event); +@@ -249,7 +254,7 @@ EXPORT_SYMBOL_GPL(ring_buffer_event_leng + static __always_inline void * + rb_event_data(struct ring_buffer_event *event) + { +- if (event->type_len == RINGBUF_TYPE_TIME_EXTEND) ++ if (extended_time(event)) + event = skip_time_extend(event); + BUG_ON(event->type_len > RINGBUF_TYPE_DATA_TYPE_LEN_MAX); + /* If length is in len field, then array[0] has the data */ +@@ -276,6 +281,27 @@ EXPORT_SYMBOL_GPL(ring_buffer_event_data + #define TS_MASK ((1ULL << TS_SHIFT) - 1) + #define TS_DELTA_TEST (~TS_MASK) + ++/** ++ * ring_buffer_event_time_stamp - return the event's extended timestamp ++ * @event: the event to get the timestamp of ++ * ++ * Returns the extended timestamp associated with a data event. ++ * An extended time_stamp is a 64-bit timestamp represented ++ * internally in a special way that makes the best use of space ++ * contained within a ring buffer event. This function decodes ++ * it and maps it to a straight u64 value. ++ */ ++u64 ring_buffer_event_time_stamp(struct ring_buffer_event *event) ++{ ++ u64 ts; ++ ++ ts = event->array[0]; ++ ts <<= TS_SHIFT; ++ ts += event->time_delta; ++ ++ return ts; ++} ++ + /* Flag when events were overwritten */ + #define RB_MISSED_EVENTS (1 << 31) + /* Missed count stored at end */ +@@ -2225,12 +2251,15 @@ rb_move_tail(struct ring_buffer_per_cpu + + /* Slow path, do not inline */ + static noinline struct ring_buffer_event * +-rb_add_time_stamp(struct ring_buffer_event *event, u64 delta) ++rb_add_time_stamp(struct ring_buffer_event *event, u64 delta, bool abs) + { +- event->type_len = RINGBUF_TYPE_TIME_EXTEND; ++ if (abs) ++ event->type_len = RINGBUF_TYPE_TIME_STAMP; ++ else ++ event->type_len = RINGBUF_TYPE_TIME_EXTEND; + +- /* Not the first event on the page? */ +- if (rb_event_index(event)) { ++ /* Not the first event on the page, or not delta? */ ++ if (abs || rb_event_index(event)) { + event->time_delta = delta & TS_MASK; + event->array[0] = delta >> TS_SHIFT; + } else { +@@ -2273,7 +2302,9 @@ rb_update_event(struct ring_buffer_per_c + * add it to the start of the resevered space. + */ + if (unlikely(info->add_timestamp)) { +- event = rb_add_time_stamp(event, delta); ++ bool abs = ring_buffer_time_stamp_abs(cpu_buffer->buffer); ++ ++ event = rb_add_time_stamp(event, info->delta, abs); + length -= RB_LEN_TIME_EXTEND; + delta = 0; + } +@@ -2461,7 +2492,7 @@ static __always_inline void rb_end_commi + + static inline void rb_event_discard(struct ring_buffer_event *event) + { +- if (event->type_len == RINGBUF_TYPE_TIME_EXTEND) ++ if (extended_time(event)) + event = skip_time_extend(event); + + /* array[0] holds the actual length for the discarded event */ +@@ -2505,10 +2536,11 @@ rb_update_write_stamp(struct ring_buffer + cpu_buffer->write_stamp = + cpu_buffer->commit_page->page->time_stamp; + else if (event->type_len == RINGBUF_TYPE_TIME_EXTEND) { +- delta = event->array[0]; +- delta <<= TS_SHIFT; +- delta += event->time_delta; ++ delta = ring_buffer_event_time_stamp(event); + cpu_buffer->write_stamp += delta; ++ } else if (event->type_len == RINGBUF_TYPE_TIME_STAMP) { ++ delta = ring_buffer_event_time_stamp(event); ++ cpu_buffer->write_stamp = delta; + } else + cpu_buffer->write_stamp += event->time_delta; + } +@@ -2661,7 +2693,7 @@ static struct ring_buffer_event * + * If this is the first commit on the page, then it has the same + * timestamp as the page itself. + */ +- if (!tail) ++ if (!tail && !ring_buffer_time_stamp_abs(cpu_buffer->buffer)) + info->delta = 0; + + /* See if we shot pass the end of this buffer page */ +@@ -2739,8 +2771,11 @@ rb_reserve_next_event(struct ring_buffer + /* make sure this diff is calculated here */ + barrier(); + +- /* Did the write stamp get updated already? */ +- if (likely(info.ts >= cpu_buffer->write_stamp)) { ++ if (ring_buffer_time_stamp_abs(buffer)) { ++ info.delta = info.ts; ++ rb_handle_timestamp(cpu_buffer, &info); ++ } else /* Did the write stamp get updated already? */ ++ if (likely(info.ts >= cpu_buffer->write_stamp)) { + info.delta = diff; + if (unlikely(test_time_stamp(info.delta))) + rb_handle_timestamp(cpu_buffer, &info); +@@ -3422,14 +3457,13 @@ rb_update_read_stamp(struct ring_buffer_ + return; + + case RINGBUF_TYPE_TIME_EXTEND: +- delta = event->array[0]; +- delta <<= TS_SHIFT; +- delta += event->time_delta; ++ delta = ring_buffer_event_time_stamp(event); + cpu_buffer->read_stamp += delta; + return; + + case RINGBUF_TYPE_TIME_STAMP: +- /* FIXME: not implemented */ ++ delta = ring_buffer_event_time_stamp(event); ++ cpu_buffer->read_stamp = delta; + return; + + case RINGBUF_TYPE_DATA: +@@ -3453,14 +3487,13 @@ rb_update_iter_read_stamp(struct ring_bu + return; + + case RINGBUF_TYPE_TIME_EXTEND: +- delta = event->array[0]; +- delta <<= TS_SHIFT; +- delta += event->time_delta; ++ delta = ring_buffer_event_time_stamp(event); + iter->read_stamp += delta; + return; + + case RINGBUF_TYPE_TIME_STAMP: +- /* FIXME: not implemented */ ++ delta = ring_buffer_event_time_stamp(event); ++ iter->read_stamp = delta; + return; + + case RINGBUF_TYPE_DATA: +@@ -3684,6 +3717,8 @@ rb_buffer_peek(struct ring_buffer_per_cp + struct buffer_page *reader; + int nr_loops = 0; + ++ if (ts) ++ *ts = 0; + again: + /* + * We repeat when a time extend is encountered. +@@ -3720,12 +3755,17 @@ rb_buffer_peek(struct ring_buffer_per_cp + goto again; + + case RINGBUF_TYPE_TIME_STAMP: +- /* FIXME: not implemented */ ++ if (ts) { ++ *ts = ring_buffer_event_time_stamp(event); ++ ring_buffer_normalize_time_stamp(cpu_buffer->buffer, ++ cpu_buffer->cpu, ts); ++ } ++ /* Internal data, OK to advance */ + rb_advance_reader(cpu_buffer); + goto again; + + case RINGBUF_TYPE_DATA: +- if (ts) { ++ if (ts && !(*ts)) { + *ts = cpu_buffer->read_stamp + event->time_delta; + ring_buffer_normalize_time_stamp(cpu_buffer->buffer, + cpu_buffer->cpu, ts); +@@ -3750,6 +3790,9 @@ rb_iter_peek(struct ring_buffer_iter *it + struct ring_buffer_event *event; + int nr_loops = 0; + ++ if (ts) ++ *ts = 0; ++ + cpu_buffer = iter->cpu_buffer; + buffer = cpu_buffer->buffer; + +@@ -3802,12 +3845,17 @@ rb_iter_peek(struct ring_buffer_iter *it + goto again; + + case RINGBUF_TYPE_TIME_STAMP: +- /* FIXME: not implemented */ ++ if (ts) { ++ *ts = ring_buffer_event_time_stamp(event); ++ ring_buffer_normalize_time_stamp(cpu_buffer->buffer, ++ cpu_buffer->cpu, ts); ++ } ++ /* Internal data, OK to advance */ + rb_advance_iter(iter); + goto again; + + case RINGBUF_TYPE_DATA: +- if (ts) { ++ if (ts && !(*ts)) { + *ts = iter->read_stamp + event->time_delta; + ring_buffer_normalize_time_stamp(buffer, + cpu_buffer->cpu, ts); diff --git a/patches/features/all/rt/0006-tracing-Make-traceprobe-parsing-code-reusable.patch b/patches/features/all/rt/0006-tracing-Make-traceprobe-parsing-code-reusable.patch new file mode 100644 index 00000000000..e5f376aa4eb --- /dev/null +++ b/patches/features/all/rt/0006-tracing-Make-traceprobe-parsing-code-reusable.patch @@ -0,0 +1,318 @@ +From: Tom Zanussi +Date: Fri, 22 Sep 2017 14:58:20 -0500 +Subject: [PATCH 06/42] tracing: Make traceprobe parsing code reusable +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +traceprobe_probes_write() and traceprobe_command() actually contain +nothing that ties them to kprobes - the code is generically useful for +similar types of parsing elsewhere, so separate it out and move it to +trace.c/trace.h. + +Other than moving it, the only change is in naming: +traceprobe_probes_write() becomes trace_parse_run_command() and +traceprobe_command() becomes trace_run_command(). + +Signed-off-by: Tom Zanussi +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/trace/trace.c | 86 ++++++++++++++++++++++++++++++++++++++++++++ + kernel/trace/trace.h | 7 +++ + kernel/trace/trace_kprobe.c | 18 ++++----- + kernel/trace/trace_probe.c | 86 -------------------------------------------- + kernel/trace/trace_probe.h | 7 --- + kernel/trace/trace_uprobe.c | 2 - + 6 files changed, 103 insertions(+), 103 deletions(-) + +--- a/kernel/trace/trace.c ++++ b/kernel/trace/trace.c +@@ -8265,6 +8265,92 @@ void ftrace_dump(enum ftrace_dump_mode o + } + EXPORT_SYMBOL_GPL(ftrace_dump); + ++int trace_run_command(const char *buf, int (*createfn)(int, char **)) ++{ ++ char **argv; ++ int argc, ret; ++ ++ argc = 0; ++ ret = 0; ++ argv = argv_split(GFP_KERNEL, buf, &argc); ++ if (!argv) ++ return -ENOMEM; ++ ++ if (argc) ++ ret = createfn(argc, argv); ++ ++ argv_free(argv); ++ ++ return ret; ++} ++ ++#define WRITE_BUFSIZE 4096 ++ ++ssize_t trace_parse_run_command(struct file *file, const char __user *buffer, ++ size_t count, loff_t *ppos, ++ int (*createfn)(int, char **)) ++{ ++ char *kbuf, *buf, *tmp; ++ int ret = 0; ++ size_t done = 0; ++ size_t size; ++ ++ kbuf = kmalloc(WRITE_BUFSIZE, GFP_KERNEL); ++ if (!kbuf) ++ return -ENOMEM; ++ ++ while (done < count) { ++ size = count - done; ++ ++ if (size >= WRITE_BUFSIZE) ++ size = WRITE_BUFSIZE - 1; ++ ++ if (copy_from_user(kbuf, buffer + done, size)) { ++ ret = -EFAULT; ++ goto out; ++ } ++ kbuf[size] = '\0'; ++ buf = kbuf; ++ do { ++ tmp = strchr(buf, '\n'); ++ if (tmp) { ++ *tmp = '\0'; ++ size = tmp - buf + 1; ++ } else { ++ size = strlen(buf); ++ if (done + size < count) { ++ if (buf != kbuf) ++ break; ++ /* This can accept WRITE_BUFSIZE - 2 ('\n' + '\0') */ ++ pr_warn("Line length is too long: Should be less than %d\n", ++ WRITE_BUFSIZE - 2); ++ ret = -EINVAL; ++ goto out; ++ } ++ } ++ done += size; ++ ++ /* Remove comments */ ++ tmp = strchr(buf, '#'); ++ ++ if (tmp) ++ *tmp = '\0'; ++ ++ ret = trace_run_command(buf, createfn); ++ if (ret) ++ goto out; ++ buf += size; ++ ++ } while (done < count); ++ } ++ ret = done; ++ ++out: ++ kfree(kbuf); ++ ++ return ret; ++} ++ + __init static int tracer_alloc_buffers(void) + { + int ring_buf_size; +--- a/kernel/trace/trace.h ++++ b/kernel/trace/trace.h +@@ -1755,6 +1755,13 @@ void trace_printk_start_comm(void); + int trace_keep_overwrite(struct tracer *tracer, u32 mask, int set); + int set_tracer_flag(struct trace_array *tr, unsigned int mask, int enabled); + ++#define MAX_EVENT_NAME_LEN 64 ++ ++extern int trace_run_command(const char *buf, int (*createfn)(int, char**)); ++extern ssize_t trace_parse_run_command(struct file *file, ++ const char __user *buffer, size_t count, loff_t *ppos, ++ int (*createfn)(int, char**)); ++ + /* + * Normal trace_printk() and friends allocates special buffers + * to do the manipulation, as well as saves the print formats +--- a/kernel/trace/trace_kprobe.c ++++ b/kernel/trace/trace_kprobe.c +@@ -907,8 +907,8 @@ static int probes_open(struct inode *ino + static ssize_t probes_write(struct file *file, const char __user *buffer, + size_t count, loff_t *ppos) + { +- return traceprobe_probes_write(file, buffer, count, ppos, +- create_trace_kprobe); ++ return trace_parse_run_command(file, buffer, count, ppos, ++ create_trace_kprobe); + } + + static const struct file_operations kprobe_events_ops = { +@@ -1433,9 +1433,9 @@ static __init int kprobe_trace_self_test + + pr_info("Testing kprobe tracing: "); + +- ret = traceprobe_command("p:testprobe kprobe_trace_selftest_target " +- "$stack $stack0 +0($stack)", +- create_trace_kprobe); ++ ret = trace_run_command("p:testprobe kprobe_trace_selftest_target " ++ "$stack $stack0 +0($stack)", ++ create_trace_kprobe); + if (WARN_ON_ONCE(ret)) { + pr_warn("error on probing function entry.\n"); + warn++; +@@ -1455,8 +1455,8 @@ static __init int kprobe_trace_self_test + } + } + +- ret = traceprobe_command("r:testprobe2 kprobe_trace_selftest_target " +- "$retval", create_trace_kprobe); ++ ret = trace_run_command("r:testprobe2 kprobe_trace_selftest_target " ++ "$retval", create_trace_kprobe); + if (WARN_ON_ONCE(ret)) { + pr_warn("error on probing function return.\n"); + warn++; +@@ -1526,13 +1526,13 @@ static __init int kprobe_trace_self_test + disable_trace_kprobe(tk, file); + } + +- ret = traceprobe_command("-:testprobe", create_trace_kprobe); ++ ret = trace_run_command("-:testprobe", create_trace_kprobe); + if (WARN_ON_ONCE(ret)) { + pr_warn("error on deleting a probe.\n"); + warn++; + } + +- ret = traceprobe_command("-:testprobe2", create_trace_kprobe); ++ ret = trace_run_command("-:testprobe2", create_trace_kprobe); + if (WARN_ON_ONCE(ret)) { + pr_warn("error on deleting a probe.\n"); + warn++; +--- a/kernel/trace/trace_probe.c ++++ b/kernel/trace/trace_probe.c +@@ -623,92 +623,6 @@ void traceprobe_free_probe_arg(struct pr + kfree(arg->comm); + } + +-int traceprobe_command(const char *buf, int (*createfn)(int, char **)) +-{ +- char **argv; +- int argc, ret; +- +- argc = 0; +- ret = 0; +- argv = argv_split(GFP_KERNEL, buf, &argc); +- if (!argv) +- return -ENOMEM; +- +- if (argc) +- ret = createfn(argc, argv); +- +- argv_free(argv); +- +- return ret; +-} +- +-#define WRITE_BUFSIZE 4096 +- +-ssize_t traceprobe_probes_write(struct file *file, const char __user *buffer, +- size_t count, loff_t *ppos, +- int (*createfn)(int, char **)) +-{ +- char *kbuf, *buf, *tmp; +- int ret = 0; +- size_t done = 0; +- size_t size; +- +- kbuf = kmalloc(WRITE_BUFSIZE, GFP_KERNEL); +- if (!kbuf) +- return -ENOMEM; +- +- while (done < count) { +- size = count - done; +- +- if (size >= WRITE_BUFSIZE) +- size = WRITE_BUFSIZE - 1; +- +- if (copy_from_user(kbuf, buffer + done, size)) { +- ret = -EFAULT; +- goto out; +- } +- kbuf[size] = '\0'; +- buf = kbuf; +- do { +- tmp = strchr(buf, '\n'); +- if (tmp) { +- *tmp = '\0'; +- size = tmp - buf + 1; +- } else { +- size = strlen(buf); +- if (done + size < count) { +- if (buf != kbuf) +- break; +- /* This can accept WRITE_BUFSIZE - 2 ('\n' + '\0') */ +- pr_warn("Line length is too long: Should be less than %d\n", +- WRITE_BUFSIZE - 2); +- ret = -EINVAL; +- goto out; +- } +- } +- done += size; +- +- /* Remove comments */ +- tmp = strchr(buf, '#'); +- +- if (tmp) +- *tmp = '\0'; +- +- ret = traceprobe_command(buf, createfn); +- if (ret) +- goto out; +- buf += size; +- +- } while (done < count); +- } +- ret = done; +- +-out: +- kfree(kbuf); +- +- return ret; +-} +- + static int __set_print_fmt(struct trace_probe *tp, char *buf, int len, + bool is_return) + { +--- a/kernel/trace/trace_probe.h ++++ b/kernel/trace/trace_probe.h +@@ -42,7 +42,6 @@ + + #define MAX_TRACE_ARGS 128 + #define MAX_ARGSTR_LEN 63 +-#define MAX_EVENT_NAME_LEN 64 + #define MAX_STRING_SIZE PATH_MAX + + /* Reserved field names */ +@@ -356,12 +355,6 @@ extern void traceprobe_free_probe_arg(st + + extern int traceprobe_split_symbol_offset(char *symbol, unsigned long *offset); + +-extern ssize_t traceprobe_probes_write(struct file *file, +- const char __user *buffer, size_t count, loff_t *ppos, +- int (*createfn)(int, char**)); +- +-extern int traceprobe_command(const char *buf, int (*createfn)(int, char**)); +- + /* Sum up total data length for dynamic arraies (strings) */ + static nokprobe_inline int + __get_data_size(struct trace_probe *tp, struct pt_regs *regs) +--- a/kernel/trace/trace_uprobe.c ++++ b/kernel/trace/trace_uprobe.c +@@ -651,7 +651,7 @@ static int probes_open(struct inode *ino + static ssize_t probes_write(struct file *file, const char __user *buffer, + size_t count, loff_t *ppos) + { +- return traceprobe_probes_write(file, buffer, count, ppos, create_trace_uprobe); ++ return trace_parse_run_command(file, buffer, count, ppos, create_trace_uprobe); + } + + static const struct file_operations uprobe_events_ops = { diff --git a/patches/features/all/rt/0007-hrtimer-Cleanup-hrtimer_mode-enum.patch b/patches/features/all/rt/0007-hrtimer-Cleanup-hrtimer_mode-enum.patch new file mode 100644 index 00000000000..93f41a34c02 --- /dev/null +++ b/patches/features/all/rt/0007-hrtimer-Cleanup-hrtimer_mode-enum.patch @@ -0,0 +1,46 @@ +From: Anna-Maria Gleixner +Date: Wed, 20 Dec 2017 17:12:56 +0100 +Subject: [PATCH 07/29] hrtimer: Cleanup hrtimer_mode enum +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +It's not obvious that the HRTIMER_MODE variants are bit combinations +because all modes are hard coded constants. + +Change it so the bit meanings are clear and use the symbols for creating +modes which combine bits. + +While at it get rid of the ugly tail comments. + +Signed-off-by: Anna-Maria Gleixner +Signed-off-by: Sebastian Andrzej Siewior +--- + include/linux/hrtimer.h | 16 +++++++++++----- + 1 file changed, 11 insertions(+), 5 deletions(-) + +--- a/include/linux/hrtimer.h ++++ b/include/linux/hrtimer.h +@@ -28,13 +28,19 @@ struct hrtimer_cpu_base; + + /* + * Mode arguments of xxx_hrtimer functions: ++ * ++ * HRTIMER_MODE_ABS - Time value is absolute ++ * HRTIMER_MODE_REL - Time value is relative to now ++ * HRTIMER_MODE_PINNED - Timer is bound to CPU (is only considered ++ * when starting the timer) + */ + enum hrtimer_mode { +- HRTIMER_MODE_ABS = 0x0, /* Time value is absolute */ +- HRTIMER_MODE_REL = 0x1, /* Time value is relative to now */ +- HRTIMER_MODE_PINNED = 0x02, /* Timer is bound to CPU */ +- HRTIMER_MODE_ABS_PINNED = 0x02, +- HRTIMER_MODE_REL_PINNED = 0x03, ++ HRTIMER_MODE_ABS = 0x00, ++ HRTIMER_MODE_REL = 0x01, ++ HRTIMER_MODE_PINNED = 0x02, ++ ++ HRTIMER_MODE_ABS_PINNED = HRTIMER_MODE_ABS | HRTIMER_MODE_PINNED, ++ HRTIMER_MODE_REL_PINNED = HRTIMER_MODE_REL | HRTIMER_MODE_PINNED, + }; + + /* diff --git a/patches/features/all/rt/0007-tracing-Add-timestamp_mode-trace-file.patch b/patches/features/all/rt/0007-tracing-Add-timestamp_mode-trace-file.patch new file mode 100644 index 00000000000..1b62a0936ff --- /dev/null +++ b/patches/features/all/rt/0007-tracing-Add-timestamp_mode-trace-file.patch @@ -0,0 +1,134 @@ +From: Tom Zanussi +Date: Mon, 15 Jan 2018 20:51:41 -0600 +Subject: [PATCH 07/37] tracing: Add timestamp_mode trace file +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Add a new option flag indicating whether or not the ring buffer is in +'absolute timestamp' mode. + +Currently this is only set/unset by hist triggers that make use of a +common_timestamp. As such, there's no reason to make this writeable +for users - its purpose is only to allow users to determine +unequivocally whether or not the ring buffer is in that mode (although +absolute timestamps can coexist with the normal delta timestamps, when +the ring buffer is in absolute mode, timestamps written while absolute +mode is in effect take up more space in the buffer, and are not as +efficient). + +Signed-off-by: Tom Zanussi +Signed-off-by: Sebastian Andrzej Siewior +--- + Documentation/trace/ftrace.txt | 24 ++++++++++++++++++++ + kernel/trace/trace.c | 47 +++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 71 insertions(+) + +--- a/Documentation/trace/ftrace.txt ++++ b/Documentation/trace/ftrace.txt +@@ -539,6 +539,30 @@ After mounting tracefs you will have acc + + See events.txt for more information. + ++ timestamp_mode: ++ ++ Certain tracers may change the timestamp mode used when ++ logging trace events into the event buffer. Events with ++ different modes can coexist within a buffer but the mode in ++ effect when an event is logged determines which timestamp mode ++ is used for that event. The default timestamp mode is ++ 'delta'. ++ ++ Usual timestamp modes for tracing: ++ ++ # cat timestamp_mode ++ [delta] absolute ++ ++ The timestamp mode with the square brackets around it is the ++ one in effect. ++ ++ delta: Default timestamp mode - timestamp is a delta against ++ a per-buffer timestamp. ++ ++ absolute: The timestamp is a full timestamp, not a delta ++ against some other value. As such it takes up more ++ space and is less efficient. ++ + hwlat_detector: + + Directory for the Hardware Latency Detector. +--- a/kernel/trace/trace.c ++++ b/kernel/trace/trace.c +@@ -4520,6 +4520,9 @@ static const char readme_msg[] = + #ifdef CONFIG_X86_64 + " x86-tsc: TSC cycle counter\n" + #endif ++ "\n timestamp_mode\t-view the mode used to timestamp events\n" ++ " delta: Delta difference against a buffer-wide timestamp\n" ++ " absolute: Absolute (standalone) timestamp\n" + "\n trace_marker\t\t- Writes into this file writes into the kernel buffer\n" + "\n trace_marker_raw\t\t- Writes into this file writes binary data into the kernel buffer\n" + " tracing_cpumask\t- Limit which CPUs to trace\n" +@@ -6287,6 +6290,40 @@ static int tracing_clock_open(struct ino + return ret; + } + ++static int tracing_time_stamp_mode_show(struct seq_file *m, void *v) ++{ ++ struct trace_array *tr = m->private; ++ ++ mutex_lock(&trace_types_lock); ++ ++ if (ring_buffer_time_stamp_abs(tr->trace_buffer.buffer)) ++ seq_puts(m, "delta [absolute]\n"); ++ else ++ seq_puts(m, "[delta] absolute\n"); ++ ++ mutex_unlock(&trace_types_lock); ++ ++ return 0; ++} ++ ++static int tracing_time_stamp_mode_open(struct inode *inode, struct file *file) ++{ ++ struct trace_array *tr = inode->i_private; ++ int ret; ++ ++ if (tracing_disabled) ++ return -ENODEV; ++ ++ if (trace_array_get(tr)) ++ return -ENODEV; ++ ++ ret = single_open(file, tracing_time_stamp_mode_show, inode->i_private); ++ if (ret < 0) ++ trace_array_put(tr); ++ ++ return ret; ++} ++ + int tracing_set_time_stamp_abs(struct trace_array *tr, bool abs) + { + int ret = 0; +@@ -6565,6 +6602,13 @@ static const struct file_operations trac + .write = tracing_clock_write, + }; + ++static const struct file_operations trace_time_stamp_mode_fops = { ++ .open = tracing_time_stamp_mode_open, ++ .read = seq_read, ++ .llseek = seq_lseek, ++ .release = tracing_single_release_tr, ++}; ++ + #ifdef CONFIG_TRACER_SNAPSHOT + static const struct file_operations snapshot_fops = { + .open = tracing_snapshot_open, +@@ -7887,6 +7931,9 @@ init_tracer_tracefs(struct trace_array * + trace_create_file("tracing_on", 0644, d_tracer, + tr, &rb_simple_fops); + ++ trace_create_file("timestamp_mode", 0444, d_tracer, tr, ++ &trace_time_stamp_mode_fops); ++ + create_trace_options_dir(tr); + + #if defined(CONFIG_TRACER_MAX_TRACE) || defined(CONFIG_HWLAT_TRACER) diff --git a/patches/features/all/rt/0007-tracing-Clean-up-hist_field_flags-enum.patch b/patches/features/all/rt/0007-tracing-Clean-up-hist_field_flags-enum.patch new file mode 100644 index 00000000000..0f107945873 --- /dev/null +++ b/patches/features/all/rt/0007-tracing-Clean-up-hist_field_flags-enum.patch @@ -0,0 +1,44 @@ +From: Tom Zanussi +Date: Fri, 22 Sep 2017 14:58:21 -0500 +Subject: [PATCH 07/42] tracing: Clean up hist_field_flags enum +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +As we add more flags, specifying explicit integers for the flag values +becomes more unwieldy and error-prone - switch them over to left-shift +values. + +Signed-off-by: Tom Zanussi +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/trace/trace_events_hist.c | 20 ++++++++++---------- + 1 file changed, 10 insertions(+), 10 deletions(-) + +--- a/kernel/trace/trace_events_hist.c ++++ b/kernel/trace/trace_events_hist.c +@@ -110,16 +110,16 @@ DEFINE_HIST_FIELD_FN(u8); + #define HIST_KEY_SIZE_MAX (MAX_FILTER_STR_VAL + HIST_STACKTRACE_SIZE) + + enum hist_field_flags { +- HIST_FIELD_FL_HITCOUNT = 1, +- HIST_FIELD_FL_KEY = 2, +- HIST_FIELD_FL_STRING = 4, +- HIST_FIELD_FL_HEX = 8, +- HIST_FIELD_FL_SYM = 16, +- HIST_FIELD_FL_SYM_OFFSET = 32, +- HIST_FIELD_FL_EXECNAME = 64, +- HIST_FIELD_FL_SYSCALL = 128, +- HIST_FIELD_FL_STACKTRACE = 256, +- HIST_FIELD_FL_LOG2 = 512, ++ HIST_FIELD_FL_HITCOUNT = 1 << 0, ++ HIST_FIELD_FL_KEY = 1 << 1, ++ HIST_FIELD_FL_STRING = 1 << 2, ++ HIST_FIELD_FL_HEX = 1 << 3, ++ HIST_FIELD_FL_SYM = 1 << 4, ++ HIST_FIELD_FL_SYM_OFFSET = 1 << 5, ++ HIST_FIELD_FL_EXECNAME = 1 << 6, ++ HIST_FIELD_FL_SYSCALL = 1 << 7, ++ HIST_FIELD_FL_STACKTRACE = 1 << 8, ++ HIST_FIELD_FL_LOG2 = 1 << 9, + }; + + struct hist_trigger_attrs { diff --git a/patches/features/all/rt/0008-tracing-Add-hist_field_name-accessor.patch b/patches/features/all/rt/0008-tracing-Add-hist_field_name-accessor.patch new file mode 100644 index 00000000000..6c0f01eaecb --- /dev/null +++ b/patches/features/all/rt/0008-tracing-Add-hist_field_name-accessor.patch @@ -0,0 +1,175 @@ +From: Tom Zanussi +Date: Fri, 22 Sep 2017 14:58:22 -0500 +Subject: [PATCH 08/42] tracing: Add hist_field_name() accessor +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +In preparation for hist_fields that won't be strictly based on +trace_event_fields, add a new hist_field_name() accessor to allow that +flexibility and update associated users. + +Signed-off-by: Tom Zanussi +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/trace/trace_events_hist.c | 67 ++++++++++++++++++++++++++------------- + 1 file changed, 45 insertions(+), 22 deletions(-) + +--- a/kernel/trace/trace_events_hist.c ++++ b/kernel/trace/trace_events_hist.c +@@ -146,6 +146,23 @@ struct hist_trigger_data { + struct tracing_map *map; + }; + ++static const char *hist_field_name(struct hist_field *field, ++ unsigned int level) ++{ ++ const char *field_name = ""; ++ ++ if (level > 1) ++ return field_name; ++ ++ if (field->field) ++ field_name = field->field->name; ++ ++ if (field_name == NULL) ++ field_name = ""; ++ ++ return field_name; ++} ++ + static hist_field_fn_t select_value_fn(int field_size, int field_is_signed) + { + hist_field_fn_t fn = NULL; +@@ -653,7 +670,6 @@ static int is_descending(const char *str + static int create_sort_keys(struct hist_trigger_data *hist_data) + { + char *fields_str = hist_data->attrs->sort_key_str; +- struct ftrace_event_field *field = NULL; + struct tracing_map_sort_key *sort_key; + int descending, ret = 0; + unsigned int i, j; +@@ -670,7 +686,9 @@ static int create_sort_keys(struct hist_ + } + + for (i = 0; i < TRACING_MAP_SORT_KEYS_MAX; i++) { ++ struct hist_field *hist_field; + char *field_str, *field_name; ++ const char *test_name; + + sort_key = &hist_data->sort_keys[i]; + +@@ -703,8 +721,10 @@ static int create_sort_keys(struct hist_ + } + + for (j = 1; j < hist_data->n_fields; j++) { +- field = hist_data->fields[j]->field; +- if (field && (strcmp(field_name, field->name) == 0)) { ++ hist_field = hist_data->fields[j]; ++ test_name = hist_field_name(hist_field, 0); ++ ++ if (strcmp(field_name, test_name) == 0) { + sort_key->field_idx = j; + descending = is_descending(field_str); + if (descending < 0) { +@@ -952,6 +972,7 @@ hist_trigger_entry_print(struct seq_file + struct hist_field *key_field; + char str[KSYM_SYMBOL_LEN]; + bool multiline = false; ++ const char *field_name; + unsigned int i; + u64 uval; + +@@ -963,26 +984,27 @@ hist_trigger_entry_print(struct seq_file + if (i > hist_data->n_vals) + seq_puts(m, ", "); + ++ field_name = hist_field_name(key_field, 0); ++ + if (key_field->flags & HIST_FIELD_FL_HEX) { + uval = *(u64 *)(key + key_field->offset); +- seq_printf(m, "%s: %llx", +- key_field->field->name, uval); ++ seq_printf(m, "%s: %llx", field_name, uval); + } else if (key_field->flags & HIST_FIELD_FL_SYM) { + uval = *(u64 *)(key + key_field->offset); + sprint_symbol_no_offset(str, uval); +- seq_printf(m, "%s: [%llx] %-45s", +- key_field->field->name, uval, str); ++ seq_printf(m, "%s: [%llx] %-45s", field_name, ++ uval, str); + } else if (key_field->flags & HIST_FIELD_FL_SYM_OFFSET) { + uval = *(u64 *)(key + key_field->offset); + sprint_symbol(str, uval); +- seq_printf(m, "%s: [%llx] %-55s", +- key_field->field->name, uval, str); ++ seq_printf(m, "%s: [%llx] %-55s", field_name, ++ uval, str); + } else if (key_field->flags & HIST_FIELD_FL_EXECNAME) { + char *comm = elt->private_data; + + uval = *(u64 *)(key + key_field->offset); +- seq_printf(m, "%s: %-16s[%10llu]", +- key_field->field->name, comm, uval); ++ seq_printf(m, "%s: %-16s[%10llu]", field_name, ++ comm, uval); + } else if (key_field->flags & HIST_FIELD_FL_SYSCALL) { + const char *syscall_name; + +@@ -991,8 +1013,8 @@ hist_trigger_entry_print(struct seq_file + if (!syscall_name) + syscall_name = "unknown_syscall"; + +- seq_printf(m, "%s: %-30s[%3llu]", +- key_field->field->name, syscall_name, uval); ++ seq_printf(m, "%s: %-30s[%3llu]", field_name, ++ syscall_name, uval); + } else if (key_field->flags & HIST_FIELD_FL_STACKTRACE) { + seq_puts(m, "stacktrace:\n"); + hist_trigger_stacktrace_print(m, +@@ -1000,15 +1022,14 @@ hist_trigger_entry_print(struct seq_file + HIST_STACKTRACE_DEPTH); + multiline = true; + } else if (key_field->flags & HIST_FIELD_FL_LOG2) { +- seq_printf(m, "%s: ~ 2^%-2llu", key_field->field->name, ++ seq_printf(m, "%s: ~ 2^%-2llu", field_name, + *(u64 *)(key + key_field->offset)); + } else if (key_field->flags & HIST_FIELD_FL_STRING) { +- seq_printf(m, "%s: %-50s", key_field->field->name, ++ seq_printf(m, "%s: %-50s", field_name, + (char *)(key + key_field->offset)); + } else { + uval = *(u64 *)(key + key_field->offset); +- seq_printf(m, "%s: %10llu", key_field->field->name, +- uval); ++ seq_printf(m, "%s: %10llu", field_name, uval); + } + } + +@@ -1021,13 +1042,13 @@ hist_trigger_entry_print(struct seq_file + tracing_map_read_sum(elt, HITCOUNT_IDX)); + + for (i = 1; i < hist_data->n_vals; i++) { ++ field_name = hist_field_name(hist_data->fields[i], 0); ++ + if (hist_data->fields[i]->flags & HIST_FIELD_FL_HEX) { +- seq_printf(m, " %s: %10llx", +- hist_data->fields[i]->field->name, ++ seq_printf(m, " %s: %10llx", field_name, + tracing_map_read_sum(elt, i)); + } else { +- seq_printf(m, " %s: %10llu", +- hist_data->fields[i]->field->name, ++ seq_printf(m, " %s: %10llu", field_name, + tracing_map_read_sum(elt, i)); + } + } +@@ -1142,7 +1163,9 @@ static const char *get_hist_field_flags( + + static void hist_field_print(struct seq_file *m, struct hist_field *hist_field) + { +- seq_printf(m, "%s", hist_field->field->name); ++ const char *field_name = hist_field_name(hist_field, 0); ++ ++ seq_printf(m, "%s", field_name); + if (hist_field->flags) { + const char *flags_str = get_hist_field_flags(hist_field); + diff --git a/patches/features/all/rt/0008-tracing-Give-event-triggers-access-to-ring_buffer_ev.patch b/patches/features/all/rt/0008-tracing-Give-event-triggers-access-to-ring_buffer_ev.patch new file mode 100644 index 00000000000..55bffad6726 --- /dev/null +++ b/patches/features/all/rt/0008-tracing-Give-event-triggers-access-to-ring_buffer_ev.patch @@ -0,0 +1,299 @@ +From: Tom Zanussi +Date: Mon, 15 Jan 2018 20:51:42 -0600 +Subject: [PATCH 08/37] tracing: Give event triggers access to + ring_buffer_event +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +The ring_buffer event can provide a timestamp that may be useful to +various triggers - pass it into the handlers for that purpose. + +Signed-off-by: Tom Zanussi +Signed-off-by: Sebastian Andrzej Siewior +--- + include/linux/trace_events.h | 14 ++++++---- + kernel/trace/trace.h | 9 +++--- + kernel/trace/trace_events_hist.c | 11 +++++--- + kernel/trace/trace_events_trigger.c | 47 ++++++++++++++++++++++-------------- + 4 files changed, 49 insertions(+), 32 deletions(-) + +--- a/include/linux/trace_events.h ++++ b/include/linux/trace_events.h +@@ -402,11 +402,13 @@ enum event_trigger_type { + + extern int filter_match_preds(struct event_filter *filter, void *rec); + +-extern enum event_trigger_type event_triggers_call(struct trace_event_file *file, +- void *rec); +-extern void event_triggers_post_call(struct trace_event_file *file, +- enum event_trigger_type tt, +- void *rec); ++extern enum event_trigger_type ++event_triggers_call(struct trace_event_file *file, void *rec, ++ struct ring_buffer_event *event); ++extern void ++event_triggers_post_call(struct trace_event_file *file, ++ enum event_trigger_type tt, ++ void *rec, struct ring_buffer_event *event); + + bool trace_event_ignore_this_pid(struct trace_event_file *trace_file); + +@@ -426,7 +428,7 @@ trace_trigger_soft_disabled(struct trace + + if (!(eflags & EVENT_FILE_FL_TRIGGER_COND)) { + if (eflags & EVENT_FILE_FL_TRIGGER_MODE) +- event_triggers_call(file, NULL); ++ event_triggers_call(file, NULL, NULL); + if (eflags & EVENT_FILE_FL_SOFT_DISABLED) + return true; + if (eflags & EVENT_FILE_FL_PID_FILTER) +--- a/kernel/trace/trace.h ++++ b/kernel/trace/trace.h +@@ -1296,7 +1296,7 @@ static inline bool + unsigned long eflags = file->flags; + + if (eflags & EVENT_FILE_FL_TRIGGER_COND) +- *tt = event_triggers_call(file, entry); ++ *tt = event_triggers_call(file, entry, event); + + if (test_bit(EVENT_FILE_FL_SOFT_DISABLED_BIT, &file->flags) || + (unlikely(file->flags & EVENT_FILE_FL_FILTERED) && +@@ -1333,7 +1333,7 @@ event_trigger_unlock_commit(struct trace + trace_buffer_unlock_commit(file->tr, buffer, event, irq_flags, pc); + + if (tt) +- event_triggers_post_call(file, tt, entry); ++ event_triggers_post_call(file, tt, entry, event); + } + + /** +@@ -1366,7 +1366,7 @@ event_trigger_unlock_commit_regs(struct + irq_flags, pc, regs); + + if (tt) +- event_triggers_post_call(file, tt, entry); ++ event_triggers_post_call(file, tt, entry, event); + } + + #define FILTER_PRED_INVALID ((unsigned short)-1) +@@ -1591,7 +1591,8 @@ extern int register_trigger_hist_enable_ + */ + struct event_trigger_ops { + void (*func)(struct event_trigger_data *data, +- void *rec); ++ void *rec, ++ struct ring_buffer_event *rbe); + int (*init)(struct event_trigger_ops *ops, + struct event_trigger_data *data); + void (*free)(struct event_trigger_ops *ops, +--- a/kernel/trace/trace_events_hist.c ++++ b/kernel/trace/trace_events_hist.c +@@ -909,7 +909,8 @@ static inline void add_to_key(char *comp + memcpy(compound_key + key_field->offset, key, size); + } + +-static void event_hist_trigger(struct event_trigger_data *data, void *rec) ++static void event_hist_trigger(struct event_trigger_data *data, void *rec, ++ struct ring_buffer_event *event) + { + struct hist_trigger_data *hist_data = data->private_data; + bool use_compound_key = (hist_data->n_keys > 1); +@@ -1660,7 +1661,8 @@ static struct event_command trigger_hist + } + + static void +-hist_enable_trigger(struct event_trigger_data *data, void *rec) ++hist_enable_trigger(struct event_trigger_data *data, void *rec, ++ struct ring_buffer_event *event) + { + struct enable_trigger_data *enable_data = data->private_data; + struct event_trigger_data *test; +@@ -1676,7 +1678,8 @@ hist_enable_trigger(struct event_trigger + } + + static void +-hist_enable_count_trigger(struct event_trigger_data *data, void *rec) ++hist_enable_count_trigger(struct event_trigger_data *data, void *rec, ++ struct ring_buffer_event *event) + { + if (!data->count) + return; +@@ -1684,7 +1687,7 @@ hist_enable_count_trigger(struct event_t + if (data->count != -1) + (data->count)--; + +- hist_enable_trigger(data, rec); ++ hist_enable_trigger(data, rec, event); + } + + static struct event_trigger_ops hist_enable_trigger_ops = { +--- a/kernel/trace/trace_events_trigger.c ++++ b/kernel/trace/trace_events_trigger.c +@@ -63,7 +63,8 @@ void trigger_data_free(struct event_trig + * any trigger that should be deferred, ETT_NONE if nothing to defer. + */ + enum event_trigger_type +-event_triggers_call(struct trace_event_file *file, void *rec) ++event_triggers_call(struct trace_event_file *file, void *rec, ++ struct ring_buffer_event *event) + { + struct event_trigger_data *data; + enum event_trigger_type tt = ETT_NONE; +@@ -76,7 +77,7 @@ event_triggers_call(struct trace_event_f + if (data->paused) + continue; + if (!rec) { +- data->ops->func(data, rec); ++ data->ops->func(data, rec, event); + continue; + } + filter = rcu_dereference_sched(data->filter); +@@ -86,7 +87,7 @@ event_triggers_call(struct trace_event_f + tt |= data->cmd_ops->trigger_type; + continue; + } +- data->ops->func(data, rec); ++ data->ops->func(data, rec, event); + } + return tt; + } +@@ -108,7 +109,7 @@ EXPORT_SYMBOL_GPL(event_triggers_call); + void + event_triggers_post_call(struct trace_event_file *file, + enum event_trigger_type tt, +- void *rec) ++ void *rec, struct ring_buffer_event *event) + { + struct event_trigger_data *data; + +@@ -116,7 +117,7 @@ event_triggers_post_call(struct trace_ev + if (data->paused) + continue; + if (data->cmd_ops->trigger_type & tt) +- data->ops->func(data, rec); ++ data->ops->func(data, rec, event); + } + } + EXPORT_SYMBOL_GPL(event_triggers_post_call); +@@ -909,7 +910,8 @@ void set_named_trigger_data(struct event + } + + static void +-traceon_trigger(struct event_trigger_data *data, void *rec) ++traceon_trigger(struct event_trigger_data *data, void *rec, ++ struct ring_buffer_event *event) + { + if (tracing_is_on()) + return; +@@ -918,7 +920,8 @@ traceon_trigger(struct event_trigger_dat + } + + static void +-traceon_count_trigger(struct event_trigger_data *data, void *rec) ++traceon_count_trigger(struct event_trigger_data *data, void *rec, ++ struct ring_buffer_event *event) + { + if (tracing_is_on()) + return; +@@ -933,7 +936,8 @@ traceon_count_trigger(struct event_trigg + } + + static void +-traceoff_trigger(struct event_trigger_data *data, void *rec) ++traceoff_trigger(struct event_trigger_data *data, void *rec, ++ struct ring_buffer_event *event) + { + if (!tracing_is_on()) + return; +@@ -942,7 +946,8 @@ traceoff_trigger(struct event_trigger_da + } + + static void +-traceoff_count_trigger(struct event_trigger_data *data, void *rec) ++traceoff_count_trigger(struct event_trigger_data *data, void *rec, ++ struct ring_buffer_event *event) + { + if (!tracing_is_on()) + return; +@@ -1039,13 +1044,15 @@ static struct event_command trigger_trac + + #ifdef CONFIG_TRACER_SNAPSHOT + static void +-snapshot_trigger(struct event_trigger_data *data, void *rec) ++snapshot_trigger(struct event_trigger_data *data, void *rec, ++ struct ring_buffer_event *event) + { + tracing_snapshot(); + } + + static void +-snapshot_count_trigger(struct event_trigger_data *data, void *rec) ++snapshot_count_trigger(struct event_trigger_data *data, void *rec, ++ struct ring_buffer_event *event) + { + if (!data->count) + return; +@@ -1053,7 +1060,7 @@ snapshot_count_trigger(struct event_trig + if (data->count != -1) + (data->count)--; + +- snapshot_trigger(data, rec); ++ snapshot_trigger(data, rec, event); + } + + static int +@@ -1132,13 +1139,15 @@ static __init int register_trigger_snaps + #define STACK_SKIP 3 + + static void +-stacktrace_trigger(struct event_trigger_data *data, void *rec) ++stacktrace_trigger(struct event_trigger_data *data, void *rec, ++ struct ring_buffer_event *event) + { + trace_dump_stack(STACK_SKIP); + } + + static void +-stacktrace_count_trigger(struct event_trigger_data *data, void *rec) ++stacktrace_count_trigger(struct event_trigger_data *data, void *rec, ++ struct ring_buffer_event *event) + { + if (!data->count) + return; +@@ -1146,7 +1155,7 @@ stacktrace_count_trigger(struct event_tr + if (data->count != -1) + (data->count)--; + +- stacktrace_trigger(data, rec); ++ stacktrace_trigger(data, rec, event); + } + + static int +@@ -1208,7 +1217,8 @@ static __init void unregister_trigger_tr + } + + static void +-event_enable_trigger(struct event_trigger_data *data, void *rec) ++event_enable_trigger(struct event_trigger_data *data, void *rec, ++ struct ring_buffer_event *event) + { + struct enable_trigger_data *enable_data = data->private_data; + +@@ -1219,7 +1229,8 @@ event_enable_trigger(struct event_trigge + } + + static void +-event_enable_count_trigger(struct event_trigger_data *data, void *rec) ++event_enable_count_trigger(struct event_trigger_data *data, void *rec, ++ struct ring_buffer_event *event) + { + struct enable_trigger_data *enable_data = data->private_data; + +@@ -1233,7 +1244,7 @@ event_enable_count_trigger(struct event_ + if (data->count != -1) + (data->count)--; + +- event_enable_trigger(data, rec); ++ event_enable_trigger(data, rec, event); + } + + int event_enable_trigger_print(struct seq_file *m, diff --git a/patches/features/all/rt/0008-tracing-hrtimer-Take-all-clock-bases-and-modes-into-.patch b/patches/features/all/rt/0008-tracing-hrtimer-Take-all-clock-bases-and-modes-into-.patch new file mode 100644 index 00000000000..bb40a71481a --- /dev/null +++ b/patches/features/all/rt/0008-tracing-hrtimer-Take-all-clock-bases-and-modes-into-.patch @@ -0,0 +1,56 @@ +From: Anna-Maria Gleixner +Date: Wed, 20 Dec 2017 17:12:57 +0100 +Subject: [PATCH 08/29] tracing/hrtimer: Take all clock bases and modes into + account +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +So far only CLOCK_MONOTONIC and CLOCK_REALTIME were taken into account as +well as HRTIMER_MODE_ABS/REL in hrtimer_init tracepoint. The query for +detecting timer mode ABS or REL is not valid, since the introduction of +HRTIMER_MODE_PINNED. + +HRTIMER_MODE_PINNED is not evaluated in hrtimer_init() call. But for the +sake of completeness print all given modes. + +Signed-off-by: Anna-Maria Gleixner +Signed-off-by: Sebastian Andrzej Siewior +--- + include/trace/events/timer.h | 20 ++++++++++++++++---- + 1 file changed, 16 insertions(+), 4 deletions(-) + +--- a/include/trace/events/timer.h ++++ b/include/trace/events/timer.h +@@ -136,6 +136,20 @@ DEFINE_EVENT(timer_class, timer_cancel, + TP_ARGS(timer) + ); + ++#define decode_clockid(type) \ ++ __print_symbolic(type, \ ++ { CLOCK_REALTIME, "CLOCK_REALTIME" }, \ ++ { CLOCK_MONOTONIC, "CLOCK_MONOTONIC" }, \ ++ { CLOCK_BOOTTIME, "CLOCK_BOOTTIME" }, \ ++ { CLOCK_TAI, "CLOCK_TAI" }) ++ ++#define decode_hrtimer_mode(mode) \ ++ __print_symbolic(mode, \ ++ { HRTIMER_MODE_ABS, "ABS" }, \ ++ { HRTIMER_MODE_REL, "REL" }, \ ++ { HRTIMER_MODE_ABS_PINNED, "ABS|PINNED" }, \ ++ { HRTIMER_MODE_REL_PINNED, "REL|PINNED" }) ++ + /** + * hrtimer_init - called when the hrtimer is initialized + * @hrtimer: pointer to struct hrtimer +@@ -162,10 +176,8 @@ TRACE_EVENT(hrtimer_init, + ), + + TP_printk("hrtimer=%p clockid=%s mode=%s", __entry->hrtimer, +- __entry->clockid == CLOCK_REALTIME ? +- "CLOCK_REALTIME" : "CLOCK_MONOTONIC", +- __entry->mode == HRTIMER_MODE_ABS ? +- "HRTIMER_MODE_ABS" : "HRTIMER_MODE_REL") ++ decode_clockid(__entry->clockid), ++ decode_hrtimer_mode(__entry->mode)) + ); + + /** diff --git a/patches/features/all/rt/0009-tracing-Add-ring-buffer-event-param-to-hist-field-fu.patch b/patches/features/all/rt/0009-tracing-Add-ring-buffer-event-param-to-hist-field-fu.patch new file mode 100644 index 00000000000..5ddb47147fb --- /dev/null +++ b/patches/features/all/rt/0009-tracing-Add-ring-buffer-event-param-to-hist-field-fu.patch @@ -0,0 +1,140 @@ +From: Tom Zanussi +Date: Mon, 15 Jan 2018 20:51:43 -0600 +Subject: [PATCH 09/37] tracing: Add ring buffer event param to hist field + functions +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Some events such as timestamps require access to a ring_buffer_event +struct; add a param so that hist field functions can access that. + +Signed-off-by: Tom Zanussi +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/trace/trace_events_hist.c | 39 ++++++++++++++++++++++++--------------- + 1 file changed, 24 insertions(+), 15 deletions(-) + +--- a/kernel/trace/trace_events_hist.c ++++ b/kernel/trace/trace_events_hist.c +@@ -26,7 +26,8 @@ + + struct hist_field; + +-typedef u64 (*hist_field_fn_t) (struct hist_field *field, void *event); ++typedef u64 (*hist_field_fn_t) (struct hist_field *field, void *event, ++ struct ring_buffer_event *rbe); + + #define HIST_FIELD_OPERANDS_MAX 2 + +@@ -40,24 +41,28 @@ struct hist_field { + struct hist_field *operands[HIST_FIELD_OPERANDS_MAX]; + }; + +-static u64 hist_field_none(struct hist_field *field, void *event) ++static u64 hist_field_none(struct hist_field *field, void *event, ++ struct ring_buffer_event *rbe) + { + return 0; + } + +-static u64 hist_field_counter(struct hist_field *field, void *event) ++static u64 hist_field_counter(struct hist_field *field, void *event, ++ struct ring_buffer_event *rbe) + { + return 1; + } + +-static u64 hist_field_string(struct hist_field *hist_field, void *event) ++static u64 hist_field_string(struct hist_field *hist_field, void *event, ++ struct ring_buffer_event *rbe) + { + char *addr = (char *)(event + hist_field->field->offset); + + return (u64)(unsigned long)addr; + } + +-static u64 hist_field_dynstring(struct hist_field *hist_field, void *event) ++static u64 hist_field_dynstring(struct hist_field *hist_field, void *event, ++ struct ring_buffer_event *rbe) + { + u32 str_item = *(u32 *)(event + hist_field->field->offset); + int str_loc = str_item & 0xffff; +@@ -66,24 +71,28 @@ static u64 hist_field_dynstring(struct h + return (u64)(unsigned long)addr; + } + +-static u64 hist_field_pstring(struct hist_field *hist_field, void *event) ++static u64 hist_field_pstring(struct hist_field *hist_field, void *event, ++ struct ring_buffer_event *rbe) + { + char **addr = (char **)(event + hist_field->field->offset); + + return (u64)(unsigned long)*addr; + } + +-static u64 hist_field_log2(struct hist_field *hist_field, void *event) ++static u64 hist_field_log2(struct hist_field *hist_field, void *event, ++ struct ring_buffer_event *rbe) + { + struct hist_field *operand = hist_field->operands[0]; + +- u64 val = operand->fn(operand, event); ++ u64 val = operand->fn(operand, event, rbe); + + return (u64) ilog2(roundup_pow_of_two(val)); + } + + #define DEFINE_HIST_FIELD_FN(type) \ +-static u64 hist_field_##type(struct hist_field *hist_field, void *event)\ ++ static u64 hist_field_##type(struct hist_field *hist_field, \ ++ void *event, \ ++ struct ring_buffer_event *rbe) \ + { \ + type *addr = (type *)(event + hist_field->field->offset); \ + \ +@@ -871,8 +880,8 @@ create_hist_data(unsigned int map_bits, + } + + static void hist_trigger_elt_update(struct hist_trigger_data *hist_data, +- struct tracing_map_elt *elt, +- void *rec) ++ struct tracing_map_elt *elt, void *rec, ++ struct ring_buffer_event *rbe) + { + struct hist_field *hist_field; + unsigned int i; +@@ -880,7 +889,7 @@ static void hist_trigger_elt_update(stru + + for_each_hist_val_field(i, hist_data) { + hist_field = hist_data->fields[i]; +- hist_val = hist_field->fn(hist_field, rec); ++ hist_val = hist_field->fn(hist_field, rec, rbe); + tracing_map_update_sum(elt, i, hist_val); + } + } +@@ -910,7 +919,7 @@ static inline void add_to_key(char *comp + } + + static void event_hist_trigger(struct event_trigger_data *data, void *rec, +- struct ring_buffer_event *event) ++ struct ring_buffer_event *rbe) + { + struct hist_trigger_data *hist_data = data->private_data; + bool use_compound_key = (hist_data->n_keys > 1); +@@ -939,7 +948,7 @@ static void event_hist_trigger(struct ev + + key = entries; + } else { +- field_contents = key_field->fn(key_field, rec); ++ field_contents = key_field->fn(key_field, rec, rbe); + if (key_field->flags & HIST_FIELD_FL_STRING) { + key = (void *)(unsigned long)field_contents; + use_compound_key = true; +@@ -956,7 +965,7 @@ static void event_hist_trigger(struct ev + + elt = tracing_map_insert(hist_data->map, key); + if (elt) +- hist_trigger_elt_update(hist_data, elt, rec); ++ hist_trigger_elt_update(hist_data, elt, rec, rbe); + } + + static void hist_trigger_stacktrace_print(struct seq_file *m, diff --git a/patches/features/all/rt/0009-tracing-Reimplement-log2.patch b/patches/features/all/rt/0009-tracing-Reimplement-log2.patch new file mode 100644 index 00000000000..628a9ed4279 --- /dev/null +++ b/patches/features/all/rt/0009-tracing-Reimplement-log2.patch @@ -0,0 +1,115 @@ +From: Tom Zanussi +Date: Fri, 22 Sep 2017 14:58:23 -0500 +Subject: [PATCH 09/42] tracing: Reimplement log2 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +log2 as currently implemented applies only to u64 trace_event_field +derived fields, and assumes that anything it's applied to is a u64 +field. + +To prepare for synthetic fields like latencies, log2 should be +applicable to those as well, so take the opportunity now to fix the +current problems as well as expand to more general uses. + +log2 should be thought of as a chaining function rather than a field +type. To enable this as well as possible future function +implementations, add a hist_field operand array into the hist_field +definition for this purpose, and make use of it to implement the log2 +'function'. + +Signed-off-by: Tom Zanussi +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/trace/trace_events_hist.c | 31 +++++++++++++++++++++++++++---- + 1 file changed, 27 insertions(+), 4 deletions(-) + +--- a/kernel/trace/trace_events_hist.c ++++ b/kernel/trace/trace_events_hist.c +@@ -28,12 +28,16 @@ struct hist_field; + + typedef u64 (*hist_field_fn_t) (struct hist_field *field, void *event); + ++#define HIST_FIELD_OPERANDS_MAX 2 ++ + struct hist_field { + struct ftrace_event_field *field; + unsigned long flags; + hist_field_fn_t fn; + unsigned int size; + unsigned int offset; ++ unsigned int is_signed; ++ struct hist_field *operands[HIST_FIELD_OPERANDS_MAX]; + }; + + static u64 hist_field_none(struct hist_field *field, void *event) +@@ -71,7 +75,9 @@ static u64 hist_field_pstring(struct his + + static u64 hist_field_log2(struct hist_field *hist_field, void *event) + { +- u64 val = *(u64 *)(event + hist_field->field->offset); ++ struct hist_field *operand = hist_field->operands[0]; ++ ++ u64 val = operand->fn(operand, event); + + return (u64) ilog2(roundup_pow_of_two(val)); + } +@@ -156,6 +162,8 @@ static const char *hist_field_name(struc + + if (field->field) + field_name = field->field->name; ++ else if (field->flags & HIST_FIELD_FL_LOG2) ++ field_name = hist_field_name(field->operands[0], ++level); + + if (field_name == NULL) + field_name = ""; +@@ -357,8 +365,20 @@ static const struct tracing_map_ops hist + .elt_init = hist_trigger_elt_comm_init, + }; + +-static void destroy_hist_field(struct hist_field *hist_field) ++static void destroy_hist_field(struct hist_field *hist_field, ++ unsigned int level) + { ++ unsigned int i; ++ ++ if (level > 2) ++ return; ++ ++ if (!hist_field) ++ return; ++ ++ for (i = 0; i < HIST_FIELD_OPERANDS_MAX; i++) ++ destroy_hist_field(hist_field->operands[i], level + 1); ++ + kfree(hist_field); + } + +@@ -385,7 +405,10 @@ static struct hist_field *create_hist_fi + } + + if (flags & HIST_FIELD_FL_LOG2) { ++ unsigned long fl = flags & ~HIST_FIELD_FL_LOG2; + hist_field->fn = hist_field_log2; ++ hist_field->operands[0] = create_hist_field(field, fl); ++ hist_field->size = hist_field->operands[0]->size; + goto out; + } + +@@ -405,7 +428,7 @@ static struct hist_field *create_hist_fi + hist_field->fn = select_value_fn(field->size, + field->is_signed); + if (!hist_field->fn) { +- destroy_hist_field(hist_field); ++ destroy_hist_field(hist_field, 0); + return NULL; + } + } +@@ -422,7 +445,7 @@ static void destroy_hist_fields(struct h + + for (i = 0; i < TRACING_MAP_FIELDS_MAX; i++) { + if (hist_data->fields[i]) { +- destroy_hist_field(hist_data->fields[i]); ++ destroy_hist_field(hist_data->fields[i], 0); + hist_data->fields[i] = NULL; + } + } diff --git a/patches/features/all/rt/0009-tracing-hrtimer-Print-hrtimer-mode-in-hrtimer_start-.patch b/patches/features/all/rt/0009-tracing-hrtimer-Print-hrtimer-mode-in-hrtimer_start-.patch new file mode 100644 index 00000000000..6baa80130d0 --- /dev/null +++ b/patches/features/all/rt/0009-tracing-hrtimer-Print-hrtimer-mode-in-hrtimer_start-.patch @@ -0,0 +1,114 @@ +From: Anna-Maria Gleixner +Date: Wed, 20 Dec 2017 17:12:58 +0100 +Subject: [PATCH 09/29] tracing/hrtimer: Print hrtimer mode in hrtimer_start + tracepoint +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +The hrtimer_start tracepoint lacks the mode information. The mode is +important because consecutive starts can switch from ABS to REL or from +PINNED to non PINNED. + +Add the mode information. + +Signed-off-by: Anna-Maria Gleixner +Signed-off-by: Sebastian Andrzej Siewior +--- + include/trace/events/timer.h | 13 ++++++++----- + kernel/time/hrtimer.c | 16 +++++++++------- + 2 files changed, 17 insertions(+), 12 deletions(-) + +--- a/include/trace/events/timer.h ++++ b/include/trace/events/timer.h +@@ -186,15 +186,16 @@ TRACE_EVENT(hrtimer_init, + */ + TRACE_EVENT(hrtimer_start, + +- TP_PROTO(struct hrtimer *hrtimer), ++ TP_PROTO(struct hrtimer *hrtimer, enum hrtimer_mode mode), + +- TP_ARGS(hrtimer), ++ TP_ARGS(hrtimer, mode), + + TP_STRUCT__entry( + __field( void *, hrtimer ) + __field( void *, function ) + __field( s64, expires ) + __field( s64, softexpires ) ++ __field( enum hrtimer_mode, mode ) + ), + + TP_fast_assign( +@@ -202,12 +203,14 @@ TRACE_EVENT(hrtimer_start, + __entry->function = hrtimer->function; + __entry->expires = hrtimer_get_expires(hrtimer); + __entry->softexpires = hrtimer_get_softexpires(hrtimer); ++ __entry->mode = mode; + ), + +- TP_printk("hrtimer=%p function=%pf expires=%llu softexpires=%llu", +- __entry->hrtimer, __entry->function, ++ TP_printk("hrtimer=%p function=%pf expires=%llu softexpires=%llu " ++ "mode=%s", __entry->hrtimer, __entry->function, + (unsigned long long) __entry->expires, +- (unsigned long long) __entry->softexpires) ++ (unsigned long long) __entry->softexpires, ++ decode_hrtimer_mode(__entry->mode)) + ); + + /** +--- a/kernel/time/hrtimer.c ++++ b/kernel/time/hrtimer.c +@@ -435,10 +435,11 @@ debug_init(struct hrtimer *timer, clocki + trace_hrtimer_init(timer, clockid, mode); + } + +-static inline void debug_activate(struct hrtimer *timer) ++static inline void debug_activate(struct hrtimer *timer, ++ enum hrtimer_mode mode) + { + debug_hrtimer_activate(timer); +- trace_hrtimer_start(timer); ++ trace_hrtimer_start(timer, mode); + } + + static inline void debug_deactivate(struct hrtimer *timer) +@@ -830,9 +831,10 @@ EXPORT_SYMBOL_GPL(hrtimer_forward); + * Returns 1 when the new timer is the leftmost timer in the tree. + */ + static int enqueue_hrtimer(struct hrtimer *timer, +- struct hrtimer_clock_base *base) ++ struct hrtimer_clock_base *base, ++ enum hrtimer_mode mode) + { +- debug_activate(timer); ++ debug_activate(timer, mode); + + base->cpu_base->active_bases |= 1 << base->index; + +@@ -955,7 +957,7 @@ void hrtimer_start_range_ns(struct hrtim + /* Switch the timer base, if necessary: */ + new_base = switch_hrtimer_base(timer, base, mode & HRTIMER_MODE_PINNED); + +- leftmost = enqueue_hrtimer(timer, new_base); ++ leftmost = enqueue_hrtimer(timer, new_base, mode); + if (!leftmost) + goto unlock; + +@@ -1224,7 +1226,7 @@ static void __run_hrtimer(struct hrtimer + */ + if (restart != HRTIMER_NORESTART && + !(timer->state & HRTIMER_STATE_ENQUEUED)) +- enqueue_hrtimer(timer, base); ++ enqueue_hrtimer(timer, base, HRTIMER_MODE_ABS); + + /* + * Separate the ->running assignment from the ->state assignment. +@@ -1623,7 +1625,7 @@ static void migrate_hrtimer_list(struct + * sort out already expired timers and reprogram the + * event device. + */ +- enqueue_hrtimer(timer, new_base); ++ enqueue_hrtimer(timer, new_base, HRTIMER_MODE_ABS); + } + } + diff --git a/patches/features/all/rt/0010-hrtimer-Switch-for-loop-to-_ffs-evaluation.patch b/patches/features/all/rt/0010-hrtimer-Switch-for-loop-to-_ffs-evaluation.patch new file mode 100644 index 00000000000..06cc2f010f4 --- /dev/null +++ b/patches/features/all/rt/0010-hrtimer-Switch-for-loop-to-_ffs-evaluation.patch @@ -0,0 +1,85 @@ +From: Anna-Maria Gleixner +Date: Wed, 20 Dec 2017 17:12:59 +0100 +Subject: [PATCH 10/29] hrtimer: Switch for loop to _ffs() evaluation +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Looping over all clock bases to find active bits is suboptimal if not all +bases are active. + +Avoid this by converting it to a __ffs() evaluation. The functionallity is +outsourced into an own function and is called via a macro as suggested by +Peter Zijlstra. + +Suggested-by: Peter Zijlstra +Signed-off-by: Anna-Maria Gleixner +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/time/hrtimer.c | 31 +++++++++++++++++++++---------- + 1 file changed, 21 insertions(+), 10 deletions(-) + +--- a/kernel/time/hrtimer.c ++++ b/kernel/time/hrtimer.c +@@ -448,6 +448,23 @@ static inline void debug_deactivate(stru + trace_hrtimer_cancel(timer); + } + ++static struct hrtimer_clock_base * ++__next_base(struct hrtimer_cpu_base *cpu_base, unsigned int *active) ++{ ++ unsigned int idx; ++ ++ if (!*active) ++ return NULL; ++ ++ idx = __ffs(*active); ++ *active &= ~(1U << idx); ++ ++ return &cpu_base->clock_base[idx]; ++} ++ ++#define for_each_active_base(base, cpu_base, active) \ ++ while ((base = __next_base((cpu_base), &(active)))) ++ + #if defined(CONFIG_NO_HZ_COMMON) || defined(CONFIG_HIGH_RES_TIMERS) + static inline void hrtimer_update_next_timer(struct hrtimer_cpu_base *cpu_base, + struct hrtimer *timer) +@@ -459,18 +476,15 @@ static inline void hrtimer_update_next_t + + static ktime_t __hrtimer_get_next_event(struct hrtimer_cpu_base *cpu_base) + { +- struct hrtimer_clock_base *base = cpu_base->clock_base; ++ struct hrtimer_clock_base *base; + unsigned int active = cpu_base->active_bases; + ktime_t expires, expires_next = KTIME_MAX; + + hrtimer_update_next_timer(cpu_base, NULL); +- for (; active; base++, active >>= 1) { ++ for_each_active_base(base, cpu_base, active) { + struct timerqueue_node *next; + struct hrtimer *timer; + +- if (!(active & 0x01)) +- continue; +- + next = timerqueue_getnext(&base->active); + timer = container_of(next, struct hrtimer, node); + expires = ktime_sub(hrtimer_get_expires(timer), base->offset); +@@ -1243,16 +1257,13 @@ static void __run_hrtimer(struct hrtimer + + static void __hrtimer_run_queues(struct hrtimer_cpu_base *cpu_base, ktime_t now) + { +- struct hrtimer_clock_base *base = cpu_base->clock_base; ++ struct hrtimer_clock_base *base; + unsigned int active = cpu_base->active_bases; + +- for (; active; base++, active >>= 1) { ++ for_each_active_base(base, cpu_base, active) { + struct timerqueue_node *node; + ktime_t basenow; + +- if (!(active & 0x01)) +- continue; +- + basenow = ktime_add(now, base->offset); + + while ((node = timerqueue_getnext(&base->active))) { diff --git a/patches/features/all/rt/0010-tracing-Break-out-hist-trigger-assignment-parsing.patch b/patches/features/all/rt/0010-tracing-Break-out-hist-trigger-assignment-parsing.patch new file mode 100644 index 00000000000..1eca58c2bdf --- /dev/null +++ b/patches/features/all/rt/0010-tracing-Break-out-hist-trigger-assignment-parsing.patch @@ -0,0 +1,109 @@ +From: Tom Zanussi +Date: Mon, 15 Jan 2018 20:51:44 -0600 +Subject: [PATCH 10/37] tracing: Break out hist trigger assignment parsing +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +This will make it easier to add variables, and makes the parsing code +cleaner regardless. + +Signed-off-by: Tom Zanussi +Signed-off-by: Rajvi Jingar +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/trace/trace_events_hist.c | 72 +++++++++++++++++++++++++++------------ + 1 file changed, 51 insertions(+), 21 deletions(-) + +--- a/kernel/trace/trace_events_hist.c ++++ b/kernel/trace/trace_events_hist.c +@@ -251,6 +251,51 @@ static void destroy_hist_trigger_attrs(s + kfree(attrs); + } + ++static int parse_assignment(char *str, struct hist_trigger_attrs *attrs) ++{ ++ int ret = 0; ++ ++ if ((strncmp(str, "key=", strlen("key=")) == 0) || ++ (strncmp(str, "keys=", strlen("keys=")) == 0)) { ++ attrs->keys_str = kstrdup(str, GFP_KERNEL); ++ if (!attrs->keys_str) { ++ ret = -ENOMEM; ++ goto out; ++ } ++ } else if ((strncmp(str, "val=", strlen("val=")) == 0) || ++ (strncmp(str, "vals=", strlen("vals=")) == 0) || ++ (strncmp(str, "values=", strlen("values=")) == 0)) { ++ attrs->vals_str = kstrdup(str, GFP_KERNEL); ++ if (!attrs->vals_str) { ++ ret = -ENOMEM; ++ goto out; ++ } ++ } else if (strncmp(str, "sort=", strlen("sort=")) == 0) { ++ attrs->sort_key_str = kstrdup(str, GFP_KERNEL); ++ if (!attrs->sort_key_str) { ++ ret = -ENOMEM; ++ goto out; ++ } ++ } else if (strncmp(str, "name=", strlen("name=")) == 0) { ++ attrs->name = kstrdup(str, GFP_KERNEL); ++ if (!attrs->name) { ++ ret = -ENOMEM; ++ goto out; ++ } ++ } else if (strncmp(str, "size=", strlen("size=")) == 0) { ++ int map_bits = parse_map_size(str); ++ ++ if (map_bits < 0) { ++ ret = map_bits; ++ goto out; ++ } ++ attrs->map_bits = map_bits; ++ } else ++ ret = -EINVAL; ++ out: ++ return ret; ++} ++ + static struct hist_trigger_attrs *parse_hist_trigger_attrs(char *trigger_str) + { + struct hist_trigger_attrs *attrs; +@@ -263,33 +308,18 @@ static struct hist_trigger_attrs *parse_ + while (trigger_str) { + char *str = strsep(&trigger_str, ":"); + +- if ((strncmp(str, "key=", strlen("key=")) == 0) || +- (strncmp(str, "keys=", strlen("keys=")) == 0)) +- attrs->keys_str = kstrdup(str, GFP_KERNEL); +- else if ((strncmp(str, "val=", strlen("val=")) == 0) || +- (strncmp(str, "vals=", strlen("vals=")) == 0) || +- (strncmp(str, "values=", strlen("values=")) == 0)) +- attrs->vals_str = kstrdup(str, GFP_KERNEL); +- else if (strncmp(str, "sort=", strlen("sort=")) == 0) +- attrs->sort_key_str = kstrdup(str, GFP_KERNEL); +- else if (strncmp(str, "name=", strlen("name=")) == 0) +- attrs->name = kstrdup(str, GFP_KERNEL); +- else if (strcmp(str, "pause") == 0) ++ if (strchr(str, '=')) { ++ ret = parse_assignment(str, attrs); ++ if (ret) ++ goto free; ++ } else if (strcmp(str, "pause") == 0) + attrs->pause = true; + else if ((strcmp(str, "cont") == 0) || + (strcmp(str, "continue") == 0)) + attrs->cont = true; + else if (strcmp(str, "clear") == 0) + attrs->clear = true; +- else if (strncmp(str, "size=", strlen("size=")) == 0) { +- int map_bits = parse_map_size(str); +- +- if (map_bits < 0) { +- ret = map_bits; +- goto free; +- } +- attrs->map_bits = map_bits; +- } else { ++ else { + ret = -EINVAL; + goto free; + } diff --git a/patches/features/all/rt/0011-hrtimer-Store-running-timer-in-hrtimer_clock_base.patch b/patches/features/all/rt/0011-hrtimer-Store-running-timer-in-hrtimer_clock_base.patch new file mode 100644 index 00000000000..1ea613c1adb --- /dev/null +++ b/patches/features/all/rt/0011-hrtimer-Store-running-timer-in-hrtimer_clock_base.patch @@ -0,0 +1,192 @@ +From: Anna-Maria Gleixner +Date: Wed, 20 Dec 2017 17:13:00 +0100 +Subject: [PATCH 11/29] hrtimer: Store running timer in hrtimer_clock_base +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +The pointer to the currently running timer is stored in hrtimer_cpu_base +before the base lock is dropped and the callback is invoked. + +This results in two levels of indirections and the upcoming support for +softirq based hrtimer requires splitting the "running" storage into soft +and hard irq context expiry. + +Storing both in the cpu base would require conditionals in all code paths +accessing that information. + +It's possible to have a per clock base sequence count and running pointer +without changing the semantics of the related mechanisms because the timer +base pointer cannot be changed while a timer is running the callback. + +Unfortunately this makes cpu_clock base larger than 32 bytes on 32bit +kernels. Instead of having huge gaps due to alignment, remove the alignment +and let the compiler pack cpu base for 32bit. The resulting cache access +patterns are fortunately not really different from the current +behaviour. On 64bit kernels the 64byte alignment stays and the behaviour is +unchanged. This was determined by analyzing the resulting layout and +looking at the number of cache lines involved for the frequently used +clocks. + +Signed-off-by: Anna-Maria Gleixner +Signed-off-by: Sebastian Andrzej Siewior +--- + include/linux/hrtimer.h | 20 +++++++++----------- + kernel/time/hrtimer.c | 28 +++++++++++++--------------- + 2 files changed, 22 insertions(+), 26 deletions(-) + +--- a/include/linux/hrtimer.h ++++ b/include/linux/hrtimer.h +@@ -118,9 +118,9 @@ struct hrtimer_sleeper { + }; + + #ifdef CONFIG_64BIT +-# define HRTIMER_CLOCK_BASE_ALIGN 64 ++# define __hrtimer_clock_base_align ____cacheline_aligned + #else +-# define HRTIMER_CLOCK_BASE_ALIGN 32 ++# define __hrtimer_clock_base_align + #endif + + /** +@@ -129,18 +129,22 @@ struct hrtimer_sleeper { + * @index: clock type index for per_cpu support when moving a + * timer to a base on another cpu. + * @clockid: clock id for per_cpu support ++ * @seq: seqcount around __run_hrtimer ++ * @running: pointer to the currently running hrtimer + * @active: red black tree root node for the active timers + * @get_time: function to retrieve the current time of the clock + * @offset: offset of this clock to the monotonic base + */ + struct hrtimer_clock_base { + struct hrtimer_cpu_base *cpu_base; +- int index; ++ unsigned int index; + clockid_t clockid; ++ seqcount_t seq; ++ struct hrtimer *running; + struct timerqueue_head active; + ktime_t (*get_time)(void); + ktime_t offset; +-} __attribute__((__aligned__(HRTIMER_CLOCK_BASE_ALIGN))); ++} __hrtimer_clock_base_align; + + enum hrtimer_base_type { + HRTIMER_BASE_MONOTONIC, +@@ -154,8 +158,6 @@ enum hrtimer_base_type { + * struct hrtimer_cpu_base - the per cpu clock bases + * @lock: lock protecting the base and associated clock bases + * and timers +- * @seq: seqcount around __run_hrtimer +- * @running: pointer to the currently running hrtimer + * @cpu: cpu number + * @active_bases: Bitfield to mark bases with active timers + * @clock_was_set_seq: Sequence counter of clock was set events +@@ -177,8 +179,6 @@ enum hrtimer_base_type { + */ + struct hrtimer_cpu_base { + raw_spinlock_t lock; +- seqcount_t seq; +- struct hrtimer *running; + unsigned int cpu; + unsigned int active_bases; + unsigned int clock_was_set_seq; +@@ -198,8 +198,6 @@ struct hrtimer_cpu_base { + + static inline void hrtimer_set_expires(struct hrtimer *timer, ktime_t time) + { +- BUILD_BUG_ON(sizeof(struct hrtimer_clock_base) > HRTIMER_CLOCK_BASE_ALIGN); +- + timer->node.expires = time; + timer->_softexpires = time; + } +@@ -424,7 +422,7 @@ static inline int hrtimer_is_queued(stru + */ + static inline int hrtimer_callback_running(struct hrtimer *timer) + { +- return timer->base->cpu_base->running == timer; ++ return timer->base->running == timer; + } + + /* Forward a hrtimer so it expires after now: */ +--- a/kernel/time/hrtimer.c ++++ b/kernel/time/hrtimer.c +@@ -70,7 +70,6 @@ + DEFINE_PER_CPU(struct hrtimer_cpu_base, hrtimer_bases) = + { + .lock = __RAW_SPIN_LOCK_UNLOCKED(hrtimer_bases.lock), +- .seq = SEQCNT_ZERO(hrtimer_bases.seq), + .clock_base = + { + { +@@ -118,7 +117,6 @@ static const int hrtimer_clock_to_base_t + * timer->base->cpu_base + */ + static struct hrtimer_cpu_base migration_cpu_base = { +- .seq = SEQCNT_ZERO(migration_cpu_base), + .clock_base = { { .cpu_base = &migration_cpu_base, }, }, + }; + +@@ -1150,19 +1148,19 @@ EXPORT_SYMBOL_GPL(hrtimer_init); + */ + bool hrtimer_active(const struct hrtimer *timer) + { +- struct hrtimer_cpu_base *cpu_base; ++ struct hrtimer_clock_base *base; + unsigned int seq; + + do { +- cpu_base = READ_ONCE(timer->base->cpu_base); +- seq = raw_read_seqcount_begin(&cpu_base->seq); ++ base = READ_ONCE(timer->base); ++ seq = raw_read_seqcount_begin(&base->seq); + + if (timer->state != HRTIMER_STATE_INACTIVE || +- cpu_base->running == timer) ++ base->running == timer) + return true; + +- } while (read_seqcount_retry(&cpu_base->seq, seq) || +- cpu_base != READ_ONCE(timer->base->cpu_base)); ++ } while (read_seqcount_retry(&base->seq, seq) || ++ base != READ_ONCE(timer->base)); + + return false; + } +@@ -1196,16 +1194,16 @@ static void __run_hrtimer(struct hrtimer + lockdep_assert_held(&cpu_base->lock); + + debug_deactivate(timer); +- cpu_base->running = timer; ++ base->running = timer; + + /* + * Separate the ->running assignment from the ->state assignment. + * + * As with a regular write barrier, this ensures the read side in +- * hrtimer_active() cannot observe cpu_base->running == NULL && ++ * hrtimer_active() cannot observe base->running == NULL && + * timer->state == INACTIVE. + */ +- raw_write_seqcount_barrier(&cpu_base->seq); ++ raw_write_seqcount_barrier(&base->seq); + + __remove_hrtimer(timer, base, HRTIMER_STATE_INACTIVE, 0); + fn = timer->function; +@@ -1246,13 +1244,13 @@ static void __run_hrtimer(struct hrtimer + * Separate the ->running assignment from the ->state assignment. + * + * As with a regular write barrier, this ensures the read side in +- * hrtimer_active() cannot observe cpu_base->running == NULL && ++ * hrtimer_active() cannot observe base->running.timer == NULL && + * timer->state == INACTIVE. + */ +- raw_write_seqcount_barrier(&cpu_base->seq); ++ raw_write_seqcount_barrier(&base->seq); + +- WARN_ON_ONCE(cpu_base->running != timer); +- cpu_base->running = NULL; ++ WARN_ON_ONCE(base->running != timer); ++ base->running = NULL; + } + + static void __hrtimer_run_queues(struct hrtimer_cpu_base *cpu_base, ktime_t now) diff --git a/patches/features/all/rt/0011-tracing-Add-hist-trigger-timestamp-support.patch b/patches/features/all/rt/0011-tracing-Add-hist-trigger-timestamp-support.patch new file mode 100644 index 00000000000..b65dc579a52 --- /dev/null +++ b/patches/features/all/rt/0011-tracing-Add-hist-trigger-timestamp-support.patch @@ -0,0 +1,243 @@ +From: Tom Zanussi +Date: Mon, 15 Jan 2018 20:51:45 -0600 +Subject: [PATCH 11/37] tracing: Add hist trigger timestamp support +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Add support for a timestamp event field. This is actually a 'pseudo-' +event field in that it behaves like it's part of the event record, but +is really part of the corresponding ring buffer event. + +To make use of the timestamp field, users can specify +"common_timestamp" as a field name for any histogram. Note that this +doesn't make much sense on its own either as either a key or value, +but needs to be supported even so, since follow-on patches will add +support for making use of this field in time deltas. The +common_timestamp 'field' is not a bona fide event field - so you won't +find it in the event description - but rather it's a synthetic field +that can be used like a real field. + +Note that the use of this field requires the ring buffer be put into +'absolute timestamp' mode, which saves the complete timestamp for each +event rather than an offset. This mode will be enabled if and only if +a histogram makes use of the "common_timestamp" field. + +Signed-off-by: Tom Zanussi +Signed-off-by: Baohong Liu +[kasan use-after-free fix] +Signed-off-by: Vedang Patel +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/trace/trace_events_hist.c | 94 +++++++++++++++++++++++++++++---------- + 1 file changed, 71 insertions(+), 23 deletions(-) + +--- a/kernel/trace/trace_events_hist.c ++++ b/kernel/trace/trace_events_hist.c +@@ -89,6 +89,12 @@ static u64 hist_field_log2(struct hist_f + return (u64) ilog2(roundup_pow_of_two(val)); + } + ++static u64 hist_field_timestamp(struct hist_field *hist_field, void *event, ++ struct ring_buffer_event *rbe) ++{ ++ return ring_buffer_event_time_stamp(rbe); ++} ++ + #define DEFINE_HIST_FIELD_FN(type) \ + static u64 hist_field_##type(struct hist_field *hist_field, \ + void *event, \ +@@ -135,6 +141,7 @@ enum hist_field_flags { + HIST_FIELD_FL_SYSCALL = 1 << 7, + HIST_FIELD_FL_STACKTRACE = 1 << 8, + HIST_FIELD_FL_LOG2 = 1 << 9, ++ HIST_FIELD_FL_TIMESTAMP = 1 << 10, + }; + + struct hist_trigger_attrs { +@@ -159,6 +166,7 @@ struct hist_trigger_data { + struct trace_event_file *event_file; + struct hist_trigger_attrs *attrs; + struct tracing_map *map; ++ bool enable_timestamps; + }; + + static const char *hist_field_name(struct hist_field *field, +@@ -173,6 +181,8 @@ static const char *hist_field_name(struc + field_name = field->field->name; + else if (field->flags & HIST_FIELD_FL_LOG2) + field_name = hist_field_name(field->operands[0], ++level); ++ else if (field->flags & HIST_FIELD_FL_TIMESTAMP) ++ field_name = "common_timestamp"; + + if (field_name == NULL) + field_name = ""; +@@ -440,6 +450,12 @@ static struct hist_field *create_hist_fi + goto out; + } + ++ if (flags & HIST_FIELD_FL_TIMESTAMP) { ++ hist_field->fn = hist_field_timestamp; ++ hist_field->size = sizeof(u64); ++ goto out; ++ } ++ + if (WARN_ON_ONCE(!field)) + goto out; + +@@ -517,10 +533,15 @@ static int create_val_field(struct hist_ + } + } + +- field = trace_find_event_field(file->event_call, field_name); +- if (!field || !field->size) { +- ret = -EINVAL; +- goto out; ++ if (strcmp(field_name, "common_timestamp") == 0) { ++ flags |= HIST_FIELD_FL_TIMESTAMP; ++ hist_data->enable_timestamps = true; ++ } else { ++ field = trace_find_event_field(file->event_call, field_name); ++ if (!field || !field->size) { ++ ret = -EINVAL; ++ goto out; ++ } + } + + hist_data->fields[val_idx] = create_hist_field(field, flags); +@@ -615,16 +636,22 @@ static int create_key_field(struct hist_ + } + } + +- field = trace_find_event_field(file->event_call, field_name); +- if (!field || !field->size) { +- ret = -EINVAL; +- goto out; +- } ++ if (strcmp(field_name, "common_timestamp") == 0) { ++ flags |= HIST_FIELD_FL_TIMESTAMP; ++ hist_data->enable_timestamps = true; ++ key_size = sizeof(u64); ++ } else { ++ field = trace_find_event_field(file->event_call, field_name); ++ if (!field || !field->size) { ++ ret = -EINVAL; ++ goto out; ++ } + +- if (is_string_field(field)) +- key_size = MAX_FILTER_STR_VAL; +- else +- key_size = field->size; ++ if (is_string_field(field)) ++ key_size = MAX_FILTER_STR_VAL; ++ else ++ key_size = field->size; ++ } + } + + hist_data->fields[key_idx] = create_hist_field(field, flags); +@@ -820,6 +847,9 @@ static int create_tracing_map_fields(str + + if (hist_field->flags & HIST_FIELD_FL_STACKTRACE) + cmp_fn = tracing_map_cmp_none; ++ else if (!field) ++ cmp_fn = tracing_map_cmp_num(hist_field->size, ++ hist_field->is_signed); + else if (is_string_field(field)) + cmp_fn = tracing_map_cmp_string; + else +@@ -1217,7 +1247,11 @@ static void hist_field_print(struct seq_ + { + const char *field_name = hist_field_name(hist_field, 0); + +- seq_printf(m, "%s", field_name); ++ if (hist_field->flags & HIST_FIELD_FL_TIMESTAMP) ++ seq_puts(m, "common_timestamp"); ++ else if (field_name) ++ seq_printf(m, "%s", field_name); ++ + if (hist_field->flags) { + const char *flags_str = get_hist_field_flags(hist_field); + +@@ -1268,27 +1302,25 @@ static int event_hist_trigger_print(stru + + for (i = 0; i < hist_data->n_sort_keys; i++) { + struct tracing_map_sort_key *sort_key; ++ unsigned int idx; + + sort_key = &hist_data->sort_keys[i]; ++ idx = sort_key->field_idx; ++ ++ if (WARN_ON(idx >= TRACING_MAP_FIELDS_MAX)) ++ return -EINVAL; + + if (i > 0) + seq_puts(m, ","); + +- if (sort_key->field_idx == HITCOUNT_IDX) ++ if (idx == HITCOUNT_IDX) + seq_puts(m, "hitcount"); +- else { +- unsigned int idx = sort_key->field_idx; +- +- if (WARN_ON(idx >= TRACING_MAP_FIELDS_MAX)) +- return -EINVAL; +- ++ else + hist_field_print(m, hist_data->fields[idx]); +- } + + if (sort_key->descending) + seq_puts(m, ".descending"); + } +- + seq_printf(m, ":size=%u", (1 << hist_data->map->map_bits)); + + if (data->filter_str) +@@ -1456,6 +1488,10 @@ static bool hist_trigger_match(struct ev + return false; + if (key_field->offset != key_field_test->offset) + return false; ++ if (key_field->size != key_field_test->size) ++ return false; ++ if (key_field->is_signed != key_field_test->is_signed) ++ return false; + } + + for (i = 0; i < hist_data->n_sort_keys; i++) { +@@ -1538,6 +1574,9 @@ static int hist_register_trigger(char *g + + update_cond_flag(file); + ++ if (hist_data->enable_timestamps) ++ tracing_set_time_stamp_abs(file->tr, true); ++ + if (trace_event_trigger_enable_disable(file, 1) < 0) { + list_del_rcu(&data->list); + update_cond_flag(file); +@@ -1572,17 +1611,26 @@ static void hist_unregister_trigger(char + + if (unregistered && test->ops->free) + test->ops->free(test->ops, test); ++ ++ if (hist_data->enable_timestamps) { ++ if (unregistered) ++ tracing_set_time_stamp_abs(file->tr, false); ++ } + } + + static void hist_unreg_all(struct trace_event_file *file) + { + struct event_trigger_data *test, *n; ++ struct hist_trigger_data *hist_data; + + list_for_each_entry_safe(test, n, &file->triggers, list) { + if (test->cmd_ops->trigger_type == ETT_EVENT_HIST) { ++ hist_data = test->private_data; + list_del_rcu(&test->list); + trace_event_trigger_enable_disable(file, 0); + update_cond_flag(file); ++ if (hist_data->enable_timestamps) ++ tracing_set_time_stamp_abs(file->tr, false); + if (test->ops->free) + test->ops->free(test->ops, test); + } diff --git a/patches/features/all/rt/0012-hrtimer-Make-room-in-struct-hrtimer_cpu_base.patch b/patches/features/all/rt/0012-hrtimer-Make-room-in-struct-hrtimer_cpu_base.patch new file mode 100644 index 00000000000..9775bb98766 --- /dev/null +++ b/patches/features/all/rt/0012-hrtimer-Make-room-in-struct-hrtimer_cpu_base.patch @@ -0,0 +1,34 @@ +From: Anna-Maria Gleixner +Date: Wed, 20 Dec 2017 17:13:01 +0100 +Subject: [PATCH 12/29] hrtimer: Make room in struct hrtimer_cpu_base +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +The upcoming softirq based hrtimers support requires an additional field in +the hrtimer_cpu_base struct, which would grow the struct size beyond a +cache line. + +The struct members nr_retries and nr_hangs of hrtimer_cpu_base are solely +used for diagnostic output and have no requirement to be unsigned int. + +Make them unsigned short to create room for the new struct member. No +functional change. + +Signed-off-by: Anna-Maria Gleixner +Signed-off-by: Sebastian Andrzej Siewior +--- + include/linux/hrtimer.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/include/linux/hrtimer.h ++++ b/include/linux/hrtimer.h +@@ -189,8 +189,8 @@ struct hrtimer_cpu_base { + ktime_t expires_next; + struct hrtimer *next_timer; + unsigned int nr_events; +- unsigned int nr_retries; +- unsigned int nr_hangs; ++ unsigned short nr_retries; ++ unsigned short nr_hangs; + unsigned int max_hang_time; + #endif + struct hrtimer_clock_base clock_base[HRTIMER_MAX_CLOCK_BASES]; diff --git a/patches/features/all/rt/0012-tracing-Add-per-element-variable-support-to-tracing_.patch b/patches/features/all/rt/0012-tracing-Add-per-element-variable-support-to-tracing_.patch new file mode 100644 index 00000000000..db9a735f467 --- /dev/null +++ b/patches/features/all/rt/0012-tracing-Add-per-element-variable-support-to-tracing_.patch @@ -0,0 +1,221 @@ +From: Tom Zanussi +Date: Mon, 15 Jan 2018 20:51:46 -0600 +Subject: [PATCH 12/37] tracing: Add per-element variable support to + tracing_map +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +In order to allow information to be passed between trace events, add +support for per-element variables to tracing_map. This provides a +means for histograms to associate a value or values with an entry when +it's saved or updated, and retrieved by a subsequent event occurrences. + +Variables can be set using tracing_map_set_var() and read using +tracing_map_read_var(). tracing_map_var_set() returns true or false +depending on whether or not the variable has been set or not, which is +important for event-matching applications. + +tracing_map_read_var_once() reads the variable and resets it to the +'unset' state, implementing read-once variables, which are also +important for event-matching uses. + +Signed-off-by: Tom Zanussi +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/trace/tracing_map.c | 108 +++++++++++++++++++++++++++++++++++++++++++++ + kernel/trace/tracing_map.h | 11 ++++ + 2 files changed, 119 insertions(+) + +--- a/kernel/trace/tracing_map.c ++++ b/kernel/trace/tracing_map.c +@@ -66,6 +66,73 @@ u64 tracing_map_read_sum(struct tracing_ + return (u64)atomic64_read(&elt->fields[i].sum); + } + ++/** ++ * tracing_map_set_var - Assign a tracing_map_elt's variable field ++ * @elt: The tracing_map_elt ++ * @i: The index of the given variable associated with the tracing_map_elt ++ * @n: The value to assign ++ * ++ * Assign n to variable i associated with the specified tracing_map_elt ++ * instance. The index i is the index returned by the call to ++ * tracing_map_add_var() when the tracing map was set up. ++ */ ++void tracing_map_set_var(struct tracing_map_elt *elt, unsigned int i, u64 n) ++{ ++ atomic64_set(&elt->vars[i], n); ++ elt->var_set[i] = true; ++} ++ ++/** ++ * tracing_map_var_set - Return whether or not a variable has been set ++ * @elt: The tracing_map_elt ++ * @i: The index of the given variable associated with the tracing_map_elt ++ * ++ * Return true if the variable has been set, false otherwise. The ++ * index i is the index returned by the call to tracing_map_add_var() ++ * when the tracing map was set up. ++ */ ++bool tracing_map_var_set(struct tracing_map_elt *elt, unsigned int i) ++{ ++ return elt->var_set[i]; ++} ++ ++/** ++ * tracing_map_read_var - Return the value of a tracing_map_elt's variable field ++ * @elt: The tracing_map_elt ++ * @i: The index of the given variable associated with the tracing_map_elt ++ * ++ * Retrieve the value of the variable i associated with the specified ++ * tracing_map_elt instance. The index i is the index returned by the ++ * call to tracing_map_add_var() when the tracing map was set ++ * up. ++ * ++ * Return: The variable value associated with field i for elt. ++ */ ++u64 tracing_map_read_var(struct tracing_map_elt *elt, unsigned int i) ++{ ++ return (u64)atomic64_read(&elt->vars[i]); ++} ++ ++/** ++ * tracing_map_read_var_once - Return and reset a tracing_map_elt's variable field ++ * @elt: The tracing_map_elt ++ * @i: The index of the given variable associated with the tracing_map_elt ++ * ++ * Retrieve the value of the variable i associated with the specified ++ * tracing_map_elt instance, and reset the variable to the 'not set' ++ * state. The index i is the index returned by the call to ++ * tracing_map_add_var() when the tracing map was set up. The reset ++ * essentially makes the variable a read-once variable if it's only ++ * accessed using this function. ++ * ++ * Return: The variable value associated with field i for elt. ++ */ ++u64 tracing_map_read_var_once(struct tracing_map_elt *elt, unsigned int i) ++{ ++ elt->var_set[i] = false; ++ return (u64)atomic64_read(&elt->vars[i]); ++} ++ + int tracing_map_cmp_string(void *val_a, void *val_b) + { + char *a = val_a; +@@ -171,6 +238,28 @@ int tracing_map_add_sum_field(struct tra + } + + /** ++ * tracing_map_add_var - Add a field describing a tracing_map var ++ * @map: The tracing_map ++ * ++ * Add a var to the map and return the index identifying it in the map ++ * and associated tracing_map_elts. This is the index used for ++ * instance to update a var for a particular tracing_map_elt using ++ * tracing_map_update_var() or reading it via tracing_map_read_var(). ++ * ++ * Return: The index identifying the var in the map and associated ++ * tracing_map_elts, or -EINVAL on error. ++ */ ++int tracing_map_add_var(struct tracing_map *map) ++{ ++ int ret = -EINVAL; ++ ++ if (map->n_vars < TRACING_MAP_VARS_MAX) ++ ret = map->n_vars++; ++ ++ return ret; ++} ++ ++/** + * tracing_map_add_key_field - Add a field describing a tracing_map key + * @map: The tracing_map + * @offset: The offset within the key +@@ -280,6 +369,11 @@ static void tracing_map_elt_clear(struct + if (elt->fields[i].cmp_fn == tracing_map_cmp_atomic64) + atomic64_set(&elt->fields[i].sum, 0); + ++ for (i = 0; i < elt->map->n_vars; i++) { ++ atomic64_set(&elt->vars[i], 0); ++ elt->var_set[i] = false; ++ } ++ + if (elt->map->ops && elt->map->ops->elt_clear) + elt->map->ops->elt_clear(elt); + } +@@ -306,6 +400,8 @@ static void tracing_map_elt_free(struct + if (elt->map->ops && elt->map->ops->elt_free) + elt->map->ops->elt_free(elt); + kfree(elt->fields); ++ kfree(elt->vars); ++ kfree(elt->var_set); + kfree(elt->key); + kfree(elt); + } +@@ -332,6 +428,18 @@ static struct tracing_map_elt *tracing_m + err = -ENOMEM; + goto free; + } ++ ++ elt->vars = kcalloc(map->n_vars, sizeof(*elt->vars), GFP_KERNEL); ++ if (!elt->vars) { ++ err = -ENOMEM; ++ goto free; ++ } ++ ++ elt->var_set = kcalloc(map->n_vars, sizeof(*elt->var_set), GFP_KERNEL); ++ if (!elt->var_set) { ++ err = -ENOMEM; ++ goto free; ++ } + + tracing_map_elt_init_fields(elt); + +--- a/kernel/trace/tracing_map.h ++++ b/kernel/trace/tracing_map.h +@@ -10,6 +10,7 @@ + #define TRACING_MAP_VALS_MAX 3 + #define TRACING_MAP_FIELDS_MAX (TRACING_MAP_KEYS_MAX + \ + TRACING_MAP_VALS_MAX) ++#define TRACING_MAP_VARS_MAX 16 + #define TRACING_MAP_SORT_KEYS_MAX 2 + + typedef int (*tracing_map_cmp_fn_t) (void *val_a, void *val_b); +@@ -137,6 +138,8 @@ struct tracing_map_field { + struct tracing_map_elt { + struct tracing_map *map; + struct tracing_map_field *fields; ++ atomic64_t *vars; ++ bool *var_set; + void *key; + void *private_data; + }; +@@ -192,6 +195,7 @@ struct tracing_map { + int key_idx[TRACING_MAP_KEYS_MAX]; + unsigned int n_keys; + struct tracing_map_sort_key sort_key; ++ unsigned int n_vars; + atomic64_t hits; + atomic64_t drops; + }; +@@ -241,6 +245,7 @@ tracing_map_create(unsigned int map_bits + extern int tracing_map_init(struct tracing_map *map); + + extern int tracing_map_add_sum_field(struct tracing_map *map); ++extern int tracing_map_add_var(struct tracing_map *map); + extern int tracing_map_add_key_field(struct tracing_map *map, + unsigned int offset, + tracing_map_cmp_fn_t cmp_fn); +@@ -260,7 +265,13 @@ extern int tracing_map_cmp_none(void *va + + extern void tracing_map_update_sum(struct tracing_map_elt *elt, + unsigned int i, u64 n); ++extern void tracing_map_set_var(struct tracing_map_elt *elt, ++ unsigned int i, u64 n); ++extern bool tracing_map_var_set(struct tracing_map_elt *elt, unsigned int i); + extern u64 tracing_map_read_sum(struct tracing_map_elt *elt, unsigned int i); ++extern u64 tracing_map_read_var(struct tracing_map_elt *elt, unsigned int i); ++extern u64 tracing_map_read_var_once(struct tracing_map_elt *elt, unsigned int i); ++ + extern void tracing_map_set_field_descr(struct tracing_map *map, + unsigned int i, + unsigned int key_offset, diff --git a/patches/features/all/rt/0013-hrtimer-Reduce-conditional-code-hres_active.patch b/patches/features/all/rt/0013-hrtimer-Reduce-conditional-code-hres_active.patch new file mode 100644 index 00000000000..cd46b76ea25 --- /dev/null +++ b/patches/features/all/rt/0013-hrtimer-Reduce-conditional-code-hres_active.patch @@ -0,0 +1,150 @@ +From: Anna-Maria Gleixner +Date: Wed, 20 Dec 2017 17:13:02 +0100 +Subject: [PATCH 13/29] hrtimer: Reduce conditional code (hres_active) +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +The hrtimer_cpu_base struct has the CONFIG_HIGH_RES_TIMERS conditional +struct member hres_active. All related functions to this member are +conditional as well. + +There is no functional change, when the hres_active member is +unconditional with all related functions and is set to zero during +initialization. + +The conditional code sections can be avoided by adding IS_ENABLED(HIGHRES) +conditionals into common functions, which ensures dead code elimination. + +Suggested-by: Thomas Gleixner +Signed-off-by: Anna-Maria Gleixner +Signed-off-by: Sebastian Andrzej Siewior +--- + include/linux/hrtimer.h | 20 ++++++++------------ + kernel/time/hrtimer.c | 31 +++++++++++++++---------------- + 2 files changed, 23 insertions(+), 28 deletions(-) + +--- a/include/linux/hrtimer.h ++++ b/include/linux/hrtimer.h +@@ -161,8 +161,8 @@ enum hrtimer_base_type { + * @cpu: cpu number + * @active_bases: Bitfield to mark bases with active timers + * @clock_was_set_seq: Sequence counter of clock was set events +- * @in_hrtirq: hrtimer_interrupt() is currently executing + * @hres_active: State of high resolution mode ++ * @in_hrtirq: hrtimer_interrupt() is currently executing + * @hang_detected: The last hrtimer interrupt detected a hang + * @expires_next: absolute time of the next event, is required for remote + * hrtimer enqueue +@@ -182,9 +182,9 @@ struct hrtimer_cpu_base { + unsigned int cpu; + unsigned int active_bases; + unsigned int clock_was_set_seq; ++ unsigned int hres_active : 1; + #ifdef CONFIG_HIGH_RES_TIMERS + unsigned int in_hrtirq : 1, +- hres_active : 1, + hang_detected : 1; + ktime_t expires_next; + struct hrtimer *next_timer; +@@ -266,16 +266,17 @@ static inline ktime_t hrtimer_cb_get_tim + return timer->base->get_time(); + } + ++static inline int hrtimer_is_hres_active(struct hrtimer *timer) ++{ ++ return IS_ENABLED(CONFIG_HIGH_RES_TIMERS) ? ++ timer->base->cpu_base->hres_active : 0; ++} ++ + #ifdef CONFIG_HIGH_RES_TIMERS + struct clock_event_device; + + extern void hrtimer_interrupt(struct clock_event_device *dev); + +-static inline int hrtimer_is_hres_active(struct hrtimer *timer) +-{ +- return timer->base->cpu_base->hres_active; +-} +- + /* + * The resolution of the clocks. The resolution value is returned in + * the clock_getres() system call to give application programmers an +@@ -298,11 +299,6 @@ extern unsigned int hrtimer_resolution; + + #define hrtimer_resolution (unsigned int)LOW_RES_NSEC + +-static inline int hrtimer_is_hres_active(struct hrtimer *timer) +-{ +- return 0; +-} +- + static inline void clock_was_set_delayed(void) { } + + #endif +--- a/kernel/time/hrtimer.c ++++ b/kernel/time/hrtimer.c +@@ -512,6 +512,20 @@ static inline ktime_t hrtimer_update_bas + offs_real, offs_boot, offs_tai); + } + ++/* ++ * Is the high resolution mode active ? ++ */ ++static inline int __hrtimer_hres_active(struct hrtimer_cpu_base *cpu_base) ++{ ++ return IS_ENABLED(CONFIG_HIGH_RES_TIMERS) ? ++ cpu_base->hres_active : 0; ++} ++ ++static inline int hrtimer_hres_active(void) ++{ ++ return __hrtimer_hres_active(this_cpu_ptr(&hrtimer_bases)); ++} ++ + /* High resolution timer related functions */ + #ifdef CONFIG_HIGH_RES_TIMERS + +@@ -541,19 +555,6 @@ static inline int hrtimer_is_hres_enable + } + + /* +- * Is the high resolution mode active ? +- */ +-static inline int __hrtimer_hres_active(struct hrtimer_cpu_base *cpu_base) +-{ +- return cpu_base->hres_active; +-} +- +-static inline int hrtimer_hres_active(void) +-{ +- return __hrtimer_hres_active(this_cpu_ptr(&hrtimer_bases)); +-} +- +-/* + * Reprogram the event source with checking both queues for the + * next event + * Called with interrupts disabled and base->lock held +@@ -662,7 +663,6 @@ static inline void hrtimer_init_hres(str + { + base->expires_next = KTIME_MAX; + base->hang_detected = 0; +- base->hres_active = 0; + base->next_timer = NULL; + } + +@@ -722,8 +722,6 @@ void clock_was_set_delayed(void) + + #else + +-static inline int __hrtimer_hres_active(struct hrtimer_cpu_base *b) { return 0; } +-static inline int hrtimer_hres_active(void) { return 0; } + static inline int hrtimer_is_hres_enabled(void) { return 0; } + static inline void hrtimer_switch_to_hres(void) { } + static inline void +@@ -1605,6 +1603,7 @@ int hrtimers_prepare_cpu(unsigned int cp + + cpu_base->active_bases = 0; + cpu_base->cpu = cpu; ++ cpu_base->hres_active = 0; + hrtimer_init_hres(cpu_base); + return 0; + } diff --git a/patches/features/all/rt/0013-tracing-Add-hist_data-member-to-hist_field.patch b/patches/features/all/rt/0013-tracing-Add-hist_data-member-to-hist_field.patch new file mode 100644 index 00000000000..97bcb14f0a1 --- /dev/null +++ b/patches/features/all/rt/0013-tracing-Add-hist_data-member-to-hist_field.patch @@ -0,0 +1,79 @@ +From: Tom Zanussi +Date: Mon, 15 Jan 2018 20:51:47 -0600 +Subject: [PATCH 13/37] tracing: Add hist_data member to hist_field +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Allow hist_data access via hist_field. Some users of hist_fields +require or will require more access to the associated hist_data. + +Signed-off-by: Tom Zanussi +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/trace/trace_events_hist.c | 14 +++++++++----- + 1 file changed, 9 insertions(+), 5 deletions(-) + +--- a/kernel/trace/trace_events_hist.c ++++ b/kernel/trace/trace_events_hist.c +@@ -39,6 +39,7 @@ struct hist_field { + unsigned int offset; + unsigned int is_signed; + struct hist_field *operands[HIST_FIELD_OPERANDS_MAX]; ++ struct hist_trigger_data *hist_data; + }; + + static u64 hist_field_none(struct hist_field *field, void *event, +@@ -420,7 +421,8 @@ static void destroy_hist_field(struct hi + kfree(hist_field); + } + +-static struct hist_field *create_hist_field(struct ftrace_event_field *field, ++static struct hist_field *create_hist_field(struct hist_trigger_data *hist_data, ++ struct ftrace_event_field *field, + unsigned long flags) + { + struct hist_field *hist_field; +@@ -432,6 +434,8 @@ static struct hist_field *create_hist_fi + if (!hist_field) + return NULL; + ++ hist_field->hist_data = hist_data; ++ + if (flags & HIST_FIELD_FL_HITCOUNT) { + hist_field->fn = hist_field_counter; + goto out; +@@ -445,7 +449,7 @@ static struct hist_field *create_hist_fi + if (flags & HIST_FIELD_FL_LOG2) { + unsigned long fl = flags & ~HIST_FIELD_FL_LOG2; + hist_field->fn = hist_field_log2; +- hist_field->operands[0] = create_hist_field(field, fl); ++ hist_field->operands[0] = create_hist_field(hist_data, field, fl); + hist_field->size = hist_field->operands[0]->size; + goto out; + } +@@ -498,7 +502,7 @@ static void destroy_hist_fields(struct h + static int create_hitcount_val(struct hist_trigger_data *hist_data) + { + hist_data->fields[HITCOUNT_IDX] = +- create_hist_field(NULL, HIST_FIELD_FL_HITCOUNT); ++ create_hist_field(hist_data, NULL, HIST_FIELD_FL_HITCOUNT); + if (!hist_data->fields[HITCOUNT_IDX]) + return -ENOMEM; + +@@ -544,7 +548,7 @@ static int create_val_field(struct hist_ + } + } + +- hist_data->fields[val_idx] = create_hist_field(field, flags); ++ hist_data->fields[val_idx] = create_hist_field(hist_data, field, flags); + if (!hist_data->fields[val_idx]) { + ret = -ENOMEM; + goto out; +@@ -654,7 +658,7 @@ static int create_key_field(struct hist_ + } + } + +- hist_data->fields[key_idx] = create_hist_field(field, flags); ++ hist_data->fields[key_idx] = create_hist_field(hist_data, field, flags); + if (!hist_data->fields[key_idx]) { + ret = -ENOMEM; + goto out; diff --git a/patches/features/all/rt/0014-hrtimer-Use-accesor-functions-instead-of-direct-acce.patch b/patches/features/all/rt/0014-hrtimer-Use-accesor-functions-instead-of-direct-acce.patch new file mode 100644 index 00000000000..def0e9e3268 --- /dev/null +++ b/patches/features/all/rt/0014-hrtimer-Use-accesor-functions-instead-of-direct-acce.patch @@ -0,0 +1,36 @@ +From: Anna-Maria Gleixner +Date: Wed, 20 Dec 2017 17:13:03 +0100 +Subject: [PATCH 14/29] hrtimer: Use accesor functions instead of direct access +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +__hrtimer_hres_active() is now available unconditionally. Replace the +direct access to hrtimer_cpu_base.hres_active. + +No functional change. + +Signed-off-by: Anna-Maria Gleixner +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/time/hrtimer.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/kernel/time/hrtimer.c ++++ b/kernel/time/hrtimer.c +@@ -564,7 +564,7 @@ hrtimer_force_reprogram(struct hrtimer_c + { + ktime_t expires_next; + +- if (!cpu_base->hres_active) ++ if (!__hrtimer_hres_active(cpu_base)) + return; + + expires_next = __hrtimer_get_next_event(cpu_base); +@@ -673,7 +673,7 @@ static void retrigger_next_event(void *a + { + struct hrtimer_cpu_base *base = this_cpu_ptr(&hrtimer_bases); + +- if (!base->hres_active) ++ if (!__hrtimer_hres_active(base)) + return; + + raw_spin_lock(&base->lock); diff --git a/patches/features/all/rt/0014-tracing-Add-usecs-modifier-for-hist-trigger-timestam.patch b/patches/features/all/rt/0014-tracing-Add-usecs-modifier-for-hist-trigger-timestam.patch new file mode 100644 index 00000000000..b2a59557ad7 --- /dev/null +++ b/patches/features/all/rt/0014-tracing-Add-usecs-modifier-for-hist-trigger-timestam.patch @@ -0,0 +1,154 @@ +From: Tom Zanussi +Date: Mon, 15 Jan 2018 20:51:48 -0600 +Subject: [PATCH 14/37] tracing: Add usecs modifier for hist trigger timestamps +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Appending .usecs onto a common_timestamp field will cause the +timestamp value to be in microseconds instead of the default +nanoseconds. A typical latency histogram using usecs would look like +this: + + # echo 'hist:keys=pid,prio:ts0=common_timestamp.usecs ... + # echo 'hist:keys=next_pid:wakeup_lat=common_timestamp.usecs-$ts0 ... + +This also adds an external trace_clock_in_ns() to trace.c for the +timestamp conversion. + +Signed-off-by: Tom Zanussi +Signed-off-by: Sebastian Andrzej Siewior +--- + Documentation/trace/histogram.txt | 1 + + kernel/trace/trace.c | 13 +++++++++++-- + kernel/trace/trace.h | 2 ++ + kernel/trace/trace_events_hist.c | 28 ++++++++++++++++++++++------ + 4 files changed, 36 insertions(+), 8 deletions(-) + +--- a/Documentation/trace/histogram.txt ++++ b/Documentation/trace/histogram.txt +@@ -74,6 +74,7 @@ + .syscall display a syscall id as a system call name + .execname display a common_pid as a program name + .log2 display log2 value rather than raw number ++ .usecs display a common_timestamp in microseconds + + Note that in general the semantics of a given field aren't + interpreted when applying a modifier to it, but there are some +--- a/kernel/trace/trace.c ++++ b/kernel/trace/trace.c +@@ -1170,6 +1170,14 @@ static struct { + ARCH_TRACE_CLOCKS + }; + ++bool trace_clock_in_ns(struct trace_array *tr) ++{ ++ if (trace_clocks[tr->clock_id].in_ns) ++ return true; ++ ++ return false; ++} ++ + /* + * trace_parser_get_init - gets the buffer for trace parser + */ +@@ -4699,8 +4707,9 @@ static const char readme_msg[] = + "\t .sym display an address as a symbol\n" + "\t .sym-offset display an address as a symbol and offset\n" + "\t .execname display a common_pid as a program name\n" +- "\t .syscall display a syscall id as a syscall name\n\n" +- "\t .log2 display log2 value rather than raw number\n\n" ++ "\t .syscall display a syscall id as a syscall name\n" ++ "\t .log2 display log2 value rather than raw number\n" ++ "\t .usecs display a common_timestamp in microseconds\n\n" + "\t The 'pause' parameter can be used to pause an existing hist\n" + "\t trigger or to start a hist trigger but not log any events\n" + "\t until told to do so. 'continue' can be used to start or\n" +--- a/kernel/trace/trace.h ++++ b/kernel/trace/trace.h +@@ -289,6 +289,8 @@ extern void trace_array_put(struct trace + + extern int tracing_set_time_stamp_abs(struct trace_array *tr, bool abs); + ++extern bool trace_clock_in_ns(struct trace_array *tr); ++ + /* + * The global tracer (top) should be the first trace array added, + * but we check the flag anyway. +--- a/kernel/trace/trace_events_hist.c ++++ b/kernel/trace/trace_events_hist.c +@@ -90,12 +90,6 @@ static u64 hist_field_log2(struct hist_f + return (u64) ilog2(roundup_pow_of_two(val)); + } + +-static u64 hist_field_timestamp(struct hist_field *hist_field, void *event, +- struct ring_buffer_event *rbe) +-{ +- return ring_buffer_event_time_stamp(rbe); +-} +- + #define DEFINE_HIST_FIELD_FN(type) \ + static u64 hist_field_##type(struct hist_field *hist_field, \ + void *event, \ +@@ -143,6 +137,7 @@ enum hist_field_flags { + HIST_FIELD_FL_STACKTRACE = 1 << 8, + HIST_FIELD_FL_LOG2 = 1 << 9, + HIST_FIELD_FL_TIMESTAMP = 1 << 10, ++ HIST_FIELD_FL_TIMESTAMP_USECS = 1 << 11, + }; + + struct hist_trigger_attrs { +@@ -153,6 +148,7 @@ struct hist_trigger_attrs { + bool pause; + bool cont; + bool clear; ++ bool ts_in_usecs; + unsigned int map_bits; + }; + +@@ -170,6 +166,20 @@ struct hist_trigger_data { + bool enable_timestamps; + }; + ++static u64 hist_field_timestamp(struct hist_field *hist_field, void *event, ++ struct ring_buffer_event *rbe) ++{ ++ struct hist_trigger_data *hist_data = hist_field->hist_data; ++ struct trace_array *tr = hist_data->event_file->tr; ++ ++ u64 ts = ring_buffer_event_time_stamp(rbe); ++ ++ if (hist_data->attrs->ts_in_usecs && trace_clock_in_ns(tr)) ++ ts = ns2usecs(ts); ++ ++ return ts; ++} ++ + static const char *hist_field_name(struct hist_field *field, + unsigned int level) + { +@@ -634,6 +644,8 @@ static int create_key_field(struct hist_ + flags |= HIST_FIELD_FL_SYSCALL; + else if (strcmp(field_str, "log2") == 0) + flags |= HIST_FIELD_FL_LOG2; ++ else if (strcmp(field_str, "usecs") == 0) ++ flags |= HIST_FIELD_FL_TIMESTAMP_USECS; + else { + ret = -EINVAL; + goto out; +@@ -643,6 +655,8 @@ static int create_key_field(struct hist_ + if (strcmp(field_name, "common_timestamp") == 0) { + flags |= HIST_FIELD_FL_TIMESTAMP; + hist_data->enable_timestamps = true; ++ if (flags & HIST_FIELD_FL_TIMESTAMP_USECS) ++ hist_data->attrs->ts_in_usecs = true; + key_size = sizeof(u64); + } else { + field = trace_find_event_field(file->event_call, field_name); +@@ -1243,6 +1257,8 @@ static const char *get_hist_field_flags( + flags_str = "syscall"; + else if (hist_field->flags & HIST_FIELD_FL_LOG2) + flags_str = "log2"; ++ else if (hist_field->flags & HIST_FIELD_FL_TIMESTAMP_USECS) ++ flags_str = "usecs"; + + return flags_str; + } diff --git a/patches/features/all/rt/0015-hrtimer-Make-the-remote-enqueue-check-unconditional.patch b/patches/features/all/rt/0015-hrtimer-Make-the-remote-enqueue-check-unconditional.patch new file mode 100644 index 00000000000..05e8e61c6b9 --- /dev/null +++ b/patches/features/all/rt/0015-hrtimer-Make-the-remote-enqueue-check-unconditional.patch @@ -0,0 +1,131 @@ +From: Anna-Maria Gleixner +Date: Wed, 20 Dec 2017 17:13:04 +0100 +Subject: [PATCH 15/29] hrtimer: Make the remote enqueue check unconditional +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +hrtimer_cpu_base.expires_next is used to cache the next event armed in the +timer hardware. The value is used to check whether an hrtimer can be +enqueued remotely. If the new hrtimer is expiring before expires_next, then +remote enqueue is not possible as the remote hrtimer hardware cannot be +accessed for reprogramming to an earlier expiry time. + +The remote enqueue check is currently conditional on +CONFIG_HIGH_RES_TIMERS=y and hrtimer_cpu_base.hres_active. There is no +compelling reason to make this conditional. + +Move hrtimer_cpu_base.expires_next out of the CONFIG_HIGH_RES_TIMERS=y +guarded area and remove the conditionals in hrtimer_check_target(). + +The check is currently a NOOP for the CONFIG_HIGH_RES_TIMERS=n and the +!hrtimer_cpu_base.hres_active case because in these cases nothing updates +hrtimer_cpu_base.expires_next yet. This will be changed with later patches +which further reduce the #ifdef zoo in this code. + +Signed-off-by: Anna-Maria Gleixner +Signed-off-by: Sebastian Andrzej Siewior +--- + include/linux/hrtimer.h | 6 +++--- + kernel/time/hrtimer.c | 26 ++++++-------------------- + 2 files changed, 9 insertions(+), 23 deletions(-) + +--- a/include/linux/hrtimer.h ++++ b/include/linux/hrtimer.h +@@ -164,13 +164,13 @@ enum hrtimer_base_type { + * @hres_active: State of high resolution mode + * @in_hrtirq: hrtimer_interrupt() is currently executing + * @hang_detected: The last hrtimer interrupt detected a hang +- * @expires_next: absolute time of the next event, is required for remote +- * hrtimer enqueue + * @next_timer: Pointer to the first expiring timer + * @nr_events: Total number of hrtimer interrupt events + * @nr_retries: Total number of hrtimer interrupt retries + * @nr_hangs: Total number of hrtimer interrupt hangs + * @max_hang_time: Maximum time spent in hrtimer_interrupt ++ * @expires_next: absolute time of the next event, is required for remote ++ * hrtimer enqueue + * @clock_base: array of clock bases for this cpu + * + * Note: next_timer is just an optimization for __remove_hrtimer(). +@@ -186,13 +186,13 @@ struct hrtimer_cpu_base { + #ifdef CONFIG_HIGH_RES_TIMERS + unsigned int in_hrtirq : 1, + hang_detected : 1; +- ktime_t expires_next; + struct hrtimer *next_timer; + unsigned int nr_events; + unsigned short nr_retries; + unsigned short nr_hangs; + unsigned int max_hang_time; + #endif ++ ktime_t expires_next; + struct hrtimer_clock_base clock_base[HRTIMER_MAX_CLOCK_BASES]; + } ____cacheline_aligned; + +--- a/kernel/time/hrtimer.c ++++ b/kernel/time/hrtimer.c +@@ -154,26 +154,21 @@ struct hrtimer_clock_base *lock_hrtimer_ + } + + /* +- * With HIGHRES=y we do not migrate the timer when it is expiring +- * before the next event on the target cpu because we cannot reprogram +- * the target cpu hardware and we would cause it to fire late. ++ * We do not migrate the timer when it is expiring before the next ++ * event on the target cpu. When high resolution is enabled, we cannot ++ * reprogram the target cpu hardware and we would cause it to fire ++ * late. To keep it simple, we handle the high resolution enabled and ++ * disabled case similar. + * + * Called with cpu_base->lock of target cpu held. + */ + static int + hrtimer_check_target(struct hrtimer *timer, struct hrtimer_clock_base *new_base) + { +-#ifdef CONFIG_HIGH_RES_TIMERS + ktime_t expires; + +- if (!new_base->cpu_base->hres_active) +- return 0; +- + expires = ktime_sub(hrtimer_get_expires(timer), new_base->offset); + return expires <= new_base->cpu_base->expires_next; +-#else +- return 0; +-#endif + } + + static inline +@@ -657,16 +652,6 @@ static void hrtimer_reprogram(struct hrt + } + + /* +- * Initialize the high resolution related parts of cpu_base +- */ +-static inline void hrtimer_init_hres(struct hrtimer_cpu_base *base) +-{ +- base->expires_next = KTIME_MAX; +- base->hang_detected = 0; +- base->next_timer = NULL; +-} +- +-/* + * Retrigger next event is called after clock was set + * + * Called with interrupts disabled via on_each_cpu() +@@ -731,7 +716,6 @@ static inline int hrtimer_reprogram(stru + { + return 0; + } +-static inline void hrtimer_init_hres(struct hrtimer_cpu_base *base) { } + static inline void retrigger_next_event(void *arg) { } + + #endif /* CONFIG_HIGH_RES_TIMERS */ +@@ -1604,7 +1588,7 @@ int hrtimers_prepare_cpu(unsigned int cp + cpu_base->active_bases = 0; + cpu_base->cpu = cpu; + cpu_base->hres_active = 0; +- hrtimer_init_hres(cpu_base); ++ cpu_base->expires_next = KTIME_MAX; + return 0; + } + diff --git a/patches/features/all/rt/0015-tracing-Add-variable-support-to-hist-triggers.patch b/patches/features/all/rt/0015-tracing-Add-variable-support-to-hist-triggers.patch new file mode 100644 index 00000000000..9d342be6321 --- /dev/null +++ b/patches/features/all/rt/0015-tracing-Add-variable-support-to-hist-triggers.patch @@ -0,0 +1,779 @@ +From: Tom Zanussi +Date: Mon, 15 Jan 2018 20:51:49 -0600 +Subject: [PATCH 15/37] tracing: Add variable support to hist triggers +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Add support for saving the value of a current event's event field by +assigning it to a variable that can be read by a subsequent event. + +The basic syntax for saving a variable is to simply prefix a unique +variable name not corresponding to any keyword along with an '=' sign +to any event field. + +Both keys and values can be saved and retrieved in this way: + + # echo 'hist:keys=next_pid:vals=$ts0:ts0=common_timestamp ... + # echo 'hist:timer_pid=common_pid:key=$timer_pid ...' + +If a variable isn't a key variable or prefixed with 'vals=', the +associated event field will be saved in a variable but won't be summed +as a value: + + # echo 'hist:keys=next_pid:ts1=common_timestamp:... + +Multiple variables can be assigned at the same time: + + # echo 'hist:keys=pid:vals=$ts0,$b,field2:ts0=common_timestamp,b=field1 ... + +Multiple (or single) variables can also be assigned at the same time +using separate assignments: + + # echo 'hist:keys=pid:vals=$ts0:ts0=common_timestamp:b=field1:c=field2 ... + +Variables set as above can be used by being referenced from another +event, as described in a subsequent patch. + +Signed-off-by: Tom Zanussi +Signed-off-by: Baohong Liu +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/trace/trace_events_hist.c | 370 ++++++++++++++++++++++++++++++++++----- + 1 file changed, 331 insertions(+), 39 deletions(-) + +--- a/kernel/trace/trace_events_hist.c ++++ b/kernel/trace/trace_events_hist.c +@@ -30,6 +30,13 @@ typedef u64 (*hist_field_fn_t) (struct h + struct ring_buffer_event *rbe); + + #define HIST_FIELD_OPERANDS_MAX 2 ++#define HIST_FIELDS_MAX (TRACING_MAP_FIELDS_MAX + TRACING_MAP_VARS_MAX) ++ ++struct hist_var { ++ char *name; ++ struct hist_trigger_data *hist_data; ++ unsigned int idx; ++}; + + struct hist_field { + struct ftrace_event_field *field; +@@ -40,6 +47,7 @@ struct hist_field { + unsigned int is_signed; + struct hist_field *operands[HIST_FIELD_OPERANDS_MAX]; + struct hist_trigger_data *hist_data; ++ struct hist_var var; + }; + + static u64 hist_field_none(struct hist_field *field, void *event, +@@ -138,6 +146,13 @@ enum hist_field_flags { + HIST_FIELD_FL_LOG2 = 1 << 9, + HIST_FIELD_FL_TIMESTAMP = 1 << 10, + HIST_FIELD_FL_TIMESTAMP_USECS = 1 << 11, ++ HIST_FIELD_FL_VAR = 1 << 12, ++}; ++ ++struct var_defs { ++ unsigned int n_vars; ++ char *name[TRACING_MAP_VARS_MAX]; ++ char *expr[TRACING_MAP_VARS_MAX]; + }; + + struct hist_trigger_attrs { +@@ -150,13 +165,19 @@ struct hist_trigger_attrs { + bool clear; + bool ts_in_usecs; + unsigned int map_bits; ++ ++ char *assignment_str[TRACING_MAP_VARS_MAX]; ++ unsigned int n_assignments; ++ ++ struct var_defs var_defs; + }; + + struct hist_trigger_data { +- struct hist_field *fields[TRACING_MAP_FIELDS_MAX]; ++ struct hist_field *fields[HIST_FIELDS_MAX]; + unsigned int n_vals; + unsigned int n_keys; + unsigned int n_fields; ++ unsigned int n_vars; + unsigned int key_size; + struct tracing_map_sort_key sort_keys[TRACING_MAP_SORT_KEYS_MAX]; + unsigned int n_sort_keys; +@@ -164,6 +185,7 @@ struct hist_trigger_data { + struct hist_trigger_attrs *attrs; + struct tracing_map *map; + bool enable_timestamps; ++ bool remove; + }; + + static u64 hist_field_timestamp(struct hist_field *hist_field, void *event, +@@ -180,6 +202,48 @@ static u64 hist_field_timestamp(struct h + return ts; + } + ++static struct hist_field *find_var_field(struct hist_trigger_data *hist_data, ++ const char *var_name) ++{ ++ struct hist_field *hist_field, *found = NULL; ++ int i; ++ ++ for_each_hist_field(i, hist_data) { ++ hist_field = hist_data->fields[i]; ++ if (hist_field && hist_field->flags & HIST_FIELD_FL_VAR && ++ strcmp(hist_field->var.name, var_name) == 0) { ++ found = hist_field; ++ break; ++ } ++ } ++ ++ return found; ++} ++ ++static struct hist_field *find_var(struct hist_trigger_data *hist_data, ++ struct trace_event_file *file, ++ const char *var_name) ++{ ++ struct hist_trigger_data *test_data; ++ struct event_trigger_data *test; ++ struct hist_field *hist_field; ++ ++ hist_field = find_var_field(hist_data, var_name); ++ if (hist_field) ++ return hist_field; ++ ++ list_for_each_entry_rcu(test, &file->triggers, list) { ++ if (test->cmd_ops->trigger_type == ETT_EVENT_HIST) { ++ test_data = test->private_data; ++ hist_field = find_var_field(test_data, var_name); ++ if (hist_field) ++ return hist_field; ++ } ++ } ++ ++ return NULL; ++} ++ + static const char *hist_field_name(struct hist_field *field, + unsigned int level) + { +@@ -262,9 +326,14 @@ static int parse_map_size(char *str) + + static void destroy_hist_trigger_attrs(struct hist_trigger_attrs *attrs) + { ++ unsigned int i; ++ + if (!attrs) + return; + ++ for (i = 0; i < attrs->n_assignments; i++) ++ kfree(attrs->assignment_str[i]); ++ + kfree(attrs->name); + kfree(attrs->sort_key_str); + kfree(attrs->keys_str); +@@ -311,8 +380,22 @@ static int parse_assignment(char *str, s + goto out; + } + attrs->map_bits = map_bits; +- } else +- ret = -EINVAL; ++ } else { ++ char *assignment; ++ ++ if (attrs->n_assignments == TRACING_MAP_VARS_MAX) { ++ ret = -EINVAL; ++ goto out; ++ } ++ ++ assignment = kstrdup(str, GFP_KERNEL); ++ if (!assignment) { ++ ret = -ENOMEM; ++ goto out; ++ } ++ ++ attrs->assignment_str[attrs->n_assignments++] = assignment; ++ } + out: + return ret; + } +@@ -428,12 +511,15 @@ static void destroy_hist_field(struct hi + for (i = 0; i < HIST_FIELD_OPERANDS_MAX; i++) + destroy_hist_field(hist_field->operands[i], level + 1); + ++ kfree(hist_field->var.name); ++ + kfree(hist_field); + } + + static struct hist_field *create_hist_field(struct hist_trigger_data *hist_data, + struct ftrace_event_field *field, +- unsigned long flags) ++ unsigned long flags, ++ char *var_name) + { + struct hist_field *hist_field; + +@@ -459,7 +545,7 @@ static struct hist_field *create_hist_fi + if (flags & HIST_FIELD_FL_LOG2) { + unsigned long fl = flags & ~HIST_FIELD_FL_LOG2; + hist_field->fn = hist_field_log2; +- hist_field->operands[0] = create_hist_field(hist_data, field, fl); ++ hist_field->operands[0] = create_hist_field(hist_data, field, fl, NULL); + hist_field->size = hist_field->operands[0]->size; + goto out; + } +@@ -494,14 +580,23 @@ static struct hist_field *create_hist_fi + hist_field->field = field; + hist_field->flags = flags; + ++ if (var_name) { ++ hist_field->var.name = kstrdup(var_name, GFP_KERNEL); ++ if (!hist_field->var.name) ++ goto free; ++ } ++ + return hist_field; ++ free: ++ destroy_hist_field(hist_field, 0); ++ return NULL; + } + + static void destroy_hist_fields(struct hist_trigger_data *hist_data) + { + unsigned int i; + +- for (i = 0; i < TRACING_MAP_FIELDS_MAX; i++) { ++ for (i = 0; i < HIST_FIELDS_MAX; i++) { + if (hist_data->fields[i]) { + destroy_hist_field(hist_data->fields[i], 0); + hist_data->fields[i] = NULL; +@@ -512,11 +607,12 @@ static void destroy_hist_fields(struct h + static int create_hitcount_val(struct hist_trigger_data *hist_data) + { + hist_data->fields[HITCOUNT_IDX] = +- create_hist_field(hist_data, NULL, HIST_FIELD_FL_HITCOUNT); ++ create_hist_field(hist_data, NULL, HIST_FIELD_FL_HITCOUNT, NULL); + if (!hist_data->fields[HITCOUNT_IDX]) + return -ENOMEM; + + hist_data->n_vals++; ++ hist_data->n_fields++; + + if (WARN_ON(hist_data->n_vals > TRACING_MAP_VALS_MAX)) + return -EINVAL; +@@ -524,19 +620,16 @@ static int create_hitcount_val(struct hi + return 0; + } + +-static int create_val_field(struct hist_trigger_data *hist_data, +- unsigned int val_idx, +- struct trace_event_file *file, +- char *field_str) ++static int __create_val_field(struct hist_trigger_data *hist_data, ++ unsigned int val_idx, ++ struct trace_event_file *file, ++ char *var_name, char *field_str, ++ unsigned long flags) + { + struct ftrace_event_field *field = NULL; +- unsigned long flags = 0; + char *field_name; + int ret = 0; + +- if (WARN_ON(val_idx >= TRACING_MAP_VALS_MAX)) +- return -EINVAL; +- + field_name = strsep(&field_str, "."); + if (field_str) { + if (strcmp(field_str, "hex") == 0) +@@ -558,25 +651,58 @@ static int create_val_field(struct hist_ + } + } + +- hist_data->fields[val_idx] = create_hist_field(hist_data, field, flags); ++ hist_data->fields[val_idx] = create_hist_field(hist_data, field, flags, var_name); + if (!hist_data->fields[val_idx]) { + ret = -ENOMEM; + goto out; + } + + ++hist_data->n_vals; ++ ++hist_data->n_fields; + +- if (WARN_ON(hist_data->n_vals > TRACING_MAP_VALS_MAX)) ++ if (WARN_ON(hist_data->n_vals > TRACING_MAP_VALS_MAX + TRACING_MAP_VARS_MAX)) + ret = -EINVAL; + out: + return ret; + } + ++static int create_val_field(struct hist_trigger_data *hist_data, ++ unsigned int val_idx, ++ struct trace_event_file *file, ++ char *field_str) ++{ ++ if (WARN_ON(val_idx >= TRACING_MAP_VALS_MAX)) ++ return -EINVAL; ++ ++ return __create_val_field(hist_data, val_idx, file, NULL, field_str, 0); ++} ++ ++static int create_var_field(struct hist_trigger_data *hist_data, ++ unsigned int val_idx, ++ struct trace_event_file *file, ++ char *var_name, char *expr_str) ++{ ++ unsigned long flags = 0; ++ ++ if (WARN_ON(val_idx >= TRACING_MAP_VALS_MAX + TRACING_MAP_VARS_MAX)) ++ return -EINVAL; ++ if (find_var(hist_data, file, var_name) && !hist_data->remove) { ++ return -EINVAL; ++ } ++ ++ flags |= HIST_FIELD_FL_VAR; ++ hist_data->n_vars++; ++ if (WARN_ON(hist_data->n_vars > TRACING_MAP_VARS_MAX)) ++ return -EINVAL; ++ ++ return __create_val_field(hist_data, val_idx, file, var_name, expr_str, flags); ++} ++ + static int create_val_fields(struct hist_trigger_data *hist_data, + struct trace_event_file *file) + { + char *fields_str, *field_str; +- unsigned int i, j; ++ unsigned int i, j = 1; + int ret; + + ret = create_hitcount_val(hist_data); +@@ -596,12 +722,15 @@ static int create_val_fields(struct hist + field_str = strsep(&fields_str, ","); + if (!field_str) + break; ++ + if (strcmp(field_str, "hitcount") == 0) + continue; ++ + ret = create_val_field(hist_data, j++, file, field_str); + if (ret) + goto out; + } ++ + if (fields_str && (strcmp(fields_str, "hitcount") != 0)) + ret = -EINVAL; + out: +@@ -615,11 +744,12 @@ static int create_key_field(struct hist_ + char *field_str) + { + struct ftrace_event_field *field = NULL; ++ struct hist_field *hist_field = NULL; + unsigned long flags = 0; + unsigned int key_size; + int ret = 0; + +- if (WARN_ON(key_idx >= TRACING_MAP_FIELDS_MAX)) ++ if (WARN_ON(key_idx >= HIST_FIELDS_MAX)) + return -EINVAL; + + flags |= HIST_FIELD_FL_KEY; +@@ -627,6 +757,7 @@ static int create_key_field(struct hist_ + if (strcmp(field_str, "stacktrace") == 0) { + flags |= HIST_FIELD_FL_STACKTRACE; + key_size = sizeof(unsigned long) * HIST_STACKTRACE_DEPTH; ++ hist_field = create_hist_field(hist_data, NULL, flags, NULL); + } else { + char *field_name = strsep(&field_str, "."); + +@@ -672,7 +803,7 @@ static int create_key_field(struct hist_ + } + } + +- hist_data->fields[key_idx] = create_hist_field(hist_data, field, flags); ++ hist_data->fields[key_idx] = create_hist_field(hist_data, field, flags, NULL); + if (!hist_data->fields[key_idx]) { + ret = -ENOMEM; + goto out; +@@ -688,6 +819,7 @@ static int create_key_field(struct hist_ + } + + hist_data->n_keys++; ++ hist_data->n_fields++; + + if (WARN_ON(hist_data->n_keys > TRACING_MAP_KEYS_MAX)) + return -EINVAL; +@@ -731,21 +863,111 @@ static int create_key_fields(struct hist + return ret; + } + ++static int create_var_fields(struct hist_trigger_data *hist_data, ++ struct trace_event_file *file) ++{ ++ unsigned int i, j = hist_data->n_vals; ++ int ret = 0; ++ ++ unsigned int n_vars = hist_data->attrs->var_defs.n_vars; ++ ++ for (i = 0; i < n_vars; i++) { ++ char *var_name = hist_data->attrs->var_defs.name[i]; ++ char *expr = hist_data->attrs->var_defs.expr[i]; ++ ++ ret = create_var_field(hist_data, j++, file, var_name, expr); ++ if (ret) ++ goto out; ++ } ++ out: ++ return ret; ++} ++ ++static void free_var_defs(struct hist_trigger_data *hist_data) ++{ ++ unsigned int i; ++ ++ for (i = 0; i < hist_data->attrs->var_defs.n_vars; i++) { ++ kfree(hist_data->attrs->var_defs.name[i]); ++ kfree(hist_data->attrs->var_defs.expr[i]); ++ } ++ ++ hist_data->attrs->var_defs.n_vars = 0; ++} ++ ++static int parse_var_defs(struct hist_trigger_data *hist_data) ++{ ++ char *s, *str, *var_name, *field_str; ++ unsigned int i, j, n_vars = 0; ++ int ret = 0; ++ ++ for (i = 0; i < hist_data->attrs->n_assignments; i++) { ++ str = hist_data->attrs->assignment_str[i]; ++ for (j = 0; j < TRACING_MAP_VARS_MAX; j++) { ++ field_str = strsep(&str, ","); ++ if (!field_str) ++ break; ++ ++ var_name = strsep(&field_str, "="); ++ if (!var_name || !field_str) { ++ ret = -EINVAL; ++ goto free; ++ } ++ ++ if (n_vars == TRACING_MAP_VARS_MAX) { ++ ret = -EINVAL; ++ goto free; ++ } ++ ++ s = kstrdup(var_name, GFP_KERNEL); ++ if (!s) { ++ ret = -ENOMEM; ++ goto free; ++ } ++ hist_data->attrs->var_defs.name[n_vars] = s; ++ ++ s = kstrdup(field_str, GFP_KERNEL); ++ if (!s) { ++ kfree(hist_data->attrs->var_defs.name[n_vars]); ++ ret = -ENOMEM; ++ goto free; ++ } ++ hist_data->attrs->var_defs.expr[n_vars++] = s; ++ ++ hist_data->attrs->var_defs.n_vars = n_vars; ++ } ++ } ++ ++ return ret; ++ free: ++ free_var_defs(hist_data); ++ ++ return ret; ++} ++ + static int create_hist_fields(struct hist_trigger_data *hist_data, + struct trace_event_file *file) + { + int ret; + ++ ret = parse_var_defs(hist_data); ++ if (ret) ++ goto out; ++ + ret = create_val_fields(hist_data, file); + if (ret) + goto out; + +- ret = create_key_fields(hist_data, file); ++ ret = create_var_fields(hist_data, file); + if (ret) + goto out; + +- hist_data->n_fields = hist_data->n_vals + hist_data->n_keys; ++ ret = create_key_fields(hist_data, file); ++ if (ret) ++ goto out; + out: ++ free_var_defs(hist_data); ++ + return ret; + } + +@@ -768,7 +990,7 @@ static int create_sort_keys(struct hist_ + char *fields_str = hist_data->attrs->sort_key_str; + struct tracing_map_sort_key *sort_key; + int descending, ret = 0; +- unsigned int i, j; ++ unsigned int i, j, k; + + hist_data->n_sort_keys = 1; /* we always have at least one, hitcount */ + +@@ -816,12 +1038,19 @@ static int create_sort_keys(struct hist_ + continue; + } + +- for (j = 1; j < hist_data->n_fields; j++) { ++ for (j = 1, k = 1; j < hist_data->n_fields; j++) { ++ unsigned int idx; ++ + hist_field = hist_data->fields[j]; ++ if (hist_field->flags & HIST_FIELD_FL_VAR) ++ continue; ++ ++ idx = k++; ++ + test_name = hist_field_name(hist_field, 0); + + if (strcmp(field_name, test_name) == 0) { +- sort_key->field_idx = j; ++ sort_key->field_idx = idx; + descending = is_descending(field_str); + if (descending < 0) { + ret = descending; +@@ -836,6 +1065,7 @@ static int create_sort_keys(struct hist_ + break; + } + } ++ + hist_data->n_sort_keys = i; + out: + return ret; +@@ -876,12 +1106,19 @@ static int create_tracing_map_fields(str + idx = tracing_map_add_key_field(map, + hist_field->offset, + cmp_fn); +- +- } else ++ } else if (!(hist_field->flags & HIST_FIELD_FL_VAR)) + idx = tracing_map_add_sum_field(map); + + if (idx < 0) + return idx; ++ ++ if (hist_field->flags & HIST_FIELD_FL_VAR) { ++ idx = tracing_map_add_var(map); ++ if (idx < 0) ++ return idx; ++ hist_field->var.idx = idx; ++ hist_field->var.hist_data = hist_data; ++ } + } + + return 0; +@@ -905,7 +1142,8 @@ static bool need_tracing_map_ops(struct + static struct hist_trigger_data * + create_hist_data(unsigned int map_bits, + struct hist_trigger_attrs *attrs, +- struct trace_event_file *file) ++ struct trace_event_file *file, ++ bool remove) + { + const struct tracing_map_ops *map_ops = NULL; + struct hist_trigger_data *hist_data; +@@ -916,6 +1154,7 @@ create_hist_data(unsigned int map_bits, + return ERR_PTR(-ENOMEM); + + hist_data->attrs = attrs; ++ hist_data->remove = remove; + + ret = create_hist_fields(hist_data, file); + if (ret) +@@ -962,14 +1201,28 @@ static void hist_trigger_elt_update(stru + struct ring_buffer_event *rbe) + { + struct hist_field *hist_field; +- unsigned int i; ++ unsigned int i, var_idx; + u64 hist_val; + + for_each_hist_val_field(i, hist_data) { + hist_field = hist_data->fields[i]; + hist_val = hist_field->fn(hist_field, rec, rbe); ++ if (hist_field->flags & HIST_FIELD_FL_VAR) { ++ var_idx = hist_field->var.idx; ++ tracing_map_set_var(elt, var_idx, hist_val); ++ continue; ++ } + tracing_map_update_sum(elt, i, hist_val); + } ++ ++ for_each_hist_key_field(i, hist_data) { ++ hist_field = hist_data->fields[i]; ++ if (hist_field->flags & HIST_FIELD_FL_VAR) { ++ hist_val = hist_field->fn(hist_field, rec, rbe); ++ var_idx = hist_field->var.idx; ++ tracing_map_set_var(elt, var_idx, hist_val); ++ } ++ } + } + + static inline void add_to_key(char *compound_key, void *key, +@@ -1144,6 +1397,9 @@ hist_trigger_entry_print(struct seq_file + for (i = 1; i < hist_data->n_vals; i++) { + field_name = hist_field_name(hist_data->fields[i], 0); + ++ if (hist_data->fields[i]->flags & HIST_FIELD_FL_VAR) ++ continue; ++ + if (hist_data->fields[i]->flags & HIST_FIELD_FL_HEX) { + seq_printf(m, " %s: %10llx", field_name, + tracing_map_read_sum(elt, i)); +@@ -1267,6 +1523,9 @@ static void hist_field_print(struct seq_ + { + const char *field_name = hist_field_name(hist_field, 0); + ++ if (hist_field->var.name) ++ seq_printf(m, "%s=", hist_field->var.name); ++ + if (hist_field->flags & HIST_FIELD_FL_TIMESTAMP) + seq_puts(m, "common_timestamp"); + else if (field_name) +@@ -1285,7 +1544,8 @@ static int event_hist_trigger_print(stru + struct event_trigger_data *data) + { + struct hist_trigger_data *hist_data = data->private_data; +- struct hist_field *key_field; ++ struct hist_field *field; ++ bool have_var = false; + unsigned int i; + + seq_puts(m, "hist:"); +@@ -1296,25 +1556,47 @@ static int event_hist_trigger_print(stru + seq_puts(m, "keys="); + + for_each_hist_key_field(i, hist_data) { +- key_field = hist_data->fields[i]; ++ field = hist_data->fields[i]; + + if (i > hist_data->n_vals) + seq_puts(m, ","); + +- if (key_field->flags & HIST_FIELD_FL_STACKTRACE) ++ if (field->flags & HIST_FIELD_FL_STACKTRACE) + seq_puts(m, "stacktrace"); + else +- hist_field_print(m, key_field); ++ hist_field_print(m, field); + } + + seq_puts(m, ":vals="); + + for_each_hist_val_field(i, hist_data) { ++ field = hist_data->fields[i]; ++ if (field->flags & HIST_FIELD_FL_VAR) { ++ have_var = true; ++ continue; ++ } ++ + if (i == HITCOUNT_IDX) + seq_puts(m, "hitcount"); + else { + seq_puts(m, ","); +- hist_field_print(m, hist_data->fields[i]); ++ hist_field_print(m, field); ++ } ++ } ++ ++ if (have_var) { ++ unsigned int n = 0; ++ ++ seq_puts(m, ":"); ++ ++ for_each_hist_val_field(i, hist_data) { ++ field = hist_data->fields[i]; ++ ++ if (field->flags & HIST_FIELD_FL_VAR) { ++ if (n++) ++ seq_puts(m, ","); ++ hist_field_print(m, field); ++ } + } + } + +@@ -1322,7 +1604,10 @@ static int event_hist_trigger_print(stru + + for (i = 0; i < hist_data->n_sort_keys; i++) { + struct tracing_map_sort_key *sort_key; +- unsigned int idx; ++ unsigned int idx, first_key_idx; ++ ++ /* skip VAR vals */ ++ first_key_idx = hist_data->n_vals - hist_data->n_vars; + + sort_key = &hist_data->sort_keys[i]; + idx = sort_key->field_idx; +@@ -1335,8 +1620,11 @@ static int event_hist_trigger_print(stru + + if (idx == HITCOUNT_IDX) + seq_puts(m, "hitcount"); +- else ++ else { ++ if (idx >= first_key_idx) ++ idx += hist_data->n_vars; + hist_field_print(m, hist_data->fields[idx]); ++ } + + if (sort_key->descending) + seq_puts(m, ".descending"); +@@ -1633,7 +1921,7 @@ static void hist_unregister_trigger(char + test->ops->free(test->ops, test); + + if (hist_data->enable_timestamps) { +- if (unregistered) ++ if (!hist_data->remove || unregistered) + tracing_set_time_stamp_abs(file->tr, false); + } + } +@@ -1666,12 +1954,16 @@ static int event_hist_trigger_func(struc + struct hist_trigger_attrs *attrs; + struct event_trigger_ops *trigger_ops; + struct hist_trigger_data *hist_data; ++ bool remove = false; + char *trigger; + int ret = 0; + + if (!param) + return -EINVAL; + ++ if (glob[0] == '!') ++ remove = true; ++ + /* separate the trigger from the filter (k:v [if filter]) */ + trigger = strsep(¶m, " \t"); + if (!trigger) +@@ -1684,7 +1976,7 @@ static int event_hist_trigger_func(struc + if (attrs->map_bits) + hist_trigger_bits = attrs->map_bits; + +- hist_data = create_hist_data(hist_trigger_bits, attrs, file); ++ hist_data = create_hist_data(hist_trigger_bits, attrs, file, remove); + if (IS_ERR(hist_data)) { + destroy_hist_trigger_attrs(attrs); + return PTR_ERR(hist_data); +@@ -1713,7 +2005,7 @@ static int event_hist_trigger_func(struc + goto out_free; + } + +- if (glob[0] == '!') { ++ if (remove) { + cmd_ops->unreg(glob+1, trigger_ops, trigger_data, file); + ret = 0; + goto out_free; diff --git a/patches/features/all/rt/0016-hrtimer-Make-hrtimer_cpu_base.next_timer-handling-un.patch b/patches/features/all/rt/0016-hrtimer-Make-hrtimer_cpu_base.next_timer-handling-un.patch new file mode 100644 index 00000000000..fcb8b040780 --- /dev/null +++ b/patches/features/all/rt/0016-hrtimer-Make-hrtimer_cpu_base.next_timer-handling-un.patch @@ -0,0 +1,98 @@ +From: Anna-Maria Gleixner +Date: Wed, 20 Dec 2017 17:13:05 +0100 +Subject: [PATCH 16/29] hrtimer: Make hrtimer_cpu_base.next_timer handling + unconditional +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +hrtimer_cpu_base.next_timer stores the pointer to the next expiring timer +in a cpu base. + +This pointer cannot be dereferenced and is solely used to check whether a +hrtimer which is removed is the hrtimer which is the first to expire in the +CPU base. If this is the case, then the timer hardware needs to be +reprogrammed to avoid an extra interrupt for nothing. + +Again, this is conditional functionality, but there is no compelling reason +to make this conditional. As a preparation, hrtimer_cpu_base.next_timer +needs to be available unconditonal. Aside of that the upcoming support for +softirq based hrtimers requires access to this pointer unconditionally. + +Make the update of hrtimer_cpu_base.next_timer unconditional and remove the +ifdef cruft. The impact on CONFIG_HIGH_RES_TIMERS=n && CONFIG_NOHZ=n is +marginal as it's just a store on an already dirtied cacheline. + +No functional change. + +Signed-off-by: Anna-Maria Gleixner +Signed-off-by: Sebastian Andrzej Siewior +--- + include/linux/hrtimer.h | 4 ++-- + kernel/time/hrtimer.c | 12 ++---------- + 2 files changed, 4 insertions(+), 12 deletions(-) + +--- a/include/linux/hrtimer.h ++++ b/include/linux/hrtimer.h +@@ -164,13 +164,13 @@ enum hrtimer_base_type { + * @hres_active: State of high resolution mode + * @in_hrtirq: hrtimer_interrupt() is currently executing + * @hang_detected: The last hrtimer interrupt detected a hang +- * @next_timer: Pointer to the first expiring timer + * @nr_events: Total number of hrtimer interrupt events + * @nr_retries: Total number of hrtimer interrupt retries + * @nr_hangs: Total number of hrtimer interrupt hangs + * @max_hang_time: Maximum time spent in hrtimer_interrupt + * @expires_next: absolute time of the next event, is required for remote + * hrtimer enqueue ++ * @next_timer: Pointer to the first expiring timer + * @clock_base: array of clock bases for this cpu + * + * Note: next_timer is just an optimization for __remove_hrtimer(). +@@ -186,13 +186,13 @@ struct hrtimer_cpu_base { + #ifdef CONFIG_HIGH_RES_TIMERS + unsigned int in_hrtirq : 1, + hang_detected : 1; +- struct hrtimer *next_timer; + unsigned int nr_events; + unsigned short nr_retries; + unsigned short nr_hangs; + unsigned int max_hang_time; + #endif + ktime_t expires_next; ++ struct hrtimer *next_timer; + struct hrtimer_clock_base clock_base[HRTIMER_MAX_CLOCK_BASES]; + } ____cacheline_aligned; + +--- a/kernel/time/hrtimer.c ++++ b/kernel/time/hrtimer.c +@@ -459,21 +459,13 @@ static struct hrtimer_clock_base * + while ((base = __next_base((cpu_base), &(active)))) + + #if defined(CONFIG_NO_HZ_COMMON) || defined(CONFIG_HIGH_RES_TIMERS) +-static inline void hrtimer_update_next_timer(struct hrtimer_cpu_base *cpu_base, +- struct hrtimer *timer) +-{ +-#ifdef CONFIG_HIGH_RES_TIMERS +- cpu_base->next_timer = timer; +-#endif +-} +- + static ktime_t __hrtimer_get_next_event(struct hrtimer_cpu_base *cpu_base) + { + struct hrtimer_clock_base *base; + unsigned int active = cpu_base->active_bases; + ktime_t expires, expires_next = KTIME_MAX; + +- hrtimer_update_next_timer(cpu_base, NULL); ++ cpu_base->next_timer = NULL; + for_each_active_base(base, cpu_base, active) { + struct timerqueue_node *next; + struct hrtimer *timer; +@@ -483,7 +475,7 @@ static ktime_t __hrtimer_get_next_event( + expires = ktime_sub(hrtimer_get_expires(timer), base->offset); + if (expires < expires_next) { + expires_next = expires; +- hrtimer_update_next_timer(cpu_base, timer); ++ cpu_base->next_timer = timer; + } + } + /* diff --git a/patches/features/all/rt/0016-tracing-Account-for-variables-in-named-trigger-compa.patch b/patches/features/all/rt/0016-tracing-Account-for-variables-in-named-trigger-compa.patch new file mode 100644 index 00000000000..44a48685fbe --- /dev/null +++ b/patches/features/all/rt/0016-tracing-Account-for-variables-in-named-trigger-compa.patch @@ -0,0 +1,42 @@ +From: Tom Zanussi +Date: Mon, 15 Jan 2018 20:51:50 -0600 +Subject: [PATCH 16/37] tracing: Account for variables in named trigger + compatibility +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Named triggers must also have the same set of variables in order to be +considered compatible - update the trigger match test to account for +that. + +The reason for this requirement is that named triggers with variables +are meant to allow one or more events to set the same variable. + +Signed-off-by: Tom Zanussi +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/trace/trace_events_hist.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +--- a/kernel/trace/trace_events_hist.c ++++ b/kernel/trace/trace_events_hist.c +@@ -1612,7 +1612,7 @@ static int event_hist_trigger_print(stru + sort_key = &hist_data->sort_keys[i]; + idx = sort_key->field_idx; + +- if (WARN_ON(idx >= TRACING_MAP_FIELDS_MAX)) ++ if (WARN_ON(idx >= HIST_FIELDS_MAX)) + return -EINVAL; + + if (i > 0) +@@ -1800,6 +1800,11 @@ static bool hist_trigger_match(struct ev + return false; + if (key_field->is_signed != key_field_test->is_signed) + return false; ++ if (!!key_field->var.name != !!key_field_test->var.name) ++ return false; ++ if (key_field->var.name && ++ strcmp(key_field->var.name, key_field_test->var.name) != 0) ++ return false; + } + + for (i = 0; i < hist_data->n_sort_keys; i++) { diff --git a/patches/features/all/rt/0017-hrtimer-Make-hrtimer_reprogramm-unconditional.patch b/patches/features/all/rt/0017-hrtimer-Make-hrtimer_reprogramm-unconditional.patch new file mode 100644 index 00000000000..8fd1fad56e7 --- /dev/null +++ b/patches/features/all/rt/0017-hrtimer-Make-hrtimer_reprogramm-unconditional.patch @@ -0,0 +1,187 @@ +From: Anna-Maria Gleixner +Date: Wed, 20 Dec 2017 17:13:06 +0100 +Subject: [PATCH 17/29] hrtimer: Make hrtimer_reprogramm() unconditional +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +hrtimer_reprogram() needs to be available unconditionally for softirq based +hrtimers. Move the function and all required struct members out of the +CONFIG_HIGH_RES_TIMERS #ifdef. + +There is no functional change because hrtimer_reprogram() is only invoked +when hrtimer_cpu_base.hres_active is true. Making it unconditional +increases the text size for the CONFIG_HIGH_RES_TIMERS=n case, but avoids +replication of that code for the upcoming softirq based hrtimers support. + +Signed-off-by: Anna-Maria Gleixner +Signed-off-by: Sebastian Andrzej Siewior +--- + include/linux/hrtimer.h | 6 +- + kernel/time/hrtimer.c | 129 +++++++++++++++++++++++------------------------- + 2 files changed, 65 insertions(+), 70 deletions(-) + +--- a/include/linux/hrtimer.h ++++ b/include/linux/hrtimer.h +@@ -182,10 +182,10 @@ struct hrtimer_cpu_base { + unsigned int cpu; + unsigned int active_bases; + unsigned int clock_was_set_seq; +- unsigned int hres_active : 1; +-#ifdef CONFIG_HIGH_RES_TIMERS +- unsigned int in_hrtirq : 1, ++ unsigned int hres_active : 1, ++ in_hrtirq : 1, + hang_detected : 1; ++#ifdef CONFIG_HIGH_RES_TIMERS + unsigned int nr_events; + unsigned short nr_retries; + unsigned short nr_hangs; +--- a/kernel/time/hrtimer.c ++++ b/kernel/time/hrtimer.c +@@ -582,68 +582,6 @@ hrtimer_force_reprogram(struct hrtimer_c + } + + /* +- * When a timer is enqueued and expires earlier than the already enqueued +- * timers, we have to check, whether it expires earlier than the timer for +- * which the clock event device was armed. +- * +- * Called with interrupts disabled and base->cpu_base.lock held +- */ +-static void hrtimer_reprogram(struct hrtimer *timer, +- struct hrtimer_clock_base *base) +-{ +- struct hrtimer_cpu_base *cpu_base = this_cpu_ptr(&hrtimer_bases); +- ktime_t expires = ktime_sub(hrtimer_get_expires(timer), base->offset); +- +- WARN_ON_ONCE(hrtimer_get_expires_tv64(timer) < 0); +- +- /* +- * If the timer is not on the current cpu, we cannot reprogram +- * the other cpus clock event device. +- */ +- if (base->cpu_base != cpu_base) +- return; +- +- /* +- * If the hrtimer interrupt is running, then it will +- * reevaluate the clock bases and reprogram the clock event +- * device. The callbacks are always executed in hard interrupt +- * context so we don't need an extra check for a running +- * callback. +- */ +- if (cpu_base->in_hrtirq) +- return; +- +- /* +- * CLOCK_REALTIME timer might be requested with an absolute +- * expiry time which is less than base->offset. Set it to 0. +- */ +- if (expires < 0) +- expires = 0; +- +- if (expires >= cpu_base->expires_next) +- return; +- +- /* Update the pointer to the next expiring timer */ +- cpu_base->next_timer = timer; +- +- /* +- * If a hang was detected in the last timer interrupt then we +- * do not schedule a timer which is earlier than the expiry +- * which we enforced in the hang detection. We want the system +- * to make progress. +- */ +- if (cpu_base->hang_detected) +- return; +- +- /* +- * Program the timer hardware. We enforce the expiry for +- * events which are already in the past. +- */ +- cpu_base->expires_next = expires; +- tick_program_event(expires, 1); +-} +- +-/* + * Retrigger next event is called after clock was set + * + * Called with interrupts disabled via on_each_cpu() +@@ -703,16 +641,73 @@ static inline int hrtimer_is_hres_enable + static inline void hrtimer_switch_to_hres(void) { } + static inline void + hrtimer_force_reprogram(struct hrtimer_cpu_base *base, int skip_equal) { } +-static inline int hrtimer_reprogram(struct hrtimer *timer, +- struct hrtimer_clock_base *base) +-{ +- return 0; +-} + static inline void retrigger_next_event(void *arg) { } + + #endif /* CONFIG_HIGH_RES_TIMERS */ + + /* ++ * When a timer is enqueued and expires earlier than the already enqueued ++ * timers, we have to check, whether it expires earlier than the timer for ++ * which the clock event device was armed. ++ * ++ * Called with interrupts disabled and base->cpu_base.lock held ++ */ ++static void hrtimer_reprogram(struct hrtimer *timer, ++ struct hrtimer_clock_base *base) ++{ ++ struct hrtimer_cpu_base *cpu_base = this_cpu_ptr(&hrtimer_bases); ++ ktime_t expires = ktime_sub(hrtimer_get_expires(timer), base->offset); ++ ++ WARN_ON_ONCE(hrtimer_get_expires_tv64(timer) < 0); ++ ++ /* ++ * If the timer is not on the current cpu, we cannot reprogram ++ * the other cpus clock event device. ++ */ ++ if (base->cpu_base != cpu_base) ++ return; ++ ++ /* ++ * If the hrtimer interrupt is running, then it will ++ * reevaluate the clock bases and reprogram the clock event ++ * device. The callbacks are always executed in hard interrupt ++ * context so we don't need an extra check for a running ++ * callback. ++ */ ++ if (cpu_base->in_hrtirq) ++ return; ++ ++ /* ++ * CLOCK_REALTIME timer might be requested with an absolute ++ * expiry time which is less than base->offset. Set it to 0. ++ */ ++ if (expires < 0) ++ expires = 0; ++ ++ if (expires >= cpu_base->expires_next) ++ return; ++ ++ /* Update the pointer to the next expiring timer */ ++ cpu_base->next_timer = timer; ++ ++ /* ++ * If a hang was detected in the last timer interrupt then we ++ * do not schedule a timer which is earlier than the expiry ++ * which we enforced in the hang detection. We want the system ++ * to make progress. ++ */ ++ if (cpu_base->hang_detected) ++ return; ++ ++ /* ++ * Program the timer hardware. We enforce the expiry for ++ * events which are already in the past. ++ */ ++ cpu_base->expires_next = expires; ++ tick_program_event(expires, 1); ++} ++ ++/* + * Clock realtime was set + * + * Change the offset of the realtime clock vs. the monotonic diff --git a/patches/features/all/rt/0017-tracing-Move-get_hist_field_flags.patch b/patches/features/all/rt/0017-tracing-Move-get_hist_field_flags.patch new file mode 100644 index 00000000000..73a79db7163 --- /dev/null +++ b/patches/features/all/rt/0017-tracing-Move-get_hist_field_flags.patch @@ -0,0 +1,74 @@ +From: Tom Zanussi +Date: Mon, 15 Jan 2018 20:51:51 -0600 +Subject: [PATCH 17/37] tracing: Move get_hist_field_flags() +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Move get_hist_field_flags() to make it more easily accessible for new +code (and keep the move separate from new functionality). + +Signed-off-by: Tom Zanussi +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/trace/trace_events_hist.c | 44 +++++++++++++++++++-------------------- + 1 file changed, 22 insertions(+), 22 deletions(-) + +--- a/kernel/trace/trace_events_hist.c ++++ b/kernel/trace/trace_events_hist.c +@@ -497,6 +497,28 @@ static const struct tracing_map_ops hist + .elt_init = hist_trigger_elt_comm_init, + }; + ++static const char *get_hist_field_flags(struct hist_field *hist_field) ++{ ++ const char *flags_str = NULL; ++ ++ if (hist_field->flags & HIST_FIELD_FL_HEX) ++ flags_str = "hex"; ++ else if (hist_field->flags & HIST_FIELD_FL_SYM) ++ flags_str = "sym"; ++ else if (hist_field->flags & HIST_FIELD_FL_SYM_OFFSET) ++ flags_str = "sym-offset"; ++ else if (hist_field->flags & HIST_FIELD_FL_EXECNAME) ++ flags_str = "execname"; ++ else if (hist_field->flags & HIST_FIELD_FL_SYSCALL) ++ flags_str = "syscall"; ++ else if (hist_field->flags & HIST_FIELD_FL_LOG2) ++ flags_str = "log2"; ++ else if (hist_field->flags & HIST_FIELD_FL_TIMESTAMP_USECS) ++ flags_str = "usecs"; ++ ++ return flags_str; ++} ++ + static void destroy_hist_field(struct hist_field *hist_field, + unsigned int level) + { +@@ -1497,28 +1519,6 @@ const struct file_operations event_hist_ + .release = single_release, + }; + +-static const char *get_hist_field_flags(struct hist_field *hist_field) +-{ +- const char *flags_str = NULL; +- +- if (hist_field->flags & HIST_FIELD_FL_HEX) +- flags_str = "hex"; +- else if (hist_field->flags & HIST_FIELD_FL_SYM) +- flags_str = "sym"; +- else if (hist_field->flags & HIST_FIELD_FL_SYM_OFFSET) +- flags_str = "sym-offset"; +- else if (hist_field->flags & HIST_FIELD_FL_EXECNAME) +- flags_str = "execname"; +- else if (hist_field->flags & HIST_FIELD_FL_SYSCALL) +- flags_str = "syscall"; +- else if (hist_field->flags & HIST_FIELD_FL_LOG2) +- flags_str = "log2"; +- else if (hist_field->flags & HIST_FIELD_FL_TIMESTAMP_USECS) +- flags_str = "usecs"; +- +- return flags_str; +-} +- + static void hist_field_print(struct seq_file *m, struct hist_field *hist_field) + { + const char *field_name = hist_field_name(hist_field, 0); diff --git a/patches/features/all/rt/0018-hrtimer-Make-hrtimer_force_reprogramm-unconditionall.patch b/patches/features/all/rt/0018-hrtimer-Make-hrtimer_force_reprogramm-unconditionall.patch new file mode 100644 index 00000000000..80b8d57248f --- /dev/null +++ b/patches/features/all/rt/0018-hrtimer-Make-hrtimer_force_reprogramm-unconditionall.patch @@ -0,0 +1,106 @@ +From: Anna-Maria Gleixner +Date: Wed, 20 Dec 2017 17:13:07 +0100 +Subject: [PATCH 18/29] hrtimer: Make hrtimer_force_reprogramm() + unconditionally available +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +hrtimer_force_reprogram() needs to be available unconditionally for softirq +based hrtimers. Move the function and all required struct members out of +the CONFIG_HIGH_RES_TIMERS #ifdef. + +There is no functional change because hrtimer_force_reprogram() is only +invoked when hrtimer_cpu_base.hres_active is true and +CONFIG_HIGH_RES_TIMERS=y. + +Making it unconditional increases the text size for the +CONFIG_HIGH_RES_TIMERS=n case slightly, but avoids replication of that code +for the upcoming softirq based hrtimers support. Most of the code gets +eliminated in the CONFIG_HIGH_RES_TIMERS=n case by the compiler. + +Signed-off-by: Anna-Maria Gleixner +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/time/hrtimer.c | 58 ++++++++++++++++++++++++-------------------------- + 1 file changed, 28 insertions(+), 30 deletions(-) + +--- a/kernel/time/hrtimer.c ++++ b/kernel/time/hrtimer.c +@@ -513,34 +513,6 @@ static inline int hrtimer_hres_active(vo + return __hrtimer_hres_active(this_cpu_ptr(&hrtimer_bases)); + } + +-/* High resolution timer related functions */ +-#ifdef CONFIG_HIGH_RES_TIMERS +- +-/* +- * High resolution timer enabled ? +- */ +-static bool hrtimer_hres_enabled __read_mostly = true; +-unsigned int hrtimer_resolution __read_mostly = LOW_RES_NSEC; +-EXPORT_SYMBOL_GPL(hrtimer_resolution); +- +-/* +- * Enable / Disable high resolution mode +- */ +-static int __init setup_hrtimer_hres(char *str) +-{ +- return (kstrtobool(str, &hrtimer_hres_enabled) == 0); +-} +- +-__setup("highres=", setup_hrtimer_hres); +- +-/* +- * hrtimer_high_res_enabled - query, if the highres mode is enabled +- */ +-static inline int hrtimer_is_hres_enabled(void) +-{ +- return hrtimer_hres_enabled; +-} +- + /* + * Reprogram the event source with checking both queues for the + * next event +@@ -581,6 +553,34 @@ hrtimer_force_reprogram(struct hrtimer_c + tick_program_event(cpu_base->expires_next, 1); + } + ++/* High resolution timer related functions */ ++#ifdef CONFIG_HIGH_RES_TIMERS ++ ++/* ++ * High resolution timer enabled ? ++ */ ++static bool hrtimer_hres_enabled __read_mostly = true; ++unsigned int hrtimer_resolution __read_mostly = LOW_RES_NSEC; ++EXPORT_SYMBOL_GPL(hrtimer_resolution); ++ ++/* ++ * Enable / Disable high resolution mode ++ */ ++static int __init setup_hrtimer_hres(char *str) ++{ ++ return (kstrtobool(str, &hrtimer_hres_enabled) == 0); ++} ++ ++__setup("highres=", setup_hrtimer_hres); ++ ++/* ++ * hrtimer_high_res_enabled - query, if the highres mode is enabled ++ */ ++static inline int hrtimer_is_hres_enabled(void) ++{ ++ return hrtimer_hres_enabled; ++} ++ + /* + * Retrigger next event is called after clock was set + * +@@ -639,8 +639,6 @@ void clock_was_set_delayed(void) + + static inline int hrtimer_is_hres_enabled(void) { return 0; } + static inline void hrtimer_switch_to_hres(void) { } +-static inline void +-hrtimer_force_reprogram(struct hrtimer_cpu_base *base, int skip_equal) { } + static inline void retrigger_next_event(void *arg) { } + + #endif /* CONFIG_HIGH_RES_TIMERS */ diff --git a/patches/features/all/rt/0018-tracing-Add-simple-expression-support-to-hist-trigge.patch b/patches/features/all/rt/0018-tracing-Add-simple-expression-support-to-hist-trigge.patch new file mode 100644 index 00000000000..f2f3332f1fe --- /dev/null +++ b/patches/features/all/rt/0018-tracing-Add-simple-expression-support-to-hist-trigge.patch @@ -0,0 +1,624 @@ +From: Tom Zanussi +Date: Mon, 15 Jan 2018 20:51:52 -0600 +Subject: [PATCH 18/37] tracing: Add simple expression support to hist triggers +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Add support for simple addition, subtraction, and unary expressions +(-(expr) and expr, where expr = b-a, a+b, a+b+c) to hist triggers, in +order to support a minimal set of useful inter-event calculations. + +These operations are needed for calculating latencies between events +(timestamp1-timestamp0) and for combined latencies (latencies over 3 +or more events). + +In the process, factor out some common code from key and value +parsing. + +Signed-off-by: Tom Zanussi +[kbuild test robot fix, add static to parse_atom()] +Signed-off-by: Fengguang Wu +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/trace/trace_events_hist.c | 487 +++++++++++++++++++++++++++++++++------ + 1 file changed, 413 insertions(+), 74 deletions(-) + +--- a/kernel/trace/trace_events_hist.c ++++ b/kernel/trace/trace_events_hist.c +@@ -32,6 +32,13 @@ typedef u64 (*hist_field_fn_t) (struct h + #define HIST_FIELD_OPERANDS_MAX 2 + #define HIST_FIELDS_MAX (TRACING_MAP_FIELDS_MAX + TRACING_MAP_VARS_MAX) + ++enum field_op_id { ++ FIELD_OP_NONE, ++ FIELD_OP_PLUS, ++ FIELD_OP_MINUS, ++ FIELD_OP_UNARY_MINUS, ++}; ++ + struct hist_var { + char *name; + struct hist_trigger_data *hist_data; +@@ -48,6 +55,8 @@ struct hist_field { + struct hist_field *operands[HIST_FIELD_OPERANDS_MAX]; + struct hist_trigger_data *hist_data; + struct hist_var var; ++ enum field_op_id operator; ++ char *name; + }; + + static u64 hist_field_none(struct hist_field *field, void *event, +@@ -98,6 +107,41 @@ static u64 hist_field_log2(struct hist_f + return (u64) ilog2(roundup_pow_of_two(val)); + } + ++static u64 hist_field_plus(struct hist_field *hist_field, void *event, ++ struct ring_buffer_event *rbe) ++{ ++ struct hist_field *operand1 = hist_field->operands[0]; ++ struct hist_field *operand2 = hist_field->operands[1]; ++ ++ u64 val1 = operand1->fn(operand1, event, rbe); ++ u64 val2 = operand2->fn(operand2, event, rbe); ++ ++ return val1 + val2; ++} ++ ++static u64 hist_field_minus(struct hist_field *hist_field, void *event, ++ struct ring_buffer_event *rbe) ++{ ++ struct hist_field *operand1 = hist_field->operands[0]; ++ struct hist_field *operand2 = hist_field->operands[1]; ++ ++ u64 val1 = operand1->fn(operand1, event, rbe); ++ u64 val2 = operand2->fn(operand2, event, rbe); ++ ++ return val1 - val2; ++} ++ ++static u64 hist_field_unary_minus(struct hist_field *hist_field, void *event, ++ struct ring_buffer_event *rbe) ++{ ++ struct hist_field *operand = hist_field->operands[0]; ++ ++ s64 sval = (s64)operand->fn(operand, event, rbe); ++ u64 val = (u64)-sval; ++ ++ return val; ++} ++ + #define DEFINE_HIST_FIELD_FN(type) \ + static u64 hist_field_##type(struct hist_field *hist_field, \ + void *event, \ +@@ -147,6 +191,7 @@ enum hist_field_flags { + HIST_FIELD_FL_TIMESTAMP = 1 << 10, + HIST_FIELD_FL_TIMESTAMP_USECS = 1 << 11, + HIST_FIELD_FL_VAR = 1 << 12, ++ HIST_FIELD_FL_EXPR = 1 << 13, + }; + + struct var_defs { +@@ -258,6 +303,8 @@ static const char *hist_field_name(struc + field_name = hist_field_name(field->operands[0], ++level); + else if (field->flags & HIST_FIELD_FL_TIMESTAMP) + field_name = "common_timestamp"; ++ else if (field->flags & HIST_FIELD_FL_EXPR) ++ field_name = field->name; + + if (field_name == NULL) + field_name = ""; +@@ -519,12 +566,104 @@ static const char *get_hist_field_flags( + return flags_str; + } + ++static void expr_field_str(struct hist_field *field, char *expr) ++{ ++ strcat(expr, hist_field_name(field, 0)); ++ ++ if (field->flags) { ++ const char *flags_str = get_hist_field_flags(field); ++ ++ if (flags_str) { ++ strcat(expr, "."); ++ strcat(expr, flags_str); ++ } ++ } ++} ++ ++static char *expr_str(struct hist_field *field, unsigned int level) ++{ ++ char *expr; ++ ++ if (level > 1) ++ return NULL; ++ ++ expr = kzalloc(MAX_FILTER_STR_VAL, GFP_KERNEL); ++ if (!expr) ++ return NULL; ++ ++ if (!field->operands[0]) { ++ expr_field_str(field, expr); ++ return expr; ++ } ++ ++ if (field->operator == FIELD_OP_UNARY_MINUS) { ++ char *subexpr; ++ ++ strcat(expr, "-("); ++ subexpr = expr_str(field->operands[0], ++level); ++ if (!subexpr) { ++ kfree(expr); ++ return NULL; ++ } ++ strcat(expr, subexpr); ++ strcat(expr, ")"); ++ ++ kfree(subexpr); ++ ++ return expr; ++ } ++ ++ expr_field_str(field->operands[0], expr); ++ ++ switch (field->operator) { ++ case FIELD_OP_MINUS: ++ strcat(expr, "-"); ++ break; ++ case FIELD_OP_PLUS: ++ strcat(expr, "+"); ++ break; ++ default: ++ kfree(expr); ++ return NULL; ++ } ++ ++ expr_field_str(field->operands[1], expr); ++ ++ return expr; ++} ++ ++static int contains_operator(char *str) ++{ ++ enum field_op_id field_op = FIELD_OP_NONE; ++ char *op; ++ ++ op = strpbrk(str, "+-"); ++ if (!op) ++ return FIELD_OP_NONE; ++ ++ switch (*op) { ++ case '-': ++ if (*str == '-') ++ field_op = FIELD_OP_UNARY_MINUS; ++ else ++ field_op = FIELD_OP_MINUS; ++ break; ++ case '+': ++ field_op = FIELD_OP_PLUS; ++ break; ++ default: ++ break; ++ } ++ ++ return field_op; ++} ++ + static void destroy_hist_field(struct hist_field *hist_field, + unsigned int level) + { + unsigned int i; + +- if (level > 2) ++ if (level > 3) + return; + + if (!hist_field) +@@ -534,6 +673,7 @@ static void destroy_hist_field(struct hi + destroy_hist_field(hist_field->operands[i], level + 1); + + kfree(hist_field->var.name); ++ kfree(hist_field->name); + + kfree(hist_field); + } +@@ -554,6 +694,9 @@ static struct hist_field *create_hist_fi + + hist_field->hist_data = hist_data; + ++ if (flags & HIST_FIELD_FL_EXPR) ++ goto out; /* caller will populate */ ++ + if (flags & HIST_FIELD_FL_HITCOUNT) { + hist_field->fn = hist_field_counter; + goto out; +@@ -626,6 +769,257 @@ static void destroy_hist_fields(struct h + } + } + ++static struct ftrace_event_field * ++parse_field(struct hist_trigger_data *hist_data, struct trace_event_file *file, ++ char *field_str, unsigned long *flags) ++{ ++ struct ftrace_event_field *field = NULL; ++ char *field_name, *modifier, *str; ++ ++ modifier = str = kstrdup(field_str, GFP_KERNEL); ++ if (!modifier) ++ return ERR_PTR(-ENOMEM); ++ ++ field_name = strsep(&modifier, "."); ++ if (modifier) { ++ if (strcmp(modifier, "hex") == 0) ++ *flags |= HIST_FIELD_FL_HEX; ++ else if (strcmp(modifier, "sym") == 0) ++ *flags |= HIST_FIELD_FL_SYM; ++ else if (strcmp(modifier, "sym-offset") == 0) ++ *flags |= HIST_FIELD_FL_SYM_OFFSET; ++ else if ((strcmp(modifier, "execname") == 0) && ++ (strcmp(field_name, "common_pid") == 0)) ++ *flags |= HIST_FIELD_FL_EXECNAME; ++ else if (strcmp(modifier, "syscall") == 0) ++ *flags |= HIST_FIELD_FL_SYSCALL; ++ else if (strcmp(modifier, "log2") == 0) ++ *flags |= HIST_FIELD_FL_LOG2; ++ else if (strcmp(modifier, "usecs") == 0) ++ *flags |= HIST_FIELD_FL_TIMESTAMP_USECS; ++ else { ++ field = ERR_PTR(-EINVAL); ++ goto out; ++ } ++ } ++ ++ if (strcmp(field_name, "common_timestamp") == 0) { ++ *flags |= HIST_FIELD_FL_TIMESTAMP; ++ hist_data->enable_timestamps = true; ++ if (*flags & HIST_FIELD_FL_TIMESTAMP_USECS) ++ hist_data->attrs->ts_in_usecs = true; ++ } else { ++ field = trace_find_event_field(file->event_call, field_name); ++ if (!field || !field->size) { ++ field = ERR_PTR(-EINVAL); ++ goto out; ++ } ++ } ++ out: ++ kfree(str); ++ ++ return field; ++} ++ ++static struct hist_field *parse_atom(struct hist_trigger_data *hist_data, ++ struct trace_event_file *file, char *str, ++ unsigned long *flags, char *var_name) ++{ ++ struct ftrace_event_field *field = NULL; ++ struct hist_field *hist_field = NULL; ++ int ret = 0; ++ ++ field = parse_field(hist_data, file, str, flags); ++ if (IS_ERR(field)) { ++ ret = PTR_ERR(field); ++ goto out; ++ } ++ ++ hist_field = create_hist_field(hist_data, field, *flags, var_name); ++ if (!hist_field) { ++ ret = -ENOMEM; ++ goto out; ++ } ++ ++ return hist_field; ++ out: ++ return ERR_PTR(ret); ++} ++ ++static struct hist_field *parse_expr(struct hist_trigger_data *hist_data, ++ struct trace_event_file *file, ++ char *str, unsigned long flags, ++ char *var_name, unsigned int level); ++ ++static struct hist_field *parse_unary(struct hist_trigger_data *hist_data, ++ struct trace_event_file *file, ++ char *str, unsigned long flags, ++ char *var_name, unsigned int level) ++{ ++ struct hist_field *operand1, *expr = NULL; ++ unsigned long operand_flags; ++ int ret = 0; ++ char *s; ++ ++ // we support only -(xxx) i.e. explicit parens required ++ ++ if (level > 3) { ++ ret = -EINVAL; ++ goto free; ++ } ++ ++ str++; // skip leading '-' ++ ++ s = strchr(str, '('); ++ if (s) ++ str++; ++ else { ++ ret = -EINVAL; ++ goto free; ++ } ++ ++ s = strrchr(str, ')'); ++ if (s) ++ *s = '\0'; ++ else { ++ ret = -EINVAL; // no closing ')' ++ goto free; ++ } ++ ++ flags |= HIST_FIELD_FL_EXPR; ++ expr = create_hist_field(hist_data, NULL, flags, var_name); ++ if (!expr) { ++ ret = -ENOMEM; ++ goto free; ++ } ++ ++ operand_flags = 0; ++ operand1 = parse_expr(hist_data, file, str, operand_flags, NULL, ++level); ++ if (IS_ERR(operand1)) { ++ ret = PTR_ERR(operand1); ++ goto free; ++ } ++ ++ expr->flags |= operand1->flags & ++ (HIST_FIELD_FL_TIMESTAMP | HIST_FIELD_FL_TIMESTAMP_USECS); ++ expr->fn = hist_field_unary_minus; ++ expr->operands[0] = operand1; ++ expr->operator = FIELD_OP_UNARY_MINUS; ++ expr->name = expr_str(expr, 0); ++ ++ return expr; ++ free: ++ destroy_hist_field(expr, 0); ++ return ERR_PTR(ret); ++} ++ ++static int check_expr_operands(struct hist_field *operand1, ++ struct hist_field *operand2) ++{ ++ unsigned long operand1_flags = operand1->flags; ++ unsigned long operand2_flags = operand2->flags; ++ ++ if ((operand1_flags & HIST_FIELD_FL_TIMESTAMP_USECS) != ++ (operand2_flags & HIST_FIELD_FL_TIMESTAMP_USECS)) ++ return -EINVAL; ++ ++ return 0; ++} ++ ++static struct hist_field *parse_expr(struct hist_trigger_data *hist_data, ++ struct trace_event_file *file, ++ char *str, unsigned long flags, ++ char *var_name, unsigned int level) ++{ ++ struct hist_field *operand1 = NULL, *operand2 = NULL, *expr = NULL; ++ unsigned long operand_flags; ++ int field_op, ret = -EINVAL; ++ char *sep, *operand1_str; ++ ++ if (level > 3) ++ return ERR_PTR(-EINVAL); ++ ++ field_op = contains_operator(str); ++ ++ if (field_op == FIELD_OP_NONE) ++ return parse_atom(hist_data, file, str, &flags, var_name); ++ ++ if (field_op == FIELD_OP_UNARY_MINUS) ++ return parse_unary(hist_data, file, str, flags, var_name, ++level); ++ ++ switch (field_op) { ++ case FIELD_OP_MINUS: ++ sep = "-"; ++ break; ++ case FIELD_OP_PLUS: ++ sep = "+"; ++ break; ++ default: ++ goto free; ++ } ++ ++ operand1_str = strsep(&str, sep); ++ if (!operand1_str || !str) ++ goto free; ++ ++ operand_flags = 0; ++ operand1 = parse_atom(hist_data, file, operand1_str, ++ &operand_flags, NULL); ++ if (IS_ERR(operand1)) { ++ ret = PTR_ERR(operand1); ++ operand1 = NULL; ++ goto free; ++ } ++ ++ // rest of string could be another expression e.g. b+c in a+b+c ++ operand_flags = 0; ++ operand2 = parse_expr(hist_data, file, str, operand_flags, NULL, ++level); ++ if (IS_ERR(operand2)) { ++ ret = PTR_ERR(operand2); ++ operand2 = NULL; ++ goto free; ++ } ++ ++ ret = check_expr_operands(operand1, operand2); ++ if (ret) ++ goto free; ++ ++ flags |= HIST_FIELD_FL_EXPR; ++ ++ flags |= operand1->flags & ++ (HIST_FIELD_FL_TIMESTAMP | HIST_FIELD_FL_TIMESTAMP_USECS); ++ ++ expr = create_hist_field(hist_data, NULL, flags, var_name); ++ if (!expr) { ++ ret = -ENOMEM; ++ goto free; ++ } ++ ++ expr->operands[0] = operand1; ++ expr->operands[1] = operand2; ++ expr->operator = field_op; ++ expr->name = expr_str(expr, 0); ++ ++ switch (field_op) { ++ case FIELD_OP_MINUS: ++ expr->fn = hist_field_minus; ++ break; ++ case FIELD_OP_PLUS: ++ expr->fn = hist_field_plus; ++ break; ++ default: ++ goto free; ++ } ++ ++ return expr; ++ free: ++ destroy_hist_field(operand1, 0); ++ destroy_hist_field(operand2, 0); ++ destroy_hist_field(expr, 0); ++ ++ return ERR_PTR(ret); ++} ++ + static int create_hitcount_val(struct hist_trigger_data *hist_data) + { + hist_data->fields[HITCOUNT_IDX] = +@@ -648,37 +1042,17 @@ static int __create_val_field(struct his + char *var_name, char *field_str, + unsigned long flags) + { +- struct ftrace_event_field *field = NULL; +- char *field_name; ++ struct hist_field *hist_field; + int ret = 0; + +- field_name = strsep(&field_str, "."); +- if (field_str) { +- if (strcmp(field_str, "hex") == 0) +- flags |= HIST_FIELD_FL_HEX; +- else { +- ret = -EINVAL; +- goto out; +- } +- } +- +- if (strcmp(field_name, "common_timestamp") == 0) { +- flags |= HIST_FIELD_FL_TIMESTAMP; +- hist_data->enable_timestamps = true; +- } else { +- field = trace_find_event_field(file->event_call, field_name); +- if (!field || !field->size) { +- ret = -EINVAL; +- goto out; +- } +- } +- +- hist_data->fields[val_idx] = create_hist_field(hist_data, field, flags, var_name); +- if (!hist_data->fields[val_idx]) { +- ret = -ENOMEM; ++ hist_field = parse_expr(hist_data, file, field_str, flags, var_name, 0); ++ if (IS_ERR(hist_field)) { ++ ret = PTR_ERR(hist_field); + goto out; + } + ++ hist_data->fields[val_idx] = hist_field; ++ + ++hist_data->n_vals; + ++hist_data->n_fields; + +@@ -765,8 +1139,8 @@ static int create_key_field(struct hist_ + struct trace_event_file *file, + char *field_str) + { +- struct ftrace_event_field *field = NULL; + struct hist_field *hist_field = NULL; ++ + unsigned long flags = 0; + unsigned int key_size; + int ret = 0; +@@ -781,60 +1155,24 @@ static int create_key_field(struct hist_ + key_size = sizeof(unsigned long) * HIST_STACKTRACE_DEPTH; + hist_field = create_hist_field(hist_data, NULL, flags, NULL); + } else { +- char *field_name = strsep(&field_str, "."); +- +- if (field_str) { +- if (strcmp(field_str, "hex") == 0) +- flags |= HIST_FIELD_FL_HEX; +- else if (strcmp(field_str, "sym") == 0) +- flags |= HIST_FIELD_FL_SYM; +- else if (strcmp(field_str, "sym-offset") == 0) +- flags |= HIST_FIELD_FL_SYM_OFFSET; +- else if ((strcmp(field_str, "execname") == 0) && +- (strcmp(field_name, "common_pid") == 0)) +- flags |= HIST_FIELD_FL_EXECNAME; +- else if (strcmp(field_str, "syscall") == 0) +- flags |= HIST_FIELD_FL_SYSCALL; +- else if (strcmp(field_str, "log2") == 0) +- flags |= HIST_FIELD_FL_LOG2; +- else if (strcmp(field_str, "usecs") == 0) +- flags |= HIST_FIELD_FL_TIMESTAMP_USECS; +- else { +- ret = -EINVAL; +- goto out; +- } ++ hist_field = parse_expr(hist_data, file, field_str, flags, ++ NULL, 0); ++ if (IS_ERR(hist_field)) { ++ ret = PTR_ERR(hist_field); ++ goto out; + } + +- if (strcmp(field_name, "common_timestamp") == 0) { +- flags |= HIST_FIELD_FL_TIMESTAMP; +- hist_data->enable_timestamps = true; +- if (flags & HIST_FIELD_FL_TIMESTAMP_USECS) +- hist_data->attrs->ts_in_usecs = true; +- key_size = sizeof(u64); +- } else { +- field = trace_find_event_field(file->event_call, field_name); +- if (!field || !field->size) { +- ret = -EINVAL; +- goto out; +- } +- +- if (is_string_field(field)) +- key_size = MAX_FILTER_STR_VAL; +- else +- key_size = field->size; +- } ++ key_size = hist_field->size; + } + +- hist_data->fields[key_idx] = create_hist_field(hist_data, field, flags, NULL); +- if (!hist_data->fields[key_idx]) { +- ret = -ENOMEM; +- goto out; +- } ++ hist_data->fields[key_idx] = hist_field; + + key_size = ALIGN(key_size, sizeof(u64)); + hist_data->fields[key_idx]->size = key_size; + hist_data->fields[key_idx]->offset = key_offset; ++ + hist_data->key_size += key_size; ++ + if (hist_data->key_size > HIST_KEY_SIZE_MAX) { + ret = -EINVAL; + goto out; +@@ -1419,7 +1757,8 @@ hist_trigger_entry_print(struct seq_file + for (i = 1; i < hist_data->n_vals; i++) { + field_name = hist_field_name(hist_data->fields[i], 0); + +- if (hist_data->fields[i]->flags & HIST_FIELD_FL_VAR) ++ if (hist_data->fields[i]->flags & HIST_FIELD_FL_VAR || ++ hist_data->fields[i]->flags & HIST_FIELD_FL_EXPR) + continue; + + if (hist_data->fields[i]->flags & HIST_FIELD_FL_HEX) { diff --git a/patches/features/all/rt/0019-hrtimer-Unify-handling-of-hrtimer-remove.patch b/patches/features/all/rt/0019-hrtimer-Unify-handling-of-hrtimer-remove.patch new file mode 100644 index 00000000000..3b6bf38732e --- /dev/null +++ b/patches/features/all/rt/0019-hrtimer-Unify-handling-of-hrtimer-remove.patch @@ -0,0 +1,89 @@ +From: Anna-Maria Gleixner +Date: Wed, 20 Dec 2017 17:13:08 +0100 +Subject: [PATCH 19/29] hrtimer: Unify handling of hrtimer remove +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +When the first hrtimer on the current CPU is removed, +hrtimer_force_reprogram() is invoked but only when +CONFIG_HIGH_RES_TIMERS=y and hrtimer_cpu_base.hres_active is set. + +hrtimer_force_reprogram() updates hrtimer_cpu_base.expires_next and +reprograms the clock event device. When CONFIG_HIGH_RES_TIMERS=y and +hrtimer_cpu_base.hres_active is set, a pointless hrtimer interrupt can be +prevented. + +hrtimer_check_target() makes the 'can remote enqueue' decision. As soon as +hrtimer_check_target() is unconditionally available and +hrtimer_cpu_base.expires_next is updated by hrtimer_reprogram(), +hrtimer_force_reprogram() needs to be available unconditionally as well to +prevent the following scenario with CONFIG_HIGH_RES_TIMERS=n: + +- the first hrtimer on this CPU is removed and hrtimer_force_reprogram() is + not executed + +- CPU goes idle (next timer is calculated and hrtimers are taken into + account) + +- a hrtimer is enqueued remote on the idle CPU: hrtimer_check_target() + compares expiry value and hrtimer_cpu_base.expires_next. The expiry value + is after expires_next, so the hrtimer is enqueued. This timer will fire + late, if it expires before the effective first hrtimer on this CPU and + the comparison was with an outdated expires_next value. + +To prevent this scenario, make hrtimer_force_reprogram() unconditional +except the effective reprogramming part, which gets eliminated by the +compiler in the CONFIG_HIGH_RES_TIMERS=n case. + +Signed-off-by: Anna-Maria Gleixner +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/time/hrtimer.c | 10 ++++------ + 1 file changed, 4 insertions(+), 6 deletions(-) + +--- a/kernel/time/hrtimer.c ++++ b/kernel/time/hrtimer.c +@@ -523,9 +523,6 @@ hrtimer_force_reprogram(struct hrtimer_c + { + ktime_t expires_next; + +- if (!__hrtimer_hres_active(cpu_base)) +- return; +- + expires_next = __hrtimer_get_next_event(cpu_base); + + if (skip_equal && expires_next == cpu_base->expires_next) +@@ -534,6 +531,9 @@ hrtimer_force_reprogram(struct hrtimer_c + cpu_base->expires_next = expires_next; + + /* ++ * If hres is not active, hardware does not have to be ++ * reprogrammed yet. ++ * + * If a hang was detected in the last timer interrupt then we + * leave the hang delay active in the hardware. We want the + * system to make progress. That also prevents the following +@@ -547,7 +547,7 @@ hrtimer_force_reprogram(struct hrtimer_c + * set. So we'd effectivly block all timers until the T2 event + * fires. + */ +- if (cpu_base->hang_detected) ++ if (!__hrtimer_hres_active(cpu_base) || cpu_base->hang_detected) + return; + + tick_program_event(cpu_base->expires_next, 1); +@@ -848,7 +848,6 @@ static void __remove_hrtimer(struct hrti + if (!timerqueue_del(&base->active, &timer->node)) + cpu_base->active_bases &= ~(1 << base->index); + +-#ifdef CONFIG_HIGH_RES_TIMERS + /* + * Note: If reprogram is false we do not update + * cpu_base->next_timer. This happens when we remove the first +@@ -859,7 +858,6 @@ static void __remove_hrtimer(struct hrti + */ + if (reprogram && timer == cpu_base->next_timer) + hrtimer_force_reprogram(cpu_base, 1); +-#endif + } + + /* diff --git a/patches/features/all/rt/0019-tracing-Generalize-per-element-hist-trigger-data.patch b/patches/features/all/rt/0019-tracing-Generalize-per-element-hist-trigger-data.patch new file mode 100644 index 00000000000..86f78d1bb60 --- /dev/null +++ b/patches/features/all/rt/0019-tracing-Generalize-per-element-hist-trigger-data.patch @@ -0,0 +1,155 @@ +From: Tom Zanussi +Date: Mon, 15 Jan 2018 20:51:53 -0600 +Subject: [PATCH 19/37] tracing: Generalize per-element hist trigger data +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Up until now, hist triggers only needed per-element support for saving +'comm' data, which was saved directly as a private data pointer. + +In anticipation of the need to save other data besides 'comm', add a +new hist_elt_data struct for the purpose, and switch the current +'comm'-related code over to that. + +Signed-off-by: Tom Zanussi +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/trace/trace_events_hist.c | 76 ++++++++++++++++++++++----------------- + 1 file changed, 43 insertions(+), 33 deletions(-) + +--- a/kernel/trace/trace_events_hist.c ++++ b/kernel/trace/trace_events_hist.c +@@ -289,6 +289,10 @@ static struct hist_field *find_var(struc + return NULL; + } + ++struct hist_elt_data { ++ char *comm; ++}; ++ + static const char *hist_field_name(struct hist_field *field, + unsigned int level) + { +@@ -503,45 +507,61 @@ static inline void save_comm(char *comm, + memcpy(comm, task->comm, TASK_COMM_LEN); + } + +-static void hist_trigger_elt_comm_free(struct tracing_map_elt *elt) ++static void hist_elt_data_free(struct hist_elt_data *elt_data) ++{ ++ kfree(elt_data->comm); ++ kfree(elt_data); ++} ++ ++static void hist_trigger_elt_data_free(struct tracing_map_elt *elt) + { +- kfree((char *)elt->private_data); ++ struct hist_elt_data *elt_data = elt->private_data; ++ ++ hist_elt_data_free(elt_data); + } + +-static int hist_trigger_elt_comm_alloc(struct tracing_map_elt *elt) ++static int hist_trigger_elt_data_alloc(struct tracing_map_elt *elt) + { + struct hist_trigger_data *hist_data = elt->map->private_data; ++ unsigned int size = TASK_COMM_LEN; ++ struct hist_elt_data *elt_data; + struct hist_field *key_field; + unsigned int i; + ++ elt_data = kzalloc(sizeof(*elt_data), GFP_KERNEL); ++ if (!elt_data) ++ return -ENOMEM; ++ + for_each_hist_key_field(i, hist_data) { + key_field = hist_data->fields[i]; + + if (key_field->flags & HIST_FIELD_FL_EXECNAME) { +- unsigned int size = TASK_COMM_LEN + 1; +- +- elt->private_data = kzalloc(size, GFP_KERNEL); +- if (!elt->private_data) ++ elt_data->comm = kzalloc(size, GFP_KERNEL); ++ if (!elt_data->comm) { ++ kfree(elt_data); + return -ENOMEM; ++ } + break; + } + } + ++ elt->private_data = elt_data; ++ + return 0; + } + +-static void hist_trigger_elt_comm_init(struct tracing_map_elt *elt) ++static void hist_trigger_elt_data_init(struct tracing_map_elt *elt) + { +- char *comm = elt->private_data; ++ struct hist_elt_data *elt_data = elt->private_data; + +- if (comm) +- save_comm(comm, current); ++ if (elt_data->comm) ++ save_comm(elt_data->comm, current); + } + +-static const struct tracing_map_ops hist_trigger_elt_comm_ops = { +- .elt_alloc = hist_trigger_elt_comm_alloc, +- .elt_free = hist_trigger_elt_comm_free, +- .elt_init = hist_trigger_elt_comm_init, ++static const struct tracing_map_ops hist_trigger_elt_data_ops = { ++ .elt_alloc = hist_trigger_elt_data_alloc, ++ .elt_free = hist_trigger_elt_data_free, ++ .elt_init = hist_trigger_elt_data_init, + }; + + static const char *get_hist_field_flags(struct hist_field *hist_field) +@@ -1484,21 +1504,6 @@ static int create_tracing_map_fields(str + return 0; + } + +-static bool need_tracing_map_ops(struct hist_trigger_data *hist_data) +-{ +- struct hist_field *key_field; +- unsigned int i; +- +- for_each_hist_key_field(i, hist_data) { +- key_field = hist_data->fields[i]; +- +- if (key_field->flags & HIST_FIELD_FL_EXECNAME) +- return true; +- } +- +- return false; +-} +- + static struct hist_trigger_data * + create_hist_data(unsigned int map_bits, + struct hist_trigger_attrs *attrs, +@@ -1524,8 +1529,7 @@ create_hist_data(unsigned int map_bits, + if (ret) + goto free; + +- if (need_tracing_map_ops(hist_data)) +- map_ops = &hist_trigger_elt_comm_ops; ++ map_ops = &hist_trigger_elt_data_ops; + + hist_data->map = tracing_map_create(map_bits, hist_data->key_size, + map_ops, hist_data); +@@ -1713,7 +1717,13 @@ hist_trigger_entry_print(struct seq_file + seq_printf(m, "%s: [%llx] %-55s", field_name, + uval, str); + } else if (key_field->flags & HIST_FIELD_FL_EXECNAME) { +- char *comm = elt->private_data; ++ struct hist_elt_data *elt_data = elt->private_data; ++ char *comm; ++ ++ if (WARN_ON_ONCE(!elt_data)) ++ return; ++ ++ comm = elt_data->comm; + + uval = *(u64 *)(key + key_field->offset); + seq_printf(m, "%s: %-16s[%10llu]", field_name, diff --git a/patches/features/all/rt/0020-hrtimer-Unify-handling-of-remote-enqueue.patch b/patches/features/all/rt/0020-hrtimer-Unify-handling-of-remote-enqueue.patch new file mode 100644 index 00000000000..833a2a8f3bf --- /dev/null +++ b/patches/features/all/rt/0020-hrtimer-Unify-handling-of-remote-enqueue.patch @@ -0,0 +1,149 @@ +From: Anna-Maria Gleixner +Date: Wed, 20 Dec 2017 17:13:09 +0100 +Subject: [PATCH 20/29] hrtimer: Unify handling of remote enqueue +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +hrtimer_reprogram() is conditionally invoked from hrtimer_start_range_ns() +when hrtimer_cpu_base.hres_active is true. + +In the !hres_active case there is a special condition for the nohz_active +case: + + If the newly enqueued timer expires before the first expiring timer on a + remote CPU then the remote CPU needs to be notified and woken up from a + NOHZ idle sleep to take the new first expiring timer into account. + +Previous changes have already established the prerequisites to make the +remote enqueue behaviour the same whether high resolution mode is active or +not: + + If the to be enqueued timer expires before the first expiring timer on a + remote CPU, then it cannot be enqueued there. + +This was done for the high resolution mode because there is no way to +access the remote CPU timer hardware. The same is true for NOHZ, but was +handled differently by unconditionally enqueuing the timer and waking up +the remote CPU so it can reprogram its timer. Again there is no compelling +reason for this difference. + +hrtimer_check_target(), which makes the 'can remote enqueue' decision is +already unconditional, but not yet functional because nothing updates +hrtimer_cpu_base.expires_next in the !hres_active case. + +To unify this the following changes are required: + + 1) Make the store of the new first expiry time unconditonal in + hrtimer_reprogram() and check __hrtimer_hres_active() before proceeding + to the actual hardware access. This check also lets the compiler + eliminate the rest of the function in case of CONFIG_HIGH_RES_TIMERS=n. + + 2) Invoke hrtimer_reprogram() unconditionally from + hrtimer_start_range_ns() + + 3) Remove the remote wakeup special case for the !high_res && nohz_active + case. + +Confine the timers_nohz_active static key to timer.c which is the only user +now. + +Signed-off-by: Anna-Maria Gleixner +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/time/hrtimer.c | 18 ++++++------------ + kernel/time/tick-internal.h | 6 ------ + kernel/time/timer.c | 9 ++++++++- + 3 files changed, 14 insertions(+), 19 deletions(-) + +--- a/kernel/time/hrtimer.c ++++ b/kernel/time/hrtimer.c +@@ -687,21 +687,24 @@ static void hrtimer_reprogram(struct hrt + + /* Update the pointer to the next expiring timer */ + cpu_base->next_timer = timer; ++ cpu_base->expires_next = expires; + + /* ++ * If hres is not active, hardware does not have to be ++ * programmed yet. ++ * + * If a hang was detected in the last timer interrupt then we + * do not schedule a timer which is earlier than the expiry + * which we enforced in the hang detection. We want the system + * to make progress. + */ +- if (cpu_base->hang_detected) ++ if (!__hrtimer_hres_active(cpu_base) || cpu_base->hang_detected) + return; + + /* + * Program the timer hardware. We enforce the expiry for + * events which are already in the past. + */ +- cpu_base->expires_next = expires; + tick_program_event(expires, 1); + } + +@@ -940,16 +943,7 @@ void hrtimer_start_range_ns(struct hrtim + if (!leftmost) + goto unlock; + +- if (!hrtimer_is_hres_active(timer)) { +- /* +- * Kick to reschedule the next tick to handle the new timer +- * on dynticks target. +- */ +- if (is_timers_nohz_active()) +- wake_up_nohz_cpu(new_base->cpu_base->cpu); +- } else { +- hrtimer_reprogram(timer, new_base); +- } ++ hrtimer_reprogram(timer, new_base); + unlock: + unlock_hrtimer_base(timer, &flags); + } +--- a/kernel/time/tick-internal.h ++++ b/kernel/time/tick-internal.h +@@ -151,18 +151,12 @@ static inline void tick_nohz_init(void) + #ifdef CONFIG_NO_HZ_COMMON + extern unsigned long tick_nohz_active; + extern void timers_update_nohz(void); +-extern struct static_key_false timers_nohz_active; +-static inline bool is_timers_nohz_active(void) +-{ +- return static_branch_unlikely(&timers_nohz_active); +-} + # ifdef CONFIG_SMP + extern struct static_key_false timers_migration_enabled; + # endif + #else /* CONFIG_NO_HZ_COMMON */ + static inline void timers_update_nohz(void) { } + #define tick_nohz_active (0) +-static inline bool is_timers_nohz_active(void) { return false; } + #endif + + DECLARE_PER_CPU(struct hrtimer_cpu_base, hrtimer_bases); +--- a/kernel/time/timer.c ++++ b/kernel/time/timer.c +@@ -210,7 +210,7 @@ static DEFINE_PER_CPU(struct timer_base, + + #ifdef CONFIG_NO_HZ_COMMON + +-DEFINE_STATIC_KEY_FALSE(timers_nohz_active); ++static DEFINE_STATIC_KEY_FALSE(timers_nohz_active); + static DEFINE_MUTEX(timer_keys_mutex); + + static void timer_update_keys(struct work_struct *work); +@@ -260,6 +260,13 @@ int timer_migration_handler(struct ctl_t + mutex_unlock(&timer_keys_mutex); + return ret; + } ++ ++static inline bool is_timers_nohz_active(void) ++{ ++ return static_branch_unlikely(&timers_nohz_active); ++} ++#else ++static inline bool is_timers_nohz_active(void) { return false; } + #endif /* NO_HZ_COMMON */ + + static unsigned long round_jiffies_common(unsigned long j, int cpu, diff --git a/patches/features/all/rt/0020-tracing-Pass-tracing_map_elt-to-hist_field-accessor-.patch b/patches/features/all/rt/0020-tracing-Pass-tracing_map_elt-to-hist_field-accessor-.patch new file mode 100644 index 00000000000..54b72d372d7 --- /dev/null +++ b/patches/features/all/rt/0020-tracing-Pass-tracing_map_elt-to-hist_field-accessor-.patch @@ -0,0 +1,222 @@ +From: Tom Zanussi +Date: Mon, 15 Jan 2018 20:51:54 -0600 +Subject: [PATCH 20/37] tracing: Pass tracing_map_elt to hist_field accessor + functions +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Some accessor functions, such as for variable references, require +access to a corrsponding tracing_map_elt. + +Add a tracing_map_elt param to the function signature and update the +accessor functions accordingly. + +Signed-off-by: Tom Zanussi +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/trace/trace_events_hist.c | 91 ++++++++++++++++++++++++--------------- + 1 file changed, 57 insertions(+), 34 deletions(-) + +--- a/kernel/trace/trace_events_hist.c ++++ b/kernel/trace/trace_events_hist.c +@@ -26,8 +26,10 @@ + + struct hist_field; + +-typedef u64 (*hist_field_fn_t) (struct hist_field *field, void *event, +- struct ring_buffer_event *rbe); ++typedef u64 (*hist_field_fn_t) (struct hist_field *field, ++ struct tracing_map_elt *elt, ++ struct ring_buffer_event *rbe, ++ void *event); + + #define HIST_FIELD_OPERANDS_MAX 2 + #define HIST_FIELDS_MAX (TRACING_MAP_FIELDS_MAX + TRACING_MAP_VARS_MAX) +@@ -59,28 +61,36 @@ struct hist_field { + char *name; + }; + +-static u64 hist_field_none(struct hist_field *field, void *event, +- struct ring_buffer_event *rbe) ++static u64 hist_field_none(struct hist_field *field, ++ struct tracing_map_elt *elt, ++ struct ring_buffer_event *rbe, ++ void *event) + { + return 0; + } + +-static u64 hist_field_counter(struct hist_field *field, void *event, +- struct ring_buffer_event *rbe) ++static u64 hist_field_counter(struct hist_field *field, ++ struct tracing_map_elt *elt, ++ struct ring_buffer_event *rbe, ++ void *event) + { + return 1; + } + +-static u64 hist_field_string(struct hist_field *hist_field, void *event, +- struct ring_buffer_event *rbe) ++static u64 hist_field_string(struct hist_field *hist_field, ++ struct tracing_map_elt *elt, ++ struct ring_buffer_event *rbe, ++ void *event) + { + char *addr = (char *)(event + hist_field->field->offset); + + return (u64)(unsigned long)addr; + } + +-static u64 hist_field_dynstring(struct hist_field *hist_field, void *event, +- struct ring_buffer_event *rbe) ++static u64 hist_field_dynstring(struct hist_field *hist_field, ++ struct tracing_map_elt *elt, ++ struct ring_buffer_event *rbe, ++ void *event) + { + u32 str_item = *(u32 *)(event + hist_field->field->offset); + int str_loc = str_item & 0xffff; +@@ -89,54 +99,64 @@ static u64 hist_field_dynstring(struct h + return (u64)(unsigned long)addr; + } + +-static u64 hist_field_pstring(struct hist_field *hist_field, void *event, +- struct ring_buffer_event *rbe) ++static u64 hist_field_pstring(struct hist_field *hist_field, ++ struct tracing_map_elt *elt, ++ struct ring_buffer_event *rbe, ++ void *event) + { + char **addr = (char **)(event + hist_field->field->offset); + + return (u64)(unsigned long)*addr; + } + +-static u64 hist_field_log2(struct hist_field *hist_field, void *event, +- struct ring_buffer_event *rbe) ++static u64 hist_field_log2(struct hist_field *hist_field, ++ struct tracing_map_elt *elt, ++ struct ring_buffer_event *rbe, ++ void *event) + { + struct hist_field *operand = hist_field->operands[0]; + +- u64 val = operand->fn(operand, event, rbe); ++ u64 val = operand->fn(operand, elt, rbe, event); + + return (u64) ilog2(roundup_pow_of_two(val)); + } + +-static u64 hist_field_plus(struct hist_field *hist_field, void *event, +- struct ring_buffer_event *rbe) ++static u64 hist_field_plus(struct hist_field *hist_field, ++ struct tracing_map_elt *elt, ++ struct ring_buffer_event *rbe, ++ void *event) + { + struct hist_field *operand1 = hist_field->operands[0]; + struct hist_field *operand2 = hist_field->operands[1]; + +- u64 val1 = operand1->fn(operand1, event, rbe); +- u64 val2 = operand2->fn(operand2, event, rbe); ++ u64 val1 = operand1->fn(operand1, elt, rbe, event); ++ u64 val2 = operand2->fn(operand2, elt, rbe, event); + + return val1 + val2; + } + +-static u64 hist_field_minus(struct hist_field *hist_field, void *event, +- struct ring_buffer_event *rbe) ++static u64 hist_field_minus(struct hist_field *hist_field, ++ struct tracing_map_elt *elt, ++ struct ring_buffer_event *rbe, ++ void *event) + { + struct hist_field *operand1 = hist_field->operands[0]; + struct hist_field *operand2 = hist_field->operands[1]; + +- u64 val1 = operand1->fn(operand1, event, rbe); +- u64 val2 = operand2->fn(operand2, event, rbe); ++ u64 val1 = operand1->fn(operand1, elt, rbe, event); ++ u64 val2 = operand2->fn(operand2, elt, rbe, event); + + return val1 - val2; + } + +-static u64 hist_field_unary_minus(struct hist_field *hist_field, void *event, +- struct ring_buffer_event *rbe) ++static u64 hist_field_unary_minus(struct hist_field *hist_field, ++ struct tracing_map_elt *elt, ++ struct ring_buffer_event *rbe, ++ void *event) + { + struct hist_field *operand = hist_field->operands[0]; + +- s64 sval = (s64)operand->fn(operand, event, rbe); ++ s64 sval = (s64)operand->fn(operand, elt, rbe, event); + u64 val = (u64)-sval; + + return val; +@@ -144,8 +164,9 @@ static u64 hist_field_unary_minus(struct + + #define DEFINE_HIST_FIELD_FN(type) \ + static u64 hist_field_##type(struct hist_field *hist_field, \ +- void *event, \ +- struct ring_buffer_event *rbe) \ ++ struct tracing_map_elt *elt, \ ++ struct ring_buffer_event *rbe, \ ++ void *event) \ + { \ + type *addr = (type *)(event + hist_field->field->offset); \ + \ +@@ -233,8 +254,10 @@ struct hist_trigger_data { + bool remove; + }; + +-static u64 hist_field_timestamp(struct hist_field *hist_field, void *event, +- struct ring_buffer_event *rbe) ++static u64 hist_field_timestamp(struct hist_field *hist_field, ++ struct tracing_map_elt *elt, ++ struct ring_buffer_event *rbe, ++ void *event) + { + struct hist_trigger_data *hist_data = hist_field->hist_data; + struct trace_array *tr = hist_data->event_file->tr; +@@ -1570,7 +1593,7 @@ static void hist_trigger_elt_update(stru + + for_each_hist_val_field(i, hist_data) { + hist_field = hist_data->fields[i]; +- hist_val = hist_field->fn(hist_field, rec, rbe); ++ hist_val = hist_field->fn(hist_field, elt, rbe, rec); + if (hist_field->flags & HIST_FIELD_FL_VAR) { + var_idx = hist_field->var.idx; + tracing_map_set_var(elt, var_idx, hist_val); +@@ -1582,7 +1605,7 @@ static void hist_trigger_elt_update(stru + for_each_hist_key_field(i, hist_data) { + hist_field = hist_data->fields[i]; + if (hist_field->flags & HIST_FIELD_FL_VAR) { +- hist_val = hist_field->fn(hist_field, rec, rbe); ++ hist_val = hist_field->fn(hist_field, elt, rbe, rec); + var_idx = hist_field->var.idx; + tracing_map_set_var(elt, var_idx, hist_val); + } +@@ -1620,9 +1643,9 @@ static void event_hist_trigger(struct ev + bool use_compound_key = (hist_data->n_keys > 1); + unsigned long entries[HIST_STACKTRACE_DEPTH]; + char compound_key[HIST_KEY_SIZE_MAX]; ++ struct tracing_map_elt *elt = NULL; + struct stack_trace stacktrace; + struct hist_field *key_field; +- struct tracing_map_elt *elt; + u64 field_contents; + void *key = NULL; + unsigned int i; +@@ -1643,7 +1666,7 @@ static void event_hist_trigger(struct ev + + key = entries; + } else { +- field_contents = key_field->fn(key_field, rec, rbe); ++ field_contents = key_field->fn(key_field, elt, rbe, rec); + if (key_field->flags & HIST_FIELD_FL_STRING) { + key = (void *)(unsigned long)field_contents; + use_compound_key = true; diff --git a/patches/features/all/rt/0021-hrtimer-Make-remote-enqueue-decision-less-restrictiv.patch b/patches/features/all/rt/0021-hrtimer-Make-remote-enqueue-decision-less-restrictiv.patch new file mode 100644 index 00000000000..52d66870949 --- /dev/null +++ b/patches/features/all/rt/0021-hrtimer-Make-remote-enqueue-decision-less-restrictiv.patch @@ -0,0 +1,32 @@ +From: Anna-Maria Gleixner +Date: Wed, 20 Dec 2017 17:13:10 +0100 +Subject: [PATCH 21/29] hrtimer: Make remote enqueue decision less restrictive +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +The current decision whether a timer can be queued on a remote CPU checks +for timer->expiry <= remote_cpu_base.expires_next. + +This is too restrictive because a timer with the same expiry time as an +existing timer will be enqueued on right-hand size of the existing timer +inside the rbtree, i.e. behind the first expiring timer. + +So its safe to allow enqueuing timers with the same expiry time as the +first expiring timer on a remote CPU base. + +Signed-off-by: Anna-Maria Gleixner +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/time/hrtimer.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/kernel/time/hrtimer.c ++++ b/kernel/time/hrtimer.c +@@ -168,7 +168,7 @@ hrtimer_check_target(struct hrtimer *tim + ktime_t expires; + + expires = ktime_sub(hrtimer_get_expires(timer), new_base->offset); +- return expires <= new_base->cpu_base->expires_next; ++ return expires < new_base->cpu_base->expires_next; + } + + static inline diff --git a/patches/features/all/rt/0021-tracing-Add-hist_field-type-field.patch b/patches/features/all/rt/0021-tracing-Add-hist_field-type-field.patch new file mode 100644 index 00000000000..f4c923c89bd --- /dev/null +++ b/patches/features/all/rt/0021-tracing-Add-hist_field-type-field.patch @@ -0,0 +1,114 @@ +From: Tom Zanussi +Date: Mon, 15 Jan 2018 20:51:55 -0600 +Subject: [PATCH 21/37] tracing: Add hist_field 'type' field +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Future support for synthetic events requires hist_field 'type' +information, so add a field for that. + +Also, make other hist_field attribute usage consistent (size, +is_signed, etc). + +Signed-off-by: Tom Zanussi +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/trace/trace_events_hist.c | 33 +++++++++++++++++++++++++++++++++ + 1 file changed, 33 insertions(+) + +--- a/kernel/trace/trace_events_hist.c ++++ b/kernel/trace/trace_events_hist.c +@@ -54,6 +54,7 @@ struct hist_field { + unsigned int size; + unsigned int offset; + unsigned int is_signed; ++ const char *type; + struct hist_field *operands[HIST_FIELD_OPERANDS_MAX]; + struct hist_trigger_data *hist_data; + struct hist_var var; +@@ -717,6 +718,7 @@ static void destroy_hist_field(struct hi + + kfree(hist_field->var.name); + kfree(hist_field->name); ++ kfree(hist_field->type); + + kfree(hist_field); + } +@@ -742,6 +744,10 @@ static struct hist_field *create_hist_fi + + if (flags & HIST_FIELD_FL_HITCOUNT) { + hist_field->fn = hist_field_counter; ++ hist_field->size = sizeof(u64); ++ hist_field->type = kstrdup("u64", GFP_KERNEL); ++ if (!hist_field->type) ++ goto free; + goto out; + } + +@@ -755,12 +761,18 @@ static struct hist_field *create_hist_fi + hist_field->fn = hist_field_log2; + hist_field->operands[0] = create_hist_field(hist_data, field, fl, NULL); + hist_field->size = hist_field->operands[0]->size; ++ hist_field->type = kstrdup(hist_field->operands[0]->type, GFP_KERNEL); ++ if (!hist_field->type) ++ goto free; + goto out; + } + + if (flags & HIST_FIELD_FL_TIMESTAMP) { + hist_field->fn = hist_field_timestamp; + hist_field->size = sizeof(u64); ++ hist_field->type = kstrdup("u64", GFP_KERNEL); ++ if (!hist_field->type) ++ goto free; + goto out; + } + +@@ -770,6 +782,11 @@ static struct hist_field *create_hist_fi + if (is_string_field(field)) { + flags |= HIST_FIELD_FL_STRING; + ++ hist_field->size = MAX_FILTER_STR_VAL; ++ hist_field->type = kstrdup(field->type, GFP_KERNEL); ++ if (!hist_field->type) ++ goto free; ++ + if (field->filter_type == FILTER_STATIC_STRING) + hist_field->fn = hist_field_string; + else if (field->filter_type == FILTER_DYN_STRING) +@@ -777,6 +794,12 @@ static struct hist_field *create_hist_fi + else + hist_field->fn = hist_field_pstring; + } else { ++ hist_field->size = field->size; ++ hist_field->is_signed = field->is_signed; ++ hist_field->type = kstrdup(field->type, GFP_KERNEL); ++ if (!hist_field->type) ++ goto free; ++ + hist_field->fn = select_value_fn(field->size, + field->is_signed); + if (!hist_field->fn) { +@@ -949,6 +972,11 @@ static struct hist_field *parse_unary(st + expr->operands[0] = operand1; + expr->operator = FIELD_OP_UNARY_MINUS; + expr->name = expr_str(expr, 0); ++ expr->type = kstrdup(operand1->type, GFP_KERNEL); ++ if (!expr->type) { ++ ret = -ENOMEM; ++ goto free; ++ } + + return expr; + free: +@@ -1042,6 +1070,11 @@ static struct hist_field *parse_expr(str + expr->operands[1] = operand2; + expr->operator = field_op; + expr->name = expr_str(expr, 0); ++ expr->type = kstrdup(operand1->type, GFP_KERNEL); ++ if (!expr->type) { ++ ret = -ENOMEM; ++ goto free; ++ } + + switch (field_op) { + case FIELD_OP_MINUS: diff --git a/patches/features/all/rt/0022-hrtimer-Remove-base-argument-from-hrtimer_reprogram.patch b/patches/features/all/rt/0022-hrtimer-Remove-base-argument-from-hrtimer_reprogram.patch new file mode 100644 index 00000000000..f64eb1d8323 --- /dev/null +++ b/patches/features/all/rt/0022-hrtimer-Remove-base-argument-from-hrtimer_reprogram.patch @@ -0,0 +1,50 @@ +From: Anna-Maria Gleixner +Date: Wed, 20 Dec 2017 17:13:11 +0100 +Subject: [PATCH 22/29] hrtimer: Remove base argument from hrtimer_reprogram() +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +hrtimer_reprogram() must have access to the hrtimer_clock_base of the new +first expiring timer to access hrtimer_clock_base.offset for adjusting the +expiry time to CLOCK_MONOTONIC. This is required to evaluate whether the +new left most timer in the hrtimer_clock_base is the first expiring timer +of all clock bases in a hrtimer_cpu_base. + +The only user of hrtimer_reprogram() is hrtimer_start_range_ns(), which has +a pointer to hrtimer_clock_base already and hands it in as an argument. But +hrtimer_start_range_ns() will be split for the upcoming support for softirq +based hrtimers to avoid code duplication and will lose the direct access to +the clock base pointer. + +Instead of handing in timer and timer->base as an argument remove the base +argument from hrtimer_reprogram() and retrieve the clock base internally. + +Signed-off-by: Anna-Maria Gleixner +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/time/hrtimer.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +--- a/kernel/time/hrtimer.c ++++ b/kernel/time/hrtimer.c +@@ -650,10 +650,10 @@ static inline void retrigger_next_event( + * + * Called with interrupts disabled and base->cpu_base.lock held + */ +-static void hrtimer_reprogram(struct hrtimer *timer, +- struct hrtimer_clock_base *base) ++static void hrtimer_reprogram(struct hrtimer *timer) + { + struct hrtimer_cpu_base *cpu_base = this_cpu_ptr(&hrtimer_bases); ++ struct hrtimer_clock_base *base = timer->base; + ktime_t expires = ktime_sub(hrtimer_get_expires(timer), base->offset); + + WARN_ON_ONCE(hrtimer_get_expires_tv64(timer) < 0); +@@ -943,7 +943,7 @@ void hrtimer_start_range_ns(struct hrtim + if (!leftmost) + goto unlock; + +- hrtimer_reprogram(timer, new_base); ++ hrtimer_reprogram(timer); + unlock: + unlock_hrtimer_base(timer, &flags); + } diff --git a/patches/features/all/rt/0022-tracing-Add-variable-reference-handling-to-hist-trig.patch b/patches/features/all/rt/0022-tracing-Add-variable-reference-handling-to-hist-trig.patch new file mode 100644 index 00000000000..2c0359b6de0 --- /dev/null +++ b/patches/features/all/rt/0022-tracing-Add-variable-reference-handling-to-hist-trig.patch @@ -0,0 +1,952 @@ +From: Tom Zanussi +Date: Mon, 15 Jan 2018 20:51:56 -0600 +Subject: [PATCH 22/37] tracing: Add variable reference handling to hist + triggers +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Add the necessary infrastructure to allow the variables defined on one +event to be referenced in another. This allows variables set by a +previous event to be referenced and used in expressions combining the +variable values saved by that previous event and the event fields of +the current event. For example, here's how a latency can be +calculated and saved into yet another variable named 'wakeup_lat': + + # echo 'hist:keys=pid,prio:ts0=common_timestamp ... + # echo 'hist:keys=next_pid:wakeup_lat=common_timestamp-$ts0 ... + +In the first event, the event's timetamp is saved into the variable +ts0. In the next line, ts0 is subtracted from the second event's +timestamp to produce the latency. + +Further users of variable references will be described in subsequent +patches, such as for instance how the 'wakeup_lat' variable above can +be displayed in a latency histogram. + +Signed-off-by: Tom Zanussi +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/trace/trace.c | 2 + kernel/trace/trace.h | 3 + kernel/trace/trace_events_hist.c | 661 +++++++++++++++++++++++++++++++++++- + kernel/trace/trace_events_trigger.c | 6 + 4 files changed, 656 insertions(+), 16 deletions(-) + +--- a/kernel/trace/trace.c ++++ b/kernel/trace/trace.c +@@ -7788,6 +7788,7 @@ static int instance_mkdir(const char *na + + INIT_LIST_HEAD(&tr->systems); + INIT_LIST_HEAD(&tr->events); ++ INIT_LIST_HEAD(&tr->hist_vars); + + if (allocate_trace_buffers(tr, trace_buf_size) < 0) + goto out_free_tr; +@@ -8538,6 +8539,7 @@ ssize_t trace_parse_run_command(struct f + + INIT_LIST_HEAD(&global_trace.systems); + INIT_LIST_HEAD(&global_trace.events); ++ INIT_LIST_HEAD(&global_trace.hist_vars); + list_add(&global_trace.list, &ftrace_trace_arrays); + + apply_trace_boot_options(); +--- a/kernel/trace/trace.h ++++ b/kernel/trace/trace.h +@@ -274,6 +274,7 @@ struct trace_array { + int function_enabled; + #endif + int time_stamp_abs_ref; ++ struct list_head hist_vars; + }; + + enum { +@@ -1550,6 +1551,8 @@ extern void pause_named_trigger(struct e + extern void unpause_named_trigger(struct event_trigger_data *data); + extern void set_named_trigger_data(struct event_trigger_data *data, + struct event_trigger_data *named_data); ++extern struct event_trigger_data * ++get_named_trigger_data(struct event_trigger_data *data); + extern int register_event_command(struct event_command *cmd); + extern int unregister_event_command(struct event_command *cmd); + extern int register_trigger_hist_enable_disable_cmds(void); +--- a/kernel/trace/trace_events_hist.c ++++ b/kernel/trace/trace_events_hist.c +@@ -59,7 +59,12 @@ struct hist_field { + struct hist_trigger_data *hist_data; + struct hist_var var; + enum field_op_id operator; ++ char *system; ++ char *event_name; + char *name; ++ unsigned int var_idx; ++ unsigned int var_ref_idx; ++ bool read_once; + }; + + static u64 hist_field_none(struct hist_field *field, +@@ -214,6 +219,7 @@ enum hist_field_flags { + HIST_FIELD_FL_TIMESTAMP_USECS = 1 << 11, + HIST_FIELD_FL_VAR = 1 << 12, + HIST_FIELD_FL_EXPR = 1 << 13, ++ HIST_FIELD_FL_VAR_REF = 1 << 14, + }; + + struct var_defs { +@@ -253,6 +259,8 @@ struct hist_trigger_data { + struct tracing_map *map; + bool enable_timestamps; + bool remove; ++ struct hist_field *var_refs[TRACING_MAP_VARS_MAX]; ++ unsigned int n_var_refs; + }; + + static u64 hist_field_timestamp(struct hist_field *hist_field, +@@ -271,6 +279,214 @@ static u64 hist_field_timestamp(struct h + return ts; + } + ++struct hist_var_data { ++ struct list_head list; ++ struct hist_trigger_data *hist_data; ++}; ++ ++static struct hist_field * ++check_field_for_var_ref(struct hist_field *hist_field, ++ struct hist_trigger_data *var_data, ++ unsigned int var_idx) ++{ ++ struct hist_field *found = NULL; ++ ++ if (hist_field && hist_field->flags & HIST_FIELD_FL_VAR_REF) { ++ if (hist_field->var.idx == var_idx && ++ hist_field->var.hist_data == var_data) { ++ found = hist_field; ++ } ++ } ++ ++ return found; ++} ++ ++static struct hist_field * ++check_field_for_var_refs(struct hist_trigger_data *hist_data, ++ struct hist_field *hist_field, ++ struct hist_trigger_data *var_data, ++ unsigned int var_idx, ++ unsigned int level) ++{ ++ struct hist_field *found = NULL; ++ unsigned int i; ++ ++ if (level > 3) ++ return found; ++ ++ if (!hist_field) ++ return found; ++ ++ found = check_field_for_var_ref(hist_field, var_data, var_idx); ++ if (found) ++ return found; ++ ++ for (i = 0; i < HIST_FIELD_OPERANDS_MAX; i++) { ++ struct hist_field *operand; ++ ++ operand = hist_field->operands[i]; ++ found = check_field_for_var_refs(hist_data, operand, var_data, ++ var_idx, level + 1); ++ if (found) ++ return found; ++ } ++ ++ return found; ++} ++ ++static struct hist_field *find_var_ref(struct hist_trigger_data *hist_data, ++ struct hist_trigger_data *var_data, ++ unsigned int var_idx) ++{ ++ struct hist_field *hist_field, *found = NULL; ++ unsigned int i; ++ ++ for_each_hist_field(i, hist_data) { ++ hist_field = hist_data->fields[i]; ++ found = check_field_for_var_refs(hist_data, hist_field, ++ var_data, var_idx, 0); ++ if (found) ++ return found; ++ } ++ ++ return found; ++} ++ ++static struct hist_field *find_any_var_ref(struct hist_trigger_data *hist_data, ++ unsigned int var_idx) ++{ ++ struct trace_array *tr = hist_data->event_file->tr; ++ struct hist_field *found = NULL; ++ struct hist_var_data *var_data; ++ ++ list_for_each_entry(var_data, &tr->hist_vars, list) { ++ if (var_data->hist_data == hist_data) ++ continue; ++ found = find_var_ref(var_data->hist_data, hist_data, var_idx); ++ if (found) ++ break; ++ } ++ ++ return found; ++} ++ ++static bool check_var_refs(struct hist_trigger_data *hist_data) ++{ ++ struct hist_field *field; ++ bool found = false; ++ int i; ++ ++ for_each_hist_field(i, hist_data) { ++ field = hist_data->fields[i]; ++ if (field && field->flags & HIST_FIELD_FL_VAR) { ++ if (find_any_var_ref(hist_data, field->var.idx)) { ++ found = true; ++ break; ++ } ++ } ++ } ++ ++ return found; ++} ++ ++static struct hist_var_data *find_hist_vars(struct hist_trigger_data *hist_data) ++{ ++ struct trace_array *tr = hist_data->event_file->tr; ++ struct hist_var_data *var_data, *found = NULL; ++ ++ list_for_each_entry(var_data, &tr->hist_vars, list) { ++ if (var_data->hist_data == hist_data) { ++ found = var_data; ++ break; ++ } ++ } ++ ++ return found; ++} ++ ++static bool field_has_hist_vars(struct hist_field *hist_field, ++ unsigned int level) ++{ ++ int i; ++ ++ if (level > 3) ++ return false; ++ ++ if (!hist_field) ++ return false; ++ ++ if (hist_field->flags & HIST_FIELD_FL_VAR || ++ hist_field->flags & HIST_FIELD_FL_VAR_REF) ++ return true; ++ ++ for (i = 0; i < HIST_FIELD_OPERANDS_MAX; i++) { ++ struct hist_field *operand; ++ ++ operand = hist_field->operands[i]; ++ if (field_has_hist_vars(operand, level + 1)) ++ return true; ++ } ++ ++ return false; ++} ++ ++static bool has_hist_vars(struct hist_trigger_data *hist_data) ++{ ++ struct hist_field *hist_field; ++ int i; ++ ++ for_each_hist_field(i, hist_data) { ++ hist_field = hist_data->fields[i]; ++ if (field_has_hist_vars(hist_field, 0)) ++ return true; ++ } ++ ++ return false; ++} ++ ++static int save_hist_vars(struct hist_trigger_data *hist_data) ++{ ++ struct trace_array *tr = hist_data->event_file->tr; ++ struct hist_var_data *var_data; ++ ++ var_data = find_hist_vars(hist_data); ++ if (var_data) ++ return 0; ++ ++ if (trace_array_get(tr) < 0) ++ return -ENODEV; ++ ++ var_data = kzalloc(sizeof(*var_data), GFP_KERNEL); ++ if (!var_data) { ++ trace_array_put(tr); ++ return -ENOMEM; ++ } ++ ++ var_data->hist_data = hist_data; ++ list_add(&var_data->list, &tr->hist_vars); ++ ++ return 0; ++} ++ ++static void remove_hist_vars(struct hist_trigger_data *hist_data) ++{ ++ struct trace_array *tr = hist_data->event_file->tr; ++ struct hist_var_data *var_data; ++ ++ var_data = find_hist_vars(hist_data); ++ if (!var_data) ++ return; ++ ++ if (WARN_ON(check_var_refs(hist_data))) ++ return; ++ ++ list_del(&var_data->list); ++ ++ kfree(var_data); ++ ++ trace_array_put(tr); ++} ++ + static struct hist_field *find_var_field(struct hist_trigger_data *hist_data, + const char *var_name) + { +@@ -313,10 +529,137 @@ static struct hist_field *find_var(struc + return NULL; + } + ++static struct trace_event_file *find_var_file(struct trace_array *tr, ++ char *system, ++ char *event_name, ++ char *var_name) ++{ ++ struct hist_trigger_data *var_hist_data; ++ struct hist_var_data *var_data; ++ struct trace_event_file *file, *found = NULL; ++ ++ if (system) ++ return find_event_file(tr, system, event_name); ++ ++ list_for_each_entry(var_data, &tr->hist_vars, list) { ++ var_hist_data = var_data->hist_data; ++ file = var_hist_data->event_file; ++ if (file == found) ++ continue; ++ ++ if (find_var_field(var_hist_data, var_name)) { ++ if (found) ++ return NULL; ++ ++ found = file; ++ } ++ } ++ ++ return found; ++} ++ ++static struct hist_field *find_file_var(struct trace_event_file *file, ++ const char *var_name) ++{ ++ struct hist_trigger_data *test_data; ++ struct event_trigger_data *test; ++ struct hist_field *hist_field; ++ ++ list_for_each_entry_rcu(test, &file->triggers, list) { ++ if (test->cmd_ops->trigger_type == ETT_EVENT_HIST) { ++ test_data = test->private_data; ++ hist_field = find_var_field(test_data, var_name); ++ if (hist_field) ++ return hist_field; ++ } ++ } ++ ++ return NULL; ++} ++ ++static struct hist_field *find_event_var(struct hist_trigger_data *hist_data, ++ char *system, ++ char *event_name, ++ char *var_name) ++{ ++ struct trace_array *tr = hist_data->event_file->tr; ++ struct hist_field *hist_field = NULL; ++ struct trace_event_file *file; ++ ++ file = find_var_file(tr, system, event_name, var_name); ++ if (!file) ++ return NULL; ++ ++ hist_field = find_file_var(file, var_name); ++ ++ return hist_field; ++} ++ + struct hist_elt_data { + char *comm; ++ u64 *var_ref_vals; + }; + ++static u64 hist_field_var_ref(struct hist_field *hist_field, ++ struct tracing_map_elt *elt, ++ struct ring_buffer_event *rbe, ++ void *event) ++{ ++ struct hist_elt_data *elt_data; ++ u64 var_val = 0; ++ ++ elt_data = elt->private_data; ++ var_val = elt_data->var_ref_vals[hist_field->var_ref_idx]; ++ ++ return var_val; ++} ++ ++static bool resolve_var_refs(struct hist_trigger_data *hist_data, void *key, ++ u64 *var_ref_vals, bool self) ++{ ++ struct hist_trigger_data *var_data; ++ struct tracing_map_elt *var_elt; ++ struct hist_field *hist_field; ++ unsigned int i, var_idx; ++ bool resolved = true; ++ u64 var_val = 0; ++ ++ for (i = 0; i < hist_data->n_var_refs; i++) { ++ hist_field = hist_data->var_refs[i]; ++ var_idx = hist_field->var.idx; ++ var_data = hist_field->var.hist_data; ++ ++ if (var_data == NULL) { ++ resolved = false; ++ break; ++ } ++ ++ if ((self && var_data != hist_data) || ++ (!self && var_data == hist_data)) ++ continue; ++ ++ var_elt = tracing_map_lookup(var_data->map, key); ++ if (!var_elt) { ++ resolved = false; ++ break; ++ } ++ ++ if (!tracing_map_var_set(var_elt, var_idx)) { ++ resolved = false; ++ break; ++ } ++ ++ if (self || !hist_field->read_once) ++ var_val = tracing_map_read_var(var_elt, var_idx); ++ else ++ var_val = tracing_map_read_var_once(var_elt, var_idx); ++ ++ var_ref_vals[i] = var_val; ++ } ++ ++ return resolved; ++} ++ + static const char *hist_field_name(struct hist_field *field, + unsigned int level) + { +@@ -331,8 +674,20 @@ static const char *hist_field_name(struc + field_name = hist_field_name(field->operands[0], ++level); + else if (field->flags & HIST_FIELD_FL_TIMESTAMP) + field_name = "common_timestamp"; +- else if (field->flags & HIST_FIELD_FL_EXPR) +- field_name = field->name; ++ else if (field->flags & HIST_FIELD_FL_EXPR || ++ field->flags & HIST_FIELD_FL_VAR_REF) { ++ if (field->system) { ++ static char full_name[MAX_FILTER_STR_VAL]; ++ ++ strcat(full_name, field->system); ++ strcat(full_name, "."); ++ strcat(full_name, field->event_name); ++ strcat(full_name, "."); ++ strcat(full_name, field->name); ++ field_name = full_name; ++ } else ++ field_name = field->name; ++ } + + if (field_name == NULL) + field_name = ""; +@@ -612,6 +967,9 @@ static const char *get_hist_field_flags( + + static void expr_field_str(struct hist_field *field, char *expr) + { ++ if (field->flags & HIST_FIELD_FL_VAR_REF) ++ strcat(expr, "$"); ++ + strcat(expr, hist_field_name(field, 0)); + + if (field->flags) { +@@ -742,6 +1100,11 @@ static struct hist_field *create_hist_fi + if (flags & HIST_FIELD_FL_EXPR) + goto out; /* caller will populate */ + ++ if (flags & HIST_FIELD_FL_VAR_REF) { ++ hist_field->fn = hist_field_var_ref; ++ goto out; ++ } ++ + if (flags & HIST_FIELD_FL_HITCOUNT) { + hist_field->fn = hist_field_counter; + hist_field->size = sizeof(u64); +@@ -835,6 +1198,144 @@ static void destroy_hist_fields(struct h + } + } + ++static int init_var_ref(struct hist_field *ref_field, ++ struct hist_field *var_field, ++ char *system, char *event_name) ++{ ++ int err = 0; ++ ++ ref_field->var.idx = var_field->var.idx; ++ ref_field->var.hist_data = var_field->hist_data; ++ ref_field->size = var_field->size; ++ ref_field->is_signed = var_field->is_signed; ++ ref_field->flags |= var_field->flags & ++ (HIST_FIELD_FL_TIMESTAMP | HIST_FIELD_FL_TIMESTAMP_USECS); ++ ++ if (system) { ++ ref_field->system = kstrdup(system, GFP_KERNEL); ++ if (!ref_field->system) ++ return -ENOMEM; ++ } ++ ++ if (event_name) { ++ ref_field->event_name = kstrdup(event_name, GFP_KERNEL); ++ if (!ref_field->event_name) { ++ err = -ENOMEM; ++ goto free; ++ } ++ } ++ ++ ref_field->name = kstrdup(var_field->var.name, GFP_KERNEL); ++ if (!ref_field->name) { ++ err = -ENOMEM; ++ goto free; ++ } ++ ++ ref_field->type = kstrdup(var_field->type, GFP_KERNEL); ++ if (!ref_field->type) { ++ err = -ENOMEM; ++ goto free; ++ } ++ out: ++ return err; ++ free: ++ kfree(ref_field->system); ++ kfree(ref_field->event_name); ++ kfree(ref_field->name); ++ ++ goto out; ++} ++ ++static struct hist_field *create_var_ref(struct hist_field *var_field, ++ char *system, char *event_name) ++{ ++ unsigned long flags = HIST_FIELD_FL_VAR_REF; ++ struct hist_field *ref_field; ++ ++ ref_field = create_hist_field(var_field->hist_data, NULL, flags, NULL); ++ if (ref_field) { ++ if (init_var_ref(ref_field, var_field, system, event_name)) { ++ destroy_hist_field(ref_field, 0); ++ return NULL; ++ } ++ } ++ ++ return ref_field; ++} ++ ++static bool is_var_ref(char *var_name) ++{ ++ if (!var_name || strlen(var_name) < 2 || var_name[0] != '$') ++ return false; ++ ++ return true; ++} ++ ++static char *field_name_from_var(struct hist_trigger_data *hist_data, ++ char *var_name) ++{ ++ char *name, *field; ++ unsigned int i; ++ ++ for (i = 0; i < hist_data->attrs->var_defs.n_vars; i++) { ++ name = hist_data->attrs->var_defs.name[i]; ++ ++ if (strcmp(var_name, name) == 0) { ++ field = hist_data->attrs->var_defs.expr[i]; ++ if (contains_operator(field) || is_var_ref(field)) ++ continue; ++ return field; ++ } ++ } ++ ++ return NULL; ++} ++ ++static char *local_field_var_ref(struct hist_trigger_data *hist_data, ++ char *system, char *event_name, ++ char *var_name) ++{ ++ struct trace_event_call *call; ++ ++ if (system && event_name) { ++ call = hist_data->event_file->event_call; ++ ++ if (strcmp(system, call->class->system) != 0) ++ return NULL; ++ ++ if (strcmp(event_name, trace_event_name(call)) != 0) ++ return NULL; ++ } ++ ++ if (!!system != !!event_name) ++ return NULL; ++ ++ if (!is_var_ref(var_name)) ++ return NULL; ++ ++ var_name++; ++ ++ return field_name_from_var(hist_data, var_name); ++} ++ ++static struct hist_field *parse_var_ref(struct hist_trigger_data *hist_data, ++ char *system, char *event_name, ++ char *var_name) ++{ ++ struct hist_field *var_field = NULL, *ref_field = NULL; ++ ++ if (!is_var_ref(var_name)) ++ return NULL; ++ ++ var_name++; ++ ++ var_field = find_event_var(hist_data, system, event_name, var_name); ++ if (var_field) ++ ref_field = create_var_ref(var_field, system, event_name); ++ ++ return ref_field; ++} ++ + static struct ftrace_event_field * + parse_field(struct hist_trigger_data *hist_data, struct trace_event_file *file, + char *field_str, unsigned long *flags) +@@ -891,10 +1392,40 @@ static struct hist_field *parse_atom(str + struct trace_event_file *file, char *str, + unsigned long *flags, char *var_name) + { ++ char *s, *ref_system = NULL, *ref_event = NULL, *ref_var = str; + struct ftrace_event_field *field = NULL; + struct hist_field *hist_field = NULL; + int ret = 0; + ++ s = strchr(str, '.'); ++ if (s) { ++ s = strchr(++s, '.'); ++ if (s) { ++ ref_system = strsep(&str, "."); ++ if (!str) { ++ ret = -EINVAL; ++ goto out; ++ } ++ ref_event = strsep(&str, "."); ++ if (!str) { ++ ret = -EINVAL; ++ goto out; ++ } ++ ref_var = str; ++ } ++ } ++ ++ s = local_field_var_ref(hist_data, ref_system, ref_event, ref_var); ++ if (!s) { ++ hist_field = parse_var_ref(hist_data, ref_system, ref_event, ref_var); ++ if (hist_field) { ++ hist_data->var_refs[hist_data->n_var_refs] = hist_field; ++ hist_field->var_ref_idx = hist_data->n_var_refs++; ++ return hist_field; ++ } ++ } else ++ str = s; ++ + field = parse_field(hist_data, file, str, flags); + if (IS_ERR(field)) { + ret = PTR_ERR(field); +@@ -1066,6 +1597,9 @@ static struct hist_field *parse_expr(str + goto free; + } + ++ operand1->read_once = true; ++ operand2->read_once = true; ++ + expr->operands[0] = operand1; + expr->operands[1] = operand2; + expr->operator = field_op; +@@ -1238,6 +1772,12 @@ static int create_key_field(struct hist_ + goto out; + } + ++ if (hist_field->flags & HIST_FIELD_FL_VAR_REF) { ++ destroy_hist_field(hist_field, 0); ++ ret = -EINVAL; ++ goto out; ++ } ++ + key_size = hist_field->size; + } + +@@ -1576,6 +2116,7 @@ create_hist_data(unsigned int map_bits, + + hist_data->attrs = attrs; + hist_data->remove = remove; ++ hist_data->event_file = file; + + ret = create_hist_fields(hist_data, file); + if (ret) +@@ -1598,12 +2139,6 @@ create_hist_data(unsigned int map_bits, + ret = create_tracing_map_fields(hist_data); + if (ret) + goto free; +- +- ret = tracing_map_init(hist_data->map); +- if (ret) +- goto free; +- +- hist_data->event_file = file; + out: + return hist_data; + free: +@@ -1618,12 +2153,17 @@ create_hist_data(unsigned int map_bits, + + static void hist_trigger_elt_update(struct hist_trigger_data *hist_data, + struct tracing_map_elt *elt, void *rec, +- struct ring_buffer_event *rbe) ++ struct ring_buffer_event *rbe, ++ u64 *var_ref_vals) + { ++ struct hist_elt_data *elt_data; + struct hist_field *hist_field; + unsigned int i, var_idx; + u64 hist_val; + ++ elt_data = elt->private_data; ++ elt_data->var_ref_vals = var_ref_vals; ++ + for_each_hist_val_field(i, hist_data) { + hist_field = hist_data->fields[i]; + hist_val = hist_field->fn(hist_field, elt, rbe, rec); +@@ -1675,6 +2215,7 @@ static void event_hist_trigger(struct ev + struct hist_trigger_data *hist_data = data->private_data; + bool use_compound_key = (hist_data->n_keys > 1); + unsigned long entries[HIST_STACKTRACE_DEPTH]; ++ u64 var_ref_vals[TRACING_MAP_VARS_MAX]; + char compound_key[HIST_KEY_SIZE_MAX]; + struct tracing_map_elt *elt = NULL; + struct stack_trace stacktrace; +@@ -1714,9 +2255,15 @@ static void event_hist_trigger(struct ev + if (use_compound_key) + key = compound_key; + ++ if (hist_data->n_var_refs && ++ !resolve_var_refs(hist_data, key, var_ref_vals, false)) ++ return; ++ + elt = tracing_map_insert(hist_data->map, key); +- if (elt) +- hist_trigger_elt_update(hist_data, elt, rec, rbe); ++ if (!elt) ++ return; ++ ++ hist_trigger_elt_update(hist_data, elt, rec, rbe, var_ref_vals); + } + + static void hist_trigger_stacktrace_print(struct seq_file *m, +@@ -1933,8 +2480,11 @@ static void hist_field_print(struct seq_ + + if (hist_field->flags & HIST_FIELD_FL_TIMESTAMP) + seq_puts(m, "common_timestamp"); +- else if (field_name) ++ else if (field_name) { ++ if (hist_field->flags & HIST_FIELD_FL_VAR_REF) ++ seq_putc(m, '$'); + seq_printf(m, "%s", field_name); ++ } + + if (hist_field->flags) { + const char *flags_str = get_hist_field_flags(hist_field); +@@ -2074,7 +2624,11 @@ static void event_hist_trigger_free(stru + if (!data->ref) { + if (data->name) + del_named_trigger(data); ++ + trigger_data_free(data); ++ ++ remove_hist_vars(hist_data); ++ + destroy_hist_data(hist_data); + } + } +@@ -2287,23 +2841,55 @@ static int hist_register_trigger(char *g + goto out; + } + +- list_add_rcu(&data->list, &file->triggers); + ret++; + +- update_cond_flag(file); +- + if (hist_data->enable_timestamps) + tracing_set_time_stamp_abs(file->tr, true); ++ out: ++ return ret; ++} ++ ++static int hist_trigger_enable(struct event_trigger_data *data, ++ struct trace_event_file *file) ++{ ++ int ret = 0; ++ ++ list_add_tail_rcu(&data->list, &file->triggers); ++ ++ update_cond_flag(file); + + if (trace_event_trigger_enable_disable(file, 1) < 0) { + list_del_rcu(&data->list); + update_cond_flag(file); + ret--; + } +- out: ++ + return ret; + } + ++static bool hist_trigger_check_refs(struct event_trigger_data *data, ++ struct trace_event_file *file) ++{ ++ struct hist_trigger_data *hist_data = data->private_data; ++ struct event_trigger_data *test, *named_data = NULL; ++ ++ if (hist_data->attrs->name) ++ named_data = find_named_trigger(hist_data->attrs->name); ++ ++ list_for_each_entry_rcu(test, &file->triggers, list) { ++ if (test->cmd_ops->trigger_type == ETT_EVENT_HIST) { ++ if (!hist_trigger_match(data, test, named_data, false)) ++ continue; ++ hist_data = test->private_data; ++ if (check_var_refs(hist_data)) ++ return true; ++ break; ++ } ++ } ++ ++ return false; ++} ++ + static void hist_unregister_trigger(char *glob, struct event_trigger_ops *ops, + struct event_trigger_data *data, + struct trace_event_file *file) +@@ -2336,11 +2922,30 @@ static void hist_unregister_trigger(char + } + } + ++static bool hist_file_check_refs(struct trace_event_file *file) ++{ ++ struct hist_trigger_data *hist_data; ++ struct event_trigger_data *test; ++ ++ list_for_each_entry_rcu(test, &file->triggers, list) { ++ if (test->cmd_ops->trigger_type == ETT_EVENT_HIST) { ++ hist_data = test->private_data; ++ if (check_var_refs(hist_data)) ++ return true; ++ } ++ } ++ ++ return false; ++} ++ + static void hist_unreg_all(struct trace_event_file *file) + { + struct event_trigger_data *test, *n; + struct hist_trigger_data *hist_data; + ++ if (hist_file_check_refs(file)) ++ return; ++ + list_for_each_entry_safe(test, n, &file->triggers, list) { + if (test->cmd_ops->trigger_type == ETT_EVENT_HIST) { + hist_data = test->private_data; +@@ -2416,6 +3021,11 @@ static int event_hist_trigger_func(struc + } + + if (remove) { ++ if (hist_trigger_check_refs(trigger_data, file)) { ++ ret = -EBUSY; ++ goto out_free; ++ } ++ + cmd_ops->unreg(glob+1, trigger_ops, trigger_data, file); + ret = 0; + goto out_free; +@@ -2433,14 +3043,33 @@ static int event_hist_trigger_func(struc + goto out_free; + } else if (ret < 0) + goto out_free; ++ ++ if (get_named_trigger_data(trigger_data)) ++ goto enable; ++ ++ if (has_hist_vars(hist_data)) ++ save_hist_vars(hist_data); ++ ++ ret = tracing_map_init(hist_data->map); ++ if (ret) ++ goto out_unreg; ++enable: ++ ret = hist_trigger_enable(trigger_data, file); ++ if (ret) ++ goto out_unreg; ++ + /* Just return zero, not the number of registered triggers */ + ret = 0; + out: + return ret; ++ out_unreg: ++ cmd_ops->unreg(glob+1, trigger_ops, trigger_data, file); + out_free: + if (cmd_ops->set_filter) + cmd_ops->set_filter(NULL, trigger_data, NULL); + ++ remove_hist_vars(hist_data); ++ + kfree(trigger_data); + + destroy_hist_data(hist_data); +--- a/kernel/trace/trace_events_trigger.c ++++ b/kernel/trace/trace_events_trigger.c +@@ -909,6 +909,12 @@ void set_named_trigger_data(struct event + data->named_data = named_data; + } + ++struct event_trigger_data * ++get_named_trigger_data(struct event_trigger_data *data) ++{ ++ return data->named_data; ++} ++ + static void + traceon_trigger(struct event_trigger_data *data, void *rec, + struct ring_buffer_event *event) diff --git a/patches/features/all/rt/0023-hrtimer-Split-hrtimer_start_range_ns.patch b/patches/features/all/rt/0023-hrtimer-Split-hrtimer_start_range_ns.patch new file mode 100644 index 00000000000..8e332f60573 --- /dev/null +++ b/patches/features/all/rt/0023-hrtimer-Split-hrtimer_start_range_ns.patch @@ -0,0 +1,76 @@ +From: Anna-Maria Gleixner +Date: Wed, 20 Dec 2017 17:13:12 +0100 +Subject: [PATCH 23/29] hrtimer: Split hrtimer_start_range_ns() +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Preparatory patch for softirq based hrtimers to avoid code duplication. No +functional change. + +Signed-off-by: Anna-Maria Gleixner +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/time/hrtimer.c | 44 ++++++++++++++++++++++++-------------------- + 1 file changed, 24 insertions(+), 20 deletions(-) + +--- a/kernel/time/hrtimer.c ++++ b/kernel/time/hrtimer.c +@@ -909,22 +909,11 @@ static inline ktime_t hrtimer_update_low + return tim; + } + +-/** +- * hrtimer_start_range_ns - (re)start an hrtimer +- * @timer: the timer to be added +- * @tim: expiry time +- * @delta_ns: "slack" range for the timer +- * @mode: timer mode: absolute (HRTIMER_MODE_ABS) or +- * relative (HRTIMER_MODE_REL), and pinned (HRTIMER_MODE_PINNED) +- */ +-void hrtimer_start_range_ns(struct hrtimer *timer, ktime_t tim, +- u64 delta_ns, const enum hrtimer_mode mode) ++static int __hrtimer_start_range_ns(struct hrtimer *timer, ktime_t tim, ++ u64 delta_ns, const enum hrtimer_mode mode, ++ struct hrtimer_clock_base *base) + { +- struct hrtimer_clock_base *base, *new_base; +- unsigned long flags; +- int leftmost; +- +- base = lock_hrtimer_base(timer, &flags); ++ struct hrtimer_clock_base *new_base; + + /* Remove an active timer from the queue: */ + remove_hrtimer(timer, base, true); +@@ -939,12 +928,27 @@ void hrtimer_start_range_ns(struct hrtim + /* Switch the timer base, if necessary: */ + new_base = switch_hrtimer_base(timer, base, mode & HRTIMER_MODE_PINNED); + +- leftmost = enqueue_hrtimer(timer, new_base, mode); +- if (!leftmost) +- goto unlock; ++ return enqueue_hrtimer(timer, new_base, mode); ++} ++/** ++ * hrtimer_start_range_ns - (re)start an hrtimer ++ * @timer: the timer to be added ++ * @tim: expiry time ++ * @delta_ns: "slack" range for the timer ++ * @mode: timer mode: absolute (HRTIMER_MODE_ABS) or ++ * relative (HRTIMER_MODE_REL), and pinned (HRTIMER_MODE_PINNED) ++ */ ++void hrtimer_start_range_ns(struct hrtimer *timer, ktime_t tim, ++ u64 delta_ns, const enum hrtimer_mode mode) ++{ ++ struct hrtimer_clock_base *base; ++ unsigned long flags; ++ ++ base = lock_hrtimer_base(timer, &flags); ++ ++ if (__hrtimer_start_range_ns(timer, tim, delta_ns, mode, base)) ++ hrtimer_reprogram(timer); + +- hrtimer_reprogram(timer); +-unlock: + unlock_hrtimer_base(timer, &flags); + } + EXPORT_SYMBOL_GPL(hrtimer_start_range_ns); diff --git a/patches/features/all/rt/0023-tracing-Add-hist-trigger-action-hook.patch b/patches/features/all/rt/0023-tracing-Add-hist-trigger-action-hook.patch new file mode 100644 index 00000000000..72f9e56e501 --- /dev/null +++ b/patches/features/all/rt/0023-tracing-Add-hist-trigger-action-hook.patch @@ -0,0 +1,212 @@ +From: Tom Zanussi +Date: Mon, 15 Jan 2018 20:51:57 -0600 +Subject: [PATCH 23/37] tracing: Add hist trigger action hook +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Add a hook for executing extra actions whenever a histogram entry is +added or updated. + +The default 'action' when a hist entry is added to a histogram is to +update the set of values associated with it. Some applications may +want to perform additional actions at that point, such as generate +another event, or compare and save a maximum. + +Add a simple framework for doing that; specific actions will be +implemented on top of it in later patches. + +Signed-off-by: Tom Zanussi +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/trace/trace_events_hist.c | 106 ++++++++++++++++++++++++++++++++++++++- + 1 file changed, 104 insertions(+), 2 deletions(-) + +--- a/kernel/trace/trace_events_hist.c ++++ b/kernel/trace/trace_events_hist.c +@@ -33,6 +33,7 @@ typedef u64 (*hist_field_fn_t) (struct h + + #define HIST_FIELD_OPERANDS_MAX 2 + #define HIST_FIELDS_MAX (TRACING_MAP_FIELDS_MAX + TRACING_MAP_VARS_MAX) ++#define HIST_ACTIONS_MAX 8 + + enum field_op_id { + FIELD_OP_NONE, +@@ -242,6 +243,9 @@ struct hist_trigger_attrs { + char *assignment_str[TRACING_MAP_VARS_MAX]; + unsigned int n_assignments; + ++ char *action_str[HIST_ACTIONS_MAX]; ++ unsigned int n_actions; ++ + struct var_defs var_defs; + }; + +@@ -261,6 +265,21 @@ struct hist_trigger_data { + bool remove; + struct hist_field *var_refs[TRACING_MAP_VARS_MAX]; + unsigned int n_var_refs; ++ ++ struct action_data *actions[HIST_ACTIONS_MAX]; ++ unsigned int n_actions; ++}; ++ ++struct action_data; ++ ++typedef void (*action_fn_t) (struct hist_trigger_data *hist_data, ++ struct tracing_map_elt *elt, void *rec, ++ struct ring_buffer_event *rbe, ++ struct action_data *data, u64 *var_ref_vals); ++ ++struct action_data { ++ action_fn_t fn; ++ unsigned int var_ref_idx; + }; + + static u64 hist_field_timestamp(struct hist_field *hist_field, +@@ -764,6 +783,9 @@ static void destroy_hist_trigger_attrs(s + for (i = 0; i < attrs->n_assignments; i++) + kfree(attrs->assignment_str[i]); + ++ for (i = 0; i < attrs->n_actions; i++) ++ kfree(attrs->action_str[i]); ++ + kfree(attrs->name); + kfree(attrs->sort_key_str); + kfree(attrs->keys_str); +@@ -771,6 +793,16 @@ static void destroy_hist_trigger_attrs(s + kfree(attrs); + } + ++static int parse_action(char *str, struct hist_trigger_attrs *attrs) ++{ ++ int ret = 0; ++ ++ if (attrs->n_actions >= HIST_ACTIONS_MAX) ++ return ret; ++ ++ return ret; ++} ++ + static int parse_assignment(char *str, struct hist_trigger_attrs *attrs) + { + int ret = 0; +@@ -854,8 +886,9 @@ static struct hist_trigger_attrs *parse_ + else if (strcmp(str, "clear") == 0) + attrs->clear = true; + else { +- ret = -EINVAL; +- goto free; ++ ret = parse_action(str, attrs); ++ if (ret) ++ goto free; + } + } + +@@ -2047,11 +2080,55 @@ static int create_sort_keys(struct hist_ + return ret; + } + ++static void destroy_actions(struct hist_trigger_data *hist_data) ++{ ++ unsigned int i; ++ ++ for (i = 0; i < hist_data->n_actions; i++) { ++ struct action_data *data = hist_data->actions[i]; ++ ++ kfree(data); ++ } ++} ++ ++static int parse_actions(struct hist_trigger_data *hist_data) ++{ ++ unsigned int i; ++ int ret = 0; ++ char *str; ++ ++ for (i = 0; i < hist_data->attrs->n_actions; i++) { ++ str = hist_data->attrs->action_str[i]; ++ } ++ ++ return ret; ++} ++ ++static int create_actions(struct hist_trigger_data *hist_data, ++ struct trace_event_file *file) ++{ ++ struct action_data *data; ++ unsigned int i; ++ int ret = 0; ++ ++ for (i = 0; i < hist_data->attrs->n_actions; i++) { ++ data = hist_data->actions[i]; ++ } ++ ++ return ret; ++} ++ + static void destroy_hist_data(struct hist_trigger_data *hist_data) + { ++ if (!hist_data) ++ return; ++ + destroy_hist_trigger_attrs(hist_data->attrs); + destroy_hist_fields(hist_data); + tracing_map_destroy(hist_data->map); ++ ++ destroy_actions(hist_data); ++ + kfree(hist_data); + } + +@@ -2118,6 +2195,10 @@ create_hist_data(unsigned int map_bits, + hist_data->remove = remove; + hist_data->event_file = file; + ++ ret = parse_actions(hist_data); ++ if (ret) ++ goto free; ++ + ret = create_hist_fields(hist_data, file); + if (ret) + goto free; +@@ -2209,6 +2290,20 @@ static inline void add_to_key(char *comp + memcpy(compound_key + key_field->offset, key, size); + } + ++static void ++hist_trigger_actions(struct hist_trigger_data *hist_data, ++ struct tracing_map_elt *elt, void *rec, ++ struct ring_buffer_event *rbe, u64 *var_ref_vals) ++{ ++ struct action_data *data; ++ unsigned int i; ++ ++ for (i = 0; i < hist_data->n_actions; i++) { ++ data = hist_data->actions[i]; ++ data->fn(hist_data, elt, rec, rbe, data, var_ref_vals); ++ } ++} ++ + static void event_hist_trigger(struct event_trigger_data *data, void *rec, + struct ring_buffer_event *rbe) + { +@@ -2264,6 +2359,9 @@ static void event_hist_trigger(struct ev + return; + + hist_trigger_elt_update(hist_data, elt, rec, rbe, var_ref_vals); ++ ++ if (resolve_var_refs(hist_data, key, var_ref_vals, true)) ++ hist_trigger_actions(hist_data, elt, rec, rbe, var_ref_vals); + } + + static void hist_trigger_stacktrace_print(struct seq_file *m, +@@ -3050,6 +3148,10 @@ static int event_hist_trigger_func(struc + if (has_hist_vars(hist_data)) + save_hist_vars(hist_data); + ++ ret = create_actions(hist_data, file); ++ if (ret) ++ goto out_unreg; ++ + ret = tracing_map_init(hist_data->map); + if (ret) + goto out_unreg; diff --git a/patches/features/all/rt/0024-hrtimer-Split-__hrtimer_get_next_event.patch b/patches/features/all/rt/0024-hrtimer-Split-__hrtimer_get_next_event.patch new file mode 100644 index 00000000000..fa19ff3b060 --- /dev/null +++ b/patches/features/all/rt/0024-hrtimer-Split-__hrtimer_get_next_event.patch @@ -0,0 +1,53 @@ +From: Anna-Maria Gleixner +Date: Wed, 20 Dec 2017 17:13:13 +0100 +Subject: [PATCH 24/29] hrtimer: Split __hrtimer_get_next_event() +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Preparatory patch for softirq based hrtimers to avoid code duplication. No +functional change. + +Signed-off-by: Anna-Maria Gleixner +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/time/hrtimer.c | 20 ++++++++++++++++---- + 1 file changed, 16 insertions(+), 4 deletions(-) + +--- a/kernel/time/hrtimer.c ++++ b/kernel/time/hrtimer.c +@@ -459,13 +459,13 @@ static struct hrtimer_clock_base * + while ((base = __next_base((cpu_base), &(active)))) + + #if defined(CONFIG_NO_HZ_COMMON) || defined(CONFIG_HIGH_RES_TIMERS) +-static ktime_t __hrtimer_get_next_event(struct hrtimer_cpu_base *cpu_base) ++static ktime_t __hrtimer_next_event_base(struct hrtimer_cpu_base *cpu_base, ++ unsigned int active, ++ ktime_t expires_next) + { + struct hrtimer_clock_base *base; +- unsigned int active = cpu_base->active_bases; +- ktime_t expires, expires_next = KTIME_MAX; ++ ktime_t expires; + +- cpu_base->next_timer = NULL; + for_each_active_base(base, cpu_base, active) { + struct timerqueue_node *next; + struct hrtimer *timer; +@@ -487,6 +487,18 @@ static ktime_t __hrtimer_get_next_event( + expires_next = 0; + return expires_next; + } ++ ++static ktime_t __hrtimer_get_next_event(struct hrtimer_cpu_base *cpu_base) ++{ ++ unsigned int active = cpu_base->active_bases; ++ ktime_t expires_next = KTIME_MAX; ++ ++ cpu_base->next_timer = NULL; ++ ++ expires_next = __hrtimer_next_event_base(cpu_base, active, expires_next); ++ ++ return expires_next; ++} + #endif + + static inline ktime_t hrtimer_update_base(struct hrtimer_cpu_base *base) diff --git a/patches/features/all/rt/0024-tracing-Add-support-for-synthetic-events.patch b/patches/features/all/rt/0024-tracing-Add-support-for-synthetic-events.patch new file mode 100644 index 00000000000..bf1324a142c --- /dev/null +++ b/patches/features/all/rt/0024-tracing-Add-support-for-synthetic-events.patch @@ -0,0 +1,1038 @@ +From: Tom Zanussi +Date: Mon, 15 Jan 2018 20:51:58 -0600 +Subject: [PATCH 24/37] tracing: Add support for 'synthetic' events +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Synthetic events are user-defined events generated from hist trigger +variables saved from one or more other events. + +To define a synthetic event, the user writes a simple specification +consisting of the name of the new event along with one or more +variables and their type(s), to the tracing/synthetic_events file. + +For instance, the following creates a new event named 'wakeup_latency' +with 3 fields: lat, pid, and prio: + + # echo 'wakeup_latency u64 lat; pid_t pid; int prio' >> \ + /sys/kernel/debug/tracing/synthetic_events + +Reading the tracing/synthetic_events file lists all the +currently-defined synthetic events, in this case the event we defined +above: + + # cat /sys/kernel/debug/tracing/synthetic_events + wakeup_latency u64 lat; pid_t pid; int prio + +At this point, the synthetic event is ready to use, and a histogram +can be defined using it: + + # echo 'hist:keys=pid,prio,lat.log2:sort=pid,lat' >> \ + /sys/kernel/debug/tracing/events/synthetic/wakeup_latency/trigger + +The new event is created under the tracing/events/synthetic/ directory +and looks and behaves just like any other event: + + # ls /sys/kernel/debug/tracing/events/synthetic/wakeup_latency + enable filter format hist id trigger + +Although a histogram can be defined for it, nothing will happen until +an action tracing that event via the trace_synth() function occurs. +The trace_synth() function is very similar to all the other trace_* +invocations spread throughout the kernel, except in this case the +trace_ function and its corresponding tracepoint isn't statically +generated but defined by the user at run-time. + +How this can be automatically hooked up via a hist trigger 'action' is +discussed in a subsequent patch. + +Signed-off-by: Tom Zanussi +[fix noderef.cocci warnings, sizeof pointer for kcalloc of event->fields] +Signed-off-by: Fengguang Wu +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/trace/trace_events_hist.c | 895 ++++++++++++++++++++++++++++++++++++++- + 1 file changed, 893 insertions(+), 2 deletions(-) + +--- a/kernel/trace/trace_events_hist.c ++++ b/kernel/trace/trace_events_hist.c +@@ -20,10 +20,16 @@ + #include + #include + #include ++#include + + #include "tracing_map.h" + #include "trace.h" + ++#define SYNTH_SYSTEM "synthetic" ++#define SYNTH_FIELDS_MAX 16 ++ ++#define STR_VAR_LEN_MAX 32 /* must be multiple of sizeof(u64) */ ++ + struct hist_field; + + typedef u64 (*hist_field_fn_t) (struct hist_field *field, +@@ -270,6 +276,26 @@ struct hist_trigger_data { + unsigned int n_actions; + }; + ++struct synth_field { ++ char *type; ++ char *name; ++ size_t size; ++ bool is_signed; ++ bool is_string; ++}; ++ ++struct synth_event { ++ struct list_head list; ++ int ref; ++ char *name; ++ struct synth_field **fields; ++ unsigned int n_fields; ++ unsigned int n_u64; ++ struct trace_event_class class; ++ struct trace_event_call call; ++ struct tracepoint *tp; ++}; ++ + struct action_data; + + typedef void (*action_fn_t) (struct hist_trigger_data *hist_data, +@@ -282,6 +308,790 @@ struct action_data { + unsigned int var_ref_idx; + }; + ++static LIST_HEAD(synth_event_list); ++static DEFINE_MUTEX(synth_event_mutex); ++ ++struct synth_trace_event { ++ struct trace_entry ent; ++ u64 fields[]; ++}; ++ ++static int synth_event_define_fields(struct trace_event_call *call) ++{ ++ struct synth_trace_event trace; ++ int offset = offsetof(typeof(trace), fields); ++ struct synth_event *event = call->data; ++ unsigned int i, size, n_u64; ++ char *name, *type; ++ bool is_signed; ++ int ret = 0; ++ ++ for (i = 0, n_u64 = 0; i < event->n_fields; i++) { ++ size = event->fields[i]->size; ++ is_signed = event->fields[i]->is_signed; ++ type = event->fields[i]->type; ++ name = event->fields[i]->name; ++ ret = trace_define_field(call, type, name, offset, size, ++ is_signed, FILTER_OTHER); ++ if (ret) ++ break; ++ ++ if (event->fields[i]->is_string) { ++ offset += STR_VAR_LEN_MAX; ++ n_u64 += STR_VAR_LEN_MAX / sizeof(u64); ++ } else { ++ offset += sizeof(u64); ++ n_u64++; ++ } ++ } ++ ++ event->n_u64 = n_u64; ++ ++ return ret; ++} ++ ++static bool synth_field_signed(char *type) ++{ ++ if (strncmp(type, "u", 1) == 0) ++ return false; ++ ++ return true; ++} ++ ++static int synth_field_is_string(char *type) ++{ ++ if (strstr(type, "char[") != NULL) ++ return true; ++ ++ return false; ++} ++ ++static int synth_field_string_size(char *type) ++{ ++ char buf[4], *end, *start; ++ unsigned int len; ++ int size, err; ++ ++ start = strstr(type, "char["); ++ if (start == NULL) ++ return -EINVAL; ++ start += strlen("char["); ++ ++ end = strchr(type, ']'); ++ if (!end || end < start) ++ return -EINVAL; ++ ++ len = end - start; ++ if (len > 3) ++ return -EINVAL; ++ ++ strncpy(buf, start, len); ++ buf[len] = '\0'; ++ ++ err = kstrtouint(buf, 0, &size); ++ if (err) ++ return err; ++ ++ if (size > STR_VAR_LEN_MAX) ++ return -EINVAL; ++ ++ return size; ++} ++ ++static int synth_field_size(char *type) ++{ ++ int size = 0; ++ ++ if (strcmp(type, "s64") == 0) ++ size = sizeof(s64); ++ else if (strcmp(type, "u64") == 0) ++ size = sizeof(u64); ++ else if (strcmp(type, "s32") == 0) ++ size = sizeof(s32); ++ else if (strcmp(type, "u32") == 0) ++ size = sizeof(u32); ++ else if (strcmp(type, "s16") == 0) ++ size = sizeof(s16); ++ else if (strcmp(type, "u16") == 0) ++ size = sizeof(u16); ++ else if (strcmp(type, "s8") == 0) ++ size = sizeof(s8); ++ else if (strcmp(type, "u8") == 0) ++ size = sizeof(u8); ++ else if (strcmp(type, "char") == 0) ++ size = sizeof(char); ++ else if (strcmp(type, "unsigned char") == 0) ++ size = sizeof(unsigned char); ++ else if (strcmp(type, "int") == 0) ++ size = sizeof(int); ++ else if (strcmp(type, "unsigned int") == 0) ++ size = sizeof(unsigned int); ++ else if (strcmp(type, "long") == 0) ++ size = sizeof(long); ++ else if (strcmp(type, "unsigned long") == 0) ++ size = sizeof(unsigned long); ++ else if (strcmp(type, "pid_t") == 0) ++ size = sizeof(pid_t); ++ else if (synth_field_is_string(type)) ++ size = synth_field_string_size(type); ++ ++ return size; ++} ++ ++static const char *synth_field_fmt(char *type) ++{ ++ const char *fmt = "%llu"; ++ ++ if (strcmp(type, "s64") == 0) ++ fmt = "%lld"; ++ else if (strcmp(type, "u64") == 0) ++ fmt = "%llu"; ++ else if (strcmp(type, "s32") == 0) ++ fmt = "%d"; ++ else if (strcmp(type, "u32") == 0) ++ fmt = "%u"; ++ else if (strcmp(type, "s16") == 0) ++ fmt = "%d"; ++ else if (strcmp(type, "u16") == 0) ++ fmt = "%u"; ++ else if (strcmp(type, "s8") == 0) ++ fmt = "%d"; ++ else if (strcmp(type, "u8") == 0) ++ fmt = "%u"; ++ else if (strcmp(type, "char") == 0) ++ fmt = "%d"; ++ else if (strcmp(type, "unsigned char") == 0) ++ fmt = "%u"; ++ else if (strcmp(type, "int") == 0) ++ fmt = "%d"; ++ else if (strcmp(type, "unsigned int") == 0) ++ fmt = "%u"; ++ else if (strcmp(type, "long") == 0) ++ fmt = "%ld"; ++ else if (strcmp(type, "unsigned long") == 0) ++ fmt = "%lu"; ++ else if (strcmp(type, "pid_t") == 0) ++ fmt = "%d"; ++ else if (synth_field_is_string(type)) ++ fmt = "%s"; ++ ++ return fmt; ++} ++ ++static enum print_line_t print_synth_event(struct trace_iterator *iter, ++ int flags, ++ struct trace_event *event) ++{ ++ struct trace_array *tr = iter->tr; ++ struct trace_seq *s = &iter->seq; ++ struct synth_trace_event *entry; ++ struct synth_event *se; ++ unsigned int i, n_u64; ++ char print_fmt[32]; ++ const char *fmt; ++ ++ entry = (struct synth_trace_event *)iter->ent; ++ se = container_of(event, struct synth_event, call.event); ++ ++ trace_seq_printf(s, "%s: ", se->name); ++ ++ for (i = 0, n_u64 = 0; i < se->n_fields; i++) { ++ if (trace_seq_has_overflowed(s)) ++ goto end; ++ ++ fmt = synth_field_fmt(se->fields[i]->type); ++ ++ /* parameter types */ ++ if (tr->trace_flags & TRACE_ITER_VERBOSE) ++ trace_seq_printf(s, "%s ", fmt); ++ ++ snprintf(print_fmt, sizeof(print_fmt), "%%s=%s%%s", fmt); ++ ++ /* parameter values */ ++ if (se->fields[i]->is_string) { ++ trace_seq_printf(s, print_fmt, se->fields[i]->name, ++ (char *)&entry->fields[n_u64], ++ i == se->n_fields - 1 ? "" : " "); ++ n_u64 += STR_VAR_LEN_MAX / sizeof(u64); ++ } else { ++ trace_seq_printf(s, print_fmt, se->fields[i]->name, ++ entry->fields[n_u64], ++ i == se->n_fields - 1 ? "" : " "); ++ n_u64++; ++ } ++ } ++end: ++ trace_seq_putc(s, '\n'); ++ ++ return trace_handle_return(s); ++} ++ ++static struct trace_event_functions synth_event_funcs = { ++ .trace = print_synth_event ++}; ++ ++static notrace void trace_event_raw_event_synth(void *__data, ++ u64 *var_ref_vals, ++ unsigned int var_ref_idx) ++{ ++ struct trace_event_file *trace_file = __data; ++ struct synth_trace_event *entry; ++ struct trace_event_buffer fbuffer; ++ struct synth_event *event; ++ unsigned int i, n_u64; ++ int fields_size = 0; ++ ++ event = trace_file->event_call->data; ++ ++ if (trace_trigger_soft_disabled(trace_file)) ++ return; ++ ++ fields_size = event->n_u64 * sizeof(u64); ++ ++ entry = trace_event_buffer_reserve(&fbuffer, trace_file, ++ sizeof(*entry) + fields_size); ++ if (!entry) ++ return; ++ ++ for (i = 0, n_u64 = 0; i < event->n_fields; i++) { ++ if (event->fields[i]->is_string) { ++ char *str_val = (char *)(long)var_ref_vals[var_ref_idx + i]; ++ char *str_field = (char *)&entry->fields[n_u64]; ++ ++ strncpy(str_field, str_val, STR_VAR_LEN_MAX); ++ n_u64 += STR_VAR_LEN_MAX / sizeof(u64); ++ } else { ++ entry->fields[n_u64] = var_ref_vals[var_ref_idx + i]; ++ n_u64++; ++ } ++ } ++ ++ trace_event_buffer_commit(&fbuffer); ++} ++ ++static void free_synth_event_print_fmt(struct trace_event_call *call) ++{ ++ if (call) { ++ kfree(call->print_fmt); ++ call->print_fmt = NULL; ++ } ++} ++ ++static int __set_synth_event_print_fmt(struct synth_event *event, ++ char *buf, int len) ++{ ++ const char *fmt; ++ int pos = 0; ++ int i; ++ ++ /* When len=0, we just calculate the needed length */ ++#define LEN_OR_ZERO (len ? len - pos : 0) ++ ++ pos += snprintf(buf + pos, LEN_OR_ZERO, "\""); ++ for (i = 0; i < event->n_fields; i++) { ++ fmt = synth_field_fmt(event->fields[i]->type); ++ pos += snprintf(buf + pos, LEN_OR_ZERO, "%s=%s%s", ++ event->fields[i]->name, fmt, ++ i == event->n_fields - 1 ? "" : ", "); ++ } ++ pos += snprintf(buf + pos, LEN_OR_ZERO, "\""); ++ ++ for (i = 0; i < event->n_fields; i++) { ++ pos += snprintf(buf + pos, LEN_OR_ZERO, ++ ", REC->%s", event->fields[i]->name); ++ } ++ ++#undef LEN_OR_ZERO ++ ++ /* return the length of print_fmt */ ++ return pos; ++} ++ ++static int set_synth_event_print_fmt(struct trace_event_call *call) ++{ ++ struct synth_event *event = call->data; ++ char *print_fmt; ++ int len; ++ ++ /* First: called with 0 length to calculate the needed length */ ++ len = __set_synth_event_print_fmt(event, NULL, 0); ++ ++ print_fmt = kmalloc(len + 1, GFP_KERNEL); ++ if (!print_fmt) ++ return -ENOMEM; ++ ++ /* Second: actually write the @print_fmt */ ++ __set_synth_event_print_fmt(event, print_fmt, len + 1); ++ call->print_fmt = print_fmt; ++ ++ return 0; ++} ++ ++static void free_synth_field(struct synth_field *field) ++{ ++ kfree(field->type); ++ kfree(field->name); ++ kfree(field); ++} ++ ++static struct synth_field *parse_synth_field(char *field_type, ++ char *field_name) ++{ ++ struct synth_field *field; ++ int len, ret = 0; ++ char *array; ++ ++ if (field_type[0] == ';') ++ field_type++; ++ ++ len = strlen(field_name); ++ if (field_name[len - 1] == ';') ++ field_name[len - 1] = '\0'; ++ ++ field = kzalloc(sizeof(*field), GFP_KERNEL); ++ if (!field) ++ return ERR_PTR(-ENOMEM); ++ ++ len = strlen(field_type) + 1; ++ array = strchr(field_name, '['); ++ if (array) ++ len += strlen(array); ++ field->type = kzalloc(len, GFP_KERNEL); ++ if (!field->type) { ++ ret = -ENOMEM; ++ goto free; ++ } ++ strcat(field->type, field_type); ++ if (array) { ++ strcat(field->type, array); ++ *array = '\0'; ++ } ++ ++ field->size = synth_field_size(field->type); ++ if (!field->size) { ++ ret = -EINVAL; ++ goto free; ++ } ++ ++ if (synth_field_is_string(field->type)) ++ field->is_string = true; ++ ++ field->is_signed = synth_field_signed(field->type); ++ ++ field->name = kstrdup(field_name, GFP_KERNEL); ++ if (!field->name) { ++ ret = -ENOMEM; ++ goto free; ++ } ++ out: ++ return field; ++ free: ++ free_synth_field(field); ++ field = ERR_PTR(ret); ++ goto out; ++} ++ ++static void free_synth_tracepoint(struct tracepoint *tp) ++{ ++ if (!tp) ++ return; ++ ++ kfree(tp->name); ++ kfree(tp); ++} ++ ++static struct tracepoint *alloc_synth_tracepoint(char *name) ++{ ++ struct tracepoint *tp; ++ ++ tp = kzalloc(sizeof(*tp), GFP_KERNEL); ++ if (!tp) ++ return ERR_PTR(-ENOMEM); ++ ++ tp->name = kstrdup(name, GFP_KERNEL); ++ if (!tp->name) { ++ kfree(tp); ++ return ERR_PTR(-ENOMEM); ++ } ++ ++ return tp; ++} ++ ++typedef void (*synth_probe_func_t) (void *__data, u64 *var_ref_vals, ++ unsigned int var_ref_idx); ++ ++static inline void trace_synth(struct synth_event *event, u64 *var_ref_vals, ++ unsigned int var_ref_idx) ++{ ++ struct tracepoint *tp = event->tp; ++ ++ if (unlikely(atomic_read(&tp->key.enabled) > 0)) { ++ struct tracepoint_func *probe_func_ptr; ++ synth_probe_func_t probe_func; ++ void *__data; ++ ++ if (!(cpu_online(raw_smp_processor_id()))) ++ return; ++ ++ probe_func_ptr = rcu_dereference_sched((tp)->funcs); ++ if (probe_func_ptr) { ++ do { ++ probe_func = probe_func_ptr->func; ++ __data = probe_func_ptr->data; ++ probe_func(__data, var_ref_vals, var_ref_idx); ++ } while ((++probe_func_ptr)->func); ++ } ++ } ++} ++ ++static struct synth_event *find_synth_event(const char *name) ++{ ++ struct synth_event *event; ++ ++ list_for_each_entry(event, &synth_event_list, list) { ++ if (strcmp(event->name, name) == 0) ++ return event; ++ } ++ ++ return NULL; ++} ++ ++static int register_synth_event(struct synth_event *event) ++{ ++ struct trace_event_call *call = &event->call; ++ int ret = 0; ++ ++ event->call.class = &event->class; ++ event->class.system = kstrdup(SYNTH_SYSTEM, GFP_KERNEL); ++ if (!event->class.system) { ++ ret = -ENOMEM; ++ goto out; ++ } ++ ++ event->tp = alloc_synth_tracepoint(event->name); ++ if (IS_ERR(event->tp)) { ++ ret = PTR_ERR(event->tp); ++ event->tp = NULL; ++ goto out; ++ } ++ ++ INIT_LIST_HEAD(&call->class->fields); ++ call->event.funcs = &synth_event_funcs; ++ call->class->define_fields = synth_event_define_fields; ++ ++ ret = register_trace_event(&call->event); ++ if (!ret) { ++ ret = -ENODEV; ++ goto out; ++ } ++ call->flags = TRACE_EVENT_FL_TRACEPOINT; ++ call->class->reg = trace_event_reg; ++ call->class->probe = trace_event_raw_event_synth; ++ call->data = event; ++ call->tp = event->tp; ++ ++ ret = trace_add_event_call(call); ++ if (ret) { ++ pr_warn("Failed to register synthetic event: %s\n", ++ trace_event_name(call)); ++ goto err; ++ } ++ ++ ret = set_synth_event_print_fmt(call); ++ if (ret < 0) { ++ trace_remove_event_call(call); ++ goto err; ++ } ++ out: ++ return ret; ++ err: ++ unregister_trace_event(&call->event); ++ goto out; ++} ++ ++static int unregister_synth_event(struct synth_event *event) ++{ ++ struct trace_event_call *call = &event->call; ++ int ret; ++ ++ ret = trace_remove_event_call(call); ++ ++ return ret; ++} ++ ++static void free_synth_event(struct synth_event *event) ++{ ++ unsigned int i; ++ ++ if (!event) ++ return; ++ ++ for (i = 0; i < event->n_fields; i++) ++ free_synth_field(event->fields[i]); ++ ++ kfree(event->fields); ++ kfree(event->name); ++ kfree(event->class.system); ++ free_synth_tracepoint(event->tp); ++ free_synth_event_print_fmt(&event->call); ++ kfree(event); ++} ++ ++static struct synth_event *alloc_synth_event(char *event_name, int n_fields, ++ struct synth_field **fields) ++{ ++ struct synth_event *event; ++ unsigned int i; ++ ++ event = kzalloc(sizeof(*event), GFP_KERNEL); ++ if (!event) { ++ event = ERR_PTR(-ENOMEM); ++ goto out; ++ } ++ ++ event->name = kstrdup(event_name, GFP_KERNEL); ++ if (!event->name) { ++ kfree(event); ++ event = ERR_PTR(-ENOMEM); ++ goto out; ++ } ++ ++ event->fields = kcalloc(n_fields, sizeof(*event->fields), GFP_KERNEL); ++ if (!event->fields) { ++ free_synth_event(event); ++ event = ERR_PTR(-ENOMEM); ++ goto out; ++ } ++ ++ for (i = 0; i < n_fields; i++) ++ event->fields[i] = fields[i]; ++ ++ event->n_fields = n_fields; ++ out: ++ return event; ++} ++ ++static void add_or_delete_synth_event(struct synth_event *event, int delete) ++{ ++ if (delete) ++ free_synth_event(event); ++ else { ++ mutex_lock(&synth_event_mutex); ++ if (!find_synth_event(event->name)) ++ list_add(&event->list, &synth_event_list); ++ else ++ free_synth_event(event); ++ mutex_unlock(&synth_event_mutex); ++ } ++} ++ ++static int create_synth_event(int argc, char **argv) ++{ ++ struct synth_field *field, *fields[SYNTH_FIELDS_MAX]; ++ struct synth_event *event = NULL; ++ bool delete_event = false; ++ int i, n_fields = 0, ret = 0; ++ char *name; ++ ++ mutex_lock(&synth_event_mutex); ++ ++ /* ++ * Argument syntax: ++ * - Add synthetic event: field[;field] ... ++ * - Remove synthetic event: ! field[;field] ... ++ * where 'field' = type field_name ++ */ ++ if (argc < 1) { ++ ret = -EINVAL; ++ goto out; ++ } ++ ++ name = argv[0]; ++ if (name[0] == '!') { ++ delete_event = true; ++ name++; ++ } ++ ++ event = find_synth_event(name); ++ if (event) { ++ if (delete_event) { ++ if (event->ref) { ++ event = NULL; ++ ret = -EBUSY; ++ goto out; ++ } ++ list_del(&event->list); ++ goto out; ++ } ++ event = NULL; ++ ret = -EEXIST; ++ goto out; ++ } else if (delete_event) ++ goto out; ++ ++ if (argc < 2) { ++ ret = -EINVAL; ++ goto out; ++ } ++ ++ for (i = 1; i < argc - 1; i++) { ++ if (strcmp(argv[i], ";") == 0) ++ continue; ++ if (n_fields == SYNTH_FIELDS_MAX) { ++ ret = -EINVAL; ++ goto err; ++ } ++ ++ field = parse_synth_field(argv[i], argv[i + 1]); ++ if (IS_ERR(field)) { ++ ret = PTR_ERR(field); ++ goto err; ++ } ++ fields[n_fields] = field; ++ i++; n_fields++; ++ } ++ ++ if (i < argc) { ++ ret = -EINVAL; ++ goto err; ++ } ++ ++ event = alloc_synth_event(name, n_fields, fields); ++ if (IS_ERR(event)) { ++ ret = PTR_ERR(event); ++ event = NULL; ++ goto err; ++ } ++ out: ++ mutex_unlock(&synth_event_mutex); ++ ++ if (event) { ++ if (delete_event) { ++ ret = unregister_synth_event(event); ++ add_or_delete_synth_event(event, !ret); ++ } else { ++ ret = register_synth_event(event); ++ add_or_delete_synth_event(event, ret); ++ } ++ } ++ ++ return ret; ++ err: ++ mutex_unlock(&synth_event_mutex); ++ ++ for (i = 0; i < n_fields; i++) ++ free_synth_field(fields[i]); ++ free_synth_event(event); ++ ++ return ret; ++} ++ ++static int release_all_synth_events(void) ++{ ++ struct list_head release_events; ++ struct synth_event *event, *e; ++ int ret = 0; ++ ++ INIT_LIST_HEAD(&release_events); ++ ++ mutex_lock(&synth_event_mutex); ++ ++ list_for_each_entry(event, &synth_event_list, list) { ++ if (event->ref) { ++ mutex_unlock(&synth_event_mutex); ++ return -EBUSY; ++ } ++ } ++ ++ list_splice_init(&event->list, &release_events); ++ ++ mutex_unlock(&synth_event_mutex); ++ ++ list_for_each_entry_safe(event, e, &release_events, list) { ++ list_del(&event->list); ++ ++ ret = unregister_synth_event(event); ++ add_or_delete_synth_event(event, !ret); ++ } ++ ++ return ret; ++} ++ ++ ++static void *synth_events_seq_start(struct seq_file *m, loff_t *pos) ++{ ++ mutex_lock(&synth_event_mutex); ++ ++ return seq_list_start(&synth_event_list, *pos); ++} ++ ++static void *synth_events_seq_next(struct seq_file *m, void *v, loff_t *pos) ++{ ++ return seq_list_next(v, &synth_event_list, pos); ++} ++ ++static void synth_events_seq_stop(struct seq_file *m, void *v) ++{ ++ mutex_unlock(&synth_event_mutex); ++} ++ ++static int synth_events_seq_show(struct seq_file *m, void *v) ++{ ++ struct synth_field *field; ++ struct synth_event *event = v; ++ unsigned int i; ++ ++ seq_printf(m, "%s\t", event->name); ++ ++ for (i = 0; i < event->n_fields; i++) { ++ field = event->fields[i]; ++ ++ /* parameter values */ ++ seq_printf(m, "%s %s%s", field->type, field->name, ++ i == event->n_fields - 1 ? "" : "; "); ++ } ++ ++ seq_putc(m, '\n'); ++ ++ return 0; ++} ++ ++static const struct seq_operations synth_events_seq_op = { ++ .start = synth_events_seq_start, ++ .next = synth_events_seq_next, ++ .stop = synth_events_seq_stop, ++ .show = synth_events_seq_show ++}; ++ ++static int synth_events_open(struct inode *inode, struct file *file) ++{ ++ int ret; ++ ++ if ((file->f_mode & FMODE_WRITE) && (file->f_flags & O_TRUNC)) { ++ ret = release_all_synth_events(); ++ if (ret < 0) ++ return ret; ++ } ++ ++ return seq_open(file, &synth_events_seq_op); ++} ++ ++static ssize_t synth_events_write(struct file *file, ++ const char __user *buffer, ++ size_t count, loff_t *ppos) ++{ ++ return trace_parse_run_command(file, buffer, count, ppos, ++ create_synth_event); ++} ++ ++static const struct file_operations synth_events_fops = { ++ .open = synth_events_open, ++ .write = synth_events_write, ++ .read = seq_read, ++ .llseek = seq_lseek, ++ .release = seq_release, ++}; ++ + static u64 hist_field_timestamp(struct hist_field *hist_field, + struct tracing_map_elt *elt, + struct ring_buffer_event *rbe, +@@ -2965,6 +3775,28 @@ static int hist_trigger_enable(struct ev + return ret; + } + ++static bool have_hist_trigger_match(struct event_trigger_data *data, ++ struct trace_event_file *file) ++{ ++ struct hist_trigger_data *hist_data = data->private_data; ++ struct event_trigger_data *test, *named_data = NULL; ++ bool match = false; ++ ++ if (hist_data->attrs->name) ++ named_data = find_named_trigger(hist_data->attrs->name); ++ ++ list_for_each_entry_rcu(test, &file->triggers, list) { ++ if (test->cmd_ops->trigger_type == ETT_EVENT_HIST) { ++ if (hist_trigger_match(data, test, named_data, false)) { ++ match = true; ++ break; ++ } ++ } ++ } ++ ++ return match; ++} ++ + static bool hist_trigger_check_refs(struct event_trigger_data *data, + struct trace_event_file *file) + { +@@ -3040,6 +3872,8 @@ static void hist_unreg_all(struct trace_ + { + struct event_trigger_data *test, *n; + struct hist_trigger_data *hist_data; ++ struct synth_event *se; ++ const char *se_name; + + if (hist_file_check_refs(file)) + return; +@@ -3049,6 +3883,14 @@ static void hist_unreg_all(struct trace_ + hist_data = test->private_data; + list_del_rcu(&test->list); + trace_event_trigger_enable_disable(file, 0); ++ ++ mutex_lock(&synth_event_mutex); ++ se_name = trace_event_name(file->event_call); ++ se = find_synth_event(se_name); ++ if (se) ++ se->ref--; ++ mutex_unlock(&synth_event_mutex); ++ + update_cond_flag(file); + if (hist_data->enable_timestamps) + tracing_set_time_stamp_abs(file->tr, false); +@@ -3067,6 +3909,8 @@ static int event_hist_trigger_func(struc + struct hist_trigger_attrs *attrs; + struct event_trigger_ops *trigger_ops; + struct hist_trigger_data *hist_data; ++ struct synth_event *se; ++ const char *se_name; + bool remove = false; + char *trigger; + int ret = 0; +@@ -3097,10 +3941,11 @@ static int event_hist_trigger_func(struc + + trigger_ops = cmd_ops->get_trigger_ops(cmd, trigger); + +- ret = -ENOMEM; + trigger_data = kzalloc(sizeof(*trigger_data), GFP_KERNEL); +- if (!trigger_data) ++ if (!trigger_data) { ++ ret = -ENOMEM; + goto out_free; ++ } + + trigger_data->count = -1; + trigger_data->ops = trigger_ops; +@@ -3119,12 +3964,23 @@ static int event_hist_trigger_func(struc + } + + if (remove) { ++ if (!have_hist_trigger_match(trigger_data, file)) ++ goto out_free; ++ + if (hist_trigger_check_refs(trigger_data, file)) { + ret = -EBUSY; + goto out_free; + } + + cmd_ops->unreg(glob+1, trigger_ops, trigger_data, file); ++ ++ mutex_lock(&synth_event_mutex); ++ se_name = trace_event_name(file->event_call); ++ se = find_synth_event(se_name); ++ if (se) ++ se->ref--; ++ mutex_unlock(&synth_event_mutex); ++ + ret = 0; + goto out_free; + } +@@ -3160,6 +4016,13 @@ static int event_hist_trigger_func(struc + if (ret) + goto out_unreg; + ++ mutex_lock(&synth_event_mutex); ++ se_name = trace_event_name(file->event_call); ++ se = find_synth_event(se_name); ++ if (se) ++ se->ref++; ++ mutex_unlock(&synth_event_mutex); ++ + /* Just return zero, not the number of registered triggers */ + ret = 0; + out: +@@ -3332,3 +4195,31 @@ static __init void unregister_trigger_hi + + return ret; + } ++ ++static __init int trace_events_hist_init(void) ++{ ++ struct dentry *entry = NULL; ++ struct dentry *d_tracer; ++ int err = 0; ++ ++ d_tracer = tracing_init_dentry(); ++ if (IS_ERR(d_tracer)) { ++ err = PTR_ERR(d_tracer); ++ goto err; ++ } ++ ++ entry = tracefs_create_file("synthetic_events", 0644, d_tracer, ++ NULL, &synth_events_fops); ++ if (!entry) { ++ err = -ENODEV; ++ goto err; ++ } ++ ++ return err; ++ err: ++ pr_warn("Could not create tracefs 'synthetic_events' entry\n"); ++ ++ return err; ++} ++ ++fs_initcall(trace_events_hist_init); diff --git a/patches/features/all/rt/0025-hrtimer-Use-irqsave-irqrestore-around-__run_hrtimer.patch b/patches/features/all/rt/0025-hrtimer-Use-irqsave-irqrestore-around-__run_hrtimer.patch new file mode 100644 index 00000000000..dee146abc5a --- /dev/null +++ b/patches/features/all/rt/0025-hrtimer-Use-irqsave-irqrestore-around-__run_hrtimer.patch @@ -0,0 +1,145 @@ +From: Anna-Maria Gleixner +Date: Wed, 20 Dec 2017 17:13:14 +0100 +Subject: [PATCH 25/29] hrtimer: Use irqsave/irqrestore around __run_hrtimer() +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +__run_hrtimer() is called with the hrtimer_cpu_base.lock held and +interrupts disabled. Before invoking the timer callback the base lock is +dropped, but interrupts stay disabled. + +The upcoming support for softirq based hrtimers requires that interrupts +are enabled before the timer callback is invoked. + +To avoid code duplication, take hrtimer_cpu_base.lock with +raw_spin_lock_irqsave(flags) at the call site and hand in the flags as +argument. So raw_spin_unlock_irqrestore() before the callback invocation +will either keep interrupts disabled in interrupt context or restore to +interrupt enabled state when called from softirq context. + +Suggested-by: Peter Zijlstra +Signed-off-by: Anna-Maria Gleixner +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/time/hrtimer.c | 31 ++++++++++++++++++------------- + 1 file changed, 18 insertions(+), 13 deletions(-) + +--- a/kernel/time/hrtimer.c ++++ b/kernel/time/hrtimer.c +@@ -1163,7 +1163,8 @@ EXPORT_SYMBOL_GPL(hrtimer_active); + + static void __run_hrtimer(struct hrtimer_cpu_base *cpu_base, + struct hrtimer_clock_base *base, +- struct hrtimer *timer, ktime_t *now) ++ struct hrtimer *timer, ktime_t *now, ++ unsigned long flags) + { + enum hrtimer_restart (*fn)(struct hrtimer *); + int restart; +@@ -1198,11 +1199,11 @@ static void __run_hrtimer(struct hrtimer + * protected against migration to a different CPU even if the lock + * is dropped. + */ +- raw_spin_unlock(&cpu_base->lock); ++ raw_spin_unlock_irqrestore(&cpu_base->lock, flags); + trace_hrtimer_expire_entry(timer, now); + restart = fn(timer); + trace_hrtimer_expire_exit(timer); +- raw_spin_lock(&cpu_base->lock); ++ raw_spin_lock_irq(&cpu_base->lock); + + /* + * Note: We clear the running state after enqueue_hrtimer and +@@ -1230,7 +1231,8 @@ static void __run_hrtimer(struct hrtimer + base->running = NULL; + } + +-static void __hrtimer_run_queues(struct hrtimer_cpu_base *cpu_base, ktime_t now) ++static void __hrtimer_run_queues(struct hrtimer_cpu_base *cpu_base, ktime_t now, ++ unsigned long flags) + { + struct hrtimer_clock_base *base; + unsigned int active = cpu_base->active_bases; +@@ -1261,7 +1263,7 @@ static void __hrtimer_run_queues(struct + if (basenow < hrtimer_get_softexpires_tv64(timer)) + break; + +- __run_hrtimer(cpu_base, base, timer, &basenow); ++ __run_hrtimer(cpu_base, base, timer, &basenow, flags); + } + } + } +@@ -1276,13 +1278,14 @@ void hrtimer_interrupt(struct clock_even + { + struct hrtimer_cpu_base *cpu_base = this_cpu_ptr(&hrtimer_bases); + ktime_t expires_next, now, entry_time, delta; ++ unsigned long flags; + int retries = 0; + + BUG_ON(!cpu_base->hres_active); + cpu_base->nr_events++; + dev->next_event = KTIME_MAX; + +- raw_spin_lock(&cpu_base->lock); ++ raw_spin_lock_irqsave(&cpu_base->lock, flags); + entry_time = now = hrtimer_update_base(cpu_base); + retry: + cpu_base->in_hrtirq = 1; +@@ -1295,7 +1298,7 @@ void hrtimer_interrupt(struct clock_even + */ + cpu_base->expires_next = KTIME_MAX; + +- __hrtimer_run_queues(cpu_base, now); ++ __hrtimer_run_queues(cpu_base, now, flags); + + /* Reevaluate the clock bases for the next expiry */ + expires_next = __hrtimer_get_next_event(cpu_base); +@@ -1305,7 +1308,7 @@ void hrtimer_interrupt(struct clock_even + */ + cpu_base->expires_next = expires_next; + cpu_base->in_hrtirq = 0; +- raw_spin_unlock(&cpu_base->lock); ++ raw_spin_unlock_irqrestore(&cpu_base->lock, flags); + + /* Reprogramming necessary ? */ + if (!tick_program_event(expires_next, 0)) { +@@ -1326,7 +1329,7 @@ void hrtimer_interrupt(struct clock_even + * Acquire base lock for updating the offsets and retrieving + * the current time. + */ +- raw_spin_lock(&cpu_base->lock); ++ raw_spin_lock_irqsave(&cpu_base->lock, flags); + now = hrtimer_update_base(cpu_base); + cpu_base->nr_retries++; + if (++retries < 3) +@@ -1339,7 +1342,8 @@ void hrtimer_interrupt(struct clock_even + */ + cpu_base->nr_hangs++; + cpu_base->hang_detected = 1; +- raw_spin_unlock(&cpu_base->lock); ++ raw_spin_unlock_irqrestore(&cpu_base->lock, flags); ++ + delta = ktime_sub(now, entry_time); + if ((unsigned int)delta > cpu_base->max_hang_time) + cpu_base->max_hang_time = (unsigned int) delta; +@@ -1381,6 +1385,7 @@ static inline void __hrtimer_peek_ahead_ + void hrtimer_run_queues(void) + { + struct hrtimer_cpu_base *cpu_base = this_cpu_ptr(&hrtimer_bases); ++ unsigned long flags; + ktime_t now; + + if (__hrtimer_hres_active(cpu_base)) +@@ -1398,10 +1403,10 @@ void hrtimer_run_queues(void) + return; + } + +- raw_spin_lock(&cpu_base->lock); ++ raw_spin_lock_irqsave(&cpu_base->lock, flags); + now = hrtimer_update_base(cpu_base); +- __hrtimer_run_queues(cpu_base, now); +- raw_spin_unlock(&cpu_base->lock); ++ __hrtimer_run_queues(cpu_base, now, flags); ++ raw_spin_unlock_irqrestore(&cpu_base->lock, flags); + } + + /* diff --git a/patches/features/all/rt/0025-tracing-Add-support-for-field-variables.patch b/patches/features/all/rt/0025-tracing-Add-support-for-field-variables.patch new file mode 100644 index 00000000000..8c77bfc774e --- /dev/null +++ b/patches/features/all/rt/0025-tracing-Add-support-for-field-variables.patch @@ -0,0 +1,663 @@ +From: Tom Zanussi +Date: Mon, 15 Jan 2018 20:51:59 -0600 +Subject: [PATCH 25/37] tracing: Add support for 'field variables' +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Users should be able to directly specify event fields in hist trigger +'actions' rather than being forced to explicitly create a variable for +that purpose. + +Add support allowing fields to be used directly in actions, which +essentially does just that - creates 'invisible' variables for each +bare field specified in an action. If a bare field refers to a field +on another (matching) event, it even creates a special histogram for +the purpose (since variables can't be defined on an existing histogram +after histogram creation). + +Here's a simple example that demonstrates both. Basically the +onmatch() action creates a list of variables corresponding to the +parameters of the synthetic event to be generated, and then uses those +values to generate the event. So for the wakeup_latency synthetic +event 'call' below the first param, $wakeup_lat, is a variable defined +explicitly on sched_switch, where 'next_pid' is just a normal field on +sched_switch, and prio is a normal field on sched_waking. + +Since the mechanism works on variables, those two normal fields just +have 'invisible' variables created internally for them. In the case of +'prio', which is on another event, we actually need to create an +additional hist trigger and define the invisible variable on that, since +once a hist trigger is defined, variables can't be added to it later. + + echo 'wakeup_latency u64 lat; pid_t pid; int prio' >> + /sys/kernel/debug/tracing/synthetic_events + + echo 'hist:keys=pid:ts0=common_timestamp.usecs >> + /sys/kernel/debug/tracing/events/sched/sched_waking/trigger + +echo 'hist:keys=next_pid:wakeup_lat=common_timestamp.usecs-$ts0: + onmatch(sched.sched_waking).wakeup_latency($wakeup_lat,next_pid,prio) + >> /sys/kernel/debug/tracing/events/sched/sched_switch/trigger + +Signed-off-by: Tom Zanussi +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/trace/trace_events_hist.c | 531 ++++++++++++++++++++++++++++++++++++++- + 1 file changed, 530 insertions(+), 1 deletion(-) + +--- a/kernel/trace/trace_events_hist.c ++++ b/kernel/trace/trace_events_hist.c +@@ -255,6 +255,16 @@ struct hist_trigger_attrs { + struct var_defs var_defs; + }; + ++struct field_var { ++ struct hist_field *var; ++ struct hist_field *val; ++}; ++ ++struct field_var_hist { ++ struct hist_trigger_data *hist_data; ++ char *cmd; ++}; ++ + struct hist_trigger_data { + struct hist_field *fields[HIST_FIELDS_MAX]; + unsigned int n_vals; +@@ -274,6 +284,12 @@ struct hist_trigger_data { + + struct action_data *actions[HIST_ACTIONS_MAX]; + unsigned int n_actions; ++ ++ struct field_var *field_vars[SYNTH_FIELDS_MAX]; ++ unsigned int n_field_vars; ++ unsigned int n_field_var_str; ++ struct field_var_hist *field_var_hists[SYNTH_FIELDS_MAX]; ++ unsigned int n_field_var_hists; + }; + + struct synth_field { +@@ -1427,6 +1443,7 @@ static struct hist_field *find_event_var + struct hist_elt_data { + char *comm; + u64 *var_ref_vals; ++ char *field_var_str[SYNTH_FIELDS_MAX]; + }; + + static u64 hist_field_var_ref(struct hist_field *hist_field, +@@ -1731,6 +1748,11 @@ static inline void save_comm(char *comm, + + static void hist_elt_data_free(struct hist_elt_data *elt_data) + { ++ unsigned int i; ++ ++ for (i = 0; i < SYNTH_FIELDS_MAX; i++) ++ kfree(elt_data->field_var_str[i]); ++ + kfree(elt_data->comm); + kfree(elt_data); + } +@@ -1748,7 +1770,7 @@ static int hist_trigger_elt_data_alloc(s + unsigned int size = TASK_COMM_LEN; + struct hist_elt_data *elt_data; + struct hist_field *key_field; +- unsigned int i; ++ unsigned int i, n_str; + + elt_data = kzalloc(sizeof(*elt_data), GFP_KERNEL); + if (!elt_data) +@@ -1767,6 +1789,18 @@ static int hist_trigger_elt_data_alloc(s + } + } + ++ n_str = hist_data->n_field_var_str; ++ ++ size = STR_VAR_LEN_MAX; ++ ++ for (i = 0; i < n_str; i++) { ++ elt_data->field_var_str[i] = kzalloc(size, GFP_KERNEL); ++ if (!elt_data->field_var_str[i]) { ++ hist_elt_data_free(elt_data); ++ return -ENOMEM; ++ } ++ } ++ + elt->private_data = elt_data; + + return 0; +@@ -2473,6 +2507,470 @@ static struct hist_field *parse_expr(str + return ERR_PTR(ret); + } + ++static char *find_trigger_filter(struct hist_trigger_data *hist_data, ++ struct trace_event_file *file) ++{ ++ struct event_trigger_data *test; ++ ++ list_for_each_entry_rcu(test, &file->triggers, list) { ++ if (test->cmd_ops->trigger_type == ETT_EVENT_HIST) { ++ if (test->private_data == hist_data) ++ return test->filter_str; ++ } ++ } ++ ++ return NULL; ++} ++ ++static struct event_command trigger_hist_cmd; ++static int event_hist_trigger_func(struct event_command *cmd_ops, ++ struct trace_event_file *file, ++ char *glob, char *cmd, char *param); ++ ++static bool compatible_keys(struct hist_trigger_data *target_hist_data, ++ struct hist_trigger_data *hist_data, ++ unsigned int n_keys) ++{ ++ struct hist_field *target_hist_field, *hist_field; ++ unsigned int n, i, j; ++ ++ if (hist_data->n_fields - hist_data->n_vals != n_keys) ++ return false; ++ ++ i = hist_data->n_vals; ++ j = target_hist_data->n_vals; ++ ++ for (n = 0; n < n_keys; n++) { ++ hist_field = hist_data->fields[i + n]; ++ target_hist_field = target_hist_data->fields[j + n]; ++ ++ if (strcmp(hist_field->type, target_hist_field->type) != 0) ++ return false; ++ if (hist_field->size != target_hist_field->size) ++ return false; ++ if (hist_field->is_signed != target_hist_field->is_signed) ++ return false; ++ } ++ ++ return true; ++} ++ ++static struct hist_trigger_data * ++find_compatible_hist(struct hist_trigger_data *target_hist_data, ++ struct trace_event_file *file) ++{ ++ struct hist_trigger_data *hist_data; ++ struct event_trigger_data *test; ++ unsigned int n_keys; ++ ++ n_keys = target_hist_data->n_fields - target_hist_data->n_vals; ++ ++ list_for_each_entry_rcu(test, &file->triggers, list) { ++ if (test->cmd_ops->trigger_type == ETT_EVENT_HIST) { ++ hist_data = test->private_data; ++ ++ if (compatible_keys(target_hist_data, hist_data, n_keys)) ++ return hist_data; ++ } ++ } ++ ++ return NULL; ++} ++ ++static struct trace_event_file *event_file(struct trace_array *tr, ++ char *system, char *event_name) ++{ ++ struct trace_event_file *file; ++ ++ file = find_event_file(tr, system, event_name); ++ if (!file) ++ return ERR_PTR(-EINVAL); ++ ++ return file; ++} ++ ++static struct hist_field * ++find_synthetic_field_var(struct hist_trigger_data *target_hist_data, ++ char *system, char *event_name, char *field_name) ++{ ++ struct hist_field *event_var; ++ char *synthetic_name; ++ ++ synthetic_name = kzalloc(MAX_FILTER_STR_VAL, GFP_KERNEL); ++ if (!synthetic_name) ++ return ERR_PTR(-ENOMEM); ++ ++ strcpy(synthetic_name, "synthetic_"); ++ strcat(synthetic_name, field_name); ++ ++ event_var = find_event_var(target_hist_data, system, event_name, synthetic_name); ++ ++ kfree(synthetic_name); ++ ++ return event_var; ++} ++ ++/** ++ * create_field_var_hist - Automatically create a histogram and var for a field ++ * @target_hist_data: The target hist trigger ++ * @subsys_name: Optional subsystem name ++ * @event_name: Optional event name ++ * @field_name: The name of the field (and the resulting variable) ++ * ++ * Hist trigger actions fetch data from variables, not directly from ++ * events. However, for convenience, users are allowed to directly ++ * specify an event field in an action, which will be automatically ++ * converted into a variable on their behalf. ++ ++ * If a user specifies a field on an event that isn't the event the ++ * histogram currently being defined (the target event histogram), the ++ * only way that can be accomplished is if a new hist trigger is ++ * created and the field variable defined on that. ++ * ++ * This function creates a new histogram compatible with the target ++ * event (meaning a histogram with the same key as the target ++ * histogram), and creates a variable for the specified field, but ++ * with 'synthetic_' prepended to the variable name in order to avoid ++ * collision with normal field variables. ++ * ++ * Return: The variable created for the field. ++ */ ++struct hist_field * ++create_field_var_hist(struct hist_trigger_data *target_hist_data, ++ char *subsys_name, char *event_name, char *field_name) ++{ ++ struct trace_array *tr = target_hist_data->event_file->tr; ++ struct hist_field *event_var = ERR_PTR(-EINVAL); ++ struct hist_trigger_data *hist_data; ++ unsigned int i, n, first = true; ++ struct field_var_hist *var_hist; ++ struct trace_event_file *file; ++ struct hist_field *key_field; ++ char *saved_filter; ++ char *cmd; ++ int ret; ++ ++ if (target_hist_data->n_field_var_hists >= SYNTH_FIELDS_MAX) ++ return ERR_PTR(-EINVAL); ++ ++ file = event_file(tr, subsys_name, event_name); ++ ++ if (IS_ERR(file)) { ++ ret = PTR_ERR(file); ++ return ERR_PTR(ret); ++ } ++ ++ /* ++ * Look for a histogram compatible with target. We'll use the ++ * found histogram specification to create a new matching ++ * histogram with our variable on it. target_hist_data is not ++ * yet a registered histogram so we can't use that. ++ */ ++ hist_data = find_compatible_hist(target_hist_data, file); ++ if (!hist_data) ++ return ERR_PTR(-EINVAL); ++ ++ /* See if a synthetic field variable has already been created */ ++ event_var = find_synthetic_field_var(target_hist_data, subsys_name, ++ event_name, field_name); ++ if (!IS_ERR_OR_NULL(event_var)) ++ return event_var; ++ ++ var_hist = kzalloc(sizeof(*var_hist), GFP_KERNEL); ++ if (!var_hist) ++ return ERR_PTR(-ENOMEM); ++ ++ cmd = kzalloc(MAX_FILTER_STR_VAL, GFP_KERNEL); ++ if (!cmd) { ++ kfree(var_hist); ++ return ERR_PTR(-ENOMEM); ++ } ++ ++ /* Use the same keys as the compatible histogram */ ++ strcat(cmd, "keys="); ++ ++ for_each_hist_key_field(i, hist_data) { ++ key_field = hist_data->fields[i]; ++ if (!first) ++ strcat(cmd, ","); ++ strcat(cmd, key_field->field->name); ++ first = false; ++ } ++ ++ /* Create the synthetic field variable specification */ ++ strcat(cmd, ":synthetic_"); ++ strcat(cmd, field_name); ++ strcat(cmd, "="); ++ strcat(cmd, field_name); ++ ++ /* Use the same filter as the compatible histogram */ ++ saved_filter = find_trigger_filter(hist_data, file); ++ if (saved_filter) { ++ strcat(cmd, " if "); ++ strcat(cmd, saved_filter); ++ } ++ ++ var_hist->cmd = kstrdup(cmd, GFP_KERNEL); ++ if (!var_hist->cmd) { ++ kfree(cmd); ++ kfree(var_hist); ++ return ERR_PTR(-ENOMEM); ++ } ++ ++ /* Save the compatible histogram information */ ++ var_hist->hist_data = hist_data; ++ ++ /* Create the new histogram with our variable */ ++ ret = event_hist_trigger_func(&trigger_hist_cmd, file, ++ "", "hist", cmd); ++ if (ret) { ++ kfree(cmd); ++ kfree(var_hist->cmd); ++ kfree(var_hist); ++ return ERR_PTR(ret); ++ } ++ ++ kfree(cmd); ++ ++ /* If we can't find the variable, something went wrong */ ++ event_var = find_synthetic_field_var(target_hist_data, subsys_name, ++ event_name, field_name); ++ if (IS_ERR_OR_NULL(event_var)) { ++ kfree(var_hist->cmd); ++ kfree(var_hist); ++ return ERR_PTR(-EINVAL); ++ } ++ ++ n = target_hist_data->n_field_var_hists; ++ target_hist_data->field_var_hists[n] = var_hist; ++ target_hist_data->n_field_var_hists++; ++ ++ return event_var; ++} ++ ++struct hist_field * ++find_target_event_var(struct hist_trigger_data *hist_data, ++ char *subsys_name, char *event_name, char *var_name) ++{ ++ struct trace_event_file *file = hist_data->event_file; ++ struct hist_field *hist_field = NULL; ++ ++ if (subsys_name) { ++ struct trace_event_call *call; ++ ++ if (!event_name) ++ return NULL; ++ ++ call = file->event_call; ++ ++ if (strcmp(subsys_name, call->class->system) != 0) ++ return NULL; ++ ++ if (strcmp(event_name, trace_event_name(call)) != 0) ++ return NULL; ++ } ++ ++ hist_field = find_var_field(hist_data, var_name); ++ ++ return hist_field; ++} ++ ++static inline void __update_field_vars(struct tracing_map_elt *elt, ++ struct ring_buffer_event *rbe, ++ void *rec, ++ struct field_var **field_vars, ++ unsigned int n_field_vars, ++ unsigned int field_var_str_start) ++{ ++ struct hist_elt_data *elt_data = elt->private_data; ++ unsigned int i, j, var_idx; ++ u64 var_val; ++ ++ for (i = 0, j = field_var_str_start; i < n_field_vars; i++) { ++ struct field_var *field_var = field_vars[i]; ++ struct hist_field *var = field_var->var; ++ struct hist_field *val = field_var->val; ++ ++ var_val = val->fn(val, elt, rbe, rec); ++ var_idx = var->var.idx; ++ ++ if (val->flags & HIST_FIELD_FL_STRING) { ++ char *str = elt_data->field_var_str[j++]; ++ char *val_str = (char *)(uintptr_t)var_val; ++ ++ strncpy(str, val_str, STR_VAR_LEN_MAX); ++ var_val = (u64)(uintptr_t)str; ++ } ++ tracing_map_set_var(elt, var_idx, var_val); ++ } ++} ++ ++static void update_field_vars(struct hist_trigger_data *hist_data, ++ struct tracing_map_elt *elt, ++ struct ring_buffer_event *rbe, ++ void *rec) ++{ ++ __update_field_vars(elt, rbe, rec, hist_data->field_vars, ++ hist_data->n_field_vars, 0); ++} ++ ++static struct hist_field *create_var(struct hist_trigger_data *hist_data, ++ struct trace_event_file *file, ++ char *name, int size, const char *type) ++{ ++ struct hist_field *var; ++ int idx; ++ ++ if (find_var(hist_data, file, name) && !hist_data->remove) { ++ var = ERR_PTR(-EINVAL); ++ goto out; ++ } ++ ++ var = kzalloc(sizeof(struct hist_field), GFP_KERNEL); ++ if (!var) { ++ var = ERR_PTR(-ENOMEM); ++ goto out; ++ } ++ ++ idx = tracing_map_add_var(hist_data->map); ++ if (idx < 0) { ++ kfree(var); ++ var = ERR_PTR(-EINVAL); ++ goto out; ++ } ++ ++ var->flags = HIST_FIELD_FL_VAR; ++ var->var.idx = idx; ++ var->var.hist_data = var->hist_data = hist_data; ++ var->size = size; ++ var->var.name = kstrdup(name, GFP_KERNEL); ++ var->type = kstrdup(type, GFP_KERNEL); ++ if (!var->var.name || !var->type) { ++ kfree(var->var.name); ++ kfree(var->type); ++ kfree(var); ++ var = ERR_PTR(-ENOMEM); ++ } ++ out: ++ return var; ++} ++ ++static struct field_var *create_field_var(struct hist_trigger_data *hist_data, ++ struct trace_event_file *file, ++ char *field_name) ++{ ++ struct hist_field *val = NULL, *var = NULL; ++ unsigned long flags = HIST_FIELD_FL_VAR; ++ struct field_var *field_var; ++ int ret = 0; ++ ++ if (hist_data->n_field_vars >= SYNTH_FIELDS_MAX) { ++ ret = -EINVAL; ++ goto err; ++ } ++ ++ val = parse_atom(hist_data, file, field_name, &flags, NULL); ++ if (IS_ERR(val)) { ++ ret = PTR_ERR(val); ++ goto err; ++ } ++ ++ var = create_var(hist_data, file, field_name, val->size, val->type); ++ if (IS_ERR(var)) { ++ kfree(val); ++ ret = PTR_ERR(var); ++ goto err; ++ } ++ ++ field_var = kzalloc(sizeof(struct field_var), GFP_KERNEL); ++ if (!field_var) { ++ kfree(val); ++ kfree(var); ++ ret = -ENOMEM; ++ goto err; ++ } ++ ++ field_var->var = var; ++ field_var->val = val; ++ out: ++ return field_var; ++ err: ++ field_var = ERR_PTR(ret); ++ goto out; ++} ++ ++/** ++ * create_target_field_var - Automatically create a variable for a field ++ * @target_hist_data: The target hist trigger ++ * @subsys_name: Optional subsystem name ++ * @event_name: Optional event name ++ * @var_name: The name of the field (and the resulting variable) ++ * ++ * Hist trigger actions fetch data from variables, not directly from ++ * events. However, for convenience, users are allowed to directly ++ * specify an event field in an action, which will be automatically ++ * converted into a variable on their behalf. ++ ++ * This function creates a field variable with the name var_name on ++ * the hist trigger currently being defined on the target event. If ++ * subsys_name and event_name are specified, this function simply ++ * verifies that they do in fact match the target event subsystem and ++ * event name. ++ * ++ * Return: The variable created for the field. ++ */ ++struct field_var * ++create_target_field_var(struct hist_trigger_data *target_hist_data, ++ char *subsys_name, char *event_name, char *var_name) ++{ ++ struct trace_event_file *file = target_hist_data->event_file; ++ ++ if (subsys_name) { ++ struct trace_event_call *call; ++ ++ if (!event_name) ++ return NULL; ++ ++ call = file->event_call; ++ ++ if (strcmp(subsys_name, call->class->system) != 0) ++ return NULL; ++ ++ if (strcmp(event_name, trace_event_name(call)) != 0) ++ return NULL; ++ } ++ ++ return create_field_var(target_hist_data, file, var_name); ++} ++ ++static void destroy_field_var(struct field_var *field_var) ++{ ++ if (!field_var) ++ return; ++ ++ destroy_hist_field(field_var->var, 0); ++ destroy_hist_field(field_var->val, 0); ++ ++ kfree(field_var); ++} ++ ++static void destroy_field_vars(struct hist_trigger_data *hist_data) ++{ ++ unsigned int i; ++ ++ for (i = 0; i < hist_data->n_field_vars; i++) ++ destroy_field_var(hist_data->field_vars[i]); ++} ++ ++void save_field_var(struct hist_trigger_data *hist_data, ++ struct field_var *field_var) ++{ ++ hist_data->field_vars[hist_data->n_field_vars++] = field_var; ++ ++ if (field_var->val->flags & HIST_FIELD_FL_STRING) ++ hist_data->n_field_var_str++; ++} ++ + static int create_hitcount_val(struct hist_trigger_data *hist_data) + { + hist_data->fields[HITCOUNT_IDX] = +@@ -2928,6 +3426,16 @@ static int create_actions(struct hist_tr + return ret; + } + ++static void destroy_field_var_hists(struct hist_trigger_data *hist_data) ++{ ++ unsigned int i; ++ ++ for (i = 0; i < hist_data->n_field_var_hists; i++) { ++ kfree(hist_data->field_var_hists[i]->cmd); ++ kfree(hist_data->field_var_hists[i]); ++ } ++} ++ + static void destroy_hist_data(struct hist_trigger_data *hist_data) + { + if (!hist_data) +@@ -2938,6 +3446,8 @@ static void destroy_hist_data(struct his + tracing_map_destroy(hist_data->map); + + destroy_actions(hist_data); ++ destroy_field_vars(hist_data); ++ destroy_field_var_hists(hist_data); + + kfree(hist_data); + } +@@ -3074,6 +3584,8 @@ static void hist_trigger_elt_update(stru + tracing_map_set_var(elt, var_idx, hist_val); + } + } ++ ++ update_field_vars(hist_data, elt, rbe, rec); + } + + static inline void add_to_key(char *compound_key, void *key, +@@ -3520,6 +4032,21 @@ static int event_hist_trigger_init(struc + return 0; + } + ++static void unregister_field_var_hists(struct hist_trigger_data *hist_data) ++{ ++ struct trace_event_file *file; ++ unsigned int i; ++ char *cmd; ++ int ret; ++ ++ for (i = 0; i < hist_data->n_field_var_hists; i++) { ++ file = hist_data->field_var_hists[i]->hist_data->event_file; ++ cmd = hist_data->field_var_hists[i]->cmd; ++ ret = event_hist_trigger_func(&trigger_hist_cmd, file, ++ "!hist", "hist", cmd); ++ } ++} ++ + static void event_hist_trigger_free(struct event_trigger_ops *ops, + struct event_trigger_data *data) + { +@@ -3537,6 +4064,8 @@ static void event_hist_trigger_free(stru + + remove_hist_vars(hist_data); + ++ unregister_field_var_hists(hist_data); ++ + destroy_hist_data(hist_data); + } + } diff --git a/patches/features/all/rt/0026-hrtimer-Add-clock-bases-and-hrtimer-mode-for-soft-ir.patch b/patches/features/all/rt/0026-hrtimer-Add-clock-bases-and-hrtimer-mode-for-soft-ir.patch new file mode 100644 index 00000000000..a45d0e9ecaa --- /dev/null +++ b/patches/features/all/rt/0026-hrtimer-Add-clock-bases-and-hrtimer-mode-for-soft-ir.patch @@ -0,0 +1,109 @@ +From: Anna-Maria Gleixner +Date: Wed, 20 Dec 2017 17:13:15 +0100 +Subject: [PATCH 26/29] hrtimer: Add clock bases and hrtimer mode for soft irq + context +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +hrtimer callback functions are always executed in hard interrupt +context. Users of hrtimer which need their timer function to be executed +in soft interrupt context, make use of tasklets to get the proper context. + +Add additional hrtimer clock bases for timers which must expire in softirq +context, so the detour via the tasklet can be avoided. This is also +required for RT, where the majority of hrtimer is moved into softirq +hrtimer context. + +The selection of the expiry mode happens via a mode bit. Introduce +HRTIMER_MODE_SOFT and the matching combinations with the ABS/REL/PINNED +bits and update the decoding of hrtimer_mode in tracepoints. + +Signed-off-by: Anna-Maria Gleixner +Signed-off-by: Sebastian Andrzej Siewior +--- + include/linux/hrtimer.h | 14 ++++++++++++++ + include/trace/events/timer.h | 6 +++++- + kernel/time/hrtimer.c | 20 ++++++++++++++++++++ + 3 files changed, 39 insertions(+), 1 deletion(-) + +--- a/include/linux/hrtimer.h ++++ b/include/linux/hrtimer.h +@@ -33,14 +33,24 @@ struct hrtimer_cpu_base; + * HRTIMER_MODE_REL - Time value is relative to now + * HRTIMER_MODE_PINNED - Timer is bound to CPU (is only considered + * when starting the timer) ++ * HRTIMER_MODE_SOFT - Timer callback function will be executed in ++ * soft irq context + */ + enum hrtimer_mode { + HRTIMER_MODE_ABS = 0x00, + HRTIMER_MODE_REL = 0x01, + HRTIMER_MODE_PINNED = 0x02, ++ HRTIMER_MODE_SOFT = 0x04, + + HRTIMER_MODE_ABS_PINNED = HRTIMER_MODE_ABS | HRTIMER_MODE_PINNED, + HRTIMER_MODE_REL_PINNED = HRTIMER_MODE_REL | HRTIMER_MODE_PINNED, ++ ++ HRTIMER_MODE_ABS_SOFT = HRTIMER_MODE_ABS | HRTIMER_MODE_SOFT, ++ HRTIMER_MODE_REL_SOFT = HRTIMER_MODE_REL | HRTIMER_MODE_SOFT, ++ ++ HRTIMER_MODE_ABS_PINNED_SOFT = HRTIMER_MODE_ABS_PINNED | HRTIMER_MODE_SOFT, ++ HRTIMER_MODE_REL_PINNED_SOFT = HRTIMER_MODE_REL_PINNED | HRTIMER_MODE_SOFT, ++ + }; + + /* +@@ -151,6 +161,10 @@ enum hrtimer_base_type { + HRTIMER_BASE_REALTIME, + HRTIMER_BASE_BOOTTIME, + HRTIMER_BASE_TAI, ++ HRTIMER_BASE_MONOTONIC_SOFT, ++ HRTIMER_BASE_REALTIME_SOFT, ++ HRTIMER_BASE_BOOTTIME_SOFT, ++ HRTIMER_BASE_TAI_SOFT, + HRTIMER_MAX_CLOCK_BASES, + }; + +--- a/include/trace/events/timer.h ++++ b/include/trace/events/timer.h +@@ -148,7 +148,11 @@ DEFINE_EVENT(timer_class, timer_cancel, + { HRTIMER_MODE_ABS, "ABS" }, \ + { HRTIMER_MODE_REL, "REL" }, \ + { HRTIMER_MODE_ABS_PINNED, "ABS|PINNED" }, \ +- { HRTIMER_MODE_REL_PINNED, "REL|PINNED" }) ++ { HRTIMER_MODE_REL_PINNED, "REL|PINNED" }, \ ++ { HRTIMER_MODE_ABS_SOFT, "ABS|SOFT" }, \ ++ { HRTIMER_MODE_REL_SOFT, "REL|SOFT" }, \ ++ { HRTIMER_MODE_ABS_PINNED_SOFT, "ABS|PINNED|SOFT" }, \ ++ { HRTIMER_MODE_REL_PINNED_SOFT, "REL|PINNED|SOFT" }) + + /** + * hrtimer_init - called when the hrtimer is initialized +--- a/kernel/time/hrtimer.c ++++ b/kernel/time/hrtimer.c +@@ -92,6 +92,26 @@ DEFINE_PER_CPU(struct hrtimer_cpu_base, + .clockid = CLOCK_TAI, + .get_time = &ktime_get_clocktai, + }, ++ { ++ .index = HRTIMER_BASE_MONOTONIC_SOFT, ++ .clockid = CLOCK_MONOTONIC, ++ .get_time = &ktime_get, ++ }, ++ { ++ .index = HRTIMER_BASE_REALTIME_SOFT, ++ .clockid = CLOCK_REALTIME, ++ .get_time = &ktime_get_real, ++ }, ++ { ++ .index = HRTIMER_BASE_BOOTTIME_SOFT, ++ .clockid = CLOCK_BOOTTIME, ++ .get_time = &ktime_get_boottime, ++ }, ++ { ++ .index = HRTIMER_BASE_TAI_SOFT, ++ .clockid = CLOCK_TAI, ++ .get_time = &ktime_get_clocktai, ++ }, + } + }; + diff --git a/patches/features/all/rt/0026-tracing-Add-onmatch-hist-trigger-action-support.patch b/patches/features/all/rt/0026-tracing-Add-onmatch-hist-trigger-action-support.patch new file mode 100644 index 00000000000..633cd99f1ef --- /dev/null +++ b/patches/features/all/rt/0026-tracing-Add-onmatch-hist-trigger-action-support.patch @@ -0,0 +1,684 @@ +From: Tom Zanussi +Date: Mon, 15 Jan 2018 20:52:00 -0600 +Subject: [PATCH 26/37] tracing: Add 'onmatch' hist trigger action support +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Add an 'onmatch(matching.event).(param list)' +hist trigger action which is invoked with the set of variables or +event fields named in the 'param list'. The result is the generation +of a synthetic event that consists of the values contained in those +variables and/or fields at the time the invoking event was hit. + +As an example the below defines a simple synthetic event using a +variable defined on the sched_wakeup_new event, and shows the event +definition with unresolved fields, since the sched_wakeup_new event +with the testpid variable hasn't been defined yet: + + # echo 'wakeup_new_test pid_t pid; int prio' >> \ + /sys/kernel/debug/tracing/synthetic_events + + # cat /sys/kernel/debug/tracing/synthetic_events + wakeup_new_test pid_t pid; int prio + +The following hist trigger both defines a testpid variable and +specifies an onmatch() trace action that uses that variable along with +a non-variable field to generate a wakeup_new_test synthetic event +whenever a sched_wakeup_new event occurs, which because of the 'if +comm == "cyclictest"' filter only happens when the executable is +cyclictest: + + # echo 'hist:testpid=pid:keys=$testpid:\ + onmatch(sched.sched_wakeup_new).wakeup_new_test($testpid, prio) \ + if comm=="cyclictest"' >> \ + /sys/kernel/debug/tracing/events/sched/sched_wakeup_new/trigger + +Creating and displaying a histogram based on those events is now just +a matter of using the fields and new synthetic event in the +tracing/events/synthetic directory, as usual: + + # echo 'hist:keys=pid,prio:sort=pid,prio' >> \ + /sys/kernel/debug/tracing/events/synthetic/wakeup_new_test/trigger + +Signed-off-by: Tom Zanussi +Signed-off-by: Rajvi Jingar +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/trace/trace_events_hist.c | 488 +++++++++++++++++++++++++++++++++++++-- + 1 file changed, 475 insertions(+), 13 deletions(-) + +--- a/kernel/trace/trace_events_hist.c ++++ b/kernel/trace/trace_events_hist.c +@@ -285,6 +285,8 @@ struct hist_trigger_data { + struct action_data *actions[HIST_ACTIONS_MAX]; + unsigned int n_actions; + ++ struct hist_field *synth_var_refs[SYNTH_FIELDS_MAX]; ++ unsigned int n_synth_var_refs; + struct field_var *field_vars[SYNTH_FIELDS_MAX]; + unsigned int n_field_vars; + unsigned int n_field_var_str; +@@ -321,7 +323,18 @@ typedef void (*action_fn_t) (struct hist + + struct action_data { + action_fn_t fn; +- unsigned int var_ref_idx; ++ unsigned int n_params; ++ char *params[SYNTH_FIELDS_MAX]; ++ ++ union { ++ struct { ++ unsigned int var_ref_idx; ++ char *match_event; ++ char *match_event_system; ++ char *synth_event_name; ++ struct synth_event *synth_event; ++ } onmatch; ++ }; + }; + + static LIST_HEAD(synth_event_list); +@@ -887,6 +900,21 @@ static struct synth_event *alloc_synth_e + return event; + } + ++static void action_trace(struct hist_trigger_data *hist_data, ++ struct tracing_map_elt *elt, void *rec, ++ struct ring_buffer_event *rbe, ++ struct action_data *data, u64 *var_ref_vals) ++{ ++ struct synth_event *event = data->onmatch.synth_event; ++ ++ trace_synth(event, var_ref_vals, data->onmatch.var_ref_idx); ++} ++ ++struct hist_var_data { ++ struct list_head list; ++ struct hist_trigger_data *hist_data; ++}; ++ + static void add_or_delete_synth_event(struct synth_event *event, int delete) + { + if (delete) +@@ -1124,11 +1152,6 @@ static u64 hist_field_timestamp(struct h + return ts; + } + +-struct hist_var_data { +- struct list_head list; +- struct hist_trigger_data *hist_data; +-}; +- + static struct hist_field * + check_field_for_var_ref(struct hist_field *hist_field, + struct hist_trigger_data *var_data, +@@ -1194,6 +1217,14 @@ static struct hist_field *find_var_ref(s + return found; + } + ++ for (i = 0; i < hist_data->n_synth_var_refs; i++) { ++ hist_field = hist_data->synth_var_refs[i]; ++ found = check_field_for_var_refs(hist_data, hist_field, ++ var_data, var_idx, 0); ++ if (found) ++ return found; ++ } ++ + return found; + } + +@@ -1422,6 +1453,37 @@ static struct hist_field *find_file_var( + return NULL; + } + ++static struct hist_field * ++find_match_var(struct hist_trigger_data *hist_data, char *var_name) ++{ ++ struct trace_array *tr = hist_data->event_file->tr; ++ struct hist_field *hist_field, *found = NULL; ++ struct trace_event_file *file; ++ unsigned int i; ++ ++ for (i = 0; i < hist_data->n_actions; i++) { ++ struct action_data *data = hist_data->actions[i]; ++ ++ if (data->fn == action_trace) { ++ char *system = data->onmatch.match_event_system; ++ char *event_name = data->onmatch.match_event; ++ ++ file = find_var_file(tr, system, event_name, var_name); ++ if (!file) ++ continue; ++ hist_field = find_file_var(file, var_name); ++ if (hist_field) { ++ if (found) { ++ return ERR_PTR(-EINVAL); ++ } ++ ++ found = hist_field; ++ } ++ } ++ } ++ return found; ++} ++ + static struct hist_field *find_event_var(struct hist_trigger_data *hist_data, + char *system, + char *event_name, +@@ -1431,6 +1493,14 @@ static struct hist_field *find_event_var + struct hist_field *hist_field = NULL; + struct trace_event_file *file; + ++ if (!system || !event_name) { ++ hist_field = find_match_var(hist_data, var_name); ++ if (IS_ERR(hist_field)) ++ return NULL; ++ if (hist_field) ++ return hist_field; ++ } ++ + file = find_var_file(tr, system, event_name, var_name); + if (!file) + return NULL; +@@ -1622,11 +1692,21 @@ static void destroy_hist_trigger_attrs(s + + static int parse_action(char *str, struct hist_trigger_attrs *attrs) + { +- int ret = 0; ++ int ret = -EINVAL; + + if (attrs->n_actions >= HIST_ACTIONS_MAX) + return ret; + ++ if ((strncmp(str, "onmatch(", strlen("onmatch(")) == 0)) { ++ attrs->action_str[attrs->n_actions] = kstrdup(str, GFP_KERNEL); ++ if (!attrs->action_str[attrs->n_actions]) { ++ ret = -ENOMEM; ++ return ret; ++ } ++ attrs->n_actions++; ++ ret = 0; ++ } ++ + return ret; + } + +@@ -2635,7 +2715,7 @@ find_synthetic_field_var(struct hist_tri + * + * Return: The variable created for the field. + */ +-struct hist_field * ++static struct hist_field * + create_field_var_hist(struct hist_trigger_data *target_hist_data, + char *subsys_name, char *event_name, char *field_name) + { +@@ -2748,7 +2828,7 @@ create_field_var_hist(struct hist_trigge + return event_var; + } + +-struct hist_field * ++static struct hist_field * + find_target_event_var(struct hist_trigger_data *hist_data, + char *subsys_name, char *event_name, char *var_name) + { +@@ -2919,7 +2999,7 @@ static struct field_var *create_field_va + * + * Return: The variable created for the field. + */ +-struct field_var * ++static struct field_var * + create_target_field_var(struct hist_trigger_data *target_hist_data, + char *subsys_name, char *event_name, char *var_name) + { +@@ -2943,6 +3023,27 @@ create_target_field_var(struct hist_trig + return create_field_var(target_hist_data, file, var_name); + } + ++static void onmatch_destroy(struct action_data *data) ++{ ++ unsigned int i; ++ ++ mutex_lock(&synth_event_mutex); ++ ++ kfree(data->onmatch.match_event); ++ kfree(data->onmatch.match_event_system); ++ kfree(data->onmatch.synth_event_name); ++ ++ for (i = 0; i < data->n_params; i++) ++ kfree(data->params[i]); ++ ++ if (data->onmatch.synth_event) ++ data->onmatch.synth_event->ref--; ++ ++ kfree(data); ++ ++ mutex_unlock(&synth_event_mutex); ++} ++ + static void destroy_field_var(struct field_var *field_var) + { + if (!field_var) +@@ -2962,8 +3063,8 @@ static void destroy_field_vars(struct hi + destroy_field_var(hist_data->field_vars[i]); + } + +-void save_field_var(struct hist_trigger_data *hist_data, +- struct field_var *field_var) ++static void save_field_var(struct hist_trigger_data *hist_data, ++ struct field_var *field_var) + { + hist_data->field_vars[hist_data->n_field_vars++] = field_var; + +@@ -2971,6 +3072,304 @@ void save_field_var(struct hist_trigger_ + hist_data->n_field_var_str++; + } + ++ ++static void destroy_synth_var_refs(struct hist_trigger_data *hist_data) ++{ ++ unsigned int i; ++ ++ for (i = 0; i < hist_data->n_synth_var_refs; i++) ++ destroy_hist_field(hist_data->synth_var_refs[i], 0); ++} ++ ++static void save_synth_var_ref(struct hist_trigger_data *hist_data, ++ struct hist_field *var_ref) ++{ ++ hist_data->synth_var_refs[hist_data->n_synth_var_refs++] = var_ref; ++ ++ hist_data->var_refs[hist_data->n_var_refs] = var_ref; ++ var_ref->var_ref_idx = hist_data->n_var_refs++; ++} ++ ++static int check_synth_field(struct synth_event *event, ++ struct hist_field *hist_field, ++ unsigned int field_pos) ++{ ++ struct synth_field *field; ++ ++ if (field_pos >= event->n_fields) ++ return -EINVAL; ++ ++ field = event->fields[field_pos]; ++ ++ if (strcmp(field->type, hist_field->type) != 0) ++ return -EINVAL; ++ ++ return 0; ++} ++ ++static int parse_action_params(char *params, struct action_data *data) ++{ ++ char *param, *saved_param; ++ int ret = 0; ++ ++ while (params) { ++ if (data->n_params >= SYNTH_FIELDS_MAX) ++ goto out; ++ ++ param = strsep(¶ms, ","); ++ if (!param) { ++ ret = -EINVAL; ++ goto out; ++ } ++ ++ param = strstrip(param); ++ if (strlen(param) < 2) { ++ ret = -EINVAL; ++ goto out; ++ } ++ ++ saved_param = kstrdup(param, GFP_KERNEL); ++ if (!saved_param) { ++ ret = -ENOMEM; ++ goto out; ++ } ++ ++ data->params[data->n_params++] = saved_param; ++ } ++ out: ++ return ret; ++} ++ ++static struct hist_field * ++onmatch_find_var(struct hist_trigger_data *hist_data, struct action_data *data, ++ char *system, char *event, char *var) ++{ ++ struct hist_field *hist_field; ++ ++ var++; /* skip '$' */ ++ ++ hist_field = find_target_event_var(hist_data, system, event, var); ++ if (!hist_field) { ++ if (!system) { ++ system = data->onmatch.match_event_system; ++ event = data->onmatch.match_event; ++ } ++ ++ hist_field = find_event_var(hist_data, system, event, var); ++ } ++ ++ return hist_field; ++} ++ ++static struct hist_field * ++onmatch_create_field_var(struct hist_trigger_data *hist_data, ++ struct action_data *data, char *system, ++ char *event, char *var) ++{ ++ struct hist_field *hist_field = NULL; ++ struct field_var *field_var; ++ ++ /* ++ * First try to create a field var on the target event (the ++ * currently being defined). This will create a variable for ++ * unqualified fields on the target event, or if qualified, ++ * target fields that have qualified names matching the target. ++ */ ++ field_var = create_target_field_var(hist_data, system, event, var); ++ ++ if (field_var && !IS_ERR(field_var)) { ++ save_field_var(hist_data, field_var); ++ hist_field = field_var->var; ++ } else { ++ field_var = NULL; ++ /* ++ * If no explicit system.event is specfied, default to ++ * looking for fields on the onmatch(system.event.xxx) ++ * event. ++ */ ++ if (!system) { ++ system = data->onmatch.match_event_system; ++ event = data->onmatch.match_event; ++ } ++ ++ /* ++ * At this point, we're looking at a field on another ++ * event. Because we can't modify a hist trigger on ++ * another event to add a variable for a field, we need ++ * to create a new trigger on that event and create the ++ * variable at the same time. ++ */ ++ hist_field = create_field_var_hist(hist_data, system, event, var); ++ if (IS_ERR(hist_field)) ++ goto free; ++ } ++ out: ++ return hist_field; ++ free: ++ destroy_field_var(field_var); ++ hist_field = NULL; ++ goto out; ++} ++ ++static int onmatch_create(struct hist_trigger_data *hist_data, ++ struct trace_event_file *file, ++ struct action_data *data) ++{ ++ char *event_name, *param, *system = NULL; ++ struct hist_field *hist_field, *var_ref; ++ unsigned int i, var_ref_idx; ++ unsigned int field_pos = 0; ++ struct synth_event *event; ++ int ret = 0; ++ ++ mutex_lock(&synth_event_mutex); ++ event = find_synth_event(data->onmatch.synth_event_name); ++ if (!event) { ++ mutex_unlock(&synth_event_mutex); ++ return -EINVAL; ++ } ++ event->ref++; ++ mutex_unlock(&synth_event_mutex); ++ ++ var_ref_idx = hist_data->n_var_refs; ++ ++ for (i = 0; i < data->n_params; i++) { ++ char *p; ++ ++ p = param = kstrdup(data->params[i], GFP_KERNEL); ++ if (!param) { ++ ret = -ENOMEM; ++ goto err; ++ } ++ ++ system = strsep(¶m, "."); ++ if (!param) { ++ param = (char *)system; ++ system = event_name = NULL; ++ } else { ++ event_name = strsep(¶m, "."); ++ if (!param) { ++ kfree(p); ++ ret = -EINVAL; ++ goto err; ++ } ++ } ++ ++ if (param[0] == '$') ++ hist_field = onmatch_find_var(hist_data, data, system, ++ event_name, param); ++ else ++ hist_field = onmatch_create_field_var(hist_data, data, ++ system, ++ event_name, ++ param); ++ ++ if (!hist_field) { ++ kfree(p); ++ ret = -EINVAL; ++ goto err; ++ } ++ ++ if (check_synth_field(event, hist_field, field_pos) == 0) { ++ var_ref = create_var_ref(hist_field, system, event_name); ++ if (!var_ref) { ++ kfree(p); ++ ret = -ENOMEM; ++ goto err; ++ } ++ ++ save_synth_var_ref(hist_data, var_ref); ++ field_pos++; ++ kfree(p); ++ continue; ++ } ++ ++ kfree(p); ++ ret = -EINVAL; ++ goto err; ++ } ++ ++ if (field_pos != event->n_fields) { ++ ret = -EINVAL; ++ goto err; ++ } ++ ++ data->fn = action_trace; ++ data->onmatch.synth_event = event; ++ data->onmatch.var_ref_idx = var_ref_idx; ++ out: ++ return ret; ++ err: ++ mutex_lock(&synth_event_mutex); ++ event->ref--; ++ mutex_unlock(&synth_event_mutex); ++ ++ goto out; ++} ++ ++static struct action_data *onmatch_parse(struct trace_array *tr, char *str) ++{ ++ char *match_event, *match_event_system; ++ char *synth_event_name, *params; ++ struct action_data *data; ++ int ret = -EINVAL; ++ ++ data = kzalloc(sizeof(*data), GFP_KERNEL); ++ if (!data) ++ return ERR_PTR(-ENOMEM); ++ ++ match_event = strsep(&str, ")"); ++ if (!match_event || !str) ++ goto free; ++ ++ match_event_system = strsep(&match_event, "."); ++ if (!match_event) ++ goto free; ++ ++ if (IS_ERR(event_file(tr, match_event_system, match_event))) ++ goto free; ++ ++ data->onmatch.match_event = kstrdup(match_event, GFP_KERNEL); ++ if (!data->onmatch.match_event) { ++ ret = -ENOMEM; ++ goto free; ++ } ++ ++ data->onmatch.match_event_system = kstrdup(match_event_system, GFP_KERNEL); ++ if (!data->onmatch.match_event_system) { ++ ret = -ENOMEM; ++ goto free; ++ } ++ ++ strsep(&str, "."); ++ if (!str) ++ goto free; ++ ++ synth_event_name = strsep(&str, "("); ++ if (!synth_event_name || !str) ++ goto free; ++ ++ data->onmatch.synth_event_name = kstrdup(synth_event_name, GFP_KERNEL); ++ if (!data->onmatch.synth_event_name) { ++ ret = -ENOMEM; ++ goto free; ++ } ++ ++ params = strsep(&str, ")"); ++ if (!params || !str || (str && strlen(str))) ++ goto free; ++ ++ ret = parse_action_params(params, data); ++ if (ret) ++ goto free; ++ out: ++ return data; ++ free: ++ onmatch_destroy(data); ++ data = ERR_PTR(ret); ++ goto out; ++} ++ + static int create_hitcount_val(struct hist_trigger_data *hist_data) + { + hist_data->fields[HITCOUNT_IDX] = +@@ -3395,18 +3794,39 @@ static void destroy_actions(struct hist_ + for (i = 0; i < hist_data->n_actions; i++) { + struct action_data *data = hist_data->actions[i]; + +- kfree(data); ++ if (data->fn == action_trace) ++ onmatch_destroy(data); ++ else ++ kfree(data); + } + } + + static int parse_actions(struct hist_trigger_data *hist_data) + { ++ struct trace_array *tr = hist_data->event_file->tr; ++ struct action_data *data; + unsigned int i; + int ret = 0; + char *str; + + for (i = 0; i < hist_data->attrs->n_actions; i++) { + str = hist_data->attrs->action_str[i]; ++ ++ if (strncmp(str, "onmatch(", strlen("onmatch(")) == 0) { ++ char *action_str = str + strlen("onmatch("); ++ ++ data = onmatch_parse(tr, action_str); ++ if (IS_ERR(data)) { ++ ret = PTR_ERR(data); ++ break; ++ } ++ data->fn = action_trace; ++ } else { ++ ret = -EINVAL; ++ break; ++ } ++ ++ hist_data->actions[hist_data->n_actions++] = data; + } + + return ret; +@@ -3421,11 +3841,50 @@ static int create_actions(struct hist_tr + + for (i = 0; i < hist_data->attrs->n_actions; i++) { + data = hist_data->actions[i]; ++ ++ if (data->fn == action_trace) { ++ ret = onmatch_create(hist_data, file, data); ++ if (ret) ++ return ret; ++ } + } + + return ret; + } + ++static void print_onmatch_spec(struct seq_file *m, ++ struct hist_trigger_data *hist_data, ++ struct action_data *data) ++{ ++ unsigned int i; ++ ++ seq_printf(m, ":onmatch(%s.%s).", data->onmatch.match_event_system, ++ data->onmatch.match_event); ++ ++ seq_printf(m, "%s(", data->onmatch.synth_event->name); ++ ++ for (i = 0; i < data->n_params; i++) { ++ if (i) ++ seq_puts(m, ","); ++ seq_printf(m, "%s", data->params[i]); ++ } ++ ++ seq_puts(m, ")"); ++} ++ ++static void print_actions_spec(struct seq_file *m, ++ struct hist_trigger_data *hist_data) ++{ ++ unsigned int i; ++ ++ for (i = 0; i < hist_data->n_actions; i++) { ++ struct action_data *data = hist_data->actions[i]; ++ ++ if (data->fn == action_trace) ++ print_onmatch_spec(m, hist_data, data); ++ } ++} ++ + static void destroy_field_var_hists(struct hist_trigger_data *hist_data) + { + unsigned int i; +@@ -3448,6 +3907,7 @@ static void destroy_hist_data(struct his + destroy_actions(hist_data); + destroy_field_vars(hist_data); + destroy_field_var_hists(hist_data); ++ destroy_synth_var_refs(hist_data); + + kfree(hist_data); + } +@@ -4006,6 +4466,8 @@ static int event_hist_trigger_print(stru + } + seq_printf(m, ":size=%u", (1 << hist_data->map->map_bits)); + ++ print_actions_spec(m, hist_data); ++ + if (data->filter_str) + seq_printf(m, " if %s", data->filter_str); + diff --git a/patches/features/all/rt/0027-hrtimer-Prepare-handling-of-hard-and-softirq-based-h.patch b/patches/features/all/rt/0027-hrtimer-Prepare-handling-of-hard-and-softirq-based-h.patch new file mode 100644 index 00000000000..0b3cdabff5f --- /dev/null +++ b/patches/features/all/rt/0027-hrtimer-Prepare-handling-of-hard-and-softirq-based-h.patch @@ -0,0 +1,117 @@ +From: Anna-Maria Gleixner +Date: Wed, 20 Dec 2017 17:13:16 +0100 +Subject: [PATCH 27/29] hrtimer: Prepare handling of hard and softirq based + hrtimers +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +The softirq based hrtimer can utilize most of the existing hrtimers +functions, but need to operate on a different data set. + +Add an active_mask argument to various functions so the hard and soft bases +can be selected. Fixup the existing callers and hand in the ACTIVE_HARD +mask. + +Signed-off-by: Anna-Maria Gleixner +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/time/hrtimer.c | 38 +++++++++++++++++++++++++++++--------- + 1 file changed, 29 insertions(+), 9 deletions(-) + +--- a/kernel/time/hrtimer.c ++++ b/kernel/time/hrtimer.c +@@ -60,6 +60,15 @@ + #include "tick-internal.h" + + /* ++ * Masks for selecting the soft and hard context timers from ++ * cpu_base->active ++ */ ++#define MASK_SHIFT (HRTIMER_BASE_MONOTONIC_SOFT) ++#define HRTIMER_ACTIVE_HARD ((1U << MASK_SHIFT) - 1) ++#define HRTIMER_ACTIVE_SOFT (HRTIMER_ACTIVE_HARD << MASK_SHIFT) ++#define HRTIMER_ACTIVE_ALL (HRTIMER_ACTIVE_SOFT | HRTIMER_ACTIVE_HARD) ++ ++/* + * The timer bases: + * + * There are more clockids than hrtimer bases. Thus, we index +@@ -508,13 +517,24 @@ static ktime_t __hrtimer_next_event_base + return expires_next; + } + +-static ktime_t __hrtimer_get_next_event(struct hrtimer_cpu_base *cpu_base) ++/* ++ * Recomputes cpu_base::*next_timer and returns the earliest expires_next but ++ * does not set cpu_base::*expires_next, that is done by hrtimer_reprogram. ++ * ++ * @active_mask must be one of: ++ * - HRTIMER_ACTIVE, ++ * - HRTIMER_ACTIVE_SOFT, or ++ * - HRTIMER_ACTIVE_HARD. ++ */ ++static ktime_t __hrtimer_get_next_event(struct hrtimer_cpu_base *cpu_base, ++ unsigned int active_mask) + { +- unsigned int active = cpu_base->active_bases; ++ unsigned int active; + ktime_t expires_next = KTIME_MAX; + + cpu_base->next_timer = NULL; + ++ active = cpu_base->active_bases & active_mask; + expires_next = __hrtimer_next_event_base(cpu_base, active, expires_next); + + return expires_next; +@@ -555,7 +575,7 @@ hrtimer_force_reprogram(struct hrtimer_c + { + ktime_t expires_next; + +- expires_next = __hrtimer_get_next_event(cpu_base); ++ expires_next = __hrtimer_get_next_event(cpu_base, HRTIMER_ACTIVE_HARD); + + if (skip_equal && expires_next == cpu_base->expires_next) + return; +@@ -1078,7 +1098,7 @@ u64 hrtimer_get_next_event(void) + raw_spin_lock_irqsave(&cpu_base->lock, flags); + + if (!__hrtimer_hres_active(cpu_base)) +- expires = __hrtimer_get_next_event(cpu_base); ++ expires = __hrtimer_get_next_event(cpu_base, HRTIMER_ACTIVE_HARD); + + raw_spin_unlock_irqrestore(&cpu_base->lock, flags); + +@@ -1252,10 +1272,10 @@ static void __run_hrtimer(struct hrtimer + } + + static void __hrtimer_run_queues(struct hrtimer_cpu_base *cpu_base, ktime_t now, +- unsigned long flags) ++ unsigned long flags, unsigned int active_mask) + { + struct hrtimer_clock_base *base; +- unsigned int active = cpu_base->active_bases; ++ unsigned int active = cpu_base->active_bases & active_mask; + + for_each_active_base(base, cpu_base, active) { + struct timerqueue_node *node; +@@ -1318,10 +1338,10 @@ void hrtimer_interrupt(struct clock_even + */ + cpu_base->expires_next = KTIME_MAX; + +- __hrtimer_run_queues(cpu_base, now, flags); ++ __hrtimer_run_queues(cpu_base, now, flags, HRTIMER_ACTIVE_HARD); + + /* Reevaluate the clock bases for the next expiry */ +- expires_next = __hrtimer_get_next_event(cpu_base); ++ expires_next = __hrtimer_get_next_event(cpu_base, HRTIMER_ACTIVE_HARD); + /* + * Store the new expiry value so the migration code can verify + * against it. +@@ -1425,7 +1445,7 @@ void hrtimer_run_queues(void) + + raw_spin_lock_irqsave(&cpu_base->lock, flags); + now = hrtimer_update_base(cpu_base); +- __hrtimer_run_queues(cpu_base, now, flags); ++ __hrtimer_run_queues(cpu_base, now, flags, HRTIMER_ACTIVE_HARD); + raw_spin_unlock_irqrestore(&cpu_base->lock, flags); + } + diff --git a/patches/features/all/rt/0027-tracing-Add-onmax-hist-trigger-action-support.patch b/patches/features/all/rt/0027-tracing-Add-onmax-hist-trigger-action-support.patch new file mode 100644 index 00000000000..8544f9198c6 --- /dev/null +++ b/patches/features/all/rt/0027-tracing-Add-onmax-hist-trigger-action-support.patch @@ -0,0 +1,483 @@ +From: Tom Zanussi +Date: Mon, 15 Jan 2018 20:52:01 -0600 +Subject: [PATCH 27/37] tracing: Add 'onmax' hist trigger action support +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Add an 'onmax(var).save(field,...)' hist trigger action which is +invoked whenever an event exceeds the current maximum. + +The end result is that the trace event fields or variables specified +as the onmax.save() params will be saved if 'var' exceeds the current +maximum for that hist trigger entry. This allows context from the +event that exhibited the new maximum to be saved for later reference. +When the histogram is displayed, additional fields displaying the +saved values will be printed. + +As an example the below defines a couple of hist triggers, one for +sched_wakeup and another for sched_switch, keyed on pid. Whenever a +sched_wakeup occurs, the timestamp is saved in the entry corresponding +to the current pid, and when the scheduler switches back to that pid, +the timestamp difference is calculated. If the resulting latency +exceeds the current maximum latency, the specified save() values are +saved: + + # echo 'hist:keys=pid:ts0=common_timestamp.usecs \ + if comm=="cyclictest"' >> \ + /sys/kernel/debug/tracing/events/sched/sched_wakeup/trigger + + # echo 'hist:keys=next_pid:\ + wakeup_lat=common_timestamp.usecs-$ts0:\ + onmax($wakeup_lat).save(next_comm,prev_pid,prev_prio,prev_comm) \ + if next_comm=="cyclictest"' >> \ + /sys/kernel/debug/tracing/events/sched/sched_switch/trigger + +When the histogram is displayed, the max value and the saved values +corresponding to the max are displayed following the rest of the +fields: + + # cat /sys/kernel/debug/tracing/events/sched/sched_switch/hist + + { next_pid: 3728 } hitcount: 199 \ + max: 123 next_comm: cyclictest prev_pid: 0 \ + prev_prio: 120 prev_comm: swapper/3 + { next_pid: 3730 } hitcount: 1321 \ + max: 15 next_comm: cyclictest prev_pid: 0 \ + prev_prio: 120 prev_comm: swapper/1 + { next_pid: 3729 } hitcount: 1973\ + max: 25 next_comm: cyclictest prev_pid: 0 \ + prev_prio: 120 prev_comm: swapper/0 + + Totals: + Hits: 3493 + Entries: 3 + Dropped: 0 + +Signed-off-by: Tom Zanussi +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/trace/trace_events_hist.c | 331 ++++++++++++++++++++++++++++++++++----- + 1 file changed, 296 insertions(+), 35 deletions(-) + +--- a/kernel/trace/trace_events_hist.c ++++ b/kernel/trace/trace_events_hist.c +@@ -292,6 +292,10 @@ struct hist_trigger_data { + unsigned int n_field_var_str; + struct field_var_hist *field_var_hists[SYNTH_FIELDS_MAX]; + unsigned int n_field_var_hists; ++ ++ struct field_var *max_vars[SYNTH_FIELDS_MAX]; ++ unsigned int n_max_vars; ++ unsigned int n_max_var_str; + }; + + struct synth_field { +@@ -334,6 +338,14 @@ struct action_data { + char *synth_event_name; + struct synth_event *synth_event; + } onmatch; ++ ++ struct { ++ char *var_str; ++ char *fn_name; ++ unsigned int max_var_ref_idx; ++ struct hist_field *max_var; ++ struct hist_field *var; ++ } onmax; + }; + }; + +@@ -1697,7 +1709,8 @@ static int parse_action(char *str, struc + if (attrs->n_actions >= HIST_ACTIONS_MAX) + return ret; + +- if ((strncmp(str, "onmatch(", strlen("onmatch(")) == 0)) { ++ if ((strncmp(str, "onmatch(", strlen("onmatch(")) == 0) || ++ (strncmp(str, "onmax(", strlen("onmax(")) == 0)) { + attrs->action_str[attrs->n_actions] = kstrdup(str, GFP_KERNEL); + if (!attrs->action_str[attrs->n_actions]) { + ret = -ENOMEM; +@@ -1869,7 +1882,7 @@ static int hist_trigger_elt_data_alloc(s + } + } + +- n_str = hist_data->n_field_var_str; ++ n_str = hist_data->n_field_var_str + hist_data->n_max_var_str; + + size = STR_VAR_LEN_MAX; + +@@ -2894,6 +2907,15 @@ static void update_field_vars(struct his + hist_data->n_field_vars, 0); + } + ++static void update_max_vars(struct hist_trigger_data *hist_data, ++ struct tracing_map_elt *elt, ++ struct ring_buffer_event *rbe, ++ void *rec) ++{ ++ __update_field_vars(elt, rbe, rec, hist_data->max_vars, ++ hist_data->n_max_vars, hist_data->n_field_var_str); ++} ++ + static struct hist_field *create_var(struct hist_trigger_data *hist_data, + struct trace_event_file *file, + char *name, int size, const char *type) +@@ -3023,6 +3045,227 @@ create_target_field_var(struct hist_trig + return create_field_var(target_hist_data, file, var_name); + } + ++static void onmax_print(struct seq_file *m, ++ struct hist_trigger_data *hist_data, ++ struct tracing_map_elt *elt, ++ struct action_data *data) ++{ ++ unsigned int i, save_var_idx, max_idx = data->onmax.max_var->var.idx; ++ ++ seq_printf(m, "\n\tmax: %10llu", tracing_map_read_var(elt, max_idx)); ++ ++ for (i = 0; i < hist_data->n_max_vars; i++) { ++ struct hist_field *save_val = hist_data->max_vars[i]->val; ++ struct hist_field *save_var = hist_data->max_vars[i]->var; ++ u64 val; ++ ++ save_var_idx = save_var->var.idx; ++ ++ val = tracing_map_read_var(elt, save_var_idx); ++ ++ if (save_val->flags & HIST_FIELD_FL_STRING) { ++ seq_printf(m, " %s: %-32s", save_var->var.name, ++ (char *)(uintptr_t)(val)); ++ } else ++ seq_printf(m, " %s: %10llu", save_var->var.name, val); ++ } ++} ++ ++static void onmax_save(struct hist_trigger_data *hist_data, ++ struct tracing_map_elt *elt, void *rec, ++ struct ring_buffer_event *rbe, ++ struct action_data *data, u64 *var_ref_vals) ++{ ++ unsigned int max_idx = data->onmax.max_var->var.idx; ++ unsigned int max_var_ref_idx = data->onmax.max_var_ref_idx; ++ ++ u64 var_val, max_val; ++ ++ var_val = var_ref_vals[max_var_ref_idx]; ++ max_val = tracing_map_read_var(elt, max_idx); ++ ++ if (var_val <= max_val) ++ return; ++ ++ tracing_map_set_var(elt, max_idx, var_val); ++ ++ update_max_vars(hist_data, elt, rbe, rec); ++} ++ ++static void onmax_destroy(struct action_data *data) ++{ ++ unsigned int i; ++ ++ destroy_hist_field(data->onmax.max_var, 0); ++ destroy_hist_field(data->onmax.var, 0); ++ ++ kfree(data->onmax.var_str); ++ kfree(data->onmax.fn_name); ++ ++ for (i = 0; i < data->n_params; i++) ++ kfree(data->params[i]); ++ ++ kfree(data); ++} ++ ++static int onmax_create(struct hist_trigger_data *hist_data, ++ struct action_data *data) ++{ ++ struct trace_event_file *file = hist_data->event_file; ++ struct hist_field *var_field, *ref_field, *max_var; ++ unsigned int var_ref_idx = hist_data->n_var_refs; ++ struct field_var *field_var; ++ char *onmax_var_str, *param; ++ unsigned long flags; ++ unsigned int i; ++ int ret = 0; ++ ++ onmax_var_str = data->onmax.var_str; ++ if (onmax_var_str[0] != '$') ++ return -EINVAL; ++ onmax_var_str++; ++ ++ var_field = find_target_event_var(hist_data, NULL, NULL, onmax_var_str); ++ if (!var_field) ++ return -EINVAL; ++ ++ flags = HIST_FIELD_FL_VAR_REF; ++ ref_field = create_hist_field(hist_data, NULL, flags, NULL); ++ if (!ref_field) ++ return -ENOMEM; ++ ++ if (init_var_ref(ref_field, var_field, NULL, NULL)) { ++ destroy_hist_field(ref_field, 0); ++ ret = -ENOMEM; ++ goto out; ++ } ++ hist_data->var_refs[hist_data->n_var_refs] = ref_field; ++ ref_field->var_ref_idx = hist_data->n_var_refs++; ++ data->onmax.var = ref_field; ++ ++ data->fn = onmax_save; ++ data->onmax.max_var_ref_idx = var_ref_idx; ++ max_var = create_var(hist_data, file, "max", sizeof(u64), "u64"); ++ if (IS_ERR(max_var)) { ++ ret = PTR_ERR(max_var); ++ goto out; ++ } ++ data->onmax.max_var = max_var; ++ ++ for (i = 0; i < data->n_params; i++) { ++ param = kstrdup(data->params[i], GFP_KERNEL); ++ if (!param) { ++ ret = -ENOMEM; ++ goto out; ++ } ++ ++ field_var = create_target_field_var(hist_data, NULL, NULL, param); ++ if (IS_ERR(field_var)) { ++ ret = PTR_ERR(field_var); ++ kfree(param); ++ goto out; ++ } ++ ++ hist_data->max_vars[hist_data->n_max_vars++] = field_var; ++ if (field_var->val->flags & HIST_FIELD_FL_STRING) ++ hist_data->n_max_var_str++; ++ ++ kfree(param); ++ } ++ out: ++ return ret; ++} ++ ++static int parse_action_params(char *params, struct action_data *data) ++{ ++ char *param, *saved_param; ++ int ret = 0; ++ ++ while (params) { ++ if (data->n_params >= SYNTH_FIELDS_MAX) ++ goto out; ++ ++ param = strsep(¶ms, ","); ++ if (!param) { ++ ret = -EINVAL; ++ goto out; ++ } ++ ++ param = strstrip(param); ++ if (strlen(param) < 2) { ++ ret = -EINVAL; ++ goto out; ++ } ++ ++ saved_param = kstrdup(param, GFP_KERNEL); ++ if (!saved_param) { ++ ret = -ENOMEM; ++ goto out; ++ } ++ ++ data->params[data->n_params++] = saved_param; ++ } ++ out: ++ return ret; ++} ++ ++static struct action_data *onmax_parse(char *str) ++{ ++ char *onmax_fn_name, *onmax_var_str; ++ struct action_data *data; ++ int ret = -EINVAL; ++ ++ data = kzalloc(sizeof(*data), GFP_KERNEL); ++ if (!data) ++ return ERR_PTR(-ENOMEM); ++ ++ onmax_var_str = strsep(&str, ")"); ++ if (!onmax_var_str || !str) { ++ ret = -EINVAL; ++ goto free; ++ } ++ ++ data->onmax.var_str = kstrdup(onmax_var_str, GFP_KERNEL); ++ if (!data->onmax.var_str) { ++ ret = -ENOMEM; ++ goto free; ++ } ++ ++ strsep(&str, "."); ++ if (!str) ++ goto free; ++ ++ onmax_fn_name = strsep(&str, "("); ++ if (!onmax_fn_name || !str) ++ goto free; ++ ++ if (strncmp(onmax_fn_name, "save", strlen("save")) == 0) { ++ char *params = strsep(&str, ")"); ++ ++ if (!params) { ++ ret = -EINVAL; ++ goto free; ++ } ++ ++ ret = parse_action_params(params, data); ++ if (ret) ++ goto free; ++ } else ++ goto free; ++ ++ data->onmax.fn_name = kstrdup(onmax_fn_name, GFP_KERNEL); ++ if (!data->onmax.fn_name) { ++ ret = -ENOMEM; ++ goto free; ++ } ++ out: ++ return data; ++ free: ++ onmax_destroy(data); ++ data = ERR_PTR(ret); ++ goto out; ++} ++ + static void onmatch_destroy(struct action_data *data) + { + unsigned int i; +@@ -3107,39 +3350,6 @@ static int check_synth_field(struct synt + return 0; + } + +-static int parse_action_params(char *params, struct action_data *data) +-{ +- char *param, *saved_param; +- int ret = 0; +- +- while (params) { +- if (data->n_params >= SYNTH_FIELDS_MAX) +- goto out; +- +- param = strsep(¶ms, ","); +- if (!param) { +- ret = -EINVAL; +- goto out; +- } +- +- param = strstrip(param); +- if (strlen(param) < 2) { +- ret = -EINVAL; +- goto out; +- } +- +- saved_param = kstrdup(param, GFP_KERNEL); +- if (!saved_param) { +- ret = -ENOMEM; +- goto out; +- } +- +- data->params[data->n_params++] = saved_param; +- } +- out: +- return ret; +-} +- + static struct hist_field * + onmatch_find_var(struct hist_trigger_data *hist_data, struct action_data *data, + char *system, char *event, char *var) +@@ -3796,6 +4006,8 @@ static void destroy_actions(struct hist_ + + if (data->fn == action_trace) + onmatch_destroy(data); ++ else if (data->fn == onmax_save) ++ onmax_destroy(data); + else + kfree(data); + } +@@ -3821,6 +4033,15 @@ static int parse_actions(struct hist_tri + break; + } + data->fn = action_trace; ++ } else if (strncmp(str, "onmax(", strlen("onmax(")) == 0) { ++ char *action_str = str + strlen("onmax("); ++ ++ data = onmax_parse(action_str); ++ if (IS_ERR(data)) { ++ ret = PTR_ERR(data); ++ break; ++ } ++ data->fn = onmax_save; + } else { + ret = -EINVAL; + break; +@@ -3846,12 +4067,48 @@ static int create_actions(struct hist_tr + ret = onmatch_create(hist_data, file, data); + if (ret) + return ret; ++ } else if (data->fn == onmax_save) { ++ ret = onmax_create(hist_data, data); ++ if (ret) ++ return ret; + } + } + + return ret; + } + ++static void print_actions(struct seq_file *m, ++ struct hist_trigger_data *hist_data, ++ struct tracing_map_elt *elt) ++{ ++ unsigned int i; ++ ++ for (i = 0; i < hist_data->n_actions; i++) { ++ struct action_data *data = hist_data->actions[i]; ++ ++ if (data->fn == onmax_save) ++ onmax_print(m, hist_data, elt, data); ++ } ++} ++ ++static void print_onmax_spec(struct seq_file *m, ++ struct hist_trigger_data *hist_data, ++ struct action_data *data) ++{ ++ unsigned int i; ++ ++ seq_puts(m, ":onmax("); ++ seq_printf(m, "%s", data->onmax.var_str); ++ seq_printf(m, ").%s(", data->onmax.fn_name); ++ ++ for (i = 0; i < hist_data->n_max_vars; i++) { ++ seq_printf(m, "%s", hist_data->max_vars[i]->var->var.name); ++ if (i < hist_data->n_max_vars - 1) ++ seq_puts(m, ","); ++ } ++ seq_puts(m, ")"); ++} ++ + static void print_onmatch_spec(struct seq_file *m, + struct hist_trigger_data *hist_data, + struct action_data *data) +@@ -3882,6 +4139,8 @@ static void print_actions_spec(struct se + + if (data->fn == action_trace) + print_onmatch_spec(m, hist_data, data); ++ else if (data->fn == onmax_save) ++ print_onmax_spec(m, hist_data, data); + } + } + +@@ -4263,6 +4522,8 @@ hist_trigger_entry_print(struct seq_file + } + } + ++ print_actions(m, hist_data, elt); ++ + seq_puts(m, "\n"); + } + diff --git a/patches/features/all/rt/0028-hrtimer-Implement-support-for-softirq-based-hrtimers.patch b/patches/features/all/rt/0028-hrtimer-Implement-support-for-softirq-based-hrtimers.patch new file mode 100644 index 00000000000..40f6e124746 --- /dev/null +++ b/patches/features/all/rt/0028-hrtimer-Implement-support-for-softirq-based-hrtimers.patch @@ -0,0 +1,497 @@ +From: Anna-Maria Gleixner +Date: Wed, 20 Dec 2017 17:13:17 +0100 +Subject: [PATCH 28/29] hrtimer: Implement support for softirq based hrtimers +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +hrtimer callbacks are always invoked in hard interrupt context. Several +users in tree require soft interrupt context for their callbacks and +achieve this by combining a hrtimer with a tasklet. The hrtimer schedules +the tasklet in hard interrupt context and the tasklet callback gets invoked +in softirq context later. + +That's suboptimal and aside of that the real-time patch moves most of the +hrtimers into softirq context. So adding native support for hrtimers +expiring in softirq context is a valuable extension for both mainline and +the RT patch set. + +Each valid hrtimer clock id has two associated hrtimer clock bases: one for +timers expiring in hardirq context and one for timers expiring in softirq +context. + +Implement the functionality to associate a hrtimer with the hard or softirq +related clock bases and update the relevant functions to take them into +account when the next expiry time needs to be evaluated. + +Add a check into the hard interrupt context handler functions to check +whether the first expiring softirq based timer has expired. If it's expired +the softirq is raised and the accounting of softirq based timers to +evaluate the next expiry time for programming the timer hardware is skipped +until the softirq processing has finished. At the end of the softirq +processing the regular processing is resumed. + +Suggested-by: Thomas Gleixner +Suggested-by: Peter Zijlstra +Signed-off-by: Anna-Maria Gleixner +Signed-off-by: Sebastian Andrzej Siewior +--- + include/linux/hrtimer.h | 21 +++-- + kernel/time/hrtimer.c | 198 +++++++++++++++++++++++++++++++++++++++++------- + 2 files changed, 188 insertions(+), 31 deletions(-) + +--- a/include/linux/hrtimer.h ++++ b/include/linux/hrtimer.h +@@ -103,6 +103,7 @@ enum hrtimer_restart { + * @base: pointer to the timer base (per cpu and per clock) + * @state: state information (See bit values above) + * @is_rel: Set if the timer was armed relative ++ * @is_soft: Set if hrtimer will be expired in soft interrupt context. + * + * The hrtimer structure must be initialized by hrtimer_init() + */ +@@ -113,6 +114,7 @@ struct hrtimer { + struct hrtimer_clock_base *base; + u8 state; + u8 is_rel; ++ u8 is_soft; + }; + + /** +@@ -178,13 +180,18 @@ enum hrtimer_base_type { + * @hres_active: State of high resolution mode + * @in_hrtirq: hrtimer_interrupt() is currently executing + * @hang_detected: The last hrtimer interrupt detected a hang ++ * @softirq_activated: displays, if the softirq is raised - update of softirq ++ * related settings is not required then. + * @nr_events: Total number of hrtimer interrupt events + * @nr_retries: Total number of hrtimer interrupt retries + * @nr_hangs: Total number of hrtimer interrupt hangs + * @max_hang_time: Maximum time spent in hrtimer_interrupt + * @expires_next: absolute time of the next event, is required for remote +- * hrtimer enqueue ++ * hrtimer enqueue; it is the total first expiry time (hard ++ * and soft hrtimer are taken into account) + * @next_timer: Pointer to the first expiring timer ++ * @softirq_expires_next: Time to check, if soft queues needs also to be expired ++ * @softirq_next_timer: Pointer to the first expiring softirq based timer + * @clock_base: array of clock bases for this cpu + * + * Note: next_timer is just an optimization for __remove_hrtimer(). +@@ -196,9 +203,10 @@ struct hrtimer_cpu_base { + unsigned int cpu; + unsigned int active_bases; + unsigned int clock_was_set_seq; +- unsigned int hres_active : 1, +- in_hrtirq : 1, +- hang_detected : 1; ++ unsigned int hres_active : 1, ++ in_hrtirq : 1, ++ hang_detected : 1, ++ softirq_activated : 1; + #ifdef CONFIG_HIGH_RES_TIMERS + unsigned int nr_events; + unsigned short nr_retries; +@@ -207,6 +215,8 @@ struct hrtimer_cpu_base { + #endif + ktime_t expires_next; + struct hrtimer *next_timer; ++ ktime_t softirq_expires_next; ++ struct hrtimer *softirq_next_timer; + struct hrtimer_clock_base clock_base[HRTIMER_MAX_CLOCK_BASES]; + } ____cacheline_aligned; + +@@ -379,7 +389,8 @@ extern void hrtimer_start_range_ns(struc + * @timer: the timer to be added + * @tim: expiry time + * @mode: timer mode: absolute (HRTIMER_MODE_ABS) or +- * relative (HRTIMER_MODE_REL), and pinned (HRTIMER_MODE_PINNED) ++ * relative (HRTIMER_MODE_REL), and pinned (HRTIMER_MODE_PINNED); ++ * softirq based mode is considered for debug purpose only! + */ + static inline void hrtimer_start(struct hrtimer *timer, ktime_t tim, + const enum hrtimer_mode mode) +--- a/kernel/time/hrtimer.c ++++ b/kernel/time/hrtimer.c +@@ -411,7 +411,8 @@ static inline void debug_hrtimer_init(st + debug_object_init(timer, &hrtimer_debug_descr); + } + +-static inline void debug_hrtimer_activate(struct hrtimer *timer) ++static inline void debug_hrtimer_activate(struct hrtimer *timer, ++ enum hrtimer_mode mode) + { + debug_object_activate(timer, &hrtimer_debug_descr); + } +@@ -444,8 +445,10 @@ void destroy_hrtimer_on_stack(struct hrt + EXPORT_SYMBOL_GPL(destroy_hrtimer_on_stack); + + #else ++ + static inline void debug_hrtimer_init(struct hrtimer *timer) { } +-static inline void debug_hrtimer_activate(struct hrtimer *timer) { } ++static inline void debug_hrtimer_activate(struct hrtimer *timer, ++ enum hrtimer_mode mode) { } + static inline void debug_hrtimer_deactivate(struct hrtimer *timer) { } + #endif + +@@ -460,7 +463,7 @@ debug_init(struct hrtimer *timer, clocki + static inline void debug_activate(struct hrtimer *timer, + enum hrtimer_mode mode) + { +- debug_hrtimer_activate(timer); ++ debug_hrtimer_activate(timer, mode); + trace_hrtimer_start(timer, mode); + } + +@@ -487,7 +490,6 @@ static struct hrtimer_clock_base * + #define for_each_active_base(base, cpu_base, active) \ + while ((base = __next_base((cpu_base), &(active)))) + +-#if defined(CONFIG_NO_HZ_COMMON) || defined(CONFIG_HIGH_RES_TIMERS) + static ktime_t __hrtimer_next_event_base(struct hrtimer_cpu_base *cpu_base, + unsigned int active, + ktime_t expires_next) +@@ -504,7 +506,10 @@ static ktime_t __hrtimer_next_event_base + expires = ktime_sub(hrtimer_get_expires(timer), base->offset); + if (expires < expires_next) { + expires_next = expires; +- cpu_base->next_timer = timer; ++ if (timer->is_soft) ++ cpu_base->softirq_next_timer = timer; ++ else ++ cpu_base->next_timer = timer; + } + } + /* +@@ -521,25 +526,42 @@ static ktime_t __hrtimer_next_event_base + * Recomputes cpu_base::*next_timer and returns the earliest expires_next but + * does not set cpu_base::*expires_next, that is done by hrtimer_reprogram. + * ++ * When a softirq is pending, we can ignore the HRTIMER_ACTIVE_SOFT bases, ++ * those timers will get run whenever the softirq gets handled, at the end of ++ * hrtimer_run_softirq(), hrtimer_update_softirq_timer() will re-add these bases. ++ * ++ * Therefore softirq values are those from the HRTIMER_ACTIVE_SOFT clock bases. ++ * The !softirq values are the minima across HRTIMER_ACTIVE_ALL, unless an actual ++ * softirq is pending, in which case they're the minima of HRTIMER_ACTIVE_HARD. ++ * + * @active_mask must be one of: +- * - HRTIMER_ACTIVE, ++ * - HRTIMER_ACTIVE_ALL, + * - HRTIMER_ACTIVE_SOFT, or + * - HRTIMER_ACTIVE_HARD. + */ +-static ktime_t __hrtimer_get_next_event(struct hrtimer_cpu_base *cpu_base, +- unsigned int active_mask) ++static ktime_t ++__hrtimer_get_next_event(struct hrtimer_cpu_base *cpu_base, unsigned int active_mask) + { + unsigned int active; ++ struct hrtimer *next_timer = NULL; + ktime_t expires_next = KTIME_MAX; + +- cpu_base->next_timer = NULL; ++ if (!cpu_base->softirq_activated && (active_mask & HRTIMER_ACTIVE_SOFT)) { ++ active = cpu_base->active_bases & HRTIMER_ACTIVE_SOFT; ++ cpu_base->softirq_next_timer = NULL; ++ expires_next = __hrtimer_next_event_base(cpu_base, active, KTIME_MAX); ++ ++ next_timer = cpu_base->softirq_next_timer; ++ } + +- active = cpu_base->active_bases & active_mask; +- expires_next = __hrtimer_next_event_base(cpu_base, active, expires_next); ++ if (active_mask & HRTIMER_ACTIVE_HARD) { ++ active = cpu_base->active_bases & HRTIMER_ACTIVE_HARD; ++ cpu_base->next_timer = next_timer; ++ expires_next = __hrtimer_next_event_base(cpu_base, active, expires_next); ++ } + + return expires_next; + } +-#endif + + static inline ktime_t hrtimer_update_base(struct hrtimer_cpu_base *base) + { +@@ -547,8 +569,14 @@ static inline ktime_t hrtimer_update_bas + ktime_t *offs_boot = &base->clock_base[HRTIMER_BASE_BOOTTIME].offset; + ktime_t *offs_tai = &base->clock_base[HRTIMER_BASE_TAI].offset; + +- return ktime_get_update_offsets_now(&base->clock_was_set_seq, ++ ktime_t now = ktime_get_update_offsets_now(&base->clock_was_set_seq, + offs_real, offs_boot, offs_tai); ++ ++ base->clock_base[HRTIMER_BASE_REALTIME_SOFT].offset = *offs_real; ++ base->clock_base[HRTIMER_BASE_BOOTTIME_SOFT].offset = *offs_boot; ++ base->clock_base[HRTIMER_BASE_TAI_SOFT].offset = *offs_tai; ++ ++ return now; + } + + /* +@@ -575,7 +603,23 @@ hrtimer_force_reprogram(struct hrtimer_c + { + ktime_t expires_next; + +- expires_next = __hrtimer_get_next_event(cpu_base, HRTIMER_ACTIVE_HARD); ++ /* ++ * Find the current next expiration time. ++ */ ++ expires_next = __hrtimer_get_next_event(cpu_base, HRTIMER_ACTIVE_ALL); ++ ++ if (cpu_base->next_timer && cpu_base->next_timer->is_soft) { ++ /* ++ * When the softirq is activated, hrtimer has to be ++ * programmed with the first hard hrtimer because soft ++ * timer interrupt could occur too late. ++ */ ++ if (cpu_base->softirq_activated) ++ expires_next = __hrtimer_get_next_event(cpu_base, ++ HRTIMER_ACTIVE_HARD); ++ else ++ cpu_base->softirq_expires_next = expires_next; ++ } + + if (skip_equal && expires_next == cpu_base->expires_next) + return; +@@ -702,7 +746,7 @@ static inline void retrigger_next_event( + * + * Called with interrupts disabled and base->cpu_base.lock held + */ +-static void hrtimer_reprogram(struct hrtimer *timer) ++static void hrtimer_reprogram(struct hrtimer *timer, bool reprogram) + { + struct hrtimer_cpu_base *cpu_base = this_cpu_ptr(&hrtimer_bases); + struct hrtimer_clock_base *base = timer->base; +@@ -711,6 +755,37 @@ static void hrtimer_reprogram(struct hrt + WARN_ON_ONCE(hrtimer_get_expires_tv64(timer) < 0); + + /* ++ * CLOCK_REALTIME timer might be requested with an absolute ++ * expiry time which is less than base->offset. Set it to 0. ++ */ ++ if (expires < 0) ++ expires = 0; ++ ++ if (timer->is_soft) { ++ /* ++ * soft hrtimer could be started on a remote CPU. In this ++ * case softirq_expires_next needs to be updated on the ++ * remote CPU. The soft hrtimer will not expire before the ++ * first hard hrtimer on the remote CPU - ++ * hrtimer_check_target() prevents this case. ++ */ ++ struct hrtimer_cpu_base *timer_cpu_base = base->cpu_base; ++ ++ if (timer_cpu_base->softirq_activated) ++ return; ++ ++ if (!ktime_before(expires, timer_cpu_base->softirq_expires_next)) ++ return; ++ ++ timer_cpu_base->softirq_next_timer = timer; ++ timer_cpu_base->softirq_expires_next = expires; ++ ++ if (!ktime_before(expires, timer_cpu_base->expires_next) || ++ !reprogram) ++ return; ++ } ++ ++ /* + * If the timer is not on the current cpu, we cannot reprogram + * the other cpus clock event device. + */ +@@ -727,13 +802,6 @@ static void hrtimer_reprogram(struct hrt + if (cpu_base->in_hrtirq) + return; + +- /* +- * CLOCK_REALTIME timer might be requested with an absolute +- * expiry time which is less than base->offset. Set it to 0. +- */ +- if (expires < 0) +- expires = 0; +- + if (expires >= cpu_base->expires_next) + return; + +@@ -961,6 +1029,31 @@ static inline ktime_t hrtimer_update_low + return tim; + } + ++static void ++hrtimer_update_softirq_timer(struct hrtimer_cpu_base *cpu_base, bool reprogram) ++{ ++ ktime_t expires; ++ ++ /* ++ * Find the next SOFT expiration. ++ */ ++ expires = __hrtimer_get_next_event(cpu_base, HRTIMER_ACTIVE_SOFT); ++ ++ /* ++ * reprogramming needs to be triggered, even if the next soft ++ * hrtimer expires at the same time than the next hard ++ * hrtimer. cpu_base->softirq_expires_next needs to be updated! ++ */ ++ if (expires == KTIME_MAX) ++ return; ++ ++ /* ++ * cpu_base->*next_timer is recomputed by __hrtimer_get_next_event() ++ * cpu_base->*expires_next is only set by hrtimer_reprogram() ++ */ ++ hrtimer_reprogram(cpu_base->softirq_next_timer, reprogram); ++} ++ + static int __hrtimer_start_range_ns(struct hrtimer *timer, ktime_t tim, + u64 delta_ns, const enum hrtimer_mode mode, + struct hrtimer_clock_base *base) +@@ -982,13 +1075,15 @@ static int __hrtimer_start_range_ns(stru + + return enqueue_hrtimer(timer, new_base, mode); + } ++ + /** + * hrtimer_start_range_ns - (re)start an hrtimer + * @timer: the timer to be added + * @tim: expiry time + * @delta_ns: "slack" range for the timer + * @mode: timer mode: absolute (HRTIMER_MODE_ABS) or +- * relative (HRTIMER_MODE_REL), and pinned (HRTIMER_MODE_PINNED) ++ * relative (HRTIMER_MODE_REL), and pinned (HRTIMER_MODE_PINNED); ++ * softirq based mode is considered for debug purpose only! + */ + void hrtimer_start_range_ns(struct hrtimer *timer, ktime_t tim, + u64 delta_ns, const enum hrtimer_mode mode) +@@ -996,10 +1091,16 @@ void hrtimer_start_range_ns(struct hrtim + struct hrtimer_clock_base *base; + unsigned long flags; + ++ /* ++ * Check whether the HRTIMER_MODE_SOFT bit and hrtimer.is_soft ++ * match. ++ */ ++ WARN_ON_ONCE(!(mode & HRTIMER_MODE_SOFT) ^ !timer->is_soft); ++ + base = lock_hrtimer_base(timer, &flags); + + if (__hrtimer_start_range_ns(timer, tim, delta_ns, mode, base)) +- hrtimer_reprogram(timer); ++ hrtimer_reprogram(timer, true); + + unlock_hrtimer_base(timer, &flags); + } +@@ -1098,7 +1199,7 @@ u64 hrtimer_get_next_event(void) + raw_spin_lock_irqsave(&cpu_base->lock, flags); + + if (!__hrtimer_hres_active(cpu_base)) +- expires = __hrtimer_get_next_event(cpu_base, HRTIMER_ACTIVE_HARD); ++ expires = __hrtimer_get_next_event(cpu_base, HRTIMER_ACTIVE_ALL); + + raw_spin_unlock_irqrestore(&cpu_base->lock, flags); + +@@ -1308,6 +1409,23 @@ static void __hrtimer_run_queues(struct + } + } + ++static __latent_entropy void hrtimer_run_softirq(struct softirq_action *h) ++{ ++ struct hrtimer_cpu_base *cpu_base = this_cpu_ptr(&hrtimer_bases); ++ unsigned long flags; ++ ktime_t now; ++ ++ raw_spin_lock_irqsave(&cpu_base->lock, flags); ++ ++ now = hrtimer_update_base(cpu_base); ++ __hrtimer_run_queues(cpu_base, now, flags, HRTIMER_ACTIVE_SOFT); ++ ++ cpu_base->softirq_activated = 0; ++ hrtimer_update_softirq_timer(cpu_base, true); ++ ++ raw_spin_unlock_irqrestore(&cpu_base->lock, flags); ++} ++ + #ifdef CONFIG_HIGH_RES_TIMERS + + /* +@@ -1338,10 +1456,16 @@ void hrtimer_interrupt(struct clock_even + */ + cpu_base->expires_next = KTIME_MAX; + ++ if (!ktime_before(now, cpu_base->softirq_expires_next)) { ++ cpu_base->softirq_expires_next = KTIME_MAX; ++ cpu_base->softirq_activated = 1; ++ raise_softirq_irqoff(HRTIMER_SOFTIRQ); ++ } ++ + __hrtimer_run_queues(cpu_base, now, flags, HRTIMER_ACTIVE_HARD); + + /* Reevaluate the clock bases for the next expiry */ +- expires_next = __hrtimer_get_next_event(cpu_base, HRTIMER_ACTIVE_HARD); ++ expires_next = __hrtimer_get_next_event(cpu_base, HRTIMER_ACTIVE_ALL); + /* + * Store the new expiry value so the migration code can verify + * against it. +@@ -1445,6 +1569,13 @@ void hrtimer_run_queues(void) + + raw_spin_lock_irqsave(&cpu_base->lock, flags); + now = hrtimer_update_base(cpu_base); ++ ++ if (!ktime_before(now, cpu_base->softirq_expires_next)) { ++ cpu_base->softirq_expires_next = KTIME_MAX; ++ cpu_base->softirq_activated = 1; ++ raise_softirq_irqoff(HRTIMER_SOFTIRQ); ++ } ++ + __hrtimer_run_queues(cpu_base, now, flags, HRTIMER_ACTIVE_HARD); + raw_spin_unlock_irqrestore(&cpu_base->lock, flags); + } +@@ -1626,6 +1757,7 @@ int hrtimers_prepare_cpu(unsigned int cp + cpu_base->cpu = cpu; + cpu_base->hres_active = 0; + cpu_base->expires_next = KTIME_MAX; ++ cpu_base->softirq_expires_next = KTIME_MAX; + return 0; + } + +@@ -1669,6 +1801,12 @@ int hrtimers_dead_cpu(unsigned int scpu) + BUG_ON(cpu_online(scpu)); + tick_cancel_sched_timer(scpu); + ++ /* ++ * this BH disable ensures that raise_softirq_irqoff() does ++ * not wakeup ksoftirqd (and acquire the pi-lock) while ++ * holding the cpu_base lock ++ */ ++ local_bh_disable(); + local_irq_disable(); + old_base = &per_cpu(hrtimer_bases, scpu); + new_base = this_cpu_ptr(&hrtimer_bases); +@@ -1684,12 +1822,19 @@ int hrtimers_dead_cpu(unsigned int scpu) + &new_base->clock_base[i]); + } + ++ /* ++ * The migration might have changed the first expiring softirq ++ * timer on this CPU. Update it. ++ */ ++ hrtimer_update_softirq_timer(new_base, false); ++ + raw_spin_unlock(&old_base->lock); + raw_spin_unlock(&new_base->lock); + + /* Check, if we got expired work to do */ + __hrtimer_peek_ahead_timers(); + local_irq_enable(); ++ local_bh_enable(); + return 0; + } + +@@ -1698,6 +1843,7 @@ int hrtimers_dead_cpu(unsigned int scpu) + void __init hrtimers_init(void) + { + hrtimers_prepare_cpu(smp_processor_id()); ++ open_softirq(HRTIMER_SOFTIRQ, hrtimer_run_softirq); + } + + /** diff --git a/patches/features/all/rt/0028-tracing-Allow-whitespace-to-surround-hist-trigger-fi.patch b/patches/features/all/rt/0028-tracing-Allow-whitespace-to-surround-hist-trigger-fi.patch new file mode 100644 index 00000000000..0b15f23d9f3 --- /dev/null +++ b/patches/features/all/rt/0028-tracing-Allow-whitespace-to-surround-hist-trigger-fi.patch @@ -0,0 +1,72 @@ +From: Tom Zanussi +Date: Mon, 15 Jan 2018 20:52:02 -0600 +Subject: [PATCH 28/37] tracing: Allow whitespace to surround hist trigger + filter +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +The existing code only allows for one space before and after the 'if' +specifying the filter for a hist trigger. Add code to make that more +permissive as far as whitespace goes. Specifically, we want to allow +spaces in the trigger itself now that we have additional syntax +(onmatch/onmax) where spaces are more natural e.g. spaces after commas +in param lists. + +Signed-off-by: Tom Zanussi +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/trace/trace_events_hist.c | 37 ++++++++++++++++++++++++++++++++----- + 1 file changed, 32 insertions(+), 5 deletions(-) + +--- a/kernel/trace/trace_events_hist.c ++++ b/kernel/trace/trace_events_hist.c +@@ -5164,7 +5164,7 @@ static int event_hist_trigger_func(struc + struct synth_event *se; + const char *se_name; + bool remove = false; +- char *trigger; ++ char *trigger, *p; + int ret = 0; + + if (!param) +@@ -5173,10 +5173,37 @@ static int event_hist_trigger_func(struc + if (glob[0] == '!') + remove = true; + +- /* separate the trigger from the filter (k:v [if filter]) */ +- trigger = strsep(¶m, " \t"); +- if (!trigger) +- return -EINVAL; ++ /* ++ * separate the trigger from the filter (k:v [if filter]) ++ * allowing for whitespace in the trigger ++ */ ++ p = trigger = param; ++ do { ++ p = strstr(p, "if"); ++ if (!p) ++ break; ++ if (p == param) ++ return -EINVAL; ++ if (*(p - 1) != ' ' && *(p - 1) != '\t') { ++ p++; ++ continue; ++ } ++ if (p >= param + strlen(param) - strlen("if") - 1) ++ return -EINVAL; ++ if (*(p + strlen("if")) != ' ' && *(p + strlen("if")) != '\t') { ++ p++; ++ continue; ++ } ++ break; ++ } while (p); ++ ++ if (!p) ++ param = NULL; ++ else { ++ *(p - 1) = '\0'; ++ param = strstrip(p); ++ trigger = strstrip(trigger); ++ } + + attrs = parse_hist_trigger_attrs(trigger); + if (IS_ERR(attrs)) diff --git a/patches/features/all/rt/0029-hrtimer-Implement-SOFT-HARD-clock-base-selection.patch b/patches/features/all/rt/0029-hrtimer-Implement-SOFT-HARD-clock-base-selection.patch new file mode 100644 index 00000000000..280bde98cd5 --- /dev/null +++ b/patches/features/all/rt/0029-hrtimer-Implement-SOFT-HARD-clock-base-selection.patch @@ -0,0 +1,56 @@ +From: Anna-Maria Gleixner +Date: Wed, 20 Dec 2017 17:13:18 +0100 +Subject: [PATCH 29/29] hrtimer: Implement SOFT/HARD clock base selection +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +All prerequisites to handle hrtimers for expiry in either hard or soft +interrupt context are in place. + +Add the missing bit in hrtimer_init() which associates the timer to the +hard or the soft irq clock base. + +Signed-off-by: Anna-Maria Gleixner +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/time/hrtimer.c | 15 +++++++++++---- + 1 file changed, 11 insertions(+), 4 deletions(-) + +--- a/kernel/time/hrtimer.c ++++ b/kernel/time/hrtimer.c +@@ -1222,8 +1222,9 @@ static inline int hrtimer_clockid_to_bas + static void __hrtimer_init(struct hrtimer *timer, clockid_t clock_id, + enum hrtimer_mode mode) + { ++ bool softtimer = !!(mode & HRTIMER_MODE_SOFT); ++ int base = softtimer ? HRTIMER_MAX_CLOCK_BASES / 2 : 0; + struct hrtimer_cpu_base *cpu_base; +- int base; + + memset(timer, 0, sizeof(struct hrtimer)); + +@@ -1237,7 +1238,8 @@ static void __hrtimer_init(struct hrtime + if (clock_id == CLOCK_REALTIME && mode & HRTIMER_MODE_REL) + clock_id = CLOCK_MONOTONIC; + +- base = hrtimer_clockid_to_base(clock_id); ++ base += hrtimer_clockid_to_base(clock_id); ++ timer->is_soft = softtimer; + timer->base = &cpu_base->clock_base[base]; + timerqueue_init(&timer->node); + } +@@ -1246,8 +1248,13 @@ static void __hrtimer_init(struct hrtime + * hrtimer_init - initialize a timer to the given clock + * @timer: the timer to be initialized + * @clock_id: the clock to be used +- * @mode: timer mode: absolute (HRTIMER_MODE_ABS) or +- * relative (HRTIMER_MODE_REL); pinned is not considered here! ++ * @mode: The modes which are relevant for intitialization: ++ * HRTIMER_MODE_ABS, HRTIMER_MODE_REL, HRTIMER_MODE_ABS_SOFT, ++ * HRTIMER_MODE_REL_SOFT ++ * ++ * The PINNED variants of the above can be handed in, ++ * but the PINNED bit is ignored as pinning happens ++ * when the hrtimer is started + */ + void hrtimer_init(struct hrtimer *timer, clockid_t clock_id, + enum hrtimer_mode mode) diff --git a/patches/features/all/rt/0029-tracing-Add-cpu-field-for-hist-triggers.patch b/patches/features/all/rt/0029-tracing-Add-cpu-field-for-hist-triggers.patch new file mode 100644 index 00000000000..bb46bfc57fb --- /dev/null +++ b/patches/features/all/rt/0029-tracing-Add-cpu-field-for-hist-triggers.patch @@ -0,0 +1,111 @@ +From: Tom Zanussi +Date: Mon, 15 Jan 2018 20:52:03 -0600 +Subject: [PATCH 29/37] tracing: Add cpu field for hist triggers +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +A common key to use in a histogram is the cpuid - add a new cpu +'synthetic' field named 'cpu' for that purpose. + +Signed-off-by: Tom Zanussi +Signed-off-by: Sebastian Andrzej Siewior +--- + Documentation/trace/histogram.txt | 15 +++++++++++++++ + kernel/trace/trace_events_hist.c | 28 +++++++++++++++++++++++++++- + 2 files changed, 42 insertions(+), 1 deletion(-) + +--- a/Documentation/trace/histogram.txt ++++ b/Documentation/trace/histogram.txt +@@ -172,6 +172,21 @@ + The examples below provide a more concrete illustration of the + concepts and typical usage patterns discussed above. + ++ 'special' event fields ++ ------------------------ ++ ++ There are a number of 'special event fields' available for use as ++ keys or values in a hist trigger. These look like and behave as if ++ they were actual event fields, but aren't really part of the event's ++ field definition or format file. They are however available for any ++ event, and can be used anywhere an actual event field could be. ++ They are: ++ ++ common_timestamp u64 - timestamp (from ring buffer) associated ++ with the event, in nanoseconds. May be ++ modified by .usecs to have timestamps ++ interpreted as microseconds. ++ cpu int - the cpu on which the event occurred. + + 6.2 'hist' trigger examples + --------------------------- +--- a/kernel/trace/trace_events_hist.c ++++ b/kernel/trace/trace_events_hist.c +@@ -227,6 +227,7 @@ enum hist_field_flags { + HIST_FIELD_FL_VAR = 1 << 12, + HIST_FIELD_FL_EXPR = 1 << 13, + HIST_FIELD_FL_VAR_REF = 1 << 14, ++ HIST_FIELD_FL_CPU = 1 << 15, + }; + + struct var_defs { +@@ -1164,6 +1165,16 @@ static u64 hist_field_timestamp(struct h + return ts; + } + ++static u64 hist_field_cpu(struct hist_field *hist_field, ++ struct tracing_map_elt *elt, ++ struct ring_buffer_event *rbe, ++ void *event) ++{ ++ int cpu = smp_processor_id(); ++ ++ return cpu; ++} ++ + static struct hist_field * + check_field_for_var_ref(struct hist_field *hist_field, + struct hist_trigger_data *var_data, +@@ -1602,6 +1613,8 @@ static const char *hist_field_name(struc + field_name = hist_field_name(field->operands[0], ++level); + else if (field->flags & HIST_FIELD_FL_TIMESTAMP) + field_name = "common_timestamp"; ++ else if (field->flags & HIST_FIELD_FL_CPU) ++ field_name = "cpu"; + else if (field->flags & HIST_FIELD_FL_EXPR || + field->flags & HIST_FIELD_FL_VAR_REF) { + if (field->system) { +@@ -2109,6 +2122,15 @@ static struct hist_field *create_hist_fi + goto out; + } + ++ if (flags & HIST_FIELD_FL_CPU) { ++ hist_field->fn = hist_field_cpu; ++ hist_field->size = sizeof(int); ++ hist_field->type = kstrdup("unsigned int", GFP_KERNEL); ++ if (!hist_field->type) ++ goto free; ++ goto out; ++ } ++ + if (WARN_ON_ONCE(!field)) + goto out; + +@@ -2345,7 +2367,9 @@ parse_field(struct hist_trigger_data *hi + hist_data->enable_timestamps = true; + if (*flags & HIST_FIELD_FL_TIMESTAMP_USECS) + hist_data->attrs->ts_in_usecs = true; +- } else { ++ } else if (strcmp(field_name, "cpu") == 0) ++ *flags |= HIST_FIELD_FL_CPU; ++ else { + field = trace_find_event_field(file->event_call, field_name); + if (!field || !field->size) { + field = ERR_PTR(-EINVAL); +@@ -4621,6 +4645,8 @@ static void hist_field_print(struct seq_ + + if (hist_field->flags & HIST_FIELD_FL_TIMESTAMP) + seq_puts(m, "common_timestamp"); ++ else if (hist_field->flags & HIST_FIELD_FL_CPU) ++ seq_puts(m, "cpu"); + else if (field_name) { + if (hist_field->flags & HIST_FIELD_FL_VAR_REF) + seq_putc(m, '$'); diff --git a/patches/features/all/rt/0030-can-bcm-Replace-hrtimer_tasklet-with-softirq-based-h.patch b/patches/features/all/rt/0030-can-bcm-Replace-hrtimer_tasklet-with-softirq-based-h.patch new file mode 100644 index 00000000000..307ac7f402a --- /dev/null +++ b/patches/features/all/rt/0030-can-bcm-Replace-hrtimer_tasklet-with-softirq-based-h.patch @@ -0,0 +1,316 @@ +From: Thomas Gleixner +Date: Thu, 23 Nov 2017 16:39:11 +0100 +Subject: [PATCH 30/36] can/bcm: Replace hrtimer_tasklet with softirq based + hrtimer +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Switch the timer to HRTIMER_MODE_SOFT, which executed the timer +callback in softirq context and remove the hrtimer_tasklet. + +Signed-off-by: Thomas Gleixner +Signed-off-by: Anna-Maria Gleixner +Signed-off-by: Thomas Gleixner +Cc: Oliver Hartkopp +Cc: Marc Kleine-Budde +Cc: linux-can@vger.kernel.org +Signed-off-by: Sebastian Andrzej Siewior +--- + net/can/bcm.c | 156 +++++++++++++++++++--------------------------------------- + 1 file changed, 52 insertions(+), 104 deletions(-) + +--- a/net/can/bcm.c ++++ b/net/can/bcm.c +@@ -102,7 +102,6 @@ struct bcm_op { + unsigned long frames_abs, frames_filtered; + struct bcm_timeval ival1, ival2; + struct hrtimer timer, thrtimer; +- struct tasklet_struct tsklet, thrtsklet; + ktime_t rx_stamp, kt_ival1, kt_ival2, kt_lastmsg; + int rx_ifindex; + int cfsiz; +@@ -364,25 +363,34 @@ static void bcm_send_to_user(struct bcm_ + } + } + +-static void bcm_tx_start_timer(struct bcm_op *op) ++static bool bcm_tx_set_expiry(struct bcm_op *op, struct hrtimer *hrt) + { ++ ktime_t ival; ++ + if (op->kt_ival1 && op->count) +- hrtimer_start(&op->timer, +- ktime_add(ktime_get(), op->kt_ival1), +- HRTIMER_MODE_ABS); ++ ival = op->kt_ival1; + else if (op->kt_ival2) +- hrtimer_start(&op->timer, +- ktime_add(ktime_get(), op->kt_ival2), +- HRTIMER_MODE_ABS); ++ ival = op->kt_ival2; ++ else ++ return false; ++ ++ hrtimer_set_expires(hrt, ktime_add(ktime_get(), ival)); ++ return true; + } + +-static void bcm_tx_timeout_tsklet(unsigned long data) ++static void bcm_tx_start_timer(struct bcm_op *op) + { +- struct bcm_op *op = (struct bcm_op *)data; ++ if (bcm_tx_set_expiry(op, &op->timer)) ++ hrtimer_start_expires(&op->timer, HRTIMER_MODE_ABS_SOFT); ++} ++ ++/* bcm_tx_timeout_handler - performs cyclic CAN frame transmissions */ ++static enum hrtimer_restart bcm_tx_timeout_handler(struct hrtimer *hrtimer) ++{ ++ struct bcm_op *op = container_of(hrtimer, struct bcm_op, timer); + struct bcm_msg_head msg_head; + + if (op->kt_ival1 && (op->count > 0)) { +- + op->count--; + if (!op->count && (op->flags & TX_COUNTEVT)) { + +@@ -399,22 +407,12 @@ static void bcm_tx_timeout_tsklet(unsign + } + bcm_can_tx(op); + +- } else if (op->kt_ival2) ++ } else if (op->kt_ival2) { + bcm_can_tx(op); ++ } + +- bcm_tx_start_timer(op); +-} +- +-/* +- * bcm_tx_timeout_handler - performs cyclic CAN frame transmissions +- */ +-static enum hrtimer_restart bcm_tx_timeout_handler(struct hrtimer *hrtimer) +-{ +- struct bcm_op *op = container_of(hrtimer, struct bcm_op, timer); +- +- tasklet_schedule(&op->tsklet); +- +- return HRTIMER_NORESTART; ++ return bcm_tx_set_expiry(op, &op->timer) ? ++ HRTIMER_RESTART : HRTIMER_NORESTART; + } + + /* +@@ -480,7 +478,7 @@ static void bcm_rx_update_and_send(struc + /* do not send the saved data - only start throttle timer */ + hrtimer_start(&op->thrtimer, + ktime_add(op->kt_lastmsg, op->kt_ival2), +- HRTIMER_MODE_ABS); ++ HRTIMER_MODE_ABS_SOFT); + return; + } + +@@ -539,14 +537,21 @@ static void bcm_rx_starttimer(struct bcm + return; + + if (op->kt_ival1) +- hrtimer_start(&op->timer, op->kt_ival1, HRTIMER_MODE_REL); ++ hrtimer_start(&op->timer, op->kt_ival1, HRTIMER_MODE_REL_SOFT); + } + +-static void bcm_rx_timeout_tsklet(unsigned long data) ++/* bcm_rx_timeout_handler - when the (cyclic) CAN frame reception timed out */ ++static enum hrtimer_restart bcm_rx_timeout_handler(struct hrtimer *hrtimer) + { +- struct bcm_op *op = (struct bcm_op *)data; ++ struct bcm_op *op = container_of(hrtimer, struct bcm_op, timer); + struct bcm_msg_head msg_head; + ++ /* if user wants to be informed, when cyclic CAN-Messages come back */ ++ if ((op->flags & RX_ANNOUNCE_RESUME) && op->last_frames) { ++ /* clear received CAN frames to indicate 'nothing received' */ ++ memset(op->last_frames, 0, op->nframes * op->cfsiz); ++ } ++ + /* create notification to user */ + msg_head.opcode = RX_TIMEOUT; + msg_head.flags = op->flags; +@@ -557,25 +562,6 @@ static void bcm_rx_timeout_tsklet(unsign + msg_head.nframes = 0; + + bcm_send_to_user(op, &msg_head, NULL, 0); +-} +- +-/* +- * bcm_rx_timeout_handler - when the (cyclic) CAN frame reception timed out +- */ +-static enum hrtimer_restart bcm_rx_timeout_handler(struct hrtimer *hrtimer) +-{ +- struct bcm_op *op = container_of(hrtimer, struct bcm_op, timer); +- +- /* schedule before NET_RX_SOFTIRQ */ +- tasklet_hi_schedule(&op->tsklet); +- +- /* no restart of the timer is done here! */ +- +- /* if user wants to be informed, when cyclic CAN-Messages come back */ +- if ((op->flags & RX_ANNOUNCE_RESUME) && op->last_frames) { +- /* clear received CAN frames to indicate 'nothing received' */ +- memset(op->last_frames, 0, op->nframes * op->cfsiz); +- } + + return HRTIMER_NORESTART; + } +@@ -583,14 +569,12 @@ static enum hrtimer_restart bcm_rx_timeo + /* + * bcm_rx_do_flush - helper for bcm_rx_thr_flush + */ +-static inline int bcm_rx_do_flush(struct bcm_op *op, int update, +- unsigned int index) ++static inline int bcm_rx_do_flush(struct bcm_op *op, unsigned int index) + { + struct canfd_frame *lcf = op->last_frames + op->cfsiz * index; + + if ((op->last_frames) && (lcf->flags & RX_THR)) { +- if (update) +- bcm_rx_changed(op, lcf); ++ bcm_rx_changed(op, lcf); + return 1; + } + return 0; +@@ -598,11 +582,8 @@ static inline int bcm_rx_do_flush(struct + + /* + * bcm_rx_thr_flush - Check for throttled data and send it to the userspace +- * +- * update == 0 : just check if throttled data is available (any irq context) +- * update == 1 : check and send throttled data to userspace (soft_irq context) + */ +-static int bcm_rx_thr_flush(struct bcm_op *op, int update) ++static int bcm_rx_thr_flush(struct bcm_op *op) + { + int updated = 0; + +@@ -611,24 +592,16 @@ static int bcm_rx_thr_flush(struct bcm_o + + /* for MUX filter we start at index 1 */ + for (i = 1; i < op->nframes; i++) +- updated += bcm_rx_do_flush(op, update, i); ++ updated += bcm_rx_do_flush(op, i); + + } else { + /* for RX_FILTER_ID and simple filter */ +- updated += bcm_rx_do_flush(op, update, 0); ++ updated += bcm_rx_do_flush(op, 0); + } + + return updated; + } + +-static void bcm_rx_thr_tsklet(unsigned long data) +-{ +- struct bcm_op *op = (struct bcm_op *)data; +- +- /* push the changed data to the userspace */ +- bcm_rx_thr_flush(op, 1); +-} +- + /* + * bcm_rx_thr_handler - the time for blocked content updates is over now: + * Check for throttled data and send it to the userspace +@@ -637,9 +610,7 @@ static enum hrtimer_restart bcm_rx_thr_h + { + struct bcm_op *op = container_of(hrtimer, struct bcm_op, thrtimer); + +- tasklet_schedule(&op->thrtsklet); +- +- if (bcm_rx_thr_flush(op, 0)) { ++ if (bcm_rx_thr_flush(op)) { + hrtimer_forward(hrtimer, ktime_get(), op->kt_ival2); + return HRTIMER_RESTART; + } else { +@@ -735,23 +706,8 @@ static struct bcm_op *bcm_find_op(struct + + static void bcm_remove_op(struct bcm_op *op) + { +- if (op->tsklet.func) { +- while (test_bit(TASKLET_STATE_SCHED, &op->tsklet.state) || +- test_bit(TASKLET_STATE_RUN, &op->tsklet.state) || +- hrtimer_active(&op->timer)) { +- hrtimer_cancel(&op->timer); +- tasklet_kill(&op->tsklet); +- } +- } +- +- if (op->thrtsklet.func) { +- while (test_bit(TASKLET_STATE_SCHED, &op->thrtsklet.state) || +- test_bit(TASKLET_STATE_RUN, &op->thrtsklet.state) || +- hrtimer_active(&op->thrtimer)) { +- hrtimer_cancel(&op->thrtimer); +- tasklet_kill(&op->thrtsklet); +- } +- } ++ hrtimer_cancel(&op->timer); ++ hrtimer_cancel(&op->thrtimer); + + if ((op->frames) && (op->frames != &op->sframe)) + kfree(op->frames); +@@ -979,15 +935,13 @@ static int bcm_tx_setup(struct bcm_msg_h + op->ifindex = ifindex; + + /* initialize uninitialized (kzalloc) structure */ +- hrtimer_init(&op->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); ++ hrtimer_init(&op->timer, CLOCK_MONOTONIC, ++ HRTIMER_MODE_REL_SOFT); + op->timer.function = bcm_tx_timeout_handler; + +- /* initialize tasklet for tx countevent notification */ +- tasklet_init(&op->tsklet, bcm_tx_timeout_tsklet, +- (unsigned long) op); +- + /* currently unused in tx_ops */ +- hrtimer_init(&op->thrtimer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); ++ hrtimer_init(&op->thrtimer, CLOCK_MONOTONIC, ++ HRTIMER_MODE_REL_SOFT); + + /* add this bcm_op to the list of the tx_ops */ + list_add(&op->list, &bo->tx_ops); +@@ -1150,20 +1104,14 @@ static int bcm_rx_setup(struct bcm_msg_h + op->rx_ifindex = ifindex; + + /* initialize uninitialized (kzalloc) structure */ +- hrtimer_init(&op->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); ++ hrtimer_init(&op->timer, CLOCK_MONOTONIC, ++ HRTIMER_MODE_REL_SOFT); + op->timer.function = bcm_rx_timeout_handler; + +- /* initialize tasklet for rx timeout notification */ +- tasklet_init(&op->tsklet, bcm_rx_timeout_tsklet, +- (unsigned long) op); +- +- hrtimer_init(&op->thrtimer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); ++ hrtimer_init(&op->thrtimer, CLOCK_MONOTONIC, ++ HRTIMER_MODE_REL_SOFT); + op->thrtimer.function = bcm_rx_thr_handler; + +- /* initialize tasklet for rx throttle handling */ +- tasklet_init(&op->thrtsklet, bcm_rx_thr_tsklet, +- (unsigned long) op); +- + /* add this bcm_op to the list of the rx_ops */ + list_add(&op->list, &bo->rx_ops); + +@@ -1209,12 +1157,12 @@ static int bcm_rx_setup(struct bcm_msg_h + */ + op->kt_lastmsg = 0; + hrtimer_cancel(&op->thrtimer); +- bcm_rx_thr_flush(op, 1); ++ bcm_rx_thr_flush(op); + } + + if ((op->flags & STARTTIMER) && op->kt_ival1) + hrtimer_start(&op->timer, op->kt_ival1, +- HRTIMER_MODE_REL); ++ HRTIMER_MODE_REL_SOFT); + } + + /* now we can register for can_ids, if we added a new bcm_op */ diff --git a/patches/features/all/rt/0030-tracing-Add-hist-trigger-support-for-variable-refere.patch b/patches/features/all/rt/0030-tracing-Add-hist-trigger-support-for-variable-refere.patch new file mode 100644 index 00000000000..9f356390099 --- /dev/null +++ b/patches/features/all/rt/0030-tracing-Add-hist-trigger-support-for-variable-refere.patch @@ -0,0 +1,161 @@ +From: Tom Zanussi +Date: Mon, 15 Jan 2018 20:52:04 -0600 +Subject: [PATCH 30/37] tracing: Add hist trigger support for variable + reference aliases +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Add support for alias=$somevar where alias can be used as +onmatch.xxx($alias). + +Aliases are a way of creating a new name for an existing variable, for +flexibly in making naming more clear in certain cases. For example in +the below the user perhaps feels that using $new_lat in the synthetic +event invocation is opaque or doesn't fit well stylistically with +previous triggers, so creates an alias of $new_lat named $latency and +uses that in the call instead: + + # echo 'hist:keys=next_pid:new_lat=common_timestamp.usecs' > + /sys/kernel/debug/tracing/events/sched/sched_switch/trigger + + # echo 'hist:keys=pid:latency=$new_lat: + onmatch(sched.sched_switch).wake2($latency,pid)' > + /sys/kernel/debug/tracing/events/synthetic/wake1/trigger + +Signed-off-by: Tom Zanussi +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/trace/trace_events_hist.c | 74 +++++++++++++++++++++++++++++++++++---- + 1 file changed, 67 insertions(+), 7 deletions(-) + +--- a/kernel/trace/trace_events_hist.c ++++ b/kernel/trace/trace_events_hist.c +@@ -228,6 +228,7 @@ enum hist_field_flags { + HIST_FIELD_FL_EXPR = 1 << 13, + HIST_FIELD_FL_VAR_REF = 1 << 14, + HIST_FIELD_FL_CPU = 1 << 15, ++ HIST_FIELD_FL_ALIAS = 1 << 16, + }; + + struct var_defs { +@@ -1609,7 +1610,8 @@ static const char *hist_field_name(struc + + if (field->field) + field_name = field->field->name; +- else if (field->flags & HIST_FIELD_FL_LOG2) ++ else if (field->flags & HIST_FIELD_FL_LOG2 || ++ field->flags & HIST_FIELD_FL_ALIAS) + field_name = hist_field_name(field->operands[0], ++level); + else if (field->flags & HIST_FIELD_FL_TIMESTAMP) + field_name = "common_timestamp"; +@@ -2080,7 +2082,7 @@ static struct hist_field *create_hist_fi + + hist_field->hist_data = hist_data; + +- if (flags & HIST_FIELD_FL_EXPR) ++ if (flags & HIST_FIELD_FL_EXPR || flags & HIST_FIELD_FL_ALIAS) + goto out; /* caller will populate */ + + if (flags & HIST_FIELD_FL_VAR_REF) { +@@ -2217,10 +2219,18 @@ static int init_var_ref(struct hist_fiel + } + } + +- ref_field->name = kstrdup(var_field->var.name, GFP_KERNEL); +- if (!ref_field->name) { +- err = -ENOMEM; +- goto free; ++ if (var_field->var.name) { ++ ref_field->name = kstrdup(var_field->var.name, GFP_KERNEL); ++ if (!ref_field->name) { ++ err = -ENOMEM; ++ goto free; ++ } ++ } else if (var_field->name) { ++ ref_field->name = kstrdup(var_field->name, GFP_KERNEL); ++ if (!ref_field->name) { ++ err = -ENOMEM; ++ goto free; ++ } + } + + ref_field->type = kstrdup(var_field->type, GFP_KERNEL); +@@ -2382,6 +2392,28 @@ parse_field(struct hist_trigger_data *hi + return field; + } + ++static struct hist_field *create_alias(struct hist_trigger_data *hist_data, ++ struct hist_field *var_ref, ++ char *var_name) ++{ ++ struct hist_field *alias = NULL; ++ unsigned long flags = HIST_FIELD_FL_ALIAS | HIST_FIELD_FL_VAR; ++ ++ alias = create_hist_field(hist_data, NULL, flags, var_name); ++ if (!alias) ++ return NULL; ++ ++ alias->fn = var_ref->fn; ++ alias->operands[0] = var_ref; ++ ++ if (init_var_ref(alias, var_ref, var_ref->system, var_ref->event_name)) { ++ destroy_hist_field(alias, 0); ++ return NULL; ++ } ++ ++ return alias; ++} ++ + static struct hist_field *parse_atom(struct hist_trigger_data *hist_data, + struct trace_event_file *file, char *str, + unsigned long *flags, char *var_name) +@@ -2415,6 +2447,13 @@ static struct hist_field *parse_atom(str + if (hist_field) { + hist_data->var_refs[hist_data->n_var_refs] = hist_field; + hist_field->var_ref_idx = hist_data->n_var_refs++; ++ if (var_name) { ++ hist_field = create_alias(hist_data, hist_field, var_name); ++ if (!hist_field) { ++ ret = -ENOMEM; ++ goto out; ++ } ++ } + return hist_field; + } + } else +@@ -2515,6 +2554,26 @@ static int check_expr_operands(struct hi + unsigned long operand1_flags = operand1->flags; + unsigned long operand2_flags = operand2->flags; + ++ if ((operand1_flags & HIST_FIELD_FL_VAR_REF) || ++ (operand1_flags & HIST_FIELD_FL_ALIAS)) { ++ struct hist_field *var; ++ ++ var = find_var_field(operand1->var.hist_data, operand1->name); ++ if (!var) ++ return -EINVAL; ++ operand1_flags = var->flags; ++ } ++ ++ if ((operand2_flags & HIST_FIELD_FL_VAR_REF) || ++ (operand2_flags & HIST_FIELD_FL_ALIAS)) { ++ struct hist_field *var; ++ ++ var = find_var_field(operand2->var.hist_data, operand2->name); ++ if (!var) ++ return -EINVAL; ++ operand2_flags = var->flags; ++ } ++ + if ((operand1_flags & HIST_FIELD_FL_TIMESTAMP_USECS) != + (operand2_flags & HIST_FIELD_FL_TIMESTAMP_USECS)) + return -EINVAL; +@@ -4648,7 +4707,8 @@ static void hist_field_print(struct seq_ + else if (hist_field->flags & HIST_FIELD_FL_CPU) + seq_puts(m, "cpu"); + else if (field_name) { +- if (hist_field->flags & HIST_FIELD_FL_VAR_REF) ++ if (hist_field->flags & HIST_FIELD_FL_VAR_REF || ++ hist_field->flags & HIST_FIELD_FL_ALIAS) + seq_putc(m, '$'); + seq_printf(m, "%s", field_name); + } diff --git a/patches/features/all/rt/0031-mac80211_hwsim-Replace-hrtimer-tasklet-with-softirq-.patch b/patches/features/all/rt/0031-mac80211_hwsim-Replace-hrtimer-tasklet-with-softirq-.patch new file mode 100644 index 00000000000..57fead06bb7 --- /dev/null +++ b/patches/features/all/rt/0031-mac80211_hwsim-Replace-hrtimer-tasklet-with-softirq-.patch @@ -0,0 +1,136 @@ +From: Thomas Gleixner +Date: Thu, 23 Nov 2017 16:39:12 +0100 +Subject: [PATCH 31/36] mac80211_hwsim: Replace hrtimer tasklet with softirq + hrtimer +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Switch the timer to HRTIMER_MODE_SOFT, which executed the timer +callback in softirq context and remove the hrtimer_tasklet. + +Signed-off-by: Thomas Gleixner +Signed-off-by: Anna-Maria Gleixner +Cc: linux-wireless@vger.kernel.org +Cc: Johannes Berg +Cc: Kalle Valo +Signed-off-by: Sebastian Andrzej Siewior +--- + drivers/net/wireless/mac80211_hwsim.c | 44 +++++++++++++++------------------- + 1 file changed, 20 insertions(+), 24 deletions(-) + +--- a/drivers/net/wireless/mac80211_hwsim.c ++++ b/drivers/net/wireless/mac80211_hwsim.c +@@ -537,7 +537,7 @@ struct mac80211_hwsim_data { + unsigned int rx_filter; + bool started, idle, scanning; + struct mutex mutex; +- struct tasklet_hrtimer beacon_timer; ++ struct hrtimer beacon_timer; + enum ps_mode { + PS_DISABLED, PS_ENABLED, PS_AUTO_POLL, PS_MANUAL_POLL + } ps; +@@ -1418,7 +1418,7 @@ static void mac80211_hwsim_stop(struct i + { + struct mac80211_hwsim_data *data = hw->priv; + data->started = false; +- tasklet_hrtimer_cancel(&data->beacon_timer); ++ hrtimer_cancel(&data->beacon_timer); + wiphy_debug(hw->wiphy, "%s\n", __func__); + } + +@@ -1541,14 +1541,12 @@ static enum hrtimer_restart + mac80211_hwsim_beacon(struct hrtimer *timer) + { + struct mac80211_hwsim_data *data = +- container_of(timer, struct mac80211_hwsim_data, +- beacon_timer.timer); ++ container_of(timer, struct mac80211_hwsim_data, beacon_timer); + struct ieee80211_hw *hw = data->hw; + u64 bcn_int = data->beacon_int; +- ktime_t next_bcn; + + if (!data->started) +- goto out; ++ return HRTIMER_NORESTART; + + ieee80211_iterate_active_interfaces_atomic( + hw, IEEE80211_IFACE_ITER_NORMAL, +@@ -1560,11 +1558,9 @@ mac80211_hwsim_beacon(struct hrtimer *ti + data->bcn_delta = 0; + } + +- next_bcn = ktime_add(hrtimer_get_expires(timer), +- ns_to_ktime(bcn_int * 1000)); +- tasklet_hrtimer_start(&data->beacon_timer, next_bcn, HRTIMER_MODE_ABS); +-out: +- return HRTIMER_NORESTART; ++ hrtimer_forward(&data->beacon_timer, hrtimer_get_expires(timer), ++ ns_to_ktime(bcn_int * NSEC_PER_USEC)); ++ return HRTIMER_RESTART; + } + + static const char * const hwsim_chanwidths[] = { +@@ -1638,15 +1634,15 @@ static int mac80211_hwsim_config(struct + mutex_unlock(&data->mutex); + + if (!data->started || !data->beacon_int) +- tasklet_hrtimer_cancel(&data->beacon_timer); +- else if (!hrtimer_is_queued(&data->beacon_timer.timer)) { ++ hrtimer_cancel(&data->beacon_timer); ++ else if (!hrtimer_is_queued(&data->beacon_timer)) { + u64 tsf = mac80211_hwsim_get_tsf(hw, NULL); + u32 bcn_int = data->beacon_int; + u64 until_tbtt = bcn_int - do_div(tsf, bcn_int); + +- tasklet_hrtimer_start(&data->beacon_timer, +- ns_to_ktime(until_tbtt * 1000), +- HRTIMER_MODE_REL); ++ hrtimer_start(&data->beacon_timer, ++ ns_to_ktime(until_tbtt * 1000), ++ HRTIMER_MODE_REL_SOFT); + } + + return 0; +@@ -1709,7 +1705,7 @@ static void mac80211_hwsim_bss_info_chan + info->enable_beacon, info->beacon_int); + vp->bcn_en = info->enable_beacon; + if (data->started && +- !hrtimer_is_queued(&data->beacon_timer.timer) && ++ !hrtimer_is_queued(&data->beacon_timer) && + info->enable_beacon) { + u64 tsf, until_tbtt; + u32 bcn_int; +@@ -1717,9 +1713,9 @@ static void mac80211_hwsim_bss_info_chan + tsf = mac80211_hwsim_get_tsf(hw, vif); + bcn_int = data->beacon_int; + until_tbtt = bcn_int - do_div(tsf, bcn_int); +- tasklet_hrtimer_start(&data->beacon_timer, +- ns_to_ktime(until_tbtt * 1000), +- HRTIMER_MODE_REL); ++ hrtimer_start(&data->beacon_timer, ++ ns_to_ktime(until_tbtt * 1000), ++ HRTIMER_MODE_REL_SOFT); + } else if (!info->enable_beacon) { + unsigned int count = 0; + ieee80211_iterate_active_interfaces_atomic( +@@ -1728,7 +1724,7 @@ static void mac80211_hwsim_bss_info_chan + wiphy_debug(hw->wiphy, " beaconing vifs remaining: %u", + count); + if (count == 0) { +- tasklet_hrtimer_cancel(&data->beacon_timer); ++ hrtimer_cancel(&data->beacon_timer); + data->beacon_int = 0; + } + } +@@ -2720,9 +2716,9 @@ static int mac80211_hwsim_new_radio(stru + data->debugfs, + data, &hwsim_simulate_radar); + +- tasklet_hrtimer_init(&data->beacon_timer, +- mac80211_hwsim_beacon, +- CLOCK_MONOTONIC, HRTIMER_MODE_ABS); ++ hrtimer_init(&data->beacon_timer, CLOCK_MONOTONIC, ++ HRTIMER_MODE_ABS_SOFT); ++ data->beacon_timer.function = mac80211_hwsim_beacon; + + spin_lock_bh(&hwsim_radio_lock); + list_add_tail(&data->list, &hwsim_radios); diff --git a/patches/features/all/rt/0031-tracing-Add-last-error-error-facility-for-hist-trigg.patch b/patches/features/all/rt/0031-tracing-Add-last-error-error-facility-for-hist-trigg.patch new file mode 100644 index 00000000000..19bbdbd9e6d --- /dev/null +++ b/patches/features/all/rt/0031-tracing-Add-last-error-error-facility-for-hist-trigg.patch @@ -0,0 +1,499 @@ +From: Tom Zanussi +Date: Mon, 15 Jan 2018 20:52:05 -0600 +Subject: [PATCH 31/37] tracing: Add 'last error' error facility for hist + triggers +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +With the addition of variables and actions, it's become necessary to +provide more detailed error information to users about syntax errors. + +Add a 'last error' facility accessible via the erroring event's 'hist' +file. Reading the hist file after an error will display more detailed +information about what went wrong, if information is available. This +extended error information will be available until the next hist +trigger command for that event. + + # echo xxx > /sys/kernel/debug/tracing/events/sched/sched_wakeup/trigger + echo: write error: Invalid argument + + # cat /sys/kernel/debug/tracing/events/sched/sched_wakeup/hist + + ERROR: Couldn't yyy: zzz + Last command: xxx + +Also add specific error messages for variable and action errors. + +Signed-off-by: Tom Zanussi +Signed-off-by: Sebastian Andrzej Siewior +--- + Documentation/trace/histogram.txt | 20 ++++ + kernel/trace/trace_events_hist.c | 164 ++++++++++++++++++++++++++++++++++---- + 2 files changed, 170 insertions(+), 14 deletions(-) + +--- a/Documentation/trace/histogram.txt ++++ b/Documentation/trace/histogram.txt +@@ -188,6 +188,26 @@ + interpreted as microseconds. + cpu int - the cpu on which the event occurred. + ++ Extended error information ++ -------------------------- ++ ++ For some error conditions encountered when invoking a hist trigger ++ command, extended error information is available via the ++ corresponding event's 'hist' file. Reading the hist file after an ++ error will display more detailed information about what went wrong, ++ if information is available. This extended error information will ++ be available until the next hist trigger command for that event. ++ ++ If available for a given error condition, the extended error ++ information and usage takes the following form: ++ ++ # echo xxx > /sys/kernel/debug/tracing/events/sched/sched_wakeup/trigger ++ echo: write error: Invalid argument ++ ++ # cat /sys/kernel/debug/tracing/events/sched/sched_wakeup/hist ++ ERROR: Couldn't yyy: zzz ++ Last command: xxx ++ + 6.2 'hist' trigger examples + --------------------------- + +--- a/kernel/trace/trace_events_hist.c ++++ b/kernel/trace/trace_events_hist.c +@@ -351,6 +351,65 @@ struct action_data { + }; + }; + ++ ++static char last_hist_cmd[MAX_FILTER_STR_VAL]; ++static char hist_err_str[MAX_FILTER_STR_VAL]; ++ ++static void last_cmd_set(char *str) ++{ ++ if (!str) ++ return; ++ ++ strncpy(last_hist_cmd, str, MAX_FILTER_STR_VAL - 1); ++} ++ ++static void hist_err(char *str, char *var) ++{ ++ int maxlen = MAX_FILTER_STR_VAL - 1; ++ ++ if (!str) ++ return; ++ ++ if (strlen(hist_err_str)) ++ return; ++ ++ if (!var) ++ var = ""; ++ ++ if (strlen(hist_err_str) + strlen(str) + strlen(var) > maxlen) ++ return; ++ ++ strcat(hist_err_str, str); ++ strcat(hist_err_str, var); ++} ++ ++static void hist_err_event(char *str, char *system, char *event, char *var) ++{ ++ char err[MAX_FILTER_STR_VAL]; ++ ++ if (system && var) ++ snprintf(err, MAX_FILTER_STR_VAL, "%s.%s.%s", system, event, var); ++ else if (system) ++ snprintf(err, MAX_FILTER_STR_VAL, "%s.%s", system, event); ++ else ++ strncpy(err, var, MAX_FILTER_STR_VAL); ++ ++ hist_err(str, err); ++} ++ ++static void hist_err_clear(void) ++{ ++ hist_err_str[0] = '\0'; ++} ++ ++static bool have_hist_err(void) ++{ ++ if (strlen(hist_err_str)) ++ return true; ++ ++ return false; ++} ++ + static LIST_HEAD(synth_event_list); + static DEFINE_MUTEX(synth_event_mutex); + +@@ -1448,8 +1507,10 @@ static struct trace_event_file *find_var + continue; + + if (find_var_field(var_hist_data, var_name)) { +- if (found) ++ if (found) { ++ hist_err_event("Variable name not unique, need to use fully qualified name (subsys.event.var) for variable: ", system, event_name, var_name); + return NULL; ++ } + + found = file; + } +@@ -1498,6 +1559,7 @@ find_match_var(struct hist_trigger_data + hist_field = find_file_var(file, var_name); + if (hist_field) { + if (found) { ++ hist_err_event("Variable name not unique, need to use fully qualified name (subsys.event.var) for variable: ", system, event_name, var_name); + return ERR_PTR(-EINVAL); + } + +@@ -1781,6 +1843,7 @@ static int parse_assignment(char *str, s + char *assignment; + + if (attrs->n_assignments == TRACING_MAP_VARS_MAX) { ++ hist_err("Too many variables defined: ", str); + ret = -EINVAL; + goto out; + } +@@ -2335,6 +2398,10 @@ static struct hist_field *parse_var_ref( + if (var_field) + ref_field = create_var_ref(var_field, system, event_name); + ++ if (!ref_field) ++ hist_err_event("Couldn't find variable: $", ++ system, event_name, var_name); ++ + return ref_field; + } + +@@ -2494,6 +2561,7 @@ static struct hist_field *parse_unary(st + // we support only -(xxx) i.e. explicit parens required + + if (level > 3) { ++ hist_err("Too many subexpressions (3 max): ", str); + ret = -EINVAL; + goto free; + } +@@ -2575,8 +2643,10 @@ static int check_expr_operands(struct hi + } + + if ((operand1_flags & HIST_FIELD_FL_TIMESTAMP_USECS) != +- (operand2_flags & HIST_FIELD_FL_TIMESTAMP_USECS)) ++ (operand2_flags & HIST_FIELD_FL_TIMESTAMP_USECS)) { ++ hist_err("Timestamp units in expression don't match", NULL); + return -EINVAL; ++ } + + return 0; + } +@@ -2591,8 +2661,10 @@ static struct hist_field *parse_expr(str + int field_op, ret = -EINVAL; + char *sep, *operand1_str; + +- if (level > 3) ++ if (level > 3) { ++ hist_err("Too many subexpressions (3 max): ", str); + return ERR_PTR(-EINVAL); ++ } + + field_op = contains_operator(str); + +@@ -2826,12 +2898,17 @@ create_field_var_hist(struct hist_trigge + char *cmd; + int ret; + +- if (target_hist_data->n_field_var_hists >= SYNTH_FIELDS_MAX) ++ if (target_hist_data->n_field_var_hists >= SYNTH_FIELDS_MAX) { ++ hist_err_event("onmatch: Too many field variables defined: ", ++ subsys_name, event_name, field_name); + return ERR_PTR(-EINVAL); ++ } + + file = event_file(tr, subsys_name, event_name); + + if (IS_ERR(file)) { ++ hist_err_event("onmatch: Event file not found: ", ++ subsys_name, event_name, field_name); + ret = PTR_ERR(file); + return ERR_PTR(ret); + } +@@ -2843,8 +2920,11 @@ create_field_var_hist(struct hist_trigge + * yet a registered histogram so we can't use that. + */ + hist_data = find_compatible_hist(target_hist_data, file); +- if (!hist_data) ++ if (!hist_data) { ++ hist_err_event("onmatch: Matching event histogram not found: ", ++ subsys_name, event_name, field_name); + return ERR_PTR(-EINVAL); ++ } + + /* See if a synthetic field variable has already been created */ + event_var = find_synthetic_field_var(target_hist_data, subsys_name, +@@ -2903,6 +2983,8 @@ create_field_var_hist(struct hist_trigge + kfree(cmd); + kfree(var_hist->cmd); + kfree(var_hist); ++ hist_err_event("onmatch: Couldn't create histogram for field: ", ++ subsys_name, event_name, field_name); + return ERR_PTR(ret); + } + +@@ -2914,6 +2996,8 @@ create_field_var_hist(struct hist_trigge + if (IS_ERR_OR_NULL(event_var)) { + kfree(var_hist->cmd); + kfree(var_hist); ++ hist_err_event("onmatch: Couldn't find synthetic variable: ", ++ subsys_name, event_name, field_name); + return ERR_PTR(-EINVAL); + } + +@@ -3050,18 +3134,21 @@ static struct field_var *create_field_va + int ret = 0; + + if (hist_data->n_field_vars >= SYNTH_FIELDS_MAX) { ++ hist_err("Too many field variables defined: ", field_name); + ret = -EINVAL; + goto err; + } + + val = parse_atom(hist_data, file, field_name, &flags, NULL); + if (IS_ERR(val)) { ++ hist_err("Couldn't parse field variable: ", field_name); + ret = PTR_ERR(val); + goto err; + } + + var = create_var(hist_data, file, field_name, val->size, val->type); + if (IS_ERR(var)) { ++ hist_err("Couldn't create or find variable: ", field_name); + kfree(val); + ret = PTR_ERR(var); + goto err; +@@ -3204,13 +3291,17 @@ static int onmax_create(struct hist_trig + int ret = 0; + + onmax_var_str = data->onmax.var_str; +- if (onmax_var_str[0] != '$') ++ if (onmax_var_str[0] != '$') { ++ hist_err("onmax: For onmax(x), x must be a variable: ", onmax_var_str); + return -EINVAL; ++ } + onmax_var_str++; + + var_field = find_target_event_var(hist_data, NULL, NULL, onmax_var_str); +- if (!var_field) ++ if (!var_field) { ++ hist_err("onmax: Couldn't find onmax variable: ", onmax_var_str); + return -EINVAL; ++ } + + flags = HIST_FIELD_FL_VAR_REF; + ref_field = create_hist_field(hist_data, NULL, flags, NULL); +@@ -3230,6 +3321,7 @@ static int onmax_create(struct hist_trig + data->onmax.max_var_ref_idx = var_ref_idx; + max_var = create_var(hist_data, file, "max", sizeof(u64), "u64"); + if (IS_ERR(max_var)) { ++ hist_err("onmax: Couldn't create onmax variable: ", "max"); + ret = PTR_ERR(max_var); + goto out; + } +@@ -3244,6 +3336,7 @@ static int onmax_create(struct hist_trig + + field_var = create_target_field_var(hist_data, NULL, NULL, param); + if (IS_ERR(field_var)) { ++ hist_err("onmax: Couldn't create field variable: ", param); + ret = PTR_ERR(field_var); + kfree(param); + goto out; +@@ -3276,6 +3369,7 @@ static int parse_action_params(char *par + + param = strstrip(param); + if (strlen(param) < 2) { ++ hist_err("Invalid action param: ", param); + ret = -EINVAL; + goto out; + } +@@ -3451,6 +3545,9 @@ onmatch_find_var(struct hist_trigger_dat + hist_field = find_event_var(hist_data, system, event, var); + } + ++ if (!hist_field) ++ hist_err_event("onmatch: Couldn't find onmatch param: $", system, event, var); ++ + return hist_field; + } + +@@ -3518,6 +3615,7 @@ static int onmatch_create(struct hist_tr + mutex_lock(&synth_event_mutex); + event = find_synth_event(data->onmatch.synth_event_name); + if (!event) { ++ hist_err("onmatch: Couldn't find synthetic event: ", data->onmatch.synth_event_name); + mutex_unlock(&synth_event_mutex); + return -EINVAL; + } +@@ -3577,12 +3675,15 @@ static int onmatch_create(struct hist_tr + continue; + } + ++ hist_err_event("onmatch: Param type doesn't match synthetic event field type: ", ++ system, event_name, param); + kfree(p); + ret = -EINVAL; + goto err; + } + + if (field_pos != event->n_fields) { ++ hist_err("onmatch: Param count doesn't match synthetic event field count: ", event->name); + ret = -EINVAL; + goto err; + } +@@ -3612,15 +3713,22 @@ static struct action_data *onmatch_parse + return ERR_PTR(-ENOMEM); + + match_event = strsep(&str, ")"); +- if (!match_event || !str) ++ if (!match_event || !str) { ++ hist_err("onmatch: Missing closing paren: ", match_event); + goto free; ++ } + + match_event_system = strsep(&match_event, "."); +- if (!match_event) ++ if (!match_event) { ++ hist_err("onmatch: Missing subsystem for match event: ", match_event_system); + goto free; ++ } + +- if (IS_ERR(event_file(tr, match_event_system, match_event))) ++ if (IS_ERR(event_file(tr, match_event_system, match_event))) { ++ hist_err_event("onmatch: Invalid subsystem or event name: ", ++ match_event_system, match_event, NULL); + goto free; ++ } + + data->onmatch.match_event = kstrdup(match_event, GFP_KERNEL); + if (!data->onmatch.match_event) { +@@ -3635,12 +3743,16 @@ static struct action_data *onmatch_parse + } + + strsep(&str, "."); +- if (!str) ++ if (!str) { ++ hist_err("onmatch: Missing . after onmatch(): ", str); + goto free; ++ } + + synth_event_name = strsep(&str, "("); +- if (!synth_event_name || !str) ++ if (!synth_event_name || !str) { ++ hist_err("onmatch: Missing opening paramlist paren: ", synth_event_name); + goto free; ++ } + + data->onmatch.synth_event_name = kstrdup(synth_event_name, GFP_KERNEL); + if (!data->onmatch.synth_event_name) { +@@ -3649,8 +3761,10 @@ static struct action_data *onmatch_parse + } + + params = strsep(&str, ")"); +- if (!params || !str || (str && strlen(str))) ++ if (!params || !str || (str && strlen(str))) { ++ hist_err("onmatch: Missing closing paramlist paren: ", params); + goto free; ++ } + + ret = parse_action_params(params, data); + if (ret) +@@ -3725,7 +3839,9 @@ static int create_var_field(struct hist_ + + if (WARN_ON(val_idx >= TRACING_MAP_VALS_MAX + TRACING_MAP_VARS_MAX)) + return -EINVAL; ++ + if (find_var(hist_data, file, var_name) && !hist_data->remove) { ++ hist_err("Variable already defined: ", var_name); + return -EINVAL; + } + +@@ -3806,6 +3922,7 @@ static int create_key_field(struct hist_ + } + + if (hist_field->flags & HIST_FIELD_FL_VAR_REF) { ++ hist_err("Using variable references as keys not supported: ", field_str); + destroy_hist_field(hist_field, 0); + ret = -EINVAL; + goto out; +@@ -3919,11 +4036,13 @@ static int parse_var_defs(struct hist_tr + + var_name = strsep(&field_str, "="); + if (!var_name || !field_str) { ++ hist_err("Malformed assignment: ", var_name); + ret = -EINVAL; + goto free; + } + + if (n_vars == TRACING_MAP_VARS_MAX) { ++ hist_err("Too many variables defined: ", var_name); + ret = -EINVAL; + goto free; + } +@@ -4677,6 +4796,11 @@ static int hist_show(struct seq_file *m, + hist_trigger_show(m, data, n++); + } + ++ if (have_hist_err()) { ++ seq_printf(m, "\nERROR: %s\n", hist_err_str); ++ seq_printf(m, " Last command: %s\n", last_hist_cmd); ++ } ++ + out_unlock: + mutex_unlock(&event_mutex); + +@@ -5041,6 +5165,7 @@ static int hist_register_trigger(char *g + if (named_data) { + if (!hist_trigger_match(data, named_data, named_data, + true)) { ++ hist_err("Named hist trigger doesn't match existing named trigger (includes variables): ", hist_data->attrs->name); + ret = -EINVAL; + goto out; + } +@@ -5060,13 +5185,16 @@ static int hist_register_trigger(char *g + test->paused = false; + else if (hist_data->attrs->clear) + hist_clear(test); +- else ++ else { ++ hist_err("Hist trigger already exists", NULL); + ret = -EEXIST; ++ } + goto out; + } + } + new: + if (hist_data->attrs->cont || hist_data->attrs->clear) { ++ hist_err("Can't clear or continue a nonexistent hist trigger", NULL); + ret = -ENOENT; + goto out; + } +@@ -5253,6 +5381,11 @@ static int event_hist_trigger_func(struc + char *trigger, *p; + int ret = 0; + ++ if (glob && strlen(glob)) { ++ last_cmd_set(param); ++ hist_err_clear(); ++ } ++ + if (!param) + return -EINVAL; + +@@ -5391,6 +5524,9 @@ static int event_hist_trigger_func(struc + /* Just return zero, not the number of registered triggers */ + ret = 0; + out: ++ if (ret == 0) ++ hist_err_clear(); ++ + return ret; + out_unreg: + cmd_ops->unreg(glob+1, trigger_ops, trigger_data, file); diff --git a/patches/features/all/rt/0032-tracing-Add-inter-event-hist-trigger-Documentation.patch b/patches/features/all/rt/0032-tracing-Add-inter-event-hist-trigger-Documentation.patch new file mode 100644 index 00000000000..039fb65332c --- /dev/null +++ b/patches/features/all/rt/0032-tracing-Add-inter-event-hist-trigger-Documentation.patch @@ -0,0 +1,402 @@ +From: Tom Zanussi +Date: Mon, 15 Jan 2018 20:52:06 -0600 +Subject: [PATCH 32/37] tracing: Add inter-event hist trigger Documentation +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Add background and details on inter-event hist triggers, including +hist variables, synthetic events, and actions. + +Signed-off-by: Tom Zanussi +Signed-off-by: Baohong Liu +Signed-off-by: Sebastian Andrzej Siewior +--- + Documentation/trace/histogram.txt | 381 ++++++++++++++++++++++++++++++++++++++ + 1 file changed, 381 insertions(+) + +--- a/Documentation/trace/histogram.txt ++++ b/Documentation/trace/histogram.txt +@@ -1603,3 +1603,384 @@ + Hits: 489 + Entries: 7 + Dropped: 0 ++ ++ ++2.2 Inter-event hist triggers ++----------------------------- ++ ++Inter-event hist triggers are hist triggers that combine values from ++one or more other events and create a histogram using that data. Data ++from an inter-event histogram can in turn become the source for ++further combined histograms, thus providing a chain of related ++histograms, which is important for some applications. ++ ++The most important example of an inter-event quantity that can be used ++in this manner is latency, which is simply a difference in timestamps ++between two events. Although latency is the most important ++inter-event quantity, note that because the support is completely ++general across the trace event subsystem, any event field can be used ++in an inter-event quantity. ++ ++An example of a histogram that combines data from other histograms ++into a useful chain would be a 'wakeupswitch latency' histogram that ++combines a 'wakeup latency' histogram and a 'switch latency' ++histogram. ++ ++Normally, a hist trigger specification consists of a (possibly ++compound) key along with one or more numeric values, which are ++continually updated sums associated with that key. A histogram ++specification in this case consists of individual key and value ++specifications that refer to trace event fields associated with a ++single event type. ++ ++The inter-event hist trigger extension allows fields from multiple ++events to be referenced and combined into a multi-event histogram ++specification. In support of this overall goal, a few enabling ++features have been added to the hist trigger support: ++ ++ - In order to compute an inter-event quantity, a value from one ++ event needs to saved and then referenced from another event. This ++ requires the introduction of support for histogram 'variables'. ++ ++ - The computation of inter-event quantities and their combination ++ require some minimal amount of support for applying simple ++ expressions to variables (+ and -). ++ ++ - A histogram consisting of inter-event quantities isn't logically a ++ histogram on either event (so having the 'hist' file for either ++ event host the histogram output doesn't really make sense). To ++ address the idea that the histogram is associated with a ++ combination of events, support is added allowing the creation of ++ 'synthetic' events that are events derived from other events. ++ These synthetic events are full-fledged events just like any other ++ and can be used as such, as for instance to create the ++ 'combination' histograms mentioned previously. ++ ++ - A set of 'actions' can be associated with histogram entries - ++ these can be used to generate the previously mentioned synthetic ++ events, but can also be used for other purposes, such as for ++ example saving context when a 'max' latency has been hit. ++ ++ - Trace events don't have a 'timestamp' associated with them, but ++ there is an implicit timestamp saved along with an event in the ++ underlying ftrace ring buffer. This timestamp is now exposed as a ++ a synthetic field named 'common_timestamp' which can be used in ++ histograms as if it were any other event field; it isn't an actual ++ field in the trace format but rather is a synthesized value that ++ nonetheless can be used as if it were an actual field. By default ++ it is in units of nanoseconds; appending '.usecs' to a ++ common_timestamp field changes the units to microseconds. ++ ++These features are decribed in more detail in the following sections. ++ ++2.2.1 Histogram Variables ++------------------------- ++ ++Variables are simply named locations used for saving and retrieving ++values between matching events. A 'matching' event is defined as an ++event that has a matching key - if a variable is saved for a histogram ++entry corresponding to that key, any subsequent event with a matching ++key can access that variable. ++ ++A variable's value is normally available to any subsequent event until ++it is set to something else by a subsequent event. The one exception ++to that rule is that any variable used in an expression is essentially ++'read-once' - once it's used by an expression in a subsequent event, ++it's reset to its 'unset' state, which means it can't be used again ++unless it's set again. This ensures not only that an event doesn't ++use an uninitialized variable in a calculation, but that that variable ++is used only once and not for any unrelated subsequent match. ++ ++The basic syntax for saving a variable is to simply prefix a unique ++variable name not corresponding to any keyword along with an '=' sign ++to any event field. ++ ++Either keys or values can be saved and retrieved in this way. This ++creates a variable named 'ts0' for a histogram entry with the key ++'next_pid': ++ ++ # echo 'hist:keys=next_pid:vals=$ts0:ts0=common_timestamp ... >> \ ++ event/trigger ++ ++The ts0 variable can be accessed by any subsequent event having the ++same pid as 'next_pid'. ++ ++Variable references are formed by prepending the variable name with ++the '$' sign. Thus for example, the ts0 variable above would be ++referenced as '$ts0' in expressions. ++ ++Because 'vals=' is used, the common_timestamp variable value above ++will also be summed as a normal histogram value would (though for a ++timestamp it makes little sense). ++ ++The below shows that a key value can also be saved in the same way: ++ ++ # echo 'hist:timer_pid=common_pid:key=timer_pid ...' >> event/trigger ++ ++If a variable isn't a key variable or prefixed with 'vals=', the ++associated event field will be saved in a variable but won't be summed ++as a value: ++ ++ # echo 'hist:keys=next_pid:ts1=common_timestamp ... >> event/trigger ++ ++Multiple variables can be assigned at the same time. The below would ++result in both ts0 and b being created as variables, with both ++common_timestamp and field1 additionally being summed as values: ++ ++ # echo 'hist:keys=pid:vals=$ts0,$b:ts0=common_timestamp,b=field1 ... >> \ ++ event/trigger ++ ++Note that variable assignments can appear either preceding or ++following their use. The command below behaves identically to the ++command above: ++ ++ # echo 'hist:keys=pid:ts0=common_timestamp,b=field1:vals=$ts0,$b ... >> \ ++ event/trigger ++ ++Any number of variables not bound to a 'vals=' prefix can also be ++assigned by simply separating them with colons. Below is the same ++thing but without the values being summed in the histogram: ++ ++ # echo 'hist:keys=pid:ts0=common_timestamp:b=field1 ... >> event/trigger ++ ++Variables set as above can be referenced and used in expressions on ++another event. ++ ++For example, here's how a latency can be calculated: ++ ++ # echo 'hist:keys=pid,prio:ts0=common_timestamp ... >> event1/trigger ++ # echo 'hist:keys=next_pid:wakeup_lat=common_timestamp-$ts0 ... >> event2/trigger ++ ++In the first line above, the event's timetamp is saved into the ++variable ts0. In the next line, ts0 is subtracted from the second ++event's timestamp to produce the latency, which is then assigned into ++yet another variable, 'wakeup_lat'. The hist trigger below in turn ++makes use of the wakeup_lat variable to compute a combined latency ++using the same key and variable from yet another event: ++ ++ # echo 'hist:key=pid:wakeupswitch_lat=$wakeup_lat+$switchtime_lat ... >> event3/trigger ++ ++2.2.2 Synthetic Events ++---------------------- ++ ++Synthetic events are user-defined events generated from hist trigger ++variables or fields associated with one or more other events. Their ++purpose is to provide a mechanism for displaying data spanning ++multiple events consistent with the existing and already familiar ++usage for normal events. ++ ++To define a synthetic event, the user writes a simple specification ++consisting of the name of the new event along with one or more ++variables and their types, which can be any valid field type, ++separated by semicolons, to the tracing/synthetic_events file. ++ ++For instance, the following creates a new event named 'wakeup_latency' ++with 3 fields: lat, pid, and prio. Each of those fields is simply a ++variable reference to a variable on another event: ++ ++ # echo 'wakeup_latency \ ++ u64 lat; \ ++ pid_t pid; \ ++ int prio' >> \ ++ /sys/kernel/debug/tracing/synthetic_events ++ ++Reading the tracing/synthetic_events file lists all the currently ++defined synthetic events, in this case the event defined above: ++ ++ # cat /sys/kernel/debug/tracing/synthetic_events ++ wakeup_latency u64 lat; pid_t pid; int prio ++ ++An existing synthetic event definition can be removed by prepending ++the command that defined it with a '!': ++ ++ # echo '!wakeup_latency u64 lat pid_t pid int prio' >> \ ++ /sys/kernel/debug/tracing/synthetic_events ++ ++At this point, there isn't yet an actual 'wakeup_latency' event ++instantiated in the event subsytem - for this to happen, a 'hist ++trigger action' needs to be instantiated and bound to actual fields ++and variables defined on other events (see Section 6.3.3 below). ++ ++Once that is done, an event instance is created, and a histogram can ++be defined using it: ++ ++ # echo 'hist:keys=pid,prio,lat.log2:sort=pid,lat' >> \ ++ /sys/kernel/debug/tracing/events/synthetic/wakeup_latency/trigger ++ ++The new event is created under the tracing/events/synthetic/ directory ++and looks and behaves just like any other event: ++ ++ # ls /sys/kernel/debug/tracing/events/synthetic/wakeup_latency ++ enable filter format hist id trigger ++ ++Like any other event, once a histogram is enabled for the event, the ++output can be displayed by reading the event's 'hist' file. ++ ++2.2.3 Hist trigger 'actions' ++---------------------------- ++ ++A hist trigger 'action' is a function that's executed whenever a ++histogram entry is added or updated. ++ ++The default 'action' if no special function is explicity specified is ++as it always has been, to simply update the set of values associated ++with an entry. Some applications, however, may want to perform ++additional actions at that point, such as generate another event, or ++compare and save a maximum. ++ ++The following additional actions are available. To specify an action ++for a given event, simply specify the action between colons in the ++hist trigger specification. ++ ++ - onmatch(matching.event).(param list) ++ ++ The 'onmatch(matching.event).(params)' hist ++ trigger action is invoked whenever an event matches and the ++ histogram entry would be added or updated. It causes the named ++ synthetic event to be generated with the values given in the ++ 'param list'. The result is the generation of a synthetic event ++ that consists of the values contained in those variables at the ++ time the invoking event was hit. ++ ++ The 'param list' consists of one or more parameters which may be ++ either variables or fields defined on either the 'matching.event' ++ or the target event. The variables or fields specified in the ++ param list may be either fully-qualified or unqualified. If a ++ variable is specified as unqualified, it must be unique between ++ the two events. A field name used as a param can be unqualified ++ if it refers to the target event, but must be fully qualified if ++ it refers to the matching event. A fully-qualified name is of the ++ form 'system.event_name.$var_name' or 'system.event_name.field'. ++ ++ The 'matching.event' specification is simply the fully qualified ++ event name of the event that matches the target event for the ++ onmatch() functionality, in the form 'system.event_name'. ++ ++ Finally, the number and type of variables/fields in the 'param ++ list' must match the number and types of the fields in the ++ synthetic event being generated. ++ ++ As an example the below defines a simple synthetic event and uses ++ a variable defined on the sched_wakeup_new event as a parameter ++ when invoking the synthetic event. Here we define the synthetic ++ event: ++ ++ # echo 'wakeup_new_test pid_t pid' >> \ ++ /sys/kernel/debug/tracing/synthetic_events ++ ++ # cat /sys/kernel/debug/tracing/synthetic_events ++ wakeup_new_test pid_t pid ++ ++ The following hist trigger both defines the missing testpid ++ variable and specifies an onmatch() action that generates a ++ wakeup_new_test synthetic event whenever a sched_wakeup_new event ++ occurs, which because of the 'if comm == "cyclictest"' filter only ++ happens when the executable is cyclictest: ++ ++ # echo 'hist:keys=$testpid:testpid=pid:onmatch(sched.sched_wakeup_new).\ ++ wakeup_new_test($testpid) if comm=="cyclictest"' >> \ ++ /sys/kernel/debug/tracing/events/sched/sched_wakeup_new/trigger ++ ++ Creating and displaying a histogram based on those events is now ++ just a matter of using the fields and new synthetic event in the ++ tracing/events/synthetic directory, as usual: ++ ++ # echo 'hist:keys=pid:sort=pid' >> \ ++ /sys/kernel/debug/tracing/events/synthetic/wakeup_new_test/trigger ++ ++ Running 'cyclictest' should cause wakeup_new events to generate ++ wakeup_new_test synthetic events which should result in histogram ++ output in the wakeup_new_test event's hist file: ++ ++ # cat /sys/kernel/debug/tracing/events/synthetic/wakeup_new_test/hist ++ ++ A more typical usage would be to use two events to calculate a ++ latency. The following example uses a set of hist triggers to ++ produce a 'wakeup_latency' histogram: ++ ++ First, we define a 'wakeup_latency' synthetic event: ++ ++ # echo 'wakeup_latency u64 lat; pid_t pid; int prio' >> \ ++ /sys/kernel/debug/tracing/synthetic_events ++ ++ Next, we specify that whenever we see a sched_waking event for a ++ cyclictest thread, save the timestamp in a 'ts0' variable: ++ ++ # echo 'hist:keys=$saved_pid:saved_pid=pid:ts0=common_timestamp.usecs \ ++ if comm=="cyclictest"' >> \ ++ /sys/kernel/debug/tracing/events/sched/sched_waking/trigger ++ ++ Then, when the corresponding thread is actually scheduled onto the ++ CPU by a sched_switch event, calculate the latency and use that ++ along with another variable and an event field to generate a ++ wakeup_latency synthetic event: ++ ++ # echo 'hist:keys=next_pid:wakeup_lat=common_timestamp.usecs-$ts0:\ ++ onmatch(sched.sched_waking).wakeup_latency($wakeup_lat,\ ++ $saved_pid,next_prio) if next_comm=="cyclictest"' >> \ ++ /sys/kernel/debug/tracing/events/sched/sched_switch/trigger ++ ++ We also need to create a histogram on the wakeup_latency synthetic ++ event in order to aggregate the generated synthetic event data: ++ ++ # echo 'hist:keys=pid,prio,lat:sort=pid,lat' >> \ ++ /sys/kernel/debug/tracing/events/synthetic/wakeup_latency/trigger ++ ++ Finally, once we've run cyclictest to actually generate some ++ events, we can see the output by looking at the wakeup_latency ++ synthetic event's hist file: ++ ++ # cat /sys/kernel/debug/tracing/events/synthetic/wakeup_latency/hist ++ ++ - onmax(var).save(field,.. .) ++ ++ The 'onmax(var).save(field,...)' hist trigger action is invoked ++ whenever the value of 'var' associated with a histogram entry ++ exceeds the current maximum contained in that variable. ++ ++ The end result is that the trace event fields specified as the ++ onmax.save() params will be saved if 'var' exceeds the current ++ maximum for that hist trigger entry. This allows context from the ++ event that exhibited the new maximum to be saved for later ++ reference. When the histogram is displayed, additional fields ++ displaying the saved values will be printed. ++ ++ As an example the below defines a couple of hist triggers, one for ++ sched_waking and another for sched_switch, keyed on pid. Whenever ++ a sched_waking occurs, the timestamp is saved in the entry ++ corresponding to the current pid, and when the scheduler switches ++ back to that pid, the timestamp difference is calculated. If the ++ resulting latency, stored in wakeup_lat, exceeds the current ++ maximum latency, the values specified in the save() fields are ++ recoreded: ++ ++ # echo 'hist:keys=pid:ts0=common_timestamp.usecs \ ++ if comm=="cyclictest"' >> \ ++ /sys/kernel/debug/tracing/events/sched/sched_waking/trigger ++ ++ # echo 'hist:keys=next_pid:\ ++ wakeup_lat=common_timestamp.usecs-$ts0:\ ++ onmax($wakeup_lat).save(next_comm,prev_pid,prev_prio,prev_comm) \ ++ if next_comm=="cyclictest"' >> \ ++ /sys/kernel/debug/tracing/events/sched/sched_switch/trigger ++ ++ When the histogram is displayed, the max value and the saved ++ values corresponding to the max are displayed following the rest ++ of the fields: ++ ++ # cat /sys/kernel/debug/tracing/events/sched/sched_switch/hist ++ { next_pid: 2255 } hitcount: 239 ++ common_timestamp-ts0: 0 ++ max: 27 ++ next_comm: cyclictest ++ prev_pid: 0 prev_prio: 120 prev_comm: swapper/1 ++ ++ { next_pid: 2256 } hitcount: 2355 ++ common_timestamp-ts0: 0 ++ max: 49 next_comm: cyclictest ++ prev_pid: 0 prev_prio: 120 prev_comm: swapper/0 ++ ++ Totals: ++ Hits: 12970 ++ Entries: 2 ++ Dropped: 0 diff --git a/patches/features/all/rt/0032-xfrm-Replace-hrtimer-tasklet-with-softirq-hrtimer.patch b/patches/features/all/rt/0032-xfrm-Replace-hrtimer-tasklet-with-softirq-hrtimer.patch new file mode 100644 index 00000000000..266304c3337 --- /dev/null +++ b/patches/features/all/rt/0032-xfrm-Replace-hrtimer-tasklet-with-softirq-hrtimer.patch @@ -0,0 +1,133 @@ +From: Thomas Gleixner +Date: Thu, 23 Nov 2017 16:39:13 +0100 +Subject: [PATCH 32/36] xfrm: Replace hrtimer tasklet with softirq hrtimer +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Switch the timer to HRTIMER_MODE_SOFT, which executed the timer +callback in softirq context and remove the hrtimer_tasklet. + +Signed-off-by: Thomas Gleixner +Signed-off-by: Anna-Maria Gleixner +Cc: Steffen Klassert +Cc: netdev@vger.kernel.org +Cc: Herbert Xu +Cc: "David S. Miller" +Signed-off-by: Sebastian Andrzej Siewior +--- + include/net/xfrm.h | 2 +- + net/xfrm/xfrm_state.c | 30 ++++++++++++++++++------------ + 2 files changed, 19 insertions(+), 13 deletions(-) + +--- a/include/net/xfrm.h ++++ b/include/net/xfrm.h +@@ -217,7 +217,7 @@ struct xfrm_state { + struct xfrm_stats stats; + + struct xfrm_lifetime_cur curlft; +- struct tasklet_hrtimer mtimer; ++ struct hrtimer mtimer; + + struct xfrm_state_offload xso; + +--- a/net/xfrm/xfrm_state.c ++++ b/net/xfrm/xfrm_state.c +@@ -426,7 +426,7 @@ static void xfrm_put_mode(struct xfrm_mo + + static void xfrm_state_gc_destroy(struct xfrm_state *x) + { +- tasklet_hrtimer_cancel(&x->mtimer); ++ hrtimer_cancel(&x->mtimer); + del_timer_sync(&x->rtimer); + kfree(x->aead); + kfree(x->aalg); +@@ -471,8 +471,8 @@ static void xfrm_state_gc_task(struct wo + + static enum hrtimer_restart xfrm_timer_handler(struct hrtimer *me) + { +- struct tasklet_hrtimer *thr = container_of(me, struct tasklet_hrtimer, timer); +- struct xfrm_state *x = container_of(thr, struct xfrm_state, mtimer); ++ struct xfrm_state *x = container_of(me, struct xfrm_state, mtimer); ++ enum hrtimer_restart ret = HRTIMER_NORESTART; + unsigned long now = get_seconds(); + long next = LONG_MAX; + int warn = 0; +@@ -536,7 +536,8 @@ static enum hrtimer_restart xfrm_timer_h + km_state_expired(x, 0, 0); + resched: + if (next != LONG_MAX) { +- tasklet_hrtimer_start(&x->mtimer, ktime_set(next, 0), HRTIMER_MODE_REL); ++ hrtimer_forward_now(&x->mtimer, ktime_set(next, 0)); ++ ret = HRTIMER_RESTART; + } + + goto out; +@@ -553,7 +554,7 @@ static enum hrtimer_restart xfrm_timer_h + + out: + spin_unlock(&x->lock); +- return HRTIMER_NORESTART; ++ return ret; + } + + static void xfrm_replay_timer_handler(unsigned long data); +@@ -572,8 +573,8 @@ struct xfrm_state *xfrm_state_alloc(stru + INIT_HLIST_NODE(&x->bydst); + INIT_HLIST_NODE(&x->bysrc); + INIT_HLIST_NODE(&x->byspi); +- tasklet_hrtimer_init(&x->mtimer, xfrm_timer_handler, +- CLOCK_BOOTTIME, HRTIMER_MODE_ABS); ++ hrtimer_init(&x->mtimer, CLOCK_BOOTTIME, HRTIMER_MODE_ABS_SOFT); ++ x->mtimer.function = xfrm_timer_handler; + setup_timer(&x->rtimer, xfrm_replay_timer_handler, + (unsigned long)x); + x->curlft.add_time = get_seconds(); +@@ -1030,7 +1031,9 @@ xfrm_state_find(const xfrm_address_t *da + hlist_add_head_rcu(&x->byspi, net->xfrm.state_byspi + h); + } + x->lft.hard_add_expires_seconds = net->xfrm.sysctl_acq_expires; +- tasklet_hrtimer_start(&x->mtimer, ktime_set(net->xfrm.sysctl_acq_expires, 0), HRTIMER_MODE_REL); ++ hrtimer_start(&x->mtimer, ++ ktime_set(net->xfrm.sysctl_acq_expires, 0), ++ HRTIMER_MODE_REL_SOFT); + net->xfrm.state_num++; + xfrm_hash_grow_check(net, x->bydst.next != NULL); + spin_unlock_bh(&net->xfrm.xfrm_state_lock); +@@ -1141,7 +1144,7 @@ static void __xfrm_state_insert(struct x + hlist_add_head_rcu(&x->byspi, net->xfrm.state_byspi + h); + } + +- tasklet_hrtimer_start(&x->mtimer, ktime_set(1, 0), HRTIMER_MODE_REL); ++ hrtimer_start(&x->mtimer, ktime_set(1, 0), HRTIMER_MODE_REL_SOFT); + if (x->replay_maxage) + mod_timer(&x->rtimer, jiffies + x->replay_maxage); + +@@ -1245,7 +1248,9 @@ static struct xfrm_state *__find_acq_cor + x->mark.m = m->m; + x->lft.hard_add_expires_seconds = net->xfrm.sysctl_acq_expires; + xfrm_state_hold(x); +- tasklet_hrtimer_start(&x->mtimer, ktime_set(net->xfrm.sysctl_acq_expires, 0), HRTIMER_MODE_REL); ++ hrtimer_start(&x->mtimer, ++ ktime_set(net->xfrm.sysctl_acq_expires, 0), ++ HRTIMER_MODE_REL_SOFT); + list_add(&x->km.all, &net->xfrm.state_all); + hlist_add_head_rcu(&x->bydst, net->xfrm.state_bydst + h); + h = xfrm_src_hash(net, daddr, saddr, family); +@@ -1544,7 +1549,8 @@ int xfrm_state_update(struct xfrm_state + memcpy(&x1->lft, &x->lft, sizeof(x1->lft)); + x1->km.dying = 0; + +- tasklet_hrtimer_start(&x1->mtimer, ktime_set(1, 0), HRTIMER_MODE_REL); ++ hrtimer_start(&x1->mtimer, ktime_set(1, 0), ++ HRTIMER_MODE_REL_SOFT); + if (x1->curlft.use_time) + xfrm_state_check_expire(x1); + +@@ -1568,7 +1574,7 @@ int xfrm_state_check_expire(struct xfrm_ + if (x->curlft.bytes >= x->lft.hard_byte_limit || + x->curlft.packets >= x->lft.hard_packet_limit) { + x->km.state = XFRM_STATE_EXPIRED; +- tasklet_hrtimer_start(&x->mtimer, 0, HRTIMER_MODE_REL); ++ hrtimer_start(&x->mtimer, 0, HRTIMER_MODE_REL_SOFT); + return -EINVAL; + } + diff --git a/patches/features/all/rt/0033-softirq-Remove-tasklet_hrtimer.patch b/patches/features/all/rt/0033-softirq-Remove-tasklet_hrtimer.patch new file mode 100644 index 00000000000..0a57c6ec28d --- /dev/null +++ b/patches/features/all/rt/0033-softirq-Remove-tasklet_hrtimer.patch @@ -0,0 +1,110 @@ +From: Thomas Gleixner +Date: Thu, 23 Nov 2017 16:39:14 +0100 +Subject: [PATCH 33/36] softirq: Remove tasklet_hrtimer +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +There are no more tasklet_hrtimer users of this interface. +Remove it. + +Signed-off-by: Thomas Gleixner +Signed-off-by: Anna-Maria Gleixner +Signed-off-by: Sebastian Andrzej Siewior +--- + include/linux/interrupt.h | 25 ---------------------- + kernel/softirq.c | 51 ---------------------------------------------- + 2 files changed, 76 deletions(-) + +--- a/include/linux/interrupt.h ++++ b/include/linux/interrupt.h +@@ -633,31 +633,6 @@ extern void tasklet_kill_immediate(struc + extern void tasklet_init(struct tasklet_struct *t, + void (*func)(unsigned long), unsigned long data); + +-struct tasklet_hrtimer { +- struct hrtimer timer; +- struct tasklet_struct tasklet; +- enum hrtimer_restart (*function)(struct hrtimer *); +-}; +- +-extern void +-tasklet_hrtimer_init(struct tasklet_hrtimer *ttimer, +- enum hrtimer_restart (*function)(struct hrtimer *), +- clockid_t which_clock, enum hrtimer_mode mode); +- +-static inline +-void tasklet_hrtimer_start(struct tasklet_hrtimer *ttimer, ktime_t time, +- const enum hrtimer_mode mode) +-{ +- hrtimer_start(&ttimer->timer, time, mode); +-} +- +-static inline +-void tasklet_hrtimer_cancel(struct tasklet_hrtimer *ttimer) +-{ +- hrtimer_cancel(&ttimer->timer); +- tasklet_kill(&ttimer->tasklet); +-} +- + /* + * Autoprobing for irqs: + * +--- a/kernel/softirq.c ++++ b/kernel/softirq.c +@@ -594,57 +594,6 @@ void tasklet_kill(struct tasklet_struct + } + EXPORT_SYMBOL(tasklet_kill); + +-/* +- * tasklet_hrtimer +- */ +- +-/* +- * The trampoline is called when the hrtimer expires. It schedules a tasklet +- * to run __tasklet_hrtimer_trampoline() which in turn will call the intended +- * hrtimer callback, but from softirq context. +- */ +-static enum hrtimer_restart __hrtimer_tasklet_trampoline(struct hrtimer *timer) +-{ +- struct tasklet_hrtimer *ttimer = +- container_of(timer, struct tasklet_hrtimer, timer); +- +- tasklet_hi_schedule(&ttimer->tasklet); +- return HRTIMER_NORESTART; +-} +- +-/* +- * Helper function which calls the hrtimer callback from +- * tasklet/softirq context +- */ +-static void __tasklet_hrtimer_trampoline(unsigned long data) +-{ +- struct tasklet_hrtimer *ttimer = (void *)data; +- enum hrtimer_restart restart; +- +- restart = ttimer->function(&ttimer->timer); +- if (restart != HRTIMER_NORESTART) +- hrtimer_restart(&ttimer->timer); +-} +- +-/** +- * tasklet_hrtimer_init - Init a tasklet/hrtimer combo for softirq callbacks +- * @ttimer: tasklet_hrtimer which is initialized +- * @function: hrtimer callback function which gets called from softirq context +- * @which_clock: clock id (CLOCK_MONOTONIC/CLOCK_REALTIME) +- * @mode: hrtimer mode (HRTIMER_MODE_ABS/HRTIMER_MODE_REL) +- */ +-void tasklet_hrtimer_init(struct tasklet_hrtimer *ttimer, +- enum hrtimer_restart (*function)(struct hrtimer *), +- clockid_t which_clock, enum hrtimer_mode mode) +-{ +- hrtimer_init(&ttimer->timer, which_clock, mode); +- ttimer->timer.function = __hrtimer_tasklet_trampoline; +- tasklet_init(&ttimer->tasklet, __tasklet_hrtimer_trampoline, +- (unsigned long)ttimer); +- ttimer->function = function; +-} +-EXPORT_SYMBOL_GPL(tasklet_hrtimer_init); +- + void __init softirq_init(void) + { + int cpu; diff --git a/patches/features/all/rt/0033-tracing-Make-tracing_set_clock-non-static.patch b/patches/features/all/rt/0033-tracing-Make-tracing_set_clock-non-static.patch new file mode 100644 index 00000000000..6831af435a9 --- /dev/null +++ b/patches/features/all/rt/0033-tracing-Make-tracing_set_clock-non-static.patch @@ -0,0 +1,40 @@ +From: Tom Zanussi +Date: Mon, 15 Jan 2018 20:52:07 -0600 +Subject: [PATCH 33/37] tracing: Make tracing_set_clock() non-static +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Allow tracing code outside of trace.c to access tracing_set_clock(). + +Some applications may require a particular clock in order to function +properly, such as latency calculations. + +Also, add an accessor returning the current clock string. + +Signed-off-by: Tom Zanussi +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/trace/trace.c | 2 +- + kernel/trace/trace.h | 1 + + 2 files changed, 2 insertions(+), 1 deletion(-) + +--- a/kernel/trace/trace.c ++++ b/kernel/trace/trace.c +@@ -6219,7 +6219,7 @@ static int tracing_clock_show(struct seq + return 0; + } + +-static int tracing_set_clock(struct trace_array *tr, const char *clockstr) ++int tracing_set_clock(struct trace_array *tr, const char *clockstr) + { + int i; + +--- a/kernel/trace/trace.h ++++ b/kernel/trace/trace.h +@@ -289,6 +289,7 @@ extern int trace_array_get(struct trace_ + extern void trace_array_put(struct trace_array *tr); + + extern int tracing_set_time_stamp_abs(struct trace_array *tr, bool abs); ++extern int tracing_set_clock(struct trace_array *tr, const char *clockstr); + + extern bool trace_clock_in_ns(struct trace_array *tr); + diff --git a/patches/features/all/rt/0034-ALSA-dummy-Replace-tasklet-with-softirq-hrtimer.patch b/patches/features/all/rt/0034-ALSA-dummy-Replace-tasklet-with-softirq-hrtimer.patch new file mode 100644 index 00000000000..e4e9849fc07 --- /dev/null +++ b/patches/features/all/rt/0034-ALSA-dummy-Replace-tasklet-with-softirq-hrtimer.patch @@ -0,0 +1,100 @@ +From: Thomas Gleixner +Date: Thu, 23 Nov 2017 16:39:15 +0100 +Subject: [PATCH 34/36] ALSA/dummy: Replace tasklet with softirq hrtimer +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +The tasklet is used to defer the execution of snd_pcm_period_elapsed() to +the softirq context. Using the HRTIMER_MODE_SOFT mode invokes the timer +callback in softirq context as well which renders the tasklet useless. + +[o-takashi: avoid stall due to a call of hrtimer_cancel() on a callback + of hrtimer] + +Signed-off-by: Thomas Gleixner +Signed-off-by: Anna-Maria Gleixner +Cc: alsa-devel@alsa-project.org +Cc: Takashi Sakamoto +Cc: Takashi Iwai +Cc: Jaroslav Kysela +Link: http://lkml.kernel.org/r/20170905161820.jtysvxtfleunbbmf@breakpoint.cc +Signed-off-by: Sebastian Andrzej Siewior +--- + sound/drivers/dummy.c | 27 ++++++++++++--------------- + 1 file changed, 12 insertions(+), 15 deletions(-) + +--- a/sound/drivers/dummy.c ++++ b/sound/drivers/dummy.c +@@ -376,17 +376,9 @@ struct dummy_hrtimer_pcm { + ktime_t period_time; + atomic_t running; + struct hrtimer timer; +- struct tasklet_struct tasklet; + struct snd_pcm_substream *substream; + }; + +-static void dummy_hrtimer_pcm_elapsed(unsigned long priv) +-{ +- struct dummy_hrtimer_pcm *dpcm = (struct dummy_hrtimer_pcm *)priv; +- if (atomic_read(&dpcm->running)) +- snd_pcm_period_elapsed(dpcm->substream); +-} +- + static enum hrtimer_restart dummy_hrtimer_callback(struct hrtimer *timer) + { + struct dummy_hrtimer_pcm *dpcm; +@@ -394,7 +386,14 @@ static enum hrtimer_restart dummy_hrtime + dpcm = container_of(timer, struct dummy_hrtimer_pcm, timer); + if (!atomic_read(&dpcm->running)) + return HRTIMER_NORESTART; +- tasklet_schedule(&dpcm->tasklet); ++ /* ++ * In cases of XRUN and draining, this calls .trigger to stop PCM ++ * substream. ++ */ ++ snd_pcm_period_elapsed(dpcm->substream); ++ if (!atomic_read(&dpcm->running)) ++ return HRTIMER_NORESTART; ++ + hrtimer_forward_now(timer, dpcm->period_time); + return HRTIMER_RESTART; + } +@@ -404,7 +403,7 @@ static int dummy_hrtimer_start(struct sn + struct dummy_hrtimer_pcm *dpcm = substream->runtime->private_data; + + dpcm->base_time = hrtimer_cb_get_time(&dpcm->timer); +- hrtimer_start(&dpcm->timer, dpcm->period_time, HRTIMER_MODE_REL); ++ hrtimer_start(&dpcm->timer, dpcm->period_time, HRTIMER_MODE_REL_SOFT); + atomic_set(&dpcm->running, 1); + return 0; + } +@@ -414,14 +413,14 @@ static int dummy_hrtimer_stop(struct snd + struct dummy_hrtimer_pcm *dpcm = substream->runtime->private_data; + + atomic_set(&dpcm->running, 0); +- hrtimer_cancel(&dpcm->timer); ++ if (!hrtimer_callback_running(&dpcm->timer)) ++ hrtimer_cancel(&dpcm->timer); + return 0; + } + + static inline void dummy_hrtimer_sync(struct dummy_hrtimer_pcm *dpcm) + { + hrtimer_cancel(&dpcm->timer); +- tasklet_kill(&dpcm->tasklet); + } + + static snd_pcm_uframes_t +@@ -466,12 +465,10 @@ static int dummy_hrtimer_create(struct s + if (!dpcm) + return -ENOMEM; + substream->runtime->private_data = dpcm; +- hrtimer_init(&dpcm->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); ++ hrtimer_init(&dpcm->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL_SOFT); + dpcm->timer.function = dummy_hrtimer_callback; + dpcm->substream = substream; + atomic_set(&dpcm->running, 0); +- tasklet_init(&dpcm->tasklet, dummy_hrtimer_pcm_elapsed, +- (unsigned long)dpcm); + return 0; + } + diff --git a/patches/features/all/rt/0034-tracing-Add-a-clock-attribute-for-hist-triggers.patch b/patches/features/all/rt/0034-tracing-Add-a-clock-attribute-for-hist-triggers.patch new file mode 100644 index 00000000000..6590eba24e8 --- /dev/null +++ b/patches/features/all/rt/0034-tracing-Add-a-clock-attribute-for-hist-triggers.patch @@ -0,0 +1,134 @@ +From: Tom Zanussi +Date: Mon, 15 Jan 2018 20:52:08 -0600 +Subject: [PATCH 34/37] tracing: Add a clock attribute for hist triggers +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +The default clock if timestamps are used in a histogram is "global". +If timestamps aren't used, the clock is irrelevant. + +Use the "clock=" param only if you want to override the default +"global" clock for a histogram with timestamps. + +Signed-off-by: Tom Zanussi +Signed-off-by: Rajvi Jingar +Signed-off-by: Sebastian Andrzej Siewior +--- + Documentation/trace/histogram.txt | 11 +++++++++ + kernel/trace/trace_events_hist.c | 42 +++++++++++++++++++++++++++++++++++--- + 2 files changed, 49 insertions(+), 4 deletions(-) + +--- a/Documentation/trace/histogram.txt ++++ b/Documentation/trace/histogram.txt +@@ -1671,7 +1671,16 @@ specification. In support of this overa + it is in units of nanoseconds; appending '.usecs' to a + common_timestamp field changes the units to microseconds. + +-These features are decribed in more detail in the following sections. ++A note on inter-event timestamps: If common_timestamp is used in a ++histogram, the trace buffer is automatically switched over to using ++absolute timestamps and the "global" trace clock, in order to avoid ++bogus timestamp differences with other clocks that aren't coherent ++across CPUs. This can be overridden by specifying one of the other ++trace clocks instead, using the "clock=XXX" hist trigger attribute, ++where XXX is any of the clocks listed in the tracing/trace_clock ++pseudo-file. ++ ++These features are described in more detail in the following sections. + + 2.2.1 Histogram Variables + ------------------------- +--- a/kernel/trace/trace_events_hist.c ++++ b/kernel/trace/trace_events_hist.c +@@ -242,6 +242,7 @@ struct hist_trigger_attrs { + char *vals_str; + char *sort_key_str; + char *name; ++ char *clock; + bool pause; + bool cont; + bool clear; +@@ -1776,6 +1777,7 @@ static void destroy_hist_trigger_attrs(s + kfree(attrs->sort_key_str); + kfree(attrs->keys_str); + kfree(attrs->vals_str); ++ kfree(attrs->clock); + kfree(attrs); + } + +@@ -1831,6 +1833,19 @@ static int parse_assignment(char *str, s + ret = -ENOMEM; + goto out; + } ++ } else if (strncmp(str, "clock=", strlen("clock=")) == 0) { ++ strsep(&str, "="); ++ if (!str) { ++ ret = -EINVAL; ++ goto out; ++ } ++ ++ str = strstrip(str); ++ attrs->clock = kstrdup(str, GFP_KERNEL); ++ if (!attrs->clock) { ++ ret = -ENOMEM; ++ goto out; ++ } + } else if (strncmp(str, "size=", strlen("size=")) == 0) { + int map_bits = parse_map_size(str); + +@@ -1895,6 +1910,14 @@ static struct hist_trigger_attrs *parse_ + goto free; + } + ++ if (!attrs->clock) { ++ attrs->clock = kstrdup("global", GFP_KERNEL); ++ if (!attrs->clock) { ++ ret = -ENOMEM; ++ goto free; ++ } ++ } ++ + return attrs; + free: + destroy_hist_trigger_attrs(attrs); +@@ -4936,6 +4959,8 @@ static int event_hist_trigger_print(stru + seq_puts(m, ".descending"); + } + seq_printf(m, ":size=%u", (1 << hist_data->map->map_bits)); ++ if (hist_data->enable_timestamps) ++ seq_printf(m, ":clock=%s", hist_data->attrs->clock); + + print_actions_spec(m, hist_data); + +@@ -5203,7 +5228,6 @@ static int hist_register_trigger(char *g + data->paused = true; + + if (named_data) { +- destroy_hist_data(data->private_data); + data->private_data = named_data->private_data; + set_named_trigger_data(data, named_data); + data->ops = &event_hist_trigger_named_ops; +@@ -5215,10 +5239,22 @@ static int hist_register_trigger(char *g + goto out; + } + +- ret++; ++ if (hist_data->enable_timestamps) { ++ char *clock = hist_data->attrs->clock; ++ ++ ret = tracing_set_clock(file->tr, hist_data->attrs->clock); ++ if (ret) { ++ hist_err("Couldn't set trace_clock: ", clock); ++ goto out; ++ } + +- if (hist_data->enable_timestamps) + tracing_set_time_stamp_abs(file->tr, true); ++ } ++ ++ if (named_data) ++ destroy_hist_data(hist_data); ++ ++ ret++; + out: + return ret; + } diff --git a/patches/features/all/rt/0035-tracing-Increase-trace_recursive_lock-limit-for-synt.patch b/patches/features/all/rt/0035-tracing-Increase-trace_recursive_lock-limit-for-synt.patch new file mode 100644 index 00000000000..250bc8670fe --- /dev/null +++ b/patches/features/all/rt/0035-tracing-Increase-trace_recursive_lock-limit-for-synt.patch @@ -0,0 +1,44 @@ +From: Tom Zanussi +Date: Mon, 15 Jan 2018 20:52:09 -0600 +Subject: [PATCH 35/37] tracing: Increase trace_recursive_lock() limit for + synthetic events +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Synthetic event generation needs to happen while the current event is +still in progress, so add 1 to the trace_recursive_lock() recursion +limit to account for that. + +Because we also want to allow for the possibility of a synthetic event +being generated from another synthetic event, add an additional +increment for that as well. + +Signed-off-by: Tom Zanussi +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/trace/ring_buffer.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +--- a/kernel/trace/ring_buffer.c ++++ b/kernel/trace/ring_buffer.c +@@ -2593,16 +2593,16 @@ rb_wakeups(struct ring_buffer *buffer, s + * IRQ context + * NMI context + * +- * If for some reason the ring buffer starts to recurse, we +- * only allow that to happen at most 4 times (one for each +- * context). If it happens 5 times, then we consider this a +- * recusive loop and do not let it go further. ++ * If for some reason the ring buffer starts to recurse, we only allow ++ * that to happen at most 6 times (one for each context, plus possibly ++ * two levels of synthetic event generation). If it happens 7 times, ++ * then we consider this a recusive loop and do not let it go further. + */ + + static __always_inline int + trace_recursive_lock(struct ring_buffer_per_cpu *cpu_buffer) + { +- if (cpu_buffer->current_context >= 4) ++ if (cpu_buffer->current_context >= 6) + return 1; + + cpu_buffer->current_context++; diff --git a/patches/features/all/rt/0035-usb-gadget-NCM-Replace-tasklet-with-softirq-hrtimer.patch b/patches/features/all/rt/0035-usb-gadget-NCM-Replace-tasklet-with-softirq-hrtimer.patch new file mode 100644 index 00000000000..844cb5bc3e9 --- /dev/null +++ b/patches/features/all/rt/0035-usb-gadget-NCM-Replace-tasklet-with-softirq-hrtimer.patch @@ -0,0 +1,97 @@ +From: Thomas Gleixner +Date: Thu, 23 Nov 2017 16:39:16 +0100 +Subject: [PATCH 35/36] usb/gadget/NCM: Replace tasklet with softirq hrtimer +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +The tx_tasklet tasklet is used in invoke the hrtimer (task_timer) in +softirq context. This can be also achieved without the tasklet but +with HRTIMER_MODE_SOFT as hrtimer mode. + +Signed-off-by: Thomas Gleixner +Signed-off-by: Anna-Maria Gleixner +Cc: Felipe Balbi +Cc: linux-usb@vger.kernel.org +Signed-off-by: Sebastian Andrzej Siewior +--- + drivers/usb/gadget/function/f_ncm.c | 30 +++++++----------------------- + 1 file changed, 7 insertions(+), 23 deletions(-) + +--- a/drivers/usb/gadget/function/f_ncm.c ++++ b/drivers/usb/gadget/function/f_ncm.c +@@ -77,9 +77,7 @@ struct f_ncm { + struct sk_buff *skb_tx_ndp; + u16 ndp_dgram_count; + bool timer_force_tx; +- struct tasklet_struct tx_tasklet; + struct hrtimer task_timer; +- + bool timer_stopping; + }; + +@@ -1108,7 +1106,7 @@ static struct sk_buff *ncm_wrap_ntb(stru + + /* Delay the timer. */ + hrtimer_start(&ncm->task_timer, TX_TIMEOUT_NSECS, +- HRTIMER_MODE_REL); ++ HRTIMER_MODE_REL_SOFT); + + /* Add the datagram position entries */ + ntb_ndp = skb_put_zero(ncm->skb_tx_ndp, dgram_idx_len); +@@ -1152,17 +1150,15 @@ static struct sk_buff *ncm_wrap_ntb(stru + } + + /* +- * This transmits the NTB if there are frames waiting. ++ * The transmit should only be run if no skb data has been sent ++ * for a certain duration. + */ +-static void ncm_tx_tasklet(unsigned long data) ++static enum hrtimer_restart ncm_tx_timeout(struct hrtimer *data) + { +- struct f_ncm *ncm = (void *)data; +- +- if (ncm->timer_stopping) +- return; ++ struct f_ncm *ncm = container_of(data, struct f_ncm, task_timer); + + /* Only send if data is available. */ +- if (ncm->skb_tx_data) { ++ if (!ncm->timer_stopping && ncm->skb_tx_data) { + ncm->timer_force_tx = true; + + /* XXX This allowance of a NULL skb argument to ndo_start_xmit +@@ -1175,16 +1171,6 @@ static void ncm_tx_tasklet(unsigned long + + ncm->timer_force_tx = false; + } +-} +- +-/* +- * The transmit should only be run if no skb data has been sent +- * for a certain duration. +- */ +-static enum hrtimer_restart ncm_tx_timeout(struct hrtimer *data) +-{ +- struct f_ncm *ncm = container_of(data, struct f_ncm, task_timer); +- tasklet_schedule(&ncm->tx_tasklet); + return HRTIMER_NORESTART; + } + +@@ -1517,8 +1503,7 @@ static int ncm_bind(struct usb_configura + ncm->port.open = ncm_open; + ncm->port.close = ncm_close; + +- tasklet_init(&ncm->tx_tasklet, ncm_tx_tasklet, (unsigned long) ncm); +- hrtimer_init(&ncm->task_timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); ++ hrtimer_init(&ncm->task_timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL_SOFT); + ncm->task_timer.function = ncm_tx_timeout; + + DBG(cdev, "CDC Network: %s speed IN/%s OUT/%s NOTIFY/%s\n", +@@ -1627,7 +1612,6 @@ static void ncm_unbind(struct usb_config + DBG(c->cdev, "ncm unbind\n"); + + hrtimer_cancel(&ncm->task_timer); +- tasklet_kill(&ncm->tx_tasklet); + + ncm_string_defs[0].id = 0; + usb_free_all_descriptors(f); diff --git a/patches/features/all/rt/0036-net-mvpp2-Replace-tasklet-with-softirq-hrtimer.patch b/patches/features/all/rt/0036-net-mvpp2-Replace-tasklet-with-softirq-hrtimer.patch new file mode 100644 index 00000000000..e4994c3a537 --- /dev/null +++ b/patches/features/all/rt/0036-net-mvpp2-Replace-tasklet-with-softirq-hrtimer.patch @@ -0,0 +1,133 @@ +From: Thomas Gleixner +Date: Thu, 23 Nov 2017 16:39:17 +0100 +Subject: [PATCH 36/36] net/mvpp2: Replace tasklet with softirq hrtimer +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +The tx_done_tasklet tasklet is used in invoke the hrtimer +(mvpp2_hr_timer_cb) in softirq context. This can be also achieved without +the tasklet but with HRTIMER_MODE_SOFT as hrtimer mode. + +Signed-off-by: Thomas Gleixner +Signed-off-by: Anna-Maria Gleixner +Cc: Thomas Petazzoni +Cc: netdev@vger.kernel.org +Cc: "David S. Miller" +Signed-off-by: Sebastian Andrzej Siewior +--- + drivers/net/ethernet/marvell/mvpp2.c | 62 ++++++++++++++--------------------- + 1 file changed, 25 insertions(+), 37 deletions(-) + +--- a/drivers/net/ethernet/marvell/mvpp2.c ++++ b/drivers/net/ethernet/marvell/mvpp2.c +@@ -830,9 +830,8 @@ struct mvpp2_pcpu_stats { + /* Per-CPU port control */ + struct mvpp2_port_pcpu { + struct hrtimer tx_done_timer; ++ struct net_device *dev; + bool timer_scheduled; +- /* Tasklet for egress finalization */ +- struct tasklet_struct tx_done_tasklet; + }; + + struct mvpp2_queue_vector { +@@ -5970,46 +5969,34 @@ static void mvpp2_link_event(struct net_ + } + } + +-static void mvpp2_timer_set(struct mvpp2_port_pcpu *port_pcpu) +-{ +- ktime_t interval; +- +- if (!port_pcpu->timer_scheduled) { +- port_pcpu->timer_scheduled = true; +- interval = MVPP2_TXDONE_HRTIMER_PERIOD_NS; +- hrtimer_start(&port_pcpu->tx_done_timer, interval, +- HRTIMER_MODE_REL_PINNED); +- } +-} +- +-static void mvpp2_tx_proc_cb(unsigned long data) ++static enum hrtimer_restart mvpp2_hr_timer_cb(struct hrtimer *timer) + { +- struct net_device *dev = (struct net_device *)data; +- struct mvpp2_port *port = netdev_priv(dev); +- struct mvpp2_port_pcpu *port_pcpu = this_cpu_ptr(port->pcpu); ++ struct net_device *dev; ++ struct mvpp2_port *port; ++ struct mvpp2_port_pcpu *port_pcpu; + unsigned int tx_todo, cause; + ++ port_pcpu = container_of(timer, struct mvpp2_port_pcpu, tx_done_timer); ++ dev = port_pcpu->dev; ++ + if (!netif_running(dev)) +- return; ++ return HRTIMER_NORESTART; ++ + port_pcpu->timer_scheduled = false; ++ port = netdev_priv(dev); + + /* Process all the Tx queues */ + cause = (1 << port->ntxqs) - 1; + tx_todo = mvpp2_tx_done(port, cause, smp_processor_id()); + + /* Set the timer in case not all the packets were processed */ +- if (tx_todo) +- mvpp2_timer_set(port_pcpu); +-} +- +-static enum hrtimer_restart mvpp2_hr_timer_cb(struct hrtimer *timer) +-{ +- struct mvpp2_port_pcpu *port_pcpu = container_of(timer, +- struct mvpp2_port_pcpu, +- tx_done_timer); +- +- tasklet_schedule(&port_pcpu->tx_done_tasklet); ++ if (tx_todo && !port_pcpu->timer_scheduled) { ++ port_pcpu->timer_scheduled = true; ++ hrtimer_forward_now(&port_pcpu->tx_done_timer, ++ MVPP2_TXDONE_HRTIMER_PERIOD_NS); + ++ return HRTIMER_RESTART; ++ } + return HRTIMER_NORESTART; + } + +@@ -6498,7 +6485,12 @@ static int mvpp2_tx(struct sk_buff *skb, + txq_pcpu->count > 0) { + struct mvpp2_port_pcpu *port_pcpu = this_cpu_ptr(port->pcpu); + +- mvpp2_timer_set(port_pcpu); ++ if (!port_pcpu->timer_scheduled) { ++ port_pcpu->timer_scheduled = true; ++ hrtimer_start(&port_pcpu->tx_done_timer, ++ MVPP2_TXDONE_HRTIMER_PERIOD_NS, ++ HRTIMER_MODE_REL_PINNED_SOFT); ++ } + } + + return NETDEV_TX_OK; +@@ -6887,7 +6879,6 @@ static int mvpp2_stop(struct net_device + + hrtimer_cancel(&port_pcpu->tx_done_timer); + port_pcpu->timer_scheduled = false; +- tasklet_kill(&port_pcpu->tx_done_tasklet); + } + } + mvpp2_cleanup_rxqs(port); +@@ -7655,13 +7646,10 @@ static int mvpp2_port_probe(struct platf + port_pcpu = per_cpu_ptr(port->pcpu, cpu); + + hrtimer_init(&port_pcpu->tx_done_timer, CLOCK_MONOTONIC, +- HRTIMER_MODE_REL_PINNED); ++ HRTIMER_MODE_REL_PINNED_SOFT); + port_pcpu->tx_done_timer.function = mvpp2_hr_timer_cb; + port_pcpu->timer_scheduled = false; +- +- tasklet_init(&port_pcpu->tx_done_tasklet, +- mvpp2_tx_proc_cb, +- (unsigned long)dev); ++ port_pcpu->dev = dev; + } + } + diff --git a/patches/features/all/rt/0036-tracing-Add-inter-event-blurb-to-HIST_TRIGGERS-confi.patch b/patches/features/all/rt/0036-tracing-Add-inter-event-blurb-to-HIST_TRIGGERS-confi.patch new file mode 100644 index 00000000000..b5a3ae5e7d0 --- /dev/null +++ b/patches/features/all/rt/0036-tracing-Add-inter-event-blurb-to-HIST_TRIGGERS-confi.patch @@ -0,0 +1,30 @@ +From: Tom Zanussi +Date: Mon, 15 Jan 2018 20:52:10 -0600 +Subject: [PATCH 36/37] tracing: Add inter-event blurb to HIST_TRIGGERS config + option +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +So that users know that inter-event tracing is supported as part of +the HIST_TRIGGERS option, include text to that effect in the help +text. + +Signed-off-by: Tom Zanussi +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/trace/Kconfig | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +--- a/kernel/trace/Kconfig ++++ b/kernel/trace/Kconfig +@@ -585,7 +585,10 @@ config HIST_TRIGGERS + event activity as an initial guide for further investigation + using more advanced tools. + +- See Documentation/trace/events.txt. ++ Inter-event tracing of quantities such as latencies is also ++ supported using hist triggers under this option. ++ ++ See Documentation/trace/histogram.txt. + If in doubt, say N. + + config MMIOTRACE_TEST diff --git a/patches/features/all/rt/0037-selftests-ftrace-Add-inter-event-hist-triggers-testc.patch b/patches/features/all/rt/0037-selftests-ftrace-Add-inter-event-hist-triggers-testc.patch new file mode 100644 index 00000000000..59214897282 --- /dev/null +++ b/patches/features/all/rt/0037-selftests-ftrace-Add-inter-event-hist-triggers-testc.patch @@ -0,0 +1,439 @@ +From: Rajvi Jingar +Date: Mon, 15 Jan 2018 20:52:11 -0600 +Subject: [PATCH 37/37] selftests: ftrace: Add inter-event hist triggers + testcases +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + + This adds inter-event hist triggers testcases which covers following: + - create/remove synthetic event + - disable histogram for synthetic event + - extended error support + - field variable support + - histogram variables + - histogram trigger onmatch action + - histogram trigger onmax action + - histogram trigger onmatch-onmax action + - simple expression support + - combined histogram + + Here is the test result. + === Ftrace unit tests === + [1] event trigger - test extended error support [PASS] + [2] event trigger - test field variable support [PASS] + [3] event trigger - test inter-event combined histogram trigger [PASS] + [4] event trigger - test inter-event histogram trigger onmatch action [PASS] + [5] event trigger - test inter-event histogram trigger onmatch-onmax action [PASS] + [6] event trigger - test inter-event histogram trigger onmax action [PASS] + [7] event trigger - test synthetic event create remove [PASS] + +Signed-off-by: Rajvi Jingar +Signed-off-by: Tom Zanussi +Signed-off-by: Sebastian Andrzej Siewior +--- + tools/testing/selftests/ftrace/test.d/functions | 7 + + tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-extended-error-support.tc | 39 ++++++ + tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-field-variable-support.tc | 54 +++++++++ + tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-inter-event-combined-hist.tc | 58 ++++++++++ + tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmatch-action-hist.tc | 50 ++++++++ + tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmatch-onmax-action-hist.tc | 50 ++++++++ + tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmax-action-hist.tc | 48 ++++++++ + tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-synthetic-event-createremove.tc | 54 +++++++++ + 8 files changed, 360 insertions(+) + create mode 100644 tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-extended-error-support.tc + create mode 100644 tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-field-variable-support.tc + create mode 100644 tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-inter-event-combined-hist.tc + create mode 100644 tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmatch-action-hist.tc + create mode 100644 tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmatch-onmax-action-hist.tc + create mode 100644 tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmax-action-hist.tc + create mode 100644 tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-synthetic-event-createremove.tc + +--- a/tools/testing/selftests/ftrace/test.d/functions ++++ b/tools/testing/selftests/ftrace/test.d/functions +@@ -55,6 +55,13 @@ disable_events() { + echo 0 > events/enable + } + ++clear_synthetic_events() { # reset all current synthetic events ++ grep -v ^# synthetic_events | ++ while read line; do ++ echo "!$line" >> synthetic_events ++ done ++} ++ + initialize_ftrace() { # Reset ftrace to initial-state + # As the initial state, ftrace will be set to nop tracer, + # no events, no triggers, no filters, no function filters, +--- /dev/null ++++ b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-extended-error-support.tc +@@ -0,0 +1,39 @@ ++#!/bin/sh ++# description: event trigger - test extended error support ++ ++ ++do_reset() { ++ reset_trigger ++ echo > set_event ++ clear_trace ++} ++ ++fail() { #msg ++ do_reset ++ echo $1 ++ exit_fail ++} ++ ++if [ ! -f set_event ]; then ++ echo "event tracing is not supported" ++ exit_unsupported ++fi ++ ++if [ ! -f synthetic_events ]; then ++ echo "synthetic event is not supported" ++ exit_unsupported ++fi ++ ++reset_tracer ++do_reset ++ ++echo "Test extended error support" ++echo 'hist:keys=pid:ts0=common_timestamp.usecs if comm=="ping"' > events/sched/sched_wakeup/trigger ++echo 'hist:keys=pid:ts0=common_timestamp.usecs if comm=="ping"' >> events/sched/sched_wakeup/trigger &>/dev/null ++if ! grep -q "ERROR:" events/sched/sched_wakeup/hist; then ++ fail "Failed to generate extended error in histogram" ++fi ++ ++do_reset ++ ++exit 0 +--- /dev/null ++++ b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-field-variable-support.tc +@@ -0,0 +1,54 @@ ++#!/bin/sh ++# description: event trigger - test field variable support ++ ++do_reset() { ++ reset_trigger ++ echo > set_event ++ clear_trace ++} ++ ++fail() { #msg ++ do_reset ++ echo $1 ++ exit_fail ++} ++ ++if [ ! -f set_event ]; then ++ echo "event tracing is not supported" ++ exit_unsupported ++fi ++ ++if [ ! -f synthetic_events ]; then ++ echo "synthetic event is not supported" ++ exit_unsupported ++fi ++ ++clear_synthetic_events ++reset_tracer ++do_reset ++ ++echo "Test field variable support" ++ ++echo 'wakeup_latency u64 lat; pid_t pid; int prio; char comm[16]' > synthetic_events ++echo 'hist:keys=comm:ts0=common_timestamp.usecs if comm=="ping"' > events/sched/sched_waking/trigger ++echo 'hist:keys=next_comm:wakeup_lat=common_timestamp.usecs-$ts0:onmatch(sched.sched_waking).wakeup_latency($wakeup_lat,next_pid,sched.sched_waking.prio,next_comm) if next_comm=="ping"' > events/sched/sched_switch/trigger ++echo 'hist:keys=pid,prio,comm:vals=lat:sort=pid,prio' > events/synthetic/wakeup_latency/trigger ++ ++ping localhost -c 3 ++if ! grep -q "ping" events/synthetic/wakeup_latency/hist; then ++ fail "Failed to create inter-event histogram" ++fi ++ ++if ! grep -q "synthetic_prio=prio" events/sched/sched_waking/hist; then ++ fail "Failed to create histogram with field variable" ++fi ++ ++echo '!hist:keys=next_comm:wakeup_lat=common_timestamp.usecs-$ts0:onmatch(sched.sched_waking).wakeup_latency($wakeup_lat,next_pid,sched.sched_waking.prio,next_comm) if next_comm=="ping"' >> events/sched/sched_switch/trigger ++ ++if grep -q "synthetic_prio=prio" events/sched/sched_waking/hist; then ++ fail "Failed to remove histogram with field variable" ++fi ++ ++do_reset ++ ++exit 0 +--- /dev/null ++++ b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-inter-event-combined-hist.tc +@@ -0,0 +1,58 @@ ++#!/bin/sh ++# description: event trigger - test inter-event combined histogram trigger ++ ++do_reset() { ++ reset_trigger ++ echo > set_event ++ clear_trace ++} ++ ++fail() { #msg ++ do_reset ++ echo $1 ++ exit_fail ++} ++ ++if [ ! -f set_event ]; then ++ echo "event tracing is not supported" ++ exit_unsupported ++fi ++ ++if [ ! -f synthetic_events ]; then ++ echo "synthetic event is not supported" ++ exit_unsupported ++fi ++ ++reset_tracer ++do_reset ++clear_synthetic_events ++ ++echo "Test create synthetic event" ++ ++echo 'waking_latency u64 lat pid_t pid' > synthetic_events ++if [ ! -d events/synthetic/waking_latency ]; then ++ fail "Failed to create waking_latency synthetic event" ++fi ++ ++echo "Test combined histogram" ++ ++echo 'hist:keys=pid:ts0=common_timestamp.usecs if comm=="ping"' > events/sched/sched_waking/trigger ++echo 'hist:keys=pid:waking_lat=common_timestamp.usecs-$ts0:onmatch(sched.sched_waking).waking_latency($waking_lat,pid) if comm=="ping"' > events/sched/sched_wakeup/trigger ++echo 'hist:keys=pid,lat:sort=pid,lat' > events/synthetic/waking_latency/trigger ++ ++echo 'wakeup_latency u64 lat pid_t pid' >> synthetic_events ++echo 'hist:keys=pid:ts1=common_timestamp.usecs if comm=="ping"' >> events/sched/sched_wakeup/trigger ++echo 'hist:keys=next_pid:wakeup_lat=common_timestamp.usecs-$ts1:onmatch(sched.sched_wakeup).wakeup_latency($wakeup_lat,next_pid) if next_comm=="ping"' > events/sched/sched_switch/trigger ++ ++echo 'waking+wakeup_latency u64 lat; pid_t pid' >> synthetic_events ++echo 'hist:keys=pid,lat:sort=pid,lat:ww_lat=$waking_lat+$wakeup_lat:onmatch(synthetic.wakeup_latency).waking+wakeup_latency($ww_lat,pid)' >> events/synthetic/wakeup_latency/trigger ++echo 'hist:keys=pid,lat:sort=pid,lat' >> events/synthetic/waking+wakeup_latency/trigger ++ ++ping localhost -c 3 ++if ! grep -q "pid:" events/synthetic/waking+wakeup_latency/hist; then ++ fail "Failed to create combined histogram" ++fi ++ ++do_reset ++ ++exit 0 +--- /dev/null ++++ b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmatch-action-hist.tc +@@ -0,0 +1,50 @@ ++#!/bin/sh ++# description: event trigger - test inter-event histogram trigger onmatch action ++ ++do_reset() { ++ reset_trigger ++ echo > set_event ++ clear_trace ++} ++ ++fail() { #msg ++ do_reset ++ echo $1 ++ exit_fail ++} ++ ++if [ ! -f set_event ]; then ++ echo "event tracing is not supported" ++ exit_unsupported ++fi ++ ++if [ ! -f synthetic_events ]; then ++ echo "synthetic event is not supported" ++ exit_unsupported ++fi ++ ++clear_synthetic_events ++reset_tracer ++do_reset ++ ++echo "Test create synthetic event" ++ ++echo 'wakeup_latency u64 lat pid_t pid char comm[16]' > synthetic_events ++if [ ! -d events/synthetic/wakeup_latency ]; then ++ fail "Failed to create wakeup_latency synthetic event" ++fi ++ ++echo "Test create histogram for synthetic event" ++echo "Test histogram variables,simple expression support and onmatch action" ++ ++echo 'hist:keys=pid:ts0=common_timestamp.usecs if comm=="ping"' > events/sched/sched_wakeup/trigger ++echo 'hist:keys=next_pid:wakeup_lat=common_timestamp.usecs-$ts0:onmatch(sched.sched_wakeup).wakeup_latency($wakeup_lat,next_pid,next_comm) if next_comm=="ping"' > events/sched/sched_switch/trigger ++echo 'hist:keys=comm,pid,lat:wakeup_lat=lat:sort=lat' > events/synthetic/wakeup_latency/trigger ++ping localhost -c 5 ++if ! grep -q "ping" events/synthetic/wakeup_latency/hist; then ++ fail "Failed to create onmatch action inter-event histogram" ++fi ++ ++do_reset ++ ++exit 0 +--- /dev/null ++++ b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmatch-onmax-action-hist.tc +@@ -0,0 +1,50 @@ ++#!/bin/sh ++# description: event trigger - test inter-event histogram trigger onmatch-onmax action ++ ++do_reset() { ++ reset_trigger ++ echo > set_event ++ clear_trace ++} ++ ++fail() { #msg ++ do_reset ++ echo $1 ++ exit_fail ++} ++ ++if [ ! -f set_event ]; then ++ echo "event tracing is not supported" ++ exit_unsupported ++fi ++ ++if [ ! -f synthetic_events ]; then ++ echo "synthetic event is not supported" ++ exit_unsupported ++fi ++ ++clear_synthetic_events ++reset_tracer ++do_reset ++ ++echo "Test create synthetic event" ++ ++echo 'wakeup_latency u64 lat pid_t pid char comm[16]' > synthetic_events ++if [ ! -d events/synthetic/wakeup_latency ]; then ++ fail "Failed to create wakeup_latency synthetic event" ++fi ++ ++echo "Test create histogram for synthetic event" ++echo "Test histogram variables,simple expression support and onmatch-onmax action" ++ ++echo 'hist:keys=pid:ts0=common_timestamp.usecs if comm=="ping"' > events/sched/sched_wakeup/trigger ++echo 'hist:keys=next_pid:wakeup_lat=common_timestamp.usecs-$ts0:onmatch(sched.sched_wakeup).wakeup_latency($wakeup_lat,next_pid,next_comm):onmax($wakeup_lat).save(next_comm,prev_pid,prev_prio,prev_comm) if next_comm=="ping"' >> events/sched/sched_switch/trigger ++echo 'hist:keys=comm,pid,lat:wakeup_lat=lat:sort=lat' > events/synthetic/wakeup_latency/trigger ++ping localhost -c 5 ++if [ ! grep -q "ping" events/synthetic/wakeup_latency/hist -o ! grep -q "max:" events/sched/sched_switch/hist]; then ++ fail "Failed to create onmatch-onmax action inter-event histogram" ++fi ++ ++do_reset ++ ++exit 0 +--- /dev/null ++++ b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmax-action-hist.tc +@@ -0,0 +1,48 @@ ++#!/bin/sh ++# description: event trigger - test inter-event histogram trigger onmax action ++ ++do_reset() { ++ reset_trigger ++ echo > set_event ++ clear_trace ++} ++ ++fail() { #msg ++ do_reset ++ echo $1 ++ exit_fail ++} ++ ++if [ ! -f set_event ]; then ++ echo "event tracing is not supported" ++ exit_unsupported ++fi ++ ++if [ ! -f synthetic_events ]; then ++ echo "synthetic event is not supported" ++ exit_unsupported ++fi ++ ++clear_synthetic_events ++reset_tracer ++do_reset ++ ++echo "Test create synthetic event" ++ ++echo 'wakeup_latency u64 lat pid_t pid char comm[16]' > synthetic_events ++if [ ! -d events/synthetic/wakeup_latency ]; then ++ fail "Failed to create wakeup_latency synthetic event" ++fi ++ ++echo "Test onmax action" ++ ++echo 'hist:keys=pid:ts0=common_timestamp.usecs if comm=="ping"' >> events/sched/sched_waking/trigger ++echo 'hist:keys=next_pid:wakeup_lat=common_timestamp.usecs-$ts0:onmax($wakeup_lat).save(next_comm,prev_pid,prev_prio,prev_comm) if next_comm=="ping"' >> events/sched/sched_switch/trigger ++ping localhost -c 3 ++if ! grep -q "max:" events/sched/sched_switch/hist; then ++ fail "Failed to create onmax action inter-event histogram" ++fi ++ ++do_reset ++ ++exit 0 +--- /dev/null ++++ b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-synthetic-event-createremove.tc +@@ -0,0 +1,54 @@ ++#!/bin/sh ++# description: event trigger - test synthetic event create remove ++do_reset() { ++ reset_trigger ++ echo > set_event ++ clear_trace ++} ++ ++fail() { #msg ++ do_reset ++ echo $1 ++ exit_fail ++} ++ ++if [ ! -f set_event ]; then ++ echo "event tracing is not supported" ++ exit_unsupported ++fi ++ ++if [ ! -f synthetic_events ]; then ++ echo "synthetic event is not supported" ++ exit_unsupported ++fi ++ ++clear_synthetic_events ++reset_tracer ++do_reset ++ ++echo "Test create synthetic event" ++ ++echo 'wakeup_latency u64 lat pid_t pid char comm[16]' > synthetic_events ++if [ ! -d events/synthetic/wakeup_latency ]; then ++ fail "Failed to create wakeup_latency synthetic event" ++fi ++ ++reset_trigger ++ ++echo "Test create synthetic event with an error" ++echo 'wakeup_latency u64 lat pid_t pid char' > synthetic_events > /dev/null ++if [ -d events/synthetic/wakeup_latency ]; then ++ fail "Created wakeup_latency synthetic event with an invalid format" ++fi ++ ++reset_trigger ++ ++echo "Test remove synthetic event" ++echo '!wakeup_latency u64 lat pid_t pid char comm[16]' > synthetic_events ++if [ -d events/synthetic/wakeup_latency ]; then ++ fail "Failed to delete wakeup_latency synthetic event" ++fi ++ ++do_reset ++ ++exit 0 diff --git a/patches/features/all/rt/ARM-enable-irq-in-translation-section-permission-fau.patch b/patches/features/all/rt/ARM-enable-irq-in-translation-section-permission-fau.patch new file mode 100644 index 00000000000..19ccb4ced4c --- /dev/null +++ b/patches/features/all/rt/ARM-enable-irq-in-translation-section-permission-fau.patch @@ -0,0 +1,86 @@ +From: "Yadi.hu" +Date: Wed, 10 Dec 2014 10:32:09 +0800 +Subject: ARM: enable irq in translation/section permission fault handlers +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Probably happens on all ARM, with +CONFIG_PREEMPT_RT_FULL +CONFIG_DEBUG_ATOMIC_SLEEP + +This simple program.... + +int main() { + *((char*)0xc0001000) = 0; +}; + +[ 512.742724] BUG: sleeping function called from invalid context at kernel/rtmutex.c:658 +[ 512.743000] in_atomic(): 0, irqs_disabled(): 128, pid: 994, name: a +[ 512.743217] INFO: lockdep is turned off. +[ 512.743360] irq event stamp: 0 +[ 512.743482] hardirqs last enabled at (0): [< (null)>] (null) +[ 512.743714] hardirqs last disabled at (0): [] copy_process+0x3b0/0x11c0 +[ 512.744013] softirqs last enabled at (0): [] copy_process+0x3b0/0x11c0 +[ 512.744303] softirqs last disabled at (0): [< (null)>] (null) +[ 512.744631] [] (unwind_backtrace+0x0/0x104) +[ 512.745001] [] (dump_stack+0x20/0x24) +[ 512.745355] [] (__might_sleep+0x1dc/0x1e0) +[ 512.745717] [] (rt_spin_lock+0x34/0x6c) +[ 512.746073] [] (do_force_sig_info+0x34/0xf0) +[ 512.746457] [] (force_sig_info+0x18/0x1c) +[ 512.746829] [] (__do_user_fault+0x9c/0xd8) +[ 512.747185] [] (do_bad_area+0x7c/0x94) +[ 512.747536] [] (do_sect_fault+0x40/0x48) +[ 512.747898] [] (do_DataAbort+0x40/0xa0) +[ 512.748181] Exception stack(0xecaa1fb0 to 0xecaa1ff8) + +Oxc0000000 belongs to kernel address space, user task can not be +allowed to access it. For above condition, correct result is that +test case should receive a “segment fault” and exits but not stacks. + +the root cause is commit 02fe2845d6a8 ("avoid enabling interrupts in +prefetch/data abort handlers"),it deletes irq enable block in Data +abort assemble code and move them into page/breakpiont/alignment fault +handlers instead. But author does not enable irq in translation/section +permission fault handlers. ARM disables irq when it enters exception/ +interrupt mode, if kernel doesn't enable irq, it would be still disabled +during translation/section permission fault. + +We see the above splat because do_force_sig_info is still called with +IRQs off, and that code eventually does a: + + spin_lock_irqsave(&t->sighand->siglock, flags); + +As this is architecture independent code, and we've not seen any other +need for other arch to have the siglock converted to raw lock, we can +conclude that we should enable irq for ARM translation/section +permission exception. + + +Signed-off-by: Yadi.hu +Signed-off-by: Sebastian Andrzej Siewior +--- + arch/arm/mm/fault.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +--- a/arch/arm/mm/fault.c ++++ b/arch/arm/mm/fault.c +@@ -434,6 +434,9 @@ do_translation_fault(unsigned long addr, + if (addr < TASK_SIZE) + return do_page_fault(addr, fsr, regs); + ++ if (interrupts_enabled(regs)) ++ local_irq_enable(); ++ + if (user_mode(regs)) + goto bad_area; + +@@ -501,6 +504,9 @@ do_translation_fault(unsigned long addr, + static int + do_sect_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs) + { ++ if (interrupts_enabled(regs)) ++ local_irq_enable(); ++ + do_bad_area(addr, fsr, regs); + return 0; + } diff --git a/patches/features/all/rt/Bluetooth-avoid-recursive-locking-in-hci_send_to_cha.patch b/patches/features/all/rt/Bluetooth-avoid-recursive-locking-in-hci_send_to_cha.patch new file mode 100644 index 00000000000..83f76002716 --- /dev/null +++ b/patches/features/all/rt/Bluetooth-avoid-recursive-locking-in-hci_send_to_cha.patch @@ -0,0 +1,71 @@ +From: Sebastian Andrzej Siewior +Date: Thu, 21 Sep 2017 15:35:57 +0200 +Subject: Bluetooth: avoid recursive locking in + hci_send_to_channel() +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Mart reported a deadlock in -RT in the call path: + hci_send_monitor_ctrl_event() -> hci_send_to_channel() + +because both functions acquire the same read lock hci_sk_list.lock. This +is also a mainline issue because the qrwlock implementation is writer +fair (the traditional rwlock implementation is reader biased). + +To avoid the deadlock there is now __hci_send_to_channel() which expects +the readlock to be held. + +Cc: Marcel Holtmann +Cc: Johan Hedberg +Cc: stable-rt@vger.kernel.org +Fixes: 38ceaa00d02d ("Bluetooth: Add support for sending MGMT commands and events to monitor") +Reported-by: Mart van de Wege +Signed-off-by: Sebastian Andrzej Siewior +--- + net/bluetooth/hci_sock.c | 17 +++++++++++------ + 1 file changed, 11 insertions(+), 6 deletions(-) + +--- a/net/bluetooth/hci_sock.c ++++ b/net/bluetooth/hci_sock.c +@@ -251,15 +251,13 @@ void hci_send_to_sock(struct hci_dev *hd + } + + /* Send frame to sockets with specific channel */ +-void hci_send_to_channel(unsigned short channel, struct sk_buff *skb, +- int flag, struct sock *skip_sk) ++static void __hci_send_to_channel(unsigned short channel, struct sk_buff *skb, ++ int flag, struct sock *skip_sk) + { + struct sock *sk; + + BT_DBG("channel %u len %d", channel, skb->len); + +- read_lock(&hci_sk_list.lock); +- + sk_for_each(sk, &hci_sk_list.head) { + struct sk_buff *nskb; + +@@ -285,6 +283,13 @@ void hci_send_to_channel(unsigned short + kfree_skb(nskb); + } + ++} ++ ++void hci_send_to_channel(unsigned short channel, struct sk_buff *skb, ++ int flag, struct sock *skip_sk) ++{ ++ read_lock(&hci_sk_list.lock); ++ __hci_send_to_channel(channel, skb, flag, skip_sk); + read_unlock(&hci_sk_list.lock); + } + +@@ -388,8 +393,8 @@ void hci_send_monitor_ctrl_event(struct + hdr->index = index; + hdr->len = cpu_to_le16(skb->len - HCI_MON_HDR_SIZE); + +- hci_send_to_channel(HCI_CHANNEL_MONITOR, skb, +- HCI_SOCK_TRUSTED, NULL); ++ __hci_send_to_channel(HCI_CHANNEL_MONITOR, skb, ++ HCI_SOCK_TRUSTED, NULL); + kfree_skb(skb); + } + diff --git a/patches/features/all/rt/HACK-printk-drop-the-logbuf_lock-more-often.patch b/patches/features/all/rt/HACK-printk-drop-the-logbuf_lock-more-often.patch new file mode 100644 index 00000000000..f498f70e9c1 --- /dev/null +++ b/patches/features/all/rt/HACK-printk-drop-the-logbuf_lock-more-often.patch @@ -0,0 +1,77 @@ +From: Sebastian Andrzej Siewior +Date: Thu, 21 Mar 2013 19:01:05 +0100 +Subject: printk: Drop the logbuf_lock more often +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +The lock is hold with irgs off. The latency drops 500us+ on my arm bugs +with a "full" buffer after executing "dmesg" on the shell. + +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/printk/printk.c | 27 +++++++++++++++++++++++++++ + 1 file changed, 27 insertions(+) + +--- a/kernel/printk/printk.c ++++ b/kernel/printk/printk.c +@@ -1407,6 +1407,8 @@ static int syslog_print_all(char __user + { + char *text; + int len = 0; ++ int attempts = 0; ++ int num_msg; + + text = kmalloc(LOG_LINE_MAX + PREFIX_MAX, GFP_KERNEL); + if (!text) +@@ -1418,6 +1420,14 @@ static int syslog_print_all(char __user + u64 seq; + u32 idx; + ++try_again: ++ attempts++; ++ if (attempts > 10) { ++ len = -EBUSY; ++ goto out; ++ } ++ num_msg = 0; ++ + /* + * Find first record that fits, including all following records, + * into the user-provided buffer for this dump. +@@ -1430,6 +1440,14 @@ static int syslog_print_all(char __user + len += msg_print_text(msg, true, NULL, 0); + idx = log_next(idx); + seq++; ++ num_msg++; ++ if (num_msg > 5) { ++ num_msg = 0; ++ logbuf_unlock_irq(); ++ logbuf_lock_irq(); ++ if (clear_seq < log_first_seq) ++ goto try_again; ++ } + } + + /* move first record forward until length fits into the buffer */ +@@ -1441,6 +1459,14 @@ static int syslog_print_all(char __user + len -= msg_print_text(msg, true, NULL, 0); + idx = log_next(idx); + seq++; ++ num_msg++; ++ if (num_msg > 5) { ++ num_msg = 0; ++ logbuf_unlock_irq(); ++ logbuf_lock_irq(); ++ if (clear_seq < log_first_seq) ++ goto try_again; ++ } + } + + /* last message fitting into this dump */ +@@ -1479,6 +1505,7 @@ static int syslog_print_all(char __user + clear_seq = log_next_seq; + clear_idx = log_next_idx; + } ++out: + logbuf_unlock_irq(); + + kfree(text); diff --git a/patches/features/all/rt/KVM-arm-arm64-downgrade-preempt_disable-d-region-to-.patch b/patches/features/all/rt/KVM-arm-arm64-downgrade-preempt_disable-d-region-to-.patch new file mode 100644 index 00000000000..f51a9972b2d --- /dev/null +++ b/patches/features/all/rt/KVM-arm-arm64-downgrade-preempt_disable-d-region-to-.patch @@ -0,0 +1,52 @@ +From: Josh Cartwright +Date: Thu, 11 Feb 2016 11:54:01 -0600 +Subject: KVM: arm/arm64: downgrade preempt_disable()d region to migrate_disable() +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +kvm_arch_vcpu_ioctl_run() disables the use of preemption when updating +the vgic and timer states to prevent the calling task from migrating to +another CPU. It does so to prevent the task from writing to the +incorrect per-CPU GIC distributor registers. + +On -rt kernels, it's possible to maintain the same guarantee with the +use of migrate_{disable,enable}(), with the added benefit that the +migrate-disabled region is preemptible. Update +kvm_arch_vcpu_ioctl_run() to do so. + +Cc: Christoffer Dall +Reported-by: Manish Jaggi +Signed-off-by: Josh Cartwright +Signed-off-by: Sebastian Andrzej Siewior +--- + virt/kvm/arm/arm.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +--- a/virt/kvm/arm/arm.c ++++ b/virt/kvm/arm/arm.c +@@ -650,7 +650,7 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_v + * involves poking the GIC, which must be done in a + * non-preemptible context. + */ +- preempt_disable(); ++ migrate_disable(); + + kvm_pmu_flush_hwstate(vcpu); + +@@ -687,7 +687,7 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_v + kvm_pmu_sync_hwstate(vcpu); + kvm_timer_sync_hwstate(vcpu); + kvm_vgic_sync_hwstate(vcpu); +- preempt_enable(); ++ migrate_enable(); + continue; + } + +@@ -742,7 +742,7 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_v + + kvm_vgic_sync_hwstate(vcpu); + +- preempt_enable(); ++ migrate_enable(); + + ret = handle_exit(vcpu, run, ret); + } diff --git a/patches/features/all/rt/NFSv4-replace-seqcount_t-with-a-seqlock_t.patch b/patches/features/all/rt/NFSv4-replace-seqcount_t-with-a-seqlock_t.patch new file mode 100644 index 00000000000..4edbf930edb --- /dev/null +++ b/patches/features/all/rt/NFSv4-replace-seqcount_t-with-a-seqlock_t.patch @@ -0,0 +1,128 @@ +Date: Fri, 28 Oct 2016 23:05:11 +0200 +From: Sebastian Andrzej Siewior +To: Trond Myklebust +Cc: Anna Schumaker , + linux-nfs@vger.kernel.org, linux-kernel@vger.kernel.org, + tglx@linutronix.de +Subject: NFSv4: replace seqcount_t with a seqlock_t +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +The raw_write_seqcount_begin() in nfs4_reclaim_open_state() bugs me +because it maps to preempt_disable() in -RT which I can't have at this +point. So I took a look at the code. +It the lockdep part was removed in commit abbec2da13f0 ("NFS: Use +raw_write_seqcount_begin/end int nfs4_reclaim_open_state") because +lockdep complained. The whole seqcount thing was introduced in commit +c137afabe330 ("NFSv4: Allow the state manager to mark an open_owner as +being recovered"). +The recovery threads runs only once. +write_seqlock() does not work on !RT because it disables preemption and it the +writer side is preemptible (has to remain so despite the fact that it will +block readers). + +Reported-by: kernel test robot +Signed-off-by: Sebastian Andrzej Siewior +--- + fs/nfs/delegation.c | 4 ++-- + fs/nfs/nfs4_fs.h | 2 +- + fs/nfs/nfs4proc.c | 4 ++-- + fs/nfs/nfs4state.c | 22 ++++++++++++++++------ + 4 files changed, 21 insertions(+), 11 deletions(-) + +--- a/fs/nfs/delegation.c ++++ b/fs/nfs/delegation.c +@@ -150,11 +150,11 @@ static int nfs_delegation_claim_opens(st + sp = state->owner; + /* Block nfs4_proc_unlck */ + mutex_lock(&sp->so_delegreturn_mutex); +- seq = raw_seqcount_begin(&sp->so_reclaim_seqcount); ++ seq = read_seqbegin(&sp->so_reclaim_seqlock); + err = nfs4_open_delegation_recall(ctx, state, stateid, type); + if (!err) + err = nfs_delegation_claim_locks(ctx, state, stateid); +- if (!err && read_seqcount_retry(&sp->so_reclaim_seqcount, seq)) ++ if (!err && read_seqretry(&sp->so_reclaim_seqlock, seq)) + err = -EAGAIN; + mutex_unlock(&sp->so_delegreturn_mutex); + put_nfs_open_context(ctx); +--- a/fs/nfs/nfs4_fs.h ++++ b/fs/nfs/nfs4_fs.h +@@ -112,7 +112,7 @@ struct nfs4_state_owner { + unsigned long so_flags; + struct list_head so_states; + struct nfs_seqid_counter so_seqid; +- seqcount_t so_reclaim_seqcount; ++ seqlock_t so_reclaim_seqlock; + struct mutex so_delegreturn_mutex; + }; + +--- a/fs/nfs/nfs4proc.c ++++ b/fs/nfs/nfs4proc.c +@@ -2638,7 +2638,7 @@ static int _nfs4_open_and_get_state(stru + unsigned int seq; + int ret; + +- seq = raw_seqcount_begin(&sp->so_reclaim_seqcount); ++ seq = raw_seqcount_begin(&sp->so_reclaim_seqlock.seqcount); + + ret = _nfs4_proc_open(opendata); + if (ret != 0) +@@ -2676,7 +2676,7 @@ static int _nfs4_open_and_get_state(stru + + if (d_inode(dentry) == state->inode) { + nfs_inode_attach_open_context(ctx); +- if (read_seqcount_retry(&sp->so_reclaim_seqcount, seq)) ++ if (read_seqretry(&sp->so_reclaim_seqlock, seq)) + nfs4_schedule_stateid_recovery(server, state); + } + out: +--- a/fs/nfs/nfs4state.c ++++ b/fs/nfs/nfs4state.c +@@ -494,7 +494,7 @@ nfs4_alloc_state_owner(struct nfs_server + nfs4_init_seqid_counter(&sp->so_seqid); + atomic_set(&sp->so_count, 1); + INIT_LIST_HEAD(&sp->so_lru); +- seqcount_init(&sp->so_reclaim_seqcount); ++ seqlock_init(&sp->so_reclaim_seqlock); + mutex_init(&sp->so_delegreturn_mutex); + return sp; + } +@@ -1516,8 +1516,12 @@ static int nfs4_reclaim_open_state(struc + * recovering after a network partition or a reboot from a + * server that doesn't support a grace period. + */ ++#ifdef CONFIG_PREEMPT_RT_FULL ++ write_seqlock(&sp->so_reclaim_seqlock); ++#else ++ write_seqcount_begin(&sp->so_reclaim_seqlock.seqcount); ++#endif + spin_lock(&sp->so_lock); +- raw_write_seqcount_begin(&sp->so_reclaim_seqcount); + restart: + list_for_each_entry(state, &sp->so_states, open_states) { + if (!test_and_clear_bit(ops->state_flag_bit, &state->flags)) +@@ -1586,14 +1590,20 @@ static int nfs4_reclaim_open_state(struc + spin_lock(&sp->so_lock); + goto restart; + } +- raw_write_seqcount_end(&sp->so_reclaim_seqcount); + spin_unlock(&sp->so_lock); ++#ifdef CONFIG_PREEMPT_RT_FULL ++ write_sequnlock(&sp->so_reclaim_seqlock); ++#else ++ write_seqcount_end(&sp->so_reclaim_seqlock.seqcount); ++#endif + return 0; + out_err: + nfs4_put_open_state(state); +- spin_lock(&sp->so_lock); +- raw_write_seqcount_end(&sp->so_reclaim_seqcount); +- spin_unlock(&sp->so_lock); ++#ifdef CONFIG_PREEMPT_RT_FULL ++ write_sequnlock(&sp->so_reclaim_seqlock); ++#else ++ write_seqcount_end(&sp->so_reclaim_seqlock.seqcount); ++#endif + return status; + } + diff --git a/patches/features/all/rt/RCU-we-need-to-skip-that-warning-but-only-on-sleepin.patch b/patches/features/all/rt/RCU-we-need-to-skip-that-warning-but-only-on-sleepin.patch new file mode 100644 index 00000000000..5eb1ecf08a7 --- /dev/null +++ b/patches/features/all/rt/RCU-we-need-to-skip-that-warning-but-only-on-sleepin.patch @@ -0,0 +1,36 @@ +From: Sebastian Andrzej Siewior +Date: Thu, 21 Sep 2017 14:25:13 +0200 +Subject: [PATCH] RCU: we need to skip that warning but only on sleeping + locks +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +This check is okay for upstream. On RT we trigger this while blocking on +sleeping lock. In this case, it is okay to schedule() within a RCU +section. +Since spin_lock() and read_lock() disables migration it should be okay +to test for this as an indication whether or not a sleeping lock is +held. The ->pi_blocked_on member won't work becasuse it might also be +set on regular mutexes. + +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/rcu/tree_plugin.h | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +--- a/kernel/rcu/tree_plugin.h ++++ b/kernel/rcu/tree_plugin.h +@@ -323,9 +323,13 @@ static void rcu_preempt_note_context_swi + struct task_struct *t = current; + struct rcu_data *rdp; + struct rcu_node *rnp; ++ int mg_counter = 0; + + RCU_LOCKDEP_WARN(!irqs_disabled(), "rcu_preempt_note_context_switch() invoked with interrupts enabled!!!\n"); +- WARN_ON_ONCE(!preempt && t->rcu_read_lock_nesting > 0); ++#if defined(CONFIG_PREEMPT_COUNT) && defined(CONFIG_SMP) ++ mg_counter = t->migrate_disable; ++#endif ++ WARN_ON_ONCE(!preempt && t->rcu_read_lock_nesting > 0 && !mg_counter); + if (t->rcu_read_lock_nesting > 0 && + !t->rcu_read_unlock_special.b.blocked) { + diff --git a/patches/features/all/rt/Revert-fs-jbd2-pull-your-plug-when-waiting-for-space.patch b/patches/features/all/rt/Revert-fs-jbd2-pull-your-plug-when-waiting-for-space.patch new file mode 100644 index 00000000000..62008be3ffe --- /dev/null +++ b/patches/features/all/rt/Revert-fs-jbd2-pull-your-plug-when-waiting-for-space.patch @@ -0,0 +1,26 @@ +From: Sebastian Andrzej Siewior +Date: Thu, 23 Nov 2017 17:51:51 +0100 +Subject: [PATCH] Revert "fs: jbd2: pull your plug when waiting for space" +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +This reverts commit "fs: jbd2: pull your plug when waiting for space". +This was a duct-tape fix which shouldn't be needed since commit +"locking/rt-mutex: fix deadlock in device mapper / block-IO". + +Cc: stable-rt@vger.kernel.org +Signed-off-by: Sebastian Andrzej Siewior +--- + fs/jbd2/checkpoint.c | 2 -- + 1 file changed, 2 deletions(-) + +--- a/fs/jbd2/checkpoint.c ++++ b/fs/jbd2/checkpoint.c +@@ -116,8 +116,6 @@ void __jbd2_log_wait_for_space(journal_t + nblocks = jbd2_space_needed(journal); + while (jbd2_log_space_left(journal) < nblocks) { + write_unlock(&journal->j_state_lock); +- if (current->plug) +- io_schedule(); + mutex_lock(&journal->j_checkpoint_mutex); + + /* diff --git a/patches/features/all/rt/Revert-memcontrol-Prevent-scheduling-while-atomic-in.patch b/patches/features/all/rt/Revert-memcontrol-Prevent-scheduling-while-atomic-in.patch new file mode 100644 index 00000000000..ac89c523644 --- /dev/null +++ b/patches/features/all/rt/Revert-memcontrol-Prevent-scheduling-while-atomic-in.patch @@ -0,0 +1,101 @@ +From: "Steven Rostedt (VMware)" +Date: Wed, 22 Nov 2017 07:31:19 -0500 +Subject: [PATCH] Revert "memcontrol: Prevent scheduling while atomic in cgroup + code" +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +The commit "memcontrol: Prevent scheduling while atomic in cgroup code" +fixed this issue: + + refill_stock() + get_cpu_var() + drain_stock() + res_counter_uncharge() + res_counter_uncharge_until() + spin_lock() <== boom + +But commit 3e32cb2e0a12b ("mm: memcontrol: lockless page counters") replaced +the calls to res_counter_uncharge() in drain_stock() to the lockless +function page_counter_uncharge(). There is no more spin lock there and no +more reason to have that local lock. + +Cc: +Reported-by: Haiyang HY1 Tan +Signed-off-by: Steven Rostedt (VMware) +[bigeasy: That upstream commit appeared in v3.19 and the patch in + question in v3.18.7-rt2 and v3.18 seems still to be maintained. So I + guess that v3.18 would need the locallocks that we are about to remove + here. I am not sure if any earlier versions have the patch + backported. + The stable tag here is because Haiyang reported (and debugged) a crash + in 4.4-RT with this patch applied (which has get_cpu_light() instead + the locallocks it gained in v4.9-RT). + https://lkml.kernel.org/r/05AA4EC5C6EC1D48BE2CDCFF3AE0B8A637F78A15@CNMAILEX04.lenovo.com +] +Signed-off-by: Sebastian Andrzej Siewior +--- + mm/memcontrol.c | 13 ++++++------- + 1 file changed, 6 insertions(+), 7 deletions(-) + +--- a/mm/memcontrol.c ++++ b/mm/memcontrol.c +@@ -1723,7 +1723,6 @@ struct memcg_stock_pcp { + #define FLUSHING_CACHED_CHARGE 0 + }; + static DEFINE_PER_CPU(struct memcg_stock_pcp, memcg_stock); +-static DEFINE_LOCAL_IRQ_LOCK(memcg_stock_ll); + static DEFINE_MUTEX(percpu_charge_mutex); + + /** +@@ -1746,7 +1745,7 @@ static bool consume_stock(struct mem_cgr + if (nr_pages > CHARGE_BATCH) + return ret; + +- local_lock_irqsave(memcg_stock_ll, flags); ++ local_irq_save(flags); + + stock = this_cpu_ptr(&memcg_stock); + if (memcg == stock->cached && stock->nr_pages >= nr_pages) { +@@ -1754,7 +1753,7 @@ static bool consume_stock(struct mem_cgr + ret = true; + } + +- local_unlock_irqrestore(memcg_stock_ll, flags); ++ local_irq_restore(flags); + + return ret; + } +@@ -1785,13 +1784,13 @@ static void drain_local_stock(struct wor + * The only protection from memory hotplug vs. drain_stock races is + * that we always operate on local CPU stock here with IRQ disabled + */ +- local_lock_irqsave(memcg_stock_ll, flags); ++ local_irq_save(flags); + + stock = this_cpu_ptr(&memcg_stock); + drain_stock(stock); + clear_bit(FLUSHING_CACHED_CHARGE, &stock->flags); + +- local_unlock_irqrestore(memcg_stock_ll, flags); ++ local_irq_restore(flags); + } + + /* +@@ -1803,7 +1802,7 @@ static void refill_stock(struct mem_cgro + struct memcg_stock_pcp *stock; + unsigned long flags; + +- local_lock_irqsave(memcg_stock_ll, flags); ++ local_irq_save(flags); + + stock = this_cpu_ptr(&memcg_stock); + if (stock->cached != memcg) { /* reset if necessary */ +@@ -1815,7 +1814,7 @@ static void refill_stock(struct mem_cgro + if (stock->nr_pages > CHARGE_BATCH) + drain_stock(stock); + +- local_unlock_irqrestore(memcg_stock_ll, flags); ++ local_irq_restore(flags); + } + + /* diff --git a/patches/features/all/rt/acpi-rt-Convert-acpi_gbl_hardware-lock-back-to-a-raw.patch b/patches/features/all/rt/acpi-rt-Convert-acpi_gbl_hardware-lock-back-to-a-raw.patch new file mode 100644 index 00000000000..0490c4c8c94 --- /dev/null +++ b/patches/features/all/rt/acpi-rt-Convert-acpi_gbl_hardware-lock-back-to-a-raw.patch @@ -0,0 +1,174 @@ +From: Steven Rostedt +Date: Wed, 13 Feb 2013 09:26:05 -0500 +Subject: acpi/rt: Convert acpi_gbl_hardware lock back to a raw_spinlock_t +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +We hit the following bug with 3.6-rt: + +[ 5.898990] BUG: scheduling while atomic: swapper/3/0/0x00000002 +[ 5.898991] no locks held by swapper/3/0. +[ 5.898993] Modules linked in: +[ 5.898996] Pid: 0, comm: swapper/3 Not tainted 3.6.11-rt28.19.el6rt.x86_64.debug #1 +[ 5.898997] Call Trace: +[ 5.899011] [] __schedule_bug+0x67/0x90 +[ 5.899028] [] __schedule+0x793/0x7a0 +[ 5.899032] [] ? debug_rt_mutex_print_deadlock+0x50/0x200 +[ 5.899034] [] schedule+0x29/0x70 +[ 5.899036] BUG: scheduling while atomic: swapper/7/0/0x00000002 +[ 5.899037] no locks held by swapper/7/0. +[ 5.899039] [] rt_spin_lock_slowlock+0xe5/0x2f0 +[ 5.899040] Modules linked in: +[ 5.899041] +[ 5.899045] [] ? _raw_spin_unlock_irqrestore+0x38/0x90 +[ 5.899046] Pid: 0, comm: swapper/7 Not tainted 3.6.11-rt28.19.el6rt.x86_64.debug #1 +[ 5.899047] Call Trace: +[ 5.899049] [] rt_spin_lock+0x16/0x40 +[ 5.899052] [] __schedule_bug+0x67/0x90 +[ 5.899054] [] ? notifier_call_chain+0x80/0x80 +[ 5.899056] [] __schedule+0x793/0x7a0 +[ 5.899059] [] acpi_os_acquire_lock+0x1f/0x23 +[ 5.899062] [] ? debug_rt_mutex_print_deadlock+0x50/0x200 +[ 5.899068] [] acpi_write_bit_register+0x33/0xb0 +[ 5.899071] [] schedule+0x29/0x70 +[ 5.899072] [] ? acpi_read_bit_register+0x33/0x51 +[ 5.899074] [] rt_spin_lock_slowlock+0xe5/0x2f0 +[ 5.899077] [] acpi_idle_enter_bm+0x8a/0x28e +[ 5.899079] [] ? _raw_spin_unlock_irqrestore+0x38/0x90 +[ 5.899081] [] ? this_cpu_load+0x1a/0x30 +[ 5.899083] [] rt_spin_lock+0x16/0x40 +[ 5.899087] [] cpuidle_enter+0x19/0x20 +[ 5.899088] [] ? notifier_call_chain+0x80/0x80 +[ 5.899090] [] cpuidle_enter_state+0x17/0x50 +[ 5.899092] [] acpi_os_acquire_lock+0x1f/0x23 +[ 5.899094] [] cpuidle899101] [] ? + +As the acpi code disables interrupts in acpi_idle_enter_bm, and calls +code that grabs the acpi lock, it causes issues as the lock is currently +in RT a sleeping lock. + +The lock was converted from a raw to a sleeping lock due to some +previous issues, and tests that showed it didn't seem to matter. +Unfortunately, it did matter for one of our boxes. + +This patch converts the lock back to a raw lock. I've run this code on a +few of my own machines, one being my laptop that uses the acpi quite +extensively. I've been able to suspend and resume without issues. + +[ tglx: Made the change exclusive for acpi_gbl_hardware_lock ] + +Signed-off-by: Steven Rostedt +Cc: John Kacur +Cc: Clark Williams +Link: http://lkml.kernel.org/r/1360765565.23152.5.camel@gandalf.local.home + +Signed-off-by: Thomas Gleixner +Signed-off-by: Sebastian Andrzej Siewior +--- + drivers/acpi/acpica/acglobal.h | 2 +- + drivers/acpi/acpica/hwregs.c | 4 ++-- + drivers/acpi/acpica/hwxface.c | 4 ++-- + drivers/acpi/acpica/utmutex.c | 4 ++-- + include/acpi/platform/aclinux.h | 15 +++++++++++++++ + 5 files changed, 22 insertions(+), 7 deletions(-) + +--- a/drivers/acpi/acpica/acglobal.h ++++ b/drivers/acpi/acpica/acglobal.h +@@ -116,7 +116,7 @@ ACPI_GLOBAL(u8, acpi_gbl_global_lock_pen + * interrupt level + */ + ACPI_GLOBAL(acpi_spinlock, acpi_gbl_gpe_lock); /* For GPE data structs and registers */ +-ACPI_GLOBAL(acpi_spinlock, acpi_gbl_hardware_lock); /* For ACPI H/W except GPE registers */ ++ACPI_GLOBAL(acpi_raw_spinlock, acpi_gbl_hardware_lock); /* For ACPI H/W except GPE registers */ + ACPI_GLOBAL(acpi_spinlock, acpi_gbl_reference_count_lock); + + /* Mutex for _OSI support */ +--- a/drivers/acpi/acpica/hwregs.c ++++ b/drivers/acpi/acpica/hwregs.c +@@ -428,14 +428,14 @@ acpi_status acpi_hw_clear_acpi_status(vo + ACPI_BITMASK_ALL_FIXED_STATUS, + ACPI_FORMAT_UINT64(acpi_gbl_xpm1a_status.address))); + +- lock_flags = acpi_os_acquire_lock(acpi_gbl_hardware_lock); ++ raw_spin_lock_irqsave(acpi_gbl_hardware_lock, lock_flags); + + /* Clear the fixed events in PM1 A/B */ + + status = acpi_hw_register_write(ACPI_REGISTER_PM1_STATUS, + ACPI_BITMASK_ALL_FIXED_STATUS); + +- acpi_os_release_lock(acpi_gbl_hardware_lock, lock_flags); ++ raw_spin_unlock_irqrestore(acpi_gbl_hardware_lock, lock_flags); + + if (ACPI_FAILURE(status)) { + goto exit; +--- a/drivers/acpi/acpica/hwxface.c ++++ b/drivers/acpi/acpica/hwxface.c +@@ -373,7 +373,7 @@ acpi_status acpi_write_bit_register(u32 + return_ACPI_STATUS(AE_BAD_PARAMETER); + } + +- lock_flags = acpi_os_acquire_lock(acpi_gbl_hardware_lock); ++ raw_spin_lock_irqsave(acpi_gbl_hardware_lock, lock_flags); + + /* + * At this point, we know that the parent register is one of the +@@ -434,7 +434,7 @@ acpi_status acpi_write_bit_register(u32 + + unlock_and_exit: + +- acpi_os_release_lock(acpi_gbl_hardware_lock, lock_flags); ++ raw_spin_unlock_irqrestore(acpi_gbl_hardware_lock, lock_flags); + return_ACPI_STATUS(status); + } + +--- a/drivers/acpi/acpica/utmutex.c ++++ b/drivers/acpi/acpica/utmutex.c +@@ -88,7 +88,7 @@ acpi_status acpi_ut_mutex_initialize(voi + return_ACPI_STATUS (status); + } + +- status = acpi_os_create_lock (&acpi_gbl_hardware_lock); ++ status = acpi_os_create_raw_lock (&acpi_gbl_hardware_lock); + if (ACPI_FAILURE (status)) { + return_ACPI_STATUS (status); + } +@@ -145,7 +145,7 @@ void acpi_ut_mutex_terminate(void) + /* Delete the spinlocks */ + + acpi_os_delete_lock(acpi_gbl_gpe_lock); +- acpi_os_delete_lock(acpi_gbl_hardware_lock); ++ acpi_os_delete_raw_lock(acpi_gbl_hardware_lock); + acpi_os_delete_lock(acpi_gbl_reference_count_lock); + + /* Delete the reader/writer lock */ +--- a/include/acpi/platform/aclinux.h ++++ b/include/acpi/platform/aclinux.h +@@ -134,6 +134,7 @@ + + #define acpi_cache_t struct kmem_cache + #define acpi_spinlock spinlock_t * ++#define acpi_raw_spinlock raw_spinlock_t * + #define acpi_cpu_flags unsigned long + + /* Use native linux version of acpi_os_allocate_zeroed */ +@@ -152,6 +153,20 @@ + #define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_thread_id + #define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_create_lock + ++#define acpi_os_create_raw_lock(__handle) \ ++({ \ ++ raw_spinlock_t *lock = ACPI_ALLOCATE(sizeof(*lock)); \ ++ \ ++ if (lock) { \ ++ *(__handle) = lock; \ ++ raw_spin_lock_init(*(__handle)); \ ++ } \ ++ lock ? AE_OK : AE_NO_MEMORY; \ ++ }) ++ ++#define acpi_os_delete_raw_lock(__handle) kfree(__handle) ++ ++ + /* + * OSL interfaces used by debugger/disassembler + */ diff --git a/patches/features/all/rt/add_migrate_disable.patch b/patches/features/all/rt/add_migrate_disable.patch new file mode 100644 index 00000000000..f33a098c804 --- /dev/null +++ b/patches/features/all/rt/add_migrate_disable.patch @@ -0,0 +1,252 @@ +From: Sebastian Andrzej Siewior +Date: Sat, 27 May 2017 19:02:06 +0200 +Subject: kernel/sched/core: add migrate_disable() +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +--- + include/linux/preempt.h | 23 ++++++++ + include/linux/sched.h | 7 ++ + include/linux/smp.h | 3 + + kernel/sched/core.c | 130 +++++++++++++++++++++++++++++++++++++++++++++++- + kernel/sched/debug.c | 4 + + 5 files changed, 165 insertions(+), 2 deletions(-) + +--- a/include/linux/preempt.h ++++ b/include/linux/preempt.h +@@ -185,6 +185,22 @@ do { \ + + #define preemptible() (preempt_count() == 0 && !irqs_disabled()) + ++#ifdef CONFIG_SMP ++ ++extern void migrate_disable(void); ++extern void migrate_enable(void); ++ ++int __migrate_disabled(struct task_struct *p); ++ ++#else ++#define migrate_disable() barrier() ++#define migrate_enable() barrier() ++static inline int __migrate_disabled(struct task_struct *p) ++{ ++ return 0; ++} ++#endif ++ + #ifdef CONFIG_PREEMPT + #define preempt_enable() \ + do { \ +@@ -253,6 +269,13 @@ do { \ + #define preempt_enable_notrace() barrier() + #define preemptible() 0 + ++#define migrate_disable() barrier() ++#define migrate_enable() barrier() ++ ++static inline int __migrate_disabled(struct task_struct *p) ++{ ++ return 0; ++} + #endif /* CONFIG_PREEMPT_COUNT */ + + #ifdef MODULE +--- a/include/linux/sched.h ++++ b/include/linux/sched.h +@@ -580,6 +580,13 @@ struct task_struct { + int nr_cpus_allowed; + const cpumask_t *cpus_ptr; + cpumask_t cpus_mask; ++#if defined(CONFIG_PREEMPT_COUNT) && defined(CONFIG_SMP) ++ int migrate_disable; ++ int migrate_disable_update; ++# ifdef CONFIG_SCHED_DEBUG ++ int migrate_disable_atomic; ++# endif ++#endif + + #ifdef CONFIG_PREEMPT_RCU + int rcu_read_lock_nesting; +--- a/include/linux/smp.h ++++ b/include/linux/smp.h +@@ -202,6 +202,9 @@ static inline int get_boot_cpu_id(void) + #define get_cpu() ({ preempt_disable(); smp_processor_id(); }) + #define put_cpu() preempt_enable() + ++#define get_cpu_light() ({ migrate_disable(); smp_processor_id(); }) ++#define put_cpu_light() migrate_enable() ++ + /* + * Callback to arch code if there's nosmp or maxcpus=0 on the + * boot command line: +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -1022,7 +1022,15 @@ void set_cpus_allowed_common(struct task + p->nr_cpus_allowed = cpumask_weight(new_mask); + } + +-void do_set_cpus_allowed(struct task_struct *p, const struct cpumask *new_mask) ++#if defined(CONFIG_PREEMPT_COUNT) && defined(CONFIG_SMP) ++int __migrate_disabled(struct task_struct *p) ++{ ++ return p->migrate_disable; ++} ++#endif ++ ++static void __do_set_cpus_allowed_tail(struct task_struct *p, ++ const struct cpumask *new_mask) + { + struct rq *rq = task_rq(p); + bool queued, running; +@@ -1051,6 +1059,20 @@ void do_set_cpus_allowed(struct task_str + set_curr_task(rq, p); + } + ++void do_set_cpus_allowed(struct task_struct *p, const struct cpumask *new_mask) ++{ ++#if defined(CONFIG_PREEMPT_COUNT) && defined(CONFIG_SMP) ++ if (__migrate_disabled(p)) { ++ lockdep_assert_held(&p->pi_lock); ++ ++ cpumask_copy(&p->cpus_mask, new_mask); ++ p->migrate_disable_update = 1; ++ return; ++ } ++#endif ++ __do_set_cpus_allowed_tail(p, new_mask); ++} ++ + /* + * Change a given task's CPU affinity. Migrate the thread to a + * proper CPU and schedule it away if the CPU it's executing on +@@ -1109,9 +1131,16 @@ static int __set_cpus_allowed_ptr(struct + } + + /* Can the task run on the task's current CPU? If so, we're done */ +- if (cpumask_test_cpu(task_cpu(p), new_mask)) ++ if (cpumask_test_cpu(task_cpu(p), new_mask) || __migrate_disabled(p)) + goto out; + ++#if defined(CONFIG_PREEMPT_COUNT) && defined(CONFIG_SMP) ++ if (__migrate_disabled(p)) { ++ p->migrate_disable_update = 1; ++ goto out; ++ } ++#endif ++ + dest_cpu = cpumask_any_and(cpu_valid_mask, new_mask); + if (task_running(rq, p) || p->state == TASK_WAKING) { + struct migration_arg arg = { p, dest_cpu }; +@@ -6759,3 +6788,100 @@ const u32 sched_prio_to_wmult[40] = { + /* 10 */ 39045157, 49367440, 61356676, 76695844, 95443717, + /* 15 */ 119304647, 148102320, 186737708, 238609294, 286331153, + }; ++ ++#if defined(CONFIG_PREEMPT_COUNT) && defined(CONFIG_SMP) ++ ++void migrate_disable(void) ++{ ++ struct task_struct *p = current; ++ ++ if (in_atomic() || irqs_disabled()) { ++#ifdef CONFIG_SCHED_DEBUG ++ p->migrate_disable_atomic++; ++#endif ++ return; ++ } ++#ifdef CONFIG_SCHED_DEBUG ++ WARN_ON_ONCE(p->migrate_disable_atomic); ++#endif ++ ++ if (p->migrate_disable) { ++ p->migrate_disable++; ++ return; ++ } ++ ++ preempt_disable(); ++ p->migrate_disable = 1; ++ ++ p->cpus_ptr = cpumask_of(smp_processor_id()); ++ p->nr_cpus_allowed = 1; ++ ++ preempt_enable(); ++} ++EXPORT_SYMBOL(migrate_disable); ++ ++void migrate_enable(void) ++{ ++ struct task_struct *p = current; ++ ++ if (in_atomic() || irqs_disabled()) { ++#ifdef CONFIG_SCHED_DEBUG ++ p->migrate_disable_atomic--; ++#endif ++ return; ++ } ++ ++#ifdef CONFIG_SCHED_DEBUG ++ WARN_ON_ONCE(p->migrate_disable_atomic); ++#endif ++ ++ WARN_ON_ONCE(p->migrate_disable <= 0); ++ if (p->migrate_disable > 1) { ++ p->migrate_disable--; ++ return; ++ } ++ ++ preempt_disable(); ++ ++ p->cpus_ptr = &p->cpus_mask; ++ p->nr_cpus_allowed = cpumask_weight(&p->cpus_mask); ++ p->migrate_disable = 0; ++ ++ if (p->migrate_disable_update) { ++ struct rq *rq; ++ struct rq_flags rf; ++ ++ rq = task_rq_lock(p, &rf); ++ update_rq_clock(rq); ++ ++ __do_set_cpus_allowed_tail(p, &p->cpus_mask); ++ task_rq_unlock(rq, p, &rf); ++ ++ p->migrate_disable_update = 0; ++ ++ WARN_ON(smp_processor_id() != task_cpu(p)); ++ if (!cpumask_test_cpu(task_cpu(p), &p->cpus_mask)) { ++ const struct cpumask *cpu_valid_mask = cpu_active_mask; ++ struct migration_arg arg; ++ unsigned int dest_cpu; ++ ++ if (p->flags & PF_KTHREAD) { ++ /* ++ * Kernel threads are allowed on online && !active CPUs ++ */ ++ cpu_valid_mask = cpu_online_mask; ++ } ++ dest_cpu = cpumask_any_and(cpu_valid_mask, &p->cpus_mask); ++ arg.task = p; ++ arg.dest_cpu = dest_cpu; ++ ++ preempt_enable(); ++ stop_one_cpu(task_cpu(p), migration_cpu_stop, &arg); ++ tlb_migrate_finish(p->mm); ++ return; ++ } ++ } ++ preempt_enable(); ++} ++EXPORT_SYMBOL(migrate_enable); ++#endif +--- a/kernel/sched/debug.c ++++ b/kernel/sched/debug.c +@@ -1017,6 +1017,10 @@ void proc_sched_show_task(struct task_st + P(dl.runtime); + P(dl.deadline); + } ++#if defined(CONFIG_PREEMPT_COUNT) && defined(CONFIG_SMP) ++ P(migrate_disable); ++#endif ++ P(nr_cpus_allowed); + #undef PN_SCHEDSTAT + #undef PN + #undef __PN diff --git a/patches/features/all/rt/apparmor-use-a-locallock-instead-preempt_disable.patch b/patches/features/all/rt/apparmor-use-a-locallock-instead-preempt_disable.patch new file mode 100644 index 00000000000..a9643f99f60 --- /dev/null +++ b/patches/features/all/rt/apparmor-use-a-locallock-instead-preempt_disable.patch @@ -0,0 +1,84 @@ +From: Sebastian Andrzej Siewior +Date: Wed, 11 Oct 2017 17:43:49 +0200 +Subject: apparmor: use a locallock instead preempt_disable() +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +get_buffers() disables preemption which acts as a lock for the per-CPU +variable. Since we can't disable preemption here on RT, a local_lock is +lock is used in order to remain on the same CPU and not to have more +than one user within the critical section. + +Signed-off-by: Sebastian Andrzej Siewior +--- + security/apparmor/include/path.h | 21 +++++++++++++++++---- + security/apparmor/lsm.c | 2 +- + 2 files changed, 18 insertions(+), 5 deletions(-) + +--- a/security/apparmor/include/path.h ++++ b/security/apparmor/include/path.h +@@ -39,9 +39,10 @@ struct aa_buffers { + }; + + #include +-#include ++#include + + DECLARE_PER_CPU(struct aa_buffers, aa_buffers); ++DECLARE_LOCAL_IRQ_LOCK(aa_buffers_lock); + + #define COUNT_ARGS(X...) COUNT_ARGS_HELPER(, ##X, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0) + #define COUNT_ARGS_HELPER(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, n, X...) n +@@ -55,12 +56,24 @@ DECLARE_PER_CPU(struct aa_buffers, aa_bu + + #define for_each_cpu_buffer(I) for ((I) = 0; (I) < MAX_PATH_BUFFERS; (I)++) + +-#ifdef CONFIG_DEBUG_PREEMPT ++#ifdef CONFIG_PREEMPT_RT_BASE ++ ++static inline void AA_BUG_PREEMPT_ENABLED(const char *s) ++{ ++ struct local_irq_lock *lv; ++ ++ lv = this_cpu_ptr(&aa_buffers_lock); ++ WARN_ONCE(lv->owner != current, ++ "__get_buffer without aa_buffers_lock\n"); ++} ++ ++#elif defined(CONFIG_DEBUG_PREEMPT) + #define AA_BUG_PREEMPT_ENABLED(X) AA_BUG(preempt_count() <= 0, X) + #else + #define AA_BUG_PREEMPT_ENABLED(X) /* nop */ + #endif + ++ + #define __get_buffer(N) ({ \ + struct aa_buffers *__cpu_var; \ + AA_BUG_PREEMPT_ENABLED("__get_buffer without preempt disabled"); \ +@@ -73,14 +86,14 @@ DECLARE_PER_CPU(struct aa_buffers, aa_bu + + #define get_buffers(X...) \ + do { \ +- preempt_disable(); \ ++ local_lock(aa_buffers_lock); \ + __get_buffers(X); \ + } while (0) + + #define put_buffers(X, Y...) \ + do { \ + __put_buffers(X, Y); \ +- preempt_enable(); \ ++ local_unlock(aa_buffers_lock); \ + } while (0) + + #endif /* __AA_PATH_H */ +--- a/security/apparmor/lsm.c ++++ b/security/apparmor/lsm.c +@@ -44,7 +44,7 @@ + int apparmor_initialized; + + DEFINE_PER_CPU(struct aa_buffers, aa_buffers); +- ++DEFINE_LOCAL_IRQ_LOCK(aa_buffers_lock); + + /* + * LSM hook functions diff --git a/patches/features/all/rt/arch-arm64-Add-lazy-preempt-support.patch b/patches/features/all/rt/arch-arm64-Add-lazy-preempt-support.patch new file mode 100644 index 00000000000..4ee962fa314 --- /dev/null +++ b/patches/features/all/rt/arch-arm64-Add-lazy-preempt-support.patch @@ -0,0 +1,119 @@ +From: Anders Roxell +Date: Thu, 14 May 2015 17:52:17 +0200 +Subject: arch/arm64: Add lazy preempt support +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +arm64 is missing support for PREEMPT_RT. The main feature which is +lacking is support for lazy preemption. The arch-specific entry code, +thread information structure definitions, and associated data tables +have to be extended to provide this support. Then the Kconfig file has +to be extended to indicate the support is available, and also to +indicate that support for full RT preemption is now available. + +Signed-off-by: Anders Roxell +--- + arch/arm64/Kconfig | 1 + + arch/arm64/include/asm/thread_info.h | 6 +++++- + arch/arm64/kernel/asm-offsets.c | 1 + + arch/arm64/kernel/entry.S | 12 +++++++++--- + arch/arm64/kernel/signal.c | 2 +- + 5 files changed, 17 insertions(+), 5 deletions(-) + +--- a/arch/arm64/Kconfig ++++ b/arch/arm64/Kconfig +@@ -103,6 +103,7 @@ config ARM64 + select HAVE_PERF_EVENTS + select HAVE_PERF_REGS + select HAVE_PERF_USER_STACK_DUMP ++ select HAVE_PREEMPT_LAZY + select HAVE_REGS_AND_STACK_ACCESS_API + select HAVE_RCU_TABLE_FREE + select HAVE_SYSCALL_TRACEPOINTS +--- a/arch/arm64/include/asm/thread_info.h ++++ b/arch/arm64/include/asm/thread_info.h +@@ -43,6 +43,7 @@ struct thread_info { + u64 ttbr0; /* saved TTBR0_EL1 */ + #endif + int preempt_count; /* 0 => preemptable, <0 => bug */ ++ int preempt_lazy_count; /* 0 => preemptable, <0 => bug */ + }; + + #define INIT_THREAD_INFO(tsk) \ +@@ -82,6 +83,7 @@ void arch_setup_new_exec(void); + #define TIF_FOREIGN_FPSTATE 3 /* CPU's FP state is not current's */ + #define TIF_UPROBE 4 /* uprobe breakpoint or singlestep */ + #define TIF_FSCHECK 5 /* Check FS is USER_DS on return */ ++#define TIF_NEED_RESCHED_LAZY 6 + #define TIF_NOHZ 7 + #define TIF_SYSCALL_TRACE 8 + #define TIF_SYSCALL_AUDIT 9 +@@ -97,6 +99,7 @@ void arch_setup_new_exec(void); + #define _TIF_NEED_RESCHED (1 << TIF_NEED_RESCHED) + #define _TIF_NOTIFY_RESUME (1 << TIF_NOTIFY_RESUME) + #define _TIF_FOREIGN_FPSTATE (1 << TIF_FOREIGN_FPSTATE) ++#define _TIF_NEED_RESCHED_LAZY (1 << TIF_NEED_RESCHED_LAZY) + #define _TIF_NOHZ (1 << TIF_NOHZ) + #define _TIF_SYSCALL_TRACE (1 << TIF_SYSCALL_TRACE) + #define _TIF_SYSCALL_AUDIT (1 << TIF_SYSCALL_AUDIT) +@@ -108,8 +111,9 @@ void arch_setup_new_exec(void); + + #define _TIF_WORK_MASK (_TIF_NEED_RESCHED | _TIF_SIGPENDING | \ + _TIF_NOTIFY_RESUME | _TIF_FOREIGN_FPSTATE | \ +- _TIF_UPROBE | _TIF_FSCHECK) ++ _TIF_UPROBE | _TIF_FSCHECK | _TIF_NEED_RESCHED_LAZY) + ++#define _TIF_NEED_RESCHED_MASK (_TIF_NEED_RESCHED | _TIF_NEED_RESCHED_LAZY) + #define _TIF_SYSCALL_WORK (_TIF_SYSCALL_TRACE | _TIF_SYSCALL_AUDIT | \ + _TIF_SYSCALL_TRACEPOINT | _TIF_SECCOMP | \ + _TIF_NOHZ) +--- a/arch/arm64/kernel/asm-offsets.c ++++ b/arch/arm64/kernel/asm-offsets.c +@@ -38,6 +38,7 @@ int main(void) + BLANK(); + DEFINE(TSK_TI_FLAGS, offsetof(struct task_struct, thread_info.flags)); + DEFINE(TSK_TI_PREEMPT, offsetof(struct task_struct, thread_info.preempt_count)); ++ DEFINE(TSK_TI_PREEMPT_LAZY, offsetof(struct task_struct, thread_info.preempt_lazy_count)); + DEFINE(TSK_TI_ADDR_LIMIT, offsetof(struct task_struct, thread_info.addr_limit)); + #ifdef CONFIG_ARM64_SW_TTBR0_PAN + DEFINE(TSK_TI_TTBR0, offsetof(struct task_struct, thread_info.ttbr0)); +--- a/arch/arm64/kernel/entry.S ++++ b/arch/arm64/kernel/entry.S +@@ -570,11 +570,16 @@ ENDPROC(el1_sync) + + #ifdef CONFIG_PREEMPT + ldr w24, [tsk, #TSK_TI_PREEMPT] // get preempt count +- cbnz w24, 1f // preempt count != 0 ++ cbnz w24, 2f // preempt count != 0 + ldr x0, [tsk, #TSK_TI_FLAGS] // get flags +- tbz x0, #TIF_NEED_RESCHED, 1f // needs rescheduling? +- bl el1_preempt ++ tbnz x0, #TIF_NEED_RESCHED, 1f // needs rescheduling? ++ ++ ldr w24, [tsk, #TSK_TI_PREEMPT_LAZY] // get preempt lazy count ++ cbnz w24, 2f // preempt lazy count != 0 ++ tbz x0, #TIF_NEED_RESCHED_LAZY, 2f // needs rescheduling? + 1: ++ bl el1_preempt ++2: + #endif + #ifdef CONFIG_TRACE_IRQFLAGS + bl trace_hardirqs_on +@@ -588,6 +593,7 @@ ENDPROC(el1_irq) + 1: bl preempt_schedule_irq // irq en/disable is done inside + ldr x0, [tsk, #TSK_TI_FLAGS] // get new tasks TI_FLAGS + tbnz x0, #TIF_NEED_RESCHED, 1b // needs rescheduling? ++ tbnz x0, #TIF_NEED_RESCHED_LAZY, 1b // needs rescheduling? + ret x24 + #endif + +--- a/arch/arm64/kernel/signal.c ++++ b/arch/arm64/kernel/signal.c +@@ -755,7 +755,7 @@ asmlinkage void do_notify_resume(struct + /* Check valid user FS if needed */ + addr_limit_user_check(); + +- if (thread_flags & _TIF_NEED_RESCHED) { ++ if (thread_flags & _TIF_NEED_RESCHED_MASK) { + schedule(); + } else { + local_irq_enable(); diff --git a/patches/features/all/rt/arm-at91-pit-remove-irq-handler-when-clock-is-unused.patch b/patches/features/all/rt/arm-at91-pit-remove-irq-handler-when-clock-is-unused.patch new file mode 100644 index 00000000000..f07dcb30eb3 --- /dev/null +++ b/patches/features/all/rt/arm-at91-pit-remove-irq-handler-when-clock-is-unused.patch @@ -0,0 +1,145 @@ +From: Benedikt Spranger +Date: Sat, 6 Mar 2010 17:47:10 +0100 +Subject: ARM: AT91: PIT: Remove irq handler when clock event is unused +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Setup and remove the interrupt handler in clock event mode selection. +This avoids calling the (shared) interrupt handler when the device is +not used. + +Signed-off-by: Benedikt Spranger +Signed-off-by: Thomas Gleixner +[bigeasy: redo the patch with NR_IRQS_LEGACY which is probably required since +commit 8fe82a55 ("ARM: at91: sparse irq support") which is included since v3.6. +Patch based on what Sami Pietikäinen suggested]. +Signed-off-by: Sebastian Andrzej Siewior +--- + drivers/clocksource/timer-atmel-pit.c | 18 +++++++++--------- + drivers/clocksource/timer-atmel-st.c | 34 ++++++++++++++++++++++------------ + 2 files changed, 31 insertions(+), 21 deletions(-) + +--- a/drivers/clocksource/timer-atmel-pit.c ++++ b/drivers/clocksource/timer-atmel-pit.c +@@ -96,15 +96,24 @@ static int pit_clkevt_shutdown(struct cl + + /* disable irq, leaving the clocksource active */ + pit_write(data->base, AT91_PIT_MR, (data->cycle - 1) | AT91_PIT_PITEN); ++ free_irq(data->irq, data); + return 0; + } + ++static irqreturn_t at91sam926x_pit_interrupt(int irq, void *dev_id); + /* + * Clockevent device: interrupts every 1/HZ (== pit_cycles * MCK/16) + */ + static int pit_clkevt_set_periodic(struct clock_event_device *dev) + { + struct pit_data *data = clkevt_to_pit_data(dev); ++ int ret; ++ ++ ret = request_irq(data->irq, at91sam926x_pit_interrupt, ++ IRQF_SHARED | IRQF_TIMER | IRQF_IRQPOLL, ++ "at91_tick", data); ++ if (ret) ++ panic(pr_fmt("Unable to setup IRQ\n")); + + /* update clocksource counter */ + data->cnt += data->cycle * PIT_PICNT(pit_read(data->base, AT91_PIT_PIVR)); +@@ -230,15 +239,6 @@ static int __init at91sam926x_pit_dt_ini + return ret; + } + +- /* Set up irq handler */ +- ret = request_irq(data->irq, at91sam926x_pit_interrupt, +- IRQF_SHARED | IRQF_TIMER | IRQF_IRQPOLL, +- "at91_tick", data); +- if (ret) { +- pr_err("Unable to setup IRQ\n"); +- return ret; +- } +- + /* Set up and register clockevents */ + data->clkevt.name = "pit"; + data->clkevt.features = CLOCK_EVT_FEAT_PERIODIC; +--- a/drivers/clocksource/timer-atmel-st.c ++++ b/drivers/clocksource/timer-atmel-st.c +@@ -115,18 +115,29 @@ static void clkdev32k_disable_and_flush_ + last_crtr = read_CRTR(); + } + ++static int atmel_st_irq; ++ + static int clkevt32k_shutdown(struct clock_event_device *evt) + { + clkdev32k_disable_and_flush_irq(); + irqmask = 0; + regmap_write(regmap_st, AT91_ST_IER, irqmask); ++ free_irq(atmel_st_irq, regmap_st); + return 0; + } + + static int clkevt32k_set_oneshot(struct clock_event_device *dev) + { ++ int ret; ++ + clkdev32k_disable_and_flush_irq(); + ++ ret = request_irq(atmel_st_irq, at91rm9200_timer_interrupt, ++ IRQF_SHARED | IRQF_TIMER | IRQF_IRQPOLL, ++ "at91_tick", regmap_st); ++ if (ret) ++ panic(pr_fmt("Unable to setup IRQ\n")); ++ + /* + * ALM for oneshot irqs, set by next_event() + * before 32 seconds have passed. +@@ -139,8 +150,16 @@ static int clkevt32k_set_oneshot(struct + + static int clkevt32k_set_periodic(struct clock_event_device *dev) + { ++ int ret; ++ + clkdev32k_disable_and_flush_irq(); + ++ ret = request_irq(atmel_st_irq, at91rm9200_timer_interrupt, ++ IRQF_SHARED | IRQF_TIMER | IRQF_IRQPOLL, ++ "at91_tick", regmap_st); ++ if (ret) ++ panic(pr_fmt("Unable to setup IRQ\n")); ++ + /* PIT for periodic irqs; fixed rate of 1/HZ */ + irqmask = AT91_ST_PITS; + regmap_write(regmap_st, AT91_ST_PIMR, timer_latch); +@@ -198,7 +217,7 @@ static int __init atmel_st_timer_init(st + { + struct clk *sclk; + unsigned int sclk_rate, val; +- int irq, ret; ++ int ret; + + regmap_st = syscon_node_to_regmap(node); + if (IS_ERR(regmap_st)) { +@@ -212,21 +231,12 @@ static int __init atmel_st_timer_init(st + regmap_read(regmap_st, AT91_ST_SR, &val); + + /* Get the interrupts property */ +- irq = irq_of_parse_and_map(node, 0); +- if (!irq) { ++ atmel_st_irq = irq_of_parse_and_map(node, 0); ++ if (!atmel_st_irq) { + pr_err("Unable to get IRQ from DT\n"); + return -EINVAL; + } + +- /* Make IRQs happen for the system timer */ +- ret = request_irq(irq, at91rm9200_timer_interrupt, +- IRQF_SHARED | IRQF_TIMER | IRQF_IRQPOLL, +- "at91_tick", regmap_st); +- if (ret) { +- pr_err("Unable to setup IRQ\n"); +- return ret; +- } +- + sclk = of_clk_get(node, 0); + if (IS_ERR(sclk)) { + pr_err("Unable to get slow clock\n"); diff --git a/patches/features/all/rt/arm-at91-tclib-default-to-tclib-timer-for-rt.patch b/patches/features/all/rt/arm-at91-tclib-default-to-tclib-timer-for-rt.patch new file mode 100644 index 00000000000..c7ccebeec44 --- /dev/null +++ b/patches/features/all/rt/arm-at91-tclib-default-to-tclib-timer-for-rt.patch @@ -0,0 +1,33 @@ +From: Thomas Gleixner +Date: Sat, 1 May 2010 18:29:35 +0200 +Subject: ARM: at91: tclib: Default to tclib timer for RT +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +RT is not too happy about the shared timer interrupt in AT91 +devices. Default to tclib timer for RT. + +Signed-off-by: Thomas Gleixner + +--- + drivers/misc/Kconfig | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/drivers/misc/Kconfig ++++ b/drivers/misc/Kconfig +@@ -54,6 +54,7 @@ config AD525X_DPOT_SPI + config ATMEL_TCLIB + bool "Atmel AT32/AT91 Timer/Counter Library" + depends on (AVR32 || ARCH_AT91) ++ default y if PREEMPT_RT_FULL + help + Select this if you want a library to allocate the Timer/Counter + blocks found on many Atmel processors. This facilitates using +@@ -86,7 +87,7 @@ config ATMEL_TCB_CLKSRC_BLOCK + config ATMEL_TCB_CLKSRC_USE_SLOW_CLOCK + bool "TC Block use 32 KiHz clock" + depends on ATMEL_TCB_CLKSRC +- default y ++ default y if !PREEMPT_RT_FULL + help + Select this to use 32 KiHz base clock rate as TC block clock + source for clock events. diff --git a/patches/features/all/rt/arm-convert-boot-lock-to-raw.patch b/patches/features/all/rt/arm-convert-boot-lock-to-raw.patch new file mode 100644 index 00000000000..beff4f24b4d --- /dev/null +++ b/patches/features/all/rt/arm-convert-boot-lock-to-raw.patch @@ -0,0 +1,408 @@ +From: Frank Rowand +Date: Mon, 19 Sep 2011 14:51:14 -0700 +Subject: arm: Convert arm boot_lock to raw +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +The arm boot_lock is used by the secondary processor startup code. The locking +task is the idle thread, which has idle->sched_class == &idle_sched_class. +idle_sched_class->enqueue_task == NULL, so if the idle task blocks on the +lock, the attempt to wake it when the lock becomes available will fail: + +try_to_wake_up() + ... + activate_task() + enqueue_task() + p->sched_class->enqueue_task(rq, p, flags) + +Fix by converting boot_lock to a raw spin lock. + +Signed-off-by: Frank Rowand +Link: http://lkml.kernel.org/r/4E77B952.3010606@am.sony.com +Signed-off-by: Thomas Gleixner +--- + arch/arm/mach-exynos/platsmp.c | 12 ++++++------ + arch/arm/mach-hisi/platmcpm.c | 22 +++++++++++----------- + arch/arm/mach-omap2/omap-smp.c | 10 +++++----- + arch/arm/mach-prima2/platsmp.c | 10 +++++----- + arch/arm/mach-qcom/platsmp.c | 10 +++++----- + arch/arm/mach-spear/platsmp.c | 10 +++++----- + arch/arm/mach-sti/platsmp.c | 10 +++++----- + arch/arm/plat-versatile/platsmp.c | 10 +++++----- + 8 files changed, 47 insertions(+), 47 deletions(-) + +--- a/arch/arm/mach-exynos/platsmp.c ++++ b/arch/arm/mach-exynos/platsmp.c +@@ -229,7 +229,7 @@ static void __iomem *scu_base_addr(void) + return (void __iomem *)(S5P_VA_SCU); + } + +-static DEFINE_SPINLOCK(boot_lock); ++static DEFINE_RAW_SPINLOCK(boot_lock); + + static void exynos_secondary_init(unsigned int cpu) + { +@@ -242,8 +242,8 @@ static void exynos_secondary_init(unsign + /* + * Synchronise with the boot thread. + */ +- spin_lock(&boot_lock); +- spin_unlock(&boot_lock); ++ raw_spin_lock(&boot_lock); ++ raw_spin_unlock(&boot_lock); + } + + int exynos_set_boot_addr(u32 core_id, unsigned long boot_addr) +@@ -307,7 +307,7 @@ static int exynos_boot_secondary(unsigne + * Set synchronisation state between this boot processor + * and the secondary one + */ +- spin_lock(&boot_lock); ++ raw_spin_lock(&boot_lock); + + /* + * The secondary processor is waiting to be released from +@@ -334,7 +334,7 @@ static int exynos_boot_secondary(unsigne + + if (timeout == 0) { + printk(KERN_ERR "cpu1 power enable failed"); +- spin_unlock(&boot_lock); ++ raw_spin_unlock(&boot_lock); + return -ETIMEDOUT; + } + } +@@ -380,7 +380,7 @@ static int exynos_boot_secondary(unsigne + * calibrations, then wait for it to finish + */ + fail: +- spin_unlock(&boot_lock); ++ raw_spin_unlock(&boot_lock); + + return pen_release != -1 ? ret : 0; + } +--- a/arch/arm/mach-hisi/platmcpm.c ++++ b/arch/arm/mach-hisi/platmcpm.c +@@ -61,7 +61,7 @@ + + static void __iomem *sysctrl, *fabric; + static int hip04_cpu_table[HIP04_MAX_CLUSTERS][HIP04_MAX_CPUS_PER_CLUSTER]; +-static DEFINE_SPINLOCK(boot_lock); ++static DEFINE_RAW_SPINLOCK(boot_lock); + static u32 fabric_phys_addr; + /* + * [0]: bootwrapper physical address +@@ -113,7 +113,7 @@ static int hip04_boot_secondary(unsigned + if (cluster >= HIP04_MAX_CLUSTERS || cpu >= HIP04_MAX_CPUS_PER_CLUSTER) + return -EINVAL; + +- spin_lock_irq(&boot_lock); ++ raw_spin_lock_irq(&boot_lock); + + if (hip04_cpu_table[cluster][cpu]) + goto out; +@@ -147,7 +147,7 @@ static int hip04_boot_secondary(unsigned + + out: + hip04_cpu_table[cluster][cpu]++; +- spin_unlock_irq(&boot_lock); ++ raw_spin_unlock_irq(&boot_lock); + + return 0; + } +@@ -162,11 +162,11 @@ static void hip04_cpu_die(unsigned int l + cpu = MPIDR_AFFINITY_LEVEL(mpidr, 0); + cluster = MPIDR_AFFINITY_LEVEL(mpidr, 1); + +- spin_lock(&boot_lock); ++ raw_spin_lock(&boot_lock); + hip04_cpu_table[cluster][cpu]--; + if (hip04_cpu_table[cluster][cpu] == 1) { + /* A power_up request went ahead of us. */ +- spin_unlock(&boot_lock); ++ raw_spin_unlock(&boot_lock); + return; + } else if (hip04_cpu_table[cluster][cpu] > 1) { + pr_err("Cluster %d CPU%d boots multiple times\n", cluster, cpu); +@@ -174,7 +174,7 @@ static void hip04_cpu_die(unsigned int l + } + + last_man = hip04_cluster_is_down(cluster); +- spin_unlock(&boot_lock); ++ raw_spin_unlock(&boot_lock); + if (last_man) { + /* Since it's Cortex A15, disable L2 prefetching. */ + asm volatile( +@@ -203,7 +203,7 @@ static int hip04_cpu_kill(unsigned int l + cpu >= HIP04_MAX_CPUS_PER_CLUSTER); + + count = TIMEOUT_MSEC / POLL_MSEC; +- spin_lock_irq(&boot_lock); ++ raw_spin_lock_irq(&boot_lock); + for (tries = 0; tries < count; tries++) { + if (hip04_cpu_table[cluster][cpu]) + goto err; +@@ -211,10 +211,10 @@ static int hip04_cpu_kill(unsigned int l + data = readl_relaxed(sysctrl + SC_CPU_RESET_STATUS(cluster)); + if (data & CORE_WFI_STATUS(cpu)) + break; +- spin_unlock_irq(&boot_lock); ++ raw_spin_unlock_irq(&boot_lock); + /* Wait for clean L2 when the whole cluster is down. */ + msleep(POLL_MSEC); +- spin_lock_irq(&boot_lock); ++ raw_spin_lock_irq(&boot_lock); + } + if (tries >= count) + goto err; +@@ -231,10 +231,10 @@ static int hip04_cpu_kill(unsigned int l + goto err; + if (hip04_cluster_is_down(cluster)) + hip04_set_snoop_filter(cluster, 0); +- spin_unlock_irq(&boot_lock); ++ raw_spin_unlock_irq(&boot_lock); + return 1; + err: +- spin_unlock_irq(&boot_lock); ++ raw_spin_unlock_irq(&boot_lock); + return 0; + } + #endif +--- a/arch/arm/mach-omap2/omap-smp.c ++++ b/arch/arm/mach-omap2/omap-smp.c +@@ -69,7 +69,7 @@ static const struct omap_smp_config omap + .startup_addr = omap5_secondary_startup, + }; + +-static DEFINE_SPINLOCK(boot_lock); ++static DEFINE_RAW_SPINLOCK(boot_lock); + + void __iomem *omap4_get_scu_base(void) + { +@@ -136,8 +136,8 @@ static void omap4_secondary_init(unsigne + /* + * Synchronise with the boot thread. + */ +- spin_lock(&boot_lock); +- spin_unlock(&boot_lock); ++ raw_spin_lock(&boot_lock); ++ raw_spin_unlock(&boot_lock); + } + + static int omap4_boot_secondary(unsigned int cpu, struct task_struct *idle) +@@ -150,7 +150,7 @@ static int omap4_boot_secondary(unsigned + * Set synchronisation state between this boot processor + * and the secondary one + */ +- spin_lock(&boot_lock); ++ raw_spin_lock(&boot_lock); + + /* + * Update the AuxCoreBoot0 with boot state for secondary core. +@@ -229,7 +229,7 @@ static int omap4_boot_secondary(unsigned + * Now the secondary core is starting up let it run its + * calibrations, then wait for it to finish + */ +- spin_unlock(&boot_lock); ++ raw_spin_unlock(&boot_lock); + + return 0; + } +--- a/arch/arm/mach-prima2/platsmp.c ++++ b/arch/arm/mach-prima2/platsmp.c +@@ -22,7 +22,7 @@ + + static void __iomem *clk_base; + +-static DEFINE_SPINLOCK(boot_lock); ++static DEFINE_RAW_SPINLOCK(boot_lock); + + static void sirfsoc_secondary_init(unsigned int cpu) + { +@@ -36,8 +36,8 @@ static void sirfsoc_secondary_init(unsig + /* + * Synchronise with the boot thread. + */ +- spin_lock(&boot_lock); +- spin_unlock(&boot_lock); ++ raw_spin_lock(&boot_lock); ++ raw_spin_unlock(&boot_lock); + } + + static const struct of_device_id clk_ids[] = { +@@ -75,7 +75,7 @@ static int sirfsoc_boot_secondary(unsign + /* make sure write buffer is drained */ + mb(); + +- spin_lock(&boot_lock); ++ raw_spin_lock(&boot_lock); + + /* + * The secondary processor is waiting to be released from +@@ -107,7 +107,7 @@ static int sirfsoc_boot_secondary(unsign + * now the secondary core is starting up let it run its + * calibrations, then wait for it to finish + */ +- spin_unlock(&boot_lock); ++ raw_spin_unlock(&boot_lock); + + return pen_release != -1 ? -ENOSYS : 0; + } +--- a/arch/arm/mach-qcom/platsmp.c ++++ b/arch/arm/mach-qcom/platsmp.c +@@ -46,7 +46,7 @@ + + extern void secondary_startup_arm(void); + +-static DEFINE_SPINLOCK(boot_lock); ++static DEFINE_RAW_SPINLOCK(boot_lock); + + #ifdef CONFIG_HOTPLUG_CPU + static void qcom_cpu_die(unsigned int cpu) +@@ -60,8 +60,8 @@ static void qcom_secondary_init(unsigned + /* + * Synchronise with the boot thread. + */ +- spin_lock(&boot_lock); +- spin_unlock(&boot_lock); ++ raw_spin_lock(&boot_lock); ++ raw_spin_unlock(&boot_lock); + } + + static int scss_release_secondary(unsigned int cpu) +@@ -284,7 +284,7 @@ static int qcom_boot_secondary(unsigned + * set synchronisation state between this boot processor + * and the secondary one + */ +- spin_lock(&boot_lock); ++ raw_spin_lock(&boot_lock); + + /* + * Send the secondary CPU a soft interrupt, thereby causing +@@ -297,7 +297,7 @@ static int qcom_boot_secondary(unsigned + * now the secondary core is starting up let it run its + * calibrations, then wait for it to finish + */ +- spin_unlock(&boot_lock); ++ raw_spin_unlock(&boot_lock); + + return ret; + } +--- a/arch/arm/mach-spear/platsmp.c ++++ b/arch/arm/mach-spear/platsmp.c +@@ -32,7 +32,7 @@ static void write_pen_release(int val) + sync_cache_w(&pen_release); + } + +-static DEFINE_SPINLOCK(boot_lock); ++static DEFINE_RAW_SPINLOCK(boot_lock); + + static void __iomem *scu_base = IOMEM(VA_SCU_BASE); + +@@ -47,8 +47,8 @@ static void spear13xx_secondary_init(uns + /* + * Synchronise with the boot thread. + */ +- spin_lock(&boot_lock); +- spin_unlock(&boot_lock); ++ raw_spin_lock(&boot_lock); ++ raw_spin_unlock(&boot_lock); + } + + static int spear13xx_boot_secondary(unsigned int cpu, struct task_struct *idle) +@@ -59,7 +59,7 @@ static int spear13xx_boot_secondary(unsi + * set synchronisation state between this boot processor + * and the secondary one + */ +- spin_lock(&boot_lock); ++ raw_spin_lock(&boot_lock); + + /* + * The secondary processor is waiting to be released from +@@ -84,7 +84,7 @@ static int spear13xx_boot_secondary(unsi + * now the secondary core is starting up let it run its + * calibrations, then wait for it to finish + */ +- spin_unlock(&boot_lock); ++ raw_spin_unlock(&boot_lock); + + return pen_release != -1 ? -ENOSYS : 0; + } +--- a/arch/arm/mach-sti/platsmp.c ++++ b/arch/arm/mach-sti/platsmp.c +@@ -35,7 +35,7 @@ static void write_pen_release(int val) + sync_cache_w(&pen_release); + } + +-static DEFINE_SPINLOCK(boot_lock); ++static DEFINE_RAW_SPINLOCK(boot_lock); + + static void sti_secondary_init(unsigned int cpu) + { +@@ -48,8 +48,8 @@ static void sti_secondary_init(unsigned + /* + * Synchronise with the boot thread. + */ +- spin_lock(&boot_lock); +- spin_unlock(&boot_lock); ++ raw_spin_lock(&boot_lock); ++ raw_spin_unlock(&boot_lock); + } + + static int sti_boot_secondary(unsigned int cpu, struct task_struct *idle) +@@ -60,7 +60,7 @@ static int sti_boot_secondary(unsigned i + * set synchronisation state between this boot processor + * and the secondary one + */ +- spin_lock(&boot_lock); ++ raw_spin_lock(&boot_lock); + + /* + * The secondary processor is waiting to be released from +@@ -91,7 +91,7 @@ static int sti_boot_secondary(unsigned i + * now the secondary core is starting up let it run its + * calibrations, then wait for it to finish + */ +- spin_unlock(&boot_lock); ++ raw_spin_unlock(&boot_lock); + + return pen_release != -1 ? -ENOSYS : 0; + } +--- a/arch/arm/plat-versatile/platsmp.c ++++ b/arch/arm/plat-versatile/platsmp.c +@@ -32,7 +32,7 @@ static void write_pen_release(int val) + sync_cache_w(&pen_release); + } + +-static DEFINE_SPINLOCK(boot_lock); ++static DEFINE_RAW_SPINLOCK(boot_lock); + + void versatile_secondary_init(unsigned int cpu) + { +@@ -45,8 +45,8 @@ void versatile_secondary_init(unsigned i + /* + * Synchronise with the boot thread. + */ +- spin_lock(&boot_lock); +- spin_unlock(&boot_lock); ++ raw_spin_lock(&boot_lock); ++ raw_spin_unlock(&boot_lock); + } + + int versatile_boot_secondary(unsigned int cpu, struct task_struct *idle) +@@ -57,7 +57,7 @@ int versatile_boot_secondary(unsigned in + * Set synchronisation state between this boot processor + * and the secondary one + */ +- spin_lock(&boot_lock); ++ raw_spin_lock(&boot_lock); + + /* + * This is really belt and braces; we hold unintended secondary +@@ -87,7 +87,7 @@ int versatile_boot_secondary(unsigned in + * now the secondary core is starting up let it run its + * calibrations, then wait for it to finish + */ +- spin_unlock(&boot_lock); ++ raw_spin_unlock(&boot_lock); + + return pen_release != -1 ? -ENOSYS : 0; + } diff --git a/patches/features/all/rt/arm-disable-NEON-in-kernel-mode.patch b/patches/features/all/rt/arm-disable-NEON-in-kernel-mode.patch new file mode 100644 index 00000000000..5521f7f4875 --- /dev/null +++ b/patches/features/all/rt/arm-disable-NEON-in-kernel-mode.patch @@ -0,0 +1,128 @@ +From: Sebastian Andrzej Siewior +Date: Fri, 1 Dec 2017 10:42:03 +0100 +Subject: [PATCH] arm*: disable NEON in kernel mode +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +NEON in kernel mode is used by the crypto algorithms and raid6 code. +While the raid6 code looks okay, the crypto algorithms do not: NEON +is enabled on first invocation and may allocate/free/map memory before +the NEON mode is disabled again. +This needs to be changed until it can be enabled. +On ARM NEON in kernel mode can be simply disabled. on ARM64 it needs to +stay on due to possible EFI callbacks so here I disable each algorithm. + +Cc: stable-rt@vger.kernel.org +Signed-off-by: Sebastian Andrzej Siewior +--- + arch/arm/Kconfig | 2 +- + arch/arm64/crypto/Kconfig | 20 ++++++++++---------- + arch/arm64/crypto/crc32-ce-glue.c | 3 ++- + 3 files changed, 13 insertions(+), 12 deletions(-) + +--- a/arch/arm/Kconfig ++++ b/arch/arm/Kconfig +@@ -2164,7 +2164,7 @@ config NEON + + config KERNEL_MODE_NEON + bool "Support for NEON in kernel mode" +- depends on NEON && AEABI ++ depends on NEON && AEABI && !PREEMPT_RT_BASE + help + Say Y to include support for NEON in kernel mode. + +--- a/arch/arm64/crypto/Kconfig ++++ b/arch/arm64/crypto/Kconfig +@@ -19,19 +19,19 @@ config CRYPTO_SHA512_ARM64 + + config CRYPTO_SHA1_ARM64_CE + tristate "SHA-1 digest algorithm (ARMv8 Crypto Extensions)" +- depends on KERNEL_MODE_NEON ++ depends on KERNEL_MODE_NEON && !PREEMPT_RT_BASE + select CRYPTO_HASH + select CRYPTO_SHA1 + + config CRYPTO_SHA2_ARM64_CE + tristate "SHA-224/SHA-256 digest algorithm (ARMv8 Crypto Extensions)" +- depends on KERNEL_MODE_NEON ++ depends on KERNEL_MODE_NEON && !PREEMPT_RT_BASE + select CRYPTO_HASH + select CRYPTO_SHA256_ARM64 + + config CRYPTO_GHASH_ARM64_CE + tristate "GHASH/AES-GCM using ARMv8 Crypto Extensions" +- depends on KERNEL_MODE_NEON ++ depends on KERNEL_MODE_NEON && !PREEMPT_RT_BASE + select CRYPTO_HASH + select CRYPTO_GF128MUL + select CRYPTO_AES +@@ -39,7 +39,7 @@ config CRYPTO_GHASH_ARM64_CE + + config CRYPTO_CRCT10DIF_ARM64_CE + tristate "CRCT10DIF digest algorithm using PMULL instructions" +- depends on KERNEL_MODE_NEON && CRC_T10DIF ++ depends on KERNEL_MODE_NEON && CRC_T10DIF && !PREEMPT_RT_BASE + select CRYPTO_HASH + + config CRYPTO_CRC32_ARM64_CE +@@ -53,13 +53,13 @@ config CRYPTO_AES_ARM64 + + config CRYPTO_AES_ARM64_CE + tristate "AES core cipher using ARMv8 Crypto Extensions" +- depends on ARM64 && KERNEL_MODE_NEON ++ depends on ARM64 && KERNEL_MODE_NEON && !PREEMPT_RT_BASE + select CRYPTO_ALGAPI + select CRYPTO_AES_ARM64 + + config CRYPTO_AES_ARM64_CE_CCM + tristate "AES in CCM mode using ARMv8 Crypto Extensions" +- depends on ARM64 && KERNEL_MODE_NEON ++ depends on ARM64 && KERNEL_MODE_NEON && !PREEMPT_RT_BASE + select CRYPTO_ALGAPI + select CRYPTO_AES_ARM64_CE + select CRYPTO_AES_ARM64 +@@ -67,7 +67,7 @@ config CRYPTO_AES_ARM64_CE_CCM + + config CRYPTO_AES_ARM64_CE_BLK + tristate "AES in ECB/CBC/CTR/XTS modes using ARMv8 Crypto Extensions" +- depends on KERNEL_MODE_NEON ++ depends on KERNEL_MODE_NEON && !PREEMPT_RT_BASE + select CRYPTO_BLKCIPHER + select CRYPTO_AES_ARM64_CE + select CRYPTO_AES_ARM64 +@@ -75,7 +75,7 @@ config CRYPTO_AES_ARM64_CE_BLK + + config CRYPTO_AES_ARM64_NEON_BLK + tristate "AES in ECB/CBC/CTR/XTS modes using NEON instructions" +- depends on KERNEL_MODE_NEON ++ depends on KERNEL_MODE_NEON && !PREEMPT_RT_BASE + select CRYPTO_BLKCIPHER + select CRYPTO_AES_ARM64 + select CRYPTO_AES +@@ -83,13 +83,13 @@ config CRYPTO_AES_ARM64_NEON_BLK + + config CRYPTO_CHACHA20_NEON + tristate "NEON accelerated ChaCha20 symmetric cipher" +- depends on KERNEL_MODE_NEON ++ depends on KERNEL_MODE_NEON && !PREEMPT_RT_BASE + select CRYPTO_BLKCIPHER + select CRYPTO_CHACHA20 + + config CRYPTO_AES_ARM64_BS + tristate "AES in ECB/CBC/CTR/XTS modes using bit-sliced NEON algorithm" +- depends on KERNEL_MODE_NEON ++ depends on KERNEL_MODE_NEON && !PREEMPT_RT_BASE + select CRYPTO_BLKCIPHER + select CRYPTO_AES_ARM64_NEON_BLK + select CRYPTO_AES_ARM64 +--- a/arch/arm64/crypto/crc32-ce-glue.c ++++ b/arch/arm64/crypto/crc32-ce-glue.c +@@ -206,7 +206,8 @@ static struct shash_alg crc32_pmull_algs + + static int __init crc32_pmull_mod_init(void) + { +- if (IS_ENABLED(CONFIG_KERNEL_MODE_NEON) && (elf_hwcap & HWCAP_PMULL)) { ++ if (IS_ENABLED(CONFIG_KERNEL_MODE_NEON) && ++ !IS_ENABLED(CONFIG_PREEMPT_RT_BASE) && (elf_hwcap & HWCAP_PMULL)) { + crc32_pmull_algs[0].update = crc32_pmull_update; + crc32_pmull_algs[1].update = crc32c_pmull_update; + diff --git a/patches/features/all/rt/arm-enable-highmem-for-rt.patch b/patches/features/all/rt/arm-enable-highmem-for-rt.patch new file mode 100644 index 00000000000..148b9fa9431 --- /dev/null +++ b/patches/features/all/rt/arm-enable-highmem-for-rt.patch @@ -0,0 +1,174 @@ +Subject: arm: Enable highmem for rt +From: Thomas Gleixner +Date: Wed, 13 Feb 2013 11:03:11 +0100 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +fixup highmem for ARM. + +Signed-off-by: Thomas Gleixner +--- + arch/arm/include/asm/switch_to.h | 8 +++++ + arch/arm/mm/highmem.c | 56 +++++++++++++++++++++++++++++++++------ + include/linux/highmem.h | 1 + 3 files changed, 57 insertions(+), 8 deletions(-) + +--- a/arch/arm/include/asm/switch_to.h ++++ b/arch/arm/include/asm/switch_to.h +@@ -4,6 +4,13 @@ + + #include + ++#if defined CONFIG_PREEMPT_RT_FULL && defined CONFIG_HIGHMEM ++void switch_kmaps(struct task_struct *prev_p, struct task_struct *next_p); ++#else ++static inline void ++switch_kmaps(struct task_struct *prev_p, struct task_struct *next_p) { } ++#endif ++ + /* + * For v7 SMP cores running a preemptible kernel we may be pre-empted + * during a TLB maintenance operation, so execute an inner-shareable dsb +@@ -26,6 +33,7 @@ extern struct task_struct *__switch_to(s + #define switch_to(prev,next,last) \ + do { \ + __complete_pending_tlbi(); \ ++ switch_kmaps(prev, next); \ + last = __switch_to(prev,task_thread_info(prev), task_thread_info(next)); \ + } while (0) + +--- a/arch/arm/mm/highmem.c ++++ b/arch/arm/mm/highmem.c +@@ -34,6 +34,11 @@ static inline pte_t get_fixmap_pte(unsig + return *ptep; + } + ++static unsigned int fixmap_idx(int type) ++{ ++ return FIX_KMAP_BEGIN + type + KM_TYPE_NR * smp_processor_id(); ++} ++ + void *kmap(struct page *page) + { + might_sleep(); +@@ -54,12 +59,13 @@ EXPORT_SYMBOL(kunmap); + + void *kmap_atomic(struct page *page) + { ++ pte_t pte = mk_pte(page, kmap_prot); + unsigned int idx; + unsigned long vaddr; + void *kmap; + int type; + +- preempt_disable(); ++ preempt_disable_nort(); + pagefault_disable(); + if (!PageHighMem(page)) + return page_address(page); +@@ -79,7 +85,7 @@ void *kmap_atomic(struct page *page) + + type = kmap_atomic_idx_push(); + +- idx = FIX_KMAP_BEGIN + type + KM_TYPE_NR * smp_processor_id(); ++ idx = fixmap_idx(type); + vaddr = __fix_to_virt(idx); + #ifdef CONFIG_DEBUG_HIGHMEM + /* +@@ -93,7 +99,10 @@ void *kmap_atomic(struct page *page) + * in place, so the contained TLB flush ensures the TLB is updated + * with the new mapping. + */ +- set_fixmap_pte(idx, mk_pte(page, kmap_prot)); ++#ifdef CONFIG_PREEMPT_RT_FULL ++ current->kmap_pte[type] = pte; ++#endif ++ set_fixmap_pte(idx, pte); + + return (void *)vaddr; + } +@@ -106,10 +115,13 @@ void __kunmap_atomic(void *kvaddr) + + if (kvaddr >= (void *)FIXADDR_START) { + type = kmap_atomic_idx(); +- idx = FIX_KMAP_BEGIN + type + KM_TYPE_NR * smp_processor_id(); ++ idx = fixmap_idx(type); + + if (cache_is_vivt()) + __cpuc_flush_dcache_area((void *)vaddr, PAGE_SIZE); ++#ifdef CONFIG_PREEMPT_RT_FULL ++ current->kmap_pte[type] = __pte(0); ++#endif + #ifdef CONFIG_DEBUG_HIGHMEM + BUG_ON(vaddr != __fix_to_virt(idx)); + #else +@@ -122,28 +134,56 @@ void __kunmap_atomic(void *kvaddr) + kunmap_high(pte_page(pkmap_page_table[PKMAP_NR(vaddr)])); + } + pagefault_enable(); +- preempt_enable(); ++ preempt_enable_nort(); + } + EXPORT_SYMBOL(__kunmap_atomic); + + void *kmap_atomic_pfn(unsigned long pfn) + { ++ pte_t pte = pfn_pte(pfn, kmap_prot); + unsigned long vaddr; + int idx, type; + struct page *page = pfn_to_page(pfn); + +- preempt_disable(); ++ preempt_disable_nort(); + pagefault_disable(); + if (!PageHighMem(page)) + return page_address(page); + + type = kmap_atomic_idx_push(); +- idx = FIX_KMAP_BEGIN + type + KM_TYPE_NR * smp_processor_id(); ++ idx = fixmap_idx(type); + vaddr = __fix_to_virt(idx); + #ifdef CONFIG_DEBUG_HIGHMEM + BUG_ON(!pte_none(get_fixmap_pte(vaddr))); + #endif +- set_fixmap_pte(idx, pfn_pte(pfn, kmap_prot)); ++#ifdef CONFIG_PREEMPT_RT_FULL ++ current->kmap_pte[type] = pte; ++#endif ++ set_fixmap_pte(idx, pte); + + return (void *)vaddr; + } ++#if defined CONFIG_PREEMPT_RT_FULL ++void switch_kmaps(struct task_struct *prev_p, struct task_struct *next_p) ++{ ++ int i; ++ ++ /* ++ * Clear @prev's kmap_atomic mappings ++ */ ++ for (i = 0; i < prev_p->kmap_idx; i++) { ++ int idx = fixmap_idx(i); ++ ++ set_fixmap_pte(idx, __pte(0)); ++ } ++ /* ++ * Restore @next_p's kmap_atomic mappings ++ */ ++ for (i = 0; i < next_p->kmap_idx; i++) { ++ int idx = fixmap_idx(i); ++ ++ if (!pte_none(next_p->kmap_pte[i])) ++ set_fixmap_pte(idx, next_p->kmap_pte[i]); ++ } ++} ++#endif +--- a/include/linux/highmem.h ++++ b/include/linux/highmem.h +@@ -8,6 +8,7 @@ + #include + #include + #include ++#include + + #include + diff --git a/patches/features/all/rt/arm-highmem-flush-tlb-on-unmap.patch b/patches/features/all/rt/arm-highmem-flush-tlb-on-unmap.patch new file mode 100644 index 00000000000..a6b22f0be26 --- /dev/null +++ b/patches/features/all/rt/arm-highmem-flush-tlb-on-unmap.patch @@ -0,0 +1,28 @@ +From: Sebastian Andrzej Siewior +Date: Mon, 11 Mar 2013 21:37:27 +0100 +Subject: arm/highmem: Flush tlb on unmap +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +The tlb should be flushed on unmap and thus make the mapping entry +invalid. This is only done in the non-debug case which does not look +right. + +Signed-off-by: Sebastian Andrzej Siewior +--- + arch/arm/mm/highmem.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/arch/arm/mm/highmem.c ++++ b/arch/arm/mm/highmem.c +@@ -112,10 +112,10 @@ void __kunmap_atomic(void *kvaddr) + __cpuc_flush_dcache_area((void *)vaddr, PAGE_SIZE); + #ifdef CONFIG_DEBUG_HIGHMEM + BUG_ON(vaddr != __fix_to_virt(idx)); +- set_fixmap_pte(idx, __pte(0)); + #else + (void) idx; /* to kill a warning */ + #endif ++ set_fixmap_pte(idx, __pte(0)); + kmap_atomic_idx_pop(); + } else if (vaddr >= PKMAP_ADDR(0) && vaddr < PKMAP_ADDR(LAST_PKMAP)) { + /* this address was obtained through kmap_high_get() */ diff --git a/patches/features/all/rt/arm-include-definition-for-cpumask_t.patch b/patches/features/all/rt/arm-include-definition-for-cpumask_t.patch new file mode 100644 index 00000000000..5e97cac729e --- /dev/null +++ b/patches/features/all/rt/arm-include-definition-for-cpumask_t.patch @@ -0,0 +1,25 @@ +From: Sebastian Andrzej Siewior +Date: Thu, 22 Dec 2016 17:28:33 +0100 +Subject: [PATCH] arm: include definition for cpumask_t +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +This definition gets pulled in by other files. With the (later) split of +RCU and spinlock.h it won't compile anymore. +The split is done in ("rbtree: don't include the rcu header"). + +Signed-off-by: Sebastian Andrzej Siewior +--- + arch/arm/include/asm/irq.h | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/arch/arm/include/asm/irq.h ++++ b/arch/arm/include/asm/irq.h +@@ -23,6 +23,8 @@ + #endif + + #ifndef __ASSEMBLY__ ++#include ++ + struct irqaction; + struct pt_regs; + extern void migrate_irqs(void); diff --git a/patches/features/all/rt/arm-kprobe-replace-patch_lock-to-raw-lock.patch b/patches/features/all/rt/arm-kprobe-replace-patch_lock-to-raw-lock.patch new file mode 100644 index 00000000000..9ba0859a904 --- /dev/null +++ b/patches/features/all/rt/arm-kprobe-replace-patch_lock-to-raw-lock.patch @@ -0,0 +1,70 @@ +From: Yang Shi +Date: Thu, 10 Nov 2016 16:17:55 -0800 +Subject: [PATCH] arm: kprobe: replace patch_lock to raw lock +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +When running kprobe on -rt kernel, the below bug is caught: + +BUG: sleeping function called from invalid context at kernel/locking/rtmutex.c:931 +in_atomic(): 1, irqs_disabled(): 128, pid: 14, name: migration/0 +INFO: lockdep is turned off. +irq event stamp: 238 +hardirqs last enabled at (237): [<80b5aecc>] _raw_spin_unlock_irqrestore+0x88/0x90 +hardirqs last disabled at (238): [<80b56d88>] __schedule+0xec/0x94c +softirqs last enabled at (0): [<80225584>] copy_process.part.5+0x30c/0x1994 +softirqs last disabled at (0): [< (null)>] (null) +Preemption disabled at:[<802f2b98>] cpu_stopper_thread+0xc0/0x140 + +CPU: 0 PID: 14 Comm: migration/0 Tainted: G O 4.8.3-rt2 #1 +Hardware name: Freescale LS1021A +[<80212e7c>] (unwind_backtrace) from [<8020cd2c>] (show_stack+0x20/0x24) +[<8020cd2c>] (show_stack) from [<80689e14>] (dump_stack+0xa0/0xcc) +[<80689e14>] (dump_stack) from [<8025a43c>] (___might_sleep+0x1b8/0x2a4) +[<8025a43c>] (___might_sleep) from [<80b5b324>] (rt_spin_lock+0x34/0x74) +[<80b5b324>] (rt_spin_lock) from [<80b5c31c>] (__patch_text_real+0x70/0xe8) +[<80b5c31c>] (__patch_text_real) from [<80b5c3ac>] (patch_text_stop_machine+0x18/0x20) +[<80b5c3ac>] (patch_text_stop_machine) from [<802f2920>] (multi_cpu_stop+0xfc/0x134) +[<802f2920>] (multi_cpu_stop) from [<802f2ba0>] (cpu_stopper_thread+0xc8/0x140) +[<802f2ba0>] (cpu_stopper_thread) from [<802563a4>] (smpboot_thread_fn+0x1a4/0x354) +[<802563a4>] (smpboot_thread_fn) from [<80251d38>] (kthread+0x104/0x11c) +[<80251d38>] (kthread) from [<80207f70>] (ret_from_fork+0x14/0x24) + +Since patch_text_stop_machine() is called in stop_machine() which disables IRQ, +sleepable lock should be not used in this atomic context, so replace patch_lock +to raw lock. + +Signed-off-by: Yang Shi +Signed-off-by: Sebastian Andrzej Siewior +--- + arch/arm/kernel/patch.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +--- a/arch/arm/kernel/patch.c ++++ b/arch/arm/kernel/patch.c +@@ -16,7 +16,7 @@ struct patch { + unsigned int insn; + }; + +-static DEFINE_SPINLOCK(patch_lock); ++static DEFINE_RAW_SPINLOCK(patch_lock); + + static void __kprobes *patch_map(void *addr, int fixmap, unsigned long *flags) + __acquires(&patch_lock) +@@ -33,7 +33,7 @@ static void __kprobes *patch_map(void *a + return addr; + + if (flags) +- spin_lock_irqsave(&patch_lock, *flags); ++ raw_spin_lock_irqsave(&patch_lock, *flags); + else + __acquire(&patch_lock); + +@@ -48,7 +48,7 @@ static void __kprobes patch_unmap(int fi + clear_fixmap(fixmap); + + if (flags) +- spin_unlock_irqrestore(&patch_lock, *flags); ++ raw_spin_unlock_irqrestore(&patch_lock, *flags); + else + __release(&patch_lock); + } diff --git a/patches/features/all/rt/arm-preempt-lazy-support.patch b/patches/features/all/rt/arm-preempt-lazy-support.patch new file mode 100644 index 00000000000..89d41db4bdd --- /dev/null +++ b/patches/features/all/rt/arm-preempt-lazy-support.patch @@ -0,0 +1,152 @@ +Subject: arm: Add support for lazy preemption +From: Thomas Gleixner +Date: Wed, 31 Oct 2012 12:04:11 +0100 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Implement the arm pieces for lazy preempt. + +Signed-off-by: Thomas Gleixner +--- + arch/arm/Kconfig | 1 + + arch/arm/include/asm/thread_info.h | 8 ++++++-- + arch/arm/kernel/asm-offsets.c | 1 + + arch/arm/kernel/entry-armv.S | 19 ++++++++++++++++--- + arch/arm/kernel/entry-common.S | 9 +++++++-- + arch/arm/kernel/signal.c | 3 ++- + 6 files changed, 33 insertions(+), 8 deletions(-) + +--- a/arch/arm/Kconfig ++++ b/arch/arm/Kconfig +@@ -85,6 +85,7 @@ config ARM + select HAVE_PERF_EVENTS + select HAVE_PERF_REGS + select HAVE_PERF_USER_STACK_DUMP ++ select HAVE_PREEMPT_LAZY + select HAVE_RCU_TABLE_FREE if (SMP && ARM_LPAE) + select HAVE_REGS_AND_STACK_ACCESS_API + select HAVE_SYSCALL_TRACEPOINTS +--- a/arch/arm/include/asm/thread_info.h ++++ b/arch/arm/include/asm/thread_info.h +@@ -49,6 +49,7 @@ struct cpu_context_save { + struct thread_info { + unsigned long flags; /* low level flags */ + int preempt_count; /* 0 => preemptable, <0 => bug */ ++ int preempt_lazy_count; /* 0 => preemptable, <0 => bug */ + mm_segment_t addr_limit; /* address limit */ + struct task_struct *task; /* main task structure */ + __u32 cpu; /* cpu */ +@@ -142,7 +143,8 @@ extern int vfp_restore_user_hwstate(stru + #define TIF_SYSCALL_TRACE 4 /* syscall trace active */ + #define TIF_SYSCALL_AUDIT 5 /* syscall auditing active */ + #define TIF_SYSCALL_TRACEPOINT 6 /* syscall tracepoint instrumentation */ +-#define TIF_SECCOMP 7 /* seccomp syscall filtering active */ ++#define TIF_SECCOMP 8 /* seccomp syscall filtering active */ ++#define TIF_NEED_RESCHED_LAZY 7 + + #define TIF_NOHZ 12 /* in adaptive nohz mode */ + #define TIF_USING_IWMMXT 17 +@@ -152,6 +154,7 @@ extern int vfp_restore_user_hwstate(stru + #define _TIF_SIGPENDING (1 << TIF_SIGPENDING) + #define _TIF_NEED_RESCHED (1 << TIF_NEED_RESCHED) + #define _TIF_NOTIFY_RESUME (1 << TIF_NOTIFY_RESUME) ++#define _TIF_NEED_RESCHED_LAZY (1 << TIF_NEED_RESCHED_LAZY) + #define _TIF_UPROBE (1 << TIF_UPROBE) + #define _TIF_SYSCALL_TRACE (1 << TIF_SYSCALL_TRACE) + #define _TIF_SYSCALL_AUDIT (1 << TIF_SYSCALL_AUDIT) +@@ -167,7 +170,8 @@ extern int vfp_restore_user_hwstate(stru + * Change these and you break ASM code in entry-common.S + */ + #define _TIF_WORK_MASK (_TIF_NEED_RESCHED | _TIF_SIGPENDING | \ +- _TIF_NOTIFY_RESUME | _TIF_UPROBE) ++ _TIF_NOTIFY_RESUME | _TIF_UPROBE | \ ++ _TIF_NEED_RESCHED_LAZY) + + #endif /* __KERNEL__ */ + #endif /* __ASM_ARM_THREAD_INFO_H */ +--- a/arch/arm/kernel/asm-offsets.c ++++ b/arch/arm/kernel/asm-offsets.c +@@ -65,6 +65,7 @@ int main(void) + BLANK(); + DEFINE(TI_FLAGS, offsetof(struct thread_info, flags)); + DEFINE(TI_PREEMPT, offsetof(struct thread_info, preempt_count)); ++ DEFINE(TI_PREEMPT_LAZY, offsetof(struct thread_info, preempt_lazy_count)); + DEFINE(TI_ADDR_LIMIT, offsetof(struct thread_info, addr_limit)); + DEFINE(TI_TASK, offsetof(struct thread_info, task)); + DEFINE(TI_CPU, offsetof(struct thread_info, cpu)); +--- a/arch/arm/kernel/entry-armv.S ++++ b/arch/arm/kernel/entry-armv.S +@@ -220,11 +220,18 @@ ENDPROC(__dabt_svc) + + #ifdef CONFIG_PREEMPT + ldr r8, [tsk, #TI_PREEMPT] @ get preempt count +- ldr r0, [tsk, #TI_FLAGS] @ get flags + teq r8, #0 @ if preempt count != 0 ++ bne 1f @ return from exeption ++ ldr r0, [tsk, #TI_FLAGS] @ get flags ++ tst r0, #_TIF_NEED_RESCHED @ if NEED_RESCHED is set ++ blne svc_preempt @ preempt! ++ ++ ldr r8, [tsk, #TI_PREEMPT_LAZY] @ get preempt lazy count ++ teq r8, #0 @ if preempt lazy count != 0 + movne r0, #0 @ force flags to 0 +- tst r0, #_TIF_NEED_RESCHED ++ tst r0, #_TIF_NEED_RESCHED_LAZY + blne svc_preempt ++1: + #endif + + svc_exit r5, irq = 1 @ return from exception +@@ -239,8 +246,14 @@ ENDPROC(__irq_svc) + 1: bl preempt_schedule_irq @ irq en/disable is done inside + ldr r0, [tsk, #TI_FLAGS] @ get new tasks TI_FLAGS + tst r0, #_TIF_NEED_RESCHED ++ bne 1b ++ tst r0, #_TIF_NEED_RESCHED_LAZY + reteq r8 @ go again +- b 1b ++ ldr r0, [tsk, #TI_PREEMPT_LAZY] @ get preempt lazy count ++ teq r0, #0 @ if preempt lazy count != 0 ++ beq 1b ++ ret r8 @ go again ++ + #endif + + __und_fault: +--- a/arch/arm/kernel/entry-common.S ++++ b/arch/arm/kernel/entry-common.S +@@ -53,7 +53,9 @@ saved_pc .req lr + cmp r2, #TASK_SIZE + blne addr_limit_check_failed + ldr r1, [tsk, #TI_FLAGS] @ re-check for syscall tracing +- tst r1, #_TIF_SYSCALL_WORK | _TIF_WORK_MASK ++ tst r1, #((_TIF_SYSCALL_WORK | _TIF_WORK_MASK) & ~_TIF_SECCOMP) ++ bne fast_work_pending ++ tst r1, #_TIF_SECCOMP + bne fast_work_pending + + +@@ -83,8 +85,11 @@ ENDPROC(ret_fast_syscall) + cmp r2, #TASK_SIZE + blne addr_limit_check_failed + ldr r1, [tsk, #TI_FLAGS] @ re-check for syscall tracing +- tst r1, #_TIF_SYSCALL_WORK | _TIF_WORK_MASK ++ tst r1, #((_TIF_SYSCALL_WORK | _TIF_WORK_MASK) & ~_TIF_SECCOMP) ++ bne do_slower_path ++ tst r1, #_TIF_SECCOMP + beq no_work_pending ++do_slower_path: + UNWIND(.fnend ) + ENDPROC(ret_fast_syscall) + +--- a/arch/arm/kernel/signal.c ++++ b/arch/arm/kernel/signal.c +@@ -615,7 +615,8 @@ do_work_pending(struct pt_regs *regs, un + */ + trace_hardirqs_off(); + do { +- if (likely(thread_flags & _TIF_NEED_RESCHED)) { ++ if (likely(thread_flags & (_TIF_NEED_RESCHED | ++ _TIF_NEED_RESCHED_LAZY))) { + schedule(); + } else { + if (unlikely(!user_mode(regs))) diff --git a/patches/features/all/rt/arm-unwind-use_raw_lock.patch b/patches/features/all/rt/arm-unwind-use_raw_lock.patch new file mode 100644 index 00000000000..5ceb310e8f9 --- /dev/null +++ b/patches/features/all/rt/arm-unwind-use_raw_lock.patch @@ -0,0 +1,84 @@ +From: Sebastian Andrzej Siewior +Date: Fri, 20 Sep 2013 14:31:54 +0200 +Subject: arm/unwind: use a raw_spin_lock +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Mostly unwind is done with irqs enabled however SLUB may call it with +irqs disabled while creating a new SLUB cache. + +I had system freeze while loading a module which called +kmem_cache_create() on init. That means SLUB's __slab_alloc() disabled +interrupts and then + +->new_slab_objects() + ->new_slab() + ->setup_object() + ->setup_object_debug() + ->init_tracking() + ->set_track() + ->save_stack_trace() + ->save_stack_trace_tsk() + ->walk_stackframe() + ->unwind_frame() + ->unwind_find_idx() + =>spin_lock_irqsave(&unwind_lock); + + +Signed-off-by: Sebastian Andrzej Siewior +--- + arch/arm/kernel/unwind.c | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +--- a/arch/arm/kernel/unwind.c ++++ b/arch/arm/kernel/unwind.c +@@ -93,7 +93,7 @@ extern const struct unwind_idx __start_u + static const struct unwind_idx *__origin_unwind_idx; + extern const struct unwind_idx __stop_unwind_idx[]; + +-static DEFINE_SPINLOCK(unwind_lock); ++static DEFINE_RAW_SPINLOCK(unwind_lock); + static LIST_HEAD(unwind_tables); + + /* Convert a prel31 symbol to an absolute address */ +@@ -201,7 +201,7 @@ static const struct unwind_idx *unwind_f + /* module unwind tables */ + struct unwind_table *table; + +- spin_lock_irqsave(&unwind_lock, flags); ++ raw_spin_lock_irqsave(&unwind_lock, flags); + list_for_each_entry(table, &unwind_tables, list) { + if (addr >= table->begin_addr && + addr < table->end_addr) { +@@ -213,7 +213,7 @@ static const struct unwind_idx *unwind_f + break; + } + } +- spin_unlock_irqrestore(&unwind_lock, flags); ++ raw_spin_unlock_irqrestore(&unwind_lock, flags); + } + + pr_debug("%s: idx = %p\n", __func__, idx); +@@ -529,9 +529,9 @@ struct unwind_table *unwind_table_add(un + tab->begin_addr = text_addr; + tab->end_addr = text_addr + text_size; + +- spin_lock_irqsave(&unwind_lock, flags); ++ raw_spin_lock_irqsave(&unwind_lock, flags); + list_add_tail(&tab->list, &unwind_tables); +- spin_unlock_irqrestore(&unwind_lock, flags); ++ raw_spin_unlock_irqrestore(&unwind_lock, flags); + + return tab; + } +@@ -543,9 +543,9 @@ void unwind_table_del(struct unwind_tabl + if (!tab) + return; + +- spin_lock_irqsave(&unwind_lock, flags); ++ raw_spin_lock_irqsave(&unwind_lock, flags); + list_del(&tab->list); +- spin_unlock_irqrestore(&unwind_lock, flags); ++ raw_spin_unlock_irqrestore(&unwind_lock, flags); + + kfree(tab); + } diff --git a/patches/features/all/rt/arm64-xen--Make-XEN-depend-on-non-rt.patch b/patches/features/all/rt/arm64-xen--Make-XEN-depend-on-non-rt.patch new file mode 100644 index 00000000000..6f9c4dd22f8 --- /dev/null +++ b/patches/features/all/rt/arm64-xen--Make-XEN-depend-on-non-rt.patch @@ -0,0 +1,24 @@ +Subject: arm64/xen: Make XEN depend on !RT +From: Thomas Gleixner +Date: Mon, 12 Oct 2015 11:18:40 +0200 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +It's not ready and probably never will be, unless xen folks have a +look at it. + +Signed-off-by: Thomas Gleixner +--- + arch/arm64/Kconfig | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/arch/arm64/Kconfig ++++ b/arch/arm64/Kconfig +@@ -774,7 +774,7 @@ config XEN_DOM0 + + config XEN + bool "Xen guest support on ARM64" +- depends on ARM64 && OF ++ depends on ARM64 && OF && !PREEMPT_RT_FULL + select SWIOTLB_XEN + select PARAVIRT + help diff --git a/patches/features/all/rt/at91_dont_enable_disable_clock.patch b/patches/features/all/rt/at91_dont_enable_disable_clock.patch new file mode 100644 index 00000000000..92bdf1fc86d --- /dev/null +++ b/patches/features/all/rt/at91_dont_enable_disable_clock.patch @@ -0,0 +1,92 @@ +From: Sebastian Andrzej Siewior +Date: Wed, 09 Mar 2016 10:51:06 +0100 +Subject: arm: at91: do not disable/enable clocks in a row +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Currently the driver will disable the clock and enable it one line later +if it is switching from periodic mode into one shot. +This can be avoided and causes a needless warning on -RT. + +Signed-off-by: Sebastian Andrzej Siewior +--- + drivers/clocksource/tcb_clksrc.c | 33 +++++++++++++++++++++++++++++---- + 1 file changed, 29 insertions(+), 4 deletions(-) + +--- a/drivers/clocksource/tcb_clksrc.c ++++ b/drivers/clocksource/tcb_clksrc.c +@@ -126,6 +126,7 @@ static struct clocksource clksrc = { + struct tc_clkevt_device { + struct clock_event_device clkevt; + struct clk *clk; ++ bool clk_enabled; + void __iomem *regs; + }; + +@@ -143,6 +144,24 @@ static struct tc_clkevt_device *to_tc_cl + */ + static u32 timer_clock; + ++static void tc_clk_disable(struct clock_event_device *d) ++{ ++ struct tc_clkevt_device *tcd = to_tc_clkevt(d); ++ ++ clk_disable(tcd->clk); ++ tcd->clk_enabled = false; ++} ++ ++static void tc_clk_enable(struct clock_event_device *d) ++{ ++ struct tc_clkevt_device *tcd = to_tc_clkevt(d); ++ ++ if (tcd->clk_enabled) ++ return; ++ clk_enable(tcd->clk); ++ tcd->clk_enabled = true; ++} ++ + static int tc_shutdown(struct clock_event_device *d) + { + struct tc_clkevt_device *tcd = to_tc_clkevt(d); +@@ -150,8 +169,14 @@ static int tc_shutdown(struct clock_even + + writel(0xff, regs + ATMEL_TC_REG(2, IDR)); + writel(ATMEL_TC_CLKDIS, regs + ATMEL_TC_REG(2, CCR)); ++ return 0; ++} ++ ++static int tc_shutdown_clk_off(struct clock_event_device *d) ++{ ++ tc_shutdown(d); + if (!clockevent_state_detached(d)) +- clk_disable(tcd->clk); ++ tc_clk_disable(d); + + return 0; + } +@@ -164,7 +189,7 @@ static int tc_set_oneshot(struct clock_e + if (clockevent_state_oneshot(d) || clockevent_state_periodic(d)) + tc_shutdown(d); + +- clk_enable(tcd->clk); ++ tc_clk_enable(d); + + /* slow clock, count up to RC, then irq and stop */ + writel(timer_clock | ATMEL_TC_CPCSTOP | ATMEL_TC_WAVE | +@@ -186,7 +211,7 @@ static int tc_set_periodic(struct clock_ + /* By not making the gentime core emulate periodic mode on top + * of oneshot, we get lower overhead and improved accuracy. + */ +- clk_enable(tcd->clk); ++ tc_clk_enable(d); + + /* slow clock, count up to RC, then irq and restart */ + writel(timer_clock | ATMEL_TC_WAVE | ATMEL_TC_WAVESEL_UP_AUTO, +@@ -220,7 +245,7 @@ static struct tc_clkevt_device clkevt = + /* Should be lower than at91rm9200's system timer */ + .rating = 125, + .set_next_event = tc_next_event, +- .set_state_shutdown = tc_shutdown, ++ .set_state_shutdown = tc_shutdown_clk_off, + .set_state_periodic = tc_set_periodic, + .set_state_oneshot = tc_set_oneshot, + }, diff --git a/patches/features/all/rt/ata-disable-interrupts-if-non-rt.patch b/patches/features/all/rt/ata-disable-interrupts-if-non-rt.patch new file mode 100644 index 00000000000..abc656bb2d8 --- /dev/null +++ b/patches/features/all/rt/ata-disable-interrupts-if-non-rt.patch @@ -0,0 +1,29 @@ +From: Steven Rostedt +Date: Fri, 3 Jul 2009 08:44:29 -0500 +Subject: ata: Do not disable interrupts in ide code for preempt-rt +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Use the local_irq_*_nort variants. + +Signed-off-by: Steven Rostedt +Signed-off-by: Ingo Molnar +Signed-off-by: Thomas Gleixner + +--- + drivers/ata/libata-sff.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/drivers/ata/libata-sff.c ++++ b/drivers/ata/libata-sff.c +@@ -679,9 +679,9 @@ unsigned int ata_sff_data_xfer_noirq(str + unsigned long flags; + unsigned int consumed; + +- local_irq_save(flags); ++ local_irq_save_nort(flags); + consumed = ata_sff_data_xfer32(qc, buf, buflen, rw); +- local_irq_restore(flags); ++ local_irq_restore_nort(flags); + + return consumed; + } diff --git a/patches/features/all/rt/block-blk-mq-use-swait.patch b/patches/features/all/rt/block-blk-mq-use-swait.patch new file mode 100644 index 00000000000..86ad4f9e36e --- /dev/null +++ b/patches/features/all/rt/block-blk-mq-use-swait.patch @@ -0,0 +1,123 @@ +From: Sebastian Andrzej Siewior +Date: Fri, 13 Feb 2015 11:01:26 +0100 +Subject: block: blk-mq: Use swait +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +| BUG: sleeping function called from invalid context at kernel/locking/rtmutex.c:914 +| in_atomic(): 1, irqs_disabled(): 0, pid: 255, name: kworker/u257:6 +| 5 locks held by kworker/u257:6/255: +| #0: ("events_unbound"){.+.+.+}, at: [] process_one_work+0x171/0x5e0 +| #1: ((&entry->work)){+.+.+.}, at: [] process_one_work+0x171/0x5e0 +| #2: (&shost->scan_mutex){+.+.+.}, at: [] __scsi_add_device+0xa3/0x130 [scsi_mod] +| #3: (&set->tag_list_lock){+.+...}, at: [] blk_mq_init_queue+0x96a/0xa50 +| #4: (rcu_read_lock_sched){......}, at: [] percpu_ref_kill_and_confirm+0x1d/0x120 +| Preemption disabled at:[] blk_mq_freeze_queue_start+0x56/0x70 +| +| CPU: 2 PID: 255 Comm: kworker/u257:6 Not tainted 3.18.7-rt0+ #1 +| Workqueue: events_unbound async_run_entry_fn +| 0000000000000003 ffff8800bc29f998 ffffffff815b3a12 0000000000000000 +| 0000000000000000 ffff8800bc29f9b8 ffffffff8109aa16 ffff8800bc29fa28 +| ffff8800bc5d1bc8 ffff8800bc29f9e8 ffffffff815b8dd4 ffff880000000000 +| Call Trace: +| [] dump_stack+0x4f/0x7c +| [] __might_sleep+0x116/0x190 +| [] rt_spin_lock+0x24/0x60 +| [] __wake_up+0x29/0x60 +| [] blk_mq_usage_counter_release+0x1e/0x20 +| [] percpu_ref_kill_and_confirm+0x106/0x120 +| [] blk_mq_freeze_queue_start+0x56/0x70 +| [] blk_mq_update_tag_set_depth+0x40/0xd0 +| [] blk_mq_init_queue+0x98c/0xa50 +| [] scsi_mq_alloc_queue+0x20/0x60 [scsi_mod] +| [] scsi_alloc_sdev+0x2f5/0x370 [scsi_mod] +| [] scsi_probe_and_add_lun+0x9e4/0xdd0 [scsi_mod] +| [] __scsi_add_device+0x126/0x130 [scsi_mod] +| [] ata_scsi_scan_host+0xaf/0x200 [libata] +| [] async_port_probe+0x46/0x60 [libata] +| [] async_run_entry_fn+0x3b/0xf0 +| [] process_one_work+0x201/0x5e0 + +Signed-off-by: Sebastian Andrzej Siewior +--- + block/blk-core.c | 6 +++--- + block/blk-mq.c | 8 ++++---- + include/linux/blkdev.h | 2 +- + 3 files changed, 8 insertions(+), 8 deletions(-) + +--- a/block/blk-core.c ++++ b/block/blk-core.c +@@ -785,7 +785,7 @@ int blk_queue_enter(struct request_queue + */ + smp_rmb(); + +- ret = wait_event_interruptible(q->mq_freeze_wq, ++ ret = swait_event_interruptible(q->mq_freeze_wq, + !atomic_read(&q->mq_freeze_depth) || + blk_queue_dying(q)); + if (blk_queue_dying(q)) +@@ -805,7 +805,7 @@ static void blk_queue_usage_counter_rele + struct request_queue *q = + container_of(ref, struct request_queue, q_usage_counter); + +- wake_up_all(&q->mq_freeze_wq); ++ swake_up_all(&q->mq_freeze_wq); + } + + static void blk_rq_timed_out_timer(unsigned long data) +@@ -881,7 +881,7 @@ struct request_queue *blk_alloc_queue_no + q->bypass_depth = 1; + __set_bit(QUEUE_FLAG_BYPASS, &q->queue_flags); + +- init_waitqueue_head(&q->mq_freeze_wq); ++ init_swait_queue_head(&q->mq_freeze_wq); + + /* + * Init percpu_ref in atomic mode so that it's faster to shutdown. +--- a/block/blk-mq.c ++++ b/block/blk-mq.c +@@ -132,14 +132,14 @@ EXPORT_SYMBOL_GPL(blk_freeze_queue_start + + void blk_mq_freeze_queue_wait(struct request_queue *q) + { +- wait_event(q->mq_freeze_wq, percpu_ref_is_zero(&q->q_usage_counter)); ++ swait_event(q->mq_freeze_wq, percpu_ref_is_zero(&q->q_usage_counter)); + } + EXPORT_SYMBOL_GPL(blk_mq_freeze_queue_wait); + + int blk_mq_freeze_queue_wait_timeout(struct request_queue *q, + unsigned long timeout) + { +- return wait_event_timeout(q->mq_freeze_wq, ++ return swait_event_timeout(q->mq_freeze_wq, + percpu_ref_is_zero(&q->q_usage_counter), + timeout); + } +@@ -180,7 +180,7 @@ void blk_mq_unfreeze_queue(struct reques + WARN_ON_ONCE(freeze_depth < 0); + if (!freeze_depth) { + percpu_ref_reinit(&q->q_usage_counter); +- wake_up_all(&q->mq_freeze_wq); ++ swake_up_all(&q->mq_freeze_wq); + } + } + EXPORT_SYMBOL_GPL(blk_mq_unfreeze_queue); +@@ -261,7 +261,7 @@ void blk_mq_wake_waiters(struct request_ + * dying, we need to ensure that processes currently waiting on + * the queue are notified as well. + */ +- wake_up_all(&q->mq_freeze_wq); ++ swake_up_all(&q->mq_freeze_wq); + } + + bool blk_mq_can_queue(struct blk_mq_hw_ctx *hctx) +--- a/include/linux/blkdev.h ++++ b/include/linux/blkdev.h +@@ -598,7 +598,7 @@ struct request_queue { + struct throtl_data *td; + #endif + struct rcu_head rcu_head; +- wait_queue_head_t mq_freeze_wq; ++ struct swait_queue_head mq_freeze_wq; + struct percpu_ref q_usage_counter; + struct list_head all_q_node; + diff --git a/patches/features/all/rt/block-mq-don-t-complete-requests-via-IPI.patch b/patches/features/all/rt/block-mq-don-t-complete-requests-via-IPI.patch new file mode 100644 index 00000000000..5f1fe70e9e6 --- /dev/null +++ b/patches/features/all/rt/block-mq-don-t-complete-requests-via-IPI.patch @@ -0,0 +1,107 @@ +From: Sebastian Andrzej Siewior +Date: Thu, 29 Jan 2015 15:10:08 +0100 +Subject: block/mq: don't complete requests via IPI +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +The IPI runs in hardirq context and there are sleeping locks. This patch +moves the completion into a workqueue. + +Signed-off-by: Sebastian Andrzej Siewior +--- + block/blk-core.c | 3 +++ + block/blk-mq.c | 23 +++++++++++++++++++++++ + include/linux/blk-mq.h | 2 +- + include/linux/blkdev.h | 3 +++ + 4 files changed, 30 insertions(+), 1 deletion(-) + +--- a/block/blk-core.c ++++ b/block/blk-core.c +@@ -116,6 +116,9 @@ void blk_rq_init(struct request_queue *q + + INIT_LIST_HEAD(&rq->queuelist); + INIT_LIST_HEAD(&rq->timeout_list); ++#ifdef CONFIG_PREEMPT_RT_FULL ++ INIT_WORK(&rq->work, __blk_mq_complete_request_remote_work); ++#endif + rq->cpu = -1; + rq->q = q; + rq->__sector = (sector_t) -1; +--- a/block/blk-mq.c ++++ b/block/blk-mq.c +@@ -318,6 +318,9 @@ static struct request *blk_mq_rq_ctx_ini + /* tag was already set */ + rq->extra_len = 0; + ++#ifdef CONFIG_PREEMPT_RT_FULL ++ INIT_WORK(&rq->work, __blk_mq_complete_request_remote_work); ++#endif + INIT_LIST_HEAD(&rq->timeout_list); + rq->timeout = 0; + +@@ -512,12 +515,24 @@ void blk_mq_end_request(struct request * + } + EXPORT_SYMBOL(blk_mq_end_request); + ++#ifdef CONFIG_PREEMPT_RT_FULL ++ ++void __blk_mq_complete_request_remote_work(struct work_struct *work) ++{ ++ struct request *rq = container_of(work, struct request, work); ++ ++ rq->q->softirq_done_fn(rq); ++} ++ ++#else ++ + static void __blk_mq_complete_request_remote(void *data) + { + struct request *rq = data; + + rq->q->softirq_done_fn(rq); + } ++#endif + + static void __blk_mq_complete_request(struct request *rq) + { +@@ -542,10 +557,18 @@ static void __blk_mq_complete_request(st + shared = cpus_share_cache(cpu, ctx->cpu); + + if (cpu != ctx->cpu && !shared && cpu_online(ctx->cpu)) { ++#ifdef CONFIG_PREEMPT_RT_FULL ++ /* ++ * We could force QUEUE_FLAG_SAME_FORCE then we would not get in ++ * here. But we could try to invoke it one the CPU like this. ++ */ ++ schedule_work_on(ctx->cpu, &rq->work); ++#else + rq->csd.func = __blk_mq_complete_request_remote; + rq->csd.info = rq; + rq->csd.flags = 0; + smp_call_function_single_async(ctx->cpu, &rq->csd); ++#endif + } else { + rq->q->softirq_done_fn(rq); + } +--- a/include/linux/blk-mq.h ++++ b/include/linux/blk-mq.h +@@ -226,7 +226,7 @@ static inline u16 blk_mq_unique_tag_to_t + return unique_tag & BLK_MQ_UNIQUE_TAG_MASK; + } + +- ++void __blk_mq_complete_request_remote_work(struct work_struct *work); + int blk_mq_request_started(struct request *rq); + void blk_mq_start_request(struct request *rq); + void blk_mq_end_request(struct request *rq, blk_status_t error); +--- a/include/linux/blkdev.h ++++ b/include/linux/blkdev.h +@@ -134,6 +134,9 @@ typedef __u32 __bitwise req_flags_t; + */ + struct request { + struct list_head queuelist; ++#ifdef CONFIG_PREEMPT_RT_FULL ++ struct work_struct work; ++#endif + union { + struct __call_single_data csd; + u64 fifo_time; diff --git a/patches/features/all/rt/block-mq-drop-preempt-disable.patch b/patches/features/all/rt/block-mq-drop-preempt-disable.patch new file mode 100644 index 00000000000..f6248f072ab --- /dev/null +++ b/patches/features/all/rt/block-mq-drop-preempt-disable.patch @@ -0,0 +1,52 @@ +From: Sebastian Andrzej Siewior +Date: Tue, 14 Jul 2015 14:26:34 +0200 +Subject: block/mq: do not invoke preempt_disable() +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +preempt_disable() and get_cpu() don't play well together with the sleeping +locks it tries to allocate later. +It seems to be enough to replace it with get_cpu_light() and migrate_disable(). + +Signed-off-by: Sebastian Andrzej Siewior +--- + block/blk-mq.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +--- a/block/blk-mq.c ++++ b/block/blk-mq.c +@@ -537,7 +537,7 @@ static void __blk_mq_complete_request(st + return; + } + +- cpu = get_cpu(); ++ cpu = get_cpu_light(); + if (!test_bit(QUEUE_FLAG_SAME_FORCE, &rq->q->queue_flags)) + shared = cpus_share_cache(cpu, ctx->cpu); + +@@ -549,7 +549,7 @@ static void __blk_mq_complete_request(st + } else { + rq->q->softirq_done_fn(rq); + } +- put_cpu(); ++ put_cpu_light(); + } + + /** +@@ -1197,14 +1197,14 @@ static void __blk_mq_delay_run_hw_queue( + return; + + if (!async && !(hctx->flags & BLK_MQ_F_BLOCKING)) { +- int cpu = get_cpu(); ++ int cpu = get_cpu_light(); + if (cpumask_test_cpu(cpu, hctx->cpumask)) { + __blk_mq_run_hw_queue(hctx); +- put_cpu(); ++ put_cpu_light(); + return; + } + +- put_cpu(); ++ put_cpu_light(); + } + + kblockd_schedule_delayed_work_on(blk_mq_hctx_next_cpu(hctx), diff --git a/patches/features/all/rt/block-mq-use-cpu_light.patch b/patches/features/all/rt/block-mq-use-cpu_light.patch new file mode 100644 index 00000000000..89a3fbb6787 --- /dev/null +++ b/patches/features/all/rt/block-mq-use-cpu_light.patch @@ -0,0 +1,30 @@ +From: Sebastian Andrzej Siewior +Date: Wed, 9 Apr 2014 10:37:23 +0200 +Subject: block: mq: use cpu_light() +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +there is a might sleep splat because get_cpu() disables preemption and +later we grab a lock. As a workaround for this we use get_cpu_light(). + +Signed-off-by: Sebastian Andrzej Siewior +--- + block/blk-mq.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/block/blk-mq.h ++++ b/block/blk-mq.h +@@ -98,12 +98,12 @@ static inline struct blk_mq_ctx *__blk_m + */ + static inline struct blk_mq_ctx *blk_mq_get_ctx(struct request_queue *q) + { +- return __blk_mq_get_ctx(q, get_cpu()); ++ return __blk_mq_get_ctx(q, get_cpu_light()); + } + + static inline void blk_mq_put_ctx(struct blk_mq_ctx *ctx) + { +- put_cpu(); ++ put_cpu_light(); + } + + struct blk_mq_alloc_data { diff --git a/patches/features/all/rt/block-shorten-interrupt-disabled-regions.patch b/patches/features/all/rt/block-shorten-interrupt-disabled-regions.patch new file mode 100644 index 00000000000..3628f801f58 --- /dev/null +++ b/patches/features/all/rt/block-shorten-interrupt-disabled-regions.patch @@ -0,0 +1,97 @@ +Subject: block: Shorten interrupt disabled regions +From: Thomas Gleixner +Date: Wed, 22 Jun 2011 19:47:02 +0200 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Moving the blk_sched_flush_plug() call out of the interrupt/preempt +disabled region in the scheduler allows us to replace +local_irq_save/restore(flags) by local_irq_disable/enable() in +blk_flush_plug(). + +Now instead of doing this we disable interrupts explicitely when we +lock the request_queue and reenable them when we drop the lock. That +allows interrupts to be handled when the plug list contains requests +for more than one queue. + +Aside of that this change makes the scope of the irq disabled region +more obvious. The current code confused the hell out of me when +looking at: + + local_irq_save(flags); + spin_lock(q->queue_lock); + ... + queue_unplugged(q...); + scsi_request_fn(); + spin_unlock(q->queue_lock); + spin_lock(shost->host_lock); + spin_unlock_irq(shost->host_lock); + +-------------------^^^ ???? + + spin_lock_irq(q->queue_lock); + spin_unlock(q->lock); + local_irq_restore(flags); + +Also add a comment to __blk_run_queue() documenting that +q->request_fn() can drop q->queue_lock and reenable interrupts, but +must return with q->queue_lock held and interrupts disabled. + +Signed-off-by: Thomas Gleixner +Cc: Peter Zijlstra +Cc: Tejun Heo +Cc: Jens Axboe +Cc: Linus Torvalds +Link: http://lkml.kernel.org/r/20110622174919.025446432@linutronix.de +--- + block/blk-core.c | 12 ++---------- + 1 file changed, 2 insertions(+), 10 deletions(-) + +--- a/block/blk-core.c ++++ b/block/blk-core.c +@@ -3291,7 +3291,7 @@ static void queue_unplugged(struct reque + blk_run_queue_async(q); + else + __blk_run_queue(q); +- spin_unlock(q->queue_lock); ++ spin_unlock_irq(q->queue_lock); + } + + static void flush_plug_callbacks(struct blk_plug *plug, bool from_schedule) +@@ -3339,7 +3339,6 @@ EXPORT_SYMBOL(blk_check_plugged); + void blk_flush_plug_list(struct blk_plug *plug, bool from_schedule) + { + struct request_queue *q; +- unsigned long flags; + struct request *rq; + LIST_HEAD(list); + unsigned int depth; +@@ -3359,11 +3358,6 @@ void blk_flush_plug_list(struct blk_plug + q = NULL; + depth = 0; + +- /* +- * Save and disable interrupts here, to avoid doing it for every +- * queue lock we have to take. +- */ +- local_irq_save(flags); + while (!list_empty(&list)) { + rq = list_entry_rq(list.next); + list_del_init(&rq->queuelist); +@@ -3376,7 +3370,7 @@ void blk_flush_plug_list(struct blk_plug + queue_unplugged(q, depth, from_schedule); + q = rq->q; + depth = 0; +- spin_lock(q->queue_lock); ++ spin_lock_irq(q->queue_lock); + } + + /* +@@ -3403,8 +3397,6 @@ void blk_flush_plug_list(struct blk_plug + */ + if (q) + queue_unplugged(q, depth, from_schedule); +- +- local_irq_restore(flags); + } + + void blk_finish_plug(struct blk_plug *plug) diff --git a/patches/features/all/rt/block-use-cpu-chill.patch b/patches/features/all/rt/block-use-cpu-chill.patch new file mode 100644 index 00000000000..683efd1284a --- /dev/null +++ b/patches/features/all/rt/block-use-cpu-chill.patch @@ -0,0 +1,46 @@ +Subject: block: Use cpu_chill() for retry loops +From: Thomas Gleixner +Date: Thu, 20 Dec 2012 18:28:26 +0100 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Retry loops on RT might loop forever when the modifying side was +preempted. Steven also observed a live lock when there was a +concurrent priority boosting going on. + +Use cpu_chill() instead of cpu_relax() to let the system +make progress. + +Signed-off-by: Thomas Gleixner + +--- + block/blk-ioc.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +--- a/block/blk-ioc.c ++++ b/block/blk-ioc.c +@@ -9,6 +9,7 @@ + #include + #include + #include ++#include + + #include "blk.h" + +@@ -118,7 +119,7 @@ static void ioc_release_fn(struct work_s + spin_unlock(q->queue_lock); + } else { + spin_unlock_irqrestore(&ioc->lock, flags); +- cpu_relax(); ++ cpu_chill(); + spin_lock_irqsave_nested(&ioc->lock, flags, 1); + } + } +@@ -202,7 +203,7 @@ void put_io_context_active(struct io_con + spin_unlock(icq->q->queue_lock); + } else { + spin_unlock_irqrestore(&ioc->lock, flags); +- cpu_relax(); ++ cpu_chill(); + goto retry; + } + } diff --git a/patches/features/all/rt/bug-rt-dependend-variants.patch b/patches/features/all/rt/bug-rt-dependend-variants.patch new file mode 100644 index 00000000000..42433421114 --- /dev/null +++ b/patches/features/all/rt/bug-rt-dependend-variants.patch @@ -0,0 +1,37 @@ +From: Ingo Molnar +Date: Fri, 3 Jul 2009 08:29:58 -0500 +Subject: bug: BUG_ON/WARN_ON variants dependend on RT/!RT +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Introduce RT/NON-RT WARN/BUG statements to avoid ifdefs in the code. + +Signed-off-by: Ingo Molnar +Signed-off-by: Thomas Gleixner + +--- + include/asm-generic/bug.h | 14 ++++++++++++++ + 1 file changed, 14 insertions(+) + +--- a/include/asm-generic/bug.h ++++ b/include/asm-generic/bug.h +@@ -233,6 +233,20 @@ void __warn(const char *file, int line, + # define WARN_ON_SMP(x) ({0;}) + #endif + ++#ifdef CONFIG_PREEMPT_RT_BASE ++# define BUG_ON_RT(c) BUG_ON(c) ++# define BUG_ON_NONRT(c) do { } while (0) ++# define WARN_ON_RT(condition) WARN_ON(condition) ++# define WARN_ON_NONRT(condition) do { } while (0) ++# define WARN_ON_ONCE_NONRT(condition) do { } while (0) ++#else ++# define BUG_ON_RT(c) do { } while (0) ++# define BUG_ON_NONRT(c) BUG_ON(c) ++# define WARN_ON_RT(condition) do { } while (0) ++# define WARN_ON_NONRT(condition) WARN_ON(condition) ++# define WARN_ON_ONCE_NONRT(condition) WARN_ON_ONCE(condition) ++#endif ++ + #endif /* __ASSEMBLY__ */ + + #endif diff --git a/patches/features/all/rt/cgroups-scheduling-while-atomic-in-cgroup-code.patch b/patches/features/all/rt/cgroups-scheduling-while-atomic-in-cgroup-code.patch new file mode 100644 index 00000000000..399ff1bd9f8 --- /dev/null +++ b/patches/features/all/rt/cgroups-scheduling-while-atomic-in-cgroup-code.patch @@ -0,0 +1,105 @@ +From: Mike Galbraith +Date: Sat, 21 Jun 2014 10:09:48 +0200 +Subject: memcontrol: Prevent scheduling while atomic in cgroup code +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +mm, memcg: make refill_stock() use get_cpu_light() + +Nikita reported the following memcg scheduling while atomic bug: + +Call Trace: +[e22d5a90] [c0007ea8] show_stack+0x4c/0x168 (unreliable) +[e22d5ad0] [c0618c04] __schedule_bug+0x94/0xb0 +[e22d5ae0] [c060b9ec] __schedule+0x530/0x550 +[e22d5bf0] [c060bacc] schedule+0x30/0xbc +[e22d5c00] [c060ca24] rt_spin_lock_slowlock+0x180/0x27c +[e22d5c70] [c00b39dc] res_counter_uncharge_until+0x40/0xc4 +[e22d5ca0] [c013ca88] drain_stock.isra.20+0x54/0x98 +[e22d5cc0] [c01402ac] __mem_cgroup_try_charge+0x2e8/0xbac +[e22d5d70] [c01410d4] mem_cgroup_charge_common+0x3c/0x70 +[e22d5d90] [c0117284] __do_fault+0x38c/0x510 +[e22d5df0] [c011a5f4] handle_pte_fault+0x98/0x858 +[e22d5e50] [c060ed08] do_page_fault+0x42c/0x6fc +[e22d5f40] [c000f5b4] handle_page_fault+0xc/0x80 + +What happens: + + refill_stock() + get_cpu_var() + drain_stock() + res_counter_uncharge() + res_counter_uncharge_until() + spin_lock() <== boom + +Fix it by replacing get/put_cpu_var() with get/put_cpu_light(). + +Reported-by: Nikita Yushchenko +Signed-off-by: Mike Galbraith +[bigeasy: use memcg_stock_ll as a locallock since it is now IRQ-off region] +Signed-off-by: Sebastian Andrzej Siewior +--- + mm/memcontrol.c | 13 +++++++------ + 1 file changed, 7 insertions(+), 6 deletions(-) + +--- a/mm/memcontrol.c ++++ b/mm/memcontrol.c +@@ -1723,6 +1723,7 @@ struct memcg_stock_pcp { + #define FLUSHING_CACHED_CHARGE 0 + }; + static DEFINE_PER_CPU(struct memcg_stock_pcp, memcg_stock); ++static DEFINE_LOCAL_IRQ_LOCK(memcg_stock_ll); + static DEFINE_MUTEX(percpu_charge_mutex); + + /** +@@ -1745,7 +1746,7 @@ static bool consume_stock(struct mem_cgr + if (nr_pages > CHARGE_BATCH) + return ret; + +- local_irq_save(flags); ++ local_lock_irqsave(memcg_stock_ll, flags); + + stock = this_cpu_ptr(&memcg_stock); + if (memcg == stock->cached && stock->nr_pages >= nr_pages) { +@@ -1753,7 +1754,7 @@ static bool consume_stock(struct mem_cgr + ret = true; + } + +- local_irq_restore(flags); ++ local_unlock_irqrestore(memcg_stock_ll, flags); + + return ret; + } +@@ -1784,13 +1785,13 @@ static void drain_local_stock(struct wor + * The only protection from memory hotplug vs. drain_stock races is + * that we always operate on local CPU stock here with IRQ disabled + */ +- local_irq_save(flags); ++ local_lock_irqsave(memcg_stock_ll, flags); + + stock = this_cpu_ptr(&memcg_stock); + drain_stock(stock); + clear_bit(FLUSHING_CACHED_CHARGE, &stock->flags); + +- local_irq_restore(flags); ++ local_unlock_irqrestore(memcg_stock_ll, flags); + } + + /* +@@ -1802,7 +1803,7 @@ static void refill_stock(struct mem_cgro + struct memcg_stock_pcp *stock; + unsigned long flags; + +- local_irq_save(flags); ++ local_lock_irqsave(memcg_stock_ll, flags); + + stock = this_cpu_ptr(&memcg_stock); + if (stock->cached != memcg) { /* reset if necessary */ +@@ -1814,7 +1815,7 @@ static void refill_stock(struct mem_cgro + if (stock->nr_pages > CHARGE_BATCH) + drain_stock(stock); + +- local_irq_restore(flags); ++ local_unlock_irqrestore(memcg_stock_ll, flags); + } + + /* diff --git a/patches/features/all/rt/cgroups-use-simple-wait-in-css_release.patch b/patches/features/all/rt/cgroups-use-simple-wait-in-css_release.patch new file mode 100644 index 00000000000..69cee582eb6 --- /dev/null +++ b/patches/features/all/rt/cgroups-use-simple-wait-in-css_release.patch @@ -0,0 +1,87 @@ +From: Sebastian Andrzej Siewior +Date: Fri, 13 Feb 2015 15:52:24 +0100 +Subject: cgroups: use simple wait in css_release() +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +To avoid: +|BUG: sleeping function called from invalid context at kernel/locking/rtmutex.c:914 +|in_atomic(): 1, irqs_disabled(): 0, pid: 92, name: rcuc/11 +|2 locks held by rcuc/11/92: +| #0: (rcu_callback){......}, at: [] rcu_cpu_kthread+0x3de/0x940 +| #1: (rcu_read_lock_sched){......}, at: [] percpu_ref_call_confirm_rcu+0x0/0xd0 +|Preemption disabled at:[] percpu_ref_switch_to_atomic_rcu+0x82/0xc0 +|CPU: 11 PID: 92 Comm: rcuc/11 Not tainted 3.18.7-rt0+ #1 +| ffff8802398cdf80 ffff880235f0bc28 ffffffff815b3a12 0000000000000000 +| 0000000000000000 ffff880235f0bc48 ffffffff8109aa16 0000000000000000 +| ffff8802398cdf80 ffff880235f0bc78 ffffffff815b8dd4 000000000000df80 +|Call Trace: +| [] dump_stack+0x4f/0x7c +| [] __might_sleep+0x116/0x190 +| [] rt_spin_lock+0x24/0x60 +| [] queue_work_on+0x6d/0x1d0 +| [] css_release+0x81/0x90 +| [] percpu_ref_call_confirm_rcu+0xbe/0xd0 +| [] percpu_ref_switch_to_atomic_rcu+0x82/0xc0 +| [] rcu_cpu_kthread+0x445/0x940 +| [] smpboot_thread_fn+0x18d/0x2d0 +| [] kthread+0xe8/0x100 +| [] ret_from_fork+0x7c/0xb0 + +Signed-off-by: Sebastian Andrzej Siewior +--- + include/linux/cgroup-defs.h | 2 ++ + kernel/cgroup/cgroup.c | 9 +++++---- + 2 files changed, 7 insertions(+), 4 deletions(-) + +--- a/include/linux/cgroup-defs.h ++++ b/include/linux/cgroup-defs.h +@@ -19,6 +19,7 @@ + #include + #include + #include ++#include + + #ifdef CONFIG_CGROUPS + +@@ -152,6 +153,7 @@ struct cgroup_subsys_state { + /* percpu_ref killing and RCU release */ + struct rcu_head rcu_head; + struct work_struct destroy_work; ++ struct swork_event destroy_swork; + + /* + * PI: the parent css. Placed here for cache proximity to following +--- a/kernel/cgroup/cgroup.c ++++ b/kernel/cgroup/cgroup.c +@@ -4498,10 +4498,10 @@ static void css_free_rcu_fn(struct rcu_h + queue_work(cgroup_destroy_wq, &css->destroy_work); + } + +-static void css_release_work_fn(struct work_struct *work) ++static void css_release_work_fn(struct swork_event *sev) + { + struct cgroup_subsys_state *css = +- container_of(work, struct cgroup_subsys_state, destroy_work); ++ container_of(sev, struct cgroup_subsys_state, destroy_swork); + struct cgroup_subsys *ss = css->ss; + struct cgroup *cgrp = css->cgroup; + +@@ -4552,8 +4552,8 @@ static void css_release(struct percpu_re + struct cgroup_subsys_state *css = + container_of(ref, struct cgroup_subsys_state, refcnt); + +- INIT_WORK(&css->destroy_work, css_release_work_fn); +- queue_work(cgroup_destroy_wq, &css->destroy_work); ++ INIT_SWORK(&css->destroy_swork, css_release_work_fn); ++ swork_queue(&css->destroy_swork); + } + + static void init_and_link_css(struct cgroup_subsys_state *css, +@@ -5259,6 +5259,7 @@ static int __init cgroup_wq_init(void) + */ + cgroup_destroy_wq = alloc_workqueue("cgroup_destroy", 0, 1); + BUG_ON(!cgroup_destroy_wq); ++ BUG_ON(swork_get()); + return 0; + } + core_initcall(cgroup_wq_init); diff --git a/patches/features/all/rt/char-random-don-t-print-that-the-init-is-done.patch b/patches/features/all/rt/char-random-don-t-print-that-the-init-is-done.patch new file mode 100644 index 00000000000..0d623f637e2 --- /dev/null +++ b/patches/features/all/rt/char-random-don-t-print-that-the-init-is-done.patch @@ -0,0 +1,167 @@ +From: Sebastian Andrzej Siewior +Date: Tue, 30 May 2017 16:39:01 +0200 +Subject: char/random: don't print that the init is done +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +On RT we run into circular locking with pendingb_lock (workqueue), +port_lock_key (uart) and the primary_crng (random): + + ====================================================== + [ INFO: possible circular locking dependency detected ] + ------------------------------------------------------- + irq/4-serial/512 is trying to acquire lock: + ((pendingb_lock).lock){+.+...}, at: [] queue_work_on+0x5d/0x190 + + but task is already holding lock: + (&port_lock_key){+.+...}, at: [] serial8250_handle_irq.part.27+0x16/0xb0 + + which lock already depends on the new lock. + + the existing dependency chain (in reverse order) is: + + -> #3 (&port_lock_key){+.+...}: + lock_acquire+0xac/0x240 + rt_spin_lock+0x46/0x50 + serial8250_console_write+0x211/0x220 + univ8250_console_write+0x1c/0x20 + console_unlock+0x563/0x5c0 + vprintk_emit+0x277/0x320 + vprintk_default+0x1a/0x20 + vprintk_func+0x20/0x80 + printk+0x3e/0x46 + crng_fast_load+0xde/0xe0 + add_interrupt_randomness+0x16c/0x1a0 + irq_thread+0x15c/0x1e0 + kthread+0x112/0x150 + ret_from_fork+0x31/0x40 + + -> #2 (primary_crng.lock){+.+...}: + lock_acquire+0xac/0x240 + rt_spin_lock+0x46/0x50 + _extract_crng+0x39/0xa0 + extract_crng+0x3a/0x40 + get_random_u32+0x120/0x190 + new_slab+0x1d6/0x7c0 + ___slab_alloc+0x30b/0x6f0 + __slab_alloc.isra.78+0x6c/0xc0 + __kmalloc+0x254/0x3a0 + pcpu_mem_zalloc+0x3a/0x70 + percpu_init_late+0x4f/0x8a + start_kernel+0x1ec/0x3b8 + x86_64_start_reservations+0x2a/0x2c + x86_64_start_kernel+0x13d/0x14c + verify_cpu+0x0/0xfc + + -> #1 ((batched_entropy_u32_lock).lock){+.+...}: + lock_acquire+0xac/0x240 + rt_spin_lock__no_mg+0x41/0x50 + get_random_u32+0x64/0x190 + new_slab+0x1d6/0x7c0 + ___slab_alloc+0x30b/0x6f0 + __slab_alloc.isra.78+0x6c/0xc0 + kmem_cache_alloc+0x26a/0x370 + __debug_object_init+0x325/0x460 + debug_object_activate+0x11c/0x1f0 + __queue_work+0x2c/0x770 + queue_work_on+0x12a/0x190 + serio_queue_event+0xd3/0x140 + __serio_register_port+0x17e/0x1a0 + i8042_probe+0x623/0x687 + platform_drv_probe+0x36/0x90 + driver_probe_device+0x1f8/0x2e0 + __driver_attach+0x96/0xa0 + bus_for_each_dev+0x5d/0x90 + driver_attach+0x19/0x20 + bus_add_driver+0x125/0x220 + driver_register+0x5b/0xd0 + __platform_driver_probe+0x5b/0x120 + __platform_create_bundle+0xaa/0xd0 + i8042_init+0x3f1/0x430 + do_one_initcall+0x3e/0x180 + kernel_init_freeable+0x212/0x295 + kernel_init+0x9/0x100 + ret_from_fork+0x31/0x40 + + -> #0 ((pendingb_lock).lock){+.+...}: + __lock_acquire+0x11b4/0x1320 + lock_acquire+0xac/0x240 + rt_spin_lock+0x46/0x50 + queue_work_on+0x5d/0x190 + tty_flip_buffer_push+0x26/0x30 + serial8250_rx_chars+0x120/0x1f0 + serial8250_handle_irq.part.27+0x58/0xb0 + serial8250_default_handle_irq+0x4b/0x60 + serial8250_interrupt+0x5f/0xd0 + irq_forced_thread_fn+0x1e/0x70 + irq_thread+0x137/0x1e0 + kthread+0x112/0x150 + ret_from_fork+0x31/0x40 + + other info that might help us debug this: + + Chain exists of: + (pendingb_lock).lock --> primary_crng.lock --> &port_lock_key + + Possible unsafe locking scenario: + + CPU0 CPU1 + ---- ---- + lock(&port_lock_key); + lock(primary_crng.lock); + lock(&port_lock_key); + lock((pendingb_lock).lock); + + *** DEADLOCK *** + + 2 locks held by irq/4-serial/512: + #0: (&i->lock){+.+...}, at: [] serial8250_interrupt+0x30/0xd0 + #1: (&port_lock_key){+.+...}, at: [] serial8250_handle_irq.part.27+0x16/0xb0 + + stack backtrace: + CPU: 4 PID: 512 Comm: irq/4-serial Not tainted 4.11.3-rt0+ #101 + Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.10.2-1 04/01/2014 + Call Trace: + dump_stack+0x86/0xc1 + print_circular_bug+0x1be/0x210 + __lock_acquire+0x11b4/0x1320 + lock_acquire+0xac/0x240 + rt_spin_lock+0x46/0x50 + queue_work_on+0x5d/0x190 + tty_flip_buffer_push+0x26/0x30 + serial8250_rx_chars+0x120/0x1f0 + serial8250_handle_irq.part.27+0x58/0xb0 + serial8250_default_handle_irq+0x4b/0x60 + serial8250_interrupt+0x5f/0xd0 + irq_forced_thread_fn+0x1e/0x70 + irq_thread+0x137/0x1e0 + kthread+0x112/0x150 + ret_from_fork+0x31/0x40 + +It should work if we delay that printk after dropping the lock but we +also could skip it. + +Signed-off-by: Sebastian Andrzej Siewior +--- + drivers/char/random.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/drivers/char/random.c ++++ b/drivers/char/random.c +@@ -809,7 +809,7 @@ static int crng_fast_load(const char *cp + invalidate_batched_entropy(); + crng_init = 1; + wake_up_interruptible(&crng_init_wait); +- pr_notice("random: fast init done\n"); ++ /* pr_notice("random: fast init done\n"); */ + } + return 1; + } +@@ -848,7 +848,7 @@ static void crng_reseed(struct crng_stat + crng_init = 2; + process_random_ready_list(); + wake_up_interruptible(&crng_init_wait); +- pr_notice("random: crng init done\n"); ++ /* pr_notice("random: crng init done\n"); */ + } + } + diff --git a/patches/features/all/rt/clockevents-drivers-timer-atmel-pit-fix-double-free_.patch b/patches/features/all/rt/clockevents-drivers-timer-atmel-pit-fix-double-free_.patch new file mode 100644 index 00000000000..e6d29326ec9 --- /dev/null +++ b/patches/features/all/rt/clockevents-drivers-timer-atmel-pit-fix-double-free_.patch @@ -0,0 +1,46 @@ +From: Alexandre Belloni +Date: Thu, 17 Mar 2016 21:09:43 +0100 +Subject: [PATCH] clockevents/drivers/timer-atmel-pit: fix double free_irq +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +clockevents_exchange_device() changes the state from detached to shutdown +and so at that point the IRQ has not yet been requested. + +Acked-by: Nicolas Ferre +Signed-off-by: Alexandre Belloni +Signed-off-by: Sebastian Andrzej Siewior +--- + drivers/clocksource/timer-atmel-pit.c | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +--- a/drivers/clocksource/timer-atmel-pit.c ++++ b/drivers/clocksource/timer-atmel-pit.c +@@ -46,6 +46,7 @@ struct pit_data { + u32 cycle; + u32 cnt; + unsigned int irq; ++ bool irq_requested; + struct clk *mck; + }; + +@@ -96,7 +97,10 @@ static int pit_clkevt_shutdown(struct cl + + /* disable irq, leaving the clocksource active */ + pit_write(data->base, AT91_PIT_MR, (data->cycle - 1) | AT91_PIT_PITEN); +- free_irq(data->irq, data); ++ if (data->irq_requested) { ++ free_irq(data->irq, data); ++ data->irq_requested = false; ++ } + return 0; + } + +@@ -115,6 +119,8 @@ static int pit_clkevt_set_periodic(struc + if (ret) + panic(pr_fmt("Unable to setup IRQ\n")); + ++ data->irq_requested = true; ++ + /* update clocksource counter */ + data->cnt += data->cycle * PIT_PICNT(pit_read(data->base, AT91_PIT_PIVR)); + pit_write(data->base, AT91_PIT_MR, diff --git a/patches/features/all/rt/clocksource-tclib-allow-higher-clockrates.patch b/patches/features/all/rt/clocksource-tclib-allow-higher-clockrates.patch new file mode 100644 index 00000000000..e73faf0ac35 --- /dev/null +++ b/patches/features/all/rt/clocksource-tclib-allow-higher-clockrates.patch @@ -0,0 +1,158 @@ +From: Benedikt Spranger +Date: Mon, 8 Mar 2010 18:57:04 +0100 +Subject: clocksource: TCLIB: Allow higher clock rates for clock events +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +As default the TCLIB uses the 32KiHz base clock rate for clock events. +Add a compile time selection to allow higher clock resulution. + +(fixed up by Sami Pietikäinen ) + +Signed-off-by: Benedikt Spranger +Signed-off-by: Thomas Gleixner +--- + drivers/clocksource/tcb_clksrc.c | 36 +++++++++++++++++++++--------------- + drivers/misc/Kconfig | 12 ++++++++++-- + 2 files changed, 31 insertions(+), 17 deletions(-) + +--- a/drivers/clocksource/tcb_clksrc.c ++++ b/drivers/clocksource/tcb_clksrc.c +@@ -25,8 +25,7 @@ + * this 32 bit free-running counter. the second channel is not used. + * + * - The third channel may be used to provide a 16-bit clockevent +- * source, used in either periodic or oneshot mode. This runs +- * at 32 KiHZ, and can handle delays of up to two seconds. ++ * source, used in either periodic or oneshot mode. + * + * A boot clocksource and clockevent source are also currently needed, + * unless the relevant platforms (ARM/AT91, AVR32/AT32) are changed so +@@ -127,6 +126,7 @@ struct tc_clkevt_device { + struct clock_event_device clkevt; + struct clk *clk; + bool clk_enabled; ++ u32 freq; + void __iomem *regs; + }; + +@@ -135,13 +135,6 @@ static struct tc_clkevt_device *to_tc_cl + return container_of(clkevt, struct tc_clkevt_device, clkevt); + } + +-/* For now, we always use the 32K clock ... this optimizes for NO_HZ, +- * because using one of the divided clocks would usually mean the +- * tick rate can never be less than several dozen Hz (vs 0.5 Hz). +- * +- * A divided clock could be good for high resolution timers, since +- * 30.5 usec resolution can seem "low". +- */ + static u32 timer_clock; + + static void tc_clk_disable(struct clock_event_device *d) +@@ -191,7 +184,7 @@ static int tc_set_oneshot(struct clock_e + + tc_clk_enable(d); + +- /* slow clock, count up to RC, then irq and stop */ ++ /* count up to RC, then irq and stop */ + writel(timer_clock | ATMEL_TC_CPCSTOP | ATMEL_TC_WAVE | + ATMEL_TC_WAVESEL_UP_AUTO, regs + ATMEL_TC_REG(2, CMR)); + writel(ATMEL_TC_CPCS, regs + ATMEL_TC_REG(2, IER)); +@@ -213,10 +206,10 @@ static int tc_set_periodic(struct clock_ + */ + tc_clk_enable(d); + +- /* slow clock, count up to RC, then irq and restart */ ++ /* count up to RC, then irq and restart */ + writel(timer_clock | ATMEL_TC_WAVE | ATMEL_TC_WAVESEL_UP_AUTO, + regs + ATMEL_TC_REG(2, CMR)); +- writel((32768 + HZ / 2) / HZ, tcaddr + ATMEL_TC_REG(2, RC)); ++ writel((tcd->freq + HZ / 2) / HZ, tcaddr + ATMEL_TC_REG(2, RC)); + + /* Enable clock and interrupts on RC compare */ + writel(ATMEL_TC_CPCS, regs + ATMEL_TC_REG(2, IER)); +@@ -243,7 +236,11 @@ static struct tc_clkevt_device clkevt = + .features = CLOCK_EVT_FEAT_PERIODIC | + CLOCK_EVT_FEAT_ONESHOT, + /* Should be lower than at91rm9200's system timer */ ++#ifdef CONFIG_ATMEL_TCB_CLKSRC_USE_SLOW_CLOCK + .rating = 125, ++#else ++ .rating = 200, ++#endif + .set_next_event = tc_next_event, + .set_state_shutdown = tc_shutdown_clk_off, + .set_state_periodic = tc_set_periodic, +@@ -265,8 +262,9 @@ static irqreturn_t ch2_irq(int irq, void + return IRQ_NONE; + } + +-static int __init setup_clkevents(struct atmel_tc *tc, int clk32k_divisor_idx) ++static int __init setup_clkevents(struct atmel_tc *tc, int divisor_idx) + { ++ unsigned divisor = atmel_tc_divisors[divisor_idx]; + int ret; + struct clk *t2_clk = tc->clk[2]; + int irq = tc->irq[2]; +@@ -287,7 +285,11 @@ static int __init setup_clkevents(struct + clkevt.regs = tc->regs; + clkevt.clk = t2_clk; + +- timer_clock = clk32k_divisor_idx; ++ timer_clock = divisor_idx; ++ if (!divisor) ++ clkevt.freq = 32768; ++ else ++ clkevt.freq = clk_get_rate(t2_clk) / divisor; + + clkevt.clkevt.cpumask = cpumask_of(0); + +@@ -298,7 +300,7 @@ static int __init setup_clkevents(struct + return ret; + } + +- clockevents_config_and_register(&clkevt.clkevt, 32768, 1, 0xffff); ++ clockevents_config_and_register(&clkevt.clkevt, clkevt.freq, 1, 0xffff); + + return ret; + } +@@ -435,7 +437,11 @@ static int __init tcb_clksrc_init(void) + goto err_disable_t1; + + /* channel 2: periodic and oneshot timer support */ ++#ifdef CONFIG_ATMEL_TCB_CLKSRC_USE_SLOW_CLOCK + ret = setup_clkevents(tc, clk32k_divisor_idx); ++#else ++ ret = setup_clkevents(tc, best_divisor_idx); ++#endif + if (ret) + goto err_unregister_clksrc; + +--- a/drivers/misc/Kconfig ++++ b/drivers/misc/Kconfig +@@ -69,8 +69,7 @@ config ATMEL_TCB_CLKSRC + are combined to make a single 32-bit timer. + + When GENERIC_CLOCKEVENTS is defined, the third timer channel +- may be used as a clock event device supporting oneshot mode +- (delays of up to two seconds) based on the 32 KiHz clock. ++ may be used as a clock event device supporting oneshot mode. + + config ATMEL_TCB_CLKSRC_BLOCK + int +@@ -84,6 +83,15 @@ config ATMEL_TCB_CLKSRC_BLOCK + TC can be used for other purposes, such as PWM generation and + interval timing. + ++config ATMEL_TCB_CLKSRC_USE_SLOW_CLOCK ++ bool "TC Block use 32 KiHz clock" ++ depends on ATMEL_TCB_CLKSRC ++ default y ++ help ++ Select this to use 32 KiHz base clock rate as TC block clock ++ source for clock events. ++ ++ + config DUMMY_IRQ + tristate "Dummy IRQ handler" + default n diff --git a/patches/features/all/rt/completion-use-simple-wait-queues.patch b/patches/features/all/rt/completion-use-simple-wait-queues.patch new file mode 100644 index 00000000000..655660fe6aa --- /dev/null +++ b/patches/features/all/rt/completion-use-simple-wait-queues.patch @@ -0,0 +1,353 @@ +Subject: completion: Use simple wait queues +From: Thomas Gleixner +Date: Fri, 11 Jan 2013 11:23:51 +0100 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Completions have no long lasting callbacks and therefor do not need +the complex waitqueue variant. Use simple waitqueues which reduces the +contention on the waitqueue lock. + +Signed-off-by: Thomas Gleixner +--- + drivers/net/wireless/intersil/orinoco/orinoco_usb.c | 2 - + drivers/usb/gadget/function/f_fs.c | 2 - + drivers/usb/gadget/legacy/inode.c | 4 +- + include/linux/completion.h | 10 ++--- + include/linux/suspend.h | 6 +++ + include/linux/swait.h | 1 + kernel/power/hibernate.c | 7 ++++ + kernel/power/suspend.c | 4 ++ + kernel/sched/completion.c | 34 ++++++++++---------- + kernel/sched/core.c | 10 ++++- + kernel/sched/swait.c | 20 +++++++++++ + 11 files changed, 72 insertions(+), 28 deletions(-) + +--- a/drivers/net/wireless/intersil/orinoco/orinoco_usb.c ++++ b/drivers/net/wireless/intersil/orinoco/orinoco_usb.c +@@ -697,7 +697,7 @@ static void ezusb_req_ctx_wait(struct ez + while (!ctx->done.done && msecs--) + udelay(1000); + } else { +- wait_event_interruptible(ctx->done.wait, ++ swait_event_interruptible(ctx->done.wait, + ctx->done.done); + } + break; +--- a/drivers/usb/gadget/function/f_fs.c ++++ b/drivers/usb/gadget/function/f_fs.c +@@ -1610,7 +1610,7 @@ static void ffs_data_put(struct ffs_data + pr_info("%s(): freeing\n", __func__); + ffs_data_clear(ffs); + BUG_ON(waitqueue_active(&ffs->ev.waitq) || +- waitqueue_active(&ffs->ep0req_completion.wait) || ++ swait_active(&ffs->ep0req_completion.wait) || + waitqueue_active(&ffs->wait)); + destroy_workqueue(ffs->io_completion_wq); + kfree(ffs->dev_name); +--- a/drivers/usb/gadget/legacy/inode.c ++++ b/drivers/usb/gadget/legacy/inode.c +@@ -347,7 +347,7 @@ ep_io (struct ep_data *epdata, void *buf + spin_unlock_irq (&epdata->dev->lock); + + if (likely (value == 0)) { +- value = wait_event_interruptible (done.wait, done.done); ++ value = swait_event_interruptible (done.wait, done.done); + if (value != 0) { + spin_lock_irq (&epdata->dev->lock); + if (likely (epdata->ep != NULL)) { +@@ -356,7 +356,7 @@ ep_io (struct ep_data *epdata, void *buf + usb_ep_dequeue (epdata->ep, epdata->req); + spin_unlock_irq (&epdata->dev->lock); + +- wait_event (done.wait, done.done); ++ swait_event (done.wait, done.done); + if (epdata->status == -ECONNRESET) + epdata->status = -EINTR; + } else { +--- a/include/linux/completion.h ++++ b/include/linux/completion.h +@@ -9,7 +9,7 @@ + * See kernel/sched/completion.c for details. + */ + +-#include ++#include + #ifdef CONFIG_LOCKDEP_COMPLETIONS + #include + #endif +@@ -28,7 +28,7 @@ + */ + struct completion { + unsigned int done; +- wait_queue_head_t wait; ++ struct swait_queue_head wait; + #ifdef CONFIG_LOCKDEP_COMPLETIONS + struct lockdep_map_cross map; + #endif +@@ -67,11 +67,11 @@ static inline void complete_release_comm + + #ifdef CONFIG_LOCKDEP_COMPLETIONS + #define COMPLETION_INITIALIZER(work) \ +- { 0, __WAIT_QUEUE_HEAD_INITIALIZER((work).wait), \ ++ { 0, __SWAIT_QUEUE_HEAD_INITIALIZER((work).wait), \ + STATIC_CROSS_LOCKDEP_MAP_INIT("(complete)" #work, &(work)) } + #else + #define COMPLETION_INITIALIZER(work) \ +- { 0, __WAIT_QUEUE_HEAD_INITIALIZER((work).wait) } ++ { 0, __SWAIT_QUEUE_HEAD_INITIALIZER((work).wait) } + #endif + + #define COMPLETION_INITIALIZER_ONSTACK(work) \ +@@ -117,7 +117,7 @@ static inline void complete_release_comm + static inline void __init_completion(struct completion *x) + { + x->done = 0; +- init_waitqueue_head(&x->wait); ++ init_swait_queue_head(&x->wait); + } + + /** +--- a/include/linux/suspend.h ++++ b/include/linux/suspend.h +@@ -196,6 +196,12 @@ struct platform_s2idle_ops { + void (*end)(void); + }; + ++#if defined(CONFIG_SUSPEND) || defined(CONFIG_HIBERNATION) ++extern bool pm_in_action; ++#else ++# define pm_in_action false ++#endif ++ + #ifdef CONFIG_SUSPEND + extern suspend_state_t mem_sleep_current; + extern suspend_state_t mem_sleep_default; +--- a/include/linux/swait.h ++++ b/include/linux/swait.h +@@ -148,6 +148,7 @@ static inline bool swq_has_sleeper(struc + extern void swake_up(struct swait_queue_head *q); + extern void swake_up_all(struct swait_queue_head *q); + extern void swake_up_locked(struct swait_queue_head *q); ++extern void swake_up_all_locked(struct swait_queue_head *q); + + extern void __prepare_to_swait(struct swait_queue_head *q, struct swait_queue *wait); + extern void prepare_to_swait(struct swait_queue_head *q, struct swait_queue *wait, int state); +--- a/kernel/power/hibernate.c ++++ b/kernel/power/hibernate.c +@@ -679,6 +679,10 @@ static int load_image_and_restore(void) + return error; + } + ++#ifndef CONFIG_SUSPEND ++bool pm_in_action; ++#endif ++ + /** + * hibernate - Carry out system hibernation, including saving the image. + */ +@@ -692,6 +696,8 @@ int hibernate(void) + return -EPERM; + } + ++ pm_in_action = true; ++ + lock_system_sleep(); + /* The snapshot device should not be opened while we're running */ + if (!atomic_add_unless(&snapshot_device_available, -1, 0)) { +@@ -770,6 +776,7 @@ int hibernate(void) + atomic_inc(&snapshot_device_available); + Unlock: + unlock_system_sleep(); ++ pm_in_action = false; + pr_info("hibernation exit\n"); + + return error; +--- a/kernel/power/suspend.c ++++ b/kernel/power/suspend.c +@@ -593,6 +593,8 @@ static int enter_state(suspend_state_t s + return error; + } + ++bool pm_in_action; ++ + /** + * pm_suspend - Externally visible function for suspending the system. + * @state: System sleep state to enter. +@@ -607,6 +609,7 @@ int pm_suspend(suspend_state_t state) + if (state <= PM_SUSPEND_ON || state >= PM_SUSPEND_MAX) + return -EINVAL; + ++ pm_in_action = true; + pr_info("suspend entry (%s)\n", mem_sleep_labels[state]); + error = enter_state(state); + if (error) { +@@ -616,6 +619,7 @@ int pm_suspend(suspend_state_t state) + suspend_stats.success++; + } + pr_info("suspend exit\n"); ++ pm_in_action = false; + return error; + } + EXPORT_SYMBOL(pm_suspend); +--- a/kernel/sched/completion.c ++++ b/kernel/sched/completion.c +@@ -32,7 +32,7 @@ void complete(struct completion *x) + { + unsigned long flags; + +- spin_lock_irqsave(&x->wait.lock, flags); ++ raw_spin_lock_irqsave(&x->wait.lock, flags); + + /* + * Perform commit of crossrelease here. +@@ -41,8 +41,8 @@ void complete(struct completion *x) + + if (x->done != UINT_MAX) + x->done++; +- __wake_up_locked(&x->wait, TASK_NORMAL, 1); +- spin_unlock_irqrestore(&x->wait.lock, flags); ++ swake_up_locked(&x->wait); ++ raw_spin_unlock_irqrestore(&x->wait.lock, flags); + } + EXPORT_SYMBOL(complete); + +@@ -66,10 +66,10 @@ void complete_all(struct completion *x) + { + unsigned long flags; + +- spin_lock_irqsave(&x->wait.lock, flags); ++ raw_spin_lock_irqsave(&x->wait.lock, flags); + x->done = UINT_MAX; +- __wake_up_locked(&x->wait, TASK_NORMAL, 0); +- spin_unlock_irqrestore(&x->wait.lock, flags); ++ swake_up_all_locked(&x->wait); ++ raw_spin_unlock_irqrestore(&x->wait.lock, flags); + } + EXPORT_SYMBOL(complete_all); + +@@ -78,20 +78,20 @@ do_wait_for_common(struct completion *x, + long (*action)(long), long timeout, int state) + { + if (!x->done) { +- DECLARE_WAITQUEUE(wait, current); ++ DECLARE_SWAITQUEUE(wait); + +- __add_wait_queue_entry_tail_exclusive(&x->wait, &wait); ++ __prepare_to_swait(&x->wait, &wait); + do { + if (signal_pending_state(state, current)) { + timeout = -ERESTARTSYS; + break; + } + __set_current_state(state); +- spin_unlock_irq(&x->wait.lock); ++ raw_spin_unlock_irq(&x->wait.lock); + timeout = action(timeout); +- spin_lock_irq(&x->wait.lock); ++ raw_spin_lock_irq(&x->wait.lock); + } while (!x->done && timeout); +- __remove_wait_queue(&x->wait, &wait); ++ __finish_swait(&x->wait, &wait); + if (!x->done) + return timeout; + } +@@ -108,9 +108,9 @@ static inline long __sched + + complete_acquire(x); + +- spin_lock_irq(&x->wait.lock); ++ raw_spin_lock_irq(&x->wait.lock); + timeout = do_wait_for_common(x, action, timeout, state); +- spin_unlock_irq(&x->wait.lock); ++ raw_spin_unlock_irq(&x->wait.lock); + + complete_release(x); + +@@ -299,12 +299,12 @@ bool try_wait_for_completion(struct comp + if (!READ_ONCE(x->done)) + return 0; + +- spin_lock_irqsave(&x->wait.lock, flags); ++ raw_spin_lock_irqsave(&x->wait.lock, flags); + if (!x->done) + ret = 0; + else if (x->done != UINT_MAX) + x->done--; +- spin_unlock_irqrestore(&x->wait.lock, flags); ++ raw_spin_unlock_irqrestore(&x->wait.lock, flags); + return ret; + } + EXPORT_SYMBOL(try_wait_for_completion); +@@ -330,8 +330,8 @@ bool completion_done(struct completion * + * otherwise we can end up freeing the completion before complete() + * is done referencing it. + */ +- spin_lock_irqsave(&x->wait.lock, flags); +- spin_unlock_irqrestore(&x->wait.lock, flags); ++ raw_spin_lock_irqsave(&x->wait.lock, flags); ++ raw_spin_unlock_irqrestore(&x->wait.lock, flags); + return true; + } + EXPORT_SYMBOL(completion_done); +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -6816,7 +6816,10 @@ void migrate_disable(void) + return; + } + #ifdef CONFIG_SCHED_DEBUG +- WARN_ON_ONCE(p->migrate_disable_atomic); ++ if (unlikely(p->migrate_disable_atomic)) { ++ tracing_off(); ++ WARN_ON_ONCE(1); ++ } + #endif + + if (p->migrate_disable) { +@@ -6846,7 +6849,10 @@ void migrate_enable(void) + } + + #ifdef CONFIG_SCHED_DEBUG +- WARN_ON_ONCE(p->migrate_disable_atomic); ++ if (unlikely(p->migrate_disable_atomic)) { ++ tracing_off(); ++ WARN_ON_ONCE(1); ++ } + #endif + + WARN_ON_ONCE(p->migrate_disable <= 0); +--- a/kernel/sched/swait.c ++++ b/kernel/sched/swait.c +@@ -1,6 +1,7 @@ + // SPDX-License-Identifier: GPL-2.0 + #include + #include ++#include + + void __init_swait_queue_head(struct swait_queue_head *q, const char *name, + struct lock_class_key *key) +@@ -30,6 +31,25 @@ void swake_up_locked(struct swait_queue_ + } + EXPORT_SYMBOL(swake_up_locked); + ++void swake_up_all_locked(struct swait_queue_head *q) ++{ ++ struct swait_queue *curr; ++ int wakes = 0; ++ ++ while (!list_empty(&q->task_list)) { ++ ++ curr = list_first_entry(&q->task_list, typeof(*curr), ++ task_list); ++ wake_up_process(curr->task); ++ list_del_init(&curr->task_list); ++ wakes++; ++ } ++ if (pm_in_action) ++ return; ++ WARN(wakes > 2, "complete_all() with %d waiters\n", wakes); ++} ++EXPORT_SYMBOL(swake_up_all_locked); ++ + void swake_up(struct swait_queue_head *q) + { + unsigned long flags; diff --git a/patches/features/all/rt/cond-resched-lock-rt-tweak.patch b/patches/features/all/rt/cond-resched-lock-rt-tweak.patch new file mode 100644 index 00000000000..4e7af0931cf --- /dev/null +++ b/patches/features/all/rt/cond-resched-lock-rt-tweak.patch @@ -0,0 +1,27 @@ +Subject: sched: Use the proper LOCK_OFFSET for cond_resched() +From: Thomas Gleixner +Date: Sun, 17 Jul 2011 22:51:33 +0200 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +RT does not increment preempt count when a 'sleeping' spinlock is +locked. Update PREEMPT_LOCK_OFFSET for that case. + +Signed-off-by: Thomas Gleixner +--- + include/linux/preempt.h | 4 ++++ + 1 file changed, 4 insertions(+) + +--- a/include/linux/preempt.h ++++ b/include/linux/preempt.h +@@ -118,7 +118,11 @@ + /* + * The preempt_count offset after spin_lock() + */ ++#if !defined(CONFIG_PREEMPT_RT_FULL) + #define PREEMPT_LOCK_OFFSET PREEMPT_DISABLE_OFFSET ++#else ++#define PREEMPT_LOCK_OFFSET 0 ++#endif + + /* + * The preempt_count offset needed for things like: diff --git a/patches/features/all/rt/cond-resched-softirq-rt.patch b/patches/features/all/rt/cond-resched-softirq-rt.patch new file mode 100644 index 00000000000..22ee28042d0 --- /dev/null +++ b/patches/features/all/rt/cond-resched-softirq-rt.patch @@ -0,0 +1,53 @@ +Subject: sched: Take RT softirq semantics into account in cond_resched() +From: Thomas Gleixner +Date: Thu, 14 Jul 2011 09:56:44 +0200 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +The softirq semantics work different on -RT. There is no SOFTIRQ_MASK in +the preemption counter which leads to the BUG_ON() statement in +__cond_resched_softirq(). As for -RT it is enough to perform a "normal" +schedule. + +Signed-off-by: Thomas Gleixner +--- + include/linux/sched.h | 4 ++++ + kernel/sched/core.c | 2 ++ + 2 files changed, 6 insertions(+) + +--- a/include/linux/sched.h ++++ b/include/linux/sched.h +@@ -1606,12 +1606,16 @@ extern int __cond_resched_lock(spinlock_ + __cond_resched_lock(lock); \ + }) + ++#ifndef CONFIG_PREEMPT_RT_FULL + extern int __cond_resched_softirq(void); + + #define cond_resched_softirq() ({ \ + ___might_sleep(__FILE__, __LINE__, SOFTIRQ_DISABLE_OFFSET); \ + __cond_resched_softirq(); \ + }) ++#else ++# define cond_resched_softirq() cond_resched() ++#endif + + static inline void cond_resched_rcu(void) + { +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -4945,6 +4945,7 @@ int __cond_resched_lock(spinlock_t *lock + } + EXPORT_SYMBOL(__cond_resched_lock); + ++#ifndef CONFIG_PREEMPT_RT_FULL + int __sched __cond_resched_softirq(void) + { + BUG_ON(!in_softirq()); +@@ -4958,6 +4959,7 @@ int __sched __cond_resched_softirq(void) + return 0; + } + EXPORT_SYMBOL(__cond_resched_softirq); ++#endif + + /** + * yield - yield the current processor to other threads. diff --git a/patches/features/all/rt/connector-cn_proc-Protect-send_msg-with-a-local-lock.patch b/patches/features/all/rt/connector-cn_proc-Protect-send_msg-with-a-local-lock.patch new file mode 100644 index 00000000000..08db6486c11 --- /dev/null +++ b/patches/features/all/rt/connector-cn_proc-Protect-send_msg-with-a-local-lock.patch @@ -0,0 +1,68 @@ +From: Mike Galbraith +Date: Sun, 16 Oct 2016 05:11:54 +0200 +Subject: [PATCH] connector/cn_proc: Protect send_msg() with a local lock + on RT +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +|BUG: sleeping function called from invalid context at kernel/locking/rtmutex.c:931 +|in_atomic(): 1, irqs_disabled(): 0, pid: 31807, name: sleep +|Preemption disabled at:[] proc_exit_connector+0xbb/0x140 +| +|CPU: 4 PID: 31807 Comm: sleep Tainted: G W E 4.8.0-rt11-rt #106 +|Call Trace: +| [] dump_stack+0x65/0x88 +| [] ___might_sleep+0xf5/0x180 +| [] __rt_spin_lock+0x20/0x50 +| [] rt_read_lock+0x28/0x30 +| [] netlink_broadcast_filtered+0x49/0x3f0 +| [] ? __kmalloc_reserve.isra.33+0x31/0x90 +| [] netlink_broadcast+0x1d/0x20 +| [] cn_netlink_send_mult+0x19a/0x1f0 +| [] cn_netlink_send+0x1b/0x20 +| [] proc_exit_connector+0xf8/0x140 +| [] do_exit+0x5d1/0xba0 +| [] do_group_exit+0x4c/0xc0 +| [] SyS_exit_group+0x14/0x20 +| [] entry_SYSCALL_64_fastpath+0x1a/0xa4 + +Since ab8ed951080e ("connector: fix out-of-order cn_proc netlink message +delivery") which is v4.7-rc6. + +Signed-off-by: Mike Galbraith +Signed-off-by: Sebastian Andrzej Siewior +--- + drivers/connector/cn_proc.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +--- a/drivers/connector/cn_proc.c ++++ b/drivers/connector/cn_proc.c +@@ -32,6 +32,7 @@ + #include + + #include ++#include + + /* + * Size of a cn_msg followed by a proc_event structure. Since the +@@ -54,10 +55,11 @@ static struct cb_id cn_proc_event_id = { + + /* proc_event_counts is used as the sequence number of the netlink message */ + static DEFINE_PER_CPU(__u32, proc_event_counts) = { 0 }; ++static DEFINE_LOCAL_IRQ_LOCK(send_msg_lock); + + static inline void send_msg(struct cn_msg *msg) + { +- preempt_disable(); ++ local_lock(send_msg_lock); + + msg->seq = __this_cpu_inc_return(proc_event_counts) - 1; + ((struct proc_event *)msg->data)->cpu = smp_processor_id(); +@@ -70,7 +72,7 @@ static inline void send_msg(struct cn_ms + */ + cn_netlink_send(msg, 0, CN_IDX_PROC, GFP_NOWAIT); + +- preempt_enable(); ++ local_unlock(send_msg_lock); + } + + void proc_fork_connector(struct task_struct *task) diff --git a/patches/features/all/rt/cpu-hotplug--Implement-CPU-pinning.patch b/patches/features/all/rt/cpu-hotplug--Implement-CPU-pinning.patch new file mode 100644 index 00000000000..8ebfed1d0f7 --- /dev/null +++ b/patches/features/all/rt/cpu-hotplug--Implement-CPU-pinning.patch @@ -0,0 +1,111 @@ +Subject: cpu/hotplug: Implement CPU pinning +From: Thomas Gleixner +Date: Wed, 19 Jul 2017 17:31:20 +0200 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Signed-off-by: Thomas Gleixner +--- + include/linux/sched.h | 1 + + kernel/cpu.c | 40 ++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 41 insertions(+) + +--- a/include/linux/sched.h ++++ b/include/linux/sched.h +@@ -589,6 +589,7 @@ struct task_struct { + #if defined(CONFIG_PREEMPT_COUNT) && defined(CONFIG_SMP) + int migrate_disable; + int migrate_disable_update; ++ int pinned_on_cpu; + # ifdef CONFIG_SCHED_DEBUG + int migrate_disable_atomic; + # endif +--- a/kernel/cpu.c ++++ b/kernel/cpu.c +@@ -73,6 +73,11 @@ static DEFINE_PER_CPU(struct cpuhp_cpu_s + .fail = CPUHP_INVALID, + }; + ++#ifdef CONFIG_HOTPLUG_CPU ++static DEFINE_PER_CPU(struct rt_rw_lock, cpuhp_pin_lock) = \ ++ __RWLOCK_RT_INITIALIZER(cpuhp_pin_lock); ++#endif ++ + #if defined(CONFIG_LOCKDEP) && defined(CONFIG_SMP) + static struct lockdep_map cpuhp_state_up_map = + STATIC_LOCKDEP_MAP_INIT("cpuhp_state-up", &cpuhp_state_up_map); +@@ -291,7 +296,30 @@ static int cpu_hotplug_disabled; + */ + void pin_current_cpu(void) + { ++ struct rt_rw_lock *cpuhp_pin; ++ unsigned int cpu; ++ int ret; + ++again: ++ cpuhp_pin = this_cpu_ptr(&cpuhp_pin_lock); ++ ret = __read_rt_trylock(cpuhp_pin); ++ if (ret) { ++ current->pinned_on_cpu = smp_processor_id(); ++ return; ++ } ++ cpu = smp_processor_id(); ++ preempt_lazy_enable(); ++ preempt_enable(); ++ ++ __read_rt_lock(cpuhp_pin); ++ ++ preempt_disable(); ++ preempt_lazy_disable(); ++ if (cpu != smp_processor_id()) { ++ __read_rt_unlock(cpuhp_pin); ++ goto again; ++ } ++ current->pinned_on_cpu = cpu; + } + + /** +@@ -299,6 +327,13 @@ void pin_current_cpu(void) + */ + void unpin_current_cpu(void) + { ++ struct rt_rw_lock *cpuhp_pin = this_cpu_ptr(&cpuhp_pin_lock); ++ ++ if (WARN_ON(current->pinned_on_cpu != smp_processor_id())) ++ cpuhp_pin = per_cpu_ptr(&cpuhp_pin_lock, current->pinned_on_cpu); ++ ++ current->pinned_on_cpu = -1; ++ __read_rt_unlock(cpuhp_pin); + } + + DEFINE_STATIC_PERCPU_RWSEM(cpu_hotplug_lock); +@@ -768,6 +803,7 @@ static int take_cpu_down(void *_param) + + static int takedown_cpu(unsigned int cpu) + { ++ struct rt_rw_lock *cpuhp_pin = per_cpu_ptr(&cpuhp_pin_lock, cpu); + struct cpuhp_cpu_state *st = per_cpu_ptr(&cpuhp_state, cpu); + int err; + +@@ -781,11 +817,14 @@ static int takedown_cpu(unsigned int cpu + */ + irq_lock_sparse(); + ++ __write_rt_lock(cpuhp_pin); ++ + /* + * So now all preempt/rcu users must observe !cpu_active(). + */ + err = stop_machine_cpuslocked(take_cpu_down, NULL, cpumask_of(cpu)); + if (err) { ++ __write_rt_unlock(cpuhp_pin); + /* CPU refused to die */ + irq_unlock_sparse(); + /* Unpark the hotplug thread so we can rollback there */ +@@ -804,6 +843,7 @@ static int takedown_cpu(unsigned int cpu + wait_for_ap_thread(st, false); + BUG_ON(st->state != CPUHP_AP_IDLE_DEAD); + ++ __write_rt_unlock(cpuhp_pin); + /* Interrupts are moved away from the dying cpu, reenable alloc/free */ + irq_unlock_sparse(); + diff --git a/patches/features/all/rt/cpu_chill-Add-a-UNINTERRUPTIBLE-hrtimer_nanosleep.patch b/patches/features/all/rt/cpu_chill-Add-a-UNINTERRUPTIBLE-hrtimer_nanosleep.patch new file mode 100644 index 00000000000..c08f0087e2a --- /dev/null +++ b/patches/features/all/rt/cpu_chill-Add-a-UNINTERRUPTIBLE-hrtimer_nanosleep.patch @@ -0,0 +1,103 @@ +From: Steven Rostedt +Date: Tue, 4 Mar 2014 12:28:32 -0500 +Subject: cpu_chill: Add a UNINTERRUPTIBLE hrtimer_nanosleep +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +We hit another bug that was caused by switching cpu_chill() from +msleep() to hrtimer_nanosleep(). + +This time it is a livelock. The problem is that hrtimer_nanosleep() +calls schedule with the state == TASK_INTERRUPTIBLE. But these means +that if a signal is pending, the scheduler wont schedule, and will +simply change the current task state back to TASK_RUNNING. This +nullifies the whole point of cpu_chill() in the first place. That is, +if a task is spinning on a try_lock() and it preempted the owner of the +lock, if it has a signal pending, it will never give up the CPU to let +the owner of the lock run. + +I made a static function __hrtimer_nanosleep() that takes a fifth +parameter "state", which determines the task state of that the +nanosleep() will be in. The normal hrtimer_nanosleep() will act the +same, but cpu_chill() will call the __hrtimer_nanosleep() directly with +the TASK_UNINTERRUPTIBLE state. + +cpu_chill() only cares that the first sleep happens, and does not care +about the state of the restart schedule (in hrtimer_nanosleep_restart). + + +Reported-by: Ulrich Obergfell +Signed-off-by: Steven Rostedt +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/time/hrtimer.c | 24 +++++++++++++++++------- + 1 file changed, 17 insertions(+), 7 deletions(-) + +--- a/kernel/time/hrtimer.c ++++ b/kernel/time/hrtimer.c +@@ -1742,12 +1742,13 @@ int nanosleep_copyout(struct restart_blo + return -ERESTART_RESTARTBLOCK; + } + +-static int __sched do_nanosleep(struct hrtimer_sleeper *t, enum hrtimer_mode mode) ++static int __sched do_nanosleep(struct hrtimer_sleeper *t, enum hrtimer_mode mode, ++ unsigned long state) + { + struct restart_block *restart; + + do { +- set_current_state(TASK_INTERRUPTIBLE); ++ set_current_state(state); + hrtimer_start_expires(&t->timer, mode); + + if (likely(t->task)) +@@ -1785,13 +1786,15 @@ static long __sched hrtimer_nanosleep_re + hrtimer_init_sleeper_on_stack(&t, restart->nanosleep.clockid, + HRTIMER_MODE_ABS, current); + hrtimer_set_expires_tv64(&t.timer, restart->nanosleep.expires); +- ret = do_nanosleep(&t, HRTIMER_MODE_ABS); ++ /* cpu_chill() does not care about restart state. */ ++ ret = do_nanosleep(&t, HRTIMER_MODE_ABS, TASK_INTERRUPTIBLE); + destroy_hrtimer_on_stack(&t.timer); + return ret; + } + +-long hrtimer_nanosleep(const struct timespec64 *rqtp, +- const enum hrtimer_mode mode, const clockid_t clockid) ++static long __hrtimer_nanosleep(const struct timespec64 *rqtp, ++ const enum hrtimer_mode mode, const clockid_t clockid, ++ unsigned long state) + { + struct restart_block *restart; + struct hrtimer_sleeper t; +@@ -1804,7 +1807,7 @@ long hrtimer_nanosleep(const struct time + + hrtimer_init_sleeper_on_stack(&t, clockid, mode, current); + hrtimer_set_expires_range_ns(&t.timer, timespec64_to_ktime(*rqtp), slack); +- ret = do_nanosleep(&t, mode); ++ ret = do_nanosleep(&t, mode, state); + if (ret != -ERESTART_RESTARTBLOCK) + goto out; + +@@ -1823,6 +1826,12 @@ long hrtimer_nanosleep(const struct time + return ret; + } + ++long hrtimer_nanosleep(const struct timespec64 *rqtp, ++ const enum hrtimer_mode mode, const clockid_t clockid) ++{ ++ return __hrtimer_nanosleep(rqtp, mode, clockid, TASK_INTERRUPTIBLE); ++} ++ + SYSCALL_DEFINE2(nanosleep, struct timespec __user *, rqtp, + struct timespec __user *, rmtp) + { +@@ -1870,7 +1879,8 @@ void cpu_chill(void) + unsigned int freeze_flag = current->flags & PF_NOFREEZE; + + current->flags |= PF_NOFREEZE; +- hrtimer_nanosleep(&tu, HRTIMER_MODE_REL_HARD, CLOCK_MONOTONIC); ++ __hrtimer_nanosleep(&tu, HRTIMER_MODE_REL_HARD, CLOCK_MONOTONIC, ++ TASK_UNINTERRUPTIBLE); + if (!freeze_flag) + current->flags &= ~PF_NOFREEZE; + } diff --git a/patches/features/all/rt/cpufreq-drop-K8-s-driver-from-beeing-selected.patch b/patches/features/all/rt/cpufreq-drop-K8-s-driver-from-beeing-selected.patch new file mode 100644 index 00000000000..8963c1a5b62 --- /dev/null +++ b/patches/features/all/rt/cpufreq-drop-K8-s-driver-from-beeing-selected.patch @@ -0,0 +1,33 @@ +From: Sebastian Andrzej Siewior +Date: Thu, 9 Apr 2015 15:23:01 +0200 +Subject: cpufreq: drop K8's driver from beeing selected +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Ralf posted a picture of a backtrace from + +| powernowk8_target_fn() -> transition_frequency_fidvid() and then at the +| end: +| 932 policy = cpufreq_cpu_get(smp_processor_id()); +| 933 cpufreq_cpu_put(policy); + +crashing the system on -RT. I assumed that policy was a NULL pointer but +was rulled out. Since Ralf can't do any more investigations on this and +I have no machine with this, I simply switch it off. + +Reported-by: Ralf Mardorf +Signed-off-by: Sebastian Andrzej Siewior +--- + drivers/cpufreq/Kconfig.x86 | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/cpufreq/Kconfig.x86 ++++ b/drivers/cpufreq/Kconfig.x86 +@@ -125,7 +125,7 @@ config X86_POWERNOW_K7_ACPI + + config X86_POWERNOW_K8 + tristate "AMD Opteron/Athlon64 PowerNow!" +- depends on ACPI && ACPI_PROCESSOR && X86_ACPI_CPUFREQ ++ depends on ACPI && ACPI_PROCESSOR && X86_ACPI_CPUFREQ && !PREEMPT_RT_BASE + help + This adds the CPUFreq driver for K8/early Opteron/Athlon64 processors. + Support for K10 and newer processors is now in acpi-cpufreq. diff --git a/patches/features/all/rt/cpumask-disable-offstack-on-rt.patch b/patches/features/all/rt/cpumask-disable-offstack-on-rt.patch new file mode 100644 index 00000000000..7a81573e681 --- /dev/null +++ b/patches/features/all/rt/cpumask-disable-offstack-on-rt.patch @@ -0,0 +1,68 @@ +Subject: cpumask: Disable CONFIG_CPUMASK_OFFSTACK for RT +From: Thomas Gleixner +Date: Wed, 14 Dec 2011 01:03:49 +0100 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +There are "valid" GFP_ATOMIC allocations such as + +|BUG: sleeping function called from invalid context at kernel/locking/rtmutex.c:931 +|in_atomic(): 1, irqs_disabled(): 0, pid: 2130, name: tar +|1 lock held by tar/2130: +| #0: (&mm->mmap_sem){++++++}, at: [] SyS_brk+0x39/0x190 +|Preemption disabled at:[] flush_tlb_mm_range+0x28/0x350 +| +|CPU: 1 PID: 2130 Comm: tar Tainted: G W 4.8.2-rt2+ #747 +|Call Trace: +| [] dump_stack+0x86/0xca +| [] ___might_sleep+0x14b/0x240 +| [] rt_spin_lock+0x24/0x60 +| [] get_page_from_freelist+0x83a/0x11b0 +| [] __alloc_pages_nodemask+0x15b/0x1190 +| [] alloc_pages_current+0xa1/0x1f0 +| [] new_slab+0x3e5/0x690 +| [] ___slab_alloc+0x495/0x660 +| [] __slab_alloc.isra.79+0x71/0xc0 +| [] __kmalloc_node+0xe7/0x240 +| [] alloc_cpumask_var_node+0x20/0x50 +| [] alloc_cpumask_var+0xe/0x10 +| [] native_send_call_func_ipi+0x21/0x130 +| [] smp_call_function_many+0x22f/0x370 +| [] native_flush_tlb_others+0x1a4/0x3a0 +| [] flush_tlb_mm_range+0x7b/0x350 +| [] tlb_flush_mmu_tlbonly+0x62/0xd0 +| [] tlb_finish_mmu+0x14/0x50 +| [] unmap_region+0xe4/0x110 +| [] do_munmap+0x293/0x470 +| [] SyS_brk+0x13c/0x190 +| [] do_fast_syscall_32+0xb2/0x2f0 +| [] entry_SYSENTER_compat+0x51/0x60 + +which forbid allocations at run-time. + +Signed-off-by: Thomas Gleixner +--- + arch/x86/Kconfig | 2 +- + lib/Kconfig | 1 + + 2 files changed, 2 insertions(+), 1 deletion(-) + +--- a/arch/x86/Kconfig ++++ b/arch/x86/Kconfig +@@ -934,7 +934,7 @@ config IOMMU_HELPER + config MAXSMP + bool "Enable Maximum number of SMP Processors and NUMA Nodes" + depends on X86_64 && SMP && DEBUG_KERNEL +- select CPUMASK_OFFSTACK ++ select CPUMASK_OFFSTACK if !PREEMPT_RT_FULL + ---help--- + Enable maximum number of CPUS and NUMA Nodes for this architecture. + If unsure, say N. +--- a/lib/Kconfig ++++ b/lib/Kconfig +@@ -428,6 +428,7 @@ config CHECK_SIGNATURE + + config CPUMASK_OFFSTACK + bool "Force CPU masks off stack" if DEBUG_PER_CPU_MAPS ++ depends on !PREEMPT_RT_FULL + help + Use dynamic allocation for cpumask_var_t, instead of putting + them on the stack. This is a bit more expensive, but avoids diff --git a/patches/features/all/rt/cpuset-Convert-callback_lock-to-raw_spinlock_t.patch b/patches/features/all/rt/cpuset-Convert-callback_lock-to-raw_spinlock_t.patch new file mode 100644 index 00000000000..76674c7fcbb --- /dev/null +++ b/patches/features/all/rt/cpuset-Convert-callback_lock-to-raw_spinlock_t.patch @@ -0,0 +1,287 @@ +From: Mike Galbraith +Date: Sun, 8 Jan 2017 09:32:25 +0100 +Subject: [PATCH] cpuset: Convert callback_lock to raw_spinlock_t +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +The two commits below add up to a cpuset might_sleep() splat for RT: + +8447a0fee974 cpuset: convert callback_mutex to a spinlock +344736f29b35 cpuset: simplify cpuset_node_allowed API + +BUG: sleeping function called from invalid context at kernel/locking/rtmutex.c:995 +in_atomic(): 0, irqs_disabled(): 1, pid: 11718, name: cset +CPU: 135 PID: 11718 Comm: cset Tainted: G E 4.10.0-rt1-rt #4 +Hardware name: Intel Corporation BRICKLAND/BRICKLAND, BIOS BRHSXSD1.86B.0056.R01.1409242327 09/24/2014 +Call Trace: + ? dump_stack+0x5c/0x81 + ? ___might_sleep+0xf4/0x170 + ? rt_spin_lock+0x1c/0x50 + ? __cpuset_node_allowed+0x66/0xc0 + ? ___slab_alloc+0x390/0x570 + ? anon_vma_fork+0x8f/0x140 + ? copy_page_range+0x6cf/0xb00 + ? anon_vma_fork+0x8f/0x140 + ? __slab_alloc.isra.74+0x5a/0x81 + ? anon_vma_fork+0x8f/0x140 + ? kmem_cache_alloc+0x1b5/0x1f0 + ? anon_vma_fork+0x8f/0x140 + ? copy_process.part.35+0x1670/0x1ee0 + ? _do_fork+0xdd/0x3f0 + ? _do_fork+0xdd/0x3f0 + ? do_syscall_64+0x61/0x170 + ? entry_SYSCALL64_slow_path+0x25/0x25 + +The later ensured that a NUMA box WILL take callback_lock in atomic +context by removing the allocator and reclaim path __GFP_HARDWALL +usage which prevented such contexts from taking callback_mutex. + +One option would be to reinstate __GFP_HARDWALL protections for +RT, however, as the 8447a0fee974 changelog states: + +The callback_mutex is only used to synchronize reads/updates of cpusets' +flags and cpu/node masks. These operations should always proceed fast so +there's no reason why we can't use a spinlock instead of the mutex. + +Cc: stable-rt@vger.kernel.org +Signed-off-by: Mike Galbraith +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/cgroup/cpuset.c | 66 ++++++++++++++++++++++++------------------------- + 1 file changed, 33 insertions(+), 33 deletions(-) + +--- a/kernel/cgroup/cpuset.c ++++ b/kernel/cgroup/cpuset.c +@@ -288,7 +288,7 @@ static struct cpuset top_cpuset = { + */ + + static DEFINE_MUTEX(cpuset_mutex); +-static DEFINE_SPINLOCK(callback_lock); ++static DEFINE_RAW_SPINLOCK(callback_lock); + + static struct workqueue_struct *cpuset_migrate_mm_wq; + +@@ -926,9 +926,9 @@ static void update_cpumasks_hier(struct + continue; + rcu_read_unlock(); + +- spin_lock_irq(&callback_lock); ++ raw_spin_lock_irq(&callback_lock); + cpumask_copy(cp->effective_cpus, new_cpus); +- spin_unlock_irq(&callback_lock); ++ raw_spin_unlock_irq(&callback_lock); + + WARN_ON(!is_in_v2_mode() && + !cpumask_equal(cp->cpus_allowed, cp->effective_cpus)); +@@ -993,9 +993,9 @@ static int update_cpumask(struct cpuset + if (retval < 0) + return retval; + +- spin_lock_irq(&callback_lock); ++ raw_spin_lock_irq(&callback_lock); + cpumask_copy(cs->cpus_allowed, trialcs->cpus_allowed); +- spin_unlock_irq(&callback_lock); ++ raw_spin_unlock_irq(&callback_lock); + + /* use trialcs->cpus_allowed as a temp variable */ + update_cpumasks_hier(cs, trialcs->cpus_allowed); +@@ -1179,9 +1179,9 @@ static void update_nodemasks_hier(struct + continue; + rcu_read_unlock(); + +- spin_lock_irq(&callback_lock); ++ raw_spin_lock_irq(&callback_lock); + cp->effective_mems = *new_mems; +- spin_unlock_irq(&callback_lock); ++ raw_spin_unlock_irq(&callback_lock); + + WARN_ON(!is_in_v2_mode() && + !nodes_equal(cp->mems_allowed, cp->effective_mems)); +@@ -1249,9 +1249,9 @@ static int update_nodemask(struct cpuset + if (retval < 0) + goto done; + +- spin_lock_irq(&callback_lock); ++ raw_spin_lock_irq(&callback_lock); + cs->mems_allowed = trialcs->mems_allowed; +- spin_unlock_irq(&callback_lock); ++ raw_spin_unlock_irq(&callback_lock); + + /* use trialcs->mems_allowed as a temp variable */ + update_nodemasks_hier(cs, &trialcs->mems_allowed); +@@ -1342,9 +1342,9 @@ static int update_flag(cpuset_flagbits_t + spread_flag_changed = ((is_spread_slab(cs) != is_spread_slab(trialcs)) + || (is_spread_page(cs) != is_spread_page(trialcs))); + +- spin_lock_irq(&callback_lock); ++ raw_spin_lock_irq(&callback_lock); + cs->flags = trialcs->flags; +- spin_unlock_irq(&callback_lock); ++ raw_spin_unlock_irq(&callback_lock); + + if (!cpumask_empty(trialcs->cpus_allowed) && balance_flag_changed) + rebuild_sched_domains_locked(); +@@ -1759,7 +1759,7 @@ static int cpuset_common_seq_show(struct + cpuset_filetype_t type = seq_cft(sf)->private; + int ret = 0; + +- spin_lock_irq(&callback_lock); ++ raw_spin_lock_irq(&callback_lock); + + switch (type) { + case FILE_CPULIST: +@@ -1778,7 +1778,7 @@ static int cpuset_common_seq_show(struct + ret = -EINVAL; + } + +- spin_unlock_irq(&callback_lock); ++ raw_spin_unlock_irq(&callback_lock); + return ret; + } + +@@ -1993,12 +1993,12 @@ static int cpuset_css_online(struct cgro + + cpuset_inc(); + +- spin_lock_irq(&callback_lock); ++ raw_spin_lock_irq(&callback_lock); + if (is_in_v2_mode()) { + cpumask_copy(cs->effective_cpus, parent->effective_cpus); + cs->effective_mems = parent->effective_mems; + } +- spin_unlock_irq(&callback_lock); ++ raw_spin_unlock_irq(&callback_lock); + + if (!test_bit(CGRP_CPUSET_CLONE_CHILDREN, &css->cgroup->flags)) + goto out_unlock; +@@ -2025,12 +2025,12 @@ static int cpuset_css_online(struct cgro + } + rcu_read_unlock(); + +- spin_lock_irq(&callback_lock); ++ raw_spin_lock_irq(&callback_lock); + cs->mems_allowed = parent->mems_allowed; + cs->effective_mems = parent->mems_allowed; + cpumask_copy(cs->cpus_allowed, parent->cpus_allowed); + cpumask_copy(cs->effective_cpus, parent->cpus_allowed); +- spin_unlock_irq(&callback_lock); ++ raw_spin_unlock_irq(&callback_lock); + out_unlock: + mutex_unlock(&cpuset_mutex); + return 0; +@@ -2069,7 +2069,7 @@ static void cpuset_css_free(struct cgrou + static void cpuset_bind(struct cgroup_subsys_state *root_css) + { + mutex_lock(&cpuset_mutex); +- spin_lock_irq(&callback_lock); ++ raw_spin_lock_irq(&callback_lock); + + if (is_in_v2_mode()) { + cpumask_copy(top_cpuset.cpus_allowed, cpu_possible_mask); +@@ -2080,7 +2080,7 @@ static void cpuset_bind(struct cgroup_su + top_cpuset.mems_allowed = top_cpuset.effective_mems; + } + +- spin_unlock_irq(&callback_lock); ++ raw_spin_unlock_irq(&callback_lock); + mutex_unlock(&cpuset_mutex); + } + +@@ -2178,12 +2178,12 @@ hotplug_update_tasks_legacy(struct cpuse + { + bool is_empty; + +- spin_lock_irq(&callback_lock); ++ raw_spin_lock_irq(&callback_lock); + cpumask_copy(cs->cpus_allowed, new_cpus); + cpumask_copy(cs->effective_cpus, new_cpus); + cs->mems_allowed = *new_mems; + cs->effective_mems = *new_mems; +- spin_unlock_irq(&callback_lock); ++ raw_spin_unlock_irq(&callback_lock); + + /* + * Don't call update_tasks_cpumask() if the cpuset becomes empty, +@@ -2220,10 +2220,10 @@ hotplug_update_tasks(struct cpuset *cs, + if (nodes_empty(*new_mems)) + *new_mems = parent_cs(cs)->effective_mems; + +- spin_lock_irq(&callback_lock); ++ raw_spin_lock_irq(&callback_lock); + cpumask_copy(cs->effective_cpus, new_cpus); + cs->effective_mems = *new_mems; +- spin_unlock_irq(&callback_lock); ++ raw_spin_unlock_irq(&callback_lock); + + if (cpus_updated) + update_tasks_cpumask(cs); +@@ -2316,21 +2316,21 @@ static void cpuset_hotplug_workfn(struct + + /* synchronize cpus_allowed to cpu_active_mask */ + if (cpus_updated) { +- spin_lock_irq(&callback_lock); ++ raw_spin_lock_irq(&callback_lock); + if (!on_dfl) + cpumask_copy(top_cpuset.cpus_allowed, &new_cpus); + cpumask_copy(top_cpuset.effective_cpus, &new_cpus); +- spin_unlock_irq(&callback_lock); ++ raw_spin_unlock_irq(&callback_lock); + /* we don't mess with cpumasks of tasks in top_cpuset */ + } + + /* synchronize mems_allowed to N_MEMORY */ + if (mems_updated) { +- spin_lock_irq(&callback_lock); ++ raw_spin_lock_irq(&callback_lock); + if (!on_dfl) + top_cpuset.mems_allowed = new_mems; + top_cpuset.effective_mems = new_mems; +- spin_unlock_irq(&callback_lock); ++ raw_spin_unlock_irq(&callback_lock); + update_tasks_nodemask(&top_cpuset); + } + +@@ -2429,11 +2429,11 @@ void cpuset_cpus_allowed(struct task_str + { + unsigned long flags; + +- spin_lock_irqsave(&callback_lock, flags); ++ raw_spin_lock_irqsave(&callback_lock, flags); + rcu_read_lock(); + guarantee_online_cpus(task_cs(tsk), pmask); + rcu_read_unlock(); +- spin_unlock_irqrestore(&callback_lock, flags); ++ raw_spin_unlock_irqrestore(&callback_lock, flags); + } + + void cpuset_cpus_allowed_fallback(struct task_struct *tsk) +@@ -2481,11 +2481,11 @@ nodemask_t cpuset_mems_allowed(struct ta + nodemask_t mask; + unsigned long flags; + +- spin_lock_irqsave(&callback_lock, flags); ++ raw_spin_lock_irqsave(&callback_lock, flags); + rcu_read_lock(); + guarantee_online_mems(task_cs(tsk), &mask); + rcu_read_unlock(); +- spin_unlock_irqrestore(&callback_lock, flags); ++ raw_spin_unlock_irqrestore(&callback_lock, flags); + + return mask; + } +@@ -2577,14 +2577,14 @@ bool __cpuset_node_allowed(int node, gfp + return true; + + /* Not hardwall and node outside mems_allowed: scan up cpusets */ +- spin_lock_irqsave(&callback_lock, flags); ++ raw_spin_lock_irqsave(&callback_lock, flags); + + rcu_read_lock(); + cs = nearest_hardwall_ancestor(task_cs(current)); + allowed = node_isset(node, cs->mems_allowed); + rcu_read_unlock(); + +- spin_unlock_irqrestore(&callback_lock, flags); ++ raw_spin_unlock_irqrestore(&callback_lock, flags); + return allowed; + } + diff --git a/patches/features/all/rt/crypto-Reduce-preempt-disabled-regions-more-algos.patch b/patches/features/all/rt/crypto-Reduce-preempt-disabled-regions-more-algos.patch new file mode 100644 index 00000000000..8455a6f3572 --- /dev/null +++ b/patches/features/all/rt/crypto-Reduce-preempt-disabled-regions-more-algos.patch @@ -0,0 +1,242 @@ +From: Sebastian Andrzej Siewior +Date: Fri, 21 Feb 2014 17:24:04 +0100 +Subject: crypto: Reduce preempt disabled regions, more algos +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Don Estabrook reported +| kernel: WARNING: CPU: 2 PID: 858 at kernel/sched/core.c:2428 migrate_disable+0xed/0x100() +| kernel: WARNING: CPU: 2 PID: 858 at kernel/sched/core.c:2462 migrate_enable+0x17b/0x200() +| kernel: WARNING: CPU: 3 PID: 865 at kernel/sched/core.c:2428 migrate_disable+0xed/0x100() + +and his backtrace showed some crypto functions which looked fine. + +The problem is the following sequence: + +glue_xts_crypt_128bit() +{ + blkcipher_walk_virt(); /* normal migrate_disable() */ + + glue_fpu_begin(); /* get atomic */ + + while (nbytes) { + __glue_xts_crypt_128bit(); + blkcipher_walk_done(); /* with nbytes = 0, migrate_enable() + * while we are atomic */ + }; + glue_fpu_end() /* no longer atomic */ +} + +and this is why the counter get out of sync and the warning is printed. +The other problem is that we are non-preemptible between +glue_fpu_begin() and glue_fpu_end() and the latency grows. To fix this, +I shorten the FPU off region and ensure blkcipher_walk_done() is called +with preemption enabled. This might hurt the performance because we now +enable/disable the FPU state more often but we gain lower latency and +the bug is gone. + + +Reported-by: Don Estabrook +Signed-off-by: Sebastian Andrzej Siewior +--- + arch/x86/crypto/cast5_avx_glue.c | 21 +++++++++------------ + arch/x86/crypto/glue_helper.c | 31 +++++++++++++++---------------- + 2 files changed, 24 insertions(+), 28 deletions(-) + +--- a/arch/x86/crypto/cast5_avx_glue.c ++++ b/arch/x86/crypto/cast5_avx_glue.c +@@ -59,7 +59,7 @@ static inline void cast5_fpu_end(bool fp + static int ecb_crypt(struct blkcipher_desc *desc, struct blkcipher_walk *walk, + bool enc) + { +- bool fpu_enabled = false; ++ bool fpu_enabled; + struct cast5_ctx *ctx = crypto_blkcipher_ctx(desc->tfm); + const unsigned int bsize = CAST5_BLOCK_SIZE; + unsigned int nbytes; +@@ -75,7 +75,7 @@ static int ecb_crypt(struct blkcipher_de + u8 *wsrc = walk->src.virt.addr; + u8 *wdst = walk->dst.virt.addr; + +- fpu_enabled = cast5_fpu_begin(fpu_enabled, nbytes); ++ fpu_enabled = cast5_fpu_begin(false, nbytes); + + /* Process multi-block batch */ + if (nbytes >= bsize * CAST5_PARALLEL_BLOCKS) { +@@ -103,10 +103,9 @@ static int ecb_crypt(struct blkcipher_de + } while (nbytes >= bsize); + + done: ++ cast5_fpu_end(fpu_enabled); + err = blkcipher_walk_done(desc, walk, nbytes); + } +- +- cast5_fpu_end(fpu_enabled); + return err; + } + +@@ -227,7 +226,7 @@ static unsigned int __cbc_decrypt(struct + static int cbc_decrypt(struct blkcipher_desc *desc, struct scatterlist *dst, + struct scatterlist *src, unsigned int nbytes) + { +- bool fpu_enabled = false; ++ bool fpu_enabled; + struct blkcipher_walk walk; + int err; + +@@ -236,12 +235,11 @@ static int cbc_decrypt(struct blkcipher_ + desc->flags &= ~CRYPTO_TFM_REQ_MAY_SLEEP; + + while ((nbytes = walk.nbytes)) { +- fpu_enabled = cast5_fpu_begin(fpu_enabled, nbytes); ++ fpu_enabled = cast5_fpu_begin(false, nbytes); + nbytes = __cbc_decrypt(desc, &walk); ++ cast5_fpu_end(fpu_enabled); + err = blkcipher_walk_done(desc, &walk, nbytes); + } +- +- cast5_fpu_end(fpu_enabled); + return err; + } + +@@ -310,7 +308,7 @@ static unsigned int __ctr_crypt(struct b + static int ctr_crypt(struct blkcipher_desc *desc, struct scatterlist *dst, + struct scatterlist *src, unsigned int nbytes) + { +- bool fpu_enabled = false; ++ bool fpu_enabled; + struct blkcipher_walk walk; + int err; + +@@ -319,13 +317,12 @@ static int ctr_crypt(struct blkcipher_de + desc->flags &= ~CRYPTO_TFM_REQ_MAY_SLEEP; + + while ((nbytes = walk.nbytes) >= CAST5_BLOCK_SIZE) { +- fpu_enabled = cast5_fpu_begin(fpu_enabled, nbytes); ++ fpu_enabled = cast5_fpu_begin(false, nbytes); + nbytes = __ctr_crypt(desc, &walk); ++ cast5_fpu_end(fpu_enabled); + err = blkcipher_walk_done(desc, &walk, nbytes); + } + +- cast5_fpu_end(fpu_enabled); +- + if (walk.nbytes) { + ctr_crypt_final(desc, &walk); + err = blkcipher_walk_done(desc, &walk, 0); +--- a/arch/x86/crypto/glue_helper.c ++++ b/arch/x86/crypto/glue_helper.c +@@ -40,7 +40,7 @@ static int __glue_ecb_crypt_128bit(const + void *ctx = crypto_blkcipher_ctx(desc->tfm); + const unsigned int bsize = 128 / 8; + unsigned int nbytes, i, func_bytes; +- bool fpu_enabled = false; ++ bool fpu_enabled; + int err; + + err = blkcipher_walk_virt(desc, walk); +@@ -50,7 +50,7 @@ static int __glue_ecb_crypt_128bit(const + u8 *wdst = walk->dst.virt.addr; + + fpu_enabled = glue_fpu_begin(bsize, gctx->fpu_blocks_limit, +- desc, fpu_enabled, nbytes); ++ desc, false, nbytes); + + for (i = 0; i < gctx->num_funcs; i++) { + func_bytes = bsize * gctx->funcs[i].num_blocks; +@@ -72,10 +72,10 @@ static int __glue_ecb_crypt_128bit(const + } + + done: ++ glue_fpu_end(fpu_enabled); + err = blkcipher_walk_done(desc, walk, nbytes); + } + +- glue_fpu_end(fpu_enabled); + return err; + } + +@@ -192,7 +192,7 @@ int glue_cbc_decrypt_128bit(const struct + struct scatterlist *src, unsigned int nbytes) + { + const unsigned int bsize = 128 / 8; +- bool fpu_enabled = false; ++ bool fpu_enabled; + struct blkcipher_walk walk; + int err; + +@@ -201,12 +201,12 @@ int glue_cbc_decrypt_128bit(const struct + + while ((nbytes = walk.nbytes)) { + fpu_enabled = glue_fpu_begin(bsize, gctx->fpu_blocks_limit, +- desc, fpu_enabled, nbytes); ++ desc, false, nbytes); + nbytes = __glue_cbc_decrypt_128bit(gctx, desc, &walk); ++ glue_fpu_end(fpu_enabled); + err = blkcipher_walk_done(desc, &walk, nbytes); + } + +- glue_fpu_end(fpu_enabled); + return err; + } + EXPORT_SYMBOL_GPL(glue_cbc_decrypt_128bit); +@@ -275,7 +275,7 @@ int glue_ctr_crypt_128bit(const struct c + struct scatterlist *src, unsigned int nbytes) + { + const unsigned int bsize = 128 / 8; +- bool fpu_enabled = false; ++ bool fpu_enabled; + struct blkcipher_walk walk; + int err; + +@@ -284,13 +284,12 @@ int glue_ctr_crypt_128bit(const struct c + + while ((nbytes = walk.nbytes) >= bsize) { + fpu_enabled = glue_fpu_begin(bsize, gctx->fpu_blocks_limit, +- desc, fpu_enabled, nbytes); ++ desc, false, nbytes); + nbytes = __glue_ctr_crypt_128bit(gctx, desc, &walk); ++ glue_fpu_end(fpu_enabled); + err = blkcipher_walk_done(desc, &walk, nbytes); + } + +- glue_fpu_end(fpu_enabled); +- + if (walk.nbytes) { + glue_ctr_crypt_final_128bit( + gctx->funcs[gctx->num_funcs - 1].fn_u.ctr, desc, &walk); +@@ -380,7 +379,7 @@ int glue_xts_crypt_128bit(const struct c + void *tweak_ctx, void *crypt_ctx) + { + const unsigned int bsize = 128 / 8; +- bool fpu_enabled = false; ++ bool fpu_enabled; + struct blkcipher_walk walk; + int err; + +@@ -393,21 +392,21 @@ int glue_xts_crypt_128bit(const struct c + + /* set minimum length to bsize, for tweak_fn */ + fpu_enabled = glue_fpu_begin(bsize, gctx->fpu_blocks_limit, +- desc, fpu_enabled, ++ desc, false, + nbytes < bsize ? bsize : nbytes); +- + /* calculate first value of T */ + tweak_fn(tweak_ctx, walk.iv, walk.iv); ++ glue_fpu_end(fpu_enabled); + + while (nbytes) { ++ fpu_enabled = glue_fpu_begin(bsize, gctx->fpu_blocks_limit, ++ desc, false, nbytes); + nbytes = __glue_xts_crypt_128bit(gctx, crypt_ctx, desc, &walk); + ++ glue_fpu_end(fpu_enabled); + err = blkcipher_walk_done(desc, &walk, nbytes); + nbytes = walk.nbytes; + } +- +- glue_fpu_end(fpu_enabled); +- + return err; + } + EXPORT_SYMBOL_GPL(glue_xts_crypt_128bit); diff --git a/patches/features/all/rt/crypto-limit-more-FPU-enabled-sections.patch b/patches/features/all/rt/crypto-limit-more-FPU-enabled-sections.patch new file mode 100644 index 00000000000..e6e6f6464c1 --- /dev/null +++ b/patches/features/all/rt/crypto-limit-more-FPU-enabled-sections.patch @@ -0,0 +1,477 @@ +From: Sebastian Andrzej Siewior +Date: Thu, 30 Nov 2017 13:40:10 +0100 +Subject: [PATCH] crypto: limit more FPU-enabled sections +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Those crypto drivers use SSE/AVX/… for their crypto work and in order to +do so in kernel they need to enable the "FPU" in kernel mode which +disables preemption. +There are two problems with the way they are used: +- the while loop which processes X bytes may create latency spikes and + should be avoided or limited. +- the cipher-walk-next part may allocate/free memory and may use + kmap_atomic(). + +The whole kernel_fpu_begin()/end() processing isn't probably that cheap. +It most likely makes sense to process as much of those as possible in one +go. The new *_fpu_sched_rt() schedules only if a RT task is pending. + +Probably we should measure the performance those ciphers in pure SW +mode and with this optimisations to see if it makes sense to keep them +for RT. + +This kernel_fpu_resched() makes the code more preemptible which might hurt +performance. + +Cc: stable-rt@vger.kernel.org +Signed-off-by: Sebastian Andrzej Siewior +--- + arch/x86/crypto/camellia_aesni_avx2_glue.c | 20 ++++++++++++++++++++ + arch/x86/crypto/camellia_aesni_avx_glue.c | 19 +++++++++++++++++++ + arch/x86/crypto/cast6_avx_glue.c | 24 +++++++++++++++++++----- + arch/x86/crypto/chacha20_glue.c | 9 +++++---- + arch/x86/crypto/serpent_avx2_glue.c | 19 +++++++++++++++++++ + arch/x86/crypto/serpent_avx_glue.c | 23 +++++++++++++++++++---- + arch/x86/crypto/serpent_sse2_glue.c | 23 +++++++++++++++++++---- + arch/x86/crypto/twofish_avx_glue.c | 27 +++++++++++++++++++++++++-- + arch/x86/include/asm/fpu/api.h | 1 + + arch/x86/kernel/fpu/core.c | 12 ++++++++++++ + 10 files changed, 158 insertions(+), 19 deletions(-) + +--- a/arch/x86/crypto/camellia_aesni_avx2_glue.c ++++ b/arch/x86/crypto/camellia_aesni_avx2_glue.c +@@ -206,6 +206,20 @@ struct crypt_priv { + bool fpu_enabled; + }; + ++#ifdef CONFIG_PREEMPT_RT_FULL ++static void camellia_fpu_end_rt(struct crypt_priv *ctx) ++{ ++ bool fpu_enabled = ctx->fpu_enabled; ++ ++ if (!fpu_enabled) ++ return; ++ camellia_fpu_end(fpu_enabled); ++ ctx->fpu_enabled = false; ++} ++#else ++static void camellia_fpu_end_rt(struct crypt_priv *ctx) { } ++#endif ++ + static void encrypt_callback(void *priv, u8 *srcdst, unsigned int nbytes) + { + const unsigned int bsize = CAMELLIA_BLOCK_SIZE; +@@ -221,16 +235,19 @@ static void encrypt_callback(void *priv, + } + + if (nbytes >= CAMELLIA_AESNI_PARALLEL_BLOCKS * bsize) { ++ kernel_fpu_resched(); + camellia_ecb_enc_16way(ctx->ctx, srcdst, srcdst); + srcdst += bsize * CAMELLIA_AESNI_PARALLEL_BLOCKS; + nbytes -= bsize * CAMELLIA_AESNI_PARALLEL_BLOCKS; + } + + while (nbytes >= CAMELLIA_PARALLEL_BLOCKS * bsize) { ++ kernel_fpu_resched(); + camellia_enc_blk_2way(ctx->ctx, srcdst, srcdst); + srcdst += bsize * CAMELLIA_PARALLEL_BLOCKS; + nbytes -= bsize * CAMELLIA_PARALLEL_BLOCKS; + } ++ camellia_fpu_end_rt(ctx); + + for (i = 0; i < nbytes / bsize; i++, srcdst += bsize) + camellia_enc_blk(ctx->ctx, srcdst, srcdst); +@@ -251,16 +268,19 @@ static void decrypt_callback(void *priv, + } + + if (nbytes >= CAMELLIA_AESNI_PARALLEL_BLOCKS * bsize) { ++ kernel_fpu_resched(); + camellia_ecb_dec_16way(ctx->ctx, srcdst, srcdst); + srcdst += bsize * CAMELLIA_AESNI_PARALLEL_BLOCKS; + nbytes -= bsize * CAMELLIA_AESNI_PARALLEL_BLOCKS; + } + + while (nbytes >= CAMELLIA_PARALLEL_BLOCKS * bsize) { ++ kernel_fpu_resched(); + camellia_dec_blk_2way(ctx->ctx, srcdst, srcdst); + srcdst += bsize * CAMELLIA_PARALLEL_BLOCKS; + nbytes -= bsize * CAMELLIA_PARALLEL_BLOCKS; + } ++ camellia_fpu_end_rt(ctx); + + for (i = 0; i < nbytes / bsize; i++, srcdst += bsize) + camellia_dec_blk(ctx->ctx, srcdst, srcdst); +--- a/arch/x86/crypto/camellia_aesni_avx_glue.c ++++ b/arch/x86/crypto/camellia_aesni_avx_glue.c +@@ -210,6 +210,21 @@ struct crypt_priv { + bool fpu_enabled; + }; + ++#ifdef CONFIG_PREEMPT_RT_FULL ++static void camellia_fpu_end_rt(struct crypt_priv *ctx) ++{ ++ bool fpu_enabled = ctx->fpu_enabled; ++ ++ if (!fpu_enabled) ++ return; ++ camellia_fpu_end(fpu_enabled); ++ ctx->fpu_enabled = false; ++} ++ ++#else ++static void camellia_fpu_end_rt(struct crypt_priv *ctx) { } ++#endif ++ + static void encrypt_callback(void *priv, u8 *srcdst, unsigned int nbytes) + { + const unsigned int bsize = CAMELLIA_BLOCK_SIZE; +@@ -225,10 +240,12 @@ static void encrypt_callback(void *priv, + } + + while (nbytes >= CAMELLIA_PARALLEL_BLOCKS * bsize) { ++ kernel_fpu_resched(); + camellia_enc_blk_2way(ctx->ctx, srcdst, srcdst); + srcdst += bsize * CAMELLIA_PARALLEL_BLOCKS; + nbytes -= bsize * CAMELLIA_PARALLEL_BLOCKS; + } ++ camellia_fpu_end_rt(ctx); + + for (i = 0; i < nbytes / bsize; i++, srcdst += bsize) + camellia_enc_blk(ctx->ctx, srcdst, srcdst); +@@ -249,10 +266,12 @@ static void decrypt_callback(void *priv, + } + + while (nbytes >= CAMELLIA_PARALLEL_BLOCKS * bsize) { ++ kernel_fpu_resched(); + camellia_dec_blk_2way(ctx->ctx, srcdst, srcdst); + srcdst += bsize * CAMELLIA_PARALLEL_BLOCKS; + nbytes -= bsize * CAMELLIA_PARALLEL_BLOCKS; + } ++ camellia_fpu_end_rt(ctx); + + for (i = 0; i < nbytes / bsize; i++, srcdst += bsize) + camellia_dec_blk(ctx->ctx, srcdst, srcdst); +--- a/arch/x86/crypto/cast6_avx_glue.c ++++ b/arch/x86/crypto/cast6_avx_glue.c +@@ -205,19 +205,33 @@ struct crypt_priv { + bool fpu_enabled; + }; + ++#ifdef CONFIG_PREEMPT_RT_FULL ++static void cast6_fpu_end_rt(struct crypt_priv *ctx) ++{ ++ bool fpu_enabled = ctx->fpu_enabled; ++ ++ if (!fpu_enabled) ++ return; ++ cast6_fpu_end(fpu_enabled); ++ ctx->fpu_enabled = false; ++} ++ ++#else ++static void cast6_fpu_end_rt(struct crypt_priv *ctx) { } ++#endif ++ + static void encrypt_callback(void *priv, u8 *srcdst, unsigned int nbytes) + { + const unsigned int bsize = CAST6_BLOCK_SIZE; + struct crypt_priv *ctx = priv; + int i; + +- ctx->fpu_enabled = cast6_fpu_begin(ctx->fpu_enabled, nbytes); +- + if (nbytes == bsize * CAST6_PARALLEL_BLOCKS) { ++ ctx->fpu_enabled = cast6_fpu_begin(ctx->fpu_enabled, nbytes); + cast6_ecb_enc_8way(ctx->ctx, srcdst, srcdst); ++ cast6_fpu_end_rt(ctx); + return; + } +- + for (i = 0; i < nbytes / bsize; i++, srcdst += bsize) + __cast6_encrypt(ctx->ctx, srcdst, srcdst); + } +@@ -228,10 +242,10 @@ static void decrypt_callback(void *priv, + struct crypt_priv *ctx = priv; + int i; + +- ctx->fpu_enabled = cast6_fpu_begin(ctx->fpu_enabled, nbytes); +- + if (nbytes == bsize * CAST6_PARALLEL_BLOCKS) { ++ ctx->fpu_enabled = cast6_fpu_begin(ctx->fpu_enabled, nbytes); + cast6_ecb_dec_8way(ctx->ctx, srcdst, srcdst); ++ cast6_fpu_end_rt(ctx); + return; + } + +--- a/arch/x86/crypto/chacha20_glue.c ++++ b/arch/x86/crypto/chacha20_glue.c +@@ -81,23 +81,24 @@ static int chacha20_simd(struct skcipher + + crypto_chacha20_init(state, ctx, walk.iv); + +- kernel_fpu_begin(); +- + while (walk.nbytes >= CHACHA20_BLOCK_SIZE) { ++ kernel_fpu_begin(); ++ + chacha20_dosimd(state, walk.dst.virt.addr, walk.src.virt.addr, + rounddown(walk.nbytes, CHACHA20_BLOCK_SIZE)); ++ kernel_fpu_end(); + err = skcipher_walk_done(&walk, + walk.nbytes % CHACHA20_BLOCK_SIZE); + } + + if (walk.nbytes) { ++ kernel_fpu_begin(); + chacha20_dosimd(state, walk.dst.virt.addr, walk.src.virt.addr, + walk.nbytes); ++ kernel_fpu_end(); + err = skcipher_walk_done(&walk, 0); + } + +- kernel_fpu_end(); +- + return err; + } + +--- a/arch/x86/crypto/serpent_avx2_glue.c ++++ b/arch/x86/crypto/serpent_avx2_glue.c +@@ -184,6 +184,21 @@ struct crypt_priv { + bool fpu_enabled; + }; + ++#ifdef CONFIG_PREEMPT_RT_FULL ++static void serpent_fpu_end_rt(struct crypt_priv *ctx) ++{ ++ bool fpu_enabled = ctx->fpu_enabled; ++ ++ if (!fpu_enabled) ++ return; ++ serpent_fpu_end(fpu_enabled); ++ ctx->fpu_enabled = false; ++} ++ ++#else ++static void serpent_fpu_end_rt(struct crypt_priv *ctx) { } ++#endif ++ + static void encrypt_callback(void *priv, u8 *srcdst, unsigned int nbytes) + { + const unsigned int bsize = SERPENT_BLOCK_SIZE; +@@ -199,10 +214,12 @@ static void encrypt_callback(void *priv, + } + + while (nbytes >= SERPENT_PARALLEL_BLOCKS * bsize) { ++ kernel_fpu_resched(); + serpent_ecb_enc_8way_avx(ctx->ctx, srcdst, srcdst); + srcdst += bsize * SERPENT_PARALLEL_BLOCKS; + nbytes -= bsize * SERPENT_PARALLEL_BLOCKS; + } ++ serpent_fpu_end_rt(ctx); + + for (i = 0; i < nbytes / bsize; i++, srcdst += bsize) + __serpent_encrypt(ctx->ctx, srcdst, srcdst); +@@ -223,10 +240,12 @@ static void decrypt_callback(void *priv, + } + + while (nbytes >= SERPENT_PARALLEL_BLOCKS * bsize) { ++ kernel_fpu_resched(); + serpent_ecb_dec_8way_avx(ctx->ctx, srcdst, srcdst); + srcdst += bsize * SERPENT_PARALLEL_BLOCKS; + nbytes -= bsize * SERPENT_PARALLEL_BLOCKS; + } ++ serpent_fpu_end_rt(ctx); + + for (i = 0; i < nbytes / bsize; i++, srcdst += bsize) + __serpent_decrypt(ctx->ctx, srcdst, srcdst); +--- a/arch/x86/crypto/serpent_avx_glue.c ++++ b/arch/x86/crypto/serpent_avx_glue.c +@@ -218,16 +218,31 @@ struct crypt_priv { + bool fpu_enabled; + }; + ++#ifdef CONFIG_PREEMPT_RT_FULL ++static void serpent_fpu_end_rt(struct crypt_priv *ctx) ++{ ++ bool fpu_enabled = ctx->fpu_enabled; ++ ++ if (!fpu_enabled) ++ return; ++ serpent_fpu_end(fpu_enabled); ++ ctx->fpu_enabled = false; ++} ++ ++#else ++static void serpent_fpu_end_rt(struct crypt_priv *ctx) { } ++#endif ++ + static void encrypt_callback(void *priv, u8 *srcdst, unsigned int nbytes) + { + const unsigned int bsize = SERPENT_BLOCK_SIZE; + struct crypt_priv *ctx = priv; + int i; + +- ctx->fpu_enabled = serpent_fpu_begin(ctx->fpu_enabled, nbytes); +- + if (nbytes == bsize * SERPENT_PARALLEL_BLOCKS) { ++ ctx->fpu_enabled = serpent_fpu_begin(ctx->fpu_enabled, nbytes); + serpent_ecb_enc_8way_avx(ctx->ctx, srcdst, srcdst); ++ serpent_fpu_end_rt(ctx); + return; + } + +@@ -241,10 +256,10 @@ static void decrypt_callback(void *priv, + struct crypt_priv *ctx = priv; + int i; + +- ctx->fpu_enabled = serpent_fpu_begin(ctx->fpu_enabled, nbytes); +- + if (nbytes == bsize * SERPENT_PARALLEL_BLOCKS) { ++ ctx->fpu_enabled = serpent_fpu_begin(ctx->fpu_enabled, nbytes); + serpent_ecb_dec_8way_avx(ctx->ctx, srcdst, srcdst); ++ serpent_fpu_end_rt(ctx); + return; + } + +--- a/arch/x86/crypto/serpent_sse2_glue.c ++++ b/arch/x86/crypto/serpent_sse2_glue.c +@@ -187,16 +187,31 @@ struct crypt_priv { + bool fpu_enabled; + }; + ++#ifdef CONFIG_PREEMPT_RT_FULL ++static void serpent_fpu_end_rt(struct crypt_priv *ctx) ++{ ++ bool fpu_enabled = ctx->fpu_enabled; ++ ++ if (!fpu_enabled) ++ return; ++ serpent_fpu_end(fpu_enabled); ++ ctx->fpu_enabled = false; ++} ++ ++#else ++static void serpent_fpu_end_rt(struct crypt_priv *ctx) { } ++#endif ++ + static void encrypt_callback(void *priv, u8 *srcdst, unsigned int nbytes) + { + const unsigned int bsize = SERPENT_BLOCK_SIZE; + struct crypt_priv *ctx = priv; + int i; + +- ctx->fpu_enabled = serpent_fpu_begin(ctx->fpu_enabled, nbytes); +- + if (nbytes == bsize * SERPENT_PARALLEL_BLOCKS) { ++ ctx->fpu_enabled = serpent_fpu_begin(ctx->fpu_enabled, nbytes); + serpent_enc_blk_xway(ctx->ctx, srcdst, srcdst); ++ serpent_fpu_end_rt(ctx); + return; + } + +@@ -210,10 +225,10 @@ static void decrypt_callback(void *priv, + struct crypt_priv *ctx = priv; + int i; + +- ctx->fpu_enabled = serpent_fpu_begin(ctx->fpu_enabled, nbytes); +- + if (nbytes == bsize * SERPENT_PARALLEL_BLOCKS) { ++ ctx->fpu_enabled = serpent_fpu_begin(ctx->fpu_enabled, nbytes); + serpent_dec_blk_xway(ctx->ctx, srcdst, srcdst); ++ serpent_fpu_end_rt(ctx); + return; + } + +--- a/arch/x86/crypto/twofish_avx_glue.c ++++ b/arch/x86/crypto/twofish_avx_glue.c +@@ -218,6 +218,21 @@ struct crypt_priv { + bool fpu_enabled; + }; + ++#ifdef CONFIG_PREEMPT_RT_FULL ++static void twofish_fpu_end_rt(struct crypt_priv *ctx) ++{ ++ bool fpu_enabled = ctx->fpu_enabled; ++ ++ if (!fpu_enabled) ++ return; ++ twofish_fpu_end(fpu_enabled); ++ ctx->fpu_enabled = false; ++} ++ ++#else ++static void twofish_fpu_end_rt(struct crypt_priv *ctx) { } ++#endif ++ + static void encrypt_callback(void *priv, u8 *srcdst, unsigned int nbytes) + { + const unsigned int bsize = TF_BLOCK_SIZE; +@@ -228,12 +243,16 @@ static void encrypt_callback(void *priv, + + if (nbytes == bsize * TWOFISH_PARALLEL_BLOCKS) { + twofish_ecb_enc_8way(ctx->ctx, srcdst, srcdst); ++ twofish_fpu_end_rt(ctx); + return; + } + +- for (i = 0; i < nbytes / (bsize * 3); i++, srcdst += bsize * 3) ++ for (i = 0; i < nbytes / (bsize * 3); i++, srcdst += bsize * 3) { ++ kernel_fpu_resched(); + twofish_enc_blk_3way(ctx->ctx, srcdst, srcdst); ++ } + ++ twofish_fpu_end_rt(ctx); + nbytes %= bsize * 3; + + for (i = 0; i < nbytes / bsize; i++, srcdst += bsize) +@@ -250,11 +269,15 @@ static void decrypt_callback(void *priv, + + if (nbytes == bsize * TWOFISH_PARALLEL_BLOCKS) { + twofish_ecb_dec_8way(ctx->ctx, srcdst, srcdst); ++ twofish_fpu_end_rt(ctx); + return; + } + +- for (i = 0; i < nbytes / (bsize * 3); i++, srcdst += bsize * 3) ++ for (i = 0; i < nbytes / (bsize * 3); i++, srcdst += bsize * 3) { ++ kernel_fpu_resched(); + twofish_dec_blk_3way(ctx->ctx, srcdst, srcdst); ++ } ++ twofish_fpu_end_rt(ctx); + + nbytes %= bsize * 3; + +--- a/arch/x86/include/asm/fpu/api.h ++++ b/arch/x86/include/asm/fpu/api.h +@@ -25,6 +25,7 @@ extern void __kernel_fpu_begin(void); + extern void __kernel_fpu_end(void); + extern void kernel_fpu_begin(void); + extern void kernel_fpu_end(void); ++extern void kernel_fpu_resched(void); + extern bool irq_fpu_usable(void); + + /* +--- a/arch/x86/kernel/fpu/core.c ++++ b/arch/x86/kernel/fpu/core.c +@@ -137,6 +137,18 @@ void kernel_fpu_end(void) + } + EXPORT_SYMBOL_GPL(kernel_fpu_end); + ++void kernel_fpu_resched(void) ++{ ++ WARN_ON_FPU(!this_cpu_read(in_kernel_fpu)); ++ ++ if (should_resched(PREEMPT_OFFSET)) { ++ kernel_fpu_end(); ++ cond_resched(); ++ kernel_fpu_begin(); ++ } ++} ++EXPORT_SYMBOL_GPL(kernel_fpu_resched); ++ + /* + * Save the FPU state (mark it for reload if necessary): + * diff --git a/patches/features/all/rt/debugobjects-rt.patch b/patches/features/all/rt/debugobjects-rt.patch new file mode 100644 index 00000000000..34cde27553b --- /dev/null +++ b/patches/features/all/rt/debugobjects-rt.patch @@ -0,0 +1,26 @@ +Subject: debugobjects: Make RT aware +From: Thomas Gleixner +Date: Sun, 17 Jul 2011 21:41:35 +0200 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Avoid filling the pool / allocating memory with irqs off(). + +Signed-off-by: Thomas Gleixner +--- + lib/debugobjects.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +--- a/lib/debugobjects.c ++++ b/lib/debugobjects.c +@@ -336,7 +336,10 @@ static void + struct debug_obj *obj; + unsigned long flags; + +- fill_pool(); ++#ifdef CONFIG_PREEMPT_RT_FULL ++ if (preempt_count() == 0 && !irqs_disabled()) ++#endif ++ fill_pool(); + + db = get_bucket((unsigned long) addr); + diff --git a/patches/features/all/rt/delayacct-use-raw_spinlocks.patch b/patches/features/all/rt/delayacct-use-raw_spinlocks.patch new file mode 100644 index 00000000000..ddc3b95264c --- /dev/null +++ b/patches/features/all/rt/delayacct-use-raw_spinlocks.patch @@ -0,0 +1,87 @@ +From: Sebastian Andrzej Siewior +Date: Sat, 20 May 2017 12:32:23 +0200 +Subject: [PATCH] delayacct: use raw_spinlocks +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +try_to_wake_up() might invoke delayacct_blkio_end() while holding the +pi_lock. The lock is only held for a short amount of time so it should +be safe to make it raw. + +Signed-off-by: Sebastian Andrzej Siewior +--- + include/linux/delayacct.h | 2 +- + kernel/delayacct.c | 16 ++++++++-------- + 2 files changed, 9 insertions(+), 9 deletions(-) + +--- a/include/linux/delayacct.h ++++ b/include/linux/delayacct.h +@@ -29,7 +29,7 @@ + + #ifdef CONFIG_TASK_DELAY_ACCT + struct task_delay_info { +- spinlock_t lock; ++ raw_spinlock_t lock; + unsigned int flags; /* Private per-task flags */ + + /* For each stat XXX, add following, aligned appropriately +--- a/kernel/delayacct.c ++++ b/kernel/delayacct.c +@@ -44,23 +44,23 @@ void __delayacct_tsk_init(struct task_st + { + tsk->delays = kmem_cache_zalloc(delayacct_cache, GFP_KERNEL); + if (tsk->delays) +- spin_lock_init(&tsk->delays->lock); ++ raw_spin_lock_init(&tsk->delays->lock); + } + + /* + * Finish delay accounting for a statistic using its timestamps (@start), + * accumalator (@total) and @count + */ +-static void delayacct_end(spinlock_t *lock, u64 *start, u64 *total, u32 *count) ++static void delayacct_end(raw_spinlock_t *lock, u64 *start, u64 *total, u32 *count) + { + s64 ns = ktime_get_ns() - *start; + unsigned long flags; + + if (ns > 0) { +- spin_lock_irqsave(lock, flags); ++ raw_spin_lock_irqsave(lock, flags); + *total += ns; + (*count)++; +- spin_unlock_irqrestore(lock, flags); ++ raw_spin_unlock_irqrestore(lock, flags); + } + } + +@@ -127,7 +127,7 @@ int __delayacct_add_tsk(struct taskstats + + /* zero XXX_total, non-zero XXX_count implies XXX stat overflowed */ + +- spin_lock_irqsave(&tsk->delays->lock, flags); ++ raw_spin_lock_irqsave(&tsk->delays->lock, flags); + tmp = d->blkio_delay_total + tsk->delays->blkio_delay; + d->blkio_delay_total = (tmp < d->blkio_delay_total) ? 0 : tmp; + tmp = d->swapin_delay_total + tsk->delays->swapin_delay; +@@ -137,7 +137,7 @@ int __delayacct_add_tsk(struct taskstats + d->blkio_count += tsk->delays->blkio_count; + d->swapin_count += tsk->delays->swapin_count; + d->freepages_count += tsk->delays->freepages_count; +- spin_unlock_irqrestore(&tsk->delays->lock, flags); ++ raw_spin_unlock_irqrestore(&tsk->delays->lock, flags); + + return 0; + } +@@ -147,10 +147,10 @@ int __delayacct_add_tsk(struct taskstats + __u64 ret; + unsigned long flags; + +- spin_lock_irqsave(&tsk->delays->lock, flags); ++ raw_spin_lock_irqsave(&tsk->delays->lock, flags); + ret = nsec_to_clock_t(tsk->delays->blkio_delay + + tsk->delays->swapin_delay); +- spin_unlock_irqrestore(&tsk->delays->lock, flags); ++ raw_spin_unlock_irqrestore(&tsk->delays->lock, flags); + return ret; + } + diff --git a/patches/features/all/rt/dm-make-rt-aware.patch b/patches/features/all/rt/dm-make-rt-aware.patch new file mode 100644 index 00000000000..4b0c2297a52 --- /dev/null +++ b/patches/features/all/rt/dm-make-rt-aware.patch @@ -0,0 +1,27 @@ +Subject: dm: Make rt aware +From: Thomas Gleixner +Date: Mon, 14 Nov 2011 23:06:09 +0100 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Use the BUG_ON_NORT variant for the irq_disabled() checks. RT has +interrupts legitimately enabled here as we cant deadlock against the +irq thread due to the "sleeping spinlocks" conversion. + +Reported-by: Luis Claudio R. Goncalves + +Signed-off-by: Thomas Gleixner +--- + drivers/md/dm-rq.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/md/dm-rq.c ++++ b/drivers/md/dm-rq.c +@@ -671,7 +671,7 @@ static void dm_old_request_fn(struct req + /* Establish tio->ti before queuing work (map_tio_request) */ + tio->ti = ti; + kthread_queue_work(&md->kworker, &tio->work); +- BUG_ON(!irqs_disabled()); ++ BUG_ON_NONRT(!irqs_disabled()); + } + } + diff --git a/patches/features/all/rt/drivers-block-zram-Replace-bit-spinlocks-with-rtmute.patch b/patches/features/all/rt/drivers-block-zram-Replace-bit-spinlocks-with-rtmute.patch new file mode 100644 index 00000000000..04b59d47aba --- /dev/null +++ b/patches/features/all/rt/drivers-block-zram-Replace-bit-spinlocks-with-rtmute.patch @@ -0,0 +1,77 @@ +From: Mike Galbraith +Date: Thu, 31 Mar 2016 04:08:28 +0200 +Subject: [PATCH] drivers/block/zram: Replace bit spinlocks with rtmutex + for -rt +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +They're nondeterministic, and lead to ___might_sleep() splats in -rt. +OTOH, they're a lot less wasteful than an rtmutex per page. + +Signed-off-by: Mike Galbraith +Signed-off-by: Sebastian Andrzej Siewior +--- + drivers/block/zram/zram_drv.c | 26 ++++++++++++++++++++++++++ + drivers/block/zram/zram_drv.h | 3 +++ + 2 files changed, 29 insertions(+) + +--- a/drivers/block/zram/zram_drv.c ++++ b/drivers/block/zram/zram_drv.c +@@ -756,6 +756,30 @@ static DEVICE_ATTR_RO(io_stat); + static DEVICE_ATTR_RO(mm_stat); + static DEVICE_ATTR_RO(debug_stat); + ++#ifdef CONFIG_PREEMPT_RT_BASE ++static void zram_meta_init_table_locks(struct zram *zram, size_t num_pages) ++{ ++ size_t index; ++ ++ for (index = 0; index < num_pages; index++) ++ spin_lock_init(&zram->table[index].lock); ++} ++ ++static void zram_slot_lock(struct zram *zram, u32 index) ++{ ++ spin_lock(&zram->table[index].lock); ++ __set_bit(ZRAM_ACCESS, &zram->table[index].value); ++} ++ ++static void zram_slot_unlock(struct zram *zram, u32 index) ++{ ++ __clear_bit(ZRAM_ACCESS, &zram->table[index].value); ++ spin_unlock(&zram->table[index].lock); ++} ++ ++#else ++static void zram_meta_init_table_locks(struct zram *zram, size_t num_pages) { } ++ + static void zram_slot_lock(struct zram *zram, u32 index) + { + bit_spin_lock(ZRAM_ACCESS, &zram->table[index].value); +@@ -765,6 +789,7 @@ static void zram_slot_unlock(struct zram + { + bit_spin_unlock(ZRAM_ACCESS, &zram->table[index].value); + } ++#endif + + static void zram_meta_free(struct zram *zram, u64 disksize) + { +@@ -794,6 +819,7 @@ static bool zram_meta_alloc(struct zram + return false; + } + ++ zram_meta_init_table_locks(zram, num_pages); + return true; + } + +--- a/drivers/block/zram/zram_drv.h ++++ b/drivers/block/zram/zram_drv.h +@@ -77,6 +77,9 @@ struct zram_table_entry { + unsigned long element; + }; + unsigned long value; ++#ifdef CONFIG_PREEMPT_RT_BASE ++ spinlock_t lock; ++#endif + }; + + struct zram_stats { diff --git a/patches/features/all/rt/drivers-net-8139-disable-irq-nosync.patch b/patches/features/all/rt/drivers-net-8139-disable-irq-nosync.patch new file mode 100644 index 00000000000..8b2dcbb6766 --- /dev/null +++ b/patches/features/all/rt/drivers-net-8139-disable-irq-nosync.patch @@ -0,0 +1,26 @@ +From: Ingo Molnar +Date: Fri, 3 Jul 2009 08:29:24 -0500 +Subject: drivers/net: Use disable_irq_nosync() in 8139too +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Use disable_irq_nosync() instead of disable_irq() as this might be +called in atomic context with netpoll. + +Signed-off-by: Ingo Molnar +Signed-off-by: Thomas Gleixner + +--- + drivers/net/ethernet/realtek/8139too.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/net/ethernet/realtek/8139too.c ++++ b/drivers/net/ethernet/realtek/8139too.c +@@ -2224,7 +2224,7 @@ static void rtl8139_poll_controller(stru + struct rtl8139_private *tp = netdev_priv(dev); + const int irq = tp->pci_dev->irq; + +- disable_irq(irq); ++ disable_irq_nosync(irq); + rtl8139_interrupt(irq, dev); + enable_irq(irq); + } diff --git a/patches/features/all/rt/drivers-net-vortex-fix-locking-issues.patch b/patches/features/all/rt/drivers-net-vortex-fix-locking-issues.patch new file mode 100644 index 00000000000..5d4f0701275 --- /dev/null +++ b/patches/features/all/rt/drivers-net-vortex-fix-locking-issues.patch @@ -0,0 +1,49 @@ +From: Steven Rostedt +Date: Fri, 3 Jul 2009 08:30:00 -0500 +Subject: drivers/net: vortex fix locking issues +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Argh, cut and paste wasn't enough... + +Use this patch instead. It needs an irq disable. But, believe it or not, +on SMP this is actually better. If the irq is shared (as it is in Mark's +case), we don't stop the irq of other devices from being handled on +another CPU (unfortunately for Mark, he pinned all interrupts to one CPU). + +Signed-off-by: Steven Rostedt +Signed-off-by: Thomas Gleixner + + drivers/net/ethernet/3com/3c59x.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +Signed-off-by: Ingo Molnar + +--- a/drivers/net/ethernet/3com/3c59x.c ++++ b/drivers/net/ethernet/3com/3c59x.c +@@ -842,9 +842,9 @@ static void poll_vortex(struct net_devic + { + struct vortex_private *vp = netdev_priv(dev); + unsigned long flags; +- local_irq_save(flags); ++ local_irq_save_nort(flags); + (vp->full_bus_master_rx ? boomerang_interrupt:vortex_interrupt)(dev->irq,dev); +- local_irq_restore(flags); ++ local_irq_restore_nort(flags); + } + #endif + +@@ -1908,12 +1908,12 @@ static void vortex_tx_timeout(struct net + * Block interrupts because vortex_interrupt does a bare spin_lock() + */ + unsigned long flags; +- local_irq_save(flags); ++ local_irq_save_nort(flags); + if (vp->full_bus_master_tx) + boomerang_interrupt(dev->irq, dev); + else + vortex_interrupt(dev->irq, dev); +- local_irq_restore(flags); ++ local_irq_restore_nort(flags); + } + } + diff --git a/patches/features/all/rt/drivers-random-reduce-preempt-disabled-region.patch b/patches/features/all/rt/drivers-random-reduce-preempt-disabled-region.patch new file mode 100644 index 00000000000..2d671366f5b --- /dev/null +++ b/patches/features/all/rt/drivers-random-reduce-preempt-disabled-region.patch @@ -0,0 +1,33 @@ +From: Ingo Molnar +Date: Fri, 3 Jul 2009 08:29:30 -0500 +Subject: drivers: random: Reduce preempt disabled region +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +No need to keep preemption disabled across the whole function. + +Signed-off-by: Ingo Molnar +Signed-off-by: Thomas Gleixner + +--- + drivers/char/random.c | 3 --- + 1 file changed, 3 deletions(-) + +--- a/drivers/char/random.c ++++ b/drivers/char/random.c +@@ -1017,8 +1017,6 @@ static void add_timer_randomness(struct + } sample; + long delta, delta2, delta3; + +- preempt_disable(); +- + sample.jiffies = jiffies; + sample.cycles = random_get_entropy(); + sample.num = num; +@@ -1059,7 +1057,6 @@ static void add_timer_randomness(struct + */ + credit_entropy_bits(r, min_t(int, fls(delta>>1), 11)); + } +- preempt_enable(); + } + + void add_input_randomness(unsigned int type, unsigned int code, diff --git a/patches/features/all/rt/drivers-tty-fix-omap-lock-crap.patch b/patches/features/all/rt/drivers-tty-fix-omap-lock-crap.patch new file mode 100644 index 00000000000..680c27ad03c --- /dev/null +++ b/patches/features/all/rt/drivers-tty-fix-omap-lock-crap.patch @@ -0,0 +1,43 @@ +Subject: tty/serial/omap: Make the locking RT aware +From: Thomas Gleixner +Date: Thu, 28 Jul 2011 13:32:57 +0200 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +The lock is a sleeping lock and local_irq_save() is not the +optimsation we are looking for. Redo it to make it work on -RT and +non-RT. + +Signed-off-by: Thomas Gleixner +--- + drivers/tty/serial/omap-serial.c | 12 ++++-------- + 1 file changed, 4 insertions(+), 8 deletions(-) + +--- a/drivers/tty/serial/omap-serial.c ++++ b/drivers/tty/serial/omap-serial.c +@@ -1311,13 +1311,10 @@ serial_omap_console_write(struct console + + pm_runtime_get_sync(up->dev); + +- local_irq_save(flags); +- if (up->port.sysrq) +- locked = 0; +- else if (oops_in_progress) +- locked = spin_trylock(&up->port.lock); ++ if (up->port.sysrq || oops_in_progress) ++ locked = spin_trylock_irqsave(&up->port.lock, flags); + else +- spin_lock(&up->port.lock); ++ spin_lock_irqsave(&up->port.lock, flags); + + /* + * First save the IER then disable the interrupts +@@ -1346,8 +1343,7 @@ serial_omap_console_write(struct console + pm_runtime_mark_last_busy(up->dev); + pm_runtime_put_autosuspend(up->dev); + if (locked) +- spin_unlock(&up->port.lock); +- local_irq_restore(flags); ++ spin_unlock_irqrestore(&up->port.lock, flags); + } + + static int __init diff --git a/patches/features/all/rt/drivers-tty-pl011-irq-disable-madness.patch b/patches/features/all/rt/drivers-tty-pl011-irq-disable-madness.patch new file mode 100644 index 00000000000..72d5fb52247 --- /dev/null +++ b/patches/features/all/rt/drivers-tty-pl011-irq-disable-madness.patch @@ -0,0 +1,48 @@ +Subject: tty/serial/pl011: Make the locking work on RT +From: Thomas Gleixner +Date: Tue, 08 Jan 2013 21:36:51 +0100 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +The lock is a sleeping lock and local_irq_save() is not the optimsation +we are looking for. Redo it to make it work on -RT and non-RT. + +Signed-off-by: Thomas Gleixner +--- + drivers/tty/serial/amba-pl011.c | 15 ++++++++++----- + 1 file changed, 10 insertions(+), 5 deletions(-) + +--- a/drivers/tty/serial/amba-pl011.c ++++ b/drivers/tty/serial/amba-pl011.c +@@ -2220,13 +2220,19 @@ pl011_console_write(struct console *co, + + clk_enable(uap->clk); + +- local_irq_save(flags); ++ /* ++ * local_irq_save(flags); ++ * ++ * This local_irq_save() is nonsense. If we come in via sysrq ++ * handling then interrupts are already disabled. Aside of ++ * that the port.sysrq check is racy on SMP regardless. ++ */ + if (uap->port.sysrq) + locked = 0; + else if (oops_in_progress) +- locked = spin_trylock(&uap->port.lock); ++ locked = spin_trylock_irqsave(&uap->port.lock, flags); + else +- spin_lock(&uap->port.lock); ++ spin_lock_irqsave(&uap->port.lock, flags); + + /* + * First save the CR then disable the interrupts +@@ -2252,8 +2258,7 @@ pl011_console_write(struct console *co, + pl011_write(old_cr, uap, REG_CR); + + if (locked) +- spin_unlock(&uap->port.lock); +- local_irq_restore(flags); ++ spin_unlock_irqrestore(&uap->port.lock, flags); + + clk_disable(uap->clk); + } diff --git a/patches/features/all/rt/drivers-zram-Don-t-disable-preemption-in-zcomp_strea.patch b/patches/features/all/rt/drivers-zram-Don-t-disable-preemption-in-zcomp_strea.patch new file mode 100644 index 00000000000..7e9b9fc5072 --- /dev/null +++ b/patches/features/all/rt/drivers-zram-Don-t-disable-preemption-in-zcomp_strea.patch @@ -0,0 +1,97 @@ +From: Mike Galbraith +Date: Thu, 20 Oct 2016 11:15:22 +0200 +Subject: [PATCH] drivers/zram: Don't disable preemption in + zcomp_stream_get/put() +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +In v4.7, the driver switched to percpu compression streams, disabling +preemption via get/put_cpu_ptr(). Use a per-zcomp_strm lock here. We +also have to fix an lock order issue in zram_decompress_page() such +that zs_map_object() nests inside of zcomp_stream_put() as it does in +zram_bvec_write(). + +Signed-off-by: Mike Galbraith +[bigeasy: get_locked_var() -> per zcomp_strm lock] +Signed-off-by: Sebastian Andrzej Siewior +--- + drivers/block/zram/zcomp.c | 12 ++++++++++-- + drivers/block/zram/zcomp.h | 1 + + drivers/block/zram/zram_drv.c | 5 +++-- + 3 files changed, 14 insertions(+), 4 deletions(-) + +--- a/drivers/block/zram/zcomp.c ++++ b/drivers/block/zram/zcomp.c +@@ -116,12 +116,19 @@ ssize_t zcomp_available_show(const char + + struct zcomp_strm *zcomp_stream_get(struct zcomp *comp) + { +- return *get_cpu_ptr(comp->stream); ++ struct zcomp_strm *zstrm; ++ ++ zstrm = *this_cpu_ptr(comp->stream); ++ spin_lock(&zstrm->zcomp_lock); ++ return zstrm; + } + + void zcomp_stream_put(struct zcomp *comp) + { +- put_cpu_ptr(comp->stream); ++ struct zcomp_strm *zstrm; ++ ++ zstrm = *this_cpu_ptr(comp->stream); ++ spin_unlock(&zstrm->zcomp_lock); + } + + int zcomp_compress(struct zcomp_strm *zstrm, +@@ -171,6 +178,7 @@ int zcomp_cpu_up_prepare(unsigned int cp + pr_err("Can't allocate a compression stream\n"); + return -ENOMEM; + } ++ spin_lock_init(&zstrm->zcomp_lock); + *per_cpu_ptr(comp->stream, cpu) = zstrm; + return 0; + } +--- a/drivers/block/zram/zcomp.h ++++ b/drivers/block/zram/zcomp.h +@@ -14,6 +14,7 @@ struct zcomp_strm { + /* compression/decompression buffer */ + void *buffer; + struct crypto_comp *tfm; ++ spinlock_t zcomp_lock; + }; + + /* dynamic per-device compression frontend */ +--- a/drivers/block/zram/zram_drv.c ++++ b/drivers/block/zram/zram_drv.c +@@ -871,6 +871,7 @@ static int __zram_bvec_read(struct zram + unsigned long handle; + unsigned int size; + void *src, *dst; ++ struct zcomp_strm *zstrm; + + if (zram_wb_enabled(zram)) { + zram_slot_lock(zram, index); +@@ -905,6 +906,7 @@ static int __zram_bvec_read(struct zram + + size = zram_get_obj_size(zram, index); + ++ zstrm = zcomp_stream_get(zram->comp); + src = zs_map_object(zram->mem_pool, handle, ZS_MM_RO); + if (size == PAGE_SIZE) { + dst = kmap_atomic(page); +@@ -912,14 +914,13 @@ static int __zram_bvec_read(struct zram + kunmap_atomic(dst); + ret = 0; + } else { +- struct zcomp_strm *zstrm = zcomp_stream_get(zram->comp); + + dst = kmap_atomic(page); + ret = zcomp_decompress(zstrm, src, size, dst); + kunmap_atomic(dst); +- zcomp_stream_put(zram->comp); + } + zs_unmap_object(zram->mem_pool, handle); ++ zcomp_stream_put(zram->comp); + zram_slot_unlock(zram, index); + + /* Should NEVER happen. Return bio error if it does. */ diff --git a/patches/features/all/rt/drivers-zram-fix-zcomp_stream_get-smp_processor_id-u.patch b/patches/features/all/rt/drivers-zram-fix-zcomp_stream_get-smp_processor_id-u.patch new file mode 100644 index 00000000000..0ce81e465fb --- /dev/null +++ b/patches/features/all/rt/drivers-zram-fix-zcomp_stream_get-smp_processor_id-u.patch @@ -0,0 +1,38 @@ +From: Mike Galbraith +Date: Wed, 23 Aug 2017 11:57:29 +0200 +Subject: [PATCH] drivers/zram: fix zcomp_stream_get() smp_processor_id() use + in preemptible code +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Use get_local_ptr() instead this_cpu_ptr() to avoid a warning regarding +smp_processor_id() in preemptible code. +raw_cpu_ptr() would be fine, too because the per-CPU data structure is +protected with a spin lock so it does not matter much if we take the +other one. + +Cc: stable-rt@vger.kernel.org +Signed-off-by: Mike Galbraith +Signed-off-by: Sebastian Andrzej Siewior +--- + drivers/block/zram/zcomp.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/drivers/block/zram/zcomp.c ++++ b/drivers/block/zram/zcomp.c +@@ -118,7 +118,7 @@ struct zcomp_strm *zcomp_stream_get(stru + { + struct zcomp_strm *zstrm; + +- zstrm = *this_cpu_ptr(comp->stream); ++ zstrm = *get_local_ptr(comp->stream); + spin_lock(&zstrm->zcomp_lock); + return zstrm; + } +@@ -129,6 +129,7 @@ void zcomp_stream_put(struct zcomp *comp + + zstrm = *this_cpu_ptr(comp->stream); + spin_unlock(&zstrm->zcomp_lock); ++ put_local_ptr(zstrm); + } + + int zcomp_compress(struct zcomp_strm *zstrm, diff --git a/patches/features/all/rt/drm-i915-properly-init-lockdep-class.patch b/patches/features/all/rt/drm-i915-properly-init-lockdep-class.patch new file mode 100644 index 00000000000..790ccb5eaca --- /dev/null +++ b/patches/features/all/rt/drm-i915-properly-init-lockdep-class.patch @@ -0,0 +1,32 @@ +From: Sebastian Andrzej Siewior +Date: Thu, 30 Nov 2017 16:06:13 +0100 +Subject: [PATCH] drm/i915: properly init lockdep class +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +The code has an ifdef and uses two functions to either init the bare +spinlock or init it and set a lock-class. It is possible to do the same +thing without an ifdef. +With this patch (in debug case) we first use the "default" lock class +which is later overwritten to the supplied one. Without lockdep the set +name/class function vanishes. + +Signed-off-by: Sebastian Andrzej Siewior +--- + drivers/gpu/drm/i915/i915_gem_timeline.c | 5 +---- + 1 file changed, 1 insertion(+), 4 deletions(-) + +--- a/drivers/gpu/drm/i915/i915_gem_timeline.c ++++ b/drivers/gpu/drm/i915/i915_gem_timeline.c +@@ -33,11 +33,8 @@ static void __intel_timeline_init(struct + { + tl->fence_context = context; + tl->common = parent; +-#ifdef CONFIG_DEBUG_SPINLOCK +- __raw_spin_lock_init(&tl->lock.rlock, lockname, lockclass); +-#else + spin_lock_init(&tl->lock); +-#endif ++ lockdep_set_class_and_name(&tl->lock, lockclass, lockname); + init_request_active(&tl->last_request, NULL); + INIT_LIST_HEAD(&tl->requests); + i915_syncmap_init(&tl->sync); diff --git a/patches/features/all/rt/drmi915_Use_local_lockunlock_irq()_in_intel_pipe_update_startend().patch b/patches/features/all/rt/drmi915_Use_local_lockunlock_irq()_in_intel_pipe_update_startend().patch new file mode 100644 index 00000000000..4f8297eaf35 --- /dev/null +++ b/patches/features/all/rt/drmi915_Use_local_lockunlock_irq()_in_intel_pipe_update_startend().patch @@ -0,0 +1,113 @@ +Subject: drm,i915: Use local_lock/unlock_irq() in intel_pipe_update_start/end() +From: Mike Galbraith +Date: Sat, 27 Feb 2016 09:01:42 +0100 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + + +[ 8.014039] BUG: sleeping function called from invalid context at kernel/locking/rtmutex.c:918 +[ 8.014041] in_atomic(): 0, irqs_disabled(): 1, pid: 78, name: kworker/u4:4 +[ 8.014045] CPU: 1 PID: 78 Comm: kworker/u4:4 Not tainted 4.1.7-rt7 #5 +[ 8.014055] Workqueue: events_unbound async_run_entry_fn +[ 8.014059] 0000000000000000 ffff880037153748 ffffffff815f32c9 0000000000000002 +[ 8.014063] ffff88013a50e380 ffff880037153768 ffffffff815ef075 ffff8800372c06c8 +[ 8.014066] ffff8800372c06c8 ffff880037153778 ffffffff8107c0b3 ffff880037153798 +[ 8.014067] Call Trace: +[ 8.014074] [] dump_stack+0x4a/0x61 +[ 8.014078] [] ___might_sleep.part.93+0xe9/0xee +[ 8.014082] [] ___might_sleep+0x53/0x80 +[ 8.014086] [] rt_spin_lock+0x24/0x50 +[ 8.014090] [] prepare_to_wait+0x2b/0xa0 +[ 8.014152] [] intel_pipe_update_start+0x17c/0x300 [i915] +[ 8.014156] [] ? prepare_to_wait_event+0x120/0x120 +[ 8.014201] [] intel_begin_crtc_commit+0x166/0x1e0 [i915] +[ 8.014215] [] drm_atomic_helper_commit_planes+0x5d/0x1a0 [drm_kms_helper] +[ 8.014260] [] intel_atomic_commit+0xab/0xf0 [i915] +[ 8.014288] [] drm_atomic_commit+0x37/0x60 [drm] +[ 8.014298] [] drm_atomic_helper_plane_set_property+0x8d/0xd0 [drm_kms_helper] +[ 8.014301] [] ? __ww_mutex_lock+0x39/0x40 +[ 8.014319] [] drm_mode_plane_set_obj_prop+0x2d/0x90 [drm] +[ 8.014328] [] restore_fbdev_mode+0x6b/0xf0 [drm_kms_helper] +[ 8.014337] [] drm_fb_helper_restore_fbdev_mode_unlocked+0x29/0x80 [drm_kms_helper] +[ 8.014346] [] drm_fb_helper_set_par+0x22/0x50 [drm_kms_helper] +[ 8.014390] [] intel_fbdev_set_par+0x1a/0x60 [i915] +[ 8.014394] [] fbcon_init+0x4f4/0x580 +[ 8.014398] [] visual_init+0xbc/0x120 +[ 8.014401] [] do_bind_con_driver+0x163/0x330 +[ 8.014405] [] do_take_over_console+0x11c/0x1c0 +[ 8.014408] [] do_fbcon_takeover+0x63/0xd0 +[ 8.014410] [] fbcon_event_notify+0x785/0x8d0 +[ 8.014413] [] ? __might_sleep+0x4d/0x90 +[ 8.014416] [] notifier_call_chain+0x4e/0x80 +[ 8.014419] [] __blocking_notifier_call_chain+0x4d/0x70 +[ 8.014422] [] blocking_notifier_call_chain+0x16/0x20 +[ 8.014425] [] fb_notifier_call_chain+0x1b/0x20 +[ 8.014428] [] register_framebuffer+0x21a/0x350 +[ 8.014439] [] drm_fb_helper_initial_config+0x274/0x3e0 [drm_kms_helper] +[ 8.014483] [] intel_fbdev_initial_config+0x1b/0x20 [i915] +[ 8.014486] [] async_run_entry_fn+0x4c/0x160 +[ 8.014490] [] process_one_work+0x14a/0x470 +[ 8.014493] [] worker_thread+0x169/0x4c0 +[ 8.014496] [] ? process_one_work+0x470/0x470 +[ 8.014499] [] kthread+0xc6/0xe0 +[ 8.014502] [] ? queue_work_on+0x80/0x110 +[ 8.014506] [] ? kthread_worker_fn+0x1c0/0x1c0 + +Signed-off-by: Mike Galbraith +Cc: Sebastian Andrzej Siewior +Cc: linux-rt-users +Signed-off-by: Thomas Gleixner +--- + drivers/gpu/drm/i915/intel_sprite.c | 11 ++++++----- + 1 file changed, 6 insertions(+), 5 deletions(-) + +--- a/drivers/gpu/drm/i915/intel_sprite.c ++++ b/drivers/gpu/drm/i915/intel_sprite.c +@@ -36,6 +36,7 @@ + #include + #include + #include ++#include + #include "intel_drv.h" + #include "intel_frontbuffer.h" + #include +@@ -67,7 +68,7 @@ int intel_usecs_to_scanlines(const struc + } + + #define VBLANK_EVASION_TIME_US 100 +- ++static DEFINE_LOCAL_IRQ_LOCK(pipe_update_lock); + /** + * intel_pipe_update_start() - start update of a set of display registers + * @crtc: the crtc of which the registers are going to be updated +@@ -102,7 +103,7 @@ void intel_pipe_update_start(struct inte + VBLANK_EVASION_TIME_US); + max = vblank_start - 1; + +- local_irq_disable(); ++ local_lock_irq(pipe_update_lock); + + if (min <= 0 || max <= 0) + return; +@@ -132,11 +133,11 @@ void intel_pipe_update_start(struct inte + break; + } + +- local_irq_enable(); ++ local_unlock_irq(pipe_update_lock); + + timeout = schedule_timeout(timeout); + +- local_irq_disable(); ++ local_lock_irq(pipe_update_lock); + } + + finish_wait(wq, &wait); +@@ -201,7 +202,7 @@ void intel_pipe_update_end(struct intel_ + crtc->base.state->event = NULL; + } + +- local_irq_enable(); ++ local_unlock_irq(pipe_update_lock); + + if (intel_vgpu_active(dev_priv)) + return; diff --git a/patches/features/all/rt/drmradeoni915_Use_preempt_disableenable_rt()_where_recommended.patch b/patches/features/all/rt/drmradeoni915_Use_preempt_disableenable_rt()_where_recommended.patch new file mode 100644 index 00000000000..243f62d92c5 --- /dev/null +++ b/patches/features/all/rt/drmradeoni915_Use_preempt_disableenable_rt()_where_recommended.patch @@ -0,0 +1,52 @@ +Subject: drm,radeon,i915: Use preempt_disable/enable_rt() where recommended +From: Mike Galbraith +Date: Sat, 27 Feb 2016 08:09:11 +0100 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +DRM folks identified the spots, so use them. + +Signed-off-by: Mike Galbraith +Cc: Sebastian Andrzej Siewior +Cc: linux-rt-users +Signed-off-by: Thomas Gleixner +--- + drivers/gpu/drm/i915/i915_irq.c | 2 ++ + drivers/gpu/drm/radeon/radeon_display.c | 2 ++ + 2 files changed, 4 insertions(+) + +--- a/drivers/gpu/drm/i915/i915_irq.c ++++ b/drivers/gpu/drm/i915/i915_irq.c +@@ -867,6 +867,7 @@ static bool i915_get_crtc_scanoutpos(str + spin_lock_irqsave(&dev_priv->uncore.lock, irqflags); + + /* preempt_disable_rt() should go right here in PREEMPT_RT patchset. */ ++ preempt_disable_rt(); + + /* Get optional system timestamp before query. */ + if (stime) +@@ -918,6 +919,7 @@ static bool i915_get_crtc_scanoutpos(str + *etime = ktime_get(); + + /* preempt_enable_rt() should go right here in PREEMPT_RT patchset. */ ++ preempt_enable_rt(); + + spin_unlock_irqrestore(&dev_priv->uncore.lock, irqflags); + +--- a/drivers/gpu/drm/radeon/radeon_display.c ++++ b/drivers/gpu/drm/radeon/radeon_display.c +@@ -1839,6 +1839,7 @@ int radeon_get_crtc_scanoutpos(struct dr + struct radeon_device *rdev = dev->dev_private; + + /* preempt_disable_rt() should go right here in PREEMPT_RT patchset. */ ++ preempt_disable_rt(); + + /* Get optional system timestamp before query. */ + if (stime) +@@ -1931,6 +1932,7 @@ int radeon_get_crtc_scanoutpos(struct dr + *etime = ktime_get(); + + /* preempt_enable_rt() should go right here in PREEMPT_RT patchset. */ ++ preempt_enable_rt(); + + /* Decode into vertical and horizontal scanout position. */ + *vpos = position & 0x1fff; diff --git a/patches/features/all/rt/epoll-use-get-cpu-light.patch b/patches/features/all/rt/epoll-use-get-cpu-light.patch new file mode 100644 index 00000000000..d52a9ec81ea --- /dev/null +++ b/patches/features/all/rt/epoll-use-get-cpu-light.patch @@ -0,0 +1,31 @@ +Subject: fs/epoll: Do not disable preemption on RT +From: Thomas Gleixner +Date: Fri, 08 Jul 2011 16:35:35 +0200 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +ep_call_nested() takes a sleeping lock so we can't disable preemption. +The light version is enough since ep_call_nested() doesn't mind beeing +invoked twice on the same CPU. + +Signed-off-by: Thomas Gleixner +--- + fs/eventpoll.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/fs/eventpoll.c ++++ b/fs/eventpoll.c +@@ -587,12 +587,12 @@ static int ep_poll_wakeup_proc(void *pri + */ + static void ep_poll_safewake(wait_queue_head_t *wq) + { +- int this_cpu = get_cpu(); ++ int this_cpu = get_cpu_light(); + + ep_call_nested(&poll_safewake_ncalls, EP_MAX_NESTS, + ep_poll_wakeup_proc, NULL, wq, (void *) (long) this_cpu); + +- put_cpu(); ++ put_cpu_light(); + } + + static void ep_remove_wait_queue(struct eppoll_entry *pwq) diff --git a/patches/features/all/rt/fs-aio-simple-simple-work.patch b/patches/features/all/rt/fs-aio-simple-simple-work.patch new file mode 100644 index 00000000000..06d2747347a --- /dev/null +++ b/patches/features/all/rt/fs-aio-simple-simple-work.patch @@ -0,0 +1,107 @@ +From: Sebastian Andrzej Siewior +Date: Mon, 16 Feb 2015 18:49:10 +0100 +Subject: fs/aio: simple simple work +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +|BUG: sleeping function called from invalid context at kernel/locking/rtmutex.c:768 +|in_atomic(): 1, irqs_disabled(): 0, pid: 26, name: rcuos/2 +|2 locks held by rcuos/2/26: +| #0: (rcu_callback){.+.+..}, at: [] rcu_nocb_kthread+0x1e2/0x380 +| #1: (rcu_read_lock_sched){.+.+..}, at: [] percpu_ref_kill_rcu+0xa6/0x1c0 +|Preemption disabled at:[] rcu_nocb_kthread+0x263/0x380 +|Call Trace: +| [] dump_stack+0x4e/0x9c +| [] __might_sleep+0xfb/0x170 +| [] rt_spin_lock+0x24/0x70 +| [] free_ioctx_users+0x30/0x130 +| [] percpu_ref_kill_rcu+0x1b4/0x1c0 +| [] rcu_nocb_kthread+0x263/0x380 +| [] kthread+0xd6/0xf0 +| [] ret_from_fork+0x7c/0xb0 + +replace this preempt_disable() friendly swork. + +Reported-By: Mike Galbraith +Suggested-by: Benjamin LaHaise +Signed-off-by: Sebastian Andrzej Siewior +--- + fs/aio.c | 24 +++++++++++++++++------- + 1 file changed, 17 insertions(+), 7 deletions(-) + +--- a/fs/aio.c ++++ b/fs/aio.c +@@ -40,6 +40,7 @@ + #include + #include + #include ++#include + + #include + #include +@@ -115,7 +116,7 @@ struct kioctx { + struct page **ring_pages; + long nr_pages; + +- struct work_struct free_work; ++ struct swork_event free_work; + + /* + * signals when all in-flight requests are done +@@ -258,6 +259,7 @@ static int __init aio_setup(void) + .mount = aio_mount, + .kill_sb = kill_anon_super, + }; ++ BUG_ON(swork_get()); + aio_mnt = kern_mount(&aio_fs); + if (IS_ERR(aio_mnt)) + panic("Failed to create aio fs mount."); +@@ -588,9 +590,9 @@ static int kiocb_cancel(struct aio_kiocb + return cancel(&kiocb->common); + } + +-static void free_ioctx(struct work_struct *work) ++static void free_ioctx(struct swork_event *sev) + { +- struct kioctx *ctx = container_of(work, struct kioctx, free_work); ++ struct kioctx *ctx = container_of(sev, struct kioctx, free_work); + + pr_debug("freeing %p\n", ctx); + +@@ -609,8 +611,8 @@ static void free_ioctx_reqs(struct percp + if (ctx->rq_wait && atomic_dec_and_test(&ctx->rq_wait->count)) + complete(&ctx->rq_wait->comp); + +- INIT_WORK(&ctx->free_work, free_ioctx); +- schedule_work(&ctx->free_work); ++ INIT_SWORK(&ctx->free_work, free_ioctx); ++ swork_queue(&ctx->free_work); + } + + /* +@@ -618,9 +620,9 @@ static void free_ioctx_reqs(struct percp + * and ctx->users has dropped to 0, so we know no more kiocbs can be submitted - + * now it's safe to cancel any that need to be. + */ +-static void free_ioctx_users(struct percpu_ref *ref) ++static void free_ioctx_users_work(struct swork_event *sev) + { +- struct kioctx *ctx = container_of(ref, struct kioctx, users); ++ struct kioctx *ctx = container_of(sev, struct kioctx, free_work); + struct aio_kiocb *req; + + spin_lock_irq(&ctx->ctx_lock); +@@ -639,6 +641,14 @@ static void free_ioctx_users(struct perc + percpu_ref_put(&ctx->reqs); + } + ++static void free_ioctx_users(struct percpu_ref *ref) ++{ ++ struct kioctx *ctx = container_of(ref, struct kioctx, users); ++ ++ INIT_SWORK(&ctx->free_work, free_ioctx_users_work); ++ swork_queue(&ctx->free_work); ++} ++ + static int ioctx_add_table(struct kioctx *ctx, struct mm_struct *mm) + { + unsigned i, new_nr; diff --git a/patches/features/all/rt/fs-block-rt-support.patch b/patches/features/all/rt/fs-block-rt-support.patch new file mode 100644 index 00000000000..fdc54c17012 --- /dev/null +++ b/patches/features/all/rt/fs-block-rt-support.patch @@ -0,0 +1,23 @@ +Subject: block: Turn off warning which is bogus on RT +From: Thomas Gleixner +Date: Tue, 14 Jun 2011 17:05:09 +0200 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +On -RT the context is always with IRQs enabled. Ignore this warning on -RT. + +Signed-off-by: Thomas Gleixner +--- + block/blk-core.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/block/blk-core.c ++++ b/block/blk-core.c +@@ -280,7 +280,7 @@ EXPORT_SYMBOL(blk_start_queue_async); + void blk_start_queue(struct request_queue *q) + { + lockdep_assert_held(q->queue_lock); +- WARN_ON(!in_interrupt() && !irqs_disabled()); ++ WARN_ON_NONRT(!in_interrupt() && !irqs_disabled()); + WARN_ON_ONCE(q->mq_ops); + + queue_flag_clear(QUEUE_FLAG_STOPPED, q); diff --git a/patches/features/all/rt/fs-dcache-bringt-back-explicit-INIT_HLIST_BL_HEAD-in.patch b/patches/features/all/rt/fs-dcache-bringt-back-explicit-INIT_HLIST_BL_HEAD-in.patch new file mode 100644 index 00000000000..b5470bdeef9 --- /dev/null +++ b/patches/features/all/rt/fs-dcache-bringt-back-explicit-INIT_HLIST_BL_HEAD-in.patch @@ -0,0 +1,52 @@ +From: Sebastian Andrzej Siewior +Date: Wed, 13 Sep 2017 12:32:34 +0200 +Subject: [PATCH] fs/dcache: bringt back explicit INIT_HLIST_BL_HEAD init +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Commit 3d375d78593c ("mm: update callers to use HASH_ZERO flag") removed +INIT_HLIST_BL_HEAD and uses the ZERO flag instead for the init. However +on RT we have also a spinlock which needs an init call so we can't use +that. + +Signed-off-by: Sebastian Andrzej Siewior +--- + fs/dcache.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +--- a/fs/dcache.c ++++ b/fs/dcache.c +@@ -3578,6 +3578,8 @@ static int __init set_dhash_entries(char + + static void __init dcache_init_early(void) + { ++ unsigned int loop; ++ + /* If hashes are distributed across NUMA nodes, defer + * hash allocation until vmalloc space is available. + */ +@@ -3594,10 +3596,14 @@ static void __init dcache_init_early(voi + &d_hash_mask, + 0, + 0); ++ ++ for (loop = 0; loop < (1U << d_hash_shift); loop++) ++ INIT_HLIST_BL_HEAD(dentry_hashtable + loop); + } + + static void __init dcache_init(void) + { ++ unsigned int loop; + /* + * A constructor could be added for stable state like the lists, + * but it is probably not worth it because of the cache nature +@@ -3620,6 +3626,10 @@ static void __init dcache_init(void) + &d_hash_mask, + 0, + 0); ++ ++ for (loop = 0; loop < (1U << d_hash_shift); loop++) ++ INIT_HLIST_BL_HEAD(dentry_hashtable + loop); ++ + } + + /* SLAB cache for __getname() consumers */ diff --git a/patches/features/all/rt/fs-dcache-disable-preemption-on-i_dir_seq-s-write-si.patch b/patches/features/all/rt/fs-dcache-disable-preemption-on-i_dir_seq-s-write-si.patch new file mode 100644 index 00000000000..817f6efb0d8 --- /dev/null +++ b/patches/features/all/rt/fs-dcache-disable-preemption-on-i_dir_seq-s-write-si.patch @@ -0,0 +1,119 @@ +From: Sebastian Andrzej Siewior +Date: Fri, 20 Oct 2017 11:29:53 +0200 +Subject: [PATCH] fs/dcache: disable preemption on i_dir_seq's write side +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +i_dir_seq is an opencoded seqcounter. Based on the code it looks like we +could have two writers in parallel despite the fact that the d_lock is +held. The problem is that during the write process on RT the preemption +is still enabled and if this process is interrupted by a reader with RT +priority then we lock up. +To avoid that lock up I am disabling the preemption during the update. +The rename of i_dir_seq is here to ensure to catch new write sides in +future. + +Cc: stable-rt@vger.kernel.org +Reported-by: Oleg.Karfich@wago.com +Signed-off-by: Sebastian Andrzej Siewior +--- + fs/dcache.c | 12 +++++++----- + fs/inode.c | 2 +- + fs/libfs.c | 6 ++++-- + include/linux/fs.h | 2 +- + 4 files changed, 13 insertions(+), 9 deletions(-) + +--- a/fs/dcache.c ++++ b/fs/dcache.c +@@ -2405,9 +2405,10 @@ EXPORT_SYMBOL(d_rehash); + static inline unsigned start_dir_add(struct inode *dir) + { + ++ preempt_disable_rt(); + for (;;) { +- unsigned n = dir->i_dir_seq; +- if (!(n & 1) && cmpxchg(&dir->i_dir_seq, n, n + 1) == n) ++ unsigned n = dir->__i_dir_seq; ++ if (!(n & 1) && cmpxchg(&dir->__i_dir_seq, n, n + 1) == n) + return n; + cpu_relax(); + } +@@ -2415,7 +2416,8 @@ static inline unsigned start_dir_add(str + + static inline void end_dir_add(struct inode *dir, unsigned n) + { +- smp_store_release(&dir->i_dir_seq, n + 2); ++ smp_store_release(&dir->__i_dir_seq, n + 2); ++ preempt_enable_rt(); + } + + static void d_wait_lookup(struct dentry *dentry) +@@ -2448,7 +2450,7 @@ struct dentry *d_alloc_parallel(struct d + + retry: + rcu_read_lock(); +- seq = smp_load_acquire(&parent->d_inode->i_dir_seq) & ~1; ++ seq = smp_load_acquire(&parent->d_inode->__i_dir_seq) & ~1; + r_seq = read_seqbegin(&rename_lock); + dentry = __d_lookup_rcu(parent, name, &d_seq); + if (unlikely(dentry)) { +@@ -2470,7 +2472,7 @@ struct dentry *d_alloc_parallel(struct d + goto retry; + } + hlist_bl_lock(b); +- if (unlikely(parent->d_inode->i_dir_seq != seq)) { ++ if (unlikely(parent->d_inode->__i_dir_seq != seq)) { + hlist_bl_unlock(b); + rcu_read_unlock(); + goto retry; +--- a/fs/inode.c ++++ b/fs/inode.c +@@ -154,7 +154,7 @@ int inode_init_always(struct super_block + inode->i_bdev = NULL; + inode->i_cdev = NULL; + inode->i_link = NULL; +- inode->i_dir_seq = 0; ++ inode->__i_dir_seq = 0; + inode->i_rdev = 0; + inode->dirtied_when = 0; + +--- a/fs/libfs.c ++++ b/fs/libfs.c +@@ -90,7 +90,7 @@ static struct dentry *next_positive(stru + struct list_head *from, + int count) + { +- unsigned *seq = &parent->d_inode->i_dir_seq, n; ++ unsigned *seq = &parent->d_inode->__i_dir_seq, n; + struct dentry *res; + struct list_head *p; + bool skipped; +@@ -123,8 +123,9 @@ static struct dentry *next_positive(stru + static void move_cursor(struct dentry *cursor, struct list_head *after) + { + struct dentry *parent = cursor->d_parent; +- unsigned n, *seq = &parent->d_inode->i_dir_seq; ++ unsigned n, *seq = &parent->d_inode->__i_dir_seq; + spin_lock(&parent->d_lock); ++ preempt_disable_rt(); + for (;;) { + n = *seq; + if (!(n & 1) && cmpxchg(seq, n, n + 1) == n) +@@ -137,6 +138,7 @@ static void move_cursor(struct dentry *c + else + list_add_tail(&cursor->d_child, &parent->d_subdirs); + smp_store_release(seq, n + 2); ++ preempt_enable_rt(); + spin_unlock(&parent->d_lock); + } + +--- a/include/linux/fs.h ++++ b/include/linux/fs.h +@@ -655,7 +655,7 @@ struct inode { + struct block_device *i_bdev; + struct cdev *i_cdev; + char *i_link; +- unsigned i_dir_seq; ++ unsigned __i_dir_seq; + }; + + __u32 i_generation; diff --git a/patches/features/all/rt/fs-dcache-use-cpu-chill-in-trylock-loops.patch b/patches/features/all/rt/fs-dcache-use-cpu-chill-in-trylock-loops.patch new file mode 100644 index 00000000000..64f0c4207b7 --- /dev/null +++ b/patches/features/all/rt/fs-dcache-use-cpu-chill-in-trylock-loops.patch @@ -0,0 +1,108 @@ +Subject: fs: dcache: Use cpu_chill() in trylock loops +From: Thomas Gleixner +Date: Wed, 07 Mar 2012 21:00:34 +0100 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Retry loops on RT might loop forever when the modifying side was +preempted. Use cpu_chill() instead of cpu_relax() to let the system +make progress. + +Signed-off-by: Thomas Gleixner + +--- + fs/autofs4/autofs_i.h | 1 + + fs/autofs4/expire.c | 2 +- + fs/dcache.c | 20 ++++++++++++++++---- + fs/namespace.c | 3 ++- + 4 files changed, 20 insertions(+), 6 deletions(-) + +--- a/fs/autofs4/autofs_i.h ++++ b/fs/autofs4/autofs_i.h +@@ -20,6 +20,7 @@ + #include + #include + #include ++#include + #include + #include + #include +--- a/fs/autofs4/expire.c ++++ b/fs/autofs4/expire.c +@@ -148,7 +148,7 @@ static struct dentry *get_next_positive_ + parent = p->d_parent; + if (!spin_trylock(&parent->d_lock)) { + spin_unlock(&p->d_lock); +- cpu_relax(); ++ cpu_chill(); + goto relock; + } + spin_unlock(&p->d_lock); +--- a/fs/dcache.c ++++ b/fs/dcache.c +@@ -19,6 +19,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -784,6 +785,8 @@ static inline bool fast_dput(struct dent + */ + void dput(struct dentry *dentry) + { ++ struct dentry *parent; ++ + if (unlikely(!dentry)) + return; + +@@ -820,9 +823,18 @@ void dput(struct dentry *dentry) + return; + + kill_it: +- dentry = dentry_kill(dentry); +- if (dentry) { +- cond_resched(); ++ parent = dentry_kill(dentry); ++ if (parent) { ++ int r; ++ ++ if (parent == dentry) { ++ /* the task with the highest priority won't schedule */ ++ r = cond_resched(); ++ if (!r) ++ cpu_chill(); ++ } else { ++ dentry = parent; ++ } + goto repeat; + } + } +@@ -2360,7 +2372,7 @@ void d_delete(struct dentry * dentry) + if (dentry->d_lockref.count == 1) { + if (!spin_trylock(&inode->i_lock)) { + spin_unlock(&dentry->d_lock); +- cpu_relax(); ++ cpu_chill(); + goto again; + } + dentry->d_flags &= ~DCACHE_CANT_MOUNT; +--- a/fs/namespace.c ++++ b/fs/namespace.c +@@ -14,6 +14,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -355,7 +356,7 @@ int __mnt_want_write(struct vfsmount *m) + smp_mb(); + while (ACCESS_ONCE(mnt->mnt.mnt_flags) & MNT_WRITE_HOLD) { + preempt_enable(); +- cpu_relax(); ++ cpu_chill(); + preempt_disable(); + } + /* diff --git a/patches/features/all/rt/fs-dcache-use-swait_queue-instead-of-waitqueue.patch b/patches/features/all/rt/fs-dcache-use-swait_queue-instead-of-waitqueue.patch new file mode 100644 index 00000000000..900716914ed --- /dev/null +++ b/patches/features/all/rt/fs-dcache-use-swait_queue-instead-of-waitqueue.patch @@ -0,0 +1,215 @@ +From: Sebastian Andrzej Siewior +Date: Wed, 14 Sep 2016 14:35:49 +0200 +Subject: [PATCH] fs/dcache: use swait_queue instead of waitqueue +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +__d_lookup_done() invokes wake_up_all() while holding a hlist_bl_lock() +which disables preemption. As a workaround convert it to swait. + +Signed-off-by: Sebastian Andrzej Siewior +--- + fs/cifs/readdir.c | 2 +- + fs/dcache.c | 27 +++++++++++++++------------ + fs/fuse/dir.c | 2 +- + fs/namei.c | 4 ++-- + fs/nfs/dir.c | 4 ++-- + fs/nfs/unlink.c | 4 ++-- + fs/proc/base.c | 2 +- + fs/proc/proc_sysctl.c | 2 +- + include/linux/dcache.h | 4 ++-- + include/linux/nfs_xdr.h | 2 +- + kernel/sched/swait.c | 1 + + 11 files changed, 29 insertions(+), 25 deletions(-) + +--- a/fs/cifs/readdir.c ++++ b/fs/cifs/readdir.c +@@ -80,7 +80,7 @@ cifs_prime_dcache(struct dentry *parent, + struct inode *inode; + struct super_block *sb = parent->d_sb; + struct cifs_sb_info *cifs_sb = CIFS_SB(sb); +- DECLARE_WAIT_QUEUE_HEAD_ONSTACK(wq); ++ DECLARE_SWAIT_QUEUE_HEAD_ONSTACK(wq); + + cifs_dbg(FYI, "%s: for %s\n", __func__, name->name); + +--- a/fs/dcache.c ++++ b/fs/dcache.c +@@ -2434,21 +2434,24 @@ static inline void end_dir_add(struct in + + static void d_wait_lookup(struct dentry *dentry) + { +- if (d_in_lookup(dentry)) { +- DECLARE_WAITQUEUE(wait, current); +- add_wait_queue(dentry->d_wait, &wait); +- do { +- set_current_state(TASK_UNINTERRUPTIBLE); +- spin_unlock(&dentry->d_lock); +- schedule(); +- spin_lock(&dentry->d_lock); +- } while (d_in_lookup(dentry)); +- } ++ struct swait_queue __wait; ++ ++ if (!d_in_lookup(dentry)) ++ return; ++ ++ INIT_LIST_HEAD(&__wait.task_list); ++ do { ++ prepare_to_swait(dentry->d_wait, &__wait, TASK_UNINTERRUPTIBLE); ++ spin_unlock(&dentry->d_lock); ++ schedule(); ++ spin_lock(&dentry->d_lock); ++ } while (d_in_lookup(dentry)); ++ finish_swait(dentry->d_wait, &__wait); + } + + struct dentry *d_alloc_parallel(struct dentry *parent, + const struct qstr *name, +- wait_queue_head_t *wq) ++ struct swait_queue_head *wq) + { + unsigned int hash = name->hash; + struct hlist_bl_head *b = in_lookup_hash(parent, hash); +@@ -2557,7 +2560,7 @@ void __d_lookup_done(struct dentry *dent + hlist_bl_lock(b); + dentry->d_flags &= ~DCACHE_PAR_LOOKUP; + __hlist_bl_del(&dentry->d_u.d_in_lookup_hash); +- wake_up_all(dentry->d_wait); ++ swake_up_all(dentry->d_wait); + dentry->d_wait = NULL; + hlist_bl_unlock(b); + INIT_HLIST_NODE(&dentry->d_u.d_alias); +--- a/fs/fuse/dir.c ++++ b/fs/fuse/dir.c +@@ -1187,7 +1187,7 @@ static int fuse_direntplus_link(struct f + struct inode *dir = d_inode(parent); + struct fuse_conn *fc; + struct inode *inode; +- DECLARE_WAIT_QUEUE_HEAD_ONSTACK(wq); ++ DECLARE_SWAIT_QUEUE_HEAD_ONSTACK(wq); + + if (!o->nodeid) { + /* +--- a/fs/namei.c ++++ b/fs/namei.c +@@ -1628,7 +1628,7 @@ static struct dentry *lookup_slow(const + { + struct dentry *dentry = ERR_PTR(-ENOENT), *old; + struct inode *inode = dir->d_inode; +- DECLARE_WAIT_QUEUE_HEAD_ONSTACK(wq); ++ DECLARE_SWAIT_QUEUE_HEAD_ONSTACK(wq); + + inode_lock_shared(inode); + /* Don't go there if it's already dead */ +@@ -3101,7 +3101,7 @@ static int lookup_open(struct nameidata + struct dentry *dentry; + int error, create_error = 0; + umode_t mode = op->mode; +- DECLARE_WAIT_QUEUE_HEAD_ONSTACK(wq); ++ DECLARE_SWAIT_QUEUE_HEAD_ONSTACK(wq); + + if (unlikely(IS_DEADDIR(dir_inode))) + return -ENOENT; +--- a/fs/nfs/dir.c ++++ b/fs/nfs/dir.c +@@ -452,7 +452,7 @@ static + void nfs_prime_dcache(struct dentry *parent, struct nfs_entry *entry) + { + struct qstr filename = QSTR_INIT(entry->name, entry->len); +- DECLARE_WAIT_QUEUE_HEAD_ONSTACK(wq); ++ DECLARE_SWAIT_QUEUE_HEAD_ONSTACK(wq); + struct dentry *dentry; + struct dentry *alias; + struct inode *dir = d_inode(parent); +@@ -1443,7 +1443,7 @@ int nfs_atomic_open(struct inode *dir, s + struct file *file, unsigned open_flags, + umode_t mode, int *opened) + { +- DECLARE_WAIT_QUEUE_HEAD_ONSTACK(wq); ++ DECLARE_SWAIT_QUEUE_HEAD_ONSTACK(wq); + struct nfs_open_context *ctx; + struct dentry *res; + struct iattr attr = { .ia_valid = ATTR_OPEN }; +--- a/fs/nfs/unlink.c ++++ b/fs/nfs/unlink.c +@@ -13,7 +13,7 @@ + #include + #include + #include +-#include ++#include + #include + #include + +@@ -206,7 +206,7 @@ nfs_async_unlink(struct dentry *dentry, + goto out_free_name; + } + data->res.dir_attr = &data->dir_attr; +- init_waitqueue_head(&data->wq); ++ init_swait_queue_head(&data->wq); + + status = -EBUSY; + spin_lock(&dentry->d_lock); +--- a/fs/proc/base.c ++++ b/fs/proc/base.c +@@ -1878,7 +1878,7 @@ bool proc_fill_cache(struct file *file, + + child = d_hash_and_lookup(dir, &qname); + if (!child) { +- DECLARE_WAIT_QUEUE_HEAD_ONSTACK(wq); ++ DECLARE_SWAIT_QUEUE_HEAD_ONSTACK(wq); + child = d_alloc_parallel(dir, &qname, &wq); + if (IS_ERR(child)) + goto end_instantiate; +--- a/fs/proc/proc_sysctl.c ++++ b/fs/proc/proc_sysctl.c +@@ -679,7 +679,7 @@ static bool proc_sys_fill_cache(struct f + + child = d_lookup(dir, &qname); + if (!child) { +- DECLARE_WAIT_QUEUE_HEAD_ONSTACK(wq); ++ DECLARE_SWAIT_QUEUE_HEAD_ONSTACK(wq); + child = d_alloc_parallel(dir, &qname, &wq); + if (IS_ERR(child)) + return false; +--- a/include/linux/dcache.h ++++ b/include/linux/dcache.h +@@ -107,7 +107,7 @@ struct dentry { + + union { + struct list_head d_lru; /* LRU list */ +- wait_queue_head_t *d_wait; /* in-lookup ones only */ ++ struct swait_queue_head *d_wait; /* in-lookup ones only */ + }; + struct list_head d_child; /* child of parent list */ + struct list_head d_subdirs; /* our children */ +@@ -237,7 +237,7 @@ extern void d_set_d_op(struct dentry *de + extern struct dentry * d_alloc(struct dentry *, const struct qstr *); + extern struct dentry * d_alloc_pseudo(struct super_block *, const struct qstr *); + extern struct dentry * d_alloc_parallel(struct dentry *, const struct qstr *, +- wait_queue_head_t *); ++ struct swait_queue_head *); + extern struct dentry * d_splice_alias(struct inode *, struct dentry *); + extern struct dentry * d_add_ci(struct dentry *, struct inode *, struct qstr *); + extern struct dentry * d_exact_alias(struct dentry *, struct inode *); +--- a/include/linux/nfs_xdr.h ++++ b/include/linux/nfs_xdr.h +@@ -1530,7 +1530,7 @@ struct nfs_unlinkdata { + struct nfs_removeargs args; + struct nfs_removeres res; + struct dentry *dentry; +- wait_queue_head_t wq; ++ struct swait_queue_head wq; + struct rpc_cred *cred; + struct nfs_fattr dir_attr; + long timeout; +--- a/kernel/sched/swait.c ++++ b/kernel/sched/swait.c +@@ -69,6 +69,7 @@ void swake_up_all(struct swait_queue_hea + struct swait_queue *curr; + LIST_HEAD(tmp); + ++ WARN_ON(irqs_disabled()); + raw_spin_lock_irq(&q->lock); + list_splice_init(&q->task_list, &tmp); + while (!list_empty(&tmp)) { diff --git a/patches/features/all/rt/fs-jbd-replace-bh_state-lock.patch b/patches/features/all/rt/fs-jbd-replace-bh_state-lock.patch new file mode 100644 index 00000000000..eb620a5ceda --- /dev/null +++ b/patches/features/all/rt/fs-jbd-replace-bh_state-lock.patch @@ -0,0 +1,97 @@ +From: Thomas Gleixner +Date: Fri, 18 Mar 2011 10:11:25 +0100 +Subject: fs: jbd/jbd2: Make state lock and journal head lock rt safe +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +bit_spin_locks break under RT. + +Based on a previous patch from Steven Rostedt +Signed-off-by: Thomas Gleixner +-- + include/linux/buffer_head.h | 8 ++++++++ + include/linux/jbd2.h | 24 ++++++++++++++++++++++++ + 2 files changed, 32 insertions(+) + +--- a/include/linux/buffer_head.h ++++ b/include/linux/buffer_head.h +@@ -78,6 +78,10 @@ struct buffer_head { + atomic_t b_count; /* users using this buffer_head */ + #ifdef CONFIG_PREEMPT_RT_BASE + spinlock_t b_uptodate_lock; ++#if IS_ENABLED(CONFIG_JBD2) ++ spinlock_t b_state_lock; ++ spinlock_t b_journal_head_lock; ++#endif + #endif + }; + +@@ -109,6 +113,10 @@ static inline void buffer_head_init_lock + { + #ifdef CONFIG_PREEMPT_RT_BASE + spin_lock_init(&bh->b_uptodate_lock); ++#if IS_ENABLED(CONFIG_JBD2) ++ spin_lock_init(&bh->b_state_lock); ++ spin_lock_init(&bh->b_journal_head_lock); ++#endif + #endif + } + +--- a/include/linux/jbd2.h ++++ b/include/linux/jbd2.h +@@ -347,32 +347,56 @@ static inline struct journal_head *bh2jh + + static inline void jbd_lock_bh_state(struct buffer_head *bh) + { ++#ifndef CONFIG_PREEMPT_RT_BASE + bit_spin_lock(BH_State, &bh->b_state); ++#else ++ spin_lock(&bh->b_state_lock); ++#endif + } + + static inline int jbd_trylock_bh_state(struct buffer_head *bh) + { ++#ifndef CONFIG_PREEMPT_RT_BASE + return bit_spin_trylock(BH_State, &bh->b_state); ++#else ++ return spin_trylock(&bh->b_state_lock); ++#endif + } + + static inline int jbd_is_locked_bh_state(struct buffer_head *bh) + { ++#ifndef CONFIG_PREEMPT_RT_BASE + return bit_spin_is_locked(BH_State, &bh->b_state); ++#else ++ return spin_is_locked(&bh->b_state_lock); ++#endif + } + + static inline void jbd_unlock_bh_state(struct buffer_head *bh) + { ++#ifndef CONFIG_PREEMPT_RT_BASE + bit_spin_unlock(BH_State, &bh->b_state); ++#else ++ spin_unlock(&bh->b_state_lock); ++#endif + } + + static inline void jbd_lock_bh_journal_head(struct buffer_head *bh) + { ++#ifndef CONFIG_PREEMPT_RT_BASE + bit_spin_lock(BH_JournalHead, &bh->b_state); ++#else ++ spin_lock(&bh->b_journal_head_lock); ++#endif + } + + static inline void jbd_unlock_bh_journal_head(struct buffer_head *bh) + { ++#ifndef CONFIG_PREEMPT_RT_BASE + bit_spin_unlock(BH_JournalHead, &bh->b_state); ++#else ++ spin_unlock(&bh->b_journal_head_lock); ++#endif + } + + #define J_ASSERT(assert) BUG_ON(!(assert)) diff --git a/patches/features/all/rt/fs-jbd2-pull-your-plug-when-waiting-for-space.patch b/patches/features/all/rt/fs-jbd2-pull-your-plug-when-waiting-for-space.patch new file mode 100644 index 00000000000..1bfe2b578cf --- /dev/null +++ b/patches/features/all/rt/fs-jbd2-pull-your-plug-when-waiting-for-space.patch @@ -0,0 +1,32 @@ +From: Sebastian Andrzej Siewior +Date: Mon, 17 Feb 2014 17:30:03 +0100 +Subject: fs: jbd2: pull your plug when waiting for space +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Two cps in parallel managed to stall the the ext4 fs. It seems that +journal code is either waiting for locks or sleeping waiting for +something to happen. This seems similar to what Mike observed on ext3, +here is his description: + +|With an -rt kernel, and a heavy sync IO load, tasks can jam +|up on journal locks without unplugging, which can lead to +|terminal IO starvation. Unplug and schedule when waiting +|for space. + + +Signed-off-by: Sebastian Andrzej Siewior +--- + fs/jbd2/checkpoint.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/fs/jbd2/checkpoint.c ++++ b/fs/jbd2/checkpoint.c +@@ -116,6 +116,8 @@ void __jbd2_log_wait_for_space(journal_t + nblocks = jbd2_space_needed(journal); + while (jbd2_log_space_left(journal) < nblocks) { + write_unlock(&journal->j_state_lock); ++ if (current->plug) ++ io_schedule(); + mutex_lock(&journal->j_checkpoint_mutex); + + /* diff --git a/patches/features/all/rt/fs-namespace-preemption-fix.patch b/patches/features/all/rt/fs-namespace-preemption-fix.patch new file mode 100644 index 00000000000..3210942c057 --- /dev/null +++ b/patches/features/all/rt/fs-namespace-preemption-fix.patch @@ -0,0 +1,31 @@ +From: Thomas Gleixner +Date: Sun, 19 Jul 2009 08:44:27 -0500 +Subject: fs: namespace preemption fix +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +On RT we cannot loop with preemption disabled here as +mnt_make_readonly() might have been preempted. We can safely enable +preemption while waiting for MNT_WRITE_HOLD to be cleared. Safe on !RT +as well. + +Signed-off-by: Thomas Gleixner + +--- + fs/namespace.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +--- a/fs/namespace.c ++++ b/fs/namespace.c +@@ -353,8 +353,11 @@ int __mnt_want_write(struct vfsmount *m) + * incremented count after it has set MNT_WRITE_HOLD. + */ + smp_mb(); +- while (ACCESS_ONCE(mnt->mnt.mnt_flags) & MNT_WRITE_HOLD) ++ while (ACCESS_ONCE(mnt->mnt.mnt_flags) & MNT_WRITE_HOLD) { ++ preempt_enable(); + cpu_relax(); ++ preempt_disable(); ++ } + /* + * After the slowpath clears MNT_WRITE_HOLD, mnt_is_readonly will + * be set to match its requirements. So we must not load that until diff --git a/patches/features/all/rt/fs-nfs-turn-rmdir_sem-into-a-semaphore.patch b/patches/features/all/rt/fs-nfs-turn-rmdir_sem-into-a-semaphore.patch new file mode 100644 index 00000000000..22d22d13dd9 --- /dev/null +++ b/patches/features/all/rt/fs-nfs-turn-rmdir_sem-into-a-semaphore.patch @@ -0,0 +1,139 @@ +From: Sebastian Andrzej Siewior +Date: Thu, 15 Sep 2016 10:51:27 +0200 +Subject: [PATCH] fs/nfs: turn rmdir_sem into a semaphore +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +The RW semaphore had a reader side which used the _non_owner version +because it most likely took the reader lock in one thread and released it +in another which would cause lockdep to complain if the "regular" +version was used. +On -RT we need the owner because the rw lock is turned into a rtmutex. +The semaphores on the hand are "plain simple" and should work as +expected. We can't have multiple readers but on -RT we don't allow +multiple readers anyway so that is not a loss. + +Signed-off-by: Sebastian Andrzej Siewior +--- + fs/nfs/dir.c | 8 ++++++++ + fs/nfs/inode.c | 4 ++++ + fs/nfs/unlink.c | 31 +++++++++++++++++++++++++++---- + include/linux/nfs_fs.h | 4 ++++ + 4 files changed, 43 insertions(+), 4 deletions(-) + +--- a/fs/nfs/dir.c ++++ b/fs/nfs/dir.c +@@ -1763,7 +1763,11 @@ int nfs_rmdir(struct inode *dir, struct + + trace_nfs_rmdir_enter(dir, dentry); + if (d_really_is_positive(dentry)) { ++#ifdef CONFIG_PREEMPT_RT_BASE ++ down(&NFS_I(d_inode(dentry))->rmdir_sem); ++#else + down_write(&NFS_I(d_inode(dentry))->rmdir_sem); ++#endif + error = NFS_PROTO(dir)->rmdir(dir, &dentry->d_name); + /* Ensure the VFS deletes this inode */ + switch (error) { +@@ -1773,7 +1777,11 @@ int nfs_rmdir(struct inode *dir, struct + case -ENOENT: + nfs_dentry_handle_enoent(dentry); + } ++#ifdef CONFIG_PREEMPT_RT_BASE ++ up(&NFS_I(d_inode(dentry))->rmdir_sem); ++#else + up_write(&NFS_I(d_inode(dentry))->rmdir_sem); ++#endif + } else + error = NFS_PROTO(dir)->rmdir(dir, &dentry->d_name); + trace_nfs_rmdir_exit(dir, dentry, error); +--- a/fs/nfs/inode.c ++++ b/fs/nfs/inode.c +@@ -2014,7 +2014,11 @@ static void init_once(void *foo) + atomic_long_set(&nfsi->nrequests, 0); + atomic_long_set(&nfsi->commit_info.ncommit, 0); + atomic_set(&nfsi->commit_info.rpcs_out, 0); ++#ifdef CONFIG_PREEMPT_RT_BASE ++ sema_init(&nfsi->rmdir_sem, 1); ++#else + init_rwsem(&nfsi->rmdir_sem); ++#endif + mutex_init(&nfsi->commit_mutex); + nfs4_init_once(nfsi); + } +--- a/fs/nfs/unlink.c ++++ b/fs/nfs/unlink.c +@@ -52,6 +52,29 @@ static void nfs_async_unlink_done(struct + rpc_restart_call_prepare(task); + } + ++#ifdef CONFIG_PREEMPT_RT_BASE ++static void nfs_down_anon(struct semaphore *sema) ++{ ++ down(sema); ++} ++ ++static void nfs_up_anon(struct semaphore *sema) ++{ ++ up(sema); ++} ++ ++#else ++static void nfs_down_anon(struct rw_semaphore *rwsem) ++{ ++ down_read_non_owner(rwsem); ++} ++ ++static void nfs_up_anon(struct rw_semaphore *rwsem) ++{ ++ up_read_non_owner(rwsem); ++} ++#endif ++ + /** + * nfs_async_unlink_release - Release the sillydelete data. + * @task: rpc_task of the sillydelete +@@ -65,7 +88,7 @@ static void nfs_async_unlink_release(voi + struct dentry *dentry = data->dentry; + struct super_block *sb = dentry->d_sb; + +- up_read_non_owner(&NFS_I(d_inode(dentry->d_parent))->rmdir_sem); ++ nfs_up_anon(&NFS_I(d_inode(dentry->d_parent))->rmdir_sem); + d_lookup_done(dentry); + nfs_free_unlinkdata(data); + dput(dentry); +@@ -118,10 +141,10 @@ static int nfs_call_unlink(struct dentry + struct inode *dir = d_inode(dentry->d_parent); + struct dentry *alias; + +- down_read_non_owner(&NFS_I(dir)->rmdir_sem); ++ nfs_down_anon(&NFS_I(dir)->rmdir_sem); + alias = d_alloc_parallel(dentry->d_parent, &data->args.name, &data->wq); + if (IS_ERR(alias)) { +- up_read_non_owner(&NFS_I(dir)->rmdir_sem); ++ nfs_up_anon(&NFS_I(dir)->rmdir_sem); + return 0; + } + if (!d_in_lookup(alias)) { +@@ -143,7 +166,7 @@ static int nfs_call_unlink(struct dentry + ret = 0; + spin_unlock(&alias->d_lock); + dput(alias); +- up_read_non_owner(&NFS_I(dir)->rmdir_sem); ++ nfs_up_anon(&NFS_I(dir)->rmdir_sem); + /* + * If we'd displaced old cached devname, free it. At that + * point dentry is definitely not a root, so we won't need +--- a/include/linux/nfs_fs.h ++++ b/include/linux/nfs_fs.h +@@ -162,7 +162,11 @@ struct nfs_inode { + + /* Readers: in-flight sillydelete RPC calls */ + /* Writers: rmdir */ ++#ifdef CONFIG_PREEMPT_RT_BASE ++ struct semaphore rmdir_sem; ++#else + struct rw_semaphore rmdir_sem; ++#endif + struct mutex commit_mutex; + + #if IS_ENABLED(CONFIG_NFS_V4) diff --git a/patches/features/all/rt/fs-ntfs-disable-interrupt-non-rt.patch b/patches/features/all/rt/fs-ntfs-disable-interrupt-non-rt.patch new file mode 100644 index 00000000000..7d39ebfc11b --- /dev/null +++ b/patches/features/all/rt/fs-ntfs-disable-interrupt-non-rt.patch @@ -0,0 +1,76 @@ +From: Mike Galbraith +Date: Fri, 3 Jul 2009 08:44:12 -0500 +Subject: fs: ntfs: disable interrupt only on !RT +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +On Sat, 2007-10-27 at 11:44 +0200, Ingo Molnar wrote: +> * Nick Piggin wrote: +> +> > > [10138.175796] [] show_trace+0x12/0x14 +> > > [10138.180291] [] dump_stack+0x16/0x18 +> > > [10138.184769] [] native_smp_call_function_mask+0x138/0x13d +> > > [10138.191117] [] smp_call_function+0x1e/0x24 +> > > [10138.196210] [] on_each_cpu+0x25/0x50 +> > > [10138.200807] [] flush_tlb_all+0x1e/0x20 +> > > [10138.205553] [] kmap_high+0x1b6/0x417 +> > > [10138.210118] [] kmap+0x4d/0x4f +> > > [10138.214102] [] ntfs_end_buffer_async_read+0x228/0x2f9 +> > > [10138.220163] [] end_bio_bh_io_sync+0x26/0x3f +> > > [10138.225352] [] bio_endio+0x42/0x6d +> > > [10138.229769] [] __end_that_request_first+0x115/0x4ac +> > > [10138.235682] [] end_that_request_chunk+0x8/0xa +> > > [10138.241052] [] ide_end_request+0x55/0x10a +> > > [10138.246058] [] ide_dma_intr+0x6f/0xac +> > > [10138.250727] [] ide_intr+0x93/0x1e0 +> > > [10138.255125] [] handle_IRQ_event+0x5c/0xc9 +> > +> > Looks like ntfs is kmap()ing from interrupt context. Should be using +> > kmap_atomic instead, I think. +> +> it's not atomic interrupt context but irq thread context - and -rt +> remaps kmap_atomic() to kmap() internally. + +Hm. Looking at the change to mm/bounce.c, perhaps I should do this +instead? + +Signed-off-by: Ingo Molnar +Signed-off-by: Thomas Gleixner + +--- + fs/ntfs/aops.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +--- a/fs/ntfs/aops.c ++++ b/fs/ntfs/aops.c +@@ -93,13 +93,13 @@ static void ntfs_end_buffer_async_read(s + ofs = 0; + if (file_ofs < init_size) + ofs = init_size - file_ofs; +- local_irq_save(flags); ++ local_irq_save_nort(flags); + kaddr = kmap_atomic(page); + memset(kaddr + bh_offset(bh) + ofs, 0, + bh->b_size - ofs); + flush_dcache_page(page); + kunmap_atomic(kaddr); +- local_irq_restore(flags); ++ local_irq_restore_nort(flags); + } + } else { + clear_buffer_uptodate(bh); +@@ -144,13 +144,13 @@ static void ntfs_end_buffer_async_read(s + recs = PAGE_SIZE / rec_size; + /* Should have been verified before we got here... */ + BUG_ON(!recs); +- local_irq_save(flags); ++ local_irq_save_nort(flags); + kaddr = kmap_atomic(page); + for (i = 0; i < recs; i++) + post_read_mst_fixup((NTFS_RECORD*)(kaddr + + i * rec_size), rec_size); + kunmap_atomic(kaddr); +- local_irq_restore(flags); ++ local_irq_restore_nort(flags); + flush_dcache_page(page); + if (likely(page_uptodate && !PageError(page))) + SetPageUptodate(page); diff --git a/patches/features/all/rt/fs-replace-bh_uptodate_lock-for-rt.patch b/patches/features/all/rt/fs-replace-bh_uptodate_lock-for-rt.patch new file mode 100644 index 00000000000..d71d879e9fb --- /dev/null +++ b/patches/features/all/rt/fs-replace-bh_uptodate_lock-for-rt.patch @@ -0,0 +1,208 @@ +From: Thomas Gleixner +Date: Fri, 18 Mar 2011 09:18:52 +0100 +Subject: buffer_head: Replace bh_uptodate_lock for -rt +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Wrap the bit_spin_lock calls into a separate inline and add the RT +replacements with a real spinlock. + +Signed-off-by: Thomas Gleixner +--- + fs/buffer.c | 21 +++++++-------------- + fs/ext4/page-io.c | 6 ++---- + fs/ntfs/aops.c | 10 +++------- + fs/xfs/xfs_aops.c | 6 ++---- + include/linux/buffer_head.h | 34 ++++++++++++++++++++++++++++++++++ + 5 files changed, 48 insertions(+), 29 deletions(-) + +--- a/fs/buffer.c ++++ b/fs/buffer.c +@@ -302,8 +302,7 @@ static void end_buffer_async_read(struct + * decide that the page is now completely done. + */ + first = page_buffers(page); +- local_irq_save(flags); +- bit_spin_lock(BH_Uptodate_Lock, &first->b_state); ++ flags = bh_uptodate_lock_irqsave(first); + clear_buffer_async_read(bh); + unlock_buffer(bh); + tmp = bh; +@@ -316,8 +315,7 @@ static void end_buffer_async_read(struct + } + tmp = tmp->b_this_page; + } while (tmp != bh); +- bit_spin_unlock(BH_Uptodate_Lock, &first->b_state); +- local_irq_restore(flags); ++ bh_uptodate_unlock_irqrestore(first, flags); + + /* + * If none of the buffers had errors and they are all +@@ -329,9 +327,7 @@ static void end_buffer_async_read(struct + return; + + still_busy: +- bit_spin_unlock(BH_Uptodate_Lock, &first->b_state); +- local_irq_restore(flags); +- return; ++ bh_uptodate_unlock_irqrestore(first, flags); + } + + /* +@@ -358,8 +354,7 @@ void end_buffer_async_write(struct buffe + } + + first = page_buffers(page); +- local_irq_save(flags); +- bit_spin_lock(BH_Uptodate_Lock, &first->b_state); ++ flags = bh_uptodate_lock_irqsave(first); + + clear_buffer_async_write(bh); + unlock_buffer(bh); +@@ -371,15 +366,12 @@ void end_buffer_async_write(struct buffe + } + tmp = tmp->b_this_page; + } +- bit_spin_unlock(BH_Uptodate_Lock, &first->b_state); +- local_irq_restore(flags); ++ bh_uptodate_unlock_irqrestore(first, flags); + end_page_writeback(page); + return; + + still_busy: +- bit_spin_unlock(BH_Uptodate_Lock, &first->b_state); +- local_irq_restore(flags); +- return; ++ bh_uptodate_unlock_irqrestore(first, flags); + } + EXPORT_SYMBOL(end_buffer_async_write); + +@@ -3417,6 +3409,7 @@ struct buffer_head *alloc_buffer_head(gf + struct buffer_head *ret = kmem_cache_zalloc(bh_cachep, gfp_flags); + if (ret) { + INIT_LIST_HEAD(&ret->b_assoc_buffers); ++ buffer_head_init_locks(ret); + preempt_disable(); + __this_cpu_inc(bh_accounting.nr); + recalc_bh_state(); +--- a/fs/ext4/page-io.c ++++ b/fs/ext4/page-io.c +@@ -95,8 +95,7 @@ static void ext4_finish_bio(struct bio * + * We check all buffers in the page under BH_Uptodate_Lock + * to avoid races with other end io clearing async_write flags + */ +- local_irq_save(flags); +- bit_spin_lock(BH_Uptodate_Lock, &head->b_state); ++ flags = bh_uptodate_lock_irqsave(head); + do { + if (bh_offset(bh) < bio_start || + bh_offset(bh) + bh->b_size > bio_end) { +@@ -108,8 +107,7 @@ static void ext4_finish_bio(struct bio * + if (bio->bi_status) + buffer_io_error(bh); + } while ((bh = bh->b_this_page) != head); +- bit_spin_unlock(BH_Uptodate_Lock, &head->b_state); +- local_irq_restore(flags); ++ bh_uptodate_unlock_irqrestore(head, flags); + if (!under_io) { + #ifdef CONFIG_EXT4_FS_ENCRYPTION + if (data_page) +--- a/fs/ntfs/aops.c ++++ b/fs/ntfs/aops.c +@@ -108,8 +108,7 @@ static void ntfs_end_buffer_async_read(s + "0x%llx.", (unsigned long long)bh->b_blocknr); + } + first = page_buffers(page); +- local_irq_save(flags); +- bit_spin_lock(BH_Uptodate_Lock, &first->b_state); ++ flags = bh_uptodate_lock_irqsave(first); + clear_buffer_async_read(bh); + unlock_buffer(bh); + tmp = bh; +@@ -124,8 +123,7 @@ static void ntfs_end_buffer_async_read(s + } + tmp = tmp->b_this_page; + } while (tmp != bh); +- bit_spin_unlock(BH_Uptodate_Lock, &first->b_state); +- local_irq_restore(flags); ++ bh_uptodate_unlock_irqrestore(first, flags); + /* + * If none of the buffers had errors then we can set the page uptodate, + * but we first have to perform the post read mst fixups, if the +@@ -160,9 +158,7 @@ static void ntfs_end_buffer_async_read(s + unlock_page(page); + return; + still_busy: +- bit_spin_unlock(BH_Uptodate_Lock, &first->b_state); +- local_irq_restore(flags); +- return; ++ bh_uptodate_unlock_irqrestore(first, flags); + } + + /** +--- a/fs/xfs/xfs_aops.c ++++ b/fs/xfs/xfs_aops.c +@@ -120,8 +120,7 @@ xfs_finish_page_writeback( + ASSERT(bvec->bv_offset + bvec->bv_len <= PAGE_SIZE); + ASSERT((bvec->bv_len & (i_blocksize(inode) - 1)) == 0); + +- local_irq_save(flags); +- bit_spin_lock(BH_Uptodate_Lock, &head->b_state); ++ flags = bh_uptodate_lock_irqsave(head); + do { + if (off >= bvec->bv_offset && + off < bvec->bv_offset + bvec->bv_len) { +@@ -143,8 +142,7 @@ xfs_finish_page_writeback( + } + off += bh->b_size; + } while ((bh = bh->b_this_page) != head); +- bit_spin_unlock(BH_Uptodate_Lock, &head->b_state); +- local_irq_restore(flags); ++ bh_uptodate_unlock_irqrestore(head, flags); + + if (!busy) + end_page_writeback(bvec->bv_page); +--- a/include/linux/buffer_head.h ++++ b/include/linux/buffer_head.h +@@ -76,8 +76,42 @@ struct buffer_head { + struct address_space *b_assoc_map; /* mapping this buffer is + associated with */ + atomic_t b_count; /* users using this buffer_head */ ++#ifdef CONFIG_PREEMPT_RT_BASE ++ spinlock_t b_uptodate_lock; ++#endif + }; + ++static inline unsigned long bh_uptodate_lock_irqsave(struct buffer_head *bh) ++{ ++ unsigned long flags; ++ ++#ifndef CONFIG_PREEMPT_RT_BASE ++ local_irq_save(flags); ++ bit_spin_lock(BH_Uptodate_Lock, &bh->b_state); ++#else ++ spin_lock_irqsave(&bh->b_uptodate_lock, flags); ++#endif ++ return flags; ++} ++ ++static inline void ++bh_uptodate_unlock_irqrestore(struct buffer_head *bh, unsigned long flags) ++{ ++#ifndef CONFIG_PREEMPT_RT_BASE ++ bit_spin_unlock(BH_Uptodate_Lock, &bh->b_state); ++ local_irq_restore(flags); ++#else ++ spin_unlock_irqrestore(&bh->b_uptodate_lock, flags); ++#endif ++} ++ ++static inline void buffer_head_init_locks(struct buffer_head *bh) ++{ ++#ifdef CONFIG_PREEMPT_RT_BASE ++ spin_lock_init(&bh->b_uptodate_lock); ++#endif ++} ++ + /* + * macro tricks to expand the set_buffer_foo(), clear_buffer_foo() + * and buffer_foo() functions. diff --git a/patches/features/all/rt/ftrace-Fix-trace-header-alignment.patch b/patches/features/all/rt/ftrace-Fix-trace-header-alignment.patch new file mode 100644 index 00000000000..8e78b61e61a --- /dev/null +++ b/patches/features/all/rt/ftrace-Fix-trace-header-alignment.patch @@ -0,0 +1,46 @@ +From: Mike Galbraith +Date: Sun, 16 Oct 2016 05:08:30 +0200 +Subject: [PATCH] ftrace: Fix trace header alignment +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Line up helper arrows to the right column. + +Cc: stable-rt@vger.kernel.org +Signed-off-by: Mike Galbraith +[bigeasy: fixup function tracer header] +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/trace/trace.c | 22 +++++++++++----------- + 1 file changed, 11 insertions(+), 11 deletions(-) + +--- a/kernel/trace/trace.c ++++ b/kernel/trace/trace.c +@@ -3343,17 +3343,17 @@ get_total_entries(struct trace_buffer *b + + static void print_lat_help_header(struct seq_file *m) + { +- seq_puts(m, "# _--------=> CPU# \n" +- "# / _-------=> irqs-off \n" +- "# | / _------=> need-resched \n" +- "# || / _-----=> need-resched_lazy \n" +- "# ||| / _----=> hardirq/softirq \n" +- "# |||| / _---=> preempt-depth \n" +- "# ||||| / _--=> preempt-lazy-depth\n" +- "# |||||| / _-=> migrate-disable \n" +- "# ||||||| / delay \n" +- "# cmd pid |||||||| time | caller \n" +- "# \\ / |||||||| \\ | / \n"); ++ seq_puts(m, "# _--------=> CPU# \n" ++ "# / _-------=> irqs-off \n" ++ "# | / _------=> need-resched \n" ++ "# || / _-----=> need-resched_lazy \n" ++ "# ||| / _----=> hardirq/softirq \n" ++ "# |||| / _---=> preempt-depth \n" ++ "# ||||| / _--=> preempt-lazy-depth\n" ++ "# |||||| / _-=> migrate-disable \n" ++ "# ||||||| / delay \n" ++ "# cmd pid |||||||| time | caller \n" ++ "# \\ / |||||||| \\ | / \n"); + } + + static void print_event_info(struct trace_buffer *buf, struct seq_file *m) diff --git a/patches/features/all/rt/ftrace-migrate-disable-tracing.patch b/patches/features/all/rt/ftrace-migrate-disable-tracing.patch new file mode 100644 index 00000000000..87262988529 --- /dev/null +++ b/patches/features/all/rt/ftrace-migrate-disable-tracing.patch @@ -0,0 +1,74 @@ +From: Thomas Gleixner +Date: Sun, 17 Jul 2011 21:56:42 +0200 +Subject: trace: Add migrate-disabled counter to tracing output +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Signed-off-by: Thomas Gleixner +--- + include/linux/trace_events.h | 2 ++ + kernel/trace/trace.c | 9 ++++++--- + kernel/trace/trace_events.c | 2 ++ + kernel/trace/trace_output.c | 5 +++++ + 4 files changed, 15 insertions(+), 3 deletions(-) + +--- a/include/linux/trace_events.h ++++ b/include/linux/trace_events.h +@@ -62,6 +62,8 @@ struct trace_entry { + unsigned char flags; + unsigned char preempt_count; + int pid; ++ unsigned short migrate_disable; ++ unsigned short padding; + }; + + #define TRACE_EVENT_TYPE_MAX \ +--- a/kernel/trace/trace.c ++++ b/kernel/trace/trace.c +@@ -2141,6 +2141,8 @@ tracing_generic_entry_update(struct trac + ((pc & SOFTIRQ_OFFSET) ? TRACE_FLAG_SOFTIRQ : 0) | + (tif_need_resched() ? TRACE_FLAG_NEED_RESCHED : 0) | + (test_preempt_need_resched() ? TRACE_FLAG_PREEMPT_RESCHED : 0); ++ ++ entry->migrate_disable = (tsk) ? __migrate_disabled(tsk) & 0xFF : 0; + } + EXPORT_SYMBOL_GPL(tracing_generic_entry_update); + +@@ -3344,9 +3346,10 @@ static void print_lat_help_header(struct + "# | / _----=> need-resched \n" + "# || / _---=> hardirq/softirq \n" + "# ||| / _--=> preempt-depth \n" +- "# |||| / delay \n" +- "# cmd pid ||||| time | caller \n" +- "# \\ / ||||| \\ | / \n"); ++ "# |||| / _--=> migrate-disable\n" ++ "# ||||| / delay \n" ++ "# cmd pid |||||| time | caller \n" ++ "# \\ / ||||| \\ | / \n"); + } + + static void print_event_info(struct trace_buffer *buf, struct seq_file *m) +--- a/kernel/trace/trace_events.c ++++ b/kernel/trace/trace_events.c +@@ -187,6 +187,8 @@ static int trace_define_common_fields(vo + __common_field(unsigned char, flags); + __common_field(unsigned char, preempt_count); + __common_field(int, pid); ++ __common_field(unsigned short, migrate_disable); ++ __common_field(unsigned short, padding); + + return ret; + } +--- a/kernel/trace/trace_output.c ++++ b/kernel/trace/trace_output.c +@@ -493,6 +493,11 @@ int trace_print_lat_fmt(struct trace_seq + else + trace_seq_putc(s, '.'); + ++ if (entry->migrate_disable) ++ trace_seq_printf(s, "%x", entry->migrate_disable); ++ else ++ trace_seq_putc(s, '.'); ++ + return !trace_seq_has_overflowed(s); + } + diff --git a/patches/features/all/rt/futex-Ensure-lock-unlock-symetry-versus-pi_lock-and-.patch b/patches/features/all/rt/futex-Ensure-lock-unlock-symetry-versus-pi_lock-and-.patch new file mode 100644 index 00000000000..5ecd4ec2490 --- /dev/null +++ b/patches/features/all/rt/futex-Ensure-lock-unlock-symetry-versus-pi_lock-and-.patch @@ -0,0 +1,43 @@ +From: Thomas Gleixner +Date: Fri, 1 Mar 2013 11:17:42 +0100 +Subject: futex: Ensure lock/unlock symetry versus pi_lock and hash bucket lock +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +In exit_pi_state_list() we have the following locking construct: + + spin_lock(&hb->lock); + raw_spin_lock_irq(&curr->pi_lock); + + ... + spin_unlock(&hb->lock); + +In !RT this works, but on RT the migrate_enable() function which is +called from spin_unlock() sees atomic context due to the held pi_lock +and just decrements the migrate_disable_atomic counter of the +task. Now the next call to migrate_disable() sees the counter being +negative and issues a warning. That check should be in +migrate_enable() already. + +Fix this by dropping pi_lock before unlocking hb->lock and reaquire +pi_lock after that again. This is safe as the loop code reevaluates +head again under the pi_lock. + +Reported-by: Yong Zhang +Signed-off-by: Thomas Gleixner +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/futex.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/kernel/futex.c ++++ b/kernel/futex.c +@@ -936,7 +936,9 @@ void exit_pi_state_list(struct task_stru + if (head->next != next) { + /* retain curr->pi_lock for the loop invariant */ + raw_spin_unlock(&pi_state->pi_mutex.wait_lock); ++ raw_spin_unlock_irq(&curr->pi_lock); + spin_unlock(&hb->lock); ++ raw_spin_lock_irq(&curr->pi_lock); + put_pi_state(pi_state); + continue; + } diff --git a/patches/features/all/rt/futex-requeue-pi-fix.patch b/patches/features/all/rt/futex-requeue-pi-fix.patch new file mode 100644 index 00000000000..ebaa24f10d0 --- /dev/null +++ b/patches/features/all/rt/futex-requeue-pi-fix.patch @@ -0,0 +1,114 @@ +From: Steven Rostedt +Date: Tue, 14 Jul 2015 14:26:34 +0200 +Subject: futex: Fix bug on when a requeued RT task times out +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Requeue with timeout causes a bug with PREEMPT_RT_FULL. + +The bug comes from a timed out condition. + + + TASK 1 TASK 2 + ------ ------ + futex_wait_requeue_pi() + futex_wait_queue_me() + + + double_lock_hb(); + + raw_spin_lock(pi_lock); + if (current->pi_blocked_on) { + } else { + current->pi_blocked_on = PI_WAKE_INPROGRESS; + run_spin_unlock(pi_lock); + spin_lock(hb->lock); <-- blocked! + + + plist_for_each_entry_safe(this) { + rt_mutex_start_proxy_lock(); + task_blocks_on_rt_mutex(); + BUG_ON(task->pi_blocked_on)!!!! + +The BUG_ON() actually has a check for PI_WAKE_INPROGRESS, but the +problem is that, after TASK 1 sets PI_WAKE_INPROGRESS, it then tries to +grab the hb->lock, which it fails to do so. As the hb->lock is a mutex, +it will block and set the "pi_blocked_on" to the hb->lock. + +When TASK 2 goes to requeue it, the check for PI_WAKE_INPROGESS fails +because the task1's pi_blocked_on is no longer set to that, but instead, +set to the hb->lock. + +The fix: + +When calling rt_mutex_start_proxy_lock() a check is made to see +if the proxy tasks pi_blocked_on is set. If so, exit out early. +Otherwise set it to a new flag PI_REQUEUE_INPROGRESS, which notifies +the proxy task that it is being requeued, and will handle things +appropriately. + + +Signed-off-by: Steven Rostedt +Signed-off-by: Thomas Gleixner +--- + kernel/locking/rtmutex.c | 32 +++++++++++++++++++++++++++++++- + kernel/locking/rtmutex_common.h | 1 + + 2 files changed, 32 insertions(+), 1 deletion(-) + +--- a/kernel/locking/rtmutex.c ++++ b/kernel/locking/rtmutex.c +@@ -137,7 +137,8 @@ static void fixup_rt_mutex_waiters(struc + + static int rt_mutex_real_waiter(struct rt_mutex_waiter *waiter) + { +- return waiter && waiter != PI_WAKEUP_INPROGRESS; ++ return waiter && waiter != PI_WAKEUP_INPROGRESS && ++ waiter != PI_REQUEUE_INPROGRESS; + } + + /* +@@ -1742,6 +1743,35 @@ int __rt_mutex_start_proxy_lock(struct r + if (try_to_take_rt_mutex(lock, task, NULL)) + return 1; + ++#ifdef CONFIG_PREEMPT_RT_FULL ++ /* ++ * In PREEMPT_RT there's an added race. ++ * If the task, that we are about to requeue, times out, ++ * it can set the PI_WAKEUP_INPROGRESS. This tells the requeue ++ * to skip this task. But right after the task sets ++ * its pi_blocked_on to PI_WAKEUP_INPROGRESS it can then ++ * block on the spin_lock(&hb->lock), which in RT is an rtmutex. ++ * This will replace the PI_WAKEUP_INPROGRESS with the actual ++ * lock that it blocks on. We *must not* place this task ++ * on this proxy lock in that case. ++ * ++ * To prevent this race, we first take the task's pi_lock ++ * and check if it has updated its pi_blocked_on. If it has, ++ * we assume that it woke up and we return -EAGAIN. ++ * Otherwise, we set the task's pi_blocked_on to ++ * PI_REQUEUE_INPROGRESS, so that if the task is waking up ++ * it will know that we are in the process of requeuing it. ++ */ ++ raw_spin_lock(&task->pi_lock); ++ if (task->pi_blocked_on) { ++ raw_spin_unlock(&task->pi_lock); ++ raw_spin_unlock_irq(&lock->wait_lock); ++ return -EAGAIN; ++ } ++ task->pi_blocked_on = PI_REQUEUE_INPROGRESS; ++ raw_spin_unlock(&task->pi_lock); ++#endif ++ + /* We enforce deadlock detection for futexes */ + ret = task_blocks_on_rt_mutex(lock, waiter, task, + RT_MUTEX_FULL_CHAINWALK); +--- a/kernel/locking/rtmutex_common.h ++++ b/kernel/locking/rtmutex_common.h +@@ -130,6 +130,7 @@ enum rtmutex_chainwalk { + * PI-futex support (proxy locking functions, etc.): + */ + #define PI_WAKEUP_INPROGRESS ((struct rt_mutex_waiter *) 1) ++#define PI_REQUEUE_INPROGRESS ((struct rt_mutex_waiter *) 2) + + extern struct task_struct *rt_mutex_next_owner(struct rt_mutex *lock); + extern void rt_mutex_init_proxy_locked(struct rt_mutex *lock, diff --git a/patches/features/all/rt/futex-workaround-migrate_disable-enable-in-different.patch b/patches/features/all/rt/futex-workaround-migrate_disable-enable-in-different.patch new file mode 100644 index 00000000000..30346cd011a --- /dev/null +++ b/patches/features/all/rt/futex-workaround-migrate_disable-enable-in-different.patch @@ -0,0 +1,59 @@ +From: Thomas Gleixner +Date: Wed, 8 Mar 2017 14:23:35 +0100 +Subject: [PATCH] futex: workaround migrate_disable/enable in different context +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +migrate_disable()/migrate_enable() takes a different path in atomic() vs +!atomic() context. These little hacks ensure that we don't underflow / overflow +the migrate code counts properly while we lock the hb lockwith interrupts +enabled and unlock it with interrupts disabled. + +Signed-off-by: Thomas Gleixner +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/futex.c | 19 +++++++++++++++++++ + 1 file changed, 19 insertions(+) + +--- a/kernel/futex.c ++++ b/kernel/futex.c +@@ -2816,9 +2816,18 @@ static int futex_lock_pi(u32 __user *uad + * lock handoff sequence. + */ + raw_spin_lock_irq(&q.pi_state->pi_mutex.wait_lock); ++ /* ++ * the migrate_disable() here disables migration in the in_atomic() fast ++ * path which is enabled again in the following spin_unlock(). We have ++ * one migrate_disable() pending in the slow-path which is reversed ++ * after the raw_spin_unlock_irq() where we leave the atomic context. ++ */ ++ migrate_disable(); ++ + spin_unlock(q.lock_ptr); + ret = __rt_mutex_start_proxy_lock(&q.pi_state->pi_mutex, &rt_waiter, current); + raw_spin_unlock_irq(&q.pi_state->pi_mutex.wait_lock); ++ migrate_enable(); + + if (ret) { + if (ret == 1) +@@ -2965,11 +2974,21 @@ static int futex_unlock_pi(u32 __user *u + * observed. + */ + raw_spin_lock_irq(&pi_state->pi_mutex.wait_lock); ++ /* ++ * Magic trickery for now to make the RT migrate disable ++ * logic happy. The following spin_unlock() happens with ++ * interrupts disabled so the internal migrate_enable() ++ * won't undo the migrate_disable() which was issued when ++ * locking hb->lock. ++ */ ++ migrate_disable(); + spin_unlock(&hb->lock); + + /* drops pi_state->pi_mutex.wait_lock */ + ret = wake_futex_pi(uaddr, uval, pi_state); + ++ migrate_enable(); ++ + put_pi_state(pi_state); + + /* diff --git a/patches/features/all/rt/genirq-disable-irqpoll-on-rt.patch b/patches/features/all/rt/genirq-disable-irqpoll-on-rt.patch new file mode 100644 index 00000000000..f9627057843 --- /dev/null +++ b/patches/features/all/rt/genirq-disable-irqpoll-on-rt.patch @@ -0,0 +1,38 @@ +From: Ingo Molnar +Date: Fri, 3 Jul 2009 08:29:57 -0500 +Subject: genirq: Disable irqpoll on -rt +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Creates long latencies for no value + +Signed-off-by: Ingo Molnar +Signed-off-by: Thomas Gleixner + +--- + kernel/irq/spurious.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +--- a/kernel/irq/spurious.c ++++ b/kernel/irq/spurious.c +@@ -445,6 +445,10 @@ MODULE_PARM_DESC(noirqdebug, "Disable ir + + static int __init irqfixup_setup(char *str) + { ++#ifdef CONFIG_PREEMPT_RT_BASE ++ pr_warn("irqfixup boot option not supported w/ CONFIG_PREEMPT_RT_BASE\n"); ++ return 1; ++#endif + irqfixup = 1; + printk(KERN_WARNING "Misrouted IRQ fixup support enabled.\n"); + printk(KERN_WARNING "This may impact system performance.\n"); +@@ -457,6 +461,10 @@ module_param(irqfixup, int, 0644); + + static int __init irqpoll_setup(char *str) + { ++#ifdef CONFIG_PREEMPT_RT_BASE ++ pr_warn("irqpoll boot option not supported w/ CONFIG_PREEMPT_RT_BASE\n"); ++ return 1; ++#endif + irqfixup = 2; + printk(KERN_WARNING "Misrouted IRQ fixup and polling support " + "enabled\n"); diff --git a/patches/features/all/rt/genirq-do-not-invoke-the-affinity-callback-via-a-wor.patch b/patches/features/all/rt/genirq-do-not-invoke-the-affinity-callback-via-a-wor.patch new file mode 100644 index 00000000000..c0b1342c16e --- /dev/null +++ b/patches/features/all/rt/genirq-do-not-invoke-the-affinity-callback-via-a-wor.patch @@ -0,0 +1,122 @@ +From: Sebastian Andrzej Siewior +Date: Wed, 21 Aug 2013 17:48:46 +0200 +Subject: genirq: Do not invoke the affinity callback via a workqueue on RT +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Joe Korty reported, that __irq_set_affinity_locked() schedules a +workqueue while holding a rawlock which results in a might_sleep() +warning. +This patch uses swork_queue() instead. + +Signed-off-by: Sebastian Andrzej Siewior +--- + include/linux/interrupt.h | 6 ++++++ + kernel/irq/manage.c | 43 ++++++++++++++++++++++++++++++++++++++++--- + 2 files changed, 46 insertions(+), 3 deletions(-) + +--- a/include/linux/interrupt.h ++++ b/include/linux/interrupt.h +@@ -15,6 +15,7 @@ + #include + #include + #include ++#include + + #include + #include +@@ -227,6 +228,7 @@ extern void resume_device_irqs(void); + * struct irq_affinity_notify - context for notification of IRQ affinity changes + * @irq: Interrupt to which notification applies + * @kref: Reference count, for internal use ++ * @swork: Swork item, for internal use + * @work: Work item, for internal use + * @notify: Function to be called on change. This will be + * called in process context. +@@ -238,7 +240,11 @@ extern void resume_device_irqs(void); + struct irq_affinity_notify { + unsigned int irq; + struct kref kref; ++#ifdef CONFIG_PREEMPT_RT_BASE ++ struct swork_event swork; ++#else + struct work_struct work; ++#endif + void (*notify)(struct irq_affinity_notify *, const cpumask_t *mask); + void (*release)(struct kref *ref); + }; +--- a/kernel/irq/manage.c ++++ b/kernel/irq/manage.c +@@ -226,7 +226,12 @@ int irq_set_affinity_locked(struct irq_d + + if (desc->affinity_notify) { + kref_get(&desc->affinity_notify->kref); ++ ++#ifdef CONFIG_PREEMPT_RT_BASE ++ swork_queue(&desc->affinity_notify->swork); ++#else + schedule_work(&desc->affinity_notify->work); ++#endif + } + irqd_set(data, IRQD_AFFINITY_SET); + +@@ -264,10 +269,8 @@ int irq_set_affinity_hint(unsigned int i + } + EXPORT_SYMBOL_GPL(irq_set_affinity_hint); + +-static void irq_affinity_notify(struct work_struct *work) ++static void _irq_affinity_notify(struct irq_affinity_notify *notify) + { +- struct irq_affinity_notify *notify = +- container_of(work, struct irq_affinity_notify, work); + struct irq_desc *desc = irq_to_desc(notify->irq); + cpumask_var_t cpumask; + unsigned long flags; +@@ -289,6 +292,35 @@ static void irq_affinity_notify(struct w + kref_put(¬ify->kref, notify->release); + } + ++#ifdef CONFIG_PREEMPT_RT_BASE ++static void init_helper_thread(void) ++{ ++ static int init_sworker_once; ++ ++ if (init_sworker_once) ++ return; ++ if (WARN_ON(swork_get())) ++ return; ++ init_sworker_once = 1; ++} ++ ++static void irq_affinity_notify(struct swork_event *swork) ++{ ++ struct irq_affinity_notify *notify = ++ container_of(swork, struct irq_affinity_notify, swork); ++ _irq_affinity_notify(notify); ++} ++ ++#else ++ ++static void irq_affinity_notify(struct work_struct *work) ++{ ++ struct irq_affinity_notify *notify = ++ container_of(work, struct irq_affinity_notify, work); ++ _irq_affinity_notify(notify); ++} ++#endif ++ + /** + * irq_set_affinity_notifier - control notification of IRQ affinity changes + * @irq: Interrupt for which to enable/disable notification +@@ -317,7 +349,12 @@ irq_set_affinity_notifier(unsigned int i + if (notify) { + notify->irq = irq; + kref_init(¬ify->kref); ++#ifdef CONFIG_PREEMPT_RT_BASE ++ INIT_SWORK(¬ify->swork, irq_affinity_notify); ++ init_helper_thread(); ++#else + INIT_WORK(¬ify->work, irq_affinity_notify); ++#endif + } + + raw_spin_lock_irqsave(&desc->lock, flags); diff --git a/patches/features/all/rt/genirq-force-threading.patch b/patches/features/all/rt/genirq-force-threading.patch new file mode 100644 index 00000000000..3e0e6875cd7 --- /dev/null +++ b/patches/features/all/rt/genirq-force-threading.patch @@ -0,0 +1,49 @@ +Subject: genirq: Force interrupt thread on RT +From: Thomas Gleixner +Date: Sun, 03 Apr 2011 11:57:29 +0200 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Force threaded_irqs and optimize the code (force_irqthreads) in regard +to this. + +Signed-off-by: Thomas Gleixner +--- + include/linux/interrupt.h | 6 +++++- + kernel/irq/manage.c | 2 ++ + 2 files changed, 7 insertions(+), 1 deletion(-) + +--- a/include/linux/interrupt.h ++++ b/include/linux/interrupt.h +@@ -429,9 +429,13 @@ extern int irq_set_irqchip_state(unsigne + bool state); + + #ifdef CONFIG_IRQ_FORCED_THREADING ++# ifndef CONFIG_PREEMPT_RT_BASE + extern bool force_irqthreads; ++# else ++# define force_irqthreads (true) ++# endif + #else +-#define force_irqthreads (0) ++#define force_irqthreads (false) + #endif + + #ifndef __ARCH_SET_SOFTIRQ_PENDING +--- a/kernel/irq/manage.c ++++ b/kernel/irq/manage.c +@@ -24,6 +24,7 @@ + #include "internals.h" + + #ifdef CONFIG_IRQ_FORCED_THREADING ++# ifndef CONFIG_PREEMPT_RT_BASE + __read_mostly bool force_irqthreads; + + static int __init setup_forced_irqthreads(char *arg) +@@ -32,6 +33,7 @@ static int __init setup_forced_irqthread + return 0; + } + early_param("threadirqs", setup_forced_irqthreads); ++# endif + #endif + + static void __synchronize_hardirq(struct irq_desc *desc) diff --git a/patches/features/all/rt/genirq-update-irq_set_irqchip_state-documentation.patch b/patches/features/all/rt/genirq-update-irq_set_irqchip_state-documentation.patch new file mode 100644 index 00000000000..a5348fa0dd1 --- /dev/null +++ b/patches/features/all/rt/genirq-update-irq_set_irqchip_state-documentation.patch @@ -0,0 +1,26 @@ +From: Josh Cartwright +Date: Thu, 11 Feb 2016 11:54:00 -0600 +Subject: genirq: update irq_set_irqchip_state documentation +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +On -rt kernels, the use of migrate_disable()/migrate_enable() is +sufficient to guarantee a task isn't moved to another CPU. Update the +irq_set_irqchip_state() documentation to reflect this. + +Signed-off-by: Josh Cartwright +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/irq/manage.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/kernel/irq/manage.c ++++ b/kernel/irq/manage.c +@@ -2202,7 +2202,7 @@ EXPORT_SYMBOL_GPL(irq_get_irqchip_state) + * This call sets the internal irqchip state of an interrupt, + * depending on the value of @which. + * +- * This function should be called with preemption disabled if the ++ * This function should be called with migration disabled if the + * interrupt controller has per-cpu registers. + */ + int irq_set_irqchip_state(unsigned int irq, enum irqchip_irq_state which, diff --git a/patches/features/all/rt/genpatch.py b/patches/features/all/rt/genpatch.py new file mode 100755 index 00000000000..eb3792d3530 --- /dev/null +++ b/patches/features/all/rt/genpatch.py @@ -0,0 +1,139 @@ +#!/usr/bin/python3 + +import codecs, errno, io, os, os.path, re, shutil, subprocess, sys, tempfile + +def main(source, version=None): + patch_dir = 'debian/patches' + rt_patch_dir = 'features/all/rt' + series_name = 'series-rt' + old_series = set() + new_series = set() + + try: + with open(os.path.join(patch_dir, series_name), 'r') as series_fh: + for line in series_fh: + name = line.strip() + if name != '' and name[0] != '#': + old_series.add(name) + except FileNotFoundError: + pass + + with open(os.path.join(patch_dir, series_name), 'w') as series_fh: + # Add directory prefix to all filenames. + # Add Origin to all patch headers. + def add_patch(name, source_patch, origin): + name = os.path.join(rt_patch_dir, name) + path = os.path.join(patch_dir, name) + try: + os.unlink(path) + except FileNotFoundError: + pass + with open(path, 'w') as patch: + in_header = True + for line in source_patch: + if in_header and re.match(r'^(\n|[^\w\s]|Index:)', line): + patch.write('Origin: %s\n' % origin) + if line != '\n': + patch.write('\n') + in_header = False + patch.write(line) + series_fh.write(name) + series_fh.write('\n') + new_series.add(name) + + if os.path.isdir(os.path.join(source, '.git')): + # Export rebased branch from stable-rt git as patch series + up_ver = re.sub(r'-rt\d+$', '', version) + env = os.environ.copy() + env['GIT_DIR'] = os.path.join(source, '.git') + env['DEBIAN_KERNEL_KEYRING'] = 'rt-signing-key.pgp' + + # Validate tag signature + gpg_wrapper = os.path.join(os.getcwd(), + "debian/bin/git-tag-gpg-wrapper") + verify_proc = subprocess.Popen(['git', + '-c', 'gpg.program=%s' % gpg_wrapper, + 'tag', '-v', 'v%s-rebase' % version], + env=env) + if verify_proc.wait(): + raise RuntimeError("GPG tag verification failed") + + args = ['git', 'format-patch', 'v%s..v%s-rebase' % (up_ver, version)] + format_proc = subprocess.Popen(args, + cwd=os.path.join(patch_dir, rt_patch_dir), + env=env, stdout=subprocess.PIPE) + with io.open(format_proc.stdout.fileno(), encoding='utf-8') as pipe: + for line in pipe: + name = line.strip('\n') + with open(os.path.join(patch_dir, rt_patch_dir, name)) as \ + source_patch: + patch_from = source_patch.readline() + match = re.match(r'From ([0-9a-f]{40}) ', patch_from) + assert match + origin = 'https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=%s' % match.group(1) + add_patch(name, source_patch, origin) + + else: + # Get version and upstream version + if version is None: + match = re.search(r'(?:^|/)patches-(.+)\.tar\.[gx]z$', source) + assert match, 'no version specified or found in filename' + version = match.group(1) + match = re.match(r'^(\d+\.\d+)(?:\.\d+|-rc\d+)?-rt\d+$', version) + assert match, 'could not parse version string' + up_ver = match.group(1) + + # Expect an accompanying signature, and validate it + source_sig = re.sub(r'.[gx]z$', '.sign', source) + unxz_proc = subprocess.Popen(['xzcat', source], + stdout=subprocess.PIPE) + verify_output = subprocess.check_output( + ['gpgv', '--status-fd', '1', + '--keyring', 'debian/upstream/rt-signing-key.pgp', + '--ignore-time-conflict', source_sig, '-'], + stdin=unxz_proc.stdout) + if unxz_proc.wait() or \ + not re.search(r'^\[GNUPG:\]\s+VALIDSIG\s', + codecs.decode(verify_output), + re.MULTILINE): + os.write(2, verify_output) # bytes not str! + raise RuntimeError("GPG signature verification failed") + + temp_dir = tempfile.mkdtemp(prefix='rt-genpatch', dir='debian') + try: + # Unpack tarball + subprocess.check_call(['tar', '-C', temp_dir, '-xaf', source]) + source_dir = os.path.join(temp_dir, 'patches') + assert os.path.isdir(source_dir), 'tarball does not contain patches directory' + + # Copy patch series + origin = 'https://www.kernel.org/pub/linux/kernel/projects/rt/%s/older/patches-%s.tar.xz' % (up_ver, version) + with open(os.path.join(source_dir, 'series'), 'r') as \ + source_series_fh: + for line in source_series_fh: + name = line.strip() + if name != '' and name[0] != '#': + with open(os.path.join(source_dir, name)) as source_patch: + add_patch(name, source_patch, origin) + else: + # Leave comments and empty lines unchanged + series_fh.write(line) + finally: + shutil.rmtree(temp_dir) + + for name in new_series: + if name in old_series: + old_series.remove(name) + else: + print('Added patch', os.path.join(patch_dir, name)) + + for name in old_series: + print('Obsoleted patch', os.path.join(patch_dir, name)) + +if __name__ == '__main__': + if not (1 <= len(sys.argv) <= 3): + print('Usage: %s {TAR [RT-VERSION] | REPO RT-VERSION}' % sys.argv[0], file=sys.stderr) + print('TAR is a tarball of patches.', file=sys.stderr) + print('REPO is a git repo containing the given RT-VERSION.', file=sys.stderr) + sys.exit(2) + main(*sys.argv[1:]) diff --git a/patches/features/all/rt/greybus-audio-don-t-inclide-rwlock.h-directly.patch b/patches/features/all/rt/greybus-audio-don-t-inclide-rwlock.h-directly.patch new file mode 100644 index 00000000000..0887cf36d46 --- /dev/null +++ b/patches/features/all/rt/greybus-audio-don-t-inclide-rwlock.h-directly.patch @@ -0,0 +1,31 @@ +From: Sebastian Andrzej Siewior +Date: Thu, 5 Oct 2017 14:38:52 +0200 +Subject: [PATCH] greybus: audio: don't inclide rwlock.h directly. +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +rwlock.h should not be included directly. Instead linux/splinlock.h +should be included. One thing it does is to break the RT build. + +Cc: Vaibhav Agarwal +Cc: Mark Greer +Cc: Johan Hovold +Cc: Alex Elder +Cc: Greg Kroah-Hartman +Cc: greybus-dev@lists.linaro.org +Cc: devel@driverdev.osuosl.org +Signed-off-by: Sebastian Andrzej Siewior +--- + drivers/staging/greybus/audio_manager.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/staging/greybus/audio_manager.c ++++ b/drivers/staging/greybus/audio_manager.c +@@ -10,7 +10,7 @@ + #include + #include + #include +-#include ++#include + #include + + #include "audio_manager.h" diff --git a/patches/features/all/rt/hotplug-duct-tape-RT-rwlock-usage-for-non-RT.patch b/patches/features/all/rt/hotplug-duct-tape-RT-rwlock-usage-for-non-RT.patch new file mode 100644 index 00000000000..f99750bbdf2 --- /dev/null +++ b/patches/features/all/rt/hotplug-duct-tape-RT-rwlock-usage-for-non-RT.patch @@ -0,0 +1,96 @@ +From: Sebastian Andrzej Siewior +Date: Fri, 4 Aug 2017 18:31:00 +0200 +Subject: [PATCH] hotplug: duct-tape RT-rwlock usage for non-RT +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +This type is only available on -RT. We need to craft something for +non-RT. Since the only migrate_disable() user is -RT only, there is no +damage. + +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/cpu.c | 14 +++++++++++++- + 1 file changed, 13 insertions(+), 1 deletion(-) + +--- a/kernel/cpu.c ++++ b/kernel/cpu.c +@@ -73,7 +73,7 @@ static DEFINE_PER_CPU(struct cpuhp_cpu_s + .fail = CPUHP_INVALID, + }; + +-#ifdef CONFIG_HOTPLUG_CPU ++#if defined(CONFIG_HOTPLUG_CPU) && defined(CONFIG_PREEMPT_RT_FULL) + static DEFINE_PER_CPU(struct rt_rw_lock, cpuhp_pin_lock) = \ + __RWLOCK_RT_INITIALIZER(cpuhp_pin_lock); + #endif +@@ -296,6 +296,7 @@ static int cpu_hotplug_disabled; + */ + void pin_current_cpu(void) + { ++#ifdef CONFIG_PREEMPT_RT_FULL + struct rt_rw_lock *cpuhp_pin; + unsigned int cpu; + int ret; +@@ -320,6 +321,7 @@ void pin_current_cpu(void) + goto again; + } + current->pinned_on_cpu = cpu; ++#endif + } + + /** +@@ -327,6 +329,7 @@ void pin_current_cpu(void) + */ + void unpin_current_cpu(void) + { ++#ifdef CONFIG_PREEMPT_RT_FULL + struct rt_rw_lock *cpuhp_pin = this_cpu_ptr(&cpuhp_pin_lock); + + if (WARN_ON(current->pinned_on_cpu != smp_processor_id())) +@@ -334,6 +337,7 @@ void unpin_current_cpu(void) + + current->pinned_on_cpu = -1; + __read_rt_unlock(cpuhp_pin); ++#endif + } + + DEFINE_STATIC_PERCPU_RWSEM(cpu_hotplug_lock); +@@ -803,7 +807,9 @@ static int take_cpu_down(void *_param) + + static int takedown_cpu(unsigned int cpu) + { ++#ifdef CONFIG_PREEMPT_RT_FULL + struct rt_rw_lock *cpuhp_pin = per_cpu_ptr(&cpuhp_pin_lock, cpu); ++#endif + struct cpuhp_cpu_state *st = per_cpu_ptr(&cpuhp_state, cpu); + int err; + +@@ -817,14 +823,18 @@ static int takedown_cpu(unsigned int cpu + */ + irq_lock_sparse(); + ++#ifdef CONFIG_PREEMPT_RT_FULL + __write_rt_lock(cpuhp_pin); ++#endif + + /* + * So now all preempt/rcu users must observe !cpu_active(). + */ + err = stop_machine_cpuslocked(take_cpu_down, NULL, cpumask_of(cpu)); + if (err) { ++#ifdef CONFIG_PREEMPT_RT_FULL + __write_rt_unlock(cpuhp_pin); ++#endif + /* CPU refused to die */ + irq_unlock_sparse(); + /* Unpark the hotplug thread so we can rollback there */ +@@ -843,7 +853,9 @@ static int takedown_cpu(unsigned int cpu + wait_for_ap_thread(st, false); + BUG_ON(st->state != CPUHP_AP_IDLE_DEAD); + ++#ifdef CONFIG_PREEMPT_RT_FULL + __write_rt_unlock(cpuhp_pin); ++#endif + /* Interrupts are moved away from the dying cpu, reenable alloc/free */ + irq_unlock_sparse(); + diff --git a/patches/features/all/rt/hotplug-light-get-online-cpus.patch b/patches/features/all/rt/hotplug-light-get-online-cpus.patch new file mode 100644 index 00000000000..46bc8845067 --- /dev/null +++ b/patches/features/all/rt/hotplug-light-get-online-cpus.patch @@ -0,0 +1,91 @@ +Subject: hotplug: Lightweight get online cpus +From: Thomas Gleixner +Date: Wed, 15 Jun 2011 12:36:06 +0200 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +get_online_cpus() is a heavy weight function which involves a global +mutex. migrate_disable() wants a simpler construct which prevents only +a CPU from going doing while a task is in a migrate disabled section. + +Implement a per cpu lockless mechanism, which serializes only in the +real unplug case on a global mutex. That serialization affects only +tasks on the cpu which should be brought down. + +Signed-off-by: Thomas Gleixner +--- + include/linux/cpu.h | 5 +++++ + kernel/cpu.c | 15 +++++++++++++++ + kernel/sched/core.c | 4 ++++ + 3 files changed, 24 insertions(+) + +--- a/include/linux/cpu.h ++++ b/include/linux/cpu.h +@@ -116,6 +116,8 @@ extern void cpu_hotplug_disable(void); + extern void cpu_hotplug_enable(void); + void clear_tasks_mm_cpumask(int cpu); + int cpu_down(unsigned int cpu); ++extern void pin_current_cpu(void); ++extern void unpin_current_cpu(void); + + #else /* CONFIG_HOTPLUG_CPU */ + +@@ -126,6 +128,9 @@ static inline void cpus_read_unlock(void + static inline void lockdep_assert_cpus_held(void) { } + static inline void cpu_hotplug_disable(void) { } + static inline void cpu_hotplug_enable(void) { } ++static inline void pin_current_cpu(void) { } ++static inline void unpin_current_cpu(void) { } ++ + #endif /* !CONFIG_HOTPLUG_CPU */ + + /* Wrappers which go away once all code is converted */ +--- a/kernel/cpu.c ++++ b/kernel/cpu.c +@@ -286,6 +286,21 @@ static int cpu_hotplug_disabled; + + #ifdef CONFIG_HOTPLUG_CPU + ++/** ++ * pin_current_cpu - Prevent the current cpu from being unplugged ++ */ ++void pin_current_cpu(void) ++{ ++ ++} ++ ++/** ++ * unpin_current_cpu - Allow unplug of current cpu ++ */ ++void unpin_current_cpu(void) ++{ ++} ++ + DEFINE_STATIC_PERCPU_RWSEM(cpu_hotplug_lock); + + void cpus_read_lock(void) +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -6914,6 +6914,7 @@ void migrate_disable(void) + } + + preempt_disable(); ++ pin_current_cpu(); + + migrate_disable_update_cpus_allowed(p); + p->migrate_disable = 1; +@@ -6979,12 +6980,15 @@ void migrate_enable(void) + arg.task = p; + arg.dest_cpu = dest_cpu; + ++ unpin_current_cpu(); + preempt_enable(); + stop_one_cpu(task_cpu(p), migration_cpu_stop, &arg); + tlb_migrate_finish(p->mm); ++ + return; + } + } ++ unpin_current_cpu(); + preempt_enable(); + } + EXPORT_SYMBOL(migrate_enable); diff --git a/patches/features/all/rt/hrtimer-Move-schedule_work-call-to-helper-thread.patch b/patches/features/all/rt/hrtimer-Move-schedule_work-call-to-helper-thread.patch new file mode 100644 index 00000000000..96d005406d2 --- /dev/null +++ b/patches/features/all/rt/hrtimer-Move-schedule_work-call-to-helper-thread.patch @@ -0,0 +1,92 @@ +From: Yang Shi +Date: Mon, 16 Sep 2013 14:09:19 -0700 +Subject: hrtimer: Move schedule_work call to helper thread +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +When run ltp leapsec_timer test, the following call trace is caught: + +BUG: sleeping function called from invalid context at kernel/rtmutex.c:659 +in_atomic(): 1, irqs_disabled(): 1, pid: 0, name: swapper/1 +Preemption disabled at:[] cpu_startup_entry+0x133/0x310 + +CPU: 1 PID: 0 Comm: swapper/1 Not tainted 3.10.10-rt3 #2 +Hardware name: Intel Corporation Calpella platform/MATXM-CORE-411-B, BIOS 4.6.3 08/18/2010 +ffffffff81c2f800 ffff880076843e40 ffffffff8169918d ffff880076843e58 +ffffffff8106db31 ffff88007684b4a0 ffff880076843e70 ffffffff8169d9c0 +ffff88007684b4a0 ffff880076843eb0 ffffffff81059da1 0000001876851200 +Call Trace: + [] dump_stack+0x19/0x1b +[] __might_sleep+0xf1/0x170 +[] rt_spin_lock+0x20/0x50 +[] queue_work_on+0x61/0x100 +[] clock_was_set_delayed+0x21/0x30 +[] do_timer+0x40e/0x660 +[] tick_do_update_jiffies64+0xf7/0x140 +[] tick_check_idle+0x92/0xc0 +[] irq_enter+0x57/0x70 +[] smp_apic_timer_interrupt+0x3e/0x9b +[] apic_timer_interrupt+0x6a/0x70 + [] ? cpuidle_enter_state+0x4c/0xc0 +[] cpuidle_idle_call+0xd8/0x2d0 +[] arch_cpu_idle+0xe/0x30 +[] cpu_startup_entry+0x19e/0x310 +[] start_secondary+0x1ad/0x1b0 + +The clock_was_set_delayed is called in hard IRQ handler (timer interrupt), which +calls schedule_work. + +Under PREEMPT_RT_FULL, schedule_work calls spinlocks which could sleep, so it's +not safe to call schedule_work in interrupt context. + +Reference upstream commit b68d61c705ef02384c0538b8d9374545097899ca +(rt,ntp: Move call to schedule_delayed_work() to helper thread) +from git://git.kernel.org/pub/scm/linux/kernel/git/rt/linux-stable-rt.git, which +makes a similar change. + +Signed-off-by: Yang Shi +[bigeasy: use swork_queue() instead a helper thread] +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/time/hrtimer.c | 24 ++++++++++++++++++++++++ + 1 file changed, 24 insertions(+) + +--- a/kernel/time/hrtimer.c ++++ b/kernel/time/hrtimer.c +@@ -715,6 +715,29 @@ static void hrtimer_switch_to_hres(void) + retrigger_next_event(NULL); + } + ++#ifdef CONFIG_PREEMPT_RT_FULL ++ ++static struct swork_event clock_set_delay_work; ++ ++static void run_clock_set_delay(struct swork_event *event) ++{ ++ clock_was_set(); ++} ++ ++void clock_was_set_delayed(void) ++{ ++ swork_queue(&clock_set_delay_work); ++} ++ ++static __init int create_clock_set_delay_thread(void) ++{ ++ WARN_ON(swork_get()); ++ INIT_SWORK(&clock_set_delay_work, run_clock_set_delay); ++ return 0; ++} ++early_initcall(create_clock_set_delay_thread); ++#else /* PREEMPT_RT_FULL */ ++ + static void clock_was_set_work(struct work_struct *work) + { + clock_was_set(); +@@ -730,6 +753,7 @@ void clock_was_set_delayed(void) + { + schedule_work(&hrtimer_work); + } ++#endif + + #else + diff --git a/patches/features/all/rt/hrtimer-account-for-migrated-timers.patch b/patches/features/all/rt/hrtimer-account-for-migrated-timers.patch new file mode 100644 index 00000000000..ec2c83027fe --- /dev/null +++ b/patches/features/all/rt/hrtimer-account-for-migrated-timers.patch @@ -0,0 +1,42 @@ +From: Sebastian Andrzej Siewior +Date: Thu, 14 Dec 2017 11:31:40 +0100 +Subject: [PATCH] hrtimer: account for migrated timers +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.6-rt7.tar.xz + +if the timer is enqueud on CPUX and we run on CPUY then we have to +cpu_base bits of the correct CPU. Not sure if this accounts for all the +pieces but it might be okay with the check we have in +hrtimer_check_target() (that we have nothing to do but just wait). + +Reported-by: bert schulze +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/time/hrtimer.c | 12 +++++++----- + 1 file changed, 7 insertions(+), 5 deletions(-) + +--- a/kernel/time/hrtimer.c ++++ b/kernel/time/hrtimer.c +@@ -775,16 +775,18 @@ static void hrtimer_reprogram(struct hrt + expires = 0; + + if (timer->is_soft) { +- if (cpu_base->softirq_activated) ++ struct hrtimer_cpu_base *timer_cpu_base = base->cpu_base; ++ ++ if (timer_cpu_base->softirq_activated) + return; + +- if (!ktime_before(expires, cpu_base->softirq_expires_next)) ++ if (!ktime_before(expires, timer_cpu_base->softirq_expires_next)) + return; + +- cpu_base->softirq_next_timer = timer; +- cpu_base->softirq_expires_next = expires; ++ timer_cpu_base->softirq_next_timer = timer; ++ timer_cpu_base->softirq_expires_next = expires; + +- if (!ktime_before(expires, cpu_base->expires_next) || ++ if (!ktime_before(expires, timer_cpu_base->expires_next) || + !reprogram) + return; + } diff --git a/patches/features/all/rt/hrtimer-by-timers-by-default-into-the-softirq-context.patch b/patches/features/all/rt/hrtimer-by-timers-by-default-into-the-softirq-context.patch new file mode 100644 index 00000000000..3f9a544032b --- /dev/null +++ b/patches/features/all/rt/hrtimer-by-timers-by-default-into-the-softirq-context.patch @@ -0,0 +1,213 @@ +From: Sebastian Andrzej Siewior +Date: Fri, 3 Jul 2009 08:44:31 -0500 +Subject: hrtimer: by timers by default into the softirq context +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +We can't have hrtimers callbacks running in hardirq context on RT. Therefore +the timers are deferred to the softirq context by default. +There are few timers which expect to be run in hardirq context even on RT. +Those are: +- very short running where low latency is critical (kvm lapic) +- timers which take raw locks and need run in hard-irq context (perf, sched) +- wake up related timer (kernel side of clock_nanosleep() and so on) + +Signed-off-by: Sebastian Andrzej Siewior +--- + arch/x86/kvm/lapic.c | 2 +- + include/linux/hrtimer.h | 6 ++++++ + kernel/events/core.c | 4 ++-- + kernel/sched/core.c | 2 +- + kernel/sched/deadline.c | 2 +- + kernel/sched/rt.c | 4 ++-- + kernel/time/hrtimer.c | 34 ++++++++++++++++++++++++++++++++-- + kernel/time/tick-broadcast-hrtimer.c | 2 +- + kernel/time/tick-sched.c | 2 +- + kernel/watchdog.c | 2 +- + 10 files changed, 48 insertions(+), 12 deletions(-) + +--- a/arch/x86/kvm/lapic.c ++++ b/arch/x86/kvm/lapic.c +@@ -2098,7 +2098,7 @@ int kvm_create_lapic(struct kvm_vcpu *vc + apic->vcpu = vcpu; + + hrtimer_init(&apic->lapic_timer.timer, CLOCK_MONOTONIC, +- HRTIMER_MODE_ABS_PINNED); ++ HRTIMER_MODE_ABS_PINNED_HARD); + apic->lapic_timer.timer.function = apic_timer_fn; + + /* +--- a/include/linux/hrtimer.h ++++ b/include/linux/hrtimer.h +@@ -42,6 +42,7 @@ enum hrtimer_mode { + HRTIMER_MODE_REL = 0x01, + HRTIMER_MODE_PINNED = 0x02, + HRTIMER_MODE_SOFT = 0x04, ++ HRTIMER_MODE_HARD = 0x08, + + HRTIMER_MODE_ABS_PINNED = HRTIMER_MODE_ABS | HRTIMER_MODE_PINNED, + HRTIMER_MODE_REL_PINNED = HRTIMER_MODE_REL | HRTIMER_MODE_PINNED, +@@ -52,6 +53,11 @@ enum hrtimer_mode { + HRTIMER_MODE_ABS_PINNED_SOFT = HRTIMER_MODE_ABS_PINNED | HRTIMER_MODE_SOFT, + HRTIMER_MODE_REL_PINNED_SOFT = HRTIMER_MODE_REL_PINNED | HRTIMER_MODE_SOFT, + ++ HRTIMER_MODE_ABS_HARD = HRTIMER_MODE_ABS | HRTIMER_MODE_HARD, ++ HRTIMER_MODE_REL_HARD = HRTIMER_MODE_REL | HRTIMER_MODE_HARD, ++ ++ HRTIMER_MODE_ABS_PINNED_HARD = HRTIMER_MODE_ABS_PINNED | HRTIMER_MODE_HARD, ++ HRTIMER_MODE_REL_PINNED_HARD = HRTIMER_MODE_REL_PINNED | HRTIMER_MODE_HARD, + }; + + /* +--- a/kernel/events/core.c ++++ b/kernel/events/core.c +@@ -1042,7 +1042,7 @@ static void __perf_mux_hrtimer_init(stru + cpuctx->hrtimer_interval = ns_to_ktime(NSEC_PER_MSEC * interval); + + raw_spin_lock_init(&cpuctx->hrtimer_lock); +- hrtimer_init(timer, CLOCK_MONOTONIC, HRTIMER_MODE_ABS_PINNED); ++ hrtimer_init(timer, CLOCK_MONOTONIC, HRTIMER_MODE_ABS_PINNED_HARD); + timer->function = perf_mux_hrtimer_handler; + } + +@@ -8705,7 +8705,7 @@ static void perf_swevent_init_hrtimer(st + if (!is_sampling_event(event)) + return; + +- hrtimer_init(&hwc->hrtimer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); ++ hrtimer_init(&hwc->hrtimer, CLOCK_MONOTONIC, HRTIMER_MODE_REL_HARD); + hwc->hrtimer.function = perf_swevent_hrtimer; + + /* +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -341,7 +341,7 @@ static void init_rq_hrtick(struct rq *rq + rq->hrtick_csd.info = rq; + #endif + +- hrtimer_init(&rq->hrtick_timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); ++ hrtimer_init(&rq->hrtick_timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL_HARD); + rq->hrtick_timer.function = hrtick; + } + #else /* CONFIG_SCHED_HRTICK */ +--- a/kernel/sched/deadline.c ++++ b/kernel/sched/deadline.c +@@ -1020,7 +1020,7 @@ void init_dl_task_timer(struct sched_dl_ + { + struct hrtimer *timer = &dl_se->dl_timer; + +- hrtimer_init(timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); ++ hrtimer_init(timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL_HARD); + timer->function = dl_task_timer; + } + +--- a/kernel/sched/rt.c ++++ b/kernel/sched/rt.c +@@ -47,8 +47,8 @@ void init_rt_bandwidth(struct rt_bandwid + + raw_spin_lock_init(&rt_b->rt_runtime_lock); + +- hrtimer_init(&rt_b->rt_period_timer, +- CLOCK_MONOTONIC, HRTIMER_MODE_REL); ++ hrtimer_init(&rt_b->rt_period_timer, CLOCK_MONOTONIC, ++ HRTIMER_MODE_REL_HARD); + rt_b->rt_period_timer.function = sched_rt_period_timer; + } + +--- a/kernel/time/hrtimer.c ++++ b/kernel/time/hrtimer.c +@@ -1122,7 +1122,9 @@ void hrtimer_start_range_ns(struct hrtim + * Check whether the HRTIMER_MODE_SOFT bit and hrtimer.is_soft + * match. + */ ++#ifndef CONFIG_PREEMPT_RT_BASE + WARN_ON_ONCE(!(mode & HRTIMER_MODE_SOFT) ^ !timer->is_soft); ++#endif + + base = lock_hrtimer_base(timer, &flags); + +@@ -1249,10 +1251,17 @@ static inline int hrtimer_clockid_to_bas + static void __hrtimer_init(struct hrtimer *timer, clockid_t clock_id, + enum hrtimer_mode mode) + { +- bool softtimer = !!(mode & HRTIMER_MODE_SOFT); +- int base = softtimer ? HRTIMER_MAX_CLOCK_BASES / 2 : 0; ++ bool softtimer; ++ int base; + struct hrtimer_cpu_base *cpu_base; + ++ softtimer = !!(mode & HRTIMER_MODE_SOFT); ++#ifdef CONFIG_PREEMPT_RT_FULL ++ if (!softtimer && !(mode & HRTIMER_MODE_HARD)) ++ softtimer = true; ++#endif ++ base = softtimer ? HRTIMER_MAX_CLOCK_BASES / 2 : 0; ++ + memset(timer, 0, sizeof(struct hrtimer)); + + cpu_base = raw_cpu_ptr(&hrtimer_bases); +@@ -1631,11 +1640,32 @@ static enum hrtimer_restart hrtimer_wake + return HRTIMER_NORESTART; + } + ++#ifdef CONFIG_PREEMPT_RT_FULL ++static bool task_is_realtime(struct task_struct *tsk) ++{ ++ int policy = tsk->policy; ++ ++ if (policy == SCHED_FIFO || policy == SCHED_RR) ++ return true; ++ if (policy == SCHED_DEADLINE) ++ return true; ++ return false; ++} ++#endif ++ + static void __hrtimer_init_sleeper(struct hrtimer_sleeper *sl, + clockid_t clock_id, + enum hrtimer_mode mode, + struct task_struct *task) + { ++#ifdef CONFIG_PREEMPT_RT_FULL ++ if (!(mode & (HRTIMER_MODE_SOFT | HRTIMER_MODE_HARD))) { ++ if (task_is_realtime(current) || system_state != SYSTEM_RUNNING) ++ mode |= HRTIMER_MODE_HARD; ++ else ++ mode |= HRTIMER_MODE_SOFT; ++ } ++#endif + __hrtimer_init(&sl->timer, clock_id, mode); + sl->timer.function = hrtimer_wakeup; + sl->task = task; +--- a/kernel/time/tick-broadcast-hrtimer.c ++++ b/kernel/time/tick-broadcast-hrtimer.c +@@ -106,7 +106,7 @@ static enum hrtimer_restart bc_handler(s + + void tick_setup_hrtimer_broadcast(void) + { +- hrtimer_init(&bctimer, CLOCK_MONOTONIC, HRTIMER_MODE_ABS); ++ hrtimer_init(&bctimer, CLOCK_MONOTONIC, HRTIMER_MODE_ABS_HARD); + bctimer.function = bc_handler; + clockevents_register_device(&ce_broadcast_hrtimer); + } +--- a/kernel/time/tick-sched.c ++++ b/kernel/time/tick-sched.c +@@ -1254,7 +1254,7 @@ void tick_setup_sched_timer(void) + /* + * Emulate tick processing via per-CPU hrtimers: + */ +- hrtimer_init(&ts->sched_timer, CLOCK_MONOTONIC, HRTIMER_MODE_ABS); ++ hrtimer_init(&ts->sched_timer, CLOCK_MONOTONIC, HRTIMER_MODE_ABS_HARD); + ts->sched_timer.function = tick_sched_timer; + + /* Get the next period (per-CPU) */ +--- a/kernel/watchdog.c ++++ b/kernel/watchdog.c +@@ -462,7 +462,7 @@ static void watchdog_enable(unsigned int + * Start the timer first to prevent the NMI watchdog triggering + * before the timer has a chance to fire. + */ +- hrtimer_init(hrtimer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); ++ hrtimer_init(hrtimer, CLOCK_MONOTONIC, HRTIMER_MODE_REL_HARD); + hrtimer->function = watchdog_timer_fn; + hrtimer_start(hrtimer, ns_to_ktime(sample_period), + HRTIMER_MODE_REL_PINNED); diff --git a/patches/features/all/rt/hrtimer-consolidate-hrtimer_init-hrtimer_init_sleepe.patch b/patches/features/all/rt/hrtimer-consolidate-hrtimer_init-hrtimer_init_sleepe.patch new file mode 100644 index 00000000000..3a062713fb6 --- /dev/null +++ b/patches/features/all/rt/hrtimer-consolidate-hrtimer_init-hrtimer_init_sleepe.patch @@ -0,0 +1,247 @@ +From: Sebastian Andrzej Siewior +Date: Mon, 4 Sep 2017 18:31:50 +0200 +Subject: [PATCH] hrtimer: consolidate hrtimer_init() + hrtimer_init_sleeper() + calls +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +hrtimer_init_sleeper() calls require a prior initialisation of the +hrtimer object with hrtimer_init(). Lets make the initialisation of the +hrtimer object part of hrtimer_init_sleeper(). + +Signed-off-by: Sebastian Andrzej Siewior +--- + block/blk-mq.c | 3 +-- + include/linux/hrtimer.h | 19 ++++++++++++++++--- + include/linux/wait.h | 4 ++-- + kernel/futex.c | 19 ++++++++----------- + kernel/time/hrtimer.c | 46 ++++++++++++++++++++++++++++++++++++---------- + net/core/pktgen.c | 4 ++-- + 6 files changed, 65 insertions(+), 30 deletions(-) + +--- a/block/blk-mq.c ++++ b/block/blk-mq.c +@@ -2800,10 +2800,9 @@ static bool blk_mq_poll_hybrid_sleep(str + kt = nsecs; + + mode = HRTIMER_MODE_REL; +- hrtimer_init_on_stack(&hs.timer, CLOCK_MONOTONIC, mode); ++ hrtimer_init_sleeper_on_stack(&hs, CLOCK_MONOTONIC, mode, current); + hrtimer_set_expires(&hs.timer, kt); + +- hrtimer_init_sleeper(&hs, current); + do { + if (test_bit(REQ_ATOM_COMPLETE, &rq->atomic_flags)) + break; +--- a/include/linux/hrtimer.h ++++ b/include/linux/hrtimer.h +@@ -364,10 +364,17 @@ DECLARE_PER_CPU(struct tick_device, tick + /* Initialize timers: */ + extern void hrtimer_init(struct hrtimer *timer, clockid_t which_clock, + enum hrtimer_mode mode); ++extern void hrtimer_init_sleeper(struct hrtimer_sleeper *sl, clockid_t clock_id, ++ enum hrtimer_mode mode, ++ struct task_struct *task); + + #ifdef CONFIG_DEBUG_OBJECTS_TIMERS + extern void hrtimer_init_on_stack(struct hrtimer *timer, clockid_t which_clock, + enum hrtimer_mode mode); ++extern void hrtimer_init_sleeper_on_stack(struct hrtimer_sleeper *sl, ++ clockid_t clock_id, ++ enum hrtimer_mode mode, ++ struct task_struct *task); + + extern void destroy_hrtimer_on_stack(struct hrtimer *timer); + #else +@@ -377,6 +384,15 @@ static inline void hrtimer_init_on_stack + { + hrtimer_init(timer, which_clock, mode); + } ++ ++static inline void hrtimer_init_sleeper_on_stack(struct hrtimer_sleeper *sl, ++ clockid_t clock_id, ++ enum hrtimer_mode mode, ++ struct task_struct *task) ++{ ++ hrtimer_init_sleeper(sl, clock_id, mode, task); ++} ++ + static inline void destroy_hrtimer_on_stack(struct hrtimer *timer) { } + #endif + +@@ -479,9 +495,6 @@ extern long hrtimer_nanosleep(const stru + const enum hrtimer_mode mode, + const clockid_t clockid); + +-extern void hrtimer_init_sleeper(struct hrtimer_sleeper *sl, +- struct task_struct *tsk); +- + extern int schedule_hrtimeout_range(ktime_t *expires, u64 delta, + const enum hrtimer_mode mode); + extern int schedule_hrtimeout_range_clock(ktime_t *expires, +--- a/include/linux/wait.h ++++ b/include/linux/wait.h +@@ -487,8 +487,8 @@ do { \ + int __ret = 0; \ + struct hrtimer_sleeper __t; \ + \ +- hrtimer_init_on_stack(&__t.timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); \ +- hrtimer_init_sleeper(&__t, current); \ ++ hrtimer_init_sleeper_on_stack(&__t, CLOCK_MONOTONIC, HRTIMER_MODE_REL, \ ++ current); \ + if ((timeout) != KTIME_MAX) \ + hrtimer_start_range_ns(&__t.timer, timeout, \ + current->timer_slack_ns, \ +--- a/kernel/futex.c ++++ b/kernel/futex.c +@@ -2642,10 +2642,9 @@ static int futex_wait(u32 __user *uaddr, + if (abs_time) { + to = &timeout; + +- hrtimer_init_on_stack(&to->timer, (flags & FLAGS_CLOCKRT) ? +- CLOCK_REALTIME : CLOCK_MONOTONIC, +- HRTIMER_MODE_ABS); +- hrtimer_init_sleeper(to, current); ++ hrtimer_init_sleeper_on_stack(to, (flags & FLAGS_CLOCKRT) ? ++ CLOCK_REALTIME : CLOCK_MONOTONIC, ++ HRTIMER_MODE_ABS, current); + hrtimer_set_expires_range_ns(&to->timer, *abs_time, + current->timer_slack_ns); + } +@@ -2744,9 +2743,8 @@ static int futex_lock_pi(u32 __user *uad + + if (time) { + to = &timeout; +- hrtimer_init_on_stack(&to->timer, CLOCK_REALTIME, +- HRTIMER_MODE_ABS); +- hrtimer_init_sleeper(to, current); ++ hrtimer_init_sleeper_on_stack(to, CLOCK_REALTIME, ++ HRTIMER_MODE_ABS, current); + hrtimer_set_expires(&to->timer, *time); + } + +@@ -3162,10 +3160,9 @@ static int futex_wait_requeue_pi(u32 __u + + if (abs_time) { + to = &timeout; +- hrtimer_init_on_stack(&to->timer, (flags & FLAGS_CLOCKRT) ? +- CLOCK_REALTIME : CLOCK_MONOTONIC, +- HRTIMER_MODE_ABS); +- hrtimer_init_sleeper(to, current); ++ hrtimer_init_sleeper_on_stack(to, (flags & FLAGS_CLOCKRT) ? ++ CLOCK_REALTIME : CLOCK_MONOTONIC, ++ HRTIMER_MODE_ABS, current); + hrtimer_set_expires_range_ns(&to->timer, *abs_time, + current->timer_slack_ns); + } +--- a/kernel/time/hrtimer.c ++++ b/kernel/time/hrtimer.c +@@ -1603,13 +1603,44 @@ static enum hrtimer_restart hrtimer_wake + return HRTIMER_NORESTART; + } + +-void hrtimer_init_sleeper(struct hrtimer_sleeper *sl, struct task_struct *task) ++static void __hrtimer_init_sleeper(struct hrtimer_sleeper *sl, ++ clockid_t clock_id, ++ enum hrtimer_mode mode, ++ struct task_struct *task) + { ++ __hrtimer_init(&sl->timer, clock_id, mode); + sl->timer.function = hrtimer_wakeup; + sl->task = task; + } ++ ++/** ++ * hrtimer_init_sleeper - initialize sleeper to the given clock ++ * @sl: sleeper to be initialized ++ * @clock_id: the clock to be used ++ * @mode: timer mode abs/rel ++ * @task: the task to wake up ++ */ ++void hrtimer_init_sleeper(struct hrtimer_sleeper *sl, clockid_t clock_id, ++ enum hrtimer_mode mode, struct task_struct *task) ++{ ++ debug_init(&sl->timer, clock_id, mode); ++ __hrtimer_init_sleeper(sl, clock_id, mode, task); ++ ++} + EXPORT_SYMBOL_GPL(hrtimer_init_sleeper); + ++#ifdef CONFIG_DEBUG_OBJECTS_TIMERS ++void hrtimer_init_sleeper_on_stack(struct hrtimer_sleeper *sl, ++ clockid_t clock_id, ++ enum hrtimer_mode mode, ++ struct task_struct *task) ++{ ++ debug_object_init_on_stack(&sl->timer, &hrtimer_debug_descr); ++ __hrtimer_init_sleeper(sl, clock_id, mode, task); ++} ++EXPORT_SYMBOL_GPL(hrtimer_init_sleeper_on_stack); ++#endif ++ + int nanosleep_copyout(struct restart_block *restart, struct timespec64 *ts) + { + switch(restart->nanosleep.type) { +@@ -1633,8 +1664,6 @@ static int __sched do_nanosleep(struct h + { + struct restart_block *restart; + +- hrtimer_init_sleeper(t, current); +- + do { + set_current_state(TASK_INTERRUPTIBLE); + hrtimer_start_expires(&t->timer, mode); +@@ -1671,10 +1700,9 @@ static long __sched hrtimer_nanosleep_re + struct hrtimer_sleeper t; + int ret; + +- hrtimer_init_on_stack(&t.timer, restart->nanosleep.clockid, +- HRTIMER_MODE_ABS); ++ hrtimer_init_sleeper_on_stack(&t, restart->nanosleep.clockid, ++ HRTIMER_MODE_ABS, current); + hrtimer_set_expires_tv64(&t.timer, restart->nanosleep.expires); +- + ret = do_nanosleep(&t, HRTIMER_MODE_ABS); + destroy_hrtimer_on_stack(&t.timer); + return ret; +@@ -1692,7 +1720,7 @@ long hrtimer_nanosleep(const struct time + if (dl_task(current) || rt_task(current)) + slack = 0; + +- hrtimer_init_on_stack(&t.timer, clockid, mode); ++ hrtimer_init_sleeper_on_stack(&t, clockid, mode, current); + hrtimer_set_expires_range_ns(&t.timer, timespec64_to_ktime(*rqtp), slack); + ret = do_nanosleep(&t, mode); + if (ret != -ERESTART_RESTARTBLOCK) +@@ -1883,11 +1911,9 @@ schedule_hrtimeout_range_clock(ktime_t * + return -EINTR; + } + +- hrtimer_init_on_stack(&t.timer, clock_id, mode); ++ hrtimer_init_sleeper_on_stack(&t, clock_id, mode, current); + hrtimer_set_expires_range_ns(&t.timer, *expires, delta); + +- hrtimer_init_sleeper(&t, current); +- + hrtimer_start_expires(&t.timer, mode); + + if (likely(t.task)) +--- a/net/core/pktgen.c ++++ b/net/core/pktgen.c +@@ -2252,7 +2252,8 @@ static void spin(struct pktgen_dev *pkt_ + s64 remaining; + struct hrtimer_sleeper t; + +- hrtimer_init_on_stack(&t.timer, CLOCK_MONOTONIC, HRTIMER_MODE_ABS); ++ hrtimer_init_sleeper_on_stack(&t, CLOCK_MONOTONIC, HRTIMER_MODE_ABS, ++ current); + hrtimer_set_expires(&t.timer, spin_until); + + remaining = ktime_to_ns(hrtimer_expires_remaining(&t.timer)); +@@ -2267,7 +2268,6 @@ static void spin(struct pktgen_dev *pkt_ + } while (ktime_compare(end_time, spin_until) < 0); + } else { + /* see do_nanosleep */ +- hrtimer_init_sleeper(&t, current); + do { + set_current_state(TASK_INTERRUPTIBLE); + hrtimer_start_expires(&t.timer, HRTIMER_MODE_ABS); diff --git a/patches/features/all/rt/hrtimers-prepare-full-preemption.patch b/patches/features/all/rt/hrtimers-prepare-full-preemption.patch new file mode 100644 index 00000000000..e0023f58052 --- /dev/null +++ b/patches/features/all/rt/hrtimers-prepare-full-preemption.patch @@ -0,0 +1,213 @@ +From: Ingo Molnar +Date: Fri, 3 Jul 2009 08:29:34 -0500 +Subject: hrtimers: Prepare full preemption +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Make cancellation of a running callback in softirq context safe +against preemption. + +Signed-off-by: Ingo Molnar +Signed-off-by: Thomas Gleixner + +--- + include/linux/hrtimer.h | 13 ++++++++++++- + kernel/time/hrtimer.c | 33 ++++++++++++++++++++++++++++++++- + kernel/time/itimer.c | 1 + + kernel/time/posix-timers.c | 33 +++++++++++++++++++++++++++++++++ + 4 files changed, 78 insertions(+), 2 deletions(-) + +--- a/include/linux/hrtimer.h ++++ b/include/linux/hrtimer.h +@@ -22,6 +22,7 @@ + #include + #include + #include ++#include + + struct hrtimer_clock_base; + struct hrtimer_cpu_base; +@@ -216,6 +217,9 @@ struct hrtimer_cpu_base { + ktime_t expires_next; + struct hrtimer *next_timer; + ktime_t softirq_expires_next; ++#ifdef CONFIG_PREEMPT_RT_BASE ++ wait_queue_head_t wait; ++#endif + struct hrtimer *softirq_next_timer; + struct hrtimer_clock_base clock_base[HRTIMER_MAX_CLOCK_BASES]; + } ____cacheline_aligned; +@@ -433,6 +437,13 @@ static inline void hrtimer_restart(struc + hrtimer_start_expires(timer, HRTIMER_MODE_ABS); + } + ++/* Softirq preemption could deadlock timer removal */ ++#ifdef CONFIG_PREEMPT_RT_BASE ++ extern void hrtimer_wait_for_timer(const struct hrtimer *timer); ++#else ++# define hrtimer_wait_for_timer(timer) do { cpu_relax(); } while (0) ++#endif ++ + /* Query timers: */ + extern ktime_t __hrtimer_get_remaining(const struct hrtimer *timer, bool adjust); + +@@ -457,7 +468,7 @@ static inline int hrtimer_is_queued(stru + * Helper function to check, whether the timer is running the callback + * function + */ +-static inline int hrtimer_callback_running(struct hrtimer *timer) ++static inline int hrtimer_callback_running(const struct hrtimer *timer) + { + return timer->base->running == timer; + } +--- a/kernel/time/hrtimer.c ++++ b/kernel/time/hrtimer.c +@@ -926,6 +926,33 @@ u64 hrtimer_forward(struct hrtimer *time + } + EXPORT_SYMBOL_GPL(hrtimer_forward); + ++#ifdef CONFIG_PREEMPT_RT_BASE ++# define wake_up_timer_waiters(b) wake_up(&(b)->wait) ++ ++/** ++ * hrtimer_wait_for_timer - Wait for a running timer ++ * ++ * @timer: timer to wait for ++ * ++ * The function waits in case the timers callback function is ++ * currently executed on the waitqueue of the timer base. The ++ * waitqueue is woken up after the timer callback function has ++ * finished execution. ++ */ ++void hrtimer_wait_for_timer(const struct hrtimer *timer) ++{ ++ struct hrtimer_clock_base *base = timer->base; ++ ++ if (base && base->cpu_base && ++ base->index >= HRTIMER_BASE_MONOTONIC_SOFT) ++ wait_event(base->cpu_base->wait, ++ !(hrtimer_callback_running(timer))); ++} ++ ++#else ++# define wake_up_timer_waiters(b) do { } while (0) ++#endif ++ + /* + * enqueue_hrtimer - internal function to (re)start a timer + * +@@ -1158,7 +1185,7 @@ int hrtimer_cancel(struct hrtimer *timer + + if (ret >= 0) + return ret; +- cpu_relax(); ++ hrtimer_wait_for_timer(timer); + } + } + EXPORT_SYMBOL_GPL(hrtimer_cancel); +@@ -1431,6 +1458,7 @@ static __latent_entropy void hrtimer_run + hrtimer_update_softirq_timer(cpu_base, true); + + raw_spin_unlock_irqrestore(&cpu_base->lock, flags); ++ wake_up_timer_waiters(cpu_base); + } + + #ifdef CONFIG_HIGH_RES_TIMERS +@@ -1793,6 +1821,9 @@ int hrtimers_prepare_cpu(unsigned int cp + cpu_base->hres_active = 0; + cpu_base->expires_next = KTIME_MAX; + cpu_base->softirq_expires_next = KTIME_MAX; ++#ifdef CONFIG_PREEMPT_RT_BASE ++ init_waitqueue_head(&cpu_base->wait); ++#endif + return 0; + } + +--- a/kernel/time/itimer.c ++++ b/kernel/time/itimer.c +@@ -214,6 +214,7 @@ int do_setitimer(int which, struct itime + /* We are sharing ->siglock with it_real_fn() */ + if (hrtimer_try_to_cancel(timer) < 0) { + spin_unlock_irq(&tsk->sighand->siglock); ++ hrtimer_wait_for_timer(&tsk->signal->real_timer); + goto again; + } + expires = timeval_to_ktime(value->it_value); +--- a/kernel/time/posix-timers.c ++++ b/kernel/time/posix-timers.c +@@ -796,6 +796,20 @@ SYSCALL_DEFINE1(timer_getoverrun, timer_ + return overrun; + } + ++/* ++ * Protected by RCU! ++ */ ++static void timer_wait_for_callback(const struct k_clock *kc, struct k_itimer *timr) ++{ ++#ifdef CONFIG_PREEMPT_RT_FULL ++ if (kc->timer_set == common_timer_set) ++ hrtimer_wait_for_timer(&timr->it.real.timer); ++ else ++ /* FIXME: Whacky hack for posix-cpu-timers */ ++ schedule_timeout(1); ++#endif ++} ++ + static void common_hrtimer_arm(struct k_itimer *timr, ktime_t expires, + bool absolute, bool sigev_none) + { +@@ -890,6 +904,7 @@ static int do_timer_settime(timer_t time + if (!timr) + return -EINVAL; + ++ rcu_read_lock(); + kc = timr->kclock; + if (WARN_ON_ONCE(!kc || !kc->timer_set)) + error = -EINVAL; +@@ -898,9 +913,12 @@ static int do_timer_settime(timer_t time + + unlock_timer(timr, flag); + if (error == TIMER_RETRY) { ++ timer_wait_for_callback(kc, timr); + old_spec64 = NULL; // We already got the old time... ++ rcu_read_unlock(); + goto retry; + } ++ rcu_read_unlock(); + + return error; + } +@@ -982,10 +1000,15 @@ SYSCALL_DEFINE1(timer_delete, timer_t, t + if (!timer) + return -EINVAL; + ++ rcu_read_lock(); + if (timer_delete_hook(timer) == TIMER_RETRY) { + unlock_timer(timer, flags); ++ timer_wait_for_callback(clockid_to_kclock(timer->it_clock), ++ timer); ++ rcu_read_unlock(); + goto retry_delete; + } ++ rcu_read_unlock(); + + spin_lock(¤t->sighand->siglock); + list_del(&timer->list); +@@ -1011,8 +1034,18 @@ static void itimer_delete(struct k_itime + retry_delete: + spin_lock_irqsave(&timer->it_lock, flags); + ++ /* On RT we can race with a deletion */ ++ if (!timer->it_signal) { ++ unlock_timer(timer, flags); ++ return; ++ } ++ + if (timer_delete_hook(timer) == TIMER_RETRY) { ++ rcu_read_lock(); + unlock_timer(timer, flags); ++ timer_wait_for_callback(clockid_to_kclock(timer->it_clock), ++ timer); ++ rcu_read_unlock(); + goto retry_delete; + } + list_del(&timer->list); diff --git a/patches/features/all/rt/ide-use-nort-local-irq-variants.patch b/patches/features/all/rt/ide-use-nort-local-irq-variants.patch new file mode 100644 index 00000000000..fbc120cbb26 --- /dev/null +++ b/patches/features/all/rt/ide-use-nort-local-irq-variants.patch @@ -0,0 +1,170 @@ +From: Ingo Molnar +Date: Fri, 3 Jul 2009 08:30:16 -0500 +Subject: ide: Do not disable interrupts for PREEMPT-RT +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Use the local_irq_*_nort variants. + +Signed-off-by: Ingo Molnar +Signed-off-by: Thomas Gleixner + +--- + drivers/ide/alim15x3.c | 4 ++-- + drivers/ide/hpt366.c | 4 ++-- + drivers/ide/ide-io-std.c | 8 ++++---- + drivers/ide/ide-io.c | 2 +- + drivers/ide/ide-iops.c | 4 ++-- + drivers/ide/ide-probe.c | 4 ++-- + drivers/ide/ide-taskfile.c | 6 +++--- + 7 files changed, 16 insertions(+), 16 deletions(-) + +--- a/drivers/ide/alim15x3.c ++++ b/drivers/ide/alim15x3.c +@@ -234,7 +234,7 @@ static int init_chipset_ali15x3(struct p + + isa_dev = pci_get_device(PCI_VENDOR_ID_AL, PCI_DEVICE_ID_AL_M1533, NULL); + +- local_irq_save(flags); ++ local_irq_save_nort(flags); + + if (m5229_revision < 0xC2) { + /* +@@ -325,7 +325,7 @@ static int init_chipset_ali15x3(struct p + } + pci_dev_put(north); + pci_dev_put(isa_dev); +- local_irq_restore(flags); ++ local_irq_restore_nort(flags); + return 0; + } + +--- a/drivers/ide/hpt366.c ++++ b/drivers/ide/hpt366.c +@@ -1236,7 +1236,7 @@ static int init_dma_hpt366(ide_hwif_t *h + + dma_old = inb(base + 2); + +- local_irq_save(flags); ++ local_irq_save_nort(flags); + + dma_new = dma_old; + pci_read_config_byte(dev, hwif->channel ? 0x4b : 0x43, &masterdma); +@@ -1247,7 +1247,7 @@ static int init_dma_hpt366(ide_hwif_t *h + if (dma_new != dma_old) + outb(dma_new, base + 2); + +- local_irq_restore(flags); ++ local_irq_restore_nort(flags); + + printk(KERN_INFO " %s: BM-DMA at 0x%04lx-0x%04lx\n", + hwif->name, base, base + 7); +--- a/drivers/ide/ide-io-std.c ++++ b/drivers/ide/ide-io-std.c +@@ -175,7 +175,7 @@ void ide_input_data(ide_drive_t *drive, + unsigned long uninitialized_var(flags); + + if ((io_32bit & 2) && !mmio) { +- local_irq_save(flags); ++ local_irq_save_nort(flags); + ata_vlb_sync(io_ports->nsect_addr); + } + +@@ -186,7 +186,7 @@ void ide_input_data(ide_drive_t *drive, + insl(data_addr, buf, words); + + if ((io_32bit & 2) && !mmio) +- local_irq_restore(flags); ++ local_irq_restore_nort(flags); + + if (((len + 1) & 3) < 2) + return; +@@ -219,7 +219,7 @@ void ide_output_data(ide_drive_t *drive, + unsigned long uninitialized_var(flags); + + if ((io_32bit & 2) && !mmio) { +- local_irq_save(flags); ++ local_irq_save_nort(flags); + ata_vlb_sync(io_ports->nsect_addr); + } + +@@ -230,7 +230,7 @@ void ide_output_data(ide_drive_t *drive, + outsl(data_addr, buf, words); + + if ((io_32bit & 2) && !mmio) +- local_irq_restore(flags); ++ local_irq_restore_nort(flags); + + if (((len + 1) & 3) < 2) + return; +--- a/drivers/ide/ide-io.c ++++ b/drivers/ide/ide-io.c +@@ -660,7 +660,7 @@ void ide_timer_expiry (unsigned long dat + /* disable_irq_nosync ?? */ + disable_irq(hwif->irq); + /* local CPU only, as if we were handling an interrupt */ +- local_irq_disable(); ++ local_irq_disable_nort(); + if (hwif->polling) { + startstop = handler(drive); + } else if (drive_is_ready(drive)) { +--- a/drivers/ide/ide-iops.c ++++ b/drivers/ide/ide-iops.c +@@ -129,12 +129,12 @@ int __ide_wait_stat(ide_drive_t *drive, + if ((stat & ATA_BUSY) == 0) + break; + +- local_irq_restore(flags); ++ local_irq_restore_nort(flags); + *rstat = stat; + return -EBUSY; + } + } +- local_irq_restore(flags); ++ local_irq_restore_nort(flags); + } + /* + * Allow status to settle, then read it again. +--- a/drivers/ide/ide-probe.c ++++ b/drivers/ide/ide-probe.c +@@ -196,10 +196,10 @@ static void do_identify(ide_drive_t *dri + int bswap = 1; + + /* local CPU only; some systems need this */ +- local_irq_save(flags); ++ local_irq_save_nort(flags); + /* read 512 bytes of id info */ + hwif->tp_ops->input_data(drive, NULL, id, SECTOR_SIZE); +- local_irq_restore(flags); ++ local_irq_restore_nort(flags); + + drive->dev_flags |= IDE_DFLAG_ID_READ; + #ifdef DEBUG +--- a/drivers/ide/ide-taskfile.c ++++ b/drivers/ide/ide-taskfile.c +@@ -251,7 +251,7 @@ void ide_pio_bytes(ide_drive_t *drive, s + + page_is_high = PageHighMem(page); + if (page_is_high) +- local_irq_save(flags); ++ local_irq_save_nort(flags); + + buf = kmap_atomic(page) + offset; + +@@ -272,7 +272,7 @@ void ide_pio_bytes(ide_drive_t *drive, s + kunmap_atomic(buf); + + if (page_is_high) +- local_irq_restore(flags); ++ local_irq_restore_nort(flags); + + len -= nr_bytes; + } +@@ -415,7 +415,7 @@ static ide_startstop_t pre_task_out_intr + } + + if ((drive->dev_flags & IDE_DFLAG_UNMASK) == 0) +- local_irq_disable(); ++ local_irq_disable_nort(); + + ide_set_handler(drive, &task_pio_intr, WAIT_WORSTCASE); + diff --git a/patches/features/all/rt/infiniband-mellanox-ib-use-nort-irq.patch b/patches/features/all/rt/infiniband-mellanox-ib-use-nort-irq.patch new file mode 100644 index 00000000000..1af664c68ce --- /dev/null +++ b/patches/features/all/rt/infiniband-mellanox-ib-use-nort-irq.patch @@ -0,0 +1,41 @@ +From: Sven-Thorsten Dietrich +Date: Fri, 3 Jul 2009 08:30:35 -0500 +Subject: infiniband: Mellanox IB driver patch use _nort() primitives +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Fixes in_atomic stack-dump, when Mellanox module is loaded into the RT +Kernel. + +Michael S. Tsirkin sayeth: +"Basically, if you just make spin_lock_irqsave (and spin_lock_irq) not disable +interrupts for non-raw spinlocks, I think all of infiniband will be fine without +changes." + +Signed-off-by: Sven-Thorsten Dietrich +Signed-off-by: Ingo Molnar +Signed-off-by: Thomas Gleixner + +--- + drivers/infiniband/ulp/ipoib/ipoib_multicast.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c ++++ b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c +@@ -895,7 +895,7 @@ void ipoib_mcast_restart_task(struct wor + + ipoib_dbg_mcast(priv, "restarting multicast task\n"); + +- local_irq_save(flags); ++ local_irq_save_nort(flags); + netif_addr_lock(dev); + spin_lock(&priv->lock); + +@@ -977,7 +977,7 @@ void ipoib_mcast_restart_task(struct wor + + spin_unlock(&priv->lock); + netif_addr_unlock(dev); +- local_irq_restore(flags); ++ local_irq_restore_nort(flags); + + ipoib_mcast_remove_list(&remove_list); + diff --git a/patches/features/all/rt/inpt-gameport-use-local-irq-nort.patch b/patches/features/all/rt/inpt-gameport-use-local-irq-nort.patch new file mode 100644 index 00000000000..31951849550 --- /dev/null +++ b/patches/features/all/rt/inpt-gameport-use-local-irq-nort.patch @@ -0,0 +1,61 @@ +From: Ingo Molnar +Date: Fri, 3 Jul 2009 08:30:16 -0500 +Subject: input: gameport: Do not disable interrupts on PREEMPT_RT +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Use the _nort() primitives. + +Signed-off-by: Ingo Molnar +Signed-off-by: Thomas Gleixner + +--- + drivers/input/gameport/gameport.c | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +--- a/drivers/input/gameport/gameport.c ++++ b/drivers/input/gameport/gameport.c +@@ -91,13 +91,13 @@ static int gameport_measure_speed(struct + tx = ~0; + + for (i = 0; i < 50; i++) { +- local_irq_save(flags); ++ local_irq_save_nort(flags); + t1 = ktime_get_ns(); + for (t = 0; t < 50; t++) + gameport_read(gameport); + t2 = ktime_get_ns(); + t3 = ktime_get_ns(); +- local_irq_restore(flags); ++ local_irq_restore_nort(flags); + udelay(i * 10); + t = (t2 - t1) - (t3 - t2); + if (t < tx) +@@ -124,12 +124,12 @@ static int old_gameport_measure_speed(st + tx = 1 << 30; + + for(i = 0; i < 50; i++) { +- local_irq_save(flags); ++ local_irq_save_nort(flags); + GET_TIME(t1); + for (t = 0; t < 50; t++) gameport_read(gameport); + GET_TIME(t2); + GET_TIME(t3); +- local_irq_restore(flags); ++ local_irq_restore_nort(flags); + udelay(i * 10); + if ((t = DELTA(t2,t1) - DELTA(t3,t2)) < tx) tx = t; + } +@@ -148,11 +148,11 @@ static int old_gameport_measure_speed(st + tx = 1 << 30; + + for(i = 0; i < 50; i++) { +- local_irq_save(flags); ++ local_irq_save_nort(flags); + t1 = rdtsc(); + for (t = 0; t < 50; t++) gameport_read(gameport); + t2 = rdtsc(); +- local_irq_restore(flags); ++ local_irq_restore_nort(flags); + udelay(i * 10); + if (t2 - t1 < tx) tx = t2 - t1; + } diff --git a/patches/features/all/rt/iommu-amd--Use-WARN_ON_NORT.patch b/patches/features/all/rt/iommu-amd--Use-WARN_ON_NORT.patch new file mode 100644 index 00000000000..d8f46deb546 --- /dev/null +++ b/patches/features/all/rt/iommu-amd--Use-WARN_ON_NORT.patch @@ -0,0 +1,47 @@ +Subject: iommu/amd: Use WARN_ON_NORT in __attach_device() +From: Thomas Gleixner +Date: Sat, 27 Feb 2016 10:22:23 +0100 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +RT does not disable interrupts here, but the protection is still +correct. Fixup the WARN_ON so it won't yell on RT. + +Note: This WARN_ON is bogus anyway. The real thing this needs to check is that +amd_iommu_devtable_lock is held. + +Reported-by: DIXLOR +Signed-off-by: Thomas Gleixner +--- + drivers/iommu/amd_iommu.c | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +--- a/drivers/iommu/amd_iommu.c ++++ b/drivers/iommu/amd_iommu.c +@@ -1944,10 +1944,10 @@ static int __attach_device(struct iommu_ + int ret; + + /* +- * Must be called with IRQs disabled. Warn here to detect early +- * when its not. ++ * Must be called with IRQs disabled on a non RT kernel. Warn here to ++ * detect early when its not. + */ +- WARN_ON(!irqs_disabled()); ++ WARN_ON_NONRT(!irqs_disabled()); + + /* lock domain */ + spin_lock(&domain->lock); +@@ -2115,10 +2115,10 @@ static void __detach_device(struct iommu + struct protection_domain *domain; + + /* +- * Must be called with IRQs disabled. Warn here to detect early +- * when its not. ++ * Must be called with IRQs disabled on a non RT kernel. Warn here to ++ * detect early when its not. + */ +- WARN_ON(!irqs_disabled()); ++ WARN_ON_NONRT(!irqs_disabled()); + + if (WARN_ON(!dev_data->domain)) + return; diff --git a/patches/features/all/rt/iommu-iova-Use-raw_cpu_ptr-instead-of-get_cpu_ptr-fo.patch b/patches/features/all/rt/iommu-iova-Use-raw_cpu_ptr-instead-of-get_cpu_ptr-fo.patch new file mode 100644 index 00000000000..c6ec62d4263 --- /dev/null +++ b/patches/features/all/rt/iommu-iova-Use-raw_cpu_ptr-instead-of-get_cpu_ptr-fo.patch @@ -0,0 +1,43 @@ +From: Sebastian Andrzej Siewior +Date: Thu, 21 Sep 2017 17:21:40 +0200 +Subject: [PATCH] iommu/iova: Use raw_cpu_ptr() instead of get_cpu_ptr() for + ->fq +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +get_cpu_ptr() disabled preemption and returns the ->fq object of the +current CPU. raw_cpu_ptr() does the same except that it not disable +preemption which means the scheduler can move it to another CPU after it +obtained the per-CPU object. +In this case this is not bad because the data structure itself is +protected with a spin_lock. This change shouldn't matter however on RT +it does because the sleeping lock can't be accessed with disabled +preemption. + +Cc: Joerg Roedel +Cc: iommu@lists.linux-foundation.org +Reported-by: vinadhy@gmail.com +Signed-off-by: Sebastian Andrzej Siewior +--- + drivers/iommu/iova.c | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +--- a/drivers/iommu/iova.c ++++ b/drivers/iommu/iova.c +@@ -570,7 +570,7 @@ void queue_iova(struct iova_domain *iova + unsigned long pfn, unsigned long pages, + unsigned long data) + { +- struct iova_fq *fq = get_cpu_ptr(iovad->fq); ++ struct iova_fq *fq = raw_cpu_ptr(iovad->fq); + unsigned long flags; + unsigned idx; + +@@ -600,8 +600,6 @@ void queue_iova(struct iova_domain *iova + if (atomic_cmpxchg(&iovad->fq_timer_on, 0, 1) == 0) + mod_timer(&iovad->fq_timer, + jiffies + msecs_to_jiffies(IOVA_FQ_TIMEOUT)); +- +- put_cpu_ptr(iovad->fq); + } + EXPORT_SYMBOL_GPL(queue_iova); + diff --git a/patches/features/all/rt/irq-allow-disabling-of-softirq-processing-in-irq-thread-context.patch b/patches/features/all/rt/irq-allow-disabling-of-softirq-processing-in-irq-thread-context.patch new file mode 100644 index 00000000000..f8ec01d5b68 --- /dev/null +++ b/patches/features/all/rt/irq-allow-disabling-of-softirq-processing-in-irq-thread-context.patch @@ -0,0 +1,147 @@ +Subject: genirq: Allow disabling of softirq processing in irq thread context +From: Thomas Gleixner +Date: Tue, 31 Jan 2012 13:01:27 +0100 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +The processing of softirqs in irq thread context is a performance gain +for the non-rt workloads of a system, but it's counterproductive for +interrupts which are explicitely related to the realtime +workload. Allow such interrupts to prevent softirq processing in their +thread context. + +Signed-off-by: Thomas Gleixner + +--- + include/linux/interrupt.h | 2 ++ + include/linux/irq.h | 4 +++- + kernel/irq/manage.c | 13 ++++++++++++- + kernel/irq/settings.h | 12 ++++++++++++ + kernel/softirq.c | 9 +++++++++ + 5 files changed, 38 insertions(+), 2 deletions(-) + +--- a/include/linux/interrupt.h ++++ b/include/linux/interrupt.h +@@ -64,6 +64,7 @@ + * interrupt handler after suspending interrupts. For system + * wakeup devices users need to implement wakeup detection in + * their interrupt handlers. ++ * IRQF_NO_SOFTIRQ_CALL - Do not process softirqs in the irq thread context (RT) + */ + #define IRQF_SHARED 0x00000080 + #define IRQF_PROBE_SHARED 0x00000100 +@@ -77,6 +78,7 @@ + #define IRQF_NO_THREAD 0x00010000 + #define IRQF_EARLY_RESUME 0x00020000 + #define IRQF_COND_SUSPEND 0x00040000 ++#define IRQF_NO_SOFTIRQ_CALL 0x00080000 + + #define IRQF_TIMER (__IRQF_TIMER | IRQF_NO_SUSPEND | IRQF_NO_THREAD) + +--- a/include/linux/irq.h ++++ b/include/linux/irq.h +@@ -74,6 +74,7 @@ enum irqchip_irq_state; + * IRQ_IS_POLLED - Always polled by another interrupt. Exclude + * it from the spurious interrupt detection + * mechanism and from core side polling. ++ * IRQ_NO_SOFTIRQ_CALL - No softirq processing in the irq thread context (RT) + * IRQ_DISABLE_UNLAZY - Disable lazy irq disable + */ + enum { +@@ -101,13 +102,14 @@ enum { + IRQ_PER_CPU_DEVID = (1 << 17), + IRQ_IS_POLLED = (1 << 18), + IRQ_DISABLE_UNLAZY = (1 << 19), ++ IRQ_NO_SOFTIRQ_CALL = (1 << 20), + }; + + #define IRQF_MODIFY_MASK \ + (IRQ_TYPE_SENSE_MASK | IRQ_NOPROBE | IRQ_NOREQUEST | \ + IRQ_NOAUTOEN | IRQ_MOVE_PCNTXT | IRQ_LEVEL | IRQ_NO_BALANCING | \ + IRQ_PER_CPU | IRQ_NESTED_THREAD | IRQ_NOTHREAD | IRQ_PER_CPU_DEVID | \ +- IRQ_IS_POLLED | IRQ_DISABLE_UNLAZY) ++ IRQ_IS_POLLED | IRQ_DISABLE_UNLAZY | IRQ_NO_SOFTIRQ_CALL) + + #define IRQ_NO_BALANCING_MASK (IRQ_PER_CPU | IRQ_NO_BALANCING) + +--- a/kernel/irq/manage.c ++++ b/kernel/irq/manage.c +@@ -922,7 +922,15 @@ irq_forced_thread_fn(struct irq_desc *de + local_bh_disable(); + ret = action->thread_fn(action->irq, action->dev_id); + irq_finalize_oneshot(desc, action); +- local_bh_enable(); ++ /* ++ * Interrupts which have real time requirements can be set up ++ * to avoid softirq processing in the thread handler. This is ++ * safe as these interrupts do not raise soft interrupts. ++ */ ++ if (irq_settings_no_softirq_call(desc)) ++ _local_bh_enable(); ++ else ++ local_bh_enable(); + return ret; + } + +@@ -1410,6 +1418,9 @@ static int + irqd_set(&desc->irq_data, IRQD_NO_BALANCING); + } + ++ if (new->flags & IRQF_NO_SOFTIRQ_CALL) ++ irq_settings_set_no_softirq_call(desc); ++ + if (irq_settings_can_autoenable(desc)) { + irq_startup(desc, IRQ_RESEND, IRQ_START_COND); + } else { +--- a/kernel/irq/settings.h ++++ b/kernel/irq/settings.h +@@ -17,6 +17,7 @@ enum { + _IRQ_PER_CPU_DEVID = IRQ_PER_CPU_DEVID, + _IRQ_IS_POLLED = IRQ_IS_POLLED, + _IRQ_DISABLE_UNLAZY = IRQ_DISABLE_UNLAZY, ++ _IRQ_NO_SOFTIRQ_CALL = IRQ_NO_SOFTIRQ_CALL, + _IRQF_MODIFY_MASK = IRQF_MODIFY_MASK, + }; + +@@ -31,6 +32,7 @@ enum { + #define IRQ_PER_CPU_DEVID GOT_YOU_MORON + #define IRQ_IS_POLLED GOT_YOU_MORON + #define IRQ_DISABLE_UNLAZY GOT_YOU_MORON ++#define IRQ_NO_SOFTIRQ_CALL GOT_YOU_MORON + #undef IRQF_MODIFY_MASK + #define IRQF_MODIFY_MASK GOT_YOU_MORON + +@@ -41,6 +43,16 @@ irq_settings_clr_and_set(struct irq_desc + desc->status_use_accessors |= (set & _IRQF_MODIFY_MASK); + } + ++static inline bool irq_settings_no_softirq_call(struct irq_desc *desc) ++{ ++ return desc->status_use_accessors & _IRQ_NO_SOFTIRQ_CALL; ++} ++ ++static inline void irq_settings_set_no_softirq_call(struct irq_desc *desc) ++{ ++ desc->status_use_accessors |= _IRQ_NO_SOFTIRQ_CALL; ++} ++ + static inline bool irq_settings_is_per_cpu(struct irq_desc *desc) + { + return desc->status_use_accessors & _IRQ_PER_CPU; +--- a/kernel/softirq.c ++++ b/kernel/softirq.c +@@ -589,6 +589,15 @@ void __local_bh_enable(void) + } + EXPORT_SYMBOL(__local_bh_enable); + ++void _local_bh_enable(void) ++{ ++ if (WARN_ON(current->softirq_nestcnt == 0)) ++ return; ++ if (--current->softirq_nestcnt == 0) ++ migrate_enable(); ++} ++EXPORT_SYMBOL(_local_bh_enable); ++ + int in_serving_softirq(void) + { + return current->flags & PF_IN_SOFTIRQ; diff --git a/patches/features/all/rt/irqwork-Move-irq-safe-work-to-irq-context.patch b/patches/features/all/rt/irqwork-Move-irq-safe-work-to-irq-context.patch new file mode 100644 index 00000000000..16e85a63fce --- /dev/null +++ b/patches/features/all/rt/irqwork-Move-irq-safe-work-to-irq-context.patch @@ -0,0 +1,78 @@ +Subject: irqwork: Move irq safe work to irq context +From: Thomas Gleixner +Date: Sun, 15 Nov 2015 18:40:17 +0100 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +On architectures where arch_irq_work_has_interrupt() returns false, we +end up running the irq safe work from the softirq context. That +results in a potential deadlock in the scheduler irq work which +expects that function to be called with interrupts disabled. + +Split the irq_work_tick() function into a hard and soft variant. Call +the hard variant from the tick interrupt and add the soft variant to +the timer softirq. + +Reported-and-tested-by: Yanjiang Jin +Signed-off-by: Thomas Gleixner +Cc: stable-rt@vger.kernel.org +--- + include/linux/irq_work.h | 6 ++++++ + kernel/irq_work.c | 9 +++++++++ + kernel/time/timer.c | 6 ++---- + 3 files changed, 17 insertions(+), 4 deletions(-) + +--- a/include/linux/irq_work.h ++++ b/include/linux/irq_work.h +@@ -53,4 +53,10 @@ static inline bool irq_work_needs_cpu(vo + static inline void irq_work_run(void) { } + #endif + ++#if defined(CONFIG_IRQ_WORK) && defined(CONFIG_PREEMPT_RT_FULL) ++void irq_work_tick_soft(void); ++#else ++static inline void irq_work_tick_soft(void) { } ++#endif ++ + #endif /* _LINUX_IRQ_WORK_H */ +--- a/kernel/irq_work.c ++++ b/kernel/irq_work.c +@@ -200,8 +200,17 @@ void irq_work_tick(void) + + if (!llist_empty(raised) && !arch_irq_work_has_interrupt()) + irq_work_run_list(raised); ++ ++ if (!IS_ENABLED(CONFIG_PREEMPT_RT_FULL)) ++ irq_work_run_list(this_cpu_ptr(&lazy_list)); ++} ++ ++#if defined(CONFIG_IRQ_WORK) && defined(CONFIG_PREEMPT_RT_FULL) ++void irq_work_tick_soft(void) ++{ + irq_work_run_list(this_cpu_ptr(&lazy_list)); + } ++#endif + + /* + * Synchronize against the irq_work @entry, ensures the entry is not +--- a/kernel/time/timer.c ++++ b/kernel/time/timer.c +@@ -1638,7 +1638,7 @@ void update_process_times(int user_tick) + scheduler_tick(); + run_local_timers(); + rcu_check_callbacks(user_tick); +-#if defined(CONFIG_IRQ_WORK) && !defined(CONFIG_PREEMPT_RT_FULL) ++#if defined(CONFIG_IRQ_WORK) + if (in_irq()) + irq_work_tick(); + #endif +@@ -1679,9 +1679,7 @@ static __latent_entropy void run_timer_s + { + struct timer_base *base = this_cpu_ptr(&timer_bases[BASE_STD]); + +-#if defined(CONFIG_IRQ_WORK) && defined(CONFIG_PREEMPT_RT_FULL) +- irq_work_tick(); +-#endif ++ irq_work_tick_soft(); + /* + * must_forward_clk must be cleared before running timers so that any + * timer functions that call mod_timer will not try to forward the diff --git a/patches/features/all/rt/irqwork-push_most_work_into_softirq_context.patch b/patches/features/all/rt/irqwork-push_most_work_into_softirq_context.patch new file mode 100644 index 00000000000..1ee2358fd3e --- /dev/null +++ b/patches/features/all/rt/irqwork-push_most_work_into_softirq_context.patch @@ -0,0 +1,185 @@ +Subject: irqwork: push most work into softirq context +From: Sebastian Andrzej Siewior +Date: Tue, 23 Jun 2015 15:32:51 +0200 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Initially we defered all irqwork into softirq because we didn't want the +latency spikes if perf or another user was busy and delayed the RT task. +The NOHZ trigger (nohz_full_kick_work) was the first user that did not work +as expected if it did not run in the original irqwork context so we had to +bring it back somehow for it. push_irq_work_func is the second one that +requires this. + +This patch adds the IRQ_WORK_HARD_IRQ which makes sure the callback runs +in raw-irq context. Everything else is defered into softirq context. Without +-RT we have the orignal behavior. + +This patch incorporates tglx orignal work which revoked a little bringing back +the arch_irq_work_raise() if possible and a few fixes from Steven Rostedt and +Mike Galbraith, + +Signed-off-by: Sebastian Andrzej Siewior +--- + include/linux/irq_work.h | 1 + + kernel/irq_work.c | 47 ++++++++++++++++++++++++++++++++++------------- + kernel/sched/topology.c | 1 + + kernel/time/tick-sched.c | 1 + + kernel/time/timer.c | 5 ++++- + 5 files changed, 41 insertions(+), 14 deletions(-) + +--- a/include/linux/irq_work.h ++++ b/include/linux/irq_work.h +@@ -17,6 +17,7 @@ + #define IRQ_WORK_BUSY 2UL + #define IRQ_WORK_FLAGS 3UL + #define IRQ_WORK_LAZY 4UL /* Doesn't want IPI, wait for tick */ ++#define IRQ_WORK_HARD_IRQ 8UL /* Run hard IRQ context, even on RT */ + + struct irq_work { + unsigned long flags; +--- a/kernel/irq_work.c ++++ b/kernel/irq_work.c +@@ -17,6 +17,7 @@ + #include + #include + #include ++#include + #include + + +@@ -65,6 +66,8 @@ void __weak arch_irq_work_raise(void) + */ + bool irq_work_queue_on(struct irq_work *work, int cpu) + { ++ struct llist_head *list; ++ + /* All work should have been flushed before going offline */ + WARN_ON_ONCE(cpu_is_offline(cpu)); + +@@ -75,7 +78,12 @@ bool irq_work_queue_on(struct irq_work * + if (!irq_work_claim(work)) + return false; + +- if (llist_add(&work->llnode, &per_cpu(raised_list, cpu))) ++ if (IS_ENABLED(CONFIG_PREEMPT_RT_FULL) && !(work->flags & IRQ_WORK_HARD_IRQ)) ++ list = &per_cpu(lazy_list, cpu); ++ else ++ list = &per_cpu(raised_list, cpu); ++ ++ if (llist_add(&work->llnode, list)) + arch_send_call_function_single_ipi(cpu); + + return true; +@@ -86,6 +94,9 @@ EXPORT_SYMBOL_GPL(irq_work_queue_on); + /* Enqueue the irq work @work on the current CPU */ + bool irq_work_queue(struct irq_work *work) + { ++ struct llist_head *list; ++ bool lazy_work, realtime = IS_ENABLED(CONFIG_PREEMPT_RT_FULL); ++ + /* Only queue if not already pending */ + if (!irq_work_claim(work)) + return false; +@@ -93,13 +104,15 @@ bool irq_work_queue(struct irq_work *wor + /* Queue the entry and raise the IPI if needed. */ + preempt_disable(); + +- /* If the work is "lazy", handle it from next tick if any */ +- if (work->flags & IRQ_WORK_LAZY) { +- if (llist_add(&work->llnode, this_cpu_ptr(&lazy_list)) && +- tick_nohz_tick_stopped()) +- arch_irq_work_raise(); +- } else { +- if (llist_add(&work->llnode, this_cpu_ptr(&raised_list))) ++ lazy_work = work->flags & IRQ_WORK_LAZY; ++ ++ if (lazy_work || (realtime && !(work->flags & IRQ_WORK_HARD_IRQ))) ++ list = this_cpu_ptr(&lazy_list); ++ else ++ list = this_cpu_ptr(&raised_list); ++ ++ if (llist_add(&work->llnode, list)) { ++ if (!lazy_work || tick_nohz_tick_stopped()) + arch_irq_work_raise(); + } + +@@ -116,9 +129,8 @@ bool irq_work_needs_cpu(void) + raised = this_cpu_ptr(&raised_list); + lazy = this_cpu_ptr(&lazy_list); + +- if (llist_empty(raised) || arch_irq_work_has_interrupt()) +- if (llist_empty(lazy)) +- return false; ++ if (llist_empty(raised) && llist_empty(lazy)) ++ return false; + + /* All work should have been flushed before going offline */ + WARN_ON_ONCE(cpu_is_offline(smp_processor_id())); +@@ -132,7 +144,7 @@ static void irq_work_run_list(struct lli + struct irq_work *work; + struct llist_node *llnode; + +- BUG_ON(!irqs_disabled()); ++ BUG_ON_NONRT(!irqs_disabled()); + + if (llist_empty(list)) + return; +@@ -169,7 +181,16 @@ static void irq_work_run_list(struct lli + void irq_work_run(void) + { + irq_work_run_list(this_cpu_ptr(&raised_list)); +- irq_work_run_list(this_cpu_ptr(&lazy_list)); ++ if (IS_ENABLED(CONFIG_PREEMPT_RT_FULL)) { ++ /* ++ * NOTE: we raise softirq via IPI for safety, ++ * and execute in irq_work_tick() to move the ++ * overhead from hard to soft irq context. ++ */ ++ if (!llist_empty(this_cpu_ptr(&lazy_list))) ++ raise_softirq(TIMER_SOFTIRQ); ++ } else ++ irq_work_run_list(this_cpu_ptr(&lazy_list)); + } + EXPORT_SYMBOL_GPL(irq_work_run); + +--- a/kernel/sched/topology.c ++++ b/kernel/sched/topology.c +@@ -273,6 +273,7 @@ static int init_rootdomain(struct root_d + rd->rto_cpu = -1; + raw_spin_lock_init(&rd->rto_lock); + init_irq_work(&rd->rto_push_work, rto_push_irq_work_func); ++ rd->rto_push_work.flags |= IRQ_WORK_HARD_IRQ; + #endif + + init_dl_bw(&rd->dl_bw); +--- a/kernel/time/tick-sched.c ++++ b/kernel/time/tick-sched.c +@@ -230,6 +230,7 @@ static void nohz_full_kick_func(struct i + + static DEFINE_PER_CPU(struct irq_work, nohz_full_kick_work) = { + .func = nohz_full_kick_func, ++ .flags = IRQ_WORK_HARD_IRQ, + }; + + /* +--- a/kernel/time/timer.c ++++ b/kernel/time/timer.c +@@ -1638,7 +1638,7 @@ void update_process_times(int user_tick) + scheduler_tick(); + run_local_timers(); + rcu_check_callbacks(user_tick); +-#ifdef CONFIG_IRQ_WORK ++#if defined(CONFIG_IRQ_WORK) && !defined(CONFIG_PREEMPT_RT_FULL) + if (in_irq()) + irq_work_tick(); + #endif +@@ -1679,6 +1679,9 @@ static __latent_entropy void run_timer_s + { + struct timer_base *base = this_cpu_ptr(&timer_bases[BASE_STD]); + ++#if defined(CONFIG_IRQ_WORK) && defined(CONFIG_PREEMPT_RT_FULL) ++ irq_work_tick(); ++#endif + /* + * must_forward_clk must be cleared before running timers so that any + * timer functions that call mod_timer will not try to forward the diff --git a/patches/features/all/rt/jump-label-rt.patch b/patches/features/all/rt/jump-label-rt.patch new file mode 100644 index 00000000000..4cf014b1cc9 --- /dev/null +++ b/patches/features/all/rt/jump-label-rt.patch @@ -0,0 +1,36 @@ +Subject: jump-label: disable if stop_machine() is used +From: Thomas Gleixner +Date: Wed, 08 Jul 2015 17:14:48 +0200 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Some architectures are using stop_machine() while switching the opcode which +leads to latency spikes. +The architectures which use stop_machine() atm: +- ARM stop machine +- s390 stop machine + +The architecures which use other sorcery: +- MIPS +- X86 +- powerpc +- sparc +- arm64 + +Signed-off-by: Thomas Gleixner +[bigeasy: only ARM for now] +Signed-off-by: Sebastian Andrzej Siewior +--- + arch/arm/Kconfig | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/arch/arm/Kconfig ++++ b/arch/arm/Kconfig +@@ -45,7 +45,7 @@ config ARM + select HARDIRQS_SW_RESEND + select HAVE_ARCH_AUDITSYSCALL if (AEABI && !OABI_COMPAT) + select HAVE_ARCH_BITREVERSE if (CPU_32v7M || CPU_32v7) && !CPU_32v6 +- select HAVE_ARCH_JUMP_LABEL if !XIP_KERNEL && !CPU_ENDIAN_BE32 && MMU ++ select HAVE_ARCH_JUMP_LABEL if !XIP_KERNEL && !CPU_ENDIAN_BE32 && MMU && !PREEMPT_RT_BASE + select HAVE_ARCH_KGDB if !CPU_ENDIAN_BE32 && MMU + select HAVE_ARCH_MMAP_RND_BITS if MMU + select HAVE_ARCH_SECCOMP_FILTER if (AEABI && !OABI_COMPAT) diff --git a/patches/features/all/rt/kconfig-disable-a-few-options-rt.patch b/patches/features/all/rt/kconfig-disable-a-few-options-rt.patch new file mode 100644 index 00000000000..8e9419e4017 --- /dev/null +++ b/patches/features/all/rt/kconfig-disable-a-few-options-rt.patch @@ -0,0 +1,34 @@ +Subject: kconfig: Disable config options which are not RT compatible +From: Thomas Gleixner +Date: Sun, 24 Jul 2011 12:11:43 +0200 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Disable stuff which is known to have issues on RT + +Signed-off-by: Thomas Gleixner +--- + arch/Kconfig | 1 + + mm/Kconfig | 2 +- + 2 files changed, 2 insertions(+), 1 deletion(-) + +--- a/arch/Kconfig ++++ b/arch/Kconfig +@@ -17,6 +17,7 @@ config OPROFILE + tristate "OProfile system profiling" + depends on PROFILING + depends on HAVE_OPROFILE ++ depends on !PREEMPT_RT_FULL + select RING_BUFFER + select RING_BUFFER_ALLOW_SWAP + help +--- a/mm/Kconfig ++++ b/mm/Kconfig +@@ -385,7 +385,7 @@ config NOMMU_INITIAL_TRIM_EXCESS + + config TRANSPARENT_HUGEPAGE + bool "Transparent Hugepage Support" +- depends on HAVE_ARCH_TRANSPARENT_HUGEPAGE ++ depends on HAVE_ARCH_TRANSPARENT_HUGEPAGE && !PREEMPT_RT_FULL + select COMPACTION + select RADIX_TREE_MULTIORDER + help diff --git a/patches/features/all/rt/kconfig-preempt-rt-full.patch b/patches/features/all/rt/kconfig-preempt-rt-full.patch new file mode 100644 index 00000000000..a2687ba5123 --- /dev/null +++ b/patches/features/all/rt/kconfig-preempt-rt-full.patch @@ -0,0 +1,59 @@ +Subject: kconfig: Add PREEMPT_RT_FULL +From: Thomas Gleixner +Date: Wed, 29 Jun 2011 14:58:57 +0200 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Introduce the final symbol for PREEMPT_RT_FULL. + +Signed-off-by: Thomas Gleixner +--- + init/Makefile | 2 +- + kernel/Kconfig.preempt | 8 ++++++++ + scripts/mkcompile_h | 4 +++- + 3 files changed, 12 insertions(+), 2 deletions(-) + +--- a/init/Makefile ++++ b/init/Makefile +@@ -36,4 +36,4 @@ mounts-$(CONFIG_BLK_DEV_MD) += do_mounts + include/generated/compile.h: FORCE + @$($(quiet)chk_compile.h) + $(Q)$(CONFIG_SHELL) $(srctree)/scripts/mkcompile_h $@ \ +- "$(UTS_MACHINE)" "$(CONFIG_SMP)" "$(CONFIG_PREEMPT)" "$(CC) $(KBUILD_CFLAGS)" ++ "$(UTS_MACHINE)" "$(CONFIG_SMP)" "$(CONFIG_PREEMPT)" "$(CONFIG_PREEMPT_RT_FULL)" "$(CC) $(KBUILD_CFLAGS)" +--- a/kernel/Kconfig.preempt ++++ b/kernel/Kconfig.preempt +@@ -67,6 +67,14 @@ config PREEMPT_RTB + enables changes which are preliminary for the full preemptible + RT kernel. + ++config PREEMPT_RT_FULL ++ bool "Fully Preemptible Kernel (RT)" ++ depends on IRQ_FORCED_THREADING ++ select PREEMPT_RT_BASE ++ select PREEMPT_RCU ++ help ++ All and everything ++ + endchoice + + config PREEMPT_COUNT +--- a/scripts/mkcompile_h ++++ b/scripts/mkcompile_h +@@ -5,7 +5,8 @@ TARGET=$1 + ARCH=$2 + SMP=$3 + PREEMPT=$4 +-CC=$5 ++RT=$5 ++CC=$6 + + vecho() { [ "${quiet}" = "silent_" ] || echo "$@" ; } + +@@ -58,6 +59,7 @@ UTS_VERSION="#$VERSION" + CONFIG_FLAGS="" + if [ -n "$SMP" ] ; then CONFIG_FLAGS="SMP"; fi + if [ -n "$PREEMPT" ] ; then CONFIG_FLAGS="$CONFIG_FLAGS PREEMPT"; fi ++if [ -n "$RT" ] ; then CONFIG_FLAGS="$CONFIG_FLAGS RT"; fi + UTS_VERSION="$UTS_VERSION $CONFIG_FLAGS $TIMESTAMP" + + # Truncate to maximum length diff --git a/patches/features/all/rt/kernel-SRCU-provide-a-static-initializer.patch b/patches/features/all/rt/kernel-SRCU-provide-a-static-initializer.patch new file mode 100644 index 00000000000..2131b2b7327 --- /dev/null +++ b/patches/features/all/rt/kernel-SRCU-provide-a-static-initializer.patch @@ -0,0 +1,156 @@ +From: Sebastian Andrzej Siewior +Date: Tue, 19 Mar 2013 14:44:30 +0100 +Subject: kernel/SRCU: provide a static initializer +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +There are macros for static initializer for the three out of four +possible notifier types, that are: + ATOMIC_NOTIFIER_HEAD() + BLOCKING_NOTIFIER_HEAD() + RAW_NOTIFIER_HEAD() + +This patch provides a static initilizer for the forth type to make it +complete. + +Signed-off-by: Sebastian Andrzej Siewior +--- + include/linux/notifier.h | 42 +++++++++++++++++++++++++++++++++--------- + include/linux/srcutiny.h | 6 +++--- + include/linux/srcutree.h | 6 +++--- + 3 files changed, 39 insertions(+), 15 deletions(-) + +--- a/include/linux/notifier.h ++++ b/include/linux/notifier.h +@@ -7,7 +7,7 @@ + * + * Alan Cox + */ +- ++ + #ifndef _LINUX_NOTIFIER_H + #define _LINUX_NOTIFIER_H + #include +@@ -43,9 +43,7 @@ + * in srcu_notifier_call_chain(): no cache bounces and no memory barriers. + * As compensation, srcu_notifier_chain_unregister() is rather expensive. + * SRCU notifier chains should be used when the chain will be called very +- * often but notifier_blocks will seldom be removed. Also, SRCU notifier +- * chains are slightly more difficult to use because they require special +- * runtime initialization. ++ * often but notifier_blocks will seldom be removed. + */ + + struct notifier_block; +@@ -91,7 +89,7 @@ struct srcu_notifier_head { + (name)->head = NULL; \ + } while (0) + +-/* srcu_notifier_heads must be initialized and cleaned up dynamically */ ++/* srcu_notifier_heads must be cleaned up dynamically */ + extern void srcu_init_notifier_head(struct srcu_notifier_head *nh); + #define srcu_cleanup_notifier_head(name) \ + cleanup_srcu_struct(&(name)->srcu); +@@ -104,7 +102,13 @@ extern void srcu_init_notifier_head(stru + .head = NULL } + #define RAW_NOTIFIER_INIT(name) { \ + .head = NULL } +-/* srcu_notifier_heads cannot be initialized statically */ ++ ++#define SRCU_NOTIFIER_INIT(name, pcpu) \ ++ { \ ++ .mutex = __MUTEX_INITIALIZER(name.mutex), \ ++ .head = NULL, \ ++ .srcu = __SRCU_STRUCT_INIT(name.srcu, pcpu), \ ++ } + + #define ATOMIC_NOTIFIER_HEAD(name) \ + struct atomic_notifier_head name = \ +@@ -116,6 +120,26 @@ extern void srcu_init_notifier_head(stru + struct raw_notifier_head name = \ + RAW_NOTIFIER_INIT(name) + ++#ifdef CONFIG_TREE_SRCU ++#define _SRCU_NOTIFIER_HEAD(name, mod) \ ++ static DEFINE_PER_CPU(struct srcu_data, \ ++ name##_head_srcu_data); \ ++ mod struct srcu_notifier_head name = \ ++ SRCU_NOTIFIER_INIT(name, name##_head_srcu_data) ++ ++#else ++#define _SRCU_NOTIFIER_HEAD(name, mod) \ ++ mod struct srcu_notifier_head name = \ ++ SRCU_NOTIFIER_INIT(name, name) ++ ++#endif ++ ++#define SRCU_NOTIFIER_HEAD(name) \ ++ _SRCU_NOTIFIER_HEAD(name, ) ++ ++#define SRCU_NOTIFIER_HEAD_STATIC(name) \ ++ _SRCU_NOTIFIER_HEAD(name, static) ++ + #ifdef __KERNEL__ + + extern int atomic_notifier_chain_register(struct atomic_notifier_head *nh, +@@ -185,12 +209,12 @@ static inline int notifier_to_errno(int + + /* + * Declared notifiers so far. I can imagine quite a few more chains +- * over time (eg laptop power reset chains, reboot chain (to clean ++ * over time (eg laptop power reset chains, reboot chain (to clean + * device units up), device [un]mount chain, module load/unload chain, +- * low memory chain, screenblank chain (for plug in modular screenblankers) ++ * low memory chain, screenblank chain (for plug in modular screenblankers) + * VC switch chains (for loadable kernel svgalib VC switch helpers) etc... + */ +- ++ + /* CPU notfiers are defined in include/linux/cpu.h. */ + + /* netdevice notifiers are defined in include/linux/netdevice.h */ +--- a/include/linux/srcutiny.h ++++ b/include/linux/srcutiny.h +@@ -43,7 +43,7 @@ struct srcu_struct { + + void srcu_drive_gp(struct work_struct *wp); + +-#define __SRCU_STRUCT_INIT(name) \ ++#define __SRCU_STRUCT_INIT(name, __ignored) \ + { \ + .srcu_wq = __SWAIT_QUEUE_HEAD_INITIALIZER(name.srcu_wq), \ + .srcu_cb_tail = &name.srcu_cb_head, \ +@@ -56,9 +56,9 @@ void srcu_drive_gp(struct work_struct *w + * Tree SRCU, which needs some per-CPU data. + */ + #define DEFINE_SRCU(name) \ +- struct srcu_struct name = __SRCU_STRUCT_INIT(name) ++ struct srcu_struct name = __SRCU_STRUCT_INIT(name, name) + #define DEFINE_STATIC_SRCU(name) \ +- static struct srcu_struct name = __SRCU_STRUCT_INIT(name) ++ static struct srcu_struct name = __SRCU_STRUCT_INIT(name, name) + + void synchronize_srcu(struct srcu_struct *sp); + +--- a/include/linux/srcutree.h ++++ b/include/linux/srcutree.h +@@ -104,9 +104,9 @@ struct srcu_struct { + #define SRCU_STATE_SCAN1 1 + #define SRCU_STATE_SCAN2 2 + +-#define __SRCU_STRUCT_INIT(name) \ ++#define __SRCU_STRUCT_INIT(name, pcpu_name) \ + { \ +- .sda = &name##_srcu_data, \ ++ .sda = &pcpu_name, \ + .lock = __RAW_SPIN_LOCK_UNLOCKED(name.lock), \ + .srcu_gp_seq_needed = 0 - 1, \ + __SRCU_DEP_MAP_INIT(name) \ +@@ -133,7 +133,7 @@ struct srcu_struct { + */ + #define __DEFINE_SRCU(name, is_static) \ + static DEFINE_PER_CPU(struct srcu_data, name##_srcu_data);\ +- is_static struct srcu_struct name = __SRCU_STRUCT_INIT(name) ++ is_static struct srcu_struct name = __SRCU_STRUCT_INIT(name, name##_srcu_data) + #define DEFINE_SRCU(name) __DEFINE_SRCU(name, /* not static */) + #define DEFINE_STATIC_SRCU(name) __DEFINE_SRCU(name, static) + diff --git a/patches/features/all/rt/kernel-printk-Don-t-try-to-print-from-IRQ-NMI-region.patch b/patches/features/all/rt/kernel-printk-Don-t-try-to-print-from-IRQ-NMI-region.patch new file mode 100644 index 00000000000..6f021b898f9 --- /dev/null +++ b/patches/features/all/rt/kernel-printk-Don-t-try-to-print-from-IRQ-NMI-region.patch @@ -0,0 +1,42 @@ +From: Sebastian Andrzej Siewior +Date: Thu, 19 May 2016 17:45:27 +0200 +Subject: [PATCH] kernel/printk: Don't try to print from IRQ/NMI region +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +On -RT we try to acquire sleeping locks which might lead to warnings +from lockdep or a warn_on() from spin_try_lock() (which is a rtmutex on +RT). +We don't print in general from a IRQ off region so we should not try +this via console_unblank() / bust_spinlocks() as well. + +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/printk/printk.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +--- a/kernel/printk/printk.c ++++ b/kernel/printk/printk.c +@@ -1617,6 +1617,11 @@ static void call_console_drivers(const c + if (!console_drivers) + return; + ++ if (IS_ENABLED(CONFIG_PREEMPT_RT_BASE)) { ++ if (in_irq() || in_nmi()) ++ return; ++ } ++ + migrate_disable(); + for_each_console(con) { + if (exclusive_console && con != exclusive_console) +@@ -2349,6 +2354,11 @@ void console_unblank(void) + { + struct console *c; + ++ if (IS_ENABLED(CONFIG_PREEMPT_RT_BASE)) { ++ if (in_irq() || in_nmi()) ++ return; ++ } ++ + /* + * console_unblank can no longer be called in interrupt context unless + * oops_in_progress is set to 1.. diff --git a/patches/features/all/rt/kernel-sched-Provide-a-pointer-to-the-valid-CPU-mask.patch b/patches/features/all/rt/kernel-sched-Provide-a-pointer-to-the-valid-CPU-mask.patch new file mode 100644 index 00000000000..224b6129a31 --- /dev/null +++ b/patches/features/all/rt/kernel-sched-Provide-a-pointer-to-the-valid-CPU-mask.patch @@ -0,0 +1,764 @@ +From: Sebastian Andrzej Siewior +Date: Tue, 4 Apr 2017 12:50:16 +0200 +Subject: [PATCH] kernel: sched: Provide a pointer to the valid CPU mask +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +In commit 4b53a3412d66 ("sched/core: Remove the tsk_nr_cpus_allowed() +wrapper") the tsk_nr_cpus_allowed() wrapper was removed. There was not +much difference in !RT but in RT we used this to implement +migrate_disable(). Within a migrate_disable() section the CPU mask is +restricted to single CPU while the "normal" CPU mask remains untouched. + +As an alternative implementation Ingo suggested to use + struct task_struct { + const cpumask_t *cpus_ptr; + cpumask_t cpus_mask; + }; +with + t->cpus_allowed_ptr = &t->cpus_allowed; + +In -RT we then can switch the cpus_ptr to + t->cpus_allowed_ptr = &cpumask_of(task_cpu(p)); + +in a migration disabled region. The rules are simple: +- Code that 'uses' ->cpus_allowed would use the pointer. +- Code that 'modifies' ->cpus_allowed would use the direct mask. + +While converting the existing users I tried to stick with the rules +above however… well mostly CPUFREQ tries to temporary switch the CPU +mask to do something on a certain CPU and then switches the mask back it +its original value. So in theory `cpus_ptr' could or should be used. +However if this is invoked in a migration disabled region (which is not +the case because it would require something like preempt_disable() and +set_cpus_allowed_ptr() might sleep so it can't be) then the "restore" +part would restore the wrong mask. So it only looks strange and I go for +the pointer… + +Some drivers copy the cpumask without cpumask_copy() and others use +cpumask_copy but without alloc_cpumask_var(). I did not fix those as +part of this, could do this as a follow up… + +So is this the way we want it? +Is the usage of `cpus_ptr' vs `cpus_mask' for the set + restore part +(see cpufreq users) what we want? At some point it looks like they +should use a different interface for their doing. I am not sure why +switching to certain CPU is important but maybe it could be done via a +workqueue from the CPUFREQ core (so we have a comment desribing why are +doing this and a get_online_cpus() to ensure that the CPU does not go +offline too early). + +Cc: Peter Zijlstra +Cc: Thomas Gleixner +Cc: Mike Galbraith +Cc: Ingo Molnar +Cc: Rafael J. Wysocki +Signed-off-by: Sebastian Andrzej Siewior +--- + arch/ia64/kernel/mca.c | 2 - + arch/mips/include/asm/switch_to.h | 4 +- + arch/mips/kernel/mips-mt-fpaff.c | 2 - + arch/mips/kernel/traps.c | 6 ++-- + arch/powerpc/platforms/cell/spufs/sched.c | 2 - + arch/tile/include/asm/setup.h | 2 - + arch/tile/kernel/hardwall.c | 10 +++--- + drivers/infiniband/hw/hfi1/affinity.c | 6 ++-- + drivers/infiniband/hw/hfi1/sdma.c | 3 -- + drivers/infiniband/hw/qib/qib_file_ops.c | 7 ++-- + fs/proc/array.c | 4 +- + include/linux/init_task.h | 3 +- + include/linux/sched.h | 5 ++- + kernel/cgroup/cpuset.c | 2 - + kernel/fork.c | 3 +- + kernel/sched/core.c | 42 ++++++++++++++--------------- + kernel/sched/cpudeadline.c | 4 +- + kernel/sched/cpupri.c | 4 +- + kernel/sched/deadline.c | 6 ++-- + kernel/sched/fair.c | 28 +++++++++---------- + kernel/sched/rt.c | 4 +- + kernel/trace/trace_hwlat.c | 2 - + lib/smp_processor_id.c | 2 - + samples/trace_events/trace-events-sample.c | 2 - + 24 files changed, 78 insertions(+), 77 deletions(-) + +--- a/arch/ia64/kernel/mca.c ++++ b/arch/ia64/kernel/mca.c +@@ -1824,7 +1824,7 @@ format_mca_init_stack(void *mca_data, un + ti->cpu = cpu; + p->stack = ti; + p->state = TASK_UNINTERRUPTIBLE; +- cpumask_set_cpu(cpu, &p->cpus_allowed); ++ cpumask_set_cpu(cpu, &p->cpus_mask); + INIT_LIST_HEAD(&p->tasks); + p->parent = p->real_parent = p->group_leader = p; + INIT_LIST_HEAD(&p->children); +--- a/arch/mips/include/asm/switch_to.h ++++ b/arch/mips/include/asm/switch_to.h +@@ -42,7 +42,7 @@ extern struct task_struct *ll_task; + * inline to try to keep the overhead down. If we have been forced to run on + * a "CPU" with an FPU because of a previous high level of FP computation, + * but did not actually use the FPU during the most recent time-slice (CU1 +- * isn't set), we undo the restriction on cpus_allowed. ++ * isn't set), we undo the restriction on cpus_mask. + * + * We're not calling set_cpus_allowed() here, because we have no need to + * force prompt migration - we're already switching the current CPU to a +@@ -57,7 +57,7 @@ do { \ + test_ti_thread_flag(__prev_ti, TIF_FPUBOUND) && \ + (!(KSTK_STATUS(prev) & ST0_CU1))) { \ + clear_ti_thread_flag(__prev_ti, TIF_FPUBOUND); \ +- prev->cpus_allowed = prev->thread.user_cpus_allowed; \ ++ prev->cpus_mask = prev->thread.user_cpus_allowed; \ + } \ + next->thread.emulated_fp = 0; \ + } while(0) +--- a/arch/mips/kernel/mips-mt-fpaff.c ++++ b/arch/mips/kernel/mips-mt-fpaff.c +@@ -177,7 +177,7 @@ asmlinkage long mipsmt_sys_sched_getaffi + if (retval) + goto out_unlock; + +- cpumask_or(&allowed, &p->thread.user_cpus_allowed, &p->cpus_allowed); ++ cpumask_or(&allowed, &p->thread.user_cpus_allowed, p->cpus_ptr); + cpumask_and(&mask, &allowed, cpu_active_mask); + + out_unlock: +--- a/arch/mips/kernel/traps.c ++++ b/arch/mips/kernel/traps.c +@@ -1192,12 +1192,12 @@ static void mt_ase_fp_affinity(void) + * restricted the allowed set to exclude any CPUs with FPUs, + * we'll skip the procedure. + */ +- if (cpumask_intersects(¤t->cpus_allowed, &mt_fpu_cpumask)) { ++ if (cpumask_intersects(¤t->cpus_mask, &mt_fpu_cpumask)) { + cpumask_t tmask; + + current->thread.user_cpus_allowed +- = current->cpus_allowed; +- cpumask_and(&tmask, ¤t->cpus_allowed, ++ = current->cpus_mask; ++ cpumask_and(&tmask, ¤t->cpus_mask, + &mt_fpu_cpumask); + set_cpus_allowed_ptr(current, &tmask); + set_thread_flag(TIF_FPUBOUND); +--- a/arch/powerpc/platforms/cell/spufs/sched.c ++++ b/arch/powerpc/platforms/cell/spufs/sched.c +@@ -141,7 +141,7 @@ void __spu_update_sched_info(struct spu_ + * runqueue. The context will be rescheduled on the proper node + * if it is timesliced or preempted. + */ +- cpumask_copy(&ctx->cpus_allowed, ¤t->cpus_allowed); ++ cpumask_copy(&ctx->cpus_allowed, current->cpus_ptr); + + /* Save the current cpu id for spu interrupt routing. */ + ctx->last_ran = raw_smp_processor_id(); +--- a/arch/tile/include/asm/setup.h ++++ b/arch/tile/include/asm/setup.h +@@ -49,7 +49,7 @@ int hardwall_ipi_valid(int cpu); + + /* Hook hardwall code into changes in affinity. */ + #define arch_set_cpus_allowed(p, new_mask) do { \ +- if (!cpumask_equal(&p->cpus_allowed, new_mask)) \ ++ if (!cpumask_equal(p->cpus_ptr, new_mask)) \ + hardwall_deactivate_all(p); \ + } while (0) + #endif +--- a/arch/tile/kernel/hardwall.c ++++ b/arch/tile/kernel/hardwall.c +@@ -590,12 +590,12 @@ static int hardwall_activate(struct hard + * Get our affinity; if we're not bound to this tile uniquely, + * we can't access the network registers. + */ +- if (cpumask_weight(&p->cpus_allowed) != 1) ++ if (p->nr_cpus_allowed != 1) + return -EPERM; + + /* Make sure we are bound to a cpu assigned to this resource. */ + cpu = smp_processor_id(); +- BUG_ON(cpumask_first(&p->cpus_allowed) != cpu); ++ BUG_ON(cpumask_first(p->cpus_ptr) != cpu); + if (!cpumask_test_cpu(cpu, &info->cpumask)) + return -EINVAL; + +@@ -621,17 +621,17 @@ static int hardwall_activate(struct hard + * Deactivate a task's hardwall. Must hold lock for hardwall_type. + * This method may be called from exit_thread(), so we don't want to + * rely on too many fields of struct task_struct still being valid. +- * We assume the cpus_allowed, pid, and comm fields are still valid. ++ * We assume the nr_cpus_allowed, pid, and comm fields are still valid. + */ + static void _hardwall_deactivate(struct hardwall_type *hwt, + struct task_struct *task) + { + struct thread_struct *ts = &task->thread; + +- if (cpumask_weight(&task->cpus_allowed) != 1) { ++ if (task->nr_cpus_allowed != 1) { + pr_err("pid %d (%s) releasing %s hardwall with an affinity mask containing %d cpus!\n", + task->pid, task->comm, hwt->name, +- cpumask_weight(&task->cpus_allowed)); ++ task->nr_cpus_allowed); + BUG(); + } + +--- a/drivers/infiniband/hw/hfi1/affinity.c ++++ b/drivers/infiniband/hw/hfi1/affinity.c +@@ -576,7 +576,7 @@ int hfi1_get_proc_affinity(int node) + struct hfi1_affinity_node *entry; + cpumask_var_t diff, hw_thread_mask, available_mask, intrs_mask; + const struct cpumask *node_mask, +- *proc_mask = ¤t->cpus_allowed; ++ *proc_mask = current->cpus_ptr; + struct hfi1_affinity_node_list *affinity = &node_affinity; + struct cpu_mask_set *set = &affinity->proc; + +@@ -584,7 +584,7 @@ int hfi1_get_proc_affinity(int node) + * check whether process/context affinity has already + * been set + */ +- if (cpumask_weight(proc_mask) == 1) { ++ if (current->nr_cpus_allowed == 1) { + hfi1_cdbg(PROC, "PID %u %s affinity set to CPU %*pbl", + current->pid, current->comm, + cpumask_pr_args(proc_mask)); +@@ -595,7 +595,7 @@ int hfi1_get_proc_affinity(int node) + cpu = cpumask_first(proc_mask); + cpumask_set_cpu(cpu, &set->used); + goto done; +- } else if (cpumask_weight(proc_mask) < cpumask_weight(&set->mask)) { ++ } else if (current->nr_cpus_allowed < cpumask_weight(&set->mask)) { + hfi1_cdbg(PROC, "PID %u %s affinity set to CPU set(s) %*pbl", + current->pid, current->comm, + cpumask_pr_args(proc_mask)); +--- a/drivers/infiniband/hw/hfi1/sdma.c ++++ b/drivers/infiniband/hw/hfi1/sdma.c +@@ -856,14 +856,13 @@ struct sdma_engine *sdma_select_user_eng + { + struct sdma_rht_node *rht_node; + struct sdma_engine *sde = NULL; +- const struct cpumask *current_mask = ¤t->cpus_allowed; + unsigned long cpu_id; + + /* + * To ensure that always the same sdma engine(s) will be + * selected make sure the process is pinned to this CPU only. + */ +- if (cpumask_weight(current_mask) != 1) ++ if (current->nr_cpus_allowed != 1) + goto out; + + cpu_id = smp_processor_id(); +--- a/drivers/infiniband/hw/qib/qib_file_ops.c ++++ b/drivers/infiniband/hw/qib/qib_file_ops.c +@@ -1163,7 +1163,7 @@ static unsigned int qib_poll(struct file + static void assign_ctxt_affinity(struct file *fp, struct qib_devdata *dd) + { + struct qib_filedata *fd = fp->private_data; +- const unsigned int weight = cpumask_weight(¤t->cpus_allowed); ++ const unsigned int weight = current->nr_cpus_allowed; + const struct cpumask *local_mask = cpumask_of_pcibus(dd->pcidev->bus); + int local_cpu; + +@@ -1644,9 +1644,8 @@ static int qib_assign_ctxt(struct file * + ret = find_free_ctxt(i_minor - 1, fp, uinfo); + else { + int unit; +- const unsigned int cpu = cpumask_first(¤t->cpus_allowed); +- const unsigned int weight = +- cpumask_weight(¤t->cpus_allowed); ++ const unsigned int cpu = cpumask_first(current->cpus_ptr); ++ const unsigned int weight = current->nr_cpus_allowed; + + if (weight == 1 && !test_bit(cpu, qib_cpulist)) + if (!find_hca(cpu, &unit) && unit >= 0) +--- a/fs/proc/array.c ++++ b/fs/proc/array.c +@@ -361,9 +361,9 @@ static inline void task_context_switch_c + static void task_cpus_allowed(struct seq_file *m, struct task_struct *task) + { + seq_printf(m, "Cpus_allowed:\t%*pb\n", +- cpumask_pr_args(&task->cpus_allowed)); ++ cpumask_pr_args(task->cpus_ptr)); + seq_printf(m, "Cpus_allowed_list:\t%*pbl\n", +- cpumask_pr_args(&task->cpus_allowed)); ++ cpumask_pr_args(task->cpus_ptr)); + } + + int proc_pid_status(struct seq_file *m, struct pid_namespace *ns, +--- a/include/linux/init_task.h ++++ b/include/linux/init_task.h +@@ -234,7 +234,8 @@ extern struct cred init_cred; + .static_prio = MAX_PRIO-20, \ + .normal_prio = MAX_PRIO-20, \ + .policy = SCHED_NORMAL, \ +- .cpus_allowed = CPU_MASK_ALL, \ ++ .cpus_ptr = &tsk.cpus_mask, \ ++ .cpus_mask = CPU_MASK_ALL, \ + .nr_cpus_allowed= NR_CPUS, \ + .mm = NULL, \ + .active_mm = &init_mm, \ +--- a/include/linux/sched.h ++++ b/include/linux/sched.h +@@ -578,7 +578,8 @@ struct task_struct { + + unsigned int policy; + int nr_cpus_allowed; +- cpumask_t cpus_allowed; ++ const cpumask_t *cpus_ptr; ++ cpumask_t cpus_mask; + + #ifdef CONFIG_PREEMPT_RCU + int rcu_read_lock_nesting; +@@ -1315,7 +1316,7 @@ extern struct pid *cad_pid; + #define PF_KTHREAD 0x00200000 /* I am a kernel thread */ + #define PF_RANDOMIZE 0x00400000 /* Randomize virtual address space */ + #define PF_SWAPWRITE 0x00800000 /* Allowed to write to swap */ +-#define PF_NO_SETAFFINITY 0x04000000 /* Userland is not allowed to meddle with cpus_allowed */ ++#define PF_NO_SETAFFINITY 0x04000000 /* Userland is not allowed to meddle with cpus_mask */ + #define PF_MCE_EARLY 0x08000000 /* Early kill for mce process policy */ + #define PF_MUTEX_TESTER 0x20000000 /* Thread belongs to the rt mutex tester */ + #define PF_FREEZER_SKIP 0x40000000 /* Freezer should not count it as freezable */ +--- a/kernel/cgroup/cpuset.c ++++ b/kernel/cgroup/cpuset.c +@@ -2094,7 +2094,7 @@ static void cpuset_fork(struct task_stru + if (task_css_is_root(task, cpuset_cgrp_id)) + return; + +- set_cpus_allowed_ptr(task, ¤t->cpus_allowed); ++ set_cpus_allowed_ptr(task, current->cpus_ptr); + task->mems_allowed = current->mems_allowed; + } + +--- a/kernel/fork.c ++++ b/kernel/fork.c +@@ -564,7 +564,8 @@ static struct task_struct *dup_task_stru + #ifdef CONFIG_CC_STACKPROTECTOR + tsk->stack_canary = get_random_canary(); + #endif +- ++ if (orig->cpus_ptr == &orig->cpus_mask) ++ tsk->cpus_ptr = &tsk->cpus_mask; + /* + * One for us, one for whoever does the "release_task()" (usually + * parent) +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -959,7 +959,7 @@ static struct rq *__migrate_task(struct + } + + /* Affinity changed (again). */ +- if (!cpumask_test_cpu(dest_cpu, &p->cpus_allowed)) ++ if (!cpumask_test_cpu(dest_cpu, p->cpus_ptr)) + return rq; + + update_rq_clock(rq); +@@ -987,7 +987,7 @@ static int migration_cpu_stop(void *data + local_irq_disable(); + /* + * We need to explicitly wake pending tasks before running +- * __migrate_task() such that we will not miss enforcing cpus_allowed ++ * __migrate_task() such that we will not miss enforcing cpus_ptr + * during wakeups, see set_cpus_allowed_ptr()'s TASK_WAKING test. + */ + sched_ttwu_pending(); +@@ -1018,7 +1018,7 @@ static int migration_cpu_stop(void *data + */ + void set_cpus_allowed_common(struct task_struct *p, const struct cpumask *new_mask) + { +- cpumask_copy(&p->cpus_allowed, new_mask); ++ cpumask_copy(&p->cpus_mask, new_mask); + p->nr_cpus_allowed = cpumask_weight(new_mask); + } + +@@ -1088,7 +1088,7 @@ static int __set_cpus_allowed_ptr(struct + goto out; + } + +- if (cpumask_equal(&p->cpus_allowed, new_mask)) ++ if (cpumask_equal(p->cpus_ptr, new_mask)) + goto out; + + if (!cpumask_intersects(new_mask, cpu_valid_mask)) { +@@ -1249,10 +1249,10 @@ static int migrate_swap_stop(void *data) + if (task_cpu(arg->src_task) != arg->src_cpu) + goto unlock; + +- if (!cpumask_test_cpu(arg->dst_cpu, &arg->src_task->cpus_allowed)) ++ if (!cpumask_test_cpu(arg->dst_cpu, arg->src_task->cpus_ptr)) + goto unlock; + +- if (!cpumask_test_cpu(arg->src_cpu, &arg->dst_task->cpus_allowed)) ++ if (!cpumask_test_cpu(arg->src_cpu, arg->dst_task->cpus_ptr)) + goto unlock; + + __migrate_swap_task(arg->src_task, arg->dst_cpu); +@@ -1293,10 +1293,10 @@ int migrate_swap(struct task_struct *cur + if (!cpu_active(arg.src_cpu) || !cpu_active(arg.dst_cpu)) + goto out; + +- if (!cpumask_test_cpu(arg.dst_cpu, &arg.src_task->cpus_allowed)) ++ if (!cpumask_test_cpu(arg.dst_cpu, arg.src_task->cpus_ptr)) + goto out; + +- if (!cpumask_test_cpu(arg.src_cpu, &arg.dst_task->cpus_allowed)) ++ if (!cpumask_test_cpu(arg.src_cpu, arg.dst_task->cpus_ptr)) + goto out; + + trace_sched_swap_numa(cur, arg.src_cpu, p, arg.dst_cpu); +@@ -1440,7 +1440,7 @@ void kick_process(struct task_struct *p) + EXPORT_SYMBOL_GPL(kick_process); + + /* +- * ->cpus_allowed is protected by both rq->lock and p->pi_lock ++ * ->cpus_ptr is protected by both rq->lock and p->pi_lock + * + * A few notes on cpu_active vs cpu_online: + * +@@ -1480,14 +1480,14 @@ static int select_fallback_rq(int cpu, s + for_each_cpu(dest_cpu, nodemask) { + if (!cpu_active(dest_cpu)) + continue; +- if (cpumask_test_cpu(dest_cpu, &p->cpus_allowed)) ++ if (cpumask_test_cpu(dest_cpu, p->cpus_ptr)) + return dest_cpu; + } + } + + for (;;) { + /* Any allowed, online CPU? */ +- for_each_cpu(dest_cpu, &p->cpus_allowed) { ++ for_each_cpu(dest_cpu, p->cpus_ptr) { + if (!(p->flags & PF_KTHREAD) && !cpu_active(dest_cpu)) + continue; + if (!cpu_online(dest_cpu)) +@@ -1532,7 +1532,7 @@ static int select_fallback_rq(int cpu, s + } + + /* +- * The caller (fork, wakeup) owns p->pi_lock, ->cpus_allowed is stable. ++ * The caller (fork, wakeup) owns p->pi_lock, ->cpus_ptr is stable. + */ + static inline + int select_task_rq(struct task_struct *p, int cpu, int sd_flags, int wake_flags) +@@ -1542,11 +1542,11 @@ int select_task_rq(struct task_struct *p + if (p->nr_cpus_allowed > 1) + cpu = p->sched_class->select_task_rq(p, cpu, sd_flags, wake_flags); + else +- cpu = cpumask_any(&p->cpus_allowed); ++ cpu = cpumask_any(p->cpus_ptr); + + /* + * In order not to call set_task_cpu() on a blocking task we need +- * to rely on ttwu() to place the task on a valid ->cpus_allowed ++ * to rely on ttwu() to place the task on a valid ->cpus_ptr + * CPU. + * + * Since this is common to all placement strategies, this lives here. +@@ -1554,7 +1554,7 @@ int select_task_rq(struct task_struct *p + * [ this allows ->select_task() to simply return task_cpu(p) and + * not worry about this generic constraint ] + */ +- if (unlikely(!cpumask_test_cpu(cpu, &p->cpus_allowed) || ++ if (unlikely(!cpumask_test_cpu(cpu, p->cpus_ptr) || + !cpu_online(cpu))) + cpu = select_fallback_rq(task_cpu(p), p); + +@@ -2444,7 +2444,7 @@ void wake_up_new_task(struct task_struct + #ifdef CONFIG_SMP + /* + * Fork balancing, do it here and not earlier because: +- * - cpus_allowed can change in the fork path ++ * - cpus_ptr can change in the fork path + * - any previously selected CPU might disappear through hotplug + * + * Use __set_task_cpu() to avoid calling sched_class::migrate_task_rq, +@@ -4161,7 +4161,7 @@ static int __sched_setscheduler(struct t + * the entire root_domain to become SCHED_DEADLINE. We + * will also fail if there's no bandwidth available. + */ +- if (!cpumask_subset(span, &p->cpus_allowed) || ++ if (!cpumask_subset(span, p->cpus_ptr) || + rq->rd->dl_bw.bw == 0) { + task_rq_unlock(rq, p, &rf); + return -EPERM; +@@ -4755,7 +4755,7 @@ long sched_getaffinity(pid_t pid, struct + goto out_unlock; + + raw_spin_lock_irqsave(&p->pi_lock, flags); +- cpumask_and(mask, &p->cpus_allowed, cpu_active_mask); ++ cpumask_and(mask, &p->cpus_mask, cpu_active_mask); + raw_spin_unlock_irqrestore(&p->pi_lock, flags); + + out_unlock: +@@ -5320,7 +5320,7 @@ int task_can_attach(struct task_struct * + * allowed nodes is unnecessary. Thus, cpusets are not + * applicable for such threads. This prevents checking for + * success of set_cpus_allowed_ptr() on all attached tasks +- * before cpus_allowed may be changed. ++ * before cpus_mask may be changed. + */ + if (p->flags & PF_NO_SETAFFINITY) { + ret = -EINVAL; +@@ -5347,7 +5347,7 @@ int migrate_task_to(struct task_struct * + if (curr_cpu == target_cpu) + return 0; + +- if (!cpumask_test_cpu(target_cpu, &p->cpus_allowed)) ++ if (!cpumask_test_cpu(target_cpu, p->cpus_ptr)) + return -EINVAL; + + /* TODO: This is not properly updating schedstats */ +@@ -5484,7 +5484,7 @@ static void migrate_tasks(struct rq *dea + put_prev_task(rq, next); + + /* +- * Rules for changing task_struct::cpus_allowed are holding ++ * Rules for changing task_struct::cpus_mask are holding + * both pi_lock and rq->lock, such that holding either + * stabilizes the mask. + * +--- a/kernel/sched/cpudeadline.c ++++ b/kernel/sched/cpudeadline.c +@@ -127,13 +127,13 @@ int cpudl_find(struct cpudl *cp, struct + const struct sched_dl_entity *dl_se = &p->dl; + + if (later_mask && +- cpumask_and(later_mask, cp->free_cpus, &p->cpus_allowed)) { ++ cpumask_and(later_mask, cp->free_cpus, p->cpus_ptr)) { + return 1; + } else { + int best_cpu = cpudl_maximum(cp); + WARN_ON(best_cpu != -1 && !cpu_present(best_cpu)); + +- if (cpumask_test_cpu(best_cpu, &p->cpus_allowed) && ++ if (cpumask_test_cpu(best_cpu, p->cpus_ptr) && + dl_time_before(dl_se->deadline, cp->elements[0].dl)) { + if (later_mask) + cpumask_set_cpu(best_cpu, later_mask); +--- a/kernel/sched/cpupri.c ++++ b/kernel/sched/cpupri.c +@@ -103,11 +103,11 @@ int cpupri_find(struct cpupri *cp, struc + if (skip) + continue; + +- if (cpumask_any_and(&p->cpus_allowed, vec->mask) >= nr_cpu_ids) ++ if (cpumask_any_and(p->cpus_ptr, vec->mask) >= nr_cpu_ids) + continue; + + if (lowest_mask) { +- cpumask_and(lowest_mask, &p->cpus_allowed, vec->mask); ++ cpumask_and(lowest_mask, p->cpus_ptr, vec->mask); + + /* + * We have to ensure that we have at least one bit +--- a/kernel/sched/deadline.c ++++ b/kernel/sched/deadline.c +@@ -504,7 +504,7 @@ static struct rq *dl_task_offline_migrat + * If we cannot preempt any rq, fall back to pick any + * online cpu. + */ +- cpu = cpumask_any_and(cpu_active_mask, &p->cpus_allowed); ++ cpu = cpumask_any_and(cpu_active_mask, p->cpus_ptr); + if (cpu >= nr_cpu_ids) { + /* + * Fail to find any suitable cpu. +@@ -1749,7 +1749,7 @@ static void set_curr_task_dl(struct rq * + static int pick_dl_task(struct rq *rq, struct task_struct *p, int cpu) + { + if (!task_running(rq, p) && +- cpumask_test_cpu(cpu, &p->cpus_allowed)) ++ cpumask_test_cpu(cpu, p->cpus_ptr)) + return 1; + return 0; + } +@@ -1899,7 +1899,7 @@ static struct rq *find_lock_later_rq(str + /* Retry if something changed. */ + if (double_lock_balance(rq, later_rq)) { + if (unlikely(task_rq(task) != rq || +- !cpumask_test_cpu(later_rq->cpu, &task->cpus_allowed) || ++ !cpumask_test_cpu(later_rq->cpu, task->cpus_ptr) || + task_running(rq, task) || + !dl_task(task) || + !task_on_rq_queued(task))) { +--- a/kernel/sched/fair.c ++++ b/kernel/sched/fair.c +@@ -1596,7 +1596,7 @@ static void task_numa_compare(struct tas + */ + if (cur) { + /* Skip this swap candidate if cannot move to the source cpu */ +- if (!cpumask_test_cpu(env->src_cpu, &cur->cpus_allowed)) ++ if (!cpumask_test_cpu(env->src_cpu, cur->cpus_ptr)) + goto unlock; + + /* +@@ -1706,7 +1706,7 @@ static void task_numa_find_cpu(struct ta + + for_each_cpu(cpu, cpumask_of_node(env->dst_nid)) { + /* Skip this CPU if the source task cannot migrate */ +- if (!cpumask_test_cpu(cpu, &env->p->cpus_allowed)) ++ if (!cpumask_test_cpu(cpu, env->p->cpus_ptr)) + continue; + + env->dst_cpu = cpu; +@@ -5475,7 +5475,7 @@ find_idlest_group(struct sched_domain *s + + /* Skip over this group if it has no CPUs allowed */ + if (!cpumask_intersects(sched_group_span(group), +- &p->cpus_allowed)) ++ p->cpus_ptr)) + continue; + + local_group = cpumask_test_cpu(this_cpu, +@@ -5595,7 +5595,7 @@ find_idlest_cpu(struct sched_group *grou + return cpumask_first(sched_group_span(group)); + + /* Traverse only the allowed CPUs */ +- for_each_cpu_and(i, sched_group_span(group), &p->cpus_allowed) { ++ for_each_cpu_and(i, sched_group_span(group), p->cpus_ptr) { + if (idle_cpu(i)) { + struct rq *rq = cpu_rq(i); + struct cpuidle_state *idle = idle_get_state(rq); +@@ -5697,7 +5697,7 @@ static int select_idle_core(struct task_ + if (!test_idle_cores(target, false)) + return -1; + +- cpumask_and(cpus, sched_domain_span(sd), &p->cpus_allowed); ++ cpumask_and(cpus, sched_domain_span(sd), p->cpus_ptr); + + for_each_cpu_wrap(core, cpus, target) { + bool idle = true; +@@ -5731,7 +5731,7 @@ static int select_idle_smt(struct task_s + return -1; + + for_each_cpu(cpu, cpu_smt_mask(target)) { +- if (!cpumask_test_cpu(cpu, &p->cpus_allowed)) ++ if (!cpumask_test_cpu(cpu, p->cpus_ptr)) + continue; + if (idle_cpu(cpu)) + return cpu; +@@ -5794,7 +5794,7 @@ static int select_idle_cpu(struct task_s + for_each_cpu_wrap(cpu, sched_domain_span(sd), target) { + if (!--nr) + return -1; +- if (!cpumask_test_cpu(cpu, &p->cpus_allowed)) ++ if (!cpumask_test_cpu(cpu, p->cpus_ptr)) + continue; + if (idle_cpu(cpu)) + break; +@@ -5949,7 +5949,7 @@ select_task_rq_fair(struct task_struct * + if (sd_flag & SD_BALANCE_WAKE) { + record_wakee(p); + want_affine = !wake_wide(p) && !wake_cap(p, cpu, prev_cpu) +- && cpumask_test_cpu(cpu, &p->cpus_allowed); ++ && cpumask_test_cpu(cpu, p->cpus_ptr); + } + + rcu_read_lock(); +@@ -6698,14 +6698,14 @@ int can_migrate_task(struct task_struct + /* + * We do not migrate tasks that are: + * 1) throttled_lb_pair, or +- * 2) cannot be migrated to this CPU due to cpus_allowed, or ++ * 2) cannot be migrated to this CPU due to cpus_ptr, or + * 3) running (obviously), or + * 4) are cache-hot on their current CPU. + */ + if (throttled_lb_pair(task_group(p), env->src_cpu, env->dst_cpu)) + return 0; + +- if (!cpumask_test_cpu(env->dst_cpu, &p->cpus_allowed)) { ++ if (!cpumask_test_cpu(env->dst_cpu, p->cpus_ptr)) { + int cpu; + + schedstat_inc(p->se.statistics.nr_failed_migrations_affine); +@@ -6725,7 +6725,7 @@ int can_migrate_task(struct task_struct + + /* Prevent to re-select dst_cpu via env's cpus */ + for_each_cpu_and(cpu, env->dst_grpmask, env->cpus) { +- if (cpumask_test_cpu(cpu, &p->cpus_allowed)) { ++ if (cpumask_test_cpu(cpu, p->cpus_ptr)) { + env->flags |= LBF_DST_PINNED; + env->new_dst_cpu = cpu; + break; +@@ -7294,7 +7294,7 @@ check_cpu_capacity(struct rq *rq, struct + + /* + * Group imbalance indicates (and tries to solve) the problem where balancing +- * groups is inadequate due to ->cpus_allowed constraints. ++ * groups is inadequate due to ->cpus_ptr constraints. + * + * Imagine a situation of two groups of 4 cpus each and 4 tasks each with a + * cpumask covering 1 cpu of the first group and 3 cpus of the second group. +@@ -7870,7 +7870,7 @@ static struct sched_group *find_busiest_ + /* + * If the busiest group is imbalanced the below checks don't + * work because they assume all things are equal, which typically +- * isn't true due to cpus_allowed constraints and the like. ++ * isn't true due to cpus_ptr constraints and the like. + */ + if (busiest->group_type == group_imbalanced) + goto force_balance; +@@ -8262,7 +8262,7 @@ static int load_balance(int this_cpu, st + * if the curr task on busiest cpu can't be + * moved to this_cpu + */ +- if (!cpumask_test_cpu(this_cpu, &busiest->curr->cpus_allowed)) { ++ if (!cpumask_test_cpu(this_cpu, busiest->curr->cpus_ptr)) { + raw_spin_unlock_irqrestore(&busiest->lock, + flags); + env.flags |= LBF_ALL_PINNED; +--- a/kernel/sched/rt.c ++++ b/kernel/sched/rt.c +@@ -1592,7 +1592,7 @@ static void put_prev_task_rt(struct rq * + static int pick_rt_task(struct rq *rq, struct task_struct *p, int cpu) + { + if (!task_running(rq, p) && +- cpumask_test_cpu(cpu, &p->cpus_allowed)) ++ cpumask_test_cpu(cpu, p->cpus_ptr)) + return 1; + return 0; + } +@@ -1727,7 +1727,7 @@ static struct rq *find_lock_lowest_rq(st + * Also make sure that it wasn't scheduled on its rq. + */ + if (unlikely(task_rq(task) != rq || +- !cpumask_test_cpu(lowest_rq->cpu, &task->cpus_allowed) || ++ !cpumask_test_cpu(lowest_rq->cpu, task->cpus_ptr) || + task_running(rq, task) || + !rt_task(task) || + !task_on_rq_queued(task))) { +--- a/kernel/trace/trace_hwlat.c ++++ b/kernel/trace/trace_hwlat.c +@@ -279,7 +279,7 @@ static void move_to_next_cpu(void) + * of this thread, than stop migrating for the duration + * of the current test. + */ +- if (!cpumask_equal(current_mask, ¤t->cpus_allowed)) ++ if (!cpumask_equal(current_mask, current->cpus_ptr)) + goto disable; + + get_online_cpus(); +--- a/lib/smp_processor_id.c ++++ b/lib/smp_processor_id.c +@@ -23,7 +23,7 @@ notrace static unsigned int check_preemp + * Kernel threads bound to a single CPU can safely use + * smp_processor_id(): + */ +- if (cpumask_equal(¤t->cpus_allowed, cpumask_of(this_cpu))) ++ if (cpumask_equal(current->cpus_ptr, cpumask_of(this_cpu))) + goto out; + + /* +--- a/samples/trace_events/trace-events-sample.c ++++ b/samples/trace_events/trace-events-sample.c +@@ -33,7 +33,7 @@ static void simple_thread_func(int cnt) + + /* Silly tracepoints */ + trace_foo_bar("hello", cnt, array, random_strings[len], +- ¤t->cpus_allowed); ++ current->cpus_ptr); + + trace_foo_with_template_simple("HELLO", cnt); + diff --git a/patches/features/all/rt/kernel-sched-move-stack-kprobe-clean-up-to-__put_tas.patch b/patches/features/all/rt/kernel-sched-move-stack-kprobe-clean-up-to-__put_tas.patch new file mode 100644 index 00000000000..9febbc7bcc2 --- /dev/null +++ b/patches/features/all/rt/kernel-sched-move-stack-kprobe-clean-up-to-__put_tas.patch @@ -0,0 +1,61 @@ +From: Sebastian Andrzej Siewior +Date: Mon, 21 Nov 2016 19:31:08 +0100 +Subject: [PATCH] kernel/sched: move stack + kprobe clean up to + __put_task_struct() +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +There is no need to free the stack before the task struct. This also +comes handy on -RT because we can't free memory in preempt disabled +region. + +Cc: stable-rt@vger.kernel.org #for kprobe_flush_task() +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/fork.c | 10 ++++++++++ + kernel/sched/core.c | 9 --------- + 2 files changed, 10 insertions(+), 9 deletions(-) + +--- a/kernel/fork.c ++++ b/kernel/fork.c +@@ -40,6 +40,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -417,6 +418,15 @@ void __put_task_struct(struct task_struc + WARN_ON(atomic_read(&tsk->usage)); + WARN_ON(tsk == current); + ++ /* ++ * Remove function-return probe instances associated with this ++ * task and put them back on the free list. ++ */ ++ kprobe_flush_task(tsk); ++ ++ /* Task is done with its stack. */ ++ put_task_stack(tsk); ++ + cgroup_free(tsk); + task_numa_free(tsk); + security_task_free(tsk); +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -2705,15 +2705,6 @@ static struct rq *finish_task_switch(str + if (prev->sched_class->task_dead) + prev->sched_class->task_dead(prev); + +- /* +- * Remove function-return probe instances associated with this +- * task and put them back on the free list. +- */ +- kprobe_flush_task(prev); +- +- /* Task is done with its stack. */ +- put_task_stack(prev); +- + put_task_struct(prev); + } + diff --git a/patches/features/all/rt/kernel-softirq-unlock-with-irqs-on.patch b/patches/features/all/rt/kernel-softirq-unlock-with-irqs-on.patch new file mode 100644 index 00000000000..bcb5347e5cf --- /dev/null +++ b/patches/features/all/rt/kernel-softirq-unlock-with-irqs-on.patch @@ -0,0 +1,28 @@ +From: Sebastian Andrzej Siewior +Date: Tue, 9 Feb 2016 18:17:18 +0100 +Subject: kernel: softirq: unlock with irqs on +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +We unlock the lock while the interrupts are off. This isn't a problem +now but will get because the migrate_disable() + enable are not +symmetrical in regard to the status of interrupts. + +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/softirq.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +--- a/kernel/softirq.c ++++ b/kernel/softirq.c +@@ -560,8 +560,10 @@ static void do_current_softirqs(void) + do_single_softirq(i); + } + softirq_clr_runner(i); +- unlock_softirq(i); + WARN_ON(current->softirq_nestcnt != 1); ++ local_irq_enable(); ++ unlock_softirq(i); ++ local_irq_disable(); + } + } + diff --git a/patches/features/all/rt/kgb-serial-hackaround.patch b/patches/features/all/rt/kgb-serial-hackaround.patch new file mode 100644 index 00000000000..0afe96406d5 --- /dev/null +++ b/patches/features/all/rt/kgb-serial-hackaround.patch @@ -0,0 +1,77 @@ +From: Jason Wessel +Date: Thu, 28 Jul 2011 12:42:23 -0500 +Subject: kgdb/serial: Short term workaround +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +On 07/27/2011 04:37 PM, Thomas Gleixner wrote: +> - KGDB (not yet disabled) is reportedly unusable on -rt right now due +> to missing hacks in the console locking which I dropped on purpose. +> + +To work around this in the short term you can use this patch, in +addition to the clocksource watchdog patch that Thomas brewed up. + +Comments are welcome of course. Ultimately the right solution is to +change separation between the console and the HW to have a polled mode ++ work queue so as not to introduce any kind of latency. + +Thanks, +Jason. + +--- + drivers/tty/serial/8250/8250_port.c | 3 +++ + include/linux/kdb.h | 2 ++ + kernel/debug/kdb/kdb_io.c | 2 ++ + 3 files changed, 7 insertions(+) + +--- a/drivers/tty/serial/8250/8250_port.c ++++ b/drivers/tty/serial/8250/8250_port.c +@@ -35,6 +35,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -3219,6 +3220,8 @@ void serial8250_console_write(struct uar + + if (port->sysrq || oops_in_progress) + locked = 0; ++ else if (in_kdb_printk()) ++ locked = spin_trylock_irqsave(&port->lock, flags); + else + spin_lock_irqsave(&port->lock, flags); + +--- a/include/linux/kdb.h ++++ b/include/linux/kdb.h +@@ -167,6 +167,7 @@ extern __printf(2, 0) int vkdb_printf(en + extern __printf(1, 2) int kdb_printf(const char *, ...); + typedef __printf(1, 2) int (*kdb_printf_t)(const char *, ...); + ++#define in_kdb_printk() (kdb_trap_printk) + extern void kdb_init(int level); + + /* Access to kdb specific polling devices */ +@@ -201,6 +202,7 @@ extern int kdb_register_flags(char *, kd + extern int kdb_unregister(char *); + #else /* ! CONFIG_KGDB_KDB */ + static inline __printf(1, 2) int kdb_printf(const char *fmt, ...) { return 0; } ++#define in_kdb_printk() (0) + static inline void kdb_init(int level) {} + static inline int kdb_register(char *cmd, kdb_func_t func, char *usage, + char *help, short minlen) { return 0; } +--- a/kernel/debug/kdb/kdb_io.c ++++ b/kernel/debug/kdb/kdb_io.c +@@ -854,9 +854,11 @@ int kdb_printf(const char *fmt, ...) + va_list ap; + int r; + ++ kdb_trap_printk++; + va_start(ap, fmt); + r = vkdb_printf(KDB_MSGSRC_INTERNAL, fmt, ap); + va_end(ap); ++ kdb_trap_printk--; + + return r; + } diff --git a/patches/features/all/rt/leds-trigger-disable-CPU-trigger-on-RT.patch b/patches/features/all/rt/leds-trigger-disable-CPU-trigger-on-RT.patch new file mode 100644 index 00000000000..e9d95d13e1f --- /dev/null +++ b/patches/features/all/rt/leds-trigger-disable-CPU-trigger-on-RT.patch @@ -0,0 +1,36 @@ +From: Sebastian Andrzej Siewior +Date: Thu, 23 Jan 2014 14:45:59 +0100 +Subject: leds: trigger: disable CPU trigger on -RT +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +as it triggers: +|CPU: 0 PID: 0 Comm: swapper Not tainted 3.12.8-rt10 #141 +|[] (unwind_backtrace+0x0/0xf8) from [] (show_stack+0x1c/0x20) +|[] (show_stack+0x1c/0x20) from [] (dump_stack+0x20/0x2c) +|[] (dump_stack+0x20/0x2c) from [] (__might_sleep+0x13c/0x170) +|[] (__might_sleep+0x13c/0x170) from [] (__rt_spin_lock+0x28/0x38) +|[] (__rt_spin_lock+0x28/0x38) from [] (rt_read_lock+0x68/0x7c) +|[] (rt_read_lock+0x68/0x7c) from [] (led_trigger_event+0x2c/0x5c) +|[] (led_trigger_event+0x2c/0x5c) from [] (ledtrig_cpu+0x54/0x5c) +|[] (ledtrig_cpu+0x54/0x5c) from [] (arch_cpu_idle_exit+0x18/0x1c) +|[] (arch_cpu_idle_exit+0x18/0x1c) from [] (cpu_startup_entry+0xa8/0x234) +|[] (cpu_startup_entry+0xa8/0x234) from [] (rest_init+0xb8/0xe0) +|[] (rest_init+0xb8/0xe0) from [] (start_kernel+0x2c4/0x380) + + +Signed-off-by: Sebastian Andrzej Siewior +--- + drivers/leds/trigger/Kconfig | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/leds/trigger/Kconfig ++++ b/drivers/leds/trigger/Kconfig +@@ -69,7 +69,7 @@ config LEDS_TRIGGER_BACKLIGHT + + config LEDS_TRIGGER_CPU + bool "LED CPU Trigger" +- depends on LEDS_TRIGGERS ++ depends on LEDS_TRIGGERS && !PREEMPT_RT_BASE + help + This allows LEDs to be controlled by active CPUs. This shows + the active CPUs across an array of LEDs so you can see which diff --git a/patches/features/all/rt/list_bl-fixup-bogus-lockdep-warning.patch b/patches/features/all/rt/list_bl-fixup-bogus-lockdep-warning.patch new file mode 100644 index 00000000000..bbdb4e5f993 --- /dev/null +++ b/patches/features/all/rt/list_bl-fixup-bogus-lockdep-warning.patch @@ -0,0 +1,98 @@ +From: Josh Cartwright +Date: Thu, 31 Mar 2016 00:04:25 -0500 +Subject: [PATCH] list_bl: fixup bogus lockdep warning +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +At first glance, the use of 'static inline' seems appropriate for +INIT_HLIST_BL_HEAD(). + +However, when a 'static inline' function invocation is inlined by gcc, +all callers share any static local data declared within that inline +function. + +This presents a problem for how lockdep classes are setup. raw_spinlocks, for +example, when CONFIG_DEBUG_SPINLOCK, + + # define raw_spin_lock_init(lock) \ + do { \ + static struct lock_class_key __key; \ + \ + __raw_spin_lock_init((lock), #lock, &__key); \ + } while (0) + +When this macro is expanded into a 'static inline' caller, like +INIT_HLIST_BL_HEAD(): + + static inline INIT_HLIST_BL_HEAD(struct hlist_bl_head *h) + { + h->first = NULL; + raw_spin_lock_init(&h->lock); + } + +...the static local lock_class_key object is made a function static. + +For compilation units which initialize invoke INIT_HLIST_BL_HEAD() more +than once, then, all of the invocations share this same static local +object. + +This can lead to some very confusing lockdep splats (example below). +Solve this problem by forcing the INIT_HLIST_BL_HEAD() to be a macro, +which prevents the lockdep class object sharing. + + ============================================= + [ INFO: possible recursive locking detected ] + 4.4.4-rt11 #4 Not tainted + --------------------------------------------- + kswapd0/59 is trying to acquire lock: + (&h->lock#2){+.+.-.}, at: mb_cache_shrink_scan + + but task is already holding lock: + (&h->lock#2){+.+.-.}, at: mb_cache_shrink_scan + + other info that might help us debug this: + Possible unsafe locking scenario: + + CPU0 + ---- + lock(&h->lock#2); + lock(&h->lock#2); + + *** DEADLOCK *** + + May be due to missing lock nesting notation + + 2 locks held by kswapd0/59: + #0: (shrinker_rwsem){+.+...}, at: rt_down_read_trylock + #1: (&h->lock#2){+.+.-.}, at: mb_cache_shrink_scan + +Reported-by: Luis Claudio R. Goncalves +Tested-by: Luis Claudio R. Goncalves +Signed-off-by: Josh Cartwright +Signed-off-by: Sebastian Andrzej Siewior +--- + include/linux/list_bl.h | 12 +++++++----- + 1 file changed, 7 insertions(+), 5 deletions(-) + +--- a/include/linux/list_bl.h ++++ b/include/linux/list_bl.h +@@ -43,13 +43,15 @@ struct hlist_bl_node { + struct hlist_bl_node *next, **pprev; + }; + +-static inline void INIT_HLIST_BL_HEAD(struct hlist_bl_head *h) +-{ +- h->first = NULL; + #ifdef CONFIG_PREEMPT_RT_BASE +- raw_spin_lock_init(&h->lock); ++#define INIT_HLIST_BL_HEAD(h) \ ++do { \ ++ (h)->first = NULL; \ ++ raw_spin_lock_init(&(h)->lock); \ ++} while (0) ++#else ++#define INIT_HLIST_BL_HEAD(h) (h)->first = NULL + #endif +-} + + static inline void INIT_HLIST_BL_NODE(struct hlist_bl_node *h) + { diff --git a/patches/features/all/rt/list_bl.h-make-list-head-locking-RT-safe.patch b/patches/features/all/rt/list_bl.h-make-list-head-locking-RT-safe.patch new file mode 100644 index 00000000000..351bdd70520 --- /dev/null +++ b/patches/features/all/rt/list_bl.h-make-list-head-locking-RT-safe.patch @@ -0,0 +1,115 @@ +From: Paul Gortmaker +Date: Fri, 21 Jun 2013 15:07:25 -0400 +Subject: list_bl: Make list head locking RT safe +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +As per changes in include/linux/jbd_common.h for avoiding the +bit_spin_locks on RT ("fs: jbd/jbd2: Make state lock and journal +head lock rt safe") we do the same thing here. + +We use the non atomic __set_bit and __clear_bit inside the scope of +the lock to preserve the ability of the existing LIST_DEBUG code to +use the zero'th bit in the sanity checks. + +As a bit spinlock, we had no lockdep visibility into the usage +of the list head locking. Now, if we were to implement it as a +standard non-raw spinlock, we would see: + +BUG: sleeping function called from invalid context at kernel/rtmutex.c:658 +in_atomic(): 1, irqs_disabled(): 0, pid: 122, name: udevd +5 locks held by udevd/122: + #0: (&sb->s_type->i_mutex_key#7/1){+.+.+.}, at: [] lock_rename+0xe8/0xf0 + #1: (rename_lock){+.+...}, at: [] d_move+0x2c/0x60 + #2: (&dentry->d_lock){+.+...}, at: [] dentry_lock_for_move+0xf3/0x130 + #3: (&dentry->d_lock/2){+.+...}, at: [] dentry_lock_for_move+0xc4/0x130 + #4: (&dentry->d_lock/3){+.+...}, at: [] dentry_lock_for_move+0xd7/0x130 +Pid: 122, comm: udevd Not tainted 3.4.47-rt62 #7 +Call Trace: + [] __might_sleep+0x134/0x1f0 + [] rt_spin_lock+0x24/0x60 + [] __d_shrink+0x5c/0xa0 + [] __d_drop+0x1d/0x40 + [] __d_move+0x8e/0x320 + [] d_move+0x3e/0x60 + [] vfs_rename+0x198/0x4c0 + [] sys_renameat+0x213/0x240 + [] ? _raw_spin_unlock+0x35/0x60 + [] ? do_page_fault+0x1ec/0x4b0 + [] ? retint_swapgs+0xe/0x13 + [] ? trace_hardirqs_on_thunk+0x3a/0x3f + [] sys_rename+0x1b/0x20 + [] system_call_fastpath+0x1a/0x1f + +Since we are only taking the lock during short lived list operations, +lets assume for now that it being raw won't be a significant latency +concern. + + +Signed-off-by: Paul Gortmaker +Signed-off-by: Sebastian Andrzej Siewior +--- + include/linux/list_bl.h | 28 ++++++++++++++++++++++++++-- + 1 file changed, 26 insertions(+), 2 deletions(-) + +--- a/include/linux/list_bl.h ++++ b/include/linux/list_bl.h +@@ -3,6 +3,7 @@ + #define _LINUX_LIST_BL_H + + #include ++#include + #include + + /* +@@ -33,13 +34,22 @@ + + struct hlist_bl_head { + struct hlist_bl_node *first; ++#ifdef CONFIG_PREEMPT_RT_BASE ++ raw_spinlock_t lock; ++#endif + }; + + struct hlist_bl_node { + struct hlist_bl_node *next, **pprev; + }; +-#define INIT_HLIST_BL_HEAD(ptr) \ +- ((ptr)->first = NULL) ++ ++static inline void INIT_HLIST_BL_HEAD(struct hlist_bl_head *h) ++{ ++ h->first = NULL; ++#ifdef CONFIG_PREEMPT_RT_BASE ++ raw_spin_lock_init(&h->lock); ++#endif ++} + + static inline void INIT_HLIST_BL_NODE(struct hlist_bl_node *h) + { +@@ -119,12 +129,26 @@ static inline void hlist_bl_del_init(str + + static inline void hlist_bl_lock(struct hlist_bl_head *b) + { ++#ifndef CONFIG_PREEMPT_RT_BASE + bit_spin_lock(0, (unsigned long *)b); ++#else ++ raw_spin_lock(&b->lock); ++#if defined(CONFIG_SMP) || defined(CONFIG_DEBUG_SPINLOCK) ++ __set_bit(0, (unsigned long *)b); ++#endif ++#endif + } + + static inline void hlist_bl_unlock(struct hlist_bl_head *b) + { ++#ifndef CONFIG_PREEMPT_RT_BASE + __bit_spin_unlock(0, (unsigned long *)b); ++#else ++#if defined(CONFIG_SMP) || defined(CONFIG_DEBUG_SPINLOCK) ++ __clear_bit(0, (unsigned long *)b); ++#endif ++ raw_spin_unlock(&b->lock); ++#endif + } + + static inline bool hlist_bl_is_locked(struct hlist_bl_head *b) diff --git a/patches/features/all/rt/local-irq-rt-depending-variants.patch b/patches/features/all/rt/local-irq-rt-depending-variants.patch new file mode 100644 index 00000000000..1ea96a575b1 --- /dev/null +++ b/patches/features/all/rt/local-irq-rt-depending-variants.patch @@ -0,0 +1,53 @@ +From: Thomas Gleixner +Date: Tue, 21 Jul 2009 22:34:14 +0200 +Subject: rt: local_irq_* variants depending on RT/!RT +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Add local_irq_*_(no)rt variant which are mainly used to break +interrupt disabled sections on PREEMPT_RT or to explicitely disable +interrupts on PREEMPT_RT. + +Signed-off-by: Thomas Gleixner + +--- + include/linux/interrupt.h | 2 +- + include/linux/irqflags.h | 19 +++++++++++++++++++ + 2 files changed, 20 insertions(+), 1 deletion(-) + +--- a/include/linux/interrupt.h ++++ b/include/linux/interrupt.h +@@ -207,7 +207,7 @@ extern void devm_free_irq(struct device + #ifdef CONFIG_LOCKDEP + # define local_irq_enable_in_hardirq() do { } while (0) + #else +-# define local_irq_enable_in_hardirq() local_irq_enable() ++# define local_irq_enable_in_hardirq() local_irq_enable_nort() + #endif + + extern void disable_irq_nosync(unsigned int irq); +--- a/include/linux/irqflags.h ++++ b/include/linux/irqflags.h +@@ -165,4 +165,23 @@ do { \ + + #define irqs_disabled_flags(flags) raw_irqs_disabled_flags(flags) + ++/* ++ * local_irq* variants depending on RT/!RT ++ */ ++#ifdef CONFIG_PREEMPT_RT_FULL ++# define local_irq_disable_nort() do { } while (0) ++# define local_irq_enable_nort() do { } while (0) ++# define local_irq_save_nort(flags) local_save_flags(flags) ++# define local_irq_restore_nort(flags) (void)(flags) ++# define local_irq_disable_rt() local_irq_disable() ++# define local_irq_enable_rt() local_irq_enable() ++#else ++# define local_irq_disable_nort() local_irq_disable() ++# define local_irq_enable_nort() local_irq_enable() ++# define local_irq_save_nort(flags) local_irq_save(flags) ++# define local_irq_restore_nort(flags) local_irq_restore(flags) ++# define local_irq_disable_rt() do { } while (0) ++# define local_irq_enable_rt() do { } while (0) ++#endif ++ + #endif diff --git a/patches/features/all/rt/localversion.patch b/patches/features/all/rt/localversion.patch new file mode 100644 index 00000000000..2142d5e1dd9 --- /dev/null +++ b/patches/features/all/rt/localversion.patch @@ -0,0 +1,14 @@ +Subject: Add localversion for -RT release +From: Thomas Gleixner +Date: Fri, 08 Jul 2011 20:25:16 +0200 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Signed-off-by: Thomas Gleixner +--- + localversion-rt | 1 + + 1 file changed, 1 insertion(+) + +--- /dev/null ++++ b/localversion-rt +@@ -0,0 +1 @@ ++-rt13 diff --git a/patches/features/all/rt/lockdep-disable-self-test.patch b/patches/features/all/rt/lockdep-disable-self-test.patch new file mode 100644 index 00000000000..10dd3693ace --- /dev/null +++ b/patches/features/all/rt/lockdep-disable-self-test.patch @@ -0,0 +1,29 @@ +From: Sebastian Andrzej Siewior +Date: Tue, 17 Oct 2017 16:36:18 +0200 +Subject: [PATCH] lockdep: disable self-test +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +The self-test wasn't always 100% accurate for RT. We disabled a few +tests which failed because they had a different semantic for RT. Some +still reported false positives. Now the selftest locks up the system +during boot and it needs to be investigated… + +Signed-off-by: Sebastian Andrzej Siewior +--- + lib/Kconfig.debug | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/lib/Kconfig.debug ++++ b/lib/Kconfig.debug +@@ -1199,7 +1199,7 @@ config DEBUG_ATOMIC_SLEEP + + config DEBUG_LOCKING_API_SELFTESTS + bool "Locking API boot-time self-tests" +- depends on DEBUG_KERNEL ++ depends on DEBUG_KERNEL && !PREEMPT_RT_FULL + help + Say Y here if you want the kernel to run a short self-test during + bootup. The self-test checks whether common types of locking bugs diff --git a/patches/features/all/rt/lockdep-no-softirq-accounting-on-rt.patch b/patches/features/all/rt/lockdep-no-softirq-accounting-on-rt.patch new file mode 100644 index 00000000000..d7500a71d72 --- /dev/null +++ b/patches/features/all/rt/lockdep-no-softirq-accounting-on-rt.patch @@ -0,0 +1,75 @@ +Subject: lockdep: Make it RT aware +From: Thomas Gleixner +Date: Sun, 17 Jul 2011 18:51:23 +0200 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +teach lockdep that we don't really do softirqs on -RT. + +Signed-off-by: Thomas Gleixner +--- + include/linux/irqflags.h | 26 +++++++++++++++----------- + kernel/locking/lockdep.c | 2 ++ + 2 files changed, 17 insertions(+), 11 deletions(-) + +--- a/include/linux/irqflags.h ++++ b/include/linux/irqflags.h +@@ -34,16 +34,6 @@ do { \ + current->hardirq_context--; \ + crossrelease_hist_end(XHLOCK_HARD); \ + } while (0) +-# define lockdep_softirq_enter() \ +-do { \ +- current->softirq_context++; \ +- crossrelease_hist_start(XHLOCK_SOFT); \ +-} while (0) +-# define lockdep_softirq_exit() \ +-do { \ +- current->softirq_context--; \ +- crossrelease_hist_end(XHLOCK_SOFT); \ +-} while (0) + # define INIT_TRACE_IRQFLAGS .softirqs_enabled = 1, + #else + # define trace_hardirqs_on() do { } while (0) +@@ -56,9 +46,23 @@ do { \ + # define trace_softirqs_enabled(p) 0 + # define trace_hardirq_enter() do { } while (0) + # define trace_hardirq_exit() do { } while (0) ++# define INIT_TRACE_IRQFLAGS ++#endif ++ ++#if defined(CONFIG_TRACE_IRQFLAGS) && !defined(CONFIG_PREEMPT_RT_FULL) ++# define lockdep_softirq_enter() \ ++do { \ ++ current->softirq_context++; \ ++ crossrelease_hist_start(XHLOCK_SOFT); \ ++} while (0) ++# define lockdep_softirq_exit() \ ++do { \ ++ current->softirq_context--; \ ++ crossrelease_hist_end(XHLOCK_SOFT); \ ++} while (0) ++#else + # define lockdep_softirq_enter() do { } while (0) + # define lockdep_softirq_exit() do { } while (0) +-# define INIT_TRACE_IRQFLAGS + #endif + + #if defined(CONFIG_IRQSOFF_TRACER) || \ +--- a/kernel/locking/lockdep.c ++++ b/kernel/locking/lockdep.c +@@ -3917,6 +3917,7 @@ static void check_flags(unsigned long fl + } + } + ++#ifndef CONFIG_PREEMPT_RT_FULL + /* + * We dont accurately track softirq state in e.g. + * hardirq contexts (such as on 4KSTACKS), so only +@@ -3931,6 +3932,7 @@ static void check_flags(unsigned long fl + DEBUG_LOCKS_WARN_ON(!current->softirqs_enabled); + } + } ++#endif + + if (!debug_locks) + print_irqtrace_events(current); diff --git a/patches/features/all/rt/lockdep-selftest-fix-warnings-due-to-missing-PREEMPT.patch b/patches/features/all/rt/lockdep-selftest-fix-warnings-due-to-missing-PREEMPT.patch new file mode 100644 index 00000000000..a200505f11b --- /dev/null +++ b/patches/features/all/rt/lockdep-selftest-fix-warnings-due-to-missing-PREEMPT.patch @@ -0,0 +1,142 @@ +From: Josh Cartwright +Date: Wed, 28 Jan 2015 13:08:45 -0600 +Subject: lockdep: selftest: fix warnings due to missing PREEMPT_RT conditionals +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +"lockdep: Selftest: Only do hardirq context test for raw spinlock" +disabled the execution of certain tests with PREEMPT_RT_FULL, but did +not prevent the tests from still being defined. This leads to warnings +like: + + ./linux/lib/locking-selftest.c:574:1: warning: 'irqsafe1_hard_rlock_12' defined but not used [-Wunused-function] + ./linux/lib/locking-selftest.c:574:1: warning: 'irqsafe1_hard_rlock_21' defined but not used [-Wunused-function] + ./linux/lib/locking-selftest.c:577:1: warning: 'irqsafe1_hard_wlock_12' defined but not used [-Wunused-function] + ./linux/lib/locking-selftest.c:577:1: warning: 'irqsafe1_hard_wlock_21' defined but not used [-Wunused-function] + ./linux/lib/locking-selftest.c:580:1: warning: 'irqsafe1_soft_spin_12' defined but not used [-Wunused-function] + ... + +Fixed by wrapping the test definitions in #ifndef CONFIG_PREEMPT_RT_FULL +conditionals. + + +Signed-off-by: Josh Cartwright +Signed-off-by: Xander Huff +Acked-by: Gratian Crisan +Signed-off-by: Sebastian Andrzej Siewior +--- + lib/locking-selftest.c | 27 +++++++++++++++++++++++++++ + 1 file changed, 27 insertions(+) + +--- a/lib/locking-selftest.c ++++ b/lib/locking-selftest.c +@@ -742,6 +742,8 @@ GENERATE_TESTCASE(init_held_rtmutex); + #include "locking-selftest-spin-hardirq.h" + GENERATE_PERMUTATIONS_2_EVENTS(irqsafe1_hard_spin) + ++#ifndef CONFIG_PREEMPT_RT_FULL ++ + #include "locking-selftest-rlock-hardirq.h" + GENERATE_PERMUTATIONS_2_EVENTS(irqsafe1_hard_rlock) + +@@ -757,9 +759,12 @@ GENERATE_PERMUTATIONS_2_EVENTS(irqsafe1_ + #include "locking-selftest-wlock-softirq.h" + GENERATE_PERMUTATIONS_2_EVENTS(irqsafe1_soft_wlock) + ++#endif ++ + #undef E1 + #undef E2 + ++#ifndef CONFIG_PREEMPT_RT_FULL + /* + * Enabling hardirqs with a softirq-safe lock held: + */ +@@ -792,6 +797,8 @@ GENERATE_PERMUTATIONS_2_EVENTS(irqsafe2A + #undef E1 + #undef E2 + ++#endif ++ + /* + * Enabling irqs with an irq-safe lock held: + */ +@@ -815,6 +822,8 @@ GENERATE_PERMUTATIONS_2_EVENTS(irqsafe2A + #include "locking-selftest-spin-hardirq.h" + GENERATE_PERMUTATIONS_2_EVENTS(irqsafe2B_hard_spin) + ++#ifndef CONFIG_PREEMPT_RT_FULL ++ + #include "locking-selftest-rlock-hardirq.h" + GENERATE_PERMUTATIONS_2_EVENTS(irqsafe2B_hard_rlock) + +@@ -830,6 +839,8 @@ GENERATE_PERMUTATIONS_2_EVENTS(irqsafe2B + #include "locking-selftest-wlock-softirq.h" + GENERATE_PERMUTATIONS_2_EVENTS(irqsafe2B_soft_wlock) + ++#endif ++ + #undef E1 + #undef E2 + +@@ -861,6 +872,8 @@ GENERATE_PERMUTATIONS_2_EVENTS(irqsafe2B + #include "locking-selftest-spin-hardirq.h" + GENERATE_PERMUTATIONS_3_EVENTS(irqsafe3_hard_spin) + ++#ifndef CONFIG_PREEMPT_RT_FULL ++ + #include "locking-selftest-rlock-hardirq.h" + GENERATE_PERMUTATIONS_3_EVENTS(irqsafe3_hard_rlock) + +@@ -876,6 +889,8 @@ GENERATE_PERMUTATIONS_3_EVENTS(irqsafe3_ + #include "locking-selftest-wlock-softirq.h" + GENERATE_PERMUTATIONS_3_EVENTS(irqsafe3_soft_wlock) + ++#endif ++ + #undef E1 + #undef E2 + #undef E3 +@@ -909,6 +924,8 @@ GENERATE_PERMUTATIONS_3_EVENTS(irqsafe3_ + #include "locking-selftest-spin-hardirq.h" + GENERATE_PERMUTATIONS_3_EVENTS(irqsafe4_hard_spin) + ++#ifndef CONFIG_PREEMPT_RT_FULL ++ + #include "locking-selftest-rlock-hardirq.h" + GENERATE_PERMUTATIONS_3_EVENTS(irqsafe4_hard_rlock) + +@@ -924,10 +941,14 @@ GENERATE_PERMUTATIONS_3_EVENTS(irqsafe4_ + #include "locking-selftest-wlock-softirq.h" + GENERATE_PERMUTATIONS_3_EVENTS(irqsafe4_soft_wlock) + ++#endif ++ + #undef E1 + #undef E2 + #undef E3 + ++#ifndef CONFIG_PREEMPT_RT_FULL ++ + /* + * read-lock / write-lock irq inversion. + * +@@ -990,6 +1011,10 @@ GENERATE_PERMUTATIONS_3_EVENTS(irq_inver + #undef E2 + #undef E3 + ++#endif ++ ++#ifndef CONFIG_PREEMPT_RT_FULL ++ + /* + * read-lock / write-lock recursion that is actually safe. + */ +@@ -1028,6 +1053,8 @@ GENERATE_PERMUTATIONS_3_EVENTS(irq_read_ + #undef E2 + #undef E3 + ++#endif ++ + /* + * read-lock / write-lock recursion that is unsafe. + */ diff --git a/patches/features/all/rt/lockdep-selftest-only-do-hardirq-context-test-for-raw-spinlock.patch b/patches/features/all/rt/lockdep-selftest-only-do-hardirq-context-test-for-raw-spinlock.patch new file mode 100644 index 00000000000..096fcf9f64d --- /dev/null +++ b/patches/features/all/rt/lockdep-selftest-only-do-hardirq-context-test-for-raw-spinlock.patch @@ -0,0 +1,57 @@ +Subject: lockdep: selftest: Only do hardirq context test for raw spinlock +From: Yong Zhang +Date: Mon, 16 Apr 2012 15:01:56 +0800 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +From: Yong Zhang + +On -rt there is no softirq context any more and rwlock is sleepable, +disable softirq context test and rwlock+irq test. + +Signed-off-by: Yong Zhang +Cc: Yong Zhang +Link: http://lkml.kernel.org/r/1334559716-18447-3-git-send-email-yong.zhang0@gmail.com +Signed-off-by: Thomas Gleixner +--- + lib/locking-selftest.c | 23 +++++++++++++++++++++++ + 1 file changed, 23 insertions(+) + +--- a/lib/locking-selftest.c ++++ b/lib/locking-selftest.c +@@ -2057,6 +2057,7 @@ void locking_selftest(void) + + printk(" --------------------------------------------------------------------------\n"); + ++#ifndef CONFIG_PREEMPT_RT_FULL + /* + * irq-context testcases: + */ +@@ -2069,6 +2070,28 @@ void locking_selftest(void) + + DO_TESTCASE_6x2("irq read-recursion", irq_read_recursion); + // DO_TESTCASE_6x2B("irq read-recursion #2", irq_read_recursion2); ++#else ++ /* On -rt, we only do hardirq context test for raw spinlock */ ++ DO_TESTCASE_1B("hard-irqs-on + irq-safe-A", irqsafe1_hard_spin, 12); ++ DO_TESTCASE_1B("hard-irqs-on + irq-safe-A", irqsafe1_hard_spin, 21); ++ ++ DO_TESTCASE_1B("hard-safe-A + irqs-on", irqsafe2B_hard_spin, 12); ++ DO_TESTCASE_1B("hard-safe-A + irqs-on", irqsafe2B_hard_spin, 21); ++ ++ DO_TESTCASE_1B("hard-safe-A + unsafe-B #1", irqsafe3_hard_spin, 123); ++ DO_TESTCASE_1B("hard-safe-A + unsafe-B #1", irqsafe3_hard_spin, 132); ++ DO_TESTCASE_1B("hard-safe-A + unsafe-B #1", irqsafe3_hard_spin, 213); ++ DO_TESTCASE_1B("hard-safe-A + unsafe-B #1", irqsafe3_hard_spin, 231); ++ DO_TESTCASE_1B("hard-safe-A + unsafe-B #1", irqsafe3_hard_spin, 312); ++ DO_TESTCASE_1B("hard-safe-A + unsafe-B #1", irqsafe3_hard_spin, 321); ++ ++ DO_TESTCASE_1B("hard-safe-A + unsafe-B #2", irqsafe4_hard_spin, 123); ++ DO_TESTCASE_1B("hard-safe-A + unsafe-B #2", irqsafe4_hard_spin, 132); ++ DO_TESTCASE_1B("hard-safe-A + unsafe-B #2", irqsafe4_hard_spin, 213); ++ DO_TESTCASE_1B("hard-safe-A + unsafe-B #2", irqsafe4_hard_spin, 231); ++ DO_TESTCASE_1B("hard-safe-A + unsafe-B #2", irqsafe4_hard_spin, 312); ++ DO_TESTCASE_1B("hard-safe-A + unsafe-B #2", irqsafe4_hard_spin, 321); ++#endif + + ww_tests(); + diff --git a/patches/features/all/rt/locking-don-t-check-for-__LINUX_SPINLOCK_TYPES_H-on-.patch b/patches/features/all/rt/locking-don-t-check-for-__LINUX_SPINLOCK_TYPES_H-on-.patch new file mode 100644 index 00000000000..41f32229d63 --- /dev/null +++ b/patches/features/all/rt/locking-don-t-check-for-__LINUX_SPINLOCK_TYPES_H-on-.patch @@ -0,0 +1,228 @@ +From: Sebastian Andrzej Siewior +Date: Fri, 4 Aug 2017 17:40:42 +0200 +Subject: [PATCH 1/2] locking: don't check for __LINUX_SPINLOCK_TYPES_H on -RT + archs +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Upstream uses arch_spinlock_t within spinlock_t and requests that +spinlock_types.h header file is included first. +On -RT we have the rt_mutex with its raw_lock wait_lock which needs +architectures' spinlock_types.h header file for its definition. However +we need rt_mutex first because it is used to build the spinlock_t so +that check does not work for us. +Therefore I am dropping that check. + +Signed-off-by: Sebastian Andrzej Siewior +--- + arch/alpha/include/asm/spinlock_types.h | 4 ---- + arch/arm/include/asm/spinlock_types.h | 4 ---- + arch/arm64/include/asm/spinlock_types.h | 4 ---- + arch/blackfin/include/asm/spinlock_types.h | 4 ---- + arch/hexagon/include/asm/spinlock_types.h | 4 ---- + arch/ia64/include/asm/spinlock_types.h | 4 ---- + arch/m32r/include/asm/spinlock_types.h | 4 ---- + arch/metag/include/asm/spinlock_types.h | 4 ---- + arch/mn10300/include/asm/spinlock_types.h | 4 ---- + arch/powerpc/include/asm/spinlock_types.h | 4 ---- + arch/s390/include/asm/spinlock_types.h | 4 ---- + arch/sh/include/asm/spinlock_types.h | 4 ---- + arch/tile/include/asm/spinlock_types.h | 4 ---- + arch/xtensa/include/asm/spinlock_types.h | 4 ---- + include/linux/spinlock_types_up.h | 4 ---- + 15 files changed, 60 deletions(-) + +--- a/arch/alpha/include/asm/spinlock_types.h ++++ b/arch/alpha/include/asm/spinlock_types.h +@@ -2,10 +2,6 @@ + #ifndef _ALPHA_SPINLOCK_TYPES_H + #define _ALPHA_SPINLOCK_TYPES_H + +-#ifndef __LINUX_SPINLOCK_TYPES_H +-# error "please don't include this file directly" +-#endif +- + typedef struct { + volatile unsigned int lock; + } arch_spinlock_t; +--- a/arch/arm/include/asm/spinlock_types.h ++++ b/arch/arm/include/asm/spinlock_types.h +@@ -2,10 +2,6 @@ + #ifndef __ASM_SPINLOCK_TYPES_H + #define __ASM_SPINLOCK_TYPES_H + +-#ifndef __LINUX_SPINLOCK_TYPES_H +-# error "please don't include this file directly" +-#endif +- + #define TICKET_SHIFT 16 + + typedef struct { +--- a/arch/arm64/include/asm/spinlock_types.h ++++ b/arch/arm64/include/asm/spinlock_types.h +@@ -16,10 +16,6 @@ + #ifndef __ASM_SPINLOCK_TYPES_H + #define __ASM_SPINLOCK_TYPES_H + +-#if !defined(__LINUX_SPINLOCK_TYPES_H) && !defined(__ASM_SPINLOCK_H) +-# error "please don't include this file directly" +-#endif +- + #include + + #define TICKET_SHIFT 16 +--- a/arch/blackfin/include/asm/spinlock_types.h ++++ b/arch/blackfin/include/asm/spinlock_types.h +@@ -7,10 +7,6 @@ + #ifndef __ASM_SPINLOCK_TYPES_H + #define __ASM_SPINLOCK_TYPES_H + +-#ifndef __LINUX_SPINLOCK_TYPES_H +-# error "please don't include this file directly" +-#endif +- + #include + + typedef struct { +--- a/arch/hexagon/include/asm/spinlock_types.h ++++ b/arch/hexagon/include/asm/spinlock_types.h +@@ -21,10 +21,6 @@ + #ifndef _ASM_SPINLOCK_TYPES_H + #define _ASM_SPINLOCK_TYPES_H + +-#ifndef __LINUX_SPINLOCK_TYPES_H +-# error "please don't include this file directly" +-#endif +- + typedef struct { + volatile unsigned int lock; + } arch_spinlock_t; +--- a/arch/ia64/include/asm/spinlock_types.h ++++ b/arch/ia64/include/asm/spinlock_types.h +@@ -2,10 +2,6 @@ + #ifndef _ASM_IA64_SPINLOCK_TYPES_H + #define _ASM_IA64_SPINLOCK_TYPES_H + +-#ifndef __LINUX_SPINLOCK_TYPES_H +-# error "please don't include this file directly" +-#endif +- + typedef struct { + volatile unsigned int lock; + } arch_spinlock_t; +--- a/arch/m32r/include/asm/spinlock_types.h ++++ b/arch/m32r/include/asm/spinlock_types.h +@@ -2,10 +2,6 @@ + #ifndef _ASM_M32R_SPINLOCK_TYPES_H + #define _ASM_M32R_SPINLOCK_TYPES_H + +-#ifndef __LINUX_SPINLOCK_TYPES_H +-# error "please don't include this file directly" +-#endif +- + typedef struct { + volatile int slock; + } arch_spinlock_t; +--- a/arch/metag/include/asm/spinlock_types.h ++++ b/arch/metag/include/asm/spinlock_types.h +@@ -2,10 +2,6 @@ + #ifndef _ASM_METAG_SPINLOCK_TYPES_H + #define _ASM_METAG_SPINLOCK_TYPES_H + +-#ifndef __LINUX_SPINLOCK_TYPES_H +-# error "please don't include this file directly" +-#endif +- + typedef struct { + volatile unsigned int lock; + } arch_spinlock_t; +--- a/arch/mn10300/include/asm/spinlock_types.h ++++ b/arch/mn10300/include/asm/spinlock_types.h +@@ -2,10 +2,6 @@ + #ifndef _ASM_SPINLOCK_TYPES_H + #define _ASM_SPINLOCK_TYPES_H + +-#ifndef __LINUX_SPINLOCK_TYPES_H +-# error "please don't include this file directly" +-#endif +- + typedef struct arch_spinlock { + unsigned int slock; + } arch_spinlock_t; +--- a/arch/powerpc/include/asm/spinlock_types.h ++++ b/arch/powerpc/include/asm/spinlock_types.h +@@ -2,10 +2,6 @@ + #ifndef _ASM_POWERPC_SPINLOCK_TYPES_H + #define _ASM_POWERPC_SPINLOCK_TYPES_H + +-#ifndef __LINUX_SPINLOCK_TYPES_H +-# error "please don't include this file directly" +-#endif +- + typedef struct { + volatile unsigned int slock; + } arch_spinlock_t; +--- a/arch/s390/include/asm/spinlock_types.h ++++ b/arch/s390/include/asm/spinlock_types.h +@@ -2,10 +2,6 @@ + #ifndef __ASM_SPINLOCK_TYPES_H + #define __ASM_SPINLOCK_TYPES_H + +-#ifndef __LINUX_SPINLOCK_TYPES_H +-# error "please don't include this file directly" +-#endif +- + typedef struct { + int lock; + } __attribute__ ((aligned (4))) arch_spinlock_t; +--- a/arch/sh/include/asm/spinlock_types.h ++++ b/arch/sh/include/asm/spinlock_types.h +@@ -2,10 +2,6 @@ + #ifndef __ASM_SH_SPINLOCK_TYPES_H + #define __ASM_SH_SPINLOCK_TYPES_H + +-#ifndef __LINUX_SPINLOCK_TYPES_H +-# error "please don't include this file directly" +-#endif +- + typedef struct { + volatile unsigned int lock; + } arch_spinlock_t; +--- a/arch/tile/include/asm/spinlock_types.h ++++ b/arch/tile/include/asm/spinlock_types.h +@@ -15,10 +15,6 @@ + #ifndef _ASM_TILE_SPINLOCK_TYPES_H + #define _ASM_TILE_SPINLOCK_TYPES_H + +-#ifndef __LINUX_SPINLOCK_TYPES_H +-# error "please don't include this file directly" +-#endif +- + #ifdef __tilegx__ + + /* Low 15 bits are "next"; high 15 bits are "current". */ +--- a/arch/xtensa/include/asm/spinlock_types.h ++++ b/arch/xtensa/include/asm/spinlock_types.h +@@ -2,10 +2,6 @@ + #ifndef __ASM_SPINLOCK_TYPES_H + #define __ASM_SPINLOCK_TYPES_H + +-#ifndef __LINUX_SPINLOCK_TYPES_H +-# error "please don't include this file directly" +-#endif +- + typedef struct { + volatile unsigned int slock; + } arch_spinlock_t; +--- a/include/linux/spinlock_types_up.h ++++ b/include/linux/spinlock_types_up.h +@@ -1,10 +1,6 @@ + #ifndef __LINUX_SPINLOCK_TYPES_UP_H + #define __LINUX_SPINLOCK_TYPES_UP_H + +-#ifndef __LINUX_SPINLOCK_TYPES_H +-# error "please don't include this file directly" +-#endif +- + /* + * include/linux/spinlock_types_up.h - spinlock type definitions for UP + * diff --git a/patches/features/all/rt/locking-locktorture-Do-NOT-include-rwlock.h-directly.patch b/patches/features/all/rt/locking-locktorture-Do-NOT-include-rwlock.h-directly.patch new file mode 100644 index 00000000000..b3ecfaaedb9 --- /dev/null +++ b/patches/features/all/rt/locking-locktorture-Do-NOT-include-rwlock.h-directly.patch @@ -0,0 +1,27 @@ +From: "Wolfgang M. Reimer" +Date: Tue, 21 Jul 2015 16:20:07 +0200 +Subject: locking: locktorture: Do NOT include rwlock.h directly +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Including rwlock.h directly will cause kernel builds to fail +if CONFIG_PREEMPT_RT_FULL is defined. The correct header file +(rwlock_rt.h OR rwlock.h) will be included by spinlock.h which +is included by locktorture.c anyway. + +Cc: stable-rt@vger.kernel.org +Signed-off-by: Wolfgang M. Reimer +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/locking/locktorture.c | 1 - + 1 file changed, 1 deletion(-) + +--- a/kernel/locking/locktorture.c ++++ b/kernel/locking/locktorture.c +@@ -26,7 +26,6 @@ + #include + #include + #include +-#include + #include + #include + #include diff --git a/patches/features/all/rt/locking-rt-mutex-fix-deadlock-in-device-mapper-block.patch b/patches/features/all/rt/locking-rt-mutex-fix-deadlock-in-device-mapper-block.patch new file mode 100644 index 00000000000..4b18f8a0ad2 --- /dev/null +++ b/patches/features/all/rt/locking-rt-mutex-fix-deadlock-in-device-mapper-block.patch @@ -0,0 +1,74 @@ +From: Mikulas Patocka +Date: Mon, 13 Nov 2017 12:56:53 -0500 +Subject: [PATCH] locking/rt-mutex: fix deadlock in device mapper / block-IO +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +When some block device driver creates a bio and submits it to another +block device driver, the bio is added to current->bio_list (in order to +avoid unbounded recursion). + +However, this queuing of bios can cause deadlocks, in order to avoid them, +device mapper registers a function flush_current_bio_list. This function +is called when device mapper driver blocks. It redirects bios queued on +current->bio_list to helper workqueues, so that these bios can proceed +even if the driver is blocked. + +The problem with CONFIG_PREEMPT_RT_FULL is that when the device mapper +driver blocks, it won't call flush_current_bio_list (because +tsk_is_pi_blocked returns true in sched_submit_work), so deadlocks in +block device stack can happen. + +Note that we can't call blk_schedule_flush_plug if tsk_is_pi_blocked +returns true - that would cause +BUG_ON(rt_mutex_real_waiter(task->pi_blocked_on)) in +task_blocks_on_rt_mutex when flush_current_bio_list attempts to take a +spinlock. + +So the proper fix is to call blk_schedule_flush_plug in rt_mutex_fastlock, +when fast acquire failed and when the task is about to block. + +CC: stable-rt@vger.kernel.org +[bigeasy: The deadlock is not device-mapper specific, it can also occur + in plain EXT4] +Signed-off-by: Mikulas Patocka +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/locking/rtmutex.c | 13 +++++++++++++ + 1 file changed, 13 insertions(+) + +--- a/kernel/locking/rtmutex.c ++++ b/kernel/locking/rtmutex.c +@@ -24,6 +24,7 @@ + #include + #include + #include ++#include + + #include "rtmutex_common.h" + +@@ -1933,6 +1934,15 @@ rt_mutex_fastlock(struct rt_mutex *lock, + if (likely(rt_mutex_cmpxchg_acquire(lock, NULL, current))) + return 0; + ++ /* ++ * If rt_mutex blocks, the function sched_submit_work will not call ++ * blk_schedule_flush_plug (because tsk_is_pi_blocked would be true). ++ * We must call blk_schedule_flush_plug here, if we don't call it, ++ * a deadlock in device mapper may happen. ++ */ ++ if (unlikely(blk_needs_flush_plug(current))) ++ blk_schedule_flush_plug(current); ++ + return slowfn(lock, state, NULL, RT_MUTEX_MIN_CHAINWALK, ww_ctx); + } + +@@ -1950,6 +1960,9 @@ rt_mutex_timed_fastlock(struct rt_mutex + likely(rt_mutex_cmpxchg_acquire(lock, NULL, current))) + return 0; + ++ if (unlikely(blk_needs_flush_plug(current))) ++ blk_schedule_flush_plug(current); ++ + return slowfn(lock, state, timeout, chwalk, ww_ctx); + } + diff --git a/patches/features/all/rt/locking-rtmutex-don-t-drop-the-wait_lock-twice.patch b/patches/features/all/rt/locking-rtmutex-don-t-drop-the-wait_lock-twice.patch new file mode 100644 index 00000000000..f4e0f839e4c --- /dev/null +++ b/patches/features/all/rt/locking-rtmutex-don-t-drop-the-wait_lock-twice.patch @@ -0,0 +1,30 @@ +From: Sebastian Andrzej Siewior +Date: Thu, 7 Sep 2017 12:38:47 +0200 +Subject: locking/rtmutex: don't drop the wait_lock twice +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Since the futex rework, __rt_mutex_start_proxy_lock() does no longer +acquire the wait_lock so it must not drop it. Otherwise the lock is not +only unlocked twice but also the preemption counter is underflown. + +It is okay to remove that line because this function does not disable +interrupts nor does it acquire the ->wait_lock. The caller does this so it is +wrong do it here (after the futex rework). + +Cc: stable-rt@vger.kernel.org #v4.9.18-rt14+ +Reported-by: Gusenleitner Klaus +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/locking/rtmutex.c | 1 - + 1 file changed, 1 deletion(-) + +--- a/kernel/locking/rtmutex.c ++++ b/kernel/locking/rtmutex.c +@@ -1765,7 +1765,6 @@ int __rt_mutex_start_proxy_lock(struct r + raw_spin_lock(&task->pi_lock); + if (task->pi_blocked_on) { + raw_spin_unlock(&task->pi_lock); +- raw_spin_unlock_irq(&lock->wait_lock); + return -EAGAIN; + } + task->pi_blocked_on = PI_REQUEUE_INPROGRESS; diff --git a/patches/features/all/rt/locking-rtmutex-re-init-the-wait_lock-in-rt_mutex_in.patch b/patches/features/all/rt/locking-rtmutex-re-init-the-wait_lock-in-rt_mutex_in.patch new file mode 100644 index 00000000000..bb7a340e24e --- /dev/null +++ b/patches/features/all/rt/locking-rtmutex-re-init-the-wait_lock-in-rt_mutex_in.patch @@ -0,0 +1,33 @@ +From: Sebastian Andrzej Siewior +Date: Thu, 16 Nov 2017 16:48:48 +0100 +Subject: [PATCH] locking/rtmutex: re-init the wait_lock in + rt_mutex_init_proxy_locked() +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +We could provide a key-class for the lockdep (and fixup all callers) or +move the init to all callers (like it was) in order to avoid lockdep +seeing a double-lock of the wait_lock. + +Reported-by: Fernando Lopez-Lezcano +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/locking/rtmutex.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +--- a/kernel/locking/rtmutex.c ++++ b/kernel/locking/rtmutex.c +@@ -2272,6 +2272,14 @@ void rt_mutex_init_proxy_locked(struct r + struct task_struct *proxy_owner) + { + __rt_mutex_init(lock, NULL, NULL); ++#ifdef CONFIG_DEBUG_SPINLOCK ++ /* ++ * get another key class for the wait_lock. LOCK_PI and UNLOCK_PI is ++ * holding the ->wait_lock of the proxy_lock while unlocking a sleeping ++ * lock. ++ */ ++ raw_spin_lock_init(&lock->wait_lock); ++#endif + debug_rt_mutex_proxy_lock(lock, proxy_owner); + rt_mutex_set_owner(lock, proxy_owner); + } diff --git a/patches/features/all/rt/md-disable-bcache.patch b/patches/features/all/rt/md-disable-bcache.patch new file mode 100644 index 00000000000..2688b75dd6f --- /dev/null +++ b/patches/features/all/rt/md-disable-bcache.patch @@ -0,0 +1,32 @@ +From: Sebastian Andrzej Siewior +Date: Thu, 29 Aug 2013 11:48:57 +0200 +Subject: md: disable bcache +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +It uses anon semaphores +|drivers/md/bcache/request.c: In function ‘cached_dev_write_complete’: +|drivers/md/bcache/request.c:1007:2: error: implicit declaration of function ‘up_read_non_owner’ [-Werror=implicit-function-declaration] +| up_read_non_owner(&dc->writeback_lock); +| ^ +|drivers/md/bcache/request.c: In function ‘request_write’: +|drivers/md/bcache/request.c:1033:2: error: implicit declaration of function ‘down_read_non_owner’ [-Werror=implicit-function-declaration] +| down_read_non_owner(&dc->writeback_lock); +| ^ + +either we get rid of those or we have to introduce them… + +Signed-off-by: Sebastian Andrzej Siewior +--- + drivers/md/bcache/Kconfig | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/md/bcache/Kconfig ++++ b/drivers/md/bcache/Kconfig +@@ -1,6 +1,7 @@ + + config BCACHE + tristate "Block device as cache" ++ depends on !PREEMPT_RT_FULL + ---help--- + Allows a block device to be used as cache for other devices; uses + a btree for indexing and the layout is optimized for SSDs. diff --git a/patches/features/all/rt/md-raid5-do-not-disable-interrupts.patch b/patches/features/all/rt/md-raid5-do-not-disable-interrupts.patch new file mode 100644 index 00000000000..0dfc996e8fb --- /dev/null +++ b/patches/features/all/rt/md-raid5-do-not-disable-interrupts.patch @@ -0,0 +1,55 @@ +From: Sebastian Andrzej Siewior +Date: Fri, 17 Nov 2017 16:21:00 +0100 +Subject: [PATCH] md/raid5: do not disable interrupts +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +|BUG: sleeping function called from invalid context at kernel/locking/rtmutex.c:974 +|in_atomic(): 0, irqs_disabled(): 1, pid: 2992, name: lvm +|CPU: 2 PID: 2992 Comm: lvm Not tainted 4.13.10-rt3+ #54 +|Call Trace: +| dump_stack+0x4f/0x65 +| ___might_sleep+0xfc/0x150 +| atomic_dec_and_spin_lock+0x3c/0x80 +| raid5_release_stripe+0x73/0x110 +| grow_one_stripe+0xce/0xf0 +| setup_conf+0x841/0xaa0 +| raid5_run+0x7e7/0xa40 +| md_run+0x515/0xaf0 +| raid_ctr+0x147d/0x25e0 +| dm_table_add_target+0x155/0x320 +| table_load+0x103/0x320 +| ctl_ioctl+0x1d9/0x510 +| dm_ctl_ioctl+0x9/0x10 +| do_vfs_ioctl+0x8e/0x670 +| SyS_ioctl+0x3c/0x70 +| entry_SYSCALL_64_fastpath+0x17/0x98 + +The interrupts were disabled because ->device_lock is taken with +interrupts disabled. + +Cc: stable-rt@vger.kernel.org +Signed-off-by: Sebastian Andrzej Siewior +--- + drivers/md/raid5.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/drivers/md/raid5.c ++++ b/drivers/md/raid5.c +@@ -410,7 +410,7 @@ void raid5_release_stripe(struct stripe_ + md_wakeup_thread(conf->mddev->thread); + return; + slow_path: +- local_irq_save(flags); ++ local_irq_save_nort(flags); + /* we are ok here if STRIPE_ON_RELEASE_LIST is set or not */ + if (atomic_dec_and_lock(&sh->count, &conf->device_lock)) { + INIT_LIST_HEAD(&list); +@@ -419,7 +419,7 @@ void raid5_release_stripe(struct stripe_ + spin_unlock(&conf->device_lock); + release_inactive_stripe_list(conf, &list, hash); + } +- local_irq_restore(flags); ++ local_irq_restore_nort(flags); + } + + static inline void remove_hash(struct stripe_head *sh) diff --git a/patches/features/all/rt/md-raid5-percpu-handling-rt-aware.patch b/patches/features/all/rt/md-raid5-percpu-handling-rt-aware.patch new file mode 100644 index 00000000000..17a73f78e4f --- /dev/null +++ b/patches/features/all/rt/md-raid5-percpu-handling-rt-aware.patch @@ -0,0 +1,70 @@ +From: Thomas Gleixner +Date: Tue, 6 Apr 2010 16:51:31 +0200 +Subject: md: raid5: Make raid5_percpu handling RT aware +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +__raid_run_ops() disables preemption with get_cpu() around the access +to the raid5_percpu variables. That causes scheduling while atomic +spews on RT. + +Serialize the access to the percpu data with a lock and keep the code +preemptible. + +Reported-by: Udo van den Heuvel +Signed-off-by: Thomas Gleixner +Tested-by: Udo van den Heuvel + +--- + drivers/md/raid5.c | 8 +++++--- + drivers/md/raid5.h | 1 + + 2 files changed, 6 insertions(+), 3 deletions(-) + +--- a/drivers/md/raid5.c ++++ b/drivers/md/raid5.c +@@ -2067,8 +2067,9 @@ static void raid_run_ops(struct stripe_h + struct raid5_percpu *percpu; + unsigned long cpu; + +- cpu = get_cpu(); ++ cpu = get_cpu_light(); + percpu = per_cpu_ptr(conf->percpu, cpu); ++ spin_lock(&percpu->lock); + if (test_bit(STRIPE_OP_BIOFILL, &ops_request)) { + ops_run_biofill(sh); + overlap_clear++; +@@ -2127,7 +2128,8 @@ static void raid_run_ops(struct stripe_h + if (test_and_clear_bit(R5_Overlap, &dev->flags)) + wake_up(&sh->raid_conf->wait_for_overlap); + } +- put_cpu(); ++ spin_unlock(&percpu->lock); ++ put_cpu_light(); + } + + static void free_stripe(struct kmem_cache *sc, struct stripe_head *sh) +@@ -6796,6 +6798,7 @@ static int raid456_cpu_up_prepare(unsign + __func__, cpu); + return -ENOMEM; + } ++ spin_lock_init(&per_cpu_ptr(conf->percpu, cpu)->lock); + return 0; + } + +@@ -6806,7 +6809,6 @@ static int raid5_alloc_percpu(struct r5c + conf->percpu = alloc_percpu(struct raid5_percpu); + if (!conf->percpu) + return -ENOMEM; +- + err = cpuhp_state_add_instance(CPUHP_MD_RAID5_PREPARE, &conf->node); + if (!err) { + conf->scribble_disks = max(conf->raid_disks, +--- a/drivers/md/raid5.h ++++ b/drivers/md/raid5.h +@@ -624,6 +624,7 @@ struct r5conf { + int recovery_disabled; + /* per cpu variables */ + struct raid5_percpu { ++ spinlock_t lock; /* Protection for -RT */ + struct page *spare_page; /* Used when checking P/Q in raid6 */ + struct flex_array *scribble; /* space for constructing buffer + * lists and performing address diff --git a/patches/features/all/rt/mfd-syscon-atmel-smc-include-string.h.patch b/patches/features/all/rt/mfd-syscon-atmel-smc-include-string.h.patch new file mode 100644 index 00000000000..7b04e4c4dd3 --- /dev/null +++ b/patches/features/all/rt/mfd-syscon-atmel-smc-include-string.h.patch @@ -0,0 +1,23 @@ +From: Sebastian Andrzej Siewior +Date: Wed, 4 Oct 2017 09:55:58 +0200 +Subject: [PATCH] mfd: syscon: atmel-smc: include string.h +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +The string.h header file is needed for the memset() definition. The RT +build fails because it is not pulled in via other header files. + +Signed-off-by: Sebastian Andrzej Siewior +--- + drivers/mfd/atmel-smc.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/mfd/atmel-smc.c ++++ b/drivers/mfd/atmel-smc.c +@@ -12,6 +12,7 @@ + */ + + #include ++#include + + /** + * atmel_smc_cs_conf_init - initialize a SMC CS conf diff --git a/patches/features/all/rt/mips-disable-highmem-on-rt.patch b/patches/features/all/rt/mips-disable-highmem-on-rt.patch new file mode 100644 index 00000000000..f670741acc0 --- /dev/null +++ b/patches/features/all/rt/mips-disable-highmem-on-rt.patch @@ -0,0 +1,23 @@ +Subject: mips: Disable highmem on RT +From: Thomas Gleixner +Date: Mon, 18 Jul 2011 17:10:12 +0200 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +The current highmem handling on -RT is not compatible and needs fixups. + +Signed-off-by: Thomas Gleixner +--- + arch/mips/Kconfig | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/arch/mips/Kconfig ++++ b/arch/mips/Kconfig +@@ -2519,7 +2519,7 @@ config MIPS_ASID_BITS_VARIABLE + # + config HIGHMEM + bool "High Memory Support" +- depends on 32BIT && CPU_SUPPORTS_HIGHMEM && SYS_SUPPORTS_HIGHMEM && !CPU_MIPS32_3_5_EVA ++ depends on 32BIT && CPU_SUPPORTS_HIGHMEM && SYS_SUPPORTS_HIGHMEM && !CPU_MIPS32_3_5_EVA && !PREEMPT_RT_FULL + + config CPU_SUPPORTS_HIGHMEM + bool diff --git a/patches/features/all/rt/mm--rt--Fix-generic-kmap_atomic-for-RT.patch b/patches/features/all/rt/mm--rt--Fix-generic-kmap_atomic-for-RT.patch new file mode 100644 index 00000000000..56eb30e16f6 --- /dev/null +++ b/patches/features/all/rt/mm--rt--Fix-generic-kmap_atomic-for-RT.patch @@ -0,0 +1,41 @@ +Subject: mm: rt: Fix generic kmap_atomic for RT +From: Thomas Gleixner +Date: Sat, 19 Sep 2015 10:15:00 +0200 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +The update to 4.1 brought in the mainline variant of the pagefault +disable distangling from preempt count. That introduced a +preempt_disable/enable pair in the generic kmap_atomic/kunmap_atomic +implementations which got not converted to the _nort() variant. + +That results in massive 'scheduling while atomic/sleeping function +called from invalid context' splats. + +Fix that up. + +Reported-and-tested-by: Juergen Borleis +Signed-off-by: Thomas Gleixner +--- + include/linux/highmem.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/include/linux/highmem.h ++++ b/include/linux/highmem.h +@@ -66,7 +66,7 @@ static inline void kunmap(struct page *p + + static inline void *kmap_atomic(struct page *page) + { +- preempt_disable(); ++ preempt_disable_nort(); + pagefault_disable(); + return page_address(page); + } +@@ -75,7 +75,7 @@ static inline void *kmap_atomic(struct p + static inline void __kunmap_atomic(void *addr) + { + pagefault_enable(); +- preempt_enable(); ++ preempt_enable_nort(); + } + + #define kmap_atomic_pfn(pfn) kmap_atomic(pfn_to_page(pfn)) diff --git a/patches/features/all/rt/mm-backing-dev-don-t-disable-IRQs-in-wb_congested_pu.patch b/patches/features/all/rt/mm-backing-dev-don-t-disable-IRQs-in-wb_congested_pu.patch new file mode 100644 index 00000000000..06c410eaa00 --- /dev/null +++ b/patches/features/all/rt/mm-backing-dev-don-t-disable-IRQs-in-wb_congested_pu.patch @@ -0,0 +1,42 @@ +From: Sebastian Andrzej Siewior +Date: Fri, 5 Feb 2016 12:17:14 +0100 +Subject: mm: backing-dev: don't disable IRQs in wb_congested_put() +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +it triggers: +|BUG: sleeping function called from invalid context at kernel/locking/rtmutex.c:930 +|in_atomic(): 0, irqs_disabled(): 1, pid: 12, name: rcuc/0 +|1 lock held by rcuc/0/12: +| #0: (rcu_callback){......}, at: [] rcu_cpu_kthread+0x376/0xb10 +|irq event stamp: 23636 +|hardirqs last enabled at (23635): [] _raw_spin_unlock_irqrestore+0x6c/0x80 +|hardirqs last disabled at (23636): [] wb_congested_put+0x18/0x90 +| [] rt_spin_lock+0x24/0x60 +| [] atomic_dec_and_spin_lock+0x52/0x90 +| [] wb_congested_put+0x28/0x90 +| [] __blkg_release_rcu+0x5e/0x1e0 +| [] ? __blkg_release_rcu+0x87/0x1e0 +| [] ? blkg_conf_finish+0x90/0x90 +| [] rcu_cpu_kthread+0x3b7/0xb10 + +due to cgwb_lock beeing taken with spin_lock_irqsave() usually. + +Signed-off-by: Sebastian Andrzej Siewior +--- + mm/backing-dev.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/mm/backing-dev.c ++++ b/mm/backing-dev.c +@@ -482,9 +482,9 @@ void wb_congested_put(struct bdi_writeba + { + unsigned long flags; + +- local_irq_save(flags); ++ local_irq_save_nort(flags); + if (!atomic_dec_and_lock(&congested->refcnt, &cgwb_lock)) { +- local_irq_restore(flags); ++ local_irq_restore_nort(flags); + return; + } + diff --git a/patches/features/all/rt/mm-bounce-local-irq-save-nort.patch b/patches/features/all/rt/mm-bounce-local-irq-save-nort.patch new file mode 100644 index 00000000000..1c292aac92c --- /dev/null +++ b/patches/features/all/rt/mm-bounce-local-irq-save-nort.patch @@ -0,0 +1,28 @@ +Subject: mm: bounce: Use local_irq_save_nort +From: Thomas Gleixner +Date: Wed, 09 Jan 2013 10:33:09 +0100 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +kmap_atomic() is preemptible on RT. + +Signed-off-by: Thomas Gleixner +--- + block/bounce.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/block/bounce.c ++++ b/block/bounce.c +@@ -66,11 +66,11 @@ static void bounce_copy_vec(struct bio_v + unsigned long flags; + unsigned char *vto; + +- local_irq_save(flags); ++ local_irq_save_nort(flags); + vto = kmap_atomic(to->bv_page); + memcpy(vto + to->bv_offset, vfrom, to->bv_len); + kunmap_atomic(vto); +- local_irq_restore(flags); ++ local_irq_restore_nort(flags); + } + + #else /* CONFIG_HIGHMEM */ diff --git a/patches/features/all/rt/mm-convert-swap-to-percpu-locked.patch b/patches/features/all/rt/mm-convert-swap-to-percpu-locked.patch new file mode 100644 index 00000000000..369b4c120b7 --- /dev/null +++ b/patches/features/all/rt/mm-convert-swap-to-percpu-locked.patch @@ -0,0 +1,192 @@ +From: Ingo Molnar +Date: Fri, 3 Jul 2009 08:29:51 -0500 +Subject: mm/swap: Convert to percpu locked +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Replace global locks (get_cpu + local_irq_save) with "local_locks()". +Currently there is one of for "rotate" and one for "swap". + +Signed-off-by: Ingo Molnar +Signed-off-by: Thomas Gleixner + +--- + include/linux/swap.h | 1 + + mm/compaction.c | 6 ++++-- + mm/page_alloc.c | 3 ++- + mm/swap.c | 38 ++++++++++++++++++++++---------------- + 4 files changed, 29 insertions(+), 19 deletions(-) + +--- a/include/linux/swap.h ++++ b/include/linux/swap.h +@@ -312,6 +312,7 @@ extern unsigned long nr_free_pagecache_p + + + /* linux/mm/swap.c */ ++DECLARE_LOCAL_IRQ_LOCK(swapvec_lock); + extern void lru_cache_add(struct page *); + extern void lru_cache_add_anon(struct page *page); + extern void lru_cache_add_file(struct page *page); +--- a/mm/compaction.c ++++ b/mm/compaction.c +@@ -1634,10 +1634,12 @@ static enum compact_result compact_zone( + block_start_pfn(cc->migrate_pfn, cc->order); + + if (cc->last_migrated_pfn < current_block_start) { +- cpu = get_cpu(); ++ cpu = get_cpu_light(); ++ local_lock_irq(swapvec_lock); + lru_add_drain_cpu(cpu); ++ local_unlock_irq(swapvec_lock); + drain_local_pages(zone); +- put_cpu(); ++ put_cpu_light(); + /* No more flushing until we migrate again */ + cc->last_migrated_pfn = 0; + } +--- a/mm/page_alloc.c ++++ b/mm/page_alloc.c +@@ -6862,8 +6862,9 @@ void __init free_area_init(unsigned long + + static int page_alloc_cpu_dead(unsigned int cpu) + { +- ++ local_lock_irq_on(swapvec_lock, cpu); + lru_add_drain_cpu(cpu); ++ local_unlock_irq_on(swapvec_lock, cpu); + drain_pages(cpu); + + /* +--- a/mm/swap.c ++++ b/mm/swap.c +@@ -32,6 +32,7 @@ + #include + #include + #include ++#include + #include + #include + +@@ -50,6 +51,8 @@ static DEFINE_PER_CPU(struct pagevec, lr + #ifdef CONFIG_SMP + static DEFINE_PER_CPU(struct pagevec, activate_page_pvecs); + #endif ++static DEFINE_LOCAL_IRQ_LOCK(rotate_lock); ++DEFINE_LOCAL_IRQ_LOCK(swapvec_lock); + + /* + * This path almost never happens for VM activity - pages are normally +@@ -252,11 +255,11 @@ void rotate_reclaimable_page(struct page + unsigned long flags; + + get_page(page); +- local_irq_save(flags); ++ local_lock_irqsave(rotate_lock, flags); + pvec = this_cpu_ptr(&lru_rotate_pvecs); + if (!pagevec_add(pvec, page) || PageCompound(page)) + pagevec_move_tail(pvec); +- local_irq_restore(flags); ++ local_unlock_irqrestore(rotate_lock, flags); + } + } + +@@ -306,12 +309,13 @@ void activate_page(struct page *page) + { + page = compound_head(page); + if (PageLRU(page) && !PageActive(page) && !PageUnevictable(page)) { +- struct pagevec *pvec = &get_cpu_var(activate_page_pvecs); ++ struct pagevec *pvec = &get_locked_var(swapvec_lock, ++ activate_page_pvecs); + + get_page(page); + if (!pagevec_add(pvec, page) || PageCompound(page)) + pagevec_lru_move_fn(pvec, __activate_page, NULL); +- put_cpu_var(activate_page_pvecs); ++ put_locked_var(swapvec_lock, activate_page_pvecs); + } + } + +@@ -338,7 +342,7 @@ void activate_page(struct page *page) + + static void __lru_cache_activate_page(struct page *page) + { +- struct pagevec *pvec = &get_cpu_var(lru_add_pvec); ++ struct pagevec *pvec = &get_locked_var(swapvec_lock, lru_add_pvec); + int i; + + /* +@@ -360,7 +364,7 @@ static void __lru_cache_activate_page(st + } + } + +- put_cpu_var(lru_add_pvec); ++ put_locked_var(swapvec_lock, lru_add_pvec); + } + + /* +@@ -402,12 +406,12 @@ EXPORT_SYMBOL(mark_page_accessed); + + static void __lru_cache_add(struct page *page) + { +- struct pagevec *pvec = &get_cpu_var(lru_add_pvec); ++ struct pagevec *pvec = &get_locked_var(swapvec_lock, lru_add_pvec); + + get_page(page); + if (!pagevec_add(pvec, page) || PageCompound(page)) + __pagevec_lru_add(pvec); +- put_cpu_var(lru_add_pvec); ++ put_locked_var(swapvec_lock, lru_add_pvec); + } + + /** +@@ -613,9 +617,9 @@ void lru_add_drain_cpu(int cpu) + unsigned long flags; + + /* No harm done if a racing interrupt already did this */ +- local_irq_save(flags); ++ local_lock_irqsave(rotate_lock, flags); + pagevec_move_tail(pvec); +- local_irq_restore(flags); ++ local_unlock_irqrestore(rotate_lock, flags); + } + + pvec = &per_cpu(lru_deactivate_file_pvecs, cpu); +@@ -647,11 +651,12 @@ void deactivate_file_page(struct page *p + return; + + if (likely(get_page_unless_zero(page))) { +- struct pagevec *pvec = &get_cpu_var(lru_deactivate_file_pvecs); ++ struct pagevec *pvec = &get_locked_var(swapvec_lock, ++ lru_deactivate_file_pvecs); + + if (!pagevec_add(pvec, page) || PageCompound(page)) + pagevec_lru_move_fn(pvec, lru_deactivate_file_fn, NULL); +- put_cpu_var(lru_deactivate_file_pvecs); ++ put_locked_var(swapvec_lock, lru_deactivate_file_pvecs); + } + } + +@@ -666,19 +671,20 @@ void mark_page_lazyfree(struct page *pag + { + if (PageLRU(page) && PageAnon(page) && PageSwapBacked(page) && + !PageSwapCache(page) && !PageUnevictable(page)) { +- struct pagevec *pvec = &get_cpu_var(lru_lazyfree_pvecs); ++ struct pagevec *pvec = &get_locked_var(swapvec_lock, ++ lru_lazyfree_pvecs); + + get_page(page); + if (!pagevec_add(pvec, page) || PageCompound(page)) + pagevec_lru_move_fn(pvec, lru_lazyfree_fn, NULL); +- put_cpu_var(lru_lazyfree_pvecs); ++ put_locked_var(swapvec_lock, lru_lazyfree_pvecs); + } + } + + void lru_add_drain(void) + { +- lru_add_drain_cpu(get_cpu()); +- put_cpu(); ++ lru_add_drain_cpu(local_lock_cpu(swapvec_lock)); ++ local_unlock_cpu(swapvec_lock); + } + + static void lru_add_drain_per_cpu(struct work_struct *dummy) diff --git a/patches/features/all/rt/mm-disable-sloub-rt.patch b/patches/features/all/rt/mm-disable-sloub-rt.patch new file mode 100644 index 00000000000..c066b5e3623 --- /dev/null +++ b/patches/features/all/rt/mm-disable-sloub-rt.patch @@ -0,0 +1,32 @@ +From: Ingo Molnar +Date: Fri, 3 Jul 2009 08:44:03 -0500 +Subject: mm: Allow only slub on RT +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Disable SLAB and SLOB on -RT. Only SLUB is adopted to -RT needs. + +Signed-off-by: Ingo Molnar +Signed-off-by: Thomas Gleixner + +--- + init/Kconfig | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/init/Kconfig ++++ b/init/Kconfig +@@ -1526,6 +1526,7 @@ choice + + config SLAB + bool "SLAB" ++ depends on !PREEMPT_RT_FULL + select HAVE_HARDENED_USERCOPY_ALLOCATOR + help + The regular slab allocator that is established and known to work +@@ -1546,6 +1547,7 @@ config SLUB + config SLOB + depends on EXPERT + bool "SLOB (Simple Allocator)" ++ depends on !PREEMPT_RT_FULL + help + SLOB replaces the stock allocator with a drastically simpler + allocator. SLOB is generally more space efficient but diff --git a/patches/features/all/rt/mm-enable-slub.patch b/patches/features/all/rt/mm-enable-slub.patch new file mode 100644 index 00000000000..ddf3e390c72 --- /dev/null +++ b/patches/features/all/rt/mm-enable-slub.patch @@ -0,0 +1,474 @@ +Subject: mm: Enable SLUB for RT +From: Thomas Gleixner +Date: Thu, 25 Oct 2012 10:32:35 +0100 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Make SLUB RT aware by converting locks to raw and using free lists to +move the freeing out of the lock held region. + +Signed-off-by: Thomas Gleixner +--- + mm/slab.h | 4 + + mm/slub.c | 136 ++++++++++++++++++++++++++++++++++++++++++++++++-------------- + 2 files changed, 110 insertions(+), 30 deletions(-) + +--- a/mm/slab.h ++++ b/mm/slab.h +@@ -454,7 +454,11 @@ static inline void slab_post_alloc_hook( + * The slab lists for all objects. + */ + struct kmem_cache_node { ++#ifdef CONFIG_SLUB ++ raw_spinlock_t list_lock; ++#else + spinlock_t list_lock; ++#endif + + #ifdef CONFIG_SLAB + struct list_head slabs_partial; /* partial list first, better asm code */ +--- a/mm/slub.c ++++ b/mm/slub.c +@@ -1180,7 +1180,7 @@ static noinline int free_debug_processin + unsigned long uninitialized_var(flags); + int ret = 0; + +- spin_lock_irqsave(&n->list_lock, flags); ++ raw_spin_lock_irqsave(&n->list_lock, flags); + slab_lock(page); + + if (s->flags & SLAB_CONSISTENCY_CHECKS) { +@@ -1215,7 +1215,7 @@ static noinline int free_debug_processin + bulk_cnt, cnt); + + slab_unlock(page); +- spin_unlock_irqrestore(&n->list_lock, flags); ++ raw_spin_unlock_irqrestore(&n->list_lock, flags); + if (!ret) + slab_fix(s, "Object at 0x%p not freed", object); + return ret; +@@ -1343,6 +1343,12 @@ static inline void dec_slabs_node(struct + + #endif /* CONFIG_SLUB_DEBUG */ + ++struct slub_free_list { ++ raw_spinlock_t lock; ++ struct list_head list; ++}; ++static DEFINE_PER_CPU(struct slub_free_list, slub_free_list); ++ + /* + * Hooks for other subsystems that check memory allocations. In a typical + * production configuration these hooks all should produce no code at all. +@@ -1569,7 +1575,11 @@ static struct page *allocate_slab(struct + + flags &= gfp_allowed_mask; + ++#ifdef CONFIG_PREEMPT_RT_FULL ++ if (system_state > SYSTEM_BOOTING) ++#else + if (gfpflags_allow_blocking(flags)) ++#endif + local_irq_enable(); + + flags |= s->allocflags; +@@ -1644,7 +1654,11 @@ static struct page *allocate_slab(struct + page->frozen = 1; + + out: ++#ifdef CONFIG_PREEMPT_RT_FULL ++ if (system_state > SYSTEM_BOOTING) ++#else + if (gfpflags_allow_blocking(flags)) ++#endif + local_irq_disable(); + if (!page) + return NULL; +@@ -1704,6 +1718,16 @@ static void __free_slab(struct kmem_cach + __free_pages(page, order); + } + ++static void free_delayed(struct list_head *h) ++{ ++ while(!list_empty(h)) { ++ struct page *page = list_first_entry(h, struct page, lru); ++ ++ list_del(&page->lru); ++ __free_slab(page->slab_cache, page); ++ } ++} ++ + #define need_reserve_slab_rcu \ + (sizeof(((struct page *)NULL)->lru) < sizeof(struct rcu_head)) + +@@ -1735,6 +1759,12 @@ static void free_slab(struct kmem_cache + } + + call_rcu(head, rcu_free_slab); ++ } else if (irqs_disabled()) { ++ struct slub_free_list *f = this_cpu_ptr(&slub_free_list); ++ ++ raw_spin_lock(&f->lock); ++ list_add(&page->lru, &f->list); ++ raw_spin_unlock(&f->lock); + } else + __free_slab(s, page); + } +@@ -1842,7 +1872,7 @@ static void *get_partial_node(struct kme + if (!n || !n->nr_partial) + return NULL; + +- spin_lock(&n->list_lock); ++ raw_spin_lock(&n->list_lock); + list_for_each_entry_safe(page, page2, &n->partial, lru) { + void *t; + +@@ -1867,7 +1897,7 @@ static void *get_partial_node(struct kme + break; + + } +- spin_unlock(&n->list_lock); ++ raw_spin_unlock(&n->list_lock); + return object; + } + +@@ -2113,7 +2143,7 @@ static void deactivate_slab(struct kmem_ + * that acquire_slab() will see a slab page that + * is frozen + */ +- spin_lock(&n->list_lock); ++ raw_spin_lock(&n->list_lock); + } + } else { + m = M_FULL; +@@ -2124,7 +2154,7 @@ static void deactivate_slab(struct kmem_ + * slabs from diagnostic functions will not see + * any frozen slabs. + */ +- spin_lock(&n->list_lock); ++ raw_spin_lock(&n->list_lock); + } + } + +@@ -2159,7 +2189,7 @@ static void deactivate_slab(struct kmem_ + goto redo; + + if (lock) +- spin_unlock(&n->list_lock); ++ raw_spin_unlock(&n->list_lock); + + if (m == M_FREE) { + stat(s, DEACTIVATE_EMPTY); +@@ -2194,10 +2224,10 @@ static void unfreeze_partials(struct kme + n2 = get_node(s, page_to_nid(page)); + if (n != n2) { + if (n) +- spin_unlock(&n->list_lock); ++ raw_spin_unlock(&n->list_lock); + + n = n2; +- spin_lock(&n->list_lock); ++ raw_spin_lock(&n->list_lock); + } + + do { +@@ -2226,7 +2256,7 @@ static void unfreeze_partials(struct kme + } + + if (n) +- spin_unlock(&n->list_lock); ++ raw_spin_unlock(&n->list_lock); + + while (discard_page) { + page = discard_page; +@@ -2265,14 +2295,21 @@ static void put_cpu_partial(struct kmem_ + pobjects = oldpage->pobjects; + pages = oldpage->pages; + if (drain && pobjects > s->cpu_partial) { ++ struct slub_free_list *f; + unsigned long flags; ++ LIST_HEAD(tofree); + /* + * partial array is full. Move the existing + * set to the per node partial list. + */ + local_irq_save(flags); + unfreeze_partials(s, this_cpu_ptr(s->cpu_slab)); ++ f = this_cpu_ptr(&slub_free_list); ++ raw_spin_lock(&f->lock); ++ list_splice_init(&f->list, &tofree); ++ raw_spin_unlock(&f->lock); + local_irq_restore(flags); ++ free_delayed(&tofree); + oldpage = NULL; + pobjects = 0; + pages = 0; +@@ -2342,7 +2379,22 @@ static bool has_cpu_slab(int cpu, void * + + static void flush_all(struct kmem_cache *s) + { ++ LIST_HEAD(tofree); ++ int cpu; ++ + on_each_cpu_cond(has_cpu_slab, flush_cpu_slab, s, 1, GFP_ATOMIC); ++ for_each_online_cpu(cpu) { ++ struct slub_free_list *f; ++ ++ if (!has_cpu_slab(cpu, s)) ++ continue; ++ ++ f = &per_cpu(slub_free_list, cpu); ++ raw_spin_lock_irq(&f->lock); ++ list_splice_init(&f->list, &tofree); ++ raw_spin_unlock_irq(&f->lock); ++ free_delayed(&tofree); ++ } + } + + /* +@@ -2397,10 +2449,10 @@ static unsigned long count_partial(struc + unsigned long x = 0; + struct page *page; + +- spin_lock_irqsave(&n->list_lock, flags); ++ raw_spin_lock_irqsave(&n->list_lock, flags); + list_for_each_entry(page, &n->partial, lru) + x += get_count(page); +- spin_unlock_irqrestore(&n->list_lock, flags); ++ raw_spin_unlock_irqrestore(&n->list_lock, flags); + return x; + } + #endif /* CONFIG_SLUB_DEBUG || CONFIG_SYSFS */ +@@ -2538,8 +2590,10 @@ static inline void *get_freelist(struct + * already disabled (which is the case for bulk allocation). + */ + static void *___slab_alloc(struct kmem_cache *s, gfp_t gfpflags, int node, +- unsigned long addr, struct kmem_cache_cpu *c) ++ unsigned long addr, struct kmem_cache_cpu *c, ++ struct list_head *to_free) + { ++ struct slub_free_list *f; + void *freelist; + struct page *page; + +@@ -2595,6 +2649,13 @@ static void *___slab_alloc(struct kmem_c + VM_BUG_ON(!c->page->frozen); + c->freelist = get_freepointer(s, freelist); + c->tid = next_tid(c->tid); ++ ++out: ++ f = this_cpu_ptr(&slub_free_list); ++ raw_spin_lock(&f->lock); ++ list_splice_init(&f->list, to_free); ++ raw_spin_unlock(&f->lock); ++ + return freelist; + + new_slab: +@@ -2610,7 +2671,7 @@ static void *___slab_alloc(struct kmem_c + + if (unlikely(!freelist)) { + slab_out_of_memory(s, gfpflags, node); +- return NULL; ++ goto out; + } + + page = c->page; +@@ -2623,7 +2684,7 @@ static void *___slab_alloc(struct kmem_c + goto new_slab; /* Slab failed checks. Next slab needed */ + + deactivate_slab(s, page, get_freepointer(s, freelist), c); +- return freelist; ++ goto out; + } + + /* +@@ -2635,6 +2696,7 @@ static void *__slab_alloc(struct kmem_ca + { + void *p; + unsigned long flags; ++ LIST_HEAD(tofree); + + local_irq_save(flags); + #ifdef CONFIG_PREEMPT +@@ -2646,8 +2708,9 @@ static void *__slab_alloc(struct kmem_ca + c = this_cpu_ptr(s->cpu_slab); + #endif + +- p = ___slab_alloc(s, gfpflags, node, addr, c); ++ p = ___slab_alloc(s, gfpflags, node, addr, c, &tofree); + local_irq_restore(flags); ++ free_delayed(&tofree); + return p; + } + +@@ -2833,7 +2896,7 @@ static void __slab_free(struct kmem_cach + + do { + if (unlikely(n)) { +- spin_unlock_irqrestore(&n->list_lock, flags); ++ raw_spin_unlock_irqrestore(&n->list_lock, flags); + n = NULL; + } + prior = page->freelist; +@@ -2865,7 +2928,7 @@ static void __slab_free(struct kmem_cach + * Otherwise the list_lock will synchronize with + * other processors updating the list of slabs. + */ +- spin_lock_irqsave(&n->list_lock, flags); ++ raw_spin_lock_irqsave(&n->list_lock, flags); + + } + } +@@ -2907,7 +2970,7 @@ static void __slab_free(struct kmem_cach + add_partial(n, page, DEACTIVATE_TO_TAIL); + stat(s, FREE_ADD_PARTIAL); + } +- spin_unlock_irqrestore(&n->list_lock, flags); ++ raw_spin_unlock_irqrestore(&n->list_lock, flags); + return; + + slab_empty: +@@ -2922,7 +2985,7 @@ static void __slab_free(struct kmem_cach + remove_full(s, n, page); + } + +- spin_unlock_irqrestore(&n->list_lock, flags); ++ raw_spin_unlock_irqrestore(&n->list_lock, flags); + stat(s, FREE_SLAB); + discard_slab(s, page); + } +@@ -3127,6 +3190,7 @@ int kmem_cache_alloc_bulk(struct kmem_ca + void **p) + { + struct kmem_cache_cpu *c; ++ LIST_HEAD(to_free); + int i; + + /* memcg and kmem_cache debug support */ +@@ -3150,7 +3214,7 @@ int kmem_cache_alloc_bulk(struct kmem_ca + * of re-populating per CPU c->freelist + */ + p[i] = ___slab_alloc(s, flags, NUMA_NO_NODE, +- _RET_IP_, c); ++ _RET_IP_, c, &to_free); + if (unlikely(!p[i])) + goto error; + +@@ -3162,6 +3226,7 @@ int kmem_cache_alloc_bulk(struct kmem_ca + } + c->tid = next_tid(c->tid); + local_irq_enable(); ++ free_delayed(&to_free); + + /* Clear memory outside IRQ disabled fastpath loop */ + if (unlikely(flags & __GFP_ZERO)) { +@@ -3309,7 +3374,7 @@ static void + init_kmem_cache_node(struct kmem_cache_node *n) + { + n->nr_partial = 0; +- spin_lock_init(&n->list_lock); ++ raw_spin_lock_init(&n->list_lock); + INIT_LIST_HEAD(&n->partial); + #ifdef CONFIG_SLUB_DEBUG + atomic_long_set(&n->nr_slabs, 0); +@@ -3663,6 +3728,10 @@ static void list_slab_objects(struct kme + const char *text) + { + #ifdef CONFIG_SLUB_DEBUG ++#ifdef CONFIG_PREEMPT_RT_BASE ++ /* XXX move out of irq-off section */ ++ slab_err(s, page, text, s->name); ++#else + void *addr = page_address(page); + void *p; + unsigned long *map = kzalloc(BITS_TO_LONGS(page->objects) * +@@ -3683,6 +3752,7 @@ static void list_slab_objects(struct kme + slab_unlock(page); + kfree(map); + #endif ++#endif + } + + /* +@@ -3696,7 +3766,7 @@ static void free_partial(struct kmem_cac + struct page *page, *h; + + BUG_ON(irqs_disabled()); +- spin_lock_irq(&n->list_lock); ++ raw_spin_lock_irq(&n->list_lock); + list_for_each_entry_safe(page, h, &n->partial, lru) { + if (!page->inuse) { + remove_partial(n, page); +@@ -3706,7 +3776,7 @@ static void free_partial(struct kmem_cac + "Objects remaining in %s on __kmem_cache_shutdown()"); + } + } +- spin_unlock_irq(&n->list_lock); ++ raw_spin_unlock_irq(&n->list_lock); + + list_for_each_entry_safe(page, h, &discard, lru) + discard_slab(s, page); +@@ -3950,7 +4020,7 @@ int __kmem_cache_shrink(struct kmem_cach + for (i = 0; i < SHRINK_PROMOTE_MAX; i++) + INIT_LIST_HEAD(promote + i); + +- spin_lock_irqsave(&n->list_lock, flags); ++ raw_spin_lock_irqsave(&n->list_lock, flags); + + /* + * Build lists of slabs to discard or promote. +@@ -3981,7 +4051,7 @@ int __kmem_cache_shrink(struct kmem_cach + for (i = SHRINK_PROMOTE_MAX - 1; i >= 0; i--) + list_splice(promote + i, &n->partial); + +- spin_unlock_irqrestore(&n->list_lock, flags); ++ raw_spin_unlock_irqrestore(&n->list_lock, flags); + + /* Release empty slabs */ + list_for_each_entry_safe(page, t, &discard, lru) +@@ -4194,6 +4264,12 @@ void __init kmem_cache_init(void) + { + static __initdata struct kmem_cache boot_kmem_cache, + boot_kmem_cache_node; ++ int cpu; ++ ++ for_each_possible_cpu(cpu) { ++ raw_spin_lock_init(&per_cpu(slub_free_list, cpu).lock); ++ INIT_LIST_HEAD(&per_cpu(slub_free_list, cpu).list); ++ } + + if (debug_guardpage_minorder()) + slub_max_order = 0; +@@ -4402,7 +4478,7 @@ static int validate_slab_node(struct kme + struct page *page; + unsigned long flags; + +- spin_lock_irqsave(&n->list_lock, flags); ++ raw_spin_lock_irqsave(&n->list_lock, flags); + + list_for_each_entry(page, &n->partial, lru) { + validate_slab_slab(s, page, map); +@@ -4424,7 +4500,7 @@ static int validate_slab_node(struct kme + s->name, count, atomic_long_read(&n->nr_slabs)); + + out: +- spin_unlock_irqrestore(&n->list_lock, flags); ++ raw_spin_unlock_irqrestore(&n->list_lock, flags); + return count; + } + +@@ -4612,12 +4688,12 @@ static int list_locations(struct kmem_ca + if (!atomic_long_read(&n->nr_slabs)) + continue; + +- spin_lock_irqsave(&n->list_lock, flags); ++ raw_spin_lock_irqsave(&n->list_lock, flags); + list_for_each_entry(page, &n->partial, lru) + process_slab(&t, s, page, alloc, map); + list_for_each_entry(page, &n->full, lru) + process_slab(&t, s, page, alloc, map); +- spin_unlock_irqrestore(&n->list_lock, flags); ++ raw_spin_unlock_irqrestore(&n->list_lock, flags); + } + + for (i = 0; i < t.count; i++) { diff --git a/patches/features/all/rt/mm-make-vmstat-rt-aware.patch b/patches/features/all/rt/mm-make-vmstat-rt-aware.patch new file mode 100644 index 00000000000..689e0fce93a --- /dev/null +++ b/patches/features/all/rt/mm-make-vmstat-rt-aware.patch @@ -0,0 +1,137 @@ +From: Ingo Molnar +Date: Fri, 3 Jul 2009 08:30:13 -0500 +Subject: mm/vmstat: Protect per cpu variables with preempt disable on RT +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Disable preemption on -RT for the vmstat code. On vanila the code runs in +IRQ-off regions while on -RT it is not. "preempt_disable" ensures that the +same ressources is not updated in parallel due to preemption. + +Signed-off-by: Ingo Molnar +Signed-off-by: Thomas Gleixner + +--- + include/linux/vmstat.h | 4 ++++ + mm/vmstat.c | 12 ++++++++++++ + 2 files changed, 16 insertions(+) + +--- a/include/linux/vmstat.h ++++ b/include/linux/vmstat.h +@@ -33,7 +33,9 @@ DECLARE_PER_CPU(struct vm_event_state, v + */ + static inline void __count_vm_event(enum vm_event_item item) + { ++ preempt_disable_rt(); + raw_cpu_inc(vm_event_states.event[item]); ++ preempt_enable_rt(); + } + + static inline void count_vm_event(enum vm_event_item item) +@@ -43,7 +45,9 @@ static inline void count_vm_event(enum v + + static inline void __count_vm_events(enum vm_event_item item, long delta) + { ++ preempt_disable_rt(); + raw_cpu_add(vm_event_states.event[item], delta); ++ preempt_enable_rt(); + } + + static inline void count_vm_events(enum vm_event_item item, long delta) +--- a/mm/vmstat.c ++++ b/mm/vmstat.c +@@ -249,6 +249,7 @@ void __mod_zone_page_state(struct zone * + long x; + long t; + ++ preempt_disable_rt(); + x = delta + __this_cpu_read(*p); + + t = __this_cpu_read(pcp->stat_threshold); +@@ -258,6 +259,7 @@ void __mod_zone_page_state(struct zone * + x = 0; + } + __this_cpu_write(*p, x); ++ preempt_enable_rt(); + } + EXPORT_SYMBOL(__mod_zone_page_state); + +@@ -269,6 +271,7 @@ void __mod_node_page_state(struct pglist + long x; + long t; + ++ preempt_disable_rt(); + x = delta + __this_cpu_read(*p); + + t = __this_cpu_read(pcp->stat_threshold); +@@ -278,6 +281,7 @@ void __mod_node_page_state(struct pglist + x = 0; + } + __this_cpu_write(*p, x); ++ preempt_enable_rt(); + } + EXPORT_SYMBOL(__mod_node_page_state); + +@@ -310,6 +314,7 @@ void __inc_zone_state(struct zone *zone, + s8 __percpu *p = pcp->vm_stat_diff + item; + s8 v, t; + ++ preempt_disable_rt(); + v = __this_cpu_inc_return(*p); + t = __this_cpu_read(pcp->stat_threshold); + if (unlikely(v > t)) { +@@ -318,6 +323,7 @@ void __inc_zone_state(struct zone *zone, + zone_page_state_add(v + overstep, zone, item); + __this_cpu_write(*p, -overstep); + } ++ preempt_enable_rt(); + } + + void __inc_node_state(struct pglist_data *pgdat, enum node_stat_item item) +@@ -326,6 +332,7 @@ void __inc_node_state(struct pglist_data + s8 __percpu *p = pcp->vm_node_stat_diff + item; + s8 v, t; + ++ preempt_disable_rt(); + v = __this_cpu_inc_return(*p); + t = __this_cpu_read(pcp->stat_threshold); + if (unlikely(v > t)) { +@@ -334,6 +341,7 @@ void __inc_node_state(struct pglist_data + node_page_state_add(v + overstep, pgdat, item); + __this_cpu_write(*p, -overstep); + } ++ preempt_enable_rt(); + } + + void __inc_zone_page_state(struct page *page, enum zone_stat_item item) +@@ -354,6 +362,7 @@ void __dec_zone_state(struct zone *zone, + s8 __percpu *p = pcp->vm_stat_diff + item; + s8 v, t; + ++ preempt_disable_rt(); + v = __this_cpu_dec_return(*p); + t = __this_cpu_read(pcp->stat_threshold); + if (unlikely(v < - t)) { +@@ -362,6 +371,7 @@ void __dec_zone_state(struct zone *zone, + zone_page_state_add(v - overstep, zone, item); + __this_cpu_write(*p, overstep); + } ++ preempt_enable_rt(); + } + + void __dec_node_state(struct pglist_data *pgdat, enum node_stat_item item) +@@ -370,6 +380,7 @@ void __dec_node_state(struct pglist_data + s8 __percpu *p = pcp->vm_node_stat_diff + item; + s8 v, t; + ++ preempt_disable_rt(); + v = __this_cpu_dec_return(*p); + t = __this_cpu_read(pcp->stat_threshold); + if (unlikely(v < - t)) { +@@ -378,6 +389,7 @@ void __dec_node_state(struct pglist_data + node_page_state_add(v - overstep, pgdat, item); + __this_cpu_write(*p, overstep); + } ++ preempt_enable_rt(); + } + + void __dec_zone_page_state(struct page *page, enum zone_stat_item item) diff --git a/patches/features/all/rt/mm-memcontrol-Don-t-call-schedule_work_on-in-preempt.patch b/patches/features/all/rt/mm-memcontrol-Don-t-call-schedule_work_on-in-preempt.patch new file mode 100644 index 00000000000..5a0b5db452b --- /dev/null +++ b/patches/features/all/rt/mm-memcontrol-Don-t-call-schedule_work_on-in-preempt.patch @@ -0,0 +1,69 @@ +From: Yang Shi +Subject: mm/memcontrol: Don't call schedule_work_on in preemption disabled context +Date: Wed, 30 Oct 2013 11:48:33 -0700 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +The following trace is triggered when running ltp oom test cases: + +BUG: sleeping function called from invalid context at kernel/rtmutex.c:659 +in_atomic(): 1, irqs_disabled(): 0, pid: 17188, name: oom03 +Preemption disabled at:[] mem_cgroup_reclaim+0x90/0xe0 + +CPU: 2 PID: 17188 Comm: oom03 Not tainted 3.10.10-rt3 #2 +Hardware name: Intel Corporation Calpella platform/MATXM-CORE-411-B, BIOS 4.6.3 08/18/2010 +ffff88007684d730 ffff880070df9b58 ffffffff8169918d ffff880070df9b70 +ffffffff8106db31 ffff88007688b4a0 ffff880070df9b88 ffffffff8169d9c0 +ffff88007688b4a0 ffff880070df9bc8 ffffffff81059da1 0000000170df9bb0 +Call Trace: +[] dump_stack+0x19/0x1b +[] __might_sleep+0xf1/0x170 +[] rt_spin_lock+0x20/0x50 +[] queue_work_on+0x61/0x100 +[] drain_all_stock+0xe1/0x1c0 +[] mem_cgroup_reclaim+0x90/0xe0 +[] __mem_cgroup_try_charge+0x41a/0xc40 +[] ? release_pages+0x1b1/0x1f0 +[] ? sched_exec+0x40/0xb0 +[] mem_cgroup_charge_common+0x37/0x70 +[] mem_cgroup_newpage_charge+0x26/0x30 +[] handle_pte_fault+0x618/0x840 +[] ? unpin_current_cpu+0x16/0x70 +[] ? migrate_enable+0xd4/0x200 +[] handle_mm_fault+0x145/0x1e0 +[] __do_page_fault+0x1a1/0x4c0 +[] ? preempt_schedule_irq+0x4b/0x70 +[] ? retint_kernel+0x37/0x40 +[] do_page_fault+0xe/0x10 +[] page_fault+0x22/0x30 + +So, to prevent schedule_work_on from being called in preempt disabled context, +replace the pair of get/put_cpu() to get/put_cpu_light(). + + +Signed-off-by: Yang Shi +Signed-off-by: Sebastian Andrzej Siewior +--- + + mm/memcontrol.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/mm/memcontrol.c ++++ b/mm/memcontrol.c +@@ -1831,7 +1831,7 @@ static void drain_all_stock(struct mem_c + * as well as workers from this path always operate on the local + * per-cpu data. CPU up doesn't touch memcg_stock at all. + */ +- curcpu = get_cpu(); ++ curcpu = get_cpu_light(); + for_each_online_cpu(cpu) { + struct memcg_stock_pcp *stock = &per_cpu(memcg_stock, cpu); + struct mem_cgroup *memcg; +@@ -1851,7 +1851,7 @@ static void drain_all_stock(struct mem_c + } + css_put(&memcg->css); + } +- put_cpu(); ++ put_cpu_light(); + mutex_unlock(&percpu_charge_mutex); + } + diff --git a/patches/features/all/rt/mm-memcontrol-do_not_disable_irq.patch b/patches/features/all/rt/mm-memcontrol-do_not_disable_irq.patch new file mode 100644 index 00000000000..df25a0e8d86 --- /dev/null +++ b/patches/features/all/rt/mm-memcontrol-do_not_disable_irq.patch @@ -0,0 +1,117 @@ +From: Sebastian Andrzej Siewior +Subject: mm/memcontrol: Replace local_irq_disable with local locks +Date: Wed, 28 Jan 2015 17:14:16 +0100 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +There are a few local_irq_disable() which then take sleeping locks. This +patch converts them local locks. + +Signed-off-by: Sebastian Andrzej Siewior +--- + mm/memcontrol.c | 24 ++++++++++++++++-------- + 1 file changed, 16 insertions(+), 8 deletions(-) + +--- a/mm/memcontrol.c ++++ b/mm/memcontrol.c +@@ -69,6 +69,7 @@ + #include + #include + #include "slab.h" ++#include + + #include + +@@ -94,6 +95,8 @@ int do_swap_account __read_mostly; + #define do_swap_account 0 + #endif + ++static DEFINE_LOCAL_IRQ_LOCK(event_lock); ++ + /* Whether legacy memory+swap accounting is active */ + static bool do_memsw_account(void) + { +@@ -4621,12 +4624,12 @@ static int mem_cgroup_move_account(struc + + ret = 0; + +- local_irq_disable(); ++ local_lock_irq(event_lock); + mem_cgroup_charge_statistics(to, page, compound, nr_pages); + memcg_check_events(to, page); + mem_cgroup_charge_statistics(from, page, compound, -nr_pages); + memcg_check_events(from, page); +- local_irq_enable(); ++ local_unlock_irq(event_lock); + out_unlock: + unlock_page(page); + out: +@@ -5569,10 +5572,10 @@ void mem_cgroup_commit_charge(struct pag + + commit_charge(page, memcg, lrucare); + +- local_irq_disable(); ++ local_lock_irq(event_lock); + mem_cgroup_charge_statistics(memcg, page, compound, nr_pages); + memcg_check_events(memcg, page); +- local_irq_enable(); ++ local_unlock_irq(event_lock); + + if (do_memsw_account() && PageSwapCache(page)) { + swp_entry_t entry = { .val = page_private(page) }; +@@ -5641,7 +5644,7 @@ static void uncharge_batch(const struct + memcg_oom_recover(ug->memcg); + } + +- local_irq_save(flags); ++ local_lock_irqsave(event_lock, flags); + __this_cpu_sub(ug->memcg->stat->count[MEMCG_RSS], ug->nr_anon); + __this_cpu_sub(ug->memcg->stat->count[MEMCG_CACHE], ug->nr_file); + __this_cpu_sub(ug->memcg->stat->count[MEMCG_RSS_HUGE], ug->nr_huge); +@@ -5649,7 +5652,7 @@ static void uncharge_batch(const struct + __this_cpu_add(ug->memcg->stat->events[PGPGOUT], ug->pgpgout); + __this_cpu_add(ug->memcg->stat->nr_page_events, nr_pages); + memcg_check_events(ug->memcg, ug->dummy_page); +- local_irq_restore(flags); ++ local_unlock_irqrestore(event_lock, flags); + + if (!mem_cgroup_is_root(ug->memcg)) + css_put_many(&ug->memcg->css, nr_pages); +@@ -5812,10 +5815,10 @@ void mem_cgroup_migrate(struct page *old + + commit_charge(newpage, memcg, false); + +- local_irq_save(flags); ++ local_lock_irqsave(event_lock, flags); + mem_cgroup_charge_statistics(memcg, newpage, compound, nr_pages); + memcg_check_events(memcg, newpage); +- local_irq_restore(flags); ++ local_unlock_irqrestore(event_lock, flags); + } + + DEFINE_STATIC_KEY_FALSE(memcg_sockets_enabled_key); +@@ -5993,6 +5996,7 @@ void mem_cgroup_swapout(struct page *pag + struct mem_cgroup *memcg, *swap_memcg; + unsigned int nr_entries; + unsigned short oldid; ++ unsigned long flags; + + VM_BUG_ON_PAGE(PageLRU(page), page); + VM_BUG_ON_PAGE(page_count(page), page); +@@ -6038,13 +6042,17 @@ void mem_cgroup_swapout(struct page *pag + * important here to have the interrupts disabled because it is the + * only synchronisation we have for udpating the per-CPU variables. + */ ++ local_lock_irqsave(event_lock, flags); ++#ifndef CONFIG_PREEMPT_RT_BASE + VM_BUG_ON(!irqs_disabled()); ++#endif + mem_cgroup_charge_statistics(memcg, page, PageTransHuge(page), + -nr_entries); + memcg_check_events(memcg, page); + + if (!mem_cgroup_is_root(memcg)) + css_put_many(&memcg->css, nr_entries); ++ local_unlock_irqrestore(event_lock, flags); + } + + /** diff --git a/patches/features/all/rt/mm-page-alloc-use-local-lock-on-target-cpu.patch b/patches/features/all/rt/mm-page-alloc-use-local-lock-on-target-cpu.patch new file mode 100644 index 00000000000..49c859967e2 --- /dev/null +++ b/patches/features/all/rt/mm-page-alloc-use-local-lock-on-target-cpu.patch @@ -0,0 +1,28 @@ +Subject: mm: page_alloc: Use local_lock_on() instead of plain spinlock +From: Thomas Gleixner +Date: Thu, 27 Sep 2012 11:11:46 +0200 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +The plain spinlock while sufficient does not update the local_lock +internals. Use a proper local_lock function instead to ease debugging. + +Signed-off-by: Thomas Gleixner + +--- + mm/page_alloc.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/mm/page_alloc.c ++++ b/mm/page_alloc.c +@@ -292,9 +292,9 @@ static DEFINE_LOCAL_IRQ_LOCK(pa_lock); + + #ifdef CONFIG_PREEMPT_RT_BASE + # define cpu_lock_irqsave(cpu, flags) \ +- spin_lock_irqsave(&per_cpu(pa_lock, cpu).lock, flags) ++ local_lock_irqsave_on(pa_lock, flags, cpu) + # define cpu_unlock_irqrestore(cpu, flags) \ +- spin_unlock_irqrestore(&per_cpu(pa_lock, cpu).lock, flags) ++ local_unlock_irqrestore_on(pa_lock, flags, cpu) + #else + # define cpu_lock_irqsave(cpu, flags) local_irq_save(flags) + # define cpu_unlock_irqrestore(cpu, flags) local_irq_restore(flags) diff --git a/patches/features/all/rt/mm-page_alloc-reduce-lock-sections-further.patch b/patches/features/all/rt/mm-page_alloc-reduce-lock-sections-further.patch new file mode 100644 index 00000000000..e0a71896206 --- /dev/null +++ b/patches/features/all/rt/mm-page_alloc-reduce-lock-sections-further.patch @@ -0,0 +1,198 @@ +From: Peter Zijlstra +Date: Fri Jul 3 08:44:37 2009 -0500 +Subject: mm: page_alloc: Reduce lock sections further +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Split out the pages which are to be freed into a separate list and +call free_pages_bulk() outside of the percpu page allocator locks. + +Signed-off-by: Peter Zijlstra +Signed-off-by: Thomas Gleixner +--- + mm/page_alloc.c | 93 +++++++++++++++++++++++++++++++++++++++----------------- + 1 file changed, 65 insertions(+), 28 deletions(-) + +--- a/mm/page_alloc.c ++++ b/mm/page_alloc.c +@@ -1109,7 +1109,7 @@ static bool bulkfree_pcp_prepare(struct + #endif /* CONFIG_DEBUG_VM */ + + /* +- * Frees a number of pages from the PCP lists ++ * Frees a number of pages which have been collected from the pcp lists. + * Assumes all pages on list are in same zone, and of same order. + * count is the number of pages to free. + * +@@ -1120,15 +1120,53 @@ static bool bulkfree_pcp_prepare(struct + * pinned" detection logic. + */ + static void free_pcppages_bulk(struct zone *zone, int count, +- struct per_cpu_pages *pcp) ++ struct list_head *list) + { +- int migratetype = 0; +- int batch_free = 0; + bool isolated_pageblocks; ++ unsigned long flags; + +- spin_lock(&zone->lock); ++ spin_lock_irqsave(&zone->lock, flags); + isolated_pageblocks = has_isolate_pageblock(zone); + ++ while (!list_empty(list)) { ++ struct page *page; ++ int mt; /* migratetype of the to-be-freed page */ ++ ++ page = list_first_entry(list, struct page, lru); ++ /* must delete as __free_one_page list manipulates */ ++ list_del(&page->lru); ++ ++ mt = get_pcppage_migratetype(page); ++ /* MIGRATE_ISOLATE page should not go to pcplists */ ++ VM_BUG_ON_PAGE(is_migrate_isolate(mt), page); ++ /* Pageblock could have been isolated meanwhile */ ++ if (unlikely(isolated_pageblocks)) ++ mt = get_pageblock_migratetype(page); ++ ++ if (bulkfree_pcp_prepare(page)) ++ continue; ++ ++ __free_one_page(page, page_to_pfn(page), zone, 0, mt); ++ trace_mm_page_pcpu_drain(page, 0, mt); ++ count--; ++ } ++ WARN_ON(count != 0); ++ spin_unlock_irqrestore(&zone->lock, flags); ++} ++ ++/* ++ * Moves a number of pages from the PCP lists to free list which ++ * is freed outside of the locked region. ++ * ++ * Assumes all pages on list are in same zone, and of same order. ++ * count is the number of pages to free. ++ */ ++static void isolate_pcp_pages(int count, struct per_cpu_pages *src, ++ struct list_head *dst) ++{ ++ int migratetype = 0; ++ int batch_free = 0; ++ + while (count) { + struct page *page; + struct list_head *list; +@@ -1144,7 +1182,7 @@ static void free_pcppages_bulk(struct zo + batch_free++; + if (++migratetype == MIGRATE_PCPTYPES) + migratetype = 0; +- list = &pcp->lists[migratetype]; ++ list = &src->lists[migratetype]; + } while (list_empty(list)); + + /* This is the only non-empty list. Free them all. */ +@@ -1152,27 +1190,12 @@ static void free_pcppages_bulk(struct zo + batch_free = count; + + do { +- int mt; /* migratetype of the to-be-freed page */ +- + page = list_last_entry(list, struct page, lru); +- /* must delete as __free_one_page list manipulates */ + list_del(&page->lru); + +- mt = get_pcppage_migratetype(page); +- /* MIGRATE_ISOLATE page should not go to pcplists */ +- VM_BUG_ON_PAGE(is_migrate_isolate(mt), page); +- /* Pageblock could have been isolated meanwhile */ +- if (unlikely(isolated_pageblocks)) +- mt = get_pageblock_migratetype(page); +- +- if (bulkfree_pcp_prepare(page)) +- continue; +- +- __free_one_page(page, page_to_pfn(page), zone, 0, mt); +- trace_mm_page_pcpu_drain(page, 0, mt); ++ list_add(&page->lru, dst); + } while (--count && --batch_free && !list_empty(list)); + } +- spin_unlock(&zone->lock); + } + + static void free_one_page(struct zone *zone, +@@ -1180,13 +1203,15 @@ static void free_one_page(struct zone *z + unsigned int order, + int migratetype) + { +- spin_lock(&zone->lock); ++ unsigned long flags; ++ ++ spin_lock_irqsave(&zone->lock, flags); + if (unlikely(has_isolate_pageblock(zone) || + is_migrate_isolate(migratetype))) { + migratetype = get_pfnblock_migratetype(page, pfn); + } + __free_one_page(page, pfn, zone, order, migratetype); +- spin_unlock(&zone->lock); ++ spin_unlock_irqrestore(&zone->lock, flags); + } + + static void __meminit __init_single_page(struct page *page, unsigned long pfn, +@@ -2393,16 +2418,18 @@ static int rmqueue_bulk(struct zone *zon + void drain_zone_pages(struct zone *zone, struct per_cpu_pages *pcp) + { + unsigned long flags; ++ LIST_HEAD(dst); + int to_drain, batch; + + local_lock_irqsave(pa_lock, flags); + batch = READ_ONCE(pcp->batch); + to_drain = min(pcp->count, batch); + if (to_drain > 0) { +- free_pcppages_bulk(zone, to_drain, pcp); ++ isolate_pcp_pages(to_drain, pcp, &dst); + pcp->count -= to_drain; + } + local_unlock_irqrestore(pa_lock, flags); ++ free_pcppages_bulk(zone, to_drain, &dst); + } + #endif + +@@ -2418,16 +2445,21 @@ static void drain_pages_zone(unsigned in + unsigned long flags; + struct per_cpu_pageset *pset; + struct per_cpu_pages *pcp; ++ LIST_HEAD(dst); ++ int count; + + cpu_lock_irqsave(cpu, flags); + pset = per_cpu_ptr(zone->pageset, cpu); + + pcp = &pset->pcp; +- if (pcp->count) { +- free_pcppages_bulk(zone, pcp->count, pcp); ++ count = pcp->count; ++ if (count) { ++ isolate_pcp_pages(count, pcp, &dst); + pcp->count = 0; + } + cpu_unlock_irqrestore(cpu, flags); ++ if (count) ++ free_pcppages_bulk(zone, count, &dst); + } + + /* +@@ -2661,8 +2693,13 @@ void free_hot_cold_page(struct page *pag + pcp->count++; + if (pcp->count >= pcp->high) { + unsigned long batch = READ_ONCE(pcp->batch); +- free_pcppages_bulk(zone, batch, pcp); ++ LIST_HEAD(dst); ++ ++ isolate_pcp_pages(batch, pcp, &dst); + pcp->count -= batch; ++ local_unlock_irqrestore(pa_lock, flags); ++ free_pcppages_bulk(zone, batch, &dst); ++ return; + } + + out: diff --git a/patches/features/all/rt/mm-page_alloc-rt-friendly-per-cpu-pages.patch b/patches/features/all/rt/mm-page_alloc-rt-friendly-per-cpu-pages.patch new file mode 100644 index 00000000000..8fcee15a631 --- /dev/null +++ b/patches/features/all/rt/mm-page_alloc-rt-friendly-per-cpu-pages.patch @@ -0,0 +1,215 @@ +From: Ingo Molnar +Date: Fri, 3 Jul 2009 08:29:37 -0500 +Subject: mm: page_alloc: rt-friendly per-cpu pages +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +rt-friendly per-cpu pages: convert the irqs-off per-cpu locking +method into a preemptible, explicit-per-cpu-locks method. + +Contains fixes from: + Peter Zijlstra + Thomas Gleixner + +Signed-off-by: Ingo Molnar +Signed-off-by: Thomas Gleixner +--- + mm/page_alloc.c | 55 +++++++++++++++++++++++++++++++++++++++---------------- + 1 file changed, 39 insertions(+), 16 deletions(-) + +--- a/mm/page_alloc.c ++++ b/mm/page_alloc.c +@@ -62,6 +62,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -287,6 +288,18 @@ EXPORT_SYMBOL(nr_node_ids); + EXPORT_SYMBOL(nr_online_nodes); + #endif + ++static DEFINE_LOCAL_IRQ_LOCK(pa_lock); ++ ++#ifdef CONFIG_PREEMPT_RT_BASE ++# define cpu_lock_irqsave(cpu, flags) \ ++ spin_lock_irqsave(&per_cpu(pa_lock, cpu).lock, flags) ++# define cpu_unlock_irqrestore(cpu, flags) \ ++ spin_unlock_irqrestore(&per_cpu(pa_lock, cpu).lock, flags) ++#else ++# define cpu_lock_irqsave(cpu, flags) local_irq_save(flags) ++# define cpu_unlock_irqrestore(cpu, flags) local_irq_restore(flags) ++#endif ++ + int page_group_by_mobility_disabled __read_mostly; + + #ifdef CONFIG_DEFERRED_STRUCT_PAGE_INIT +@@ -1259,10 +1272,10 @@ static void __free_pages_ok(struct page + return; + + migratetype = get_pfnblock_migratetype(page, pfn); +- local_irq_save(flags); ++ local_lock_irqsave(pa_lock, flags); + __count_vm_events(PGFREE, 1 << order); + free_one_page(page_zone(page), page, pfn, order, migratetype); +- local_irq_restore(flags); ++ local_unlock_irqrestore(pa_lock, flags); + } + + static void __init __free_pages_boot_core(struct page *page, unsigned int order) +@@ -2382,14 +2395,14 @@ void drain_zone_pages(struct zone *zone, + unsigned long flags; + int to_drain, batch; + +- local_irq_save(flags); ++ local_lock_irqsave(pa_lock, flags); + batch = READ_ONCE(pcp->batch); + to_drain = min(pcp->count, batch); + if (to_drain > 0) { + free_pcppages_bulk(zone, to_drain, pcp); + pcp->count -= to_drain; + } +- local_irq_restore(flags); ++ local_unlock_irqrestore(pa_lock, flags); + } + #endif + +@@ -2406,7 +2419,7 @@ static void drain_pages_zone(unsigned in + struct per_cpu_pageset *pset; + struct per_cpu_pages *pcp; + +- local_irq_save(flags); ++ cpu_lock_irqsave(cpu, flags); + pset = per_cpu_ptr(zone->pageset, cpu); + + pcp = &pset->pcp; +@@ -2414,7 +2427,7 @@ static void drain_pages_zone(unsigned in + free_pcppages_bulk(zone, pcp->count, pcp); + pcp->count = 0; + } +- local_irq_restore(flags); ++ cpu_unlock_irqrestore(cpu, flags); + } + + /* +@@ -2449,6 +2462,7 @@ void drain_local_pages(struct zone *zone + drain_pages(cpu); + } + ++#ifndef CONFIG_PREEMPT_RT_BASE + static void drain_local_pages_wq(struct work_struct *work) + { + /* +@@ -2462,6 +2476,7 @@ static void drain_local_pages_wq(struct + drain_local_pages(NULL); + preempt_enable(); + } ++#endif + + /* + * Spill all the per-cpu pages from all CPUs back into the buddy allocator. +@@ -2528,7 +2543,14 @@ void drain_all_pages(struct zone *zone) + else + cpumask_clear_cpu(cpu, &cpus_with_pcps); + } +- ++#ifdef CONFIG_PREEMPT_RT_BASE ++ for_each_cpu(cpu, &cpus_with_pcps) { ++ if (zone) ++ drain_pages_zone(cpu, zone); ++ else ++ drain_pages(cpu); ++ } ++#else + for_each_cpu(cpu, &cpus_with_pcps) { + struct work_struct *work = per_cpu_ptr(&pcpu_drain, cpu); + INIT_WORK(work, drain_local_pages_wq); +@@ -2536,6 +2558,7 @@ void drain_all_pages(struct zone *zone) + } + for_each_cpu(cpu, &cpus_with_pcps) + flush_work(per_cpu_ptr(&pcpu_drain, cpu)); ++#endif + + mutex_unlock(&pcpu_drain_mutex); + } +@@ -2612,7 +2635,7 @@ void free_hot_cold_page(struct page *pag + + migratetype = get_pfnblock_migratetype(page, pfn); + set_pcppage_migratetype(page, migratetype); +- local_irq_save(flags); ++ local_lock_irqsave(pa_lock, flags); + __count_vm_event(PGFREE); + + /* +@@ -2643,7 +2666,7 @@ void free_hot_cold_page(struct page *pag + } + + out: +- local_irq_restore(flags); ++ local_unlock_irqrestore(pa_lock, flags); + } + + /* +@@ -2800,7 +2823,7 @@ static struct page *rmqueue_pcplist(stru + struct page *page; + unsigned long flags; + +- local_irq_save(flags); ++ local_lock_irqsave(pa_lock, flags); + pcp = &this_cpu_ptr(zone->pageset)->pcp; + list = &pcp->lists[migratetype]; + page = __rmqueue_pcplist(zone, migratetype, cold, pcp, list); +@@ -2808,7 +2831,7 @@ static struct page *rmqueue_pcplist(stru + __count_zid_vm_events(PGALLOC, page_zonenum(page), 1 << order); + zone_statistics(preferred_zone, zone); + } +- local_irq_restore(flags); ++ local_unlock_irqrestore(pa_lock, flags); + return page; + } + +@@ -2835,7 +2858,7 @@ struct page *rmqueue(struct zone *prefer + * allocate greater than order-1 page units with __GFP_NOFAIL. + */ + WARN_ON_ONCE((gfp_flags & __GFP_NOFAIL) && (order > 1)); +- spin_lock_irqsave(&zone->lock, flags); ++ local_spin_lock_irqsave(pa_lock, &zone->lock, flags); + + do { + page = NULL; +@@ -2855,14 +2878,14 @@ struct page *rmqueue(struct zone *prefer + + __count_zid_vm_events(PGALLOC, page_zonenum(page), 1 << order); + zone_statistics(preferred_zone, zone); +- local_irq_restore(flags); ++ local_unlock_irqrestore(pa_lock, flags); + + out: + VM_BUG_ON_PAGE(page && bad_range(zone, page), page); + return page; + + failed: +- local_irq_restore(flags); ++ local_unlock_irqrestore(pa_lock, flags); + return NULL; + } + +@@ -7707,7 +7730,7 @@ void zone_pcp_reset(struct zone *zone) + struct per_cpu_pageset *pset; + + /* avoid races with drain_pages() */ +- local_irq_save(flags); ++ local_lock_irqsave(pa_lock, flags); + if (zone->pageset != &boot_pageset) { + for_each_online_cpu(cpu) { + pset = per_cpu_ptr(zone->pageset, cpu); +@@ -7716,7 +7739,7 @@ void zone_pcp_reset(struct zone *zone) + free_percpu(zone->pageset); + zone->pageset = &boot_pageset; + } +- local_irq_restore(flags); ++ local_unlock_irqrestore(pa_lock, flags); + } + + #ifdef CONFIG_MEMORY_HOTREMOVE diff --git a/patches/features/all/rt/mm-perform-lru_add_drain_all-remotely.patch b/patches/features/all/rt/mm-perform-lru_add_drain_all-remotely.patch new file mode 100644 index 00000000000..95202d477ef --- /dev/null +++ b/patches/features/all/rt/mm-perform-lru_add_drain_all-remotely.patch @@ -0,0 +1,103 @@ +From: Luiz Capitulino +Date: Fri, 27 May 2016 15:03:28 +0200 +Subject: [PATCH] mm: perform lru_add_drain_all() remotely +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +lru_add_drain_all() works by scheduling lru_add_drain_cpu() to run +on all CPUs that have non-empty LRU pagevecs and then waiting for +the scheduled work to complete. However, workqueue threads may never +have the chance to run on a CPU that's running a SCHED_FIFO task. +This causes lru_add_drain_all() to block forever. + +This commit solves this problem by changing lru_add_drain_all() +to drain the LRU pagevecs of remote CPUs. This is done by grabbing +swapvec_lock and calling lru_add_drain_cpu(). + +PS: This is based on an idea and initial implementation by + Rik van Riel. + +Signed-off-by: Rik van Riel +Signed-off-by: Luiz Capitulino +Signed-off-by: Sebastian Andrzej Siewior +--- + mm/swap.c | 36 ++++++++++++++++++++++++++++++------ + 1 file changed, 30 insertions(+), 6 deletions(-) + +--- a/mm/swap.c ++++ b/mm/swap.c +@@ -617,9 +617,15 @@ void lru_add_drain_cpu(int cpu) + unsigned long flags; + + /* No harm done if a racing interrupt already did this */ ++#ifdef CONFIG_PREEMPT_RT_BASE ++ local_lock_irqsave_on(rotate_lock, flags, cpu); ++ pagevec_move_tail(pvec); ++ local_unlock_irqrestore_on(rotate_lock, flags, cpu); ++#else + local_lock_irqsave(rotate_lock, flags); + pagevec_move_tail(pvec); + local_unlock_irqrestore(rotate_lock, flags); ++#endif + } + + pvec = &per_cpu(lru_deactivate_file_pvecs, cpu); +@@ -687,6 +693,16 @@ void lru_add_drain(void) + local_unlock_cpu(swapvec_lock); + } + ++#ifdef CONFIG_PREEMPT_RT_BASE ++static inline void remote_lru_add_drain(int cpu, struct cpumask *has_work) ++{ ++ local_lock_on(swapvec_lock, cpu); ++ lru_add_drain_cpu(cpu); ++ local_unlock_on(swapvec_lock, cpu); ++} ++ ++#else ++ + static void lru_add_drain_per_cpu(struct work_struct *dummy) + { + lru_add_drain(); +@@ -694,6 +710,16 @@ static void lru_add_drain_per_cpu(struct + + static DEFINE_PER_CPU(struct work_struct, lru_add_drain_work); + ++static inline void remote_lru_add_drain(int cpu, struct cpumask *has_work) ++{ ++ struct work_struct *work = &per_cpu(lru_add_drain_work, cpu); ++ ++ INIT_WORK(work, lru_add_drain_per_cpu); ++ queue_work_on(cpu, mm_percpu_wq, work); ++ cpumask_set_cpu(cpu, has_work); ++} ++#endif ++ + void lru_add_drain_all_cpuslocked(void) + { + static DEFINE_MUTEX(lock); +@@ -711,21 +737,19 @@ void lru_add_drain_all_cpuslocked(void) + cpumask_clear(&has_work); + + for_each_online_cpu(cpu) { +- struct work_struct *work = &per_cpu(lru_add_drain_work, cpu); + + if (pagevec_count(&per_cpu(lru_add_pvec, cpu)) || + pagevec_count(&per_cpu(lru_rotate_pvecs, cpu)) || + pagevec_count(&per_cpu(lru_deactivate_file_pvecs, cpu)) || + pagevec_count(&per_cpu(lru_lazyfree_pvecs, cpu)) || +- need_activate_page_drain(cpu)) { +- INIT_WORK(work, lru_add_drain_per_cpu); +- queue_work_on(cpu, mm_percpu_wq, work); +- cpumask_set_cpu(cpu, &has_work); +- } ++ need_activate_page_drain(cpu)) ++ remote_lru_add_drain(cpu, &has_work); + } + ++#ifndef CONFIG_PREEMPT_RT_BASE + for_each_cpu(cpu, &has_work) + flush_work(&per_cpu(lru_add_drain_work, cpu)); ++#endif + + mutex_unlock(&lock); + } diff --git a/patches/features/all/rt/mm-protect-activate-switch-mm.patch b/patches/features/all/rt/mm-protect-activate-switch-mm.patch new file mode 100644 index 00000000000..f6d3d3eeb3a --- /dev/null +++ b/patches/features/all/rt/mm-protect-activate-switch-mm.patch @@ -0,0 +1,72 @@ +From: Yong Zhang +Date: Tue, 15 May 2012 13:53:56 +0800 +Subject: mm: Protect activate_mm() by preempt_[disable&enable]_rt() +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +User preempt_*_rt instead of local_irq_*_rt or otherwise there will be +warning on ARM like below: + +WARNING: at build/linux/kernel/smp.c:459 smp_call_function_many+0x98/0x264() +Modules linked in: +[] (unwind_backtrace+0x0/0xe4) from [] (warn_slowpath_common+0x4c/0x64) +[] (warn_slowpath_common+0x4c/0x64) from [] (warn_slowpath_null+0x18/0x1c) +[] (warn_slowpath_null+0x18/0x1c) from [](smp_call_function_many+0x98/0x264) +[] (smp_call_function_many+0x98/0x264) from [] (smp_call_function+0x44/0x6c) +[] (smp_call_function+0x44/0x6c) from [] (__new_context+0xbc/0x124) +[] (__new_context+0xbc/0x124) from [] (flush_old_exec+0x460/0x5e4) +[] (flush_old_exec+0x460/0x5e4) from [] (load_elf_binary+0x2e0/0x11ac) +[] (load_elf_binary+0x2e0/0x11ac) from [] (search_binary_handler+0x94/0x2a4) +[] (search_binary_handler+0x94/0x2a4) from [] (do_execve+0x254/0x364) +[] (do_execve+0x254/0x364) from [] (sys_execve+0x34/0x54) +[] (sys_execve+0x34/0x54) from [] (ret_fast_syscall+0x0/0x30) +---[ end trace 0000000000000002 ]--- + +The reason is that ARM need irq enabled when doing activate_mm(). +According to mm-protect-activate-switch-mm.patch, actually +preempt_[disable|enable]_rt() is sufficient. + +Inspired-by: Steven Rostedt +Signed-off-by: Yong Zhang +Cc: Steven Rostedt +Link: http://lkml.kernel.org/r/1337061236-1766-1-git-send-email-yong.zhang0@gmail.com +Signed-off-by: Thomas Gleixner +--- + fs/exec.c | 2 ++ + mm/mmu_context.c | 2 ++ + 2 files changed, 4 insertions(+) + +--- a/fs/exec.c ++++ b/fs/exec.c +@@ -1024,12 +1024,14 @@ static int exec_mmap(struct mm_struct *m + } + } + task_lock(tsk); ++ preempt_disable_rt(); + active_mm = tsk->active_mm; + tsk->mm = mm; + tsk->active_mm = mm; + activate_mm(active_mm, mm); + tsk->mm->vmacache_seqnum = 0; + vmacache_flush(tsk); ++ preempt_enable_rt(); + task_unlock(tsk); + if (old_mm) { + up_read(&old_mm->mmap_sem); +--- a/mm/mmu_context.c ++++ b/mm/mmu_context.c +@@ -25,6 +25,7 @@ void use_mm(struct mm_struct *mm) + struct task_struct *tsk = current; + + task_lock(tsk); ++ preempt_disable_rt(); + active_mm = tsk->active_mm; + if (active_mm != mm) { + mmgrab(mm); +@@ -32,6 +33,7 @@ void use_mm(struct mm_struct *mm) + } + tsk->mm = mm; + switch_mm(active_mm, mm, tsk); ++ preempt_enable_rt(); + task_unlock(tsk); + #ifdef finish_arch_post_lock_switch + finish_arch_post_lock_switch(); diff --git a/patches/features/all/rt/mm-rt-kmap-atomic-scheduling.patch b/patches/features/all/rt/mm-rt-kmap-atomic-scheduling.patch new file mode 100644 index 00000000000..22e845376d3 --- /dev/null +++ b/patches/features/all/rt/mm-rt-kmap-atomic-scheduling.patch @@ -0,0 +1,289 @@ +Subject: mm, rt: kmap_atomic scheduling +From: Peter Zijlstra +Date: Thu, 28 Jul 2011 10:43:51 +0200 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +In fact, with migrate_disable() existing one could play games with +kmap_atomic. You could save/restore the kmap_atomic slots on context +switch (if there are any in use of course), this should be esp easy now +that we have a kmap_atomic stack. + +Something like the below.. it wants replacing all the preempt_disable() +stuff with pagefault_disable() && migrate_disable() of course, but then +you can flip kmaps around like below. + +Signed-off-by: Peter Zijlstra +[dvhart@linux.intel.com: build fix] +Link: http://lkml.kernel.org/r/1311842631.5890.208.camel@twins + +[tglx@linutronix.de: Get rid of the per cpu variable and store the idx + and the pte content right away in the task struct. + Shortens the context switch code. ] +--- + arch/x86/kernel/process_32.c | 32 ++++++++++++++++++++++++++++++++ + arch/x86/mm/highmem_32.c | 13 ++++++++++--- + arch/x86/mm/iomap_32.c | 9 ++++++++- + include/linux/highmem.h | 27 +++++++++++++++++++++++---- + include/linux/sched.h | 7 +++++++ + include/linux/uaccess.h | 2 ++ + mm/highmem.c | 6 ++++-- + 7 files changed, 86 insertions(+), 10 deletions(-) + +--- a/arch/x86/kernel/process_32.c ++++ b/arch/x86/kernel/process_32.c +@@ -38,6 +38,7 @@ + #include + #include + #include ++#include + + #include + #include +@@ -198,6 +199,35 @@ start_thread(struct pt_regs *regs, unsig + } + EXPORT_SYMBOL_GPL(start_thread); + ++#ifdef CONFIG_PREEMPT_RT_FULL ++static void switch_kmaps(struct task_struct *prev_p, struct task_struct *next_p) ++{ ++ int i; ++ ++ /* ++ * Clear @prev's kmap_atomic mappings ++ */ ++ for (i = 0; i < prev_p->kmap_idx; i++) { ++ int idx = i + KM_TYPE_NR * smp_processor_id(); ++ pte_t *ptep = kmap_pte - idx; ++ ++ kpte_clear_flush(ptep, __fix_to_virt(FIX_KMAP_BEGIN + idx)); ++ } ++ /* ++ * Restore @next_p's kmap_atomic mappings ++ */ ++ for (i = 0; i < next_p->kmap_idx; i++) { ++ int idx = i + KM_TYPE_NR * smp_processor_id(); ++ ++ if (!pte_none(next_p->kmap_pte[i])) ++ set_pte(kmap_pte - idx, next_p->kmap_pte[i]); ++ } ++} ++#else ++static inline void ++switch_kmaps(struct task_struct *prev_p, struct task_struct *next_p) { } ++#endif ++ + + /* + * switch_to(x,y) should switch tasks from x to y. +@@ -273,6 +303,8 @@ EXPORT_SYMBOL_GPL(start_thread); + task_thread_info(next_p)->flags & _TIF_WORK_CTXSW_NEXT)) + __switch_to_xtra(prev_p, next_p, tss); + ++ switch_kmaps(prev_p, next_p); ++ + /* + * Leave lazy mode, flushing any hypercalls made here. + * This must be done before restoring TLS segments so +--- a/arch/x86/mm/highmem_32.c ++++ b/arch/x86/mm/highmem_32.c +@@ -32,10 +32,11 @@ EXPORT_SYMBOL(kunmap); + */ + void *kmap_atomic_prot(struct page *page, pgprot_t prot) + { ++ pte_t pte = mk_pte(page, prot); + unsigned long vaddr; + int idx, type; + +- preempt_disable(); ++ preempt_disable_nort(); + pagefault_disable(); + + if (!PageHighMem(page)) +@@ -45,7 +46,10 @@ void *kmap_atomic_prot(struct page *page + idx = type + KM_TYPE_NR*smp_processor_id(); + vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx); + BUG_ON(!pte_none(*(kmap_pte-idx))); +- set_pte(kmap_pte-idx, mk_pte(page, prot)); ++#ifdef CONFIG_PREEMPT_RT_FULL ++ current->kmap_pte[type] = pte; ++#endif ++ set_pte(kmap_pte-idx, pte); + arch_flush_lazy_mmu_mode(); + + return (void *)vaddr; +@@ -88,6 +92,9 @@ void __kunmap_atomic(void *kvaddr) + * is a bad idea also, in case the page changes cacheability + * attributes or becomes a protected page in a hypervisor. + */ ++#ifdef CONFIG_PREEMPT_RT_FULL ++ current->kmap_pte[type] = __pte(0); ++#endif + kpte_clear_flush(kmap_pte-idx, vaddr); + kmap_atomic_idx_pop(); + arch_flush_lazy_mmu_mode(); +@@ -100,7 +107,7 @@ void __kunmap_atomic(void *kvaddr) + #endif + + pagefault_enable(); +- preempt_enable(); ++ preempt_enable_nort(); + } + EXPORT_SYMBOL(__kunmap_atomic); + +--- a/arch/x86/mm/iomap_32.c ++++ b/arch/x86/mm/iomap_32.c +@@ -56,6 +56,7 @@ EXPORT_SYMBOL_GPL(iomap_free); + + void *kmap_atomic_prot_pfn(unsigned long pfn, pgprot_t prot) + { ++ pte_t pte = pfn_pte(pfn, prot); + unsigned long vaddr; + int idx, type; + +@@ -65,7 +66,10 @@ void *kmap_atomic_prot_pfn(unsigned long + type = kmap_atomic_idx_push(); + idx = type + KM_TYPE_NR * smp_processor_id(); + vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx); +- set_pte(kmap_pte - idx, pfn_pte(pfn, prot)); ++#ifdef CONFIG_PREEMPT_RT_FULL ++ current->kmap_pte[type] = pte; ++#endif ++ set_pte(kmap_pte - idx, pte); + arch_flush_lazy_mmu_mode(); + + return (void *)vaddr; +@@ -113,6 +117,9 @@ iounmap_atomic(void __iomem *kvaddr) + * is a bad idea also, in case the page changes cacheability + * attributes or becomes a protected page in a hypervisor. + */ ++#ifdef CONFIG_PREEMPT_RT_FULL ++ current->kmap_pte[type] = __pte(0); ++#endif + kpte_clear_flush(kmap_pte-idx, vaddr); + kmap_atomic_idx_pop(); + } +--- a/include/linux/highmem.h ++++ b/include/linux/highmem.h +@@ -87,32 +87,51 @@ static inline void __kunmap_atomic(void + + #if defined(CONFIG_HIGHMEM) || defined(CONFIG_X86_32) + ++#ifndef CONFIG_PREEMPT_RT_FULL + DECLARE_PER_CPU(int, __kmap_atomic_idx); ++#endif + + static inline int kmap_atomic_idx_push(void) + { ++#ifndef CONFIG_PREEMPT_RT_FULL + int idx = __this_cpu_inc_return(__kmap_atomic_idx) - 1; + +-#ifdef CONFIG_DEBUG_HIGHMEM ++# ifdef CONFIG_DEBUG_HIGHMEM + WARN_ON_ONCE(in_irq() && !irqs_disabled()); + BUG_ON(idx >= KM_TYPE_NR); +-#endif ++# endif + return idx; ++#else ++ current->kmap_idx++; ++ BUG_ON(current->kmap_idx > KM_TYPE_NR); ++ return current->kmap_idx - 1; ++#endif + } + + static inline int kmap_atomic_idx(void) + { ++#ifndef CONFIG_PREEMPT_RT_FULL + return __this_cpu_read(__kmap_atomic_idx) - 1; ++#else ++ return current->kmap_idx - 1; ++#endif + } + + static inline void kmap_atomic_idx_pop(void) + { +-#ifdef CONFIG_DEBUG_HIGHMEM ++#ifndef CONFIG_PREEMPT_RT_FULL ++# ifdef CONFIG_DEBUG_HIGHMEM + int idx = __this_cpu_dec_return(__kmap_atomic_idx); + + BUG_ON(idx < 0); +-#else ++# else + __this_cpu_dec(__kmap_atomic_idx); ++# endif ++#else ++ current->kmap_idx--; ++# ifdef CONFIG_DEBUG_HIGHMEM ++ BUG_ON(current->kmap_idx < 0); ++# endif + #endif + } + +--- a/include/linux/sched.h ++++ b/include/linux/sched.h +@@ -27,6 +27,7 @@ + #include + #include + #include ++#include + + /* task_struct member predeclarations (sorted alphabetically): */ + struct audit_context; +@@ -1104,6 +1105,12 @@ struct task_struct { + int softirq_nestcnt; + unsigned int softirqs_raised; + #endif ++#ifdef CONFIG_PREEMPT_RT_FULL ++# if defined CONFIG_HIGHMEM || defined CONFIG_X86_32 ++ int kmap_idx; ++ pte_t kmap_pte[KM_TYPE_NR]; ++# endif ++#endif + #ifdef CONFIG_DEBUG_ATOMIC_SLEEP + unsigned long task_state_change; + #endif +--- a/include/linux/uaccess.h ++++ b/include/linux/uaccess.h +@@ -185,6 +185,7 @@ static __always_inline void pagefault_di + */ + static inline void pagefault_disable(void) + { ++ migrate_disable(); + pagefault_disabled_inc(); + /* + * make sure to have issued the store before a pagefault +@@ -201,6 +202,7 @@ static inline void pagefault_enable(void + */ + barrier(); + pagefault_disabled_dec(); ++ migrate_enable(); + } + + /* +--- a/mm/highmem.c ++++ b/mm/highmem.c +@@ -30,10 +30,11 @@ + #include + #include + +- ++#ifndef CONFIG_PREEMPT_RT_FULL + #if defined(CONFIG_HIGHMEM) || defined(CONFIG_X86_32) + DEFINE_PER_CPU(int, __kmap_atomic_idx); + #endif ++#endif + + /* + * Virtual_count is not a pure "count". +@@ -108,8 +109,9 @@ static inline wait_queue_head_t *get_pkm + unsigned long totalhigh_pages __read_mostly; + EXPORT_SYMBOL(totalhigh_pages); + +- ++#ifndef CONFIG_PREEMPT_RT_FULL + EXPORT_PER_CPU_SYMBOL(__kmap_atomic_idx); ++#endif + + unsigned int nr_free_highpages (void) + { diff --git a/patches/features/all/rt/mm-scatterlist-dont-disable-irqs-on-RT.patch b/patches/features/all/rt/mm-scatterlist-dont-disable-irqs-on-RT.patch new file mode 100644 index 00000000000..68e0e1e8461 --- /dev/null +++ b/patches/features/all/rt/mm-scatterlist-dont-disable-irqs-on-RT.patch @@ -0,0 +1,24 @@ +From: Thomas Gleixner +Date: Fri, 3 Jul 2009 08:44:34 -0500 +Subject: mm/scatterlist: Do not disable irqs on RT +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +For -RT it is enough to keep pagefault disabled (which is currently handled by +kmap_atomic()). + +Signed-off-by: Thomas Gleixner +--- + lib/scatterlist.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/lib/scatterlist.c ++++ b/lib/scatterlist.c +@@ -620,7 +620,7 @@ void sg_miter_stop(struct sg_mapping_ite + flush_kernel_dcache_page(miter->page); + + if (miter->__flags & SG_MITER_ATOMIC) { +- WARN_ON_ONCE(preemptible()); ++ WARN_ON_ONCE(!pagefault_disabled()); + kunmap_atomic(miter->addr); + } else + kunmap(miter->page); diff --git a/patches/features/all/rt/mm-slub-close-possible-memory-leak-in-kmem_cache_all.patch b/patches/features/all/rt/mm-slub-close-possible-memory-leak-in-kmem_cache_all.patch new file mode 100644 index 00000000000..bb49f2269e6 --- /dev/null +++ b/patches/features/all/rt/mm-slub-close-possible-memory-leak-in-kmem_cache_all.patch @@ -0,0 +1,26 @@ +From: Sebastian Andrzej Siewior +Date: Wed, 13 Dec 2017 12:44:14 +0100 +Subject: [PATCH] mm/slub: close possible memory-leak in + kmem_cache_alloc_bulk() +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Under certain circumstances we could leak elements which were moved to +the local "to_free" list. The damage is limited since I can't find +any users here. + +Cc: stable-rt@vger.kernel.org +Signed-off-by: Sebastian Andrzej Siewior +--- + mm/slub.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/mm/slub.c ++++ b/mm/slub.c +@@ -3241,6 +3241,7 @@ int kmem_cache_alloc_bulk(struct kmem_ca + return i; + error: + local_irq_enable(); ++ free_delayed(&to_free); + slab_post_alloc_hook(s, flags, i, p); + __kmem_cache_free_bulk(s, i, p); + return 0; diff --git a/patches/features/all/rt/mm-vmalloc-use-get-cpu-light.patch b/patches/features/all/rt/mm-vmalloc-use-get-cpu-light.patch new file mode 100644 index 00000000000..c9d30f356ad --- /dev/null +++ b/patches/features/all/rt/mm-vmalloc-use-get-cpu-light.patch @@ -0,0 +1,66 @@ +Subject: mm/vmalloc: Another preempt disable region which sucks +From: Thomas Gleixner +Date: Tue, 12 Jul 2011 11:39:36 +0200 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Avoid the preempt disable version of get_cpu_var(). The inner-lock should +provide enough serialisation. + +Signed-off-by: Thomas Gleixner +--- + mm/vmalloc.c | 13 ++++++++----- + 1 file changed, 8 insertions(+), 5 deletions(-) + +--- a/mm/vmalloc.c ++++ b/mm/vmalloc.c +@@ -865,7 +865,7 @@ static void *new_vmap_block(unsigned int + struct vmap_block *vb; + struct vmap_area *va; + unsigned long vb_idx; +- int node, err; ++ int node, err, cpu; + void *vaddr; + + node = numa_node_id(); +@@ -908,11 +908,12 @@ static void *new_vmap_block(unsigned int + BUG_ON(err); + radix_tree_preload_end(); + +- vbq = &get_cpu_var(vmap_block_queue); ++ cpu = get_cpu_light(); ++ vbq = this_cpu_ptr(&vmap_block_queue); + spin_lock(&vbq->lock); + list_add_tail_rcu(&vb->free_list, &vbq->free); + spin_unlock(&vbq->lock); +- put_cpu_var(vmap_block_queue); ++ put_cpu_light(); + + return vaddr; + } +@@ -981,6 +982,7 @@ static void *vb_alloc(unsigned long size + struct vmap_block *vb; + void *vaddr = NULL; + unsigned int order; ++ int cpu; + + BUG_ON(offset_in_page(size)); + BUG_ON(size > PAGE_SIZE*VMAP_MAX_ALLOC); +@@ -995,7 +997,8 @@ static void *vb_alloc(unsigned long size + order = get_order(size); + + rcu_read_lock(); +- vbq = &get_cpu_var(vmap_block_queue); ++ cpu = get_cpu_light(); ++ vbq = this_cpu_ptr(&vmap_block_queue); + list_for_each_entry_rcu(vb, &vbq->free, free_list) { + unsigned long pages_off; + +@@ -1018,7 +1021,7 @@ static void *vb_alloc(unsigned long size + break; + } + +- put_cpu_var(vmap_block_queue); ++ put_cpu_light(); + rcu_read_unlock(); + + /* Allocate new block if nothing was found */ diff --git a/patches/features/all/rt/mm-workingset-do-not-protect-workingset_shadow_nodes.patch b/patches/features/all/rt/mm-workingset-do-not-protect-workingset_shadow_nodes.patch new file mode 100644 index 00000000000..566e044bffb --- /dev/null +++ b/patches/features/all/rt/mm-workingset-do-not-protect-workingset_shadow_nodes.patch @@ -0,0 +1,184 @@ +From: Sebastian Andrzej Siewior +Date: Thu, 29 Jan 2015 17:19:44 +0100 +Subject: mm/workingset: Do not protect workingset_shadow_nodes with irq off +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +workingset_shadow_nodes is protected by local_irq_disable(). Some users +use spin_lock_irq(). +Replace the irq/on with a local_lock(). Rename workingset_shadow_nodes +so I catch users of it which will be introduced later. + +Signed-off-by: Sebastian Andrzej Siewior +--- + include/linux/swap.h | 4 +++- + mm/filemap.c | 9 +++++++-- + mm/truncate.c | 4 +++- + mm/workingset.c | 31 ++++++++++++++++--------------- + 4 files changed, 29 insertions(+), 19 deletions(-) + +--- a/include/linux/swap.h ++++ b/include/linux/swap.h +@@ -12,6 +12,7 @@ + #include + #include + #include ++#include + #include + + struct notifier_block; +@@ -297,7 +298,8 @@ struct vma_swap_readahead { + void *workingset_eviction(struct address_space *mapping, struct page *page); + bool workingset_refault(void *shadow); + void workingset_activation(struct page *page); +-void workingset_update_node(struct radix_tree_node *node, void *private); ++void __workingset_update_node(struct radix_tree_node *node, void *private); ++DECLARE_LOCAL_IRQ_LOCK(shadow_nodes_lock); + + /* linux/mm/page_alloc.c */ + extern unsigned long totalram_pages; +--- a/mm/filemap.c ++++ b/mm/filemap.c +@@ -110,6 +110,7 @@ + * ->i_mmap_rwsem + * ->tasklist_lock (memory_failure, collect_procs_ao) + */ ++DECLARE_LOCAL_IRQ_LOCK(shadow_nodes_lock); + + static int page_cache_tree_insert(struct address_space *mapping, + struct page *page, void **shadowp) +@@ -133,8 +134,10 @@ static int page_cache_tree_insert(struct + if (shadowp) + *shadowp = p; + } ++ local_lock(shadow_nodes_lock); + __radix_tree_replace(&mapping->page_tree, node, slot, page, +- workingset_update_node, mapping); ++ __workingset_update_node, mapping); ++ local_unlock(shadow_nodes_lock); + mapping->nrpages++; + return 0; + } +@@ -151,6 +154,7 @@ static void page_cache_tree_delete(struc + VM_BUG_ON_PAGE(PageTail(page), page); + VM_BUG_ON_PAGE(nr != 1 && shadow, page); + ++ local_lock(shadow_nodes_lock); + for (i = 0; i < nr; i++) { + struct radix_tree_node *node; + void **slot; +@@ -162,8 +166,9 @@ static void page_cache_tree_delete(struc + + radix_tree_clear_tags(&mapping->page_tree, node, slot); + __radix_tree_replace(&mapping->page_tree, node, slot, shadow, +- workingset_update_node, mapping); ++ __workingset_update_node, mapping); + } ++ local_unlock(shadow_nodes_lock); + + if (shadow) { + mapping->nrexceptional += nr; +--- a/mm/truncate.c ++++ b/mm/truncate.c +@@ -41,8 +41,10 @@ static void clear_shadow_entry(struct ad + goto unlock; + if (*slot != entry) + goto unlock; ++ local_lock(shadow_nodes_lock); + __radix_tree_replace(&mapping->page_tree, node, slot, NULL, +- workingset_update_node, mapping); ++ __workingset_update_node, mapping); ++ local_unlock(shadow_nodes_lock); + mapping->nrexceptional--; + unlock: + spin_unlock_irq(&mapping->tree_lock); +--- a/mm/workingset.c ++++ b/mm/workingset.c +@@ -338,9 +338,10 @@ void workingset_activation(struct page * + * point where they would still be useful. + */ + +-static struct list_lru shadow_nodes; ++static struct list_lru __shadow_nodes; ++DEFINE_LOCAL_IRQ_LOCK(shadow_nodes_lock); + +-void workingset_update_node(struct radix_tree_node *node, void *private) ++void __workingset_update_node(struct radix_tree_node *node, void *private) + { + struct address_space *mapping = private; + +@@ -358,10 +359,10 @@ void workingset_update_node(struct radix + */ + if (node->count && node->count == node->exceptional) { + if (list_empty(&node->private_list)) +- list_lru_add(&shadow_nodes, &node->private_list); ++ list_lru_add(&__shadow_nodes, &node->private_list); + } else { + if (!list_empty(&node->private_list)) +- list_lru_del(&shadow_nodes, &node->private_list); ++ list_lru_del(&__shadow_nodes, &node->private_list); + } + } + +@@ -373,9 +374,9 @@ static unsigned long count_shadow_nodes( + unsigned long cache; + + /* list_lru lock nests inside IRQ-safe mapping->tree_lock */ +- local_irq_disable(); +- nodes = list_lru_shrink_count(&shadow_nodes, sc); +- local_irq_enable(); ++ local_lock_irq(shadow_nodes_lock); ++ nodes = list_lru_shrink_count(&__shadow_nodes, sc); ++ local_unlock_irq(shadow_nodes_lock); + + /* + * Approximate a reasonable limit for the radix tree nodes +@@ -475,15 +476,15 @@ static enum lru_status shadow_lru_isolat + goto out_invalid; + inc_lruvec_page_state(virt_to_page(node), WORKINGSET_NODERECLAIM); + __radix_tree_delete_node(&mapping->page_tree, node, +- workingset_update_node, mapping); ++ __workingset_update_node, mapping); + + out_invalid: + spin_unlock(&mapping->tree_lock); + ret = LRU_REMOVED_RETRY; + out: +- local_irq_enable(); ++ local_unlock_irq(shadow_nodes_lock); + cond_resched(); +- local_irq_disable(); ++ local_lock_irq(shadow_nodes_lock); + spin_lock(lru_lock); + return ret; + } +@@ -494,9 +495,9 @@ static unsigned long scan_shadow_nodes(s + unsigned long ret; + + /* list_lru lock nests inside IRQ-safe mapping->tree_lock */ +- local_irq_disable(); +- ret = list_lru_shrink_walk(&shadow_nodes, sc, shadow_lru_isolate, NULL); +- local_irq_enable(); ++ local_lock_irq(shadow_nodes_lock); ++ ret = list_lru_shrink_walk(&__shadow_nodes, sc, shadow_lru_isolate, NULL); ++ local_unlock_irq(shadow_nodes_lock); + return ret; + } + +@@ -534,7 +535,7 @@ static int __init workingset_init(void) + pr_info("workingset: timestamp_bits=%d max_order=%d bucket_order=%u\n", + timestamp_bits, max_order, bucket_order); + +- ret = __list_lru_init(&shadow_nodes, true, &shadow_nodes_key); ++ ret = __list_lru_init(&__shadow_nodes, true, &shadow_nodes_key); + if (ret) + goto err; + ret = register_shrinker(&workingset_shadow_shrinker); +@@ -542,7 +543,7 @@ static int __init workingset_init(void) + goto err_list_lru; + return 0; + err_list_lru: +- list_lru_destroy(&shadow_nodes); ++ list_lru_destroy(&__shadow_nodes); + err: + return ret; + } diff --git a/patches/features/all/rt/mm_zsmalloc_copy_with_get_cpu_var_and_locking.patch b/patches/features/all/rt/mm_zsmalloc_copy_with_get_cpu_var_and_locking.patch new file mode 100644 index 00000000000..5fc8f4d82b5 --- /dev/null +++ b/patches/features/all/rt/mm_zsmalloc_copy_with_get_cpu_var_and_locking.patch @@ -0,0 +1,197 @@ +From: Mike Galbraith +Date: Tue, 22 Mar 2016 11:16:09 +0100 +Subject: [PATCH] mm/zsmalloc: copy with get_cpu_var() and locking +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +get_cpu_var() disables preemption and triggers a might_sleep() splat later. +This is replaced with get_locked_var(). +This bitspinlocks are replaced with a proper mutex which requires a slightly +larger struct to allocate. + +Signed-off-by: Mike Galbraith +[bigeasy: replace the bitspin_lock() with a mutex, get_locked_var(). Mike then +fixed the size magic] +Signed-off-by: Sebastian Andrzej Siewior +--- + mm/zsmalloc.c | 80 +++++++++++++++++++++++++++++++++++++++++++++++++++++----- + 1 file changed, 74 insertions(+), 6 deletions(-) + +--- a/mm/zsmalloc.c ++++ b/mm/zsmalloc.c +@@ -53,6 +53,7 @@ + #include + #include + #include ++#include + + #define ZSPAGE_MAGIC 0x58 + +@@ -70,9 +71,22 @@ + */ + #define ZS_MAX_ZSPAGE_ORDER 2 + #define ZS_MAX_PAGES_PER_ZSPAGE (_AC(1, UL) << ZS_MAX_ZSPAGE_ORDER) +- + #define ZS_HANDLE_SIZE (sizeof(unsigned long)) + ++#ifdef CONFIG_PREEMPT_RT_FULL ++ ++struct zsmalloc_handle { ++ unsigned long addr; ++ struct mutex lock; ++}; ++ ++#define ZS_HANDLE_ALLOC_SIZE (sizeof(struct zsmalloc_handle)) ++ ++#else ++ ++#define ZS_HANDLE_ALLOC_SIZE (sizeof(unsigned long)) ++#endif ++ + /* + * Object location (, ) is encoded as + * as single (unsigned long) handle value. +@@ -320,7 +334,7 @@ static void SetZsPageMovable(struct zs_p + + static int create_cache(struct zs_pool *pool) + { +- pool->handle_cachep = kmem_cache_create("zs_handle", ZS_HANDLE_SIZE, ++ pool->handle_cachep = kmem_cache_create("zs_handle", ZS_HANDLE_ALLOC_SIZE, + 0, 0, NULL); + if (!pool->handle_cachep) + return 1; +@@ -344,10 +358,27 @@ static void destroy_cache(struct zs_pool + + static unsigned long cache_alloc_handle(struct zs_pool *pool, gfp_t gfp) + { +- return (unsigned long)kmem_cache_alloc(pool->handle_cachep, +- gfp & ~(__GFP_HIGHMEM|__GFP_MOVABLE)); ++ void *p; ++ ++ p = kmem_cache_alloc(pool->handle_cachep, ++ gfp & ~(__GFP_HIGHMEM|__GFP_MOVABLE)); ++#ifdef CONFIG_PREEMPT_RT_FULL ++ if (p) { ++ struct zsmalloc_handle *zh = p; ++ ++ mutex_init(&zh->lock); ++ } ++#endif ++ return (unsigned long)p; + } + ++#ifdef CONFIG_PREEMPT_RT_FULL ++static struct zsmalloc_handle *zs_get_pure_handle(unsigned long handle) ++{ ++ return (void *)(handle &~((1 << OBJ_TAG_BITS) - 1)); ++} ++#endif ++ + static void cache_free_handle(struct zs_pool *pool, unsigned long handle) + { + kmem_cache_free(pool->handle_cachep, (void *)handle); +@@ -366,12 +397,18 @@ static void cache_free_zspage(struct zs_ + + static void record_obj(unsigned long handle, unsigned long obj) + { ++#ifdef CONFIG_PREEMPT_RT_FULL ++ struct zsmalloc_handle *zh = zs_get_pure_handle(handle); ++ ++ WRITE_ONCE(zh->addr, obj); ++#else + /* + * lsb of @obj represents handle lock while other bits + * represent object value the handle is pointing so + * updating shouldn't do store tearing. + */ + WRITE_ONCE(*(unsigned long *)handle, obj); ++#endif + } + + /* zpool driver */ +@@ -460,6 +497,7 @@ MODULE_ALIAS("zpool-zsmalloc"); + + /* per-cpu VM mapping areas for zspage accesses that cross page boundaries */ + static DEFINE_PER_CPU(struct mapping_area, zs_map_area); ++static DEFINE_LOCAL_IRQ_LOCK(zs_map_area_lock); + + static bool is_zspage_isolated(struct zspage *zspage) + { +@@ -898,7 +936,13 @@ static unsigned long location_to_obj(str + + static unsigned long handle_to_obj(unsigned long handle) + { ++#ifdef CONFIG_PREEMPT_RT_FULL ++ struct zsmalloc_handle *zh = zs_get_pure_handle(handle); ++ ++ return zh->addr; ++#else + return *(unsigned long *)handle; ++#endif + } + + static unsigned long obj_to_head(struct page *page, void *obj) +@@ -912,22 +956,46 @@ static unsigned long obj_to_head(struct + + static inline int testpin_tag(unsigned long handle) + { ++#ifdef CONFIG_PREEMPT_RT_FULL ++ struct zsmalloc_handle *zh = zs_get_pure_handle(handle); ++ ++ return mutex_is_locked(&zh->lock); ++#else + return bit_spin_is_locked(HANDLE_PIN_BIT, (unsigned long *)handle); ++#endif + } + + static inline int trypin_tag(unsigned long handle) + { ++#ifdef CONFIG_PREEMPT_RT_FULL ++ struct zsmalloc_handle *zh = zs_get_pure_handle(handle); ++ ++ return mutex_trylock(&zh->lock); ++#else + return bit_spin_trylock(HANDLE_PIN_BIT, (unsigned long *)handle); ++#endif + } + + static void pin_tag(unsigned long handle) + { ++#ifdef CONFIG_PREEMPT_RT_FULL ++ struct zsmalloc_handle *zh = zs_get_pure_handle(handle); ++ ++ return mutex_lock(&zh->lock); ++#else + bit_spin_lock(HANDLE_PIN_BIT, (unsigned long *)handle); ++#endif + } + + static void unpin_tag(unsigned long handle) + { ++#ifdef CONFIG_PREEMPT_RT_FULL ++ struct zsmalloc_handle *zh = zs_get_pure_handle(handle); ++ ++ return mutex_unlock(&zh->lock); ++#else + bit_spin_unlock(HANDLE_PIN_BIT, (unsigned long *)handle); ++#endif + } + + static void reset_page(struct page *page) +@@ -1365,7 +1433,7 @@ void *zs_map_object(struct zs_pool *pool + class = pool->size_class[class_idx]; + off = (class->size * obj_idx) & ~PAGE_MASK; + +- area = &get_cpu_var(zs_map_area); ++ area = &get_locked_var(zs_map_area_lock, zs_map_area); + area->vm_mm = mm; + if (off + class->size <= PAGE_SIZE) { + /* this object is contained entirely within a page */ +@@ -1419,7 +1487,7 @@ void zs_unmap_object(struct zs_pool *poo + + __zs_unmap_object(area, pages, off, class->size); + } +- put_cpu_var(zs_map_area); ++ put_locked_var(zs_map_area_lock, zs_map_area); + + migrate_read_unlock(zspage); + unpin_tag(handle); diff --git a/patches/features/all/rt/mmci-remove-bogus-irq-save.patch b/patches/features/all/rt/mmci-remove-bogus-irq-save.patch new file mode 100644 index 00000000000..b5bb4329963 --- /dev/null +++ b/patches/features/all/rt/mmci-remove-bogus-irq-save.patch @@ -0,0 +1,40 @@ +Subject: mmci: Remove bogus local_irq_save() +From: Thomas Gleixner +Date: Wed, 09 Jan 2013 12:11:12 +0100 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +On !RT interrupt runs with interrupts disabled. On RT it's in a +thread, so no need to disable interrupts at all. + +Signed-off-by: Thomas Gleixner +--- + drivers/mmc/host/mmci.c | 5 ----- + 1 file changed, 5 deletions(-) + +--- a/drivers/mmc/host/mmci.c ++++ b/drivers/mmc/host/mmci.c +@@ -1200,15 +1200,12 @@ static irqreturn_t mmci_pio_irq(int irq, + struct sg_mapping_iter *sg_miter = &host->sg_miter; + struct variant_data *variant = host->variant; + void __iomem *base = host->base; +- unsigned long flags; + u32 status; + + status = readl(base + MMCISTATUS); + + dev_dbg(mmc_dev(host->mmc), "irq1 (pio) %08x\n", status); + +- local_irq_save(flags); +- + do { + unsigned int remain, len; + char *buffer; +@@ -1248,8 +1245,6 @@ static irqreturn_t mmci_pio_irq(int irq, + + sg_miter_stop(sg_miter); + +- local_irq_restore(flags); +- + /* + * If we have less than the fifo 'half-full' threshold to transfer, + * trigger a PIO interrupt as soon as any data is available. diff --git a/patches/features/all/rt/move_sched_delayed_work_to_helper.patch b/patches/features/all/rt/move_sched_delayed_work_to_helper.patch new file mode 100644 index 00000000000..62ea199aeb0 --- /dev/null +++ b/patches/features/all/rt/move_sched_delayed_work_to_helper.patch @@ -0,0 +1,73 @@ +Date: Wed, 26 Jun 2013 15:28:11 -0400 +From: Steven Rostedt +Subject: rt,ntp: Move call to schedule_delayed_work() to helper thread +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +The ntp code for notify_cmos_timer() is called from a hard interrupt +context. schedule_delayed_work() under PREEMPT_RT_FULL calls spinlocks +that have been converted to mutexes, thus calling schedule_delayed_work() +from interrupt is not safe. + +Add a helper thread that does the call to schedule_delayed_work and wake +up that thread instead of calling schedule_delayed_work() directly. +This is only for CONFIG_PREEMPT_RT_FULL, otherwise the code still calls +schedule_delayed_work() directly in irq context. + +Note: There's a few places in the kernel that do this. Perhaps the RT +code should have a dedicated thread that does the checks. Just register +a notifier on boot up for your check and wake up the thread when +needed. This will be a todo. + +Signed-off-by: Steven Rostedt +[bigeasy: use swork_queue() instead a helper thread] +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/time/ntp.c | 26 ++++++++++++++++++++++++++ + 1 file changed, 26 insertions(+) + +--- a/kernel/time/ntp.c ++++ b/kernel/time/ntp.c +@@ -18,6 +18,7 @@ + #include + #include + #include ++#include + + #include "ntp_internal.h" + #include "timekeeping_internal.h" +@@ -569,10 +570,35 @@ static void sync_cmos_clock(struct work_ + &sync_cmos_work, timespec64_to_jiffies(&next)); + } + ++#ifdef CONFIG_PREEMPT_RT_FULL ++ ++static void run_clock_set_delay(struct swork_event *event) ++{ ++ queue_delayed_work(system_power_efficient_wq, &sync_cmos_work, 0); ++} ++ ++static struct swork_event ntp_cmos_swork; ++ ++void ntp_notify_cmos_timer(void) ++{ ++ swork_queue(&ntp_cmos_swork); ++} ++ ++static __init int create_cmos_delay_thread(void) ++{ ++ WARN_ON(swork_get()); ++ INIT_SWORK(&ntp_cmos_swork, run_clock_set_delay); ++ return 0; ++} ++early_initcall(create_cmos_delay_thread); ++ ++#else ++ + void ntp_notify_cmos_timer(void) + { + queue_delayed_work(system_power_efficient_wq, &sync_cmos_work, 0); + } ++#endif /* CONFIG_PREEMPT_RT_FULL */ + + #else + void ntp_notify_cmos_timer(void) { } diff --git a/patches/features/all/rt/mutex-no-spin-on-rt.patch b/patches/features/all/rt/mutex-no-spin-on-rt.patch new file mode 100644 index 00000000000..35029f99ad0 --- /dev/null +++ b/patches/features/all/rt/mutex-no-spin-on-rt.patch @@ -0,0 +1,29 @@ +From: Thomas Gleixner +Date: Sun, 17 Jul 2011 21:51:45 +0200 +Subject: locking: Disable spin on owner for RT +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Drop spin on owner for mutex / rwsem. We are most likely not using it +but… + +Signed-off-by: Thomas Gleixner +--- + kernel/Kconfig.locks | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/kernel/Kconfig.locks ++++ b/kernel/Kconfig.locks +@@ -225,11 +225,11 @@ config ARCH_SUPPORTS_ATOMIC_RMW + + config MUTEX_SPIN_ON_OWNER + def_bool y +- depends on SMP && ARCH_SUPPORTS_ATOMIC_RMW ++ depends on SMP && ARCH_SUPPORTS_ATOMIC_RMW && !PREEMPT_RT_FULL + + config RWSEM_SPIN_ON_OWNER + def_bool y +- depends on SMP && RWSEM_XCHGADD_ALGORITHM && ARCH_SUPPORTS_ATOMIC_RMW ++ depends on SMP && RWSEM_XCHGADD_ALGORITHM && ARCH_SUPPORTS_ATOMIC_RMW && !PREEMPT_RT_FULL + + config LOCK_SPIN_ON_OWNER + def_bool y diff --git a/patches/features/all/rt/net-Have-__napi_schedule_irqoff-disable-interrupts-o.patch b/patches/features/all/rt/net-Have-__napi_schedule_irqoff-disable-interrupts-o.patch new file mode 100644 index 00000000000..a646b2ec455 --- /dev/null +++ b/patches/features/all/rt/net-Have-__napi_schedule_irqoff-disable-interrupts-o.patch @@ -0,0 +1,69 @@ +From: Steven Rostedt +Date: Tue, 6 Dec 2016 17:50:30 -0500 +Subject: [PATCH] net: Have __napi_schedule_irqoff() disable interrupts on + RT +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +A customer hit a crash where the napi sd->poll_list became corrupted. +The customer had the bnx2x driver, which does a +__napi_schedule_irqoff() in its interrupt handler. Unfortunately, when +running with CONFIG_PREEMPT_RT_FULL, this interrupt handler is run as a +thread and is preemptable. The call to ____napi_schedule() must be done +with interrupts disabled to protect the per cpu softnet_data's +"poll_list, which is protected by disabling interrupts (disabling +preemption is enough when all interrupts are threaded and +local_bh_disable() can't preempt)." + +As bnx2x isn't the only driver that does this, the safest thing to do +is to make __napi_schedule_irqoff() call __napi_schedule() instead when +CONFIG_PREEMPT_RT_FULL is enabled, which will call local_irq_save() +before calling ____napi_schedule(). + +Cc: stable-rt@vger.kernel.org +Signed-off-by: Steven Rostedt (Red Hat) +Signed-off-by: Sebastian Andrzej Siewior +--- + include/linux/netdevice.h | 12 ++++++++++++ + net/core/dev.c | 2 ++ + 2 files changed, 14 insertions(+) + +--- a/include/linux/netdevice.h ++++ b/include/linux/netdevice.h +@@ -409,7 +409,19 @@ typedef enum rx_handler_result rx_handle + typedef rx_handler_result_t rx_handler_func_t(struct sk_buff **pskb); + + void __napi_schedule(struct napi_struct *n); ++ ++/* ++ * When PREEMPT_RT_FULL is defined, all device interrupt handlers ++ * run as threads, and they can also be preempted (without PREEMPT_RT ++ * interrupt threads can not be preempted). Which means that calling ++ * __napi_schedule_irqoff() from an interrupt handler can be preempted ++ * and can corrupt the napi->poll_list. ++ */ ++#ifdef CONFIG_PREEMPT_RT_FULL ++#define __napi_schedule_irqoff(n) __napi_schedule(n) ++#else + void __napi_schedule_irqoff(struct napi_struct *n); ++#endif + + static inline bool napi_disable_pending(struct napi_struct *n) + { +--- a/net/core/dev.c ++++ b/net/core/dev.c +@@ -5238,6 +5238,7 @@ bool napi_schedule_prep(struct napi_stru + } + EXPORT_SYMBOL(napi_schedule_prep); + ++#ifndef CONFIG_PREEMPT_RT_FULL + /** + * __napi_schedule_irqoff - schedule for receive + * @n: entry to schedule +@@ -5249,6 +5250,7 @@ void __napi_schedule_irqoff(struct napi_ + ____napi_schedule(this_cpu_ptr(&softnet_data), n); + } + EXPORT_SYMBOL(__napi_schedule_irqoff); ++#endif + + bool napi_complete_done(struct napi_struct *n, int work_done) + { diff --git a/patches/features/all/rt/net-Qdisc-use-a-seqlock-instead-seqcount.patch b/patches/features/all/rt/net-Qdisc-use-a-seqlock-instead-seqcount.patch new file mode 100644 index 00000000000..7d2ffa0d105 --- /dev/null +++ b/patches/features/all/rt/net-Qdisc-use-a-seqlock-instead-seqcount.patch @@ -0,0 +1,273 @@ +From: Sebastian Andrzej Siewior +Date: Wed, 14 Sep 2016 17:36:35 +0200 +Subject: [PATCH] net/Qdisc: use a seqlock instead seqcount +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +The seqcount disables preemption on -RT while it is held which can't +remove. Also we don't want the reader to spin for ages if the writer is +scheduled out. The seqlock on the other hand will serialize / sleep on +the lock while writer is active. + +Signed-off-by: Sebastian Andrzej Siewior +--- + include/linux/seqlock.h | 9 +++++++++ + include/net/gen_stats.h | 9 +++++---- + include/net/net_seq_lock.h | 15 +++++++++++++++ + include/net/sch_generic.h | 21 ++++++++++++++++++--- + net/core/gen_estimator.c | 6 +++--- + net/core/gen_stats.c | 8 ++++---- + net/sched/sch_api.c | 2 +- + net/sched/sch_generic.c | 12 ++++++++++++ + 8 files changed, 67 insertions(+), 15 deletions(-) + create mode 100644 include/net/net_seq_lock.h + +--- a/include/linux/seqlock.h ++++ b/include/linux/seqlock.h +@@ -482,6 +482,15 @@ static inline void write_seqlock(seqlock + __raw_write_seqcount_begin(&sl->seqcount); + } + ++static inline int try_write_seqlock(seqlock_t *sl) ++{ ++ if (spin_trylock(&sl->lock)) { ++ __raw_write_seqcount_begin(&sl->seqcount); ++ return 1; ++ } ++ return 0; ++} ++ + static inline void write_sequnlock(seqlock_t *sl) + { + __raw_write_seqcount_end(&sl->seqcount); +--- a/include/net/gen_stats.h ++++ b/include/net/gen_stats.h +@@ -6,6 +6,7 @@ + #include + #include + #include ++#include + + struct gnet_stats_basic_cpu { + struct gnet_stats_basic_packed bstats; +@@ -36,11 +37,11 @@ int gnet_stats_start_copy_compat(struct + spinlock_t *lock, struct gnet_dump *d, + int padattr); + +-int gnet_stats_copy_basic(const seqcount_t *running, ++int gnet_stats_copy_basic(net_seqlock_t *running, + struct gnet_dump *d, + struct gnet_stats_basic_cpu __percpu *cpu, + struct gnet_stats_basic_packed *b); +-void __gnet_stats_copy_basic(const seqcount_t *running, ++void __gnet_stats_copy_basic(net_seqlock_t *running, + struct gnet_stats_basic_packed *bstats, + struct gnet_stats_basic_cpu __percpu *cpu, + struct gnet_stats_basic_packed *b); +@@ -57,13 +58,13 @@ int gen_new_estimator(struct gnet_stats_ + struct gnet_stats_basic_cpu __percpu *cpu_bstats, + struct net_rate_estimator __rcu **rate_est, + spinlock_t *stats_lock, +- seqcount_t *running, struct nlattr *opt); ++ net_seqlock_t *running, struct nlattr *opt); + void gen_kill_estimator(struct net_rate_estimator __rcu **ptr); + int gen_replace_estimator(struct gnet_stats_basic_packed *bstats, + struct gnet_stats_basic_cpu __percpu *cpu_bstats, + struct net_rate_estimator __rcu **ptr, + spinlock_t *stats_lock, +- seqcount_t *running, struct nlattr *opt); ++ net_seqlock_t *running, struct nlattr *opt); + bool gen_estimator_active(struct net_rate_estimator __rcu **ptr); + bool gen_estimator_read(struct net_rate_estimator __rcu **ptr, + struct gnet_stats_rate_est64 *sample); +--- /dev/null ++++ b/include/net/net_seq_lock.h +@@ -0,0 +1,15 @@ ++#ifndef __NET_NET_SEQ_LOCK_H__ ++#define __NET_NET_SEQ_LOCK_H__ ++ ++#ifdef CONFIG_PREEMPT_RT_BASE ++# define net_seqlock_t seqlock_t ++# define net_seq_begin(__r) read_seqbegin(__r) ++# define net_seq_retry(__r, __s) read_seqretry(__r, __s) ++ ++#else ++# define net_seqlock_t seqcount_t ++# define net_seq_begin(__r) read_seqcount_begin(__r) ++# define net_seq_retry(__r, __s) read_seqcount_retry(__r, __s) ++#endif ++ ++#endif +--- a/include/net/sch_generic.h ++++ b/include/net/sch_generic.h +@@ -10,6 +10,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -90,7 +91,7 @@ struct Qdisc { + struct sk_buff *gso_skb ____cacheline_aligned_in_smp; + struct qdisc_skb_head q; + struct gnet_stats_basic_packed bstats; +- seqcount_t running; ++ net_seqlock_t running; + struct gnet_stats_queue qstats; + unsigned long state; + struct Qdisc *next_sched; +@@ -109,13 +110,22 @@ static inline void qdisc_refcount_inc(st + refcount_inc(&qdisc->refcnt); + } + +-static inline bool qdisc_is_running(const struct Qdisc *qdisc) ++static inline bool qdisc_is_running(struct Qdisc *qdisc) + { ++#ifdef CONFIG_PREEMPT_RT_BASE ++ return spin_is_locked(&qdisc->running.lock) ? true : false; ++#else + return (raw_read_seqcount(&qdisc->running) & 1) ? true : false; ++#endif + } + + static inline bool qdisc_run_begin(struct Qdisc *qdisc) + { ++#ifdef CONFIG_PREEMPT_RT_BASE ++ if (try_write_seqlock(&qdisc->running)) ++ return true; ++ return false; ++#else + if (qdisc_is_running(qdisc)) + return false; + /* Variant of write_seqcount_begin() telling lockdep a trylock +@@ -124,11 +134,16 @@ static inline bool qdisc_run_begin(struc + raw_write_seqcount_begin(&qdisc->running); + seqcount_acquire(&qdisc->running.dep_map, 0, 1, _RET_IP_); + return true; ++#endif + } + + static inline void qdisc_run_end(struct Qdisc *qdisc) + { ++#ifdef CONFIG_PREEMPT_RT_BASE ++ write_sequnlock(&qdisc->running); ++#else + write_seqcount_end(&qdisc->running); ++#endif + } + + static inline bool qdisc_may_bulk(const struct Qdisc *qdisc) +@@ -338,7 +353,7 @@ static inline spinlock_t *qdisc_root_sle + return qdisc_lock(root); + } + +-static inline seqcount_t *qdisc_root_sleeping_running(const struct Qdisc *qdisc) ++static inline net_seqlock_t *qdisc_root_sleeping_running(const struct Qdisc *qdisc) + { + struct Qdisc *root = qdisc_root_sleeping(qdisc); + +--- a/net/core/gen_estimator.c ++++ b/net/core/gen_estimator.c +@@ -46,7 +46,7 @@ + struct net_rate_estimator { + struct gnet_stats_basic_packed *bstats; + spinlock_t *stats_lock; +- seqcount_t *running; ++ net_seqlock_t *running; + struct gnet_stats_basic_cpu __percpu *cpu_bstats; + u8 ewma_log; + u8 intvl_log; /* period : (250ms << intvl_log) */ +@@ -128,7 +128,7 @@ int gen_new_estimator(struct gnet_stats_ + struct gnet_stats_basic_cpu __percpu *cpu_bstats, + struct net_rate_estimator __rcu **rate_est, + spinlock_t *stats_lock, +- seqcount_t *running, ++ net_seqlock_t *running, + struct nlattr *opt) + { + struct gnet_estimator *parm = nla_data(opt); +@@ -217,7 +217,7 @@ int gen_replace_estimator(struct gnet_st + struct gnet_stats_basic_cpu __percpu *cpu_bstats, + struct net_rate_estimator __rcu **rate_est, + spinlock_t *stats_lock, +- seqcount_t *running, struct nlattr *opt) ++ net_seqlock_t *running, struct nlattr *opt) + { + return gen_new_estimator(bstats, cpu_bstats, rate_est, + stats_lock, running, opt); +--- a/net/core/gen_stats.c ++++ b/net/core/gen_stats.c +@@ -130,7 +130,7 @@ static void + } + + void +-__gnet_stats_copy_basic(const seqcount_t *running, ++__gnet_stats_copy_basic(net_seqlock_t *running, + struct gnet_stats_basic_packed *bstats, + struct gnet_stats_basic_cpu __percpu *cpu, + struct gnet_stats_basic_packed *b) +@@ -143,10 +143,10 @@ void + } + do { + if (running) +- seq = read_seqcount_begin(running); ++ seq = net_seq_begin(running); + bstats->bytes = b->bytes; + bstats->packets = b->packets; +- } while (running && read_seqcount_retry(running, seq)); ++ } while (running && net_seq_retry(running, seq)); + } + EXPORT_SYMBOL(__gnet_stats_copy_basic); + +@@ -164,7 +164,7 @@ EXPORT_SYMBOL(__gnet_stats_copy_basic); + * if the room in the socket buffer was not sufficient. + */ + int +-gnet_stats_copy_basic(const seqcount_t *running, ++gnet_stats_copy_basic(net_seqlock_t *running, + struct gnet_dump *d, + struct gnet_stats_basic_cpu __percpu *cpu, + struct gnet_stats_basic_packed *b) +--- a/net/sched/sch_api.c ++++ b/net/sched/sch_api.c +@@ -1081,7 +1081,7 @@ static struct Qdisc *qdisc_create(struct + rcu_assign_pointer(sch->stab, stab); + } + if (tca[TCA_RATE]) { +- seqcount_t *running; ++ net_seqlock_t *running; + + err = -EOPNOTSUPP; + if (sch->flags & TCQ_F_MQROOT) +--- a/net/sched/sch_generic.c ++++ b/net/sched/sch_generic.c +@@ -429,7 +429,11 @@ struct Qdisc noop_qdisc = { + .ops = &noop_qdisc_ops, + .q.lock = __SPIN_LOCK_UNLOCKED(noop_qdisc.q.lock), + .dev_queue = &noop_netdev_queue, ++#ifdef CONFIG_PREEMPT_RT_BASE ++ .running = __SEQLOCK_UNLOCKED(noop_qdisc.running), ++#else + .running = SEQCNT_ZERO(noop_qdisc.running), ++#endif + .busylock = __SPIN_LOCK_UNLOCKED(noop_qdisc.busylock), + }; + EXPORT_SYMBOL(noop_qdisc); +@@ -628,9 +632,17 @@ struct Qdisc *qdisc_alloc(struct netdev_ + lockdep_set_class(&sch->busylock, + dev->qdisc_tx_busylock ?: &qdisc_tx_busylock); + ++#ifdef CONFIG_PREEMPT_RT_BASE ++ seqlock_init(&sch->running); ++ lockdep_set_class(&sch->running.seqcount, ++ dev->qdisc_running_key ?: &qdisc_running_key); ++ lockdep_set_class(&sch->running.lock, ++ dev->qdisc_running_key ?: &qdisc_running_key); ++#else + seqcount_init(&sch->running); + lockdep_set_class(&sch->running, + dev->qdisc_running_key ?: &qdisc_running_key); ++#endif + + sch->ops = ops; + sch->enqueue = ops->enqueue; diff --git a/patches/features/all/rt/net-add-a-lock-around-icmp_sk.patch b/patches/features/all/rt/net-add-a-lock-around-icmp_sk.patch new file mode 100644 index 00000000000..ab035690076 --- /dev/null +++ b/patches/features/all/rt/net-add-a-lock-around-icmp_sk.patch @@ -0,0 +1,66 @@ +From: Sebastian Andrzej Siewior +Date: Wed, 31 Aug 2016 17:54:09 +0200 +Subject: [PATCH] net: add a lock around icmp_sk() +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +It looks like the this_cpu_ptr() access in icmp_sk() is protected with +local_bh_disable(). To avoid missing serialization in -RT I am adding +here a local lock. No crash has been observed, this is just precaution. + +Cc: stable-rt@vger.kernel.org +Signed-off-by: Sebastian Andrzej Siewior +--- + net/ipv4/icmp.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +--- a/net/ipv4/icmp.c ++++ b/net/ipv4/icmp.c +@@ -77,6 +77,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -204,6 +205,8 @@ static const struct icmp_control icmp_po + * + * On SMP we have one ICMP socket per-cpu. + */ ++static DEFINE_LOCAL_IRQ_LOCK(icmp_sk_lock); ++ + static struct sock *icmp_sk(struct net *net) + { + return *this_cpu_ptr(net->ipv4.icmp_sk); +@@ -417,6 +420,7 @@ static void icmp_reply(struct icmp_bxm * + + /* Needed by both icmp_global_allow and icmp_xmit_lock */ + local_bh_disable(); ++ local_lock(icmp_sk_lock); + + /* global icmp_msgs_per_sec */ + if (!icmpv4_global_allow(net, type, code)) +@@ -461,6 +465,7 @@ static void icmp_reply(struct icmp_bxm * + out_unlock: + icmp_xmit_unlock(sk); + out_bh_enable: ++ local_unlock(icmp_sk_lock); + local_bh_enable(); + } + +@@ -656,6 +661,7 @@ void icmp_send(struct sk_buff *skb_in, i + + /* Needed by both icmp_global_allow and icmp_xmit_lock */ + local_bh_disable(); ++ local_lock(icmp_sk_lock); + + /* Check global sysctl_icmp_msgs_per_sec ratelimit, unless + * incoming dev is loopback. If outgoing dev change to not be +@@ -744,6 +750,7 @@ void icmp_send(struct sk_buff *skb_in, i + out_unlock: + icmp_xmit_unlock(sk); + out_bh_enable: ++ local_unlock(icmp_sk_lock); + local_bh_enable(); + out:; + } diff --git a/patches/features/all/rt/net-add-back-the-missing-serialization-in-ip_send_un.patch b/patches/features/all/rt/net-add-back-the-missing-serialization-in-ip_send_un.patch new file mode 100644 index 00000000000..e79cf4d5838 --- /dev/null +++ b/patches/features/all/rt/net-add-back-the-missing-serialization-in-ip_send_un.patch @@ -0,0 +1,93 @@ +From: Sebastian Andrzej Siewior +Date: Wed, 31 Aug 2016 17:21:56 +0200 +Subject: [PATCH] net: add back the missing serialization in + ip_send_unicast_reply() +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Some time ago Sami Pietikäinen reported a crash on -RT in +ip_send_unicast_reply() which was later fixed by Nicholas Mc Guire +(v3.12.8-rt11). Later (v3.18.8) the code was reworked and I dropped the +patch. As it turns out it was mistake. +I have reports that the same crash is possible with a similar backtrace. +It seems that vanilla protects access to this_cpu_ptr() via +local_bh_disable(). This does not work the on -RT since we can have +NET_RX and NET_TX running in parallel on the same CPU. +This is brings back the old locks. + +|Unable to handle kernel NULL pointer dereference at virtual address 00000010 +|PC is at __ip_make_skb+0x198/0x3e8 +|[] (__ip_make_skb) from [] (ip_push_pending_frames+0x20/0x40) +|[] (ip_push_pending_frames) from [] (ip_send_unicast_reply+0x210/0x22c) +|[] (ip_send_unicast_reply) from [] (tcp_v4_send_reset+0x190/0x1c0) +|[] (tcp_v4_send_reset) from [] (tcp_v4_do_rcv+0x22c/0x288) +|[] (tcp_v4_do_rcv) from [] (release_sock+0xb4/0x150) +|[] (release_sock) from [] (tcp_close+0x240/0x454) +|[] (tcp_close) from [] (inet_release+0x74/0x7c) +|[] (inet_release) from [] (sock_release+0x30/0xb0) +|[] (sock_release) from [] (sock_close+0x1c/0x24) +|[] (sock_close) from [] (__fput+0xe8/0x20c) +|[] (__fput) from [] (____fput+0x18/0x1c) +|[] (____fput) from [] (task_work_run+0xa4/0xb8) +|[] (task_work_run) from [] (do_work_pending+0xd0/0xe4) +|[] (do_work_pending) from [] (work_pending+0xc/0x20) +|Code: e3530001 8a000001 e3a00040 ea000011 (e5973010) + +Cc: stable-rt@vger.kernel.org +Signed-off-by: Sebastian Andrzej Siewior +--- + net/ipv4/tcp_ipv4.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +--- a/net/ipv4/tcp_ipv4.c ++++ b/net/ipv4/tcp_ipv4.c +@@ -62,6 +62,7 @@ + #include + #include + #include ++#include + + #include + #include +@@ -580,6 +581,7 @@ void tcp_v4_send_check(struct sock *sk, + } + EXPORT_SYMBOL(tcp_v4_send_check); + ++static DEFINE_LOCAL_IRQ_LOCK(tcp_sk_lock); + /* + * This routine will send an RST to the other tcp. + * +@@ -709,6 +711,7 @@ static void tcp_v4_send_reset(const stru + + arg.tos = ip_hdr(skb)->tos; + arg.uid = sock_net_uid(net, sk && sk_fullsock(sk) ? sk : NULL); ++ local_lock(tcp_sk_lock); + local_bh_disable(); + ip_send_unicast_reply(*this_cpu_ptr(net->ipv4.tcp_sk), + skb, &TCP_SKB_CB(skb)->header.h4.opt, +@@ -718,6 +721,7 @@ static void tcp_v4_send_reset(const stru + __TCP_INC_STATS(net, TCP_MIB_OUTSEGS); + __TCP_INC_STATS(net, TCP_MIB_OUTRSTS); + local_bh_enable(); ++ local_unlock(tcp_sk_lock); + + #ifdef CONFIG_TCP_MD5SIG + out: +@@ -795,6 +799,7 @@ static void tcp_v4_send_ack(const struct + arg.bound_dev_if = oif; + arg.tos = tos; + arg.uid = sock_net_uid(net, sk_fullsock(sk) ? sk : NULL); ++ local_lock(tcp_sk_lock); + local_bh_disable(); + ip_send_unicast_reply(*this_cpu_ptr(net->ipv4.tcp_sk), + skb, &TCP_SKB_CB(skb)->header.h4.opt, +@@ -803,6 +808,7 @@ static void tcp_v4_send_ack(const struct + + __TCP_INC_STATS(net, TCP_MIB_OUTSEGS); + local_bh_enable(); ++ local_unlock(tcp_sk_lock); + } + + static void tcp_v4_timewait_ack(struct sock *sk, struct sk_buff *skb) diff --git a/patches/features/all/rt/net-another-local-irq-disable-alloc-atomic-headache.patch b/patches/features/all/rt/net-another-local-irq-disable-alloc-atomic-headache.patch new file mode 100644 index 00000000000..a70471407f3 --- /dev/null +++ b/patches/features/all/rt/net-another-local-irq-disable-alloc-atomic-headache.patch @@ -0,0 +1,59 @@ +From: Thomas Gleixner +Date: Wed, 26 Sep 2012 16:21:08 +0200 +Subject: net: Another local_irq_disable/kmalloc headache +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Replace it by a local lock. Though that's pretty inefficient :( + +Signed-off-by: Thomas Gleixner +--- + net/core/skbuff.c | 10 ++++++---- + 1 file changed, 6 insertions(+), 4 deletions(-) + +--- a/net/core/skbuff.c ++++ b/net/core/skbuff.c +@@ -64,6 +64,7 @@ + #include + #include + #include ++#include + + #include + #include +@@ -334,6 +335,7 @@ struct napi_alloc_cache { + + static DEFINE_PER_CPU(struct page_frag_cache, netdev_alloc_cache); + static DEFINE_PER_CPU(struct napi_alloc_cache, napi_alloc_cache); ++static DEFINE_LOCAL_IRQ_LOCK(netdev_alloc_lock); + + static void *__netdev_alloc_frag(unsigned int fragsz, gfp_t gfp_mask) + { +@@ -341,10 +343,10 @@ static void *__netdev_alloc_frag(unsigne + unsigned long flags; + void *data; + +- local_irq_save(flags); ++ local_lock_irqsave(netdev_alloc_lock, flags); + nc = this_cpu_ptr(&netdev_alloc_cache); + data = page_frag_alloc(nc, fragsz, gfp_mask); +- local_irq_restore(flags); ++ local_unlock_irqrestore(netdev_alloc_lock, flags); + return data; + } + +@@ -412,13 +414,13 @@ struct sk_buff *__netdev_alloc_skb(struc + if (sk_memalloc_socks()) + gfp_mask |= __GFP_MEMALLOC; + +- local_irq_save(flags); ++ local_lock_irqsave(netdev_alloc_lock, flags); + + nc = this_cpu_ptr(&netdev_alloc_cache); + data = page_frag_alloc(nc, len, gfp_mask); + pfmemalloc = nc->pfmemalloc; + +- local_irq_restore(flags); ++ local_unlock_irqrestore(netdev_alloc_lock, flags); + + if (unlikely(!data)) + return NULL; diff --git a/patches/features/all/rt/net-core-cpuhotplug-drain-input_pkt_queue-lockless.patch b/patches/features/all/rt/net-core-cpuhotplug-drain-input_pkt_queue-lockless.patch new file mode 100644 index 00000000000..ec0ce077681 --- /dev/null +++ b/patches/features/all/rt/net-core-cpuhotplug-drain-input_pkt_queue-lockless.patch @@ -0,0 +1,47 @@ +Subject: net/core/cpuhotplug: Drain input_pkt_queue lockless +From: Grygorii Strashko +Date: Fri, 9 Oct 2015 09:25:49 -0500 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +I can constantly see below error report with 4.1 RT-kernel on TI ARM dra7-evm +if I'm trying to unplug cpu1: + +[ 57.737589] CPU1: shutdown +[ 57.767537] BUG: spinlock bad magic on CPU#0, sh/137 +[ 57.767546] lock: 0xee994730, .magic: 00000000, .owner: /-1, .owner_cpu: 0 +[ 57.767552] CPU: 0 PID: 137 Comm: sh Not tainted 4.1.10-rt8-01700-g2c38702-dirty #55 +[ 57.767555] Hardware name: Generic DRA74X (Flattened Device Tree) +[ 57.767568] [] (unwind_backtrace) from [] (show_stack+0x20/0x24) +[ 57.767579] [] (show_stack) from [] (dump_stack+0x84/0xa0) +[ 57.767593] [] (dump_stack) from [] (spin_dump+0x84/0xac) +[ 57.767603] [] (spin_dump) from [] (spin_bug+0x34/0x38) +[ 57.767614] [] (spin_bug) from [] (do_raw_spin_lock+0x168/0x1c0) +[ 57.767624] [] (do_raw_spin_lock) from [] (_raw_spin_lock+0x4c/0x54) +[ 57.767631] [] (_raw_spin_lock) from [] (rt_spin_lock_slowlock+0x5c/0x374) +[ 57.767638] [] (rt_spin_lock_slowlock) from [] (rt_spin_lock+0x38/0x70) +[ 57.767649] [] (rt_spin_lock) from [] (skb_dequeue+0x28/0x7c) +[ 57.767662] [] (skb_dequeue) from [] (dev_cpu_callback+0x1b8/0x240) +[ 57.767673] [] (dev_cpu_callback) from [] (notifier_call_chain+0x3c/0xb4) + +The reason is that skb_dequeue is taking skb->lock, but RT changed the +core code to use a raw spinlock. The non-raw lock is not initialized +on purpose to catch exactly this kind of problem. + +Fixes: 91df05da13a6 'net: Use skbufhead with raw lock' +Signed-off-by: Thomas Gleixner +Cc: stable-rt@vger.kernel.org +--- + net/core/dev.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/net/core/dev.c ++++ b/net/core/dev.c +@@ -8423,7 +8423,7 @@ static int dev_cpu_dead(unsigned int old + netif_rx_ni(skb); + input_queue_head_incr(oldsd); + } +- while ((skb = skb_dequeue(&oldsd->input_pkt_queue))) { ++ while ((skb = __skb_dequeue(&oldsd->input_pkt_queue))) { + netif_rx_ni(skb); + input_queue_head_incr(oldsd); + } diff --git a/patches/features/all/rt/net-core-protect-users-of-napi_alloc_cache-against-r.patch b/patches/features/all/rt/net-core-protect-users-of-napi_alloc_cache-against-r.patch new file mode 100644 index 00000000000..43cba43c869 --- /dev/null +++ b/patches/features/all/rt/net-core-protect-users-of-napi_alloc_cache-against-r.patch @@ -0,0 +1,113 @@ +From: Sebastian Andrzej Siewior +Date: Fri, 15 Jan 2016 16:33:34 +0100 +Subject: net/core: protect users of napi_alloc_cache against + reentrance +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +On -RT the code running in BH can not be moved to another CPU so CPU +local variable remain local. However the code can be preempted +and another task may enter BH accessing the same CPU using the same +napi_alloc_cache variable. +This patch ensures that each user of napi_alloc_cache uses a local lock. + +Cc: stable-rt@vger.kernel.org +Signed-off-by: Sebastian Andrzej Siewior +--- + net/core/skbuff.c | 25 +++++++++++++++++++------ + 1 file changed, 19 insertions(+), 6 deletions(-) + +--- a/net/core/skbuff.c ++++ b/net/core/skbuff.c +@@ -336,6 +336,7 @@ struct napi_alloc_cache { + static DEFINE_PER_CPU(struct page_frag_cache, netdev_alloc_cache); + static DEFINE_PER_CPU(struct napi_alloc_cache, napi_alloc_cache); + static DEFINE_LOCAL_IRQ_LOCK(netdev_alloc_lock); ++static DEFINE_LOCAL_IRQ_LOCK(napi_alloc_cache_lock); + + static void *__netdev_alloc_frag(unsigned int fragsz, gfp_t gfp_mask) + { +@@ -365,9 +366,13 @@ EXPORT_SYMBOL(netdev_alloc_frag); + + static void *__napi_alloc_frag(unsigned int fragsz, gfp_t gfp_mask) + { +- struct napi_alloc_cache *nc = this_cpu_ptr(&napi_alloc_cache); ++ struct napi_alloc_cache *nc; ++ void *data; + +- return page_frag_alloc(&nc->page, fragsz, gfp_mask); ++ nc = &get_locked_var(napi_alloc_cache_lock, napi_alloc_cache); ++ data = page_frag_alloc(&nc->page, fragsz, gfp_mask); ++ put_locked_var(napi_alloc_cache_lock, napi_alloc_cache); ++ return data; + } + + void *napi_alloc_frag(unsigned int fragsz) +@@ -461,9 +466,10 @@ EXPORT_SYMBOL(__netdev_alloc_skb); + struct sk_buff *__napi_alloc_skb(struct napi_struct *napi, unsigned int len, + gfp_t gfp_mask) + { +- struct napi_alloc_cache *nc = this_cpu_ptr(&napi_alloc_cache); ++ struct napi_alloc_cache *nc; + struct sk_buff *skb; + void *data; ++ bool pfmemalloc; + + len += NET_SKB_PAD + NET_IP_ALIGN; + +@@ -481,7 +487,10 @@ struct sk_buff *__napi_alloc_skb(struct + if (sk_memalloc_socks()) + gfp_mask |= __GFP_MEMALLOC; + ++ nc = &get_locked_var(napi_alloc_cache_lock, napi_alloc_cache); + data = page_frag_alloc(&nc->page, len, gfp_mask); ++ pfmemalloc = nc->page.pfmemalloc; ++ put_locked_var(napi_alloc_cache_lock, napi_alloc_cache); + if (unlikely(!data)) + return NULL; + +@@ -492,7 +501,7 @@ struct sk_buff *__napi_alloc_skb(struct + } + + /* use OR instead of assignment to avoid clearing of bits in mask */ +- if (nc->page.pfmemalloc) ++ if (pfmemalloc) + skb->pfmemalloc = 1; + skb->head_frag = 1; + +@@ -724,23 +733,26 @@ void __consume_stateless_skb(struct sk_b + + void __kfree_skb_flush(void) + { +- struct napi_alloc_cache *nc = this_cpu_ptr(&napi_alloc_cache); ++ struct napi_alloc_cache *nc; + ++ nc = &get_locked_var(napi_alloc_cache_lock, napi_alloc_cache); + /* flush skb_cache if containing objects */ + if (nc->skb_count) { + kmem_cache_free_bulk(skbuff_head_cache, nc->skb_count, + nc->skb_cache); + nc->skb_count = 0; + } ++ put_locked_var(napi_alloc_cache_lock, napi_alloc_cache); + } + + static inline void _kfree_skb_defer(struct sk_buff *skb) + { +- struct napi_alloc_cache *nc = this_cpu_ptr(&napi_alloc_cache); ++ struct napi_alloc_cache *nc; + + /* drop skb->head and call any destructors for packet */ + skb_release_all(skb); + ++ nc = &get_locked_var(napi_alloc_cache_lock, napi_alloc_cache); + /* record skb to CPU local list */ + nc->skb_cache[nc->skb_count++] = skb; + +@@ -755,6 +767,7 @@ static inline void _kfree_skb_defer(stru + nc->skb_cache); + nc->skb_count = 0; + } ++ put_locked_var(napi_alloc_cache_lock, napi_alloc_cache); + } + void __kfree_skb_defer(struct sk_buff *skb) + { diff --git a/patches/features/all/rt/net-dev-always-take-qdisc-s-busylock-in-__dev_xmit_s.patch b/patches/features/all/rt/net-dev-always-take-qdisc-s-busylock-in-__dev_xmit_s.patch new file mode 100644 index 00000000000..91de2cbae3a --- /dev/null +++ b/patches/features/all/rt/net-dev-always-take-qdisc-s-busylock-in-__dev_xmit_s.patch @@ -0,0 +1,35 @@ +From: Sebastian Andrzej Siewior +Date: Wed, 30 Mar 2016 13:36:29 +0200 +Subject: [PATCH] net: dev: always take qdisc's busylock in __dev_xmit_skb() +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +The root-lock is dropped before dev_hard_start_xmit() is invoked and after +setting the __QDISC___STATE_RUNNING bit. If this task is now pushed away +by a task with a higher priority then the task with the higher priority +won't be able to submit packets to the NIC directly instead they will be +enqueued into the Qdisc. The NIC will remain idle until the task(s) with +higher priority leave the CPU and the task with lower priority gets back +and finishes the job. + +If we take always the busylock we ensure that the RT task can boost the +low-prio task and submit the packet. + +Signed-off-by: Sebastian Andrzej Siewior +--- + net/core/dev.c | 4 ++++ + 1 file changed, 4 insertions(+) + +--- a/net/core/dev.c ++++ b/net/core/dev.c +@@ -3159,7 +3159,11 @@ static inline int __dev_xmit_skb(struct + * This permits qdisc->running owner to get the lock more + * often and dequeue packets faster. + */ ++#ifdef CONFIG_PREEMPT_RT_FULL ++ contended = true; ++#else + contended = qdisc_is_running(q); ++#endif + if (unlikely(contended)) + spin_lock(&q->busylock); + diff --git a/patches/features/all/rt/net-fix-iptable-xt-write-recseq-begin-rt-fallout.patch b/patches/features/all/rt/net-fix-iptable-xt-write-recseq-begin-rt-fallout.patch new file mode 100644 index 00000000000..7a4a247bd57 --- /dev/null +++ b/patches/features/all/rt/net-fix-iptable-xt-write-recseq-begin-rt-fallout.patch @@ -0,0 +1,76 @@ +Subject: net: netfilter: Serialize xt_write_recseq sections on RT +From: Thomas Gleixner +Date: Sun, 28 Oct 2012 11:18:08 +0100 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +The netfilter code relies only on the implicit semantics of +local_bh_disable() for serializing wt_write_recseq sections. RT breaks +that and needs explicit serialization here. + +Reported-by: Peter LaDow +Signed-off-by: Thomas Gleixner + +--- + include/linux/netfilter/x_tables.h | 7 +++++++ + net/netfilter/core.c | 6 ++++++ + 2 files changed, 13 insertions(+) + +--- a/include/linux/netfilter/x_tables.h ++++ b/include/linux/netfilter/x_tables.h +@@ -6,6 +6,7 @@ + #include + #include + #include ++#include + #include + + /* Test a struct->invflags and a boolean for inequality */ +@@ -338,6 +339,8 @@ void xt_free_table_info(struct xt_table_ + */ + DECLARE_PER_CPU(seqcount_t, xt_recseq); + ++DECLARE_LOCAL_IRQ_LOCK(xt_write_lock); ++ + /* xt_tee_enabled - true if x_tables needs to handle reentrancy + * + * Enabled if current ip(6)tables ruleset has at least one -j TEE rule. +@@ -358,6 +361,9 @@ static inline unsigned int xt_write_recs + { + unsigned int addend; + ++ /* RT protection */ ++ local_lock(xt_write_lock); ++ + /* + * Low order bit of sequence is set if we already + * called xt_write_recseq_begin(). +@@ -388,6 +394,7 @@ static inline void xt_write_recseq_end(u + /* this is kind of a write_seqcount_end(), but addend is 0 or 1 */ + smp_wmb(); + __this_cpu_add(xt_recseq.sequence, addend); ++ local_unlock(xt_write_lock); + } + + /* +--- a/net/netfilter/core.c ++++ b/net/netfilter/core.c +@@ -21,6 +21,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -28,6 +29,11 @@ + + #include "nf_internals.h" + ++#ifdef CONFIG_PREEMPT_RT_BASE ++DEFINE_LOCAL_IRQ_LOCK(xt_write_lock); ++EXPORT_PER_CPU_SYMBOL(xt_write_lock); ++#endif ++ + static DEFINE_MUTEX(afinfo_mutex); + + const struct nf_afinfo __rcu *nf_afinfo[NFPROTO_NUMPROTO] __read_mostly; diff --git a/patches/features/all/rt/net-make-devnet_rename_seq-a-mutex.patch b/patches/features/all/rt/net-make-devnet_rename_seq-a-mutex.patch new file mode 100644 index 00000000000..b5ed0398e4e --- /dev/null +++ b/patches/features/all/rt/net-make-devnet_rename_seq-a-mutex.patch @@ -0,0 +1,107 @@ +From: Sebastian Andrzej Siewior +Date: Wed, 20 Mar 2013 18:06:20 +0100 +Subject: net: Add a mutex around devnet_rename_seq +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +On RT write_seqcount_begin() disables preemption and device_rename() +allocates memory with GFP_KERNEL and grabs later the sysfs_mutex +mutex. Serialize with a mutex and add use the non preemption disabling +__write_seqcount_begin(). + +To avoid writer starvation, let the reader grab the mutex and release +it when it detects a writer in progress. This keeps the normal case +(no reader on the fly) fast. + +[ tglx: Instead of replacing the seqcount by a mutex, add the mutex ] + +Signed-off-by: Sebastian Andrzej Siewior +Signed-off-by: Thomas Gleixner +--- + net/core/dev.c | 34 ++++++++++++++++++++-------------- + 1 file changed, 20 insertions(+), 14 deletions(-) + +--- a/net/core/dev.c ++++ b/net/core/dev.c +@@ -195,6 +195,7 @@ static unsigned int napi_gen_id = NR_CPU + static DEFINE_READ_MOSTLY_HASHTABLE(napi_hash, 8); + + static seqcount_t devnet_rename_seq; ++static DEFINE_MUTEX(devnet_rename_mutex); + + static inline void dev_base_seq_inc(struct net *net) + { +@@ -920,7 +921,8 @@ int netdev_get_name(struct net *net, cha + strcpy(name, dev->name); + rcu_read_unlock(); + if (read_seqcount_retry(&devnet_rename_seq, seq)) { +- cond_resched(); ++ mutex_lock(&devnet_rename_mutex); ++ mutex_unlock(&devnet_rename_mutex); + goto retry; + } + +@@ -1189,20 +1191,17 @@ int dev_change_name(struct net_device *d + if (dev->flags & IFF_UP) + return -EBUSY; + +- write_seqcount_begin(&devnet_rename_seq); ++ mutex_lock(&devnet_rename_mutex); ++ __raw_write_seqcount_begin(&devnet_rename_seq); + +- if (strncmp(newname, dev->name, IFNAMSIZ) == 0) { +- write_seqcount_end(&devnet_rename_seq); +- return 0; +- } ++ if (strncmp(newname, dev->name, IFNAMSIZ) == 0) ++ goto outunlock; + + memcpy(oldname, dev->name, IFNAMSIZ); + + err = dev_get_valid_name(net, dev, newname); +- if (err < 0) { +- write_seqcount_end(&devnet_rename_seq); +- return err; +- } ++ if (err < 0) ++ goto outunlock; + + if (oldname[0] && !strchr(oldname, '%')) + netdev_info(dev, "renamed from %s\n", oldname); +@@ -1215,11 +1214,12 @@ int dev_change_name(struct net_device *d + if (ret) { + memcpy(dev->name, oldname, IFNAMSIZ); + dev->name_assign_type = old_assign_type; +- write_seqcount_end(&devnet_rename_seq); +- return ret; ++ err = ret; ++ goto outunlock; + } + +- write_seqcount_end(&devnet_rename_seq); ++ __raw_write_seqcount_end(&devnet_rename_seq); ++ mutex_unlock(&devnet_rename_mutex); + + netdev_adjacent_rename_links(dev, oldname); + +@@ -1240,7 +1240,8 @@ int dev_change_name(struct net_device *d + /* err >= 0 after dev_alloc_name() or stores the first errno */ + if (err >= 0) { + err = ret; +- write_seqcount_begin(&devnet_rename_seq); ++ mutex_lock(&devnet_rename_mutex); ++ __raw_write_seqcount_begin(&devnet_rename_seq); + memcpy(dev->name, oldname, IFNAMSIZ); + memcpy(oldname, newname, IFNAMSIZ); + dev->name_assign_type = old_assign_type; +@@ -1253,6 +1254,11 @@ int dev_change_name(struct net_device *d + } + + return err; ++ ++outunlock: ++ __raw_write_seqcount_end(&devnet_rename_seq); ++ mutex_unlock(&devnet_rename_mutex); ++ return err; + } + + /** diff --git a/patches/features/all/rt/net-move-xmit_recursion-to-per-task-variable-on-RT.patch b/patches/features/all/rt/net-move-xmit_recursion-to-per-task-variable-on-RT.patch new file mode 100644 index 00000000000..0e106635524 --- /dev/null +++ b/patches/features/all/rt/net-move-xmit_recursion-to-per-task-variable-on-RT.patch @@ -0,0 +1,151 @@ +From: Sebastian Andrzej Siewior +Date: Wed, 13 Jan 2016 15:55:02 +0100 +Subject: net: move xmit_recursion to per-task variable on -RT +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +A softirq on -RT can be preempted. That means one task is in +__dev_queue_xmit(), gets preempted and another task may enter +__dev_queue_xmit() aw well. netperf together with a bridge device +will then trigger the `recursion alert` because each task increments +the xmit_recursion variable which is per-CPU. +A virtual device like br0 is required to trigger this warning. + +This patch moves the counter to per task instead per-CPU so it counts +the recursion properly on -RT. + +Cc: stable-rt@vger.kernel.org +Signed-off-by: Sebastian Andrzej Siewior +--- + include/linux/netdevice.h | 41 ++++++++++++++++++++++++++++++++++++++++- + include/linux/sched.h | 3 +++ + net/core/dev.c | 9 +++++---- + net/core/filter.c | 6 +++--- + 4 files changed, 51 insertions(+), 8 deletions(-) + +--- a/include/linux/netdevice.h ++++ b/include/linux/netdevice.h +@@ -2433,14 +2433,53 @@ void netdev_freemem(struct net_device *d + void synchronize_net(void); + int init_dummy_netdev(struct net_device *dev); + +-DECLARE_PER_CPU(int, xmit_recursion); + #define XMIT_RECURSION_LIMIT 10 ++#ifdef CONFIG_PREEMPT_RT_FULL ++static inline int dev_recursion_level(void) ++{ ++ return current->xmit_recursion; ++} ++ ++static inline int xmit_rec_read(void) ++{ ++ return current->xmit_recursion; ++} ++ ++static inline void xmit_rec_inc(void) ++{ ++ current->xmit_recursion++; ++} ++ ++static inline void xmit_rec_dec(void) ++{ ++ current->xmit_recursion--; ++} ++ ++#else ++ ++DECLARE_PER_CPU(int, xmit_recursion); + + static inline int dev_recursion_level(void) + { + return this_cpu_read(xmit_recursion); + } + ++static inline int xmit_rec_read(void) ++{ ++ return __this_cpu_read(xmit_recursion); ++} ++ ++static inline void xmit_rec_inc(void) ++{ ++ __this_cpu_inc(xmit_recursion); ++} ++ ++static inline void xmit_rec_dec(void) ++{ ++ __this_cpu_dec(xmit_recursion); ++} ++#endif ++ + struct net_device *dev_get_by_index(struct net *net, int ifindex); + struct net_device *__dev_get_by_index(struct net *net, int ifindex); + struct net_device *dev_get_by_index_rcu(struct net *net, int ifindex); +--- a/include/linux/sched.h ++++ b/include/linux/sched.h +@@ -1107,6 +1107,9 @@ struct task_struct { + #ifdef CONFIG_DEBUG_ATOMIC_SLEEP + unsigned long task_state_change; + #endif ++#ifdef CONFIG_PREEMPT_RT_FULL ++ int xmit_recursion; ++#endif + int pagefault_disabled; + #ifdef CONFIG_MMU + struct task_struct *oom_reaper_list; +--- a/net/core/dev.c ++++ b/net/core/dev.c +@@ -3222,8 +3222,10 @@ static void skb_update_prio(struct sk_bu + #define skb_update_prio(skb) + #endif + ++#ifndef CONFIG_PREEMPT_RT_FULL + DEFINE_PER_CPU(int, xmit_recursion); + EXPORT_SYMBOL(xmit_recursion); ++#endif + + /** + * dev_loopback_xmit - loop back @skb +@@ -3464,8 +3466,7 @@ static int __dev_queue_xmit(struct sk_bu + int cpu = smp_processor_id(); /* ok because BHs are off */ + + if (txq->xmit_lock_owner != cpu) { +- if (unlikely(__this_cpu_read(xmit_recursion) > +- XMIT_RECURSION_LIMIT)) ++ if (unlikely(xmit_rec_read() > XMIT_RECURSION_LIMIT)) + goto recursion_alert; + + skb = validate_xmit_skb(skb, dev); +@@ -3475,9 +3476,9 @@ static int __dev_queue_xmit(struct sk_bu + HARD_TX_LOCK(dev, txq, cpu); + + if (!netif_xmit_stopped(txq)) { +- __this_cpu_inc(xmit_recursion); ++ xmit_rec_inc(); + skb = dev_hard_start_xmit(skb, dev, txq, &rc); +- __this_cpu_dec(xmit_recursion); ++ xmit_rec_dec(); + if (dev_xmit_complete(rc)) { + HARD_TX_UNLOCK(dev, txq); + goto out; +--- a/net/core/filter.c ++++ b/net/core/filter.c +@@ -1694,7 +1694,7 @@ static inline int __bpf_tx_skb(struct ne + { + int ret; + +- if (unlikely(__this_cpu_read(xmit_recursion) > XMIT_RECURSION_LIMIT)) { ++ if (unlikely(xmit_rec_read() > XMIT_RECURSION_LIMIT)) { + net_crit_ratelimited("bpf: recursion limit reached on datapath, buggy bpf program?\n"); + kfree_skb(skb); + return -ENETDOWN; +@@ -1702,9 +1702,9 @@ static inline int __bpf_tx_skb(struct ne + + skb->dev = dev; + +- __this_cpu_inc(xmit_recursion); ++ xmit_rec_inc(); + ret = dev_queue_xmit(skb); +- __this_cpu_dec(xmit_recursion); ++ xmit_rec_dec(); + + return ret; + } diff --git a/patches/features/all/rt/net-prevent-abba-deadlock.patch b/patches/features/all/rt/net-prevent-abba-deadlock.patch new file mode 100644 index 00000000000..7b560f70b45 --- /dev/null +++ b/patches/features/all/rt/net-prevent-abba-deadlock.patch @@ -0,0 +1,112 @@ +Subject: net-flip-lock-dep-thingy.patch +From: Thomas Gleixner +Date: Tue, 28 Jun 2011 10:59:58 +0200 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +======================================================= +[ INFO: possible circular locking dependency detected ] +3.0.0-rc3+ #26 +------------------------------------------------------- +ip/1104 is trying to acquire lock: + (local_softirq_lock){+.+...}, at: [] __local_lock+0x25/0x68 + +but task is already holding lock: + (sk_lock-AF_INET){+.+...}, at: [] lock_sock+0x10/0x12 + +which lock already depends on the new lock. + + +the existing dependency chain (in reverse order) is: + +-> #1 (sk_lock-AF_INET){+.+...}: + [] lock_acquire+0x103/0x12e + [] lock_sock_nested+0x82/0x92 + [] lock_sock+0x10/0x12 + [] tcp_close+0x1b/0x355 + [] inet_release+0xc3/0xcd + [] sock_release+0x1f/0x74 + [] sock_close+0x27/0x2b + [] fput+0x11d/0x1e3 + [] filp_close+0x70/0x7b + [] sys_close+0xf8/0x13d + [] system_call_fastpath+0x16/0x1b + +-> #0 (local_softirq_lock){+.+...}: + [] __lock_acquire+0xacc/0xdc8 + [] lock_acquire+0x103/0x12e + [] _raw_spin_lock+0x3b/0x4a + [] __local_lock+0x25/0x68 + [] local_bh_disable+0x36/0x3b + [] _raw_write_lock_bh+0x16/0x4f + [] tcp_close+0x159/0x355 + [] inet_release+0xc3/0xcd + [] sock_release+0x1f/0x74 + [] sock_close+0x27/0x2b + [] fput+0x11d/0x1e3 + [] filp_close+0x70/0x7b + [] sys_close+0xf8/0x13d + [] system_call_fastpath+0x16/0x1b + +other info that might help us debug this: + + Possible unsafe locking scenario: + + CPU0 CPU1 + ---- ---- + lock(sk_lock-AF_INET); + lock(local_softirq_lock); + lock(sk_lock-AF_INET); + lock(local_softirq_lock); + + *** DEADLOCK *** + +1 lock held by ip/1104: + #0: (sk_lock-AF_INET){+.+...}, at: [] lock_sock+0x10/0x12 + +stack backtrace: +Pid: 1104, comm: ip Not tainted 3.0.0-rc3+ #26 +Call Trace: + [] print_circular_bug+0x1f8/0x209 + [] __lock_acquire+0xacc/0xdc8 + [] ? __local_lock+0x25/0x68 + [] lock_acquire+0x103/0x12e + [] ? __local_lock+0x25/0x68 + [] ? get_parent_ip+0x11/0x41 + [] _raw_spin_lock+0x3b/0x4a + [] ? __local_lock+0x25/0x68 + [] ? get_parent_ip+0x28/0x41 + [] __local_lock+0x25/0x68 + [] local_bh_disable+0x36/0x3b + [] ? lock_sock+0x10/0x12 + [] _raw_write_lock_bh+0x16/0x4f + [] tcp_close+0x159/0x355 + [] inet_release+0xc3/0xcd + [] sock_release+0x1f/0x74 + [] sock_close+0x27/0x2b + [] fput+0x11d/0x1e3 + [] filp_close+0x70/0x7b + [] sys_close+0xf8/0x13d + [] system_call_fastpath+0x16/0x1b + + +Signed-off-by: Thomas Gleixner +--- + net/core/sock.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +--- a/net/core/sock.c ++++ b/net/core/sock.c +@@ -2762,12 +2762,11 @@ void lock_sock_nested(struct sock *sk, i + if (sk->sk_lock.owned) + __lock_sock(sk); + sk->sk_lock.owned = 1; +- spin_unlock(&sk->sk_lock.slock); ++ spin_unlock_bh(&sk->sk_lock.slock); + /* + * The sk_lock has mutex_lock() semantics here: + */ + mutex_acquire(&sk->sk_lock.dep_map, subclass, 0, _RET_IP_); +- local_bh_enable(); + } + EXPORT_SYMBOL(lock_sock_nested); + diff --git a/patches/features/all/rt/net-provide-a-way-to-delegate-processing-a-softirq-t.patch b/patches/features/all/rt/net-provide-a-way-to-delegate-processing-a-softirq-t.patch new file mode 100644 index 00000000000..29ae735b893 --- /dev/null +++ b/patches/features/all/rt/net-provide-a-way-to-delegate-processing-a-softirq-t.patch @@ -0,0 +1,79 @@ +From: Sebastian Andrzej Siewior +Date: Wed, 20 Jan 2016 15:39:05 +0100 +Subject: net: provide a way to delegate processing a softirq to + ksoftirqd +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +If the NET_RX uses up all of his budget it moves the following NAPI +invocations into the `ksoftirqd`. On -RT it does not do so. Instead it +rises the NET_RX softirq in its current context again. + +In order to get closer to mainline's behaviour this patch provides +__raise_softirq_irqoff_ksoft() which raises the softirq in the ksoftird. + +Cc: stable-rt@vger.kernel.org +Signed-off-by: Sebastian Andrzej Siewior +--- + include/linux/interrupt.h | 8 ++++++++ + kernel/softirq.c | 21 +++++++++++++++++++++ + net/core/dev.c | 2 +- + 3 files changed, 30 insertions(+), 1 deletion(-) + +--- a/include/linux/interrupt.h ++++ b/include/linux/interrupt.h +@@ -519,6 +519,14 @@ extern void thread_do_softirq(void); + extern void open_softirq(int nr, void (*action)(struct softirq_action *)); + extern void softirq_init(void); + extern void __raise_softirq_irqoff(unsigned int nr); ++#ifdef CONFIG_PREEMPT_RT_FULL ++extern void __raise_softirq_irqoff_ksoft(unsigned int nr); ++#else ++static inline void __raise_softirq_irqoff_ksoft(unsigned int nr) ++{ ++ __raise_softirq_irqoff(nr); ++} ++#endif + + extern void raise_softirq_irqoff(unsigned int nr); + extern void raise_softirq(unsigned int nr); +--- a/kernel/softirq.c ++++ b/kernel/softirq.c +@@ -686,6 +686,27 @@ void __raise_softirq_irqoff(unsigned int + } + + /* ++ * Same as __raise_softirq_irqoff() but will process them in ksoftirqd ++ */ ++void __raise_softirq_irqoff_ksoft(unsigned int nr) ++{ ++ unsigned int mask; ++ ++ if (WARN_ON_ONCE(!__this_cpu_read(ksoftirqd) || ++ !__this_cpu_read(ktimer_softirqd))) ++ return; ++ mask = 1UL << nr; ++ ++ trace_softirq_raise(nr); ++ or_softirq_pending(mask); ++ if (mask & TIMER_SOFTIRQS) ++ __this_cpu_read(ktimer_softirqd)->softirqs_raised |= mask; ++ else ++ __this_cpu_read(ksoftirqd)->softirqs_raised |= mask; ++ wakeup_proper_softirq(nr); ++} ++ ++/* + * This function must run with irqs disabled! + */ + void raise_softirq_irqoff(unsigned int nr) +--- a/net/core/dev.c ++++ b/net/core/dev.c +@@ -5643,7 +5643,7 @@ static __latent_entropy void net_rx_acti + list_splice_tail(&repoll, &list); + list_splice(&list, &sd->poll_list); + if (!list_empty(&sd->poll_list)) +- __raise_softirq_irqoff(NET_RX_SOFTIRQ); ++ __raise_softirq_irqoff_ksoft(NET_RX_SOFTIRQ); + + net_rps_action_and_irq_enable(sd); + out: diff --git a/patches/features/all/rt/net-sched-dev_deactivate_many-use-msleep-1-instead-o.patch b/patches/features/all/rt/net-sched-dev_deactivate_many-use-msleep-1-instead-o.patch new file mode 100644 index 00000000000..aea400b65c6 --- /dev/null +++ b/patches/features/all/rt/net-sched-dev_deactivate_many-use-msleep-1-instead-o.patch @@ -0,0 +1,58 @@ +From: Marc Kleine-Budde +Date: Wed, 5 Mar 2014 00:49:47 +0100 +Subject: net: sched: Use msleep() instead of yield() +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +On PREEMPT_RT enabled systems the interrupt handler run as threads at prio 50 +(by default). If a high priority userspace process tries to shut down a busy +network interface it might spin in a yield loop waiting for the device to +become idle. With the interrupt thread having a lower priority than the +looping process it might never be scheduled and so result in a deadlock on UP +systems. + +With Magic SysRq the following backtrace can be produced: + +> test_app R running 0 174 168 0x00000000 +> [] (__schedule+0x220/0x3fc) from [] (preempt_schedule_irq+0x48/0x80) +> [] (preempt_schedule_irq+0x48/0x80) from [] (svc_preempt+0x8/0x20) +> [] (svc_preempt+0x8/0x20) from [] (local_bh_enable+0x18/0x88) +> [] (local_bh_enable+0x18/0x88) from [] (dev_deactivate_many+0x220/0x264) +> [] (dev_deactivate_many+0x220/0x264) from [] (__dev_close_many+0x64/0xd4) +> [] (__dev_close_many+0x64/0xd4) from [] (__dev_close+0x28/0x3c) +> [] (__dev_close+0x28/0x3c) from [] (__dev_change_flags+0x88/0x130) +> [] (__dev_change_flags+0x88/0x130) from [] (dev_change_flags+0x10/0x48) +> [] (dev_change_flags+0x10/0x48) from [] (do_setlink+0x370/0x7ec) +> [] (do_setlink+0x370/0x7ec) from [] (rtnl_newlink+0x2b4/0x450) +> [] (rtnl_newlink+0x2b4/0x450) from [] (rtnetlink_rcv_msg+0x158/0x1f4) +> [] (rtnetlink_rcv_msg+0x158/0x1f4) from [] (netlink_rcv_skb+0xac/0xc0) +> [] (netlink_rcv_skb+0xac/0xc0) from [] (rtnetlink_rcv+0x18/0x24) +> [] (rtnetlink_rcv+0x18/0x24) from [] (netlink_unicast+0x13c/0x198) +> [] (netlink_unicast+0x13c/0x198) from [] (netlink_sendmsg+0x264/0x2e0) +> [] (netlink_sendmsg+0x264/0x2e0) from [] (sock_sendmsg+0x78/0x98) +> [] (sock_sendmsg+0x78/0x98) from [] (___sys_sendmsg.part.25+0x268/0x278) +> [] (___sys_sendmsg.part.25+0x268/0x278) from [] (__sys_sendmsg+0x48/0x78) +> [] (__sys_sendmsg+0x48/0x78) from [] (ret_fast_syscall+0x0/0x2c) + +This patch works around the problem by replacing yield() by msleep(1), giving +the interrupt thread time to finish, similar to other changes contained in the +rt patch set. Using wait_for_completion() instead would probably be a better +solution. + + +Signed-off-by: Marc Kleine-Budde +Signed-off-by: Sebastian Andrzej Siewior +--- + net/sched/sch_generic.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/net/sched/sch_generic.c ++++ b/net/sched/sch_generic.c +@@ -930,7 +930,7 @@ void dev_deactivate_many(struct list_hea + /* Wait for outstanding qdisc_run calls. */ + list_for_each_entry(dev, head, close_list) + while (some_qdisc_is_busy(dev)) +- yield(); ++ msleep(1); + } + + void dev_deactivate(struct net_device *dev) diff --git a/patches/features/all/rt/net-take-the-tcp_sk_lock-lock-with-BH-disabled.patch b/patches/features/all/rt/net-take-the-tcp_sk_lock-lock-with-BH-disabled.patch new file mode 100644 index 00000000000..f07b2ebc4d9 --- /dev/null +++ b/patches/features/all/rt/net-take-the-tcp_sk_lock-lock-with-BH-disabled.patch @@ -0,0 +1,68 @@ +From: Sebastian Andrzej Siewior +Date: Mon, 21 Aug 2017 15:09:13 +0200 +Subject: [PATCH] net: take the tcp_sk_lock lock with BH disabled +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Lockdep may complain about an unsafe locking scenario: +| CPU0 CPU1 +| ---- ---- +| lock((tcp_sk_lock).lock); +| lock(&per_cpu(local_softirq_locks[i], __cpu).lock); +| lock((tcp_sk_lock).lock); +| lock(&per_cpu(local_softirq_locks[i], __cpu).lock); + +in the call paths: + do_current_softirqs -> tcp_v4_send_ack() +vs + tcp_v4_send_reset -> do_current_softirqs(). + +This should not happen since local_softirq_locks is per CPU. Reversing +the order makes lockdep happy. + +Reported-by: Jacek Konieczny +Signed-off-by: Sebastian Andrzej Siewior +--- + net/ipv4/tcp_ipv4.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +--- a/net/ipv4/tcp_ipv4.c ++++ b/net/ipv4/tcp_ipv4.c +@@ -711,8 +711,8 @@ static void tcp_v4_send_reset(const stru + + arg.tos = ip_hdr(skb)->tos; + arg.uid = sock_net_uid(net, sk && sk_fullsock(sk) ? sk : NULL); +- local_lock(tcp_sk_lock); + local_bh_disable(); ++ local_lock(tcp_sk_lock); + ip_send_unicast_reply(*this_cpu_ptr(net->ipv4.tcp_sk), + skb, &TCP_SKB_CB(skb)->header.h4.opt, + ip_hdr(skb)->saddr, ip_hdr(skb)->daddr, +@@ -720,8 +720,8 @@ static void tcp_v4_send_reset(const stru + + __TCP_INC_STATS(net, TCP_MIB_OUTSEGS); + __TCP_INC_STATS(net, TCP_MIB_OUTRSTS); +- local_bh_enable(); + local_unlock(tcp_sk_lock); ++ local_bh_enable(); + + #ifdef CONFIG_TCP_MD5SIG + out: +@@ -799,16 +799,16 @@ static void tcp_v4_send_ack(const struct + arg.bound_dev_if = oif; + arg.tos = tos; + arg.uid = sock_net_uid(net, sk_fullsock(sk) ? sk : NULL); +- local_lock(tcp_sk_lock); + local_bh_disable(); ++ local_lock(tcp_sk_lock); + ip_send_unicast_reply(*this_cpu_ptr(net->ipv4.tcp_sk), + skb, &TCP_SKB_CB(skb)->header.h4.opt, + ip_hdr(skb)->saddr, ip_hdr(skb)->daddr, + &arg, arg.iov[0].iov_len); + + __TCP_INC_STATS(net, TCP_MIB_OUTSEGS); +- local_bh_enable(); + local_unlock(tcp_sk_lock); ++ local_bh_enable(); + } + + static void tcp_v4_timewait_ack(struct sock *sk, struct sk_buff *skb) diff --git a/patches/features/all/rt/net-use-cpu-chill.patch b/patches/features/all/rt/net-use-cpu-chill.patch new file mode 100644 index 00000000000..ef66bc0e501 --- /dev/null +++ b/patches/features/all/rt/net-use-cpu-chill.patch @@ -0,0 +1,63 @@ +Subject: net: Use cpu_chill() instead of cpu_relax() +From: Thomas Gleixner +Date: Wed, 07 Mar 2012 21:10:04 +0100 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Retry loops on RT might loop forever when the modifying side was +preempted. Use cpu_chill() instead of cpu_relax() to let the system +make progress. + +Signed-off-by: Thomas Gleixner + +--- + net/packet/af_packet.c | 5 +++-- + net/rds/ib_rdma.c | 3 ++- + 2 files changed, 5 insertions(+), 3 deletions(-) + +--- a/net/packet/af_packet.c ++++ b/net/packet/af_packet.c +@@ -63,6 +63,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -700,7 +701,7 @@ static void prb_retire_rx_blk_timer_expi + if (BLOCK_NUM_PKTS(pbd)) { + while (atomic_read(&pkc->blk_fill_in_prog)) { + /* Waiting for skb_copy_bits to finish... */ +- cpu_relax(); ++ cpu_chill(); + } + } + +@@ -962,7 +963,7 @@ static void prb_retire_current_block(str + if (!(status & TP_STATUS_BLK_TMO)) { + while (atomic_read(&pkc->blk_fill_in_prog)) { + /* Waiting for skb_copy_bits to finish... */ +- cpu_relax(); ++ cpu_chill(); + } + } + prb_close_block(pkc, pbd, po, status); +--- a/net/rds/ib_rdma.c ++++ b/net/rds/ib_rdma.c +@@ -34,6 +34,7 @@ + #include + #include + #include ++#include + + #include "rds_single_path.h" + #include "ib_mr.h" +@@ -210,7 +211,7 @@ static inline void wait_clean_list_grace + for_each_online_cpu(cpu) { + flag = &per_cpu(clean_list_grace, cpu); + while (test_bit(CLEAN_LIST_BUSY_BIT, flag)) +- cpu_relax(); ++ cpu_chill(); + } + } + diff --git a/patches/features/all/rt/net-use-trylock-in-icmp_sk.patch b/patches/features/all/rt/net-use-trylock-in-icmp_sk.patch new file mode 100644 index 00000000000..76053792ca6 --- /dev/null +++ b/patches/features/all/rt/net-use-trylock-in-icmp_sk.patch @@ -0,0 +1,74 @@ +From: Sebastian Andrzej Siewior +Date: Thu, 21 Sep 2017 14:42:04 +0200 +Subject: net: use trylock in icmp_sk +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +The locking path can be recursive (same as for sk->sk_lock.slock) and +therefore we need a trylock version for the locallock, too. + +Cc: stable-rt@vger.kernel.org +Reported-by: Jacek Konieczny +Signed-off-by: Sebastian Andrzej Siewior +--- + net/ipv4/icmp.c | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +--- a/net/ipv4/icmp.c ++++ b/net/ipv4/icmp.c +@@ -217,12 +217,16 @@ static inline struct sock *icmp_xmit_loc + { + struct sock *sk; + ++ if (!local_trylock(icmp_sk_lock)) ++ return NULL; ++ + sk = icmp_sk(net); + + if (unlikely(!spin_trylock(&sk->sk_lock.slock))) { + /* This can happen if the output path signals a + * dst_link_failure() for an outgoing ICMP packet. + */ ++ local_unlock(icmp_sk_lock); + return NULL; + } + return sk; +@@ -231,6 +235,7 @@ static inline struct sock *icmp_xmit_loc + static inline void icmp_xmit_unlock(struct sock *sk) + { + spin_unlock(&sk->sk_lock.slock); ++ local_unlock(icmp_sk_lock); + } + + int sysctl_icmp_msgs_per_sec __read_mostly = 1000; +@@ -420,7 +425,6 @@ static void icmp_reply(struct icmp_bxm * + + /* Needed by both icmp_global_allow and icmp_xmit_lock */ + local_bh_disable(); +- local_lock(icmp_sk_lock); + + /* global icmp_msgs_per_sec */ + if (!icmpv4_global_allow(net, type, code)) +@@ -465,7 +469,6 @@ static void icmp_reply(struct icmp_bxm * + out_unlock: + icmp_xmit_unlock(sk); + out_bh_enable: +- local_unlock(icmp_sk_lock); + local_bh_enable(); + } + +@@ -661,7 +664,6 @@ void icmp_send(struct sk_buff *skb_in, i + + /* Needed by both icmp_global_allow and icmp_xmit_lock */ + local_bh_disable(); +- local_lock(icmp_sk_lock); + + /* Check global sysctl_icmp_msgs_per_sec ratelimit, unless + * incoming dev is loopback. If outgoing dev change to not be +@@ -750,7 +752,6 @@ void icmp_send(struct sk_buff *skb_in, i + out_unlock: + icmp_xmit_unlock(sk); + out_bh_enable: +- local_unlock(icmp_sk_lock); + local_bh_enable(); + out:; + } diff --git a/patches/features/all/rt/net-wireless-warn-nort.patch b/patches/features/all/rt/net-wireless-warn-nort.patch new file mode 100644 index 00000000000..508c4eea7ec --- /dev/null +++ b/patches/features/all/rt/net-wireless-warn-nort.patch @@ -0,0 +1,24 @@ +Subject: net/wireless: Use WARN_ON_NORT() +From: Thomas Gleixner +Date: Thu, 21 Jul 2011 21:05:33 +0200 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +The softirq counter is meaningless on RT, so the check triggers a +false positive. + +Signed-off-by: Thomas Gleixner +--- + net/mac80211/rx.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/net/mac80211/rx.c ++++ b/net/mac80211/rx.c +@@ -4250,7 +4250,7 @@ void ieee80211_rx_napi(struct ieee80211_ + struct ieee80211_supported_band *sband; + struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb); + +- WARN_ON_ONCE(softirq_count() == 0); ++ WARN_ON_ONCE_NONRT(softirq_count() == 0); + + if (WARN_ON(status->band >= NUM_NL80211_BANDS)) + goto drop; diff --git a/patches/features/all/rt/net_disable_NET_RX_BUSY_POLL.patch b/patches/features/all/rt/net_disable_NET_RX_BUSY_POLL.patch new file mode 100644 index 00000000000..953bfaf9d81 --- /dev/null +++ b/patches/features/all/rt/net_disable_NET_RX_BUSY_POLL.patch @@ -0,0 +1,29 @@ +From: Sebastian Andrzej Siewior +Date: Sat, 27 May 2017 19:02:06 +0200 +Subject: net/core: disable NET_RX_BUSY_POLL +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +sk_busy_loop() does preempt_disable() followed by a few operations which can +take sleeping locks and may get long. +I _think_ that we could use preempt_disable_nort() (in sk_busy_loop()) instead +but after a successfull cmpxchg(&napi->state, …) we would gain the ressource +and could be scheduled out. At this point nobody knows who (which context) owns +it and so it could take a while until the state is realeased and napi_poll() +could be invoked again. + +Signed-off-by: Sebastian Andrzej Siewior +--- + net/Kconfig | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/net/Kconfig ++++ b/net/Kconfig +@@ -272,7 +272,7 @@ config CGROUP_NET_CLASSID + + config NET_RX_BUSY_POLL + bool +- default y ++ default y if !PREEMPT_RT_FULL + + config BQL + bool diff --git a/patches/features/all/rt/nohz-Prevent-erroneous-tick-stop-invocations.patch b/patches/features/all/rt/nohz-Prevent-erroneous-tick-stop-invocations.patch new file mode 100644 index 00000000000..40e1472e5cd --- /dev/null +++ b/patches/features/all/rt/nohz-Prevent-erroneous-tick-stop-invocations.patch @@ -0,0 +1,54 @@ +From: Thomas Gleixner +Date: Fri, 22 Dec 2017 15:51:13 +0100 +Subject: [PATCH 2/4] nohz: Prevent erroneous tick stop invocations +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +The conditions in irq_exit() to invoke tick_nohz_irq_exit() are: + + if ((idle_cpu(cpu) && !need_resched()) || tick_nohz_full_cpu(cpu)) + +This is too permissive in various aspects: + + 1) If need_resched() is set, then the tick cannot be stopped whether + the CPU is idle or in nohz full mode. + + 2) If need_resched() is not set, but softirqs are pending then this is an + indication that the softirq code punted and delegated the execution to + softirqd. need_resched() is not true because the current interrupted + task takes precedence over softirqd. + +Invoking tick_nohz_irq_exit() in these cases can cause an endless loop of +timer interrupts because the timer wheel contains an expired timer, but +softirqs are not yet executed. So it returns an immediate expiry request, +which causes the timer to fire immediately again. Lather, rinse and +repeat.... + +Prevent that by making the conditions proper and only allow invokation when +in idle or nohz full mode and neither need_resched() nor +local_softirq_pending() are set. + +Signed-off-by: Thomas Gleixner +[ bigeasy: XXX still needed for RT, to avoid hangup due to pending timer softirq, + keep it RT only ] +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/softirq.c | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +--- a/kernel/softirq.c ++++ b/kernel/softirq.c +@@ -381,7 +381,13 @@ static inline void tick_irq_exit(void) + int cpu = smp_processor_id(); + + /* Make sure that timer wheel updates are propagated */ +- if ((idle_cpu(cpu) && !need_resched()) || tick_nohz_full_cpu(cpu)) { ++#ifdef CONFIG_PREEMPT_RT_BASE ++ if ((idle_cpu(cpu) || tick_nohz_full_cpu(cpu)) && ++ !need_resched() && !local_softirq_pending()) ++#else ++ if ((idle_cpu(cpu) && !need_resched()) || tick_nohz_full_cpu(cpu)) ++#endif ++ { + if (!in_interrupt()) + tick_nohz_irq_exit(); + } diff --git a/patches/features/all/rt/oleg-signal-rt-fix.patch b/patches/features/all/rt/oleg-signal-rt-fix.patch new file mode 100644 index 00000000000..004f105a66c --- /dev/null +++ b/patches/features/all/rt/oleg-signal-rt-fix.patch @@ -0,0 +1,143 @@ +From: Oleg Nesterov +Date: Tue, 14 Jul 2015 14:26:34 +0200 +Subject: signal/x86: Delay calling signals in atomic +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +On x86_64 we must disable preemption before we enable interrupts +for stack faults, int3 and debugging, because the current task is using +a per CPU debug stack defined by the IST. If we schedule out, another task +can come in and use the same stack and cause the stack to be corrupted +and crash the kernel on return. + +When CONFIG_PREEMPT_RT_FULL is enabled, spin_locks become mutexes, and +one of these is the spin lock used in signal handling. + +Some of the debug code (int3) causes do_trap() to send a signal. +This function calls a spin lock that has been converted to a mutex +and has the possibility to sleep. If this happens, the above issues with +the corrupted stack is possible. + +Instead of calling the signal right away, for PREEMPT_RT and x86_64, +the signal information is stored on the stacks task_struct and +TIF_NOTIFY_RESUME is set. Then on exit of the trap, the signal resume +code will send the signal when preemption is enabled. + +[ rostedt: Switched from #ifdef CONFIG_PREEMPT_RT_FULL to + ARCH_RT_DELAYS_SIGNAL_SEND and added comments to the code. ] + + +Signed-off-by: Oleg Nesterov +Signed-off-by: Steven Rostedt +Signed-off-by: Thomas Gleixner +--- + + arch/x86/entry/common.c | 7 +++++++ + arch/x86/include/asm/signal.h | 13 +++++++++++++ + include/linux/sched.h | 4 ++++ + kernel/signal.c | 37 +++++++++++++++++++++++++++++++++++-- + 4 files changed, 59 insertions(+), 2 deletions(-) + +--- a/arch/x86/entry/common.c ++++ b/arch/x86/entry/common.c +@@ -150,6 +150,13 @@ static void exit_to_usermode_loop(struct + if (cached_flags & _TIF_NEED_RESCHED) + schedule(); + ++#ifdef ARCH_RT_DELAYS_SIGNAL_SEND ++ if (unlikely(current->forced_info.si_signo)) { ++ struct task_struct *t = current; ++ force_sig_info(t->forced_info.si_signo, &t->forced_info, t); ++ t->forced_info.si_signo = 0; ++ } ++#endif + if (cached_flags & _TIF_UPROBE) + uprobe_notify_resume(regs); + +--- a/arch/x86/include/asm/signal.h ++++ b/arch/x86/include/asm/signal.h +@@ -28,6 +28,19 @@ typedef struct { + #define SA_IA32_ABI 0x02000000u + #define SA_X32_ABI 0x01000000u + ++/* ++ * Because some traps use the IST stack, we must keep preemption ++ * disabled while calling do_trap(), but do_trap() may call ++ * force_sig_info() which will grab the signal spin_locks for the ++ * task, which in PREEMPT_RT_FULL are mutexes. By defining ++ * ARCH_RT_DELAYS_SIGNAL_SEND the force_sig_info() will set ++ * TIF_NOTIFY_RESUME and set up the signal to be sent on exit of the ++ * trap. ++ */ ++#if defined(CONFIG_PREEMPT_RT_FULL) && defined(CONFIG_X86_64) ++#define ARCH_RT_DELAYS_SIGNAL_SEND ++#endif ++ + #ifndef CONFIG_COMPAT + typedef sigset_t compat_sigset_t; + #endif +--- a/include/linux/sched.h ++++ b/include/linux/sched.h +@@ -795,6 +795,10 @@ struct task_struct { + /* Restored if set_restore_sigmask() was used: */ + sigset_t saved_sigmask; + struct sigpending pending; ++#ifdef CONFIG_PREEMPT_RT_FULL ++ /* TODO: move me into ->restart_block ? */ ++ struct siginfo forced_info; ++#endif + unsigned long sas_ss_sp; + size_t sas_ss_size; + unsigned int sas_ss_flags; +--- a/kernel/signal.c ++++ b/kernel/signal.c +@@ -1238,8 +1238,8 @@ int do_send_sig_info(int sig, struct sig + * We don't want to have recursive SIGSEGV's etc, for example, + * that is why we also clear SIGNAL_UNKILLABLE. + */ +-int +-force_sig_info(int sig, struct siginfo *info, struct task_struct *t) ++static int ++do_force_sig_info(int sig, struct siginfo *info, struct task_struct *t) + { + unsigned long int flags; + int ret, blocked, ignored; +@@ -1268,6 +1268,39 @@ force_sig_info(int sig, struct siginfo * + return ret; + } + ++int force_sig_info(int sig, struct siginfo *info, struct task_struct *t) ++{ ++/* ++ * On some archs, PREEMPT_RT has to delay sending a signal from a trap ++ * since it can not enable preemption, and the signal code's spin_locks ++ * turn into mutexes. Instead, it must set TIF_NOTIFY_RESUME which will ++ * send the signal on exit of the trap. ++ */ ++#ifdef ARCH_RT_DELAYS_SIGNAL_SEND ++ if (in_atomic()) { ++ if (WARN_ON_ONCE(t != current)) ++ return 0; ++ if (WARN_ON_ONCE(t->forced_info.si_signo)) ++ return 0; ++ ++ if (is_si_special(info)) { ++ WARN_ON_ONCE(info != SEND_SIG_PRIV); ++ t->forced_info.si_signo = sig; ++ t->forced_info.si_errno = 0; ++ t->forced_info.si_code = SI_KERNEL; ++ t->forced_info.si_pid = 0; ++ t->forced_info.si_uid = 0; ++ } else { ++ t->forced_info = *info; ++ } ++ ++ set_tsk_thread_flag(t, TIF_NOTIFY_RESUME); ++ return 0; ++ } ++#endif ++ return do_force_sig_info(sig, info, t); ++} ++ + /* + * Nuke all other threads in the group. + */ diff --git a/patches/features/all/rt/panic-disable-random-on-rt.patch b/patches/features/all/rt/panic-disable-random-on-rt.patch new file mode 100644 index 00000000000..71c3e374ea2 --- /dev/null +++ b/patches/features/all/rt/panic-disable-random-on-rt.patch @@ -0,0 +1,27 @@ +From: Thomas Gleixner +Date: Tue, 14 Jul 2015 14:26:34 +0200 +Subject: panic: skip get_random_bytes for RT_FULL in init_oops_id +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Disable on -RT. If this is invoked from irq-context we will have problems +to acquire the sleeping lock. + +Signed-off-by: Thomas Gleixner +--- + kernel/panic.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/kernel/panic.c ++++ b/kernel/panic.c +@@ -482,9 +482,11 @@ static u64 oops_id; + + static int init_oops_id(void) + { ++#ifndef CONFIG_PREEMPT_RT_FULL + if (!oops_id) + get_random_bytes(&oops_id, sizeof(oops_id)); + else ++#endif + oops_id++; + + return 0; diff --git a/patches/features/all/rt/patch-to-introduce-rcu-bh-qs-where-safe-from-softirq.patch b/patches/features/all/rt/patch-to-introduce-rcu-bh-qs-where-safe-from-softirq.patch new file mode 100644 index 00000000000..835f968de2e --- /dev/null +++ b/patches/features/all/rt/patch-to-introduce-rcu-bh-qs-where-safe-from-softirq.patch @@ -0,0 +1,109 @@ +Subject: rcu: Make ksoftirqd do RCU quiescent states +From: "Paul E. McKenney" +Date: Wed, 5 Oct 2011 11:45:18 -0700 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Implementing RCU-bh in terms of RCU-preempt makes the system vulnerable +to network-based denial-of-service attacks. This patch therefore +makes __do_softirq() invoke rcu_bh_qs(), but only when __do_softirq() +is running in ksoftirqd context. A wrapper layer in interposed so that +other calls to __do_softirq() avoid invoking rcu_bh_qs(). The underlying +function __do_softirq_common() does the actual work. + +The reason that rcu_bh_qs() is bad in these non-ksoftirqd contexts is +that there might be a local_bh_enable() inside an RCU-preempt read-side +critical section. This local_bh_enable() can invoke __do_softirq() +directly, so if __do_softirq() were to invoke rcu_bh_qs() (which just +calls rcu_preempt_qs() in the PREEMPT_RT_FULL case), there would be +an illegal RCU-preempt quiescent state in the middle of an RCU-preempt +read-side critical section. Therefore, quiescent states can only happen +in cases where __do_softirq() is invoked directly from ksoftirqd. + +Signed-off-by: Paul E. McKenney +Link: http://lkml.kernel.org/r/20111005184518.GA21601@linux.vnet.ibm.com +Signed-off-by: Thomas Gleixner + +--- + include/linux/rcupdate.h | 4 ---- + kernel/rcu/tree.c | 9 ++++++++- + kernel/rcu/tree_plugin.h | 8 +++++++- + 3 files changed, 15 insertions(+), 6 deletions(-) + +--- a/include/linux/rcupdate.h ++++ b/include/linux/rcupdate.h +@@ -117,11 +117,7 @@ static inline int rcu_preempt_depth(void + void rcu_init(void); + extern int rcu_scheduler_active __read_mostly; + void rcu_sched_qs(void); +-#ifdef CONFIG_PREEMPT_RT_FULL +-static inline void rcu_bh_qs(void) { } +-#else + void rcu_bh_qs(void); +-#endif + void rcu_check_callbacks(int user); + void rcu_report_dead(unsigned int cpu); + void rcu_cpu_starting(unsigned int cpu); +--- a/kernel/rcu/tree.c ++++ b/kernel/rcu/tree.c +@@ -243,7 +243,14 @@ void rcu_sched_qs(void) + this_cpu_ptr(&rcu_sched_data), true); + } + +-#ifndef CONFIG_PREEMPT_RT_FULL ++#ifdef CONFIG_PREEMPT_RT_FULL ++static void rcu_preempt_qs(void); ++ ++void rcu_bh_qs(void) ++{ ++ rcu_preempt_qs(); ++} ++#else + void rcu_bh_qs(void) + { + RCU_LOCKDEP_WARN(preemptible(), "rcu_bh_qs() invoked with preemption enabled!!!"); +--- a/kernel/rcu/tree_plugin.h ++++ b/kernel/rcu/tree_plugin.h +@@ -29,6 +29,7 @@ + #include + #include + #include ++#include + #include + #include "../time/tick-internal.h" + #include "../locking/rtmutex_common.h" +@@ -1299,7 +1300,7 @@ static void rcu_prepare_kthreads(int cpu + + #endif /* #else #ifdef CONFIG_RCU_BOOST */ + +-#if !defined(CONFIG_RCU_FAST_NO_HZ) ++#if !defined(CONFIG_RCU_FAST_NO_HZ) || defined(CONFIG_PREEMPT_RT_FULL) + + /* + * Check to see if any future RCU-related work will need to be done +@@ -1315,7 +1316,9 @@ int rcu_needs_cpu(u64 basemono, u64 *nex + *nextevt = KTIME_MAX; + return rcu_cpu_has_callbacks(NULL); + } ++#endif /* !defined(CONFIG_RCU_FAST_NO_HZ) || defined(CONFIG_PREEMPT_RT_FULL) */ + ++#if !defined(CONFIG_RCU_FAST_NO_HZ) + /* + * Because we do not have RCU_FAST_NO_HZ, don't bother cleaning up + * after it. +@@ -1411,6 +1414,8 @@ static bool __maybe_unused rcu_try_advan + return cbs_ready; + } + ++#ifndef CONFIG_PREEMPT_RT_FULL ++ + /* + * Allow the CPU to enter dyntick-idle mode unless it has callbacks ready + * to invoke. If the CPU has callbacks, try to advance them. Tell the +@@ -1453,6 +1458,7 @@ int rcu_needs_cpu(u64 basemono, u64 *nex + *nextevt = basemono + dj * TICK_NSEC; + return 0; + } ++#endif /* #ifndef CONFIG_PREEMPT_RT_FULL */ + + /* + * Prepare a CPU for idle from an RCU perspective. The first major task diff --git a/patches/features/all/rt/pci-switchtec-Don-t-use-completion-s-wait-queue.patch b/patches/features/all/rt/pci-switchtec-Don-t-use-completion-s-wait-queue.patch new file mode 100644 index 00000000000..b7213058d89 --- /dev/null +++ b/patches/features/all/rt/pci-switchtec-Don-t-use-completion-s-wait-queue.patch @@ -0,0 +1,109 @@ +From: Sebastian Andrzej Siewior +Date: Wed, 4 Oct 2017 10:24:23 +0200 +Subject: [PATCH] pci/switchtec: Don't use completion's wait queue +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +The poll callback is using completion's wait_queue_head_t member and +puts it in poll_wait() so the poll() caller gets a wakeup after command +completed. This does not work on RT because we don't have a +wait_queue_head_t in our completion implementation. Nobody in tree does +like that in tree so this is the only driver that breaks. + +Instead of using the completion here is waitqueue with a status flag as +suggested by Logan. + +I don't have the HW so I have no idea if it works as expected, so please +test it. + +Cc: Kurt Schwemmer +Cc: Logan Gunthorpe +Signed-off-by: Sebastian Andrzej Siewior +--- + drivers/pci/switch/switchtec.c | 22 +++++++++++++--------- + 1 file changed, 13 insertions(+), 9 deletions(-) + +--- a/drivers/pci/switch/switchtec.c ++++ b/drivers/pci/switch/switchtec.c +@@ -306,10 +306,11 @@ struct switchtec_user { + + enum mrpc_state state; + +- struct completion comp; ++ wait_queue_head_t cmd_comp; + struct kref kref; + struct list_head list; + ++ bool cmd_done; + u32 cmd; + u32 status; + u32 return_code; +@@ -331,7 +332,7 @@ static struct switchtec_user *stuser_cre + stuser->stdev = stdev; + kref_init(&stuser->kref); + INIT_LIST_HEAD(&stuser->list); +- init_completion(&stuser->comp); ++ init_waitqueue_head(&stuser->cmd_comp); + stuser->event_cnt = atomic_read(&stdev->event_cnt); + + dev_dbg(&stdev->dev, "%s: %p\n", __func__, stuser); +@@ -414,7 +415,7 @@ static int mrpc_queue_cmd(struct switcht + kref_get(&stuser->kref); + stuser->read_len = sizeof(stuser->data); + stuser_set_state(stuser, MRPC_QUEUED); +- init_completion(&stuser->comp); ++ stuser->cmd_done = false; + list_add_tail(&stuser->list, &stdev->mrpc_queue); + + mrpc_cmd_submit(stdev); +@@ -451,7 +452,8 @@ static void mrpc_complete_cmd(struct swi + stuser->read_len); + + out: +- complete_all(&stuser->comp); ++ stuser->cmd_done = true; ++ wake_up_interruptible(&stuser->cmd_comp); + list_del_init(&stuser->list); + stuser_put(stuser); + stdev->mrpc_busy = 0; +@@ -721,10 +723,11 @@ static ssize_t switchtec_dev_read(struct + mutex_unlock(&stdev->mrpc_mutex); + + if (filp->f_flags & O_NONBLOCK) { +- if (!try_wait_for_completion(&stuser->comp)) ++ if (!READ_ONCE(stuser->cmd_done)) + return -EAGAIN; + } else { +- rc = wait_for_completion_interruptible(&stuser->comp); ++ rc = wait_event_interruptible(stuser->cmd_comp, ++ stuser->cmd_done); + if (rc < 0) + return rc; + } +@@ -772,7 +775,7 @@ static unsigned int switchtec_dev_poll(s + struct switchtec_dev *stdev = stuser->stdev; + int ret = 0; + +- poll_wait(filp, &stuser->comp.wait, wait); ++ poll_wait(filp, &stuser->cmd_comp, wait); + poll_wait(filp, &stdev->event_wq, wait); + + if (lock_mutex_and_test_alive(stdev)) +@@ -780,7 +783,7 @@ static unsigned int switchtec_dev_poll(s + + mutex_unlock(&stdev->mrpc_mutex); + +- if (try_wait_for_completion(&stuser->comp)) ++ if (READ_ONCE(stuser->cmd_done)) + ret |= POLLIN | POLLRDNORM; + + if (stuser->event_cnt != atomic_read(&stdev->event_cnt)) +@@ -1255,7 +1258,8 @@ static void stdev_kill(struct switchtec_ + + /* Wake up and kill any users waiting on an MRPC request */ + list_for_each_entry_safe(stuser, tmpuser, &stdev->mrpc_queue, list) { +- complete_all(&stuser->comp); ++ stuser->cmd_done = true; ++ wake_up_interruptible(&stuser->cmd_comp); + list_del_init(&stuser->list); + stuser_put(stuser); + } diff --git a/patches/features/all/rt/percpu_ida-use-locklocks.patch b/patches/features/all/rt/percpu_ida-use-locklocks.patch new file mode 100644 index 00000000000..a99d102f669 --- /dev/null +++ b/patches/features/all/rt/percpu_ida-use-locklocks.patch @@ -0,0 +1,102 @@ +From: Sebastian Andrzej Siewior +Date: Wed, 9 Apr 2014 11:58:17 +0200 +Subject: percpu_ida: Use local locks +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +the local_irq_save() + spin_lock() does not work that well on -RT + +Signed-off-by: Sebastian Andrzej Siewior +--- + lib/percpu_ida.c | 20 ++++++++++++-------- + 1 file changed, 12 insertions(+), 8 deletions(-) + +--- a/lib/percpu_ida.c ++++ b/lib/percpu_ida.c +@@ -27,6 +27,9 @@ + #include + #include + #include ++#include ++ ++static DEFINE_LOCAL_IRQ_LOCK(irq_off_lock); + + struct percpu_ida_cpu { + /* +@@ -149,13 +152,13 @@ int percpu_ida_alloc(struct percpu_ida * + unsigned long flags; + int tag; + +- local_irq_save(flags); ++ local_lock_irqsave(irq_off_lock, flags); + tags = this_cpu_ptr(pool->tag_cpu); + + /* Fastpath */ + tag = alloc_local_tag(tags); + if (likely(tag >= 0)) { +- local_irq_restore(flags); ++ local_unlock_irqrestore(irq_off_lock, flags); + return tag; + } + +@@ -174,6 +177,7 @@ int percpu_ida_alloc(struct percpu_ida * + + if (!tags->nr_free) + alloc_global_tags(pool, tags); ++ + if (!tags->nr_free) + steal_tags(pool, tags); + +@@ -185,7 +189,7 @@ int percpu_ida_alloc(struct percpu_ida * + } + + spin_unlock(&pool->lock); +- local_irq_restore(flags); ++ local_unlock_irqrestore(irq_off_lock, flags); + + if (tag >= 0 || state == TASK_RUNNING) + break; +@@ -197,7 +201,7 @@ int percpu_ida_alloc(struct percpu_ida * + + schedule(); + +- local_irq_save(flags); ++ local_lock_irqsave(irq_off_lock, flags); + tags = this_cpu_ptr(pool->tag_cpu); + } + if (state != TASK_RUNNING) +@@ -222,7 +226,7 @@ void percpu_ida_free(struct percpu_ida * + + BUG_ON(tag >= pool->nr_tags); + +- local_irq_save(flags); ++ local_lock_irqsave(irq_off_lock, flags); + tags = this_cpu_ptr(pool->tag_cpu); + + spin_lock(&tags->lock); +@@ -254,7 +258,7 @@ void percpu_ida_free(struct percpu_ida * + spin_unlock(&pool->lock); + } + +- local_irq_restore(flags); ++ local_unlock_irqrestore(irq_off_lock, flags); + } + EXPORT_SYMBOL_GPL(percpu_ida_free); + +@@ -346,7 +350,7 @@ int percpu_ida_for_each_free(struct perc + struct percpu_ida_cpu *remote; + unsigned cpu, i, err = 0; + +- local_irq_save(flags); ++ local_lock_irqsave(irq_off_lock, flags); + for_each_possible_cpu(cpu) { + remote = per_cpu_ptr(pool->tag_cpu, cpu); + spin_lock(&remote->lock); +@@ -368,7 +372,7 @@ int percpu_ida_for_each_free(struct perc + } + spin_unlock(&pool->lock); + out: +- local_irq_restore(flags); ++ local_unlock_irqrestore(irq_off_lock, flags); + return err; + } + EXPORT_SYMBOL_GPL(percpu_ida_for_each_free); diff --git a/patches/features/all/rt/peter_zijlstra-frob-rcu.patch b/patches/features/all/rt/peter_zijlstra-frob-rcu.patch new file mode 100644 index 00000000000..c7564b0eab7 --- /dev/null +++ b/patches/features/all/rt/peter_zijlstra-frob-rcu.patch @@ -0,0 +1,167 @@ +Subject: rcu: Frob softirq test +From: Peter Zijlstra +Date: Sat Aug 13 00:23:17 CEST 2011 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +With RT_FULL we get the below wreckage: + +[ 126.060484] ======================================================= +[ 126.060486] [ INFO: possible circular locking dependency detected ] +[ 126.060489] 3.0.1-rt10+ #30 +[ 126.060490] ------------------------------------------------------- +[ 126.060492] irq/24-eth0/1235 is trying to acquire lock: +[ 126.060495] (&(lock)->wait_lock#2){+.+...}, at: [] rt_mutex_slowunlock+0x16/0x55 +[ 126.060503] +[ 126.060504] but task is already holding lock: +[ 126.060506] (&p->pi_lock){-...-.}, at: [] try_to_wake_up+0x35/0x429 +[ 126.060511] +[ 126.060511] which lock already depends on the new lock. +[ 126.060513] +[ 126.060514] +[ 126.060514] the existing dependency chain (in reverse order) is: +[ 126.060516] +[ 126.060516] -> #1 (&p->pi_lock){-...-.}: +[ 126.060519] [] lock_acquire+0x145/0x18a +[ 126.060524] [] _raw_spin_lock_irqsave+0x4b/0x85 +[ 126.060527] [] task_blocks_on_rt_mutex+0x36/0x20f +[ 126.060531] [] rt_mutex_slowlock+0xd1/0x15a +[ 126.060534] [] rt_mutex_lock+0x2d/0x2f +[ 126.060537] [] rcu_boost+0xad/0xde +[ 126.060541] [] rcu_boost_kthread+0x7d/0x9b +[ 126.060544] [] kthread+0x99/0xa1 +[ 126.060547] [] kernel_thread_helper+0x4/0x10 +[ 126.060551] +[ 126.060552] -> #0 (&(lock)->wait_lock#2){+.+...}: +[ 126.060555] [] __lock_acquire+0x1157/0x1816 +[ 126.060558] [] lock_acquire+0x145/0x18a +[ 126.060561] [] _raw_spin_lock+0x40/0x73 +[ 126.060564] [] rt_mutex_slowunlock+0x16/0x55 +[ 126.060566] [] rt_mutex_unlock+0x27/0x29 +[ 126.060569] [] rcu_read_unlock_special+0x17e/0x1c4 +[ 126.060573] [] __rcu_read_unlock+0x48/0x89 +[ 126.060576] [] select_task_rq_rt+0xc7/0xd5 +[ 126.060580] [] try_to_wake_up+0x175/0x429 +[ 126.060583] [] wake_up_process+0x15/0x17 +[ 126.060585] [] wakeup_softirqd+0x24/0x26 +[ 126.060590] [] irq_exit+0x49/0x55 +[ 126.060593] [] smp_apic_timer_interrupt+0x8a/0x98 +[ 126.060597] [] apic_timer_interrupt+0x13/0x20 +[ 126.060600] [] irq_forced_thread_fn+0x1b/0x44 +[ 126.060603] [] irq_thread+0xde/0x1af +[ 126.060606] [] kthread+0x99/0xa1 +[ 126.060608] [] kernel_thread_helper+0x4/0x10 +[ 126.060611] +[ 126.060612] other info that might help us debug this: +[ 126.060614] +[ 126.060615] Possible unsafe locking scenario: +[ 126.060616] +[ 126.060617] CPU0 CPU1 +[ 126.060619] ---- ---- +[ 126.060620] lock(&p->pi_lock); +[ 126.060623] lock(&(lock)->wait_lock); +[ 126.060625] lock(&p->pi_lock); +[ 126.060627] lock(&(lock)->wait_lock); +[ 126.060629] +[ 126.060629] *** DEADLOCK *** +[ 126.060630] +[ 126.060632] 1 lock held by irq/24-eth0/1235: +[ 126.060633] #0: (&p->pi_lock){-...-.}, at: [] try_to_wake_up+0x35/0x429 +[ 126.060638] +[ 126.060638] stack backtrace: +[ 126.060641] Pid: 1235, comm: irq/24-eth0 Not tainted 3.0.1-rt10+ #30 +[ 126.060643] Call Trace: +[ 126.060644] [] print_circular_bug+0x289/0x29a +[ 126.060651] [] __lock_acquire+0x1157/0x1816 +[ 126.060655] [] ? trace_hardirqs_off_caller+0x1f/0x99 +[ 126.060658] [] ? rt_mutex_slowunlock+0x16/0x55 +[ 126.060661] [] lock_acquire+0x145/0x18a +[ 126.060664] [] ? rt_mutex_slowunlock+0x16/0x55 +[ 126.060668] [] _raw_spin_lock+0x40/0x73 +[ 126.060671] [] ? rt_mutex_slowunlock+0x16/0x55 +[ 126.060674] [] ? rcu_report_qs_rsp+0x87/0x8c +[ 126.060677] [] rt_mutex_slowunlock+0x16/0x55 +[ 126.060680] [] ? rcu_read_unlock_special+0x9b/0x1c4 +[ 126.060683] [] rt_mutex_unlock+0x27/0x29 +[ 126.060687] [] rcu_read_unlock_special+0x17e/0x1c4 +[ 126.060690] [] __rcu_read_unlock+0x48/0x89 +[ 126.060693] [] select_task_rq_rt+0xc7/0xd5 +[ 126.060696] [] ? select_task_rq_rt+0x27/0xd5 +[ 126.060701] [] ? clockevents_program_event+0x8e/0x90 +[ 126.060704] [] try_to_wake_up+0x175/0x429 +[ 126.060708] [] ? tick_program_event+0x1f/0x21 +[ 126.060711] [] wake_up_process+0x15/0x17 +[ 126.060715] [] wakeup_softirqd+0x24/0x26 +[ 126.060718] [] irq_exit+0x49/0x55 +[ 126.060721] [] smp_apic_timer_interrupt+0x8a/0x98 +[ 126.060724] [] apic_timer_interrupt+0x13/0x20 +[ 126.060726] [] ? migrate_disable+0x75/0x12d +[ 126.060733] [] ? local_bh_disable+0xe/0x1f +[ 126.060736] [] ? local_bh_disable+0x1d/0x1f +[ 126.060739] [] irq_forced_thread_fn+0x1b/0x44 +[ 126.060742] [] ? _raw_spin_unlock_irq+0x3b/0x59 +[ 126.060745] [] irq_thread+0xde/0x1af +[ 126.060748] [] ? irq_thread_fn+0x3a/0x3a +[ 126.060751] [] ? irq_finalize_oneshot+0xd1/0xd1 +[ 126.060754] [] ? irq_finalize_oneshot+0xd1/0xd1 +[ 126.060757] [] kthread+0x99/0xa1 +[ 126.060761] [] kernel_thread_helper+0x4/0x10 +[ 126.060764] [] ? finish_task_switch+0x87/0x10a +[ 126.060768] [] ? retint_restore_args+0xe/0xe +[ 126.060771] [] ? __init_kthread_worker+0x8c/0x8c +[ 126.060774] [] ? gs_change+0xb/0xb + +Because irq_exit() does: + +void irq_exit(void) +{ + account_system_vtime(current); + trace_hardirq_exit(); + sub_preempt_count(IRQ_EXIT_OFFSET); + if (!in_interrupt() && local_softirq_pending()) + invoke_softirq(); + + ... +} + +Which triggers a wakeup, which uses RCU, now if the interrupted task has +t->rcu_read_unlock_special set, the rcu usage from the wakeup will end +up in rcu_read_unlock_special(). rcu_read_unlock_special() will test +for in_irq(), which will fail as we just decremented preempt_count +with IRQ_EXIT_OFFSET, and in_sering_softirq(), which for +PREEMPT_RT_FULL reads: + +int in_serving_softirq(void) +{ + int res; + + preempt_disable(); + res = __get_cpu_var(local_softirq_runner) == current; + preempt_enable(); + return res; +} + +Which will thus also fail, resulting in the above wreckage. + +The 'somewhat' ugly solution is to open-code the preempt_count() test +in rcu_read_unlock_special(). + +Also, we're not at all sure how ->rcu_read_unlock_special gets set +here... so this is very likely a bandaid and more thought is required. + +Cc: Paul E. McKenney +Signed-off-by: Peter Zijlstra +--- + kernel/rcu/tree_plugin.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/kernel/rcu/tree_plugin.h ++++ b/kernel/rcu/tree_plugin.h +@@ -466,7 +466,7 @@ void rcu_read_unlock_special(struct task + } + + /* Hardware IRQ handlers cannot block, complain if they get here. */ +- if (in_irq() || in_serving_softirq()) { ++ if (preempt_count() & (HARDIRQ_MASK | SOFTIRQ_OFFSET)) { + lockdep_rcu_suspicious(__FILE__, __LINE__, + "rcu_read_unlock() from irq or softirq with blocking in critical section!!!\n"); + pr_alert("->rcu_read_unlock_special: %#x (b: %d, enq: %d nq: %d)\n", diff --git a/patches/features/all/rt/peterz-percpu-rwsem-rt.patch b/patches/features/all/rt/peterz-percpu-rwsem-rt.patch new file mode 100644 index 00000000000..052c3fe6d78 --- /dev/null +++ b/patches/features/all/rt/peterz-percpu-rwsem-rt.patch @@ -0,0 +1,219 @@ +Subject: locking/percpu-rwsem: Remove preempt_disable variants +From: Peter Zijlstra +Date: Wed Nov 23 16:29:32 CET 2016 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Effective revert commit: + + 87709e28dc7c ("fs/locks: Use percpu_down_read_preempt_disable()") + +This is causing major pain for PREEMPT_RT and is only a very small +performance issue for PREEMPT=y. + +Signed-off-by: Peter Zijlstra (Intel) +--- +--- + fs/locks.c | 32 ++++++++++++++++---------------- + include/linux/percpu-rwsem.h | 24 ++++-------------------- + 2 files changed, 20 insertions(+), 36 deletions(-) + +--- a/fs/locks.c ++++ b/fs/locks.c +@@ -945,7 +945,7 @@ static int flock_lock_inode(struct inode + return -ENOMEM; + } + +- percpu_down_read_preempt_disable(&file_rwsem); ++ percpu_down_read(&file_rwsem); + spin_lock(&ctx->flc_lock); + if (request->fl_flags & FL_ACCESS) + goto find_conflict; +@@ -986,7 +986,7 @@ static int flock_lock_inode(struct inode + + out: + spin_unlock(&ctx->flc_lock); +- percpu_up_read_preempt_enable(&file_rwsem); ++ percpu_up_read(&file_rwsem); + if (new_fl) + locks_free_lock(new_fl); + locks_dispose_list(&dispose); +@@ -1023,7 +1023,7 @@ static int posix_lock_inode(struct inode + new_fl2 = locks_alloc_lock(); + } + +- percpu_down_read_preempt_disable(&file_rwsem); ++ percpu_down_read(&file_rwsem); + spin_lock(&ctx->flc_lock); + /* + * New lock request. Walk all POSIX locks and look for conflicts. If +@@ -1195,7 +1195,7 @@ static int posix_lock_inode(struct inode + } + out: + spin_unlock(&ctx->flc_lock); +- percpu_up_read_preempt_enable(&file_rwsem); ++ percpu_up_read(&file_rwsem); + /* + * Free any unused locks. + */ +@@ -1470,7 +1470,7 @@ int __break_lease(struct inode *inode, u + return error; + } + +- percpu_down_read_preempt_disable(&file_rwsem); ++ percpu_down_read(&file_rwsem); + spin_lock(&ctx->flc_lock); + + time_out_leases(inode, &dispose); +@@ -1522,13 +1522,13 @@ int __break_lease(struct inode *inode, u + locks_insert_block(fl, new_fl); + trace_break_lease_block(inode, new_fl); + spin_unlock(&ctx->flc_lock); +- percpu_up_read_preempt_enable(&file_rwsem); ++ percpu_up_read(&file_rwsem); + + locks_dispose_list(&dispose); + error = wait_event_interruptible_timeout(new_fl->fl_wait, + !new_fl->fl_next, break_time); + +- percpu_down_read_preempt_disable(&file_rwsem); ++ percpu_down_read(&file_rwsem); + spin_lock(&ctx->flc_lock); + trace_break_lease_unblock(inode, new_fl); + locks_delete_block(new_fl); +@@ -1545,7 +1545,7 @@ int __break_lease(struct inode *inode, u + } + out: + spin_unlock(&ctx->flc_lock); +- percpu_up_read_preempt_enable(&file_rwsem); ++ percpu_up_read(&file_rwsem); + locks_dispose_list(&dispose); + locks_free_lock(new_fl); + return error; +@@ -1619,7 +1619,7 @@ int fcntl_getlease(struct file *filp) + + ctx = smp_load_acquire(&inode->i_flctx); + if (ctx && !list_empty_careful(&ctx->flc_lease)) { +- percpu_down_read_preempt_disable(&file_rwsem); ++ percpu_down_read(&file_rwsem); + spin_lock(&ctx->flc_lock); + time_out_leases(inode, &dispose); + list_for_each_entry(fl, &ctx->flc_lease, fl_list) { +@@ -1629,7 +1629,7 @@ int fcntl_getlease(struct file *filp) + break; + } + spin_unlock(&ctx->flc_lock); +- percpu_up_read_preempt_enable(&file_rwsem); ++ percpu_up_read(&file_rwsem); + + locks_dispose_list(&dispose); + } +@@ -1704,7 +1704,7 @@ generic_add_lease(struct file *filp, lon + return -EINVAL; + } + +- percpu_down_read_preempt_disable(&file_rwsem); ++ percpu_down_read(&file_rwsem); + spin_lock(&ctx->flc_lock); + time_out_leases(inode, &dispose); + error = check_conflicting_open(dentry, arg, lease->fl_flags); +@@ -1775,7 +1775,7 @@ generic_add_lease(struct file *filp, lon + lease->fl_lmops->lm_setup(lease, priv); + out: + spin_unlock(&ctx->flc_lock); +- percpu_up_read_preempt_enable(&file_rwsem); ++ percpu_up_read(&file_rwsem); + locks_dispose_list(&dispose); + if (is_deleg) + inode_unlock(inode); +@@ -1798,7 +1798,7 @@ static int generic_delete_lease(struct f + return error; + } + +- percpu_down_read_preempt_disable(&file_rwsem); ++ percpu_down_read(&file_rwsem); + spin_lock(&ctx->flc_lock); + list_for_each_entry(fl, &ctx->flc_lease, fl_list) { + if (fl->fl_file == filp && +@@ -1811,7 +1811,7 @@ static int generic_delete_lease(struct f + if (victim) + error = fl->fl_lmops->lm_change(victim, F_UNLCK, &dispose); + spin_unlock(&ctx->flc_lock); +- percpu_up_read_preempt_enable(&file_rwsem); ++ percpu_up_read(&file_rwsem); + locks_dispose_list(&dispose); + return error; + } +@@ -2535,13 +2535,13 @@ locks_remove_lease(struct file *filp, st + if (list_empty(&ctx->flc_lease)) + return; + +- percpu_down_read_preempt_disable(&file_rwsem); ++ percpu_down_read(&file_rwsem); + spin_lock(&ctx->flc_lock); + list_for_each_entry_safe(fl, tmp, &ctx->flc_lease, fl_list) + if (filp == fl->fl_file) + lease_modify(fl, F_UNLCK, &dispose); + spin_unlock(&ctx->flc_lock); +- percpu_up_read_preempt_enable(&file_rwsem); ++ percpu_up_read(&file_rwsem); + + locks_dispose_list(&dispose); + } +--- a/include/linux/percpu-rwsem.h ++++ b/include/linux/percpu-rwsem.h +@@ -29,7 +29,7 @@ static struct percpu_rw_semaphore name = + extern int __percpu_down_read(struct percpu_rw_semaphore *, int); + extern void __percpu_up_read(struct percpu_rw_semaphore *); + +-static inline void percpu_down_read_preempt_disable(struct percpu_rw_semaphore *sem) ++static inline void percpu_down_read(struct percpu_rw_semaphore *sem) + { + might_sleep(); + +@@ -47,16 +47,10 @@ static inline void percpu_down_read_pree + __this_cpu_inc(*sem->read_count); + if (unlikely(!rcu_sync_is_idle(&sem->rss))) + __percpu_down_read(sem, false); /* Unconditional memory barrier */ +- barrier(); + /* +- * The barrier() prevents the compiler from ++ * The preempt_enable() prevents the compiler from + * bleeding the critical section out. + */ +-} +- +-static inline void percpu_down_read(struct percpu_rw_semaphore *sem) +-{ +- percpu_down_read_preempt_disable(sem); + preempt_enable(); + } + +@@ -83,13 +77,9 @@ static inline int percpu_down_read_trylo + return ret; + } + +-static inline void percpu_up_read_preempt_enable(struct percpu_rw_semaphore *sem) ++static inline void percpu_up_read(struct percpu_rw_semaphore *sem) + { +- /* +- * The barrier() prevents the compiler from +- * bleeding the critical section out. +- */ +- barrier(); ++ preempt_disable(); + /* + * Same as in percpu_down_read(). + */ +@@ -102,12 +92,6 @@ static inline void percpu_up_read_preemp + rwsem_release(&sem->rw_sem.dep_map, 1, _RET_IP_); + } + +-static inline void percpu_up_read(struct percpu_rw_semaphore *sem) +-{ +- preempt_disable(); +- percpu_up_read_preempt_enable(sem); +-} +- + extern void percpu_down_write(struct percpu_rw_semaphore *); + extern void percpu_up_write(struct percpu_rw_semaphore *); + diff --git a/patches/features/all/rt/peterz-srcu-crypto-chain.patch b/patches/features/all/rt/peterz-srcu-crypto-chain.patch new file mode 100644 index 00000000000..efe2c636ceb --- /dev/null +++ b/patches/features/all/rt/peterz-srcu-crypto-chain.patch @@ -0,0 +1,183 @@ +Subject: crypto: Convert crypto notifier chain to SRCU +From: Peter Zijlstra +Date: Fri, 05 Oct 2012 09:03:24 +0100 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +The crypto notifier deadlocks on RT. Though this can be a real deadlock +on mainline as well due to fifo fair rwsems. + +The involved parties here are: + +[ 82.172678] swapper/0 S 0000000000000001 0 1 0 0x00000000 +[ 82.172682] ffff88042f18fcf0 0000000000000046 ffff88042f18fc80 ffffffff81491238 +[ 82.172685] 0000000000011cc0 0000000000011cc0 ffff88042f18c040 ffff88042f18ffd8 +[ 82.172688] 0000000000011cc0 0000000000011cc0 ffff88042f18ffd8 0000000000011cc0 +[ 82.172689] Call Trace: +[ 82.172697] [] ? _raw_spin_unlock_irqrestore+0x6c/0x7a +[ 82.172701] [] schedule+0x64/0x66 +[ 82.172704] [] schedule_timeout+0x27/0xd0 +[ 82.172708] [] ? unpin_current_cpu+0x1a/0x6c +[ 82.172713] [] ? migrate_enable+0x12f/0x141 +[ 82.172716] [] wait_for_common+0xbb/0x11f +[ 82.172719] [] ? try_to_wake_up+0x182/0x182 +[ 82.172722] [] wait_for_completion_interruptible+0x1d/0x2e +[ 82.172726] [] crypto_wait_for_test+0x49/0x6b +[ 82.172728] [] crypto_register_alg+0x53/0x5a +[ 82.172730] [] crypto_register_algs+0x33/0x72 +[ 82.172734] [] ? aes_init+0x12/0x12 +[ 82.172737] [] aesni_init+0x64/0x66 +[ 82.172741] [] do_one_initcall+0x7f/0x13b +[ 82.172744] [] kernel_init+0x199/0x22c +[ 82.172747] [] ? loglevel+0x31/0x31 +[ 82.172752] [] kernel_thread_helper+0x4/0x10 +[ 82.172755] [] ? retint_restore_args+0x13/0x13 +[ 82.172759] [] ? start_kernel+0x3ca/0x3ca +[ 82.172761] [] ? gs_change+0x13/0x13 + +[ 82.174186] cryptomgr_test S 0000000000000001 0 41 2 0x00000000 +[ 82.174189] ffff88042c971980 0000000000000046 ffffffff81d74830 0000000000000292 +[ 82.174192] 0000000000011cc0 0000000000011cc0 ffff88042c96eb80 ffff88042c971fd8 +[ 82.174195] 0000000000011cc0 0000000000011cc0 ffff88042c971fd8 0000000000011cc0 +[ 82.174195] Call Trace: +[ 82.174198] [] schedule+0x64/0x66 +[ 82.174201] [] schedule_timeout+0x27/0xd0 +[ 82.174204] [] ? unpin_current_cpu+0x1a/0x6c +[ 82.174206] [] ? migrate_enable+0x12f/0x141 +[ 82.174209] [] wait_for_common+0xbb/0x11f +[ 82.174212] [] ? try_to_wake_up+0x182/0x182 +[ 82.174215] [] wait_for_completion_interruptible+0x1d/0x2e +[ 82.174218] [] cryptomgr_notify+0x280/0x385 +[ 82.174221] [] notifier_call_chain+0x6b/0x98 +[ 82.174224] [] ? rt_down_read+0x10/0x12 +[ 82.174227] [] __blocking_notifier_call_chain+0x70/0x8d +[ 82.174230] [] blocking_notifier_call_chain+0x14/0x16 +[ 82.174234] [] crypto_probing_notify+0x24/0x50 +[ 82.174236] [] crypto_alg_mod_lookup+0x3e/0x74 +[ 82.174238] [] crypto_alloc_base+0x36/0x8f +[ 82.174241] [] cryptd_alloc_ablkcipher+0x6e/0xb5 +[ 82.174243] [] ? kzalloc.clone.5+0xe/0x10 +[ 82.174246] [] ablk_init_common+0x1d/0x38 +[ 82.174249] [] ablk_ecb_init+0x15/0x17 +[ 82.174251] [] __crypto_alloc_tfm+0xc7/0x114 +[ 82.174254] [] ? crypto_lookup_skcipher+0x1f/0xe4 +[ 82.174256] [] crypto_alloc_ablkcipher+0x60/0xa5 +[ 82.174258] [] alg_test_skcipher+0x24/0x9b +[ 82.174261] [] ? finish_task_switch+0x3f/0xfa +[ 82.174263] [] alg_test+0x16f/0x1d7 +[ 82.174267] [] ? cryptomgr_probe+0xac/0xac +[ 82.174269] [] cryptomgr_test+0x2c/0x47 +[ 82.174272] [] kthread+0x7e/0x86 +[ 82.174275] [] ? finish_task_switch+0xaf/0xfa +[ 82.174278] [] kernel_thread_helper+0x4/0x10 +[ 82.174281] [] ? retint_restore_args+0x13/0x13 +[ 82.174284] [] ? __init_kthread_worker+0x8c/0x8c +[ 82.174287] [] ? gs_change+0x13/0x13 + +[ 82.174329] cryptomgr_probe D 0000000000000002 0 47 2 0x00000000 +[ 82.174332] ffff88042c991b70 0000000000000046 ffff88042c991bb0 0000000000000006 +[ 82.174335] 0000000000011cc0 0000000000011cc0 ffff88042c98ed00 ffff88042c991fd8 +[ 82.174338] 0000000000011cc0 0000000000011cc0 ffff88042c991fd8 0000000000011cc0 +[ 82.174338] Call Trace: +[ 82.174342] [] schedule+0x64/0x66 +[ 82.174344] [] __rt_mutex_slowlock+0x85/0xbe +[ 82.174347] [] rt_mutex_slowlock+0xec/0x159 +[ 82.174351] [] rt_mutex_fastlock.clone.8+0x29/0x2f +[ 82.174353] [] rt_mutex_lock+0x33/0x37 +[ 82.174356] [] __rt_down_read+0x50/0x5a +[ 82.174358] [] ? rt_down_read+0x10/0x12 +[ 82.174360] [] rt_down_read+0x10/0x12 +[ 82.174363] [] __blocking_notifier_call_chain+0x58/0x8d +[ 82.174366] [] blocking_notifier_call_chain+0x14/0x16 +[ 82.174369] [] crypto_probing_notify+0x24/0x50 +[ 82.174372] [] crypto_wait_for_test+0x22/0x6b +[ 82.174374] [] crypto_register_instance+0xb4/0xc0 +[ 82.174377] [] cryptd_create+0x378/0x3b6 +[ 82.174379] [] ? __crypto_lookup_template+0x5b/0x63 +[ 82.174382] [] cryptomgr_probe+0x45/0xac +[ 82.174385] [] ? crypto_alloc_pcomp+0x1b/0x1b +[ 82.174388] [] kthread+0x7e/0x86 +[ 82.174391] [] ? finish_task_switch+0xaf/0xfa +[ 82.174394] [] kernel_thread_helper+0x4/0x10 +[ 82.174398] [] ? retint_restore_args+0x13/0x13 +[ 82.174401] [] ? __init_kthread_worker+0x8c/0x8c +[ 82.174403] [] ? gs_change+0x13/0x13 + +cryptomgr_test spawns the cryptomgr_probe thread from the notifier +call. The probe thread fires the same notifier as the test thread and +deadlocks on the rwsem on RT. + +Now this is a potential deadlock in mainline as well, because we have +fifo fair rwsems. If another thread blocks with a down_write() on the +notifier chain before the probe thread issues the down_read() it will +block the probe thread and the whole party is dead locked. + +Signed-off-by: Peter Zijlstra +Signed-off-by: Thomas Gleixner +--- + crypto/algapi.c | 4 ++-- + crypto/api.c | 6 +++--- + crypto/internal.h | 4 ++-- + 3 files changed, 7 insertions(+), 7 deletions(-) + +--- a/crypto/algapi.c ++++ b/crypto/algapi.c +@@ -731,13 +731,13 @@ EXPORT_SYMBOL_GPL(crypto_spawn_tfm2); + + int crypto_register_notifier(struct notifier_block *nb) + { +- return blocking_notifier_chain_register(&crypto_chain, nb); ++ return srcu_notifier_chain_register(&crypto_chain, nb); + } + EXPORT_SYMBOL_GPL(crypto_register_notifier); + + int crypto_unregister_notifier(struct notifier_block *nb) + { +- return blocking_notifier_chain_unregister(&crypto_chain, nb); ++ return srcu_notifier_chain_unregister(&crypto_chain, nb); + } + EXPORT_SYMBOL_GPL(crypto_unregister_notifier); + +--- a/crypto/api.c ++++ b/crypto/api.c +@@ -31,7 +31,7 @@ EXPORT_SYMBOL_GPL(crypto_alg_list); + DECLARE_RWSEM(crypto_alg_sem); + EXPORT_SYMBOL_GPL(crypto_alg_sem); + +-BLOCKING_NOTIFIER_HEAD(crypto_chain); ++SRCU_NOTIFIER_HEAD(crypto_chain); + EXPORT_SYMBOL_GPL(crypto_chain); + + static struct crypto_alg *crypto_larval_wait(struct crypto_alg *alg); +@@ -236,10 +236,10 @@ int crypto_probing_notify(unsigned long + { + int ok; + +- ok = blocking_notifier_call_chain(&crypto_chain, val, v); ++ ok = srcu_notifier_call_chain(&crypto_chain, val, v); + if (ok == NOTIFY_DONE) { + request_module("cryptomgr"); +- ok = blocking_notifier_call_chain(&crypto_chain, val, v); ++ ok = srcu_notifier_call_chain(&crypto_chain, val, v); + } + + return ok; +--- a/crypto/internal.h ++++ b/crypto/internal.h +@@ -47,7 +47,7 @@ struct crypto_larval { + + extern struct list_head crypto_alg_list; + extern struct rw_semaphore crypto_alg_sem; +-extern struct blocking_notifier_head crypto_chain; ++extern struct srcu_notifier_head crypto_chain; + + #ifdef CONFIG_PROC_FS + void __init crypto_init_proc(void); +@@ -143,7 +143,7 @@ static inline int crypto_is_moribund(str + + static inline void crypto_notify(unsigned long val, void *v) + { +- blocking_notifier_call_chain(&crypto_chain, val, v); ++ srcu_notifier_call_chain(&crypto_chain, val, v); + } + + #endif /* _CRYPTO_INTERNAL_H */ diff --git a/patches/features/all/rt/pid.h-include-atomic.h.patch b/patches/features/all/rt/pid.h-include-atomic.h.patch new file mode 100644 index 00000000000..2698b67879e --- /dev/null +++ b/patches/features/all/rt/pid.h-include-atomic.h.patch @@ -0,0 +1,37 @@ +From: Grygorii Strashko +Date: Tue, 21 Jul 2015 19:43:56 +0300 +Subject: pid.h: include atomic.h +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +This patch fixes build error: + CC kernel/pid_namespace.o +In file included from kernel/pid_namespace.c:11:0: +include/linux/pid.h: In function 'get_pid': +include/linux/pid.h:78:3: error: implicit declaration of function 'atomic_inc' [-Werror=implicit-function-declaration] + atomic_inc(&pid->count); + ^ +which happens when + CONFIG_PROVE_LOCKING=n + CONFIG_DEBUG_SPINLOCK=n + CONFIG_DEBUG_MUTEXES=n + CONFIG_DEBUG_LOCK_ALLOC=n + CONFIG_PID_NS=y + +Vanilla gets this via spinlock.h. + +Signed-off-by: Grygorii Strashko +Signed-off-by: Sebastian Andrzej Siewior +--- + include/linux/pid.h | 1 + + 1 file changed, 1 insertion(+) + +--- a/include/linux/pid.h ++++ b/include/linux/pid.h +@@ -3,6 +3,7 @@ + #define _LINUX_PID_H + + #include ++#include + + enum pid_type + { diff --git a/patches/features/all/rt/posix-timers-no-broadcast.patch b/patches/features/all/rt/posix-timers-no-broadcast.patch new file mode 100644 index 00000000000..670488993b4 --- /dev/null +++ b/patches/features/all/rt/posix-timers-no-broadcast.patch @@ -0,0 +1,34 @@ +From: Thomas Gleixner +Date: Fri, 3 Jul 2009 08:29:20 -0500 +Subject: posix-timers: Prevent broadcast signals +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Posix timers should not send broadcast signals and kernel only +signals. Prevent it. + +Signed-off-by: Thomas Gleixner + +--- + kernel/time/posix-timers.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +--- a/kernel/time/posix-timers.c ++++ b/kernel/time/posix-timers.c +@@ -433,6 +433,7 @@ static enum hrtimer_restart posix_timer_ + static struct pid *good_sigevent(sigevent_t * event) + { + struct task_struct *rtn = current->group_leader; ++ int sig = event->sigev_signo; + + switch (event->sigev_notify) { + case SIGEV_SIGNAL | SIGEV_THREAD_ID: +@@ -442,7 +443,8 @@ static struct pid *good_sigevent(sigeven + /* FALLTHRU */ + case SIGEV_SIGNAL: + case SIGEV_THREAD: +- if (event->sigev_signo <= 0 || event->sigev_signo > SIGRTMAX) ++ if (sig <= 0 || sig > SIGRTMAX || ++ sig_kernel_only(sig) || sig_kernel_coredump(sig)) + return NULL; + /* FALLTHRU */ + case SIGEV_NONE: diff --git a/patches/features/all/rt/posix-timers-thread-posix-cpu-timers-on-rt.patch b/patches/features/all/rt/posix-timers-thread-posix-cpu-timers-on-rt.patch new file mode 100644 index 00000000000..36316173f19 --- /dev/null +++ b/patches/features/all/rt/posix-timers-thread-posix-cpu-timers-on-rt.patch @@ -0,0 +1,275 @@ +From: John Stultz +Date: Fri, 3 Jul 2009 08:29:58 -0500 +Subject: posix-timers: Thread posix-cpu-timers on -rt +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +posix-cpu-timer code takes non -rt safe locks in hard irq +context. Move it to a thread. + +[ 3.0 fixes from Peter Zijlstra ] + +Signed-off-by: John Stultz +Signed-off-by: Thomas Gleixner + +--- + include/linux/init_task.h | 7 + + include/linux/sched.h | 3 + kernel/fork.c | 3 + kernel/time/posix-cpu-timers.c | 157 +++++++++++++++++++++++++++++++++++++++-- + 4 files changed, 166 insertions(+), 4 deletions(-) + +--- a/include/linux/init_task.h ++++ b/include/linux/init_task.h +@@ -163,6 +163,12 @@ extern struct cred init_cred; + # define INIT_PERF_EVENTS(tsk) + #endif + ++#if defined(CONFIG_POSIX_TIMERS) && defined(CONFIG_PREEMPT_RT_BASE) ++# define INIT_TIMER_LIST .posix_timer_list = NULL, ++#else ++# define INIT_TIMER_LIST ++#endif ++ + #ifdef CONFIG_VIRT_CPU_ACCOUNTING_GEN + # define INIT_VTIME(tsk) \ + .vtime.seqcount = SEQCNT_ZERO(tsk.vtime.seqcount), \ +@@ -277,6 +283,7 @@ extern struct cred init_cred; + INIT_CPU_TIMERS(tsk) \ + .pi_lock = __RAW_SPIN_LOCK_UNLOCKED(tsk.pi_lock), \ + .timer_slack_ns = 50000, /* 50 usec default slack */ \ ++ INIT_TIMER_LIST \ + .pids = { \ + [PIDTYPE_PID] = INIT_PID_LINK(PIDTYPE_PID), \ + [PIDTYPE_PGID] = INIT_PID_LINK(PIDTYPE_PGID), \ +--- a/include/linux/sched.h ++++ b/include/linux/sched.h +@@ -745,6 +745,9 @@ struct task_struct { + #ifdef CONFIG_POSIX_TIMERS + struct task_cputime cputime_expires; + struct list_head cpu_timers[3]; ++#ifdef CONFIG_PREEMPT_RT_BASE ++ struct task_struct *posix_timer_list; ++#endif + #endif + + /* Process credentials: */ +--- a/kernel/fork.c ++++ b/kernel/fork.c +@@ -1496,6 +1496,9 @@ static void rt_mutex_init_task(struct ta + */ + static void posix_cpu_timers_init(struct task_struct *tsk) + { ++#ifdef CONFIG_PREEMPT_RT_BASE ++ tsk->posix_timer_list = NULL; ++#endif + tsk->cputime_expires.prof_exp = 0; + tsk->cputime_expires.virt_exp = 0; + tsk->cputime_expires.sched_exp = 0; +--- a/kernel/time/posix-cpu-timers.c ++++ b/kernel/time/posix-cpu-timers.c +@@ -3,8 +3,10 @@ + * Implement CPU time clocks for the POSIX clock interface. + */ + ++#include + #include + #include ++#include + #include + #include + #include +@@ -14,6 +16,7 @@ + #include + #include + #include ++#include + + #include "posix-timers.h" + +@@ -603,7 +606,7 @@ static int posix_cpu_timer_set(struct k_ + /* + * Disarm any old timer after extracting its expiry time. + */ +- WARN_ON_ONCE(!irqs_disabled()); ++ WARN_ON_ONCE_NONRT(!irqs_disabled()); + + ret = 0; + old_incr = timer->it.cpu.incr; +@@ -1034,7 +1037,7 @@ static void posix_cpu_timer_rearm(struct + /* + * Now re-arm for the new expiry time. + */ +- WARN_ON_ONCE(!irqs_disabled()); ++ WARN_ON_ONCE_NONRT(!irqs_disabled()); + arm_timer(timer); + unlock: + unlock_task_sighand(p, &flags); +@@ -1119,13 +1122,13 @@ static inline int fastpath_timer_check(s + * already updated our counts. We need to check if any timers fire now. + * Interrupts are disabled. + */ +-void run_posix_cpu_timers(struct task_struct *tsk) ++static void __run_posix_cpu_timers(struct task_struct *tsk) + { + LIST_HEAD(firing); + struct k_itimer *timer, *next; + unsigned long flags; + +- WARN_ON_ONCE(!irqs_disabled()); ++ WARN_ON_ONCE_NONRT(!irqs_disabled()); + + /* + * The fast path checks that there are no expired thread or thread +@@ -1179,6 +1182,152 @@ void run_posix_cpu_timers(struct task_st + } + } + ++#ifdef CONFIG_PREEMPT_RT_BASE ++#include ++#include ++DEFINE_PER_CPU(struct task_struct *, posix_timer_task); ++DEFINE_PER_CPU(struct task_struct *, posix_timer_tasklist); ++DEFINE_PER_CPU(bool, posix_timer_th_active); ++ ++static void posix_cpu_kthread_fn(unsigned int cpu) ++{ ++ struct task_struct *tsk = NULL; ++ struct task_struct *next = NULL; ++ ++ BUG_ON(per_cpu(posix_timer_task, cpu) != current); ++ ++ /* grab task list */ ++ raw_local_irq_disable(); ++ tsk = per_cpu(posix_timer_tasklist, cpu); ++ per_cpu(posix_timer_tasklist, cpu) = NULL; ++ raw_local_irq_enable(); ++ ++ /* its possible the list is empty, just return */ ++ if (!tsk) ++ return; ++ ++ /* Process task list */ ++ while (1) { ++ /* save next */ ++ next = tsk->posix_timer_list; ++ ++ /* run the task timers, clear its ptr and ++ * unreference it ++ */ ++ __run_posix_cpu_timers(tsk); ++ tsk->posix_timer_list = NULL; ++ put_task_struct(tsk); ++ ++ /* check if this is the last on the list */ ++ if (next == tsk) ++ break; ++ tsk = next; ++ } ++} ++ ++static inline int __fastpath_timer_check(struct task_struct *tsk) ++{ ++ /* tsk == current, ensure it is safe to use ->signal/sighand */ ++ if (unlikely(tsk->exit_state)) ++ return 0; ++ ++ if (!task_cputime_zero(&tsk->cputime_expires)) ++ return 1; ++ ++ if (!task_cputime_zero(&tsk->signal->cputime_expires)) ++ return 1; ++ ++ return 0; ++} ++ ++void run_posix_cpu_timers(struct task_struct *tsk) ++{ ++ unsigned int cpu = smp_processor_id(); ++ struct task_struct *tasklist; ++ ++ BUG_ON(!irqs_disabled()); ++ ++ if (per_cpu(posix_timer_th_active, cpu) != true) ++ return; ++ ++ /* get per-cpu references */ ++ tasklist = per_cpu(posix_timer_tasklist, cpu); ++ ++ /* check to see if we're already queued */ ++ if (!tsk->posix_timer_list && __fastpath_timer_check(tsk)) { ++ get_task_struct(tsk); ++ if (tasklist) { ++ tsk->posix_timer_list = tasklist; ++ } else { ++ /* ++ * The list is terminated by a self-pointing ++ * task_struct ++ */ ++ tsk->posix_timer_list = tsk; ++ } ++ per_cpu(posix_timer_tasklist, cpu) = tsk; ++ ++ wake_up_process(per_cpu(posix_timer_task, cpu)); ++ } ++} ++ ++static int posix_cpu_kthread_should_run(unsigned int cpu) ++{ ++ return __this_cpu_read(posix_timer_tasklist) != NULL; ++} ++ ++static void posix_cpu_kthread_park(unsigned int cpu) ++{ ++ this_cpu_write(posix_timer_th_active, false); ++} ++ ++static void posix_cpu_kthread_unpark(unsigned int cpu) ++{ ++ this_cpu_write(posix_timer_th_active, true); ++} ++ ++static void posix_cpu_kthread_setup(unsigned int cpu) ++{ ++ struct sched_param sp; ++ ++ sp.sched_priority = MAX_RT_PRIO - 1; ++ sched_setscheduler_nocheck(current, SCHED_FIFO, &sp); ++ posix_cpu_kthread_unpark(cpu); ++} ++ ++static struct smp_hotplug_thread posix_cpu_thread = { ++ .store = &posix_timer_task, ++ .thread_should_run = posix_cpu_kthread_should_run, ++ .thread_fn = posix_cpu_kthread_fn, ++ .thread_comm = "posixcputmr/%u", ++ .setup = posix_cpu_kthread_setup, ++ .park = posix_cpu_kthread_park, ++ .unpark = posix_cpu_kthread_unpark, ++}; ++ ++static int __init posix_cpu_thread_init(void) ++{ ++ /* Start one for boot CPU. */ ++ unsigned long cpu; ++ int ret; ++ ++ /* init the per-cpu posix_timer_tasklets */ ++ for_each_possible_cpu(cpu) ++ per_cpu(posix_timer_tasklist, cpu) = NULL; ++ ++ ret = smpboot_register_percpu_thread(&posix_cpu_thread); ++ WARN_ON(ret); ++ ++ return 0; ++} ++early_initcall(posix_cpu_thread_init); ++#else /* CONFIG_PREEMPT_RT_BASE */ ++void run_posix_cpu_timers(struct task_struct *tsk) ++{ ++ __run_posix_cpu_timers(tsk); ++} ++#endif /* CONFIG_PREEMPT_RT_BASE */ ++ + /* + * Set one of the process-wide special case CPU timers or RLIMIT_CPU. + * The tsk->sighand->siglock must be held by the caller. diff --git a/patches/features/all/rt/power-disable-highmem-on-rt.patch b/patches/features/all/rt/power-disable-highmem-on-rt.patch new file mode 100644 index 00000000000..9d0291efe8d --- /dev/null +++ b/patches/features/all/rt/power-disable-highmem-on-rt.patch @@ -0,0 +1,23 @@ +Subject: powerpc: Disable highmem on RT +From: Thomas Gleixner +Date: Mon, 18 Jul 2011 17:08:34 +0200 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +The current highmem handling on -RT is not compatible and needs fixups. + +Signed-off-by: Thomas Gleixner +--- + arch/powerpc/Kconfig | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/arch/powerpc/Kconfig ++++ b/arch/powerpc/Kconfig +@@ -390,7 +390,7 @@ menu "Kernel options" + + config HIGHMEM + bool "High memory support" +- depends on PPC32 ++ depends on PPC32 && !PREEMPT_RT_FULL + + source kernel/Kconfig.hz + source kernel/Kconfig.preempt diff --git a/patches/features/all/rt/power-use-generic-rwsem-on-rt.patch b/patches/features/all/rt/power-use-generic-rwsem-on-rt.patch new file mode 100644 index 00000000000..3dc9b9a5134 --- /dev/null +++ b/patches/features/all/rt/power-use-generic-rwsem-on-rt.patch @@ -0,0 +1,27 @@ +From: Thomas Gleixner +Date: Tue, 14 Jul 2015 14:26:34 +0200 +Subject: powerpc: Use generic rwsem on RT +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Use generic code which uses rtmutex + +Signed-off-by: Thomas Gleixner +--- + arch/powerpc/Kconfig | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/arch/powerpc/Kconfig ++++ b/arch/powerpc/Kconfig +@@ -111,10 +111,11 @@ config LOCKDEP_SUPPORT + + config RWSEM_GENERIC_SPINLOCK + bool ++ default y if PREEMPT_RT_FULL + + config RWSEM_XCHGADD_ALGORITHM + bool +- default y ++ default y if !PREEMPT_RT_FULL + + config GENERIC_LOCKBREAK + bool diff --git a/patches/features/all/rt/powerpc-kvm-Disable-in-kernel-MPIC-emulation-for-PRE.patch b/patches/features/all/rt/powerpc-kvm-Disable-in-kernel-MPIC-emulation-for-PRE.patch new file mode 100644 index 00000000000..76497f3a36b --- /dev/null +++ b/patches/features/all/rt/powerpc-kvm-Disable-in-kernel-MPIC-emulation-for-PRE.patch @@ -0,0 +1,38 @@ +From: Bogdan Purcareata +Date: Fri, 24 Apr 2015 15:53:13 +0000 +Subject: powerpc/kvm: Disable in-kernel MPIC emulation for PREEMPT_RT_FULL +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +While converting the openpic emulation code to use a raw_spinlock_t enables +guests to run on RT, there's still a performance issue. For interrupts sent in +directed delivery mode with a multiple CPU mask, the emulated openpic will loop +through all of the VCPUs, and for each VCPUs, it call IRQ_check, which will loop +through all the pending interrupts for that VCPU. This is done while holding the +raw_lock, meaning that in all this time the interrupts and preemption are +disabled on the host Linux. A malicious user app can max both these number and +cause a DoS. + +This temporary fix is sent for two reasons. First is so that users who want to +use the in-kernel MPIC emulation are aware of the potential latencies, thus +making sure that the hardware MPIC and their usage scenario does not involve +interrupts sent in directed delivery mode, and the number of possible pending +interrupts is kept small. Secondly, this should incentivize the development of a +proper openpic emulation that would be better suited for RT. + +Acked-by: Scott Wood +Signed-off-by: Bogdan Purcareata +Signed-off-by: Sebastian Andrzej Siewior +--- + arch/powerpc/kvm/Kconfig | 1 + + 1 file changed, 1 insertion(+) + +--- a/arch/powerpc/kvm/Kconfig ++++ b/arch/powerpc/kvm/Kconfig +@@ -177,6 +177,7 @@ config KVM_E500MC + config KVM_MPIC + bool "KVM in-kernel MPIC emulation" + depends on KVM && E500 ++ depends on !PREEMPT_RT_FULL + select HAVE_KVM_IRQCHIP + select HAVE_KVM_IRQFD + select HAVE_KVM_IRQ_ROUTING diff --git a/patches/features/all/rt/powerpc-preempt-lazy-support.patch b/patches/features/all/rt/powerpc-preempt-lazy-support.patch new file mode 100644 index 00000000000..0b5c81ee9fb --- /dev/null +++ b/patches/features/all/rt/powerpc-preempt-lazy-support.patch @@ -0,0 +1,174 @@ +From: Thomas Gleixner +Date: Thu, 1 Nov 2012 10:14:11 +0100 +Subject: powerpc: Add support for lazy preemption +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Implement the powerpc pieces for lazy preempt. + +Signed-off-by: Thomas Gleixner +--- + arch/powerpc/Kconfig | 1 + + arch/powerpc/include/asm/thread_info.h | 11 ++++++++--- + arch/powerpc/kernel/asm-offsets.c | 1 + + arch/powerpc/kernel/entry_32.S | 17 ++++++++++++----- + arch/powerpc/kernel/entry_64.S | 14 +++++++++++--- + 5 files changed, 33 insertions(+), 11 deletions(-) + +--- a/arch/powerpc/Kconfig ++++ b/arch/powerpc/Kconfig +@@ -215,6 +215,7 @@ config PPC + select HAVE_HARDLOCKUP_DETECTOR_PERF if PERF_EVENTS && HAVE_PERF_EVENTS_NMI && !HAVE_HARDLOCKUP_DETECTOR_ARCH + select HAVE_PERF_REGS + select HAVE_PERF_USER_STACK_DUMP ++ select HAVE_PREEMPT_LAZY + select HAVE_RCU_TABLE_FREE if SMP + select HAVE_REGS_AND_STACK_ACCESS_API + select HAVE_SYSCALL_TRACEPOINTS +--- a/arch/powerpc/include/asm/thread_info.h ++++ b/arch/powerpc/include/asm/thread_info.h +@@ -36,6 +36,8 @@ struct thread_info { + int cpu; /* cpu we're on */ + int preempt_count; /* 0 => preemptable, + <0 => BUG */ ++ int preempt_lazy_count; /* 0 => preemptable, ++ <0 => BUG */ + unsigned long local_flags; /* private flags for thread */ + #ifdef CONFIG_LIVEPATCH + unsigned long *livepatch_sp; +@@ -81,8 +83,7 @@ static inline struct thread_info *curren + #define TIF_SYSCALL_TRACE 0 /* syscall trace active */ + #define TIF_SIGPENDING 1 /* signal pending */ + #define TIF_NEED_RESCHED 2 /* rescheduling necessary */ +-#define TIF_POLLING_NRFLAG 3 /* true if poll_idle() is polling +- TIF_NEED_RESCHED */ ++#define TIF_NEED_RESCHED_LAZY 3 /* lazy rescheduling necessary */ + #define TIF_32BIT 4 /* 32 bit binary */ + #define TIF_RESTORE_TM 5 /* need to restore TM FP/VEC/VSX */ + #define TIF_PATCH_PENDING 6 /* pending live patching update */ +@@ -101,6 +102,8 @@ static inline struct thread_info *curren + #if defined(CONFIG_PPC64) + #define TIF_ELF2ABI 18 /* function descriptors must die! */ + #endif ++#define TIF_POLLING_NRFLAG 19 /* true if poll_idle() is polling ++ TIF_NEED_RESCHED */ + + /* as above, but as bit values */ + #define _TIF_SYSCALL_TRACE (1< +Date: Sun, 31 May 2015 14:44:42 -0400 +Subject: powerpc: ps3/device-init.c - adapt to completions using swait vs wait +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +To fix: + + cc1: warnings being treated as errors + arch/powerpc/platforms/ps3/device-init.c: In function 'ps3_notification_read_write': + arch/powerpc/platforms/ps3/device-init.c:755:2: error: passing argument 1 of 'prepare_to_wait_event' from incompatible pointer type + arch/powerpc/platforms/ps3/device-init.c:755:2: error: passing argument 1 of 'abort_exclusive_wait' from incompatible pointer type + arch/powerpc/platforms/ps3/device-init.c:755:2: error: passing argument 1 of 'finish_wait' from incompatible pointer type + arch/powerpc/platforms/ps3/device-init.o] Error 1 + make[3]: *** Waiting for unfinished jobs.... + +Signed-off-by: Paul Gortmaker +Signed-off-by: Sebastian Andrzej Siewior +--- + arch/powerpc/platforms/ps3/device-init.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/arch/powerpc/platforms/ps3/device-init.c ++++ b/arch/powerpc/platforms/ps3/device-init.c +@@ -752,7 +752,7 @@ static int ps3_notification_read_write(s + } + pr_debug("%s:%u: notification %s issued\n", __func__, __LINE__, op); + +- res = wait_event_interruptible(dev->done.wait, ++ res = swait_event_interruptible(dev->done.wait, + dev->done.done || kthread_should_stop()); + if (kthread_should_stop()) + res = -EINTR; diff --git a/patches/features/all/rt/preempt-lazy-support.patch b/patches/features/all/rt/preempt-lazy-support.patch new file mode 100644 index 00000000000..0a658348191 --- /dev/null +++ b/patches/features/all/rt/preempt-lazy-support.patch @@ -0,0 +1,624 @@ +Subject: sched: Add support for lazy preemption +From: Thomas Gleixner +Date: Fri, 26 Oct 2012 18:50:54 +0100 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +It has become an obsession to mitigate the determinism vs. throughput +loss of RT. Looking at the mainline semantics of preemption points +gives a hint why RT sucks throughput wise for ordinary SCHED_OTHER +tasks. One major issue is the wakeup of tasks which are right away +preempting the waking task while the waking task holds a lock on which +the woken task will block right after having preempted the wakee. In +mainline this is prevented due to the implicit preemption disable of +spin/rw_lock held regions. On RT this is not possible due to the fully +preemptible nature of sleeping spinlocks. + +Though for a SCHED_OTHER task preempting another SCHED_OTHER task this +is really not a correctness issue. RT folks are concerned about +SCHED_FIFO/RR tasks preemption and not about the purely fairness +driven SCHED_OTHER preemption latencies. + +So I introduced a lazy preemption mechanism which only applies to +SCHED_OTHER tasks preempting another SCHED_OTHER task. Aside of the +existing preempt_count each tasks sports now a preempt_lazy_count +which is manipulated on lock acquiry and release. This is slightly +incorrect as for lazyness reasons I coupled this on +migrate_disable/enable so some other mechanisms get the same treatment +(e.g. get_cpu_light). + +Now on the scheduler side instead of setting NEED_RESCHED this sets +NEED_RESCHED_LAZY in case of a SCHED_OTHER/SCHED_OTHER preemption and +therefor allows to exit the waking task the lock held region before +the woken task preempts. That also works better for cross CPU wakeups +as the other side can stay in the adaptive spinning loop. + +For RT class preemption there is no change. This simply sets +NEED_RESCHED and forgoes the lazy preemption counter. + + Initial test do not expose any observable latency increasement, but +history shows that I've been proven wrong before :) + +The lazy preemption mode is per default on, but with +CONFIG_SCHED_DEBUG enabled it can be disabled via: + + # echo NO_PREEMPT_LAZY >/sys/kernel/debug/sched_features + +and reenabled via + + # echo PREEMPT_LAZY >/sys/kernel/debug/sched_features + +The test results so far are very machine and workload dependent, but +there is a clear trend that it enhances the non RT workload +performance. + +Signed-off-by: Thomas Gleixner +--- + include/linux/preempt.h | 35 +++++++++++++++++- + include/linux/sched.h | 38 +++++++++++++++++++ + include/linux/thread_info.h | 12 +++++- + include/linux/trace_events.h | 1 + kernel/Kconfig.preempt | 6 +++ + kernel/sched/core.c | 83 +++++++++++++++++++++++++++++++++++++++++-- + kernel/sched/fair.c | 16 ++++---- + kernel/sched/features.h | 3 + + kernel/sched/sched.h | 9 ++++ + kernel/trace/trace.c | 36 ++++++++++-------- + kernel/trace/trace.h | 2 + + kernel/trace/trace_output.c | 14 ++++++- + 12 files changed, 226 insertions(+), 29 deletions(-) + +--- a/include/linux/preempt.h ++++ b/include/linux/preempt.h +@@ -180,6 +180,20 @@ extern void preempt_count_sub(int val); + #define preempt_count_inc() preempt_count_add(1) + #define preempt_count_dec() preempt_count_sub(1) + ++#ifdef CONFIG_PREEMPT_LAZY ++#define add_preempt_lazy_count(val) do { preempt_lazy_count() += (val); } while (0) ++#define sub_preempt_lazy_count(val) do { preempt_lazy_count() -= (val); } while (0) ++#define inc_preempt_lazy_count() add_preempt_lazy_count(1) ++#define dec_preempt_lazy_count() sub_preempt_lazy_count(1) ++#define preempt_lazy_count() (current_thread_info()->preempt_lazy_count) ++#else ++#define add_preempt_lazy_count(val) do { } while (0) ++#define sub_preempt_lazy_count(val) do { } while (0) ++#define inc_preempt_lazy_count() do { } while (0) ++#define dec_preempt_lazy_count() do { } while (0) ++#define preempt_lazy_count() (0) ++#endif ++ + #ifdef CONFIG_PREEMPT_COUNT + + #define preempt_disable() \ +@@ -188,6 +202,12 @@ do { \ + barrier(); \ + } while (0) + ++#define preempt_lazy_disable() \ ++do { \ ++ inc_preempt_lazy_count(); \ ++ barrier(); \ ++} while (0) ++ + #define sched_preempt_enable_no_resched() \ + do { \ + barrier(); \ +@@ -241,6 +261,13 @@ do { \ + __preempt_schedule(); \ + } while (0) + ++#define preempt_lazy_enable() \ ++do { \ ++ dec_preempt_lazy_count(); \ ++ barrier(); \ ++ preempt_check_resched(); \ ++} while (0) ++ + #else /* !CONFIG_PREEMPT */ + #define preempt_enable() \ + do { \ +@@ -248,6 +275,12 @@ do { \ + preempt_count_dec(); \ + } while (0) + ++#define preempt_lazy_enable() \ ++do { \ ++ dec_preempt_lazy_count(); \ ++ barrier(); \ ++} while (0) ++ + #define preempt_enable_notrace() \ + do { \ + barrier(); \ +@@ -314,7 +347,7 @@ do { \ + } while (0) + #define preempt_fold_need_resched() \ + do { \ +- if (tif_need_resched()) \ ++ if (tif_need_resched_now()) \ + set_preempt_need_resched(); \ + } while (0) + +--- a/include/linux/sched.h ++++ b/include/linux/sched.h +@@ -1600,6 +1600,44 @@ static inline int test_tsk_need_resched( + return unlikely(test_tsk_thread_flag(tsk,TIF_NEED_RESCHED)); + } + ++#ifdef CONFIG_PREEMPT_LAZY ++static inline void set_tsk_need_resched_lazy(struct task_struct *tsk) ++{ ++ set_tsk_thread_flag(tsk,TIF_NEED_RESCHED_LAZY); ++} ++ ++static inline void clear_tsk_need_resched_lazy(struct task_struct *tsk) ++{ ++ clear_tsk_thread_flag(tsk,TIF_NEED_RESCHED_LAZY); ++} ++ ++static inline int test_tsk_need_resched_lazy(struct task_struct *tsk) ++{ ++ return unlikely(test_tsk_thread_flag(tsk,TIF_NEED_RESCHED_LAZY)); ++} ++ ++static inline int need_resched_lazy(void) ++{ ++ return test_thread_flag(TIF_NEED_RESCHED_LAZY); ++} ++ ++static inline int need_resched_now(void) ++{ ++ return test_thread_flag(TIF_NEED_RESCHED); ++} ++ ++#else ++static inline void clear_tsk_need_resched_lazy(struct task_struct *tsk) { } ++static inline int need_resched_lazy(void) { return 0; } ++ ++static inline int need_resched_now(void) ++{ ++ return test_thread_flag(TIF_NEED_RESCHED); ++} ++ ++#endif ++ ++ + static inline bool __task_is_stopped_or_traced(struct task_struct *task) + { + if (task->state & (__TASK_STOPPED | __TASK_TRACED)) +--- a/include/linux/thread_info.h ++++ b/include/linux/thread_info.h +@@ -91,7 +91,17 @@ static inline int test_ti_thread_flag(st + #define test_thread_flag(flag) \ + test_ti_thread_flag(current_thread_info(), flag) + +-#define tif_need_resched() test_thread_flag(TIF_NEED_RESCHED) ++#ifdef CONFIG_PREEMPT_LAZY ++#define tif_need_resched() (test_thread_flag(TIF_NEED_RESCHED) || \ ++ test_thread_flag(TIF_NEED_RESCHED_LAZY)) ++#define tif_need_resched_now() (test_thread_flag(TIF_NEED_RESCHED)) ++#define tif_need_resched_lazy() test_thread_flag(TIF_NEED_RESCHED_LAZY)) ++ ++#else ++#define tif_need_resched() test_thread_flag(TIF_NEED_RESCHED) ++#define tif_need_resched_now() test_thread_flag(TIF_NEED_RESCHED) ++#define tif_need_resched_lazy() 0 ++#endif + + #ifndef CONFIG_HAVE_ARCH_WITHIN_STACK_FRAMES + static inline int arch_within_stack_frames(const void * const stack, +--- a/include/linux/trace_events.h ++++ b/include/linux/trace_events.h +@@ -64,6 +64,7 @@ struct trace_entry { + int pid; + unsigned short migrate_disable; + unsigned short padding; ++ unsigned char preempt_lazy_count; + }; + + #define TRACE_EVENT_TYPE_MAX \ +--- a/kernel/Kconfig.preempt ++++ b/kernel/Kconfig.preempt +@@ -6,6 +6,12 @@ config PREEMPT_RT_BASE + bool + select PREEMPT + ++config HAVE_PREEMPT_LAZY ++ bool ++ ++config PREEMPT_LAZY ++ def_bool y if HAVE_PREEMPT_LAZY && PREEMPT_RT_FULL ++ + choice + prompt "Preemption Model" + default PREEMPT_NONE +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -518,6 +518,48 @@ void resched_curr(struct rq *rq) + trace_sched_wake_idle_without_ipi(cpu); + } + ++#ifdef CONFIG_PREEMPT_LAZY ++ ++static int tsk_is_polling(struct task_struct *p) ++{ ++#ifdef TIF_POLLING_NRFLAG ++ return test_tsk_thread_flag(p, TIF_POLLING_NRFLAG); ++#else ++ return 0; ++#endif ++} ++ ++void resched_curr_lazy(struct rq *rq) ++{ ++ struct task_struct *curr = rq->curr; ++ int cpu; ++ ++ if (!sched_feat(PREEMPT_LAZY)) { ++ resched_curr(rq); ++ return; ++ } ++ ++ lockdep_assert_held(&rq->lock); ++ ++ if (test_tsk_need_resched(curr)) ++ return; ++ ++ if (test_tsk_need_resched_lazy(curr)) ++ return; ++ ++ set_tsk_need_resched_lazy(curr); ++ ++ cpu = cpu_of(rq); ++ if (cpu == smp_processor_id()) ++ return; ++ ++ /* NEED_RESCHED_LAZY must be visible before we test polling */ ++ smp_mb(); ++ if (!tsk_is_polling(curr)) ++ smp_send_reschedule(cpu); ++} ++#endif ++ + void resched_cpu(int cpu) + { + struct rq *rq = cpu_rq(cpu); +@@ -2444,6 +2486,9 @@ int sched_fork(unsigned long clone_flags + p->on_cpu = 0; + #endif + init_task_preempt_count(p); ++#ifdef CONFIG_HAVE_PREEMPT_LAZY ++ task_thread_info(p)->preempt_lazy_count = 0; ++#endif + #ifdef CONFIG_SMP + plist_node_init(&p->pushable_tasks, MAX_PRIO); + RB_CLEAR_NODE(&p->pushable_dl_tasks); +@@ -3361,6 +3406,7 @@ static void __sched notrace __schedule(b + + next = pick_next_task(rq, prev, &rf); + clear_tsk_need_resched(prev); ++ clear_tsk_need_resched_lazy(prev); + clear_preempt_need_resched(); + + if (likely(prev != next)) { +@@ -3551,6 +3597,30 @@ static void __sched notrace preempt_sche + } while (need_resched()); + } + ++#ifdef CONFIG_PREEMPT_LAZY ++/* ++ * If TIF_NEED_RESCHED is then we allow to be scheduled away since this is ++ * set by a RT task. Oterwise we try to avoid beeing scheduled out as long as ++ * preempt_lazy_count counter >0. ++ */ ++static __always_inline int preemptible_lazy(void) ++{ ++ if (test_thread_flag(TIF_NEED_RESCHED)) ++ return 1; ++ if (current_thread_info()->preempt_lazy_count) ++ return 0; ++ return 1; ++} ++ ++#else ++ ++static inline int preemptible_lazy(void) ++{ ++ return 1; ++} ++ ++#endif ++ + #ifdef CONFIG_PREEMPT + /* + * this is the entry point to schedule() from in-kernel preemption +@@ -3565,7 +3635,8 @@ asmlinkage __visible void __sched notrac + */ + if (likely(!preemptible())) + return; +- ++ if (!preemptible_lazy()) ++ return; + preempt_schedule_common(); + } + NOKPROBE_SYMBOL(preempt_schedule); +@@ -3592,6 +3663,9 @@ asmlinkage __visible void __sched notrac + if (likely(!preemptible())) + return; + ++ if (!preemptible_lazy()) ++ return; ++ + do { + /* + * Because the function tracer can trace preempt_count_sub() +@@ -5331,7 +5405,9 @@ void init_idle(struct task_struct *idle, + + /* Set the preempt count _outside_ the spinlocks! */ + init_idle_preempt_count(idle, cpu); +- ++#ifdef CONFIG_HAVE_PREEMPT_LAZY ++ task_thread_info(idle)->preempt_lazy_count = 0; ++#endif + /* + * The idle tasks have their own, simple scheduling class: + */ +@@ -6887,6 +6963,7 @@ void migrate_disable(void) + } + + preempt_disable(); ++ preempt_lazy_disable(); + pin_current_cpu(); + + migrate_disable_update_cpus_allowed(p); +@@ -6954,6 +7031,7 @@ void migrate_enable(void) + arg.dest_cpu = dest_cpu; + + unpin_current_cpu(); ++ preempt_lazy_enable(); + preempt_enable(); + stop_one_cpu(task_cpu(p), migration_cpu_stop, &arg); + tlb_migrate_finish(p->mm); +@@ -6962,6 +7040,7 @@ void migrate_enable(void) + } + } + unpin_current_cpu(); ++ preempt_lazy_enable(); + preempt_enable(); + } + EXPORT_SYMBOL(migrate_enable); +--- a/kernel/sched/fair.c ++++ b/kernel/sched/fair.c +@@ -3840,7 +3840,7 @@ check_preempt_tick(struct cfs_rq *cfs_rq + ideal_runtime = sched_slice(cfs_rq, curr); + delta_exec = curr->sum_exec_runtime - curr->prev_sum_exec_runtime; + if (delta_exec > ideal_runtime) { +- resched_curr(rq_of(cfs_rq)); ++ resched_curr_lazy(rq_of(cfs_rq)); + /* + * The current task ran long enough, ensure it doesn't get + * re-elected due to buddy favours. +@@ -3864,7 +3864,7 @@ check_preempt_tick(struct cfs_rq *cfs_rq + return; + + if (delta > ideal_runtime) +- resched_curr(rq_of(cfs_rq)); ++ resched_curr_lazy(rq_of(cfs_rq)); + } + + static void +@@ -4006,7 +4006,7 @@ entity_tick(struct cfs_rq *cfs_rq, struc + * validating it and just reschedule. + */ + if (queued) { +- resched_curr(rq_of(cfs_rq)); ++ resched_curr_lazy(rq_of(cfs_rq)); + return; + } + /* +@@ -4188,7 +4188,7 @@ static void __account_cfs_rq_runtime(str + * hierarchy can be throttled + */ + if (!assign_cfs_rq_runtime(cfs_rq) && likely(cfs_rq->curr)) +- resched_curr(rq_of(cfs_rq)); ++ resched_curr_lazy(rq_of(cfs_rq)); + } + + static __always_inline +@@ -4837,7 +4837,7 @@ static void hrtick_start_fair(struct rq + + if (delta < 0) { + if (rq->curr == p) +- resched_curr(rq); ++ resched_curr_lazy(rq); + return; + } + hrtick_start(rq, delta); +@@ -6230,7 +6230,7 @@ static void check_preempt_wakeup(struct + return; + + preempt: +- resched_curr(rq); ++ resched_curr_lazy(rq); + /* + * Only set the backward buddy when the current task is still + * on the rq. This can happen when a wakeup gets interleaved +@@ -9084,7 +9084,7 @@ static void task_fork_fair(struct task_s + * 'current' within the tree based on its new key value. + */ + swap(curr->vruntime, se->vruntime); +- resched_curr(rq); ++ resched_curr_lazy(rq); + } + + se->vruntime -= cfs_rq->min_vruntime; +@@ -9108,7 +9108,7 @@ prio_changed_fair(struct rq *rq, struct + */ + if (rq->curr == p) { + if (p->prio > oldprio) +- resched_curr(rq); ++ resched_curr_lazy(rq); + } else + check_preempt_curr(rq, p, 0); + } +--- a/kernel/sched/features.h ++++ b/kernel/sched/features.h +@@ -48,6 +48,9 @@ SCHED_FEAT(NONTASK_CAPACITY, true) + + #ifdef CONFIG_PREEMPT_RT_FULL + SCHED_FEAT(TTWU_QUEUE, false) ++# ifdef CONFIG_PREEMPT_LAZY ++SCHED_FEAT(PREEMPT_LAZY, true) ++# endif + #else + + /* +--- a/kernel/sched/sched.h ++++ b/kernel/sched/sched.h +@@ -1544,6 +1544,15 @@ extern void init_sched_fair_class(void); + extern void resched_curr(struct rq *rq); + extern void resched_cpu(int cpu); + ++#ifdef CONFIG_PREEMPT_LAZY ++extern void resched_curr_lazy(struct rq *rq); ++#else ++static inline void resched_curr_lazy(struct rq *rq) ++{ ++ resched_curr(rq); ++} ++#endif ++ + extern struct rt_bandwidth def_rt_bandwidth; + extern void init_rt_bandwidth(struct rt_bandwidth *rt_b, u64 period, u64 runtime); + +--- a/kernel/trace/trace.c ++++ b/kernel/trace/trace.c +@@ -2129,6 +2129,7 @@ tracing_generic_entry_update(struct trac + struct task_struct *tsk = current; + + entry->preempt_count = pc & 0xff; ++ entry->preempt_lazy_count = preempt_lazy_count(); + entry->pid = (tsk) ? tsk->pid : 0; + entry->flags = + #ifdef CONFIG_TRACE_IRQFLAGS_SUPPORT +@@ -2139,7 +2140,8 @@ tracing_generic_entry_update(struct trac + ((pc & NMI_MASK ) ? TRACE_FLAG_NMI : 0) | + ((pc & HARDIRQ_MASK) ? TRACE_FLAG_HARDIRQ : 0) | + ((pc & SOFTIRQ_OFFSET) ? TRACE_FLAG_SOFTIRQ : 0) | +- (tif_need_resched() ? TRACE_FLAG_NEED_RESCHED : 0) | ++ (tif_need_resched_now() ? TRACE_FLAG_NEED_RESCHED : 0) | ++ (need_resched_lazy() ? TRACE_FLAG_NEED_RESCHED_LAZY : 0) | + (test_preempt_need_resched() ? TRACE_FLAG_PREEMPT_RESCHED : 0); + + entry->migrate_disable = (tsk) ? __migrate_disabled(tsk) & 0xFF : 0; +@@ -3341,15 +3343,17 @@ get_total_entries(struct trace_buffer *b + + static void print_lat_help_header(struct seq_file *m) + { +- seq_puts(m, "# _------=> CPU# \n" +- "# / _-----=> irqs-off \n" +- "# | / _----=> need-resched \n" +- "# || / _---=> hardirq/softirq \n" +- "# ||| / _--=> preempt-depth \n" +- "# |||| / _--=> migrate-disable\n" +- "# ||||| / delay \n" +- "# cmd pid |||||| time | caller \n" +- "# \\ / ||||| \\ | / \n"); ++ seq_puts(m, "# _--------=> CPU# \n" ++ "# / _-------=> irqs-off \n" ++ "# | / _------=> need-resched \n" ++ "# || / _-----=> need-resched_lazy \n" ++ "# ||| / _----=> hardirq/softirq \n" ++ "# |||| / _---=> preempt-depth \n" ++ "# ||||| / _--=> preempt-lazy-depth\n" ++ "# |||||| / _-=> migrate-disable \n" ++ "# ||||||| / delay \n" ++ "# cmd pid |||||||| time | caller \n" ++ "# \\ / |||||||| \\ | / \n"); + } + + static void print_event_info(struct trace_buffer *buf, struct seq_file *m) +@@ -3385,15 +3389,17 @@ static void print_func_help_header_irq(s + tgid ? tgid_space : space); + seq_printf(m, "# %s / _----=> need-resched\n", + tgid ? tgid_space : space); +- seq_printf(m, "# %s| / _---=> hardirq/softirq\n", ++ seq_printf(m, "# %s| / _----=> need-resched_lazy\n", + tgid ? tgid_space : space); +- seq_printf(m, "# %s|| / _--=> preempt-depth\n", ++ seq_printf(m, "# %s|| / _---=> hardirq/softirq\n", + tgid ? tgid_space : space); +- seq_printf(m, "# %s||| / delay\n", ++ seq_printf(m, "# %s||| / _--=> preempt-depth\n", + tgid ? tgid_space : space); +- seq_printf(m, "# TASK-PID CPU#%s|||| TIMESTAMP FUNCTION\n", ++ seq_printf(m, "# %s|||| / delay\n", ++ tgid ? tgid_space : space); ++ seq_printf(m, "# TASK-PID CPU#%s||||| TIMESTAMP FUNCTION\n", + tgid ? " TGID " : space); +- seq_printf(m, "# | | | %s|||| | |\n", ++ seq_printf(m, "# | | | %s||||| | |\n", + tgid ? " | " : space); + } + +--- a/kernel/trace/trace.h ++++ b/kernel/trace/trace.h +@@ -127,6 +127,7 @@ struct kretprobe_trace_entry_head { + * NEED_RESCHED - reschedule is requested + * HARDIRQ - inside an interrupt handler + * SOFTIRQ - inside a softirq handler ++ * NEED_RESCHED_LAZY - lazy reschedule is requested + */ + enum trace_flag_type { + TRACE_FLAG_IRQS_OFF = 0x01, +@@ -136,6 +137,7 @@ enum trace_flag_type { + TRACE_FLAG_SOFTIRQ = 0x10, + TRACE_FLAG_PREEMPT_RESCHED = 0x20, + TRACE_FLAG_NMI = 0x40, ++ TRACE_FLAG_NEED_RESCHED_LAZY = 0x80, + }; + + #define TRACE_BUF_SIZE 1024 +--- a/kernel/trace/trace_output.c ++++ b/kernel/trace/trace_output.c +@@ -447,6 +447,7 @@ int trace_print_lat_fmt(struct trace_seq + { + char hardsoft_irq; + char need_resched; ++ char need_resched_lazy; + char irqs_off; + int hardirq; + int softirq; +@@ -477,6 +478,9 @@ int trace_print_lat_fmt(struct trace_seq + break; + } + ++ need_resched_lazy = ++ (entry->flags & TRACE_FLAG_NEED_RESCHED_LAZY) ? 'L' : '.'; ++ + hardsoft_irq = + (nmi && hardirq) ? 'Z' : + nmi ? 'z' : +@@ -485,14 +489,20 @@ int trace_print_lat_fmt(struct trace_seq + softirq ? 's' : + '.' ; + +- trace_seq_printf(s, "%c%c%c", +- irqs_off, need_resched, hardsoft_irq); ++ trace_seq_printf(s, "%c%c%c%c", ++ irqs_off, need_resched, need_resched_lazy, ++ hardsoft_irq); + + if (entry->preempt_count) + trace_seq_printf(s, "%x", entry->preempt_count); + else + trace_seq_putc(s, '.'); + ++ if (entry->preempt_lazy_count) ++ trace_seq_printf(s, "%x", entry->preempt_lazy_count); ++ else ++ trace_seq_putc(s, '.'); ++ + if (entry->migrate_disable) + trace_seq_printf(s, "%x", entry->migrate_disable); + else diff --git a/patches/features/all/rt/preempt-nort-rt-variants.patch b/patches/features/all/rt/preempt-nort-rt-variants.patch new file mode 100644 index 00000000000..e39813fbd6c --- /dev/null +++ b/patches/features/all/rt/preempt-nort-rt-variants.patch @@ -0,0 +1,48 @@ +From: Thomas Gleixner +Date: Fri, 24 Jul 2009 12:38:56 +0200 +Subject: preempt: Provide preempt_*_(no)rt variants +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +RT needs a few preempt_disable/enable points which are not necessary +otherwise. Implement variants to avoid #ifdeffery. + +Signed-off-by: Thomas Gleixner + +--- + include/linux/preempt.h | 18 +++++++++++++++++- + 1 file changed, 17 insertions(+), 1 deletion(-) + +--- a/include/linux/preempt.h ++++ b/include/linux/preempt.h +@@ -181,7 +181,11 @@ do { \ + preempt_count_dec(); \ + } while (0) + +-#define preempt_enable_no_resched() sched_preempt_enable_no_resched() ++#ifdef CONFIG_PREEMPT_RT_BASE ++# define preempt_enable_no_resched() sched_preempt_enable_no_resched() ++#else ++# define preempt_enable_no_resched() preempt_enable() ++#endif + + #define preemptible() (preempt_count() == 0 && !irqs_disabled()) + +@@ -298,6 +302,18 @@ do { \ + set_preempt_need_resched(); \ + } while (0) + ++#ifdef CONFIG_PREEMPT_RT_FULL ++# define preempt_disable_rt() preempt_disable() ++# define preempt_enable_rt() preempt_enable() ++# define preempt_disable_nort() barrier() ++# define preempt_enable_nort() barrier() ++#else ++# define preempt_disable_rt() barrier() ++# define preempt_enable_rt() barrier() ++# define preempt_disable_nort() preempt_disable() ++# define preempt_enable_nort() preempt_enable() ++#endif ++ + #ifdef CONFIG_PREEMPT_NOTIFIERS + + struct preempt_notifier; diff --git a/patches/features/all/rt/printk-27force_early_printk-27-boot-param-to-help-with-debugging.patch b/patches/features/all/rt/printk-27force_early_printk-27-boot-param-to-help-with-debugging.patch new file mode 100644 index 00000000000..a3ce7bdab6f --- /dev/null +++ b/patches/features/all/rt/printk-27force_early_printk-27-boot-param-to-help-with-debugging.patch @@ -0,0 +1,32 @@ +Subject: printk: Add "force_early_printk" boot param to help with debugging +From: Peter Zijlstra +Date: Fri, 02 Sep 2011 14:41:29 +0200 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Gives me an option to screw printk and actually see what the machine +says. + +Signed-off-by: Peter Zijlstra +Link: http://lkml.kernel.org/r/1314967289.1301.11.camel@twins +Signed-off-by: Thomas Gleixner +Link: http://lkml.kernel.org/n/tip-ykb97nsfmobq44xketrxs977@git.kernel.org +--- + kernel/printk/printk.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +--- a/kernel/printk/printk.c ++++ b/kernel/printk/printk.c +@@ -430,6 +430,13 @@ asmlinkage void early_printk(const char + */ + static bool __read_mostly printk_killswitch; + ++static int __init force_early_printk_setup(char *str) ++{ ++ printk_killswitch = true; ++ return 0; ++} ++early_param("force_early_printk", force_early_printk_setup); ++ + void printk_kill(void) + { + printk_killswitch = true; diff --git a/patches/features/all/rt/printk-kill.patch b/patches/features/all/rt/printk-kill.patch new file mode 100644 index 00000000000..3c36ed992ae --- /dev/null +++ b/patches/features/all/rt/printk-kill.patch @@ -0,0 +1,164 @@ +Subject: printk: Add a printk kill switch +From: Ingo Molnar +Date: Fri, 22 Jul 2011 17:58:40 +0200 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Add a prinkt-kill-switch. This is used from (NMI) watchdog to ensure that +it does not dead-lock with the early printk code. + +Signed-off-by: Thomas Gleixner +--- + include/linux/printk.h | 2 + + kernel/printk/printk.c | 79 ++++++++++++++++++++++++++++++++++++------------- + kernel/watchdog_hld.c | 10 ++++++ + 3 files changed, 71 insertions(+), 20 deletions(-) + +--- a/include/linux/printk.h ++++ b/include/linux/printk.h +@@ -142,9 +142,11 @@ struct va_format { + #ifdef CONFIG_EARLY_PRINTK + extern asmlinkage __printf(1, 2) + void early_printk(const char *fmt, ...); ++extern void printk_kill(void); + #else + static inline __printf(1, 2) __cold + void early_printk(const char *s, ...) { } ++static inline void printk_kill(void) { } + #endif + + #ifdef CONFIG_PRINTK_NMI +--- a/kernel/printk/printk.c ++++ b/kernel/printk/printk.c +@@ -400,6 +400,58 @@ DEFINE_RAW_SPINLOCK(logbuf_lock); + printk_safe_exit_irqrestore(flags); \ + } while (0) + ++#ifdef CONFIG_EARLY_PRINTK ++struct console *early_console; ++ ++static void early_vprintk(const char *fmt, va_list ap) ++{ ++ if (early_console) { ++ char buf[512]; ++ int n = vscnprintf(buf, sizeof(buf), fmt, ap); ++ ++ early_console->write(early_console, buf, n); ++ } ++} ++ ++asmlinkage void early_printk(const char *fmt, ...) ++{ ++ va_list ap; ++ ++ va_start(ap, fmt); ++ early_vprintk(fmt, ap); ++ va_end(ap); ++} ++ ++/* ++ * This is independent of any log levels - a global ++ * kill switch that turns off all of printk. ++ * ++ * Used by the NMI watchdog if early-printk is enabled. ++ */ ++static bool __read_mostly printk_killswitch; ++ ++void printk_kill(void) ++{ ++ printk_killswitch = true; ++} ++ ++#ifdef CONFIG_PRINTK ++static int forced_early_printk(const char *fmt, va_list ap) ++{ ++ if (!printk_killswitch) ++ return 0; ++ early_vprintk(fmt, ap); ++ return 1; ++} ++#endif ++ ++#else ++static inline int forced_early_printk(const char *fmt, va_list ap) ++{ ++ return 0; ++} ++#endif ++ + #ifdef CONFIG_PRINTK + DECLARE_WAIT_QUEUE_HEAD(log_wait); + /* the next printk record to read by syslog(READ) or /proc/kmsg */ +@@ -1692,6 +1744,13 @@ asmlinkage int vprintk_emit(int facility + int printed_len; + bool in_sched = false; + ++ /* ++ * Fall back to early_printk if a debugging subsystem has ++ * killed printk output ++ */ ++ if (unlikely(forced_early_printk(fmt, args))) ++ return 1; ++ + if (level == LOGLEVEL_SCHED) { + level = LOGLEVEL_DEFAULT; + in_sched = true; +@@ -1863,26 +1922,6 @@ static bool suppress_message_printing(in + + #endif /* CONFIG_PRINTK */ + +-#ifdef CONFIG_EARLY_PRINTK +-struct console *early_console; +- +-asmlinkage __visible void early_printk(const char *fmt, ...) +-{ +- va_list ap; +- char buf[512]; +- int n; +- +- if (!early_console) +- return; +- +- va_start(ap, fmt); +- n = vscnprintf(buf, sizeof(buf), fmt, ap); +- va_end(ap); +- +- early_console->write(early_console, buf, n); +-} +-#endif +- + static int __add_preferred_console(char *name, int idx, char *options, + char *brl_options) + { +--- a/kernel/watchdog_hld.c ++++ b/kernel/watchdog_hld.c +@@ -24,6 +24,8 @@ static DEFINE_PER_CPU(bool, hard_watchdo + static DEFINE_PER_CPU(bool, watchdog_nmi_touch); + static DEFINE_PER_CPU(struct perf_event *, watchdog_ev); + static DEFINE_PER_CPU(struct perf_event *, dead_event); ++static DEFINE_RAW_SPINLOCK(watchdog_output_lock); ++ + static struct cpumask dead_events_mask; + + static unsigned long hardlockup_allcpu_dumped; +@@ -134,6 +136,13 @@ static void watchdog_overflow_callback(s + /* only print hardlockups once */ + if (__this_cpu_read(hard_watchdog_warn) == true) + return; ++ /* ++ * If early-printk is enabled then make sure we do not ++ * lock up in printk() and kill console logging: ++ */ ++ printk_kill(); ++ ++ raw_spin_lock(&watchdog_output_lock); + + pr_emerg("Watchdog detected hard LOCKUP on cpu %d", this_cpu); + print_modules(); +@@ -151,6 +160,7 @@ static void watchdog_overflow_callback(s + !test_and_set_bit(0, &hardlockup_allcpu_dumped)) + trigger_allbutself_cpu_backtrace(); + ++ raw_spin_unlock(&watchdog_output_lock); + if (hardlockup_panic) + nmi_panic(regs, "Hard LOCKUP"); + diff --git a/patches/features/all/rt/printk-rt-aware.patch b/patches/features/all/rt/printk-rt-aware.patch new file mode 100644 index 00000000000..c68c4e60689 --- /dev/null +++ b/patches/features/all/rt/printk-rt-aware.patch @@ -0,0 +1,71 @@ +Subject: printk: Make rt aware +From: Thomas Gleixner +Date: Wed, 19 Sep 2012 14:50:37 +0200 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Drop the lock before calling the console driver and do not disable +interrupts while printing to a serial console. + +Signed-off-by: Thomas Gleixner +--- + kernel/printk/printk.c | 19 ++++++++++++++++++- + 1 file changed, 18 insertions(+), 1 deletion(-) + +--- a/kernel/printk/printk.c ++++ b/kernel/printk/printk.c +@@ -1617,6 +1617,7 @@ static void call_console_drivers(const c + if (!console_drivers) + return; + ++ migrate_disable(); + for_each_console(con) { + if (exclusive_console && con != exclusive_console) + continue; +@@ -1632,6 +1633,7 @@ static void call_console_drivers(const c + else + con->write(con, text, len); + } ++ migrate_enable(); + } + + int printk_delay_msec __read_mostly; +@@ -1814,12 +1816,22 @@ asmlinkage int vprintk_emit(int facility + + /* If called from the scheduler, we can not call up(). */ + if (!in_sched) { ++ int may_trylock = 1; ++ ++#ifdef CONFIG_PREEMPT_RT_FULL ++ /* ++ * we can't take a sleeping lock with IRQs or preeption disabled ++ * so we can't print in these contexts ++ */ ++ if (!(preempt_count() == 0 && !irqs_disabled())) ++ may_trylock = 0; ++#endif + /* + * Try to acquire and then immediately release the console + * semaphore. The release will print out buffers and wake up + * /dev/kmsg and syslog() users. + */ +- if (console_trylock()) ++ if (may_trylock && console_trylock()) + console_unlock(); + } + +@@ -2275,10 +2287,15 @@ void console_unlock(void) + console_seq++; + raw_spin_unlock(&logbuf_lock); + ++#ifdef CONFIG_PREEMPT_RT_FULL ++ printk_safe_exit_irqrestore(flags); ++ call_console_drivers(ext_text, ext_len, text, len); ++#else + stop_critical_timings(); /* don't trace print latency */ + call_console_drivers(ext_text, ext_len, text, len); + start_critical_timings(); + printk_safe_exit_irqrestore(flags); ++#endif + + if (do_cond_resched) + cond_resched(); diff --git a/patches/features/all/rt/ptrace-fix-ptrace-vs-tasklist_lock-race.patch b/patches/features/all/rt/ptrace-fix-ptrace-vs-tasklist_lock-race.patch new file mode 100644 index 00000000000..c419311bd23 --- /dev/null +++ b/patches/features/all/rt/ptrace-fix-ptrace-vs-tasklist_lock-race.patch @@ -0,0 +1,156 @@ +From: Sebastian Andrzej Siewior +Date: Thu, 29 Aug 2013 18:21:04 +0200 +Subject: ptrace: fix ptrace vs tasklist_lock race +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +As explained by Alexander Fyodorov : + +|read_lock(&tasklist_lock) in ptrace_stop() is converted to mutex on RT kernel, +|and it can remove __TASK_TRACED from task->state (by moving it to +|task->saved_state). If parent does wait() on child followed by a sys_ptrace +|call, the following race can happen: +| +|- child sets __TASK_TRACED in ptrace_stop() +|- parent does wait() which eventually calls wait_task_stopped() and returns +| child's pid +|- child blocks on read_lock(&tasklist_lock) in ptrace_stop() and moves +| __TASK_TRACED flag to saved_state +|- parent calls sys_ptrace, which calls ptrace_check_attach() and wait_task_inactive() + +The patch is based on his initial patch where an additional check is +added in case the __TASK_TRACED moved to ->saved_state. The pi_lock is +taken in case the caller is interrupted between looking into ->state and +->saved_state. + +Signed-off-by: Sebastian Andrzej Siewior +--- + include/linux/sched.h | 49 +++++++++++++++++++++++++++++++++++++++++++++---- + kernel/ptrace.c | 9 ++++++++- + kernel/sched/core.c | 17 +++++++++++++++-- + 3 files changed, 68 insertions(+), 7 deletions(-) + +--- a/include/linux/sched.h ++++ b/include/linux/sched.h +@@ -100,12 +100,8 @@ struct task_group; + __TASK_TRACED | EXIT_DEAD | EXIT_ZOMBIE | \ + TASK_PARKED) + +-#define task_is_traced(task) ((task->state & __TASK_TRACED) != 0) +- + #define task_is_stopped(task) ((task->state & __TASK_STOPPED) != 0) + +-#define task_is_stopped_or_traced(task) ((task->state & (__TASK_STOPPED | __TASK_TRACED)) != 0) +- + #define task_contributes_to_load(task) ((task->state & TASK_UNINTERRUPTIBLE) != 0 && \ + (task->flags & PF_FROZEN) == 0 && \ + (task->state & TASK_NOLOAD) == 0) +@@ -1593,6 +1589,51 @@ static inline int test_tsk_need_resched( + return unlikely(test_tsk_thread_flag(tsk,TIF_NEED_RESCHED)); + } + ++static inline bool __task_is_stopped_or_traced(struct task_struct *task) ++{ ++ if (task->state & (__TASK_STOPPED | __TASK_TRACED)) ++ return true; ++#ifdef CONFIG_PREEMPT_RT_FULL ++ if (task->saved_state & (__TASK_STOPPED | __TASK_TRACED)) ++ return true; ++#endif ++ return false; ++} ++ ++static inline bool task_is_stopped_or_traced(struct task_struct *task) ++{ ++ bool traced_stopped; ++ ++#ifdef CONFIG_PREEMPT_RT_FULL ++ unsigned long flags; ++ ++ raw_spin_lock_irqsave(&task->pi_lock, flags); ++ traced_stopped = __task_is_stopped_or_traced(task); ++ raw_spin_unlock_irqrestore(&task->pi_lock, flags); ++#else ++ traced_stopped = __task_is_stopped_or_traced(task); ++#endif ++ return traced_stopped; ++} ++ ++static inline bool task_is_traced(struct task_struct *task) ++{ ++ bool traced = false; ++ ++ if (task->state & __TASK_TRACED) ++ return true; ++#ifdef CONFIG_PREEMPT_RT_FULL ++ /* in case the task is sleeping on tasklist_lock */ ++ raw_spin_lock_irq(&task->pi_lock); ++ if (task->state & __TASK_TRACED) ++ traced = true; ++ else if (task->saved_state & __TASK_TRACED) ++ traced = true; ++ raw_spin_unlock_irq(&task->pi_lock); ++#endif ++ return traced; ++} ++ + /* + * cond_resched() and cond_resched_lock(): latency reduction via + * explicit rescheduling in places that are safe. The return +--- a/kernel/ptrace.c ++++ b/kernel/ptrace.c +@@ -175,7 +175,14 @@ static bool ptrace_freeze_traced(struct + + spin_lock_irq(&task->sighand->siglock); + if (task_is_traced(task) && !__fatal_signal_pending(task)) { +- task->state = __TASK_TRACED; ++ unsigned long flags; ++ ++ raw_spin_lock_irqsave(&task->pi_lock, flags); ++ if (task->state & __TASK_TRACED) ++ task->state = __TASK_TRACED; ++ else ++ task->saved_state = __TASK_TRACED; ++ raw_spin_unlock_irqrestore(&task->pi_lock, flags); + ret = true; + } + spin_unlock_irq(&task->sighand->siglock); +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -1358,6 +1358,18 @@ int migrate_swap(struct task_struct *cur + return ret; + } + ++static bool check_task_state(struct task_struct *p, long match_state) ++{ ++ bool match = false; ++ ++ raw_spin_lock_irq(&p->pi_lock); ++ if (p->state == match_state || p->saved_state == match_state) ++ match = true; ++ raw_spin_unlock_irq(&p->pi_lock); ++ ++ return match; ++} ++ + /* + * wait_task_inactive - wait for a thread to unschedule. + * +@@ -1402,7 +1414,7 @@ unsigned long wait_task_inactive(struct + * is actually now running somewhere else! + */ + while (task_running(rq, p)) { +- if (match_state && unlikely(p->state != match_state)) ++ if (match_state && !check_task_state(p, match_state)) + return 0; + cpu_relax(); + } +@@ -1417,7 +1429,8 @@ unsigned long wait_task_inactive(struct + running = task_running(rq, p); + queued = task_on_rq_queued(p); + ncsw = 0; +- if (!match_state || p->state == match_state) ++ if (!match_state || p->state == match_state || ++ p->saved_state == match_state) + ncsw = p->nvcsw | LONG_MIN; /* sets MSB */ + task_rq_unlock(rq, p, &rf); + diff --git a/patches/features/all/rt/radix-tree-use-local-locks.patch b/patches/features/all/rt/radix-tree-use-local-locks.patch new file mode 100644 index 00000000000..e21785244a4 --- /dev/null +++ b/patches/features/all/rt/radix-tree-use-local-locks.patch @@ -0,0 +1,166 @@ +From: Sebastian Andrzej Siewior +Date: Wed, 25 Jan 2017 16:34:27 +0100 +Subject: [PATCH] radix-tree: use local locks +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +The preload functionality uses per-CPU variables and preempt-disable to +ensure that it does not switch CPUs during its usage. This patch adds +local_locks() instead preempt_disable() for the same purpose and to +remain preemptible on -RT. + +Cc: stable-rt@vger.kernel.org +Reported-and-debugged-by: Mike Galbraith +Signed-off-by: Sebastian Andrzej Siewior +--- + include/linux/idr.h | 5 +---- + include/linux/radix-tree.h | 7 ++----- + lib/radix-tree.c | 32 +++++++++++++++++++++++--------- + 3 files changed, 26 insertions(+), 18 deletions(-) + +--- a/include/linux/idr.h ++++ b/include/linux/idr.h +@@ -167,10 +167,7 @@ static inline bool idr_is_empty(const st + * Each idr_preload() should be matched with an invocation of this + * function. See idr_preload() for details. + */ +-static inline void idr_preload_end(void) +-{ +- preempt_enable(); +-} ++void idr_preload_end(void); + + /** + * idr_find - return pointer for given id +--- a/include/linux/radix-tree.h ++++ b/include/linux/radix-tree.h +@@ -328,6 +328,8 @@ unsigned int radix_tree_gang_lookup_slot + int radix_tree_preload(gfp_t gfp_mask); + int radix_tree_maybe_preload(gfp_t gfp_mask); + int radix_tree_maybe_preload_order(gfp_t gfp_mask, int order); ++void radix_tree_preload_end(void); ++ + void radix_tree_init(void); + void *radix_tree_tag_set(struct radix_tree_root *, + unsigned long index, unsigned int tag); +@@ -347,11 +349,6 @@ unsigned int radix_tree_gang_lookup_tag_ + unsigned int max_items, unsigned int tag); + int radix_tree_tagged(const struct radix_tree_root *, unsigned int tag); + +-static inline void radix_tree_preload_end(void) +-{ +- preempt_enable(); +-} +- + int radix_tree_split_preload(unsigned old_order, unsigned new_order, gfp_t); + int radix_tree_split(struct radix_tree_root *, unsigned long index, + unsigned new_order); +--- a/lib/radix-tree.c ++++ b/lib/radix-tree.c +@@ -37,7 +37,7 @@ + #include + #include + #include +- ++#include + + /* Number of nodes in fully populated tree of given height */ + static unsigned long height_to_maxnodes[RADIX_TREE_MAX_PATH + 1] __read_mostly; +@@ -86,6 +86,7 @@ struct radix_tree_preload { + struct radix_tree_node *nodes; + }; + static DEFINE_PER_CPU(struct radix_tree_preload, radix_tree_preloads) = { 0, }; ++static DEFINE_LOCAL_IRQ_LOCK(radix_tree_preloads_lock); + + static inline struct radix_tree_node *entry_to_node(void *ptr) + { +@@ -404,12 +405,13 @@ radix_tree_node_alloc(gfp_t gfp_mask, st + * succeed in getting a node here (and never reach + * kmem_cache_alloc) + */ +- rtp = this_cpu_ptr(&radix_tree_preloads); ++ rtp = &get_locked_var(radix_tree_preloads_lock, radix_tree_preloads); + if (rtp->nr) { + ret = rtp->nodes; + rtp->nodes = ret->parent; + rtp->nr--; + } ++ put_locked_var(radix_tree_preloads_lock, radix_tree_preloads); + /* + * Update the allocation stack trace as this is more useful + * for debugging. +@@ -475,14 +477,14 @@ static __must_check int __radix_tree_pre + */ + gfp_mask &= ~__GFP_ACCOUNT; + +- preempt_disable(); ++ local_lock(radix_tree_preloads_lock); + rtp = this_cpu_ptr(&radix_tree_preloads); + while (rtp->nr < nr) { +- preempt_enable(); ++ local_unlock(radix_tree_preloads_lock); + node = kmem_cache_alloc(radix_tree_node_cachep, gfp_mask); + if (node == NULL) + goto out; +- preempt_disable(); ++ local_lock(radix_tree_preloads_lock); + rtp = this_cpu_ptr(&radix_tree_preloads); + if (rtp->nr < nr) { + node->parent = rtp->nodes; +@@ -524,7 +526,7 @@ int radix_tree_maybe_preload(gfp_t gfp_m + if (gfpflags_allow_blocking(gfp_mask)) + return __radix_tree_preload(gfp_mask, RADIX_TREE_PRELOAD_SIZE); + /* Preloading doesn't help anything with this gfp mask, skip it */ +- preempt_disable(); ++ local_lock(radix_tree_preloads_lock); + return 0; + } + EXPORT_SYMBOL(radix_tree_maybe_preload); +@@ -562,7 +564,7 @@ int radix_tree_maybe_preload_order(gfp_t + + /* Preloading doesn't help anything with this gfp mask, skip it */ + if (!gfpflags_allow_blocking(gfp_mask)) { +- preempt_disable(); ++ local_lock(radix_tree_preloads_lock); + return 0; + } + +@@ -596,6 +598,12 @@ int radix_tree_maybe_preload_order(gfp_t + return __radix_tree_preload(gfp_mask, nr_nodes); + } + ++void radix_tree_preload_end(void) ++{ ++ local_unlock(radix_tree_preloads_lock); ++} ++EXPORT_SYMBOL(radix_tree_preload_end); ++ + static unsigned radix_tree_load_root(const struct radix_tree_root *root, + struct radix_tree_node **nodep, unsigned long *maxindex) + { +@@ -2105,10 +2113,16 @@ EXPORT_SYMBOL(radix_tree_tagged); + void idr_preload(gfp_t gfp_mask) + { + if (__radix_tree_preload(gfp_mask, IDR_PRELOAD_SIZE)) +- preempt_disable(); ++ local_lock(radix_tree_preloads_lock); + } + EXPORT_SYMBOL(idr_preload); + ++void idr_preload_end(void) ++{ ++ local_unlock(radix_tree_preloads_lock); ++} ++EXPORT_SYMBOL(idr_preload_end); ++ + /** + * ida_pre_get - reserve resources for ida allocation + * @ida: ida handle +@@ -2125,7 +2139,7 @@ int ida_pre_get(struct ida *ida, gfp_t g + * to return to the ida_pre_get() step. + */ + if (!__radix_tree_preload(gfp, IDA_PRELOAD_SIZE)) +- preempt_enable(); ++ local_unlock(radix_tree_preloads_lock); + + if (!this_cpu_read(ida_bitmap)) { + struct ida_bitmap *bitmap = kmalloc(sizeof(*bitmap), gfp); diff --git a/patches/features/all/rt/random-avoid-preempt_disable-ed-section.patch b/patches/features/all/rt/random-avoid-preempt_disable-ed-section.patch new file mode 100644 index 00000000000..2899902ff9d --- /dev/null +++ b/patches/features/all/rt/random-avoid-preempt_disable-ed-section.patch @@ -0,0 +1,75 @@ +From: Sebastian Andrzej Siewior +Date: Fri, 12 May 2017 15:46:17 +0200 +Subject: [PATCH] random: avoid preempt_disable()ed section +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +extract_crng() will use sleeping locks while in a preempt_disable() +section due to get_cpu_var(). +Work around it with local_locks. + +Cc: stable-rt@vger.kernel.org # where it applies to +Signed-off-by: Sebastian Andrzej Siewior +--- + drivers/char/random.c | 11 +++++++---- + 1 file changed, 7 insertions(+), 4 deletions(-) + +--- a/drivers/char/random.c ++++ b/drivers/char/random.c +@@ -265,6 +265,7 @@ + #include + #include + #include ++#include + #include + + #include +@@ -2087,6 +2088,7 @@ static rwlock_t batched_entropy_reset_lo + * at any point prior. + */ + static DEFINE_PER_CPU(struct batched_entropy, batched_entropy_u64); ++static DEFINE_LOCAL_IRQ_LOCK(batched_entropy_u64_lock); + u64 get_random_u64(void) + { + u64 ret; +@@ -2107,7 +2109,7 @@ u64 get_random_u64(void) + warn_unseeded_randomness(&previous); + + use_lock = READ_ONCE(crng_init) < 2; +- batch = &get_cpu_var(batched_entropy_u64); ++ batch = &get_locked_var(batched_entropy_u64_lock, batched_entropy_u64); + if (use_lock) + read_lock_irqsave(&batched_entropy_reset_lock, flags); + if (batch->position % ARRAY_SIZE(batch->entropy_u64) == 0) { +@@ -2117,12 +2119,13 @@ u64 get_random_u64(void) + ret = batch->entropy_u64[batch->position++]; + if (use_lock) + read_unlock_irqrestore(&batched_entropy_reset_lock, flags); +- put_cpu_var(batched_entropy_u64); ++ put_locked_var(batched_entropy_u64_lock, batched_entropy_u64); + return ret; + } + EXPORT_SYMBOL(get_random_u64); + + static DEFINE_PER_CPU(struct batched_entropy, batched_entropy_u32); ++static DEFINE_LOCAL_IRQ_LOCK(batched_entropy_u32_lock); + u32 get_random_u32(void) + { + u32 ret; +@@ -2137,7 +2140,7 @@ u32 get_random_u32(void) + warn_unseeded_randomness(&previous); + + use_lock = READ_ONCE(crng_init) < 2; +- batch = &get_cpu_var(batched_entropy_u32); ++ batch = &get_locked_var(batched_entropy_u32_lock, batched_entropy_u32); + if (use_lock) + read_lock_irqsave(&batched_entropy_reset_lock, flags); + if (batch->position % ARRAY_SIZE(batch->entropy_u32) == 0) { +@@ -2147,7 +2150,7 @@ u32 get_random_u32(void) + ret = batch->entropy_u32[batch->position++]; + if (use_lock) + read_unlock_irqrestore(&batched_entropy_reset_lock, flags); +- put_cpu_var(batched_entropy_u32); ++ put_locked_var(batched_entropy_u32_lock, batched_entropy_u32); + return ret; + } + EXPORT_SYMBOL(get_random_u32); diff --git a/patches/features/all/rt/random-make-it-work-on-rt.patch b/patches/features/all/rt/random-make-it-work-on-rt.patch new file mode 100644 index 00000000000..29771727afc --- /dev/null +++ b/patches/features/all/rt/random-make-it-work-on-rt.patch @@ -0,0 +1,133 @@ +Subject: random: Make it work on rt +From: Thomas Gleixner +Date: Tue, 21 Aug 2012 20:38:50 +0200 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Delegate the random insertion to the forced threaded interrupt +handler. Store the return IP of the hard interrupt handler in the irq +descriptor and feed it into the random generator as a source of +entropy. + +Signed-off-by: Thomas Gleixner + +--- + drivers/char/random.c | 11 +++++------ + drivers/hv/vmbus_drv.c | 4 +++- + include/linux/irqdesc.h | 1 + + include/linux/random.h | 2 +- + kernel/irq/handle.c | 8 +++++++- + kernel/irq/manage.c | 6 ++++++ + 6 files changed, 23 insertions(+), 9 deletions(-) + +--- a/drivers/char/random.c ++++ b/drivers/char/random.c +@@ -1113,28 +1113,27 @@ static __u32 get_reg(struct fast_pool *f + return *ptr; + } + +-void add_interrupt_randomness(int irq, int irq_flags) ++void add_interrupt_randomness(int irq, int irq_flags, __u64 ip) + { + struct entropy_store *r; + struct fast_pool *fast_pool = this_cpu_ptr(&irq_randomness); +- struct pt_regs *regs = get_irq_regs(); + unsigned long now = jiffies; + cycles_t cycles = random_get_entropy(); + __u32 c_high, j_high; +- __u64 ip; + unsigned long seed; + int credit = 0; + + if (cycles == 0) +- cycles = get_reg(fast_pool, regs); ++ cycles = get_reg(fast_pool, NULL); + c_high = (sizeof(cycles) > 4) ? cycles >> 32 : 0; + j_high = (sizeof(now) > 4) ? now >> 32 : 0; + fast_pool->pool[0] ^= cycles ^ j_high ^ irq; + fast_pool->pool[1] ^= now ^ c_high; +- ip = regs ? instruction_pointer(regs) : _RET_IP_; ++ if (!ip) ++ ip = _RET_IP_; + fast_pool->pool[2] ^= ip; + fast_pool->pool[3] ^= (sizeof(ip) > 4) ? ip >> 32 : +- get_reg(fast_pool, regs); ++ get_reg(fast_pool, NULL); + + fast_mix(fast_pool); + add_interrupt_bench(cycles); +--- a/drivers/hv/vmbus_drv.c ++++ b/drivers/hv/vmbus_drv.c +@@ -966,6 +966,8 @@ static void vmbus_isr(void) + void *page_addr = hv_cpu->synic_event_page; + struct hv_message *msg; + union hv_synic_event_flags *event; ++ struct pt_regs *regs = get_irq_regs(); ++ u64 ip = regs ? instruction_pointer(regs) : 0; + bool handled = false; + + if (unlikely(page_addr == NULL)) +@@ -1009,7 +1011,7 @@ static void vmbus_isr(void) + tasklet_schedule(&hv_cpu->msg_dpc); + } + +- add_interrupt_randomness(HYPERVISOR_CALLBACK_VECTOR, 0); ++ add_interrupt_randomness(HYPERVISOR_CALLBACK_VECTOR, 0, ip); + } + + +--- a/include/linux/irqdesc.h ++++ b/include/linux/irqdesc.h +@@ -70,6 +70,7 @@ struct irq_desc { + unsigned int irqs_unhandled; + atomic_t threads_handled; + int threads_handled_last; ++ u64 random_ip; + raw_spinlock_t lock; + struct cpumask *percpu_enabled; + const struct cpumask *percpu_affinity; +--- a/include/linux/random.h ++++ b/include/linux/random.h +@@ -32,7 +32,7 @@ static inline void add_latent_entropy(vo + + extern void add_input_randomness(unsigned int type, unsigned int code, + unsigned int value) __latent_entropy; +-extern void add_interrupt_randomness(int irq, int irq_flags) __latent_entropy; ++extern void add_interrupt_randomness(int irq, int irq_flags, __u64 ip) __latent_entropy; + + extern void get_random_bytes(void *buf, int nbytes); + extern int wait_for_random_bytes(void); +--- a/kernel/irq/handle.c ++++ b/kernel/irq/handle.c +@@ -183,10 +183,16 @@ irqreturn_t handle_irq_event_percpu(stru + { + irqreturn_t retval; + unsigned int flags = 0; ++ struct pt_regs *regs = get_irq_regs(); ++ u64 ip = regs ? instruction_pointer(regs) : 0; + + retval = __handle_irq_event_percpu(desc, &flags); + +- add_interrupt_randomness(desc->irq_data.irq, flags); ++#ifdef CONFIG_PREEMPT_RT_FULL ++ desc->random_ip = ip; ++#else ++ add_interrupt_randomness(desc->irq_data.irq, flags, ip); ++#endif + + if (!noirqdebug) + note_interrupt(desc, retval); +--- a/kernel/irq/manage.c ++++ b/kernel/irq/manage.c +@@ -1027,6 +1027,12 @@ static int irq_thread(void *data) + if (action_ret == IRQ_WAKE_THREAD) + irq_wake_secondary(desc, action); + ++#ifdef CONFIG_PREEMPT_RT_FULL ++ migrate_disable(); ++ add_interrupt_randomness(action->irq, 0, ++ desc->random_ip ^ (unsigned long) action); ++ migrate_enable(); ++#endif + wake_threads_waitq(desc); + } + diff --git a/patches/features/all/rt/rbtree-include-rcu.h-because-we-use-it.patch b/patches/features/all/rt/rbtree-include-rcu.h-because-we-use-it.patch new file mode 100644 index 00000000000..9cc5e4268d3 --- /dev/null +++ b/patches/features/all/rt/rbtree-include-rcu.h-because-we-use-it.patch @@ -0,0 +1,36 @@ +From: Sebastian Andrzej Siewior +Date: Wed, 14 Sep 2016 11:52:17 +0200 +Subject: rbtree: include rcu.h because we use it +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Since commit c1adf20052d8 ("Introduce rb_replace_node_rcu()") +rbtree_augmented.h uses RCU related data structures but does not include +them. It works as long as gets somehow included before that and fails +otherwise. + +Signed-off-by: Sebastian Andrzej Siewior +--- + include/linux/rbtree_augmented.h | 1 + + include/linux/rbtree_latch.h | 1 + + 2 files changed, 2 insertions(+) + +--- a/include/linux/rbtree_augmented.h ++++ b/include/linux/rbtree_augmented.h +@@ -26,6 +26,7 @@ + + #include + #include ++#include + + /* + * Please note - only struct rb_augment_callbacks and the prototypes for +--- a/include/linux/rbtree_latch.h ++++ b/include/linux/rbtree_latch.h +@@ -35,6 +35,7 @@ + + #include + #include ++#include + + struct latch_tree_node { + struct rb_node node[2]; diff --git a/patches/features/all/rt/rcu-Eliminate-softirq-processing-from-rcutree.patch b/patches/features/all/rt/rcu-Eliminate-softirq-processing-from-rcutree.patch new file mode 100644 index 00000000000..8e60233c670 --- /dev/null +++ b/patches/features/all/rt/rcu-Eliminate-softirq-processing-from-rcutree.patch @@ -0,0 +1,429 @@ +From: "Paul E. McKenney" +Date: Mon, 4 Nov 2013 13:21:10 -0800 +Subject: rcu: Eliminate softirq processing from rcutree +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Running RCU out of softirq is a problem for some workloads that would +like to manage RCU core processing independently of other softirq work, +for example, setting kthread priority. This commit therefore moves the +RCU core work from softirq to a per-CPU/per-flavor SCHED_OTHER kthread +named rcuc. The SCHED_OTHER approach avoids the scalability problems +that appeared with the earlier attempt to move RCU core processing to +from softirq to kthreads. That said, kernels built with RCU_BOOST=y +will run the rcuc kthreads at the RCU-boosting priority. + +Reported-by: Thomas Gleixner +Tested-by: Mike Galbraith +Signed-off-by: Paul E. McKenney +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/rcu/tree.c | 110 ++++++++++++++++++++++++++++++---- + kernel/rcu/tree.h | 5 - + kernel/rcu/tree_plugin.h | 152 ++++------------------------------------------- + 3 files changed, 114 insertions(+), 153 deletions(-) + +--- a/kernel/rcu/tree.c ++++ b/kernel/rcu/tree.c +@@ -58,6 +58,11 @@ + #include + #include + #include ++#include ++#include ++#include ++#include ++#include "../time/tick-internal.h" + + #include "tree.h" + #include "rcu.h" +@@ -2946,18 +2951,17 @@ static void + /* + * Do RCU core processing for the current CPU. + */ +-static __latent_entropy void rcu_process_callbacks(struct softirq_action *unused) ++static __latent_entropy void rcu_process_callbacks(void) + { + struct rcu_state *rsp; + + if (cpu_is_offline(smp_processor_id())) + return; +- trace_rcu_utilization(TPS("Start RCU core")); + for_each_rcu_flavor(rsp) + __rcu_process_callbacks(rsp); +- trace_rcu_utilization(TPS("End RCU core")); + } + ++static DEFINE_PER_CPU(struct task_struct *, rcu_cpu_kthread_task); + /* + * Schedule RCU callback invocation. If the specified type of RCU + * does not support RCU priority boosting, just do a direct call, +@@ -2969,18 +2973,105 @@ static void invoke_rcu_callbacks(struct + { + if (unlikely(!READ_ONCE(rcu_scheduler_fully_active))) + return; +- if (likely(!rsp->boost)) { +- rcu_do_batch(rsp, rdp); ++ rcu_do_batch(rsp, rdp); ++} ++ ++static void rcu_wake_cond(struct task_struct *t, int status) ++{ ++ /* ++ * If the thread is yielding, only wake it when this ++ * is invoked from idle ++ */ ++ if (t && (status != RCU_KTHREAD_YIELDING || is_idle_task(current))) ++ wake_up_process(t); ++} ++ ++/* ++ * Wake up this CPU's rcuc kthread to do RCU core processing. ++ */ ++static void invoke_rcu_core(void) ++{ ++ unsigned long flags; ++ struct task_struct *t; ++ ++ if (!cpu_online(smp_processor_id())) + return; ++ local_irq_save(flags); ++ __this_cpu_write(rcu_cpu_has_work, 1); ++ t = __this_cpu_read(rcu_cpu_kthread_task); ++ if (t != NULL && current != t) ++ rcu_wake_cond(t, __this_cpu_read(rcu_cpu_kthread_status)); ++ local_irq_restore(flags); ++} ++ ++static void rcu_cpu_kthread_park(unsigned int cpu) ++{ ++ per_cpu(rcu_cpu_kthread_status, cpu) = RCU_KTHREAD_OFFCPU; ++} ++ ++static int rcu_cpu_kthread_should_run(unsigned int cpu) ++{ ++ return __this_cpu_read(rcu_cpu_has_work); ++} ++ ++/* ++ * Per-CPU kernel thread that invokes RCU callbacks. This replaces the ++ * RCU softirq used in flavors and configurations of RCU that do not ++ * support RCU priority boosting. ++ */ ++static void rcu_cpu_kthread(unsigned int cpu) ++{ ++ unsigned int *statusp = this_cpu_ptr(&rcu_cpu_kthread_status); ++ char work, *workp = this_cpu_ptr(&rcu_cpu_has_work); ++ int spincnt; ++ ++ for (spincnt = 0; spincnt < 10; spincnt++) { ++ trace_rcu_utilization(TPS("Start CPU kthread@rcu_wait")); ++ local_bh_disable(); ++ *statusp = RCU_KTHREAD_RUNNING; ++ this_cpu_inc(rcu_cpu_kthread_loops); ++ local_irq_disable(); ++ work = *workp; ++ *workp = 0; ++ local_irq_enable(); ++ if (work) ++ rcu_process_callbacks(); ++ local_bh_enable(); ++ if (*workp == 0) { ++ trace_rcu_utilization(TPS("End CPU kthread@rcu_wait")); ++ *statusp = RCU_KTHREAD_WAITING; ++ return; ++ } + } +- invoke_rcu_callbacks_kthread(); ++ *statusp = RCU_KTHREAD_YIELDING; ++ trace_rcu_utilization(TPS("Start CPU kthread@rcu_yield")); ++ schedule_timeout_interruptible(2); ++ trace_rcu_utilization(TPS("End CPU kthread@rcu_yield")); ++ *statusp = RCU_KTHREAD_WAITING; + } + +-static void invoke_rcu_core(void) ++static struct smp_hotplug_thread rcu_cpu_thread_spec = { ++ .store = &rcu_cpu_kthread_task, ++ .thread_should_run = rcu_cpu_kthread_should_run, ++ .thread_fn = rcu_cpu_kthread, ++ .thread_comm = "rcuc/%u", ++ .setup = rcu_cpu_kthread_setup, ++ .park = rcu_cpu_kthread_park, ++}; ++ ++/* ++ * Spawn per-CPU RCU core processing kthreads. ++ */ ++static int __init rcu_spawn_core_kthreads(void) + { +- if (cpu_online(smp_processor_id())) +- raise_softirq(RCU_SOFTIRQ); ++ int cpu; ++ ++ for_each_possible_cpu(cpu) ++ per_cpu(rcu_cpu_has_work, cpu) = 0; ++ BUG_ON(smpboot_register_percpu_thread(&rcu_cpu_thread_spec)); ++ return 0; + } ++early_initcall(rcu_spawn_core_kthreads); + + /* + * Handle any core-RCU processing required by a call_rcu() invocation. +@@ -4221,7 +4312,6 @@ void __init rcu_init(void) + if (dump_tree) + rcu_dump_rcu_node_tree(&rcu_sched_state); + __rcu_init_preempt(); +- open_softirq(RCU_SOFTIRQ, rcu_process_callbacks); + + /* + * We don't need protection against CPU-hotplug here because +--- a/kernel/rcu/tree.h ++++ b/kernel/rcu/tree.h +@@ -438,12 +438,10 @@ extern struct rcu_state rcu_preempt_stat + int rcu_dynticks_snap(struct rcu_dynticks *rdtp); + bool rcu_eqs_special_set(int cpu); + +-#ifdef CONFIG_RCU_BOOST + DECLARE_PER_CPU(unsigned int, rcu_cpu_kthread_status); + DECLARE_PER_CPU(int, rcu_cpu_kthread_cpu); + DECLARE_PER_CPU(unsigned int, rcu_cpu_kthread_loops); + DECLARE_PER_CPU(char, rcu_cpu_has_work); +-#endif /* #ifdef CONFIG_RCU_BOOST */ + + #ifndef RCU_TREE_NONCORE + +@@ -463,10 +461,9 @@ void call_rcu(struct rcu_head *head, rcu + static void __init __rcu_init_preempt(void); + static void rcu_initiate_boost(struct rcu_node *rnp, unsigned long flags); + static void rcu_preempt_boost_start_gp(struct rcu_node *rnp); +-static void invoke_rcu_callbacks_kthread(void); + static bool rcu_is_callbacks_kthread(void); ++static void rcu_cpu_kthread_setup(unsigned int cpu); + #ifdef CONFIG_RCU_BOOST +-static void rcu_preempt_do_callbacks(void); + static int rcu_spawn_one_boost_kthread(struct rcu_state *rsp, + struct rcu_node *rnp); + #endif /* #ifdef CONFIG_RCU_BOOST */ +--- a/kernel/rcu/tree_plugin.h ++++ b/kernel/rcu/tree_plugin.h +@@ -24,39 +24,16 @@ + * Paul E. McKenney + */ + +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include "../time/tick-internal.h" + #include "../locking/rtmutex_common.h" + +-#ifdef CONFIG_RCU_BOOST +- + /* + * Control variables for per-CPU and per-rcu_node kthreads. These + * handle all flavors of RCU. + */ +-static DEFINE_PER_CPU(struct task_struct *, rcu_cpu_kthread_task); + DEFINE_PER_CPU(unsigned int, rcu_cpu_kthread_status); + DEFINE_PER_CPU(unsigned int, rcu_cpu_kthread_loops); + DEFINE_PER_CPU(char, rcu_cpu_has_work); + +-#else /* #ifdef CONFIG_RCU_BOOST */ +- +-/* +- * Some architectures do not define rt_mutexes, but if !CONFIG_RCU_BOOST, +- * all uses are in dead code. Provide a definition to keep the compiler +- * happy, but add WARN_ON_ONCE() to complain if used in the wrong place. +- * This probably needs to be excluded from -rt builds. +- */ +-#define rt_mutex_owner(a) ({ WARN_ON_ONCE(1); NULL; }) +- +-#endif /* #else #ifdef CONFIG_RCU_BOOST */ +- + #ifdef CONFIG_RCU_NOCB_CPU + static cpumask_var_t rcu_nocb_mask; /* CPUs to have callbacks offloaded. */ + static bool have_rcu_nocb_mask; /* Was rcu_nocb_mask allocated? */ +@@ -682,15 +659,6 @@ static void rcu_preempt_check_callbacks( + t->rcu_read_unlock_special.b.need_qs = true; + } + +-#ifdef CONFIG_RCU_BOOST +- +-static void rcu_preempt_do_callbacks(void) +-{ +- rcu_do_batch(rcu_state_p, this_cpu_ptr(rcu_data_p)); +-} +- +-#endif /* #ifdef CONFIG_RCU_BOOST */ +- + /** + * call_rcu() - Queue an RCU callback for invocation after a grace period. + * @head: structure to be used for queueing the RCU updates. +@@ -913,20 +881,23 @@ void exit_rcu(void) + + #endif /* #else #ifdef CONFIG_PREEMPT_RCU */ + ++/* ++ * If boosting, set rcuc kthreads to realtime priority. ++ */ ++static void rcu_cpu_kthread_setup(unsigned int cpu) ++{ + #ifdef CONFIG_RCU_BOOST ++ struct sched_param sp; + +-#include "../locking/rtmutex_common.h" +- +-static void rcu_wake_cond(struct task_struct *t, int status) +-{ +- /* +- * If the thread is yielding, only wake it when this +- * is invoked from idle +- */ +- if (status != RCU_KTHREAD_YIELDING || is_idle_task(current)) +- wake_up_process(t); ++ sp.sched_priority = kthread_prio; ++ sched_setscheduler_nocheck(current, SCHED_FIFO, &sp); ++#endif /* #ifdef CONFIG_RCU_BOOST */ + } + ++#ifdef CONFIG_RCU_BOOST ++ ++#include "../locking/rtmutex_common.h" ++ + /* + * Carry out RCU priority boosting on the task indicated by ->exp_tasks + * or ->boost_tasks, advancing the pointer to the next task in the +@@ -1069,23 +1040,6 @@ static void rcu_initiate_boost(struct rc + } + + /* +- * Wake up the per-CPU kthread to invoke RCU callbacks. +- */ +-static void invoke_rcu_callbacks_kthread(void) +-{ +- unsigned long flags; +- +- local_irq_save(flags); +- __this_cpu_write(rcu_cpu_has_work, 1); +- if (__this_cpu_read(rcu_cpu_kthread_task) != NULL && +- current != __this_cpu_read(rcu_cpu_kthread_task)) { +- rcu_wake_cond(__this_cpu_read(rcu_cpu_kthread_task), +- __this_cpu_read(rcu_cpu_kthread_status)); +- } +- local_irq_restore(flags); +-} +- +-/* + * Is the current CPU running the RCU-callbacks kthread? + * Caller must have preemption disabled. + */ +@@ -1139,67 +1093,6 @@ static int rcu_spawn_one_boost_kthread(s + return 0; + } + +-static void rcu_kthread_do_work(void) +-{ +- rcu_do_batch(&rcu_sched_state, this_cpu_ptr(&rcu_sched_data)); +- rcu_do_batch(&rcu_bh_state, this_cpu_ptr(&rcu_bh_data)); +- rcu_preempt_do_callbacks(); +-} +- +-static void rcu_cpu_kthread_setup(unsigned int cpu) +-{ +- struct sched_param sp; +- +- sp.sched_priority = kthread_prio; +- sched_setscheduler_nocheck(current, SCHED_FIFO, &sp); +-} +- +-static void rcu_cpu_kthread_park(unsigned int cpu) +-{ +- per_cpu(rcu_cpu_kthread_status, cpu) = RCU_KTHREAD_OFFCPU; +-} +- +-static int rcu_cpu_kthread_should_run(unsigned int cpu) +-{ +- return __this_cpu_read(rcu_cpu_has_work); +-} +- +-/* +- * Per-CPU kernel thread that invokes RCU callbacks. This replaces the +- * RCU softirq used in flavors and configurations of RCU that do not +- * support RCU priority boosting. +- */ +-static void rcu_cpu_kthread(unsigned int cpu) +-{ +- unsigned int *statusp = this_cpu_ptr(&rcu_cpu_kthread_status); +- char work, *workp = this_cpu_ptr(&rcu_cpu_has_work); +- int spincnt; +- +- for (spincnt = 0; spincnt < 10; spincnt++) { +- trace_rcu_utilization(TPS("Start CPU kthread@rcu_wait")); +- local_bh_disable(); +- *statusp = RCU_KTHREAD_RUNNING; +- this_cpu_inc(rcu_cpu_kthread_loops); +- local_irq_disable(); +- work = *workp; +- *workp = 0; +- local_irq_enable(); +- if (work) +- rcu_kthread_do_work(); +- local_bh_enable(); +- if (*workp == 0) { +- trace_rcu_utilization(TPS("End CPU kthread@rcu_wait")); +- *statusp = RCU_KTHREAD_WAITING; +- return; +- } +- } +- *statusp = RCU_KTHREAD_YIELDING; +- trace_rcu_utilization(TPS("Start CPU kthread@rcu_yield")); +- schedule_timeout_interruptible(2); +- trace_rcu_utilization(TPS("End CPU kthread@rcu_yield")); +- *statusp = RCU_KTHREAD_WAITING; +-} +- + /* + * Set the per-rcu_node kthread's affinity to cover all CPUs that are + * served by the rcu_node in question. The CPU hotplug lock is still +@@ -1230,26 +1123,12 @@ static void rcu_boost_kthread_setaffinit + free_cpumask_var(cm); + } + +-static struct smp_hotplug_thread rcu_cpu_thread_spec = { +- .store = &rcu_cpu_kthread_task, +- .thread_should_run = rcu_cpu_kthread_should_run, +- .thread_fn = rcu_cpu_kthread, +- .thread_comm = "rcuc/%u", +- .setup = rcu_cpu_kthread_setup, +- .park = rcu_cpu_kthread_park, +-}; +- + /* + * Spawn boost kthreads -- called as soon as the scheduler is running. + */ + static void __init rcu_spawn_boost_kthreads(void) + { + struct rcu_node *rnp; +- int cpu; +- +- for_each_possible_cpu(cpu) +- per_cpu(rcu_cpu_has_work, cpu) = 0; +- BUG_ON(smpboot_register_percpu_thread(&rcu_cpu_thread_spec)); + rcu_for_each_leaf_node(rcu_state_p, rnp) + (void)rcu_spawn_one_boost_kthread(rcu_state_p, rnp); + } +@@ -1272,11 +1151,6 @@ static void rcu_initiate_boost(struct rc + raw_spin_unlock_irqrestore_rcu_node(rnp, flags); + } + +-static void invoke_rcu_callbacks_kthread(void) +-{ +- WARN_ON_ONCE(1); +-} +- + static bool rcu_is_callbacks_kthread(void) + { + return false; diff --git a/patches/features/all/rt/rcu-Suppress-lockdep-false-positive-boost_mtx-compla.patch b/patches/features/all/rt/rcu-Suppress-lockdep-false-positive-boost_mtx-compla.patch new file mode 100644 index 00000000000..3f4142350d5 --- /dev/null +++ b/patches/features/all/rt/rcu-Suppress-lockdep-false-positive-boost_mtx-compla.patch @@ -0,0 +1,50 @@ +From: "Paul E. McKenney" +Date: Tue, 19 Sep 2017 15:36:42 -0700 +Subject: [PATCH] rcu: Suppress lockdep false-positive ->boost_mtx complaints +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Upstream commit bcda31a2659497df39d6bedfbdf17498b4f4ac89 + +RCU priority boosting uses rt_mutex_init_proxy_locked() to initialize an +rt_mutex structure in locked state held by some other task. When that +other task releases it, lockdep complains (quite accurately, but a bit +uselessly) that the other task never acquired it. This complaint can +suppress other, more helpful, lockdep complaints, and in any case it is +a false positive. + +This commit therefore switches from rt_mutex_unlock() to +rt_mutex_futex_unlock(), thereby avoiding the lockdep annotations. +Of course, if lockdep ever learns about rt_mutex_init_proxy_locked(), +addtional adjustments will be required. + +Suggested-by: Peter Zijlstra +Signed-off-by: Paul E. McKenney +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/rcu/tree_plugin.h | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +--- a/kernel/rcu/tree_plugin.h ++++ b/kernel/rcu/tree_plugin.h +@@ -31,11 +31,10 @@ + #include + #include + #include "../time/tick-internal.h" ++#include "../locking/rtmutex_common.h" + + #ifdef CONFIG_RCU_BOOST + +-#include "../locking/rtmutex_common.h" +- + /* + * Control variables for per-CPU and per-rcu_node kthreads. These + * handle all flavors of RCU. +@@ -530,7 +529,7 @@ void rcu_read_unlock_special(struct task + + /* Unboost if we were boosted. */ + if (IS_ENABLED(CONFIG_RCU_BOOST) && drop_boost_mutex) +- rt_mutex_unlock(&rnp->boost_mtx); ++ rt_mutex_futex_unlock(&rnp->boost_mtx); + + /* + * If this was the last task on the expedited lists, diff --git a/patches/features/all/rt/rcu-disable-rcu-fast-no-hz-on-rt.patch b/patches/features/all/rt/rcu-disable-rcu-fast-no-hz-on-rt.patch new file mode 100644 index 00000000000..7793ff750d0 --- /dev/null +++ b/patches/features/all/rt/rcu-disable-rcu-fast-no-hz-on-rt.patch @@ -0,0 +1,25 @@ +Subject: rcu: Disable RCU_FAST_NO_HZ on RT +From: Thomas Gleixner +Date: Sun, 28 Oct 2012 13:26:09 +0000 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +This uses a timer_list timer from the irq disabled guts of the idle +code. Disable it for now to prevent wreckage. + +Signed-off-by: Thomas Gleixner + +--- + kernel/rcu/Kconfig | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/kernel/rcu/Kconfig ++++ b/kernel/rcu/Kconfig +@@ -172,7 +172,7 @@ config RCU_FANOUT_LEAF + + config RCU_FAST_NO_HZ + bool "Accelerate last non-dyntick-idle CPU's grace periods" +- depends on NO_HZ_COMMON && SMP && RCU_EXPERT ++ depends on NO_HZ_COMMON && SMP && RCU_EXPERT && !PREEMPT_RT_FULL + default n + help + This option permits CPUs to enter dynticks-idle state even if diff --git a/patches/features/all/rt/rcu-enable-rcu_normal_after_boot-by-default-for-RT.patch b/patches/features/all/rt/rcu-enable-rcu_normal_after_boot-by-default-for-RT.patch new file mode 100644 index 00000000000..877ca2619d8 --- /dev/null +++ b/patches/features/all/rt/rcu-enable-rcu_normal_after_boot-by-default-for-RT.patch @@ -0,0 +1,30 @@ +From: Julia Cartwright +Date: Wed, 12 Oct 2016 11:21:14 -0500 +Subject: [PATCH] rcu: enable rcu_normal_after_boot by default for RT +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +The forcing of an expedited grace period is an expensive and very +RT-application unfriendly operation, as it forcibly preempts all running +tasks on CPUs which are preventing the gp from expiring. + +By default, as a policy decision, disable the expediting of grace +periods (after boot) on configurations which enable PREEMPT_RT_FULL. + +Suggested-by: Luiz Capitulino +Signed-off-by: Julia Cartwright +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/rcu/update.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/kernel/rcu/update.c ++++ b/kernel/rcu/update.c +@@ -66,7 +66,7 @@ extern int rcu_expedited; /* from sysctl + module_param(rcu_expedited, int, 0); + extern int rcu_normal; /* from sysctl */ + module_param(rcu_normal, int, 0); +-static int rcu_normal_after_boot; ++static int rcu_normal_after_boot = IS_ENABLED(CONFIG_PREEMPT_RT_FULL); + module_param(rcu_normal_after_boot, int, 0); + #endif /* #ifndef CONFIG_TINY_RCU */ + diff --git a/patches/features/all/rt/rcu-make-RCU_BOOST-default-on-RT.patch b/patches/features/all/rt/rcu-make-RCU_BOOST-default-on-RT.patch new file mode 100644 index 00000000000..b4e52785a91 --- /dev/null +++ b/patches/features/all/rt/rcu-make-RCU_BOOST-default-on-RT.patch @@ -0,0 +1,35 @@ +From: Sebastian Andrzej Siewior +Date: Fri, 21 Mar 2014 20:19:05 +0100 +Subject: rcu: make RCU_BOOST default on RT +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Since it is no longer invoked from the softirq people run into OOM more +often if the priority of the RCU thread is too low. Making boosting +default on RT should help in those case and it can be switched off if +someone knows better. + +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/rcu/Kconfig | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/kernel/rcu/Kconfig ++++ b/kernel/rcu/Kconfig +@@ -36,7 +36,7 @@ config TINY_RCU + + config RCU_EXPERT + bool "Make expert-level adjustments to RCU configuration" +- default n ++ default y if PREEMPT_RT_FULL + help + This option needs to be enabled if you wish to make + expert-level adjustments to RCU configuration. By default, +@@ -191,7 +191,7 @@ config RCU_FAST_NO_HZ + config RCU_BOOST + bool "Enable RCU priority boosting" + depends on RT_MUTEXES && PREEMPT_RCU && RCU_EXPERT +- default n ++ default y if PREEMPT_RT_FULL + help + This option boosts the priority of preempted RCU readers that + block the current preemptible RCU grace period for too long. diff --git a/patches/features/all/rt/rcu-merge-rcu-bh-into-rcu-preempt-for-rt.patch b/patches/features/all/rt/rcu-merge-rcu-bh-into-rcu-preempt-for-rt.patch new file mode 100644 index 00000000000..04456a3bb91 --- /dev/null +++ b/patches/features/all/rt/rcu-merge-rcu-bh-into-rcu-preempt-for-rt.patch @@ -0,0 +1,358 @@ +Subject: rcu: Merge RCU-bh into RCU-preempt +Date: Wed, 5 Oct 2011 11:59:38 -0700 +From: Thomas Gleixner +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +The Linux kernel has long RCU-bh read-side critical sections that +intolerably increase scheduling latency under mainline's RCU-bh rules, +which include RCU-bh read-side critical sections being non-preemptible. +This patch therefore arranges for RCU-bh to be implemented in terms of +RCU-preempt for CONFIG_PREEMPT_RT_FULL=y. + +This has the downside of defeating the purpose of RCU-bh, namely, +handling the case where the system is subjected to a network-based +denial-of-service attack that keeps at least one CPU doing full-time +softirq processing. This issue will be fixed by a later commit. + +The current commit will need some work to make it appropriate for +mainline use, for example, it needs to be extended to cover Tiny RCU. + +[ paulmck: Added a useful changelog ] + +Signed-off-by: Thomas Gleixner +Signed-off-by: Paul E. McKenney +Link: http://lkml.kernel.org/r/20111005185938.GA20403@linux.vnet.ibm.com +Signed-off-by: Thomas Gleixner + +--- + include/linux/rcupdate.h | 23 +++++++++++++++++++++++ + include/linux/rcutree.h | 8 ++++++++ + kernel/rcu/rcu.h | 14 +++++++++++--- + kernel/rcu/rcutorture.c | 7 +++++++ + kernel/rcu/tree.c | 24 ++++++++++++++++++++++++ + kernel/rcu/tree.h | 2 ++ + kernel/rcu/update.c | 2 ++ + 7 files changed, 77 insertions(+), 3 deletions(-) + +--- a/include/linux/rcupdate.h ++++ b/include/linux/rcupdate.h +@@ -56,7 +56,11 @@ void call_rcu(struct rcu_head *head, rcu + #define call_rcu call_rcu_sched + #endif /* #else #ifdef CONFIG_PREEMPT_RCU */ + ++#ifdef CONFIG_PREEMPT_RT_FULL ++#define call_rcu_bh call_rcu ++#else + void call_rcu_bh(struct rcu_head *head, rcu_callback_t func); ++#endif + void call_rcu_sched(struct rcu_head *head, rcu_callback_t func); + void synchronize_sched(void); + void rcu_barrier_tasks(void); +@@ -113,7 +117,11 @@ static inline int rcu_preempt_depth(void + void rcu_init(void); + extern int rcu_scheduler_active __read_mostly; + void rcu_sched_qs(void); ++#ifdef CONFIG_PREEMPT_RT_FULL ++static inline void rcu_bh_qs(void) { } ++#else + void rcu_bh_qs(void); ++#endif + void rcu_check_callbacks(int user); + void rcu_report_dead(unsigned int cpu); + void rcu_cpu_starting(unsigned int cpu); +@@ -263,7 +271,14 @@ extern struct lockdep_map rcu_sched_lock + extern struct lockdep_map rcu_callback_map; + int debug_lockdep_rcu_enabled(void); + int rcu_read_lock_held(void); ++#ifdef CONFIG_PREEMPT_RT_FULL ++static inline int rcu_read_lock_bh_held(void) ++{ ++ return rcu_read_lock_held(); ++} ++#else + int rcu_read_lock_bh_held(void); ++#endif + int rcu_read_lock_sched_held(void); + + #else /* #ifdef CONFIG_DEBUG_LOCK_ALLOC */ +@@ -667,10 +682,14 @@ static inline void rcu_read_unlock(void) + static inline void rcu_read_lock_bh(void) + { + local_bh_disable(); ++#ifdef CONFIG_PREEMPT_RT_FULL ++ rcu_read_lock(); ++#else + __acquire(RCU_BH); + rcu_lock_acquire(&rcu_bh_lock_map); + RCU_LOCKDEP_WARN(!rcu_is_watching(), + "rcu_read_lock_bh() used illegally while idle"); ++#endif + } + + /* +@@ -680,10 +699,14 @@ static inline void rcu_read_lock_bh(void + */ + static inline void rcu_read_unlock_bh(void) + { ++#ifdef CONFIG_PREEMPT_RT_FULL ++ rcu_read_unlock(); ++#else + RCU_LOCKDEP_WARN(!rcu_is_watching(), + "rcu_read_unlock_bh() used illegally while idle"); + rcu_lock_release(&rcu_bh_lock_map); + __release(RCU_BH); ++#endif + local_bh_enable(); + } + +--- a/include/linux/rcutree.h ++++ b/include/linux/rcutree.h +@@ -44,7 +44,11 @@ static inline void rcu_virt_note_context + rcu_note_context_switch(false); + } + ++#ifdef CONFIG_PREEMPT_RT_FULL ++# define synchronize_rcu_bh synchronize_rcu ++#else + void synchronize_rcu_bh(void); ++#endif + void synchronize_sched_expedited(void); + void synchronize_rcu_expedited(void); + +@@ -72,7 +76,11 @@ static inline void synchronize_rcu_bh_ex + } + + void rcu_barrier(void); ++#ifdef CONFIG_PREEMPT_RT_FULL ++# define rcu_barrier_bh rcu_barrier ++#else + void rcu_barrier_bh(void); ++#endif + void rcu_barrier_sched(void); + unsigned long get_state_synchronize_rcu(void); + void cond_synchronize_rcu(unsigned long oldstate); +--- a/kernel/rcu/rcu.h ++++ b/kernel/rcu/rcu.h +@@ -462,18 +462,26 @@ static inline void show_rcu_gp_kthreads( + extern unsigned long rcutorture_testseq; + extern unsigned long rcutorture_vernum; + unsigned long rcu_batches_started(void); +-unsigned long rcu_batches_started_bh(void); + unsigned long rcu_batches_started_sched(void); + unsigned long rcu_batches_completed(void); +-unsigned long rcu_batches_completed_bh(void); + unsigned long rcu_batches_completed_sched(void); + unsigned long rcu_exp_batches_completed(void); + unsigned long rcu_exp_batches_completed_sched(void); + unsigned long srcu_batches_completed(struct srcu_struct *sp); + void show_rcu_gp_kthreads(void); + void rcu_force_quiescent_state(void); +-void rcu_bh_force_quiescent_state(void); + void rcu_sched_force_quiescent_state(void); ++ ++#ifndef CONFIG_PREEMPT_RT_FULL ++void rcu_bh_force_quiescent_state(void); ++unsigned long rcu_batches_started_bh(void); ++unsigned long rcu_batches_completed_bh(void); ++#else ++# define rcu_bh_force_quiescent_state rcu_force_quiescent_state ++# define rcu_batches_completed_bh rcu_batches_completed ++# define rcu_batches_started_bh rcu_batches_completed ++#endif ++ + #endif /* #else #ifdef CONFIG_TINY_RCU */ + + #ifdef CONFIG_RCU_NOCB_CPU +--- a/kernel/rcu/rcutorture.c ++++ b/kernel/rcu/rcutorture.c +@@ -417,6 +417,7 @@ static struct rcu_torture_ops rcu_ops = + .name = "rcu" + }; + ++#ifndef CONFIG_PREEMPT_RT_FULL + /* + * Definitions for rcu_bh torture testing. + */ +@@ -456,6 +457,12 @@ static struct rcu_torture_ops rcu_bh_ops + .name = "rcu_bh" + }; + ++#else ++static struct rcu_torture_ops rcu_bh_ops = { ++ .ttype = INVALID_RCU_FLAVOR, ++}; ++#endif ++ + /* + * Don't even think about trying any of these in real life!!! + * The names includes "busted", and they really means it! +--- a/kernel/rcu/tree.c ++++ b/kernel/rcu/tree.c +@@ -243,6 +243,7 @@ void rcu_sched_qs(void) + this_cpu_ptr(&rcu_sched_data), true); + } + ++#ifndef CONFIG_PREEMPT_RT_FULL + void rcu_bh_qs(void) + { + RCU_LOCKDEP_WARN(preemptible(), "rcu_bh_qs() invoked with preemption enabled!!!"); +@@ -253,6 +254,7 @@ void rcu_bh_qs(void) + __this_cpu_write(rcu_bh_data.cpu_no_qs.b.norm, false); + } + } ++#endif + + /* + * Steal a bit from the bottom of ->dynticks for idle entry/exit +@@ -564,11 +566,13 @@ EXPORT_SYMBOL_GPL(rcu_batches_started_sc + /* + * Return the number of RCU BH batches started thus far for debug & stats. + */ ++#ifndef CONFIG_PREEMPT_RT_FULL + unsigned long rcu_batches_started_bh(void) + { + return rcu_bh_state.gpnum; + } + EXPORT_SYMBOL_GPL(rcu_batches_started_bh); ++#endif + + /* + * Return the number of RCU batches completed thus far for debug & stats. +@@ -588,6 +592,7 @@ unsigned long rcu_batches_completed_sche + } + EXPORT_SYMBOL_GPL(rcu_batches_completed_sched); + ++#ifndef CONFIG_PREEMPT_RT_FULL + /* + * Return the number of RCU BH batches completed thus far for debug & stats. + */ +@@ -596,6 +601,7 @@ unsigned long rcu_batches_completed_bh(v + return rcu_bh_state.completed; + } + EXPORT_SYMBOL_GPL(rcu_batches_completed_bh); ++#endif + + /* + * Return the number of RCU expedited batches completed thus far for +@@ -619,6 +625,7 @@ unsigned long rcu_exp_batches_completed_ + } + EXPORT_SYMBOL_GPL(rcu_exp_batches_completed_sched); + ++#ifndef CONFIG_PREEMPT_RT_FULL + /* + * Force a quiescent state. + */ +@@ -637,6 +644,13 @@ void rcu_bh_force_quiescent_state(void) + } + EXPORT_SYMBOL_GPL(rcu_bh_force_quiescent_state); + ++#else ++void rcu_force_quiescent_state(void) ++{ ++} ++EXPORT_SYMBOL_GPL(rcu_force_quiescent_state); ++#endif ++ + /* + * Force a quiescent state for RCU-sched. + */ +@@ -687,9 +701,11 @@ void rcutorture_get_gp_data(enum rcutort + case RCU_FLAVOR: + rsp = rcu_state_p; + break; ++#ifndef CONFIG_PREEMPT_RT_FULL + case RCU_BH_FLAVOR: + rsp = &rcu_bh_state; + break; ++#endif + case RCU_SCHED_FLAVOR: + rsp = &rcu_sched_state; + break; +@@ -3113,6 +3129,7 @@ void call_rcu_sched(struct rcu_head *hea + } + EXPORT_SYMBOL_GPL(call_rcu_sched); + ++#ifndef CONFIG_PREEMPT_RT_FULL + /** + * call_rcu_bh() - Queue an RCU for invocation after a quicker grace period. + * @head: structure to be used for queueing the RCU updates. +@@ -3140,6 +3157,7 @@ void call_rcu_bh(struct rcu_head *head, + __call_rcu(head, func, &rcu_bh_state, -1, 0); + } + EXPORT_SYMBOL_GPL(call_rcu_bh); ++#endif + + /* + * Queue an RCU callback for lazy invocation after a grace period. +@@ -3225,6 +3243,7 @@ void synchronize_sched(void) + } + EXPORT_SYMBOL_GPL(synchronize_sched); + ++#ifndef CONFIG_PREEMPT_RT_FULL + /** + * synchronize_rcu_bh - wait until an rcu_bh grace period has elapsed. + * +@@ -3251,6 +3270,7 @@ void synchronize_rcu_bh(void) + wait_rcu_gp(call_rcu_bh); + } + EXPORT_SYMBOL_GPL(synchronize_rcu_bh); ++#endif + + /** + * get_state_synchronize_rcu - Snapshot current RCU state +@@ -3601,6 +3621,7 @@ static void _rcu_barrier(struct rcu_stat + mutex_unlock(&rsp->barrier_mutex); + } + ++#ifndef CONFIG_PREEMPT_RT_FULL + /** + * rcu_barrier_bh - Wait until all in-flight call_rcu_bh() callbacks complete. + */ +@@ -3609,6 +3630,7 @@ void rcu_barrier_bh(void) + _rcu_barrier(&rcu_bh_state); + } + EXPORT_SYMBOL_GPL(rcu_barrier_bh); ++#endif + + /** + * rcu_barrier_sched - Wait for in-flight call_rcu_sched() callbacks. +@@ -4184,7 +4206,9 @@ void __init rcu_init(void) + + rcu_bootup_announce(); + rcu_init_geometry(); ++#ifndef CONFIG_PREEMPT_RT_FULL + rcu_init_one(&rcu_bh_state); ++#endif + rcu_init_one(&rcu_sched_state); + if (dump_tree) + rcu_dump_rcu_node_tree(&rcu_sched_state); +--- a/kernel/rcu/tree.h ++++ b/kernel/rcu/tree.h +@@ -427,7 +427,9 @@ extern struct list_head rcu_struct_flavo + */ + extern struct rcu_state rcu_sched_state; + ++#ifndef CONFIG_PREEMPT_RT_FULL + extern struct rcu_state rcu_bh_state; ++#endif + + #ifdef CONFIG_PREEMPT_RCU + extern struct rcu_state rcu_preempt_state; +--- a/kernel/rcu/update.c ++++ b/kernel/rcu/update.c +@@ -333,6 +333,7 @@ int rcu_read_lock_held(void) + } + EXPORT_SYMBOL_GPL(rcu_read_lock_held); + ++#ifndef CONFIG_PREEMPT_RT_FULL + /** + * rcu_read_lock_bh_held() - might we be in RCU-bh read-side critical section? + * +@@ -359,6 +360,7 @@ int rcu_read_lock_bh_held(void) + return in_softirq() || irqs_disabled(); + } + EXPORT_SYMBOL_GPL(rcu_read_lock_bh_held); ++#endif + + #endif /* #ifdef CONFIG_DEBUG_LOCK_ALLOC */ + diff --git a/patches/features/all/rt/rcu-segcblist-include-rcupdate.h.patch b/patches/features/all/rt/rcu-segcblist-include-rcupdate.h.patch new file mode 100644 index 00000000000..ffc4029ab44 --- /dev/null +++ b/patches/features/all/rt/rcu-segcblist-include-rcupdate.h.patch @@ -0,0 +1,23 @@ +From: Sebastian Andrzej Siewior +Date: Fri, 22 Sep 2017 15:01:46 +0200 +Subject: [PATCH] rcu/segcblist: include rcupdate.h +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +The RT build on ARM complains about non-existing ULONG_CMP_LT. Since +rcu_segcblist.c uses that macro it should include the header file. + +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/rcu/rcu_segcblist.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/kernel/rcu/rcu_segcblist.c ++++ b/kernel/rcu/rcu_segcblist.c +@@ -23,6 +23,7 @@ + #include + #include + #include ++#include + + #include "rcu_segcblist.h" + diff --git a/patches/features/all/rt/rcutree-rcu_bh_qs-disable-irq-while-calling-rcu_pree.patch b/patches/features/all/rt/rcutree-rcu_bh_qs-disable-irq-while-calling-rcu_pree.patch new file mode 100644 index 00000000000..31f18a65c82 --- /dev/null +++ b/patches/features/all/rt/rcutree-rcu_bh_qs-disable-irq-while-calling-rcu_pree.patch @@ -0,0 +1,49 @@ +From: Tiejun Chen +Date: Wed, 18 Dec 2013 17:51:49 +0800 +Subject: rcutree/rcu_bh_qs: Disable irq while calling rcu_preempt_qs() +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Any callers to the function rcu_preempt_qs() must disable irqs in +order to protect the assignment to ->rcu_read_unlock_special. In +RT case, rcu_bh_qs() as the wrapper of rcu_preempt_qs() is called +in some scenarios where irq is enabled, like this path, + +do_single_softirq() + | + + local_irq_enable(); + + handle_softirq() + | | + | + rcu_bh_qs() + | | + | + rcu_preempt_qs() + | + + local_irq_disable() + +So here we'd better disable irq directly inside of rcu_bh_qs() to +fix this, otherwise the kernel may be freezable sometimes as +observed. And especially this way is also kind and safe for the +potential rcu_bh_qs() usage elsewhere in the future. + + +Signed-off-by: Tiejun Chen +Signed-off-by: Bin Jiang +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/rcu/tree.c | 5 +++++ + 1 file changed, 5 insertions(+) + +--- a/kernel/rcu/tree.c ++++ b/kernel/rcu/tree.c +@@ -248,7 +248,12 @@ static void rcu_preempt_qs(void); + + void rcu_bh_qs(void) + { ++ unsigned long flags; ++ ++ /* Callers to this function, rcu_preempt_qs(), must disable irqs. */ ++ local_irq_save(flags); + rcu_preempt_qs(); ++ local_irq_restore(flags); + } + #else + void rcu_bh_qs(void) diff --git a/patches/features/all/rt/re-preempt_rt_full-arm-coredump-fails-for-cpu-3e-3d-4.patch b/patches/features/all/rt/re-preempt_rt_full-arm-coredump-fails-for-cpu-3e-3d-4.patch new file mode 100644 index 00000000000..b0d391f12c3 --- /dev/null +++ b/patches/features/all/rt/re-preempt_rt_full-arm-coredump-fails-for-cpu-3e-3d-4.patch @@ -0,0 +1,69 @@ +Subject: ARM: Initialize split page table locks for vector page +From: Frank Rowand +Date: Sat, 1 Oct 2011 18:58:13 -0700 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Without this patch, ARM can not use SPLIT_PTLOCK_CPUS if +PREEMPT_RT_FULL=y because vectors_user_mapping() creates a +VM_ALWAYSDUMP mapping of the vector page (address 0xffff0000), but no +ptl->lock has been allocated for the page. An attempt to coredump +that page will result in a kernel NULL pointer dereference when +follow_page() attempts to lock the page. + +The call tree to the NULL pointer dereference is: + + do_notify_resume() + get_signal_to_deliver() + do_coredump() + elf_core_dump() + get_dump_page() + __get_user_pages() + follow_page() + pte_offset_map_lock() <----- a #define + ... + rt_spin_lock() + +The underlying problem is exposed by mm-shrink-the-page-frame-to-rt-size.patch. + +Signed-off-by: Frank Rowand +Cc: Frank +Cc: Peter Zijlstra +Link: http://lkml.kernel.org/r/4E87C535.2030907@am.sony.com +Signed-off-by: Thomas Gleixner +--- + arch/arm/kernel/process.c | 24 ++++++++++++++++++++++++ + 1 file changed, 24 insertions(+) + +--- a/arch/arm/kernel/process.c ++++ b/arch/arm/kernel/process.c +@@ -325,6 +325,30 @@ unsigned long arch_randomize_brk(struct + } + + #ifdef CONFIG_MMU ++/* ++ * CONFIG_SPLIT_PTLOCK_CPUS results in a page->ptl lock. If the lock is not ++ * initialized by pgtable_page_ctor() then a coredump of the vector page will ++ * fail. ++ */ ++static int __init vectors_user_mapping_init_page(void) ++{ ++ struct page *page; ++ unsigned long addr = 0xffff0000; ++ pgd_t *pgd; ++ pud_t *pud; ++ pmd_t *pmd; ++ ++ pgd = pgd_offset_k(addr); ++ pud = pud_offset(pgd, addr); ++ pmd = pmd_offset(pud, addr); ++ page = pmd_page(*(pmd)); ++ ++ pgtable_page_ctor(page); ++ ++ return 0; ++} ++late_initcall(vectors_user_mapping_init_page); ++ + #ifdef CONFIG_KUSER_HELPERS + /* + * The vectors page is always readable from user space for the diff --git a/patches/features/all/rt/rfc-arm-smp-__cpu_disable-fix-sleeping-function-called-from-invalid-context.patch b/patches/features/all/rt/rfc-arm-smp-__cpu_disable-fix-sleeping-function-called-from-invalid-context.patch new file mode 100644 index 00000000000..54e71e7a064 --- /dev/null +++ b/patches/features/all/rt/rfc-arm-smp-__cpu_disable-fix-sleeping-function-called-from-invalid-context.patch @@ -0,0 +1,94 @@ +Subject: ARM: smp: Move clear_tasks_mm_cpumask() call to __cpu_die() +From: Grygorii Strashko +Date: Fri, 11 Sep 2015 21:21:23 +0300 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +When running with the RT-kernel (4.1.5-rt5) on TI OMAP dra7-evm and trying +to do Suspend to RAM, the following backtrace occurs: + + Disabling non-boot CPUs ... + PM: noirq suspend of devices complete after 7.295 msecs + Disabling non-boot CPUs ... + BUG: sleeping function called from invalid context at kernel/locking/rtmutex.c:917 + in_atomic(): 1, irqs_disabled(): 128, pid: 18, name: migration/1 + INFO: lockdep is turned off. + irq event stamp: 122 + hardirqs last enabled at (121): [] _raw_spin_unlock_irqrestore+0x88/0x90 + hardirqs last disabled at (122): [] _raw_spin_lock_irq+0x28/0x5c + softirqs last enabled at (0): [] copy_process.part.52+0x410/0x19d8 + softirqs last disabled at (0): [< (null)>] (null) + Preemption disabled at:[< (null)>] (null) + CPU: 1 PID: 18 Comm: migration/1 Tainted: G W 4.1.4-rt3-01046-g96ac8da #204 + Hardware name: Generic DRA74X (Flattened Device Tree) + [] (unwind_backtrace) from [] (show_stack+0x20/0x24) + [] (show_stack) from [] (dump_stack+0x88/0xdc) + [] (dump_stack) from [] (___might_sleep+0x198/0x2a8) + [] (___might_sleep) from [] (rt_spin_lock+0x30/0x70) + [] (rt_spin_lock) from [] (find_lock_task_mm+0x9c/0x174) + [] (find_lock_task_mm) from [] (clear_tasks_mm_cpumask+0xb4/0x1ac) + [] (clear_tasks_mm_cpumask) from [] (__cpu_disable+0x98/0xbc) + [] (__cpu_disable) from [] (take_cpu_down+0x1c/0x50) + [] (take_cpu_down) from [] (multi_cpu_stop+0x11c/0x158) + [] (multi_cpu_stop) from [] (cpu_stopper_thread+0xc4/0x184) + [] (cpu_stopper_thread) from [] (smpboot_thread_fn+0x18c/0x324) + [] (smpboot_thread_fn) from [] (kthread+0xe8/0x104) + [] (kthread) from [] (ret_from_fork+0x14/0x3c) + CPU1: shutdown + PM: Calling sched_clock_suspend+0x0/0x40 + PM: Calling timekeeping_suspend+0x0/0x2e0 + PM: Calling irq_gc_suspend+0x0/0x68 + PM: Calling fw_suspend+0x0/0x2c + PM: Calling cpu_pm_suspend+0x0/0x28 + +Also, sometimes system stucks right after displaying "Disabling non-boot +CPUs ...". The root cause of above backtrace is task_lock() which takes +a sleeping lock on -RT. + +To fix the issue, move clear_tasks_mm_cpumask() call from __cpu_disable() +to __cpu_die() which is called on the thread which is asking for a target +CPU to be shutdown. In addition, this change restores CPUhotplug functionality +on TI OMAP dra7-evm and CPU1 can be unplugged/plugged many times. + +Signed-off-by: Grygorii Strashko +Cc: Steven Rostedt +Cc: +Cc: Sekhar Nori +Cc: Austin Schuh +Cc: +Cc: Russell King +Cc: +Cc: stable-rt@vger.kernel.org +Link: http://lkml.kernel.org/r/1441995683-30817-1-git-send-email-grygorii.strashko@ti.com +Signed-off-by: Thomas Gleixner +--- + +RFC: I'm not sure how safe this change is and will be appreciated for any comments. +Most of arches call clear_tasks_mm_cpumask() from __cpu_disable(), but *powerpc* +calls it from CPU_DEAD notifier. This patch follows powerpc's approach in +general. + +This issue was first reported in: + http://www.spinics.net/lists/linux-rt-users/msg13752.html + + arch/arm/kernel/smp.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +--- a/arch/arm/kernel/smp.c ++++ b/arch/arm/kernel/smp.c +@@ -236,8 +236,6 @@ int __cpu_disable(void) + flush_cache_louis(); + local_flush_tlb_all(); + +- clear_tasks_mm_cpumask(cpu); +- + return 0; + } + +@@ -255,6 +253,7 @@ void __cpu_die(unsigned int cpu) + } + pr_debug("CPU%u: shutdown\n", cpu); + ++ clear_tasks_mm_cpumask(cpu); + /* + * platform_cpu_kill() is generally expected to do the powering off + * and/or cutting of clocks to the dying CPU. Optionally, this may diff --git a/patches/features/all/rt/rt-Increase-decrease-the-nr-of-migratory-tasks-when-.patch b/patches/features/all/rt/rt-Increase-decrease-the-nr-of-migratory-tasks-when-.patch new file mode 100644 index 00000000000..1366a0ca702 --- /dev/null +++ b/patches/features/all/rt/rt-Increase-decrease-the-nr-of-migratory-tasks-when-.patch @@ -0,0 +1,155 @@ +From: Daniel Bristot de Oliveira +Date: Mon, 26 Jun 2017 17:07:15 +0200 +Subject: rt: Increase/decrease the nr of migratory tasks when enabling/disabling migration +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +There is a problem in the migrate_disable()/enable() implementation +regarding the number of migratory tasks in the rt/dl RQs. The problem +is the following: + +When a task is attached to the rt runqueue, it is checked if it either +can run in more than one CPU, or if it is with migration disable. If +either check is true, the rt_rq->rt_nr_migratory counter is not +increased. The counter increases otherwise. + +When the task is detached, the same check is done. If either check is +true, the rt_rq->rt_nr_migratory counter is not decreased. The counter +decreases otherwise. The same check is done in the dl scheduler. + +One important thing is that, migrate disable/enable does not touch this +counter for tasks attached to the rt rq. So suppose the following chain +of events. + +Assumptions: +Task A is the only runnable task in A Task B runs on the CPU B +Task A runs on CFS (non-rt) Task B has RT priority +Thus, rt_nr_migratory is 0 B is running +Task A can run on all CPUS. + +Timeline: + CPU A/TASK A CPU B/TASK B +A takes the rt mutex X . +A disables migration . + . B tries to take the rt mutex X + . As it is held by A { + . A inherits the rt priority of B + . A is dequeued from CFS RQ of CPU A + . A is enqueued in the RT RQ of CPU A + . As migration is disabled + . rt_nr_migratory in A is not increased + . +A enables migration +A releases the rt mutex X { + A returns to its original priority + A ask to be dequeued from RT RQ { + As migration is now enabled and it can run on all CPUS { + rt_nr_migratory should be decreased + As rt_nr_migratory is 0, rt_nr_migratory under flows + } +} + +This variable is important because it notifies if there are more than one +runnable & migratory task in the runqueue. If there are more than one +tasks, the rt_rq is set as overloaded, and then tries to migrate some +tasks. This rule is important to keep the scheduler working conserving, +that is, in a system with M CPUs, the M highest priority tasks should be +running. + +As rt_nr_migratory is unsigned, it will become > 0, notifying that the +RQ is overloaded, activating pushing mechanism without need. + +This patch fixes this problem by decreasing/increasing the +rt/dl_nr_migratory in the migrate disable/enable operations. + +Reported-by: Pei Zhang +Reported-by: Luiz Capitulino +Signed-off-by: Daniel Bristot de Oliveira +Cc: Luis Claudio R. Goncalves +Cc: Clark Williams +Cc: Luiz Capitulino +Cc: Sebastian Andrzej Siewior +Cc: Thomas Gleixner +Cc: Steven Rostedt +Cc: Peter Zijlstra +Cc: Ingo Molnar +Cc: LKML +Cc: linux-rt-users +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/sched/core.c | 49 ++++++++++++++++++++++++++++++++++++++++++++----- + 1 file changed, 44 insertions(+), 5 deletions(-) + +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -6850,6 +6850,47 @@ const u32 sched_prio_to_wmult[40] = { + + #if defined(CONFIG_PREEMPT_COUNT) && defined(CONFIG_SMP) + ++static inline void ++update_nr_migratory(struct task_struct *p, long delta) ++{ ++ if (unlikely((p->sched_class == &rt_sched_class || ++ p->sched_class == &dl_sched_class) && ++ p->nr_cpus_allowed > 1)) { ++ if (p->sched_class == &rt_sched_class) ++ task_rq(p)->rt.rt_nr_migratory += delta; ++ else ++ task_rq(p)->dl.dl_nr_migratory += delta; ++ } ++} ++ ++static inline void ++migrate_disable_update_cpus_allowed(struct task_struct *p) ++{ ++ struct rq *rq; ++ struct rq_flags rf; ++ ++ p->cpus_ptr = cpumask_of(smp_processor_id()); ++ ++ rq = task_rq_lock(p, &rf); ++ update_nr_migratory(p, -1); ++ p->nr_cpus_allowed = 1; ++ task_rq_unlock(rq, p, &rf); ++} ++ ++static inline void ++migrate_enable_update_cpus_allowed(struct task_struct *p) ++{ ++ struct rq *rq; ++ struct rq_flags rf; ++ ++ p->cpus_ptr = &p->cpus_mask; ++ ++ rq = task_rq_lock(p, &rf); ++ p->nr_cpus_allowed = cpumask_weight(&p->cpus_mask); ++ update_nr_migratory(p, 1); ++ task_rq_unlock(rq, p, &rf); ++} ++ + void migrate_disable(void) + { + struct task_struct *p = current; +@@ -6873,10 +6914,9 @@ void migrate_disable(void) + } + + preempt_disable(); +- p->migrate_disable = 1; + +- p->cpus_ptr = cpumask_of(smp_processor_id()); +- p->nr_cpus_allowed = 1; ++ migrate_disable_update_cpus_allowed(p); ++ p->migrate_disable = 1; + + preempt_enable(); + } +@@ -6908,9 +6948,8 @@ void migrate_enable(void) + + preempt_disable(); + +- p->cpus_ptr = &p->cpus_mask; +- p->nr_cpus_allowed = cpumask_weight(&p->cpus_mask); + p->migrate_disable = 0; ++ migrate_enable_update_cpus_allowed(p); + + if (p->migrate_disable_update) { + struct rq *rq; diff --git a/patches/features/all/rt/rt-introduce-cpu-chill.patch b/patches/features/all/rt/rt-introduce-cpu-chill.patch new file mode 100644 index 00000000000..aad5c6457c1 --- /dev/null +++ b/patches/features/all/rt/rt-introduce-cpu-chill.patch @@ -0,0 +1,129 @@ +Subject: rt: Introduce cpu_chill() +From: Thomas Gleixner +Date: Wed, 07 Mar 2012 20:51:03 +0100 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Retry loops on RT might loop forever when the modifying side was +preempted. Add cpu_chill() to replace cpu_relax(). cpu_chill() +defaults to cpu_relax() for non RT. On RT it puts the looping task to +sleep for a tick so the preempted task can make progress. + +Steven Rostedt changed it to use a hrtimer instead of msleep(): +| +|Ulrich Obergfell pointed out that cpu_chill() calls msleep() which is woken +|up by the ksoftirqd running the TIMER softirq. But as the cpu_chill() is +|called from softirq context, it may block the ksoftirqd() from running, in +|which case, it may never wake up the msleep() causing the deadlock. +| +|I checked the vmcore, and irq/74-qla2xxx is stuck in the msleep() call, +|running on CPU 8. The one ksoftirqd that is stuck, happens to be the one that +|runs on CPU 8, and it is blocked on a lock held by irq/74-qla2xxx. As that +|ksoftirqd is the one that will wake up irq/74-qla2xxx, and it happens to be +|blocked on a lock that irq/74-qla2xxx holds, we have our deadlock. +| +|The solution is not to convert the cpu_chill() back to a cpu_relax() as that +|will re-create a possible live lock that the cpu_chill() fixed earlier, and may +|also leave this bug open on other softirqs. The fix is to remove the +|dependency on ksoftirqd from cpu_chill(). That is, instead of calling +|msleep() that requires ksoftirqd to wake it up, use the +|hrtimer_nanosleep() code that does the wakeup from hard irq context. +| +||Looks to be the lock of the block softirq. I don't have the core dump +||anymore, but from what I could tell the ksoftirqd was blocked on the +||block softirq lock, where the block softirq handler did a msleep +||(called by the qla2xxx interrupt handler). +|| +||Looking at trigger_softirq() in block/blk-softirq.c, it can do a +||smp_callfunction() to another cpu to run the block softirq. If that +||happens to be the cpu where the qla2xx irq handler is doing the block +||softirq and is in a middle of a msleep(), I believe the ksoftirqd will +||try to run the softirq. If it does that, then BOOM, it's deadlocked +||because the ksoftirqd will never run the timer softirq either. +| +||I should have also stated that it was only one lock that was involved. +||But the lock owner was doing a msleep() that requires a wakeup by +||ksoftirqd to continue. If ksoftirqd happens to be blocked on a lock +||held by the msleep() caller, then you have your deadlock. +|| +||It's best not to have any softirqs going to sleep requiring another +||softirq to wake it up. Note, if we ever require a timer softirq to do a +||cpu_chill() it will most definitely hit this deadlock. + ++ bigeasy: add PF_NOFREEZE: +| [....] Waiting for /dev to be fully populated... +| ===================================== +| [ BUG: udevd/229 still has locks held! ] +| 3.12.11-rt17 #23 Not tainted +| ------------------------------------- +| 1 lock held by udevd/229: +| #0: (&type->i_mutex_dir_key#2){+.+.+.}, at: lookup_slow+0x28/0x98 +| +| stack backtrace: +| CPU: 0 PID: 229 Comm: udevd Not tainted 3.12.11-rt17 #23 +| (unwind_backtrace+0x0/0xf8) from (show_stack+0x10/0x14) +| (show_stack+0x10/0x14) from (dump_stack+0x74/0xbc) +| (dump_stack+0x74/0xbc) from (do_nanosleep+0x120/0x160) +| (do_nanosleep+0x120/0x160) from (hrtimer_nanosleep+0x90/0x110) +| (hrtimer_nanosleep+0x90/0x110) from (cpu_chill+0x30/0x38) +| (cpu_chill+0x30/0x38) from (dentry_kill+0x158/0x1ec) +| (dentry_kill+0x158/0x1ec) from (dput+0x74/0x15c) +| (dput+0x74/0x15c) from (lookup_real+0x4c/0x50) +| (lookup_real+0x4c/0x50) from (__lookup_hash+0x34/0x44) +| (__lookup_hash+0x34/0x44) from (lookup_slow+0x38/0x98) +| (lookup_slow+0x38/0x98) from (path_lookupat+0x208/0x7fc) +| (path_lookupat+0x208/0x7fc) from (filename_lookup+0x20/0x60) +| (filename_lookup+0x20/0x60) from (user_path_at_empty+0x50/0x7c) +| (user_path_at_empty+0x50/0x7c) from (user_path_at+0x14/0x1c) +| (user_path_at+0x14/0x1c) from (vfs_fstatat+0x48/0x94) +| (vfs_fstatat+0x48/0x94) from (SyS_stat64+0x14/0x30) +| (SyS_stat64+0x14/0x30) from (ret_fast_syscall+0x0/0x48) + +Signed-off-by: Thomas Gleixner +Signed-off-by: Steven Rostedt +Signed-off-by: Sebastian Andrzej Siewior +--- + include/linux/delay.h | 6 ++++++ + kernel/time/hrtimer.c | 19 +++++++++++++++++++ + 2 files changed, 25 insertions(+) + +--- a/include/linux/delay.h ++++ b/include/linux/delay.h +@@ -64,4 +64,10 @@ static inline void ssleep(unsigned int s + msleep(seconds * 1000); + } + ++#ifdef CONFIG_PREEMPT_RT_FULL ++extern void cpu_chill(void); ++#else ++# define cpu_chill() cpu_relax() ++#endif ++ + #endif /* defined(_LINUX_DELAY_H) */ +--- a/kernel/time/hrtimer.c ++++ b/kernel/time/hrtimer.c +@@ -1858,6 +1858,25 @@ COMPAT_SYSCALL_DEFINE2(nanosleep, struct + } + #endif + ++#ifdef CONFIG_PREEMPT_RT_FULL ++/* ++ * Sleep for 1 ms in hope whoever holds what we want will let it go. ++ */ ++void cpu_chill(void) ++{ ++ struct timespec64 tu = { ++ .tv_nsec = NSEC_PER_MSEC, ++ }; ++ unsigned int freeze_flag = current->flags & PF_NOFREEZE; ++ ++ current->flags |= PF_NOFREEZE; ++ hrtimer_nanosleep(&tu, HRTIMER_MODE_REL_HARD, CLOCK_MONOTONIC); ++ if (!freeze_flag) ++ current->flags &= ~PF_NOFREEZE; ++} ++EXPORT_SYMBOL(cpu_chill); ++#endif ++ + /* + * Functions related to boot-time initialization: + */ diff --git a/patches/features/all/rt/rt-local-irq-lock.patch b/patches/features/all/rt/rt-local-irq-lock.patch new file mode 100644 index 00000000000..dd0c7077290 --- /dev/null +++ b/patches/features/all/rt/rt-local-irq-lock.patch @@ -0,0 +1,331 @@ +Subject: rt: Add local irq locks +From: Thomas Gleixner +Date: Mon, 20 Jun 2011 09:03:47 +0200 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Introduce locallock. For !RT this maps to preempt_disable()/ +local_irq_disable() so there is not much that changes. For RT this will +map to a spinlock. This makes preemption possible and locked "ressource" +gets the lockdep anotation it wouldn't have otherwise. The locks are +recursive for owner == current. Also, all locks user migrate_disable() +which ensures that the task is not migrated to another CPU while the lock +is held and the owner is preempted. + +Signed-off-by: Thomas Gleixner +--- + include/linux/locallock.h | 271 ++++++++++++++++++++++++++++++++++++++++++++++ + include/linux/percpu.h | 29 ++++ + 2 files changed, 300 insertions(+) + +--- /dev/null ++++ b/include/linux/locallock.h +@@ -0,0 +1,271 @@ ++#ifndef _LINUX_LOCALLOCK_H ++#define _LINUX_LOCALLOCK_H ++ ++#include ++#include ++ ++#ifdef CONFIG_PREEMPT_RT_BASE ++ ++#ifdef CONFIG_DEBUG_SPINLOCK ++# define LL_WARN(cond) WARN_ON(cond) ++#else ++# define LL_WARN(cond) do { } while (0) ++#endif ++ ++/* ++ * per cpu lock based substitute for local_irq_*() ++ */ ++struct local_irq_lock { ++ spinlock_t lock; ++ struct task_struct *owner; ++ int nestcnt; ++ unsigned long flags; ++}; ++ ++#define DEFINE_LOCAL_IRQ_LOCK(lvar) \ ++ DEFINE_PER_CPU(struct local_irq_lock, lvar) = { \ ++ .lock = __SPIN_LOCK_UNLOCKED((lvar).lock) } ++ ++#define DECLARE_LOCAL_IRQ_LOCK(lvar) \ ++ DECLARE_PER_CPU(struct local_irq_lock, lvar) ++ ++#define local_irq_lock_init(lvar) \ ++ do { \ ++ int __cpu; \ ++ for_each_possible_cpu(__cpu) \ ++ spin_lock_init(&per_cpu(lvar, __cpu).lock); \ ++ } while (0) ++ ++static inline void __local_lock(struct local_irq_lock *lv) ++{ ++ if (lv->owner != current) { ++ spin_lock(&lv->lock); ++ LL_WARN(lv->owner); ++ LL_WARN(lv->nestcnt); ++ lv->owner = current; ++ } ++ lv->nestcnt++; ++} ++ ++#define local_lock(lvar) \ ++ do { __local_lock(&get_local_var(lvar)); } while (0) ++ ++#define local_lock_on(lvar, cpu) \ ++ do { __local_lock(&per_cpu(lvar, cpu)); } while (0) ++ ++static inline int __local_trylock(struct local_irq_lock *lv) ++{ ++ if (lv->owner != current && spin_trylock(&lv->lock)) { ++ LL_WARN(lv->owner); ++ LL_WARN(lv->nestcnt); ++ lv->owner = current; ++ lv->nestcnt = 1; ++ return 1; ++ } else if (lv->owner == current) { ++ lv->nestcnt++; ++ return 1; ++ } ++ return 0; ++} ++ ++#define local_trylock(lvar) \ ++ ({ \ ++ int __locked; \ ++ __locked = __local_trylock(&get_local_var(lvar)); \ ++ if (!__locked) \ ++ put_local_var(lvar); \ ++ __locked; \ ++ }) ++ ++static inline void __local_unlock(struct local_irq_lock *lv) ++{ ++ LL_WARN(lv->nestcnt == 0); ++ LL_WARN(lv->owner != current); ++ if (--lv->nestcnt) ++ return; ++ ++ lv->owner = NULL; ++ spin_unlock(&lv->lock); ++} ++ ++#define local_unlock(lvar) \ ++ do { \ ++ __local_unlock(this_cpu_ptr(&lvar)); \ ++ put_local_var(lvar); \ ++ } while (0) ++ ++#define local_unlock_on(lvar, cpu) \ ++ do { __local_unlock(&per_cpu(lvar, cpu)); } while (0) ++ ++static inline void __local_lock_irq(struct local_irq_lock *lv) ++{ ++ spin_lock_irqsave(&lv->lock, lv->flags); ++ LL_WARN(lv->owner); ++ LL_WARN(lv->nestcnt); ++ lv->owner = current; ++ lv->nestcnt = 1; ++} ++ ++#define local_lock_irq(lvar) \ ++ do { __local_lock_irq(&get_local_var(lvar)); } while (0) ++ ++#define local_lock_irq_on(lvar, cpu) \ ++ do { __local_lock_irq(&per_cpu(lvar, cpu)); } while (0) ++ ++static inline void __local_unlock_irq(struct local_irq_lock *lv) ++{ ++ LL_WARN(!lv->nestcnt); ++ LL_WARN(lv->owner != current); ++ lv->owner = NULL; ++ lv->nestcnt = 0; ++ spin_unlock_irq(&lv->lock); ++} ++ ++#define local_unlock_irq(lvar) \ ++ do { \ ++ __local_unlock_irq(this_cpu_ptr(&lvar)); \ ++ put_local_var(lvar); \ ++ } while (0) ++ ++#define local_unlock_irq_on(lvar, cpu) \ ++ do { \ ++ __local_unlock_irq(&per_cpu(lvar, cpu)); \ ++ } while (0) ++ ++static inline int __local_lock_irqsave(struct local_irq_lock *lv) ++{ ++ if (lv->owner != current) { ++ __local_lock_irq(lv); ++ return 0; ++ } else { ++ lv->nestcnt++; ++ return 1; ++ } ++} ++ ++#define local_lock_irqsave(lvar, _flags) \ ++ do { \ ++ if (__local_lock_irqsave(&get_local_var(lvar))) \ ++ put_local_var(lvar); \ ++ _flags = __this_cpu_read(lvar.flags); \ ++ } while (0) ++ ++#define local_lock_irqsave_on(lvar, _flags, cpu) \ ++ do { \ ++ __local_lock_irqsave(&per_cpu(lvar, cpu)); \ ++ _flags = per_cpu(lvar, cpu).flags; \ ++ } while (0) ++ ++static inline int __local_unlock_irqrestore(struct local_irq_lock *lv, ++ unsigned long flags) ++{ ++ LL_WARN(!lv->nestcnt); ++ LL_WARN(lv->owner != current); ++ if (--lv->nestcnt) ++ return 0; ++ ++ lv->owner = NULL; ++ spin_unlock_irqrestore(&lv->lock, lv->flags); ++ return 1; ++} ++ ++#define local_unlock_irqrestore(lvar, flags) \ ++ do { \ ++ if (__local_unlock_irqrestore(this_cpu_ptr(&lvar), flags)) \ ++ put_local_var(lvar); \ ++ } while (0) ++ ++#define local_unlock_irqrestore_on(lvar, flags, cpu) \ ++ do { \ ++ __local_unlock_irqrestore(&per_cpu(lvar, cpu), flags); \ ++ } while (0) ++ ++#define local_spin_trylock_irq(lvar, lock) \ ++ ({ \ ++ int __locked; \ ++ local_lock_irq(lvar); \ ++ __locked = spin_trylock(lock); \ ++ if (!__locked) \ ++ local_unlock_irq(lvar); \ ++ __locked; \ ++ }) ++ ++#define local_spin_lock_irq(lvar, lock) \ ++ do { \ ++ local_lock_irq(lvar); \ ++ spin_lock(lock); \ ++ } while (0) ++ ++#define local_spin_unlock_irq(lvar, lock) \ ++ do { \ ++ spin_unlock(lock); \ ++ local_unlock_irq(lvar); \ ++ } while (0) ++ ++#define local_spin_lock_irqsave(lvar, lock, flags) \ ++ do { \ ++ local_lock_irqsave(lvar, flags); \ ++ spin_lock(lock); \ ++ } while (0) ++ ++#define local_spin_unlock_irqrestore(lvar, lock, flags) \ ++ do { \ ++ spin_unlock(lock); \ ++ local_unlock_irqrestore(lvar, flags); \ ++ } while (0) ++ ++#define get_locked_var(lvar, var) \ ++ (*({ \ ++ local_lock(lvar); \ ++ this_cpu_ptr(&var); \ ++ })) ++ ++#define put_locked_var(lvar, var) local_unlock(lvar); ++ ++#define local_lock_cpu(lvar) \ ++ ({ \ ++ local_lock(lvar); \ ++ smp_processor_id(); \ ++ }) ++ ++#define local_unlock_cpu(lvar) local_unlock(lvar) ++ ++#else /* PREEMPT_RT_BASE */ ++ ++#define DEFINE_LOCAL_IRQ_LOCK(lvar) __typeof__(const int) lvar ++#define DECLARE_LOCAL_IRQ_LOCK(lvar) extern __typeof__(const int) lvar ++ ++static inline void local_irq_lock_init(int lvar) { } ++ ++#define local_trylock(lvar) \ ++ ({ \ ++ preempt_disable(); \ ++ 1; \ ++ }) ++ ++#define local_lock(lvar) preempt_disable() ++#define local_unlock(lvar) preempt_enable() ++#define local_lock_irq(lvar) local_irq_disable() ++#define local_lock_irq_on(lvar, cpu) local_irq_disable() ++#define local_unlock_irq(lvar) local_irq_enable() ++#define local_unlock_irq_on(lvar, cpu) local_irq_enable() ++#define local_lock_irqsave(lvar, flags) local_irq_save(flags) ++#define local_unlock_irqrestore(lvar, flags) local_irq_restore(flags) ++ ++#define local_spin_trylock_irq(lvar, lock) spin_trylock_irq(lock) ++#define local_spin_lock_irq(lvar, lock) spin_lock_irq(lock) ++#define local_spin_unlock_irq(lvar, lock) spin_unlock_irq(lock) ++#define local_spin_lock_irqsave(lvar, lock, flags) \ ++ spin_lock_irqsave(lock, flags) ++#define local_spin_unlock_irqrestore(lvar, lock, flags) \ ++ spin_unlock_irqrestore(lock, flags) ++ ++#define get_locked_var(lvar, var) get_cpu_var(var) ++#define put_locked_var(lvar, var) put_cpu_var(var) ++ ++#define local_lock_cpu(lvar) get_cpu() ++#define local_unlock_cpu(lvar) put_cpu() ++ ++#endif ++ ++#endif +--- a/include/linux/percpu.h ++++ b/include/linux/percpu.h +@@ -19,6 +19,35 @@ + #define PERCPU_MODULE_RESERVE 0 + #endif + ++#ifdef CONFIG_PREEMPT_RT_FULL ++ ++#define get_local_var(var) (*({ \ ++ migrate_disable(); \ ++ this_cpu_ptr(&var); })) ++ ++#define put_local_var(var) do { \ ++ (void)&(var); \ ++ migrate_enable(); \ ++} while (0) ++ ++# define get_local_ptr(var) ({ \ ++ migrate_disable(); \ ++ this_cpu_ptr(var); }) ++ ++# define put_local_ptr(var) do { \ ++ (void)(var); \ ++ migrate_enable(); \ ++} while (0) ++ ++#else ++ ++#define get_local_var(var) get_cpu_var(var) ++#define put_local_var(var) put_cpu_var(var) ++#define get_local_ptr(var) get_cpu_ptr(var) ++#define put_local_ptr(var) put_cpu_ptr(var) ++ ++#endif ++ + /* minimum unit size, also is the maximum supported allocation size */ + #define PCPU_MIN_UNIT_SIZE PFN_ALIGN(32 << 10) + diff --git a/patches/features/all/rt/rt-preempt-base-config.patch b/patches/features/all/rt/rt-preempt-base-config.patch new file mode 100644 index 00000000000..2460d2308e2 --- /dev/null +++ b/patches/features/all/rt/rt-preempt-base-config.patch @@ -0,0 +1,54 @@ +Subject: rt: Provide PREEMPT_RT_BASE config switch +From: Thomas Gleixner +Date: Fri, 17 Jun 2011 12:39:57 +0200 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Introduce PREEMPT_RT_BASE which enables parts of +PREEMPT_RT_FULL. Forces interrupt threading and enables some of the RT +substitutions for testing. + +Signed-off-by: Thomas Gleixner +--- + kernel/Kconfig.preempt | 19 +++++++++++++++++-- + 1 file changed, 17 insertions(+), 2 deletions(-) + +--- a/kernel/Kconfig.preempt ++++ b/kernel/Kconfig.preempt +@@ -1,3 +1,10 @@ ++config PREEMPT ++ bool ++ select PREEMPT_COUNT ++ ++config PREEMPT_RT_BASE ++ bool ++ select PREEMPT + + choice + prompt "Preemption Model" +@@ -33,9 +40,9 @@ config PREEMPT_VOLUNTARY + + Select this if you are building a kernel for a desktop system. + +-config PREEMPT ++config PREEMPT__LL + bool "Preemptible Kernel (Low-Latency Desktop)" +- select PREEMPT_COUNT ++ select PREEMPT + select UNINLINE_SPIN_UNLOCK if !ARCH_INLINE_SPIN_UNLOCK + help + This option reduces the latency of the kernel by making +@@ -52,6 +59,14 @@ config PREEMPT + embedded system with latency requirements in the milliseconds + range. + ++config PREEMPT_RTB ++ bool "Preemptible Kernel (Basic RT)" ++ select PREEMPT_RT_BASE ++ help ++ This option is basically the same as (Low-Latency Desktop) but ++ enables changes which are preliminary for the full preemptible ++ RT kernel. ++ + endchoice + + config PREEMPT_COUNT diff --git a/patches/features/all/rt/rt-serial-warn-fix.patch b/patches/features/all/rt/rt-serial-warn-fix.patch new file mode 100644 index 00000000000..0b9165739fb --- /dev/null +++ b/patches/features/all/rt/rt-serial-warn-fix.patch @@ -0,0 +1,38 @@ +Subject: rt: Improve the serial console PASS_LIMIT +From: Ingo Molnar +Date: Wed Dec 14 13:05:54 CET 2011 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Beyond the warning: + + drivers/tty/serial/8250/8250.c:1613:6: warning: unused variable ‘pass_counter’ [-Wunused-variable] + +the solution of just looping infinitely was ugly - up it to 1 million to +give it a chance to continue in some really ugly situation. + +Signed-off-by: Ingo Molnar +Signed-off-by: Thomas Gleixner +--- + drivers/tty/serial/8250/8250_core.c | 11 ++++++++++- + 1 file changed, 10 insertions(+), 1 deletion(-) + +--- a/drivers/tty/serial/8250/8250_core.c ++++ b/drivers/tty/serial/8250/8250_core.c +@@ -58,7 +58,16 @@ static struct uart_driver serial8250_reg + + static unsigned int skip_txen_test; /* force skip of txen test at init time */ + +-#define PASS_LIMIT 512 ++/* ++ * On -rt we can have a more delays, and legitimately ++ * so - so don't drop work spuriously and spam the ++ * syslog: ++ */ ++#ifdef CONFIG_PREEMPT_RT_FULL ++# define PASS_LIMIT 1000000 ++#else ++# define PASS_LIMIT 512 ++#endif + + #include + /* diff --git a/patches/features/all/rt/rtmutex--Handle-non-enqueued-waiters-gracefully.patch b/patches/features/all/rt/rtmutex--Handle-non-enqueued-waiters-gracefully.patch new file mode 100644 index 00000000000..6f352c44aae --- /dev/null +++ b/patches/features/all/rt/rtmutex--Handle-non-enqueued-waiters-gracefully.patch @@ -0,0 +1,33 @@ +Subject: rtmutex: Handle non enqueued waiters gracefully +From: Thomas Gleixner +Date: Fri, 06 Nov 2015 18:51:03 +0100 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Yimin debugged that in case of a PI wakeup in progress when +rt_mutex_start_proxy_lock() calls task_blocks_on_rt_mutex() the latter +returns -EAGAIN and in consequence the remove_waiter() call runs into +a BUG_ON() because there is nothing to remove. + +Guard it with rt_mutex_has_waiters(). This is a quick fix which is +easy to backport. The proper fix is to have a central check in +remove_waiter() so we can call it unconditionally. + +Reported-and-debugged-by: Yimin Deng +Signed-off-by: Thomas Gleixner +Cc: stable-rt@vger.kernel.org + +--- + kernel/locking/rtmutex.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/kernel/locking/rtmutex.c ++++ b/kernel/locking/rtmutex.c +@@ -1728,7 +1728,7 @@ int __rt_mutex_start_proxy_lock(struct r + ret = 0; + } + +- if (unlikely(ret)) ++ if (ret && rt_mutex_has_waiters(lock)) + remove_waiter(lock, waiter); + + debug_rt_mutex_print_deadlock(waiter); diff --git a/patches/features/all/rt/rtmutex-Make-lock_killable-work.patch b/patches/features/all/rt/rtmutex-Make-lock_killable-work.patch new file mode 100644 index 00000000000..f1c57bce293 --- /dev/null +++ b/patches/features/all/rt/rtmutex-Make-lock_killable-work.patch @@ -0,0 +1,45 @@ +From: Thomas Gleixner +Date: Sat, 1 Apr 2017 12:50:59 +0200 +Subject: [PATCH] rtmutex: Make lock_killable work +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Locking an rt mutex killable does not work because signal handling is +restricted to TASK_INTERRUPTIBLE. + +Use signal_pending_state() unconditionaly. + +Cc: stable-rt@vger.kernel.org +Signed-off-by: Thomas Gleixner +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/locking/rtmutex.c | 19 +++++++------------ + 1 file changed, 7 insertions(+), 12 deletions(-) + +--- a/kernel/locking/rtmutex.c ++++ b/kernel/locking/rtmutex.c +@@ -1201,18 +1201,13 @@ static int __sched + if (try_to_take_rt_mutex(lock, current, waiter)) + break; + +- /* +- * TASK_INTERRUPTIBLE checks for signals and +- * timeout. Ignored otherwise. +- */ +- if (likely(state == TASK_INTERRUPTIBLE)) { +- /* Signal pending? */ +- if (signal_pending(current)) +- ret = -EINTR; +- if (timeout && !timeout->task) +- ret = -ETIMEDOUT; +- if (ret) +- break; ++ if (timeout && !timeout->task) { ++ ret = -ETIMEDOUT; ++ break; ++ } ++ if (signal_pending_state(state, current)) { ++ ret = -EINTR; ++ break; + } + + raw_spin_unlock_irq(&lock->wait_lock); diff --git a/patches/features/all/rt/rtmutex-Provide-rt_mutex_slowlock_locked.patch b/patches/features/all/rt/rtmutex-Provide-rt_mutex_slowlock_locked.patch new file mode 100644 index 00000000000..645e6f90457 --- /dev/null +++ b/patches/features/all/rt/rtmutex-Provide-rt_mutex_slowlock_locked.patch @@ -0,0 +1,132 @@ +From: Thomas Gleixner +Date: Thu, 12 Oct 2017 16:14:22 +0200 +Subject: rtmutex: Provide rt_mutex_slowlock_locked() +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +This is the inner-part of rt_mutex_slowlock(), required for rwsem-rt. + +Signed-off-by: Thomas Gleixner +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/locking/rtmutex.c | 70 ++++++++++++++++++++++------------------ + kernel/locking/rtmutex_common.h | 6 +++ + 2 files changed, 46 insertions(+), 30 deletions(-) + +--- a/kernel/locking/rtmutex.c ++++ b/kernel/locking/rtmutex.c +@@ -1244,35 +1244,16 @@ static void rt_mutex_handle_deadlock(int + } + } + +-/* +- * Slow path lock function: +- */ +-static int __sched +-rt_mutex_slowlock(struct rt_mutex *lock, int state, +- struct hrtimer_sleeper *timeout, +- enum rtmutex_chainwalk chwalk) ++int __sched rt_mutex_slowlock_locked(struct rt_mutex *lock, int state, ++ struct hrtimer_sleeper *timeout, ++ enum rtmutex_chainwalk chwalk, ++ struct rt_mutex_waiter *waiter) + { +- struct rt_mutex_waiter waiter; +- unsigned long flags; +- int ret = 0; +- +- rt_mutex_init_waiter(&waiter); +- +- /* +- * Technically we could use raw_spin_[un]lock_irq() here, but this can +- * be called in early boot if the cmpxchg() fast path is disabled +- * (debug, no architecture support). In this case we will acquire the +- * rtmutex with lock->wait_lock held. But we cannot unconditionally +- * enable interrupts in that early boot case. So we need to use the +- * irqsave/restore variants. +- */ +- raw_spin_lock_irqsave(&lock->wait_lock, flags); ++ int ret; + + /* Try to acquire the lock again: */ +- if (try_to_take_rt_mutex(lock, current, NULL)) { +- raw_spin_unlock_irqrestore(&lock->wait_lock, flags); ++ if (try_to_take_rt_mutex(lock, current, NULL)) + return 0; +- } + + set_current_state(state); + +@@ -1280,17 +1261,18 @@ rt_mutex_slowlock(struct rt_mutex *lock, + if (unlikely(timeout)) + hrtimer_start_expires(&timeout->timer, HRTIMER_MODE_ABS); + +- ret = task_blocks_on_rt_mutex(lock, &waiter, current, chwalk); ++ ret = task_blocks_on_rt_mutex(lock, waiter, current, chwalk); + +- if (likely(!ret)) ++ if (likely(!ret)) { + /* sleep on the mutex */ +- ret = __rt_mutex_slowlock(lock, state, timeout, &waiter); ++ ret = __rt_mutex_slowlock(lock, state, timeout, waiter); ++ } + + if (unlikely(ret)) { + __set_current_state(TASK_RUNNING); + if (rt_mutex_has_waiters(lock)) +- remove_waiter(lock, &waiter); +- rt_mutex_handle_deadlock(ret, chwalk, &waiter); ++ remove_waiter(lock, waiter); ++ /* ww_mutex want to report EDEADLK/EALREADY, let them */ + } + + /* +@@ -1298,6 +1280,34 @@ rt_mutex_slowlock(struct rt_mutex *lock, + * unconditionally. We might have to fix that up. + */ + fixup_rt_mutex_waiters(lock); ++ return ret; ++} ++ ++/* ++ * Slow path lock function: ++ */ ++static int __sched ++rt_mutex_slowlock(struct rt_mutex *lock, int state, ++ struct hrtimer_sleeper *timeout, ++ enum rtmutex_chainwalk chwalk) ++{ ++ struct rt_mutex_waiter waiter; ++ unsigned long flags; ++ int ret = 0; ++ ++ rt_mutex_init_waiter(&waiter); ++ ++ /* ++ * Technically we could use raw_spin_[un]lock_irq() here, but this can ++ * be called in early boot if the cmpxchg() fast path is disabled ++ * (debug, no architecture support). In this case we will acquire the ++ * rtmutex with lock->wait_lock held. But we cannot unconditionally ++ * enable interrupts in that early boot case. So we need to use the ++ * irqsave/restore variants. ++ */ ++ raw_spin_lock_irqsave(&lock->wait_lock, flags); ++ ++ ret = rt_mutex_slowlock_locked(lock, state, timeout, chwalk, &waiter); + + raw_spin_unlock_irqrestore(&lock->wait_lock, flags); + +--- a/kernel/locking/rtmutex_common.h ++++ b/kernel/locking/rtmutex_common.h +@@ -158,6 +158,12 @@ extern bool __rt_mutex_futex_unlock(stru + struct wake_q_head *wqh); + + extern void rt_mutex_postunlock(struct wake_q_head *wake_q); ++/* RW semaphore special interface */ ++ ++int __sched rt_mutex_slowlock_locked(struct rt_mutex *lock, int state, ++ struct hrtimer_sleeper *timeout, ++ enum rtmutex_chainwalk chwalk, ++ struct rt_mutex_waiter *waiter); + + #ifdef CONFIG_DEBUG_RT_MUTEXES + # include "rtmutex-debug.h" diff --git a/patches/features/all/rt/rtmutex-add-mutex-implementation-based-on-rtmutex.patch b/patches/features/all/rt/rtmutex-add-mutex-implementation-based-on-rtmutex.patch new file mode 100644 index 00000000000..bcbbd52c96e --- /dev/null +++ b/patches/features/all/rt/rtmutex-add-mutex-implementation-based-on-rtmutex.patch @@ -0,0 +1,373 @@ +From: Thomas Gleixner +Date: Thu, 12 Oct 2017 17:17:03 +0200 +Subject: rtmutex: add mutex implementation based on rtmutex +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Signed-off-by: Thomas Gleixner +Signed-off-by: Sebastian Andrzej Siewior +--- + include/linux/mutex_rt.h | 130 ++++++++++++++++++++++++++ + kernel/locking/mutex-rt.c | 223 ++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 353 insertions(+) + create mode 100644 include/linux/mutex_rt.h + create mode 100644 kernel/locking/mutex-rt.c + +--- /dev/null ++++ b/include/linux/mutex_rt.h +@@ -0,0 +1,130 @@ ++#ifndef __LINUX_MUTEX_RT_H ++#define __LINUX_MUTEX_RT_H ++ ++#ifndef __LINUX_MUTEX_H ++#error "Please include mutex.h" ++#endif ++ ++#include ++ ++/* FIXME: Just for __lockfunc */ ++#include ++ ++struct mutex { ++ struct rt_mutex lock; ++#ifdef CONFIG_DEBUG_LOCK_ALLOC ++ struct lockdep_map dep_map; ++#endif ++}; ++ ++#define __MUTEX_INITIALIZER(mutexname) \ ++ { \ ++ .lock = __RT_MUTEX_INITIALIZER(mutexname.lock) \ ++ __DEP_MAP_MUTEX_INITIALIZER(mutexname) \ ++ } ++ ++#define DEFINE_MUTEX(mutexname) \ ++ struct mutex mutexname = __MUTEX_INITIALIZER(mutexname) ++ ++extern void __mutex_do_init(struct mutex *lock, const char *name, struct lock_class_key *key); ++extern void __lockfunc _mutex_lock(struct mutex *lock); ++extern void __lockfunc _mutex_lock_io(struct mutex *lock); ++extern void __lockfunc _mutex_lock_io_nested(struct mutex *lock, int subclass); ++extern int __lockfunc _mutex_lock_interruptible(struct mutex *lock); ++extern int __lockfunc _mutex_lock_killable(struct mutex *lock); ++extern void __lockfunc _mutex_lock_nested(struct mutex *lock, int subclass); ++extern void __lockfunc _mutex_lock_nest_lock(struct mutex *lock, struct lockdep_map *nest_lock); ++extern int __lockfunc _mutex_lock_interruptible_nested(struct mutex *lock, int subclass); ++extern int __lockfunc _mutex_lock_killable_nested(struct mutex *lock, int subclass); ++extern int __lockfunc _mutex_trylock(struct mutex *lock); ++extern void __lockfunc _mutex_unlock(struct mutex *lock); ++ ++#define mutex_is_locked(l) rt_mutex_is_locked(&(l)->lock) ++#define mutex_lock(l) _mutex_lock(l) ++#define mutex_lock_interruptible(l) _mutex_lock_interruptible(l) ++#define mutex_lock_killable(l) _mutex_lock_killable(l) ++#define mutex_trylock(l) _mutex_trylock(l) ++#define mutex_unlock(l) _mutex_unlock(l) ++#define mutex_lock_io(l) _mutex_lock_io(l); ++ ++#define __mutex_owner(l) ((l)->lock.owner) ++ ++#ifdef CONFIG_DEBUG_MUTEXES ++#define mutex_destroy(l) rt_mutex_destroy(&(l)->lock) ++#else ++static inline void mutex_destroy(struct mutex *lock) {} ++#endif ++ ++#ifdef CONFIG_DEBUG_LOCK_ALLOC ++# define mutex_lock_nested(l, s) _mutex_lock_nested(l, s) ++# define mutex_lock_interruptible_nested(l, s) \ ++ _mutex_lock_interruptible_nested(l, s) ++# define mutex_lock_killable_nested(l, s) \ ++ _mutex_lock_killable_nested(l, s) ++# define mutex_lock_io_nested(l, s) _mutex_lock_io_nested(l, s) ++ ++# define mutex_lock_nest_lock(lock, nest_lock) \ ++do { \ ++ typecheck(struct lockdep_map *, &(nest_lock)->dep_map); \ ++ _mutex_lock_nest_lock(lock, &(nest_lock)->dep_map); \ ++} while (0) ++ ++#else ++# define mutex_lock_nested(l, s) _mutex_lock(l) ++# define mutex_lock_interruptible_nested(l, s) \ ++ _mutex_lock_interruptible(l) ++# define mutex_lock_killable_nested(l, s) \ ++ _mutex_lock_killable(l) ++# define mutex_lock_nest_lock(lock, nest_lock) mutex_lock(lock) ++# define mutex_lock_io_nested(l, s) _mutex_lock_io(l) ++#endif ++ ++# define mutex_init(mutex) \ ++do { \ ++ static struct lock_class_key __key; \ ++ \ ++ rt_mutex_init(&(mutex)->lock); \ ++ __mutex_do_init((mutex), #mutex, &__key); \ ++} while (0) ++ ++# define __mutex_init(mutex, name, key) \ ++do { \ ++ rt_mutex_init(&(mutex)->lock); \ ++ __mutex_do_init((mutex), name, key); \ ++} while (0) ++ ++/** ++ * These values are chosen such that FAIL and SUCCESS match the ++ * values of the regular mutex_trylock(). ++ */ ++enum mutex_trylock_recursive_enum { ++ MUTEX_TRYLOCK_FAILED = 0, ++ MUTEX_TRYLOCK_SUCCESS = 1, ++ MUTEX_TRYLOCK_RECURSIVE, ++}; ++/** ++ * mutex_trylock_recursive - trylock variant that allows recursive locking ++ * @lock: mutex to be locked ++ * ++ * This function should not be used, _ever_. It is purely for hysterical GEM ++ * raisins, and once those are gone this will be removed. ++ * ++ * Returns: ++ * MUTEX_TRYLOCK_FAILED - trylock failed, ++ * MUTEX_TRYLOCK_SUCCESS - lock acquired, ++ * MUTEX_TRYLOCK_RECURSIVE - we already owned the lock. ++ */ ++int __rt_mutex_owner_current(struct rt_mutex *lock); ++ ++static inline /* __deprecated */ __must_check enum mutex_trylock_recursive_enum ++mutex_trylock_recursive(struct mutex *lock) ++{ ++ if (unlikely(__rt_mutex_owner_current(&lock->lock))) ++ return MUTEX_TRYLOCK_RECURSIVE; ++ ++ return mutex_trylock(lock); ++} ++ ++extern int atomic_dec_and_mutex_lock(atomic_t *cnt, struct mutex *lock); ++ ++#endif +--- /dev/null ++++ b/kernel/locking/mutex-rt.c +@@ -0,0 +1,223 @@ ++/* ++ * kernel/rt.c ++ * ++ * Real-Time Preemption Support ++ * ++ * started by Ingo Molnar: ++ * ++ * Copyright (C) 2004-2006 Red Hat, Inc., Ingo Molnar ++ * Copyright (C) 2006, Timesys Corp., Thomas Gleixner ++ * ++ * historic credit for proving that Linux spinlocks can be implemented via ++ * RT-aware mutexes goes to many people: The Pmutex project (Dirk Grambow ++ * and others) who prototyped it on 2.4 and did lots of comparative ++ * research and analysis; TimeSys, for proving that you can implement a ++ * fully preemptible kernel via the use of IRQ threading and mutexes; ++ * Bill Huey for persuasively arguing on lkml that the mutex model is the ++ * right one; and to MontaVista, who ported pmutexes to 2.6. ++ * ++ * This code is a from-scratch implementation and is not based on pmutexes, ++ * but the idea of converting spinlocks to mutexes is used here too. ++ * ++ * lock debugging, locking tree, deadlock detection: ++ * ++ * Copyright (C) 2004, LynuxWorks, Inc., Igor Manyilov, Bill Huey ++ * Released under the General Public License (GPL). ++ * ++ * Includes portions of the generic R/W semaphore implementation from: ++ * ++ * Copyright (c) 2001 David Howells (dhowells@redhat.com). ++ * - Derived partially from idea by Andrea Arcangeli ++ * - Derived also from comments by Linus ++ * ++ * Pending ownership of locks and ownership stealing: ++ * ++ * Copyright (C) 2005, Kihon Technologies Inc., Steven Rostedt ++ * ++ * (also by Steven Rostedt) ++ * - Converted single pi_lock to individual task locks. ++ * ++ * By Esben Nielsen: ++ * Doing priority inheritance with help of the scheduler. ++ * ++ * Copyright (C) 2006, Timesys Corp., Thomas Gleixner ++ * - major rework based on Esben Nielsens initial patch ++ * - replaced thread_info references by task_struct refs ++ * - removed task->pending_owner dependency ++ * - BKL drop/reacquire for semaphore style locks to avoid deadlocks ++ * in the scheduler return path as discussed with Steven Rostedt ++ * ++ * Copyright (C) 2006, Kihon Technologies Inc. ++ * Steven Rostedt ++ * - debugged and patched Thomas Gleixner's rework. ++ * - added back the cmpxchg to the rework. ++ * - turned atomic require back on for SMP. ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include "rtmutex_common.h" ++ ++/* ++ * struct mutex functions ++ */ ++void __mutex_do_init(struct mutex *mutex, const char *name, ++ struct lock_class_key *key) ++{ ++#ifdef CONFIG_DEBUG_LOCK_ALLOC ++ /* ++ * Make sure we are not reinitializing a held lock: ++ */ ++ debug_check_no_locks_freed((void *)mutex, sizeof(*mutex)); ++ lockdep_init_map(&mutex->dep_map, name, key, 0); ++#endif ++ mutex->lock.save_state = 0; ++} ++EXPORT_SYMBOL(__mutex_do_init); ++ ++void __lockfunc _mutex_lock(struct mutex *lock) ++{ ++ mutex_acquire(&lock->dep_map, 0, 0, _RET_IP_); ++ __rt_mutex_lock_state(&lock->lock, TASK_UNINTERRUPTIBLE); ++} ++EXPORT_SYMBOL(_mutex_lock); ++ ++void __lockfunc _mutex_lock_io(struct mutex *lock) ++{ ++ int token; ++ ++ token = io_schedule_prepare(); ++ _mutex_lock(lock); ++ io_schedule_finish(token); ++} ++EXPORT_SYMBOL_GPL(_mutex_lock_io); ++ ++int __lockfunc _mutex_lock_interruptible(struct mutex *lock) ++{ ++ int ret; ++ ++ mutex_acquire(&lock->dep_map, 0, 0, _RET_IP_); ++ ret = __rt_mutex_lock_state(&lock->lock, TASK_INTERRUPTIBLE); ++ if (ret) ++ mutex_release(&lock->dep_map, 1, _RET_IP_); ++ return ret; ++} ++EXPORT_SYMBOL(_mutex_lock_interruptible); ++ ++int __lockfunc _mutex_lock_killable(struct mutex *lock) ++{ ++ int ret; ++ ++ mutex_acquire(&lock->dep_map, 0, 0, _RET_IP_); ++ ret = __rt_mutex_lock_state(&lock->lock, TASK_KILLABLE); ++ if (ret) ++ mutex_release(&lock->dep_map, 1, _RET_IP_); ++ return ret; ++} ++EXPORT_SYMBOL(_mutex_lock_killable); ++ ++#ifdef CONFIG_DEBUG_LOCK_ALLOC ++void __lockfunc _mutex_lock_nested(struct mutex *lock, int subclass) ++{ ++ mutex_acquire_nest(&lock->dep_map, subclass, 0, NULL, _RET_IP_); ++ __rt_mutex_lock_state(&lock->lock, TASK_UNINTERRUPTIBLE); ++} ++EXPORT_SYMBOL(_mutex_lock_nested); ++ ++void __lockfunc _mutex_lock_io_nested(struct mutex *lock, int subclass) ++{ ++ int token; ++ ++ token = io_schedule_prepare(); ++ ++ mutex_acquire_nest(&lock->dep_map, subclass, 0, NULL, _RET_IP_); ++ __rt_mutex_lock_state(&lock->lock, TASK_UNINTERRUPTIBLE); ++ ++ io_schedule_finish(token); ++} ++EXPORT_SYMBOL_GPL(_mutex_lock_io_nested); ++ ++void __lockfunc _mutex_lock_nest_lock(struct mutex *lock, struct lockdep_map *nest) ++{ ++ mutex_acquire_nest(&lock->dep_map, 0, 0, nest, _RET_IP_); ++ __rt_mutex_lock_state(&lock->lock, TASK_UNINTERRUPTIBLE); ++} ++EXPORT_SYMBOL(_mutex_lock_nest_lock); ++ ++int __lockfunc _mutex_lock_interruptible_nested(struct mutex *lock, int subclass) ++{ ++ int ret; ++ ++ mutex_acquire_nest(&lock->dep_map, subclass, 0, NULL, _RET_IP_); ++ ret = __rt_mutex_lock_state(&lock->lock, TASK_INTERRUPTIBLE); ++ if (ret) ++ mutex_release(&lock->dep_map, 1, _RET_IP_); ++ return ret; ++} ++EXPORT_SYMBOL(_mutex_lock_interruptible_nested); ++ ++int __lockfunc _mutex_lock_killable_nested(struct mutex *lock, int subclass) ++{ ++ int ret; ++ ++ mutex_acquire(&lock->dep_map, subclass, 0, _RET_IP_); ++ ret = __rt_mutex_lock_state(&lock->lock, TASK_KILLABLE); ++ if (ret) ++ mutex_release(&lock->dep_map, 1, _RET_IP_); ++ return ret; ++} ++EXPORT_SYMBOL(_mutex_lock_killable_nested); ++#endif ++ ++int __lockfunc _mutex_trylock(struct mutex *lock) ++{ ++ int ret = __rt_mutex_trylock(&lock->lock); ++ ++ if (ret) ++ mutex_acquire(&lock->dep_map, 0, 1, _RET_IP_); ++ ++ return ret; ++} ++EXPORT_SYMBOL(_mutex_trylock); ++ ++void __lockfunc _mutex_unlock(struct mutex *lock) ++{ ++ mutex_release(&lock->dep_map, 1, _RET_IP_); ++ __rt_mutex_unlock(&lock->lock); ++} ++EXPORT_SYMBOL(_mutex_unlock); ++ ++/** ++ * atomic_dec_and_mutex_lock - return holding mutex if we dec to 0 ++ * @cnt: the atomic which we are to dec ++ * @lock: the mutex to return holding if we dec to 0 ++ * ++ * return true and hold lock if we dec to 0, return false otherwise ++ */ ++int atomic_dec_and_mutex_lock(atomic_t *cnt, struct mutex *lock) ++{ ++ /* dec if we can't possibly hit 0 */ ++ if (atomic_add_unless(cnt, -1, 1)) ++ return 0; ++ /* we might hit 0, so take the lock */ ++ mutex_lock(lock); ++ if (!atomic_dec_and_test(cnt)) { ++ /* when we actually did the dec, we didn't hit 0 */ ++ mutex_unlock(lock); ++ return 0; ++ } ++ /* we hit 0, and we hold the lock */ ++ return 1; ++} ++EXPORT_SYMBOL(atomic_dec_and_mutex_lock); diff --git a/patches/features/all/rt/rtmutex-add-rwlock-implementation-based-on-rtmutex.patch b/patches/features/all/rt/rtmutex-add-rwlock-implementation-based-on-rtmutex.patch new file mode 100644 index 00000000000..facba05c982 --- /dev/null +++ b/patches/features/all/rt/rtmutex-add-rwlock-implementation-based-on-rtmutex.patch @@ -0,0 +1,569 @@ +From: Thomas Gleixner +Date: Thu, 12 Oct 2017 17:18:06 +0200 +Subject: rtmutex: add rwlock implementation based on rtmutex +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +The implementation is bias-based, similar to the rwsem implementation. + +Signed-off-by: Thomas Gleixner +Signed-off-by: Sebastian Andrzej Siewior +--- + include/linux/rwlock_rt.h | 119 ++++++++++++ + include/linux/rwlock_types_rt.h | 55 +++++ + kernel/locking/rwlock-rt.c | 368 ++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 542 insertions(+) + create mode 100644 include/linux/rwlock_rt.h + create mode 100644 include/linux/rwlock_types_rt.h + create mode 100644 kernel/locking/rwlock-rt.c + +--- /dev/null ++++ b/include/linux/rwlock_rt.h +@@ -0,0 +1,119 @@ ++#ifndef __LINUX_RWLOCK_RT_H ++#define __LINUX_RWLOCK_RT_H ++ ++#ifndef __LINUX_SPINLOCK_H ++#error Do not include directly. Use spinlock.h ++#endif ++ ++extern void __lockfunc rt_write_lock(rwlock_t *rwlock); ++extern void __lockfunc rt_read_lock(rwlock_t *rwlock); ++extern int __lockfunc rt_write_trylock(rwlock_t *rwlock); ++extern int __lockfunc rt_read_trylock(rwlock_t *rwlock); ++extern void __lockfunc rt_write_unlock(rwlock_t *rwlock); ++extern void __lockfunc rt_read_unlock(rwlock_t *rwlock); ++extern int __lockfunc rt_read_can_lock(rwlock_t *rwlock); ++extern int __lockfunc rt_write_can_lock(rwlock_t *rwlock); ++extern void __rt_rwlock_init(rwlock_t *rwlock, char *name, struct lock_class_key *key); ++ ++#define read_can_lock(rwlock) rt_read_can_lock(rwlock) ++#define write_can_lock(rwlock) rt_write_can_lock(rwlock) ++ ++#define read_trylock(lock) __cond_lock(lock, rt_read_trylock(lock)) ++#define write_trylock(lock) __cond_lock(lock, rt_write_trylock(lock)) ++ ++static inline int __write_trylock_rt_irqsave(rwlock_t *lock, unsigned long *flags) ++{ ++ /* XXX ARCH_IRQ_ENABLED */ ++ *flags = 0; ++ return rt_write_trylock(lock); ++} ++ ++#define write_trylock_irqsave(lock, flags) \ ++ __cond_lock(lock, __write_trylock_rt_irqsave(lock, &(flags))) ++ ++#define read_lock_irqsave(lock, flags) \ ++ do { \ ++ typecheck(unsigned long, flags); \ ++ rt_read_lock(lock); \ ++ flags = 0; \ ++ } while (0) ++ ++#define write_lock_irqsave(lock, flags) \ ++ do { \ ++ typecheck(unsigned long, flags); \ ++ rt_write_lock(lock); \ ++ flags = 0; \ ++ } while (0) ++ ++#define read_lock(lock) rt_read_lock(lock) ++ ++#define read_lock_bh(lock) \ ++ do { \ ++ local_bh_disable(); \ ++ rt_read_lock(lock); \ ++ } while (0) ++ ++#define read_lock_irq(lock) read_lock(lock) ++ ++#define write_lock(lock) rt_write_lock(lock) ++ ++#define write_lock_bh(lock) \ ++ do { \ ++ local_bh_disable(); \ ++ rt_write_lock(lock); \ ++ } while (0) ++ ++#define write_lock_irq(lock) write_lock(lock) ++ ++#define read_unlock(lock) rt_read_unlock(lock) ++ ++#define read_unlock_bh(lock) \ ++ do { \ ++ rt_read_unlock(lock); \ ++ local_bh_enable(); \ ++ } while (0) ++ ++#define read_unlock_irq(lock) read_unlock(lock) ++ ++#define write_unlock(lock) rt_write_unlock(lock) ++ ++#define write_unlock_bh(lock) \ ++ do { \ ++ rt_write_unlock(lock); \ ++ local_bh_enable(); \ ++ } while (0) ++ ++#define write_unlock_irq(lock) write_unlock(lock) ++ ++#define read_unlock_irqrestore(lock, flags) \ ++ do { \ ++ typecheck(unsigned long, flags); \ ++ (void) flags; \ ++ rt_read_unlock(lock); \ ++ } while (0) ++ ++#define write_unlock_irqrestore(lock, flags) \ ++ do { \ ++ typecheck(unsigned long, flags); \ ++ (void) flags; \ ++ rt_write_unlock(lock); \ ++ } while (0) ++ ++#define rwlock_init(rwl) \ ++do { \ ++ static struct lock_class_key __key; \ ++ \ ++ __rt_rwlock_init(rwl, #rwl, &__key); \ ++} while (0) ++ ++/* ++ * Internal functions made global for CPU pinning ++ */ ++void __read_rt_lock(struct rt_rw_lock *lock); ++int __read_rt_trylock(struct rt_rw_lock *lock); ++void __write_rt_lock(struct rt_rw_lock *lock); ++int __write_rt_trylock(struct rt_rw_lock *lock); ++void __read_rt_unlock(struct rt_rw_lock *lock); ++void __write_rt_unlock(struct rt_rw_lock *lock); ++ ++#endif +--- /dev/null ++++ b/include/linux/rwlock_types_rt.h +@@ -0,0 +1,55 @@ ++#ifndef __LINUX_RWLOCK_TYPES_RT_H ++#define __LINUX_RWLOCK_TYPES_RT_H ++ ++#ifndef __LINUX_SPINLOCK_TYPES_H ++#error "Do not include directly. Include spinlock_types.h instead" ++#endif ++ ++#ifdef CONFIG_DEBUG_LOCK_ALLOC ++# define RW_DEP_MAP_INIT(lockname) .dep_map = { .name = #lockname } ++#else ++# define RW_DEP_MAP_INIT(lockname) ++#endif ++ ++typedef struct rt_rw_lock rwlock_t; ++ ++#define __RW_LOCK_UNLOCKED(name) __RWLOCK_RT_INITIALIZER(name) ++ ++#define DEFINE_RWLOCK(name) \ ++ rwlock_t name = __RW_LOCK_UNLOCKED(name) ++ ++/* ++ * A reader biased implementation primarily for CPU pinning. ++ * ++ * Can be selected as general replacement for the single reader RT rwlock ++ * variant ++ */ ++struct rt_rw_lock { ++ struct rt_mutex rtmutex; ++ atomic_t readers; ++#ifdef CONFIG_DEBUG_LOCK_ALLOC ++ struct lockdep_map dep_map; ++#endif ++}; ++ ++#define READER_BIAS (1U << 31) ++#define WRITER_BIAS (1U << 30) ++ ++#define __RWLOCK_RT_INITIALIZER(name) \ ++{ \ ++ .readers = ATOMIC_INIT(READER_BIAS), \ ++ .rtmutex = __RT_MUTEX_INITIALIZER_SAVE_STATE(name.rtmutex), \ ++ RW_DEP_MAP_INIT(name) \ ++} ++ ++void __rwlock_biased_rt_init(struct rt_rw_lock *lock, const char *name, ++ struct lock_class_key *key); ++ ++#define rwlock_biased_rt_init(rwlock) \ ++ do { \ ++ static struct lock_class_key __key; \ ++ \ ++ __rwlock_biased_rt_init((rwlock), #rwlock, &__key); \ ++ } while (0) ++ ++#endif +--- /dev/null ++++ b/kernel/locking/rwlock-rt.c +@@ -0,0 +1,368 @@ ++/* ++ */ ++#include ++#include ++ ++#include "rtmutex_common.h" ++#include ++ ++/* ++ * RT-specific reader/writer locks ++ * ++ * write_lock() ++ * 1) Lock lock->rtmutex ++ * 2) Remove the reader BIAS to force readers into the slow path ++ * 3) Wait until all readers have left the critical region ++ * 4) Mark it write locked ++ * ++ * write_unlock() ++ * 1) Remove the write locked marker ++ * 2) Set the reader BIAS so readers can use the fast path again ++ * 3) Unlock lock->rtmutex to release blocked readers ++ * ++ * read_lock() ++ * 1) Try fast path acquisition (reader BIAS is set) ++ * 2) Take lock->rtmutex.wait_lock which protects the writelocked flag ++ * 3) If !writelocked, acquire it for read ++ * 4) If writelocked, block on lock->rtmutex ++ * 5) unlock lock->rtmutex, goto 1) ++ * ++ * read_unlock() ++ * 1) Try fast path release (reader count != 1) ++ * 2) Wake the writer waiting in write_lock()#3 ++ * ++ * read_lock()#3 has the consequence, that rw locks on RT are not writer ++ * fair, but writers, which should be avoided in RT tasks (think tasklist ++ * lock), are subject to the rtmutex priority/DL inheritance mechanism. ++ * ++ * It's possible to make the rw locks writer fair by keeping a list of ++ * active readers. A blocked writer would force all newly incoming readers ++ * to block on the rtmutex, but the rtmutex would have to be proxy locked ++ * for one reader after the other. We can't use multi-reader inheritance ++ * because there is no way to support that with ++ * SCHED_DEADLINE. Implementing the one by one reader boosting/handover ++ * mechanism is a major surgery for a very dubious value. ++ * ++ * The risk of writer starvation is there, but the pathological use cases ++ * which trigger it are not necessarily the typical RT workloads. ++ */ ++ ++void __rwlock_biased_rt_init(struct rt_rw_lock *lock, const char *name, ++ struct lock_class_key *key) ++{ ++#ifdef CONFIG_DEBUG_LOCK_ALLOC ++ /* ++ * Make sure we are not reinitializing a held semaphore: ++ */ ++ debug_check_no_locks_freed((void *)lock, sizeof(*lock)); ++ lockdep_init_map(&lock->dep_map, name, key, 0); ++#endif ++ atomic_set(&lock->readers, READER_BIAS); ++ rt_mutex_init(&lock->rtmutex); ++ lock->rtmutex.save_state = 1; ++} ++ ++int __read_rt_trylock(struct rt_rw_lock *lock) ++{ ++ int r, old; ++ ++ /* ++ * Increment reader count, if lock->readers < 0, i.e. READER_BIAS is ++ * set. ++ */ ++ for (r = atomic_read(&lock->readers); r < 0;) { ++ old = atomic_cmpxchg(&lock->readers, r, r + 1); ++ if (likely(old == r)) ++ return 1; ++ r = old; ++ } ++ return 0; ++} ++ ++void __sched __read_rt_lock(struct rt_rw_lock *lock) ++{ ++ struct rt_mutex *m = &lock->rtmutex; ++ struct rt_mutex_waiter waiter; ++ unsigned long flags; ++ ++ if (__read_rt_trylock(lock)) ++ return; ++ ++ raw_spin_lock_irqsave(&m->wait_lock, flags); ++ /* ++ * Allow readers as long as the writer has not completely ++ * acquired the semaphore for write. ++ */ ++ if (atomic_read(&lock->readers) != WRITER_BIAS) { ++ atomic_inc(&lock->readers); ++ raw_spin_unlock_irqrestore(&m->wait_lock, flags); ++ return; ++ } ++ ++ /* ++ * Call into the slow lock path with the rtmutex->wait_lock ++ * held, so this can't result in the following race: ++ * ++ * Reader1 Reader2 Writer ++ * read_lock() ++ * write_lock() ++ * rtmutex_lock(m) ++ * swait() ++ * read_lock() ++ * unlock(m->wait_lock) ++ * read_unlock() ++ * swake() ++ * lock(m->wait_lock) ++ * lock->writelocked=true ++ * unlock(m->wait_lock) ++ * ++ * write_unlock() ++ * lock->writelocked=false ++ * rtmutex_unlock(m) ++ * read_lock() ++ * write_lock() ++ * rtmutex_lock(m) ++ * swait() ++ * rtmutex_lock(m) ++ * ++ * That would put Reader1 behind the writer waiting on ++ * Reader2 to call read_unlock() which might be unbound. ++ */ ++ rt_mutex_init_waiter(&waiter, false); ++ rt_spin_lock_slowlock_locked(m, &waiter, flags); ++ /* ++ * The slowlock() above is guaranteed to return with the rtmutex is ++ * now held, so there can't be a writer active. Increment the reader ++ * count and immediately drop the rtmutex again. ++ */ ++ atomic_inc(&lock->readers); ++ raw_spin_unlock_irqrestore(&m->wait_lock, flags); ++ rt_spin_lock_slowunlock(m); ++ ++ debug_rt_mutex_free_waiter(&waiter); ++} ++ ++void __read_rt_unlock(struct rt_rw_lock *lock) ++{ ++ struct rt_mutex *m = &lock->rtmutex; ++ struct task_struct *tsk; ++ ++ /* ++ * sem->readers can only hit 0 when a writer is waiting for the ++ * active readers to leave the critical region. ++ */ ++ if (!atomic_dec_and_test(&lock->readers)) ++ return; ++ ++ raw_spin_lock_irq(&m->wait_lock); ++ /* ++ * Wake the writer, i.e. the rtmutex owner. It might release the ++ * rtmutex concurrently in the fast path, but to clean up the rw ++ * lock it needs to acquire m->wait_lock. The worst case which can ++ * happen is a spurious wakeup. ++ */ ++ tsk = rt_mutex_owner(m); ++ if (tsk) ++ wake_up_process(tsk); ++ ++ raw_spin_unlock_irq(&m->wait_lock); ++} ++ ++static void __write_unlock_common(struct rt_rw_lock *lock, int bias, ++ unsigned long flags) ++{ ++ struct rt_mutex *m = &lock->rtmutex; ++ ++ atomic_add(READER_BIAS - bias, &lock->readers); ++ raw_spin_unlock_irqrestore(&m->wait_lock, flags); ++ rt_spin_lock_slowunlock(m); ++} ++ ++void __sched __write_rt_lock(struct rt_rw_lock *lock) ++{ ++ struct rt_mutex *m = &lock->rtmutex; ++ struct task_struct *self = current; ++ unsigned long flags; ++ ++ /* Take the rtmutex as a first step */ ++ __rt_spin_lock(m); ++ ++ /* Force readers into slow path */ ++ atomic_sub(READER_BIAS, &lock->readers); ++ ++ raw_spin_lock_irqsave(&m->wait_lock, flags); ++ ++ raw_spin_lock(&self->pi_lock); ++ self->saved_state = self->state; ++ __set_current_state_no_track(TASK_UNINTERRUPTIBLE); ++ raw_spin_unlock(&self->pi_lock); ++ ++ for (;;) { ++ /* Have all readers left the critical region? */ ++ if (!atomic_read(&lock->readers)) { ++ atomic_set(&lock->readers, WRITER_BIAS); ++ raw_spin_lock(&self->pi_lock); ++ __set_current_state_no_track(self->saved_state); ++ self->saved_state = TASK_RUNNING; ++ raw_spin_unlock(&self->pi_lock); ++ raw_spin_unlock_irqrestore(&m->wait_lock, flags); ++ return; ++ } ++ ++ raw_spin_unlock_irqrestore(&m->wait_lock, flags); ++ ++ if (atomic_read(&lock->readers) != 0) ++ schedule(); ++ ++ raw_spin_lock_irqsave(&m->wait_lock, flags); ++ ++ raw_spin_lock(&self->pi_lock); ++ __set_current_state_no_track(TASK_UNINTERRUPTIBLE); ++ raw_spin_unlock(&self->pi_lock); ++ } ++} ++ ++int __write_rt_trylock(struct rt_rw_lock *lock) ++{ ++ struct rt_mutex *m = &lock->rtmutex; ++ unsigned long flags; ++ ++ if (!__rt_mutex_trylock(m)) ++ return 0; ++ ++ atomic_sub(READER_BIAS, &lock->readers); ++ ++ raw_spin_lock_irqsave(&m->wait_lock, flags); ++ if (!atomic_read(&lock->readers)) { ++ atomic_set(&lock->readers, WRITER_BIAS); ++ raw_spin_unlock_irqrestore(&m->wait_lock, flags); ++ return 1; ++ } ++ __write_unlock_common(lock, 0, flags); ++ return 0; ++} ++ ++void __write_rt_unlock(struct rt_rw_lock *lock) ++{ ++ struct rt_mutex *m = &lock->rtmutex; ++ unsigned long flags; ++ ++ raw_spin_lock_irqsave(&m->wait_lock, flags); ++ __write_unlock_common(lock, WRITER_BIAS, flags); ++} ++ ++/* Map the reader biased implementation */ ++static inline int do_read_rt_trylock(rwlock_t *rwlock) ++{ ++ return __read_rt_trylock(rwlock); ++} ++ ++static inline int do_write_rt_trylock(rwlock_t *rwlock) ++{ ++ return __write_rt_trylock(rwlock); ++} ++ ++static inline void do_read_rt_lock(rwlock_t *rwlock) ++{ ++ __read_rt_lock(rwlock); ++} ++ ++static inline void do_write_rt_lock(rwlock_t *rwlock) ++{ ++ __write_rt_lock(rwlock); ++} ++ ++static inline void do_read_rt_unlock(rwlock_t *rwlock) ++{ ++ __read_rt_unlock(rwlock); ++} ++ ++static inline void do_write_rt_unlock(rwlock_t *rwlock) ++{ ++ __write_rt_unlock(rwlock); ++} ++ ++static inline void do_rwlock_rt_init(rwlock_t *rwlock, const char *name, ++ struct lock_class_key *key) ++{ ++ __rwlock_biased_rt_init(rwlock, name, key); ++} ++ ++int __lockfunc rt_read_can_lock(rwlock_t *rwlock) ++{ ++ return atomic_read(&rwlock->readers) < 0; ++} ++ ++int __lockfunc rt_write_can_lock(rwlock_t *rwlock) ++{ ++ return atomic_read(&rwlock->readers) == READER_BIAS; ++} ++ ++/* ++ * The common functions which get wrapped into the rwlock API. ++ */ ++int __lockfunc rt_read_trylock(rwlock_t *rwlock) ++{ ++ int ret; ++ ++ migrate_disable(); ++ ret = do_read_rt_trylock(rwlock); ++ if (ret) ++ rwlock_acquire_read(&rwlock->dep_map, 0, 1, _RET_IP_); ++ else ++ migrate_enable(); ++ return ret; ++} ++EXPORT_SYMBOL(rt_read_trylock); ++ ++int __lockfunc rt_write_trylock(rwlock_t *rwlock) ++{ ++ int ret; ++ ++ migrate_disable(); ++ ret = do_write_rt_trylock(rwlock); ++ if (ret) ++ rwlock_acquire(&rwlock->dep_map, 0, 1, _RET_IP_); ++ else ++ migrate_enable(); ++ return ret; ++} ++EXPORT_SYMBOL(rt_write_trylock); ++ ++void __lockfunc rt_read_lock(rwlock_t *rwlock) ++{ ++ migrate_disable(); ++ rwlock_acquire_read(&rwlock->dep_map, 0, 0, _RET_IP_); ++ do_read_rt_lock(rwlock); ++} ++EXPORT_SYMBOL(rt_read_lock); ++ ++void __lockfunc rt_write_lock(rwlock_t *rwlock) ++{ ++ migrate_disable(); ++ rwlock_acquire(&rwlock->dep_map, 0, 0, _RET_IP_); ++ do_write_rt_lock(rwlock); ++} ++EXPORT_SYMBOL(rt_write_lock); ++ ++void __lockfunc rt_read_unlock(rwlock_t *rwlock) ++{ ++ rwlock_release(&rwlock->dep_map, 1, _RET_IP_); ++ do_read_rt_unlock(rwlock); ++ migrate_enable(); ++} ++EXPORT_SYMBOL(rt_read_unlock); ++ ++void __lockfunc rt_write_unlock(rwlock_t *rwlock) ++{ ++ rwlock_release(&rwlock->dep_map, 1, _RET_IP_); ++ do_write_rt_unlock(rwlock); ++ migrate_enable(); ++} ++EXPORT_SYMBOL(rt_write_unlock); ++ ++void __rt_rwlock_init(rwlock_t *rwlock, char *name, struct lock_class_key *key) ++{ ++ do_rwlock_rt_init(rwlock, name, key); ++} ++EXPORT_SYMBOL(__rt_rwlock_init); diff --git a/patches/features/all/rt/rtmutex-add-rwsem-implementation-based-on-rtmutex.patch b/patches/features/all/rt/rtmutex-add-rwsem-implementation-based-on-rtmutex.patch new file mode 100644 index 00000000000..2f2bfed9299 --- /dev/null +++ b/patches/features/all/rt/rtmutex-add-rwsem-implementation-based-on-rtmutex.patch @@ -0,0 +1,392 @@ +From: Thomas Gleixner +Date: Thu, 12 Oct 2017 17:28:34 +0200 +Subject: rtmutex: add rwsem implementation based on rtmutex +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +The RT specific R/W semaphore implementation restricts the number of readers +to one because a writer cannot block on multiple readers and inherit its +priority or budget. + +The single reader restricting is painful in various ways: + + - Performance bottleneck for multi-threaded applications in the page fault + path (mmap sem) + + - Progress blocker for drivers which are carefully crafted to avoid the + potential reader/writer deadlock in mainline. + +The analysis of the writer code pathes shows, that properly written RT tasks +should not take them. Syscalls like mmap(), file access which take mmap sem +write locked have unbound latencies which are completely unrelated to mmap +sem. Other R/W sem users like graphics drivers are not suitable for RT tasks +either. + +So there is little risk to hurt RT tasks when the RT rwsem implementation is +changed in the following way: + + - Allow concurrent readers + + - Make writers block until the last reader left the critical section. This + blocking is not subject to priority/budget inheritance. + + - Readers blocked on a writer inherit their priority/budget in the normal + way. + +There is a drawback with this scheme. R/W semaphores become writer unfair +though the applications which have triggered writer starvation (mostly on +mmap_sem) in the past are not really the typical workloads running on a RT +system. So while it's unlikely to hit writer starvation, it's possible. If +there are unexpected workloads on RT systems triggering it, we need to rethink +the approach. + +Signed-off-by: Thomas Gleixner +Signed-off-by: Sebastian Andrzej Siewior +--- + include/linux/rwsem_rt.h | 67 +++++++++++ + kernel/locking/rwsem-rt.c | 269 ++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 336 insertions(+) + create mode 100644 include/linux/rwsem_rt.h + create mode 100644 kernel/locking/rwsem-rt.c + +--- /dev/null ++++ b/include/linux/rwsem_rt.h +@@ -0,0 +1,67 @@ ++#ifndef _LINUX_RWSEM_RT_H ++#define _LINUX_RWSEM_RT_H ++ ++#ifndef _LINUX_RWSEM_H ++#error "Include rwsem.h" ++#endif ++ ++#include ++#include ++ ++#define READER_BIAS (1U << 31) ++#define WRITER_BIAS (1U << 30) ++ ++struct rw_semaphore { ++ atomic_t readers; ++ struct rt_mutex rtmutex; ++#ifdef CONFIG_DEBUG_LOCK_ALLOC ++ struct lockdep_map dep_map; ++#endif ++}; ++ ++#define __RWSEM_INITIALIZER(name) \ ++{ \ ++ .readers = ATOMIC_INIT(READER_BIAS), \ ++ .rtmutex = __RT_MUTEX_INITIALIZER(name.rtmutex), \ ++ RW_DEP_MAP_INIT(name) \ ++} ++ ++#define DECLARE_RWSEM(lockname) \ ++ struct rw_semaphore lockname = __RWSEM_INITIALIZER(lockname) ++ ++extern void __rwsem_init(struct rw_semaphore *rwsem, const char *name, ++ struct lock_class_key *key); ++ ++#define __init_rwsem(sem, name, key) \ ++do { \ ++ rt_mutex_init(&(sem)->rtmutex); \ ++ __rwsem_init((sem), (name), (key)); \ ++} while (0) ++ ++#define init_rwsem(sem) \ ++do { \ ++ static struct lock_class_key __key; \ ++ \ ++ __init_rwsem((sem), #sem, &__key); \ ++} while (0) ++ ++static inline int rwsem_is_locked(struct rw_semaphore *sem) ++{ ++ return atomic_read(&sem->readers) != READER_BIAS; ++} ++ ++static inline int rwsem_is_contended(struct rw_semaphore *sem) ++{ ++ return atomic_read(&sem->readers) > 0; ++} ++ ++extern void __down_read(struct rw_semaphore *sem); ++extern int __down_read_trylock(struct rw_semaphore *sem); ++extern void __down_write(struct rw_semaphore *sem); ++extern int __must_check __down_write_killable(struct rw_semaphore *sem); ++extern int __down_write_trylock(struct rw_semaphore *sem); ++extern void __up_read(struct rw_semaphore *sem); ++extern void __up_write(struct rw_semaphore *sem); ++extern void __downgrade_write(struct rw_semaphore *sem); ++ ++#endif +--- /dev/null ++++ b/kernel/locking/rwsem-rt.c +@@ -0,0 +1,269 @@ ++/* ++ */ ++#include ++#include ++#include ++#include ++ ++#include "rtmutex_common.h" ++ ++/* ++ * RT-specific reader/writer semaphores ++ * ++ * down_write() ++ * 1) Lock sem->rtmutex ++ * 2) Remove the reader BIAS to force readers into the slow path ++ * 3) Wait until all readers have left the critical region ++ * 4) Mark it write locked ++ * ++ * up_write() ++ * 1) Remove the write locked marker ++ * 2) Set the reader BIAS so readers can use the fast path again ++ * 3) Unlock sem->rtmutex to release blocked readers ++ * ++ * down_read() ++ * 1) Try fast path acquisition (reader BIAS is set) ++ * 2) Take sem->rtmutex.wait_lock which protects the writelocked flag ++ * 3) If !writelocked, acquire it for read ++ * 4) If writelocked, block on sem->rtmutex ++ * 5) unlock sem->rtmutex, goto 1) ++ * ++ * up_read() ++ * 1) Try fast path release (reader count != 1) ++ * 2) Wake the writer waiting in down_write()#3 ++ * ++ * down_read()#3 has the consequence, that rw semaphores on RT are not writer ++ * fair, but writers, which should be avoided in RT tasks (think mmap_sem), ++ * are subject to the rtmutex priority/DL inheritance mechanism. ++ * ++ * It's possible to make the rw semaphores writer fair by keeping a list of ++ * active readers. A blocked writer would force all newly incoming readers to ++ * block on the rtmutex, but the rtmutex would have to be proxy locked for one ++ * reader after the other. We can't use multi-reader inheritance because there ++ * is no way to support that with SCHED_DEADLINE. Implementing the one by one ++ * reader boosting/handover mechanism is a major surgery for a very dubious ++ * value. ++ * ++ * The risk of writer starvation is there, but the pathological use cases ++ * which trigger it are not necessarily the typical RT workloads. ++ */ ++ ++void __rwsem_init(struct rw_semaphore *sem, const char *name, ++ struct lock_class_key *key) ++{ ++#ifdef CONFIG_DEBUG_LOCK_ALLOC ++ /* ++ * Make sure we are not reinitializing a held semaphore: ++ */ ++ debug_check_no_locks_freed((void *)sem, sizeof(*sem)); ++ lockdep_init_map(&sem->dep_map, name, key, 0); ++#endif ++ atomic_set(&sem->readers, READER_BIAS); ++} ++EXPORT_SYMBOL(__rwsem_init); ++ ++int __down_read_trylock(struct rw_semaphore *sem) ++{ ++ int r, old; ++ ++ /* ++ * Increment reader count, if sem->readers < 0, i.e. READER_BIAS is ++ * set. ++ */ ++ for (r = atomic_read(&sem->readers); r < 0;) { ++ old = atomic_cmpxchg(&sem->readers, r, r + 1); ++ if (likely(old == r)) ++ return 1; ++ r = old; ++ } ++ return 0; ++} ++ ++void __sched __down_read(struct rw_semaphore *sem) ++{ ++ struct rt_mutex *m = &sem->rtmutex; ++ struct rt_mutex_waiter waiter; ++ ++ if (__down_read_trylock(sem)) ++ return; ++ ++ might_sleep(); ++ raw_spin_lock_irq(&m->wait_lock); ++ /* ++ * Allow readers as long as the writer has not completely ++ * acquired the semaphore for write. ++ */ ++ if (atomic_read(&sem->readers) != WRITER_BIAS) { ++ atomic_inc(&sem->readers); ++ raw_spin_unlock_irq(&m->wait_lock); ++ return; ++ } ++ ++ /* ++ * Call into the slow lock path with the rtmutex->wait_lock ++ * held, so this can't result in the following race: ++ * ++ * Reader1 Reader2 Writer ++ * down_read() ++ * down_write() ++ * rtmutex_lock(m) ++ * swait() ++ * down_read() ++ * unlock(m->wait_lock) ++ * up_read() ++ * swake() ++ * lock(m->wait_lock) ++ * sem->writelocked=true ++ * unlock(m->wait_lock) ++ * ++ * up_write() ++ * sem->writelocked=false ++ * rtmutex_unlock(m) ++ * down_read() ++ * down_write() ++ * rtmutex_lock(m) ++ * swait() ++ * rtmutex_lock(m) ++ * ++ * That would put Reader1 behind the writer waiting on ++ * Reader2 to call up_read() which might be unbound. ++ */ ++ rt_mutex_init_waiter(&waiter, false); ++ rt_mutex_slowlock_locked(m, TASK_UNINTERRUPTIBLE, NULL, ++ RT_MUTEX_MIN_CHAINWALK, ++ &waiter); ++ /* ++ * The slowlock() above is guaranteed to return with the rtmutex is ++ * now held, so there can't be a writer active. Increment the reader ++ * count and immediately drop the rtmutex again. ++ */ ++ atomic_inc(&sem->readers); ++ raw_spin_unlock_irq(&m->wait_lock); ++ __rt_mutex_unlock(m); ++ ++ debug_rt_mutex_free_waiter(&waiter); ++} ++ ++void __up_read(struct rw_semaphore *sem) ++{ ++ struct rt_mutex *m = &sem->rtmutex; ++ struct task_struct *tsk; ++ ++ /* ++ * sem->readers can only hit 0 when a writer is waiting for the ++ * active readers to leave the critical region. ++ */ ++ if (!atomic_dec_and_test(&sem->readers)) ++ return; ++ ++ might_sleep(); ++ raw_spin_lock_irq(&m->wait_lock); ++ /* ++ * Wake the writer, i.e. the rtmutex owner. It might release the ++ * rtmutex concurrently in the fast path (due to a signal), but to ++ * clean up the rwsem it needs to acquire m->wait_lock. The worst ++ * case which can happen is a spurious wakeup. ++ */ ++ tsk = rt_mutex_owner(m); ++ if (tsk) ++ wake_up_process(tsk); ++ ++ raw_spin_unlock_irq(&m->wait_lock); ++} ++ ++static void __up_write_unlock(struct rw_semaphore *sem, int bias, ++ unsigned long flags) ++{ ++ struct rt_mutex *m = &sem->rtmutex; ++ ++ atomic_add(READER_BIAS - bias, &sem->readers); ++ raw_spin_unlock_irqrestore(&m->wait_lock, flags); ++ __rt_mutex_unlock(m); ++} ++ ++static int __sched __down_write_common(struct rw_semaphore *sem, int state) ++{ ++ struct rt_mutex *m = &sem->rtmutex; ++ unsigned long flags; ++ ++ /* Take the rtmutex as a first step */ ++ if (__rt_mutex_lock_state(m, state)) ++ return -EINTR; ++ ++ /* Force readers into slow path */ ++ atomic_sub(READER_BIAS, &sem->readers); ++ might_sleep(); ++ ++ set_current_state(state); ++ for (;;) { ++ raw_spin_lock_irqsave(&m->wait_lock, flags); ++ /* Have all readers left the critical region? */ ++ if (!atomic_read(&sem->readers)) { ++ atomic_set(&sem->readers, WRITER_BIAS); ++ __set_current_state(TASK_RUNNING); ++ raw_spin_unlock_irqrestore(&m->wait_lock, flags); ++ return 0; ++ } ++ ++ if (signal_pending_state(state, current)) { ++ __set_current_state(TASK_RUNNING); ++ __up_write_unlock(sem, 0, flags); ++ return -EINTR; ++ } ++ raw_spin_unlock_irqrestore(&m->wait_lock, flags); ++ ++ if (atomic_read(&sem->readers) != 0) { ++ schedule(); ++ set_current_state(state); ++ } ++ } ++} ++ ++void __sched __down_write(struct rw_semaphore *sem) ++{ ++ __down_write_common(sem, TASK_UNINTERRUPTIBLE); ++} ++ ++int __sched __down_write_killable(struct rw_semaphore *sem) ++{ ++ return __down_write_common(sem, TASK_KILLABLE); ++} ++ ++int __down_write_trylock(struct rw_semaphore *sem) ++{ ++ struct rt_mutex *m = &sem->rtmutex; ++ unsigned long flags; ++ ++ if (!__rt_mutex_trylock(m)) ++ return 0; ++ ++ atomic_sub(READER_BIAS, &sem->readers); ++ ++ raw_spin_lock_irqsave(&m->wait_lock, flags); ++ if (!atomic_read(&sem->readers)) { ++ atomic_set(&sem->readers, WRITER_BIAS); ++ raw_spin_unlock_irqrestore(&m->wait_lock, flags); ++ return 1; ++ } ++ __up_write_unlock(sem, 0, flags); ++ return 0; ++} ++ ++void __up_write(struct rw_semaphore *sem) ++{ ++ struct rt_mutex *m = &sem->rtmutex; ++ unsigned long flags; ++ ++ raw_spin_lock_irqsave(&m->wait_lock, flags); ++ __up_write_unlock(sem, WRITER_BIAS, flags); ++} ++ ++void __downgrade_write(struct rw_semaphore *sem) ++{ ++ struct rt_mutex *m = &sem->rtmutex; ++ unsigned long flags; ++ ++ raw_spin_lock_irqsave(&m->wait_lock, flags); ++ /* Release it and account current as reader */ ++ __up_write_unlock(sem, WRITER_BIAS - 1, flags); ++} diff --git a/patches/features/all/rt/rtmutex-add-sleeping-lock-implementation.patch b/patches/features/all/rt/rtmutex-add-sleeping-lock-implementation.patch new file mode 100644 index 00000000000..8869cca03b4 --- /dev/null +++ b/patches/features/all/rt/rtmutex-add-sleeping-lock-implementation.patch @@ -0,0 +1,1197 @@ +From: Thomas Gleixner +Date: Thu, 12 Oct 2017 17:11:19 +0200 +Subject: rtmutex: add sleeping lock implementation +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Signed-off-by: Thomas Gleixner +Signed-off-by: Sebastian Andrzej Siewior +--- + include/linux/kernel.h | 4 + include/linux/rtmutex.h | 21 + + include/linux/sched.h | 9 + include/linux/sched/wake_q.h | 27 ++ + include/linux/spinlock_rt.h | 159 +++++++++++++ + include/linux/spinlock_types_rt.h | 48 ++++ + kernel/fork.c | 1 + kernel/futex.c | 11 + kernel/locking/rtmutex.c | 449 ++++++++++++++++++++++++++++++++++---- + kernel/locking/rtmutex_common.h | 15 + + kernel/sched/core.c | 28 +- + 11 files changed, 713 insertions(+), 59 deletions(-) + create mode 100644 include/linux/spinlock_rt.h + create mode 100644 include/linux/spinlock_types_rt.h + +--- a/include/linux/kernel.h ++++ b/include/linux/kernel.h +@@ -225,6 +225,9 @@ extern int _cond_resched(void); + */ + # define might_sleep() \ + do { __might_sleep(__FILE__, __LINE__, 0); might_resched(); } while (0) ++ ++# define might_sleep_no_state_check() \ ++ do { ___might_sleep(__FILE__, __LINE__, 0); might_resched(); } while (0) + # define sched_annotate_sleep() (current->task_state_change = 0) + #else + static inline void ___might_sleep(const char *file, int line, +@@ -232,6 +235,7 @@ extern int _cond_resched(void); + static inline void __might_sleep(const char *file, int line, + int preempt_offset) { } + # define might_sleep() do { might_resched(); } while (0) ++# define might_sleep_no_state_check() do { might_resched(); } while (0) + # define sched_annotate_sleep() do { } while (0) + #endif + +--- a/include/linux/rtmutex.h ++++ b/include/linux/rtmutex.h +@@ -14,11 +14,15 @@ + #define __LINUX_RT_MUTEX_H + + #include +-#include + #include ++#include + + extern int max_lock_depth; /* for sysctl */ + ++#ifdef CONFIG_DEBUG_MUTEXES ++#include ++#endif ++ + /** + * The rt_mutex structure + * +@@ -31,8 +35,8 @@ struct rt_mutex { + raw_spinlock_t wait_lock; + struct rb_root_cached waiters; + struct task_struct *owner; +-#ifdef CONFIG_DEBUG_RT_MUTEXES + int save_state; ++#ifdef CONFIG_DEBUG_RT_MUTEXES + const char *name, *file; + int line; + void *magic; +@@ -82,16 +86,23 @@ do { \ + #define __DEP_MAP_RT_MUTEX_INITIALIZER(mutexname) + #endif + +-#define __RT_MUTEX_INITIALIZER(mutexname) \ +- { .wait_lock = __RAW_SPIN_LOCK_UNLOCKED(mutexname.wait_lock) \ ++#define __RT_MUTEX_INITIALIZER_PLAIN(mutexname) \ ++ .wait_lock = __RAW_SPIN_LOCK_UNLOCKED(mutexname.wait_lock) \ + , .waiters = RB_ROOT_CACHED \ + , .owner = NULL \ + __DEBUG_RT_MUTEX_INITIALIZER(mutexname) \ +- __DEP_MAP_RT_MUTEX_INITIALIZER(mutexname)} ++ __DEP_MAP_RT_MUTEX_INITIALIZER(mutexname) ++ ++#define __RT_MUTEX_INITIALIZER(mutexname) \ ++ { __RT_MUTEX_INITIALIZER_PLAIN(mutexname) } + + #define DEFINE_RT_MUTEX(mutexname) \ + struct rt_mutex mutexname = __RT_MUTEX_INITIALIZER(mutexname) + ++#define __RT_MUTEX_INITIALIZER_SAVE_STATE(mutexname) \ ++ { __RT_MUTEX_INITIALIZER_PLAIN(mutexname) \ ++ , .save_state = 1 } ++ + /** + * rt_mutex_is_locked - is the mutex locked + * @lock: the mutex to be queried +--- a/include/linux/sched.h ++++ b/include/linux/sched.h +@@ -123,6 +123,11 @@ struct task_group; + smp_store_mb(current->state, (state_value)); \ + } while (0) + ++#define __set_current_state_no_track(state_value) \ ++ current->state = (state_value); ++#define set_current_state_no_track(state_value) \ ++ smp_store_mb(current->state, (state_value)); ++ + #else + /* + * set_current_state() includes a barrier so that the write of current->state +@@ -160,6 +165,9 @@ struct task_group; + */ + #define __set_current_state(state_value) do { current->state = (state_value); } while (0) + #define set_current_state(state_value) smp_store_mb(current->state, (state_value)) ++ ++#define __set_current_state_no_track(state_value) __set_current_state(state_value) ++#define set_current_state_no_track(state_value) set_current_state(state_value) + #endif + + /* Task command name length: */ +@@ -827,6 +835,7 @@ struct task_struct { + raw_spinlock_t pi_lock; + + struct wake_q_node wake_q; ++ struct wake_q_node wake_q_sleeper; + + #ifdef CONFIG_RT_MUTEXES + /* PI waiters blocked on a rt_mutex held by this task: */ +--- a/include/linux/sched/wake_q.h ++++ b/include/linux/sched/wake_q.h +@@ -47,8 +47,29 @@ static inline void wake_q_init(struct wa + head->lastp = &head->first; + } + +-extern void wake_q_add(struct wake_q_head *head, +- struct task_struct *task); +-extern void wake_up_q(struct wake_q_head *head); ++extern void __wake_q_add(struct wake_q_head *head, ++ struct task_struct *task, bool sleeper); ++static inline void wake_q_add(struct wake_q_head *head, ++ struct task_struct *task) ++{ ++ __wake_q_add(head, task, false); ++} ++ ++static inline void wake_q_add_sleeper(struct wake_q_head *head, ++ struct task_struct *task) ++{ ++ __wake_q_add(head, task, true); ++} ++ ++extern void __wake_up_q(struct wake_q_head *head, bool sleeper); ++static inline void wake_up_q(struct wake_q_head *head) ++{ ++ __wake_up_q(head, false); ++} ++ ++static inline void wake_up_q_sleeper(struct wake_q_head *head) ++{ ++ __wake_up_q(head, true); ++} + + #endif /* _LINUX_SCHED_WAKE_Q_H */ +--- /dev/null ++++ b/include/linux/spinlock_rt.h +@@ -0,0 +1,159 @@ ++#ifndef __LINUX_SPINLOCK_RT_H ++#define __LINUX_SPINLOCK_RT_H ++ ++#ifndef __LINUX_SPINLOCK_H ++#error Do not include directly. Use spinlock.h ++#endif ++ ++#include ++ ++extern void ++__rt_spin_lock_init(spinlock_t *lock, const char *name, struct lock_class_key *key); ++ ++#define spin_lock_init(slock) \ ++do { \ ++ static struct lock_class_key __key; \ ++ \ ++ rt_mutex_init(&(slock)->lock); \ ++ __rt_spin_lock_init(slock, #slock, &__key); \ ++} while (0) ++ ++extern void __lockfunc rt_spin_lock(spinlock_t *lock); ++extern unsigned long __lockfunc rt_spin_lock_trace_flags(spinlock_t *lock); ++extern void __lockfunc rt_spin_lock_nested(spinlock_t *lock, int subclass); ++extern void __lockfunc rt_spin_unlock(spinlock_t *lock); ++extern void __lockfunc rt_spin_unlock_wait(spinlock_t *lock); ++extern int __lockfunc rt_spin_trylock_irqsave(spinlock_t *lock, unsigned long *flags); ++extern int __lockfunc rt_spin_trylock_bh(spinlock_t *lock); ++extern int __lockfunc rt_spin_trylock(spinlock_t *lock); ++extern int atomic_dec_and_spin_lock(atomic_t *atomic, spinlock_t *lock); ++ ++/* ++ * lockdep-less calls, for derived types like rwlock: ++ * (for trylock they can use rt_mutex_trylock() directly. ++ * Migrate disable handling must be done at the call site. ++ */ ++extern void __lockfunc __rt_spin_lock(struct rt_mutex *lock); ++extern void __lockfunc __rt_spin_trylock(struct rt_mutex *lock); ++extern void __lockfunc __rt_spin_unlock(struct rt_mutex *lock); ++ ++#define spin_lock(lock) rt_spin_lock(lock) ++ ++#define spin_lock_bh(lock) \ ++ do { \ ++ local_bh_disable(); \ ++ rt_spin_lock(lock); \ ++ } while (0) ++ ++#define spin_lock_irq(lock) spin_lock(lock) ++ ++#define spin_do_trylock(lock) __cond_lock(lock, rt_spin_trylock(lock)) ++ ++#define spin_trylock(lock) \ ++({ \ ++ int __locked; \ ++ __locked = spin_do_trylock(lock); \ ++ __locked; \ ++}) ++ ++#ifdef CONFIG_LOCKDEP ++# define spin_lock_nested(lock, subclass) \ ++ do { \ ++ rt_spin_lock_nested(lock, subclass); \ ++ } while (0) ++ ++#define spin_lock_bh_nested(lock, subclass) \ ++ do { \ ++ local_bh_disable(); \ ++ rt_spin_lock_nested(lock, subclass); \ ++ } while (0) ++ ++# define spin_lock_irqsave_nested(lock, flags, subclass) \ ++ do { \ ++ typecheck(unsigned long, flags); \ ++ flags = 0; \ ++ rt_spin_lock_nested(lock, subclass); \ ++ } while (0) ++#else ++# define spin_lock_nested(lock, subclass) spin_lock(lock) ++# define spin_lock_bh_nested(lock, subclass) spin_lock_bh(lock) ++ ++# define spin_lock_irqsave_nested(lock, flags, subclass) \ ++ do { \ ++ typecheck(unsigned long, flags); \ ++ flags = 0; \ ++ spin_lock(lock); \ ++ } while (0) ++#endif ++ ++#define spin_lock_irqsave(lock, flags) \ ++ do { \ ++ typecheck(unsigned long, flags); \ ++ flags = 0; \ ++ spin_lock(lock); \ ++ } while (0) ++ ++static inline unsigned long spin_lock_trace_flags(spinlock_t *lock) ++{ ++ unsigned long flags = 0; ++#ifdef CONFIG_TRACE_IRQFLAGS ++ flags = rt_spin_lock_trace_flags(lock); ++#else ++ spin_lock(lock); /* lock_local */ ++#endif ++ return flags; ++} ++ ++/* FIXME: we need rt_spin_lock_nest_lock */ ++#define spin_lock_nest_lock(lock, nest_lock) spin_lock_nested(lock, 0) ++ ++#define spin_unlock(lock) rt_spin_unlock(lock) ++ ++#define spin_unlock_bh(lock) \ ++ do { \ ++ rt_spin_unlock(lock); \ ++ local_bh_enable(); \ ++ } while (0) ++ ++#define spin_unlock_irq(lock) spin_unlock(lock) ++ ++#define spin_unlock_irqrestore(lock, flags) \ ++ do { \ ++ typecheck(unsigned long, flags); \ ++ (void) flags; \ ++ spin_unlock(lock); \ ++ } while (0) ++ ++#define spin_trylock_bh(lock) __cond_lock(lock, rt_spin_trylock_bh(lock)) ++#define spin_trylock_irq(lock) spin_trylock(lock) ++ ++#define spin_trylock_irqsave(lock, flags) \ ++ rt_spin_trylock_irqsave(lock, &(flags)) ++ ++#define spin_unlock_wait(lock) rt_spin_unlock_wait(lock) ++ ++#ifdef CONFIG_GENERIC_LOCKBREAK ++# define spin_is_contended(lock) ((lock)->break_lock) ++#else ++# define spin_is_contended(lock) (((void)(lock), 0)) ++#endif ++ ++static inline int spin_can_lock(spinlock_t *lock) ++{ ++ return !rt_mutex_is_locked(&lock->lock); ++} ++ ++static inline int spin_is_locked(spinlock_t *lock) ++{ ++ return rt_mutex_is_locked(&lock->lock); ++} ++ ++static inline void assert_spin_locked(spinlock_t *lock) ++{ ++ BUG_ON(!spin_is_locked(lock)); ++} ++ ++#define atomic_dec_and_lock(atomic, lock) \ ++ atomic_dec_and_spin_lock(atomic, lock) ++ ++#endif +--- /dev/null ++++ b/include/linux/spinlock_types_rt.h +@@ -0,0 +1,48 @@ ++#ifndef __LINUX_SPINLOCK_TYPES_RT_H ++#define __LINUX_SPINLOCK_TYPES_RT_H ++ ++#ifndef __LINUX_SPINLOCK_TYPES_H ++#error "Do not include directly. Include spinlock_types.h instead" ++#endif ++ ++#include ++ ++/* ++ * PREEMPT_RT: spinlocks - an RT mutex plus lock-break field: ++ */ ++typedef struct spinlock { ++ struct rt_mutex lock; ++ unsigned int break_lock; ++#ifdef CONFIG_DEBUG_LOCK_ALLOC ++ struct lockdep_map dep_map; ++#endif ++} spinlock_t; ++ ++#ifdef CONFIG_DEBUG_RT_MUTEXES ++# define __RT_SPIN_INITIALIZER(name) \ ++ { \ ++ .wait_lock = __RAW_SPIN_LOCK_UNLOCKED(name.wait_lock), \ ++ .save_state = 1, \ ++ .file = __FILE__, \ ++ .line = __LINE__ , \ ++ } ++#else ++# define __RT_SPIN_INITIALIZER(name) \ ++ { \ ++ .wait_lock = __RAW_SPIN_LOCK_UNLOCKED(name.wait_lock), \ ++ .save_state = 1, \ ++ } ++#endif ++ ++/* ++.wait_list = PLIST_HEAD_INIT_RAW((name).lock.wait_list, (name).lock.wait_lock) ++*/ ++ ++#define __SPIN_LOCK_UNLOCKED(name) \ ++ { .lock = __RT_SPIN_INITIALIZER(name.lock), \ ++ SPIN_DEP_MAP_INIT(name) } ++ ++#define DEFINE_SPINLOCK(name) \ ++ spinlock_t name = __SPIN_LOCK_UNLOCKED(name) ++ ++#endif +--- a/kernel/fork.c ++++ b/kernel/fork.c +@@ -600,6 +600,7 @@ static struct task_struct *dup_task_stru + tsk->splice_pipe = NULL; + tsk->task_frag.page = NULL; + tsk->wake_q.next = NULL; ++ tsk->wake_q_sleeper.next = NULL; + + account_kernel_stack(tsk, 1); + +--- a/kernel/futex.c ++++ b/kernel/futex.c +@@ -1432,6 +1432,7 @@ static int wake_futex_pi(u32 __user *uad + struct task_struct *new_owner; + bool postunlock = false; + DEFINE_WAKE_Q(wake_q); ++ DEFINE_WAKE_Q(wake_sleeper_q); + int ret = 0; + + new_owner = rt_mutex_next_owner(&pi_state->pi_mutex); +@@ -1493,13 +1494,13 @@ static int wake_futex_pi(u32 __user *uad + pi_state->owner = new_owner; + raw_spin_unlock(&new_owner->pi_lock); + +- postunlock = __rt_mutex_futex_unlock(&pi_state->pi_mutex, &wake_q); +- ++ postunlock = __rt_mutex_futex_unlock(&pi_state->pi_mutex, &wake_q, ++ &wake_sleeper_q); + out_unlock: + raw_spin_unlock_irq(&pi_state->pi_mutex.wait_lock); + + if (postunlock) +- rt_mutex_postunlock(&wake_q); ++ rt_mutex_postunlock(&wake_q, &wake_sleeper_q); + + return ret; + } +@@ -2811,7 +2812,7 @@ static int futex_lock_pi(u32 __user *uad + goto no_block; + } + +- rt_mutex_init_waiter(&rt_waiter); ++ rt_mutex_init_waiter(&rt_waiter, false); + + /* + * On PREEMPT_RT_FULL, when hb->lock becomes an rt_mutex, we must not +@@ -3183,7 +3184,7 @@ static int futex_wait_requeue_pi(u32 __u + * The waiter is allocated on our stack, manipulated by the requeue + * code while we sleep on uaddr. + */ +- rt_mutex_init_waiter(&rt_waiter); ++ rt_mutex_init_waiter(&rt_waiter, false); + + ret = get_futex_key(uaddr2, flags & FLAGS_SHARED, &key2, VERIFY_WRITE); + if (unlikely(ret != 0)) +--- a/kernel/locking/rtmutex.c ++++ b/kernel/locking/rtmutex.c +@@ -7,6 +7,11 @@ + * Copyright (C) 2005-2006 Timesys Corp., Thomas Gleixner + * Copyright (C) 2005 Kihon Technologies Inc., Steven Rostedt + * Copyright (C) 2006 Esben Nielsen ++ * Adaptive Spinlocks: ++ * Copyright (C) 2008 Novell, Inc., Gregory Haskins, Sven Dietrich, ++ * and Peter Morreale, ++ * Adaptive Spinlocks simplification: ++ * Copyright (C) 2008 Red Hat, Inc., Steven Rostedt + * + * See Documentation/locking/rt-mutex-design.txt for details. + */ +@@ -234,7 +239,7 @@ static inline bool unlock_rt_mutex_safe( + * Only use with rt_mutex_waiter_{less,equal}() + */ + #define task_to_waiter(p) \ +- &(struct rt_mutex_waiter){ .prio = (p)->prio, .deadline = (p)->dl.deadline } ++ &(struct rt_mutex_waiter){ .prio = (p)->prio, .deadline = (p)->dl.deadline, .task = (p) } + + static inline int + rt_mutex_waiter_less(struct rt_mutex_waiter *left, +@@ -274,6 +279,27 @@ rt_mutex_waiter_equal(struct rt_mutex_wa + return 1; + } + ++#define STEAL_NORMAL 0 ++#define STEAL_LATERAL 1 ++ ++static inline int ++rt_mutex_steal(struct rt_mutex *lock, struct rt_mutex_waiter *waiter, int mode) ++{ ++ struct rt_mutex_waiter *top_waiter = rt_mutex_top_waiter(lock); ++ ++ if (waiter == top_waiter || rt_mutex_waiter_less(waiter, top_waiter)) ++ return 1; ++ ++ /* ++ * Note that RT tasks are excluded from lateral-steals ++ * to prevent the introduction of an unbounded latency. ++ */ ++ if (mode == STEAL_NORMAL || rt_task(waiter->task)) ++ return 0; ++ ++ return rt_mutex_waiter_equal(waiter, top_waiter); ++} ++ + static void + rt_mutex_enqueue(struct rt_mutex *lock, struct rt_mutex_waiter *waiter) + { +@@ -378,6 +404,14 @@ static bool rt_mutex_cond_detect_deadloc + return debug_rt_mutex_detect_deadlock(waiter, chwalk); + } + ++static void rt_mutex_wake_waiter(struct rt_mutex_waiter *waiter) ++{ ++ if (waiter->savestate) ++ wake_up_lock_sleeper(waiter->task); ++ else ++ wake_up_process(waiter->task); ++} ++ + /* + * Max number of times we'll walk the boosting chain: + */ +@@ -703,13 +737,16 @@ static int rt_mutex_adjust_prio_chain(st + * follow here. This is the end of the chain we are walking. + */ + if (!rt_mutex_owner(lock)) { ++ struct rt_mutex_waiter *lock_top_waiter; ++ + /* + * If the requeue [7] above changed the top waiter, + * then we need to wake the new top waiter up to try + * to get the lock. + */ +- if (prerequeue_top_waiter != rt_mutex_top_waiter(lock)) +- wake_up_process(rt_mutex_top_waiter(lock)->task); ++ lock_top_waiter = rt_mutex_top_waiter(lock); ++ if (prerequeue_top_waiter != lock_top_waiter) ++ rt_mutex_wake_waiter(lock_top_waiter); + raw_spin_unlock_irq(&lock->wait_lock); + return 0; + } +@@ -811,9 +848,11 @@ static int rt_mutex_adjust_prio_chain(st + * @task: The task which wants to acquire the lock + * @waiter: The waiter that is queued to the lock's wait tree if the + * callsite called task_blocked_on_lock(), otherwise NULL ++ * @mode: Lock steal mode (STEAL_NORMAL, STEAL_LATERAL) + */ +-static int try_to_take_rt_mutex(struct rt_mutex *lock, struct task_struct *task, +- struct rt_mutex_waiter *waiter) ++static int __try_to_take_rt_mutex(struct rt_mutex *lock, ++ struct task_struct *task, ++ struct rt_mutex_waiter *waiter, int mode) + { + lockdep_assert_held(&lock->wait_lock); + +@@ -849,12 +888,11 @@ static int try_to_take_rt_mutex(struct r + */ + if (waiter) { + /* +- * If waiter is not the highest priority waiter of +- * @lock, give up. ++ * If waiter is not the highest priority waiter of @lock, ++ * or its peer when lateral steal is allowed, give up. + */ +- if (waiter != rt_mutex_top_waiter(lock)) ++ if (!rt_mutex_steal(lock, waiter, mode)) + return 0; +- + /* + * We can acquire the lock. Remove the waiter from the + * lock waiters tree. +@@ -872,14 +910,12 @@ static int try_to_take_rt_mutex(struct r + */ + if (rt_mutex_has_waiters(lock)) { + /* +- * If @task->prio is greater than or equal to +- * the top waiter priority (kernel view), +- * @task lost. ++ * If @task->prio is greater than the top waiter ++ * priority (kernel view), or equal to it when a ++ * lateral steal is forbidden, @task lost. + */ +- if (!rt_mutex_waiter_less(task_to_waiter(task), +- rt_mutex_top_waiter(lock))) ++ if (!rt_mutex_steal(lock, task_to_waiter(task), mode)) + return 0; +- + /* + * The current top waiter stays enqueued. We + * don't have to change anything in the lock +@@ -926,6 +962,309 @@ static int try_to_take_rt_mutex(struct r + return 1; + } + ++#ifdef CONFIG_PREEMPT_RT_FULL ++/* ++ * preemptible spin_lock functions: ++ */ ++static inline void rt_spin_lock_fastlock(struct rt_mutex *lock, ++ void (*slowfn)(struct rt_mutex *lock)) ++{ ++ might_sleep_no_state_check(); ++ ++ if (likely(rt_mutex_cmpxchg_acquire(lock, NULL, current))) ++ return; ++ else ++ slowfn(lock); ++} ++ ++static inline void rt_spin_lock_fastunlock(struct rt_mutex *lock, ++ void (*slowfn)(struct rt_mutex *lock)) ++{ ++ if (likely(rt_mutex_cmpxchg_release(lock, current, NULL))) ++ return; ++ else ++ slowfn(lock); ++} ++#ifdef CONFIG_SMP ++/* ++ * Note that owner is a speculative pointer and dereferencing relies ++ * on rcu_read_lock() and the check against the lock owner. ++ */ ++static int adaptive_wait(struct rt_mutex *lock, ++ struct task_struct *owner) ++{ ++ int res = 0; ++ ++ rcu_read_lock(); ++ for (;;) { ++ if (owner != rt_mutex_owner(lock)) ++ break; ++ /* ++ * Ensure that owner->on_cpu is dereferenced _after_ ++ * checking the above to be valid. ++ */ ++ barrier(); ++ if (!owner->on_cpu) { ++ res = 1; ++ break; ++ } ++ cpu_relax(); ++ } ++ rcu_read_unlock(); ++ return res; ++} ++#else ++static int adaptive_wait(struct rt_mutex *lock, ++ struct task_struct *orig_owner) ++{ ++ return 1; ++} ++#endif ++ ++static int task_blocks_on_rt_mutex(struct rt_mutex *lock, ++ struct rt_mutex_waiter *waiter, ++ struct task_struct *task, ++ enum rtmutex_chainwalk chwalk); ++/* ++ * Slow path lock function spin_lock style: this variant is very ++ * careful not to miss any non-lock wakeups. ++ * ++ * We store the current state under p->pi_lock in p->saved_state and ++ * the try_to_wake_up() code handles this accordingly. ++ */ ++void __sched rt_spin_lock_slowlock_locked(struct rt_mutex *lock, ++ struct rt_mutex_waiter *waiter, ++ unsigned long flags) ++{ ++ struct task_struct *lock_owner, *self = current; ++ struct rt_mutex_waiter *top_waiter; ++ int ret; ++ ++ if (__try_to_take_rt_mutex(lock, self, NULL, STEAL_LATERAL)) ++ return; ++ ++ BUG_ON(rt_mutex_owner(lock) == self); ++ ++ /* ++ * We save whatever state the task is in and we'll restore it ++ * after acquiring the lock taking real wakeups into account ++ * as well. We are serialized via pi_lock against wakeups. See ++ * try_to_wake_up(). ++ */ ++ raw_spin_lock(&self->pi_lock); ++ self->saved_state = self->state; ++ __set_current_state_no_track(TASK_UNINTERRUPTIBLE); ++ raw_spin_unlock(&self->pi_lock); ++ ++ ret = task_blocks_on_rt_mutex(lock, waiter, self, RT_MUTEX_MIN_CHAINWALK); ++ BUG_ON(ret); ++ ++ for (;;) { ++ /* Try to acquire the lock again. */ ++ if (__try_to_take_rt_mutex(lock, self, waiter, STEAL_LATERAL)) ++ break; ++ ++ top_waiter = rt_mutex_top_waiter(lock); ++ lock_owner = rt_mutex_owner(lock); ++ ++ raw_spin_unlock_irqrestore(&lock->wait_lock, flags); ++ ++ debug_rt_mutex_print_deadlock(waiter); ++ ++ if (top_waiter != waiter || adaptive_wait(lock, lock_owner)) ++ schedule(); ++ ++ raw_spin_lock_irqsave(&lock->wait_lock, flags); ++ ++ raw_spin_lock(&self->pi_lock); ++ __set_current_state_no_track(TASK_UNINTERRUPTIBLE); ++ raw_spin_unlock(&self->pi_lock); ++ } ++ ++ /* ++ * Restore the task state to current->saved_state. We set it ++ * to the original state above and the try_to_wake_up() code ++ * has possibly updated it when a real (non-rtmutex) wakeup ++ * happened while we were blocked. Clear saved_state so ++ * try_to_wakeup() does not get confused. ++ */ ++ raw_spin_lock(&self->pi_lock); ++ __set_current_state_no_track(self->saved_state); ++ self->saved_state = TASK_RUNNING; ++ raw_spin_unlock(&self->pi_lock); ++ ++ /* ++ * try_to_take_rt_mutex() sets the waiter bit ++ * unconditionally. We might have to fix that up: ++ */ ++ fixup_rt_mutex_waiters(lock); ++ ++ BUG_ON(rt_mutex_has_waiters(lock) && waiter == rt_mutex_top_waiter(lock)); ++ BUG_ON(!RB_EMPTY_NODE(&waiter->tree_entry)); ++} ++ ++static void noinline __sched rt_spin_lock_slowlock(struct rt_mutex *lock) ++{ ++ struct rt_mutex_waiter waiter; ++ unsigned long flags; ++ ++ rt_mutex_init_waiter(&waiter, true); ++ ++ raw_spin_lock_irqsave(&lock->wait_lock, flags); ++ rt_spin_lock_slowlock_locked(lock, &waiter, flags); ++ raw_spin_unlock_irqrestore(&lock->wait_lock, flags); ++ debug_rt_mutex_free_waiter(&waiter); ++} ++ ++static bool __sched __rt_mutex_unlock_common(struct rt_mutex *lock, ++ struct wake_q_head *wake_q, ++ struct wake_q_head *wq_sleeper); ++/* ++ * Slow path to release a rt_mutex spin_lock style ++ */ ++void __sched rt_spin_lock_slowunlock(struct rt_mutex *lock) ++{ ++ unsigned long flags; ++ DEFINE_WAKE_Q(wake_q); ++ DEFINE_WAKE_Q(wake_sleeper_q); ++ bool postunlock; ++ ++ raw_spin_lock_irqsave(&lock->wait_lock, flags); ++ postunlock = __rt_mutex_unlock_common(lock, &wake_q, &wake_sleeper_q); ++ raw_spin_unlock_irqrestore(&lock->wait_lock, flags); ++ ++ if (postunlock) ++ rt_mutex_postunlock(&wake_q, &wake_sleeper_q); ++} ++ ++void __lockfunc rt_spin_lock(spinlock_t *lock) ++{ ++ migrate_disable(); ++ spin_acquire(&lock->dep_map, 0, 0, _RET_IP_); ++ rt_spin_lock_fastlock(&lock->lock, rt_spin_lock_slowlock); ++} ++EXPORT_SYMBOL(rt_spin_lock); ++ ++void __lockfunc __rt_spin_lock(struct rt_mutex *lock) ++{ ++ rt_spin_lock_fastlock(lock, rt_spin_lock_slowlock); ++} ++ ++#ifdef CONFIG_DEBUG_LOCK_ALLOC ++void __lockfunc rt_spin_lock_nested(spinlock_t *lock, int subclass) ++{ ++ migrate_disable(); ++ spin_acquire(&lock->dep_map, subclass, 0, _RET_IP_); ++ rt_spin_lock_fastlock(&lock->lock, rt_spin_lock_slowlock); ++} ++EXPORT_SYMBOL(rt_spin_lock_nested); ++#endif ++ ++void __lockfunc rt_spin_unlock(spinlock_t *lock) ++{ ++ /* NOTE: we always pass in '1' for nested, for simplicity */ ++ spin_release(&lock->dep_map, 1, _RET_IP_); ++ rt_spin_lock_fastunlock(&lock->lock, rt_spin_lock_slowunlock); ++ migrate_enable(); ++} ++EXPORT_SYMBOL(rt_spin_unlock); ++ ++void __lockfunc __rt_spin_unlock(struct rt_mutex *lock) ++{ ++ rt_spin_lock_fastunlock(lock, rt_spin_lock_slowunlock); ++} ++EXPORT_SYMBOL(__rt_spin_unlock); ++ ++/* ++ * Wait for the lock to get unlocked: instead of polling for an unlock ++ * (like raw spinlocks do), we lock and unlock, to force the kernel to ++ * schedule if there's contention: ++ */ ++void __lockfunc rt_spin_unlock_wait(spinlock_t *lock) ++{ ++ spin_lock(lock); ++ spin_unlock(lock); ++} ++EXPORT_SYMBOL(rt_spin_unlock_wait); ++ ++int __lockfunc rt_spin_trylock(spinlock_t *lock) ++{ ++ int ret; ++ ++ migrate_disable(); ++ ret = __rt_mutex_trylock(&lock->lock); ++ if (ret) ++ spin_acquire(&lock->dep_map, 0, 1, _RET_IP_); ++ else ++ migrate_enable(); ++ return ret; ++} ++EXPORT_SYMBOL(rt_spin_trylock); ++ ++int __lockfunc rt_spin_trylock_bh(spinlock_t *lock) ++{ ++ int ret; ++ ++ local_bh_disable(); ++ ret = __rt_mutex_trylock(&lock->lock); ++ if (ret) { ++ migrate_disable(); ++ spin_acquire(&lock->dep_map, 0, 1, _RET_IP_); ++ } else ++ local_bh_enable(); ++ return ret; ++} ++EXPORT_SYMBOL(rt_spin_trylock_bh); ++ ++int __lockfunc rt_spin_trylock_irqsave(spinlock_t *lock, unsigned long *flags) ++{ ++ int ret; ++ ++ *flags = 0; ++ ret = __rt_mutex_trylock(&lock->lock); ++ if (ret) { ++ migrate_disable(); ++ spin_acquire(&lock->dep_map, 0, 1, _RET_IP_); ++ } ++ return ret; ++} ++EXPORT_SYMBOL(rt_spin_trylock_irqsave); ++ ++int atomic_dec_and_spin_lock(atomic_t *atomic, spinlock_t *lock) ++{ ++ /* Subtract 1 from counter unless that drops it to 0 (ie. it was 1) */ ++ if (atomic_add_unless(atomic, -1, 1)) ++ return 0; ++ rt_spin_lock(lock); ++ if (atomic_dec_and_test(atomic)) ++ return 1; ++ rt_spin_unlock(lock); ++ return 0; ++} ++EXPORT_SYMBOL(atomic_dec_and_spin_lock); ++ ++void ++__rt_spin_lock_init(spinlock_t *lock, const char *name, struct lock_class_key *key) ++{ ++#ifdef CONFIG_DEBUG_LOCK_ALLOC ++ /* ++ * Make sure we are not reinitializing a held lock: ++ */ ++ debug_check_no_locks_freed((void *)lock, sizeof(*lock)); ++ lockdep_init_map(&lock->dep_map, name, key, 0); ++#endif ++} ++EXPORT_SYMBOL(__rt_spin_lock_init); ++ ++#endif /* PREEMPT_RT_FULL */ ++ ++static inline int ++try_to_take_rt_mutex(struct rt_mutex *lock, struct task_struct *task, ++ struct rt_mutex_waiter *waiter) ++{ ++ return __try_to_take_rt_mutex(lock, task, waiter, STEAL_NORMAL); ++} ++ + /* + * Task blocks on lock. + * +@@ -1039,6 +1378,7 @@ static int task_blocks_on_rt_mutex(struc + * Called with lock->wait_lock held and interrupts disabled. + */ + static void mark_wakeup_next_waiter(struct wake_q_head *wake_q, ++ struct wake_q_head *wake_sleeper_q, + struct rt_mutex *lock) + { + struct rt_mutex_waiter *waiter; +@@ -1078,7 +1418,10 @@ static void mark_wakeup_next_waiter(stru + * Pairs with preempt_enable() in rt_mutex_postunlock(); + */ + preempt_disable(); +- wake_q_add(wake_q, waiter->task); ++ if (waiter->savestate) ++ wake_q_add_sleeper(wake_sleeper_q, waiter->task); ++ else ++ wake_q_add(wake_q, waiter->task); + raw_spin_unlock(¤t->pi_lock); + } + +@@ -1162,21 +1505,22 @@ void rt_mutex_adjust_pi(struct task_stru + return; + } + next_lock = waiter->lock; +- raw_spin_unlock_irqrestore(&task->pi_lock, flags); + + /* gets dropped in rt_mutex_adjust_prio_chain()! */ + get_task_struct(task); + ++ raw_spin_unlock_irqrestore(&task->pi_lock, flags); + rt_mutex_adjust_prio_chain(task, RT_MUTEX_MIN_CHAINWALK, NULL, + next_lock, NULL, task); + } + +-void rt_mutex_init_waiter(struct rt_mutex_waiter *waiter) ++void rt_mutex_init_waiter(struct rt_mutex_waiter *waiter, bool savestate) + { + debug_rt_mutex_init_waiter(waiter); + RB_CLEAR_NODE(&waiter->pi_tree_entry); + RB_CLEAR_NODE(&waiter->tree_entry); + waiter->task = NULL; ++ waiter->savestate = savestate; + } + + /** +@@ -1295,7 +1639,7 @@ rt_mutex_slowlock(struct rt_mutex *lock, + unsigned long flags; + int ret = 0; + +- rt_mutex_init_waiter(&waiter); ++ rt_mutex_init_waiter(&waiter, false); + + /* + * Technically we could use raw_spin_[un]lock_irq() here, but this can +@@ -1368,7 +1712,8 @@ static inline int rt_mutex_slowtrylock(s + * Return whether the current task needs to call rt_mutex_postunlock(). + */ + static bool __sched rt_mutex_slowunlock(struct rt_mutex *lock, +- struct wake_q_head *wake_q) ++ struct wake_q_head *wake_q, ++ struct wake_q_head *wake_sleeper_q) + { + unsigned long flags; + +@@ -1422,7 +1767,7 @@ static bool __sched rt_mutex_slowunlock( + * + * Queue the next waiter for wakeup once we release the wait_lock. + */ +- mark_wakeup_next_waiter(wake_q, lock); ++ mark_wakeup_next_waiter(wake_q, wake_sleeper_q, lock); + raw_spin_unlock_irqrestore(&lock->wait_lock, flags); + + return true; /* call rt_mutex_postunlock() */ +@@ -1474,9 +1819,11 @@ rt_mutex_fasttrylock(struct rt_mutex *lo + /* + * Performs the wakeup of the the top-waiter and re-enables preemption. + */ +-void rt_mutex_postunlock(struct wake_q_head *wake_q) ++void rt_mutex_postunlock(struct wake_q_head *wake_q, ++ struct wake_q_head *wake_sleeper_q) + { + wake_up_q(wake_q); ++ wake_up_q_sleeper(wake_sleeper_q); + + /* Pairs with preempt_disable() in rt_mutex_slowunlock() */ + preempt_enable(); +@@ -1485,15 +1832,17 @@ void rt_mutex_postunlock(struct wake_q_h + static inline void + rt_mutex_fastunlock(struct rt_mutex *lock, + bool (*slowfn)(struct rt_mutex *lock, +- struct wake_q_head *wqh)) ++ struct wake_q_head *wqh, ++ struct wake_q_head *wq_sleeper)) + { + DEFINE_WAKE_Q(wake_q); ++ DEFINE_WAKE_Q(wake_sleeper_q); + + if (likely(rt_mutex_cmpxchg_release(lock, current, NULL))) + return; + +- if (slowfn(lock, &wake_q)) +- rt_mutex_postunlock(&wake_q); ++ if (slowfn(lock, &wake_q, &wake_sleeper_q)) ++ rt_mutex_postunlock(&wake_q, &wake_sleeper_q); + } + + int __sched __rt_mutex_lock_state(struct rt_mutex *lock, int state) +@@ -1653,16 +2002,13 @@ void __sched __rt_mutex_unlock(struct rt + void __sched rt_mutex_unlock(struct rt_mutex *lock) + { + mutex_release(&lock->dep_map, 1, _RET_IP_); +- rt_mutex_fastunlock(lock, rt_mutex_slowunlock); ++ __rt_mutex_unlock(lock); + } + EXPORT_SYMBOL_GPL(rt_mutex_unlock); + +-/** +- * Futex variant, that since futex variants do not use the fast-path, can be +- * simple and will not need to retry. +- */ +-bool __sched __rt_mutex_futex_unlock(struct rt_mutex *lock, +- struct wake_q_head *wake_q) ++static bool __sched __rt_mutex_unlock_common(struct rt_mutex *lock, ++ struct wake_q_head *wake_q, ++ struct wake_q_head *wq_sleeper) + { + lockdep_assert_held(&lock->wait_lock); + +@@ -1679,22 +2025,34 @@ bool __sched __rt_mutex_futex_unlock(str + * avoid inversion prior to the wakeup. preempt_disable() + * therein pairs with rt_mutex_postunlock(). + */ +- mark_wakeup_next_waiter(wake_q, lock); ++ mark_wakeup_next_waiter(wake_q, wq_sleeper, lock); + + return true; /* call postunlock() */ + } + ++/** ++ * Futex variant, that since futex variants do not use the fast-path, can be ++ * simple and will not need to retry. ++ */ ++bool __sched __rt_mutex_futex_unlock(struct rt_mutex *lock, ++ struct wake_q_head *wake_q, ++ struct wake_q_head *wq_sleeper) ++{ ++ return __rt_mutex_unlock_common(lock, wake_q, wq_sleeper); ++} ++ + void __sched rt_mutex_futex_unlock(struct rt_mutex *lock) + { + DEFINE_WAKE_Q(wake_q); ++ DEFINE_WAKE_Q(wake_sleeper_q); + bool postunlock; + + raw_spin_lock_irq(&lock->wait_lock); +- postunlock = __rt_mutex_futex_unlock(lock, &wake_q); ++ postunlock = __rt_mutex_futex_unlock(lock, &wake_q, &wake_sleeper_q); + raw_spin_unlock_irq(&lock->wait_lock); + + if (postunlock) +- rt_mutex_postunlock(&wake_q); ++ rt_mutex_postunlock(&wake_q, &wake_sleeper_q); + } + + /** +@@ -1733,7 +2091,7 @@ void __rt_mutex_init(struct rt_mutex *lo + if (name && key) + debug_rt_mutex_init(lock, name, key); + } +-EXPORT_SYMBOL_GPL(__rt_mutex_init); ++EXPORT_SYMBOL(__rt_mutex_init); + + /** + * rt_mutex_init_proxy_locked - initialize and lock a rt_mutex on behalf of a +@@ -1902,6 +2260,7 @@ int rt_mutex_wait_proxy_lock(struct rt_m + struct hrtimer_sleeper *to, + struct rt_mutex_waiter *waiter) + { ++ struct task_struct *tsk = current; + int ret; + + raw_spin_lock_irq(&lock->wait_lock); +@@ -1913,6 +2272,24 @@ int rt_mutex_wait_proxy_lock(struct rt_m + * have to fix that up. + */ + fixup_rt_mutex_waiters(lock); ++ /* ++ * RT has a problem here when the wait got interrupted by a timeout ++ * or a signal. task->pi_blocked_on is still set. The task must ++ * acquire the hash bucket lock when returning from this function. ++ * ++ * If the hash bucket lock is contended then the ++ * BUG_ON(rt_mutex_real_waiter(task->pi_blocked_on)) in ++ * task_blocks_on_rt_mutex() will trigger. This can be avoided by ++ * clearing task->pi_blocked_on which removes the task from the ++ * boosting chain of the rtmutex. That's correct because the task ++ * is not longer blocked on it. ++ */ ++ if (ret) { ++ raw_spin_lock(&tsk->pi_lock); ++ tsk->pi_blocked_on = NULL; ++ raw_spin_unlock(&tsk->pi_lock); ++ } ++ + raw_spin_unlock_irq(&lock->wait_lock); + + return ret; +--- a/kernel/locking/rtmutex_common.h ++++ b/kernel/locking/rtmutex_common.h +@@ -15,6 +15,7 @@ + + #include + #include ++#include + + /* + * This is the control structure for tasks blocked on a rt_mutex, +@@ -29,6 +30,7 @@ struct rt_mutex_waiter { + struct rb_node pi_tree_entry; + struct task_struct *task; + struct rt_mutex *lock; ++ bool savestate; + #ifdef CONFIG_DEBUG_RT_MUTEXES + unsigned long ip; + struct pid *deadlock_task_pid; +@@ -137,7 +139,7 @@ extern void rt_mutex_init_proxy_locked(s + struct task_struct *proxy_owner); + extern void rt_mutex_proxy_unlock(struct rt_mutex *lock, + struct task_struct *proxy_owner); +-extern void rt_mutex_init_waiter(struct rt_mutex_waiter *waiter); ++extern void rt_mutex_init_waiter(struct rt_mutex_waiter *waiter, bool savetate); + extern int __rt_mutex_start_proxy_lock(struct rt_mutex *lock, + struct rt_mutex_waiter *waiter, + struct task_struct *task); +@@ -155,9 +157,12 @@ extern int __rt_mutex_futex_trylock(stru + + extern void rt_mutex_futex_unlock(struct rt_mutex *lock); + extern bool __rt_mutex_futex_unlock(struct rt_mutex *lock, +- struct wake_q_head *wqh); ++ struct wake_q_head *wqh, ++ struct wake_q_head *wq_sleeper); ++ ++extern void rt_mutex_postunlock(struct wake_q_head *wake_q, ++ struct wake_q_head *wake_sleeper_q); + +-extern void rt_mutex_postunlock(struct wake_q_head *wake_q); + /* RW semaphore special interface */ + + extern int __rt_mutex_lock_state(struct rt_mutex *lock, int state); +@@ -167,6 +172,10 @@ int __sched rt_mutex_slowlock_locked(str + struct hrtimer_sleeper *timeout, + enum rtmutex_chainwalk chwalk, + struct rt_mutex_waiter *waiter); ++void __sched rt_spin_lock_slowlock_locked(struct rt_mutex *lock, ++ struct rt_mutex_waiter *waiter, ++ unsigned long flags); ++void __sched rt_spin_lock_slowunlock(struct rt_mutex *lock); + + #ifdef CONFIG_DEBUG_RT_MUTEXES + # include "rtmutex-debug.h" +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -427,9 +427,15 @@ static bool set_nr_if_polling(struct tas + #endif + #endif + +-void wake_q_add(struct wake_q_head *head, struct task_struct *task) ++void __wake_q_add(struct wake_q_head *head, struct task_struct *task, ++ bool sleeper) + { +- struct wake_q_node *node = &task->wake_q; ++ struct wake_q_node *node; ++ ++ if (sleeper) ++ node = &task->wake_q_sleeper; ++ else ++ node = &task->wake_q; + + /* + * Atomically grab the task, if ->wake_q is !nil already it means +@@ -451,24 +457,32 @@ void wake_q_add(struct wake_q_head *head + head->lastp = &node->next; + } + +-void wake_up_q(struct wake_q_head *head) ++void __wake_up_q(struct wake_q_head *head, bool sleeper) + { + struct wake_q_node *node = head->first; + + while (node != WAKE_Q_TAIL) { + struct task_struct *task; + +- task = container_of(node, struct task_struct, wake_q); ++ if (sleeper) ++ task = container_of(node, struct task_struct, wake_q_sleeper); ++ else ++ task = container_of(node, struct task_struct, wake_q); + BUG_ON(!task); + /* Task can safely be re-inserted now: */ + node = node->next; +- task->wake_q.next = NULL; +- ++ if (sleeper) ++ task->wake_q_sleeper.next = NULL; ++ else ++ task->wake_q.next = NULL; + /* + * wake_up_process() implies a wmb() to pair with the queueing + * in wake_q_add() so as not to miss wakeups. + */ +- wake_up_process(task); ++ if (sleeper) ++ wake_up_lock_sleeper(task); ++ else ++ wake_up_process(task); + put_task_struct(task); + } + } diff --git a/patches/features/all/rt/rtmutex-add-ww_mutex-addon-for-mutex-rt.patch b/patches/features/all/rt/rtmutex-add-ww_mutex-addon-for-mutex-rt.patch new file mode 100644 index 00000000000..17b2d792bf9 --- /dev/null +++ b/patches/features/all/rt/rtmutex-add-ww_mutex-addon-for-mutex-rt.patch @@ -0,0 +1,423 @@ +From: Sebastian Andrzej Siewior +Date: Thu, 12 Oct 2017 17:34:38 +0200 +Subject: rtmutex: add ww_mutex addon for mutex-rt +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/locking/rtmutex.c | 264 ++++++++++++++++++++++++++++++++++++++-- + kernel/locking/rtmutex_common.h | 2 + kernel/locking/rwsem-rt.c | 2 + 3 files changed, 257 insertions(+), 11 deletions(-) + +--- a/kernel/locking/rtmutex.c ++++ b/kernel/locking/rtmutex.c +@@ -23,6 +23,7 @@ + #include + #include + #include ++#include + + #include "rtmutex_common.h" + +@@ -1258,6 +1259,40 @@ EXPORT_SYMBOL(__rt_spin_lock_init); + + #endif /* PREEMPT_RT_FULL */ + ++#ifdef CONFIG_PREEMPT_RT_FULL ++ static inline int __sched ++__mutex_lock_check_stamp(struct rt_mutex *lock, struct ww_acquire_ctx *ctx) ++{ ++ struct ww_mutex *ww = container_of(lock, struct ww_mutex, base.lock); ++ struct ww_acquire_ctx *hold_ctx = ACCESS_ONCE(ww->ctx); ++ ++ if (!hold_ctx) ++ return 0; ++ ++ if (unlikely(ctx == hold_ctx)) ++ return -EALREADY; ++ ++ if (ctx->stamp - hold_ctx->stamp <= LONG_MAX && ++ (ctx->stamp != hold_ctx->stamp || ctx > hold_ctx)) { ++#ifdef CONFIG_DEBUG_MUTEXES ++ DEBUG_LOCKS_WARN_ON(ctx->contending_lock); ++ ctx->contending_lock = ww; ++#endif ++ return -EDEADLK; ++ } ++ ++ return 0; ++} ++#else ++ static inline int __sched ++__mutex_lock_check_stamp(struct rt_mutex *lock, struct ww_acquire_ctx *ctx) ++{ ++ BUG(); ++ return 0; ++} ++ ++#endif ++ + static inline int + try_to_take_rt_mutex(struct rt_mutex *lock, struct task_struct *task, + struct rt_mutex_waiter *waiter) +@@ -1536,7 +1571,8 @@ void rt_mutex_init_waiter(struct rt_mute + static int __sched + __rt_mutex_slowlock(struct rt_mutex *lock, int state, + struct hrtimer_sleeper *timeout, +- struct rt_mutex_waiter *waiter) ++ struct rt_mutex_waiter *waiter, ++ struct ww_acquire_ctx *ww_ctx) + { + int ret = 0; + +@@ -1554,6 +1590,12 @@ static int __sched + break; + } + ++ if (ww_ctx && ww_ctx->acquired > 0) { ++ ret = __mutex_lock_check_stamp(lock, ww_ctx); ++ if (ret) ++ break; ++ } ++ + raw_spin_unlock_irq(&lock->wait_lock); + + debug_rt_mutex_print_deadlock(waiter); +@@ -1588,16 +1630,106 @@ static void rt_mutex_handle_deadlock(int + } + } + ++static __always_inline void ww_mutex_lock_acquired(struct ww_mutex *ww, ++ struct ww_acquire_ctx *ww_ctx) ++{ ++#ifdef CONFIG_DEBUG_MUTEXES ++ /* ++ * If this WARN_ON triggers, you used ww_mutex_lock to acquire, ++ * but released with a normal mutex_unlock in this call. ++ * ++ * This should never happen, always use ww_mutex_unlock. ++ */ ++ DEBUG_LOCKS_WARN_ON(ww->ctx); ++ ++ /* ++ * Not quite done after calling ww_acquire_done() ? ++ */ ++ DEBUG_LOCKS_WARN_ON(ww_ctx->done_acquire); ++ ++ if (ww_ctx->contending_lock) { ++ /* ++ * After -EDEADLK you tried to ++ * acquire a different ww_mutex? Bad! ++ */ ++ DEBUG_LOCKS_WARN_ON(ww_ctx->contending_lock != ww); ++ ++ /* ++ * You called ww_mutex_lock after receiving -EDEADLK, ++ * but 'forgot' to unlock everything else first? ++ */ ++ DEBUG_LOCKS_WARN_ON(ww_ctx->acquired > 0); ++ ww_ctx->contending_lock = NULL; ++ } ++ ++ /* ++ * Naughty, using a different class will lead to undefined behavior! ++ */ ++ DEBUG_LOCKS_WARN_ON(ww_ctx->ww_class != ww->ww_class); ++#endif ++ ww_ctx->acquired++; ++} ++ ++#ifdef CONFIG_PREEMPT_RT_FULL ++static void ww_mutex_account_lock(struct rt_mutex *lock, ++ struct ww_acquire_ctx *ww_ctx) ++{ ++ struct ww_mutex *ww = container_of(lock, struct ww_mutex, base.lock); ++ struct rt_mutex_waiter *waiter, *n; ++ ++ /* ++ * This branch gets optimized out for the common case, ++ * and is only important for ww_mutex_lock. ++ */ ++ ww_mutex_lock_acquired(ww, ww_ctx); ++ ww->ctx = ww_ctx; ++ ++ /* ++ * Give any possible sleeping processes the chance to wake up, ++ * so they can recheck if they have to back off. ++ */ ++ rbtree_postorder_for_each_entry_safe(waiter, n, &lock->waiters.rb_root, ++ tree_entry) { ++ /* XXX debug rt mutex waiter wakeup */ ++ ++ BUG_ON(waiter->lock != lock); ++ rt_mutex_wake_waiter(waiter); ++ } ++} ++ ++#else ++ ++static void ww_mutex_account_lock(struct rt_mutex *lock, ++ struct ww_acquire_ctx *ww_ctx) ++{ ++ BUG(); ++} ++#endif ++ + int __sched rt_mutex_slowlock_locked(struct rt_mutex *lock, int state, + struct hrtimer_sleeper *timeout, + enum rtmutex_chainwalk chwalk, ++ struct ww_acquire_ctx *ww_ctx, + struct rt_mutex_waiter *waiter) + { + int ret; + ++#ifdef CONFIG_PREEMPT_RT_FULL ++ if (ww_ctx) { ++ struct ww_mutex *ww; ++ ++ ww = container_of(lock, struct ww_mutex, base.lock); ++ if (unlikely(ww_ctx == READ_ONCE(ww->ctx))) ++ return -EALREADY; ++ } ++#endif ++ + /* Try to acquire the lock again: */ +- if (try_to_take_rt_mutex(lock, current, NULL)) ++ if (try_to_take_rt_mutex(lock, current, NULL)) { ++ if (ww_ctx) ++ ww_mutex_account_lock(lock, ww_ctx); + return 0; ++ } + + set_current_state(state); + +@@ -1609,7 +1741,12 @@ int __sched rt_mutex_slowlock_locked(str + + if (likely(!ret)) { + /* sleep on the mutex */ +- ret = __rt_mutex_slowlock(lock, state, timeout, waiter); ++ ret = __rt_mutex_slowlock(lock, state, timeout, waiter, ++ ww_ctx); ++ } else if (ww_ctx) { ++ /* ww_mutex received EDEADLK, let it become EALREADY */ ++ ret = __mutex_lock_check_stamp(lock, ww_ctx); ++ BUG_ON(!ret); + } + + if (unlikely(ret)) { +@@ -1617,6 +1754,10 @@ int __sched rt_mutex_slowlock_locked(str + if (rt_mutex_has_waiters(lock)) + remove_waiter(lock, waiter); + /* ww_mutex want to report EDEADLK/EALREADY, let them */ ++ if (!ww_ctx) ++ rt_mutex_handle_deadlock(ret, chwalk, waiter); ++ } else if (ww_ctx) { ++ ww_mutex_account_lock(lock, ww_ctx); + } + + /* +@@ -1633,7 +1774,8 @@ int __sched rt_mutex_slowlock_locked(str + static int __sched + rt_mutex_slowlock(struct rt_mutex *lock, int state, + struct hrtimer_sleeper *timeout, +- enum rtmutex_chainwalk chwalk) ++ enum rtmutex_chainwalk chwalk, ++ struct ww_acquire_ctx *ww_ctx) + { + struct rt_mutex_waiter waiter; + unsigned long flags; +@@ -1651,7 +1793,8 @@ rt_mutex_slowlock(struct rt_mutex *lock, + */ + raw_spin_lock_irqsave(&lock->wait_lock, flags); + +- ret = rt_mutex_slowlock_locked(lock, state, timeout, chwalk, &waiter); ++ ret = rt_mutex_slowlock_locked(lock, state, timeout, chwalk, ww_ctx, ++ &waiter); + + raw_spin_unlock_irqrestore(&lock->wait_lock, flags); + +@@ -1781,29 +1924,33 @@ static bool __sched rt_mutex_slowunlock( + */ + static inline int + rt_mutex_fastlock(struct rt_mutex *lock, int state, ++ struct ww_acquire_ctx *ww_ctx, + int (*slowfn)(struct rt_mutex *lock, int state, + struct hrtimer_sleeper *timeout, +- enum rtmutex_chainwalk chwalk)) ++ enum rtmutex_chainwalk chwalk, ++ struct ww_acquire_ctx *ww_ctx)) + { + if (likely(rt_mutex_cmpxchg_acquire(lock, NULL, current))) + return 0; + +- return slowfn(lock, state, NULL, RT_MUTEX_MIN_CHAINWALK); ++ return slowfn(lock, state, NULL, RT_MUTEX_MIN_CHAINWALK, ww_ctx); + } + + static inline int + rt_mutex_timed_fastlock(struct rt_mutex *lock, int state, + struct hrtimer_sleeper *timeout, + enum rtmutex_chainwalk chwalk, ++ struct ww_acquire_ctx *ww_ctx, + int (*slowfn)(struct rt_mutex *lock, int state, + struct hrtimer_sleeper *timeout, +- enum rtmutex_chainwalk chwalk)) ++ enum rtmutex_chainwalk chwalk, ++ struct ww_acquire_ctx *ww_ctx)) + { + if (chwalk == RT_MUTEX_MIN_CHAINWALK && + likely(rt_mutex_cmpxchg_acquire(lock, NULL, current))) + return 0; + +- return slowfn(lock, state, timeout, chwalk); ++ return slowfn(lock, state, timeout, chwalk, ww_ctx); + } + + static inline int +@@ -1946,6 +2093,7 @@ rt_mutex_timed_lock(struct rt_mutex *loc + mutex_acquire(&lock->dep_map, 0, 0, _RET_IP_); + ret = rt_mutex_timed_fastlock(lock, TASK_INTERRUPTIBLE, timeout, + RT_MUTEX_MIN_CHAINWALK, ++ NULL, + rt_mutex_slowlock); + if (ret) + mutex_release(&lock->dep_map, 1, _RET_IP_); +@@ -2266,7 +2414,7 @@ int rt_mutex_wait_proxy_lock(struct rt_m + raw_spin_lock_irq(&lock->wait_lock); + /* sleep on the mutex */ + set_current_state(TASK_INTERRUPTIBLE); +- ret = __rt_mutex_slowlock(lock, TASK_INTERRUPTIBLE, to, waiter); ++ ret = __rt_mutex_slowlock(lock, TASK_INTERRUPTIBLE, to, waiter, NULL); + /* + * try_to_take_rt_mutex() sets the waiter bit unconditionally. We might + * have to fix that up. +@@ -2350,3 +2498,99 @@ bool rt_mutex_cleanup_proxy_lock(struct + + return cleanup; + } ++ ++static inline int ++ww_mutex_deadlock_injection(struct ww_mutex *lock, struct ww_acquire_ctx *ctx) ++{ ++#ifdef CONFIG_DEBUG_WW_MUTEX_SLOWPATH ++ unsigned tmp; ++ ++ if (ctx->deadlock_inject_countdown-- == 0) { ++ tmp = ctx->deadlock_inject_interval; ++ if (tmp > UINT_MAX/4) ++ tmp = UINT_MAX; ++ else ++ tmp = tmp*2 + tmp + tmp/2; ++ ++ ctx->deadlock_inject_interval = tmp; ++ ctx->deadlock_inject_countdown = tmp; ++ ctx->contending_lock = lock; ++ ++ ww_mutex_unlock(lock); ++ ++ return -EDEADLK; ++ } ++#endif ++ ++ return 0; ++} ++ ++#ifdef CONFIG_PREEMPT_RT_FULL ++int __sched ++ww_mutex_lock_interruptible(struct ww_mutex *lock, struct ww_acquire_ctx *ctx) ++{ ++ int ret; ++ ++ might_sleep(); ++ ++ mutex_acquire_nest(&lock->base.dep_map, 0, 0, ++ ctx ? &ctx->dep_map : NULL, _RET_IP_); ++ ret = rt_mutex_slowlock(&lock->base.lock, TASK_INTERRUPTIBLE, NULL, 0, ++ ctx); ++ if (ret) ++ mutex_release(&lock->base.dep_map, 1, _RET_IP_); ++ else if (!ret && ctx && ctx->acquired > 1) ++ return ww_mutex_deadlock_injection(lock, ctx); ++ ++ return ret; ++} ++EXPORT_SYMBOL_GPL(ww_mutex_lock_interruptible); ++ ++int __sched ++ww_mutex_lock(struct ww_mutex *lock, struct ww_acquire_ctx *ctx) ++{ ++ int ret; ++ ++ might_sleep(); ++ ++ mutex_acquire_nest(&lock->base.dep_map, 0, 0, ++ ctx ? &ctx->dep_map : NULL, _RET_IP_); ++ ret = rt_mutex_slowlock(&lock->base.lock, TASK_UNINTERRUPTIBLE, NULL, 0, ++ ctx); ++ if (ret) ++ mutex_release(&lock->base.dep_map, 1, _RET_IP_); ++ else if (!ret && ctx && ctx->acquired > 1) ++ return ww_mutex_deadlock_injection(lock, ctx); ++ ++ return ret; ++} ++EXPORT_SYMBOL_GPL(ww_mutex_lock); ++ ++void __sched ww_mutex_unlock(struct ww_mutex *lock) ++{ ++ int nest = !!lock->ctx; ++ ++ /* ++ * The unlocking fastpath is the 0->1 transition from 'locked' ++ * into 'unlocked' state: ++ */ ++ if (nest) { ++#ifdef CONFIG_DEBUG_MUTEXES ++ DEBUG_LOCKS_WARN_ON(!lock->ctx->acquired); ++#endif ++ if (lock->ctx->acquired > 0) ++ lock->ctx->acquired--; ++ lock->ctx = NULL; ++ } ++ ++ mutex_release(&lock->base.dep_map, nest, _RET_IP_); ++ __rt_mutex_unlock(&lock->base.lock); ++} ++EXPORT_SYMBOL(ww_mutex_unlock); ++ ++int __rt_mutex_owner_current(struct rt_mutex *lock) ++{ ++ return rt_mutex_owner(lock) == current; ++} ++EXPORT_SYMBOL(__rt_mutex_owner_current); ++#endif +--- a/kernel/locking/rtmutex_common.h ++++ b/kernel/locking/rtmutex_common.h +@@ -164,6 +164,7 @@ extern void rt_mutex_postunlock(struct w + struct wake_q_head *wake_sleeper_q); + + /* RW semaphore special interface */ ++struct ww_acquire_ctx; + + extern int __rt_mutex_lock_state(struct rt_mutex *lock, int state); + extern int __rt_mutex_trylock(struct rt_mutex *lock); +@@ -171,6 +172,7 @@ extern void __rt_mutex_unlock(struct rt_ + int __sched rt_mutex_slowlock_locked(struct rt_mutex *lock, int state, + struct hrtimer_sleeper *timeout, + enum rtmutex_chainwalk chwalk, ++ struct ww_acquire_ctx *ww_ctx, + struct rt_mutex_waiter *waiter); + void __sched rt_spin_lock_slowlock_locked(struct rt_mutex *lock, + struct rt_mutex_waiter *waiter, +--- a/kernel/locking/rwsem-rt.c ++++ b/kernel/locking/rwsem-rt.c +@@ -130,7 +130,7 @@ void __sched __down_read(struct rw_semap + */ + rt_mutex_init_waiter(&waiter, false); + rt_mutex_slowlock_locked(m, TASK_UNINTERRUPTIBLE, NULL, +- RT_MUTEX_MIN_CHAINWALK, ++ RT_MUTEX_MIN_CHAINWALK, NULL, + &waiter); + /* + * The slowlock() above is guaranteed to return with the rtmutex is diff --git a/patches/features/all/rt/rtmutex-avoid-include-hell.patch b/patches/features/all/rt/rtmutex-avoid-include-hell.patch new file mode 100644 index 00000000000..98aa7601f9a --- /dev/null +++ b/patches/features/all/rt/rtmutex-avoid-include-hell.patch @@ -0,0 +1,24 @@ +Subject: rtmutex: Avoid include hell +From: Thomas Gleixner +Date: Wed, 29 Jun 2011 20:06:39 +0200 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Include only the required raw types. This avoids pulling in the +complete spinlock header which in turn requires rtmutex.h at some point. + +Signed-off-by: Thomas Gleixner +--- + include/linux/rtmutex.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/include/linux/rtmutex.h ++++ b/include/linux/rtmutex.h +@@ -15,7 +15,7 @@ + + #include + #include +-#include ++#include + + extern int max_lock_depth; /* for sysctl */ + diff --git a/patches/features/all/rt/rtmutex-export-lockdep-less-version-of-rt_mutex-s-lo.patch b/patches/features/all/rt/rtmutex-export-lockdep-less-version-of-rt_mutex-s-lo.patch new file mode 100644 index 00000000000..1289f2646a8 --- /dev/null +++ b/patches/features/all/rt/rtmutex-export-lockdep-less-version-of-rt_mutex-s-lo.patch @@ -0,0 +1,151 @@ +From: Thomas Gleixner +Date: Thu, 12 Oct 2017 16:36:39 +0200 +Subject: rtmutex: export lockdep-less version of rt_mutex's lock, + trylock and unlock +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Required for lock implementation ontop of rtmutex. + +Signed-off-by: Thomas Gleixner +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/locking/rtmutex.c | 70 +++++++++++++++++++++++++--------------- + kernel/locking/rtmutex_common.h | 3 + + 2 files changed, 47 insertions(+), 26 deletions(-) + +--- a/kernel/locking/rtmutex.c ++++ b/kernel/locking/rtmutex.c +@@ -1496,6 +1496,29 @@ rt_mutex_fastunlock(struct rt_mutex *loc + rt_mutex_postunlock(&wake_q); + } + ++int __sched __rt_mutex_lock_state(struct rt_mutex *lock, int state) ++{ ++ might_sleep(); ++ return rt_mutex_fastlock(lock, state, NULL, rt_mutex_slowlock); ++} ++ ++/** ++ * rt_mutex_lock_state - lock a rt_mutex with a given state ++ * ++ * @lock: The rt_mutex to be locked ++ * @state: The state to set when blocking on the rt_mutex ++ */ ++static int __sched rt_mutex_lock_state(struct rt_mutex *lock, int state) ++{ ++ int ret; ++ ++ mutex_acquire(&lock->dep_map, 0, 0, _RET_IP_); ++ ret = __rt_mutex_lock_state(lock, state); ++ if (ret) ++ mutex_release(&lock->dep_map, 1, _RET_IP_); ++ return ret; ++} ++ + /** + * rt_mutex_lock - lock a rt_mutex + * +@@ -1503,10 +1526,7 @@ rt_mutex_fastunlock(struct rt_mutex *loc + */ + void __sched rt_mutex_lock(struct rt_mutex *lock) + { +- might_sleep(); +- +- mutex_acquire(&lock->dep_map, 0, 0, _RET_IP_); +- rt_mutex_fastlock(lock, TASK_UNINTERRUPTIBLE, rt_mutex_slowlock); ++ rt_mutex_lock_state(lock, TASK_UNINTERRUPTIBLE); + } + EXPORT_SYMBOL_GPL(rt_mutex_lock); + +@@ -1521,16 +1541,7 @@ EXPORT_SYMBOL_GPL(rt_mutex_lock); + */ + int __sched rt_mutex_lock_interruptible(struct rt_mutex *lock) + { +- int ret; +- +- might_sleep(); +- +- mutex_acquire(&lock->dep_map, 0, 0, _RET_IP_); +- ret = rt_mutex_fastlock(lock, TASK_INTERRUPTIBLE, rt_mutex_slowlock); +- if (ret) +- mutex_release(&lock->dep_map, 1, _RET_IP_); +- +- return ret; ++ return rt_mutex_lock_state(lock, TASK_INTERRUPTIBLE); + } + EXPORT_SYMBOL_GPL(rt_mutex_lock_interruptible); + +@@ -1556,13 +1567,10 @@ int __sched __rt_mutex_futex_trylock(str + * Returns: + * 0 on success + * -EINTR when interrupted by a signal +- * -EDEADLK when the lock would deadlock (when deadlock detection is on) + */ + int __sched rt_mutex_lock_killable(struct rt_mutex *lock) + { +- might_sleep(); +- +- return rt_mutex_fastlock(lock, TASK_KILLABLE, rt_mutex_slowlock); ++ return rt_mutex_lock_state(lock, TASK_KILLABLE); + } + EXPORT_SYMBOL_GPL(rt_mutex_lock_killable); + +@@ -1597,6 +1605,18 @@ rt_mutex_timed_lock(struct rt_mutex *loc + } + EXPORT_SYMBOL_GPL(rt_mutex_timed_lock); + ++int __sched __rt_mutex_trylock(struct rt_mutex *lock) ++{ ++#ifdef CONFIG_PREEMPT_RT_FULL ++ if (WARN_ON_ONCE(in_irq() || in_nmi())) ++#else ++ if (WARN_ON_ONCE(in_irq() || in_nmi() || in_serving_softirq())) ++#endif ++ return 0; ++ ++ return rt_mutex_fasttrylock(lock, rt_mutex_slowtrylock); ++} ++ + /** + * rt_mutex_trylock - try to lock a rt_mutex + * +@@ -1612,14 +1632,7 @@ int __sched rt_mutex_trylock(struct rt_m + { + int ret; + +-#ifdef CONFIG_PREEMPT_RT_FULL +- if (WARN_ON_ONCE(in_irq() || in_nmi())) +-#else +- if (WARN_ON_ONCE(in_irq() || in_nmi() || in_serving_softirq())) +-#endif +- return 0; +- +- ret = rt_mutex_fasttrylock(lock, rt_mutex_slowtrylock); ++ ret = __rt_mutex_trylock(lock); + if (ret) + mutex_acquire(&lock->dep_map, 0, 1, _RET_IP_); + +@@ -1627,6 +1640,11 @@ int __sched rt_mutex_trylock(struct rt_m + } + EXPORT_SYMBOL_GPL(rt_mutex_trylock); + ++void __sched __rt_mutex_unlock(struct rt_mutex *lock) ++{ ++ rt_mutex_fastunlock(lock, rt_mutex_slowunlock); ++} ++ + /** + * rt_mutex_unlock - unlock a rt_mutex + * +--- a/kernel/locking/rtmutex_common.h ++++ b/kernel/locking/rtmutex_common.h +@@ -160,6 +160,9 @@ extern bool __rt_mutex_futex_unlock(stru + extern void rt_mutex_postunlock(struct wake_q_head *wake_q); + /* RW semaphore special interface */ + ++extern int __rt_mutex_lock_state(struct rt_mutex *lock, int state); ++extern int __rt_mutex_trylock(struct rt_mutex *lock); ++extern void __rt_mutex_unlock(struct rt_mutex *lock); + int __sched rt_mutex_slowlock_locked(struct rt_mutex *lock, int state, + struct hrtimer_sleeper *timeout, + enum rtmutex_chainwalk chwalk, diff --git a/patches/features/all/rt/rtmutex-futex-prepare-rt.patch b/patches/features/all/rt/rtmutex-futex-prepare-rt.patch new file mode 100644 index 00000000000..c86dad0ecec --- /dev/null +++ b/patches/features/all/rt/rtmutex-futex-prepare-rt.patch @@ -0,0 +1,245 @@ +Subject: rtmutex: Handle the various new futex race conditions +From: Thomas Gleixner +Date: Fri, 10 Jun 2011 11:04:15 +0200 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +RT opens a few new interesting race conditions in the rtmutex/futex +combo due to futex hash bucket lock being a 'sleeping' spinlock and +therefor not disabling preemption. + +Signed-off-by: Thomas Gleixner +--- + kernel/futex.c | 77 ++++++++++++++++++++++++++++++++-------- + kernel/locking/rtmutex.c | 36 +++++++++++++++--- + kernel/locking/rtmutex_common.h | 2 + + 3 files changed, 94 insertions(+), 21 deletions(-) + +--- a/kernel/futex.c ++++ b/kernel/futex.c +@@ -2104,6 +2104,16 @@ static int futex_requeue(u32 __user *uad + requeue_pi_wake_futex(this, &key2, hb2); + drop_count++; + continue; ++ } else if (ret == -EAGAIN) { ++ /* ++ * Waiter was woken by timeout or ++ * signal and has set pi_blocked_on to ++ * PI_WAKEUP_INPROGRESS before we ++ * tried to enqueue it on the rtmutex. ++ */ ++ this->pi_state = NULL; ++ put_pi_state(pi_state); ++ continue; + } else if (ret) { + /* + * rt_mutex_start_proxy_lock() detected a +@@ -3144,7 +3154,7 @@ static int futex_wait_requeue_pi(u32 __u + struct hrtimer_sleeper timeout, *to = NULL; + struct futex_pi_state *pi_state = NULL; + struct rt_mutex_waiter rt_waiter; +- struct futex_hash_bucket *hb; ++ struct futex_hash_bucket *hb, *hb2; + union futex_key key2 = FUTEX_KEY_INIT; + struct futex_q q = futex_q_init; + int res, ret; +@@ -3202,20 +3212,55 @@ static int futex_wait_requeue_pi(u32 __u + /* Queue the futex_q, drop the hb lock, wait for wakeup. */ + futex_wait_queue_me(hb, &q, to); + +- spin_lock(&hb->lock); +- ret = handle_early_requeue_pi_wakeup(hb, &q, &key2, to); +- spin_unlock(&hb->lock); +- if (ret) +- goto out_put_keys; ++ /* ++ * On RT we must avoid races with requeue and trying to block ++ * on two mutexes (hb->lock and uaddr2's rtmutex) by ++ * serializing access to pi_blocked_on with pi_lock. ++ */ ++ raw_spin_lock_irq(¤t->pi_lock); ++ if (current->pi_blocked_on) { ++ /* ++ * We have been requeued or are in the process of ++ * being requeued. ++ */ ++ raw_spin_unlock_irq(¤t->pi_lock); ++ } else { ++ /* ++ * Setting pi_blocked_on to PI_WAKEUP_INPROGRESS ++ * prevents a concurrent requeue from moving us to the ++ * uaddr2 rtmutex. After that we can safely acquire ++ * (and possibly block on) hb->lock. ++ */ ++ current->pi_blocked_on = PI_WAKEUP_INPROGRESS; ++ raw_spin_unlock_irq(¤t->pi_lock); ++ ++ spin_lock(&hb->lock); ++ ++ /* ++ * Clean up pi_blocked_on. We might leak it otherwise ++ * when we succeeded with the hb->lock in the fast ++ * path. ++ */ ++ raw_spin_lock_irq(¤t->pi_lock); ++ current->pi_blocked_on = NULL; ++ raw_spin_unlock_irq(¤t->pi_lock); ++ ++ ret = handle_early_requeue_pi_wakeup(hb, &q, &key2, to); ++ spin_unlock(&hb->lock); ++ if (ret) ++ goto out_put_keys; ++ } + + /* +- * In order for us to be here, we know our q.key == key2, and since +- * we took the hb->lock above, we also know that futex_requeue() has +- * completed and we no longer have to concern ourselves with a wakeup +- * race with the atomic proxy lock acquisition by the requeue code. The +- * futex_requeue dropped our key1 reference and incremented our key2 +- * reference count. ++ * In order to be here, we have either been requeued, are in ++ * the process of being requeued, or requeue successfully ++ * acquired uaddr2 on our behalf. If pi_blocked_on was ++ * non-null above, we may be racing with a requeue. Do not ++ * rely on q->lock_ptr to be hb2->lock until after blocking on ++ * hb->lock or hb2->lock. The futex_requeue dropped our key1 ++ * reference and incremented our key2 reference count. + */ ++ hb2 = hash_futex(&key2); + + /* Check if the requeue code acquired the second futex for us. */ + if (!q.rt_waiter) { +@@ -3224,7 +3269,8 @@ static int futex_wait_requeue_pi(u32 __u + * did a lock-steal - fix up the PI-state in that case. + */ + if (q.pi_state && (q.pi_state->owner != current)) { +- spin_lock(q.lock_ptr); ++ spin_lock(&hb2->lock); ++ BUG_ON(&hb2->lock != q.lock_ptr); + ret = fixup_pi_state_owner(uaddr2, &q, current); + if (ret && rt_mutex_owner(&q.pi_state->pi_mutex) == current) { + pi_state = q.pi_state; +@@ -3235,7 +3281,7 @@ static int futex_wait_requeue_pi(u32 __u + * the requeue_pi() code acquired for us. + */ + put_pi_state(q.pi_state); +- spin_unlock(q.lock_ptr); ++ spin_unlock(&hb2->lock); + } + } else { + struct rt_mutex *pi_mutex; +@@ -3249,7 +3295,8 @@ static int futex_wait_requeue_pi(u32 __u + pi_mutex = &q.pi_state->pi_mutex; + ret = rt_mutex_wait_proxy_lock(pi_mutex, to, &rt_waiter); + +- spin_lock(q.lock_ptr); ++ spin_lock(&hb2->lock); ++ BUG_ON(&hb2->lock != q.lock_ptr); + if (ret && !rt_mutex_cleanup_proxy_lock(pi_mutex, &rt_waiter)) + ret = 0; + +--- a/kernel/locking/rtmutex.c ++++ b/kernel/locking/rtmutex.c +@@ -135,6 +135,11 @@ static void fixup_rt_mutex_waiters(struc + WRITE_ONCE(*p, owner & ~RT_MUTEX_HAS_WAITERS); + } + ++static int rt_mutex_real_waiter(struct rt_mutex_waiter *waiter) ++{ ++ return waiter && waiter != PI_WAKEUP_INPROGRESS; ++} ++ + /* + * We can speed up the acquire/release, if there's no debugging state to be + * set up. +@@ -379,7 +384,8 @@ int max_lock_depth = 1024; + + static inline struct rt_mutex *task_blocked_on_lock(struct task_struct *p) + { +- return p->pi_blocked_on ? p->pi_blocked_on->lock : NULL; ++ return rt_mutex_real_waiter(p->pi_blocked_on) ? ++ p->pi_blocked_on->lock : NULL; + } + + /* +@@ -515,7 +521,7 @@ static int rt_mutex_adjust_prio_chain(st + * reached or the state of the chain has changed while we + * dropped the locks. + */ +- if (!waiter) ++ if (!rt_mutex_real_waiter(waiter)) + goto out_unlock_pi; + + /* +@@ -951,6 +957,22 @@ static int task_blocks_on_rt_mutex(struc + return -EDEADLK; + + raw_spin_lock(&task->pi_lock); ++ /* ++ * In the case of futex requeue PI, this will be a proxy ++ * lock. The task will wake unaware that it is enqueueed on ++ * this lock. Avoid blocking on two locks and corrupting ++ * pi_blocked_on via the PI_WAKEUP_INPROGRESS ++ * flag. futex_wait_requeue_pi() sets this when it wakes up ++ * before requeue (due to a signal or timeout). Do not enqueue ++ * the task if PI_WAKEUP_INPROGRESS is set. ++ */ ++ if (task != current && task->pi_blocked_on == PI_WAKEUP_INPROGRESS) { ++ raw_spin_unlock(&task->pi_lock); ++ return -EAGAIN; ++ } ++ ++ BUG_ON(rt_mutex_real_waiter(task->pi_blocked_on)); ++ + waiter->task = task; + waiter->lock = lock; + waiter->prio = task->prio; +@@ -974,7 +996,7 @@ static int task_blocks_on_rt_mutex(struc + rt_mutex_enqueue_pi(owner, waiter); + + rt_mutex_adjust_prio(owner); +- if (owner->pi_blocked_on) ++ if (rt_mutex_real_waiter(owner->pi_blocked_on)) + chain_walk = 1; + } else if (rt_mutex_cond_detect_deadlock(waiter, chwalk)) { + chain_walk = 1; +@@ -1070,7 +1092,7 @@ static void remove_waiter(struct rt_mute + { + bool is_top_waiter = (waiter == rt_mutex_top_waiter(lock)); + struct task_struct *owner = rt_mutex_owner(lock); +- struct rt_mutex *next_lock; ++ struct rt_mutex *next_lock = NULL; + + lockdep_assert_held(&lock->wait_lock); + +@@ -1096,7 +1118,8 @@ static void remove_waiter(struct rt_mute + rt_mutex_adjust_prio(owner); + + /* Store the lock on which owner is blocked or NULL */ +- next_lock = task_blocked_on_lock(owner); ++ if (rt_mutex_real_waiter(owner->pi_blocked_on)) ++ next_lock = task_blocked_on_lock(owner); + + raw_spin_unlock(&owner->pi_lock); + +@@ -1132,7 +1155,8 @@ void rt_mutex_adjust_pi(struct task_stru + raw_spin_lock_irqsave(&task->pi_lock, flags); + + waiter = task->pi_blocked_on; +- if (!waiter || rt_mutex_waiter_equal(waiter, task_to_waiter(task))) { ++ if (!rt_mutex_real_waiter(waiter) || ++ rt_mutex_waiter_equal(waiter, task_to_waiter(task))) { + raw_spin_unlock_irqrestore(&task->pi_lock, flags); + return; + } +--- a/kernel/locking/rtmutex_common.h ++++ b/kernel/locking/rtmutex_common.h +@@ -129,6 +129,8 @@ enum rtmutex_chainwalk { + /* + * PI-futex support (proxy locking functions, etc.): + */ ++#define PI_WAKEUP_INPROGRESS ((struct rt_mutex_waiter *) 1) ++ + extern struct task_struct *rt_mutex_next_owner(struct rt_mutex *lock); + extern void rt_mutex_init_proxy_locked(struct rt_mutex *lock, + struct task_struct *proxy_owner); diff --git a/patches/features/all/rt/rtmutex-lock-killable.patch b/patches/features/all/rt/rtmutex-lock-killable.patch new file mode 100644 index 00000000000..6e7c389b89f --- /dev/null +++ b/patches/features/all/rt/rtmutex-lock-killable.patch @@ -0,0 +1,52 @@ +Subject: rtmutex: Add rtmutex_lock_killable() +From: Thomas Gleixner +Date: Thu, 09 Jun 2011 11:43:52 +0200 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Add "killable" type to rtmutex. We need this since rtmutex are used as +"normal" mutexes which do use this type. + +Signed-off-by: Thomas Gleixner +--- + include/linux/rtmutex.h | 1 + + kernel/locking/rtmutex.c | 19 +++++++++++++++++++ + 2 files changed, 20 insertions(+) + +--- a/include/linux/rtmutex.h ++++ b/include/linux/rtmutex.h +@@ -108,6 +108,7 @@ extern void rt_mutex_destroy(struct rt_m + + extern void rt_mutex_lock(struct rt_mutex *lock); + extern int rt_mutex_lock_interruptible(struct rt_mutex *lock); ++extern int rt_mutex_lock_killable(struct rt_mutex *lock); + extern int rt_mutex_timed_lock(struct rt_mutex *lock, + struct hrtimer_sleeper *timeout); + +--- a/kernel/locking/rtmutex.c ++++ b/kernel/locking/rtmutex.c +@@ -1543,6 +1543,25 @@ int __sched __rt_mutex_futex_trylock(str + } + + /** ++ * rt_mutex_lock_killable - lock a rt_mutex killable ++ * ++ * @lock: the rt_mutex to be locked ++ * @detect_deadlock: deadlock detection on/off ++ * ++ * Returns: ++ * 0 on success ++ * -EINTR when interrupted by a signal ++ * -EDEADLK when the lock would deadlock (when deadlock detection is on) ++ */ ++int __sched rt_mutex_lock_killable(struct rt_mutex *lock) ++{ ++ might_sleep(); ++ ++ return rt_mutex_fastlock(lock, TASK_KILLABLE, rt_mutex_slowlock); ++} ++EXPORT_SYMBOL_GPL(rt_mutex_lock_killable); ++ ++/** + * rt_mutex_timed_lock - lock a rt_mutex interruptible + * the timeout structure is provided + * by the caller diff --git a/patches/features/all/rt/rtmutex-trylock-is-okay-on-RT.patch b/patches/features/all/rt/rtmutex-trylock-is-okay-on-RT.patch new file mode 100644 index 00000000000..16dbacf2dd5 --- /dev/null +++ b/patches/features/all/rt/rtmutex-trylock-is-okay-on-RT.patch @@ -0,0 +1,28 @@ +From: Sebastian Andrzej Siewior +Date: Wed 02 Dec 2015 11:34:07 +0100 +Subject: rtmutex: trylock is okay on -RT +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +non-RT kernel could deadlock on rt_mutex_trylock() in softirq context. On +-RT we don't run softirqs in IRQ context but in thread context so it is +not a issue here. + +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/locking/rtmutex.c | 4 ++++ + 1 file changed, 4 insertions(+) + +--- a/kernel/locking/rtmutex.c ++++ b/kernel/locking/rtmutex.c +@@ -1563,7 +1563,11 @@ int __sched rt_mutex_trylock(struct rt_m + { + int ret; + ++#ifdef CONFIG_PREEMPT_RT_FULL ++ if (WARN_ON_ONCE(in_irq() || in_nmi())) ++#else + if (WARN_ON_ONCE(in_irq() || in_nmi() || in_serving_softirq())) ++#endif + return 0; + + ret = rt_mutex_fasttrylock(lock, rt_mutex_slowtrylock); diff --git a/patches/features/all/rt/rtmutex-wire-up-RT-s-locking.patch b/patches/features/all/rt/rtmutex-wire-up-RT-s-locking.patch new file mode 100644 index 00000000000..28e214244ae --- /dev/null +++ b/patches/features/all/rt/rtmutex-wire-up-RT-s-locking.patch @@ -0,0 +1,249 @@ +From: Thomas Gleixner +Date: Thu, 12 Oct 2017 17:31:14 +0200 +Subject: rtmutex: wire up RT's locking +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Signed-off-by: Thomas Gleixner +Signed-off-by: Sebastian Andrzej Siewior +--- + include/linux/mutex.h | 20 +++++++++++++------- + include/linux/rwsem.h | 11 +++++++++++ + include/linux/spinlock.h | 12 +++++++++++- + include/linux/spinlock_api_smp.h | 4 +++- + include/linux/spinlock_types.h | 11 ++++++++--- + kernel/locking/Makefile | 9 ++++++++- + kernel/locking/spinlock.c | 7 +++++++ + kernel/locking/spinlock_debug.c | 5 +++++ + 8 files changed, 66 insertions(+), 13 deletions(-) + +--- a/include/linux/mutex.h ++++ b/include/linux/mutex.h +@@ -23,6 +23,17 @@ + + struct ww_acquire_ctx; + ++#ifdef CONFIG_DEBUG_LOCK_ALLOC ++# define __DEP_MAP_MUTEX_INITIALIZER(lockname) \ ++ , .dep_map = { .name = #lockname } ++#else ++# define __DEP_MAP_MUTEX_INITIALIZER(lockname) ++#endif ++ ++#ifdef CONFIG_PREEMPT_RT_FULL ++# include ++#else ++ + /* + * Simple, straightforward mutexes with strict semantics: + * +@@ -114,13 +125,6 @@ do { \ + __mutex_init((mutex), #mutex, &__key); \ + } while (0) + +-#ifdef CONFIG_DEBUG_LOCK_ALLOC +-# define __DEP_MAP_MUTEX_INITIALIZER(lockname) \ +- , .dep_map = { .name = #lockname } +-#else +-# define __DEP_MAP_MUTEX_INITIALIZER(lockname) +-#endif +- + #define __MUTEX_INITIALIZER(lockname) \ + { .owner = ATOMIC_LONG_INIT(0) \ + , .wait_lock = __SPIN_LOCK_UNLOCKED(lockname.wait_lock) \ +@@ -228,4 +232,6 @@ mutex_trylock_recursive(struct mutex *lo + return mutex_trylock(lock); + } + ++#endif /* !PREEMPT_RT_FULL */ ++ + #endif /* __LINUX_MUTEX_H */ +--- a/include/linux/rwsem.h ++++ b/include/linux/rwsem.h +@@ -20,6 +20,10 @@ + #include + #endif + ++#ifdef CONFIG_PREEMPT_RT_FULL ++#include ++#else /* PREEMPT_RT_FULL */ ++ + struct rw_semaphore; + + #ifdef CONFIG_RWSEM_GENERIC_SPINLOCK +@@ -108,6 +112,13 @@ static inline int rwsem_is_contended(str + return !list_empty(&sem->wait_list); + } + ++#endif /* !PREEMPT_RT_FULL */ ++ ++/* ++ * The functions below are the same for all rwsem implementations including ++ * the RT specific variant. ++ */ ++ + /* + * lock for reading + */ +--- a/include/linux/spinlock.h ++++ b/include/linux/spinlock.h +@@ -286,7 +286,11 @@ static inline void do_raw_spin_unlock(ra + #define raw_spin_can_lock(lock) (!raw_spin_is_locked(lock)) + + /* Include rwlock functions */ +-#include ++#ifdef CONFIG_PREEMPT_RT_FULL ++# include ++#else ++# include ++#endif + + /* + * Pull the _spin_*()/_read_*()/_write_*() functions/declarations: +@@ -297,6 +301,10 @@ static inline void do_raw_spin_unlock(ra + # include + #endif + ++#ifdef CONFIG_PREEMPT_RT_FULL ++# include ++#else /* PREEMPT_RT_FULL */ ++ + /* + * Map the spin_lock functions to the raw variants for PREEMPT_RT=n + */ +@@ -421,4 +429,6 @@ extern int _atomic_dec_and_lock(atomic_t + #define atomic_dec_and_lock(atomic, lock) \ + __cond_lock(lock, _atomic_dec_and_lock(atomic, lock)) + ++#endif /* !PREEMPT_RT_FULL */ ++ + #endif /* __LINUX_SPINLOCK_H */ +--- a/include/linux/spinlock_api_smp.h ++++ b/include/linux/spinlock_api_smp.h +@@ -187,6 +187,8 @@ static inline int __raw_spin_trylock_bh( + return 0; + } + +-#include ++#ifndef CONFIG_PREEMPT_RT_FULL ++# include ++#endif + + #endif /* __LINUX_SPINLOCK_API_SMP_H */ +--- a/include/linux/spinlock_types.h ++++ b/include/linux/spinlock_types.h +@@ -11,8 +11,13 @@ + + #include + +-#include +- +-#include ++#ifndef CONFIG_PREEMPT_RT_FULL ++# include ++# include ++#else ++# include ++# include ++# include ++#endif + + #endif /* __LINUX_SPINLOCK_TYPES_H */ +--- a/kernel/locking/Makefile ++++ b/kernel/locking/Makefile +@@ -3,7 +3,7 @@ + # and is generally not a function of system call inputs. + KCOV_INSTRUMENT := n + +-obj-y += mutex.o semaphore.o rwsem.o percpu-rwsem.o ++obj-y += semaphore.o percpu-rwsem.o + + ifdef CONFIG_FUNCTION_TRACER + CFLAGS_REMOVE_lockdep.o = $(CC_FLAGS_FTRACE) +@@ -12,7 +12,11 @@ CFLAGS_REMOVE_mutex-debug.o = $(CC_FLAGS + CFLAGS_REMOVE_rtmutex-debug.o = $(CC_FLAGS_FTRACE) + endif + ++ifneq ($(CONFIG_PREEMPT_RT_FULL),y) ++obj-y += mutex.o + obj-$(CONFIG_DEBUG_MUTEXES) += mutex-debug.o ++endif ++obj-y += rwsem.o + obj-$(CONFIG_LOCKDEP) += lockdep.o + ifeq ($(CONFIG_PROC_FS),y) + obj-$(CONFIG_LOCKDEP) += lockdep_proc.o +@@ -25,8 +29,11 @@ obj-$(CONFIG_RT_MUTEXES) += rtmutex.o + obj-$(CONFIG_DEBUG_RT_MUTEXES) += rtmutex-debug.o + obj-$(CONFIG_DEBUG_SPINLOCK) += spinlock.o + obj-$(CONFIG_DEBUG_SPINLOCK) += spinlock_debug.o ++ifneq ($(CONFIG_PREEMPT_RT_FULL),y) + obj-$(CONFIG_RWSEM_GENERIC_SPINLOCK) += rwsem-spinlock.o + obj-$(CONFIG_RWSEM_XCHGADD_ALGORITHM) += rwsem-xadd.o ++endif ++obj-$(CONFIG_PREEMPT_RT_FULL) += mutex-rt.o rwsem-rt.o rwlock-rt.o + obj-$(CONFIG_QUEUED_RWLOCKS) += qrwlock.o + obj-$(CONFIG_LOCK_TORTURE_TEST) += locktorture.o + obj-$(CONFIG_WW_MUTEX_SELFTEST) += test-ww_mutex.o +--- a/kernel/locking/spinlock.c ++++ b/kernel/locking/spinlock.c +@@ -125,8 +125,11 @@ void __lockfunc __raw_##op##_lock_bh(loc + * __[spin|read|write]_lock_bh() + */ + BUILD_LOCK_OPS(spin, raw_spinlock); ++ ++#ifndef CONFIG_PREEMPT_RT_FULL + BUILD_LOCK_OPS(read, rwlock); + BUILD_LOCK_OPS(write, rwlock); ++#endif + + #endif + +@@ -210,6 +213,8 @@ void __lockfunc _raw_spin_unlock_bh(raw_ + EXPORT_SYMBOL(_raw_spin_unlock_bh); + #endif + ++#ifndef CONFIG_PREEMPT_RT_FULL ++ + #ifndef CONFIG_INLINE_READ_TRYLOCK + int __lockfunc _raw_read_trylock(rwlock_t *lock) + { +@@ -354,6 +359,8 @@ void __lockfunc _raw_write_unlock_bh(rwl + EXPORT_SYMBOL(_raw_write_unlock_bh); + #endif + ++#endif /* !PREEMPT_RT_FULL */ ++ + #ifdef CONFIG_DEBUG_LOCK_ALLOC + + void __lockfunc _raw_spin_lock_nested(raw_spinlock_t *lock, int subclass) +--- a/kernel/locking/spinlock_debug.c ++++ b/kernel/locking/spinlock_debug.c +@@ -31,6 +31,7 @@ void __raw_spin_lock_init(raw_spinlock_t + + EXPORT_SYMBOL(__raw_spin_lock_init); + ++#ifndef CONFIG_PREEMPT_RT_FULL + void __rwlock_init(rwlock_t *lock, const char *name, + struct lock_class_key *key) + { +@@ -48,6 +49,7 @@ void __rwlock_init(rwlock_t *lock, const + } + + EXPORT_SYMBOL(__rwlock_init); ++#endif + + static void spin_dump(raw_spinlock_t *lock, const char *msg) + { +@@ -135,6 +137,7 @@ void do_raw_spin_unlock(raw_spinlock_t * + arch_spin_unlock(&lock->raw_lock); + } + ++#ifndef CONFIG_PREEMPT_RT_FULL + static void rwlock_bug(rwlock_t *lock, const char *msg) + { + if (!debug_locks_off()) +@@ -224,3 +227,5 @@ void do_raw_write_unlock(rwlock_t *lock) + debug_write_unlock(lock); + arch_write_unlock(&lock->raw_lock); + } ++ ++#endif diff --git a/patches/features/all/rt/rtmutex_dont_include_rcu.patch b/patches/features/all/rt/rtmutex_dont_include_rcu.patch new file mode 100644 index 00000000000..df4a5ac17a7 --- /dev/null +++ b/patches/features/all/rt/rtmutex_dont_include_rcu.patch @@ -0,0 +1,159 @@ +From: Sebastian Andrzej Siewior +Subject: rbtree: don't include the rcu header +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +The RCU header pulls in spinlock.h and fails due not yet defined types: + +|In file included from include/linux/spinlock.h:275:0, +| from include/linux/rcupdate.h:38, +| from include/linux/rbtree.h:34, +| from include/linux/rtmutex.h:17, +| from include/linux/spinlock_types.h:18, +| from kernel/bounds.c:13: +|include/linux/rwlock_rt.h:16:38: error: unknown type name ‘rwlock_t’ +| extern void __lockfunc rt_write_lock(rwlock_t *rwlock); +| ^ + +This patch moves the required RCU function from the rcupdate.h header file into +a new header file which can be included by both users. + +Signed-off-by: Sebastian Andrzej Siewior +--- + include/linux/rbtree.h | 2 - + include/linux/rcu_assign_pointer.h | 54 +++++++++++++++++++++++++++++++++++++ + include/linux/rcupdate.h | 49 --------------------------------- + 3 files changed, 56 insertions(+), 49 deletions(-) + +--- a/include/linux/rbtree.h ++++ b/include/linux/rbtree.h +@@ -31,7 +31,7 @@ + + #include + #include +-#include ++#include + + struct rb_node { + unsigned long __rb_parent_color; +--- /dev/null ++++ b/include/linux/rcu_assign_pointer.h +@@ -0,0 +1,54 @@ ++#ifndef __LINUX_RCU_ASSIGN_POINTER_H__ ++#define __LINUX_RCU_ASSIGN_POINTER_H__ ++#include ++#include ++ ++/** ++ * RCU_INITIALIZER() - statically initialize an RCU-protected global variable ++ * @v: The value to statically initialize with. ++ */ ++#define RCU_INITIALIZER(v) (typeof(*(v)) __force __rcu *)(v) ++ ++/** ++ * rcu_assign_pointer() - assign to RCU-protected pointer ++ * @p: pointer to assign to ++ * @v: value to assign (publish) ++ * ++ * Assigns the specified value to the specified RCU-protected ++ * pointer, ensuring that any concurrent RCU readers will see ++ * any prior initialization. ++ * ++ * Inserts memory barriers on architectures that require them ++ * (which is most of them), and also prevents the compiler from ++ * reordering the code that initializes the structure after the pointer ++ * assignment. More importantly, this call documents which pointers ++ * will be dereferenced by RCU read-side code. ++ * ++ * In some special cases, you may use RCU_INIT_POINTER() instead ++ * of rcu_assign_pointer(). RCU_INIT_POINTER() is a bit faster due ++ * to the fact that it does not constrain either the CPU or the compiler. ++ * That said, using RCU_INIT_POINTER() when you should have used ++ * rcu_assign_pointer() is a very bad thing that results in ++ * impossible-to-diagnose memory corruption. So please be careful. ++ * See the RCU_INIT_POINTER() comment header for details. ++ * ++ * Note that rcu_assign_pointer() evaluates each of its arguments only ++ * once, appearances notwithstanding. One of the "extra" evaluations ++ * is in typeof() and the other visible only to sparse (__CHECKER__), ++ * neither of which actually execute the argument. As with most cpp ++ * macros, this execute-arguments-only-once property is important, so ++ * please be careful when making changes to rcu_assign_pointer() and the ++ * other macros that it invokes. ++ */ ++#define rcu_assign_pointer(p, v) \ ++({ \ ++ uintptr_t _r_a_p__v = (uintptr_t)(v); \ ++ \ ++ if (__builtin_constant_p(v) && (_r_a_p__v) == (uintptr_t)NULL) \ ++ WRITE_ONCE((p), (typeof(p))(_r_a_p__v)); \ ++ else \ ++ smp_store_release(&p, RCU_INITIALIZER((typeof(p))_r_a_p__v)); \ ++ _r_a_p__v; \ ++}) ++ ++#endif +--- a/include/linux/rcupdate.h ++++ b/include/linux/rcupdate.h +@@ -42,6 +42,7 @@ + #include + #include + #include ++#include + + #define ULONG_CMP_GE(a, b) (ULONG_MAX / 2 >= (a) - (b)) + #define ULONG_CMP_LT(a, b) (ULONG_MAX / 2 < (a) - (b)) +@@ -372,54 +373,6 @@ static inline void rcu_preempt_sleep_che + }) + + /** +- * RCU_INITIALIZER() - statically initialize an RCU-protected global variable +- * @v: The value to statically initialize with. +- */ +-#define RCU_INITIALIZER(v) (typeof(*(v)) __force __rcu *)(v) +- +-/** +- * rcu_assign_pointer() - assign to RCU-protected pointer +- * @p: pointer to assign to +- * @v: value to assign (publish) +- * +- * Assigns the specified value to the specified RCU-protected +- * pointer, ensuring that any concurrent RCU readers will see +- * any prior initialization. +- * +- * Inserts memory barriers on architectures that require them +- * (which is most of them), and also prevents the compiler from +- * reordering the code that initializes the structure after the pointer +- * assignment. More importantly, this call documents which pointers +- * will be dereferenced by RCU read-side code. +- * +- * In some special cases, you may use RCU_INIT_POINTER() instead +- * of rcu_assign_pointer(). RCU_INIT_POINTER() is a bit faster due +- * to the fact that it does not constrain either the CPU or the compiler. +- * That said, using RCU_INIT_POINTER() when you should have used +- * rcu_assign_pointer() is a very bad thing that results in +- * impossible-to-diagnose memory corruption. So please be careful. +- * See the RCU_INIT_POINTER() comment header for details. +- * +- * Note that rcu_assign_pointer() evaluates each of its arguments only +- * once, appearances notwithstanding. One of the "extra" evaluations +- * is in typeof() and the other visible only to sparse (__CHECKER__), +- * neither of which actually execute the argument. As with most cpp +- * macros, this execute-arguments-only-once property is important, so +- * please be careful when making changes to rcu_assign_pointer() and the +- * other macros that it invokes. +- */ +-#define rcu_assign_pointer(p, v) \ +-({ \ +- uintptr_t _r_a_p__v = (uintptr_t)(v); \ +- \ +- if (__builtin_constant_p(v) && (_r_a_p__v) == (uintptr_t)NULL) \ +- WRITE_ONCE((p), (typeof(p))(_r_a_p__v)); \ +- else \ +- smp_store_release(&p, RCU_INITIALIZER((typeof(p))_r_a_p__v)); \ +- _r_a_p__v; \ +-}) +- +-/** + * rcu_swap_protected() - swap an RCU and a regular pointer + * @rcu_ptr: RCU pointer + * @ptr: regular pointer diff --git a/patches/features/all/rt/rxrpc-remove-unused-static-variables.patch b/patches/features/all/rt/rxrpc-remove-unused-static-variables.patch new file mode 100644 index 00000000000..33cec82bcf6 --- /dev/null +++ b/patches/features/all/rt/rxrpc-remove-unused-static-variables.patch @@ -0,0 +1,27 @@ +From: Sebastian Andrzej Siewior +Date: Fri, 21 Oct 2016 10:54:50 +0200 +Subject: [PATCH] rxrpc: remove unused static variables +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +The rxrpc_security_methods and rxrpc_security_sem user has been removed +in 648af7fca159 ("rxrpc: Absorb the rxkad security module"). This was +noticed by kbuild test robot for the -RT tree but is also true for !RT. + +Reported-by: kbuild test robot +Signed-off-by: Sebastian Andrzej Siewior +--- + net/rxrpc/security.c | 3 --- + 1 file changed, 3 deletions(-) + +--- a/net/rxrpc/security.c ++++ b/net/rxrpc/security.c +@@ -19,9 +19,6 @@ + #include + #include "ar-internal.h" + +-static LIST_HEAD(rxrpc_security_methods); +-static DECLARE_RWSEM(rxrpc_security_sem); +- + static const struct rxrpc_security *rxrpc_security_types[] = { + [RXRPC_SECURITY_NONE] = &rxrpc_no_security, + #ifdef CONFIG_RXKAD diff --git a/patches/features/all/rt/sas-ata-isci-dont-t-disable-interrupts-in-qc_issue-h.patch b/patches/features/all/rt/sas-ata-isci-dont-t-disable-interrupts-in-qc_issue-h.patch new file mode 100644 index 00000000000..6a4eb778537 --- /dev/null +++ b/patches/features/all/rt/sas-ata-isci-dont-t-disable-interrupts-in-qc_issue-h.patch @@ -0,0 +1,79 @@ +From: Paul Gortmaker +Date: Sat, 14 Feb 2015 11:01:16 -0500 +Subject: sas-ata/isci: dont't disable interrupts in qc_issue handler +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +On 3.14-rt we see the following trace on Canoe Pass for +SCSI_ISCI "Intel(R) C600 Series Chipset SAS Controller" +when the sas qc_issue handler is run: + + BUG: sleeping function called from invalid context at kernel/locking/rtmutex.c:905 + in_atomic(): 0, irqs_disabled(): 1, pid: 432, name: udevd + CPU: 11 PID: 432 Comm: udevd Not tainted 3.14.28-rt22 #2 + Hardware name: Intel Corporation S2600CP/S2600CP, BIOS SE5C600.86B.02.01.0002.082220131453 08/22/2013 + ffff880fab500000 ffff880fa9f239c0 ffffffff81a2d273 0000000000000000 + ffff880fa9f239d8 ffffffff8107f023 ffff880faac23dc0 ffff880fa9f239f0 + ffffffff81a33cc0 ffff880faaeb1400 ffff880fa9f23a40 ffffffff815de891 + Call Trace: + [] dump_stack+0x4e/0x7a + [] __might_sleep+0xe3/0x160 + [] rt_spin_lock+0x20/0x50 + [] isci_task_execute_task+0x171/0x2f0 <----- + [] sas_ata_qc_issue+0x25b/0x2a0 + [] ata_qc_issue+0x1f3/0x370 + [] ? ata_scsi_invalid_field+0x40/0x40 + [] ata_scsi_translate+0xa5/0x1b0 + [] ata_sas_queuecmd+0x86/0x280 + [] sas_queuecommand+0x196/0x230 + [] ? get_parent_ip+0xd/0x50 + [] scsi_dispatch_cmd+0xb4/0x210 + [] scsi_request_fn+0x314/0x530 + +and gdb shows: + +(gdb) list * isci_task_execute_task+0x171 +0xffffffff815ddfb1 is in isci_task_execute_task (drivers/scsi/isci/task.c:138). +133 dev_dbg(&ihost->pdev->dev, "%s: num=%d\n", __func__, num); +134 +135 for_each_sas_task(num, task) { +136 enum sci_status status = SCI_FAILURE; +137 +138 spin_lock_irqsave(&ihost->scic_lock, flags); <----- +139 idev = isci_lookup_device(task->dev); +140 io_ready = isci_device_io_ready(idev, task); +141 tag = isci_alloc_tag(ihost); +142 spin_unlock_irqrestore(&ihost->scic_lock, flags); +(gdb) + +In addition to the scic_lock, the function also contains locking of +the task_state_lock -- which is clearly not a candidate for raw lock +conversion. As can be seen by the comment nearby, we really should +be running the qc_issue code with interrupts enabled anyway. + + +Signed-off-by: Paul Gortmaker +Signed-off-by: Sebastian Andrzej Siewior +--- + drivers/scsi/libsas/sas_ata.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/drivers/scsi/libsas/sas_ata.c ++++ b/drivers/scsi/libsas/sas_ata.c +@@ -190,7 +190,7 @@ static unsigned int sas_ata_qc_issue(str + /* TODO: audit callers to ensure they are ready for qc_issue to + * unconditionally re-enable interrupts + */ +- local_irq_save(flags); ++ local_irq_save_nort(flags); + spin_unlock(ap->lock); + + /* If the device fell off, no sense in issuing commands */ +@@ -252,7 +252,7 @@ static unsigned int sas_ata_qc_issue(str + + out: + spin_lock(ap->lock); +- local_irq_restore(flags); ++ local_irq_restore_nort(flags); + return ret; + } + diff --git a/patches/features/all/rt/sched-Prevent-task-state-corruption-by-spurious-lock.patch b/patches/features/all/rt/sched-Prevent-task-state-corruption-by-spurious-lock.patch new file mode 100644 index 00000000000..0f7d8ac49a3 --- /dev/null +++ b/patches/features/all/rt/sched-Prevent-task-state-corruption-by-spurious-lock.patch @@ -0,0 +1,78 @@ +From: Thomas Gleixner +Date: Tue, 6 Jun 2017 14:20:37 +0200 +Subject: sched: Prevent task state corruption by spurious lock wakeup +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Mathias and others reported GDB failures on RT. + +The following scenario leads to task state corruption: + +CPU0 CPU1 + +T1->state = TASK_XXX; +spin_lock(&lock) + rt_spin_lock_slowlock(&lock->rtmutex) + raw_spin_lock(&rtm->wait_lock); + T1->saved_state = current->state; + T1->state = TASK_UNINTERRUPTIBLE; + spin_unlock(&lock) + task_blocks_on_rt_mutex(rtm) rt_spin_lock_slowunlock(&lock->rtmutex) + queue_waiter(rtm) raw_spin_lock(&rtm->wait_lock); + pi_chain_walk(rtm) + raw_spin_unlock(&rtm->wait_lock); + wake_top_waiter(T1) + + raw_spin_lock(&rtm->wait_lock); + + for (;;) { + if (__try_to_take_rt_mutex()) <- Succeeds + break; + ... + } + + T1->state = T1->saved_state; + try_to_wake_up(T1) + ttwu_do_wakeup(T1) + T1->state = TASK_RUNNING; + +In most cases this is harmless because waiting for some event, which is the +usual reason for TASK_[UN]INTERRUPTIBLE has to be safe against other forms +of spurious wakeups anyway. + +But in case of TASK_TRACED this is actually fatal, because the task loses +the TASK_TRACED state. In consequence it fails to consume SIGSTOP which was +sent from the debugger and actually delivers SIGSTOP to the task which +breaks the ptrace mechanics and brings the debugger into an unexpected +state. + +The TASK_TRACED state should prevent getting there due to the state +matching logic in try_to_wake_up(). But that's not true because +wake_up_lock_sleeper() uses TASK_ALL as state mask. That's bogus because +lock sleepers always use TASK_UNINTERRUPTIBLE, so the wakeup should use +that as well. + +The cure is way simpler as figuring it out: + +Change the mask used in wake_up_lock_sleeper() from TASK_ALL to +TASK_UNINTERRUPTIBLE. + +Cc: stable-rt@vger.kernel.org +Reported-by: Mathias Koehrer +Reported-by: David Hauck +Signed-off-by: Thomas Gleixner +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/sched/core.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -2206,7 +2206,7 @@ EXPORT_SYMBOL(wake_up_process); + */ + int wake_up_lock_sleeper(struct task_struct *p) + { +- return try_to_wake_up(p, TASK_ALL, WF_LOCK_SLEEPER); ++ return try_to_wake_up(p, TASK_UNINTERRUPTIBLE, WF_LOCK_SLEEPER); + } + + int wake_up_state(struct task_struct *p, unsigned int state) diff --git a/patches/features/all/rt/sched-Remove-TASK_ALL.patch b/patches/features/all/rt/sched-Remove-TASK_ALL.patch new file mode 100644 index 00000000000..51571450f05 --- /dev/null +++ b/patches/features/all/rt/sched-Remove-TASK_ALL.patch @@ -0,0 +1,30 @@ +From: Peter Zijlstra +Date: Wed, 7 Jun 2017 10:12:45 +0200 +Subject: [PATCH] sched: Remove TASK_ALL +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +It's unused: + +$ git grep "\" | wc -l +1 + +And dangerous, kill the bugger. + +Cc: stable-rt@vger.kernel.org +Acked-by: Thomas Gleixner +Signed-off-by: Peter Zijlstra (Intel) +Signed-off-by: Sebastian Andrzej Siewior +--- + include/linux/sched.h | 1 - + 1 file changed, 1 deletion(-) + +--- a/include/linux/sched.h ++++ b/include/linux/sched.h +@@ -93,7 +93,6 @@ struct task_group; + + /* Convenience macros for the sake of wake_up(): */ + #define TASK_NORMAL (TASK_INTERRUPTIBLE | TASK_UNINTERRUPTIBLE) +-#define TASK_ALL (TASK_NORMAL | __TASK_STOPPED | __TASK_TRACED) + + /* get_task_state(): */ + #define TASK_REPORT (TASK_RUNNING | TASK_INTERRUPTIBLE | \ diff --git a/patches/features/all/rt/sched-delay-put-task.patch b/patches/features/all/rt/sched-delay-put-task.patch new file mode 100644 index 00000000000..b6bb9cd7042 --- /dev/null +++ b/patches/features/all/rt/sched-delay-put-task.patch @@ -0,0 +1,86 @@ +Subject: sched: Move task_struct cleanup to RCU +From: Thomas Gleixner +Date: Tue, 31 May 2011 16:59:16 +0200 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +__put_task_struct() does quite some expensive work. We don't want to +burden random tasks with that. + +Signed-off-by: Thomas Gleixner +--- + include/linux/sched.h | 3 +++ + include/linux/sched/task.h | 11 ++++++++++- + kernel/fork.c | 15 ++++++++++++++- + 3 files changed, 27 insertions(+), 2 deletions(-) + +--- a/include/linux/sched.h ++++ b/include/linux/sched.h +@@ -1093,6 +1093,9 @@ struct task_struct { + unsigned int sequential_io; + unsigned int sequential_io_avg; + #endif ++#ifdef CONFIG_PREEMPT_RT_BASE ++ struct rcu_head put_rcu; ++#endif + #ifdef CONFIG_DEBUG_ATOMIC_SLEEP + unsigned long task_state_change; + #endif +--- a/include/linux/sched/task.h ++++ b/include/linux/sched/task.h +@@ -88,6 +88,15 @@ extern void sched_exec(void); + + #define get_task_struct(tsk) do { atomic_inc(&(tsk)->usage); } while(0) + ++#ifdef CONFIG_PREEMPT_RT_BASE ++extern void __put_task_struct_cb(struct rcu_head *rhp); ++ ++static inline void put_task_struct(struct task_struct *t) ++{ ++ if (atomic_dec_and_test(&t->usage)) ++ call_rcu(&t->put_rcu, __put_task_struct_cb); ++} ++#else + extern void __put_task_struct(struct task_struct *t); + + static inline void put_task_struct(struct task_struct *t) +@@ -95,7 +104,7 @@ static inline void put_task_struct(struc + if (atomic_dec_and_test(&t->usage)) + __put_task_struct(t); + } +- ++#endif + struct task_struct *task_rcu_dereference(struct task_struct **ptask); + + #ifdef CONFIG_ARCH_WANTS_DYNAMIC_TASK_STRUCT +--- a/kernel/fork.c ++++ b/kernel/fork.c +@@ -408,7 +408,9 @@ static inline void put_signal_struct(str + if (atomic_dec_and_test(&sig->sigcnt)) + free_signal_struct(sig); + } +- ++#ifdef CONFIG_PREEMPT_RT_BASE ++static ++#endif + void __put_task_struct(struct task_struct *tsk) + { + WARN_ON(!tsk->exit_state); +@@ -425,7 +427,18 @@ void __put_task_struct(struct task_struc + if (!profile_handoff_task(tsk)) + free_task(tsk); + } ++#ifndef CONFIG_PREEMPT_RT_BASE + EXPORT_SYMBOL_GPL(__put_task_struct); ++#else ++void __put_task_struct_cb(struct rcu_head *rhp) ++{ ++ struct task_struct *tsk = container_of(rhp, struct task_struct, put_rcu); ++ ++ __put_task_struct(tsk); ++ ++} ++EXPORT_SYMBOL_GPL(__put_task_struct_cb); ++#endif + + void __init __weak arch_task_cache_init(void) { } + diff --git a/patches/features/all/rt/sched-disable-rt-group-sched-on-rt.patch b/patches/features/all/rt/sched-disable-rt-group-sched-on-rt.patch new file mode 100644 index 00000000000..c764a3dd17d --- /dev/null +++ b/patches/features/all/rt/sched-disable-rt-group-sched-on-rt.patch @@ -0,0 +1,29 @@ +Subject: sched: Disable CONFIG_RT_GROUP_SCHED on RT +From: Thomas Gleixner +Date: Mon, 18 Jul 2011 17:03:52 +0200 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Carsten reported problems when running: + + taskset 01 chrt -f 1 sleep 1 + +from within rc.local on a F15 machine. The task stays running and +never gets on the run queue because some of the run queues have +rt_throttled=1 which does not go away. Works nice from a ssh login +shell. Disabling CONFIG_RT_GROUP_SCHED solves that as well. + +Signed-off-by: Thomas Gleixner +--- + init/Kconfig | 1 + + 1 file changed, 1 insertion(+) + +--- a/init/Kconfig ++++ b/init/Kconfig +@@ -744,6 +744,7 @@ config CFS_BANDWIDTH + config RT_GROUP_SCHED + bool "Group scheduling for SCHED_RR/FIFO" + depends on CGROUP_SCHED ++ depends on !PREEMPT_RT_FULL + default n + help + This feature lets you explicitly allocate real CPU bandwidth diff --git a/patches/features/all/rt/sched-disable-ttwu-queue.patch b/patches/features/all/rt/sched-disable-ttwu-queue.patch new file mode 100644 index 00000000000..56885f678a8 --- /dev/null +++ b/patches/features/all/rt/sched-disable-ttwu-queue.patch @@ -0,0 +1,32 @@ +Subject: sched: Disable TTWU_QUEUE on RT +From: Thomas Gleixner +Date: Tue, 13 Sep 2011 16:42:35 +0200 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +The queued remote wakeup mechanism can introduce rather large +latencies if the number of migrated tasks is high. Disable it for RT. + +Signed-off-by: Thomas Gleixner +--- + kernel/sched/features.h | 5 +++++ + 1 file changed, 5 insertions(+) + +--- a/kernel/sched/features.h ++++ b/kernel/sched/features.h +@@ -46,11 +46,16 @@ SCHED_FEAT(LB_BIAS, true) + */ + SCHED_FEAT(NONTASK_CAPACITY, true) + ++#ifdef CONFIG_PREEMPT_RT_FULL ++SCHED_FEAT(TTWU_QUEUE, false) ++#else ++ + /* + * Queue remote wakeups on the target CPU and process them + * using the scheduler IPI. Reduces rq->lock contention/bounces. + */ + SCHED_FEAT(TTWU_QUEUE, true) ++#endif + + /* + * When doing wakeups, attempt to limit superfluous scans of the LLC domain. diff --git a/patches/features/all/rt/sched-limit-nr-migrate.patch b/patches/features/all/rt/sched-limit-nr-migrate.patch new file mode 100644 index 00000000000..77fe79041f2 --- /dev/null +++ b/patches/features/all/rt/sched-limit-nr-migrate.patch @@ -0,0 +1,27 @@ +Subject: sched: Limit the number of task migrations per batch +From: Thomas Gleixner +Date: Mon, 06 Jun 2011 12:12:51 +0200 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Put an upper limit on the number of tasks which are migrated per batch +to avoid large latencies. + +Signed-off-by: Thomas Gleixner +--- + kernel/sched/core.c | 4 ++++ + 1 file changed, 4 insertions(+) + +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -59,7 +59,11 @@ const_debug unsigned int sysctl_sched_fe + * Number of tasks to iterate in a single balance run. + * Limited because this is done with IRQs disabled. + */ ++#ifndef CONFIG_PREEMPT_RT_FULL + const_debug unsigned int sysctl_sched_nr_migrate = 32; ++#else ++const_debug unsigned int sysctl_sched_nr_migrate = 8; ++#endif + + /* + * period over which we average the RT time consumption, measured diff --git a/patches/features/all/rt/sched-might-sleep-do-not-account-rcu-depth.patch b/patches/features/all/rt/sched-might-sleep-do-not-account-rcu-depth.patch new file mode 100644 index 00000000000..1f3d44b06e4 --- /dev/null +++ b/patches/features/all/rt/sched-might-sleep-do-not-account-rcu-depth.patch @@ -0,0 +1,48 @@ +Subject: sched: Do not account rcu_preempt_depth on RT in might_sleep() +From: Thomas Gleixner +Date: Tue, 07 Jun 2011 09:19:06 +0200 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +RT changes the rcu_preempt_depth semantics, so we cannot check for it +in might_sleep(). + +Signed-off-by: Thomas Gleixner +--- + include/linux/rcupdate.h | 7 +++++++ + kernel/sched/core.c | 2 +- + 2 files changed, 8 insertions(+), 1 deletion(-) + +--- a/include/linux/rcupdate.h ++++ b/include/linux/rcupdate.h +@@ -74,6 +74,11 @@ void synchronize_rcu(void); + * types of kernel builds, the rcu_read_lock() nesting depth is unknowable. + */ + #define rcu_preempt_depth() (current->rcu_read_lock_nesting) ++#ifndef CONFIG_PREEMPT_RT_FULL ++#define sched_rcu_preempt_depth() rcu_preempt_depth() ++#else ++static inline int sched_rcu_preempt_depth(void) { return 0; } ++#endif + + #else /* #ifdef CONFIG_PREEMPT_RCU */ + +@@ -99,6 +104,8 @@ static inline int rcu_preempt_depth(void + return 0; + } + ++#define sched_rcu_preempt_depth() rcu_preempt_depth() ++ + #endif /* #else #ifdef CONFIG_PREEMPT_RCU */ + + /* Internal to kernel */ +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -6049,7 +6049,7 @@ void __init sched_init(void) + #ifdef CONFIG_DEBUG_ATOMIC_SLEEP + static inline int preempt_count_equals(int preempt_offset) + { +- int nested = preempt_count() + rcu_preempt_depth(); ++ int nested = preempt_count() + sched_rcu_preempt_depth(); + + return (nested == preempt_offset); + } diff --git a/patches/features/all/rt/sched-mmdrop-delayed.patch b/patches/features/all/rt/sched-mmdrop-delayed.patch new file mode 100644 index 00000000000..276ede976d8 --- /dev/null +++ b/patches/features/all/rt/sched-mmdrop-delayed.patch @@ -0,0 +1,128 @@ +Subject: sched: Move mmdrop to RCU on RT +From: Thomas Gleixner +Date: Mon, 06 Jun 2011 12:20:33 +0200 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Takes sleeping locks and calls into the memory allocator, so nothing +we want to do in task switch and oder atomic contexts. + +Signed-off-by: Thomas Gleixner +--- + include/linux/mm_types.h | 4 ++++ + include/linux/sched/mm.h | 11 +++++++++++ + kernel/fork.c | 13 +++++++++++++ + kernel/sched/core.c | 19 +++++++++++++++++-- + 4 files changed, 45 insertions(+), 2 deletions(-) + +--- a/include/linux/mm_types.h ++++ b/include/linux/mm_types.h +@@ -12,6 +12,7 @@ + #include + #include + #include ++#include + #include + #include + +@@ -504,6 +505,9 @@ struct mm_struct { + bool tlb_flush_batched; + #endif + struct uprobes_state uprobes_state; ++#ifdef CONFIG_PREEMPT_RT_BASE ++ struct rcu_head delayed_drop; ++#endif + #ifdef CONFIG_HUGETLB_PAGE + atomic_long_t hugetlb_usage; + #endif +--- a/include/linux/sched/mm.h ++++ b/include/linux/sched/mm.h +@@ -43,6 +43,17 @@ static inline void mmdrop(struct mm_stru + __mmdrop(mm); + } + ++#ifdef CONFIG_PREEMPT_RT_BASE ++extern void __mmdrop_delayed(struct rcu_head *rhp); ++static inline void mmdrop_delayed(struct mm_struct *mm) ++{ ++ if (atomic_dec_and_test(&mm->mm_count)) ++ call_rcu(&mm->delayed_drop, __mmdrop_delayed); ++} ++#else ++# define mmdrop_delayed(mm) mmdrop(mm) ++#endif ++ + static inline void mmdrop_async_fn(struct work_struct *work) + { + struct mm_struct *mm = container_of(work, struct mm_struct, async_put_work); +--- a/kernel/fork.c ++++ b/kernel/fork.c +@@ -930,6 +930,19 @@ void __mmdrop(struct mm_struct *mm) + } + EXPORT_SYMBOL_GPL(__mmdrop); + ++#ifdef CONFIG_PREEMPT_RT_BASE ++/* ++ * RCU callback for delayed mm drop. Not strictly rcu, but we don't ++ * want another facility to make this work. ++ */ ++void __mmdrop_delayed(struct rcu_head *rhp) ++{ ++ struct mm_struct *mm = container_of(rhp, struct mm_struct, delayed_drop); ++ ++ __mmdrop(mm); ++} ++#endif ++ + static inline void __mmput(struct mm_struct *mm) + { + VM_BUG_ON(atomic_read(&mm->mm_users)); +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -2695,8 +2695,12 @@ static struct rq *finish_task_switch(str + finish_arch_post_lock_switch(); + + fire_sched_in_preempt_notifiers(current); ++ /* ++ * We use mmdrop_delayed() here so we don't have to do the ++ * full __mmdrop() when we are the last user. ++ */ + if (mm) +- mmdrop(mm); ++ mmdrop_delayed(mm); + if (unlikely(prev_state == TASK_DEAD)) { + if (prev->sched_class->task_dead) + prev->sched_class->task_dead(prev); +@@ -5433,6 +5437,8 @@ void sched_setnuma(struct task_struct *p + #endif /* CONFIG_NUMA_BALANCING */ + + #ifdef CONFIG_HOTPLUG_CPU ++static DEFINE_PER_CPU(struct mm_struct *, idle_last_mm); ++ + /* + * Ensure that the idle task is using init_mm right before its CPU goes + * offline. +@@ -5447,7 +5453,12 @@ void idle_task_exit(void) + switch_mm(mm, &init_mm, current); + finish_arch_post_lock_switch(); + } +- mmdrop(mm); ++ /* ++ * Defer the cleanup to an alive cpu. On RT we can neither ++ * call mmdrop() nor mmdrop_delayed() from here. ++ */ ++ per_cpu(idle_last_mm, smp_processor_id()) = mm; ++ + } + + /* +@@ -5750,6 +5761,10 @@ int sched_cpu_dying(unsigned int cpu) + update_max_interval(); + nohz_balance_exit_idle(cpu); + hrtick_clear(rq); ++ if (per_cpu(idle_last_mm, cpu)) { ++ mmdrop_delayed(per_cpu(idle_last_mm, cpu)); ++ per_cpu(idle_last_mm, cpu) = NULL; ++ } + return 0; + } + #endif diff --git a/patches/features/all/rt/sched-rt-mutex-wakeup.patch b/patches/features/all/rt/sched-rt-mutex-wakeup.patch new file mode 100644 index 00000000000..33ffb892b6a --- /dev/null +++ b/patches/features/all/rt/sched-rt-mutex-wakeup.patch @@ -0,0 +1,95 @@ +Subject: sched: Add saved_state for tasks blocked on sleeping locks +From: Thomas Gleixner +Date: Sat, 25 Jun 2011 09:21:04 +0200 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Spinlocks are state preserving in !RT. RT changes the state when a +task gets blocked on a lock. So we need to remember the state before +the lock contention. If a regular wakeup (not a RTmutex related +wakeup) happens, the saved_state is updated to running. When the lock +sleep is done, the saved state is restored. + +Signed-off-by: Thomas Gleixner +--- + include/linux/sched.h | 3 +++ + kernel/sched/core.c | 31 ++++++++++++++++++++++++++++++- + kernel/sched/sched.h | 1 + + 3 files changed, 34 insertions(+), 1 deletion(-) + +--- a/include/linux/sched.h ++++ b/include/linux/sched.h +@@ -526,6 +526,8 @@ struct task_struct { + #endif + /* -1 unrunnable, 0 runnable, >0 stopped: */ + volatile long state; ++ /* saved state for "spinlock sleepers" */ ++ volatile long saved_state; + + /* + * This begins the randomizable portion of task_struct. Only +@@ -1507,6 +1509,7 @@ extern struct task_struct *find_task_by_ + + extern int wake_up_state(struct task_struct *tsk, unsigned int state); + extern int wake_up_process(struct task_struct *tsk); ++extern int wake_up_lock_sleeper(struct task_struct *tsk); + extern void wake_up_new_task(struct task_struct *tsk); + + #ifdef CONFIG_SMP +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -2015,8 +2015,25 @@ try_to_wake_up(struct task_struct *p, un + */ + raw_spin_lock_irqsave(&p->pi_lock, flags); + smp_mb__after_spinlock(); +- if (!(p->state & state)) ++ if (!(p->state & state)) { ++ /* ++ * The task might be running due to a spinlock sleeper ++ * wakeup. Check the saved state and set it to running ++ * if the wakeup condition is true. ++ */ ++ if (!(wake_flags & WF_LOCK_SLEEPER)) { ++ if (p->saved_state & state) ++ p->saved_state = TASK_RUNNING; ++ } + goto out; ++ } ++ ++ /* ++ * If this is a regular wakeup, then we can unconditionally ++ * clear the saved state of a "lock sleeper". ++ */ ++ if (!(wake_flags & WF_LOCK_SLEEPER)) ++ p->saved_state = TASK_RUNNING; + + trace_sched_waking(p); + +@@ -2180,6 +2197,18 @@ int wake_up_process(struct task_struct * + } + EXPORT_SYMBOL(wake_up_process); + ++/** ++ * wake_up_lock_sleeper - Wake up a specific process blocked on a "sleeping lock" ++ * @p: The process to be woken up. ++ * ++ * Same as wake_up_process() above, but wake_flags=WF_LOCK_SLEEPER to indicate ++ * the nature of the wakeup. ++ */ ++int wake_up_lock_sleeper(struct task_struct *p) ++{ ++ return try_to_wake_up(p, TASK_ALL, WF_LOCK_SLEEPER); ++} ++ + int wake_up_state(struct task_struct *p, unsigned int state) + { + return try_to_wake_up(p, state, 0); +--- a/kernel/sched/sched.h ++++ b/kernel/sched/sched.h +@@ -1352,6 +1352,7 @@ static inline void finish_lock_switch(st + #define WF_SYNC 0x01 /* waker goes to sleep after wakeup */ + #define WF_FORK 0x02 /* child wakeup after fork */ + #define WF_MIGRATED 0x4 /* internal use, task got migrated */ ++#define WF_LOCK_SLEEPER 0x08 /* wakeup spinlock "sleeper" */ + + /* + * To aid in avoiding the subversion of "niceness" due to uneven distribution diff --git a/patches/features/all/rt/sched-swait-include-wait.h.patch b/patches/features/all/rt/sched-swait-include-wait.h.patch new file mode 100644 index 00000000000..bae4c414d68 --- /dev/null +++ b/patches/features/all/rt/sched-swait-include-wait.h.patch @@ -0,0 +1,36 @@ +From: Sebastian Andrzej Siewior +Date: Mon, 4 Dec 2017 13:11:10 +0100 +Subject: [PATCH] sched/swait: include wait.h +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +kbuild bot reported against an intermediate RT patch that the build +fails with: + +> In file included from include/linux/completion.h:12:0, +> from include/linux/rcupdate_wait.h:10, +> from kernel/rcu/srcutiny.c:27: +> kernel/rcu/srcutiny.c: In function 'srcu_drive_gp': +> >> include/linux/swait.h:172:7: error: implicit declaration of function '___wait_is_interruptible'; did you mean '__swait_event_interruptible'? +> if (___wait_is_interruptible(state) && __int) { \ + +That error vanishes a few patches later (in the RT queue) because wait.h +is then pulled in by other means. It does not seem to surface on !RT. +I think that swait should include a header file for a function/macro +(___wait_is_interruptible()) it is using. + +Reported-by: kbuild test robot +Signed-off-by: Sebastian Andrzej Siewior +--- + include/linux/swait.h | 1 + + 1 file changed, 1 insertion(+) + +--- a/include/linux/swait.h ++++ b/include/linux/swait.h +@@ -5,6 +5,7 @@ + #include + #include + #include ++#include + #include + + /* diff --git a/patches/features/all/rt/sched-ttwu-ensure-success-return-is-correct.patch b/patches/features/all/rt/sched-ttwu-ensure-success-return-is-correct.patch new file mode 100644 index 00000000000..e261e005f7e --- /dev/null +++ b/patches/features/all/rt/sched-ttwu-ensure-success-return-is-correct.patch @@ -0,0 +1,35 @@ +Subject: sched: ttwu: Return success when only changing the saved_state value +From: Thomas Gleixner +Date: Tue, 13 Dec 2011 21:42:19 +0100 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +When a task blocks on a rt lock, it saves the current state in +p->saved_state, so a lock related wake up will not destroy the +original state. + +When a real wakeup happens, while the task is running due to a lock +wakeup already, we update p->saved_state to TASK_RUNNING, but we do +not return success, which might cause another wakeup in the waitqueue +code and the task remains in the waitqueue list. Return success in +that case as well. + +Signed-off-by: Thomas Gleixner + +--- + kernel/sched/core.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -2022,8 +2022,10 @@ try_to_wake_up(struct task_struct *p, un + * if the wakeup condition is true. + */ + if (!(wake_flags & WF_LOCK_SLEEPER)) { +- if (p->saved_state & state) ++ if (p->saved_state & state) { + p->saved_state = TASK_RUNNING; ++ success = 1; ++ } + } + goto out; + } diff --git a/patches/features/all/rt/sched-workqueue-Only-wake-up-idle-workers-if-not-blo.patch b/patches/features/all/rt/sched-workqueue-Only-wake-up-idle-workers-if-not-blo.patch new file mode 100644 index 00000000000..a559757d14b --- /dev/null +++ b/patches/features/all/rt/sched-workqueue-Only-wake-up-idle-workers-if-not-blo.patch @@ -0,0 +1,38 @@ +From: Steven Rostedt +Date: Mon, 18 Mar 2013 15:12:49 -0400 +Subject: sched/workqueue: Only wake up idle workers if not blocked on sleeping spin lock +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +In -rt, most spin_locks() turn into mutexes. One of these spin_lock +conversions is performed on the workqueue gcwq->lock. When the idle +worker is worken, the first thing it will do is grab that same lock and +it too will block, possibly jumping into the same code, but because +nr_running would already be decremented it prevents an infinite loop. + +But this is still a waste of CPU cycles, and it doesn't follow the method +of mainline, as new workers should only be woken when a worker thread is +truly going to sleep, and not just blocked on a spin_lock(). + +Check the saved_state too before waking up new workers. + + +Signed-off-by: Steven Rostedt +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/sched/core.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -3387,8 +3387,10 @@ static void __sched notrace __schedule(b + * If a worker went to sleep, notify and ask workqueue + * whether it wants to wake up a task to maintain + * concurrency. ++ * Only call wake up if prev isn't blocked on a sleeping ++ * spin lock. + */ +- if (prev->flags & PF_WQ_WORKER) { ++ if (prev->flags & PF_WQ_WORKER && !prev->saved_state) { + struct task_struct *to_wakeup; + + to_wakeup = wq_worker_sleeping(prev); diff --git a/patches/features/all/rt/scsi-fcoe-rt-aware.patch b/patches/features/all/rt/scsi-fcoe-rt-aware.patch new file mode 100644 index 00000000000..66381021ba6 --- /dev/null +++ b/patches/features/all/rt/scsi-fcoe-rt-aware.patch @@ -0,0 +1,106 @@ +Subject: scsi/fcoe: Make RT aware. +From: Thomas Gleixner +Date: Sat, 12 Nov 2011 14:00:48 +0100 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Do not disable preemption while taking sleeping locks. All user look safe +for migrate_diable() only. + +Signed-off-by: Thomas Gleixner +--- + drivers/scsi/fcoe/fcoe.c | 16 ++++++++-------- + drivers/scsi/fcoe/fcoe_ctlr.c | 4 ++-- + drivers/scsi/libfc/fc_exch.c | 4 ++-- + 3 files changed, 12 insertions(+), 12 deletions(-) + +--- a/drivers/scsi/fcoe/fcoe.c ++++ b/drivers/scsi/fcoe/fcoe.c +@@ -1464,11 +1464,11 @@ static int fcoe_rcv(struct sk_buff *skb, + static int fcoe_alloc_paged_crc_eof(struct sk_buff *skb, int tlen) + { + struct fcoe_percpu_s *fps; +- int rc; ++ int rc, cpu = get_cpu_light(); + +- fps = &get_cpu_var(fcoe_percpu); ++ fps = &per_cpu(fcoe_percpu, cpu); + rc = fcoe_get_paged_crc_eof(skb, tlen, fps); +- put_cpu_var(fcoe_percpu); ++ put_cpu_light(); + + return rc; + } +@@ -1655,11 +1655,11 @@ static inline int fcoe_filter_frames(str + return 0; + } + +- stats = per_cpu_ptr(lport->stats, get_cpu()); ++ stats = per_cpu_ptr(lport->stats, get_cpu_light()); + stats->InvalidCRCCount++; + if (stats->InvalidCRCCount < 5) + printk(KERN_WARNING "fcoe: dropping frame with CRC error\n"); +- put_cpu(); ++ put_cpu_light(); + return -EINVAL; + } + +@@ -1702,7 +1702,7 @@ static void fcoe_recv_frame(struct sk_bu + */ + hp = (struct fcoe_hdr *) skb_network_header(skb); + +- stats = per_cpu_ptr(lport->stats, get_cpu()); ++ stats = per_cpu_ptr(lport->stats, get_cpu_light()); + if (unlikely(FC_FCOE_DECAPS_VER(hp) != FC_FCOE_VER)) { + if (stats->ErrorFrames < 5) + printk(KERN_WARNING "fcoe: FCoE version " +@@ -1734,13 +1734,13 @@ static void fcoe_recv_frame(struct sk_bu + goto drop; + + if (!fcoe_filter_frames(lport, fp)) { +- put_cpu(); ++ put_cpu_light(); + fc_exch_recv(lport, fp); + return; + } + drop: + stats->ErrorFrames++; +- put_cpu(); ++ put_cpu_light(); + kfree_skb(skb); + } + +--- a/drivers/scsi/fcoe/fcoe_ctlr.c ++++ b/drivers/scsi/fcoe/fcoe_ctlr.c +@@ -835,7 +835,7 @@ static unsigned long fcoe_ctlr_age_fcfs( + + INIT_LIST_HEAD(&del_list); + +- stats = per_cpu_ptr(fip->lp->stats, get_cpu()); ++ stats = per_cpu_ptr(fip->lp->stats, get_cpu_light()); + + list_for_each_entry_safe(fcf, next, &fip->fcfs, list) { + deadline = fcf->time + fcf->fka_period + fcf->fka_period / 2; +@@ -871,7 +871,7 @@ static unsigned long fcoe_ctlr_age_fcfs( + sel_time = fcf->time; + } + } +- put_cpu(); ++ put_cpu_light(); + + list_for_each_entry_safe(fcf, next, &del_list, list) { + /* Removes fcf from current list */ +--- a/drivers/scsi/libfc/fc_exch.c ++++ b/drivers/scsi/libfc/fc_exch.c +@@ -833,10 +833,10 @@ static struct fc_exch *fc_exch_em_alloc( + } + memset(ep, 0, sizeof(*ep)); + +- cpu = get_cpu(); ++ cpu = get_cpu_light(); + pool = per_cpu_ptr(mp->pool, cpu); + spin_lock_bh(&pool->lock); +- put_cpu(); ++ put_cpu_light(); + + /* peek cache of free slot */ + if (pool->left != FC_XID_UNKNOWN) { diff --git a/patches/features/all/rt/scsi-qla2xxx-fix-bug-sleeping-function-called-from-invalid-context.patch b/patches/features/all/rt/scsi-qla2xxx-fix-bug-sleeping-function-called-from-invalid-context.patch new file mode 100644 index 00000000000..16b989f2f5b --- /dev/null +++ b/patches/features/all/rt/scsi-qla2xxx-fix-bug-sleeping-function-called-from-invalid-context.patch @@ -0,0 +1,48 @@ +Subject: scsi: qla2xxx: Use local_irq_save_nort() in qla2x00_poll +From: John Kacur +Date: Fri, 27 Apr 2012 12:48:46 +0200 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +RT triggers the following: + +[ 11.307652] [] __might_sleep+0xe7/0x110 +[ 11.307663] [] rt_spin_lock+0x24/0x60 +[ 11.307670] [] ? rt_spin_lock_slowunlock+0x78/0x90 +[ 11.307703] [] qla24xx_intr_handler+0x63/0x2d0 [qla2xxx] +[ 11.307736] [] qla2x00_poll+0x67/0x90 [qla2xxx] + +Function qla2x00_poll does local_irq_save() before calling qla24xx_intr_handler +which has a spinlock. Since spinlocks are sleepable on rt, it is not allowed +to call them with interrupts disabled. Therefore we use local_irq_save_nort() +instead which saves flags without disabling interrupts. + +This fix needs to be applied to v3.0-rt, v3.2-rt and v3.4-rt + +Suggested-by: Thomas Gleixner +Signed-off-by: John Kacur +Cc: Steven Rostedt +Cc: David Sommerseth +Link: http://lkml.kernel.org/r/1335523726-10024-1-git-send-email-jkacur@redhat.com + +Signed-off-by: Thomas Gleixner +--- + drivers/scsi/qla2xxx/qla_inline.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/drivers/scsi/qla2xxx/qla_inline.h ++++ b/drivers/scsi/qla2xxx/qla_inline.h +@@ -59,12 +59,12 @@ qla2x00_poll(struct rsp_que *rsp) + { + unsigned long flags; + struct qla_hw_data *ha = rsp->hw; +- local_irq_save(flags); ++ local_irq_save_nort(flags); + if (IS_P3P_TYPE(ha)) + qla82xx_poll(0, rsp); + else + ha->isp_ops->intr_handler(0, rsp); +- local_irq_restore(flags); ++ local_irq_restore_nort(flags); + } + + static inline uint8_t * diff --git a/patches/features/all/rt/seqlock-prevent-rt-starvation.patch b/patches/features/all/rt/seqlock-prevent-rt-starvation.patch new file mode 100644 index 00000000000..c8a140ecfce --- /dev/null +++ b/patches/features/all/rt/seqlock-prevent-rt-starvation.patch @@ -0,0 +1,188 @@ +Subject: seqlock: Prevent rt starvation +From: Thomas Gleixner +Date: Wed, 22 Feb 2012 12:03:30 +0100 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +If a low prio writer gets preempted while holding the seqlock write +locked, a high prio reader spins forever on RT. + +To prevent this let the reader grab the spinlock, so it blocks and +eventually boosts the writer. This way the writer can proceed and +endless spinning is prevented. + +For seqcount writers we disable preemption over the update code +path. Thanks to Al Viro for distangling some VFS code to make that +possible. + +Nicholas Mc Guire: +- spin_lock+unlock => spin_unlock_wait +- __write_seqcount_begin => __raw_write_seqcount_begin + +Signed-off-by: Thomas Gleixner + + +--- + include/linux/seqlock.h | 56 +++++++++++++++++++++++++++++++++++++----------- + include/net/neighbour.h | 6 ++--- + 2 files changed, 47 insertions(+), 15 deletions(-) + +--- a/include/linux/seqlock.h ++++ b/include/linux/seqlock.h +@@ -221,20 +221,30 @@ static inline int read_seqcount_retry(co + return __read_seqcount_retry(s, start); + } + +- +- +-static inline void raw_write_seqcount_begin(seqcount_t *s) ++static inline void __raw_write_seqcount_begin(seqcount_t *s) + { + s->sequence++; + smp_wmb(); + } + +-static inline void raw_write_seqcount_end(seqcount_t *s) ++static inline void raw_write_seqcount_begin(seqcount_t *s) ++{ ++ preempt_disable_rt(); ++ __raw_write_seqcount_begin(s); ++} ++ ++static inline void __raw_write_seqcount_end(seqcount_t *s) + { + smp_wmb(); + s->sequence++; + } + ++static inline void raw_write_seqcount_end(seqcount_t *s) ++{ ++ __raw_write_seqcount_end(s); ++ preempt_enable_rt(); ++} ++ + /** + * raw_write_seqcount_barrier - do a seq write barrier + * @s: pointer to seqcount_t +@@ -429,10 +439,32 @@ typedef struct { + /* + * Read side functions for starting and finalizing a read side section. + */ ++#ifndef CONFIG_PREEMPT_RT_FULL + static inline unsigned read_seqbegin(const seqlock_t *sl) + { + return read_seqcount_begin(&sl->seqcount); + } ++#else ++/* ++ * Starvation safe read side for RT ++ */ ++static inline unsigned read_seqbegin(seqlock_t *sl) ++{ ++ unsigned ret; ++ ++repeat: ++ ret = ACCESS_ONCE(sl->seqcount.sequence); ++ if (unlikely(ret & 1)) { ++ /* ++ * Take the lock and let the writer proceed (i.e. evtl ++ * boost it), otherwise we could loop here forever. ++ */ ++ spin_unlock_wait(&sl->lock); ++ goto repeat; ++ } ++ return ret; ++} ++#endif + + static inline unsigned read_seqretry(const seqlock_t *sl, unsigned start) + { +@@ -447,36 +479,36 @@ static inline unsigned read_seqretry(con + static inline void write_seqlock(seqlock_t *sl) + { + spin_lock(&sl->lock); +- write_seqcount_begin(&sl->seqcount); ++ __raw_write_seqcount_begin(&sl->seqcount); + } + + static inline void write_sequnlock(seqlock_t *sl) + { +- write_seqcount_end(&sl->seqcount); ++ __raw_write_seqcount_end(&sl->seqcount); + spin_unlock(&sl->lock); + } + + static inline void write_seqlock_bh(seqlock_t *sl) + { + spin_lock_bh(&sl->lock); +- write_seqcount_begin(&sl->seqcount); ++ __raw_write_seqcount_begin(&sl->seqcount); + } + + static inline void write_sequnlock_bh(seqlock_t *sl) + { +- write_seqcount_end(&sl->seqcount); ++ __raw_write_seqcount_end(&sl->seqcount); + spin_unlock_bh(&sl->lock); + } + + static inline void write_seqlock_irq(seqlock_t *sl) + { + spin_lock_irq(&sl->lock); +- write_seqcount_begin(&sl->seqcount); ++ __raw_write_seqcount_begin(&sl->seqcount); + } + + static inline void write_sequnlock_irq(seqlock_t *sl) + { +- write_seqcount_end(&sl->seqcount); ++ __raw_write_seqcount_end(&sl->seqcount); + spin_unlock_irq(&sl->lock); + } + +@@ -485,7 +517,7 @@ static inline unsigned long __write_seql + unsigned long flags; + + spin_lock_irqsave(&sl->lock, flags); +- write_seqcount_begin(&sl->seqcount); ++ __raw_write_seqcount_begin(&sl->seqcount); + return flags; + } + +@@ -495,7 +527,7 @@ static inline unsigned long __write_seql + static inline void + write_sequnlock_irqrestore(seqlock_t *sl, unsigned long flags) + { +- write_seqcount_end(&sl->seqcount); ++ __raw_write_seqcount_end(&sl->seqcount); + spin_unlock_irqrestore(&sl->lock, flags); + } + +--- a/include/net/neighbour.h ++++ b/include/net/neighbour.h +@@ -450,7 +450,7 @@ static inline int neigh_hh_bridge(struct + } + #endif + +-static inline int neigh_hh_output(const struct hh_cache *hh, struct sk_buff *skb) ++static inline int neigh_hh_output(struct hh_cache *hh, struct sk_buff *skb) + { + unsigned int seq; + unsigned int hh_len; +@@ -474,7 +474,7 @@ static inline int neigh_hh_output(const + + static inline int neigh_output(struct neighbour *n, struct sk_buff *skb) + { +- const struct hh_cache *hh = &n->hh; ++ struct hh_cache *hh = &n->hh; + + if ((n->nud_state & NUD_CONNECTED) && hh->hh_len) + return neigh_hh_output(hh, skb); +@@ -515,7 +515,7 @@ struct neighbour_cb { + + #define NEIGH_CB(skb) ((struct neighbour_cb *)(skb)->cb) + +-static inline void neigh_ha_snapshot(char *dst, const struct neighbour *n, ++static inline void neigh_ha_snapshot(char *dst, struct neighbour *n, + const struct net_device *dev) + { + unsigned int seq; diff --git a/patches/features/all/rt/signal-fix-up-rcu-wreckage.patch b/patches/features/all/rt/signal-fix-up-rcu-wreckage.patch new file mode 100644 index 00000000000..f1d95f85e7b --- /dev/null +++ b/patches/features/all/rt/signal-fix-up-rcu-wreckage.patch @@ -0,0 +1,39 @@ +Subject: signal: Make __lock_task_sighand() RT aware +From: Thomas Gleixner +Date: Fri, 22 Jul 2011 08:07:08 +0200 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +local_irq_save() + spin_lock(&sighand->siglock) does not work on +-RT. Use the nort variants. + +Signed-off-by: Thomas Gleixner +--- + kernel/signal.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +--- a/kernel/signal.c ++++ b/kernel/signal.c +@@ -1302,12 +1302,12 @@ struct sighand_struct *__lock_task_sigha + * Disable interrupts early to avoid deadlocks. + * See rcu_read_unlock() comment header for details. + */ +- local_irq_save(*flags); ++ local_irq_save_nort(*flags); + rcu_read_lock(); + sighand = rcu_dereference(tsk->sighand); + if (unlikely(sighand == NULL)) { + rcu_read_unlock(); +- local_irq_restore(*flags); ++ local_irq_restore_nort(*flags); + break; + } + /* +@@ -1328,7 +1328,7 @@ struct sighand_struct *__lock_task_sigha + } + spin_unlock(&sighand->siglock); + rcu_read_unlock(); +- local_irq_restore(*flags); ++ local_irq_restore_nort(*flags); + } + + return sighand; diff --git a/patches/features/all/rt/signal-revert-ptrace-preempt-magic.patch b/patches/features/all/rt/signal-revert-ptrace-preempt-magic.patch new file mode 100644 index 00000000000..5eaa67608e6 --- /dev/null +++ b/patches/features/all/rt/signal-revert-ptrace-preempt-magic.patch @@ -0,0 +1,32 @@ +Subject: signal: Revert ptrace preempt magic +From: Thomas Gleixner +Date: Wed, 21 Sep 2011 19:57:12 +0200 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Upstream commit '53da1d9456fe7f8 fix ptrace slowness' is nothing more +than a bandaid around the ptrace design trainwreck. It's not a +correctness issue, it's merily a cosmetic bandaid. + +Signed-off-by: Thomas Gleixner +--- + kernel/signal.c | 8 -------- + 1 file changed, 8 deletions(-) + +--- a/kernel/signal.c ++++ b/kernel/signal.c +@@ -1876,15 +1876,7 @@ static void ptrace_stop(int exit_code, i + if (gstop_done && ptrace_reparented(current)) + do_notify_parent_cldstop(current, false, why); + +- /* +- * Don't want to allow preemption here, because +- * sys_ptrace() needs this task to be inactive. +- * +- * XXX: implement read_unlock_no_resched(). +- */ +- preempt_disable(); + read_unlock(&tasklist_lock); +- preempt_enable_no_resched(); + freezable_schedule(); + } else { + /* diff --git a/patches/features/all/rt/signals-allow-rt-tasks-to-cache-one-sigqueue-struct.patch b/patches/features/all/rt/signals-allow-rt-tasks-to-cache-one-sigqueue-struct.patch new file mode 100644 index 00000000000..68a059a34b1 --- /dev/null +++ b/patches/features/all/rt/signals-allow-rt-tasks-to-cache-one-sigqueue-struct.patch @@ -0,0 +1,200 @@ +From: Thomas Gleixner +Date: Fri, 3 Jul 2009 08:44:56 -0500 +Subject: signals: Allow rt tasks to cache one sigqueue struct +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +To avoid allocation allow rt tasks to cache one sigqueue struct in +task struct. + +Signed-off-by: Thomas Gleixner + +--- + include/linux/sched.h | 2 + + include/linux/signal.h | 1 + kernel/exit.c | 2 - + kernel/fork.c | 1 + kernel/signal.c | 69 ++++++++++++++++++++++++++++++++++++++++++++++--- + 5 files changed, 70 insertions(+), 5 deletions(-) + +--- a/include/linux/sched.h ++++ b/include/linux/sched.h +@@ -788,6 +788,8 @@ struct task_struct { + /* Signal handlers: */ + struct signal_struct *signal; + struct sighand_struct *sighand; ++ struct sigqueue *sigqueue_cache; ++ + sigset_t blocked; + sigset_t real_blocked; + /* Restored if set_restore_sigmask() was used: */ +--- a/include/linux/signal.h ++++ b/include/linux/signal.h +@@ -243,6 +243,7 @@ static inline void init_sigpending(struc + } + + extern void flush_sigqueue(struct sigpending *queue); ++extern void flush_task_sigqueue(struct task_struct *tsk); + + /* Test if 'sig' is valid signal. Use this instead of testing _NSIG directly */ + static inline int valid_signal(unsigned long sig) +--- a/kernel/exit.c ++++ b/kernel/exit.c +@@ -159,7 +159,7 @@ static void __exit_signal(struct task_st + * Do this under ->siglock, we can race with another thread + * doing sigqueue_free() if we have SIGQUEUE_PREALLOC signals. + */ +- flush_sigqueue(&tsk->pending); ++ flush_task_sigqueue(tsk); + tsk->sighand = NULL; + spin_unlock(&sighand->siglock); + +--- a/kernel/fork.c ++++ b/kernel/fork.c +@@ -1648,6 +1648,7 @@ static __latent_entropy struct task_stru + spin_lock_init(&p->alloc_lock); + + init_sigpending(&p->pending); ++ p->sigqueue_cache = NULL; + + p->utime = p->stime = p->gtime = 0; + #ifdef CONFIG_ARCH_HAS_SCALED_CPUTIME +--- a/kernel/signal.c ++++ b/kernel/signal.c +@@ -19,6 +19,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -360,13 +361,30 @@ static bool task_participate_group_stop( + return false; + } + ++static inline struct sigqueue *get_task_cache(struct task_struct *t) ++{ ++ struct sigqueue *q = t->sigqueue_cache; ++ ++ if (cmpxchg(&t->sigqueue_cache, q, NULL) != q) ++ return NULL; ++ return q; ++} ++ ++static inline int put_task_cache(struct task_struct *t, struct sigqueue *q) ++{ ++ if (cmpxchg(&t->sigqueue_cache, NULL, q) == NULL) ++ return 0; ++ return 1; ++} ++ + /* + * allocate a new signal queue record + * - this may be called without locks if and only if t == current, otherwise an + * appropriate lock must be held to stop the target task from exiting + */ + static struct sigqueue * +-__sigqueue_alloc(int sig, struct task_struct *t, gfp_t flags, int override_rlimit) ++__sigqueue_do_alloc(int sig, struct task_struct *t, gfp_t flags, ++ int override_rlimit, int fromslab) + { + struct sigqueue *q = NULL; + struct user_struct *user; +@@ -383,7 +401,10 @@ static struct sigqueue * + if (override_rlimit || + atomic_read(&user->sigpending) <= + task_rlimit(t, RLIMIT_SIGPENDING)) { +- q = kmem_cache_alloc(sigqueue_cachep, flags); ++ if (!fromslab) ++ q = get_task_cache(t); ++ if (!q) ++ q = kmem_cache_alloc(sigqueue_cachep, flags); + } else { + print_dropped_signal(sig); + } +@@ -400,6 +421,13 @@ static struct sigqueue * + return q; + } + ++static struct sigqueue * ++__sigqueue_alloc(int sig, struct task_struct *t, gfp_t flags, ++ int override_rlimit) ++{ ++ return __sigqueue_do_alloc(sig, t, flags, override_rlimit, 0); ++} ++ + static void __sigqueue_free(struct sigqueue *q) + { + if (q->flags & SIGQUEUE_PREALLOC) +@@ -409,6 +437,21 @@ static void __sigqueue_free(struct sigqu + kmem_cache_free(sigqueue_cachep, q); + } + ++static void sigqueue_free_current(struct sigqueue *q) ++{ ++ struct user_struct *up; ++ ++ if (q->flags & SIGQUEUE_PREALLOC) ++ return; ++ ++ up = q->user; ++ if (rt_prio(current->normal_prio) && !put_task_cache(current, q)) { ++ atomic_dec(&up->sigpending); ++ free_uid(up); ++ } else ++ __sigqueue_free(q); ++} ++ + void flush_sigqueue(struct sigpending *queue) + { + struct sigqueue *q; +@@ -422,6 +465,21 @@ void flush_sigqueue(struct sigpending *q + } + + /* ++ * Called from __exit_signal. Flush tsk->pending and ++ * tsk->sigqueue_cache ++ */ ++void flush_task_sigqueue(struct task_struct *tsk) ++{ ++ struct sigqueue *q; ++ ++ flush_sigqueue(&tsk->pending); ++ ++ q = get_task_cache(tsk); ++ if (q) ++ kmem_cache_free(sigqueue_cachep, q); ++} ++ ++/* + * Flush all pending signals for this kthread. + */ + void flush_signals(struct task_struct *t) +@@ -542,7 +600,7 @@ static void collect_signal(int sig, stru + (info->si_code == SI_TIMER) && + (info->si_sys_private); + +- __sigqueue_free(first); ++ sigqueue_free_current(first); + } else { + /* + * Ok, it wasn't in the queue. This must be +@@ -578,6 +636,8 @@ int dequeue_signal(struct task_struct *t + bool resched_timer = false; + int signr; + ++ WARN_ON_ONCE(tsk != current); ++ + /* We only dequeue private signals from ourselves, we don't let + * signalfd steal them + */ +@@ -1515,7 +1575,8 @@ EXPORT_SYMBOL(kill_pid); + */ + struct sigqueue *sigqueue_alloc(void) + { +- struct sigqueue *q = __sigqueue_alloc(-1, current, GFP_KERNEL, 0); ++ /* Preallocated sigqueue objects always from the slabcache ! */ ++ struct sigqueue *q = __sigqueue_do_alloc(-1, current, GFP_KERNEL, 0, 1); + + if (q) + q->flags |= SIGQUEUE_PREALLOC; diff --git a/patches/features/all/rt/skbufhead-raw-lock.patch b/patches/features/all/rt/skbufhead-raw-lock.patch new file mode 100644 index 00000000000..5c30b7f8fec --- /dev/null +++ b/patches/features/all/rt/skbufhead-raw-lock.patch @@ -0,0 +1,158 @@ +From: Thomas Gleixner +Date: Tue, 12 Jul 2011 15:38:34 +0200 +Subject: net: Use skbufhead with raw lock +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Use the rps lock as rawlock so we can keep irq-off regions. It looks low +latency. However we can't kfree() from this context therefore we defer this +to the softirq and use the tofree_queue list for it (similar to process_queue). + +Signed-off-by: Thomas Gleixner +--- + include/linux/netdevice.h | 1 + + include/linux/skbuff.h | 7 +++++++ + net/core/dev.c | 31 ++++++++++++++++++++++++------- + 3 files changed, 32 insertions(+), 7 deletions(-) + +--- a/include/linux/netdevice.h ++++ b/include/linux/netdevice.h +@@ -2772,6 +2772,7 @@ struct softnet_data { + unsigned int dropped; + struct sk_buff_head input_pkt_queue; + struct napi_struct backlog; ++ struct sk_buff_head tofree_queue; + + }; + +--- a/include/linux/skbuff.h ++++ b/include/linux/skbuff.h +@@ -288,6 +288,7 @@ struct sk_buff_head { + + __u32 qlen; + spinlock_t lock; ++ raw_spinlock_t raw_lock; + }; + + struct sk_buff; +@@ -1670,6 +1671,12 @@ static inline void skb_queue_head_init(s + __skb_queue_head_init(list); + } + ++static inline void skb_queue_head_init_raw(struct sk_buff_head *list) ++{ ++ raw_spin_lock_init(&list->raw_lock); ++ __skb_queue_head_init(list); ++} ++ + static inline void skb_queue_head_init_class(struct sk_buff_head *list, + struct lock_class_key *class) + { +--- a/net/core/dev.c ++++ b/net/core/dev.c +@@ -217,14 +217,14 @@ static inline struct hlist_head *dev_ind + static inline void rps_lock(struct softnet_data *sd) + { + #ifdef CONFIG_RPS +- spin_lock(&sd->input_pkt_queue.lock); ++ raw_spin_lock(&sd->input_pkt_queue.raw_lock); + #endif + } + + static inline void rps_unlock(struct softnet_data *sd) + { + #ifdef CONFIG_RPS +- spin_unlock(&sd->input_pkt_queue.lock); ++ raw_spin_unlock(&sd->input_pkt_queue.raw_lock); + #endif + } + +@@ -4582,7 +4582,7 @@ static void flush_backlog(struct work_st + skb_queue_walk_safe(&sd->input_pkt_queue, skb, tmp) { + if (skb->dev->reg_state == NETREG_UNREGISTERING) { + __skb_unlink(skb, &sd->input_pkt_queue); +- kfree_skb(skb); ++ __skb_queue_tail(&sd->tofree_queue, skb); + input_queue_head_incr(sd); + } + } +@@ -4592,11 +4592,14 @@ static void flush_backlog(struct work_st + skb_queue_walk_safe(&sd->process_queue, skb, tmp) { + if (skb->dev->reg_state == NETREG_UNREGISTERING) { + __skb_unlink(skb, &sd->process_queue); +- kfree_skb(skb); ++ __skb_queue_tail(&sd->tofree_queue, skb); + input_queue_head_incr(sd); + } + } ++ if (!skb_queue_empty(&sd->tofree_queue)) ++ raise_softirq_irqoff(NET_RX_SOFTIRQ); + local_bh_enable(); ++ + } + + static void flush_all_backlogs(void) +@@ -5143,7 +5146,9 @@ static int process_backlog(struct napi_s + while (again) { + struct sk_buff *skb; + ++ local_irq_disable(); + while ((skb = __skb_dequeue(&sd->process_queue))) { ++ local_irq_enable(); + rcu_read_lock(); + __netif_receive_skb(skb); + rcu_read_unlock(); +@@ -5151,9 +5156,9 @@ static int process_backlog(struct napi_s + if (++work >= quota) + return work; + ++ local_irq_disable(); + } + +- local_irq_disable(); + rps_lock(sd); + if (skb_queue_empty(&sd->input_pkt_queue)) { + /* +@@ -5593,13 +5598,21 @@ static __latent_entropy void net_rx_acti + unsigned long time_limit = jiffies + + usecs_to_jiffies(netdev_budget_usecs); + int budget = netdev_budget; ++ struct sk_buff_head tofree_q; ++ struct sk_buff *skb; + LIST_HEAD(list); + LIST_HEAD(repoll); + ++ __skb_queue_head_init(&tofree_q); ++ + local_irq_disable(); ++ skb_queue_splice_init(&sd->tofree_queue, &tofree_q); + list_splice_init(&sd->poll_list, &list); + local_irq_enable(); + ++ while ((skb = __skb_dequeue(&tofree_q))) ++ kfree_skb(skb); ++ + for (;;) { + struct napi_struct *n; + +@@ -8414,6 +8427,9 @@ static int dev_cpu_dead(unsigned int old + netif_rx_ni(skb); + input_queue_head_incr(oldsd); + } ++ while ((skb = __skb_dequeue(&oldsd->tofree_queue))) { ++ kfree_skb(skb); ++ } + + return 0; + } +@@ -8717,8 +8733,9 @@ static int __init net_dev_init(void) + + INIT_WORK(flush, flush_backlog); + +- skb_queue_head_init(&sd->input_pkt_queue); +- skb_queue_head_init(&sd->process_queue); ++ skb_queue_head_init_raw(&sd->input_pkt_queue); ++ skb_queue_head_init_raw(&sd->process_queue); ++ skb_queue_head_init_raw(&sd->tofree_queue); + INIT_LIST_HEAD(&sd->poll_list); + sd->output_queue_tailp = &sd->output_queue; + #ifdef CONFIG_RPS diff --git a/patches/features/all/rt/slub-disable-SLUB_CPU_PARTIAL.patch b/patches/features/all/rt/slub-disable-SLUB_CPU_PARTIAL.patch new file mode 100644 index 00000000000..b3224d6e829 --- /dev/null +++ b/patches/features/all/rt/slub-disable-SLUB_CPU_PARTIAL.patch @@ -0,0 +1,48 @@ +From: Sebastian Andrzej Siewior +Date: Wed, 15 Apr 2015 19:00:47 +0200 +Subject: slub: Disable SLUB_CPU_PARTIAL +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +|BUG: sleeping function called from invalid context at kernel/locking/rtmutex.c:915 +|in_atomic(): 1, irqs_disabled(): 0, pid: 87, name: rcuop/7 +|1 lock held by rcuop/7/87: +| #0: (rcu_callback){......}, at: [] rcu_nocb_kthread+0x1ca/0x5d0 +|Preemption disabled at:[] put_cpu_partial+0x29/0x220 +| +|CPU: 0 PID: 87 Comm: rcuop/7 Tainted: G W 4.0.0-rt0+ #477 +|Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.7.5-20140531_083030-gandalf 04/01/2014 +| 000000000007a9fc ffff88013987baf8 ffffffff817441c7 0000000000000007 +| 0000000000000000 ffff88013987bb18 ffffffff810eee51 0000000000000000 +| ffff88013fc10200 ffff88013987bb48 ffffffff8174a1c4 000000000007a9fc +|Call Trace: +| [] dump_stack+0x4f/0x90 +| [] ___might_sleep+0x121/0x1b0 +| [] rt_spin_lock+0x24/0x60 +| [] __free_pages_ok+0xaa/0x540 +| [] __free_pages+0x1d/0x30 +| [] __free_slab+0xc5/0x1e0 +| [] free_delayed+0x56/0x70 +| [] put_cpu_partial+0x14d/0x220 +| [] __slab_free+0x158/0x2c0 +| [] kmem_cache_free+0x221/0x2d0 +| [] file_free_rcu+0x2c/0x40 +| [] rcu_nocb_kthread+0x243/0x5d0 +| [] kthread+0xfc/0x120 +| [] ret_from_fork+0x58/0x90 + +Signed-off-by: Sebastian Andrzej Siewior +--- + init/Kconfig | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/init/Kconfig ++++ b/init/Kconfig +@@ -1589,7 +1589,7 @@ config SLAB_FREELIST_HARDENED + + config SLUB_CPU_PARTIAL + default y +- depends on SLUB && SMP ++ depends on SLUB && SMP && !PREEMPT_RT_FULL + bool "SLUB per cpu partial cache" + help + Per cpu partial caches accellerate objects allocation and freeing diff --git a/patches/features/all/rt/slub-enable-irqs-for-no-wait.patch b/patches/features/all/rt/slub-enable-irqs-for-no-wait.patch new file mode 100644 index 00000000000..f020eef2735 --- /dev/null +++ b/patches/features/all/rt/slub-enable-irqs-for-no-wait.patch @@ -0,0 +1,48 @@ +Subject: slub: Enable irqs for __GFP_WAIT +From: Thomas Gleixner +Date: Wed, 09 Jan 2013 12:08:15 +0100 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +SYSTEM_RUNNING might be too late for enabling interrupts. Allocations +with GFP_WAIT can happen before that. So use this as an indicator. + +Signed-off-by: Thomas Gleixner +--- + mm/slub.c | 13 ++++++------- + 1 file changed, 6 insertions(+), 7 deletions(-) + +--- a/mm/slub.c ++++ b/mm/slub.c +@@ -1572,14 +1572,17 @@ static struct page *allocate_slab(struct + void *start, *p; + int idx, order; + bool shuffle; ++ bool enableirqs = false; + + flags &= gfp_allowed_mask; + ++ if (gfpflags_allow_blocking(flags)) ++ enableirqs = true; + #ifdef CONFIG_PREEMPT_RT_FULL + if (system_state > SYSTEM_BOOTING) +-#else +- if (gfpflags_allow_blocking(flags)) ++ enableirqs = true; + #endif ++ if (enableirqs) + local_irq_enable(); + + flags |= s->allocflags; +@@ -1654,11 +1657,7 @@ static struct page *allocate_slab(struct + page->frozen = 1; + + out: +-#ifdef CONFIG_PREEMPT_RT_FULL +- if (system_state > SYSTEM_BOOTING) +-#else +- if (gfpflags_allow_blocking(flags)) +-#endif ++ if (enableirqs) + local_irq_disable(); + if (!page) + return NULL; diff --git a/patches/features/all/rt/snd-pcm-fix-snd_pcm_stream_lock-irqs_disabled-splats.patch b/patches/features/all/rt/snd-pcm-fix-snd_pcm_stream_lock-irqs_disabled-splats.patch new file mode 100644 index 00000000000..d08092a1d45 --- /dev/null +++ b/patches/features/all/rt/snd-pcm-fix-snd_pcm_stream_lock-irqs_disabled-splats.patch @@ -0,0 +1,70 @@ +From: Mike Galbraith +Date: Wed, 18 Feb 2015 15:09:23 +0100 +Subject: snd/pcm: fix snd_pcm_stream_lock*() irqs_disabled() splats +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Locking functions previously using read_lock_irq()/read_lock_irqsave() were +changed to local_irq_disable/save(), leading to gripes. Use nort variants. + +|BUG: sleeping function called from invalid context at kernel/locking/rtmutex.c:915 +|in_atomic(): 0, irqs_disabled(): 1, pid: 5947, name: alsa-sink-ALC88 +|CPU: 5 PID: 5947 Comm: alsa-sink-ALC88 Not tainted 3.18.7-rt1 #9 +|Hardware name: MEDION MS-7848/MS-7848, BIOS M7848W08.404 11/06/2014 +| ffff880409316240 ffff88040866fa38 ffffffff815bdeb5 0000000000000002 +| 0000000000000000 ffff88040866fa58 ffffffff81073c86 ffffffffa03b2640 +| ffff88040239ec00 ffff88040866fa78 ffffffff815c3d34 ffffffffa03b2640 +|Call Trace: +| [] dump_stack+0x4f/0x9e +| [] __might_sleep+0xe6/0x150 +| [] __rt_spin_lock+0x24/0x50 +| [] rt_read_lock+0x34/0x40 +| [] snd_pcm_stream_lock+0x29/0x70 [snd_pcm] +| [] snd_pcm_playback_poll+0x5d/0x120 [snd_pcm] +| [] do_sys_poll+0x322/0x5b0 +| [] SyS_ppoll+0x1a8/0x1c0 +| [] system_call_fastpath+0x16/0x1b + +Signed-off-by: Mike Galbraith +Signed-off-by: Sebastian Andrzej Siewior +--- + sound/core/pcm_native.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +--- a/sound/core/pcm_native.c ++++ b/sound/core/pcm_native.c +@@ -148,7 +148,7 @@ EXPORT_SYMBOL_GPL(snd_pcm_stream_unlock) + void snd_pcm_stream_lock_irq(struct snd_pcm_substream *substream) + { + if (!substream->pcm->nonatomic) +- local_irq_disable(); ++ local_irq_disable_nort(); + snd_pcm_stream_lock(substream); + } + EXPORT_SYMBOL_GPL(snd_pcm_stream_lock_irq); +@@ -163,7 +163,7 @@ void snd_pcm_stream_unlock_irq(struct sn + { + snd_pcm_stream_unlock(substream); + if (!substream->pcm->nonatomic) +- local_irq_enable(); ++ local_irq_enable_nort(); + } + EXPORT_SYMBOL_GPL(snd_pcm_stream_unlock_irq); + +@@ -171,7 +171,7 @@ unsigned long _snd_pcm_stream_lock_irqsa + { + unsigned long flags = 0; + if (!substream->pcm->nonatomic) +- local_irq_save(flags); ++ local_irq_save_nort(flags); + snd_pcm_stream_lock(substream); + return flags; + } +@@ -189,7 +189,7 @@ void snd_pcm_stream_unlock_irqrestore(st + { + snd_pcm_stream_unlock(substream); + if (!substream->pcm->nonatomic) +- local_irq_restore(flags); ++ local_irq_restore_nort(flags); + } + EXPORT_SYMBOL_GPL(snd_pcm_stream_unlock_irqrestore); + diff --git a/patches/features/all/rt/softirq-disable-softirq-stacks-for-rt.patch b/patches/features/all/rt/softirq-disable-softirq-stacks-for-rt.patch new file mode 100644 index 00000000000..6c2025b1103 --- /dev/null +++ b/patches/features/all/rt/softirq-disable-softirq-stacks-for-rt.patch @@ -0,0 +1,157 @@ +Subject: softirq: Disable softirq stacks for RT +From: Thomas Gleixner +Date: Mon, 18 Jul 2011 13:59:17 +0200 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Disable extra stacks for softirqs. We want to preempt softirqs and +having them on special IRQ-stack does not make this easier. + +Signed-off-by: Thomas Gleixner +--- + arch/powerpc/kernel/irq.c | 2 ++ + arch/powerpc/kernel/misc_32.S | 2 ++ + arch/powerpc/kernel/misc_64.S | 2 ++ + arch/sh/kernel/irq.c | 2 ++ + arch/sparc/kernel/irq_64.c | 2 ++ + arch/x86/entry/entry_64.S | 2 ++ + arch/x86/kernel/irq_32.c | 2 ++ + include/linux/interrupt.h | 2 +- + 8 files changed, 15 insertions(+), 1 deletion(-) + +--- a/arch/powerpc/kernel/irq.c ++++ b/arch/powerpc/kernel/irq.c +@@ -685,6 +685,7 @@ void irq_ctx_init(void) + } + } + ++#ifndef CONFIG_PREEMPT_RT_FULL + void do_softirq_own_stack(void) + { + struct thread_info *curtp, *irqtp; +@@ -702,6 +703,7 @@ void do_softirq_own_stack(void) + if (irqtp->flags) + set_bits(irqtp->flags, &curtp->flags); + } ++#endif + + irq_hw_number_t virq_to_hw(unsigned int virq) + { +--- a/arch/powerpc/kernel/misc_32.S ++++ b/arch/powerpc/kernel/misc_32.S +@@ -41,6 +41,7 @@ + * We store the saved ksp_limit in the unused part + * of the STACK_FRAME_OVERHEAD + */ ++#ifndef CONFIG_PREEMPT_RT_FULL + _GLOBAL(call_do_softirq) + mflr r0 + stw r0,4(r1) +@@ -57,6 +58,7 @@ + stw r10,THREAD+KSP_LIMIT(r2) + mtlr r0 + blr ++#endif + + /* + * void call_do_irq(struct pt_regs *regs, struct thread_info *irqtp); +--- a/arch/powerpc/kernel/misc_64.S ++++ b/arch/powerpc/kernel/misc_64.S +@@ -31,6 +31,7 @@ + + .text + ++#ifndef CONFIG_PREEMPT_RT_FULL + _GLOBAL(call_do_softirq) + mflr r0 + std r0,16(r1) +@@ -41,6 +42,7 @@ + ld r0,16(r1) + mtlr r0 + blr ++#endif + + _GLOBAL(call_do_irq) + mflr r0 +--- a/arch/sh/kernel/irq.c ++++ b/arch/sh/kernel/irq.c +@@ -148,6 +148,7 @@ void irq_ctx_exit(int cpu) + hardirq_ctx[cpu] = NULL; + } + ++#ifndef CONFIG_PREEMPT_RT_FULL + void do_softirq_own_stack(void) + { + struct thread_info *curctx; +@@ -175,6 +176,7 @@ void do_softirq_own_stack(void) + "r5", "r6", "r7", "r8", "r9", "r15", "t", "pr" + ); + } ++#endif + #else + static inline void handle_one_irq(unsigned int irq) + { +--- a/arch/sparc/kernel/irq_64.c ++++ b/arch/sparc/kernel/irq_64.c +@@ -855,6 +855,7 @@ void __irq_entry handler_irq(int pil, st + set_irq_regs(old_regs); + } + ++#ifndef CONFIG_PREEMPT_RT_FULL + void do_softirq_own_stack(void) + { + void *orig_sp, *sp = softirq_stack[smp_processor_id()]; +@@ -869,6 +870,7 @@ void do_softirq_own_stack(void) + __asm__ __volatile__("mov %0, %%sp" + : : "r" (orig_sp)); + } ++#endif + + #ifdef CONFIG_HOTPLUG_CPU + void fixup_irqs(void) +--- a/arch/x86/entry/entry_64.S ++++ b/arch/x86/entry/entry_64.S +@@ -1136,6 +1136,7 @@ EXPORT_SYMBOL(native_load_gs_index) + jmp 2b + .previous + ++#ifndef CONFIG_PREEMPT_RT_FULL + /* Call softirq on interrupt stack. Interrupts are off. */ + ENTRY(do_softirq_own_stack) + pushq %rbp +@@ -1146,6 +1147,7 @@ ENTRY(do_softirq_own_stack) + leaveq + ret + ENDPROC(do_softirq_own_stack) ++#endif + + #ifdef CONFIG_XEN + idtentry hypervisor_callback xen_do_hypervisor_callback has_error_code=0 +--- a/arch/x86/kernel/irq_32.c ++++ b/arch/x86/kernel/irq_32.c +@@ -129,6 +129,7 @@ void irq_ctx_init(int cpu) + cpu, per_cpu(hardirq_stack, cpu), per_cpu(softirq_stack, cpu)); + } + ++#ifndef CONFIG_PREEMPT_RT_FULL + void do_softirq_own_stack(void) + { + struct irq_stack *irqstk; +@@ -145,6 +146,7 @@ void do_softirq_own_stack(void) + + call_on_stack(__do_softirq, isp); + } ++#endif + + bool handle_irq(struct irq_desc *desc, struct pt_regs *regs) + { +--- a/include/linux/interrupt.h ++++ b/include/linux/interrupt.h +@@ -501,7 +501,7 @@ struct softirq_action + asmlinkage void do_softirq(void); + asmlinkage void __do_softirq(void); + +-#ifdef __ARCH_HAS_DO_SOFTIRQ ++#if defined(__ARCH_HAS_DO_SOFTIRQ) && !defined(CONFIG_PREEMPT_RT_FULL) + void do_softirq_own_stack(void); + #else + static inline void do_softirq_own_stack(void) diff --git a/patches/features/all/rt/softirq-preempt-fix-3-re.patch b/patches/features/all/rt/softirq-preempt-fix-3-re.patch new file mode 100644 index 00000000000..1e039691546 --- /dev/null +++ b/patches/features/all/rt/softirq-preempt-fix-3-re.patch @@ -0,0 +1,169 @@ +Subject: softirq: Check preemption after reenabling interrupts +From: Thomas Gleixner +Date: Sun, 13 Nov 2011 17:17:09 +0100 (CET) +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +raise_softirq_irqoff() disables interrupts and wakes the softirq +daemon, but after reenabling interrupts there is no preemption check, +so the execution of the softirq thread might be delayed arbitrarily. + +In principle we could add that check to local_irq_enable/restore, but +that's overkill as the rasie_softirq_irqoff() sections are the only +ones which show this behaviour. + +Reported-by: Carsten Emde +Signed-off-by: Thomas Gleixner + +--- + block/blk-softirq.c | 3 +++ + include/linux/preempt.h | 3 +++ + lib/irq_poll.c | 5 +++++ + net/core/dev.c | 7 +++++++ + 4 files changed, 18 insertions(+) + +--- a/block/blk-softirq.c ++++ b/block/blk-softirq.c +@@ -53,6 +53,7 @@ static void trigger_softirq(void *data) + raise_softirq_irqoff(BLOCK_SOFTIRQ); + + local_irq_restore(flags); ++ preempt_check_resched_rt(); + } + + /* +@@ -91,6 +92,7 @@ static int blk_softirq_cpu_dead(unsigned + this_cpu_ptr(&blk_cpu_done)); + raise_softirq_irqoff(BLOCK_SOFTIRQ); + local_irq_enable(); ++ preempt_check_resched_rt(); + + return 0; + } +@@ -143,6 +145,7 @@ void __blk_complete_request(struct reque + goto do_local; + + local_irq_restore(flags); ++ preempt_check_resched_rt(); + } + + /** +--- a/include/linux/preempt.h ++++ b/include/linux/preempt.h +@@ -187,8 +187,10 @@ do { \ + + #ifdef CONFIG_PREEMPT_RT_BASE + # define preempt_enable_no_resched() sched_preempt_enable_no_resched() ++# define preempt_check_resched_rt() preempt_check_resched() + #else + # define preempt_enable_no_resched() preempt_enable() ++# define preempt_check_resched_rt() barrier(); + #endif + + #define preemptible() (preempt_count() == 0 && !irqs_disabled()) +@@ -275,6 +277,7 @@ do { \ + #define preempt_disable_notrace() barrier() + #define preempt_enable_no_resched_notrace() barrier() + #define preempt_enable_notrace() barrier() ++#define preempt_check_resched_rt() barrier() + #define preemptible() 0 + + #define migrate_disable() barrier() +--- a/lib/irq_poll.c ++++ b/lib/irq_poll.c +@@ -37,6 +37,7 @@ void irq_poll_sched(struct irq_poll *iop + list_add_tail(&iop->list, this_cpu_ptr(&blk_cpu_iopoll)); + __raise_softirq_irqoff(IRQ_POLL_SOFTIRQ); + local_irq_restore(flags); ++ preempt_check_resched_rt(); + } + EXPORT_SYMBOL(irq_poll_sched); + +@@ -72,6 +73,7 @@ void irq_poll_complete(struct irq_poll * + local_irq_save(flags); + __irq_poll_complete(iop); + local_irq_restore(flags); ++ preempt_check_resched_rt(); + } + EXPORT_SYMBOL(irq_poll_complete); + +@@ -96,6 +98,7 @@ static void __latent_entropy irq_poll_so + } + + local_irq_enable(); ++ preempt_check_resched_rt(); + + /* Even though interrupts have been re-enabled, this + * access is safe because interrupts can only add new +@@ -133,6 +136,7 @@ static void __latent_entropy irq_poll_so + __raise_softirq_irqoff(IRQ_POLL_SOFTIRQ); + + local_irq_enable(); ++ preempt_check_resched_rt(); + } + + /** +@@ -196,6 +200,7 @@ static int irq_poll_cpu_dead(unsigned in + this_cpu_ptr(&blk_cpu_iopoll)); + __raise_softirq_irqoff(IRQ_POLL_SOFTIRQ); + local_irq_enable(); ++ preempt_check_resched_rt(); + + return 0; + } +--- a/net/core/dev.c ++++ b/net/core/dev.c +@@ -2431,6 +2431,7 @@ static void __netif_reschedule(struct Qd + sd->output_queue_tailp = &q->next_sched; + raise_softirq_irqoff(NET_TX_SOFTIRQ); + local_irq_restore(flags); ++ preempt_check_resched_rt(); + } + + void __netif_schedule(struct Qdisc *q) +@@ -2493,6 +2494,7 @@ void __dev_kfree_skb_irq(struct sk_buff + __this_cpu_write(softnet_data.completion_queue, skb); + raise_softirq_irqoff(NET_TX_SOFTIRQ); + local_irq_restore(flags); ++ preempt_check_resched_rt(); + } + EXPORT_SYMBOL(__dev_kfree_skb_irq); + +@@ -3856,6 +3858,7 @@ static int enqueue_to_backlog(struct sk_ + rps_unlock(sd); + + local_irq_restore(flags); ++ preempt_check_resched_rt(); + + atomic_long_inc(&skb->dev->rx_dropped); + kfree_skb(skb); +@@ -5105,12 +5108,14 @@ static void net_rps_action_and_irq_enabl + sd->rps_ipi_list = NULL; + + local_irq_enable(); ++ preempt_check_resched_rt(); + + /* Send pending IPI's to kick RPS processing on remote cpus. */ + net_rps_send_ipi(remsd); + } else + #endif + local_irq_enable(); ++ preempt_check_resched_rt(); + } + + static bool sd_has_rps_ipi_waiting(struct softnet_data *sd) +@@ -5188,6 +5193,7 @@ void __napi_schedule(struct napi_struct + local_irq_save(flags); + ____napi_schedule(this_cpu_ptr(&softnet_data), n); + local_irq_restore(flags); ++ preempt_check_resched_rt(); + } + EXPORT_SYMBOL(__napi_schedule); + +@@ -8392,6 +8398,7 @@ static int dev_cpu_dead(unsigned int old + + raise_softirq_irqoff(NET_TX_SOFTIRQ); + local_irq_enable(); ++ preempt_check_resched_rt(); + + #ifdef CONFIG_RPS + remsd = oldsd->rps_ipi_list; diff --git a/patches/features/all/rt/softirq-split-locks.patch b/patches/features/all/rt/softirq-split-locks.patch new file mode 100644 index 00000000000..fe44a93ef29 --- /dev/null +++ b/patches/features/all/rt/softirq-split-locks.patch @@ -0,0 +1,833 @@ +From: Thomas Gleixner +Date: Thu, 04 Oct 2012 14:20:47 +0100 +Subject: softirq: Split softirq locks +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +The 3.x RT series removed the split softirq implementation in favour +of pushing softirq processing into the context of the thread which +raised it. Though this prevents us from handling the various softirqs +at different priorities. Now instead of reintroducing the split +softirq threads we split the locks which serialize the softirq +processing. + +If a softirq is raised in context of a thread, then the softirq is +noted on a per thread field, if the thread is in a bh disabled +region. If the softirq is raised from hard interrupt context, then the +bit is set in the flag field of ksoftirqd and ksoftirqd is invoked. +When a thread leaves a bh disabled region, then it tries to execute +the softirqs which have been raised in its own context. It acquires +the per softirq / per cpu lock for the softirq and then checks, +whether the softirq is still pending in the per cpu +local_softirq_pending() field. If yes, it runs the softirq. If no, +then some other task executed it already. This allows for zero config +softirq elevation in the context of user space tasks or interrupt +threads. + +Signed-off-by: Thomas Gleixner +--- + include/linux/bottom_half.h | 34 +++ + include/linux/interrupt.h | 15 + + include/linux/preempt.h | 15 + + include/linux/sched.h | 3 + init/main.c | 1 + kernel/softirq.c | 492 +++++++++++++++++++++++++++++++++++++------- + kernel/time/tick-sched.c | 9 + net/core/dev.c | 6 + 8 files changed, 480 insertions(+), 95 deletions(-) + +--- a/include/linux/bottom_half.h ++++ b/include/linux/bottom_half.h +@@ -4,6 +4,39 @@ + + #include + ++#ifdef CONFIG_PREEMPT_RT_FULL ++ ++extern void __local_bh_disable(void); ++extern void _local_bh_enable(void); ++extern void __local_bh_enable(void); ++ ++static inline void local_bh_disable(void) ++{ ++ __local_bh_disable(); ++} ++ ++static inline void __local_bh_disable_ip(unsigned long ip, unsigned int cnt) ++{ ++ __local_bh_disable(); ++} ++ ++static inline void local_bh_enable(void) ++{ ++ __local_bh_enable(); ++} ++ ++static inline void __local_bh_enable_ip(unsigned long ip, unsigned int cnt) ++{ ++ __local_bh_enable(); ++} ++ ++static inline void local_bh_enable_ip(unsigned long ip) ++{ ++ __local_bh_enable(); ++} ++ ++#else ++ + #ifdef CONFIG_TRACE_IRQFLAGS + extern void __local_bh_disable_ip(unsigned long ip, unsigned int cnt); + #else +@@ -31,5 +64,6 @@ static inline void local_bh_enable(void) + { + __local_bh_enable_ip(_THIS_IP_, SOFTIRQ_DISABLE_OFFSET); + } ++#endif + + #endif /* _LINUX_BH_H */ +--- a/include/linux/interrupt.h ++++ b/include/linux/interrupt.h +@@ -498,10 +498,11 @@ struct softirq_action + void (*action)(struct softirq_action *); + }; + ++#ifndef CONFIG_PREEMPT_RT_FULL + asmlinkage void do_softirq(void); + asmlinkage void __do_softirq(void); +- +-#if defined(__ARCH_HAS_DO_SOFTIRQ) && !defined(CONFIG_PREEMPT_RT_FULL) ++static inline void thread_do_softirq(void) { do_softirq(); } ++#ifdef __ARCH_HAS_DO_SOFTIRQ + void do_softirq_own_stack(void); + #else + static inline void do_softirq_own_stack(void) +@@ -509,6 +510,9 @@ static inline void do_softirq_own_stack( + __do_softirq(); + } + #endif ++#else ++extern void thread_do_softirq(void); ++#endif + + extern void open_softirq(int nr, void (*action)(struct softirq_action *)); + extern void softirq_init(void); +@@ -516,6 +520,7 @@ extern void __raise_softirq_irqoff(unsig + + extern void raise_softirq_irqoff(unsigned int nr); + extern void raise_softirq(unsigned int nr); ++extern void softirq_check_pending_idle(void); + + DECLARE_PER_CPU(struct task_struct *, ksoftirqd); + +@@ -648,6 +653,12 @@ extern void tasklet_kill_immediate(struc + extern void tasklet_init(struct tasklet_struct *t, + void (*func)(unsigned long), unsigned long data); + ++#ifdef CONFIG_PREEMPT_RT_FULL ++extern void softirq_early_init(void); ++#else ++static inline void softirq_early_init(void) { } ++#endif ++ + /* + * Autoprobing for irqs: + * +--- a/include/linux/preempt.h ++++ b/include/linux/preempt.h +@@ -51,7 +51,11 @@ + #define HARDIRQ_OFFSET (1UL << HARDIRQ_SHIFT) + #define NMI_OFFSET (1UL << NMI_SHIFT) + +-#define SOFTIRQ_DISABLE_OFFSET (2 * SOFTIRQ_OFFSET) ++#ifndef CONFIG_PREEMPT_RT_FULL ++# define SOFTIRQ_DISABLE_OFFSET (2 * SOFTIRQ_OFFSET) ++#else ++# define SOFTIRQ_DISABLE_OFFSET (0) ++#endif + + /* We use the MSB mostly because its available */ + #define PREEMPT_NEED_RESCHED 0x80000000 +@@ -81,9 +85,15 @@ + #include + + #define hardirq_count() (preempt_count() & HARDIRQ_MASK) +-#define softirq_count() (preempt_count() & SOFTIRQ_MASK) + #define irq_count() (preempt_count() & (HARDIRQ_MASK | SOFTIRQ_MASK \ + | NMI_MASK)) ++#ifndef CONFIG_PREEMPT_RT_FULL ++# define softirq_count() (preempt_count() & SOFTIRQ_MASK) ++# define in_serving_softirq() (softirq_count() & SOFTIRQ_OFFSET) ++#else ++# define softirq_count() (0UL) ++extern int in_serving_softirq(void); ++#endif + + /* + * Are we doing bottom half or hardware interrupt processing? +@@ -101,7 +111,6 @@ + #define in_irq() (hardirq_count()) + #define in_softirq() (softirq_count()) + #define in_interrupt() (irq_count()) +-#define in_serving_softirq() (softirq_count() & SOFTIRQ_OFFSET) + #define in_nmi() (preempt_count() & NMI_MASK) + #define in_task() (!(preempt_count() & \ + (NMI_MASK | HARDIRQ_MASK | SOFTIRQ_OFFSET))) +--- a/include/linux/sched.h ++++ b/include/linux/sched.h +@@ -1096,6 +1096,8 @@ struct task_struct { + #endif + #ifdef CONFIG_PREEMPT_RT_BASE + struct rcu_head put_rcu; ++ int softirq_nestcnt; ++ unsigned int softirqs_raised; + #endif + #ifdef CONFIG_DEBUG_ATOMIC_SLEEP + unsigned long task_state_change; +@@ -1313,6 +1315,7 @@ extern struct pid *cad_pid; + /* + * Per process flags + */ ++#define PF_IN_SOFTIRQ 0x00000001 /* Task is serving softirq */ + #define PF_IDLE 0x00000002 /* I am an IDLE thread */ + #define PF_EXITING 0x00000004 /* Getting shut down */ + #define PF_EXITPIDONE 0x00000008 /* PI exit done on shut down */ +--- a/init/main.c ++++ b/init/main.c +@@ -544,6 +544,7 @@ asmlinkage __visible void __init start_k + setup_command_line(command_line); + setup_nr_cpu_ids(); + setup_per_cpu_areas(); ++ softirq_early_init(); + boot_cpu_state_init(); + smp_prepare_boot_cpu(); /* arch-specific boot-cpu hooks */ + +--- a/kernel/softirq.c ++++ b/kernel/softirq.c +@@ -26,6 +26,7 @@ + #include + #include + #include ++#include + #include + + #define CREATE_TRACE_POINTS +@@ -63,6 +64,98 @@ const char * const softirq_to_name[NR_SO + "TASKLET", "SCHED", "HRTIMER", "RCU" + }; + ++#ifdef CONFIG_NO_HZ_COMMON ++# ifdef CONFIG_PREEMPT_RT_FULL ++ ++struct softirq_runner { ++ struct task_struct *runner[NR_SOFTIRQS]; ++}; ++ ++static DEFINE_PER_CPU(struct softirq_runner, softirq_runners); ++ ++static inline void softirq_set_runner(unsigned int sirq) ++{ ++ struct softirq_runner *sr = this_cpu_ptr(&softirq_runners); ++ ++ sr->runner[sirq] = current; ++} ++ ++static inline void softirq_clr_runner(unsigned int sirq) ++{ ++ struct softirq_runner *sr = this_cpu_ptr(&softirq_runners); ++ ++ sr->runner[sirq] = NULL; ++} ++ ++/* ++ * On preempt-rt a softirq running context might be blocked on a ++ * lock. There might be no other runnable task on this CPU because the ++ * lock owner runs on some other CPU. So we have to go into idle with ++ * the pending bit set. Therefor we need to check this otherwise we ++ * warn about false positives which confuses users and defeats the ++ * whole purpose of this test. ++ * ++ * This code is called with interrupts disabled. ++ */ ++void softirq_check_pending_idle(void) ++{ ++ static int rate_limit; ++ struct softirq_runner *sr = this_cpu_ptr(&softirq_runners); ++ u32 warnpending; ++ int i; ++ ++ if (rate_limit >= 10) ++ return; ++ ++ warnpending = local_softirq_pending() & SOFTIRQ_STOP_IDLE_MASK; ++ for (i = 0; i < NR_SOFTIRQS; i++) { ++ struct task_struct *tsk = sr->runner[i]; ++ ++ /* ++ * The wakeup code in rtmutex.c wakes up the task ++ * _before_ it sets pi_blocked_on to NULL under ++ * tsk->pi_lock. So we need to check for both: state ++ * and pi_blocked_on. ++ */ ++ if (tsk) { ++ raw_spin_lock(&tsk->pi_lock); ++ if (tsk->pi_blocked_on || tsk->state == TASK_RUNNING) { ++ /* Clear all bits pending in that task */ ++ warnpending &= ~(tsk->softirqs_raised); ++ warnpending &= ~(1 << i); ++ } ++ raw_spin_unlock(&tsk->pi_lock); ++ } ++ } ++ ++ if (warnpending) { ++ printk(KERN_ERR "NOHZ: local_softirq_pending %02x\n", ++ warnpending); ++ rate_limit++; ++ } ++} ++# else ++/* ++ * On !PREEMPT_RT we just printk rate limited: ++ */ ++void softirq_check_pending_idle(void) ++{ ++ static int rate_limit; ++ ++ if (rate_limit < 10 && ++ (local_softirq_pending() & SOFTIRQ_STOP_IDLE_MASK)) { ++ printk(KERN_ERR "NOHZ: local_softirq_pending %02x\n", ++ local_softirq_pending()); ++ rate_limit++; ++ } ++} ++# endif ++ ++#else /* !CONFIG_NO_HZ_COMMON */ ++static inline void softirq_set_runner(unsigned int sirq) { } ++static inline void softirq_clr_runner(unsigned int sirq) { } ++#endif ++ + /* + * we cannot loop indefinitely here to avoid userspace starvation, + * but we also don't want to introduce a worst case 1/HZ latency +@@ -78,6 +171,26 @@ static void wakeup_softirqd(void) + wake_up_process(tsk); + } + ++static void handle_softirq(unsigned int vec_nr) ++{ ++ struct softirq_action *h = softirq_vec + vec_nr; ++ int prev_count; ++ ++ prev_count = preempt_count(); ++ ++ kstat_incr_softirqs_this_cpu(vec_nr); ++ ++ trace_softirq_entry(vec_nr); ++ h->action(h); ++ trace_softirq_exit(vec_nr); ++ if (unlikely(prev_count != preempt_count())) { ++ pr_err("huh, entered softirq %u %s %p with preempt_count %08x, exited with %08x?\n", ++ vec_nr, softirq_to_name[vec_nr], h->action, ++ prev_count, preempt_count()); ++ preempt_count_set(prev_count); ++ } ++} ++ + /* + * If ksoftirqd is scheduled, we do not want to process pending softirqs + * right now. Let ksoftirqd handle this at its own rate, to get fairness. +@@ -89,6 +202,48 @@ static bool ksoftirqd_running(void) + return tsk && (tsk->state == TASK_RUNNING); + } + ++#ifndef CONFIG_PREEMPT_RT_FULL ++static inline int ksoftirqd_softirq_pending(void) ++{ ++ return local_softirq_pending(); ++} ++ ++static void handle_pending_softirqs(u32 pending) ++{ ++ struct softirq_action *h = softirq_vec; ++ int softirq_bit; ++ ++ local_irq_enable(); ++ ++ h = softirq_vec; ++ ++ while ((softirq_bit = ffs(pending))) { ++ unsigned int vec_nr; ++ ++ h += softirq_bit - 1; ++ vec_nr = h - softirq_vec; ++ handle_softirq(vec_nr); ++ ++ h++; ++ pending >>= softirq_bit; ++ } ++ ++ rcu_bh_qs(); ++ local_irq_disable(); ++} ++ ++static void run_ksoftirqd(unsigned int cpu) ++{ ++ local_irq_disable(); ++ if (ksoftirqd_softirq_pending()) { ++ __do_softirq(); ++ local_irq_enable(); ++ cond_resched_rcu_qs(); ++ return; ++ } ++ local_irq_enable(); ++} ++ + /* + * preempt_count and SOFTIRQ_OFFSET usage: + * - preempt_count is changed by SOFTIRQ_OFFSET on entering or leaving +@@ -244,10 +399,8 @@ asmlinkage __visible void __softirq_entr + unsigned long end = jiffies + MAX_SOFTIRQ_TIME; + unsigned long old_flags = current->flags; + int max_restart = MAX_SOFTIRQ_RESTART; +- struct softirq_action *h; + bool in_hardirq; + __u32 pending; +- int softirq_bit; + + /* + * Mask out PF_MEMALLOC s current task context is borrowed for the +@@ -266,36 +419,7 @@ asmlinkage __visible void __softirq_entr + /* Reset the pending bitmask before enabling irqs */ + set_softirq_pending(0); + +- local_irq_enable(); +- +- h = softirq_vec; +- +- while ((softirq_bit = ffs(pending))) { +- unsigned int vec_nr; +- int prev_count; +- +- h += softirq_bit - 1; +- +- vec_nr = h - softirq_vec; +- prev_count = preempt_count(); +- +- kstat_incr_softirqs_this_cpu(vec_nr); +- +- trace_softirq_entry(vec_nr); +- h->action(h); +- trace_softirq_exit(vec_nr); +- if (unlikely(prev_count != preempt_count())) { +- pr_err("huh, entered softirq %u %s %p with preempt_count %08x, exited with %08x?\n", +- vec_nr, softirq_to_name[vec_nr], h->action, +- prev_count, preempt_count()); +- preempt_count_set(prev_count); +- } +- h++; +- pending >>= softirq_bit; +- } +- +- rcu_bh_qs(); +- local_irq_disable(); ++ handle_pending_softirqs(pending); + + pending = local_softirq_pending(); + if (pending) { +@@ -332,6 +456,246 @@ asmlinkage __visible void do_softirq(voi + } + + /* ++ * This function must run with irqs disabled! ++ */ ++void raise_softirq_irqoff(unsigned int nr) ++{ ++ __raise_softirq_irqoff(nr); ++ ++ /* ++ * If we're in an interrupt or softirq, we're done ++ * (this also catches softirq-disabled code). We will ++ * actually run the softirq once we return from ++ * the irq or softirq. ++ * ++ * Otherwise we wake up ksoftirqd to make sure we ++ * schedule the softirq soon. ++ */ ++ if (!in_interrupt()) ++ wakeup_softirqd(); ++} ++ ++void __raise_softirq_irqoff(unsigned int nr) ++{ ++ trace_softirq_raise(nr); ++ or_softirq_pending(1UL << nr); ++} ++ ++static inline void local_bh_disable_nort(void) { local_bh_disable(); } ++static inline void _local_bh_enable_nort(void) { _local_bh_enable(); } ++static void ksoftirqd_set_sched_params(unsigned int cpu) { } ++static void ksoftirqd_clr_sched_params(unsigned int cpu, bool online) { } ++ ++#else /* !PREEMPT_RT_FULL */ ++ ++/* ++ * On RT we serialize softirq execution with a cpu local lock per softirq ++ */ ++static DEFINE_PER_CPU(struct local_irq_lock [NR_SOFTIRQS], local_softirq_locks); ++ ++void __init softirq_early_init(void) ++{ ++ int i; ++ ++ for (i = 0; i < NR_SOFTIRQS; i++) ++ local_irq_lock_init(local_softirq_locks[i]); ++} ++ ++static void lock_softirq(int which) ++{ ++ local_lock(local_softirq_locks[which]); ++} ++ ++static void unlock_softirq(int which) ++{ ++ local_unlock(local_softirq_locks[which]); ++} ++ ++static void do_single_softirq(int which) ++{ ++ unsigned long old_flags = current->flags; ++ ++ current->flags &= ~PF_MEMALLOC; ++ vtime_account_irq_enter(current); ++ current->flags |= PF_IN_SOFTIRQ; ++ lockdep_softirq_enter(); ++ local_irq_enable(); ++ handle_softirq(which); ++ local_irq_disable(); ++ lockdep_softirq_exit(); ++ current->flags &= ~PF_IN_SOFTIRQ; ++ vtime_account_irq_enter(current); ++ current_restore_flags(old_flags, PF_MEMALLOC); ++} ++ ++/* ++ * Called with interrupts disabled. Process softirqs which were raised ++ * in current context (or on behalf of ksoftirqd). ++ */ ++static void do_current_softirqs(void) ++{ ++ while (current->softirqs_raised) { ++ int i = __ffs(current->softirqs_raised); ++ unsigned int pending, mask = (1U << i); ++ ++ current->softirqs_raised &= ~mask; ++ local_irq_enable(); ++ ++ /* ++ * If the lock is contended, we boost the owner to ++ * process the softirq or leave the critical section ++ * now. ++ */ ++ lock_softirq(i); ++ local_irq_disable(); ++ softirq_set_runner(i); ++ /* ++ * Check with the local_softirq_pending() bits, ++ * whether we need to process this still or if someone ++ * else took care of it. ++ */ ++ pending = local_softirq_pending(); ++ if (pending & mask) { ++ set_softirq_pending(pending & ~mask); ++ do_single_softirq(i); ++ } ++ softirq_clr_runner(i); ++ unlock_softirq(i); ++ WARN_ON(current->softirq_nestcnt != 1); ++ } ++} ++ ++void __local_bh_disable(void) ++{ ++ if (++current->softirq_nestcnt == 1) ++ migrate_disable(); ++} ++EXPORT_SYMBOL(__local_bh_disable); ++ ++void __local_bh_enable(void) ++{ ++ if (WARN_ON(current->softirq_nestcnt == 0)) ++ return; ++ ++ local_irq_disable(); ++ if (current->softirq_nestcnt == 1 && current->softirqs_raised) ++ do_current_softirqs(); ++ local_irq_enable(); ++ ++ if (--current->softirq_nestcnt == 0) ++ migrate_enable(); ++} ++EXPORT_SYMBOL(__local_bh_enable); ++ ++int in_serving_softirq(void) ++{ ++ return current->flags & PF_IN_SOFTIRQ; ++} ++EXPORT_SYMBOL(in_serving_softirq); ++ ++/* Called with preemption disabled */ ++static void run_ksoftirqd(unsigned int cpu) ++{ ++ local_irq_disable(); ++ current->softirq_nestcnt++; ++ ++ do_current_softirqs(); ++ current->softirq_nestcnt--; ++ local_irq_enable(); ++ cond_resched_rcu_qs(); ++} ++ ++/* ++ * Called from netif_rx_ni(). Preemption enabled, but migration ++ * disabled. So the cpu can't go away under us. ++ */ ++void thread_do_softirq(void) ++{ ++ if (!in_serving_softirq() && current->softirqs_raised) { ++ current->softirq_nestcnt++; ++ do_current_softirqs(); ++ current->softirq_nestcnt--; ++ } ++} ++ ++static void do_raise_softirq_irqoff(unsigned int nr) ++{ ++ trace_softirq_raise(nr); ++ or_softirq_pending(1UL << nr); ++ ++ /* ++ * If we are not in a hard interrupt and inside a bh disabled ++ * region, we simply raise the flag on current. local_bh_enable() ++ * will make sure that the softirq is executed. Otherwise we ++ * delegate it to ksoftirqd. ++ */ ++ if (!in_irq() && current->softirq_nestcnt) ++ current->softirqs_raised |= (1U << nr); ++ else if (__this_cpu_read(ksoftirqd)) ++ __this_cpu_read(ksoftirqd)->softirqs_raised |= (1U << nr); ++} ++ ++void __raise_softirq_irqoff(unsigned int nr) ++{ ++ do_raise_softirq_irqoff(nr); ++ if (!in_irq() && !current->softirq_nestcnt) ++ wakeup_softirqd(); ++} ++ ++/* ++ * This function must run with irqs disabled! ++ */ ++void raise_softirq_irqoff(unsigned int nr) ++{ ++ do_raise_softirq_irqoff(nr); ++ ++ /* ++ * If we're in an hard interrupt we let irq return code deal ++ * with the wakeup of ksoftirqd. ++ */ ++ if (in_irq()) ++ return; ++ /* ++ * If we are in thread context but outside of a bh disabled ++ * region, we need to wake ksoftirqd as well. ++ * ++ * CHECKME: Some of the places which do that could be wrapped ++ * into local_bh_disable/enable pairs. Though it's unclear ++ * whether this is worth the effort. To find those places just ++ * raise a WARN() if the condition is met. ++ */ ++ if (!current->softirq_nestcnt) ++ wakeup_softirqd(); ++} ++ ++static inline int ksoftirqd_softirq_pending(void) ++{ ++ return current->softirqs_raised; ++} ++ ++static inline void local_bh_disable_nort(void) { } ++static inline void _local_bh_enable_nort(void) { } ++ ++static inline void ksoftirqd_set_sched_params(unsigned int cpu) ++{ ++ struct sched_param param = { .sched_priority = 1 }; ++ ++ sched_setscheduler(current, SCHED_FIFO, ¶m); ++ /* Take over all pending softirqs when starting */ ++ local_irq_disable(); ++ current->softirqs_raised = local_softirq_pending(); ++ local_irq_enable(); ++} ++ ++static inline void ksoftirqd_clr_sched_params(unsigned int cpu, bool online) ++{ ++ struct sched_param param = { .sched_priority = 0 }; ++ ++ sched_setscheduler(current, SCHED_NORMAL, ¶m); ++} ++ ++#endif /* PREEMPT_RT_FULL */ ++/* + * Enter an interrupt context. + */ + void irq_enter(void) +@@ -342,9 +706,9 @@ void irq_enter(void) + * Prevent raise_softirq from needlessly waking up ksoftirqd + * here, as softirq will be serviced on return from interrupt. + */ +- local_bh_disable(); ++ local_bh_disable_nort(); + tick_irq_enter(); +- _local_bh_enable(); ++ _local_bh_enable_nort(); + } + + __irq_enter(); +@@ -352,9 +716,13 @@ void irq_enter(void) + + static inline void invoke_softirq(void) + { ++#ifdef CONFIG_PREEMPT_RT_FULL ++ unsigned long flags; ++#endif ++ + if (ksoftirqd_running()) + return; +- ++#ifndef CONFIG_PREEMPT_RT_FULL + if (!force_irqthreads) { + #ifdef CONFIG_HAVE_IRQ_EXIT_ON_IRQ_STACK + /* +@@ -374,6 +742,14 @@ static inline void invoke_softirq(void) + } else { + wakeup_softirqd(); + } ++#else /* PREEMPT_RT_FULL */ ++ ++ local_irq_save(flags); ++ if (__this_cpu_read(ksoftirqd) && ++ __this_cpu_read(ksoftirqd)->softirqs_raised) ++ wakeup_softirqd(); ++ local_irq_restore(flags); ++#endif + } + + static inline void tick_irq_exit(void) +@@ -416,26 +792,6 @@ void irq_exit(void) + trace_hardirq_exit(); /* must be last! */ + } + +-/* +- * This function must run with irqs disabled! +- */ +-inline void raise_softirq_irqoff(unsigned int nr) +-{ +- __raise_softirq_irqoff(nr); +- +- /* +- * If we're in an interrupt or softirq, we're done +- * (this also catches softirq-disabled code). We will +- * actually run the softirq once we return from +- * the irq or softirq. +- * +- * Otherwise we wake up ksoftirqd to make sure we +- * schedule the softirq soon. +- */ +- if (!in_interrupt()) +- wakeup_softirqd(); +-} +- + void raise_softirq(unsigned int nr) + { + unsigned long flags; +@@ -445,12 +801,6 @@ void raise_softirq(unsigned int nr) + local_irq_restore(flags); + } + +-void __raise_softirq_irqoff(unsigned int nr) +-{ +- trace_softirq_raise(nr); +- or_softirq_pending(1UL << nr); +-} +- + void open_softirq(int nr, void (*action)(struct softirq_action *)) + { + softirq_vec[nr].action = action; +@@ -702,23 +1052,7 @@ EXPORT_SYMBOL(tasklet_unlock_wait); + + static int ksoftirqd_should_run(unsigned int cpu) + { +- return local_softirq_pending(); +-} +- +-static void run_ksoftirqd(unsigned int cpu) +-{ +- local_irq_disable(); +- if (local_softirq_pending()) { +- /* +- * We can safely run softirq on inline stack, as we are not deep +- * in the task stack here. +- */ +- __do_softirq(); +- local_irq_enable(); +- cond_resched_rcu_qs(); +- return; +- } +- local_irq_enable(); ++ return ksoftirqd_softirq_pending(); + } + + #ifdef CONFIG_HOTPLUG_CPU +@@ -785,6 +1119,8 @@ static int takeover_tasklets(unsigned in + + static struct smp_hotplug_thread softirq_threads = { + .store = &ksoftirqd, ++ .setup = ksoftirqd_set_sched_params, ++ .cleanup = ksoftirqd_clr_sched_params, + .thread_should_run = ksoftirqd_should_run, + .thread_fn = run_ksoftirqd, + .thread_comm = "ksoftirqd/%u", +--- a/kernel/time/tick-sched.c ++++ b/kernel/time/tick-sched.c +@@ -910,14 +910,7 @@ static bool can_stop_idle_tick(int cpu, + return false; + + if (unlikely(local_softirq_pending() && cpu_online(cpu))) { +- static int ratelimit; +- +- if (ratelimit < 10 && +- (local_softirq_pending() & SOFTIRQ_STOP_IDLE_MASK)) { +- pr_warn("NOHZ: local_softirq_pending %02x\n", +- (unsigned int) local_softirq_pending()); +- ratelimit++; +- } ++ softirq_check_pending_idle(); + return false; + } + +--- a/net/core/dev.c ++++ b/net/core/dev.c +@@ -4062,11 +4062,9 @@ int netif_rx_ni(struct sk_buff *skb) + + trace_netif_rx_ni_entry(skb); + +- preempt_disable(); ++ local_bh_disable(); + err = netif_rx_internal(skb); +- if (local_softirq_pending()) +- do_softirq(); +- preempt_enable(); ++ local_bh_enable(); + + return err; + } diff --git a/patches/features/all/rt/softirq-split-timer-softirqs-out-of-ksoftirqd.patch b/patches/features/all/rt/softirq-split-timer-softirqs-out-of-ksoftirqd.patch new file mode 100644 index 00000000000..2cb9fcd7262 --- /dev/null +++ b/patches/features/all/rt/softirq-split-timer-softirqs-out-of-ksoftirqd.patch @@ -0,0 +1,208 @@ +From: Sebastian Andrzej Siewior +Date: Wed, 20 Jan 2016 16:34:17 +0100 +Subject: softirq: split timer softirqs out of ksoftirqd +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +The softirqd runs in -RT with SCHED_FIFO (prio 1) and deals mostly with +timer wakeup which can not happen in hardirq context. The prio has been +risen from the normal SCHED_OTHER so the timer wakeup does not happen +too late. +With enough networking load it is possible that the system never goes +idle and schedules ksoftirqd and everything else with a higher priority. +One of the tasks left behind is one of RCU's threads and so we see stalls +and eventually run out of memory. +This patch moves the TIMER and HRTIMER softirqs out of the `ksoftirqd` +thread into its own `ktimersoftd`. The former can now run SCHED_OTHER +(same as mainline) and the latter at SCHED_FIFO due to the wakeups. + +From networking point of view: The NAPI callback runs after the network +interrupt thread completes. If its run time takes too long the NAPI code +itself schedules the `ksoftirqd`. Here in the thread it can run at +SCHED_OTHER priority and it won't defer RCU anymore. + +Cc: stable-rt@vger.kernel.org +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/softirq.c | 85 +++++++++++++++++++++++++++++++++++++++++++++++-------- + 1 file changed, 73 insertions(+), 12 deletions(-) + +--- a/kernel/softirq.c ++++ b/kernel/softirq.c +@@ -58,6 +58,10 @@ EXPORT_SYMBOL(irq_stat); + static struct softirq_action softirq_vec[NR_SOFTIRQS] __cacheline_aligned_in_smp; + + DEFINE_PER_CPU(struct task_struct *, ksoftirqd); ++#ifdef CONFIG_PREEMPT_RT_FULL ++#define TIMER_SOFTIRQS ((1 << TIMER_SOFTIRQ) | (1 << HRTIMER_SOFTIRQ)) ++DEFINE_PER_CPU(struct task_struct *, ktimer_softirqd); ++#endif + + const char * const softirq_to_name[NR_SOFTIRQS] = { + "HI", "TIMER", "NET_TX", "NET_RX", "BLOCK", "IRQ_POLL", +@@ -171,6 +175,17 @@ static void wakeup_softirqd(void) + wake_up_process(tsk); + } + ++#ifdef CONFIG_PREEMPT_RT_FULL ++static void wakeup_timer_softirqd(void) ++{ ++ /* Interrupts are disabled: no need to stop preemption */ ++ struct task_struct *tsk = __this_cpu_read(ktimer_softirqd); ++ ++ if (tsk && tsk->state != TASK_RUNNING) ++ wake_up_process(tsk); ++} ++#endif ++ + static void handle_softirq(unsigned int vec_nr) + { + struct softirq_action *h = softirq_vec + vec_nr; +@@ -484,7 +499,6 @@ void __raise_softirq_irqoff(unsigned int + static inline void local_bh_disable_nort(void) { local_bh_disable(); } + static inline void _local_bh_enable_nort(void) { _local_bh_enable(); } + static void ksoftirqd_set_sched_params(unsigned int cpu) { } +-static void ksoftirqd_clr_sched_params(unsigned int cpu, bool online) { } + + #else /* !PREEMPT_RT_FULL */ + +@@ -631,8 +645,12 @@ void thread_do_softirq(void) + + static void do_raise_softirq_irqoff(unsigned int nr) + { ++ unsigned int mask; ++ ++ mask = 1UL << nr; ++ + trace_softirq_raise(nr); +- or_softirq_pending(1UL << nr); ++ or_softirq_pending(mask); + + /* + * If we are not in a hard interrupt and inside a bh disabled +@@ -641,16 +659,29 @@ static void do_raise_softirq_irqoff(unsi + * delegate it to ksoftirqd. + */ + if (!in_irq() && current->softirq_nestcnt) +- current->softirqs_raised |= (1U << nr); +- else if (__this_cpu_read(ksoftirqd)) +- __this_cpu_read(ksoftirqd)->softirqs_raised |= (1U << nr); ++ current->softirqs_raised |= mask; ++ else if (!__this_cpu_read(ksoftirqd) || !__this_cpu_read(ktimer_softirqd)) ++ return; ++ ++ if (mask & TIMER_SOFTIRQS) ++ __this_cpu_read(ktimer_softirqd)->softirqs_raised |= mask; ++ else ++ __this_cpu_read(ksoftirqd)->softirqs_raised |= mask; ++} ++ ++static void wakeup_proper_softirq(unsigned int nr) ++{ ++ if ((1UL << nr) & TIMER_SOFTIRQS) ++ wakeup_timer_softirqd(); ++ else ++ wakeup_softirqd(); + } + + void __raise_softirq_irqoff(unsigned int nr) + { + do_raise_softirq_irqoff(nr); + if (!in_irq() && !current->softirq_nestcnt) +- wakeup_softirqd(); ++ wakeup_proper_softirq(nr); + } + + /* +@@ -676,7 +707,7 @@ void raise_softirq_irqoff(unsigned int n + * raise a WARN() if the condition is met. + */ + if (!current->softirq_nestcnt) +- wakeup_softirqd(); ++ wakeup_proper_softirq(nr); + } + + static inline int ksoftirqd_softirq_pending(void) +@@ -689,22 +720,37 @@ static inline void _local_bh_enable_nort + + static inline void ksoftirqd_set_sched_params(unsigned int cpu) + { ++ /* Take over all but timer pending softirqs when starting */ ++ local_irq_disable(); ++ current->softirqs_raised = local_softirq_pending() & ~TIMER_SOFTIRQS; ++ local_irq_enable(); ++} ++ ++static inline void ktimer_softirqd_set_sched_params(unsigned int cpu) ++{ + struct sched_param param = { .sched_priority = 1 }; + + sched_setscheduler(current, SCHED_FIFO, ¶m); +- /* Take over all pending softirqs when starting */ ++ ++ /* Take over timer pending softirqs when starting */ + local_irq_disable(); +- current->softirqs_raised = local_softirq_pending(); ++ current->softirqs_raised = local_softirq_pending() & TIMER_SOFTIRQS; + local_irq_enable(); + } + +-static inline void ksoftirqd_clr_sched_params(unsigned int cpu, bool online) ++static inline void ktimer_softirqd_clr_sched_params(unsigned int cpu, ++ bool online) + { + struct sched_param param = { .sched_priority = 0 }; + + sched_setscheduler(current, SCHED_NORMAL, ¶m); + } + ++static int ktimer_softirqd_should_run(unsigned int cpu) ++{ ++ return current->softirqs_raised; ++} ++ + #endif /* PREEMPT_RT_FULL */ + /* + * Enter an interrupt context. +@@ -759,6 +805,9 @@ static inline void invoke_softirq(void) + if (__this_cpu_read(ksoftirqd) && + __this_cpu_read(ksoftirqd)->softirqs_raised) + wakeup_softirqd(); ++ if (__this_cpu_read(ktimer_softirqd) && ++ __this_cpu_read(ktimer_softirqd)->softirqs_raised) ++ wakeup_timer_softirqd(); + local_irq_restore(flags); + #endif + } +@@ -1131,18 +1180,30 @@ static int takeover_tasklets(unsigned in + static struct smp_hotplug_thread softirq_threads = { + .store = &ksoftirqd, + .setup = ksoftirqd_set_sched_params, +- .cleanup = ksoftirqd_clr_sched_params, + .thread_should_run = ksoftirqd_should_run, + .thread_fn = run_ksoftirqd, + .thread_comm = "ksoftirqd/%u", + }; + ++#ifdef CONFIG_PREEMPT_RT_FULL ++static struct smp_hotplug_thread softirq_timer_threads = { ++ .store = &ktimer_softirqd, ++ .setup = ktimer_softirqd_set_sched_params, ++ .cleanup = ktimer_softirqd_clr_sched_params, ++ .thread_should_run = ktimer_softirqd_should_run, ++ .thread_fn = run_ksoftirqd, ++ .thread_comm = "ktimersoftd/%u", ++}; ++#endif ++ + static __init int spawn_ksoftirqd(void) + { + cpuhp_setup_state_nocalls(CPUHP_SOFTIRQ_DEAD, "softirq:dead", NULL, + takeover_tasklets); + BUG_ON(smpboot_register_percpu_thread(&softirq_threads)); +- ++#ifdef CONFIG_PREEMPT_RT_FULL ++ BUG_ON(smpboot_register_percpu_thread(&softirq_timer_threads)); ++#endif + return 0; + } + early_initcall(spawn_ksoftirqd); diff --git a/patches/features/all/rt/softirq-wake-the-timer-softirq-if-needed.patch b/patches/features/all/rt/softirq-wake-the-timer-softirq-if-needed.patch new file mode 100644 index 00000000000..d6440988200 --- /dev/null +++ b/patches/features/all/rt/softirq-wake-the-timer-softirq-if-needed.patch @@ -0,0 +1,80 @@ +From: Mike Galbraith +Date: Fri, 20 Jan 2017 18:10:20 +0100 +Subject: [PATCH] softirq: wake the timer softirq if needed +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +The irq-exit path only checks the "normal"-softirq thread if it is +running and ignores the state of the "timer"-softirq thread. It is possible +that the timer-softirq thread is and has work pending which leads to the +following warning: + +[ 84.087571] NOHZ: local_softirq_pending 02 +[ 84.087593] NOHZ: local_softirq_pending 02 +[ 84.087598] NOHZ: local_softirq_pending 02 +[ 84.087904] NOHZ: local_softirq_pending 02 +[ 84.088526] NOHZ: local_softirq_pending 02 +[ 84.088899] NOHZ: local_softirq_pending 02 +[ 84.089463] NOHZ: local_softirq_pending 02 +[ 115.013470] NOHZ: local_softirq_pending 02 +[ 115.013601] NOHZ: local_softirq_pending 02 +[ 115.013709] NOHZ: local_softirq_pending 02 + +This was introduced during the timer-softirq split. + +Cc: stable-rt@vger.kernel.org +Signed-off-by: Mike Galbraith +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/softirq.c | 11 +++++------ + 1 file changed, 5 insertions(+), 6 deletions(-) + +--- a/kernel/softirq.c ++++ b/kernel/softirq.c +@@ -28,6 +28,7 @@ + #include + #include + #include ++#include + + #define CREATE_TRACE_POINTS + #include +@@ -206,6 +207,7 @@ static void handle_softirq(unsigned int + } + } + ++#ifndef CONFIG_PREEMPT_RT_FULL + /* + * If ksoftirqd is scheduled, we do not want to process pending softirqs + * right now. Let ksoftirqd handle this at its own rate, to get fairness. +@@ -217,7 +219,6 @@ static bool ksoftirqd_running(void) + return tsk && (tsk->state == TASK_RUNNING); + } + +-#ifndef CONFIG_PREEMPT_RT_FULL + static inline int ksoftirqd_softirq_pending(void) + { + return local_softirq_pending(); +@@ -773,13 +774,10 @@ void irq_enter(void) + + static inline void invoke_softirq(void) + { +-#ifdef CONFIG_PREEMPT_RT_FULL +- unsigned long flags; +-#endif +- ++#ifndef CONFIG_PREEMPT_RT_FULL + if (ksoftirqd_running()) + return; +-#ifndef CONFIG_PREEMPT_RT_FULL ++ + if (!force_irqthreads) { + #ifdef CONFIG_HAVE_IRQ_EXIT_ON_IRQ_STACK + /* +@@ -800,6 +798,7 @@ static inline void invoke_softirq(void) + wakeup_softirqd(); + } + #else /* PREEMPT_RT_FULL */ ++ unsigned long flags; + + local_irq_save(flags); + if (__this_cpu_read(ksoftirqd) && diff --git a/patches/features/all/rt/sparc64-use-generic-rwsem-spinlocks-rt.patch b/patches/features/all/rt/sparc64-use-generic-rwsem-spinlocks-rt.patch new file mode 100644 index 00000000000..edfd490365c --- /dev/null +++ b/patches/features/all/rt/sparc64-use-generic-rwsem-spinlocks-rt.patch @@ -0,0 +1,28 @@ +From: Allen Pais +Date: Fri, 13 Dec 2013 09:44:41 +0530 +Subject: sparc64: use generic rwsem spinlocks rt +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Signed-off-by: Allen Pais +Signed-off-by: Sebastian Andrzej Siewior +--- + arch/sparc/Kconfig | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) + +--- a/arch/sparc/Kconfig ++++ b/arch/sparc/Kconfig +@@ -206,12 +206,10 @@ config NR_CPUS + source kernel/Kconfig.hz + + config RWSEM_GENERIC_SPINLOCK +- bool +- default y if SPARC32 ++ def_bool PREEMPT_RT_FULL + + config RWSEM_XCHGADD_ALGORITHM +- bool +- default y if SPARC64 ++ def_bool !RWSEM_GENERIC_SPINLOCK && !PREEMPT_RT_FULL + + config GENERIC_HWEIGHT + bool diff --git a/patches/features/all/rt/spinlock-types-separate-raw.patch b/patches/features/all/rt/spinlock-types-separate-raw.patch new file mode 100644 index 00000000000..71786d08783 --- /dev/null +++ b/patches/features/all/rt/spinlock-types-separate-raw.patch @@ -0,0 +1,211 @@ +Subject: spinlock: Split the lock types header +From: Thomas Gleixner +Date: Wed, 29 Jun 2011 19:34:01 +0200 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Split raw_spinlock into its own file and the remaining spinlock_t into +its own non-RT header. The non-RT header will be replaced later by sleeping +spinlocks. + +Signed-off-by: Thomas Gleixner +--- + include/linux/rwlock_types.h | 4 + + include/linux/spinlock_types.h | 74 ------------------------------------ + include/linux/spinlock_types_nort.h | 33 ++++++++++++++++ + include/linux/spinlock_types_raw.h | 58 ++++++++++++++++++++++++++++ + 4 files changed, 97 insertions(+), 72 deletions(-) + +--- a/include/linux/rwlock_types.h ++++ b/include/linux/rwlock_types.h +@@ -1,6 +1,10 @@ + #ifndef __LINUX_RWLOCK_TYPES_H + #define __LINUX_RWLOCK_TYPES_H + ++#if !defined(__LINUX_SPINLOCK_TYPES_H) ++# error "Do not include directly, include spinlock_types.h" ++#endif ++ + /* + * include/linux/rwlock_types.h - generic rwlock type definitions + * and initializers +--- a/include/linux/spinlock_types.h ++++ b/include/linux/spinlock_types.h +@@ -9,79 +9,9 @@ + * Released under the General Public License (GPL). + */ + +-#if defined(CONFIG_SMP) +-# include +-#else +-# include +-#endif ++#include + +-#include +- +-typedef struct raw_spinlock { +- arch_spinlock_t raw_lock; +-#ifdef CONFIG_GENERIC_LOCKBREAK +- unsigned int break_lock; +-#endif +-#ifdef CONFIG_DEBUG_SPINLOCK +- unsigned int magic, owner_cpu; +- void *owner; +-#endif +-#ifdef CONFIG_DEBUG_LOCK_ALLOC +- struct lockdep_map dep_map; +-#endif +-} raw_spinlock_t; +- +-#define SPINLOCK_MAGIC 0xdead4ead +- +-#define SPINLOCK_OWNER_INIT ((void *)-1L) +- +-#ifdef CONFIG_DEBUG_LOCK_ALLOC +-# define SPIN_DEP_MAP_INIT(lockname) .dep_map = { .name = #lockname } +-#else +-# define SPIN_DEP_MAP_INIT(lockname) +-#endif +- +-#ifdef CONFIG_DEBUG_SPINLOCK +-# define SPIN_DEBUG_INIT(lockname) \ +- .magic = SPINLOCK_MAGIC, \ +- .owner_cpu = -1, \ +- .owner = SPINLOCK_OWNER_INIT, +-#else +-# define SPIN_DEBUG_INIT(lockname) +-#endif +- +-#define __RAW_SPIN_LOCK_INITIALIZER(lockname) \ +- { \ +- .raw_lock = __ARCH_SPIN_LOCK_UNLOCKED, \ +- SPIN_DEBUG_INIT(lockname) \ +- SPIN_DEP_MAP_INIT(lockname) } +- +-#define __RAW_SPIN_LOCK_UNLOCKED(lockname) \ +- (raw_spinlock_t) __RAW_SPIN_LOCK_INITIALIZER(lockname) +- +-#define DEFINE_RAW_SPINLOCK(x) raw_spinlock_t x = __RAW_SPIN_LOCK_UNLOCKED(x) +- +-typedef struct spinlock { +- union { +- struct raw_spinlock rlock; +- +-#ifdef CONFIG_DEBUG_LOCK_ALLOC +-# define LOCK_PADSIZE (offsetof(struct raw_spinlock, dep_map)) +- struct { +- u8 __padding[LOCK_PADSIZE]; +- struct lockdep_map dep_map; +- }; +-#endif +- }; +-} spinlock_t; +- +-#define __SPIN_LOCK_INITIALIZER(lockname) \ +- { { .rlock = __RAW_SPIN_LOCK_INITIALIZER(lockname) } } +- +-#define __SPIN_LOCK_UNLOCKED(lockname) \ +- (spinlock_t ) __SPIN_LOCK_INITIALIZER(lockname) +- +-#define DEFINE_SPINLOCK(x) spinlock_t x = __SPIN_LOCK_UNLOCKED(x) ++#include + + #include + +--- /dev/null ++++ b/include/linux/spinlock_types_nort.h +@@ -0,0 +1,33 @@ ++#ifndef __LINUX_SPINLOCK_TYPES_NORT_H ++#define __LINUX_SPINLOCK_TYPES_NORT_H ++ ++#ifndef __LINUX_SPINLOCK_TYPES_H ++#error "Do not include directly. Include spinlock_types.h instead" ++#endif ++ ++/* ++ * The non RT version maps spinlocks to raw_spinlocks ++ */ ++typedef struct spinlock { ++ union { ++ struct raw_spinlock rlock; ++ ++#ifdef CONFIG_DEBUG_LOCK_ALLOC ++# define LOCK_PADSIZE (offsetof(struct raw_spinlock, dep_map)) ++ struct { ++ u8 __padding[LOCK_PADSIZE]; ++ struct lockdep_map dep_map; ++ }; ++#endif ++ }; ++} spinlock_t; ++ ++#define __SPIN_LOCK_INITIALIZER(lockname) \ ++ { { .rlock = __RAW_SPIN_LOCK_INITIALIZER(lockname) } } ++ ++#define __SPIN_LOCK_UNLOCKED(lockname) \ ++ (spinlock_t ) __SPIN_LOCK_INITIALIZER(lockname) ++ ++#define DEFINE_SPINLOCK(x) spinlock_t x = __SPIN_LOCK_UNLOCKED(x) ++ ++#endif +--- /dev/null ++++ b/include/linux/spinlock_types_raw.h +@@ -0,0 +1,58 @@ ++#ifndef __LINUX_SPINLOCK_TYPES_RAW_H ++#define __LINUX_SPINLOCK_TYPES_RAW_H ++ ++#include ++ ++#if defined(CONFIG_SMP) ++# include ++#else ++# include ++#endif ++ ++#include ++ ++typedef struct raw_spinlock { ++ arch_spinlock_t raw_lock; ++#ifdef CONFIG_GENERIC_LOCKBREAK ++ unsigned int break_lock; ++#endif ++#ifdef CONFIG_DEBUG_SPINLOCK ++ unsigned int magic, owner_cpu; ++ void *owner; ++#endif ++#ifdef CONFIG_DEBUG_LOCK_ALLOC ++ struct lockdep_map dep_map; ++#endif ++} raw_spinlock_t; ++ ++#define SPINLOCK_MAGIC 0xdead4ead ++ ++#define SPINLOCK_OWNER_INIT ((void *)-1L) ++ ++#ifdef CONFIG_DEBUG_LOCK_ALLOC ++# define SPIN_DEP_MAP_INIT(lockname) .dep_map = { .name = #lockname } ++#else ++# define SPIN_DEP_MAP_INIT(lockname) ++#endif ++ ++#ifdef CONFIG_DEBUG_SPINLOCK ++# define SPIN_DEBUG_INIT(lockname) \ ++ .magic = SPINLOCK_MAGIC, \ ++ .owner_cpu = -1, \ ++ .owner = SPINLOCK_OWNER_INIT, ++#else ++# define SPIN_DEBUG_INIT(lockname) ++#endif ++ ++#define __RAW_SPIN_LOCK_INITIALIZER(lockname) \ ++ { \ ++ .raw_lock = __ARCH_SPIN_LOCK_UNLOCKED, \ ++ SPIN_DEBUG_INIT(lockname) \ ++ SPIN_DEP_MAP_INIT(lockname) } ++ ++#define __RAW_SPIN_LOCK_UNLOCKED(lockname) \ ++ (raw_spinlock_t) __RAW_SPIN_LOCK_INITIALIZER(lockname) ++ ++#define DEFINE_RAW_SPINLOCK(x) raw_spinlock_t x = __RAW_SPIN_LOCK_UNLOCKED(x) ++ ++#endif diff --git a/patches/features/all/rt/srcu-Prohibit-call_srcu-use-under-raw-spinlocks.patch b/patches/features/all/rt/srcu-Prohibit-call_srcu-use-under-raw-spinlocks.patch new file mode 100644 index 00000000000..a2b7e128832 --- /dev/null +++ b/patches/features/all/rt/srcu-Prohibit-call_srcu-use-under-raw-spinlocks.patch @@ -0,0 +1,403 @@ +From: "Paul E. McKenney" +Date: Tue, 10 Oct 2017 13:52:30 -0700 +Subject: srcu: Prohibit call_srcu() use under raw spinlocks +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Upstream commit 08265b8f1a139c1cff052b35ab7cf929528f88bb + +Invoking queue_delayed_work() while holding a raw spinlock is forbidden +in -rt kernels, which is exactly what __call_srcu() does, indirectly via +srcu_funnel_gp_start(). This commit therefore downgrades Tree SRCU's +locking from raw to non-raw spinlocks, which works because call_srcu() +is not ever called while holding a raw spinlock. + +Reported-by: Sebastian Andrzej Siewior +Signed-off-by: Paul E. McKenney +--- + include/linux/srcutree.h | 8 +-- + kernel/rcu/srcutree.c | 109 +++++++++++++++++++++++++++++------------------ + 2 files changed, 72 insertions(+), 45 deletions(-) + +--- a/include/linux/srcutree.h ++++ b/include/linux/srcutree.h +@@ -40,7 +40,7 @@ struct srcu_data { + unsigned long srcu_unlock_count[2]; /* Unlocks per CPU. */ + + /* Update-side state. */ +- raw_spinlock_t __private lock ____cacheline_internodealigned_in_smp; ++ spinlock_t __private lock ____cacheline_internodealigned_in_smp; + struct rcu_segcblist srcu_cblist; /* List of callbacks.*/ + unsigned long srcu_gp_seq_needed; /* Furthest future GP needed. */ + unsigned long srcu_gp_seq_needed_exp; /* Furthest future exp GP. */ +@@ -58,7 +58,7 @@ struct srcu_data { + * Node in SRCU combining tree, similar in function to rcu_data. + */ + struct srcu_node { +- raw_spinlock_t __private lock; ++ spinlock_t __private lock; + unsigned long srcu_have_cbs[4]; /* GP seq for children */ + /* having CBs, but only */ + /* is > ->srcu_gq_seq. */ +@@ -78,7 +78,7 @@ struct srcu_struct { + struct srcu_node *level[RCU_NUM_LVLS + 1]; + /* First node at each level. */ + struct mutex srcu_cb_mutex; /* Serialize CB preparation. */ +- raw_spinlock_t __private lock; /* Protect counters */ ++ spinlock_t __private lock; /* Protect counters */ + struct mutex srcu_gp_mutex; /* Serialize GP work. */ + unsigned int srcu_idx; /* Current rdr array element. */ + unsigned long srcu_gp_seq; /* Grace-period seq #. */ +@@ -107,7 +107,7 @@ struct srcu_struct { + #define __SRCU_STRUCT_INIT(name, pcpu_name) \ + { \ + .sda = &pcpu_name, \ +- .lock = __RAW_SPIN_LOCK_UNLOCKED(name.lock), \ ++ .lock = __SPIN_LOCK_UNLOCKED(name.lock), \ + .srcu_gp_seq_needed = 0 - 1, \ + __SRCU_DEP_MAP_INIT(name) \ + } +--- a/kernel/rcu/srcutree.c ++++ b/kernel/rcu/srcutree.c +@@ -54,6 +54,33 @@ static void srcu_invoke_callbacks(struct + static void srcu_reschedule(struct srcu_struct *sp, unsigned long delay); + static void process_srcu(struct work_struct *work); + ++/* Wrappers for lock acquisition and release, see raw_spin_lock_rcu_node(). */ ++#define spin_lock_rcu_node(p) \ ++do { \ ++ spin_lock(&ACCESS_PRIVATE(p, lock)); \ ++ smp_mb__after_unlock_lock(); \ ++} while (0) ++ ++#define spin_unlock_rcu_node(p) spin_unlock(&ACCESS_PRIVATE(p, lock)) ++ ++#define spin_lock_irq_rcu_node(p) \ ++do { \ ++ spin_lock_irq(&ACCESS_PRIVATE(p, lock)); \ ++ smp_mb__after_unlock_lock(); \ ++} while (0) ++ ++#define spin_unlock_irq_rcu_node(p) \ ++ spin_unlock_irq(&ACCESS_PRIVATE(p, lock)) ++ ++#define spin_lock_irqsave_rcu_node(p, flags) \ ++do { \ ++ spin_lock_irqsave(&ACCESS_PRIVATE(p, lock), flags); \ ++ smp_mb__after_unlock_lock(); \ ++} while (0) ++ ++#define spin_unlock_irqrestore_rcu_node(p, flags) \ ++ spin_unlock_irqrestore(&ACCESS_PRIVATE(p, lock), flags) \ ++ + /* + * Initialize SRCU combining tree. Note that statically allocated + * srcu_struct structures might already have srcu_read_lock() and +@@ -78,7 +105,7 @@ static void init_srcu_struct_nodes(struc + + /* Each pass through this loop initializes one srcu_node structure. */ + rcu_for_each_node_breadth_first(sp, snp) { +- raw_spin_lock_init(&ACCESS_PRIVATE(snp, lock)); ++ spin_lock_init(&ACCESS_PRIVATE(snp, lock)); + WARN_ON_ONCE(ARRAY_SIZE(snp->srcu_have_cbs) != + ARRAY_SIZE(snp->srcu_data_have_cbs)); + for (i = 0; i < ARRAY_SIZE(snp->srcu_have_cbs); i++) { +@@ -112,7 +139,7 @@ static void init_srcu_struct_nodes(struc + snp_first = sp->level[level]; + for_each_possible_cpu(cpu) { + sdp = per_cpu_ptr(sp->sda, cpu); +- raw_spin_lock_init(&ACCESS_PRIVATE(sdp, lock)); ++ spin_lock_init(&ACCESS_PRIVATE(sdp, lock)); + rcu_segcblist_init(&sdp->srcu_cblist); + sdp->srcu_cblist_invoking = false; + sdp->srcu_gp_seq_needed = sp->srcu_gp_seq; +@@ -171,7 +198,7 @@ int __init_srcu_struct(struct srcu_struc + /* Don't re-initialize a lock while it is held. */ + debug_check_no_locks_freed((void *)sp, sizeof(*sp)); + lockdep_init_map(&sp->dep_map, name, key, 0); +- raw_spin_lock_init(&ACCESS_PRIVATE(sp, lock)); ++ spin_lock_init(&ACCESS_PRIVATE(sp, lock)); + return init_srcu_struct_fields(sp, false); + } + EXPORT_SYMBOL_GPL(__init_srcu_struct); +@@ -188,7 +215,7 @@ EXPORT_SYMBOL_GPL(__init_srcu_struct); + */ + int init_srcu_struct(struct srcu_struct *sp) + { +- raw_spin_lock_init(&ACCESS_PRIVATE(sp, lock)); ++ spin_lock_init(&ACCESS_PRIVATE(sp, lock)); + return init_srcu_struct_fields(sp, false); + } + EXPORT_SYMBOL_GPL(init_srcu_struct); +@@ -211,13 +238,13 @@ static void check_init_srcu_struct(struc + /* The smp_load_acquire() pairs with the smp_store_release(). */ + if (!rcu_seq_state(smp_load_acquire(&sp->srcu_gp_seq_needed))) /*^^^*/ + return; /* Already initialized. */ +- raw_spin_lock_irqsave_rcu_node(sp, flags); ++ spin_lock_irqsave_rcu_node(sp, flags); + if (!rcu_seq_state(sp->srcu_gp_seq_needed)) { +- raw_spin_unlock_irqrestore_rcu_node(sp, flags); ++ spin_unlock_irqrestore_rcu_node(sp, flags); + return; + } + init_srcu_struct_fields(sp, true); +- raw_spin_unlock_irqrestore_rcu_node(sp, flags); ++ spin_unlock_irqrestore_rcu_node(sp, flags); + } + + /* +@@ -499,7 +526,7 @@ static void srcu_gp_end(struct srcu_stru + mutex_lock(&sp->srcu_cb_mutex); + + /* End the current grace period. */ +- raw_spin_lock_irq_rcu_node(sp); ++ spin_lock_irq_rcu_node(sp); + idx = rcu_seq_state(sp->srcu_gp_seq); + WARN_ON_ONCE(idx != SRCU_STATE_SCAN2); + cbdelay = srcu_get_delay(sp); +@@ -508,7 +535,7 @@ static void srcu_gp_end(struct srcu_stru + gpseq = rcu_seq_current(&sp->srcu_gp_seq); + if (ULONG_CMP_LT(sp->srcu_gp_seq_needed_exp, gpseq)) + sp->srcu_gp_seq_needed_exp = gpseq; +- raw_spin_unlock_irq_rcu_node(sp); ++ spin_unlock_irq_rcu_node(sp); + mutex_unlock(&sp->srcu_gp_mutex); + /* A new grace period can start at this point. But only one. */ + +@@ -516,7 +543,7 @@ static void srcu_gp_end(struct srcu_stru + idx = rcu_seq_ctr(gpseq) % ARRAY_SIZE(snp->srcu_have_cbs); + idxnext = (idx + 1) % ARRAY_SIZE(snp->srcu_have_cbs); + rcu_for_each_node_breadth_first(sp, snp) { +- raw_spin_lock_irq_rcu_node(snp); ++ spin_lock_irq_rcu_node(snp); + cbs = false; + if (snp >= sp->level[rcu_num_lvls - 1]) + cbs = snp->srcu_have_cbs[idx] == gpseq; +@@ -526,7 +553,7 @@ static void srcu_gp_end(struct srcu_stru + snp->srcu_gp_seq_needed_exp = gpseq; + mask = snp->srcu_data_have_cbs[idx]; + snp->srcu_data_have_cbs[idx] = 0; +- raw_spin_unlock_irq_rcu_node(snp); ++ spin_unlock_irq_rcu_node(snp); + if (cbs) + srcu_schedule_cbs_snp(sp, snp, mask, cbdelay); + +@@ -534,11 +561,11 @@ static void srcu_gp_end(struct srcu_stru + if (!(gpseq & counter_wrap_check)) + for (cpu = snp->grplo; cpu <= snp->grphi; cpu++) { + sdp = per_cpu_ptr(sp->sda, cpu); +- raw_spin_lock_irqsave_rcu_node(sdp, flags); ++ spin_lock_irqsave_rcu_node(sdp, flags); + if (ULONG_CMP_GE(gpseq, + sdp->srcu_gp_seq_needed + 100)) + sdp->srcu_gp_seq_needed = gpseq; +- raw_spin_unlock_irqrestore_rcu_node(sdp, flags); ++ spin_unlock_irqrestore_rcu_node(sdp, flags); + } + } + +@@ -546,17 +573,17 @@ static void srcu_gp_end(struct srcu_stru + mutex_unlock(&sp->srcu_cb_mutex); + + /* Start a new grace period if needed. */ +- raw_spin_lock_irq_rcu_node(sp); ++ spin_lock_irq_rcu_node(sp); + gpseq = rcu_seq_current(&sp->srcu_gp_seq); + if (!rcu_seq_state(gpseq) && + ULONG_CMP_LT(gpseq, sp->srcu_gp_seq_needed)) { + srcu_gp_start(sp); +- raw_spin_unlock_irq_rcu_node(sp); ++ spin_unlock_irq_rcu_node(sp); + /* Throttle expedited grace periods: Should be rare! */ + srcu_reschedule(sp, rcu_seq_ctr(gpseq) & 0x3ff + ? 0 : SRCU_INTERVAL); + } else { +- raw_spin_unlock_irq_rcu_node(sp); ++ spin_unlock_irq_rcu_node(sp); + } + } + +@@ -576,18 +603,18 @@ static void srcu_funnel_exp_start(struct + if (rcu_seq_done(&sp->srcu_gp_seq, s) || + ULONG_CMP_GE(READ_ONCE(snp->srcu_gp_seq_needed_exp), s)) + return; +- raw_spin_lock_irqsave_rcu_node(snp, flags); ++ spin_lock_irqsave_rcu_node(snp, flags); + if (ULONG_CMP_GE(snp->srcu_gp_seq_needed_exp, s)) { +- raw_spin_unlock_irqrestore_rcu_node(snp, flags); ++ spin_unlock_irqrestore_rcu_node(snp, flags); + return; + } + WRITE_ONCE(snp->srcu_gp_seq_needed_exp, s); +- raw_spin_unlock_irqrestore_rcu_node(snp, flags); ++ spin_unlock_irqrestore_rcu_node(snp, flags); + } +- raw_spin_lock_irqsave_rcu_node(sp, flags); ++ spin_lock_irqsave_rcu_node(sp, flags); + if (!ULONG_CMP_LT(sp->srcu_gp_seq_needed_exp, s)) + sp->srcu_gp_seq_needed_exp = s; +- raw_spin_unlock_irqrestore_rcu_node(sp, flags); ++ spin_unlock_irqrestore_rcu_node(sp, flags); + } + + /* +@@ -609,12 +636,12 @@ static void srcu_funnel_gp_start(struct + for (; snp != NULL; snp = snp->srcu_parent) { + if (rcu_seq_done(&sp->srcu_gp_seq, s) && snp != sdp->mynode) + return; /* GP already done and CBs recorded. */ +- raw_spin_lock_irqsave_rcu_node(snp, flags); ++ spin_lock_irqsave_rcu_node(snp, flags); + if (ULONG_CMP_GE(snp->srcu_have_cbs[idx], s)) { + snp_seq = snp->srcu_have_cbs[idx]; + if (snp == sdp->mynode && snp_seq == s) + snp->srcu_data_have_cbs[idx] |= sdp->grpmask; +- raw_spin_unlock_irqrestore_rcu_node(snp, flags); ++ spin_unlock_irqrestore_rcu_node(snp, flags); + if (snp == sdp->mynode && snp_seq != s) { + srcu_schedule_cbs_sdp(sdp, do_norm + ? SRCU_INTERVAL +@@ -630,11 +657,11 @@ static void srcu_funnel_gp_start(struct + snp->srcu_data_have_cbs[idx] |= sdp->grpmask; + if (!do_norm && ULONG_CMP_LT(snp->srcu_gp_seq_needed_exp, s)) + snp->srcu_gp_seq_needed_exp = s; +- raw_spin_unlock_irqrestore_rcu_node(snp, flags); ++ spin_unlock_irqrestore_rcu_node(snp, flags); + } + + /* Top of tree, must ensure the grace period will be started. */ +- raw_spin_lock_irqsave_rcu_node(sp, flags); ++ spin_lock_irqsave_rcu_node(sp, flags); + if (ULONG_CMP_LT(sp->srcu_gp_seq_needed, s)) { + /* + * Record need for grace period s. Pair with load +@@ -653,7 +680,7 @@ static void srcu_funnel_gp_start(struct + queue_delayed_work(system_power_efficient_wq, &sp->work, + srcu_get_delay(sp)); + } +- raw_spin_unlock_irqrestore_rcu_node(sp, flags); ++ spin_unlock_irqrestore_rcu_node(sp, flags); + } + + /* +@@ -816,7 +843,7 @@ void __call_srcu(struct srcu_struct *sp, + rhp->func = func; + local_irq_save(flags); + sdp = this_cpu_ptr(sp->sda); +- raw_spin_lock_rcu_node(sdp); ++ spin_lock_rcu_node(sdp); + rcu_segcblist_enqueue(&sdp->srcu_cblist, rhp, false); + rcu_segcblist_advance(&sdp->srcu_cblist, + rcu_seq_current(&sp->srcu_gp_seq)); +@@ -830,7 +857,7 @@ void __call_srcu(struct srcu_struct *sp, + sdp->srcu_gp_seq_needed_exp = s; + needexp = true; + } +- raw_spin_unlock_irqrestore_rcu_node(sdp, flags); ++ spin_unlock_irqrestore_rcu_node(sdp, flags); + if (needgp) + srcu_funnel_gp_start(sp, sdp, s, do_norm); + else if (needexp) +@@ -886,7 +913,7 @@ static void __synchronize_srcu(struct sr + + /* + * Make sure that later code is ordered after the SRCU grace +- * period. This pairs with the raw_spin_lock_irq_rcu_node() ++ * period. This pairs with the spin_lock_irq_rcu_node() + * in srcu_invoke_callbacks(). Unlike Tree RCU, this is needed + * because the current CPU might have been totally uninvolved with + * (and thus unordered against) that grace period. +@@ -1010,7 +1037,7 @@ void srcu_barrier(struct srcu_struct *sp + */ + for_each_possible_cpu(cpu) { + sdp = per_cpu_ptr(sp->sda, cpu); +- raw_spin_lock_irq_rcu_node(sdp); ++ spin_lock_irq_rcu_node(sdp); + atomic_inc(&sp->srcu_barrier_cpu_cnt); + sdp->srcu_barrier_head.func = srcu_barrier_cb; + debug_rcu_head_queue(&sdp->srcu_barrier_head); +@@ -1019,7 +1046,7 @@ void srcu_barrier(struct srcu_struct *sp + debug_rcu_head_unqueue(&sdp->srcu_barrier_head); + atomic_dec(&sp->srcu_barrier_cpu_cnt); + } +- raw_spin_unlock_irq_rcu_node(sdp); ++ spin_unlock_irq_rcu_node(sdp); + } + + /* Remove the initial count, at which point reaching zero can happen. */ +@@ -1068,17 +1095,17 @@ static void srcu_advance_state(struct sr + */ + idx = rcu_seq_state(smp_load_acquire(&sp->srcu_gp_seq)); /* ^^^ */ + if (idx == SRCU_STATE_IDLE) { +- raw_spin_lock_irq_rcu_node(sp); ++ spin_lock_irq_rcu_node(sp); + if (ULONG_CMP_GE(sp->srcu_gp_seq, sp->srcu_gp_seq_needed)) { + WARN_ON_ONCE(rcu_seq_state(sp->srcu_gp_seq)); +- raw_spin_unlock_irq_rcu_node(sp); ++ spin_unlock_irq_rcu_node(sp); + mutex_unlock(&sp->srcu_gp_mutex); + return; + } + idx = rcu_seq_state(READ_ONCE(sp->srcu_gp_seq)); + if (idx == SRCU_STATE_IDLE) + srcu_gp_start(sp); +- raw_spin_unlock_irq_rcu_node(sp); ++ spin_unlock_irq_rcu_node(sp); + if (idx != SRCU_STATE_IDLE) { + mutex_unlock(&sp->srcu_gp_mutex); + return; /* Someone else started the grace period. */ +@@ -1127,19 +1154,19 @@ static void srcu_invoke_callbacks(struct + sdp = container_of(work, struct srcu_data, work.work); + sp = sdp->sp; + rcu_cblist_init(&ready_cbs); +- raw_spin_lock_irq_rcu_node(sdp); ++ spin_lock_irq_rcu_node(sdp); + rcu_segcblist_advance(&sdp->srcu_cblist, + rcu_seq_current(&sp->srcu_gp_seq)); + if (sdp->srcu_cblist_invoking || + !rcu_segcblist_ready_cbs(&sdp->srcu_cblist)) { +- raw_spin_unlock_irq_rcu_node(sdp); ++ spin_unlock_irq_rcu_node(sdp); + return; /* Someone else on the job or nothing to do. */ + } + + /* We are on the job! Extract and invoke ready callbacks. */ + sdp->srcu_cblist_invoking = true; + rcu_segcblist_extract_done_cbs(&sdp->srcu_cblist, &ready_cbs); +- raw_spin_unlock_irq_rcu_node(sdp); ++ spin_unlock_irq_rcu_node(sdp); + rhp = rcu_cblist_dequeue(&ready_cbs); + for (; rhp != NULL; rhp = rcu_cblist_dequeue(&ready_cbs)) { + debug_rcu_head_unqueue(rhp); +@@ -1152,13 +1179,13 @@ static void srcu_invoke_callbacks(struct + * Update counts, accelerate new callbacks, and if needed, + * schedule another round of callback invocation. + */ +- raw_spin_lock_irq_rcu_node(sdp); ++ spin_lock_irq_rcu_node(sdp); + rcu_segcblist_insert_count(&sdp->srcu_cblist, &ready_cbs); + (void)rcu_segcblist_accelerate(&sdp->srcu_cblist, + rcu_seq_snap(&sp->srcu_gp_seq)); + sdp->srcu_cblist_invoking = false; + more = rcu_segcblist_ready_cbs(&sdp->srcu_cblist); +- raw_spin_unlock_irq_rcu_node(sdp); ++ spin_unlock_irq_rcu_node(sdp); + if (more) + srcu_schedule_cbs_sdp(sdp, 0); + } +@@ -1171,7 +1198,7 @@ static void srcu_reschedule(struct srcu_ + { + bool pushgp = true; + +- raw_spin_lock_irq_rcu_node(sp); ++ spin_lock_irq_rcu_node(sp); + if (ULONG_CMP_GE(sp->srcu_gp_seq, sp->srcu_gp_seq_needed)) { + if (!WARN_ON_ONCE(rcu_seq_state(sp->srcu_gp_seq))) { + /* All requests fulfilled, time to go idle. */ +@@ -1181,7 +1208,7 @@ static void srcu_reschedule(struct srcu_ + /* Outstanding request and no GP. Start one. */ + srcu_gp_start(sp); + } +- raw_spin_unlock_irq_rcu_node(sp); ++ spin_unlock_irq_rcu_node(sp); + + if (pushgp) + queue_delayed_work(system_power_efficient_wq, &sp->work, delay); diff --git a/patches/features/all/rt/srcu-replace-local_irqsave-with-a-locallock.patch b/patches/features/all/rt/srcu-replace-local_irqsave-with-a-locallock.patch new file mode 100644 index 00000000000..533cc5a2cb9 --- /dev/null +++ b/patches/features/all/rt/srcu-replace-local_irqsave-with-a-locallock.patch @@ -0,0 +1,71 @@ +From: Sebastian Andrzej Siewior +Date: Thu, 12 Oct 2017 18:37:12 +0200 +Subject: [PATCH] srcu: replace local_irqsave() with a locallock +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +There are two instances which disable interrupts in order to become a +stable this_cpu_ptr() pointer. The restore part is coupled with +spin_unlock_irqrestore() which does not work on RT. +Replace the local_irq_save() call with the appropriate local_lock() +version of it. + +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/rcu/srcutree.c | 14 +++++++++----- + 1 file changed, 9 insertions(+), 5 deletions(-) + +--- a/kernel/rcu/srcutree.c ++++ b/kernel/rcu/srcutree.c +@@ -37,6 +37,7 @@ + #include + #include + #include ++#include + + #include "rcu.h" + #include "rcu_segcblist.h" +@@ -749,6 +750,8 @@ static void srcu_flip(struct srcu_struct + * negligible when amoritized over that time period, and the extra latency + * of a needlessly non-expedited grace period is similarly negligible. + */ ++static DEFINE_LOCAL_IRQ_LOCK(sp_llock); ++ + static bool srcu_might_be_idle(struct srcu_struct *sp) + { + unsigned long curseq; +@@ -757,13 +760,13 @@ static bool srcu_might_be_idle(struct sr + unsigned long t; + + /* If the local srcu_data structure has callbacks, not idle. */ +- local_irq_save(flags); ++ local_lock_irqsave(sp_llock, flags); + sdp = this_cpu_ptr(sp->sda); + if (rcu_segcblist_pend_cbs(&sdp->srcu_cblist)) { +- local_irq_restore(flags); ++ local_unlock_irqrestore(sp_llock, flags); + return false; /* Callbacks already present, so not idle. */ + } +- local_irq_restore(flags); ++ local_unlock_irqrestore(sp_llock, flags); + + /* + * No local callbacks, so probabalistically probe global state. +@@ -841,7 +844,7 @@ void __call_srcu(struct srcu_struct *sp, + return; + } + rhp->func = func; +- local_irq_save(flags); ++ local_lock_irqsave(sp_llock, flags); + sdp = this_cpu_ptr(sp->sda); + spin_lock_rcu_node(sdp); + rcu_segcblist_enqueue(&sdp->srcu_cblist, rhp, false); +@@ -857,7 +860,8 @@ void __call_srcu(struct srcu_struct *sp, + sdp->srcu_gp_seq_needed_exp = s; + needexp = true; + } +- spin_unlock_irqrestore_rcu_node(sdp, flags); ++ spin_unlock_rcu_node(sdp); ++ local_unlock_irqrestore(sp_llock, flags); + if (needgp) + srcu_funnel_gp_start(sp, sdp, s, do_norm); + else if (needexp) diff --git a/patches/features/all/rt/srcu-use-cpu_online-instead-custom-check.patch b/patches/features/all/rt/srcu-use-cpu_online-instead-custom-check.patch new file mode 100644 index 00000000000..37dbcb5d6ba --- /dev/null +++ b/patches/features/all/rt/srcu-use-cpu_online-instead-custom-check.patch @@ -0,0 +1,100 @@ +From: Sebastian Andrzej Siewior +Date: Wed, 13 Sep 2017 14:43:41 +0200 +Subject: [PATCH] srcu: use cpu_online() instead custom check +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +The current check via srcu_online is slightly racy because after looking +at srcu_online there could be an interrupt that interrupted us long +enough until the CPU we checked against went offline. +An alternative would be to hold the hotplug rwsem (so the CPUs don't +change their state) and then check based on cpu_online() if we queue it +on a specific CPU or not. queue_work_on() itself can handle if something +is enqueued on an offline CPU but a timer which is enqueued on an offline +CPU won't fire until the CPU is back online. + +I am not sure if the removal in rcu_init() is okay or not. I assume that +SRCU won't enqueue a work item before SRCU is up and ready. + +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/rcu/srcutree.c | 22 ++++------------------ + kernel/rcu/tree.c | 6 ------ + 2 files changed, 4 insertions(+), 24 deletions(-) + +--- a/kernel/rcu/srcutree.c ++++ b/kernel/rcu/srcutree.c +@@ -36,6 +36,7 @@ + #include + #include + #include ++#include + + #include "rcu.h" + #include "rcu_segcblist.h" +@@ -425,21 +426,6 @@ static void srcu_gp_start(struct srcu_st + } + + /* +- * Track online CPUs to guide callback workqueue placement. +- */ +-DEFINE_PER_CPU(bool, srcu_online); +- +-void srcu_online_cpu(unsigned int cpu) +-{ +- WRITE_ONCE(per_cpu(srcu_online, cpu), true); +-} +- +-void srcu_offline_cpu(unsigned int cpu) +-{ +- WRITE_ONCE(per_cpu(srcu_online, cpu), false); +-} +- +-/* + * Place the workqueue handler on the specified CPU if online, otherwise + * just run it whereever. This is useful for placing workqueue handlers + * that are to invoke the specified CPU's callbacks. +@@ -450,12 +436,12 @@ static bool srcu_queue_delayed_work_on(i + { + bool ret; + +- preempt_disable(); +- if (READ_ONCE(per_cpu(srcu_online, cpu))) ++ cpus_read_lock(); ++ if (cpu_online(cpu)) + ret = queue_delayed_work_on(cpu, wq, dwork, delay); + else + ret = queue_delayed_work(wq, dwork, delay); +- preempt_enable(); ++ cpus_read_unlock(); + return ret; + } + +--- a/kernel/rcu/tree.c ++++ b/kernel/rcu/tree.c +@@ -3775,8 +3775,6 @@ int rcutree_online_cpu(unsigned int cpu) + { + sync_sched_exp_online_cleanup(cpu); + rcutree_affinity_setting(cpu, -1); +- if (IS_ENABLED(CONFIG_TREE_SRCU)) +- srcu_online_cpu(cpu); + return 0; + } + +@@ -3787,8 +3785,6 @@ int rcutree_online_cpu(unsigned int cpu) + int rcutree_offline_cpu(unsigned int cpu) + { + rcutree_affinity_setting(cpu, cpu); +- if (IS_ENABLED(CONFIG_TREE_SRCU)) +- srcu_offline_cpu(cpu); + return 0; + } + +@@ -4236,8 +4232,6 @@ void __init rcu_init(void) + for_each_online_cpu(cpu) { + rcutree_prepare_cpu(cpu); + rcu_cpu_starting(cpu); +- if (IS_ENABLED(CONFIG_TREE_SRCU)) +- srcu_online_cpu(cpu); + } + } + diff --git a/patches/features/all/rt/stop-machine-raw-lock.patch b/patches/features/all/rt/stop-machine-raw-lock.patch new file mode 100644 index 00000000000..3f1865dcebf --- /dev/null +++ b/patches/features/all/rt/stop-machine-raw-lock.patch @@ -0,0 +1,116 @@ +Subject: stop_machine: Use raw spinlocks +From: Thomas Gleixner +Date: Wed, 29 Jun 2011 11:01:51 +0200 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Use raw-locks in stomp_machine() to allow locking in irq-off regions. + +Signed-off-by: Thomas Gleixner +--- + kernel/stop_machine.c | 34 +++++++++++++--------------------- + 1 file changed, 13 insertions(+), 21 deletions(-) + +--- a/kernel/stop_machine.c ++++ b/kernel/stop_machine.c +@@ -36,7 +36,7 @@ struct cpu_stop_done { + struct cpu_stopper { + struct task_struct *thread; + +- spinlock_t lock; ++ raw_spinlock_t lock; + bool enabled; /* is this stopper enabled? */ + struct list_head works; /* list of pending works */ + +@@ -78,14 +78,14 @@ static bool cpu_stop_queue_work(unsigned + unsigned long flags; + bool enabled; + +- spin_lock_irqsave(&stopper->lock, flags); ++ raw_spin_lock_irqsave(&stopper->lock, flags); + enabled = stopper->enabled; + if (enabled) + __cpu_stop_queue_work(stopper, work); + else if (work->done) + cpu_stop_signal_done(work->done); +- spin_unlock_irqrestore(&stopper->lock, flags); + ++ raw_spin_unlock_irqrestore(&stopper->lock, flags); + return enabled; + } + +@@ -231,8 +231,8 @@ static int cpu_stop_queue_two_works(int + struct cpu_stopper *stopper2 = per_cpu_ptr(&cpu_stopper, cpu2); + int err; + retry: +- spin_lock_irq(&stopper1->lock); +- spin_lock_nested(&stopper2->lock, SINGLE_DEPTH_NESTING); ++ raw_spin_lock_irq(&stopper1->lock); ++ raw_spin_lock_nested(&stopper2->lock, SINGLE_DEPTH_NESTING); + + err = -ENOENT; + if (!stopper1->enabled || !stopper2->enabled) +@@ -255,8 +255,8 @@ static int cpu_stop_queue_two_works(int + __cpu_stop_queue_work(stopper1, work1); + __cpu_stop_queue_work(stopper2, work2); + unlock: +- spin_unlock(&stopper2->lock); +- spin_unlock_irq(&stopper1->lock); ++ raw_spin_unlock(&stopper2->lock); ++ raw_spin_unlock_irq(&stopper1->lock); + + if (unlikely(err == -EDEADLK)) { + while (stop_cpus_in_progress) +@@ -448,9 +448,9 @@ static int cpu_stop_should_run(unsigned + unsigned long flags; + int run; + +- spin_lock_irqsave(&stopper->lock, flags); ++ raw_spin_lock_irqsave(&stopper->lock, flags); + run = !list_empty(&stopper->works); +- spin_unlock_irqrestore(&stopper->lock, flags); ++ raw_spin_unlock_irqrestore(&stopper->lock, flags); + return run; + } + +@@ -461,13 +461,13 @@ static void cpu_stopper_thread(unsigned + + repeat: + work = NULL; +- spin_lock_irq(&stopper->lock); ++ raw_spin_lock_irq(&stopper->lock); + if (!list_empty(&stopper->works)) { + work = list_first_entry(&stopper->works, + struct cpu_stop_work, list); + list_del_init(&work->list); + } +- spin_unlock_irq(&stopper->lock); ++ raw_spin_unlock_irq(&stopper->lock); + + if (work) { + cpu_stop_fn_t fn = work->fn; +@@ -475,15 +475,7 @@ static void cpu_stopper_thread(unsigned + struct cpu_stop_done *done = work->done; + int ret; + +- /* +- * Wait until the stopper finished scheduling on all +- * cpus +- */ +- lg_global_lock(&stop_cpus_lock); +- /* +- * Let other cpu threads continue as well +- */ +- lg_global_unlock(&stop_cpus_lock); ++ /* XXX */ + + /* cpu stop callbacks must not sleep, make in_atomic() == T */ + preempt_count_inc(); +@@ -551,7 +543,7 @@ static int __init cpu_stop_init(void) + for_each_possible_cpu(cpu) { + struct cpu_stopper *stopper = &per_cpu(cpu_stopper, cpu); + +- spin_lock_init(&stopper->lock); ++ raw_spin_lock_init(&stopper->lock); + INIT_LIST_HEAD(&stopper->works); + } + diff --git a/patches/features/all/rt/stop_machine-convert-stop_machine_run-to-PREEMPT_RT.patch b/patches/features/all/rt/stop_machine-convert-stop_machine_run-to-PREEMPT_RT.patch new file mode 100644 index 00000000000..96e1aa3a14c --- /dev/null +++ b/patches/features/all/rt/stop_machine-convert-stop_machine_run-to-PREEMPT_RT.patch @@ -0,0 +1,35 @@ +From: Ingo Molnar +Date: Fri, 3 Jul 2009 08:30:27 -0500 +Subject: stop_machine: convert stop_machine_run() to PREEMPT_RT +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Instead of playing with non-preemption, introduce explicit +startup serialization. This is more robust and cleaner as +well. + +Signed-off-by: Ingo Molnar +Signed-off-by: Thomas Gleixner +[bigeasy: XXX: stopper_lock -> stop_cpus_lock] +--- + kernel/stop_machine.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +--- a/kernel/stop_machine.c ++++ b/kernel/stop_machine.c +@@ -475,6 +475,16 @@ static void cpu_stopper_thread(unsigned + struct cpu_stop_done *done = work->done; + int ret; + ++ /* ++ * Wait until the stopper finished scheduling on all ++ * cpus ++ */ ++ lg_global_lock(&stop_cpus_lock); ++ /* ++ * Let other cpu threads continue as well ++ */ ++ lg_global_unlock(&stop_cpus_lock); ++ + /* cpu stop callbacks must not sleep, make in_atomic() == T */ + preempt_count_inc(); + ret = fn(arg); diff --git a/patches/features/all/rt/sunrpc-make-svc_xprt_do_enqueue-use-get_cpu_light.patch b/patches/features/all/rt/sunrpc-make-svc_xprt_do_enqueue-use-get_cpu_light.patch new file mode 100644 index 00000000000..964923e34ed --- /dev/null +++ b/patches/features/all/rt/sunrpc-make-svc_xprt_do_enqueue-use-get_cpu_light.patch @@ -0,0 +1,63 @@ +From: Mike Galbraith +Date: Wed, 18 Feb 2015 16:05:28 +0100 +Subject: sunrpc: Make svc_xprt_do_enqueue() use get_cpu_light() +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +|BUG: sleeping function called from invalid context at kernel/locking/rtmutex.c:915 +|in_atomic(): 1, irqs_disabled(): 0, pid: 3194, name: rpc.nfsd +|Preemption disabled at:[] svc_xprt_received+0x4b/0xc0 [sunrpc] +|CPU: 6 PID: 3194 Comm: rpc.nfsd Not tainted 3.18.7-rt1 #9 +|Hardware name: MEDION MS-7848/MS-7848, BIOS M7848W08.404 11/06/2014 +| ffff880409630000 ffff8800d9a33c78 ffffffff815bdeb5 0000000000000002 +| 0000000000000000 ffff8800d9a33c98 ffffffff81073c86 ffff880408dd6008 +| ffff880408dd6000 ffff8800d9a33cb8 ffffffff815c3d84 ffff88040b3ac000 +|Call Trace: +| [] dump_stack+0x4f/0x9e +| [] __might_sleep+0xe6/0x150 +| [] rt_spin_lock+0x24/0x50 +| [] svc_xprt_do_enqueue+0x80/0x230 [sunrpc] +| [] svc_xprt_received+0x4b/0xc0 [sunrpc] +| [] svc_add_new_perm_xprt+0x6d/0x80 [sunrpc] +| [] svc_addsock+0x143/0x200 [sunrpc] +| [] write_ports+0x28c/0x340 [nfsd] +| [] nfsctl_transaction_write+0x4c/0x80 [nfsd] +| [] vfs_write+0xb3/0x1d0 +| [] SyS_write+0x49/0xb0 +| [] system_call_fastpath+0x16/0x1b + + +Signed-off-by: Mike Galbraith +Signed-off-by: Sebastian Andrzej Siewior +--- + net/sunrpc/svc_xprt.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +--- a/net/sunrpc/svc_xprt.c ++++ b/net/sunrpc/svc_xprt.c +@@ -396,7 +396,7 @@ void svc_xprt_do_enqueue(struct svc_xprt + goto out; + } + +- cpu = get_cpu(); ++ cpu = get_cpu_light(); + pool = svc_pool_for_cpu(xprt->xpt_server, cpu); + + atomic_long_inc(&pool->sp_stats.packets); +@@ -432,7 +432,7 @@ void svc_xprt_do_enqueue(struct svc_xprt + + atomic_long_inc(&pool->sp_stats.threads_woken); + wake_up_process(rqstp->rq_task); +- put_cpu(); ++ put_cpu_light(); + goto out; + } + rcu_read_unlock(); +@@ -453,7 +453,7 @@ void svc_xprt_do_enqueue(struct svc_xprt + goto redo_search; + } + rqstp = NULL; +- put_cpu(); ++ put_cpu_light(); + out: + trace_svc_xprt_do_enqueue(xprt, rqstp); + } diff --git a/patches/features/all/rt/suspend-prevernt-might-sleep-splats.patch b/patches/features/all/rt/suspend-prevernt-might-sleep-splats.patch new file mode 100644 index 00000000000..ea47a7e808a --- /dev/null +++ b/patches/features/all/rt/suspend-prevernt-might-sleep-splats.patch @@ -0,0 +1,107 @@ +From: Thomas Gleixner +Date: Thu, 15 Jul 2010 10:29:00 +0200 +Subject: suspend: Prevent might sleep splats +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +timekeeping suspend/resume calls read_persistant_clock() which takes +rtc_lock. That results in might sleep warnings because at that point +we run with interrupts disabled. + +We cannot convert rtc_lock to a raw spinlock as that would trigger +other might sleep warnings. + +As a temporary workaround we disable the might sleep warnings by +setting system_state to SYSTEM_SUSPEND before calling sysdev_suspend() +and restoring it to SYSTEM_RUNNING afer sysdev_resume(). + +Needs to be revisited. + +Signed-off-by: Thomas Gleixner + +--- + include/linux/kernel.h | 1 + + kernel/power/hibernate.c | 7 +++++++ + kernel/power/suspend.c | 4 ++++ + 3 files changed, 12 insertions(+) + +--- a/include/linux/kernel.h ++++ b/include/linux/kernel.h +@@ -531,6 +531,7 @@ extern enum system_states { + SYSTEM_HALT, + SYSTEM_POWER_OFF, + SYSTEM_RESTART, ++ SYSTEM_SUSPEND, + } system_state; + + #define TAINT_PROPRIETARY_MODULE 0 +--- a/kernel/power/hibernate.c ++++ b/kernel/power/hibernate.c +@@ -287,6 +287,8 @@ static int create_image(int platform_mod + + local_irq_disable(); + ++ system_state = SYSTEM_SUSPEND; ++ + error = syscore_suspend(); + if (error) { + pr_err("Some system devices failed to power down, aborting hibernation\n"); +@@ -317,6 +319,7 @@ static int create_image(int platform_mod + syscore_resume(); + + Enable_irqs: ++ system_state = SYSTEM_RUNNING; + local_irq_enable(); + + Enable_cpus: +@@ -445,6 +448,7 @@ static int resume_target_kernel(bool pla + goto Enable_cpus; + + local_irq_disable(); ++ system_state = SYSTEM_SUSPEND; + + error = syscore_suspend(); + if (error) +@@ -478,6 +482,7 @@ static int resume_target_kernel(bool pla + syscore_resume(); + + Enable_irqs: ++ system_state = SYSTEM_RUNNING; + local_irq_enable(); + + Enable_cpus: +@@ -563,6 +568,7 @@ int hibernation_platform_enter(void) + goto Enable_cpus; + + local_irq_disable(); ++ system_state = SYSTEM_SUSPEND; + syscore_suspend(); + if (pm_wakeup_pending()) { + error = -EAGAIN; +@@ -575,6 +581,7 @@ int hibernation_platform_enter(void) + + Power_up: + syscore_resume(); ++ system_state = SYSTEM_RUNNING; + local_irq_enable(); + + Enable_cpus: +--- a/kernel/power/suspend.c ++++ b/kernel/power/suspend.c +@@ -428,6 +428,8 @@ static int suspend_enter(suspend_state_t + arch_suspend_disable_irqs(); + BUG_ON(!irqs_disabled()); + ++ system_state = SYSTEM_SUSPEND; ++ + error = syscore_suspend(); + if (!error) { + *wakeup = pm_wakeup_pending(); +@@ -443,6 +445,8 @@ static int suspend_enter(suspend_state_t + syscore_resume(); + } + ++ system_state = SYSTEM_RUNNING; ++ + arch_suspend_enable_irqs(); + BUG_ON(irqs_disabled()); + diff --git a/patches/features/all/rt/sysfs-realtime-entry.patch b/patches/features/all/rt/sysfs-realtime-entry.patch new file mode 100644 index 00000000000..1b2d7d641f3 --- /dev/null +++ b/patches/features/all/rt/sysfs-realtime-entry.patch @@ -0,0 +1,48 @@ +Subject: sysfs: Add /sys/kernel/realtime entry +From: Clark Williams +Date: Sat Jul 30 21:55:53 2011 -0500 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Add a /sys/kernel entry to indicate that the kernel is a +realtime kernel. + +Clark says that he needs this for udev rules, udev needs to evaluate +if its a PREEMPT_RT kernel a few thousand times and parsing uname +output is too slow or so. + +Are there better solutions? Should it exist and return 0 on !-rt? + +Signed-off-by: Clark Williams +Signed-off-by: Peter Zijlstra +--- + kernel/ksysfs.c | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +--- a/kernel/ksysfs.c ++++ b/kernel/ksysfs.c +@@ -140,6 +140,15 @@ KERNEL_ATTR_RO(vmcoreinfo); + + #endif /* CONFIG_CRASH_CORE */ + ++#if defined(CONFIG_PREEMPT_RT_FULL) ++static ssize_t realtime_show(struct kobject *kobj, ++ struct kobj_attribute *attr, char *buf) ++{ ++ return sprintf(buf, "%d\n", 1); ++} ++KERNEL_ATTR_RO(realtime); ++#endif ++ + /* whether file capabilities are enabled */ + static ssize_t fscaps_show(struct kobject *kobj, + struct kobj_attribute *attr, char *buf) +@@ -231,6 +240,9 @@ static struct attribute * kernel_attrs[] + &rcu_expedited_attr.attr, + &rcu_normal_attr.attr, + #endif ++#ifdef CONFIG_PREEMPT_RT_FULL ++ &realtime_attr.attr, ++#endif + NULL + }; + diff --git a/patches/features/all/rt/tasklet-rt-prevent-tasklets-from-going-into-infinite-spin-in-rt.patch b/patches/features/all/rt/tasklet-rt-prevent-tasklets-from-going-into-infinite-spin-in-rt.patch new file mode 100644 index 00000000000..fdb9841c71e --- /dev/null +++ b/patches/features/all/rt/tasklet-rt-prevent-tasklets-from-going-into-infinite-spin-in-rt.patch @@ -0,0 +1,392 @@ +Subject: tasklet: Prevent tasklets from going into infinite spin in RT +From: Ingo Molnar +Date: Tue Nov 29 20:18:22 2011 -0500 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +When CONFIG_PREEMPT_RT_FULL is enabled, tasklets run as threads, +and spinlocks turn are mutexes. But this can cause issues with +tasks disabling tasklets. A tasklet runs under ksoftirqd, and +if a tasklets are disabled with tasklet_disable(), the tasklet +count is increased. When a tasklet runs, it checks this counter +and if it is set, it adds itself back on the softirq queue and +returns. + +The problem arises in RT because ksoftirq will see that a softirq +is ready to run (the tasklet softirq just re-armed itself), and will +not sleep, but instead run the softirqs again. The tasklet softirq +will still see that the count is non-zero and will not execute +the tasklet and requeue itself on the softirq again, which will +cause ksoftirqd to run it again and again and again. + +It gets worse because ksoftirqd runs as a real-time thread. +If it preempted the task that disabled tasklets, and that task +has migration disabled, or can't run for other reasons, the tasklet +softirq will never run because the count will never be zero, and +ksoftirqd will go into an infinite loop. As an RT task, it this +becomes a big problem. + +This is a hack solution to have tasklet_disable stop tasklets, and +when a tasklet runs, instead of requeueing the tasklet softirqd +it delays it. When tasklet_enable() is called, and tasklets are +waiting, then the tasklet_enable() will kick the tasklets to continue. +This prevents the lock up from ksoftirq going into an infinite loop. + +[ rostedt@goodmis.org: ported to 3.0-rt ] + +Signed-off-by: Ingo Molnar +Signed-off-by: Steven Rostedt +Signed-off-by: Thomas Gleixner + +--- + include/linux/interrupt.h | 33 ++++--- + kernel/softirq.c | 201 ++++++++++++++++++++++++++++++++-------------- + 2 files changed, 162 insertions(+), 72 deletions(-) + +--- a/include/linux/interrupt.h ++++ b/include/linux/interrupt.h +@@ -537,8 +537,9 @@ static inline struct task_struct *this_c + to be executed on some cpu at least once after this. + * If the tasklet is already scheduled, but its execution is still not + started, it will be executed only once. +- * If this tasklet is already running on another CPU (or schedule is called +- from tasklet itself), it is rescheduled for later. ++ * If this tasklet is already running on another CPU, it is rescheduled ++ for later. ++ * Schedule must not be called from the tasklet itself (a lockup occurs) + * Tasklet is strictly serialized wrt itself, but not + wrt another tasklets. If client needs some intertask synchronization, + he makes it with spinlocks. +@@ -563,27 +564,36 @@ struct tasklet_struct name = { NULL, 0, + enum + { + TASKLET_STATE_SCHED, /* Tasklet is scheduled for execution */ +- TASKLET_STATE_RUN /* Tasklet is running (SMP only) */ ++ TASKLET_STATE_RUN, /* Tasklet is running (SMP only) */ ++ TASKLET_STATE_PENDING /* Tasklet is pending */ + }; + +-#ifdef CONFIG_SMP ++#define TASKLET_STATEF_SCHED (1 << TASKLET_STATE_SCHED) ++#define TASKLET_STATEF_RUN (1 << TASKLET_STATE_RUN) ++#define TASKLET_STATEF_PENDING (1 << TASKLET_STATE_PENDING) ++ ++#if defined(CONFIG_SMP) || defined(CONFIG_PREEMPT_RT_FULL) + static inline int tasklet_trylock(struct tasklet_struct *t) + { + return !test_and_set_bit(TASKLET_STATE_RUN, &(t)->state); + } + ++static inline int tasklet_tryunlock(struct tasklet_struct *t) ++{ ++ return cmpxchg(&t->state, TASKLET_STATEF_RUN, 0) == TASKLET_STATEF_RUN; ++} ++ + static inline void tasklet_unlock(struct tasklet_struct *t) + { + smp_mb__before_atomic(); + clear_bit(TASKLET_STATE_RUN, &(t)->state); + } + +-static inline void tasklet_unlock_wait(struct tasklet_struct *t) +-{ +- while (test_bit(TASKLET_STATE_RUN, &(t)->state)) { barrier(); } +-} ++extern void tasklet_unlock_wait(struct tasklet_struct *t); ++ + #else + #define tasklet_trylock(t) 1 ++#define tasklet_tryunlock(t) 1 + #define tasklet_unlock_wait(t) do { } while (0) + #define tasklet_unlock(t) do { } while (0) + #endif +@@ -632,12 +642,7 @@ static inline void tasklet_disable(struc + smp_mb(); + } + +-static inline void tasklet_enable(struct tasklet_struct *t) +-{ +- smp_mb__before_atomic(); +- atomic_dec(&t->count); +-} +- ++extern void tasklet_enable(struct tasklet_struct *t); + extern void tasklet_kill(struct tasklet_struct *t); + extern void tasklet_kill_immediate(struct tasklet_struct *t, unsigned int cpu); + extern void tasklet_init(struct tasklet_struct *t, +--- a/kernel/softirq.c ++++ b/kernel/softirq.c +@@ -21,6 +21,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -466,15 +467,45 @@ struct tasklet_head { + static DEFINE_PER_CPU(struct tasklet_head, tasklet_vec); + static DEFINE_PER_CPU(struct tasklet_head, tasklet_hi_vec); + ++static void inline ++__tasklet_common_schedule(struct tasklet_struct *t, struct tasklet_head *head, unsigned int nr) ++{ ++ if (tasklet_trylock(t)) { ++again: ++ /* We may have been preempted before tasklet_trylock ++ * and __tasklet_action may have already run. ++ * So double check the sched bit while the takslet ++ * is locked before adding it to the list. ++ */ ++ if (test_bit(TASKLET_STATE_SCHED, &t->state)) { ++ t->next = NULL; ++ *head->tail = t; ++ head->tail = &(t->next); ++ raise_softirq_irqoff(nr); ++ tasklet_unlock(t); ++ } else { ++ /* This is subtle. If we hit the corner case above ++ * It is possible that we get preempted right here, ++ * and another task has successfully called ++ * tasklet_schedule(), then this function, and ++ * failed on the trylock. Thus we must be sure ++ * before releasing the tasklet lock, that the ++ * SCHED_BIT is clear. Otherwise the tasklet ++ * may get its SCHED_BIT set, but not added to the ++ * list ++ */ ++ if (!tasklet_tryunlock(t)) ++ goto again; ++ } ++ } ++} ++ + void __tasklet_schedule(struct tasklet_struct *t) + { + unsigned long flags; + + local_irq_save(flags); +- t->next = NULL; +- *__this_cpu_read(tasklet_vec.tail) = t; +- __this_cpu_write(tasklet_vec.tail, &(t->next)); +- raise_softirq_irqoff(TASKLET_SOFTIRQ); ++ __tasklet_common_schedule(t, this_cpu_ptr(&tasklet_vec), TASKLET_SOFTIRQ); + local_irq_restore(flags); + } + EXPORT_SYMBOL(__tasklet_schedule); +@@ -484,10 +515,7 @@ void __tasklet_hi_schedule(struct taskle + unsigned long flags; + + local_irq_save(flags); +- t->next = NULL; +- *__this_cpu_read(tasklet_hi_vec.tail) = t; +- __this_cpu_write(tasklet_hi_vec.tail, &(t->next)); +- raise_softirq_irqoff(HI_SOFTIRQ); ++ __tasklet_common_schedule(t, this_cpu_ptr(&tasklet_hi_vec), HI_SOFTIRQ); + local_irq_restore(flags); + } + EXPORT_SYMBOL(__tasklet_hi_schedule); +@@ -496,82 +524,122 @@ void __tasklet_hi_schedule_first(struct + { + BUG_ON(!irqs_disabled()); + +- t->next = __this_cpu_read(tasklet_hi_vec.head); +- __this_cpu_write(tasklet_hi_vec.head, t); +- __raise_softirq_irqoff(HI_SOFTIRQ); ++ __tasklet_hi_schedule(t); + } + EXPORT_SYMBOL(__tasklet_hi_schedule_first); + +-static __latent_entropy void tasklet_action(struct softirq_action *a) ++void tasklet_enable(struct tasklet_struct *t) + { +- struct tasklet_struct *list; ++ if (!atomic_dec_and_test(&t->count)) ++ return; ++ if (test_and_clear_bit(TASKLET_STATE_PENDING, &t->state)) ++ tasklet_schedule(t); ++} ++EXPORT_SYMBOL(tasklet_enable); + +- local_irq_disable(); +- list = __this_cpu_read(tasklet_vec.head); +- __this_cpu_write(tasklet_vec.head, NULL); +- __this_cpu_write(tasklet_vec.tail, this_cpu_ptr(&tasklet_vec.head)); +- local_irq_enable(); ++static void __tasklet_action(struct softirq_action *a, ++ struct tasklet_struct *list) ++{ ++ int loops = 1000000; + + while (list) { + struct tasklet_struct *t = list; + + list = list->next; + +- if (tasklet_trylock(t)) { +- if (!atomic_read(&t->count)) { +- if (!test_and_clear_bit(TASKLET_STATE_SCHED, +- &t->state)) +- BUG(); +- t->func(t->data); +- tasklet_unlock(t); +- continue; +- } +- tasklet_unlock(t); ++ /* ++ * Should always succeed - after a tasklist got on the ++ * list (after getting the SCHED bit set from 0 to 1), ++ * nothing but the tasklet softirq it got queued to can ++ * lock it: ++ */ ++ if (!tasklet_trylock(t)) { ++ WARN_ON(1); ++ continue; + } + +- local_irq_disable(); + t->next = NULL; +- *__this_cpu_read(tasklet_vec.tail) = t; +- __this_cpu_write(tasklet_vec.tail, &(t->next)); +- __raise_softirq_irqoff(TASKLET_SOFTIRQ); +- local_irq_enable(); ++ ++ /* ++ * If we cannot handle the tasklet because it's disabled, ++ * mark it as pending. tasklet_enable() will later ++ * re-schedule the tasklet. ++ */ ++ if (unlikely(atomic_read(&t->count))) { ++out_disabled: ++ /* implicit unlock: */ ++ wmb(); ++ t->state = TASKLET_STATEF_PENDING; ++ continue; ++ } ++ ++ /* ++ * After this point on the tasklet might be rescheduled ++ * on another CPU, but it can only be added to another ++ * CPU's tasklet list if we unlock the tasklet (which we ++ * dont do yet). ++ */ ++ if (!test_and_clear_bit(TASKLET_STATE_SCHED, &t->state)) ++ WARN_ON(1); ++ ++again: ++ t->func(t->data); ++ ++ /* ++ * Try to unlock the tasklet. We must use cmpxchg, because ++ * another CPU might have scheduled or disabled the tasklet. ++ * We only allow the STATE_RUN -> 0 transition here. ++ */ ++ while (!tasklet_tryunlock(t)) { ++ /* ++ * If it got disabled meanwhile, bail out: ++ */ ++ if (atomic_read(&t->count)) ++ goto out_disabled; ++ /* ++ * If it got scheduled meanwhile, re-execute ++ * the tasklet function: ++ */ ++ if (test_and_clear_bit(TASKLET_STATE_SCHED, &t->state)) ++ goto again; ++ if (!--loops) { ++ printk("hm, tasklet state: %08lx\n", t->state); ++ WARN_ON(1); ++ tasklet_unlock(t); ++ break; ++ } ++ } + } + } + ++static void tasklet_action(struct softirq_action *a) ++{ ++ struct tasklet_struct *list; ++ ++ local_irq_disable(); ++ ++ list = __this_cpu_read(tasklet_vec.head); ++ __this_cpu_write(tasklet_vec.head, NULL); ++ __this_cpu_write(tasklet_vec.tail, this_cpu_ptr(&tasklet_vec.head)); ++ ++ local_irq_enable(); ++ ++ __tasklet_action(a, list); ++} ++ + static __latent_entropy void tasklet_hi_action(struct softirq_action *a) + { + struct tasklet_struct *list; + + local_irq_disable(); ++ + list = __this_cpu_read(tasklet_hi_vec.head); + __this_cpu_write(tasklet_hi_vec.head, NULL); + __this_cpu_write(tasklet_hi_vec.tail, this_cpu_ptr(&tasklet_hi_vec.head)); +- local_irq_enable(); +- +- while (list) { +- struct tasklet_struct *t = list; + +- list = list->next; +- +- if (tasklet_trylock(t)) { +- if (!atomic_read(&t->count)) { +- if (!test_and_clear_bit(TASKLET_STATE_SCHED, +- &t->state)) +- BUG(); +- t->func(t->data); +- tasklet_unlock(t); +- continue; +- } +- tasklet_unlock(t); +- } ++ local_irq_enable(); + +- local_irq_disable(); +- t->next = NULL; +- *__this_cpu_read(tasklet_hi_vec.tail) = t; +- __this_cpu_write(tasklet_hi_vec.tail, &(t->next)); +- __raise_softirq_irqoff(HI_SOFTIRQ); +- local_irq_enable(); +- } ++ __tasklet_action(a, list); + } + + void tasklet_init(struct tasklet_struct *t, +@@ -592,7 +660,7 @@ void tasklet_kill(struct tasklet_struct + + while (test_and_set_bit(TASKLET_STATE_SCHED, &t->state)) { + do { +- yield(); ++ msleep(1); + } while (test_bit(TASKLET_STATE_SCHED, &t->state)); + } + tasklet_unlock_wait(t); +@@ -615,6 +683,23 @@ void __init softirq_init(void) + open_softirq(HI_SOFTIRQ, tasklet_hi_action); + } + ++#if defined(CONFIG_SMP) || defined(CONFIG_PREEMPT_RT_FULL) ++void tasklet_unlock_wait(struct tasklet_struct *t) ++{ ++ while (test_bit(TASKLET_STATE_RUN, &(t)->state)) { ++ /* ++ * Hack for now to avoid this busy-loop: ++ */ ++#ifdef CONFIG_PREEMPT_RT_FULL ++ msleep(1); ++#else ++ barrier(); ++#endif ++ } ++} ++EXPORT_SYMBOL(tasklet_unlock_wait); ++#endif ++ + static int ksoftirqd_should_run(unsigned int cpu) + { + return local_softirq_pending(); diff --git a/patches/features/all/rt/thermal-Defer-thermal-wakups-to-threads.patch b/patches/features/all/rt/thermal-Defer-thermal-wakups-to-threads.patch new file mode 100644 index 00000000000..f9f2d386e5f --- /dev/null +++ b/patches/features/all/rt/thermal-Defer-thermal-wakups-to-threads.patch @@ -0,0 +1,130 @@ +From: Daniel Wagner +Date: Tue, 17 Feb 2015 09:37:44 +0100 +Subject: thermal: Defer thermal wakups to threads +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +On RT the spin lock in pkg_temp_thermal_platfrom_thermal_notify will +call schedule while we run in irq context. + +[] dump_stack+0x4e/0x8f +[] __schedule_bug+0xa6/0xb4 +[] __schedule+0x5b4/0x700 +[] schedule+0x2a/0x90 +[] rt_spin_lock_slowlock+0xe5/0x2d0 +[] rt_spin_lock+0x25/0x30 +[] pkg_temp_thermal_platform_thermal_notify+0x45/0x134 [x86_pkg_temp_thermal] +[] ? therm_throt_process+0x1b/0x160 +[] intel_thermal_interrupt+0x211/0x250 +[] smp_thermal_interrupt+0x21/0x40 +[] thermal_interrupt+0x6d/0x80 + +Let's defer the work to a kthread. + +Signed-off-by: Daniel Wagner +[bigeasy: reoder init/denit position. TODO: flush swork on exit] +Signed-off-by: Sebastian Andrzej Siewior +--- + drivers/thermal/x86_pkg_temp_thermal.c | 52 +++++++++++++++++++++++++++++++-- + 1 file changed, 49 insertions(+), 3 deletions(-) + +--- a/drivers/thermal/x86_pkg_temp_thermal.c ++++ b/drivers/thermal/x86_pkg_temp_thermal.c +@@ -29,6 +29,7 @@ + #include + #include + #include ++#include + #include + #include + +@@ -329,7 +330,7 @@ static void pkg_thermal_schedule_work(in + schedule_delayed_work_on(cpu, work, ms); + } + +-static int pkg_thermal_notify(u64 msr_val) ++static void pkg_thermal_notify_work(struct swork_event *event) + { + int cpu = smp_processor_id(); + struct pkg_device *pkgdev; +@@ -348,9 +349,47 @@ static int pkg_thermal_notify(u64 msr_va + } + + spin_unlock_irqrestore(&pkg_temp_lock, flags); ++} ++ ++#ifdef CONFIG_PREEMPT_RT_FULL ++static struct swork_event notify_work; ++ ++static int pkg_thermal_notify_work_init(void) ++{ ++ int err; ++ ++ err = swork_get(); ++ if (err) ++ return err; ++ ++ INIT_SWORK(¬ify_work, pkg_thermal_notify_work); + return 0; + } + ++static void pkg_thermal_notify_work_cleanup(void) ++{ ++ swork_put(); ++} ++ ++static int pkg_thermal_notify(u64 msr_val) ++{ ++ swork_queue(¬ify_work); ++ return 0; ++} ++ ++#else /* !CONFIG_PREEMPT_RT_FULL */ ++ ++static int pkg_thermal_notify_work_init(void) { return 0; } ++ ++static void pkg_thermal_notify_work_cleanup(void) { } ++ ++static int pkg_thermal_notify(u64 msr_val) ++{ ++ pkg_thermal_notify_work(NULL); ++ return 0; ++} ++#endif /* CONFIG_PREEMPT_RT_FULL */ ++ + static int pkg_temp_thermal_device_add(unsigned int cpu) + { + int pkgid = topology_logical_package_id(cpu); +@@ -515,10 +554,15 @@ static int __init pkg_temp_thermal_init( + if (!x86_match_cpu(pkg_temp_thermal_ids)) + return -ENODEV; + ++ if (!pkg_thermal_notify_work_init()) ++ return -ENODEV; ++ + max_packages = topology_max_packages(); + packages = kzalloc(max_packages * sizeof(struct pkg_device *), GFP_KERNEL); +- if (!packages) +- return -ENOMEM; ++ if (!packages) { ++ ret = -ENOMEM; ++ goto err; ++ } + + ret = cpuhp_setup_state(CPUHP_AP_ONLINE_DYN, "thermal/x86_pkg:online", + pkg_thermal_cpu_online, pkg_thermal_cpu_offline); +@@ -536,6 +580,7 @@ static int __init pkg_temp_thermal_init( + return 0; + + err: ++ pkg_thermal_notify_work_cleanup(); + kfree(packages); + return ret; + } +@@ -549,6 +594,7 @@ static void __exit pkg_temp_thermal_exit + cpuhp_remove_state(pkg_thermal_hp_state); + debugfs_remove_recursive(debugfs); + kfree(packages); ++ pkg_thermal_notify_work_cleanup(); + } + module_exit(pkg_temp_thermal_exit) + diff --git a/patches/features/all/rt/time-hrtimer-avoid-schedule_work-with-interrupts-dis.patch b/patches/features/all/rt/time-hrtimer-avoid-schedule_work-with-interrupts-dis.patch new file mode 100644 index 00000000000..71d131d21f8 --- /dev/null +++ b/patches/features/all/rt/time-hrtimer-avoid-schedule_work-with-interrupts-dis.patch @@ -0,0 +1,53 @@ +From: Sebastian Andrzej Siewior +Date: Wed, 15 Nov 2017 17:29:51 +0100 +Subject: [PATCH] time/hrtimer: avoid schedule_work() with interrupts disabled +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +The NOHZ code tries to schedule a workqueue with interrupts disabled. +Since this does not work -RT I am switching it to swork instead. + +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/time/timer.c | 15 +++++++++++---- + 1 file changed, 11 insertions(+), 4 deletions(-) + +--- a/kernel/time/timer.c ++++ b/kernel/time/timer.c +@@ -217,8 +217,7 @@ static DEFINE_PER_CPU(struct timer_base, + static DEFINE_STATIC_KEY_FALSE(timers_nohz_active); + static DEFINE_MUTEX(timer_keys_mutex); + +-static void timer_update_keys(struct work_struct *work); +-static DECLARE_WORK(timer_update_work, timer_update_keys); ++static struct swork_event timer_update_swork; + + #ifdef CONFIG_SMP + unsigned int sysctl_timer_migration = 1; +@@ -238,7 +237,7 @@ static void timers_update_migration(void + static inline void timers_update_migration(void) { } + #endif /* !CONFIG_SMP */ + +-static void timer_update_keys(struct work_struct *work) ++static void timer_update_keys(struct swork_event *event) + { + mutex_lock(&timer_keys_mutex); + timers_update_migration(); +@@ -248,9 +247,17 @@ static void timer_update_keys(struct wor + + void timers_update_nohz(void) + { +- schedule_work(&timer_update_work); ++ swork_queue(&timer_update_swork); + } + ++static __init int hrtimer_init_thread(void) ++{ ++ WARN_ON(swork_get()); ++ INIT_SWORK(&timer_update_swork, timer_update_keys); ++ return 0; ++} ++early_initcall(hrtimer_init_thread); ++ + int timer_migration_handler(struct ctl_table *table, int write, + void __user *buffer, size_t *lenp, + loff_t *ppos) diff --git a/patches/features/all/rt/timekeeping-split-jiffies-lock.patch b/patches/features/all/rt/timekeeping-split-jiffies-lock.patch new file mode 100644 index 00000000000..588939dd7c3 --- /dev/null +++ b/patches/features/all/rt/timekeeping-split-jiffies-lock.patch @@ -0,0 +1,157 @@ +Subject: timekeeping: Split jiffies seqlock +From: Thomas Gleixner +Date: Thu, 14 Feb 2013 22:36:59 +0100 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Replace jiffies_lock seqlock with a simple seqcounter and a rawlock so +it can be taken in atomic context on RT. + +Signed-off-by: Thomas Gleixner +--- + kernel/time/jiffies.c | 7 ++++--- + kernel/time/tick-common.c | 10 ++++++---- + kernel/time/tick-sched.c | 19 ++++++++++++------- + kernel/time/timekeeping.c | 6 ++++-- + kernel/time/timekeeping.h | 3 ++- + 5 files changed, 28 insertions(+), 17 deletions(-) + +--- a/kernel/time/jiffies.c ++++ b/kernel/time/jiffies.c +@@ -74,7 +74,8 @@ static struct clocksource clocksource_ji + .max_cycles = 10, + }; + +-__cacheline_aligned_in_smp DEFINE_SEQLOCK(jiffies_lock); ++__cacheline_aligned_in_smp DEFINE_RAW_SPINLOCK(jiffies_lock); ++__cacheline_aligned_in_smp seqcount_t jiffies_seq; + + #if (BITS_PER_LONG < 64) + u64 get_jiffies_64(void) +@@ -83,9 +84,9 @@ u64 get_jiffies_64(void) + u64 ret; + + do { +- seq = read_seqbegin(&jiffies_lock); ++ seq = read_seqcount_begin(&jiffies_seq); + ret = jiffies_64; +- } while (read_seqretry(&jiffies_lock, seq)); ++ } while (read_seqcount_retry(&jiffies_seq, seq)); + return ret; + } + EXPORT_SYMBOL(get_jiffies_64); +--- a/kernel/time/tick-common.c ++++ b/kernel/time/tick-common.c +@@ -79,13 +79,15 @@ int tick_is_oneshot_available(void) + static void tick_periodic(int cpu) + { + if (tick_do_timer_cpu == cpu) { +- write_seqlock(&jiffies_lock); ++ raw_spin_lock(&jiffies_lock); ++ write_seqcount_begin(&jiffies_seq); + + /* Keep track of the next tick event */ + tick_next_period = ktime_add(tick_next_period, tick_period); + + do_timer(1); +- write_sequnlock(&jiffies_lock); ++ write_seqcount_end(&jiffies_seq); ++ raw_spin_unlock(&jiffies_lock); + update_wall_time(); + } + +@@ -157,9 +159,9 @@ void tick_setup_periodic(struct clock_ev + ktime_t next; + + do { +- seq = read_seqbegin(&jiffies_lock); ++ seq = read_seqcount_begin(&jiffies_seq); + next = tick_next_period; +- } while (read_seqretry(&jiffies_lock, seq)); ++ } while (read_seqcount_retry(&jiffies_seq, seq)); + + clockevents_switch_state(dev, CLOCK_EVT_STATE_ONESHOT); + +--- a/kernel/time/tick-sched.c ++++ b/kernel/time/tick-sched.c +@@ -66,7 +66,8 @@ static void tick_do_update_jiffies64(kti + return; + + /* Reevaluate with jiffies_lock held */ +- write_seqlock(&jiffies_lock); ++ raw_spin_lock(&jiffies_lock); ++ write_seqcount_begin(&jiffies_seq); + + delta = ktime_sub(now, last_jiffies_update); + if (delta >= tick_period) { +@@ -89,10 +90,12 @@ static void tick_do_update_jiffies64(kti + /* Keep the tick_next_period variable up to date */ + tick_next_period = ktime_add(last_jiffies_update, tick_period); + } else { +- write_sequnlock(&jiffies_lock); ++ write_seqcount_end(&jiffies_seq); ++ raw_spin_unlock(&jiffies_lock); + return; + } +- write_sequnlock(&jiffies_lock); ++ write_seqcount_end(&jiffies_seq); ++ raw_spin_unlock(&jiffies_lock); + update_wall_time(); + } + +@@ -103,12 +106,14 @@ static ktime_t tick_init_jiffy_update(vo + { + ktime_t period; + +- write_seqlock(&jiffies_lock); ++ raw_spin_lock(&jiffies_lock); ++ write_seqcount_begin(&jiffies_seq); + /* Did we start the jiffies update yet ? */ + if (last_jiffies_update == 0) + last_jiffies_update = tick_next_period; + period = last_jiffies_update; +- write_sequnlock(&jiffies_lock); ++ write_seqcount_end(&jiffies_seq); ++ raw_spin_unlock(&jiffies_lock); + return period; + } + +@@ -689,10 +694,10 @@ static ktime_t tick_nohz_stop_sched_tick + + /* Read jiffies and the time when jiffies were updated last */ + do { +- seq = read_seqbegin(&jiffies_lock); ++ seq = read_seqcount_begin(&jiffies_seq); + basemono = last_jiffies_update; + basejiff = jiffies; +- } while (read_seqretry(&jiffies_lock, seq)); ++ } while (read_seqcount_retry(&jiffies_seq, seq)); + ts->last_jiffies = basejiff; + + /* +--- a/kernel/time/timekeeping.c ++++ b/kernel/time/timekeeping.c +@@ -2326,8 +2326,10 @@ EXPORT_SYMBOL(hardpps); + */ + void xtime_update(unsigned long ticks) + { +- write_seqlock(&jiffies_lock); ++ raw_spin_lock(&jiffies_lock); ++ write_seqcount_begin(&jiffies_seq); + do_timer(ticks); +- write_sequnlock(&jiffies_lock); ++ write_seqcount_end(&jiffies_seq); ++ raw_spin_unlock(&jiffies_lock); + update_wall_time(); + } +--- a/kernel/time/timekeeping.h ++++ b/kernel/time/timekeeping.h +@@ -18,7 +18,8 @@ extern void timekeeping_resume(void); + extern void do_timer(unsigned long ticks); + extern void update_wall_time(void); + +-extern seqlock_t jiffies_lock; ++extern raw_spinlock_t jiffies_lock; ++extern seqcount_t jiffies_seq; + + #define CS_NAME_LEN 32 + diff --git a/patches/features/all/rt/timer-delay-waking-softirqs-from-the-jiffy-tick.patch b/patches/features/all/rt/timer-delay-waking-softirqs-from-the-jiffy-tick.patch new file mode 100644 index 00000000000..c9a25f7e1b3 --- /dev/null +++ b/patches/features/all/rt/timer-delay-waking-softirqs-from-the-jiffy-tick.patch @@ -0,0 +1,76 @@ +From: Peter Zijlstra +Date: Fri, 21 Aug 2009 11:56:45 +0200 +Subject: timer: delay waking softirqs from the jiffy tick +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +People were complaining about broken balancing with the recent -rt +series. + +A look at /proc/sched_debug yielded: + +cpu#0, 2393.874 MHz + .nr_running : 0 + .load : 0 + .cpu_load[0] : 177522 + .cpu_load[1] : 177522 + .cpu_load[2] : 177522 + .cpu_load[3] : 177522 + .cpu_load[4] : 177522 +cpu#1, 2393.874 MHz + .nr_running : 4 + .load : 4096 + .cpu_load[0] : 181618 + .cpu_load[1] : 180850 + .cpu_load[2] : 180274 + .cpu_load[3] : 179938 + .cpu_load[4] : 179758 + +Which indicated the cpu_load computation was hosed, the 177522 value +indicates that there is one RT task runnable. Initially I thought the +old problem of calculating the cpu_load from a softirq had re-surfaced, +however looking at the code shows its being done from scheduler_tick(). + +[ we really should fix this RT/cfs interaction some day... ] + +A few trace_printk()s later: + + sirq-timer/1-19 [001] 174.289744: 19: 50:S ==> [001] 0:140:R + -0 [001] 174.290724: enqueue_task_rt: adding task: 19/sirq-timer/1 with load: 177522 + -0 [001] 174.290725: 0:140:R + [001] 19: 50:S sirq-timer/1 + -0 [001] 174.290730: scheduler_tick: current load: 177522 + -0 [001] 174.290732: scheduler_tick: current: 0/swapper + -0 [001] 174.290736: 0:140:R ==> [001] 19: 50:R sirq-timer/1 + sirq-timer/1-19 [001] 174.290741: dequeue_task_rt: removing task: 19/sirq-timer/1 with load: 177522 + sirq-timer/1-19 [001] 174.290743: 19: 50:S ==> [001] 0:140:R + +We see that we always raise the timer softirq before doing the load +calculation. Avoid this by re-ordering the scheduler_tick() call in +update_process_times() to occur before we deal with timers. + +This lowers the load back to sanity and restores regular load-balancing +behaviour. + +Signed-off-by: Peter Zijlstra +Signed-off-by: Thomas Gleixner + +--- + kernel/time/timer.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/kernel/time/timer.c ++++ b/kernel/time/timer.c +@@ -1628,13 +1628,13 @@ void update_process_times(int user_tick) + + /* Note: this timer irq context must be accounted for as well. */ + account_process_tick(p, user_tick); ++ scheduler_tick(); + run_local_timers(); + rcu_check_callbacks(user_tick); + #ifdef CONFIG_IRQ_WORK + if (in_irq()) + irq_work_tick(); + #endif +- scheduler_tick(); + if (IS_ENABLED(CONFIG_POSIX_TIMERS)) + run_posix_cpu_timers(p); + } diff --git a/patches/features/all/rt/timer-fd-avoid-live-lock.patch b/patches/features/all/rt/timer-fd-avoid-live-lock.patch new file mode 100644 index 00000000000..fef1db3e1d9 --- /dev/null +++ b/patches/features/all/rt/timer-fd-avoid-live-lock.patch @@ -0,0 +1,31 @@ +Subject: timer-fd: Prevent live lock +From: Thomas Gleixner +Date: Wed, 25 Jan 2012 11:08:40 +0100 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +If hrtimer_try_to_cancel() requires a retry, then depending on the +priority setting te retry loop might prevent timer callback completion +on RT. Prevent that by waiting for completion on RT, no change for a +non RT kernel. + +Reported-by: Sankara Muthukrishnan +Signed-off-by: Thomas Gleixner + +--- + fs/timerfd.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +--- a/fs/timerfd.c ++++ b/fs/timerfd.c +@@ -471,7 +471,10 @@ static int do_timerfd_settime(int ufd, i + break; + } + spin_unlock_irq(&ctx->wqh.lock); +- cpu_relax(); ++ if (isalarm(ctx)) ++ hrtimer_wait_for_timer(&ctx->t.alarm.timer); ++ else ++ hrtimer_wait_for_timer(&ctx->t.tmr); + } + + /* diff --git a/patches/features/all/rt/timerqueue-Document-return-values-of-timerqueue_add-.patch b/patches/features/all/rt/timerqueue-Document-return-values-of-timerqueue_add-.patch new file mode 100644 index 00000000000..f52731c822f --- /dev/null +++ b/patches/features/all/rt/timerqueue-Document-return-values-of-timerqueue_add-.patch @@ -0,0 +1,40 @@ +From: Thomas Gleixner +Date: Fri, 22 Dec 2017 15:51:15 +0100 +Subject: [PATCH 4/4] timerqueue: Document return values of + timerqueue_add/del() +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +The return values of timerqueue_add/del() are not documented in the kernel doc +comment. Add proper documentation. + +Signed-off-by: Thomas Gleixner +Cc: rt@linutronix.de +Signed-off-by: Sebastian Andrzej Siewior +--- + lib/timerqueue.c | 8 +++++--- + 1 file changed, 5 insertions(+), 3 deletions(-) + +--- a/lib/timerqueue.c ++++ b/lib/timerqueue.c +@@ -33,8 +33,9 @@ + * @head: head of timerqueue + * @node: timer node to be added + * +- * Adds the timer node to the timerqueue, sorted by the +- * node's expires value. ++ * Adds the timer node to the timerqueue, sorted by the node's expires ++ * value. Returns true if the newly added timer is the first expiring timer in ++ * the queue. + */ + bool timerqueue_add(struct timerqueue_head *head, struct timerqueue_node *node) + { +@@ -70,7 +71,8 @@ EXPORT_SYMBOL_GPL(timerqueue_add); + * @head: head of timerqueue + * @node: timer node to be removed + * +- * Removes the timer node from the timerqueue. ++ * Removes the timer node from the timerqueue. Returns true if the queue is ++ * not empty after the remove. + */ + bool timerqueue_del(struct timerqueue_head *head, struct timerqueue_node *node) + { diff --git a/patches/features/all/rt/timers-prepare-for-full-preemption.patch b/patches/features/all/rt/timers-prepare-for-full-preemption.patch new file mode 100644 index 00000000000..e9e359498c8 --- /dev/null +++ b/patches/features/all/rt/timers-prepare-for-full-preemption.patch @@ -0,0 +1,167 @@ +From: Ingo Molnar +Date: Fri, 3 Jul 2009 08:29:34 -0500 +Subject: timers: Prepare for full preemption +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +When softirqs can be preempted we need to make sure that cancelling +the timer from the active thread can not deadlock vs. a running timer +callback. Add a waitqueue to resolve that. + +Signed-off-by: Ingo Molnar +Signed-off-by: Thomas Gleixner + +--- + include/linux/timer.h | 2 +- + kernel/sched/core.c | 9 +++++++-- + kernel/time/timer.c | 45 +++++++++++++++++++++++++++++++++++++++++---- + 3 files changed, 49 insertions(+), 7 deletions(-) + +--- a/include/linux/timer.h ++++ b/include/linux/timer.h +@@ -213,7 +213,7 @@ extern void add_timer(struct timer_list + + extern int try_to_del_timer_sync(struct timer_list *timer); + +-#ifdef CONFIG_SMP ++#if defined(CONFIG_SMP) || defined(CONFIG_PREEMPT_RT_FULL) + extern int del_timer_sync(struct timer_list *timer); + #else + # define del_timer_sync(t) del_timer(t) +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -522,11 +522,14 @@ void resched_cpu(int cpu) + */ + int get_nohz_timer_target(void) + { +- int i, cpu = smp_processor_id(); ++ int i, cpu; + struct sched_domain *sd; + ++ preempt_disable_rt(); ++ cpu = smp_processor_id(); ++ + if (!idle_cpu(cpu) && is_housekeeping_cpu(cpu)) +- return cpu; ++ goto preempt_en_rt; + + rcu_read_lock(); + for_each_domain(cpu, sd) { +@@ -545,6 +548,8 @@ int get_nohz_timer_target(void) + cpu = housekeeping_any_cpu(); + unlock: + rcu_read_unlock(); ++preempt_en_rt: ++ preempt_enable_rt(); + return cpu; + } + +--- a/kernel/time/timer.c ++++ b/kernel/time/timer.c +@@ -44,6 +44,7 @@ + #include + #include + #include ++#include + + #include + #include +@@ -197,6 +198,9 @@ EXPORT_SYMBOL(jiffies_64); + struct timer_base { + raw_spinlock_t lock; + struct timer_list *running_timer; ++#ifdef CONFIG_PREEMPT_RT_FULL ++ struct swait_queue_head wait_for_running_timer; ++#endif + unsigned long clk; + unsigned long next_expiry; + unsigned int cpu; +@@ -1140,6 +1144,33 @@ void add_timer_on(struct timer_list *tim + } + EXPORT_SYMBOL_GPL(add_timer_on); + ++#ifdef CONFIG_PREEMPT_RT_FULL ++/* ++ * Wait for a running timer ++ */ ++static void wait_for_running_timer(struct timer_list *timer) ++{ ++ struct timer_base *base; ++ u32 tf = timer->flags; ++ ++ if (tf & TIMER_MIGRATING) ++ return; ++ ++ base = get_timer_base(tf); ++ swait_event(base->wait_for_running_timer, ++ base->running_timer != timer); ++} ++ ++# define wakeup_timer_waiters(b) swake_up_all(&(b)->wait_for_running_timer) ++#else ++static inline void wait_for_running_timer(struct timer_list *timer) ++{ ++ cpu_relax(); ++} ++ ++# define wakeup_timer_waiters(b) do { } while (0) ++#endif ++ + /** + * del_timer - deactivate a timer. + * @timer: the timer to be deactivated +@@ -1195,7 +1226,7 @@ int try_to_del_timer_sync(struct timer_l + } + EXPORT_SYMBOL(try_to_del_timer_sync); + +-#ifdef CONFIG_SMP ++#if defined(CONFIG_SMP) || defined(CONFIG_PREEMPT_RT_FULL) + /** + * del_timer_sync - deactivate a timer and wait for the handler to finish. + * @timer: the timer to be deactivated +@@ -1255,7 +1286,7 @@ int del_timer_sync(struct timer_list *ti + int ret = try_to_del_timer_sync(timer); + if (ret >= 0) + return ret; +- cpu_relax(); ++ wait_for_running_timer(timer); + } + } + EXPORT_SYMBOL(del_timer_sync); +@@ -1319,13 +1350,16 @@ static void expire_timers(struct timer_b + fn = timer->function; + data = timer->data; + +- if (timer->flags & TIMER_IRQSAFE) { ++ if (!IS_ENABLED(CONFIG_PREEMPT_RT_FULL) && ++ timer->flags & TIMER_IRQSAFE) { + raw_spin_unlock(&base->lock); + call_timer_fn(timer, fn, data); ++ base->running_timer = NULL; + raw_spin_lock(&base->lock); + } else { + raw_spin_unlock_irq(&base->lock); + call_timer_fn(timer, fn, data); ++ base->running_timer = NULL; + raw_spin_lock_irq(&base->lock); + } + } +@@ -1627,8 +1661,8 @@ static inline void __run_timers(struct t + while (levels--) + expire_timers(base, heads + levels); + } +- base->running_timer = NULL; + raw_spin_unlock_irq(&base->lock); ++ wakeup_timer_waiters(base); + } + + /* +@@ -1868,6 +1902,9 @@ static void __init init_timer_cpu(int cp + base->cpu = cpu; + raw_spin_lock_init(&base->lock); + base->clk = jiffies; ++#ifdef CONFIG_PREEMPT_RT_FULL ++ init_swait_queue_head(&base->wait_for_running_timer); ++#endif + } + } + diff --git a/patches/features/all/rt/tpm_tis-fix-stall-after-iowrite-s.patch b/patches/features/all/rt/tpm_tis-fix-stall-after-iowrite-s.patch new file mode 100644 index 00000000000..9c0c594bab3 --- /dev/null +++ b/patches/features/all/rt/tpm_tis-fix-stall-after-iowrite-s.patch @@ -0,0 +1,78 @@ +From: Haris Okanovic +Date: Tue, 15 Aug 2017 15:13:08 -0500 +Subject: [PATCH] tpm_tis: fix stall after iowrite*()s +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +ioread8() operations to TPM MMIO addresses can stall the cpu when +immediately following a sequence of iowrite*()'s to the same region. + +For example, cyclitest measures ~400us latency spikes when a non-RT +usermode application communicates with an SPI-based TPM chip (Intel Atom +E3940 system, PREEMPT_RT_FULL kernel). The spikes are caused by a +stalling ioread8() operation following a sequence of 30+ iowrite8()s to +the same address. I believe this happens because the write sequence is +buffered (in cpu or somewhere along the bus), and gets flushed on the +first LOAD instruction (ioread*()) that follows. + +The enclosed change appears to fix this issue: read the TPM chip's +access register (status code) after every iowrite*() operation to +amortize the cost of flushing data to chip across multiple instructions. + +Signed-off-by: Haris Okanovic +Signed-off-by: Sebastian Andrzej Siewior +--- + drivers/char/tpm/tpm_tis.c | 29 +++++++++++++++++++++++++++-- + 1 file changed, 27 insertions(+), 2 deletions(-) + +--- a/drivers/char/tpm/tpm_tis.c ++++ b/drivers/char/tpm/tpm_tis.c +@@ -52,6 +52,31 @@ static inline struct tpm_tis_tcg_phy *to + return container_of(data, struct tpm_tis_tcg_phy, priv); + } + ++#ifdef CONFIG_PREEMPT_RT_FULL ++/* ++ * Flushes previous write operations to chip so that a subsequent ++ * ioread*()s won't stall a cpu. ++ */ ++static inline void tpm_tis_flush(void __iomem *iobase) ++{ ++ ioread8(iobase + TPM_ACCESS(0)); ++} ++#else ++#define tpm_tis_flush(iobase) do { } while (0) ++#endif ++ ++static inline void tpm_tis_iowrite8(u8 b, void __iomem *iobase, u32 addr) ++{ ++ iowrite8(b, iobase + addr); ++ tpm_tis_flush(iobase); ++} ++ ++static inline void tpm_tis_iowrite32(u32 b, void __iomem *iobase, u32 addr) ++{ ++ iowrite32(b, iobase + addr); ++ tpm_tis_flush(iobase); ++} ++ + static bool interrupts = true; + module_param(interrupts, bool, 0444); + MODULE_PARM_DESC(interrupts, "Enable interrupts"); +@@ -230,7 +255,7 @@ static int tpm_tcg_write_bytes(struct tp + tpm_platform_begin_xfer(); + + while (len--) +- iowrite8(*value++, phy->iobase + addr); ++ tpm_tis_iowrite8(*value++, phy->iobase, addr); + + tpm_platform_end_xfer(); + +@@ -269,7 +294,7 @@ static int tpm_tcg_write32(struct tpm_ti + + tpm_platform_begin_xfer(); + +- iowrite32(value, phy->iobase + addr); ++ tpm_tis_iowrite32(value, phy->iobase, addr); + + tpm_platform_end_xfer(); + diff --git a/patches/features/all/rt/tracing-account-for-preempt-off-in-preempt_schedule.patch b/patches/features/all/rt/tracing-account-for-preempt-off-in-preempt_schedule.patch new file mode 100644 index 00000000000..64d99f2406d --- /dev/null +++ b/patches/features/all/rt/tracing-account-for-preempt-off-in-preempt_schedule.patch @@ -0,0 +1,47 @@ +From: Steven Rostedt +Date: Thu, 29 Sep 2011 12:24:30 -0500 +Subject: tracing: Account for preempt off in preempt_schedule() +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +The preempt_schedule() uses the preempt_disable_notrace() version +because it can cause infinite recursion by the function tracer as +the function tracer uses preempt_enable_notrace() which may call +back into the preempt_schedule() code as the NEED_RESCHED is still +set and the PREEMPT_ACTIVE has not been set yet. + +See commit: d1f74e20b5b064a130cd0743a256c2d3cfe84010 that made this +change. + +The preemptoff and preemptirqsoff latency tracers require the first +and last preempt count modifiers to enable tracing. But this skips +the checks. Since we can not convert them back to the non notrace +version, we can use the idle() hooks for the latency tracers here. +That is, the start/stop_critical_timings() works well to manually +start and stop the latency tracer for preempt off timings. + +Signed-off-by: Steven Rostedt +Signed-off-by: Clark Williams +Signed-off-by: Thomas Gleixner +--- + kernel/sched/core.c | 9 +++++++++ + 1 file changed, 9 insertions(+) + +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -3604,7 +3604,16 @@ asmlinkage __visible void __sched notrac + * an infinite recursion. + */ + prev_ctx = exception_enter(); ++ /* ++ * The add/subtract must not be traced by the function ++ * tracer. But we still want to account for the ++ * preempt off latency tracer. Since the _notrace versions ++ * of add/subtract skip the accounting for latency tracer ++ * we must force it manually. ++ */ ++ start_critical_timings(); + __schedule(true); ++ stop_critical_timings(); + exception_exit(prev_ctx); + + preempt_latency_stop(1); diff --git a/patches/features/all/rt/tty-goldfish-Enable-earlycon-only-if-built-in.patch b/patches/features/all/rt/tty-goldfish-Enable-earlycon-only-if-built-in.patch new file mode 100644 index 00000000000..3d5da3e03bd --- /dev/null +++ b/patches/features/all/rt/tty-goldfish-Enable-earlycon-only-if-built-in.patch @@ -0,0 +1,66 @@ +From: Sebastian Andrzej Siewior +Date: Wed, 29 Nov 2017 16:32:20 +0100 +Subject: [PATCH] tty: goldfish: Enable 'earlycon' only if built-in +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Commit 3840ed9548f7 ("tty: goldfish: Implement support for kernel +'earlycon' parameter") breaks an allmodconfig config on x86: +| LD vmlinux.o +| MODPOST vmlinux.o +|drivers/tty/serial/earlycon.o: In function `parse_options': +|drivers/tty/serial/earlycon.c:97: undefined reference to `uart_parse_earlycon' +|Makefile:1005: recipe for target 'vmlinux' failed + +earlycon.c::parse_options() invokes uart_parse_earlycon() from serial_core.c +which is compiled=m because GOLDFISH_TTY itself (and most others) are =m. +To avoid that, I'm adding the _CONSOLE config option which is selected if the +GOLDFISH module itself is =y since it doesn't need the early bits for the =m +case (other drivers do the same dance). +The alternative would be to move uart_parse_earlycon() from +serial_core.c to earlycon.c (we don't have that many users of that +function). + +Fixes: 3840ed9548f7 ("tty: goldfish: Implement support for kernel + 'earlycon' parameter") +Signed-off-by: Sebastian Andrzej Siewior +--- + drivers/tty/Kconfig | 6 +++++- + drivers/tty/goldfish.c | 2 ++ + 2 files changed, 7 insertions(+), 1 deletion(-) + +--- a/drivers/tty/Kconfig ++++ b/drivers/tty/Kconfig +@@ -394,10 +394,14 @@ config GOLDFISH_TTY + depends on GOLDFISH + select SERIAL_CORE + select SERIAL_CORE_CONSOLE +- select SERIAL_EARLYCON + help + Console and system TTY driver for the Goldfish virtual platform. + ++config GOLDFISH_TTY_EARLY_CONSOLE ++ bool ++ default y if GOLDFISH_TTY=y ++ select SERIAL_EARLYCON ++ + config DA_TTY + bool "DA TTY" + depends on METAG_DA +--- a/drivers/tty/goldfish.c ++++ b/drivers/tty/goldfish.c +@@ -442,6 +442,7 @@ static int goldfish_tty_remove(struct pl + return 0; + } + ++#ifdef CONFIG_GOLDFISH_TTY_EARLY_CONSOLE + static void gf_early_console_putchar(struct uart_port *port, int ch) + { + __raw_writel(ch, port->membase); +@@ -465,6 +466,7 @@ static int __init gf_earlycon_setup(stru + } + + OF_EARLYCON_DECLARE(early_gf_tty, "google,goldfish-tty", gf_earlycon_setup); ++#endif + + static const struct of_device_id goldfish_tty_of_match[] = { + { .compatible = "google,goldfish-tty", }, diff --git a/patches/features/all/rt/tty-serial-8250-don-t-take-the-trylock-during-oops.patch b/patches/features/all/rt/tty-serial-8250-don-t-take-the-trylock-during-oops.patch new file mode 100644 index 00000000000..4cdd4f772dc --- /dev/null +++ b/patches/features/all/rt/tty-serial-8250-don-t-take-the-trylock-during-oops.patch @@ -0,0 +1,29 @@ +From: Sebastian Andrzej Siewior +Date: Mon, 11 Apr 2016 16:55:02 +0200 +Subject: [PATCH] tty: serial: 8250: don't take the trylock during oops +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +An oops with irqs off (panic() from irqsafe hrtimer like the watchdog +timer) will lead to a lockdep warning on each invocation and as such +never completes. +Therefore we skip the trylock in the oops case. + +Signed-off-by: Sebastian Andrzej Siewior +--- + drivers/tty/serial/8250/8250_port.c | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +--- a/drivers/tty/serial/8250/8250_port.c ++++ b/drivers/tty/serial/8250/8250_port.c +@@ -3217,10 +3217,8 @@ void serial8250_console_write(struct uar + + serial8250_rpm_get(up); + +- if (port->sysrq) ++ if (port->sysrq || oops_in_progress) + locked = 0; +- else if (oops_in_progress) +- locked = spin_trylock_irqsave(&port->lock, flags); + else + spin_lock_irqsave(&port->lock, flags); + diff --git a/patches/features/all/rt/upstream-net-rt-remove-preemption-disabling-in-netif_rx.patch b/patches/features/all/rt/upstream-net-rt-remove-preemption-disabling-in-netif_rx.patch new file mode 100644 index 00000000000..574e594979a --- /dev/null +++ b/patches/features/all/rt/upstream-net-rt-remove-preemption-disabling-in-netif_rx.patch @@ -0,0 +1,67 @@ +Subject: net: Remove preemption disabling in netif_rx() +From: Priyanka Jain +Date: Thu, 17 May 2012 09:35:11 +0530 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +1)enqueue_to_backlog() (called from netif_rx) should be + bind to a particluar CPU. This can be achieved by + disabling migration. No need to disable preemption + +2)Fixes crash "BUG: scheduling while atomic: ksoftirqd" + in case of RT. + If preemption is disabled, enqueue_to_backog() is called + in atomic context. And if backlog exceeds its count, + kfree_skb() is called. But in RT, kfree_skb() might + gets scheduled out, so it expects non atomic context. + +3)When CONFIG_PREEMPT_RT_FULL is not defined, + migrate_enable(), migrate_disable() maps to + preempt_enable() and preempt_disable(), so no + change in functionality in case of non-RT. + +-Replace preempt_enable(), preempt_disable() with + migrate_enable(), migrate_disable() respectively +-Replace get_cpu(), put_cpu() with get_cpu_light(), + put_cpu_light() respectively + +Signed-off-by: Priyanka Jain +Acked-by: Rajan Srivastava +Cc: +Link: http://lkml.kernel.org/r/1337227511-2271-1-git-send-email-Priyanka.Jain@freescale.com + +Signed-off-by: Thomas Gleixner +--- + Testing: Tested successfully on p4080ds(8-core SMP system) + + net/core/dev.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +--- a/net/core/dev.c ++++ b/net/core/dev.c +@@ -4016,7 +4016,7 @@ static int netif_rx_internal(struct sk_b + struct rps_dev_flow voidflow, *rflow = &voidflow; + int cpu; + +- preempt_disable(); ++ migrate_disable(); + rcu_read_lock(); + + cpu = get_rps_cpu(skb->dev, skb, &rflow); +@@ -4026,14 +4026,14 @@ static int netif_rx_internal(struct sk_b + ret = enqueue_to_backlog(skb, cpu, &rflow->last_qtail); + + rcu_read_unlock(); +- preempt_enable(); ++ migrate_enable(); + } else + #endif + { + unsigned int qtail; + +- ret = enqueue_to_backlog(skb, get_cpu(), &qtail); +- put_cpu(); ++ ret = enqueue_to_backlog(skb, get_cpu_light(), &qtail); ++ put_cpu_light(); + } + return ret; + } diff --git a/patches/features/all/rt/usb-use-_nort-in-giveback.patch b/patches/features/all/rt/usb-use-_nort-in-giveback.patch new file mode 100644 index 00000000000..5750646d2e8 --- /dev/null +++ b/patches/features/all/rt/usb-use-_nort-in-giveback.patch @@ -0,0 +1,58 @@ +From: Sebastian Andrzej Siewior +Date: Fri, 8 Nov 2013 17:34:54 +0100 +Subject: usb: Use _nort in giveback function +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Since commit 94dfd7ed ("USB: HCD: support giveback of URB in tasklet +context") I see + +|BUG: sleeping function called from invalid context at kernel/rtmutex.c:673 +|in_atomic(): 0, irqs_disabled(): 1, pid: 109, name: irq/11-uhci_hcd +|no locks held by irq/11-uhci_hcd/109. +|irq event stamp: 440 +|hardirqs last enabled at (439): [] _raw_spin_unlock_irqrestore+0x75/0x90 +|hardirqs last disabled at (440): [] __usb_hcd_giveback_urb+0x46/0xc0 +|softirqs last enabled at (0): [] copy_process.part.52+0x511/0x1510 +|softirqs last disabled at (0): [< (null)>] (null) +|CPU: 3 PID: 109 Comm: irq/11-uhci_hcd Not tainted 3.12.0-rt0-rc1+ #13 +|Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011 +| 0000000000000000 ffff8800db9ffbe0 ffffffff8169f064 0000000000000000 +| ffff8800db9ffbf8 ffffffff810b2122 ffff88020f03e888 ffff8800db9ffc18 +| ffffffff816a6944 ffffffff810b5748 ffff88020f03c000 ffff8800db9ffc50 +|Call Trace: +| [] dump_stack+0x4e/0x8f +| [] __might_sleep+0x112/0x190 +| [] rt_spin_lock+0x24/0x60 +| [] hid_ctrl+0x3b/0x190 +| [] __usb_hcd_giveback_urb+0x4f/0xc0 +| [] usb_hcd_giveback_urb+0x3f/0x140 +| [] uhci_giveback_urb+0xaf/0x280 +| [] uhci_scan_schedule+0x47a/0xb10 +| [] uhci_irq+0xa6/0x1a0 +| [] usb_hcd_irq+0x28/0x40 +| [] irq_forced_thread_fn+0x23/0x70 +| [] irq_thread+0x10f/0x150 +| [] kthread+0xcd/0xe0 +| [] ret_from_fork+0x7c/0xb0 + +on -RT we run threaded so no need to disable interrupts. + +Signed-off-by: Sebastian Andrzej Siewior +--- + drivers/usb/core/hcd.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/drivers/usb/core/hcd.c ++++ b/drivers/usb/core/hcd.c +@@ -1775,9 +1775,9 @@ static void __usb_hcd_giveback_urb(struc + * and no one may trigger the above deadlock situation when + * running complete() in tasklet. + */ +- local_irq_save(flags); ++ local_irq_save_nort(flags); + urb->complete(urb); +- local_irq_restore(flags); ++ local_irq_restore_nort(flags); + + usb_anchor_resume_wakeups(anchor); + atomic_dec(&urb->use_count); diff --git a/patches/features/all/rt/user-use-local-irq-nort.patch b/patches/features/all/rt/user-use-local-irq-nort.patch new file mode 100644 index 00000000000..3e8ab666b4a --- /dev/null +++ b/patches/features/all/rt/user-use-local-irq-nort.patch @@ -0,0 +1,30 @@ +From: Thomas Gleixner +Date: Tue, 21 Jul 2009 23:06:05 +0200 +Subject: core: Do not disable interrupts on RT in kernel/users.c +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Use the local_irq_*_nort variants to reduce latencies in RT. The code +is serialized by the locks. No need to disable interrupts. + +Signed-off-by: Thomas Gleixner + +--- + kernel/user.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/kernel/user.c ++++ b/kernel/user.c +@@ -162,11 +162,11 @@ void free_uid(struct user_struct *up) + if (!up) + return; + +- local_irq_save(flags); ++ local_irq_save_nort(flags); + if (atomic_dec_and_lock(&up->__count, &uidhash_lock)) + free_user(up, flags); + else +- local_irq_restore(flags); ++ local_irq_restore_nort(flags); + } + + struct user_struct *alloc_uid(kuid_t uid) diff --git a/patches/features/all/rt/wait.h-include-atomic.h.patch b/patches/features/all/rt/wait.h-include-atomic.h.patch new file mode 100644 index 00000000000..dd6e52df5c0 --- /dev/null +++ b/patches/features/all/rt/wait.h-include-atomic.h.patch @@ -0,0 +1,33 @@ +From: Sebastian Andrzej Siewior +Date: Mon, 28 Oct 2013 12:19:57 +0100 +Subject: wait.h: include atomic.h +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +| CC init/main.o +|In file included from include/linux/mmzone.h:9:0, +| from include/linux/gfp.h:4, +| from include/linux/kmod.h:22, +| from include/linux/module.h:13, +| from init/main.c:15: +|include/linux/wait.h: In function ‘wait_on_atomic_t’: +|include/linux/wait.h:982:2: error: implicit declaration of function ‘atomic_read’ [-Werror=implicit-function-declaration] +| if (atomic_read(val) == 0) +| ^ + +This pops up on ARM. Non-RT gets its atomic.h include from spinlock.h + +Signed-off-by: Sebastian Andrzej Siewior +--- + include/linux/wait.h | 1 + + 1 file changed, 1 insertion(+) + +--- a/include/linux/wait.h ++++ b/include/linux/wait.h +@@ -10,6 +10,7 @@ + + #include + #include ++#include + + typedef struct wait_queue_entry wait_queue_entry_t; + diff --git a/patches/features/all/rt/work-queue-work-around-irqsafe-timer-optimization.patch b/patches/features/all/rt/work-queue-work-around-irqsafe-timer-optimization.patch new file mode 100644 index 00000000000..09d6968c18c --- /dev/null +++ b/patches/features/all/rt/work-queue-work-around-irqsafe-timer-optimization.patch @@ -0,0 +1,133 @@ +From: Thomas Gleixner +Date: Mon, 01 Jul 2013 11:02:42 +0200 +Subject: workqueue: Prevent workqueue versus ata-piix livelock +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +An Intel i7 system regularly detected rcu_preempt stalls after the kernel +was upgraded from 3.6-rt to 3.8-rt. When the stall happened, disk I/O was no +longer possible, unless the system was restarted. + +The kernel message was: +INFO: rcu_preempt self-detected stall on CPU { 6} +[..] +NMI backtrace for cpu 6 +CPU 6 +Pid: 119, comm: irq/19-ata_piix Not tainted 3.8.13-rt13 #11 Shuttle Inc. SX58/SX58 +RIP: 0010:[] [] ip_compute_csum+0x30/0x30 +RSP: 0018:ffff880333303cb0 EFLAGS: 00000002 +RAX: 0000000000000006 RBX: 00000000000003e9 RCX: 0000000000000034 +RDX: 0000000000000000 RSI: ffffffff81aa16d0 RDI: 0000000000000001 +RBP: ffff880333303ce8 R08: ffffffff81aa16d0 R09: ffffffff81c1b8cc +R10: 0000000000000000 R11: 0000000000000000 R12: 000000000005161f +R13: 0000000000000006 R14: ffffffff81aa16d0 R15: 0000000000000002 +FS: 0000000000000000(0000) GS:ffff880333300000(0000) knlGS:0000000000000000 +CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b +CR2: 0000003c1b2bb420 CR3: 0000000001a0f000 CR4: 00000000000007e0 +DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 +DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 +Process irq/19-ata_piix (pid: 119, threadinfo ffff88032d88a000, task ffff88032df80000) +Stack: +ffffffff8124cb32 000000000005161e 00000000000003e9 0000000000001000 +0000000000009022 ffffffff81aa16d0 0000000000000002 ffff880333303cf8 +ffffffff8124caa9 ffff880333303d08 ffffffff8124cad2 ffff880333303d28 +Call Trace: + +[] ? delay_tsc+0x33/0xe3 +[] __delay+0xf/0x11 +[] __const_udelay+0x27/0x29 +[] native_safe_apic_wait_icr_idle+0x39/0x45 +[] __default_send_IPI_dest_field.constprop.0+0x1e/0x58 +[] default_send_IPI_mask_sequence_phys+0x49/0x7d +[] physflat_send_IPI_all+0x17/0x19 +[] arch_trigger_all_cpu_backtrace+0x50/0x79 +[] rcu_check_callbacks+0x1cb/0x568 +[] ? raise_softirq+0x2e/0x35 +[] ? tick_sched_do_timer+0x38/0x38 +[] update_process_times+0x44/0x55 +[] tick_sched_handle+0x4a/0x59 +[] tick_sched_timer+0x3c/0x5b +[] __run_hrtimer+0x9b/0x158 +[] hrtimer_interrupt+0x172/0x2aa +[] smp_apic_timer_interrupt+0x76/0x89 +[] apic_timer_interrupt+0x6d/0x80 + +[] ? __local_lock_irqsave+0x17/0x4a +[] try_to_grab_pending+0x42/0x17e +[] mod_delayed_work_on+0x32/0x88 +[] mod_delayed_work+0x1c/0x1e +[] blk_run_queue_async+0x37/0x39 +[] flush_end_io+0xf1/0x107 +[] blk_finish_request+0x21e/0x264 +[] blk_end_bidi_request+0x42/0x60 +[] blk_end_request+0x10/0x12 +[] scsi_io_completion+0x1bf/0x492 +[] ? sd_done+0x298/0x2ef +[] scsi_finish_command+0xe9/0xf2 +[] scsi_softirq_done+0x106/0x10f +[] blk_done_softirq+0x77/0x87 +[] do_current_softirqs+0x172/0x2e1 +[] ? irq_thread_fn+0x3a/0x3a +[] local_bh_enable+0x43/0x72 +[] irq_forced_thread_fn+0x46/0x52 +[] irq_thread+0x8c/0x17c +[] ? irq_thread+0x17c/0x17c +[] ? wake_threads_waitq+0x44/0x44 +[] kthread+0x8d/0x95 +[] ? __kthread_parkme+0x65/0x65 +[] ret_from_fork+0x7c/0xb0 +[] ? __kthread_parkme+0x65/0x65 + +The state of softirqd of this CPU at the time of the crash was: +ksoftirqd/6 R running task 0 53 2 0x00000000 +ffff88032fc39d18 0000000000000046 ffff88033330c4c0 ffff8803303f4710 +ffff88032fc39fd8 ffff88032fc39fd8 0000000000000000 0000000000062500 +ffff88032df88000 ffff8803303f4710 0000000000000000 ffff88032fc38000 +Call Trace: +[] ? __queue_work+0x27c/0x27c +[] preempt_schedule+0x61/0x76 +[] migrate_enable+0xe5/0x1df +[] ? __queue_work+0x27c/0x27c +[] run_timer_softirq+0x161/0x1d6 +[] do_current_softirqs+0x172/0x2e1 +[] run_ksoftirqd+0x2d/0x45 +[] smpboot_thread_fn+0x2ea/0x308 +[] ? test_ti_thread_flag+0xc/0xc +[] ? test_ti_thread_flag+0xc/0xc +[] kthread+0x8d/0x95 +[] ? __kthread_parkme+0x65/0x65 +[] ret_from_fork+0x7c/0xb0 +[] ? __kthread_parkme+0x65/0x65 + +Apparently, the softirq demon and the ata_piix IRQ handler were waiting +for each other to finish ending up in a livelock. After the below patch +was applied, the system no longer crashes. + +Reported-by: Carsten Emde +Proposed-by: Thomas Gleixner +Tested by: Carsten Emde +Signed-off-by: Carsten Emde +Signed-off-by: Thomas Gleixner +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/workqueue.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/kernel/workqueue.c ++++ b/kernel/workqueue.c +@@ -50,6 +50,7 @@ + #include + #include + #include ++#include + + #include "workqueue_internal.h" + +@@ -1283,7 +1284,7 @@ static int try_to_grab_pending(struct wo + local_unlock_irqrestore(pendingb_lock, *flags); + if (work_is_canceling(work)) + return -ENOENT; +- cpu_relax(); ++ cpu_chill(); + return -EAGAIN; + } + diff --git a/patches/features/all/rt/work-simple-Simple-work-queue-implemenation.patch b/patches/features/all/rt/work-simple-Simple-work-queue-implemenation.patch new file mode 100644 index 00000000000..bcf84cfe23f --- /dev/null +++ b/patches/features/all/rt/work-simple-Simple-work-queue-implemenation.patch @@ -0,0 +1,232 @@ +From: Daniel Wagner +Date: Fri, 11 Jul 2014 15:26:11 +0200 +Subject: work-simple: Simple work queue implemenation +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Provides a framework for enqueuing callbacks from irq context +PREEMPT_RT_FULL safe. The callbacks are executed in kthread context. + +Bases on wait-simple. + +Cc: Sebastian Andrzej Siewior +Signed-off-by: Daniel Wagner +--- + include/linux/swork.h | 24 ++++++ + kernel/sched/Makefile | 2 + kernel/sched/swork.c | 173 ++++++++++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 198 insertions(+), 1 deletion(-) + +--- /dev/null ++++ b/include/linux/swork.h +@@ -0,0 +1,24 @@ ++#ifndef _LINUX_SWORK_H ++#define _LINUX_SWORK_H ++ ++#include ++ ++struct swork_event { ++ struct list_head item; ++ unsigned long flags; ++ void (*func)(struct swork_event *); ++}; ++ ++static inline void INIT_SWORK(struct swork_event *event, ++ void (*func)(struct swork_event *)) ++{ ++ event->flags = 0; ++ event->func = func; ++} ++ ++bool swork_queue(struct swork_event *sev); ++ ++int swork_get(void); ++void swork_put(void); ++ ++#endif /* _LINUX_SWORK_H */ +--- a/kernel/sched/Makefile ++++ b/kernel/sched/Makefile +@@ -18,7 +18,7 @@ endif + + obj-y += core.o loadavg.o clock.o cputime.o + obj-y += idle_task.o fair.o rt.o deadline.o +-obj-y += wait.o wait_bit.o swait.o completion.o idle.o ++obj-y += wait.o wait_bit.o swait.o swork.o completion.o idle.o + obj-$(CONFIG_SMP) += cpupri.o cpudeadline.o topology.o stop_task.o + obj-$(CONFIG_SCHED_AUTOGROUP) += autogroup.o + obj-$(CONFIG_SCHEDSTATS) += stats.o +--- /dev/null ++++ b/kernel/sched/swork.c +@@ -0,0 +1,173 @@ ++/* ++ * Copyright (C) 2014 BMW Car IT GmbH, Daniel Wagner daniel.wagner@bmw-carit.de ++ * ++ * Provides a framework for enqueuing callbacks from irq context ++ * PREEMPT_RT_FULL safe. The callbacks are executed in kthread context. ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#define SWORK_EVENT_PENDING (1 << 0) ++ ++static DEFINE_MUTEX(worker_mutex); ++static struct sworker *glob_worker; ++ ++struct sworker { ++ struct list_head events; ++ struct swait_queue_head wq; ++ ++ raw_spinlock_t lock; ++ ++ struct task_struct *task; ++ int refs; ++}; ++ ++static bool swork_readable(struct sworker *worker) ++{ ++ bool r; ++ ++ if (kthread_should_stop()) ++ return true; ++ ++ raw_spin_lock_irq(&worker->lock); ++ r = !list_empty(&worker->events); ++ raw_spin_unlock_irq(&worker->lock); ++ ++ return r; ++} ++ ++static int swork_kthread(void *arg) ++{ ++ struct sworker *worker = arg; ++ ++ for (;;) { ++ swait_event_interruptible(worker->wq, ++ swork_readable(worker)); ++ if (kthread_should_stop()) ++ break; ++ ++ raw_spin_lock_irq(&worker->lock); ++ while (!list_empty(&worker->events)) { ++ struct swork_event *sev; ++ ++ sev = list_first_entry(&worker->events, ++ struct swork_event, item); ++ list_del(&sev->item); ++ raw_spin_unlock_irq(&worker->lock); ++ ++ WARN_ON_ONCE(!test_and_clear_bit(SWORK_EVENT_PENDING, ++ &sev->flags)); ++ sev->func(sev); ++ raw_spin_lock_irq(&worker->lock); ++ } ++ raw_spin_unlock_irq(&worker->lock); ++ } ++ return 0; ++} ++ ++static struct sworker *swork_create(void) ++{ ++ struct sworker *worker; ++ ++ worker = kzalloc(sizeof(*worker), GFP_KERNEL); ++ if (!worker) ++ return ERR_PTR(-ENOMEM); ++ ++ INIT_LIST_HEAD(&worker->events); ++ raw_spin_lock_init(&worker->lock); ++ init_swait_queue_head(&worker->wq); ++ ++ worker->task = kthread_run(swork_kthread, worker, "kswork"); ++ if (IS_ERR(worker->task)) { ++ kfree(worker); ++ return ERR_PTR(-ENOMEM); ++ } ++ ++ return worker; ++} ++ ++static void swork_destroy(struct sworker *worker) ++{ ++ kthread_stop(worker->task); ++ ++ WARN_ON(!list_empty(&worker->events)); ++ kfree(worker); ++} ++ ++/** ++ * swork_queue - queue swork ++ * ++ * Returns %false if @work was already on a queue, %true otherwise. ++ * ++ * The work is queued and processed on a random CPU ++ */ ++bool swork_queue(struct swork_event *sev) ++{ ++ unsigned long flags; ++ ++ if (test_and_set_bit(SWORK_EVENT_PENDING, &sev->flags)) ++ return false; ++ ++ raw_spin_lock_irqsave(&glob_worker->lock, flags); ++ list_add_tail(&sev->item, &glob_worker->events); ++ raw_spin_unlock_irqrestore(&glob_worker->lock, flags); ++ ++ swake_up(&glob_worker->wq); ++ return true; ++} ++EXPORT_SYMBOL_GPL(swork_queue); ++ ++/** ++ * swork_get - get an instance of the sworker ++ * ++ * Returns an negative error code if the initialization if the worker did not ++ * work, %0 otherwise. ++ * ++ */ ++int swork_get(void) ++{ ++ struct sworker *worker; ++ ++ mutex_lock(&worker_mutex); ++ if (!glob_worker) { ++ worker = swork_create(); ++ if (IS_ERR(worker)) { ++ mutex_unlock(&worker_mutex); ++ return -ENOMEM; ++ } ++ ++ glob_worker = worker; ++ } ++ ++ glob_worker->refs++; ++ mutex_unlock(&worker_mutex); ++ ++ return 0; ++} ++EXPORT_SYMBOL_GPL(swork_get); ++ ++/** ++ * swork_put - puts an instance of the sworker ++ * ++ * Will destroy the sworker thread. This function must not be called until all ++ * queued events have been completed. ++ */ ++void swork_put(void) ++{ ++ mutex_lock(&worker_mutex); ++ ++ glob_worker->refs--; ++ if (glob_worker->refs > 0) ++ goto out; ++ ++ swork_destroy(glob_worker); ++ glob_worker = NULL; ++out: ++ mutex_unlock(&worker_mutex); ++} ++EXPORT_SYMBOL_GPL(swork_put); diff --git a/patches/features/all/rt/workqueue-distangle-from-rq-lock.patch b/patches/features/all/rt/workqueue-distangle-from-rq-lock.patch new file mode 100644 index 00000000000..58f4a821feb --- /dev/null +++ b/patches/features/all/rt/workqueue-distangle-from-rq-lock.patch @@ -0,0 +1,273 @@ +From: Thomas Gleixner +Date: Wed Jun 22 19:47:03 2011 +0200 +Subject: sched: Distangle worker accounting from rqlock + +The worker accounting for cpu bound workers is plugged into the core +scheduler code and the wakeup code. This is not a hard requirement and +can be avoided by keeping track of the state in the workqueue code +itself. + +Keep track of the sleeping state in the worker itself and call the +notifier before entering the core scheduler. There might be false +positives when the task is woken between that call and actually +scheduling, but that's not really different from scheduling and being +woken immediately after switching away. There is also no harm from +updating nr_running when the task returns from scheduling instead of +accounting it in the wakeup code. + +Signed-off-by: Thomas Gleixner +Cc: Peter Zijlstra +Cc: Tejun Heo +Cc: Jens Axboe +Cc: Linus Torvalds +Link: http://lkml.kernel.org/r/20110622174919.135236139@linutronix.de +Signed-off-by: Thomas Gleixner +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +--- + kernel/sched/core.c | 84 +++++++------------------------------------- + kernel/workqueue.c | 52 ++++++++++++--------------- + kernel/workqueue_internal.h | 5 +- + 3 files changed, 41 insertions(+), 100 deletions(-) + +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -1715,10 +1715,6 @@ static inline void ttwu_activate(struct + { + activate_task(rq, p, en_flags); + p->on_rq = TASK_ON_RQ_QUEUED; +- +- /* If a worker is waking up, notify the workqueue: */ +- if (p->flags & PF_WQ_WORKER) +- wq_worker_waking_up(p, cpu_of(rq)); + } + + /* +@@ -2159,56 +2155,6 @@ try_to_wake_up(struct task_struct *p, un + } + + /** +- * try_to_wake_up_local - try to wake up a local task with rq lock held +- * @p: the thread to be awakened +- * @rf: request-queue flags for pinning +- * +- * Put @p on the run-queue if it's not already there. The caller must +- * ensure that this_rq() is locked, @p is bound to this_rq() and not +- * the current task. +- */ +-static void try_to_wake_up_local(struct task_struct *p, struct rq_flags *rf) +-{ +- struct rq *rq = task_rq(p); +- +- if (WARN_ON_ONCE(rq != this_rq()) || +- WARN_ON_ONCE(p == current)) +- return; +- +- lockdep_assert_held(&rq->lock); +- +- if (!raw_spin_trylock(&p->pi_lock)) { +- /* +- * This is OK, because current is on_cpu, which avoids it being +- * picked for load-balance and preemption/IRQs are still +- * disabled avoiding further scheduler activity on it and we've +- * not yet picked a replacement task. +- */ +- rq_unlock(rq, rf); +- raw_spin_lock(&p->pi_lock); +- rq_relock(rq, rf); +- } +- +- if (!(p->state & TASK_NORMAL)) +- goto out; +- +- trace_sched_waking(p); +- +- if (!task_on_rq_queued(p)) { +- if (p->in_iowait) { +- delayacct_blkio_end(p); +- atomic_dec(&rq->nr_iowait); +- } +- ttwu_activate(rq, p, ENQUEUE_WAKEUP | ENQUEUE_NOCLOCK); +- } +- +- ttwu_do_wakeup(rq, p, 0, rf); +- ttwu_stat(p, smp_processor_id(), 0); +-out: +- raw_spin_unlock(&p->pi_lock); +-} +- +-/** + * wake_up_process - Wake up a specific process + * @p: The process to be woken up. + * +@@ -3409,21 +3355,6 @@ static void __sched notrace __schedule(b + atomic_inc(&rq->nr_iowait); + delayacct_blkio_start(); + } +- +- /* +- * If a worker went to sleep, notify and ask workqueue +- * whether it wants to wake up a task to maintain +- * concurrency. +- * Only call wake up if prev isn't blocked on a sleeping +- * spin lock. +- */ +- if (prev->flags & PF_WQ_WORKER && !prev->saved_state) { +- struct task_struct *to_wakeup; +- +- to_wakeup = wq_worker_sleeping(prev); +- if (to_wakeup) +- try_to_wake_up_local(to_wakeup, &rf); +- } + } + switch_count = &prev->nvcsw; + } +@@ -3499,6 +3430,14 @@ static inline void sched_submit_work(str + { + if (!tsk->state || tsk_is_pi_blocked(tsk)) + return; ++ ++ /* ++ * If a worker went to sleep, notify and ask workqueue whether ++ * it wants to wake up a task to maintain concurrency. ++ */ ++ if (tsk->flags & PF_WQ_WORKER) ++ wq_worker_sleeping(tsk); ++ + /* + * If we are going to sleep and we have plugged IO queued, + * make sure to submit it to avoid deadlocks. +@@ -3507,6 +3446,12 @@ static inline void sched_submit_work(str + blk_schedule_flush_plug(tsk); + } + ++static void sched_update_worker(struct task_struct *tsk) ++{ ++ if (tsk->flags & PF_WQ_WORKER) ++ wq_worker_running(tsk); ++} ++ + asmlinkage __visible void __sched schedule(void) + { + struct task_struct *tsk = current; +@@ -3517,6 +3462,7 @@ asmlinkage __visible void __sched schedu + __schedule(false); + sched_preempt_enable_no_resched(); + } while (need_resched()); ++ sched_update_worker(tsk); + } + EXPORT_SYMBOL(schedule); + +--- a/kernel/workqueue.c ++++ b/kernel/workqueue.c +@@ -845,43 +845,32 @@ static void wake_up_worker(struct worker + } + + /** +- * wq_worker_waking_up - a worker is waking up ++ * wq_worker_running - a worker is running again + * @task: task waking up +- * @cpu: CPU @task is waking up to + * +- * This function is called during try_to_wake_up() when a worker is +- * being awoken. +- * +- * CONTEXT: +- * spin_lock_irq(rq->lock) ++ * This function is called when a worker returns from schedule() + */ +-void wq_worker_waking_up(struct task_struct *task, int cpu) ++void wq_worker_running(struct task_struct *task) + { + struct worker *worker = kthread_data(task); + +- if (!(worker->flags & WORKER_NOT_RUNNING)) { +- WARN_ON_ONCE(worker->pool->cpu != cpu); ++ if (!worker->sleeping) ++ return; ++ if (!(worker->flags & WORKER_NOT_RUNNING)) + atomic_inc(&worker->pool->nr_running); +- } ++ worker->sleeping = 0; + } + + /** + * wq_worker_sleeping - a worker is going to sleep + * @task: task going to sleep + * +- * This function is called during schedule() when a busy worker is +- * going to sleep. Worker on the same cpu can be woken up by +- * returning pointer to its task. +- * +- * CONTEXT: +- * spin_lock_irq(rq->lock) +- * +- * Return: +- * Worker task on @cpu to wake up, %NULL if none. ++ * This function is called from schedule() when a busy worker is ++ * going to sleep. + */ +-struct task_struct *wq_worker_sleeping(struct task_struct *task) ++void wq_worker_sleeping(struct task_struct *task) + { +- struct worker *worker = kthread_data(task), *to_wakeup = NULL; ++ struct worker *next, *worker = kthread_data(task); + struct worker_pool *pool; + + /* +@@ -890,13 +879,15 @@ struct task_struct *wq_worker_sleeping(s + * checking NOT_RUNNING. + */ + if (worker->flags & WORKER_NOT_RUNNING) +- return NULL; ++ return; + + pool = worker->pool; + +- /* this can only happen on the local cpu */ +- if (WARN_ON_ONCE(pool->cpu != raw_smp_processor_id())) +- return NULL; ++ if (WARN_ON_ONCE(worker->sleeping)) ++ return; ++ ++ worker->sleeping = 1; ++ spin_lock_irq(&pool->lock); + + /* + * The counterpart of the following dec_and_test, implied mb, +@@ -910,9 +901,12 @@ struct task_struct *wq_worker_sleeping(s + * lock is safe. + */ + if (atomic_dec_and_test(&pool->nr_running) && +- !list_empty(&pool->worklist)) +- to_wakeup = first_idle_worker(pool); +- return to_wakeup ? to_wakeup->task : NULL; ++ !list_empty(&pool->worklist)) { ++ next = first_idle_worker(pool); ++ if (next) ++ wake_up_process(next->task); ++ } ++ spin_unlock_irq(&pool->lock); + } + + /** +--- a/kernel/workqueue_internal.h ++++ b/kernel/workqueue_internal.h +@@ -45,6 +45,7 @@ struct worker { + unsigned long last_active; /* L: last active timestamp */ + unsigned int flags; /* X: flags */ + int id; /* I: worker id */ ++ int sleeping; /* None */ + + /* + * Opaque string set with work_set_desc(). Printed out with task +@@ -70,7 +71,7 @@ static inline struct worker *current_wq_ + * Scheduler hooks for concurrency managed workqueue. Only to be used from + * sched/core.c and workqueue.c. + */ +-void wq_worker_waking_up(struct task_struct *task, int cpu); +-struct task_struct *wq_worker_sleeping(struct task_struct *task); ++void wq_worker_running(struct task_struct *task); ++void wq_worker_sleeping(struct task_struct *task); + + #endif /* _KERNEL_WORKQUEUE_INTERNAL_H */ diff --git a/patches/features/all/rt/workqueue-prevent-deadlock-stall.patch b/patches/features/all/rt/workqueue-prevent-deadlock-stall.patch new file mode 100644 index 00000000000..c7e9e7a774d --- /dev/null +++ b/patches/features/all/rt/workqueue-prevent-deadlock-stall.patch @@ -0,0 +1,201 @@ +Subject: workqueue: Prevent deadlock/stall on RT +From: Thomas Gleixner +Date: Fri, 27 Jun 2014 16:24:52 +0200 (CEST) +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Austin reported a XFS deadlock/stall on RT where scheduled work gets +never exececuted and tasks are waiting for each other for ever. + +The underlying problem is the modification of the RT code to the +handling of workers which are about to go to sleep. In mainline a +worker thread which goes to sleep wakes an idle worker if there is +more work to do. This happens from the guts of the schedule() +function. On RT this must be outside and the accessed data structures +are not protected against scheduling due to the spinlock to rtmutex +conversion. So the naive solution to this was to move the code outside +of the scheduler and protect the data structures by the pool +lock. That approach turned out to be a little naive as we cannot call +into that code when the thread blocks on a lock, as it is not allowed +to block on two locks in parallel. So we dont call into the worker +wakeup magic when the worker is blocked on a lock, which causes the +deadlock/stall observed by Austin and Mike. + +Looking deeper into that worker code it turns out that the only +relevant data structure which needs to be protected is the list of +idle workers which can be woken up. + +So the solution is to protect the list manipulation operations with +preempt_enable/disable pairs on RT and call unconditionally into the +worker code even when the worker is blocked on a lock. The preemption +protection is safe as there is nothing which can fiddle with the list +outside of thread context. + +Reported-and_tested-by: Austin Schuh +Reported-and_tested-by: Mike Galbraith +Signed-off-by: Thomas Gleixner +Link: http://vger.kernel.org/r/alpine.DEB.2.10.1406271249510.5170@nanos +Cc: Richard Weinberger +Cc: Steven Rostedt + +--- + kernel/sched/core.c | 7 ++++-- + kernel/workqueue.c | 60 ++++++++++++++++++++++++++++++++++++++++------------ + 2 files changed, 52 insertions(+), 15 deletions(-) + +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -3474,9 +3474,8 @@ void __noreturn do_task_dead(void) + + static inline void sched_submit_work(struct task_struct *tsk) + { +- if (!tsk->state || tsk_is_pi_blocked(tsk)) ++ if (!tsk->state) + return; +- + /* + * If a worker went to sleep, notify and ask workqueue whether + * it wants to wake up a task to maintain concurrency. +@@ -3484,6 +3483,10 @@ static inline void sched_submit_work(str + if (tsk->flags & PF_WQ_WORKER) + wq_worker_sleeping(tsk); + ++ ++ if (tsk_is_pi_blocked(tsk)) ++ return; ++ + /* + * If we are going to sleep and we have plugged IO queued, + * make sure to submit it to avoid deadlocks. +--- a/kernel/workqueue.c ++++ b/kernel/workqueue.c +@@ -125,6 +125,11 @@ enum { + * cpu or grabbing pool->lock is enough for read access. If + * POOL_DISASSOCIATED is set, it's identical to L. + * ++ * On RT we need the extra protection via rt_lock_idle_list() for ++ * the list manipulations against read access from ++ * wq_worker_sleeping(). All other places are nicely serialized via ++ * pool->lock. ++ * + * A: pool->attach_mutex protected. + * + * PL: wq_pool_mutex protected. +@@ -432,6 +437,31 @@ static void workqueue_sysfs_unregister(s + if (({ assert_rcu_or_wq_mutex(wq); false; })) { } \ + else + ++#ifdef CONFIG_PREEMPT_RT_BASE ++static inline void rt_lock_idle_list(struct worker_pool *pool) ++{ ++ preempt_disable(); ++} ++static inline void rt_unlock_idle_list(struct worker_pool *pool) ++{ ++ preempt_enable(); ++} ++static inline void sched_lock_idle_list(struct worker_pool *pool) { } ++static inline void sched_unlock_idle_list(struct worker_pool *pool) { } ++#else ++static inline void rt_lock_idle_list(struct worker_pool *pool) { } ++static inline void rt_unlock_idle_list(struct worker_pool *pool) { } ++static inline void sched_lock_idle_list(struct worker_pool *pool) ++{ ++ spin_lock_irq(&pool->lock); ++} ++static inline void sched_unlock_idle_list(struct worker_pool *pool) ++{ ++ spin_unlock_irq(&pool->lock); ++} ++#endif ++ ++ + #ifdef CONFIG_DEBUG_OBJECTS_WORK + + static struct debug_obj_descr work_debug_descr; +@@ -838,10 +868,16 @@ static struct worker *first_idle_worker( + */ + static void wake_up_worker(struct worker_pool *pool) + { +- struct worker *worker = first_idle_worker(pool); ++ struct worker *worker; ++ ++ rt_lock_idle_list(pool); ++ ++ worker = first_idle_worker(pool); + + if (likely(worker)) + wake_up_process(worker->task); ++ ++ rt_unlock_idle_list(pool); + } + + /** +@@ -870,7 +906,7 @@ void wq_worker_running(struct task_struc + */ + void wq_worker_sleeping(struct task_struct *task) + { +- struct worker *next, *worker = kthread_data(task); ++ struct worker *worker = kthread_data(task); + struct worker_pool *pool; + + /* +@@ -887,26 +923,18 @@ void wq_worker_sleeping(struct task_stru + return; + + worker->sleeping = 1; +- spin_lock_irq(&pool->lock); + + /* + * The counterpart of the following dec_and_test, implied mb, + * worklist not empty test sequence is in insert_work(). + * Please read comment there. +- * +- * NOT_RUNNING is clear. This means that we're bound to and +- * running on the local cpu w/ rq lock held and preemption +- * disabled, which in turn means that none else could be +- * manipulating idle_list, so dereferencing idle_list without pool +- * lock is safe. + */ + if (atomic_dec_and_test(&pool->nr_running) && + !list_empty(&pool->worklist)) { +- next = first_idle_worker(pool); +- if (next) +- wake_up_process(next->task); ++ sched_lock_idle_list(pool); ++ wake_up_worker(pool); ++ sched_unlock_idle_list(pool); + } +- spin_unlock_irq(&pool->lock); + } + + /** +@@ -1637,7 +1665,9 @@ static void worker_enter_idle(struct wor + worker->last_active = jiffies; + + /* idle_list is LIFO */ ++ rt_lock_idle_list(pool); + list_add(&worker->entry, &pool->idle_list); ++ rt_unlock_idle_list(pool); + + if (too_many_workers(pool) && !timer_pending(&pool->idle_timer)) + mod_timer(&pool->idle_timer, jiffies + IDLE_WORKER_TIMEOUT); +@@ -1670,7 +1700,9 @@ static void worker_leave_idle(struct wor + return; + worker_clr_flags(worker, WORKER_IDLE); + pool->nr_idle--; ++ rt_lock_idle_list(pool); + list_del_init(&worker->entry); ++ rt_unlock_idle_list(pool); + } + + static struct worker *alloc_worker(int node) +@@ -1836,7 +1868,9 @@ static void destroy_worker(struct worker + pool->nr_workers--; + pool->nr_idle--; + ++ rt_lock_idle_list(pool); + list_del_init(&worker->entry); ++ rt_unlock_idle_list(pool); + worker->flags |= WORKER_DIE; + wake_up_process(worker->task); + } diff --git a/patches/features/all/rt/workqueue-use-locallock.patch b/patches/features/all/rt/workqueue-use-locallock.patch new file mode 100644 index 00000000000..969abcf2443 --- /dev/null +++ b/patches/features/all/rt/workqueue-use-locallock.patch @@ -0,0 +1,159 @@ +Subject: workqueue: Use local irq lock instead of irq disable regions +From: Thomas Gleixner +Date: Sun, 17 Jul 2011 21:42:26 +0200 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Use a local_irq_lock as a replacement for irq off regions. We keep the +semantic of irq-off in regard to the pool->lock and remain preemptible. + +Signed-off-by: Thomas Gleixner +--- + kernel/workqueue.c | 36 ++++++++++++++++++++++-------------- + 1 file changed, 22 insertions(+), 14 deletions(-) + +--- a/kernel/workqueue.c ++++ b/kernel/workqueue.c +@@ -49,6 +49,7 @@ + #include + #include + #include ++#include + + #include "workqueue_internal.h" + +@@ -352,6 +353,8 @@ EXPORT_SYMBOL_GPL(system_power_efficient + struct workqueue_struct *system_freezable_power_efficient_wq __read_mostly; + EXPORT_SYMBOL_GPL(system_freezable_power_efficient_wq); + ++static DEFINE_LOCAL_IRQ_LOCK(pendingb_lock); ++ + static int worker_thread(void *__worker); + static void workqueue_sysfs_unregister(struct workqueue_struct *wq); + +@@ -1105,9 +1108,11 @@ static void put_pwq_unlocked(struct pool + * As both pwqs and pools are RCU protected, the + * following lock operations are safe. + */ +- spin_lock_irq(&pwq->pool->lock); ++ rcu_read_lock(); ++ local_spin_lock_irq(pendingb_lock, &pwq->pool->lock); + put_pwq(pwq); +- spin_unlock_irq(&pwq->pool->lock); ++ local_spin_unlock_irq(pendingb_lock, &pwq->pool->lock); ++ rcu_read_unlock(); + } + } + +@@ -1211,7 +1216,7 @@ static int try_to_grab_pending(struct wo + struct worker_pool *pool; + struct pool_workqueue *pwq; + +- local_irq_save(*flags); ++ local_lock_irqsave(pendingb_lock, *flags); + + /* try to steal the timer if it exists */ + if (is_dwork) { +@@ -1275,7 +1280,7 @@ static int try_to_grab_pending(struct wo + spin_unlock(&pool->lock); + fail: + rcu_read_unlock(); +- local_irq_restore(*flags); ++ local_unlock_irqrestore(pendingb_lock, *flags); + if (work_is_canceling(work)) + return -ENOENT; + cpu_relax(); +@@ -1380,7 +1385,7 @@ static void __queue_work(int cpu, struct + * queued or lose PENDING. Grabbing PENDING and queueing should + * happen with IRQ disabled. + */ +- WARN_ON_ONCE(!irqs_disabled()); ++ WARN_ON_ONCE_NONRT(!irqs_disabled()); + + debug_work_activate(work); + +@@ -1486,14 +1491,14 @@ bool queue_work_on(int cpu, struct workq + bool ret = false; + unsigned long flags; + +- local_irq_save(flags); ++ local_lock_irqsave(pendingb_lock,flags); + + if (!test_and_set_bit(WORK_STRUCT_PENDING_BIT, work_data_bits(work))) { + __queue_work(cpu, wq, work); + ret = true; + } + +- local_irq_restore(flags); ++ local_unlock_irqrestore(pendingb_lock, flags); + return ret; + } + EXPORT_SYMBOL(queue_work_on); +@@ -1502,8 +1507,11 @@ void delayed_work_timer_fn(unsigned long + { + struct delayed_work *dwork = (struct delayed_work *)__data; + ++ /* XXX */ ++ /* local_lock(pendingb_lock); */ + /* should have been called from irqsafe timer with irq already off */ + __queue_work(dwork->cpu, dwork->wq, &dwork->work); ++ /* local_unlock(pendingb_lock); */ + } + EXPORT_SYMBOL(delayed_work_timer_fn); + +@@ -1559,14 +1567,14 @@ bool queue_delayed_work_on(int cpu, stru + unsigned long flags; + + /* read the comment in __queue_work() */ +- local_irq_save(flags); ++ local_lock_irqsave(pendingb_lock, flags); + + if (!test_and_set_bit(WORK_STRUCT_PENDING_BIT, work_data_bits(work))) { + __queue_delayed_work(cpu, wq, dwork, delay); + ret = true; + } + +- local_irq_restore(flags); ++ local_unlock_irqrestore(pendingb_lock, flags); + return ret; + } + EXPORT_SYMBOL(queue_delayed_work_on); +@@ -1601,7 +1609,7 @@ bool mod_delayed_work_on(int cpu, struct + + if (likely(ret >= 0)) { + __queue_delayed_work(cpu, wq, dwork, delay); +- local_irq_restore(flags); ++ local_unlock_irqrestore(pendingb_lock, flags); + } + + /* -ENOENT from try_to_grab_pending() becomes %true */ +@@ -2951,7 +2959,7 @@ static bool __cancel_work_timer(struct w + + /* tell other tasks trying to grab @work to back off */ + mark_work_canceling(work); +- local_irq_restore(flags); ++ local_unlock_irqrestore(pendingb_lock, flags); + + /* + * This allows canceling during early boot. We know that @work +@@ -3012,10 +3020,10 @@ EXPORT_SYMBOL_GPL(cancel_work_sync); + */ + bool flush_delayed_work(struct delayed_work *dwork) + { +- local_irq_disable(); ++ local_lock_irq(pendingb_lock); + if (del_timer_sync(&dwork->timer)) + __queue_work(dwork->cpu, dwork->wq, &dwork->work); +- local_irq_enable(); ++ local_unlock_irq(pendingb_lock); + return flush_work(&dwork->work); + } + EXPORT_SYMBOL(flush_delayed_work); +@@ -3033,7 +3041,7 @@ static bool __cancel_work(struct work_st + return false; + + set_work_pool_and_clear_pending(work, get_work_pool_id(work)); +- local_irq_restore(flags); ++ local_unlock_irqrestore(pendingb_lock, flags); + return ret; + } + diff --git a/patches/features/all/rt/workqueue-use-rcu.patch b/patches/features/all/rt/workqueue-use-rcu.patch new file mode 100644 index 00000000000..16361956a13 --- /dev/null +++ b/patches/features/all/rt/workqueue-use-rcu.patch @@ -0,0 +1,354 @@ +Subject: workqueue: Use normal rcu +From: Thomas Gleixner +Date: Wed, 24 Jul 2013 15:26:54 +0200 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +There is no need for sched_rcu. The undocumented reason why sched_rcu +is used is to avoid a few explicit rcu_read_lock()/unlock() pairs by +abusing the fact that sched_rcu reader side critical sections are also +protected by preempt or irq disabled regions. + +Signed-off-by: Thomas Gleixner +--- + kernel/workqueue.c | 95 +++++++++++++++++++++++++++++------------------------ + 1 file changed, 52 insertions(+), 43 deletions(-) + +--- a/kernel/workqueue.c ++++ b/kernel/workqueue.c +@@ -127,7 +127,7 @@ enum { + * + * PL: wq_pool_mutex protected. + * +- * PR: wq_pool_mutex protected for writes. Sched-RCU protected for reads. ++ * PR: wq_pool_mutex protected for writes. RCU protected for reads. + * + * PW: wq_pool_mutex and wq->mutex protected for writes. Either for reads. + * +@@ -136,7 +136,7 @@ enum { + * + * WQ: wq->mutex protected. + * +- * WR: wq->mutex protected for writes. Sched-RCU protected for reads. ++ * WR: wq->mutex protected for writes. RCU protected for reads. + * + * MD: wq_mayday_lock protected. + */ +@@ -186,7 +186,7 @@ struct worker_pool { + atomic_t nr_running ____cacheline_aligned_in_smp; + + /* +- * Destruction of pool is sched-RCU protected to allow dereferences ++ * Destruction of pool is RCU protected to allow dereferences + * from get_work_pool(). + */ + struct rcu_head rcu; +@@ -215,7 +215,7 @@ struct pool_workqueue { + /* + * Release of unbound pwq is punted to system_wq. See put_pwq() + * and pwq_unbound_release_workfn() for details. pool_workqueue +- * itself is also sched-RCU protected so that the first pwq can be ++ * itself is also RCU protected so that the first pwq can be + * determined without grabbing wq->mutex. + */ + struct work_struct unbound_release_work; +@@ -359,20 +359,20 @@ static void workqueue_sysfs_unregister(s + #include + + #define assert_rcu_or_pool_mutex() \ +- RCU_LOCKDEP_WARN(!rcu_read_lock_sched_held() && \ ++ RCU_LOCKDEP_WARN(!rcu_read_lock_held() && \ + !lockdep_is_held(&wq_pool_mutex), \ +- "sched RCU or wq_pool_mutex should be held") ++ "RCU or wq_pool_mutex should be held") + + #define assert_rcu_or_wq_mutex(wq) \ +- RCU_LOCKDEP_WARN(!rcu_read_lock_sched_held() && \ ++ RCU_LOCKDEP_WARN(!rcu_read_lock_held() && \ + !lockdep_is_held(&wq->mutex), \ +- "sched RCU or wq->mutex should be held") ++ "RCU or wq->mutex should be held") + + #define assert_rcu_or_wq_mutex_or_pool_mutex(wq) \ +- RCU_LOCKDEP_WARN(!rcu_read_lock_sched_held() && \ ++ RCU_LOCKDEP_WARN(!rcu_read_lock_held() && \ + !lockdep_is_held(&wq->mutex) && \ + !lockdep_is_held(&wq_pool_mutex), \ +- "sched RCU, wq->mutex or wq_pool_mutex should be held") ++ "RCU, wq->mutex or wq_pool_mutex should be held") + + #define for_each_cpu_worker_pool(pool, cpu) \ + for ((pool) = &per_cpu(cpu_worker_pools, cpu)[0]; \ +@@ -384,7 +384,7 @@ static void workqueue_sysfs_unregister(s + * @pool: iteration cursor + * @pi: integer used for iteration + * +- * This must be called either with wq_pool_mutex held or sched RCU read ++ * This must be called either with wq_pool_mutex held or RCU read + * locked. If the pool needs to be used beyond the locking in effect, the + * caller is responsible for guaranteeing that the pool stays online. + * +@@ -416,7 +416,7 @@ static void workqueue_sysfs_unregister(s + * @pwq: iteration cursor + * @wq: the target workqueue + * +- * This must be called either with wq->mutex held or sched RCU read locked. ++ * This must be called either with wq->mutex held or RCU read locked. + * If the pwq needs to be used beyond the locking in effect, the caller is + * responsible for guaranteeing that the pwq stays online. + * +@@ -552,7 +552,7 @@ static int worker_pool_assign_id(struct + * @wq: the target workqueue + * @node: the node ID + * +- * This must be called with any of wq_pool_mutex, wq->mutex or sched RCU ++ * This must be called with any of wq_pool_mutex, wq->mutex or RCU + * read locked. + * If the pwq needs to be used beyond the locking in effect, the caller is + * responsible for guaranteeing that the pwq stays online. +@@ -696,8 +696,8 @@ static struct pool_workqueue *get_work_p + * @work: the work item of interest + * + * Pools are created and destroyed under wq_pool_mutex, and allows read +- * access under sched-RCU read lock. As such, this function should be +- * called under wq_pool_mutex or with preemption disabled. ++ * access under RCU read lock. As such, this function should be ++ * called under wq_pool_mutex or inside of a rcu_read_lock() region. + * + * All fields of the returned pool are accessible as long as the above + * mentioned locking is in effect. If the returned pool needs to be used +@@ -1102,7 +1102,7 @@ static void put_pwq_unlocked(struct pool + { + if (pwq) { + /* +- * As both pwqs and pools are sched-RCU protected, the ++ * As both pwqs and pools are RCU protected, the + * following lock operations are safe. + */ + spin_lock_irq(&pwq->pool->lock); +@@ -1230,6 +1230,7 @@ static int try_to_grab_pending(struct wo + if (!test_and_set_bit(WORK_STRUCT_PENDING_BIT, work_data_bits(work))) + return 0; + ++ rcu_read_lock(); + /* + * The queueing is in progress, or it is already queued. Try to + * steal it from ->worklist without clearing WORK_STRUCT_PENDING. +@@ -1268,10 +1269,12 @@ static int try_to_grab_pending(struct wo + set_work_pool_and_keep_pending(work, pool->id); + + spin_unlock(&pool->lock); ++ rcu_read_unlock(); + return 1; + } + spin_unlock(&pool->lock); + fail: ++ rcu_read_unlock(); + local_irq_restore(*flags); + if (work_is_canceling(work)) + return -ENOENT; +@@ -1385,6 +1388,7 @@ static void __queue_work(int cpu, struct + if (unlikely(wq->flags & __WQ_DRAINING) && + WARN_ON_ONCE(!is_chained_work(wq))) + return; ++ rcu_read_lock(); + retry: + if (req_cpu == WORK_CPU_UNBOUND) + cpu = wq_select_unbound_cpu(raw_smp_processor_id()); +@@ -1441,10 +1445,8 @@ static void __queue_work(int cpu, struct + /* pwq determined, queue */ + trace_workqueue_queue_work(req_cpu, pwq, work); + +- if (WARN_ON(!list_empty(&work->entry))) { +- spin_unlock(&pwq->pool->lock); +- return; +- } ++ if (WARN_ON(!list_empty(&work->entry))) ++ goto out; + + pwq->nr_in_flight[pwq->work_color]++; + work_flags = work_color_to_flags(pwq->work_color); +@@ -1462,7 +1464,9 @@ static void __queue_work(int cpu, struct + + insert_work(pwq, work, worklist, work_flags); + ++out: + spin_unlock(&pwq->pool->lock); ++ rcu_read_unlock(); + } + + /** +@@ -2815,14 +2819,14 @@ static bool start_flush_work(struct work + + might_sleep(); + +- local_irq_disable(); ++ rcu_read_lock(); + pool = get_work_pool(work); + if (!pool) { +- local_irq_enable(); ++ rcu_read_unlock(); + return false; + } + +- spin_lock(&pool->lock); ++ spin_lock_irq(&pool->lock); + /* see the comment in try_to_grab_pending() with the same code */ + pwq = get_work_pwq(work); + if (pwq) { +@@ -2853,10 +2857,11 @@ static bool start_flush_work(struct work + lock_map_acquire(&pwq->wq->lockdep_map); + lock_map_release(&pwq->wq->lockdep_map); + } +- ++ rcu_read_unlock(); + return true; + already_gone: + spin_unlock_irq(&pool->lock); ++ rcu_read_unlock(); + return false; + } + +@@ -3284,7 +3289,7 @@ static void rcu_free_pool(struct rcu_hea + * put_unbound_pool - put a worker_pool + * @pool: worker_pool to put + * +- * Put @pool. If its refcnt reaches zero, it gets destroyed in sched-RCU ++ * Put @pool. If its refcnt reaches zero, it gets destroyed in RCU + * safe manner. get_unbound_pool() calls this function on its failure path + * and this function should be able to release pools which went through, + * successfully or not, init_worker_pool(). +@@ -3338,8 +3343,8 @@ static void put_unbound_pool(struct work + del_timer_sync(&pool->idle_timer); + del_timer_sync(&pool->mayday_timer); + +- /* sched-RCU protected to allow dereferences from get_work_pool() */ +- call_rcu_sched(&pool->rcu, rcu_free_pool); ++ /* RCU protected to allow dereferences from get_work_pool() */ ++ call_rcu(&pool->rcu, rcu_free_pool); + } + + /** +@@ -3446,14 +3451,14 @@ static void pwq_unbound_release_workfn(s + put_unbound_pool(pool); + mutex_unlock(&wq_pool_mutex); + +- call_rcu_sched(&pwq->rcu, rcu_free_pwq); ++ call_rcu(&pwq->rcu, rcu_free_pwq); + + /* + * If we're the last pwq going away, @wq is already dead and no one + * is gonna access it anymore. Schedule RCU free. + */ + if (is_last) +- call_rcu_sched(&wq->rcu, rcu_free_wq); ++ call_rcu(&wq->rcu, rcu_free_wq); + } + + /** +@@ -4128,7 +4133,7 @@ void destroy_workqueue(struct workqueue_ + * The base ref is never dropped on per-cpu pwqs. Directly + * schedule RCU free. + */ +- call_rcu_sched(&wq->rcu, rcu_free_wq); ++ call_rcu(&wq->rcu, rcu_free_wq); + } else { + /* + * We're the sole accessor of @wq at this point. Directly +@@ -4222,7 +4227,8 @@ bool workqueue_congested(int cpu, struct + struct pool_workqueue *pwq; + bool ret; + +- rcu_read_lock_sched(); ++ rcu_read_lock(); ++ preempt_disable(); + + if (cpu == WORK_CPU_UNBOUND) + cpu = smp_processor_id(); +@@ -4233,7 +4239,8 @@ bool workqueue_congested(int cpu, struct + pwq = unbound_pwq_by_node(wq, cpu_to_node(cpu)); + + ret = !list_empty(&pwq->delayed_works); +- rcu_read_unlock_sched(); ++ preempt_enable(); ++ rcu_read_unlock(); + + return ret; + } +@@ -4259,15 +4266,15 @@ unsigned int work_busy(struct work_struc + if (work_pending(work)) + ret |= WORK_BUSY_PENDING; + +- local_irq_save(flags); ++ rcu_read_lock(); + pool = get_work_pool(work); + if (pool) { +- spin_lock(&pool->lock); ++ spin_lock_irqsave(&pool->lock, flags); + if (find_worker_executing_work(pool, work)) + ret |= WORK_BUSY_RUNNING; +- spin_unlock(&pool->lock); ++ spin_unlock_irqrestore(&pool->lock, flags); + } +- local_irq_restore(flags); ++ rcu_read_unlock(); + + return ret; + } +@@ -4456,7 +4463,7 @@ void show_workqueue_state(void) + unsigned long flags; + int pi; + +- rcu_read_lock_sched(); ++ rcu_read_lock(); + + pr_info("Showing busy workqueues and worker pools:\n"); + +@@ -4521,7 +4528,7 @@ void show_workqueue_state(void) + touch_nmi_watchdog(); + } + +- rcu_read_unlock_sched(); ++ rcu_read_unlock(); + } + + /* +@@ -4882,16 +4889,16 @@ bool freeze_workqueues_busy(void) + * nr_active is monotonically decreasing. It's safe + * to peek without lock. + */ +- rcu_read_lock_sched(); ++ rcu_read_lock(); + for_each_pwq(pwq, wq) { + WARN_ON_ONCE(pwq->nr_active < 0); + if (pwq->nr_active) { + busy = true; +- rcu_read_unlock_sched(); ++ rcu_read_unlock(); + goto out_unlock; + } + } +- rcu_read_unlock_sched(); ++ rcu_read_unlock(); + } + out_unlock: + mutex_unlock(&wq_pool_mutex); +@@ -5081,7 +5088,8 @@ static ssize_t wq_pool_ids_show(struct d + const char *delim = ""; + int node, written = 0; + +- rcu_read_lock_sched(); ++ get_online_cpus(); ++ rcu_read_lock(); + for_each_node(node) { + written += scnprintf(buf + written, PAGE_SIZE - written, + "%s%d:%d", delim, node, +@@ -5089,7 +5097,8 @@ static ssize_t wq_pool_ids_show(struct d + delim = " "; + } + written += scnprintf(buf + written, PAGE_SIZE - written, "\n"); +- rcu_read_unlock_sched(); ++ rcu_read_unlock(); ++ put_online_cpus(); + + return written; + } diff --git a/patches/features/all/rt/x86-UV-raw_spinlock-conversion.patch b/patches/features/all/rt/x86-UV-raw_spinlock-conversion.patch new file mode 100644 index 00000000000..12c0efa171f --- /dev/null +++ b/patches/features/all/rt/x86-UV-raw_spinlock-conversion.patch @@ -0,0 +1,220 @@ +From: Mike Galbraith +Date: Sun, 2 Nov 2014 08:31:37 +0100 +Subject: x86: UV: raw_spinlock conversion +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Shrug. Lots of hobbyists have a beast in their basement, right? + + +Signed-off-by: Mike Galbraith +Signed-off-by: Sebastian Andrzej Siewior +--- + arch/x86/include/asm/uv/uv_bau.h | 14 +++++++------- + arch/x86/platform/uv/tlb_uv.c | 26 +++++++++++++------------- + arch/x86/platform/uv/uv_time.c | 20 ++++++++++++-------- + 3 files changed, 32 insertions(+), 28 deletions(-) + +--- a/arch/x86/include/asm/uv/uv_bau.h ++++ b/arch/x86/include/asm/uv/uv_bau.h +@@ -643,9 +643,9 @@ struct bau_control { + cycles_t send_message; + cycles_t period_end; + cycles_t period_time; +- spinlock_t uvhub_lock; +- spinlock_t queue_lock; +- spinlock_t disable_lock; ++ raw_spinlock_t uvhub_lock; ++ raw_spinlock_t queue_lock; ++ raw_spinlock_t disable_lock; + /* tunables */ + int max_concurr; + int max_concurr_const; +@@ -847,15 +847,15 @@ static inline int atom_asr(short i, stru + * to be lowered below the current 'v'. atomic_add_unless can only stop + * on equal. + */ +-static inline int atomic_inc_unless_ge(spinlock_t *lock, atomic_t *v, int u) ++static inline int atomic_inc_unless_ge(raw_spinlock_t *lock, atomic_t *v, int u) + { +- spin_lock(lock); ++ raw_spin_lock(lock); + if (atomic_read(v) >= u) { +- spin_unlock(lock); ++ raw_spin_unlock(lock); + return 0; + } + atomic_inc(v); +- spin_unlock(lock); ++ raw_spin_unlock(lock); + return 1; + } + +--- a/arch/x86/platform/uv/tlb_uv.c ++++ b/arch/x86/platform/uv/tlb_uv.c +@@ -740,9 +740,9 @@ static void destination_plugged(struct b + + quiesce_local_uvhub(hmaster); + +- spin_lock(&hmaster->queue_lock); ++ raw_spin_lock(&hmaster->queue_lock); + reset_with_ipi(&bau_desc->distribution, bcp); +- spin_unlock(&hmaster->queue_lock); ++ raw_spin_unlock(&hmaster->queue_lock); + + end_uvhub_quiesce(hmaster); + +@@ -762,9 +762,9 @@ static void destination_timeout(struct b + + quiesce_local_uvhub(hmaster); + +- spin_lock(&hmaster->queue_lock); ++ raw_spin_lock(&hmaster->queue_lock); + reset_with_ipi(&bau_desc->distribution, bcp); +- spin_unlock(&hmaster->queue_lock); ++ raw_spin_unlock(&hmaster->queue_lock); + + end_uvhub_quiesce(hmaster); + +@@ -785,7 +785,7 @@ static void disable_for_period(struct ba + cycles_t tm1; + + hmaster = bcp->uvhub_master; +- spin_lock(&hmaster->disable_lock); ++ raw_spin_lock(&hmaster->disable_lock); + if (!bcp->baudisabled) { + stat->s_bau_disabled++; + tm1 = get_cycles(); +@@ -798,7 +798,7 @@ static void disable_for_period(struct ba + } + } + } +- spin_unlock(&hmaster->disable_lock); ++ raw_spin_unlock(&hmaster->disable_lock); + } + + static void count_max_concurr(int stat, struct bau_control *bcp, +@@ -861,7 +861,7 @@ static void record_send_stats(cycles_t t + */ + static void uv1_throttle(struct bau_control *hmaster, struct ptc_stats *stat) + { +- spinlock_t *lock = &hmaster->uvhub_lock; ++ raw_spinlock_t *lock = &hmaster->uvhub_lock; + atomic_t *v; + + v = &hmaster->active_descriptor_count; +@@ -995,7 +995,7 @@ static int check_enable(struct bau_contr + struct bau_control *hmaster; + + hmaster = bcp->uvhub_master; +- spin_lock(&hmaster->disable_lock); ++ raw_spin_lock(&hmaster->disable_lock); + if (bcp->baudisabled && (get_cycles() >= bcp->set_bau_on_time)) { + stat->s_bau_reenabled++; + for_each_present_cpu(tcpu) { +@@ -1007,10 +1007,10 @@ static int check_enable(struct bau_contr + tbcp->period_giveups = 0; + } + } +- spin_unlock(&hmaster->disable_lock); ++ raw_spin_unlock(&hmaster->disable_lock); + return 0; + } +- spin_unlock(&hmaster->disable_lock); ++ raw_spin_unlock(&hmaster->disable_lock); + return -1; + } + +@@ -1941,9 +1941,9 @@ static void __init init_per_cpu_tunables + bcp->cong_reps = congested_reps; + bcp->disabled_period = sec_2_cycles(disabled_period); + bcp->giveup_limit = giveup_limit; +- spin_lock_init(&bcp->queue_lock); +- spin_lock_init(&bcp->uvhub_lock); +- spin_lock_init(&bcp->disable_lock); ++ raw_spin_lock_init(&bcp->queue_lock); ++ raw_spin_lock_init(&bcp->uvhub_lock); ++ raw_spin_lock_init(&bcp->disable_lock); + } + } + +--- a/arch/x86/platform/uv/uv_time.c ++++ b/arch/x86/platform/uv/uv_time.c +@@ -57,7 +57,7 @@ static DEFINE_PER_CPU(struct clock_event + + /* There is one of these allocated per node */ + struct uv_rtc_timer_head { +- spinlock_t lock; ++ raw_spinlock_t lock; + /* next cpu waiting for timer, local node relative: */ + int next_cpu; + /* number of cpus on this node: */ +@@ -177,7 +177,7 @@ static __init int uv_rtc_allocate_timers + uv_rtc_deallocate_timers(); + return -ENOMEM; + } +- spin_lock_init(&head->lock); ++ raw_spin_lock_init(&head->lock); + head->ncpus = uv_blade_nr_possible_cpus(bid); + head->next_cpu = -1; + blade_info[bid] = head; +@@ -231,7 +231,7 @@ static int uv_rtc_set_timer(int cpu, u64 + unsigned long flags; + int next_cpu; + +- spin_lock_irqsave(&head->lock, flags); ++ raw_spin_lock_irqsave(&head->lock, flags); + + next_cpu = head->next_cpu; + *t = expires; +@@ -243,12 +243,12 @@ static int uv_rtc_set_timer(int cpu, u64 + if (uv_setup_intr(cpu, expires)) { + *t = ULLONG_MAX; + uv_rtc_find_next_timer(head, pnode); +- spin_unlock_irqrestore(&head->lock, flags); ++ raw_spin_unlock_irqrestore(&head->lock, flags); + return -ETIME; + } + } + +- spin_unlock_irqrestore(&head->lock, flags); ++ raw_spin_unlock_irqrestore(&head->lock, flags); + return 0; + } + +@@ -267,7 +267,7 @@ static int uv_rtc_unset_timer(int cpu, i + unsigned long flags; + int rc = 0; + +- spin_lock_irqsave(&head->lock, flags); ++ raw_spin_lock_irqsave(&head->lock, flags); + + if ((head->next_cpu == bcpu && uv_read_rtc(NULL) >= *t) || force) + rc = 1; +@@ -279,7 +279,7 @@ static int uv_rtc_unset_timer(int cpu, i + uv_rtc_find_next_timer(head, pnode); + } + +- spin_unlock_irqrestore(&head->lock, flags); ++ raw_spin_unlock_irqrestore(&head->lock, flags); + + return rc; + } +@@ -299,13 +299,17 @@ static int uv_rtc_unset_timer(int cpu, i + static u64 uv_read_rtc(struct clocksource *cs) + { + unsigned long offset; ++ u64 cycles; + ++ preempt_disable(); + if (uv_get_min_hub_revision_id() == 1) + offset = 0; + else + offset = (uv_blade_processor_id() * L1_CACHE_BYTES) % PAGE_SIZE; + +- return (u64)uv_read_local_mmr(UVH_RTC | offset); ++ cycles = (u64)uv_read_local_mmr(UVH_RTC | offset); ++ preempt_enable(); ++ return cycles; + } + + /* diff --git a/patches/features/all/rt/x86-crypto-reduce-preempt-disabled-regions.patch b/patches/features/all/rt/x86-crypto-reduce-preempt-disabled-regions.patch new file mode 100644 index 00000000000..ab0473ac3f8 --- /dev/null +++ b/patches/features/all/rt/x86-crypto-reduce-preempt-disabled-regions.patch @@ -0,0 +1,112 @@ +Subject: x86: crypto: Reduce preempt disabled regions +From: Peter Zijlstra +Date: Mon, 14 Nov 2011 18:19:27 +0100 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Restrict the preempt disabled regions to the actual floating point +operations and enable preemption for the administrative actions. + +This is necessary on RT to avoid that kfree and other operations are +called with preemption disabled. + +Reported-and-tested-by: Carsten Emde +Signed-off-by: Peter Zijlstra + +Signed-off-by: Thomas Gleixner +--- + arch/x86/crypto/aesni-intel_glue.c | 22 ++++++++++++---------- + 1 file changed, 12 insertions(+), 10 deletions(-) + +--- a/arch/x86/crypto/aesni-intel_glue.c ++++ b/arch/x86/crypto/aesni-intel_glue.c +@@ -386,14 +386,14 @@ static int ecb_encrypt(struct skcipher_r + + err = skcipher_walk_virt(&walk, req, true); + +- kernel_fpu_begin(); + while ((nbytes = walk.nbytes)) { ++ kernel_fpu_begin(); + aesni_ecb_enc(ctx, walk.dst.virt.addr, walk.src.virt.addr, + nbytes & AES_BLOCK_MASK); ++ kernel_fpu_end(); + nbytes &= AES_BLOCK_SIZE - 1; + err = skcipher_walk_done(&walk, nbytes); + } +- kernel_fpu_end(); + + return err; + } +@@ -408,14 +408,14 @@ static int ecb_decrypt(struct skcipher_r + + err = skcipher_walk_virt(&walk, req, true); + +- kernel_fpu_begin(); + while ((nbytes = walk.nbytes)) { ++ kernel_fpu_begin(); + aesni_ecb_dec(ctx, walk.dst.virt.addr, walk.src.virt.addr, + nbytes & AES_BLOCK_MASK); ++ kernel_fpu_end(); + nbytes &= AES_BLOCK_SIZE - 1; + err = skcipher_walk_done(&walk, nbytes); + } +- kernel_fpu_end(); + + return err; + } +@@ -430,14 +430,14 @@ static int cbc_encrypt(struct skcipher_r + + err = skcipher_walk_virt(&walk, req, true); + +- kernel_fpu_begin(); + while ((nbytes = walk.nbytes)) { ++ kernel_fpu_begin(); + aesni_cbc_enc(ctx, walk.dst.virt.addr, walk.src.virt.addr, + nbytes & AES_BLOCK_MASK, walk.iv); ++ kernel_fpu_end(); + nbytes &= AES_BLOCK_SIZE - 1; + err = skcipher_walk_done(&walk, nbytes); + } +- kernel_fpu_end(); + + return err; + } +@@ -452,14 +452,14 @@ static int cbc_decrypt(struct skcipher_r + + err = skcipher_walk_virt(&walk, req, true); + +- kernel_fpu_begin(); + while ((nbytes = walk.nbytes)) { ++ kernel_fpu_begin(); + aesni_cbc_dec(ctx, walk.dst.virt.addr, walk.src.virt.addr, + nbytes & AES_BLOCK_MASK, walk.iv); ++ kernel_fpu_end(); + nbytes &= AES_BLOCK_SIZE - 1; + err = skcipher_walk_done(&walk, nbytes); + } +- kernel_fpu_end(); + + return err; + } +@@ -509,18 +509,20 @@ static int ctr_crypt(struct skcipher_req + + err = skcipher_walk_virt(&walk, req, true); + +- kernel_fpu_begin(); + while ((nbytes = walk.nbytes) >= AES_BLOCK_SIZE) { ++ kernel_fpu_begin(); + aesni_ctr_enc_tfm(ctx, walk.dst.virt.addr, walk.src.virt.addr, + nbytes & AES_BLOCK_MASK, walk.iv); ++ kernel_fpu_end(); + nbytes &= AES_BLOCK_SIZE - 1; + err = skcipher_walk_done(&walk, nbytes); + } + if (walk.nbytes) { ++ kernel_fpu_begin(); + ctr_crypt_final(ctx, &walk); ++ kernel_fpu_end(); + err = skcipher_walk_done(&walk, 0); + } +- kernel_fpu_end(); + + return err; + } diff --git a/patches/features/all/rt/x86-highmem-add-a-already-used-pte-check.patch b/patches/features/all/rt/x86-highmem-add-a-already-used-pte-check.patch new file mode 100644 index 00000000000..2b527ab4468 --- /dev/null +++ b/patches/features/all/rt/x86-highmem-add-a-already-used-pte-check.patch @@ -0,0 +1,23 @@ +From: Sebastian Andrzej Siewior +Date: Mon, 11 Mar 2013 17:09:55 +0100 +Subject: x86/highmem: Add a "already used pte" check +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +This is a copy from kmap_atomic_prot(). + +Signed-off-by: Sebastian Andrzej Siewior +--- + arch/x86/mm/iomap_32.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/arch/x86/mm/iomap_32.c ++++ b/arch/x86/mm/iomap_32.c +@@ -66,6 +66,8 @@ void *kmap_atomic_prot_pfn(unsigned long + type = kmap_atomic_idx_push(); + idx = type + KM_TYPE_NR * smp_processor_id(); + vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx); ++ WARN_ON(!pte_none(*(kmap_pte - idx))); ++ + #ifdef CONFIG_PREEMPT_RT_FULL + current->kmap_pte[type] = pte; + #endif diff --git a/patches/features/all/rt/x86-io-apic-migra-no-unmask.patch b/patches/features/all/rt/x86-io-apic-migra-no-unmask.patch new file mode 100644 index 00000000000..44219757487 --- /dev/null +++ b/patches/features/all/rt/x86-io-apic-migra-no-unmask.patch @@ -0,0 +1,28 @@ +From: Ingo Molnar +Date: Fri, 3 Jul 2009 08:29:27 -0500 +Subject: x86/ioapic: Do not unmask io_apic when interrupt is in progress +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +With threaded interrupts we might see an interrupt in progress on +migration. Do not unmask it when this is the case. + +Signed-off-by: Ingo Molnar +Signed-off-by: Thomas Gleixner + +--- +xXx + arch/x86/kernel/apic/io_apic.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/arch/x86/kernel/apic/io_apic.c ++++ b/arch/x86/kernel/apic/io_apic.c +@@ -1690,7 +1690,8 @@ static bool io_apic_level_ack_pending(st + static inline bool ioapic_irqd_mask(struct irq_data *data) + { + /* If we are moving the irq we need to mask it */ +- if (unlikely(irqd_is_setaffinity_pending(data))) { ++ if (unlikely(irqd_is_setaffinity_pending(data) && ++ !irqd_irq_inprogress(data))) { + mask_ioapic_irq(data); + return true; + } diff --git a/patches/features/all/rt/x86-kvm-require-const-tsc-for-rt.patch b/patches/features/all/rt/x86-kvm-require-const-tsc-for-rt.patch new file mode 100644 index 00000000000..93fc9321ae9 --- /dev/null +++ b/patches/features/all/rt/x86-kvm-require-const-tsc-for-rt.patch @@ -0,0 +1,31 @@ +Subject: x86: kvm Require const tsc for RT +From: Thomas Gleixner +Date: Sun, 06 Nov 2011 12:26:18 +0100 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Non constant TSC is a nightmare on bare metal already, but with +virtualization it becomes a complete disaster because the workarounds +are horrible latency wise. That's also a preliminary for running RT in +a guest on top of a RT host. + +Signed-off-by: Thomas Gleixner +--- + arch/x86/kvm/x86.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +--- a/arch/x86/kvm/x86.c ++++ b/arch/x86/kvm/x86.c +@@ -6138,6 +6138,13 @@ int kvm_arch_init(void *opaque) + goto out; + } + ++#ifdef CONFIG_PREEMPT_RT_FULL ++ if (!boot_cpu_has(X86_FEATURE_CONSTANT_TSC)) { ++ printk(KERN_ERR "RT requires X86_FEATURE_CONSTANT_TSC\n"); ++ return -EOPNOTSUPP; ++ } ++#endif ++ + r = kvm_mmu_module_init(); + if (r) + goto out_free_percpu; diff --git a/patches/features/all/rt/x86-mce-timer-hrtimer.patch b/patches/features/all/rt/x86-mce-timer-hrtimer.patch new file mode 100644 index 00000000000..6c59a9ed15f --- /dev/null +++ b/patches/features/all/rt/x86-mce-timer-hrtimer.patch @@ -0,0 +1,168 @@ +From: Thomas Gleixner +Date: Mon, 13 Dec 2010 16:33:39 +0100 +Subject: x86: Convert mce timer to hrtimer +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +mce_timer is started in atomic contexts of cpu bringup. This results +in might_sleep() warnings on RT. Convert mce_timer to a hrtimer to +avoid this. + +Signed-off-by: Thomas Gleixner +fold in: +|From: Mike Galbraith +|Date: Wed, 29 May 2013 13:52:13 +0200 +|Subject: [PATCH] x86/mce: fix mce timer interval +| +|Seems mce timer fire at the wrong frequency in -rt kernels since roughly +|forever due to 32 bit overflow. 3.8-rt is also missing a multiplier. +| +|Add missing us -> ns conversion and 32 bit overflow prevention. +| +|Signed-off-by: Mike Galbraith +|[bigeasy: use ULL instead of u64 cast] +|Signed-off-by: Sebastian Andrzej Siewior +--- + arch/x86/kernel/cpu/mcheck/mce.c | 54 ++++++++++++++++++--------------------- + 1 file changed, 26 insertions(+), 28 deletions(-) + +--- a/arch/x86/kernel/cpu/mcheck/mce.c ++++ b/arch/x86/kernel/cpu/mcheck/mce.c +@@ -42,6 +42,7 @@ + #include + #include + #include ++#include + #include + + #include +@@ -1345,7 +1346,7 @@ int memory_failure(unsigned long pfn, in + static unsigned long check_interval = INITIAL_CHECK_INTERVAL; + + static DEFINE_PER_CPU(unsigned long, mce_next_interval); /* in jiffies */ +-static DEFINE_PER_CPU(struct timer_list, mce_timer); ++static DEFINE_PER_CPU(struct hrtimer, mce_timer); + + static unsigned long mce_adjust_timer_default(unsigned long interval) + { +@@ -1354,27 +1355,19 @@ static unsigned long mce_adjust_timer_de + + static unsigned long (*mce_adjust_timer)(unsigned long interval) = mce_adjust_timer_default; + +-static void __start_timer(struct timer_list *t, unsigned long interval) ++static void __start_timer(struct hrtimer *t, unsigned long iv) + { +- unsigned long when = jiffies + interval; +- unsigned long flags; +- +- local_irq_save(flags); +- +- if (!timer_pending(t) || time_before(when, t->expires)) +- mod_timer(t, round_jiffies(when)); ++ if (!iv) ++ return; + +- local_irq_restore(flags); ++ hrtimer_start_range_ns(t, ns_to_ktime(jiffies_to_usecs(iv) * 1000ULL), ++ 0, HRTIMER_MODE_REL_PINNED); + } + +-static void mce_timer_fn(unsigned long data) ++static enum hrtimer_restart mce_timer_fn(struct hrtimer *timer) + { +- struct timer_list *t = this_cpu_ptr(&mce_timer); +- int cpu = smp_processor_id(); + unsigned long iv; + +- WARN_ON(cpu != data); +- + iv = __this_cpu_read(mce_next_interval); + + if (mce_available(this_cpu_ptr(&cpu_info))) { +@@ -1397,7 +1390,11 @@ static void mce_timer_fn(unsigned long d + + done: + __this_cpu_write(mce_next_interval, iv); +- __start_timer(t, iv); ++ if (!iv) ++ return HRTIMER_NORESTART; ++ ++ hrtimer_forward_now(timer, ns_to_ktime(jiffies_to_nsecs(iv))); ++ return HRTIMER_RESTART; + } + + /* +@@ -1405,7 +1402,7 @@ static void mce_timer_fn(unsigned long d + */ + void mce_timer_kick(unsigned long interval) + { +- struct timer_list *t = this_cpu_ptr(&mce_timer); ++ struct hrtimer *t = this_cpu_ptr(&mce_timer); + unsigned long iv = __this_cpu_read(mce_next_interval); + + __start_timer(t, interval); +@@ -1420,7 +1417,7 @@ static void mce_timer_delete_all(void) + int cpu; + + for_each_online_cpu(cpu) +- del_timer_sync(&per_cpu(mce_timer, cpu)); ++ hrtimer_cancel(&per_cpu(mce_timer, cpu)); + } + + /* +@@ -1749,7 +1746,7 @@ static void __mcheck_cpu_clear_vendor(st + } + } + +-static void mce_start_timer(struct timer_list *t) ++static void mce_start_timer(struct hrtimer *t) + { + unsigned long iv = check_interval * HZ; + +@@ -1762,18 +1759,19 @@ static void mce_start_timer(struct timer + + static void __mcheck_cpu_setup_timer(void) + { +- struct timer_list *t = this_cpu_ptr(&mce_timer); +- unsigned int cpu = smp_processor_id(); ++ struct hrtimer *t = this_cpu_ptr(&mce_timer); + +- setup_pinned_timer(t, mce_timer_fn, cpu); ++ hrtimer_init(t, CLOCK_MONOTONIC, HRTIMER_MODE_REL); ++ t->function = mce_timer_fn; + } + + static void __mcheck_cpu_init_timer(void) + { +- struct timer_list *t = this_cpu_ptr(&mce_timer); +- unsigned int cpu = smp_processor_id(); ++ struct hrtimer *t = this_cpu_ptr(&mce_timer); ++ ++ hrtimer_init(t, CLOCK_MONOTONIC, HRTIMER_MODE_REL); ++ t->function = mce_timer_fn; + +- setup_pinned_timer(t, mce_timer_fn, cpu); + mce_start_timer(t); + } + +@@ -2275,7 +2273,7 @@ static int mce_cpu_dead(unsigned int cpu + + static int mce_cpu_online(unsigned int cpu) + { +- struct timer_list *t = this_cpu_ptr(&mce_timer); ++ struct hrtimer *t = this_cpu_ptr(&mce_timer); + int ret; + + mce_device_create(cpu); +@@ -2292,10 +2290,10 @@ static int mce_cpu_online(unsigned int c + + static int mce_cpu_pre_down(unsigned int cpu) + { +- struct timer_list *t = this_cpu_ptr(&mce_timer); ++ struct hrtimer *t = this_cpu_ptr(&mce_timer); + + mce_disable_cpu(); +- del_timer_sync(t); ++ hrtimer_cancel(t); + mce_threshold_remove_device(cpu); + mce_device_remove(cpu); + return 0; diff --git a/patches/features/all/rt/x86-mce-use-swait-queue-for-mce-wakeups.patch b/patches/features/all/rt/x86-mce-use-swait-queue-for-mce-wakeups.patch new file mode 100644 index 00000000000..c0f37f3057f --- /dev/null +++ b/patches/features/all/rt/x86-mce-use-swait-queue-for-mce-wakeups.patch @@ -0,0 +1,126 @@ +Subject: x86/mce: use swait queue for mce wakeups +From: Steven Rostedt +Date: Fri, 27 Feb 2015 15:20:37 +0100 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +We had a customer report a lockup on a 3.0-rt kernel that had the +following backtrace: + +[ffff88107fca3e80] rt_spin_lock_slowlock at ffffffff81499113 +[ffff88107fca3f40] rt_spin_lock at ffffffff81499a56 +[ffff88107fca3f50] __wake_up at ffffffff81043379 +[ffff88107fca3f80] mce_notify_irq at ffffffff81017328 +[ffff88107fca3f90] intel_threshold_interrupt at ffffffff81019508 +[ffff88107fca3fa0] smp_threshold_interrupt at ffffffff81019fc1 +[ffff88107fca3fb0] threshold_interrupt at ffffffff814a1853 + +It actually bugged because the lock was taken by the same owner that +already had that lock. What happened was the thread that was setting +itself on a wait queue had the lock when an MCE triggered. The MCE +interrupt does a wake up on its wait list and grabs the same lock. + +NOTE: THIS IS NOT A BUG ON MAINLINE + +Sorry for yelling, but as I Cc'd mainline maintainers I want them to +know that this is an PREEMPT_RT bug only. I only Cc'd them for advice. + +On PREEMPT_RT the wait queue locks are converted from normal +"spin_locks" into an rt_mutex (see the rt_spin_lock_slowlock above). +These are not to be taken by hard interrupt context. This usually isn't +a problem as most all interrupts in PREEMPT_RT are converted into +schedulable threads. Unfortunately that's not the case with the MCE irq. + +As wait queue locks are notorious for long hold times, we can not +convert them to raw_spin_locks without causing issues with -rt. But +Thomas has created a "simple-wait" structure that uses raw spin locks +which may have been a good fit. + +Unfortunately, wait queues are not the only issue, as the mce_notify_irq +also does a schedule_work(), which grabs the workqueue spin locks that +have the exact same issue. + +Thus, this patch I'm proposing is to move the actual work of the MCE +interrupt into a helper thread that gets woken up on the MCE interrupt +and does the work in a schedulable context. + +NOTE: THIS PATCH ONLY CHANGES THE BEHAVIOR WHEN PREEMPT_RT IS SET + +Oops, sorry for yelling again, but I want to stress that I keep the same +behavior of mainline when PREEMPT_RT is not set. Thus, this only changes +the MCE behavior when PREEMPT_RT is configured. + +Signed-off-by: Steven Rostedt +[bigeasy@linutronix: make mce_notify_work() a proper prototype, use + kthread_run()] +Signed-off-by: Sebastian Andrzej Siewior +[wagi: use work-simple framework to defer work to a kthread] +Signed-off-by: Daniel Wagner +--- + arch/x86/kernel/cpu/mcheck/dev-mcelog.c | 37 +++++++++++++++++++++++++++++--- + 1 file changed, 34 insertions(+), 3 deletions(-) + +--- a/arch/x86/kernel/cpu/mcheck/dev-mcelog.c ++++ b/arch/x86/kernel/cpu/mcheck/dev-mcelog.c +@@ -14,6 +14,7 @@ + #include + #include + #include ++#include + + #include "mce-internal.h" + +@@ -86,13 +87,43 @@ static void mce_do_trigger(struct work_s + + static DECLARE_WORK(mce_trigger_work, mce_do_trigger); + +- +-void mce_work_trigger(void) ++static void __mce_work_trigger(struct swork_event *event) + { + if (mce_helper[0]) + schedule_work(&mce_trigger_work); + } + ++#ifdef CONFIG_PREEMPT_RT_FULL ++static bool notify_work_ready __read_mostly; ++static struct swork_event notify_work; ++ ++static int mce_notify_work_init(void) ++{ ++ int err; ++ ++ err = swork_get(); ++ if (err) ++ return err; ++ ++ INIT_SWORK(¬ify_work, __mce_work_trigger); ++ notify_work_ready = true; ++ return 0; ++} ++ ++void mce_work_trigger(void) ++{ ++ if (notify_work_ready) ++ swork_queue(¬ify_work); ++} ++ ++#else ++void mce_work_trigger(void) ++{ ++ __mce_work_trigger(NULL); ++} ++static inline int mce_notify_work_init(void) { return 0; } ++#endif ++ + static ssize_t + show_trigger(struct device *s, struct device_attribute *attr, char *buf) + { +@@ -356,7 +387,7 @@ static __init int dev_mcelog_init_device + + return err; + } +- ++ mce_notify_work_init(); + mce_register_decode_chain(&dev_mcelog_nb); + return 0; + } diff --git a/patches/features/all/rt/x86-preempt-lazy.patch b/patches/features/all/rt/x86-preempt-lazy.patch new file mode 100644 index 00000000000..a08d7b750fd --- /dev/null +++ b/patches/features/all/rt/x86-preempt-lazy.patch @@ -0,0 +1,223 @@ +Subject: x86: Support for lazy preemption +From: Thomas Gleixner +Date: Thu, 01 Nov 2012 11:03:47 +0100 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Implement the x86 pieces for lazy preempt. + +Signed-off-by: Thomas Gleixner +--- + arch/x86/Kconfig | 1 + + arch/x86/entry/common.c | 4 ++-- + arch/x86/entry/entry_32.S | 17 +++++++++++++++++ + arch/x86/entry/entry_64.S | 16 ++++++++++++++++ + arch/x86/include/asm/preempt.h | 31 ++++++++++++++++++++++++++++++- + arch/x86/include/asm/thread_info.h | 11 +++++++++++ + arch/x86/kernel/asm-offsets.c | 2 ++ + 7 files changed, 79 insertions(+), 3 deletions(-) + +--- a/arch/x86/Kconfig ++++ b/arch/x86/Kconfig +@@ -170,6 +170,7 @@ config X86 + select HAVE_HARDLOCKUP_DETECTOR_PERF if PERF_EVENTS && HAVE_PERF_EVENTS_NMI + select HAVE_PERF_REGS + select HAVE_PERF_USER_STACK_DUMP ++ select HAVE_PREEMPT_LAZY + select HAVE_RCU_TABLE_FREE + select HAVE_REGS_AND_STACK_ACCESS_API + select HAVE_RELIABLE_STACKTRACE if X86_64 && UNWINDER_FRAME_POINTER && STACK_VALIDATION +--- a/arch/x86/entry/common.c ++++ b/arch/x86/entry/common.c +@@ -132,7 +132,7 @@ static long syscall_trace_enter(struct p + + #define EXIT_TO_USERMODE_LOOP_FLAGS \ + (_TIF_SIGPENDING | _TIF_NOTIFY_RESUME | _TIF_UPROBE | \ +- _TIF_NEED_RESCHED | _TIF_USER_RETURN_NOTIFY | _TIF_PATCH_PENDING) ++ _TIF_NEED_RESCHED_MASK | _TIF_USER_RETURN_NOTIFY | _TIF_PATCH_PENDING) + + static void exit_to_usermode_loop(struct pt_regs *regs, u32 cached_flags) + { +@@ -147,7 +147,7 @@ static void exit_to_usermode_loop(struct + /* We have work to do. */ + local_irq_enable(); + +- if (cached_flags & _TIF_NEED_RESCHED) ++ if (cached_flags & _TIF_NEED_RESCHED_MASK) + schedule(); + + #ifdef ARCH_RT_DELAYS_SIGNAL_SEND +--- a/arch/x86/entry/entry_32.S ++++ b/arch/x86/entry/entry_32.S +@@ -350,8 +350,25 @@ END(ret_from_exception) + ENTRY(resume_kernel) + DISABLE_INTERRUPTS(CLBR_ANY) + .Lneed_resched: ++ # preempt count == 0 + NEED_RS set? + cmpl $0, PER_CPU_VAR(__preempt_count) ++#ifndef CONFIG_PREEMPT_LAZY + jnz restore_all ++#else ++ jz test_int_off ++ ++ # atleast preempt count == 0 ? ++ cmpl $_PREEMPT_ENABLED,PER_CPU_VAR(__preempt_count) ++ jne restore_all ++ ++ movl PER_CPU_VAR(current_task), %ebp ++ cmpl $0,TASK_TI_preempt_lazy_count(%ebp) # non-zero preempt_lazy_count ? ++ jnz restore_all ++ ++ testl $_TIF_NEED_RESCHED_LAZY, TASK_TI_flags(%ebp) ++ jz restore_all ++test_int_off: ++#endif + testl $X86_EFLAGS_IF, PT_EFLAGS(%esp) # interrupts off (exception path) ? + jz restore_all + call preempt_schedule_irq +--- a/arch/x86/entry/entry_64.S ++++ b/arch/x86/entry/entry_64.S +@@ -778,7 +778,23 @@ GLOBAL(swapgs_restore_regs_and_return_to + bt $9, EFLAGS(%rsp) /* were interrupts off? */ + jnc 1f + 0: cmpl $0, PER_CPU_VAR(__preempt_count) ++#ifndef CONFIG_PREEMPT_LAZY + jnz 1f ++#else ++ jz do_preempt_schedule_irq ++ ++ # atleast preempt count == 0 ? ++ cmpl $_PREEMPT_ENABLED,PER_CPU_VAR(__preempt_count) ++ jnz 1f ++ ++ movq PER_CPU_VAR(current_task), %rcx ++ cmpl $0, TASK_TI_preempt_lazy_count(%rcx) ++ jnz 1f ++ ++ bt $TIF_NEED_RESCHED_LAZY,TASK_TI_flags(%rcx) ++ jnc 1f ++do_preempt_schedule_irq: ++#endif + call preempt_schedule_irq + jmp 0b + 1: +--- a/arch/x86/include/asm/preempt.h ++++ b/arch/x86/include/asm/preempt.h +@@ -86,17 +86,46 @@ static __always_inline void __preempt_co + * a decrement which hits zero means we have no preempt_count and should + * reschedule. + */ +-static __always_inline bool __preempt_count_dec_and_test(void) ++static __always_inline bool ____preempt_count_dec_and_test(void) + { + GEN_UNARY_RMWcc("decl", __preempt_count, __percpu_arg(0), e); + } + ++static __always_inline bool __preempt_count_dec_and_test(void) ++{ ++ if (____preempt_count_dec_and_test()) ++ return true; ++#ifdef CONFIG_PREEMPT_LAZY ++ if (current_thread_info()->preempt_lazy_count) ++ return false; ++ return test_thread_flag(TIF_NEED_RESCHED_LAZY); ++#else ++ return false; ++#endif ++} ++ + /* + * Returns true when we need to resched and can (barring IRQ state). + */ + static __always_inline bool should_resched(int preempt_offset) + { ++#ifdef CONFIG_PREEMPT_LAZY ++ u32 tmp; ++ ++ tmp = raw_cpu_read_4(__preempt_count); ++ if (tmp == preempt_offset) ++ return true; ++ ++ /* preempt count == 0 ? */ ++ tmp &= ~PREEMPT_NEED_RESCHED; ++ if (tmp) ++ return false; ++ if (current_thread_info()->preempt_lazy_count) ++ return false; ++ return test_thread_flag(TIF_NEED_RESCHED_LAZY); ++#else + return unlikely(raw_cpu_read_4(__preempt_count) == preempt_offset); ++#endif + } + + #ifdef CONFIG_PREEMPT +--- a/arch/x86/include/asm/thread_info.h ++++ b/arch/x86/include/asm/thread_info.h +@@ -55,11 +55,14 @@ struct task_struct; + + struct thread_info { + unsigned long flags; /* low level flags */ ++ int preempt_lazy_count; /* 0 => lazy preemptable ++ <0 => BUG */ + }; + + #define INIT_THREAD_INFO(tsk) \ + { \ + .flags = 0, \ ++ .preempt_lazy_count = 0, \ + } + + #define init_stack (init_thread_union.stack) +@@ -68,6 +71,10 @@ struct thread_info { + + #include + ++#define GET_THREAD_INFO(reg) \ ++ _ASM_MOV PER_CPU_VAR(cpu_current_top_of_stack),reg ; \ ++ _ASM_SUB $(THREAD_SIZE),reg ; ++ + #endif + + /* +@@ -83,6 +90,7 @@ struct thread_info { + #define TIF_SYSCALL_EMU 6 /* syscall emulation active */ + #define TIF_SYSCALL_AUDIT 7 /* syscall auditing active */ + #define TIF_SECCOMP 8 /* secure computing */ ++#define TIF_NEED_RESCHED_LAZY 9 /* lazy rescheduling necessary */ + #define TIF_USER_RETURN_NOTIFY 11 /* notify kernel of userspace return */ + #define TIF_UPROBE 12 /* breakpointed or singlestepping */ + #define TIF_PATCH_PENDING 13 /* pending live patching update */ +@@ -109,6 +117,7 @@ struct thread_info { + #define _TIF_SYSCALL_EMU (1 << TIF_SYSCALL_EMU) + #define _TIF_SYSCALL_AUDIT (1 << TIF_SYSCALL_AUDIT) + #define _TIF_SECCOMP (1 << TIF_SECCOMP) ++#define _TIF_NEED_RESCHED_LAZY (1 << TIF_NEED_RESCHED_LAZY) + #define _TIF_USER_RETURN_NOTIFY (1 << TIF_USER_RETURN_NOTIFY) + #define _TIF_UPROBE (1 << TIF_UPROBE) + #define _TIF_PATCH_PENDING (1 << TIF_PATCH_PENDING) +@@ -150,6 +159,8 @@ struct thread_info { + #define _TIF_WORK_CTXSW_PREV (_TIF_WORK_CTXSW|_TIF_USER_RETURN_NOTIFY) + #define _TIF_WORK_CTXSW_NEXT (_TIF_WORK_CTXSW) + ++#define _TIF_NEED_RESCHED_MASK (_TIF_NEED_RESCHED | _TIF_NEED_RESCHED_LAZY) ++ + #define STACK_WARN (THREAD_SIZE/8) + + /* +--- a/arch/x86/kernel/asm-offsets.c ++++ b/arch/x86/kernel/asm-offsets.c +@@ -38,6 +38,7 @@ void common(void) { + + BLANK(); + OFFSET(TASK_TI_flags, task_struct, thread_info.flags); ++ OFFSET(TASK_TI_preempt_lazy_count, task_struct, thread_info.preempt_lazy_count); + OFFSET(TASK_addr_limit, task_struct, thread.addr_limit); + + BLANK(); +@@ -94,6 +95,7 @@ void common(void) { + + BLANK(); + DEFINE(PTREGS_SIZE, sizeof(struct pt_regs)); ++ DEFINE(_PREEMPT_ENABLED, PREEMPT_ENABLED); + + /* TLB state for the entry code */ + OFFSET(TLB_STATE_user_pcid_flush_mask, tlb_state, user_pcid_flush_mask); diff --git a/patches/features/all/rt/x86-signal-delay-calling-signals-on-32bit.patch b/patches/features/all/rt/x86-signal-delay-calling-signals-on-32bit.patch new file mode 100644 index 00000000000..afe61e29f34 --- /dev/null +++ b/patches/features/all/rt/x86-signal-delay-calling-signals-on-32bit.patch @@ -0,0 +1,43 @@ +From: Yang Shi +Date: Thu, 10 Dec 2015 10:58:51 -0800 +Subject: x86/signal: delay calling signals on 32bit +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +When running some ptrace single step tests on x86-32 machine, the below problem +is triggered: + +BUG: sleeping function called from invalid context at kernel/locking/rtmutex.c:917 +in_atomic(): 1, irqs_disabled(): 0, pid: 1041, name: dummy2 +Preemption disabled at:[] do_debug+0x1f/0x1a0 + +CPU: 10 PID: 1041 Comm: dummy2 Tainted: G W 4.1.13-rt13 #1 +Call Trace: + [] dump_stack+0x46/0x5c + [] ___might_sleep+0x137/0x220 + [] rt_spin_lock+0x1f/0x80 + [] do_force_sig_info+0x2a/0xc0 + [] force_sig_info+0xd/0x10 + [] send_sigtrap+0x6f/0x80 + [] do_debug+0x161/0x1a0 + [] debug_stack_correct+0x2e/0x35 + +This happens since 959274753857 ("x86, traps: Track entry into and exit +from IST context") which was merged in v4.1-rc1. + +Signed-off-by: Yang Shi +Signed-off-by: Sebastian Andrzej Siewior +--- + arch/x86/include/asm/signal.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/arch/x86/include/asm/signal.h ++++ b/arch/x86/include/asm/signal.h +@@ -37,7 +37,7 @@ typedef struct { + * TIF_NOTIFY_RESUME and set up the signal to be sent on exit of the + * trap. + */ +-#if defined(CONFIG_PREEMPT_RT_FULL) && defined(CONFIG_X86_64) ++#if defined(CONFIG_PREEMPT_RT_FULL) + #define ARCH_RT_DELAYS_SIGNAL_SEND + #endif + diff --git a/patches/features/all/rt/x86-stackprot-no-random-on-rt.patch b/patches/features/all/rt/x86-stackprot-no-random-on-rt.patch new file mode 100644 index 00000000000..5718dadb976 --- /dev/null +++ b/patches/features/all/rt/x86-stackprot-no-random-on-rt.patch @@ -0,0 +1,46 @@ +From: Thomas Gleixner +Date: Thu, 16 Dec 2010 14:25:18 +0100 +Subject: x86: stackprotector: Avoid random pool on rt +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +CPU bringup calls into the random pool to initialize the stack +canary. During boot that works nicely even on RT as the might sleep +checks are disabled. During CPU hotplug the might sleep checks +trigger. Making the locks in random raw is a major PITA, so avoid the +call on RT is the only sensible solution. This is basically the same +randomness which we get during boot where the random pool has no +entropy and we rely on the TSC randomnness. + +Reported-by: Carsten Emde +Signed-off-by: Thomas Gleixner + +--- + arch/x86/include/asm/stackprotector.h | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +--- a/arch/x86/include/asm/stackprotector.h ++++ b/arch/x86/include/asm/stackprotector.h +@@ -60,7 +60,7 @@ + */ + static __always_inline void boot_init_stack_canary(void) + { +- u64 canary; ++ u64 uninitialized_var(canary); + u64 tsc; + + #ifdef CONFIG_X86_64 +@@ -71,8 +71,14 @@ static __always_inline void boot_init_st + * of randomness. The TSC only matters for very early init, + * there it already has some randomness on most systems. Later + * on during the bootup the random pool has true entropy too. ++ * For preempt-rt we need to weaken the randomness a bit, as ++ * we can't call into the random generator from atomic context ++ * due to locking constraints. We just leave canary ++ * uninitialized and use the TSC based randomness on top of it. + */ ++#ifndef CONFIG_PREEMPT_RT_FULL + get_random_bytes(&canary, sizeof(canary)); ++#endif + tsc = rdtsc(); + canary += tsc + (tsc << 32UL); + canary &= CANARY_MASK; diff --git a/patches/features/all/rt/x86-use-gen-rwsem-spinlocks-rt.patch b/patches/features/all/rt/x86-use-gen-rwsem-spinlocks-rt.patch new file mode 100644 index 00000000000..ff26f548938 --- /dev/null +++ b/patches/features/all/rt/x86-use-gen-rwsem-spinlocks-rt.patch @@ -0,0 +1,29 @@ +From: Thomas Gleixner +Date: Sun, 26 Jul 2009 02:21:32 +0200 +Subject: x86: Use generic rwsem_spinlocks on -rt +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +Simplifies the separation of anon_rw_semaphores and rw_semaphores for +-rt. + +Signed-off-by: Thomas Gleixner + +--- + arch/x86/Kconfig | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +--- a/arch/x86/Kconfig ++++ b/arch/x86/Kconfig +@@ -256,8 +256,11 @@ config ARCH_MAY_HAVE_PC_FDC + def_bool y + depends on ISA_DMA_API + ++config RWSEM_GENERIC_SPINLOCK ++ def_bool PREEMPT_RT_FULL ++ + config RWSEM_XCHGADD_ALGORITHM +- def_bool y ++ def_bool !RWSEM_GENERIC_SPINLOCK && !PREEMPT_RT_FULL + + config GENERIC_CALIBRATE_DELAY + def_bool y diff --git a/patches/features/all/rt/xen-9pfs-don-t-inclide-rwlock.h-directly.patch b/patches/features/all/rt/xen-9pfs-don-t-inclide-rwlock.h-directly.patch new file mode 100644 index 00000000000..ade2ebfea54 --- /dev/null +++ b/patches/features/all/rt/xen-9pfs-don-t-inclide-rwlock.h-directly.patch @@ -0,0 +1,29 @@ +From: Sebastian Andrzej Siewior +Date: Thu, 5 Oct 2017 14:38:52 +0200 +Subject: [PATCH] xen/9pfs: don't inclide rwlock.h directly. +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz + +rwlock.h should not be included directly. Instead linux/splinlock.h +should be included. One thing it does is to break the RT build. + +Cc: Eric Van Hensbergen +Cc: Ron Minnich +Cc: Latchesar Ionkov +Cc: "David S. Miller" +Cc: v9fs-developer@lists.sourceforge.net +Cc: netdev@vger.kernel.org +Signed-off-by: Sebastian Andrzej Siewior +--- + net/9p/trans_xen.c | 1 - + 1 file changed, 1 deletion(-) + +--- a/net/9p/trans_xen.c ++++ b/net/9p/trans_xen.c +@@ -38,7 +38,6 @@ + + #include + #include +-#include + #include + #include + #include diff --git a/patches/features/all/security-perf-allow-further-restriction-of-perf_event_open.patch b/patches/features/all/security-perf-allow-further-restriction-of-perf_event_open.patch new file mode 100644 index 00000000000..6acd429db46 --- /dev/null +++ b/patches/features/all/security-perf-allow-further-restriction-of-perf_event_open.patch @@ -0,0 +1,75 @@ +From: Ben Hutchings +Date: Mon, 11 Jan 2016 15:23:55 +0000 +Subject: security,perf: Allow further restriction of perf_event_open +Forwarded: https://lkml.org/lkml/2016/1/11/587 + +When kernel.perf_event_open is set to 3 (or greater), disallow all +access to performance events by users without CAP_SYS_ADMIN. +Add a Kconfig symbol CONFIG_SECURITY_PERF_EVENTS_RESTRICT that +makes this value the default. + +This is based on a similar feature in grsecurity +(CONFIG_GRKERNSEC_PERF_HARDEN). This version doesn't include making +the variable read-only. It also allows enabling further restriction +at run-time regardless of whether the default is changed. + +Signed-off-by: Ben Hutchings +--- +--- a/include/linux/perf_event.h ++++ b/include/linux/perf_event.h +@@ -1145,6 +1145,11 @@ extern int perf_cpu_time_max_percent_han + int perf_event_max_stack_handler(struct ctl_table *table, int write, + void __user *buffer, size_t *lenp, loff_t *ppos); + ++static inline bool perf_paranoid_any(void) ++{ ++ return sysctl_perf_event_paranoid > 2; ++} ++ + static inline bool perf_paranoid_tracepoint_raw(void) + { + return sysctl_perf_event_paranoid > -1; +--- a/kernel/events/core.c ++++ b/kernel/events/core.c +@@ -389,8 +389,13 @@ static struct srcu_struct pmus_srcu; + * 0 - disallow raw tracepoint access for unpriv + * 1 - disallow cpu events for unpriv + * 2 - disallow kernel profiling for unpriv ++ * 3 - disallow all unpriv perf event use + */ ++#ifdef CONFIG_SECURITY_PERF_EVENTS_RESTRICT ++int sysctl_perf_event_paranoid __read_mostly = 3; ++#else + int sysctl_perf_event_paranoid __read_mostly = 2; ++#endif + + /* Minimum for 512 kiB + 1 user control page */ + int sysctl_perf_event_mlock __read_mostly = 512 + (PAGE_SIZE / 1024); /* 'free' kiB per user */ +@@ -9395,6 +9400,9 @@ SYSCALL_DEFINE5(perf_event_open, + if (flags & ~PERF_FLAG_ALL) + return -EINVAL; + ++ if (perf_paranoid_any() && !capable(CAP_SYS_ADMIN)) ++ return -EACCES; ++ + err = perf_copy_attr(attr_uptr, &attr); + if (err) + return err; +--- a/security/Kconfig ++++ b/security/Kconfig +@@ -18,6 +18,15 @@ config SECURITY_DMESG_RESTRICT + + If you are unsure how to answer this question, answer N. + ++config SECURITY_PERF_EVENTS_RESTRICT ++ bool "Restrict unprivileged use of performance events" ++ depends on PERF_EVENTS ++ help ++ If you say Y here, the kernel.perf_event_paranoid sysctl ++ will be set to 3 by default, and no unprivileged use of the ++ perf_event_open syscall will be permitted unless it is ++ changed. ++ + config SECURITY + bool "Enable different security models" + depends on SYSFS diff --git a/patches/features/arm64/tegra210-smp/0001-arm64-tegra-Add-CPU-and-PSCI-nodes-for-NVIDIA-Tegra2.patch b/patches/features/arm64/tegra210-smp/0001-arm64-tegra-Add-CPU-and-PSCI-nodes-for-NVIDIA-Tegra2.patch new file mode 100644 index 00000000000..12d70baa8e0 --- /dev/null +++ b/patches/features/arm64/tegra210-smp/0001-arm64-tegra-Add-CPU-and-PSCI-nodes-for-NVIDIA-Tegra2.patch @@ -0,0 +1,91 @@ +From d67849c340aa803f25a1b3720ba399fecd4f88ab Mon Sep 17 00:00:00 2001 +From: Jon Hunter +Date: Tue, 28 Mar 2017 12:48:38 +0100 +Subject: [PATCH] arm64: tegra: Add CPU and PSCI nodes for NVIDIA Tegra210 + platforms + +Add the CPU and PSCI nodes for the NVIDIA Tegra210 platforms so that +all CPUs can be enabled on boot. This assumes that the PSCI firmware +has been loaded during the initial bootstrap on the device before the +kernel starts (which is typically the case for these platforms). The +PSCI firmware version is set to v0.2 which aligns with the current +shipping version for Tegra. + +Reported-by: Martin Michlmayr +Signed-off-by: Jon Hunter +Tested-By: Vagrant Cascadian +Signed-off-by: Thierry Reding +--- + arch/arm64/boot/dts/nvidia/tegra210-p2180.dtsi | 23 +++++++++++++++++++++++ + arch/arm64/boot/dts/nvidia/tegra210-p2530.dtsi | 23 +++++++++++++++++++++++ + 2 files changed, 46 insertions(+) + +diff --git a/arch/arm64/boot/dts/nvidia/tegra210-p2180.dtsi b/arch/arm64/boot/dts/nvidia/tegra210-p2180.dtsi +index d10d4430537a..212e6634c9ba 100644 +--- a/arch/arm64/boot/dts/nvidia/tegra210-p2180.dtsi ++++ b/arch/arm64/boot/dts/nvidia/tegra210-p2180.dtsi +@@ -297,6 +297,29 @@ + }; + }; + ++ cpus { ++ cpu@0 { ++ enable-method = "psci"; ++ }; ++ ++ cpu@1 { ++ enable-method = "psci"; ++ }; ++ ++ cpu@2 { ++ enable-method = "psci"; ++ }; ++ ++ cpu@3 { ++ enable-method = "psci"; ++ }; ++ }; ++ ++ psci { ++ compatible = "arm,psci-0.2"; ++ method = "smc"; ++ }; ++ + regulators { + vdd_gpu: regulator@100 { + compatible = "pwm-regulator"; +diff --git a/arch/arm64/boot/dts/nvidia/tegra210-p2530.dtsi b/arch/arm64/boot/dts/nvidia/tegra210-p2530.dtsi +index be6066ff97c9..d0dc03923723 100644 +--- a/arch/arm64/boot/dts/nvidia/tegra210-p2530.dtsi ++++ b/arch/arm64/boot/dts/nvidia/tegra210-p2530.dtsi +@@ -52,4 +52,27 @@ + clock-frequency = <32768>; + }; + }; ++ ++ cpus { ++ cpu@0 { ++ enable-method = "psci"; ++ }; ++ ++ cpu@1 { ++ enable-method = "psci"; ++ }; ++ ++ cpu@2 { ++ enable-method = "psci"; ++ }; ++ ++ cpu@3 { ++ enable-method = "psci"; ++ }; ++ }; ++ ++ psci { ++ compatible = "arm,psci-0.2"; ++ method = "smc"; ++ }; + }; +-- +2.11.0 + diff --git a/patches/features/mips/MIPS-Loongson-3-Add-Loongson-LS3A-RS780E-1-way-machi.patch b/patches/features/mips/MIPS-Loongson-3-Add-Loongson-LS3A-RS780E-1-way-machi.patch new file mode 100644 index 00000000000..a40d273dca0 --- /dev/null +++ b/patches/features/mips/MIPS-Loongson-3-Add-Loongson-LS3A-RS780E-1-way-machi.patch @@ -0,0 +1,57 @@ +From: Aurelien Jarno +Date: Sun, 20 Jul 2014 19:16:31 +0200 +Subject: MIPS: Loongson 3: Add Loongson LS3A RS780E 1-way machine definition +Forwarded: no + +Add a Loongson LS3A RS780E 1-way machine definition, which only differs +from other Loongson 3 based machines by the UART base clock speed. + +Signed-off-by: Aurelien Jarno +[bwh: Forward-ported to 4.2] +--- + arch/mips/include/asm/bootinfo.h | 1 + + arch/mips/loongson64/common/machtype.c | 1 + + arch/mips/loongson64/common/serial.c | 1 + + arch/mips/loongson64/common/uart_base.c | 1 + + 4 files changed, 4 insertions(+) + +--- a/arch/mips/include/asm/bootinfo.h ++++ b/arch/mips/include/asm/bootinfo.h +@@ -71,6 +71,7 @@ enum loongson_machine_type { + MACH_LEMOTE_NAS, + MACH_LEMOTE_LL2F, + MACH_LOONGSON_GENERIC, ++ MACH_LOONGSON_3A780E1W, + MACH_LOONGSON_END + }; + +--- a/arch/mips/loongson64/common/machtype.c ++++ b/arch/mips/loongson64/common/machtype.c +@@ -28,6 +28,7 @@ static const char *system_types[] = { + [MACH_LEMOTE_NAS] = "lemote-nas-2f", + [MACH_LEMOTE_LL2F] = "lemote-lynloong-2f", + [MACH_LOONGSON_GENERIC] = "generic-loongson-machine", ++ [MACH_LOONGSON_3A780E1W] = "loongson-ls3a-rs780e-1w", + [MACH_LOONGSON_END] = NULL, + }; + +--- a/arch/mips/loongson64/common/serial.c ++++ b/arch/mips/loongson64/common/serial.c +@@ -48,6 +48,7 @@ static struct plat_serial8250_port uart8 + [MACH_LEMOTE_NAS] = {PORT_M(3, 3686400), {} }, + [MACH_LEMOTE_LL2F] = {PORT(3, 1843200), {} }, + [MACH_LOONGSON_GENERIC] = {PORT_M(2, 25000000), {} }, ++ [MACH_LOONGSON_3A780E1W] = {PORT_M(2, 33177600), {} }, + [MACH_LOONGSON_END] = {}, + }; + +--- a/arch/mips/loongson64/common/uart_base.c ++++ b/arch/mips/loongson64/common/uart_base.c +@@ -25,6 +25,7 @@ void prom_init_loongson_uart_base(void) + { + switch (mips_machtype) { + case MACH_LOONGSON_GENERIC: ++ case MACH_LOONGSON_3A780E1W: + /* The CPU provided serial port (CPU) */ + loongson_uart_base[0] = LOONGSON_REG_BASE + 0x1e0; + break; diff --git a/patches/features/mips/MIPS-increase-MAX-PHYSMEM-BITS-on-Loongson-3-only.patch b/patches/features/mips/MIPS-increase-MAX-PHYSMEM-BITS-on-Loongson-3-only.patch new file mode 100644 index 00000000000..320c651decb --- /dev/null +++ b/patches/features/mips/MIPS-increase-MAX-PHYSMEM-BITS-on-Loongson-3-only.patch @@ -0,0 +1,29 @@ +From: Aurelien Jarno +Subject: MIPS: increase MAX_PHYSMEM_BITS on Loongson 3 only +Bug-Debian: https://bugs.debian.org/764223 +Forwarded: no + +Commit c4617318 broke Loongson-2 support and maybe even more by increasing +the value of MAX_PHYSMEM_BITS. At it is currently only needed on +Loongson-3, define it conditionally. + +Note: this should be replace by upstream fix when available. + +diff --git a/arch/mips/include/asm/sparsemem.h b/arch/mips/include/asm/sparsemem.h +index b1071c1..778dca7 100644 +--- a/arch/mips/include/asm/sparsemem.h ++++ b/arch/mips/include/asm/sparsemem.h +@@ -11,7 +11,12 @@ + #else + # define SECTION_SIZE_BITS 28 + #endif +-#define MAX_PHYSMEM_BITS 48 ++ ++#if defined(CONFIG_CPU_LOONGSON3) ++# define MAX_PHYSMEM_BITS 48 ++#else ++# define MAX_PHYSMEM_BITS 35 ++#endif + + #endif /* CONFIG_SPARSEMEM */ + #endif /* _MIPS_SPARSEMEM_H */ diff --git a/patches/features/x86/x86-make-x32-syscall-support-conditional.patch b/patches/features/x86/x86-make-x32-syscall-support-conditional.patch new file mode 100644 index 00000000000..71c569193f2 --- /dev/null +++ b/patches/features/x86/x86-make-x32-syscall-support-conditional.patch @@ -0,0 +1,205 @@ +From: Ben Hutchings +Date: Mon, 12 Feb 2018 23:59:26 +0000 +Subject: x86: Make x32 syscall support conditional on a kernel parameter +Bug-Debian: https://bugs.debian.org/708070 + +Enabling x32 in the standard amd64 kernel would increase its attack +surface while provide no benefit to the vast majority of its users. +No-one seems interested in regularly checking for vulnerabilities +specific to x32 (at least no-one with a white hat). + +Still, adding another flavour just to turn on x32 seems wasteful. And +the only differences on syscall entry are a few instructions that mask +out the x32 flag and compare the syscall number. + +Use a static key to control whether x32 syscalls are really enabled, a +Kconfig parameter to set its default value and a kernel parameter +"syscall.x32" to change it at boot time. + +Signed-off-by: Ben Hutchings +--- + Documentation/admin-guide/kernel-parameters.txt | 4 ++ + arch/x86/Kconfig | 8 ++++ + arch/x86/entry/common.c | 11 +++++- + arch/x86/entry/syscall_64.c | 41 ++++++++++++++++++++++++ + arch/x86/include/asm/elf.h | 4 +- + arch/x86/include/asm/syscall.h | 13 +++++++ + arch/x86/include/asm/unistd.h | 4 +- + 7 files changed, 80 insertions(+), 5 deletions(-) + +--- a/Documentation/admin-guide/kernel-parameters.txt ++++ b/Documentation/admin-guide/kernel-parameters.txt +@@ -4096,6 +4096,10 @@ + + switches= [HW,M68k] + ++ syscall.x32= [KNL,x86_64] Enable/disable use of x32 syscalls on ++ an x86_64 kernel where CONFIG_X86_X32 is enabled. ++ Default depends on CONFIG_X86_X32_DISABLED. ++ + sysfs.deprecated=0|1 [KNL] + Enable/disable old style sysfs layout for old udev + on older distributions. When this option is enabled +--- a/arch/x86/Kconfig ++++ b/arch/x86/Kconfig +@@ -2863,6 +2863,14 @@ config COMPAT_32 + select HAVE_UID16 + select OLD_SIGSUSPEND3 + ++config X86_X32_DISABLED ++ bool "x32 ABI disabled by default" ++ depends on X86_X32 ++ default n ++ help ++ Disable the x32 ABI unless explicitly enabled using the ++ kernel paramter "syscall.x32=y". ++ + config COMPAT + def_bool y + depends on IA32_EMULATION || X86_X32 +--- a/arch/x86/entry/common.c ++++ b/arch/x86/entry/common.c +@@ -282,8 +282,15 @@ __visible void do_syscall_64(struct pt_r + * table. The only functional difference is the x32 bit in + * regs->orig_ax, which changes the behavior of some syscalls. + */ +- if (likely((nr & __SYSCALL_MASK) < NR_syscalls)) { +- nr = array_index_nospec(nr & __SYSCALL_MASK, NR_syscalls); ++ if (x32_enabled) { ++ if (likely((nr & ~__X32_SYSCALL_BIT) < NR_syscalls)) { ++ nr = array_index_nospec(nr & ~__X32_SYSCALL_BIT, ++ NR_syscalls); ++ goto good; ++ } ++ } else if (likely((nr & ~0U) < NR_non_x32_syscalls)) { ++ nr = array_index_nospec(nr & ~0U, NR_non_x32_syscalls); ++ good: + regs->ax = sys_call_table[nr]( + regs->di, regs->si, regs->dx, + regs->r10, regs->r8, regs->r9); +--- a/arch/x86/entry/syscall_64.c ++++ b/arch/x86/entry/syscall_64.c +@@ -4,6 +4,9 @@ + #include + #include + #include ++#include ++#undef MODULE_PARAM_PREFIX ++#define MODULE_PARAM_PREFIX "syscall." + #include + #include + +@@ -23,3 +26,50 @@ asmlinkage const sys_call_ptr_t sys_call + [0 ... __NR_syscall_max] = &sys_ni_syscall, + #include + }; ++ ++#ifdef CONFIG_X86_X32_ABI ++ ++/* Maybe enable x32 syscalls */ ++ ++#if defined(CONFIG_X86_X32_DISABLED) ++DEFINE_STATIC_KEY_FALSE(x32_enabled_skey); ++#else ++DEFINE_STATIC_KEY_TRUE(x32_enabled_skey); ++#endif ++ ++static int __init x32_param_set(const char *val, const struct kernel_param *p) ++{ ++ bool enabled; ++ int ret; ++ ++ ret = kstrtobool(val, &enabled); ++ if (ret) ++ return ret; ++ if (IS_ENABLED(CONFIG_X86_X32_DISABLED)) { ++ if (enabled) { ++ static_key_enable(&x32_enabled_skey.key); ++ pr_info("Enabled x32 syscalls\n"); ++ } ++ } else { ++ if (!enabled) { ++ static_key_disable(&x32_enabled_skey.key); ++ pr_info("Disabled x32 syscalls\n"); ++ } ++ } ++ return 0; ++} ++ ++static int x32_param_get(char *buffer, const struct kernel_param *p) ++{ ++ return sprintf(buffer, "%c\n", ++ static_key_enabled(&x32_enabled_skey) ? 'Y' : 'N'); ++} ++ ++static const struct kernel_param_ops x32_param_ops = { ++ .set = x32_param_set, ++ .get = x32_param_get, ++}; ++ ++arch_param_cb(x32, &x32_param_ops, NULL, 0444); ++ ++#endif +--- a/arch/x86/include/asm/elf.h ++++ b/arch/x86/include/asm/elf.h +@@ -10,6 +10,7 @@ + #include + #include + #include ++#include + + typedef unsigned long elf_greg_t; + +@@ -163,7 +164,8 @@ do { \ + + #define compat_elf_check_arch(x) \ + (elf_check_arch_ia32(x) || \ +- (IS_ENABLED(CONFIG_X86_X32_ABI) && (x)->e_machine == EM_X86_64)) ++ (IS_ENABLED(CONFIG_X86_X32_ABI) && x32_enabled && \ ++ (x)->e_machine == EM_X86_64)) + + #if __USER32_DS != __USER_DS + # error "The following code assumes __USER32_DS == __USER_DS" +--- a/arch/x86/include/asm/syscall.h ++++ b/arch/x86/include/asm/syscall.h +@@ -16,6 +16,7 @@ + #include + #include + #include ++#include + #include /* For NR_syscalls */ + #include /* for TS_COMPAT */ + #include +@@ -35,6 +36,18 @@ extern const sys_call_ptr_t sys_call_tab + extern const sys_call_ptr_t ia32_sys_call_table[]; + #endif + ++#if defined(CONFIG_X86_X32_ABI) ++#if defined(CONFIG_X86_X32_DISABLED) ++DECLARE_STATIC_KEY_FALSE(x32_enabled_skey); ++#define x32_enabled static_branch_unlikely(&x32_enabled_skey) ++#else ++DECLARE_STATIC_KEY_TRUE(x32_enabled_skey); ++#define x32_enabled static_branch_likely(&x32_enabled_skey) ++#endif ++#else ++#define x32_enabled 0 ++#endif ++ + /* + * Only the low 32 bits of orig_ax are meaningful, so we return int. + * This importantly ignores the high bits on 64-bit, so comparisons +--- a/arch/x86/include/asm/unistd.h ++++ b/arch/x86/include/asm/unistd.h +@@ -6,9 +6,9 @@ + + + # ifdef CONFIG_X86_X32_ABI +-# define __SYSCALL_MASK (~(__X32_SYSCALL_BIT)) ++# define NR_non_x32_syscalls 512 + # else +-# define __SYSCALL_MASK (~0) ++# define NR_non_x32_syscalls NR_syscalls + # endif + + # ifdef CONFIG_X86_32 diff --git a/patches/features/x86/x86-memtest-WARN-if-bad-RAM-found.patch b/patches/features/x86/x86-memtest-WARN-if-bad-RAM-found.patch new file mode 100644 index 00000000000..7a795200322 --- /dev/null +++ b/patches/features/x86/x86-memtest-WARN-if-bad-RAM-found.patch @@ -0,0 +1,28 @@ +From: Ben Hutchings +Date: Mon, 5 Dec 2011 04:00:58 +0000 +Subject: x86: memtest: WARN if bad RAM found +Bug-Debian: https://bugs.debian.org/613321 +Forwarded: http://thread.gmane.org/gmane.linux.kernel/1286471 + +Since this is not a particularly thorough test, if we find any bad +bits of RAM then there is a fair chance that there are other bad bits +we fail to detect. + +Signed-off-by: Ben Hutchings +--- + mm/memtest.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +--- a/mm/memtest.c ++++ b/mm/memtest.c +@@ -26,6 +26,10 @@ static u64 patterns[] __initdata = { + + static void __init reserve_bad_mem(u64 pattern, phys_addr_t start_bad, phys_addr_t end_bad) + { ++#ifdef CONFIG_X86 ++ WARN_ONCE(1, "Bad RAM detected. Use memtest86+ to perform a thorough test\n" ++ "and the memmap= parameter to reserve the bad areas."); ++#endif + pr_info(" %016llx bad mem addr %pa - %pa reserved\n", + cpu_to_be64(pattern), &start_bad, &end_bad); + memblock_reserve(start_bad, end_bad - start_bad); diff --git a/patches/series b/patches/series new file mode 100644 index 00000000000..d4a97c7f319 --- /dev/null +++ b/patches/series @@ -0,0 +1,143 @@ +# Changes to support package build system +debian/version.patch +debian/uname-version-timestamp.patch +debian/kernelvariables.patch +debian/gitignore.patch +debian/mips-disable-werror.patch +debian/arch-sh4-fix-uimage-build.patch +debian/powerpcspe-omit-uimage.patch +features/all/Kbuild-kconfig-Verbose-version-of-listnewconfig.patch +debian/modpost-symbol-prefix.patch +debian/tools-perf-version.patch +debian/tools-perf-install.patch + +# Fixes/improvements to firmware loading +features/all/drivers-media-dvb-usb-af9005-request_firmware.patch +debian/iwlwifi-do-not-request-unreleased-firmware.patch +bugfix/all/firmware_class-log-every-success-and-failure.patch +bugfix/all/firmware-remove-redundant-log-messages-from-drivers.patch +bugfix/all/radeon-amdgpu-firmware-is-required-for-drm-and-kms-on-r600-onward.patch +debian/firmware_class-refer-to-debian-wiki-firmware-page.patch + +# Patches from aufs4 repository, imported with +# debian/patches/features/all/aufs4/gen-patch. These are only the +# changes needed to allow aufs to be built out-of-tree. +features/all/aufs4/aufs4-base.patch +features/all/aufs4/aufs4-mmap.patch +features/all/aufs4/aufs4-standalone.patch + +# Change some defaults for security reasons +debian/af_802154-Disable-auto-loading-as-mitigation-against.patch +debian/rds-Disable-auto-loading-as-mitigation-against-local.patch +debian/decnet-Disable-auto-loading-as-mitigation-against-lo.patch +debian/dccp-disable-auto-loading-as-mitigation-against-local-exploits.patch +debian/fs-enable-link-security-restrictions-by-default.patch + +# Set various features runtime-disabled by default +debian/sched-autogroup-disabled.patch +debian/yama-disable-by-default.patch +debian/add-sysctl-to-disallow-unprivileged-CLONE_NEWUSER-by-default.patch +features/all/security-perf-allow-further-restriction-of-perf_event_open.patch + +# Disable autoloading/probing of various drivers by default +debian/cdc_ncm-cdc_mbim-use-ncm-by-default.patch +debian/snd-pcsp-disable-autoload.patch +bugfix/x86/viafb-autoload-on-olpc-xo1.5-only.patch +debian/fjes-disable-autoload.patch + +# Taint if dangerous features are used +debian/fanotify-taint-on-use-of-fanotify_access_permissions.patch +debian/btrfs-warn-about-raid5-6-being-experimental-at-mount.patch + +# Reduce noise for bug #852324 +debian/amd64-don-t-warn-about-expected-w+x-pages-on-xen.patch + +# Arch bug fixes +bugfix/arm/arm-dts-kirkwood-fix-sata-pinmux-ing-for-ts419.patch +bugfix/x86/platform-x86-ideapad-laptop-add-ideapad-310-15ikb-to.patch +bugfix/x86/platform-x86-ideapad-laptop-add-ideapad-v310-15isk-t.patch +bugfix/x86/platform-x86-ideapad-laptop-add-y520-15ikbn-to-no_hw.patch +bugfix/x86/platform-x86-ideapad-laptop-add-y720-15ikbn-to-no_hw.patch +bugfix/x86/platform-x86-ideapad-laptop-add-ideapad-v510-15ikb-t.patch +bugfix/x86/platform-x86-ideapad-laptop-add-several-models-to-no.patch +debian/revert-gpu-host1x-add-iommu-support.patch +bugfix/x86/perf-tools-fix-unwind-build-on-i386.patch +bugfix/sh/sh-boot-do-not-use-hyphen-in-exported-variable-name.patch +bugfix/x86/mmap-remember-the-map_fixed-flag-as-vm_fixed.patch +bugfix/x86/mmap-add-an-exception-to-the-stack-gap-for-hotspot-jvm.patch + +# Arch features +features/mips/MIPS-increase-MAX-PHYSMEM-BITS-on-Loongson-3-only.patch +features/mips/MIPS-Loongson-3-Add-Loongson-LS3A-RS780E-1-way-machi.patch +features/x86/x86-memtest-WARN-if-bad-RAM-found.patch +features/x86/x86-make-x32-syscall-support-conditional.patch + +# Miscellaneous bug fixes +bugfix/all/kbuild-use-nostdinc-in-compile-tests.patch +bugfix/all/disable-some-marvell-phys.patch +bugfix/all/fs-add-module_softdep-declarations-for-hard-coded-cr.patch +bugfix/all/partially-revert-usb-kconfig-using-select-for-usb_co.patch +bugfix/all/kbuild-include-addtree-remove-quotes-before-matching-path.patch +debian/revert-objtool-fix-config_stack_validation-y-warning.patch + +# Miscellaneous features + +# Lockdown (formerly 'securelevel') patchset +features/all/lockdown/0001-Add-the-ability-to-lock-down-access-to-the-running-k.patch +features/all/lockdown/0002-Add-a-SysRq-option-to-lift-kernel-lockdown.patch +features/all/lockdown/0003-ima-require-secure_boot-rules-in-lockdown-mode.patch +features/all/lockdown/0004-Enforce-module-signatures-if-the-kernel-is-locked-do.patch +features/all/lockdown/0005-Restrict-dev-mem-kmem-port-when-the-kernel-is-locked.patch +features/all/lockdown/0006-kexec-Disable-at-runtime-if-the-kernel-is-locked-dow.patch +features/all/lockdown/0007-Copy-secure_boot-flag-in-boot-params-across-kexec-re.patch +features/all/lockdown/0008-kexec_file-Restrict-at-runtime-if-the-kernel-is-lock.patch +features/all/lockdown/0009-hibernate-Disable-when-the-kernel-is-locked-down.patch +features/all/lockdown/0010-uswsusp-Disable-when-the-kernel-is-locked-down.patch +features/all/lockdown/0011-PCI-Lock-down-BAR-access-when-the-kernel-is-locked-d.patch +features/all/lockdown/0012-x86-Lock-down-IO-port-access-when-the-kernel-is-lock.patch +features/all/lockdown/0013-x86-msr-Restrict-MSR-access-when-the-kernel-is-locke.patch +features/all/lockdown/0014-asus-wmi-Restrict-debugfs-interface-when-the-kernel-.patch +features/all/lockdown/0015-ACPI-Limit-access-to-custom_method-when-the-kernel-i.patch +features/all/lockdown/0016-acpi-Ignore-acpi_rsdp-kernel-param-when-the-kernel-h.patch +features/all/lockdown/0017-acpi-Disable-ACPI-table-override-if-the-kernel-is-lo.patch +features/all/lockdown/0018-acpi-Disable-APEI-error-injection-if-the-kernel-is-l.patch +features/all/lockdown/0019-scsi-Lock-down-the-eata-driver.patch +features/all/lockdown/0020-Prohibit-PCMCIA-CIS-storage-when-the-kernel-is-locke.patch +features/all/lockdown/0021-Lock-down-TIOCSSERIAL.patch +features/all/lockdown/0022-Lock-down-module-params-that-specify-hardware-parame.patch +features/all/lockdown/0023-x86-mmiotrace-Lock-down-the-testmmiotrace-module.patch +features/all/lockdown/0024-debugfs-Disallow-use-of-debugfs-files-when-the-kerne.patch +features/all/lockdown/0025-Lock-down-proc-kcore.patch +features/all/lockdown/0026-Lock-down-kprobes.patch +features/all/lockdown/0027-bpf-Restrict-kernel-image-access-functions-when-the-.patch +features/all/lockdown/0028-efi-Add-an-EFI_SECURE_BOOT-flag-to-indicate-secure-b.patch +features/all/lockdown/0029-efi-Lock-down-the-kernel-if-booted-in-secure-boot-mo.patch +# some missing pieces +features/all/lockdown/enable-cold-boot-attack-mitigation.patch +features/all/lockdown/mtd-disable-slram-and-phram-when-locked-down.patch +features/all/lockdown/arm64-add-kernel-config-option-to-lock-down-when.patch + +# Security fixes +debian/i386-686-pae-pci-set-pci-nobios-by-default.patch +bugfix/all/mac80211_hwsim-fix-possible-memory-leak-in-hwsim_new.patch + +# Fix exported symbol versions +bugfix/all/module-disable-matching-missing-version-crc.patch + +# Tools bug fixes +bugfix/all/usbip-document-tcp-wrappers.patch +bugfix/all/kbuild-fix-recordmcount-dependency.patch +bugfix/all/tools-perf-man-date.patch +bugfix/all/tools-perf-remove-shebangs.patch +bugfix/all/tools-lib-traceevent-use-ldflags.patch +bugfix/x86/revert-perf-build-fix-libunwind-feature-detection-on.patch +bugfix/all/tools-build-remove-bpf-run-time-check-at-build-time.patch +bugfix/all/cpupower-bump-soname-version.patch +bugfix/all/cpupower-fix-checks-for-cpu-existence.patch +bugfix/all/lockdep-stub-nmi-watchdog-reset.patch +bugfix/arm64/ARM64-dts-meson-reduce-odroid-c2-eMMC-maximum-rate.patch + +# Backport patches from linux-next (next-20180103) to support SMP on tegra210 systems +features/arm64/tegra210-smp/0001-arm64-tegra-Add-CPU-and-PSCI-nodes-for-NVIDIA-Tegra2.patch + +# ABI maintenance diff --git a/patches/series-orig b/patches/series-orig new file mode 100644 index 00000000000..7a4e0e9ff2b --- /dev/null +++ b/patches/series-orig @@ -0,0 +1,6 @@ ++ debian/dfsg/arch-powerpc-platforms-8xx-ucode-disable.patch ++ debian/dfsg/drivers-media-dvb-dvb-usb-af9005-disable.patch ++ debian/dfsg/vs6624-disable.patch ++ debian/dfsg/drivers-net-appletalk-cops.patch ++ debian/dfsg/video-remove-nvidiafb-and-rivafb.patch +X debian/dfsg/files-1 diff --git a/patches/series-rt b/patches/series-rt new file mode 100644 index 00000000000..2eabef45252 --- /dev/null +++ b/patches/series-rt @@ -0,0 +1,670 @@ +########################################################### +# DELTA against a known Linus release +########################################################### + +############################################################ +# UPSTREAM changes queued +############################################################ +features/all/rt/rcu-Suppress-lockdep-false-positive-boost_mtx-compla.patch + +############################################################ +# UPSTREAM FIXES, patches pending +############################################################ + +############################################################ +# Stuff broken upstream, patches submitted +############################################################ + +# soft hrtimer patches (v4) +features/all/rt/0001-timers-Use-static-keys-for-migrate_enable-nohz_activ.patch +features/all/rt/0002-hrtimer-Correct-blantanly-wrong-comment.patch +features/all/rt/0003-hrtimer-Fix-kerneldoc-for-struct-hrtimer_cpu_base.patch +features/all/rt/0004-hrtimer-Cleanup-clock-argument-in-schedule_hrtimeout.patch +features/all/rt/0005-hrtimer-Fix-hrtimer-function-description.patch +features/all/rt/0006-hrtimer-Ensure-POSIX-compliance-relative-CLOCK_REALT.patch +features/all/rt/0007-hrtimer-Cleanup-hrtimer_mode-enum.patch +features/all/rt/0008-tracing-hrtimer-Take-all-clock-bases-and-modes-into-.patch +features/all/rt/0009-tracing-hrtimer-Print-hrtimer-mode-in-hrtimer_start-.patch +features/all/rt/0010-hrtimer-Switch-for-loop-to-_ffs-evaluation.patch +features/all/rt/0011-hrtimer-Store-running-timer-in-hrtimer_clock_base.patch +features/all/rt/0012-hrtimer-Make-room-in-struct-hrtimer_cpu_base.patch +features/all/rt/0013-hrtimer-Reduce-conditional-code-hres_active.patch +features/all/rt/0014-hrtimer-Use-accesor-functions-instead-of-direct-acce.patch +features/all/rt/0015-hrtimer-Make-the-remote-enqueue-check-unconditional.patch +features/all/rt/0016-hrtimer-Make-hrtimer_cpu_base.next_timer-handling-un.patch +features/all/rt/0017-hrtimer-Make-hrtimer_reprogramm-unconditional.patch +features/all/rt/0018-hrtimer-Make-hrtimer_force_reprogramm-unconditionall.patch +features/all/rt/0019-hrtimer-Unify-handling-of-hrtimer-remove.patch +features/all/rt/0020-hrtimer-Unify-handling-of-remote-enqueue.patch +features/all/rt/0021-hrtimer-Make-remote-enqueue-decision-less-restrictiv.patch +features/all/rt/0022-hrtimer-Remove-base-argument-from-hrtimer_reprogram.patch +features/all/rt/0023-hrtimer-Split-hrtimer_start_range_ns.patch +features/all/rt/0024-hrtimer-Split-__hrtimer_get_next_event.patch +features/all/rt/0025-hrtimer-Use-irqsave-irqrestore-around-__run_hrtimer.patch +features/all/rt/0026-hrtimer-Add-clock-bases-and-hrtimer-mode-for-soft-ir.patch +features/all/rt/0027-hrtimer-Prepare-handling-of-hard-and-softirq-based-h.patch +features/all/rt/0028-hrtimer-Implement-support-for-softirq-based-hrtimers.patch +features/all/rt/0029-hrtimer-Implement-SOFT-HARD-clock-base-selection.patch +features/all/rt/0030-can-bcm-Replace-hrtimer_tasklet-with-softirq-based-h.patch +features/all/rt/0031-mac80211_hwsim-Replace-hrtimer-tasklet-with-softirq-.patch +features/all/rt/0032-xfrm-Replace-hrtimer-tasklet-with-softirq-hrtimer.patch +features/all/rt/0033-softirq-Remove-tasklet_hrtimer.patch +features/all/rt/0034-ALSA-dummy-Replace-tasklet-with-softirq-hrtimer.patch +features/all/rt/0035-usb-gadget-NCM-Replace-tasklet-with-softirq-hrtimer.patch +features/all/rt/0036-net-mvpp2-Replace-tasklet-with-softirq-hrtimer.patch + +# Those two should vanish soon (not use PIT during bootup) +features/all/rt/at91_dont_enable_disable_clock.patch + +############################################################ +# Stuff which needs addressing upstream, but requires more +# information +############################################################ +features/all/rt/rfc-arm-smp-__cpu_disable-fix-sleeping-function-called-from-invalid-context.patch + +############################################################ +# Stuff broken upstream, need to be sent +############################################################ +features/all/rt/rtmutex--Handle-non-enqueued-waiters-gracefully.patch +features/all/rt/rbtree-include-rcu.h-because-we-use-it.patch +features/all/rt/rxrpc-remove-unused-static-variables.patch +features/all/rt/mfd-syscon-atmel-smc-include-string.h.patch +features/all/rt/sched-swait-include-wait.h.patch + +# Wants a different fix for upstream +features/all/rt/NFSv4-replace-seqcount_t-with-a-seqlock_t.patch + +############################################################ +# Submitted on LKML +############################################################ +features/all/rt/Bluetooth-avoid-recursive-locking-in-hci_send_to_cha.patch +features/all/rt/iommu-iova-Use-raw_cpu_ptr-instead-of-get_cpu_ptr-fo.patch +features/all/rt/greybus-audio-don-t-inclide-rwlock.h-directly.patch +features/all/rt/xen-9pfs-don-t-inclide-rwlock.h-directly.patch +features/all/rt/tty-goldfish-Enable-earlycon-only-if-built-in.patch +features/all/rt/drm-i915-properly-init-lockdep-class.patch +features/all/rt/timerqueue-Document-return-values-of-timerqueue_add-.patch + +# SPARC part of erly printk consolidation +features/all/rt/sparc64-use-generic-rwsem-spinlocks-rt.patch + +# SRCU +# XXX +features/all/rt/kernel-SRCU-provide-a-static-initializer.patch + +############################################################ +# Submitted to mips ML +############################################################ + +############################################################ +# Submitted to ARM ML +############################################################ + +############################################################ +# Submitted to PPC ML +############################################################ + +############################################################ +# Submitted on LKML +############################################################ + +############################################################ +# Submitted to net-dev +############################################################ + +############################################################ +# Pending in tip +############################################################ + +############################################################ +# Stuff which should go upstream ASAP +############################################################ +features/all/rt/kernel-sched-Provide-a-pointer-to-the-valid-CPU-mask.patch +features/all/rt/add_migrate_disable.patch + +# tracing: Bug fixes and minor cleanup | 2017-09-22 +features/all/rt/0001-tracing-Steve-s-unofficial-trace_recursive_lock-patc.patch +features/all/rt/0002-tracing-Reverse-the-order-of-trace_types_lock-and-ev.patch +features/all/rt/0004-tracing-Remove-lookups-from-tracing_map-hitcount.patch +features/all/rt/0005-tracing-Increase-tracing-map-KEYS_MAX-size.patch +features/all/rt/0006-tracing-Make-traceprobe-parsing-code-reusable.patch +features/all/rt/0007-tracing-Clean-up-hist_field_flags-enum.patch +features/all/rt/0008-tracing-Add-hist_field_name-accessor.patch +features/all/rt/0009-tracing-Reimplement-log2.patch +# v7 tracing: Inter-event (e.g. latency) support | 2017-12-06 +features/all/rt/0001-tracing-Move-hist-trigger-Documentation-to-histogram.patch +features/all/rt/0002-tracing-Add-Documentation-for-log2-modifier.patch +features/all/rt/0003-tracing-Add-support-to-detect-and-avoid-duplicates.patch +features/all/rt/0004-tracing-Remove-code-which-merges-duplicates.patch +features/all/rt/0005-ring-buffer-Add-interface-for-setting-absolute-time-.patch +features/all/rt/0006-ring-buffer-Redefine-the-unimplemented-RINGBUF_TYPE_.patch +features/all/rt/0007-tracing-Add-timestamp_mode-trace-file.patch +features/all/rt/0008-tracing-Give-event-triggers-access-to-ring_buffer_ev.patch +features/all/rt/0009-tracing-Add-ring-buffer-event-param-to-hist-field-fu.patch +features/all/rt/0010-tracing-Break-out-hist-trigger-assignment-parsing.patch +features/all/rt/0011-tracing-Add-hist-trigger-timestamp-support.patch +features/all/rt/0012-tracing-Add-per-element-variable-support-to-tracing_.patch +features/all/rt/0013-tracing-Add-hist_data-member-to-hist_field.patch +features/all/rt/0014-tracing-Add-usecs-modifier-for-hist-trigger-timestam.patch +features/all/rt/0015-tracing-Add-variable-support-to-hist-triggers.patch +features/all/rt/0016-tracing-Account-for-variables-in-named-trigger-compa.patch +features/all/rt/0017-tracing-Move-get_hist_field_flags.patch +features/all/rt/0018-tracing-Add-simple-expression-support-to-hist-trigge.patch +features/all/rt/0019-tracing-Generalize-per-element-hist-trigger-data.patch +features/all/rt/0020-tracing-Pass-tracing_map_elt-to-hist_field-accessor-.patch +features/all/rt/0021-tracing-Add-hist_field-type-field.patch +features/all/rt/0022-tracing-Add-variable-reference-handling-to-hist-trig.patch +features/all/rt/0023-tracing-Add-hist-trigger-action-hook.patch +features/all/rt/0024-tracing-Add-support-for-synthetic-events.patch +features/all/rt/0025-tracing-Add-support-for-field-variables.patch +features/all/rt/0026-tracing-Add-onmatch-hist-trigger-action-support.patch +features/all/rt/0027-tracing-Add-onmax-hist-trigger-action-support.patch +features/all/rt/0028-tracing-Allow-whitespace-to-surround-hist-trigger-fi.patch +features/all/rt/0029-tracing-Add-cpu-field-for-hist-triggers.patch +features/all/rt/0030-tracing-Add-hist-trigger-support-for-variable-refere.patch +features/all/rt/0031-tracing-Add-last-error-error-facility-for-hist-trigg.patch +features/all/rt/0032-tracing-Add-inter-event-hist-trigger-Documentation.patch +features/all/rt/0033-tracing-Make-tracing_set_clock-non-static.patch +features/all/rt/0034-tracing-Add-a-clock-attribute-for-hist-triggers.patch +features/all/rt/0035-tracing-Increase-trace_recursive_lock-limit-for-synt.patch +features/all/rt/0036-tracing-Add-inter-event-blurb-to-HIST_TRIGGERS-confi.patch +features/all/rt/0037-selftests-ftrace-Add-inter-event-hist-triggers-testc.patch + +# SCHED BLOCK/WQ +features/all/rt/block-shorten-interrupt-disabled-regions.patch + +# Timekeeping split jiffies lock. Needs a good argument :) +features/all/rt/timekeeping-split-jiffies-lock.patch + +# Tracing +features/all/rt/tracing-account-for-preempt-off-in-preempt_schedule.patch + +# PTRACE/SIGNAL crap +features/all/rt/signal-revert-ptrace-preempt-magic.patch + +# ARM lock annotation +features/all/rt/arm-convert-boot-lock-to-raw.patch +features/all/rt/arm-kprobe-replace-patch_lock-to-raw-lock.patch + +# PREEMPT_ENABLE_NO_RESCHED + +# SIGNALS / POSIXTIMERS +features/all/rt/posix-timers-no-broadcast.patch +features/all/rt/signals-allow-rt-tasks-to-cache-one-sigqueue-struct.patch + +# SCHED + +# GENERIC CMPXCHG + +# SHORTEN PREEMPT DISABLED +features/all/rt/drivers-random-reduce-preempt-disabled-region.patch + +# CLOCKSOURCE +features/all/rt/arm-at91-pit-remove-irq-handler-when-clock-is-unused.patch +features/all/rt/clockevents-drivers-timer-atmel-pit-fix-double-free_.patch +features/all/rt/clocksource-tclib-allow-higher-clockrates.patch + +# DRIVERS NET +features/all/rt/drivers-net-8139-disable-irq-nosync.patch + +# PREEMPT + +# PM +features/all/rt/suspend-prevernt-might-sleep-splats.patch + +# NETWORKING +features/all/rt/net-prevent-abba-deadlock.patch +features/all/rt/net-sched-dev_deactivate_many-use-msleep-1-instead-o.patch +features/all/rt/net_disable_NET_RX_BUSY_POLL.patch + +# X86 +features/all/rt/x86-io-apic-migra-no-unmask.patch + +# RCU + +# LOCKING INIT FIXES + +# WORKQUEUE + +##################################################### +# Stuff which should go mainline, but wants some care +##################################################### +features/all/rt/rcu-segcblist-include-rcupdate.h.patch + +# SEQLOCK + +# ANON RW SEMAPHORES + +################################################## +# REAL RT STUFF starts here +################################################## + +# PRINTK +features/all/rt/printk-kill.patch +features/all/rt/printk-27force_early_printk-27-boot-param-to-help-with-debugging.patch + +# Enable RT CONFIG +features/all/rt/rt-preempt-base-config.patch +features/all/rt/kconfig-disable-a-few-options-rt.patch +features/all/rt/kconfig-preempt-rt-full.patch + +# WARN/BUG_ON_RT +features/all/rt/bug-rt-dependend-variants.patch +features/all/rt/iommu-amd--Use-WARN_ON_NORT.patch + +# LOCAL_IRQ_RT/NON_RT +features/all/rt/local-irq-rt-depending-variants.patch + +# PREEMPT NORT +features/all/rt/preempt-nort-rt-variants.patch + +# local locks & migrate disable +features/all/rt/futex-workaround-migrate_disable-enable-in-different.patch +features/all/rt/rt-local-irq-lock.patch + +# ANNOTATE local_irq_disable sites +features/all/rt/ata-disable-interrupts-if-non-rt.patch +features/all/rt/ide-use-nort-local-irq-variants.patch +features/all/rt/infiniband-mellanox-ib-use-nort-irq.patch +features/all/rt/inpt-gameport-use-local-irq-nort.patch +features/all/rt/user-use-local-irq-nort.patch +features/all/rt/usb-use-_nort-in-giveback.patch +features/all/rt/mm-scatterlist-dont-disable-irqs-on-RT.patch +features/all/rt/mm-workingset-do-not-protect-workingset_shadow_nodes.patch + +# Sigh +features/all/rt/signal-fix-up-rcu-wreckage.patch +features/all/rt/oleg-signal-rt-fix.patch +features/all/rt/x86-signal-delay-calling-signals-on-32bit.patch + +# ANNOTATE BUG/WARNON +features/all/rt/net-wireless-warn-nort.patch + +# BIT SPINLOCKS - SIGH +features/all/rt/fs-replace-bh_uptodate_lock-for-rt.patch +features/all/rt/fs-jbd-replace-bh_state-lock.patch + +# GENIRQ +features/all/rt/list_bl.h-make-list-head-locking-RT-safe.patch +features/all/rt/list_bl-fixup-bogus-lockdep-warning.patch +features/all/rt/genirq-disable-irqpoll-on-rt.patch +features/all/rt/genirq-force-threading.patch + +# DRIVERS NET +features/all/rt/drivers-net-vortex-fix-locking-issues.patch + +# ACCT +features/all/rt/delayacct-use-raw_spinlocks.patch + +# MM PAGE_ALLOC +features/all/rt/mm-page_alloc-rt-friendly-per-cpu-pages.patch +features/all/rt/mm-page_alloc-reduce-lock-sections-further.patch + +# MM SWAP +features/all/rt/mm-convert-swap-to-percpu-locked.patch +features/all/rt/mm-perform-lru_add_drain_all-remotely.patch + +# MM vmstat +features/all/rt/mm-make-vmstat-rt-aware.patch + +# MM memory +features/all/rt/re-preempt_rt_full-arm-coredump-fails-for-cpu-3e-3d-4.patch + +# MM bounce +features/all/rt/mm-bounce-local-irq-save-nort.patch + +# MM SLxB +features/all/rt/mm-disable-sloub-rt.patch +features/all/rt/mm-enable-slub.patch +features/all/rt/mm-slub-close-possible-memory-leak-in-kmem_cache_all.patch +features/all/rt/slub-enable-irqs-for-no-wait.patch +features/all/rt/slub-disable-SLUB_CPU_PARTIAL.patch + +# MM +features/all/rt/mm-page-alloc-use-local-lock-on-target-cpu.patch +features/all/rt/mm-memcontrol-Don-t-call-schedule_work_on-in-preempt.patch +features/all/rt/mm-memcontrol-do_not_disable_irq.patch +features/all/rt/mm-backing-dev-don-t-disable-IRQs-in-wb_congested_pu.patch +features/all/rt/mm_zsmalloc_copy_with_get_cpu_var_and_locking.patch + +# RADIX TREE +features/all/rt/radix-tree-use-local-locks.patch + +# PANIC +features/all/rt/panic-disable-random-on-rt.patch + +# TIMERS +features/all/rt/timers-prepare-for-full-preemption.patch +features/all/rt/timer-delay-waking-softirqs-from-the-jiffy-tick.patch +features/all/rt/nohz-Prevent-erroneous-tick-stop-invocations.patch + +# KVM require constant freq TSC (smp function call -> cpufreq) +features/all/rt/x86-kvm-require-const-tsc-for-rt.patch +# +# SIMPLE WAITQUEUE +features/all/rt/wait.h-include-atomic.h.patch +features/all/rt/work-simple-Simple-work-queue-implemenation.patch +features/all/rt/completion-use-simple-wait-queues.patch +features/all/rt/fs-aio-simple-simple-work.patch +features/all/rt/genirq-do-not-invoke-the-affinity-callback-via-a-wor.patch + +# HRTIMERS +features/all/rt/time-hrtimer-avoid-schedule_work-with-interrupts-dis.patch +features/all/rt/hrtimer-consolidate-hrtimer_init-hrtimer_init_sleepe.patch +features/all/rt/hrtimers-prepare-full-preemption.patch +features/all/rt/hrtimer-by-timers-by-default-into-the-softirq-context.patch +features/all/rt/hrtimer-Move-schedule_work-call-to-helper-thread.patch +features/all/rt/timer-fd-avoid-live-lock.patch + +# POSIX-CPU-TIMERS +features/all/rt/posix-timers-thread-posix-cpu-timers-on-rt.patch + +# SCHEDULER +features/all/rt/sched-delay-put-task.patch +features/all/rt/sched-limit-nr-migrate.patch +features/all/rt/sched-mmdrop-delayed.patch +features/all/rt/kernel-sched-move-stack-kprobe-clean-up-to-__put_tas.patch +features/all/rt/sched-rt-mutex-wakeup.patch +features/all/rt/sched-Prevent-task-state-corruption-by-spurious-lock.patch +features/all/rt/sched-Remove-TASK_ALL.patch +features/all/rt/sched-might-sleep-do-not-account-rcu-depth.patch +features/all/rt/cond-resched-softirq-rt.patch +features/all/rt/cond-resched-lock-rt-tweak.patch +features/all/rt/sched-disable-ttwu-queue.patch +features/all/rt/sched-disable-rt-group-sched-on-rt.patch +features/all/rt/sched-ttwu-ensure-success-return-is-correct.patch +features/all/rt/sched-workqueue-Only-wake-up-idle-workers-if-not-blo.patch +features/all/rt/rt-Increase-decrease-the-nr-of-migratory-tasks-when-.patch + +# STOP MACHINE +features/all/rt/stop_machine-convert-stop_machine_run-to-PREEMPT_RT.patch +features/all/rt/stop-machine-raw-lock.patch + +# MIGRATE DISABLE AND PER CPU +features/all/rt/hotplug-light-get-online-cpus.patch +features/all/rt/ftrace-migrate-disable-tracing.patch + +# NOHZ + +# LOCKDEP +features/all/rt/lockdep-no-softirq-accounting-on-rt.patch +features/all/rt/lockdep-disable-self-test.patch + +# SOFTIRQ +features/all/rt/mutex-no-spin-on-rt.patch +features/all/rt/tasklet-rt-prevent-tasklets-from-going-into-infinite-spin-in-rt.patch +features/all/rt/softirq-preempt-fix-3-re.patch +features/all/rt/softirq-disable-softirq-stacks-for-rt.patch +features/all/rt/softirq-split-locks.patch +features/all/rt/kernel-softirq-unlock-with-irqs-on.patch +features/all/rt/irq-allow-disabling-of-softirq-processing-in-irq-thread-context.patch +features/all/rt/softirq-split-timer-softirqs-out-of-ksoftirqd.patch +features/all/rt/softirq-wake-the-timer-softirq-if-needed.patch +features/all/rt/rtmutex-trylock-is-okay-on-RT.patch + +# compile fix due to rtmutex locks +features/all/rt/fs-nfs-turn-rmdir_sem-into-a-semaphore.patch + +# FUTEX/RTMUTEX +features/all/rt/rtmutex-futex-prepare-rt.patch +features/all/rt/futex-requeue-pi-fix.patch +features/all/rt/locking-rtmutex-don-t-drop-the-wait_lock-twice.patch +features/all/rt/futex-Ensure-lock-unlock-symetry-versus-pi_lock-and-.patch + +# RTMUTEX +features/all/rt/pid.h-include-atomic.h.patch +features/all/rt/arm-include-definition-for-cpumask_t.patch +features/all/rt/locking-locktorture-Do-NOT-include-rwlock.h-directly.patch +features/all/rt/rtmutex-lock-killable.patch +features/all/rt/rtmutex-Make-lock_killable-work.patch +features/all/rt/spinlock-types-separate-raw.patch +features/all/rt/rtmutex-avoid-include-hell.patch +features/all/rt/rtmutex_dont_include_rcu.patch +features/all/rt/rtmutex-Provide-rt_mutex_slowlock_locked.patch +features/all/rt/rtmutex-export-lockdep-less-version-of-rt_mutex-s-lo.patch +features/all/rt/rtmutex-add-sleeping-lock-implementation.patch +features/all/rt/rtmutex-add-mutex-implementation-based-on-rtmutex.patch +features/all/rt/rtmutex-add-rwsem-implementation-based-on-rtmutex.patch +features/all/rt/rtmutex-add-rwlock-implementation-based-on-rtmutex.patch +features/all/rt/rtmutex-wire-up-RT-s-locking.patch +features/all/rt/rtmutex-add-ww_mutex-addon-for-mutex-rt.patch +features/all/rt/locking-rt-mutex-fix-deadlock-in-device-mapper-block.patch +features/all/rt/locking-rtmutex-re-init-the-wait_lock-in-rt_mutex_in.patch +features/all/rt/ptrace-fix-ptrace-vs-tasklist_lock-race.patch +features/all/rt/RCU-we-need-to-skip-that-warning-but-only-on-sleepin.patch +features/all/rt/locking-don-t-check-for-__LINUX_SPINLOCK_TYPES_H-on-.patch + +# RCU +features/all/rt/peter_zijlstra-frob-rcu.patch +features/all/rt/rcu-merge-rcu-bh-into-rcu-preempt-for-rt.patch +features/all/rt/patch-to-introduce-rcu-bh-qs-where-safe-from-softirq.patch +features/all/rt/rcutree-rcu_bh_qs-disable-irq-while-calling-rcu_pree.patch + +# DRIVERS SERIAL +features/all/rt/drivers-tty-fix-omap-lock-crap.patch +features/all/rt/drivers-tty-pl011-irq-disable-madness.patch +features/all/rt/rt-serial-warn-fix.patch +features/all/rt/tty-serial-8250-don-t-take-the-trylock-during-oops.patch + +# FS +features/all/rt/peterz-percpu-rwsem-rt.patch +features/all/rt/fs-namespace-preemption-fix.patch +features/all/rt/mm-protect-activate-switch-mm.patch +features/all/rt/fs-block-rt-support.patch +features/all/rt/fs-ntfs-disable-interrupt-non-rt.patch +features/all/rt/fs-jbd2-pull-your-plug-when-waiting-for-space.patch +features/all/rt/Revert-fs-jbd2-pull-your-plug-when-waiting-for-space.patch +features/all/rt/fs-dcache-bringt-back-explicit-INIT_HLIST_BL_HEAD-in.patch +features/all/rt/fs-dcache-disable-preemption-on-i_dir_seq-s-write-si.patch + +# X86 +features/all/rt/x86-mce-timer-hrtimer.patch +features/all/rt/x86-mce-use-swait-queue-for-mce-wakeups.patch +features/all/rt/x86-stackprot-no-random-on-rt.patch +features/all/rt/x86-use-gen-rwsem-spinlocks-rt.patch +features/all/rt/x86-UV-raw_spinlock-conversion.patch +features/all/rt/thermal-Defer-thermal-wakups-to-threads.patch + +# CPU get light +features/all/rt/epoll-use-get-cpu-light.patch +features/all/rt/mm-vmalloc-use-get-cpu-light.patch +features/all/rt/block-mq-use-cpu_light.patch +features/all/rt/block-mq-drop-preempt-disable.patch +features/all/rt/block-mq-don-t-complete-requests-via-IPI.patch +features/all/rt/md-raid5-percpu-handling-rt-aware.patch +features/all/rt/md-raid5-do-not-disable-interrupts.patch + +# CPU CHILL +features/all/rt/rt-introduce-cpu-chill.patch +features/all/rt/cpu_chill-Add-a-UNINTERRUPTIBLE-hrtimer_nanosleep.patch + +# block +features/all/rt/block-blk-mq-use-swait.patch + +# BLOCK LIVELOCK PREVENTION +features/all/rt/block-use-cpu-chill.patch + +# FS LIVELOCK PREVENTION +features/all/rt/fs-dcache-use-cpu-chill-in-trylock-loops.patch +features/all/rt/net-use-cpu-chill.patch +features/all/rt/fs-dcache-use-swait_queue-instead-of-waitqueue.patch + +# WORKQUEUE more fixes +features/all/rt/workqueue-use-rcu.patch +features/all/rt/workqueue-use-locallock.patch +features/all/rt/work-queue-work-around-irqsafe-timer-optimization.patch +features/all/rt/workqueue-distangle-from-rq-lock.patch + +# IDA +features/all/rt/percpu_ida-use-locklocks.patch + +# DEBUGOBJECTS +features/all/rt/debugobjects-rt.patch + +# JUMPLABEL +features/all/rt/jump-label-rt.patch + +# SEQLOCKS +features/all/rt/seqlock-prevent-rt-starvation.patch + +# NETWORKING +features/all/rt/sunrpc-make-svc_xprt_do_enqueue-use-get_cpu_light.patch +features/all/rt/skbufhead-raw-lock.patch +features/all/rt/net-core-cpuhotplug-drain-input_pkt_queue-lockless.patch +features/all/rt/net-move-xmit_recursion-to-per-task-variable-on-RT.patch +features/all/rt/net-provide-a-way-to-delegate-processing-a-softirq-t.patch +features/all/rt/net-dev-always-take-qdisc-s-busylock-in-__dev_xmit_s.patch +features/all/rt/net-Qdisc-use-a-seqlock-instead-seqcount.patch +features/all/rt/net-add-back-the-missing-serialization-in-ip_send_un.patch +features/all/rt/net-take-the-tcp_sk_lock-lock-with-BH-disabled.patch +features/all/rt/net-add-a-lock-around-icmp_sk.patch +features/all/rt/net-use-trylock-in-icmp_sk.patch +features/all/rt/net-Have-__napi_schedule_irqoff-disable-interrupts-o.patch + +# irqwork +features/all/rt/irqwork-push_most_work_into_softirq_context.patch +features/all/rt/irqwork-Move-irq-safe-work-to-irq-context.patch + +# Sound +features/all/rt/snd-pcm-fix-snd_pcm_stream_lock-irqs_disabled-splats.patch + +# CONSOLE. NEEDS more thought !!! +features/all/rt/printk-rt-aware.patch +features/all/rt/kernel-printk-Don-t-try-to-print-from-IRQ-NMI-region.patch +features/all/rt/HACK-printk-drop-the-logbuf_lock-more-often.patch + +# POWERC +features/all/rt/power-use-generic-rwsem-on-rt.patch +features/all/rt/powerpc-kvm-Disable-in-kernel-MPIC-emulation-for-PRE.patch +features/all/rt/powerpc-ps3-device-init.c-adapt-to-completions-using.patch + +# ARM +features/all/rt/arm-at91-tclib-default-to-tclib-timer-for-rt.patch +features/all/rt/arm-unwind-use_raw_lock.patch +features/all/rt/ARM-enable-irq-in-translation-section-permission-fau.patch +features/all/rt/genirq-update-irq_set_irqchip_state-documentation.patch +features/all/rt/KVM-arm-arm64-downgrade-preempt_disable-d-region-to-.patch + +# ARM64 +features/all/rt/arm64-xen--Make-XEN-depend-on-non-rt.patch + +# KGDB +features/all/rt/kgb-serial-hackaround.patch + +# SYSFS - RT indicator +features/all/rt/sysfs-realtime-entry.patch + +# KMAP/HIGHMEM +features/all/rt/power-disable-highmem-on-rt.patch +features/all/rt/mips-disable-highmem-on-rt.patch +features/all/rt/mm-rt-kmap-atomic-scheduling.patch +features/all/rt/mm--rt--Fix-generic-kmap_atomic-for-RT.patch +features/all/rt/x86-highmem-add-a-already-used-pte-check.patch +features/all/rt/arm-highmem-flush-tlb-on-unmap.patch +features/all/rt/arm-enable-highmem-for-rt.patch + +# SYSRQ + +# SCSI/FCOE +features/all/rt/scsi-fcoe-rt-aware.patch +features/all/rt/sas-ata-isci-dont-t-disable-interrupts-in-qc_issue-h.patch + +# crypto drivers +features/all/rt/x86-crypto-reduce-preempt-disabled-regions.patch +features/all/rt/crypto-Reduce-preempt-disabled-regions-more-algos.patch +features/all/rt/crypto-limit-more-FPU-enabled-sections.patch +features/all/rt/arm-disable-NEON-in-kernel-mode.patch + +# Device mapper +features/all/rt/dm-make-rt-aware.patch + +# ACPI +features/all/rt/acpi-rt-Convert-acpi_gbl_hardware-lock-back-to-a-raw.patch + +# CPUMASK OFFSTACK +features/all/rt/cpumask-disable-offstack-on-rt.patch + +# RANDOM +features/all/rt/random-make-it-work-on-rt.patch +features/all/rt/random-avoid-preempt_disable-ed-section.patch +features/all/rt/char-random-don-t-print-that-the-init-is-done.patch + +# HOTPLUG +features/all/rt/cpu-hotplug--Implement-CPU-pinning.patch +features/all/rt/hotplug-duct-tape-RT-rwlock-usage-for-non-RT.patch + +# SCSCI QLA2xxx +features/all/rt/scsi-qla2xxx-fix-bug-sleeping-function-called-from-invalid-context.patch + +# NET +features/all/rt/upstream-net-rt-remove-preemption-disabling-in-netif_rx.patch +features/all/rt/net-another-local-irq-disable-alloc-atomic-headache.patch +features/all/rt/net-core-protect-users-of-napi_alloc_cache-against-r.patch +features/all/rt/net-fix-iptable-xt-write-recseq-begin-rt-fallout.patch +features/all/rt/net-make-devnet_rename_seq-a-mutex.patch + +# CRYPTO +# XXX +features/all/rt/peterz-srcu-crypto-chain.patch + +# LOCKDEP +features/all/rt/lockdep-selftest-only-do-hardirq-context-test-for-raw-spinlock.patch +features/all/rt/lockdep-selftest-fix-warnings-due-to-missing-PREEMPT.patch + +# PERF + +# RCU +features/all/rt/srcu-use-cpu_online-instead-custom-check.patch +features/all/rt/srcu-Prohibit-call_srcu-use-under-raw-spinlocks.patch +features/all/rt/srcu-replace-local_irqsave-with-a-locallock.patch +features/all/rt/rcu-disable-rcu-fast-no-hz-on-rt.patch +features/all/rt/rcu-Eliminate-softirq-processing-from-rcutree.patch +features/all/rt/rcu-make-RCU_BOOST-default-on-RT.patch +features/all/rt/rcu-enable-rcu_normal_after_boot-by-default-for-RT.patch + +# PREEMPT LAZY +features/all/rt/preempt-lazy-support.patch +features/all/rt/ftrace-Fix-trace-header-alignment.patch +features/all/rt/x86-preempt-lazy.patch +features/all/rt/arm-preempt-lazy-support.patch +features/all/rt/powerpc-preempt-lazy-support.patch +features/all/rt/arch-arm64-Add-lazy-preempt-support.patch + +# LEDS +features/all/rt/leds-trigger-disable-CPU-trigger-on-RT.patch + +# DRIVERS +features/all/rt/mmci-remove-bogus-irq-save.patch +features/all/rt/cpufreq-drop-K8-s-driver-from-beeing-selected.patch +features/all/rt/connector-cn_proc-Protect-send_msg-with-a-local-lock.patch +features/all/rt/drivers-block-zram-Replace-bit-spinlocks-with-rtmute.patch +features/all/rt/drivers-zram-Don-t-disable-preemption-in-zcomp_strea.patch +features/all/rt/drivers-zram-fix-zcomp_stream_get-smp_processor_id-u.patch +features/all/rt/tpm_tis-fix-stall-after-iowrite-s.patch +features/all/rt/pci-switchtec-Don-t-use-completion-s-wait-queue.patch + +# I915 +features/all/rt/drmradeoni915_Use_preempt_disableenable_rt()_where_recommended.patch +features/all/rt/drmi915_Use_local_lockunlock_irq()_in_intel_pipe_update_startend().patch + +# CGROUPS +features/all/rt/cgroups-use-simple-wait-in-css_release.patch +features/all/rt/cgroups-scheduling-while-atomic-in-cgroup-code.patch +features/all/rt/Revert-memcontrol-Prevent-scheduling-while-atomic-in.patch +features/all/rt/cpuset-Convert-callback_lock-to-raw_spinlock_t.patch + +# New stuff +# Revisit: We need this in other places as well +features/all/rt/move_sched_delayed_work_to_helper.patch + +# MD +features/all/rt/md-disable-bcache.patch + +# Security +features/all/rt/apparmor-use-a-locallock-instead-preempt_disable.patch + +# WORKQUEUE SIGH +features/all/rt/workqueue-prevent-deadlock-stall.patch + +# Add RT to version +features/all/rt/localversion.patch diff --git a/rules b/rules new file mode 100755 index 00000000000..c55afebf8e6 --- /dev/null +++ b/rules @@ -0,0 +1,114 @@ +#!/usr/bin/make -f + +SHELL := sh -e +DEB_HOST_ARCH := $(shell dpkg-architecture -qDEB_HOST_ARCH) +SOURCE := $(shell dpkg-parsechangelog -SSource) +VERSION := $(shell dpkg-parsechangelog -SVersion) +VERSION_UPSTREAM := $(shell echo "$(VERSION)" | sed -e 's,-[^-]*$$,,') +VERSION_BINNMU := $(shell echo "$(VERSION)" | sed -rne 's,.*\+b([0-9]+)$$,\1,p') + +include debian/rules.defs + +ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) + DEBIAN_KERNEL_JOBS := $(subst parallel=,,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) +endif +ifdef DEBIAN_KERNEL_JOBS + MAKEFLAGS += -j$(DEBIAN_KERNEL_JOBS) +endif +BUILD_STAGE1 := $(filter stage1,$(DEB_BUILD_PROFILES)) +ifneq (,$(filter pkg.linux.notools,$(DEB_BUILD_PROFILES))) + MAKEFLAGS += DO_TOOLS=False +endif + +.NOTPARALLEL: + +source: debian/control + dh_testdir + $(MAKE) -f debian/rules.gen source + +setup: debian/control + dh_testdir + $(MAKE) -f debian/rules.gen setup_$(DEB_HOST_ARCH) + +build: build-arch build-indep + +build-arch: debian/control + dh_testdir +ifndef BUILD_STAGE1 + $(MAKE) -f debian/rules.gen build-arch_$(DEB_HOST_ARCH) +endif + +build-indep: debian/control + dh_testdir +ifndef BUILD_STAGE1 + $(MAKE) -f debian/rules.gen build-indep +endif + +binary: binary-indep binary-arch + +binary-arch: build-arch + dh_testdir +ifdef BUILD_STAGE1 + $(MAKE) -f debian/rules.gen binary-libc-dev_$(DEB_HOST_ARCH) +else + $(MAKE) -f debian/rules.gen binary-arch_$(DEB_HOST_ARCH) +endif + +binary-indep: build-indep + dh_testdir +ifndef BUILD_STAGE1 + $(MAKE) -f debian/rules.gen binary-indep +endif + +DIR_ORIG = ../orig/$(SOURCE)-$(VERSION_UPSTREAM) +TAR_ORIG_NAME = $(SOURCE)_$(VERSION_UPSTREAM).orig.tar.xz +TAR_ORIG = $(firstword $(wildcard ../$(TAR_ORIG_NAME)) $(wildcard ../orig/$(TAR_ORIG_NAME))) + +orig: $(DIR_ORIG) + rsync --delete --exclude /debian --exclude .svk --exclude .svn --exclude .git --link-dest=$(DIR_ORIG)/ -a $(DIR_ORIG)/ . + QUILT_PATCHES='$(CURDIR)/debian/patches' QUILT_PC=.pc quilt push --quiltrc - -a -q --fuzz=0 + +$(DIR_ORIG): +ifeq ($(TAR_ORIG),) + $(error Cannot find orig tarball $(TAR_ORIG_NAME)) +else + mkdir -p ../orig + tar -C ../orig -xaf $(TAR_ORIG) +endif + +maintainerclean: + rm -f debian/config.defines.dump debian/control debian/control.md5sum debian/linux-headers-* debian/linux-image-* debian/rules.gen + rm -rf $(filter-out debian .svk .svn .git, $(wildcard * .[^.]*)) + +clean: debian/control + dh_testdir + rm -rf $(BUILD_DIR) $(STAMPS_DIR) debian/lib/python/debian_linux/*.pyc debian/lib/python/debian_linux/__pycache__ $$(find debian -maxdepth 1 -type d -name 'linux-*') debian/*-modules-*-di* debian/kernel-image-*-di* debian/xen-linux-system-* debian/*-tmp + dh_clean + +CONTROL_FILES = debian/changelog $(wildcard debian/templates/*.in) +CONTROL_FILES += debian/config/defines $(wildcard debian/config/*/defines) $(wildcard debian/config/*/*/defines) +CONTROL_FILES += $(wildcard debian/installer/*/kernel-versions) $(wildcard debian/installer/*/package-list) debian/installer/package-list +debian/control debian/rules.gen: debian/bin/gencontrol.py $(CONTROL_FILES) +ifeq ($(wildcard debian/control.md5sum),) + $(MAKE) -f debian/rules debian/control-real +else ifeq ($(VERSION_BINNMU),) + md5sum --check debian/control.md5sum --status || \ + $(MAKE) -f debian/rules debian/control-real +else + grep -v debian/changelog debian/control.md5sum | md5sum --check - --status || \ + $(MAKE) -f debian/rules debian/control-real +endif + +debian/control-real: debian/bin/gencontrol.py $(CONTROL_FILES) +# Hash randomisation makes the pickled config unreproducible + PYTHONHASHSEED=0 $< + md5sum $^ > debian/control.md5sum + @echo + @echo This target is made to fail intentionally, to make sure + @echo that it is NEVER run during the automated build. Please + @echo ignore the following error, the debian/control file has + @echo been generated SUCCESSFULLY. + @echo + exit 1 + +.PHONY: clean build setup binary-indep binary-arch binary diff --git a/rules.d/Makefile b/rules.d/Makefile new file mode 100644 index 00000000000..c7506d3e447 --- /dev/null +++ b/rules.d/Makefile @@ -0,0 +1,17 @@ +DATA = \ + Kbuild \ + Makefile \ + +SUBDIRS = \ + scripts \ + tools + +include $(top_rulesdir)/Makefile.inc + +# Build userland headers first +unexport VERSION +all-local: + mkdir -p headers-tools + $(MAKE) -C $(top_srcdir) ARCH=$(KERNEL_ARCH) O=$(CURDIR)/headers-tools \ + INSTALL_HDR_PATH=$(CURDIR) headers_install +all-recursive: all-local diff --git a/rules.d/Makefile.inc b/rules.d/Makefile.inc new file mode 100644 index 00000000000..48f8c2e7ca1 --- /dev/null +++ b/rules.d/Makefile.inc @@ -0,0 +1,57 @@ +# Normalise OUTDIR to avoid triggering rebuilds +override OUTDIR := $(patsubst ./%,%,$(OUTDIR)) + +VPATH = $(top_rulesdir)/$(OUTDIR) $(top_srcdir)/$(OUTDIR) + +SHELL = /bin/sh -e + +CC = $(CROSS_COMPILE)gcc +CXX = $(CROSS_COMPILE)g++ +CFLAGS := $(shell dpkg-buildflags --get CFLAGS) -Wall +CPPFLAGS := $(shell dpkg-buildflags --get CPPFLAGS) \ + -I$(top_srcdir)/$(OUTDIR) \ + -I$(top_srcdir)/debian/build/build-tools/$(OUTDIR) \ + -isystem $(top_srcdir)/debian/build/build-tools/include +CXXFLAGS := $(shell dpkg-buildflags --get CXXFLAGS) -Wall +LDFLAGS := $(shell dpkg-buildflags --get LDFLAGS) + +installdir ?= $(prefix)/$(OUTDIR) + +all: all-local all-recursive +clean: clean-recursive +install: install-local install-recursive + +%-recursive: + +@list='$(SUBDIRS)'; \ + for subdir in $$list; do \ + echo "Making $* in $$subdir"; \ + mkdir -p $$subdir; \ + $(MAKE) -C $$subdir -f $(top_rulesdir)/$(OUTDIR)/$$subdir/Makefile OUTDIR=$(OUTDIR)/$$subdir $*; \ + done + +all-local: $(PROGS) + +install-local: install-local-progs install-local-scripts install-local-data + +install-local-progs: $(PROGS) + @for p in $^; do \ + echo " install -m755 '$$p' '$(DESTDIR)/$(installdir)'"; \ + install -D -m755 "$$p" "$(DESTDIR)/$(installdir)/$$(basename $$p)"; \ + done + +SCRIPTS_REAL = $(wildcard $(addprefix $(top_srcdir)/$(OUTDIR)/,$(SCRIPTS))) + +install-local-scripts: $(SCRIPTS_REAL) + @for p in $^; do \ + echo " install -m755 '$$p' '$(DESTDIR)/$(installdir)'"; \ + install -D -m755 "$$p" "$(DESTDIR)/$(installdir)/$$(basename $$p)"; \ + done + +DATA_REAL = $(wildcard $(addprefix $(top_srcdir)/$(OUTDIR)/,$(DATA))) + +install-local-data: $(DATA_REAL) + @for p in $^; do \ + echo " install -m644 '$$p' '$(DESTDIR)/$(installdir)'"; \ + install -D -m644 "$$p" "$(DESTDIR)/$(installdir)/$$(basename $$p)"; \ + done + diff --git a/rules.d/scripts/Makefile b/rules.d/scripts/Makefile new file mode 100644 index 00000000000..41a642bb6a8 --- /dev/null +++ b/rules.d/scripts/Makefile @@ -0,0 +1,45 @@ +PROGS = \ + conmakehash \ + extract-cert \ + kallsyms \ + pnmtologo \ + recordmcount \ + sign-file \ + unifdef + +DATA = \ + Kbuild.include \ + Makefile.* \ + mkversion \ + module-common.lds + +SCRIPTS = \ + checkincludes.pl \ + checkstack.pl \ + checkversion.pl \ + depmod.sh \ + gcc-*.sh \ + gen_initramfs_list.sh \ + headers_install.sh \ + kernel-doc \ + ld-version.sh \ + Lindent \ + makelst \ + mksysmap \ + mkuboot.sh \ + namespace.pl \ + patch-kernel \ + recordmcount.pl \ + setlocalversion \ + ver_linux + +SUBDIRS = \ + basic \ + genksyms \ + kconfig \ + mod + +include $(top_rulesdir)/Makefile.inc + +CPPFLAGS += -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 +extract-cert sign-file: LDLIBS += -lcrypto diff --git a/rules.d/scripts/basic/Makefile b/rules.d/scripts/basic/Makefile new file mode 100644 index 00000000000..86b86a84969 --- /dev/null +++ b/rules.d/scripts/basic/Makefile @@ -0,0 +1,5 @@ +PROGS = \ + bin2c \ + fixdep + +include $(top_rulesdir)/Makefile.inc diff --git a/rules.d/scripts/genksyms/Makefile b/rules.d/scripts/genksyms/Makefile new file mode 100644 index 00000000000..2d803c5a58c --- /dev/null +++ b/rules.d/scripts/genksyms/Makefile @@ -0,0 +1,13 @@ +PROGS = genksyms + +include $(top_rulesdir)/Makefile.inc + +genksyms: genksyms.o parse.tab.o lex.lex.o + +lex.lex.o: keywords.c parse.tab.h + +%.c: %.c_shipped + ln -s $< $@ + +%.h: %.h_shipped + ln -s $< $@ diff --git a/rules.d/scripts/kconfig/Makefile b/rules.d/scripts/kconfig/Makefile new file mode 100644 index 00000000000..01b636745cf --- /dev/null +++ b/rules.d/scripts/kconfig/Makefile @@ -0,0 +1,13 @@ +PROGS = conf + +include $(top_rulesdir)/Makefile.inc + +conf: conf.o zconf.tab.o + +zconf.tab.c: kconf_id.c zconf.lex.c + +%.c: %.c_shipped + ln -sf $< $@ + +%.h: %.h_shipped + ln -sf $< $@ diff --git a/rules.d/scripts/mod/Makefile b/rules.d/scripts/mod/Makefile new file mode 100644 index 00000000000..e57e262aa12 --- /dev/null +++ b/rules.d/scripts/mod/Makefile @@ -0,0 +1,22 @@ +PROGS = \ + modpost \ + modpost.real-lsb-32 \ + modpost.real-lsb-64 \ + modpost.real-msb-32 \ + modpost.real-msb-64 + +include $(top_rulesdir)/Makefile.inc + +wrapperdir = $(top_rulesdir)/$(OUTDIR) + +modpost.real-%: + $(MAKE) -f $(wrapperdir)/Makefile.real TYPE=$* SOURCEDIR=$(top_srcdir)/scripts/mod + +%: %.o + $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ + +modpost-opts.h: $(top_srcdir)/scripts/mod/modpost.c + python $(wrapperdir)/gendef.py $< > $@ + +modpost.o: modpost.c modpost-opts.h + $(CC) $(CFLAGS) -I $(CURDIR) -c -o $@ $< diff --git a/rules.d/scripts/mod/Makefile.real b/rules.d/scripts/mod/Makefile.real new file mode 100644 index 00000000000..8b097f8970f --- /dev/null +++ b/rules.d/scripts/mod/Makefile.real @@ -0,0 +1,23 @@ +PROGS = modpost.real-$(TYPE) + +include $(top_rulesdir)/Makefile.inc + +wrapperdir = $(top_rulesdir)/$(OUTDIR) +CFLAGS += -I $(CURDIR)/real-$(TYPE) -I $(wrapperdir)/real-$(TYPE) + +modpost.real-$(TYPE): file2alias.real-$(TYPE).o modpost.real-$(TYPE).o sumversion.real-$(TYPE).o + $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ + +%.real-$(TYPE).o: $(SOURCEDIR)/%.c real-$(TYPE)/devicetable-offsets.h + $(CC) $(CFLAGS) -c -o $@ $< + +real-$(TYPE)/devicetable-offsets.s: $(SOURCEDIR)/devicetable-offsets.c + mkdir -p real-$(TYPE) + $(CC) -include $(wrapperdir)/real-$(TYPE)/types.h $(CFLAGS) -nostdinc -I$(top_srcdir)/include -S -o $@ $< + +real-$(TYPE)/devicetable-offsets.h: real-$(TYPE)/devicetable-offsets.s + echo >$@ "#define __DEVICEVTABLE_OFFSETS_H__" + sed -ne "s:^[[:space:]]*\.ascii[[:space:]]*\"\(.*\)\".*:\1:; \ + /^->/{s:->#\(.*\):/* \1 */:; \ + s:^->\([^ ]*\) [\$$#]*\([^ ]*\) \(.*\):#define \1 \2 /* \3 */:; \ + s:->::; p;}" $< >>$@ diff --git a/rules.d/scripts/mod/elfconfig.h b/rules.d/scripts/mod/elfconfig.h new file mode 100644 index 00000000000..8c90ea6002c --- /dev/null +++ b/rules.d/scripts/mod/elfconfig.h @@ -0,0 +1,7 @@ +#include + +#if __BYTE_ORDER == __LITTLE_ENDIAN +#define HOST_ELFDATA ELFDATA2LSB +#elif __BYTE_ORDER == __BIG_ENDIAN +#define HOST_ELFDATA ELFDATA2MSB +#endif diff --git a/rules.d/scripts/mod/gendef.py b/rules.d/scripts/mod/gendef.py new file mode 100755 index 00000000000..6e1bdf41bf7 --- /dev/null +++ b/rules.d/scripts/mod/gendef.py @@ -0,0 +1,20 @@ +#!/usr/bin/python +import re +import sys + +for line in open(sys.argv[1]): + match = re.search('getopt\(argc, argv, "([\w:]*?)"\)', line) + if match: + options = match.group(1) + break +else: + raise RuntimeError + +print '#define GETOPT_OPTIONS "%s"' % options + +print '#define GETOPT_CASE', +for c in options: + if c == ':' or c == 'T': + continue + print "case '%c':" % c, +print diff --git a/rules.d/scripts/mod/modpost.c b/rules.d/scripts/mod/modpost.c new file mode 100644 index 00000000000..d574957ae3c --- /dev/null +++ b/rules.d/scripts/mod/modpost.c @@ -0,0 +1,136 @@ +#include +#include +#include +#include +#include +#include +#include + +#include "modpost-opts.h" + +int main (int argc, char *argv[]) +{ + char const *data, *class; + char *list_name = NULL; + char *name = NULL; + char prog[1024]; + unsigned char ei[EI_NIDENT]; + int opt; + FILE *file; + + while ((opt = getopt (argc, argv, GETOPT_OPTIONS)) != -1) + { + switch(opt) + { + GETOPT_CASE + break; + case 'T': + list_name = optarg; + break; + default: + return EXIT_FAILURE; + } + } + + if (optind != argc) + { + name = argv[optind]; + } + else if (list_name) + { + size_t name_len; + int is_stdin = strcmp (list_name, "-") == 0; + + /* Read first line of list file */ + if (is_stdin) + { + file = stdin; + setvbuf(stdin, NULL, _IONBF, 0); /* don't over-read */ + } + else + { + file = fopen (list_name, "r"); + if (!file) + { + fprintf (stderr, "Can't open \"%s\"\n", list_name); + return EXIT_FAILURE; + } + } + if (getline (&name, &name_len, file) < 0) + { + if (errno) + { + fprintf (stderr, "Can't read \"%s\"\n", list_name); + return EXIT_FAILURE; + } + else + { + /* Empty list */ + return EXIT_SUCCESS; + } + } + if (!is_stdin) + fclose(file); + + /* Remove new-line */ + name [strcspn (name, "\n")] = 0; + + /* If this came from stdin, we need to add the first name to the + * arguments, because the upstream modpost can't read it again. + */ + if (is_stdin) + { + char **new_argv = malloc (sizeof(*argv) * (argc + 2)); + memcpy(new_argv, argv, sizeof(*argv) * argc); + new_argv [argc] = name; + new_argv [argc + 1] = NULL; + argv = new_argv; + } + } + else + { + /* Empty list */ + return EXIT_SUCCESS; + } + + if (!(file = fopen (name, "r"))) + { + fprintf (stderr, "Can't open \"%s\"\n", name); + return EXIT_FAILURE; + } + + if (fread (ei, 1, EI_NIDENT, file) != EI_NIDENT) + { + fprintf (stderr, "Error: input truncated\n"); + return EXIT_FAILURE; + } + + if (memcmp (ei, ELFMAG, SELFMAG) != 0) + { + fprintf (stderr, "Error: not ELF\n"); + return EXIT_FAILURE; + } + switch (ei[EI_DATA]) { + case ELFDATA2LSB: + data = "lsb"; + break; + case ELFDATA2MSB: + data = "msb"; + break; + default: + return EXIT_FAILURE; + } + switch (ei[EI_CLASS]) { + case ELFCLASS32: + class = "32"; + break; + case ELFCLASS64: + class = "64"; + break; + default: + return EXIT_FAILURE; + } + snprintf (prog, sizeof prog, "%s.real-%s-%s", argv[0], data, class); + + return execv (prog, argv); +} diff --git a/rules.d/scripts/mod/real-lsb-32/elfconfig.h b/rules.d/scripts/mod/real-lsb-32/elfconfig.h new file mode 100644 index 00000000000..1f7a7321aab --- /dev/null +++ b/rules.d/scripts/mod/real-lsb-32/elfconfig.h @@ -0,0 +1,4 @@ +#define KERNEL_ELFCLASS ELFCLASS32 +#define KERNEL_ELFDATA ELFDATA2LSB +#define MODULE_SYMBOL_PREFIX "" +#include "../elfconfig.h" diff --git a/rules.d/scripts/mod/real-lsb-32/types.h b/rules.d/scripts/mod/real-lsb-32/types.h new file mode 100644 index 00000000000..bad6dcccd90 --- /dev/null +++ b/rules.d/scripts/mod/real-lsb-32/types.h @@ -0,0 +1,3 @@ +#include "../types.h" +typedef __u32 kernel_ulong_t; +#define BITS_PER_LONG 32 diff --git a/rules.d/scripts/mod/real-lsb-64/elfconfig.h b/rules.d/scripts/mod/real-lsb-64/elfconfig.h new file mode 100644 index 00000000000..e6f519fcc8d --- /dev/null +++ b/rules.d/scripts/mod/real-lsb-64/elfconfig.h @@ -0,0 +1,4 @@ +#define KERNEL_ELFCLASS ELFCLASS64 +#define KERNEL_ELFDATA ELFDATA2LSB +#define MODULE_SYMBOL_PREFIX "" +#include "../elfconfig.h" diff --git a/rules.d/scripts/mod/real-lsb-64/types.h b/rules.d/scripts/mod/real-lsb-64/types.h new file mode 100644 index 00000000000..8d7b8759164 --- /dev/null +++ b/rules.d/scripts/mod/real-lsb-64/types.h @@ -0,0 +1,3 @@ +#include "../types.h" +typedef __u64 __attribute__((aligned(8))) kernel_ulong_t; +#define BITS_PER_LONG 64 diff --git a/rules.d/scripts/mod/real-msb-32/elfconfig.h b/rules.d/scripts/mod/real-msb-32/elfconfig.h new file mode 100644 index 00000000000..a9ae561aba8 --- /dev/null +++ b/rules.d/scripts/mod/real-msb-32/elfconfig.h @@ -0,0 +1,4 @@ +#define KERNEL_ELFCLASS ELFCLASS32 +#define KERNEL_ELFDATA ELFDATA2MSB +#define MODULE_SYMBOL_PREFIX "" +#include "../elfconfig.h" diff --git a/rules.d/scripts/mod/real-msb-32/types.h b/rules.d/scripts/mod/real-msb-32/types.h new file mode 100644 index 00000000000..bad6dcccd90 --- /dev/null +++ b/rules.d/scripts/mod/real-msb-32/types.h @@ -0,0 +1,3 @@ +#include "../types.h" +typedef __u32 kernel_ulong_t; +#define BITS_PER_LONG 32 diff --git a/rules.d/scripts/mod/real-msb-64/elfconfig.h b/rules.d/scripts/mod/real-msb-64/elfconfig.h new file mode 100644 index 00000000000..844d22f5c58 --- /dev/null +++ b/rules.d/scripts/mod/real-msb-64/elfconfig.h @@ -0,0 +1,4 @@ +#define KERNEL_ELFCLASS ELFCLASS64 +#define KERNEL_ELFDATA ELFDATA2MSB +#define MODULE_SYMBOL_PREFIX "" +#include "../elfconfig.h" diff --git a/rules.d/scripts/mod/real-msb-64/types.h b/rules.d/scripts/mod/real-msb-64/types.h new file mode 100644 index 00000000000..8d7b8759164 --- /dev/null +++ b/rules.d/scripts/mod/real-msb-64/types.h @@ -0,0 +1,3 @@ +#include "../types.h" +typedef __u64 __attribute__((aligned(8))) kernel_ulong_t; +#define BITS_PER_LONG 64 diff --git a/rules.d/scripts/mod/types.h b/rules.d/scripts/mod/types.h new file mode 100644 index 00000000000..aba3827f44c --- /dev/null +++ b/rules.d/scripts/mod/types.h @@ -0,0 +1,9 @@ +/* Minimal definitions for mod_devicetable.h and devicetable-offsets.c */ +typedef unsigned char __u8; +typedef unsigned short __u16; +typedef unsigned int __u32; +typedef unsigned long long __u64; +typedef struct { + __u8 b[16]; +} uuid_le; +#define offsetof(a,b) __builtin_offsetof(a,b) diff --git a/rules.d/tools/Makefile b/rules.d/tools/Makefile new file mode 100644 index 00000000000..3c7dba3844f --- /dev/null +++ b/rules.d/tools/Makefile @@ -0,0 +1,9 @@ +SUBDIRS = \ + hv \ + lib/lockdep \ + objtool \ + perf \ + power \ + usb/usbip + +include $(top_rulesdir)/Makefile.inc diff --git a/rules.d/tools/hv/Makefile b/rules.d/tools/hv/Makefile new file mode 100644 index 00000000000..3393517f50e --- /dev/null +++ b/rules.d/tools/hv/Makefile @@ -0,0 +1,22 @@ +ifeq ($(filter i386 amd64 x32,$(DEB_HOST_ARCH)),) + +# Build nothing +include $(top_rulesdir)/Makefile.inc + +else + +PROGS = \ + hv_fcopy_daemon \ + hv_kvp_daemon \ + hv_vss_daemon + +installdir = /usr/sbin + +include $(top_rulesdir)/Makefile.inc + +# Handle check-hyperv separately since it's installed in a different directory +all-local: check-hyperv +install-local: + install -D -m755 check-hyperv '$(DESTDIR)/lib/hyperv-daemons/check-hyperv' + +endif diff --git a/rules.d/tools/hv/check-hyperv.c b/rules.d/tools/hv/check-hyperv.c new file mode 100644 index 00000000000..4d2b6f515d0 --- /dev/null +++ b/rules.d/tools/hv/check-hyperv.c @@ -0,0 +1,103 @@ +/* + * This program is derived from systemd. + * + * Copyright 2011 Lennart Poettering + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 2.1 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; If not, see . + */ + +#include +#include +#include + +#define streq(a, b) (!strcmp(a, b)) +#define ELEMENTSOF(a) (sizeof(a) / sizeof((a)[0])) + +enum { + VIRTUALIZATION_NONE, + VIRTUALIZATION_VM_OTHER, + VIRTUALIZATION_MICROSOFT, +}; + +static int detect_vm_cpuid(void) { + + static const struct { + const char *cpuid; + int id; + } cpuid_vendor_table[] = { + /* http://msdn.microsoft.com/en-us/library/ff542428.aspx */ + { "Microsoft Hv", VIRTUALIZATION_MICROSOFT }, + }; + + uint32_t eax, ecx; + bool hypervisor; + + /* http://lwn.net/Articles/301888/ */ + +#if defined (__i386__) +#define REG_a "eax" +#define REG_b "ebx" +#elif defined (__amd64__) +#define REG_a "rax" +#define REG_b "rbx" +#endif + + /* First detect whether there is a hypervisor */ + eax = 1; + __asm__ __volatile__ ( + /* ebx/rbx is being used for PIC! */ + " push %%"REG_b" \n\t" + " cpuid \n\t" + " pop %%"REG_b" \n\t" + + : "=a" (eax), "=c" (ecx) + : "0" (eax) + ); + + hypervisor = !!(ecx & 0x80000000U); + + if (hypervisor) { + union { + uint32_t sig32[3]; + char text[13]; + } sig = {}; + unsigned j; + + /* There is a hypervisor, see what it is */ + eax = 0x40000000U; + __asm__ __volatile__ ( + /* ebx/rbx is being used for PIC! */ + " push %%"REG_b" \n\t" + " cpuid \n\t" + " mov %%ebx, %1 \n\t" + " pop %%"REG_b" \n\t" + + : "=a" (eax), "=r" (sig.sig32[0]), "=c" (sig.sig32[1]), "=d" (sig.sig32[2]) + : "0" (eax) + ); + + for (j = 0; j < ELEMENTSOF(cpuid_vendor_table); j ++) + if (streq(sig.text, cpuid_vendor_table[j].cpuid)) + return cpuid_vendor_table[j].id; + + return VIRTUALIZATION_VM_OTHER; + } + + return VIRTUALIZATION_NONE; +} + +int main(void) +{ + return detect_vm_cpuid() != VIRTUALIZATION_MICROSOFT; +} diff --git a/rules.d/tools/lib/lockdep/Makefile b/rules.d/tools/lib/lockdep/Makefile new file mode 100644 index 00000000000..47409087dd6 --- /dev/null +++ b/rules.d/tools/lib/lockdep/Makefile @@ -0,0 +1,23 @@ +include $(top_rulesdir)/Makefile.inc + +DEB_HOST_MULTIARCH := $(shell dpkg-architecture -qDEB_HOST_MULTIARCH) + +# Catch use of missing kernel APIs early +CFLAGS += -Werror=implicit-function-declaration + +MAKE_LOCKDEP := +$(MAKE) -C $(top_srcdir)/$(OUTDIR) O=$(CURDIR) V=1 \ + prefix=/usr libdir_relative=lib/$(DEB_HOST_MULTIARCH) \ + LIBLOCKDEP_VERSION=$(VERSION) \ + CONFIG_FLAGS='$(CFLAGS) $(filter -D%,$(CPPFLAGS))' LDFLAGS='$(LDFLAGS)' + +unexport CFLAGS + +all: + $(MAKE_LOCKDEP) + +install: + $(MAKE_LOCKDEP) install + mkdir -p $(DESTDIR)/usr/include + cp -R $(top_srcdir)/$(OUTDIR)/include/liblockdep $(DESTDIR)/usr/include/ + ln -s liblockdep.so.$(VERSION) \ + $(DESTDIR)/usr/lib/$(DEB_HOST_MULTIARCH)/liblockdep.so diff --git a/rules.d/tools/lib/lockdep/lockdep.in b/rules.d/tools/lib/lockdep/lockdep.in new file mode 100644 index 00000000000..4a0d03ac521 --- /dev/null +++ b/rules.d/tools/lib/lockdep/lockdep.in @@ -0,0 +1,2 @@ +#!/bin/sh +LD_PRELOAD="liblockdep.so.@VERSION@ $LD_PRELOAD" exec "$@" diff --git a/rules.d/tools/objtool/Makefile b/rules.d/tools/objtool/Makefile new file mode 100644 index 00000000000..532e5b79348 --- /dev/null +++ b/rules.d/tools/objtool/Makefile @@ -0,0 +1,9 @@ +include $(top_rulesdir)/Makefile.inc + +all: +# For now, only supported target architecture is x86. Later we'll need to build +# for multiple targets and add a wrapper, same as for modpost. + $(MAKE) -C $(top_srcdir)/tools/objtool O=$(CURDIR) ARCH=x86 + +install: + install -D -m755 objtool $(DESTDIR)/$(installdir)/objtool diff --git a/rules.d/tools/perf/Makefile b/rules.d/tools/perf/Makefile new file mode 100644 index 00000000000..ec0c9e97486 --- /dev/null +++ b/rules.d/tools/perf/Makefile @@ -0,0 +1,88 @@ +include $(top_rulesdir)/Makefile.inc + +ifeq ($(filter nopython,$(DEB_BUILD_PROFILES)),) + +DEB_HOST_ARCH_CPU := $(shell dpkg-architecture -qDEB_HOST_ARCH_CPU) + +ifeq ($(DEB_HOST_ARCH_CPU),alpha) + KERNEL_ARCH_PERF = alpha +else ifeq ($(DEB_HOST_ARCH_CPU),arm) + KERNEL_ARCH_PERF = arm +else ifeq ($(DEB_HOST_ARCH_CPU),arm64) + KERNEL_ARCH_PERF = arm64 +else ifneq ($(filter mips%,$(DEB_HOST_ARCH_CPU)),) + KERNEL_ARCH_PERF = mips +else ifeq ($(DEB_HOST_ARCH_CPU),hppa) + KERNEL_ARCH_PERF = parisc +else ifneq ($(filter powerpc% ppc%,$(DEB_HOST_ARCH_CPU)),) + KERNEL_ARCH_PERF = powerpc +else ifneq ($(filter s390%,$(DEB_HOST_ARCH_CPU)),) + KERNEL_ARCH_PERF = s390 +else ifeq ($(DEB_HOST_ARCH_CPU),sh4) + KERNEL_ARCH_PERF = sh +else ifneq ($(filter sparc%,$(DEB_HOST_ARCH_CPU)),) + KERNEL_ARCH_PERF = sparc +else ifneq ($(filter amd64 i386,$(DEB_HOST_ARCH_CPU)),) + # But x32 isn't supported yet + ifneq ($(shell dpkg-architecture -qDEB_HOST_ARCH),x32) + KERNEL_ARCH_PERF = x86 + endif +endif + +MAKE_PERF := $(MAKE) O=$(CURDIR) prefix=/usr V=1 ARCH=$(KERNEL_ARCH_PERF) EXTRA_WARNINGS=-Wno-error EXTRA_CFLAGS='$(CFLAGS) $(CPPFLAGS)' LDFLAGS='$(LDFLAGS)' + +# Disable Gtk UI until it's more usable +MAKE_PERF += NO_GTK2=1 + +# Include version in all directory names +MAKE_PERF += perfexecdir=lib/perf_$(VERSION)-core plugindir=/usr/lib/traceevent_$(VERSION)/plugins STRACE_GROUPS_DIR=share/perf_$(VERSION)-core/strace/groups tipdir=share/doc/linux-perf-$(VERSION) + +# perf can link against libbfd if available, but the result is +# undistributable as they are licenced under GPL v2 and v3+ +# respectively. Override detection of libbfd and insist that +# cplus_demangle() can be found in libiberty (LGPL v2.1+). +MAKE_PERF += feature-libbfd=0 HAVE_CPLUS_DEMANGLE_SUPPORT=1 + +# perf can link against libcrypto if available, but the result is +# undistributable as GPL v2 and OpenSSL are not compatible without +# an explicit exception. Override detection of libcrypto. +MAKE_PERF += NO_LIBCRYPTO=1 + +# Currently babeltrace support for `perf data' is not automatically detected. +MAKE_PERF += LIBBABELTRACE=1 + +all: +ifdef KERNEL_ARCH_PERF +# perf changes some default directories depending on whether DESTDIR is +# set. We must define it even when building to avoid a rebuild when we +# run 'make install'. + +$(MAKE_PERF) -C $(top_srcdir)/tools/perf -f Makefile.perf all VERSION=$(VERSION) DESTDIR=dummy +ifeq (,$(filter nodoc,$(DEB_BUILD_PROFILES))) + +$(MAKE_PERF) -C $(top_srcdir)/tools/perf/Documentation man VERSION=$(VERSION) +endif +# Check that perf didn't get linked against libbfd or libcrypto + type ldd + ! ldd $(CURDIR)/perf | grep -E '\blib(bfd|crypto)' +# Check that it includes cplus_demangle from libiberty + grep cplus_demangle $(CURDIR)/perf +endif + +install: +ifdef KERNEL_ARCH_PERF + +$(MAKE_PERF) -C $(top_srcdir)/tools/perf -f Makefile.perf install VERSION=$(VERSION) +# Don't install a 'trace' alias yet: +# - We need a wrapper for it anyway, so there's little point adding a +# versioned link +# - It doesn't work out-of-the-box as non-root (it depends on debugfs), +# so it's less widely useful than strace +# - 'perf trace' doesn't take much more typing + rm -f $(DESTDIR)/usr/bin/trace_$(VERSION) +endif + mkdir -p $(DESTDIR)/usr/share/bash-completion/ + mv $(DESTDIR)/etc/bash_completion.d \ + $(DESTDIR)/usr/share/bash-completion/completions + rmdir --ignore-fail-on-non-empty $(DESTDIR)/etc +# Check for unversioned files that are likely to result in file conflicts + ! find $(DESTDIR) -name '*perf*' \! -path '*[_-]$(VERSION)*' | grep . + +endif # !nopython diff --git a/rules.d/tools/power/Makefile b/rules.d/tools/power/Makefile new file mode 100644 index 00000000000..c3fcc42889d --- /dev/null +++ b/rules.d/tools/power/Makefile @@ -0,0 +1,8 @@ +SUBDIRS = \ + cpupower + +ifneq ($(filter i386 amd64 x32,$(DEB_HOST_ARCH)),) +SUBDIRS += x86 +endif + +include $(top_rulesdir)/Makefile.inc diff --git a/rules.d/tools/power/cpupower/Makefile b/rules.d/tools/power/cpupower/Makefile new file mode 100644 index 00000000000..d8339390622 --- /dev/null +++ b/rules.d/tools/power/cpupower/Makefile @@ -0,0 +1,23 @@ +include $(top_rulesdir)/Makefile.inc + +MAKE_CPUPOWER := $(shell dpkg-buildflags --export=cmdline) $(MAKE) O=$(CURDIR) CPUFREQ_BENCH=false V=true mandir=/usr/share/man + +MAKE_CPUPOWER += DEBUG=$(if $(findstring nostrip,$(DEB_BUILD_OPTIONS)),true,) + +MAKE_CPUPOWER += CROSS='$(CROSS_COMPILE)' + +MAKE_CPUPOWER += PACKAGE_BUGREPORT='Debian\ \(reportbug\ linux-cpupower\)' + +MAKE_CPUPOWER += libdir=/usr/lib/$(DEB_HOST_MULTIARCH) + +all: + $(MAKE_CPUPOWER) -C $(top_srcdir)/tools/power/cpupower + +install: + $(MAKE_CPUPOWER) -C $(top_srcdir)/tools/power/cpupower install DESTDIR=$(DESTDIR) +ifneq (,$(filter nodoc,$(DEB_BUILD_PROFILES))) + rm -rf $(DESTDIR)/usr/share/man +endif + +clean: + $(MAKE_CPUPOWER) -C $(top_srcdir)/tools/power/cpupower clean diff --git a/rules.d/tools/power/x86/Makefile b/rules.d/tools/power/x86/Makefile new file mode 100644 index 00000000000..2b9d7735c70 --- /dev/null +++ b/rules.d/tools/power/x86/Makefile @@ -0,0 +1,5 @@ +SUBDIRS = \ + turbostat \ + x86_energy_perf_policy + +include $(top_rulesdir)/Makefile.inc diff --git a/rules.d/tools/power/x86/turbostat/Makefile b/rules.d/tools/power/x86/turbostat/Makefile new file mode 100644 index 00000000000..0e5a2a0eceb --- /dev/null +++ b/rules.d/tools/power/x86/turbostat/Makefile @@ -0,0 +1,7 @@ +PROGS = turbostat + +installdir = /usr/sbin + +include $(top_rulesdir)/Makefile.inc + +CPPFLAGS += -DMSRHEADER='"$(top_srcdir)/arch/x86/include/asm/msr-index.h"' -DINTEL_FAMILY_HEADER='"$(top_srcdir)/arch/x86/include/asm/intel-family.h"' diff --git a/rules.d/tools/power/x86/x86_energy_perf_policy/Makefile b/rules.d/tools/power/x86/x86_energy_perf_policy/Makefile new file mode 100644 index 00000000000..0011ca9458c --- /dev/null +++ b/rules.d/tools/power/x86/x86_energy_perf_policy/Makefile @@ -0,0 +1,7 @@ +PROGS = x86_energy_perf_policy + +installdir = /usr/sbin + +include $(top_rulesdir)/Makefile.inc + +CPPFLAGS += -DMSRHEADER='"$(top_srcdir)/arch/x86/include/asm/msr-index.h"' diff --git a/rules.d/tools/usb/usbip/Makefile b/rules.d/tools/usb/usbip/Makefile new file mode 100644 index 00000000000..896a8142c80 --- /dev/null +++ b/rules.d/tools/usb/usbip/Makefile @@ -0,0 +1,31 @@ +srcdir := $(top_srcdir)/tools/usb/usbip + +# Make sure we don't override top_srcdir in the sub-make. 'unexport +# top_srcdir' is *not* sufficient; nor is adding 'MAKEFLAGS=' to the +# sub-make command line. +unexport MAKEFLAGS + +all: export CFLAGS := $(shell dpkg-buildflags --get CFLAGS) +all: export CPPFLAGS := $(shell dpkg-buildflags --get CFLAGS) \ + -isystem $(top_srcdir)/debian/build/build-tools/include +all: export LDFLAGS := $(shell dpkg-buildflags --get LDFLAGS) +all: + rsync -a $(srcdir)/ . + ./autogen.sh + ./configure \ + --prefix=/usr \ + --with-tcp-wrappers \ + --with-usbids-dir=/usr/share/misc \ + --disable-shared \ + --disable-static \ + --host=$(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) + $(MAKE) + +install: + $(MAKE) install +ifneq (,$(filter nodoc,$(DEB_BUILD_PROFILES))) + rm -rf $(DESTDIR)/usr/share/man +endif + +clean: + rm -rf * diff --git a/rules.defs b/rules.defs new file mode 100644 index 00000000000..1990ae9a1e5 --- /dev/null +++ b/rules.defs @@ -0,0 +1,6 @@ +include /usr/share/dpkg/default.mk + +BUILD_DIR = debian/build +STAMPS_DIR = debian/stamps + +-include debian/rules.defs.local diff --git a/rules.gen b/rules.gen new file mode 100644 index 00000000000..1063febb72e --- /dev/null +++ b/rules.gen @@ -0,0 +1,941 @@ +.NOTPARALLEL: +binary-arch: binary-arch_alpha binary-arch_amd64 binary-arch_arm64 binary-arch_arm64ilp32 binary-arch_armel binary-arch_armhf binary-arch_hppa binary-arch_i386 binary-arch_m68k binary-arch_mips binary-arch_mips64 binary-arch_mips64el binary-arch_mips64r6 binary-arch_mips64r6el binary-arch_mipsel binary-arch_mipsn32 binary-arch_mipsn32el binary-arch_mipsn32r6 binary-arch_mipsn32r6el binary-arch_mipsr6 binary-arch_mipsr6el binary-arch_powerpc binary-arch_powerpcspe binary-arch_ppc64 binary-arch_ppc64el binary-arch_s390 binary-arch_s390x binary-arch_sh3 binary-arch_sh4 binary-arch_sparc binary-arch_sparc64 binary-arch_tilegx binary-arch_x32 +binary-arch_alpha:: binary-arch_alpha_none binary-arch_alpha_real +binary-arch_alpha:: + $(MAKE) -f debian/rules.real install-udeb_alpha ABINAME='4.15.0-2' ARCH='alpha' KERNEL_ARCH='alpha' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' PACKAGE_NAMES='kernel-image-4.15.0-2-alpha-generic-di nic-modules-4.15.0-2-alpha-generic-di nic-wireless-modules-4.15.0-2-alpha-generic-di nic-shared-modules-4.15.0-2-alpha-generic-di serial-modules-4.15.0-2-alpha-generic-di usb-serial-modules-4.15.0-2-alpha-generic-di ppp-modules-4.15.0-2-alpha-generic-di pata-modules-4.15.0-2-alpha-generic-di cdrom-core-modules-4.15.0-2-alpha-generic-di scsi-core-modules-4.15.0-2-alpha-generic-di scsi-modules-4.15.0-2-alpha-generic-di loop-modules-4.15.0-2-alpha-generic-di btrfs-modules-4.15.0-2-alpha-generic-di ext4-modules-4.15.0-2-alpha-generic-di isofs-modules-4.15.0-2-alpha-generic-di jfs-modules-4.15.0-2-alpha-generic-di xfs-modules-4.15.0-2-alpha-generic-di fat-modules-4.15.0-2-alpha-generic-di md-modules-4.15.0-2-alpha-generic-di multipath-modules-4.15.0-2-alpha-generic-di usb-modules-4.15.0-2-alpha-generic-di usb-storage-modules-4.15.0-2-alpha-generic-di input-modules-4.15.0-2-alpha-generic-di event-modules-4.15.0-2-alpha-generic-di mouse-modules-4.15.0-2-alpha-generic-di nic-pcmcia-modules-4.15.0-2-alpha-generic-di pcmcia-modules-4.15.0-2-alpha-generic-di nic-usb-modules-4.15.0-2-alpha-generic-di sata-modules-4.15.0-2-alpha-generic-di i2c-modules-4.15.0-2-alpha-generic-di crc-modules-4.15.0-2-alpha-generic-di crypto-modules-4.15.0-2-alpha-generic-di crypto-dm-modules-4.15.0-2-alpha-generic-di ata-modules-4.15.0-2-alpha-generic-di nbd-modules-4.15.0-2-alpha-generic-di squashfs-modules-4.15.0-2-alpha-generic-di virtio-modules-4.15.0-2-alpha-generic-di zlib-modules-4.15.0-2-alpha-generic-di fuse-modules-4.15.0-2-alpha-generic-di srm-modules-4.15.0-2-alpha-generic-di' UDEB_UNSIGNED_TEST_BUILD=False +binary-arch_alpha_none: binary-arch_alpha_none_alpha-generic binary-arch_alpha_none_alpha-smp binary-arch_alpha_none_real +binary-arch_alpha_none_alpha-generic: binary-arch_alpha_none_alpha-generic_real +binary-arch_alpha_none_alpha-generic_real:: + $(MAKE) -f debian/rules.real binary-arch-flavour ABINAME='4.15.0-2' ARCH='alpha' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='alpha-generic' IMAGE_FILE='arch/alpha/boot/vmlinux.gz' IMAGE_INSTALL_STEM='vmlinuz' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-alpha-generic' KCONFIG='debian/config/config debian/config/alpha/config debian/config/alpha/config.alpha-generic' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='alpha' LOCALVERSION='-alpha-generic' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-alpha-generic' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-arch_alpha_none_alpha-smp: binary-arch_alpha_none_alpha-smp_real +binary-arch_alpha_none_alpha-smp_real:: + $(MAKE) -f debian/rules.real binary-arch-flavour ABINAME='4.15.0-2' ARCH='alpha' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='alpha-smp' IMAGE_FILE='arch/alpha/boot/vmlinux.gz' IMAGE_INSTALL_STEM='vmlinuz' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-alpha-smp' KCONFIG='debian/config/config debian/config/alpha/config debian/config/alpha/config.alpha-smp' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='alpha' LOCALVERSION='-alpha-smp' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-alpha-smp' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-arch_alpha_none_real: +binary-arch_alpha_real:: + $(MAKE) -f debian/rules.real binary-arch-arch ABINAME='4.15.0-2' ARCH='alpha' KERNEL_ARCH='alpha' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-arch_amd64:: binary-arch_amd64_extra binary-arch_amd64_none binary-arch_amd64_real +binary-arch_amd64:: + $(MAKE) -f debian/rules.real install-udeb_amd64 ABINAME='4.15.0-2' ARCH='amd64' KERNEL_ARCH='x86' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' PACKAGE_NAMES='kernel-image-4.15.0-2-amd64-di nic-modules-4.15.0-2-amd64-di nic-wireless-modules-4.15.0-2-amd64-di nic-shared-modules-4.15.0-2-amd64-di serial-modules-4.15.0-2-amd64-di usb-serial-modules-4.15.0-2-amd64-di ppp-modules-4.15.0-2-amd64-di pata-modules-4.15.0-2-amd64-di cdrom-core-modules-4.15.0-2-amd64-di firewire-core-modules-4.15.0-2-amd64-di scsi-core-modules-4.15.0-2-amd64-di scsi-modules-4.15.0-2-amd64-di loop-modules-4.15.0-2-amd64-di btrfs-modules-4.15.0-2-amd64-di ext4-modules-4.15.0-2-amd64-di isofs-modules-4.15.0-2-amd64-di jfs-modules-4.15.0-2-amd64-di ntfs-modules-4.15.0-2-amd64-di xfs-modules-4.15.0-2-amd64-di fat-modules-4.15.0-2-amd64-di md-modules-4.15.0-2-amd64-di multipath-modules-4.15.0-2-amd64-di usb-modules-4.15.0-2-amd64-di usb-storage-modules-4.15.0-2-amd64-di pcmcia-storage-modules-4.15.0-2-amd64-di fb-modules-4.15.0-2-amd64-di input-modules-4.15.0-2-amd64-di event-modules-4.15.0-2-amd64-di mouse-modules-4.15.0-2-amd64-di nic-pcmcia-modules-4.15.0-2-amd64-di pcmcia-modules-4.15.0-2-amd64-di nic-usb-modules-4.15.0-2-amd64-di sata-modules-4.15.0-2-amd64-di acpi-modules-4.15.0-2-amd64-di i2c-modules-4.15.0-2-amd64-di crc-modules-4.15.0-2-amd64-di crypto-modules-4.15.0-2-amd64-di crypto-dm-modules-4.15.0-2-amd64-di efi-modules-4.15.0-2-amd64-di ata-modules-4.15.0-2-amd64-di mmc-core-modules-4.15.0-2-amd64-di mmc-modules-4.15.0-2-amd64-di nbd-modules-4.15.0-2-amd64-di squashfs-modules-4.15.0-2-amd64-di speakup-modules-4.15.0-2-amd64-di virtio-modules-4.15.0-2-amd64-di uinput-modules-4.15.0-2-amd64-di sound-modules-4.15.0-2-amd64-di hyperv-modules-4.15.0-2-amd64-di udf-modules-4.15.0-2-amd64-di fuse-modules-4.15.0-2-amd64-di' UDEB_UNSIGNED_TEST_BUILD=False +binary-arch_amd64_extra:: + $(MAKE) -f debian/rules.real install-dummy ARCH='amd64' DH_OPTIONS='-plinux-compiler-gcc-7-x86' +binary-arch_amd64_none: binary-arch_amd64_none_amd64 binary-arch_amd64_none_cloud-amd64 binary-arch_amd64_none_real +binary-arch_amd64_none_amd64: binary-arch_amd64_none_amd64_real +binary-arch_amd64_none_amd64_real:: + $(MAKE) -f debian/rules.real binary-arch-flavour ABINAME='4.15.0-2' ARCH='amd64' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='amd64' IMAGE_FILE='arch/x86/boot/bzImage' IMAGE_INSTALL_STEM='vmlinuz' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-amd64' KCONFIG='debian/config/config debian/config/kernelarch-x86/config debian/config/amd64/config' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='x86' LOCALVERSION='-amd64' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-amd64' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VDSO='True' VERSION='4.15' +binary-arch_amd64_none_cloud-amd64: binary-arch_amd64_none_cloud-amd64_real +binary-arch_amd64_none_cloud-amd64_real:: + $(MAKE) -f debian/rules.real binary-arch-flavour ABINAME='4.15.0-2' ARCH='amd64' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='cloud-amd64' IMAGE_FILE='arch/x86/boot/bzImage' IMAGE_INSTALL_STEM='vmlinuz' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-cloud-amd64' KCONFIG='debian/config/config debian/config/kernelarch-x86/config debian/config/amd64/config debian/config/amd64/config.cloud-amd64' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='x86' LOCALVERSION='-cloud-amd64' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-cloud-amd64' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VDSO='True' VERSION='4.15' +binary-arch_amd64_none_real: +binary-arch_amd64_real:: + $(MAKE) -f debian/rules.real binary-arch-arch ABINAME='4.15.0-2' ARCH='amd64' KERNEL_ARCH='x86' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-arch_arm64:: binary-arch_arm64_none binary-arch_arm64_real +binary-arch_arm64:: + $(MAKE) -f debian/rules.real install-udeb_arm64 ABINAME='4.15.0-2' ARCH='arm64' KERNEL_ARCH='arm64' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' PACKAGE_NAMES='kernel-image-4.15.0-2-arm64-di nic-modules-4.15.0-2-arm64-di nic-wireless-modules-4.15.0-2-arm64-di nic-shared-modules-4.15.0-2-arm64-di ppp-modules-4.15.0-2-arm64-di cdrom-core-modules-4.15.0-2-arm64-di scsi-core-modules-4.15.0-2-arm64-di scsi-modules-4.15.0-2-arm64-di loop-modules-4.15.0-2-arm64-di btrfs-modules-4.15.0-2-arm64-di ext4-modules-4.15.0-2-arm64-di isofs-modules-4.15.0-2-arm64-di jfs-modules-4.15.0-2-arm64-di xfs-modules-4.15.0-2-arm64-di fat-modules-4.15.0-2-arm64-di md-modules-4.15.0-2-arm64-di multipath-modules-4.15.0-2-arm64-di usb-modules-4.15.0-2-arm64-di usb-storage-modules-4.15.0-2-arm64-di fb-modules-4.15.0-2-arm64-di input-modules-4.15.0-2-arm64-di event-modules-4.15.0-2-arm64-di nic-usb-modules-4.15.0-2-arm64-di sata-modules-4.15.0-2-arm64-di i2c-modules-4.15.0-2-arm64-di crc-modules-4.15.0-2-arm64-di crypto-modules-4.15.0-2-arm64-di crypto-dm-modules-4.15.0-2-arm64-di efi-modules-4.15.0-2-arm64-di ata-modules-4.15.0-2-arm64-di mmc-modules-4.15.0-2-arm64-di nbd-modules-4.15.0-2-arm64-di squashfs-modules-4.15.0-2-arm64-di virtio-modules-4.15.0-2-arm64-di uinput-modules-4.15.0-2-arm64-di leds-modules-4.15.0-2-arm64-di udf-modules-4.15.0-2-arm64-di fuse-modules-4.15.0-2-arm64-di' UDEB_UNSIGNED_TEST_BUILD=False +binary-arch_arm64_none: binary-arch_arm64_none_arm64 binary-arch_arm64_none_real +binary-arch_arm64_none_arm64: binary-arch_arm64_none_arm64_real +binary-arch_arm64_none_arm64_real:: + $(MAKE) -f debian/rules.real binary-arch-flavour ABINAME='4.15.0-2' ARCH='arm64' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='arm64' IMAGE_FILE='arch/arm64/boot/Image' IMAGE_INSTALL_STEM='vmlinuz' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-arm64' KCONFIG='debian/config/config debian/config/arm64/config' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='arm64' LOCALVERSION='-arm64' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-arm64' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VDSO='True' VERSION='4.15' +binary-arch_arm64_none_real: +binary-arch_arm64_real:: + $(MAKE) -f debian/rules.real binary-arch-arch ABINAME='4.15.0-2' ARCH='arm64' KERNEL_ARCH='arm64' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-arch_arm64ilp32: binary-arch_arm64ilp32_real +binary-arch_arm64ilp32_real:: + $(MAKE) -f debian/rules.real binary-arch-arch ABINAME='4.15.0-2' ARCH='arm64ilp32' DO_HEADERS_ALL='False' KERNEL_ARCH='arm64' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-arch_armel: binary-arch_armel_extra binary-arch_armel_real +binary-arch_armel_extra:: + $(MAKE) -f debian/rules.real install-dummy ARCH='armel' DH_OPTIONS='-plinux-compiler-gcc-7-arm' +binary-arch_armel_real:: + $(MAKE) -f debian/rules.real binary-arch-arch ABINAME='4.15.0-2' ARCH='armel' DO_HEADERS_ALL='False' KERNEL_ARCH='arm' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-arch_armhf:: binary-arch_armhf_extra binary-arch_armhf_none binary-arch_armhf_real +binary-arch_armhf:: + $(MAKE) -f debian/rules.real install-udeb_armhf ABINAME='4.15.0-2' ARCH='armhf' KERNEL_ARCH='arm' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' PACKAGE_NAMES='kernel-image-4.15.0-2-armmp-di nic-modules-4.15.0-2-armmp-di nic-wireless-modules-4.15.0-2-armmp-di nic-shared-modules-4.15.0-2-armmp-di ppp-modules-4.15.0-2-armmp-di pata-modules-4.15.0-2-armmp-di scsi-core-modules-4.15.0-2-armmp-di scsi-modules-4.15.0-2-armmp-di loop-modules-4.15.0-2-armmp-di btrfs-modules-4.15.0-2-armmp-di ext4-modules-4.15.0-2-armmp-di isofs-modules-4.15.0-2-armmp-di jfs-modules-4.15.0-2-armmp-di fat-modules-4.15.0-2-armmp-di md-modules-4.15.0-2-armmp-di multipath-modules-4.15.0-2-armmp-di usb-modules-4.15.0-2-armmp-di usb-storage-modules-4.15.0-2-armmp-di fb-modules-4.15.0-2-armmp-di input-modules-4.15.0-2-armmp-di event-modules-4.15.0-2-armmp-di nic-usb-modules-4.15.0-2-armmp-di sata-modules-4.15.0-2-armmp-di i2c-modules-4.15.0-2-armmp-di crc-modules-4.15.0-2-armmp-di crypto-modules-4.15.0-2-armmp-di crypto-dm-modules-4.15.0-2-armmp-di efi-modules-4.15.0-2-armmp-di ata-modules-4.15.0-2-armmp-di mmc-modules-4.15.0-2-armmp-di nbd-modules-4.15.0-2-armmp-di squashfs-modules-4.15.0-2-armmp-di virtio-modules-4.15.0-2-armmp-di uinput-modules-4.15.0-2-armmp-di zlib-modules-4.15.0-2-armmp-di leds-modules-4.15.0-2-armmp-di udf-modules-4.15.0-2-armmp-di fuse-modules-4.15.0-2-armmp-di mtd-modules-4.15.0-2-armmp-di' UDEB_UNSIGNED_TEST_BUILD=False +binary-arch_armhf_extra:: + $(MAKE) -f debian/rules.real install-dummy ARCH='armhf' DH_OPTIONS='-plinux-compiler-gcc-7-arm' +binary-arch_armhf_none: binary-arch_armhf_none_armmp binary-arch_armhf_none_armmp-lpae binary-arch_armhf_none_real +binary-arch_armhf_none_armmp: binary-arch_armhf_none_armmp_real +binary-arch_armhf_none_armmp-lpae: binary-arch_armhf_none_armmp-lpae_real +binary-arch_armhf_none_armmp-lpae_real:: + $(MAKE) -f debian/rules.real binary-arch-flavour ABINAME='4.15.0-2' ARCH='armhf' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='armmp-lpae' IMAGE_FILE='arch/arm/boot/zImage' IMAGE_INSTALL_STEM='vmlinuz' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-armmp-lpae' KCONFIG='debian/config/config debian/config/kernelarch-arm/config debian/config/armhf/config debian/config/armhf/config.armmp-lpae' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='arm' LOCALVERSION='-armmp-lpae' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-armmp-lpae' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VDSO='True' VERSION='4.15' +binary-arch_armhf_none_armmp_real:: + $(MAKE) -f debian/rules.real binary-arch-flavour ABINAME='4.15.0-2' ARCH='armhf' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='armmp' IMAGE_FILE='arch/arm/boot/zImage' IMAGE_INSTALL_STEM='vmlinuz' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-armmp' KCONFIG='debian/config/config debian/config/kernelarch-arm/config debian/config/armhf/config' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='arm' LOCALVERSION='-armmp' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-armmp' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VDSO='True' VERSION='4.15' +binary-arch_armhf_none_real: +binary-arch_armhf_real:: + $(MAKE) -f debian/rules.real binary-arch-arch ABINAME='4.15.0-2' ARCH='armhf' KERNEL_ARCH='arm' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-arch_hppa:: binary-arch_hppa_none binary-arch_hppa_real +binary-arch_hppa:: + $(MAKE) -f debian/rules.real install-udeb_hppa ABINAME='4.15.0-2' ARCH='hppa' KERNEL_ARCH='parisc' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' PACKAGE_NAMES='kernel-image-4.15.0-2-parisc-di nic-modules-4.15.0-2-parisc-di nic-shared-modules-4.15.0-2-parisc-di serial-modules-4.15.0-2-parisc-di usb-serial-modules-4.15.0-2-parisc-di ppp-modules-4.15.0-2-parisc-di pata-modules-4.15.0-2-parisc-di cdrom-core-modules-4.15.0-2-parisc-di scsi-core-modules-4.15.0-2-parisc-di scsi-modules-4.15.0-2-parisc-di loop-modules-4.15.0-2-parisc-di btrfs-modules-4.15.0-2-parisc-di ext4-modules-4.15.0-2-parisc-di isofs-modules-4.15.0-2-parisc-di jfs-modules-4.15.0-2-parisc-di xfs-modules-4.15.0-2-parisc-di fat-modules-4.15.0-2-parisc-di md-modules-4.15.0-2-parisc-di multipath-modules-4.15.0-2-parisc-di usb-modules-4.15.0-2-parisc-di usb-storage-modules-4.15.0-2-parisc-di input-modules-4.15.0-2-parisc-di event-modules-4.15.0-2-parisc-di mouse-modules-4.15.0-2-parisc-di nic-usb-modules-4.15.0-2-parisc-di sata-modules-4.15.0-2-parisc-di crc-modules-4.15.0-2-parisc-di crypto-modules-4.15.0-2-parisc-di crypto-dm-modules-4.15.0-2-parisc-di ata-modules-4.15.0-2-parisc-di nbd-modules-4.15.0-2-parisc-di squashfs-modules-4.15.0-2-parisc-di virtio-modules-4.15.0-2-parisc-di zlib-modules-4.15.0-2-parisc-di fuse-modules-4.15.0-2-parisc-di kernel-image-4.15.0-2-parisc64-smp-di nic-modules-4.15.0-2-parisc64-smp-di nic-shared-modules-4.15.0-2-parisc64-smp-di serial-modules-4.15.0-2-parisc64-smp-di usb-serial-modules-4.15.0-2-parisc64-smp-di ppp-modules-4.15.0-2-parisc64-smp-di pata-modules-4.15.0-2-parisc64-smp-di cdrom-core-modules-4.15.0-2-parisc64-smp-di scsi-core-modules-4.15.0-2-parisc64-smp-di scsi-modules-4.15.0-2-parisc64-smp-di loop-modules-4.15.0-2-parisc64-smp-di btrfs-modules-4.15.0-2-parisc64-smp-di ext4-modules-4.15.0-2-parisc64-smp-di isofs-modules-4.15.0-2-parisc64-smp-di jfs-modules-4.15.0-2-parisc64-smp-di xfs-modules-4.15.0-2-parisc64-smp-di fat-modules-4.15.0-2-parisc64-smp-di md-modules-4.15.0-2-parisc64-smp-di multipath-modules-4.15.0-2-parisc64-smp-di usb-modules-4.15.0-2-parisc64-smp-di usb-storage-modules-4.15.0-2-parisc64-smp-di fb-modules-4.15.0-2-parisc64-smp-di input-modules-4.15.0-2-parisc64-smp-di event-modules-4.15.0-2-parisc64-smp-di mouse-modules-4.15.0-2-parisc64-smp-di nic-usb-modules-4.15.0-2-parisc64-smp-di sata-modules-4.15.0-2-parisc64-smp-di crc-modules-4.15.0-2-parisc64-smp-di crypto-modules-4.15.0-2-parisc64-smp-di crypto-dm-modules-4.15.0-2-parisc64-smp-di ata-modules-4.15.0-2-parisc64-smp-di nbd-modules-4.15.0-2-parisc64-smp-di squashfs-modules-4.15.0-2-parisc64-smp-di virtio-modules-4.15.0-2-parisc64-smp-di zlib-modules-4.15.0-2-parisc64-smp-di fuse-modules-4.15.0-2-parisc64-smp-di' UDEB_UNSIGNED_TEST_BUILD=False +binary-arch_hppa_none: binary-arch_hppa_none_parisc binary-arch_hppa_none_parisc64-smp binary-arch_hppa_none_real +binary-arch_hppa_none_parisc: binary-arch_hppa_none_parisc_real +binary-arch_hppa_none_parisc64-smp: binary-arch_hppa_none_parisc64-smp_real +binary-arch_hppa_none_parisc64-smp_real:: + $(MAKE) -f debian/rules.real binary-arch-flavour ABINAME='4.15.0-2' ARCH='hppa' CFLAGS_KERNEL='-fno-cse-follow-jumps' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='parisc64-smp' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-parisc64-smp' KCONFIG='debian/config/config debian/config/hppa/config debian/config/hppa/config.parisc64-smp' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='parisc' LOCALVERSION='-parisc64-smp' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-parisc64-smp' OVERRIDE_HOST_TYPE='hppa64-linux-gnu' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-arch_hppa_none_parisc_real:: + $(MAKE) -f debian/rules.real binary-arch-flavour ABINAME='4.15.0-2' ARCH='hppa' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='parisc' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-parisc' KCONFIG='debian/config/config debian/config/hppa/config debian/config/hppa/config.parisc' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='parisc' LOCALVERSION='-parisc' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-parisc' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-arch_hppa_none_real: +binary-arch_hppa_real:: + $(MAKE) -f debian/rules.real binary-arch-arch ABINAME='4.15.0-2' ARCH='hppa' KERNEL_ARCH='parisc' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-arch_i386:: binary-arch_i386_extra binary-arch_i386_none binary-arch_i386_real +binary-arch_i386:: + $(MAKE) -f debian/rules.real install-udeb_i386 ABINAME='4.15.0-2' ARCH='i386' KERNEL_ARCH='x86' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' PACKAGE_NAMES='kernel-image-4.15.0-2-686-di nic-modules-4.15.0-2-686-di nic-wireless-modules-4.15.0-2-686-di nic-shared-modules-4.15.0-2-686-di serial-modules-4.15.0-2-686-di usb-serial-modules-4.15.0-2-686-di ppp-modules-4.15.0-2-686-di pata-modules-4.15.0-2-686-di cdrom-core-modules-4.15.0-2-686-di firewire-core-modules-4.15.0-2-686-di scsi-core-modules-4.15.0-2-686-di scsi-modules-4.15.0-2-686-di loop-modules-4.15.0-2-686-di btrfs-modules-4.15.0-2-686-di ext4-modules-4.15.0-2-686-di isofs-modules-4.15.0-2-686-di jfs-modules-4.15.0-2-686-di ntfs-modules-4.15.0-2-686-di xfs-modules-4.15.0-2-686-di fat-modules-4.15.0-2-686-di md-modules-4.15.0-2-686-di multipath-modules-4.15.0-2-686-di usb-modules-4.15.0-2-686-di usb-storage-modules-4.15.0-2-686-di pcmcia-storage-modules-4.15.0-2-686-di fb-modules-4.15.0-2-686-di input-modules-4.15.0-2-686-di event-modules-4.15.0-2-686-di mouse-modules-4.15.0-2-686-di nic-pcmcia-modules-4.15.0-2-686-di pcmcia-modules-4.15.0-2-686-di nic-usb-modules-4.15.0-2-686-di sata-modules-4.15.0-2-686-di acpi-modules-4.15.0-2-686-di i2c-modules-4.15.0-2-686-di crc-modules-4.15.0-2-686-di crypto-modules-4.15.0-2-686-di crypto-dm-modules-4.15.0-2-686-di efi-modules-4.15.0-2-686-di ata-modules-4.15.0-2-686-di mmc-core-modules-4.15.0-2-686-di mmc-modules-4.15.0-2-686-di nbd-modules-4.15.0-2-686-di squashfs-modules-4.15.0-2-686-di speakup-modules-4.15.0-2-686-di virtio-modules-4.15.0-2-686-di uinput-modules-4.15.0-2-686-di sound-modules-4.15.0-2-686-di hyperv-modules-4.15.0-2-686-di udf-modules-4.15.0-2-686-di fuse-modules-4.15.0-2-686-di kernel-image-4.15.0-2-686-pae-di nic-modules-4.15.0-2-686-pae-di nic-wireless-modules-4.15.0-2-686-pae-di nic-shared-modules-4.15.0-2-686-pae-di serial-modules-4.15.0-2-686-pae-di usb-serial-modules-4.15.0-2-686-pae-di ppp-modules-4.15.0-2-686-pae-di pata-modules-4.15.0-2-686-pae-di cdrom-core-modules-4.15.0-2-686-pae-di firewire-core-modules-4.15.0-2-686-pae-di scsi-core-modules-4.15.0-2-686-pae-di scsi-modules-4.15.0-2-686-pae-di loop-modules-4.15.0-2-686-pae-di btrfs-modules-4.15.0-2-686-pae-di ext4-modules-4.15.0-2-686-pae-di isofs-modules-4.15.0-2-686-pae-di jfs-modules-4.15.0-2-686-pae-di ntfs-modules-4.15.0-2-686-pae-di xfs-modules-4.15.0-2-686-pae-di fat-modules-4.15.0-2-686-pae-di md-modules-4.15.0-2-686-pae-di multipath-modules-4.15.0-2-686-pae-di usb-modules-4.15.0-2-686-pae-di usb-storage-modules-4.15.0-2-686-pae-di pcmcia-storage-modules-4.15.0-2-686-pae-di fb-modules-4.15.0-2-686-pae-di input-modules-4.15.0-2-686-pae-di event-modules-4.15.0-2-686-pae-di mouse-modules-4.15.0-2-686-pae-di nic-pcmcia-modules-4.15.0-2-686-pae-di pcmcia-modules-4.15.0-2-686-pae-di nic-usb-modules-4.15.0-2-686-pae-di sata-modules-4.15.0-2-686-pae-di acpi-modules-4.15.0-2-686-pae-di i2c-modules-4.15.0-2-686-pae-di crc-modules-4.15.0-2-686-pae-di crypto-modules-4.15.0-2-686-pae-di crypto-dm-modules-4.15.0-2-686-pae-di efi-modules-4.15.0-2-686-pae-di ata-modules-4.15.0-2-686-pae-di mmc-core-modules-4.15.0-2-686-pae-di mmc-modules-4.15.0-2-686-pae-di nbd-modules-4.15.0-2-686-pae-di squashfs-modules-4.15.0-2-686-pae-di speakup-modules-4.15.0-2-686-pae-di virtio-modules-4.15.0-2-686-pae-di uinput-modules-4.15.0-2-686-pae-di sound-modules-4.15.0-2-686-pae-di hyperv-modules-4.15.0-2-686-pae-di udf-modules-4.15.0-2-686-pae-di fuse-modules-4.15.0-2-686-pae-di' UDEB_UNSIGNED_TEST_BUILD=False +binary-arch_i386_extra:: + $(MAKE) -f debian/rules.real install-dummy ARCH='i386' DH_OPTIONS='-plinux-compiler-gcc-7-x86' +binary-arch_i386_none: binary-arch_i386_none_686 binary-arch_i386_none_686-pae binary-arch_i386_none_real +binary-arch_i386_none_686: binary-arch_i386_none_686_real +binary-arch_i386_none_686-pae: binary-arch_i386_none_686-pae_real +binary-arch_i386_none_686-pae_real:: + $(MAKE) -f debian/rules.real binary-arch-flavour ABINAME='4.15.0-2' ARCH='i386' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='686-pae' IMAGE_FILE='arch/x86/boot/bzImage' IMAGE_INSTALL_STEM='vmlinuz' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-686-pae' KCONFIG='debian/config/config debian/config/kernelarch-x86/config debian/config/i386/config debian/config/i386/config.686-pae' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='x86' LOCALVERSION='-686-pae' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-686-pae' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VDSO='True' VERSION='4.15' +binary-arch_i386_none_686_real:: + $(MAKE) -f debian/rules.real binary-arch-flavour ABINAME='4.15.0-2' ARCH='i386' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='686' IMAGE_FILE='arch/x86/boot/bzImage' IMAGE_INSTALL_STEM='vmlinuz' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-686' KCONFIG='debian/config/config debian/config/kernelarch-x86/config debian/config/i386/config debian/config/i386/config.686' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='x86' LOCALVERSION='-686' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-686' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VDSO='True' VERSION='4.15' +binary-arch_i386_none_real: +binary-arch_i386_real:: + $(MAKE) -f debian/rules.real binary-arch-arch ABINAME='4.15.0-2' ARCH='i386' KERNEL_ARCH='x86' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-arch_m68k:: binary-arch_m68k_none binary-arch_m68k_real +binary-arch_m68k:: + $(MAKE) -f debian/rules.real install-udeb_m68k ABINAME='4.15.0-2' ARCH='m68k' KERNEL_ARCH='m68k' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' PACKAGE_NAMES='kernel-image-4.15.0-2-m68k-di nic-modules-4.15.0-2-m68k-di nic-shared-modules-4.15.0-2-m68k-di ppp-modules-4.15.0-2-m68k-di pata-modules-4.15.0-2-m68k-di cdrom-core-modules-4.15.0-2-m68k-di scsi-core-modules-4.15.0-2-m68k-di scsi-modules-4.15.0-2-m68k-di loop-modules-4.15.0-2-m68k-di btrfs-modules-4.15.0-2-m68k-di ext4-modules-4.15.0-2-m68k-di isofs-modules-4.15.0-2-m68k-di fat-modules-4.15.0-2-m68k-di hfs-modules-4.15.0-2-m68k-di affs-modules-4.15.0-2-m68k-di md-modules-4.15.0-2-m68k-di crc-modules-4.15.0-2-m68k-di crypto-modules-4.15.0-2-m68k-di ata-modules-4.15.0-2-m68k-di nbd-modules-4.15.0-2-m68k-di squashfs-modules-4.15.0-2-m68k-di zlib-modules-4.15.0-2-m68k-di udf-modules-4.15.0-2-m68k-di fuse-modules-4.15.0-2-m68k-di ide-core-modules-4.15.0-2-m68k-di ide-modules-4.15.0-2-m68k-di' UDEB_UNSIGNED_TEST_BUILD=False +binary-arch_m68k_none: binary-arch_m68k_none_m68k binary-arch_m68k_none_real +binary-arch_m68k_none_m68k: binary-arch_m68k_none_m68k_real +binary-arch_m68k_none_m68k_real:: + $(MAKE) -f debian/rules.real binary-arch-flavour ABINAME='4.15.0-2' ARCH='m68k' CFLAGS_KERNEL='-ffreestanding' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='m68k' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-m68k' KCONFIG='debian/config/config debian/config/m68k/config' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='m68k' LOCALVERSION='-m68k' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-m68k' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-arch_m68k_none_real: +binary-arch_m68k_real:: + $(MAKE) -f debian/rules.real binary-arch-arch ABINAME='4.15.0-2' ARCH='m68k' KERNEL_ARCH='m68k' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-arch_mips:: binary-arch_mips_none binary-arch_mips_real +binary-arch_mips:: + $(MAKE) -f debian/rules.real install-udeb_mips ABINAME='4.15.0-2' ARCH='mips' KERNEL_ARCH='mips' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' PACKAGE_NAMES='kernel-image-4.15.0-2-4kc-malta-di nic-modules-4.15.0-2-4kc-malta-di nic-wireless-modules-4.15.0-2-4kc-malta-di nic-shared-modules-4.15.0-2-4kc-malta-di usb-serial-modules-4.15.0-2-4kc-malta-di ppp-modules-4.15.0-2-4kc-malta-di pata-modules-4.15.0-2-4kc-malta-di cdrom-core-modules-4.15.0-2-4kc-malta-di scsi-core-modules-4.15.0-2-4kc-malta-di scsi-modules-4.15.0-2-4kc-malta-di loop-modules-4.15.0-2-4kc-malta-di btrfs-modules-4.15.0-2-4kc-malta-di ext4-modules-4.15.0-2-4kc-malta-di isofs-modules-4.15.0-2-4kc-malta-di jfs-modules-4.15.0-2-4kc-malta-di ntfs-modules-4.15.0-2-4kc-malta-di xfs-modules-4.15.0-2-4kc-malta-di fat-modules-4.15.0-2-4kc-malta-di hfs-modules-4.15.0-2-4kc-malta-di affs-modules-4.15.0-2-4kc-malta-di minix-modules-4.15.0-2-4kc-malta-di md-modules-4.15.0-2-4kc-malta-di multipath-modules-4.15.0-2-4kc-malta-di usb-modules-4.15.0-2-4kc-malta-di usb-storage-modules-4.15.0-2-4kc-malta-di input-modules-4.15.0-2-4kc-malta-di event-modules-4.15.0-2-4kc-malta-di mouse-modules-4.15.0-2-4kc-malta-di nic-usb-modules-4.15.0-2-4kc-malta-di sata-modules-4.15.0-2-4kc-malta-di i2c-modules-4.15.0-2-4kc-malta-di crc-modules-4.15.0-2-4kc-malta-di crypto-modules-4.15.0-2-4kc-malta-di crypto-dm-modules-4.15.0-2-4kc-malta-di ata-modules-4.15.0-2-4kc-malta-di mmc-core-modules-4.15.0-2-4kc-malta-di mmc-modules-4.15.0-2-4kc-malta-di nbd-modules-4.15.0-2-4kc-malta-di squashfs-modules-4.15.0-2-4kc-malta-di virtio-modules-4.15.0-2-4kc-malta-di sound-modules-4.15.0-2-4kc-malta-di zlib-modules-4.15.0-2-4kc-malta-di udf-modules-4.15.0-2-4kc-malta-di fuse-modules-4.15.0-2-4kc-malta-di kernel-image-4.15.0-2-octeon-di nic-modules-4.15.0-2-octeon-di nic-wireless-modules-4.15.0-2-octeon-di nic-shared-modules-4.15.0-2-octeon-di usb-serial-modules-4.15.0-2-octeon-di ppp-modules-4.15.0-2-octeon-di pata-modules-4.15.0-2-octeon-di cdrom-core-modules-4.15.0-2-octeon-di scsi-core-modules-4.15.0-2-octeon-di scsi-modules-4.15.0-2-octeon-di loop-modules-4.15.0-2-octeon-di btrfs-modules-4.15.0-2-octeon-di ext4-modules-4.15.0-2-octeon-di isofs-modules-4.15.0-2-octeon-di jfs-modules-4.15.0-2-octeon-di ntfs-modules-4.15.0-2-octeon-di xfs-modules-4.15.0-2-octeon-di fat-modules-4.15.0-2-octeon-di hfs-modules-4.15.0-2-octeon-di affs-modules-4.15.0-2-octeon-di minix-modules-4.15.0-2-octeon-di md-modules-4.15.0-2-octeon-di multipath-modules-4.15.0-2-octeon-di usb-modules-4.15.0-2-octeon-di usb-storage-modules-4.15.0-2-octeon-di input-modules-4.15.0-2-octeon-di event-modules-4.15.0-2-octeon-di nic-usb-modules-4.15.0-2-octeon-di sata-modules-4.15.0-2-octeon-di crc-modules-4.15.0-2-octeon-di crypto-modules-4.15.0-2-octeon-di crypto-dm-modules-4.15.0-2-octeon-di nbd-modules-4.15.0-2-octeon-di squashfs-modules-4.15.0-2-octeon-di rtc-modules-4.15.0-2-octeon-di virtio-modules-4.15.0-2-octeon-di sound-modules-4.15.0-2-octeon-di zlib-modules-4.15.0-2-octeon-di udf-modules-4.15.0-2-octeon-di fuse-modules-4.15.0-2-octeon-di' UDEB_UNSIGNED_TEST_BUILD=False +binary-arch_mips64:: binary-arch_mips64_none binary-arch_mips64_real +binary-arch_mips64:: + $(MAKE) -f debian/rules.real install-udeb_mips64 ABINAME='4.15.0-2' ARCH='mips64' KERNEL_ARCH='mips' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' PACKAGE_NAMES='kernel-image-4.15.0-2-5kc-malta-di nic-modules-4.15.0-2-5kc-malta-di nic-wireless-modules-4.15.0-2-5kc-malta-di nic-shared-modules-4.15.0-2-5kc-malta-di usb-serial-modules-4.15.0-2-5kc-malta-di ppp-modules-4.15.0-2-5kc-malta-di pata-modules-4.15.0-2-5kc-malta-di cdrom-core-modules-4.15.0-2-5kc-malta-di scsi-core-modules-4.15.0-2-5kc-malta-di scsi-modules-4.15.0-2-5kc-malta-di loop-modules-4.15.0-2-5kc-malta-di btrfs-modules-4.15.0-2-5kc-malta-di ext4-modules-4.15.0-2-5kc-malta-di isofs-modules-4.15.0-2-5kc-malta-di jfs-modules-4.15.0-2-5kc-malta-di ntfs-modules-4.15.0-2-5kc-malta-di xfs-modules-4.15.0-2-5kc-malta-di fat-modules-4.15.0-2-5kc-malta-di hfs-modules-4.15.0-2-5kc-malta-di affs-modules-4.15.0-2-5kc-malta-di minix-modules-4.15.0-2-5kc-malta-di md-modules-4.15.0-2-5kc-malta-di multipath-modules-4.15.0-2-5kc-malta-di usb-modules-4.15.0-2-5kc-malta-di usb-storage-modules-4.15.0-2-5kc-malta-di input-modules-4.15.0-2-5kc-malta-di event-modules-4.15.0-2-5kc-malta-di mouse-modules-4.15.0-2-5kc-malta-di nic-usb-modules-4.15.0-2-5kc-malta-di sata-modules-4.15.0-2-5kc-malta-di i2c-modules-4.15.0-2-5kc-malta-di crc-modules-4.15.0-2-5kc-malta-di crypto-modules-4.15.0-2-5kc-malta-di crypto-dm-modules-4.15.0-2-5kc-malta-di ata-modules-4.15.0-2-5kc-malta-di mmc-core-modules-4.15.0-2-5kc-malta-di mmc-modules-4.15.0-2-5kc-malta-di nbd-modules-4.15.0-2-5kc-malta-di squashfs-modules-4.15.0-2-5kc-malta-di virtio-modules-4.15.0-2-5kc-malta-di sound-modules-4.15.0-2-5kc-malta-di zlib-modules-4.15.0-2-5kc-malta-di udf-modules-4.15.0-2-5kc-malta-di fuse-modules-4.15.0-2-5kc-malta-di kernel-image-4.15.0-2-octeon-di nic-modules-4.15.0-2-octeon-di nic-wireless-modules-4.15.0-2-octeon-di nic-shared-modules-4.15.0-2-octeon-di usb-serial-modules-4.15.0-2-octeon-di ppp-modules-4.15.0-2-octeon-di pata-modules-4.15.0-2-octeon-di cdrom-core-modules-4.15.0-2-octeon-di scsi-core-modules-4.15.0-2-octeon-di scsi-modules-4.15.0-2-octeon-di loop-modules-4.15.0-2-octeon-di btrfs-modules-4.15.0-2-octeon-di ext4-modules-4.15.0-2-octeon-di isofs-modules-4.15.0-2-octeon-di jfs-modules-4.15.0-2-octeon-di ntfs-modules-4.15.0-2-octeon-di xfs-modules-4.15.0-2-octeon-di fat-modules-4.15.0-2-octeon-di hfs-modules-4.15.0-2-octeon-di affs-modules-4.15.0-2-octeon-di minix-modules-4.15.0-2-octeon-di md-modules-4.15.0-2-octeon-di multipath-modules-4.15.0-2-octeon-di usb-modules-4.15.0-2-octeon-di usb-storage-modules-4.15.0-2-octeon-di input-modules-4.15.0-2-octeon-di event-modules-4.15.0-2-octeon-di nic-usb-modules-4.15.0-2-octeon-di sata-modules-4.15.0-2-octeon-di crc-modules-4.15.0-2-octeon-di crypto-modules-4.15.0-2-octeon-di crypto-dm-modules-4.15.0-2-octeon-di nbd-modules-4.15.0-2-octeon-di squashfs-modules-4.15.0-2-octeon-di rtc-modules-4.15.0-2-octeon-di virtio-modules-4.15.0-2-octeon-di sound-modules-4.15.0-2-octeon-di zlib-modules-4.15.0-2-octeon-di udf-modules-4.15.0-2-octeon-di fuse-modules-4.15.0-2-octeon-di' UDEB_UNSIGNED_TEST_BUILD=False +binary-arch_mips64_none: binary-arch_mips64_none_5kc-malta binary-arch_mips64_none_octeon binary-arch_mips64_none_real +binary-arch_mips64_none_5kc-malta: binary-arch_mips64_none_5kc-malta_real +binary-arch_mips64_none_5kc-malta_real:: + $(MAKE) -f debian/rules.real binary-arch-flavour ABINAME='4.15.0-2' ARCH='mips64' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='5kc-malta' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-5kc-malta' KCONFIG='debian/config/config debian/config/kernelarch-mips/config debian/config/mips64/config debian/config/kernelarch-mips/config.malta debian/config/kernelarch-mips/config.mips64r2' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='mips' LOCALVERSION='-5kc-malta' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-5kc-malta' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-arch_mips64_none_octeon: binary-arch_mips64_none_octeon_real +binary-arch_mips64_none_octeon_real:: + $(MAKE) -f debian/rules.real binary-arch-flavour ABINAME='4.15.0-2' ARCH='mips64' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='octeon' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-octeon' KCONFIG='debian/config/config debian/config/kernelarch-mips/config debian/config/mips64/config debian/config/kernelarch-mips/config.octeon' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='mips' LOCALVERSION='-octeon' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-octeon' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-arch_mips64_none_real: +binary-arch_mips64_real:: + $(MAKE) -f debian/rules.real binary-arch-arch ABINAME='4.15.0-2' ARCH='mips64' KERNEL_ARCH='mips' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-arch_mips64el:: binary-arch_mips64el_none binary-arch_mips64el_real +binary-arch_mips64el:: + $(MAKE) -f debian/rules.real install-udeb_mips64el ABINAME='4.15.0-2' ARCH='mips64el' KERNEL_ARCH='mips' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' PACKAGE_NAMES='kernel-image-4.15.0-2-5kc-malta-di nic-modules-4.15.0-2-5kc-malta-di nic-wireless-modules-4.15.0-2-5kc-malta-di nic-shared-modules-4.15.0-2-5kc-malta-di usb-serial-modules-4.15.0-2-5kc-malta-di ppp-modules-4.15.0-2-5kc-malta-di pata-modules-4.15.0-2-5kc-malta-di cdrom-core-modules-4.15.0-2-5kc-malta-di scsi-core-modules-4.15.0-2-5kc-malta-di scsi-modules-4.15.0-2-5kc-malta-di loop-modules-4.15.0-2-5kc-malta-di btrfs-modules-4.15.0-2-5kc-malta-di ext4-modules-4.15.0-2-5kc-malta-di isofs-modules-4.15.0-2-5kc-malta-di jfs-modules-4.15.0-2-5kc-malta-di ntfs-modules-4.15.0-2-5kc-malta-di xfs-modules-4.15.0-2-5kc-malta-di fat-modules-4.15.0-2-5kc-malta-di hfs-modules-4.15.0-2-5kc-malta-di affs-modules-4.15.0-2-5kc-malta-di minix-modules-4.15.0-2-5kc-malta-di md-modules-4.15.0-2-5kc-malta-di multipath-modules-4.15.0-2-5kc-malta-di usb-modules-4.15.0-2-5kc-malta-di usb-storage-modules-4.15.0-2-5kc-malta-di input-modules-4.15.0-2-5kc-malta-di event-modules-4.15.0-2-5kc-malta-di mouse-modules-4.15.0-2-5kc-malta-di nic-usb-modules-4.15.0-2-5kc-malta-di sata-modules-4.15.0-2-5kc-malta-di i2c-modules-4.15.0-2-5kc-malta-di crc-modules-4.15.0-2-5kc-malta-di crypto-modules-4.15.0-2-5kc-malta-di crypto-dm-modules-4.15.0-2-5kc-malta-di ata-modules-4.15.0-2-5kc-malta-di mmc-core-modules-4.15.0-2-5kc-malta-di mmc-modules-4.15.0-2-5kc-malta-di nbd-modules-4.15.0-2-5kc-malta-di squashfs-modules-4.15.0-2-5kc-malta-di virtio-modules-4.15.0-2-5kc-malta-di sound-modules-4.15.0-2-5kc-malta-di zlib-modules-4.15.0-2-5kc-malta-di udf-modules-4.15.0-2-5kc-malta-di fuse-modules-4.15.0-2-5kc-malta-di kernel-image-4.15.0-2-loongson-3-di nic-modules-4.15.0-2-loongson-3-di nic-wireless-modules-4.15.0-2-loongson-3-di nic-shared-modules-4.15.0-2-loongson-3-di usb-serial-modules-4.15.0-2-loongson-3-di ppp-modules-4.15.0-2-loongson-3-di pata-modules-4.15.0-2-loongson-3-di cdrom-core-modules-4.15.0-2-loongson-3-di firewire-core-modules-4.15.0-2-loongson-3-di scsi-core-modules-4.15.0-2-loongson-3-di scsi-modules-4.15.0-2-loongson-3-di loop-modules-4.15.0-2-loongson-3-di btrfs-modules-4.15.0-2-loongson-3-di ext4-modules-4.15.0-2-loongson-3-di isofs-modules-4.15.0-2-loongson-3-di jfs-modules-4.15.0-2-loongson-3-di ntfs-modules-4.15.0-2-loongson-3-di xfs-modules-4.15.0-2-loongson-3-di fat-modules-4.15.0-2-loongson-3-di hfs-modules-4.15.0-2-loongson-3-di affs-modules-4.15.0-2-loongson-3-di minix-modules-4.15.0-2-loongson-3-di nfs-modules-4.15.0-2-loongson-3-di md-modules-4.15.0-2-loongson-3-di multipath-modules-4.15.0-2-loongson-3-di usb-modules-4.15.0-2-loongson-3-di usb-storage-modules-4.15.0-2-loongson-3-di fb-modules-4.15.0-2-loongson-3-di input-modules-4.15.0-2-loongson-3-di event-modules-4.15.0-2-loongson-3-di nic-usb-modules-4.15.0-2-loongson-3-di sata-modules-4.15.0-2-loongson-3-di crc-modules-4.15.0-2-loongson-3-di crypto-modules-4.15.0-2-loongson-3-di crypto-dm-modules-4.15.0-2-loongson-3-di ata-modules-4.15.0-2-loongson-3-di nbd-modules-4.15.0-2-loongson-3-di squashfs-modules-4.15.0-2-loongson-3-di speakup-modules-4.15.0-2-loongson-3-di virtio-modules-4.15.0-2-loongson-3-di sound-modules-4.15.0-2-loongson-3-di zlib-modules-4.15.0-2-loongson-3-di udf-modules-4.15.0-2-loongson-3-di fuse-modules-4.15.0-2-loongson-3-di kernel-image-4.15.0-2-octeon-di nic-modules-4.15.0-2-octeon-di nic-wireless-modules-4.15.0-2-octeon-di nic-shared-modules-4.15.0-2-octeon-di usb-serial-modules-4.15.0-2-octeon-di ppp-modules-4.15.0-2-octeon-di pata-modules-4.15.0-2-octeon-di cdrom-core-modules-4.15.0-2-octeon-di scsi-core-modules-4.15.0-2-octeon-di scsi-modules-4.15.0-2-octeon-di loop-modules-4.15.0-2-octeon-di btrfs-modules-4.15.0-2-octeon-di ext4-modules-4.15.0-2-octeon-di isofs-modules-4.15.0-2-octeon-di jfs-modules-4.15.0-2-octeon-di ntfs-modules-4.15.0-2-octeon-di xfs-modules-4.15.0-2-octeon-di fat-modules-4.15.0-2-octeon-di hfs-modules-4.15.0-2-octeon-di affs-modules-4.15.0-2-octeon-di minix-modules-4.15.0-2-octeon-di md-modules-4.15.0-2-octeon-di multipath-modules-4.15.0-2-octeon-di usb-modules-4.15.0-2-octeon-di usb-storage-modules-4.15.0-2-octeon-di input-modules-4.15.0-2-octeon-di event-modules-4.15.0-2-octeon-di nic-usb-modules-4.15.0-2-octeon-di sata-modules-4.15.0-2-octeon-di crc-modules-4.15.0-2-octeon-di crypto-modules-4.15.0-2-octeon-di crypto-dm-modules-4.15.0-2-octeon-di nbd-modules-4.15.0-2-octeon-di squashfs-modules-4.15.0-2-octeon-di rtc-modules-4.15.0-2-octeon-di virtio-modules-4.15.0-2-octeon-di sound-modules-4.15.0-2-octeon-di zlib-modules-4.15.0-2-octeon-di udf-modules-4.15.0-2-octeon-di fuse-modules-4.15.0-2-octeon-di' UDEB_UNSIGNED_TEST_BUILD=False +binary-arch_mips64el_none: binary-arch_mips64el_none_5kc-malta binary-arch_mips64el_none_loongson-3 binary-arch_mips64el_none_octeon binary-arch_mips64el_none_real +binary-arch_mips64el_none_5kc-malta: binary-arch_mips64el_none_5kc-malta_real +binary-arch_mips64el_none_5kc-malta_real:: + $(MAKE) -f debian/rules.real binary-arch-flavour ABINAME='4.15.0-2' ARCH='mips64el' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='5kc-malta' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-5kc-malta' KCONFIG='debian/config/config debian/config/kernelarch-mips/config debian/config/mips64el/config debian/config/kernelarch-mips/config.malta debian/config/kernelarch-mips/config.mips64r2' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='mips' LOCALVERSION='-5kc-malta' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-5kc-malta' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-arch_mips64el_none_loongson-3: binary-arch_mips64el_none_loongson-3_real +binary-arch_mips64el_none_loongson-3_real:: + $(MAKE) -f debian/rules.real binary-arch-flavour ABINAME='4.15.0-2' ARCH='mips64el' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='loongson-3' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-loongson-3' KCONFIG='debian/config/config debian/config/kernelarch-mips/config debian/config/mips64el/config debian/config/kernelarch-mips/config.loongson-3' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='mips' LOCALVERSION='-loongson-3' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-loongson-3' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-arch_mips64el_none_octeon: binary-arch_mips64el_none_octeon_real +binary-arch_mips64el_none_octeon_real:: + $(MAKE) -f debian/rules.real binary-arch-flavour ABINAME='4.15.0-2' ARCH='mips64el' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='octeon' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-octeon' KCONFIG='debian/config/config debian/config/kernelarch-mips/config debian/config/mips64el/config debian/config/kernelarch-mips/config.octeon' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='mips' LOCALVERSION='-octeon' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-octeon' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-arch_mips64el_none_real: +binary-arch_mips64el_real:: + $(MAKE) -f debian/rules.real binary-arch-arch ABINAME='4.15.0-2' ARCH='mips64el' KERNEL_ARCH='mips' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-arch_mips64r6:: binary-arch_mips64r6_none binary-arch_mips64r6_real +binary-arch_mips64r6:: + $(MAKE) -f debian/rules.real install-udeb_mips64r6 ABINAME='4.15.0-2' ARCH='mips64r6' KERNEL_ARCH='mips' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' PACKAGE_NAMES='kernel-image-4.15.0-2-mips64r6-di nic-shared-modules-4.15.0-2-mips64r6-di loop-modules-4.15.0-2-mips64r6-di btrfs-modules-4.15.0-2-mips64r6-di ext4-modules-4.15.0-2-mips64r6-di isofs-modules-4.15.0-2-mips64r6-di jfs-modules-4.15.0-2-mips64r6-di xfs-modules-4.15.0-2-mips64r6-di md-modules-4.15.0-2-mips64r6-di multipath-modules-4.15.0-2-mips64r6-di crc-modules-4.15.0-2-mips64r6-di crypto-modules-4.15.0-2-mips64r6-di crypto-dm-modules-4.15.0-2-mips64r6-di nbd-modules-4.15.0-2-mips64r6-di squashfs-modules-4.15.0-2-mips64r6-di zlib-modules-4.15.0-2-mips64r6-di udf-modules-4.15.0-2-mips64r6-di fuse-modules-4.15.0-2-mips64r6-di' UDEB_UNSIGNED_TEST_BUILD=False +binary-arch_mips64r6_none: binary-arch_mips64r6_none_mips64r6 binary-arch_mips64r6_none_real +binary-arch_mips64r6_none_mips64r6: binary-arch_mips64r6_none_mips64r6_real +binary-arch_mips64r6_none_mips64r6_real:: + $(MAKE) -f debian/rules.real binary-arch-flavour ABINAME='4.15.0-2' ARCH='mips64r6' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='mips64r6' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-mips64r6' KCONFIG='debian/config/config debian/config/kernelarch-mips/config debian/config/mips64r6/config debian/config/kernelarch-mips/config.malta debian/config/kernelarch-mips/config.mips64r6' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='mips' LOCALVERSION='-mips64r6' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-mips64r6' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-arch_mips64r6_none_real: +binary-arch_mips64r6_real:: + $(MAKE) -f debian/rules.real binary-arch-arch ABINAME='4.15.0-2' ARCH='mips64r6' KERNEL_ARCH='mips' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-arch_mips64r6el:: binary-arch_mips64r6el_none binary-arch_mips64r6el_real +binary-arch_mips64r6el:: + $(MAKE) -f debian/rules.real install-udeb_mips64r6el ABINAME='4.15.0-2' ARCH='mips64r6el' KERNEL_ARCH='mips' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' PACKAGE_NAMES='kernel-image-4.15.0-2-mips64r6-di nic-shared-modules-4.15.0-2-mips64r6-di loop-modules-4.15.0-2-mips64r6-di btrfs-modules-4.15.0-2-mips64r6-di ext4-modules-4.15.0-2-mips64r6-di isofs-modules-4.15.0-2-mips64r6-di jfs-modules-4.15.0-2-mips64r6-di xfs-modules-4.15.0-2-mips64r6-di md-modules-4.15.0-2-mips64r6-di multipath-modules-4.15.0-2-mips64r6-di crc-modules-4.15.0-2-mips64r6-di crypto-modules-4.15.0-2-mips64r6-di crypto-dm-modules-4.15.0-2-mips64r6-di nbd-modules-4.15.0-2-mips64r6-di squashfs-modules-4.15.0-2-mips64r6-di zlib-modules-4.15.0-2-mips64r6-di udf-modules-4.15.0-2-mips64r6-di fuse-modules-4.15.0-2-mips64r6-di' UDEB_UNSIGNED_TEST_BUILD=False +binary-arch_mips64r6el_none: binary-arch_mips64r6el_none_mips64r6el binary-arch_mips64r6el_none_real +binary-arch_mips64r6el_none_mips64r6el: binary-arch_mips64r6el_none_mips64r6el_real +binary-arch_mips64r6el_none_mips64r6el_real:: + $(MAKE) -f debian/rules.real binary-arch-flavour ABINAME='4.15.0-2' ARCH='mips64r6el' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='mips64r6el' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-mips64r6el' KCONFIG='debian/config/config debian/config/kernelarch-mips/config debian/config/mips64r6el/config debian/config/kernelarch-mips/config.malta debian/config/kernelarch-mips/config.mips64r6' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='mips' LOCALVERSION='-mips64r6el' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-mips64r6el' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-arch_mips64r6el_none_real: +binary-arch_mips64r6el_real:: + $(MAKE) -f debian/rules.real binary-arch-arch ABINAME='4.15.0-2' ARCH='mips64r6el' KERNEL_ARCH='mips' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-arch_mips_none: binary-arch_mips_none_4kc-malta binary-arch_mips_none_5kc-malta binary-arch_mips_none_octeon binary-arch_mips_none_real +binary-arch_mips_none_4kc-malta: binary-arch_mips_none_4kc-malta_real +binary-arch_mips_none_4kc-malta_real:: + $(MAKE) -f debian/rules.real binary-arch-flavour ABINAME='4.15.0-2' ARCH='mips' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='4kc-malta' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-4kc-malta' KCONFIG='debian/config/config debian/config/kernelarch-mips/config debian/config/mips/config debian/config/kernelarch-mips/config.malta debian/config/kernelarch-mips/config.mips32r2' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='mips' LOCALVERSION='-4kc-malta' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-4kc-malta' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-arch_mips_none_5kc-malta: binary-arch_mips_none_5kc-malta_real +binary-arch_mips_none_5kc-malta_real:: + $(MAKE) -f debian/rules.real binary-arch-flavour ABINAME='4.15.0-2' ARCH='mips' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='5kc-malta' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-5kc-malta' KCONFIG='debian/config/config debian/config/kernelarch-mips/config debian/config/mips/config debian/config/kernelarch-mips/config.malta debian/config/kernelarch-mips/config.mips64r2' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='mips' LOCALVERSION='-5kc-malta' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-5kc-malta' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-arch_mips_none_octeon: binary-arch_mips_none_octeon_real +binary-arch_mips_none_octeon_real:: + $(MAKE) -f debian/rules.real binary-arch-flavour ABINAME='4.15.0-2' ARCH='mips' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='octeon' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-octeon' KCONFIG='debian/config/config debian/config/kernelarch-mips/config debian/config/mips/config debian/config/kernelarch-mips/config.octeon' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='mips' LOCALVERSION='-octeon' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-octeon' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-arch_mips_none_real: +binary-arch_mips_real:: + $(MAKE) -f debian/rules.real binary-arch-arch ABINAME='4.15.0-2' ARCH='mips' KERNEL_ARCH='mips' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-arch_mipsel:: binary-arch_mipsel_none binary-arch_mipsel_real +binary-arch_mipsel:: + $(MAKE) -f debian/rules.real install-udeb_mipsel ABINAME='4.15.0-2' ARCH='mipsel' KERNEL_ARCH='mips' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' PACKAGE_NAMES='kernel-image-4.15.0-2-4kc-malta-di nic-modules-4.15.0-2-4kc-malta-di nic-wireless-modules-4.15.0-2-4kc-malta-di nic-shared-modules-4.15.0-2-4kc-malta-di usb-serial-modules-4.15.0-2-4kc-malta-di ppp-modules-4.15.0-2-4kc-malta-di pata-modules-4.15.0-2-4kc-malta-di cdrom-core-modules-4.15.0-2-4kc-malta-di scsi-core-modules-4.15.0-2-4kc-malta-di scsi-modules-4.15.0-2-4kc-malta-di loop-modules-4.15.0-2-4kc-malta-di btrfs-modules-4.15.0-2-4kc-malta-di ext4-modules-4.15.0-2-4kc-malta-di isofs-modules-4.15.0-2-4kc-malta-di jfs-modules-4.15.0-2-4kc-malta-di ntfs-modules-4.15.0-2-4kc-malta-di xfs-modules-4.15.0-2-4kc-malta-di fat-modules-4.15.0-2-4kc-malta-di hfs-modules-4.15.0-2-4kc-malta-di affs-modules-4.15.0-2-4kc-malta-di minix-modules-4.15.0-2-4kc-malta-di md-modules-4.15.0-2-4kc-malta-di multipath-modules-4.15.0-2-4kc-malta-di usb-modules-4.15.0-2-4kc-malta-di usb-storage-modules-4.15.0-2-4kc-malta-di input-modules-4.15.0-2-4kc-malta-di event-modules-4.15.0-2-4kc-malta-di mouse-modules-4.15.0-2-4kc-malta-di nic-usb-modules-4.15.0-2-4kc-malta-di sata-modules-4.15.0-2-4kc-malta-di i2c-modules-4.15.0-2-4kc-malta-di crc-modules-4.15.0-2-4kc-malta-di crypto-modules-4.15.0-2-4kc-malta-di crypto-dm-modules-4.15.0-2-4kc-malta-di ata-modules-4.15.0-2-4kc-malta-di mmc-core-modules-4.15.0-2-4kc-malta-di mmc-modules-4.15.0-2-4kc-malta-di nbd-modules-4.15.0-2-4kc-malta-di squashfs-modules-4.15.0-2-4kc-malta-di virtio-modules-4.15.0-2-4kc-malta-di sound-modules-4.15.0-2-4kc-malta-di zlib-modules-4.15.0-2-4kc-malta-di udf-modules-4.15.0-2-4kc-malta-di fuse-modules-4.15.0-2-4kc-malta-di kernel-image-4.15.0-2-loongson-3-di nic-modules-4.15.0-2-loongson-3-di nic-wireless-modules-4.15.0-2-loongson-3-di nic-shared-modules-4.15.0-2-loongson-3-di usb-serial-modules-4.15.0-2-loongson-3-di ppp-modules-4.15.0-2-loongson-3-di pata-modules-4.15.0-2-loongson-3-di cdrom-core-modules-4.15.0-2-loongson-3-di firewire-core-modules-4.15.0-2-loongson-3-di scsi-core-modules-4.15.0-2-loongson-3-di scsi-modules-4.15.0-2-loongson-3-di loop-modules-4.15.0-2-loongson-3-di btrfs-modules-4.15.0-2-loongson-3-di ext4-modules-4.15.0-2-loongson-3-di isofs-modules-4.15.0-2-loongson-3-di jfs-modules-4.15.0-2-loongson-3-di ntfs-modules-4.15.0-2-loongson-3-di xfs-modules-4.15.0-2-loongson-3-di fat-modules-4.15.0-2-loongson-3-di hfs-modules-4.15.0-2-loongson-3-di affs-modules-4.15.0-2-loongson-3-di minix-modules-4.15.0-2-loongson-3-di nfs-modules-4.15.0-2-loongson-3-di md-modules-4.15.0-2-loongson-3-di multipath-modules-4.15.0-2-loongson-3-di usb-modules-4.15.0-2-loongson-3-di usb-storage-modules-4.15.0-2-loongson-3-di fb-modules-4.15.0-2-loongson-3-di input-modules-4.15.0-2-loongson-3-di event-modules-4.15.0-2-loongson-3-di nic-usb-modules-4.15.0-2-loongson-3-di sata-modules-4.15.0-2-loongson-3-di crc-modules-4.15.0-2-loongson-3-di crypto-modules-4.15.0-2-loongson-3-di crypto-dm-modules-4.15.0-2-loongson-3-di ata-modules-4.15.0-2-loongson-3-di nbd-modules-4.15.0-2-loongson-3-di squashfs-modules-4.15.0-2-loongson-3-di speakup-modules-4.15.0-2-loongson-3-di virtio-modules-4.15.0-2-loongson-3-di sound-modules-4.15.0-2-loongson-3-di zlib-modules-4.15.0-2-loongson-3-di udf-modules-4.15.0-2-loongson-3-di fuse-modules-4.15.0-2-loongson-3-di kernel-image-4.15.0-2-octeon-di nic-modules-4.15.0-2-octeon-di nic-wireless-modules-4.15.0-2-octeon-di nic-shared-modules-4.15.0-2-octeon-di usb-serial-modules-4.15.0-2-octeon-di ppp-modules-4.15.0-2-octeon-di pata-modules-4.15.0-2-octeon-di cdrom-core-modules-4.15.0-2-octeon-di scsi-core-modules-4.15.0-2-octeon-di scsi-modules-4.15.0-2-octeon-di loop-modules-4.15.0-2-octeon-di btrfs-modules-4.15.0-2-octeon-di ext4-modules-4.15.0-2-octeon-di isofs-modules-4.15.0-2-octeon-di jfs-modules-4.15.0-2-octeon-di ntfs-modules-4.15.0-2-octeon-di xfs-modules-4.15.0-2-octeon-di fat-modules-4.15.0-2-octeon-di hfs-modules-4.15.0-2-octeon-di affs-modules-4.15.0-2-octeon-di minix-modules-4.15.0-2-octeon-di md-modules-4.15.0-2-octeon-di multipath-modules-4.15.0-2-octeon-di usb-modules-4.15.0-2-octeon-di usb-storage-modules-4.15.0-2-octeon-di input-modules-4.15.0-2-octeon-di event-modules-4.15.0-2-octeon-di nic-usb-modules-4.15.0-2-octeon-di sata-modules-4.15.0-2-octeon-di crc-modules-4.15.0-2-octeon-di crypto-modules-4.15.0-2-octeon-di crypto-dm-modules-4.15.0-2-octeon-di nbd-modules-4.15.0-2-octeon-di squashfs-modules-4.15.0-2-octeon-di rtc-modules-4.15.0-2-octeon-di virtio-modules-4.15.0-2-octeon-di sound-modules-4.15.0-2-octeon-di zlib-modules-4.15.0-2-octeon-di udf-modules-4.15.0-2-octeon-di fuse-modules-4.15.0-2-octeon-di' UDEB_UNSIGNED_TEST_BUILD=False +binary-arch_mipsel_none: binary-arch_mipsel_none_4kc-malta binary-arch_mipsel_none_5kc-malta binary-arch_mipsel_none_loongson-3 binary-arch_mipsel_none_octeon binary-arch_mipsel_none_real +binary-arch_mipsel_none_4kc-malta: binary-arch_mipsel_none_4kc-malta_real +binary-arch_mipsel_none_4kc-malta_real:: + $(MAKE) -f debian/rules.real binary-arch-flavour ABINAME='4.15.0-2' ARCH='mipsel' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='4kc-malta' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-4kc-malta' KCONFIG='debian/config/config debian/config/kernelarch-mips/config debian/config/mipsel/config debian/config/kernelarch-mips/config.malta debian/config/kernelarch-mips/config.mips32r2' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='mips' LOCALVERSION='-4kc-malta' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-4kc-malta' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-arch_mipsel_none_5kc-malta: binary-arch_mipsel_none_5kc-malta_real +binary-arch_mipsel_none_5kc-malta_real:: + $(MAKE) -f debian/rules.real binary-arch-flavour ABINAME='4.15.0-2' ARCH='mipsel' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='5kc-malta' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-5kc-malta' KCONFIG='debian/config/config debian/config/kernelarch-mips/config debian/config/mipsel/config debian/config/kernelarch-mips/config.malta debian/config/kernelarch-mips/config.mips64r2' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='mips' LOCALVERSION='-5kc-malta' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-5kc-malta' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-arch_mipsel_none_loongson-3: binary-arch_mipsel_none_loongson-3_real +binary-arch_mipsel_none_loongson-3_real:: + $(MAKE) -f debian/rules.real binary-arch-flavour ABINAME='4.15.0-2' ARCH='mipsel' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='loongson-3' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-loongson-3' KCONFIG='debian/config/config debian/config/kernelarch-mips/config debian/config/mipsel/config debian/config/kernelarch-mips/config.loongson-3' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='mips' LOCALVERSION='-loongson-3' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-loongson-3' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-arch_mipsel_none_octeon: binary-arch_mipsel_none_octeon_real +binary-arch_mipsel_none_octeon_real:: + $(MAKE) -f debian/rules.real binary-arch-flavour ABINAME='4.15.0-2' ARCH='mipsel' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='octeon' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-octeon' KCONFIG='debian/config/config debian/config/kernelarch-mips/config debian/config/mipsel/config debian/config/kernelarch-mips/config.octeon' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='mips' LOCALVERSION='-octeon' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-octeon' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-arch_mipsel_none_real: +binary-arch_mipsel_real:: + $(MAKE) -f debian/rules.real binary-arch-arch ABINAME='4.15.0-2' ARCH='mipsel' KERNEL_ARCH='mips' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-arch_mipsn32: binary-arch_mipsn32_real +binary-arch_mipsn32_real:: + $(MAKE) -f debian/rules.real binary-arch-arch ABINAME='4.15.0-2' ARCH='mipsn32' DO_HEADERS_ALL='False' KERNEL_ARCH='mips' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-arch_mipsn32el: binary-arch_mipsn32el_real +binary-arch_mipsn32el_real:: + $(MAKE) -f debian/rules.real binary-arch-arch ABINAME='4.15.0-2' ARCH='mipsn32el' DO_HEADERS_ALL='False' KERNEL_ARCH='mips' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-arch_mipsn32r6: binary-arch_mipsn32r6_real +binary-arch_mipsn32r6_real:: + $(MAKE) -f debian/rules.real binary-arch-arch ABINAME='4.15.0-2' ARCH='mipsn32r6' DO_HEADERS_ALL='False' KERNEL_ARCH='mips' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-arch_mipsn32r6el: binary-arch_mipsn32r6el_real +binary-arch_mipsn32r6el_real:: + $(MAKE) -f debian/rules.real binary-arch-arch ABINAME='4.15.0-2' ARCH='mipsn32r6el' DO_HEADERS_ALL='False' KERNEL_ARCH='mips' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-arch_mipsr6:: binary-arch_mipsr6_none binary-arch_mipsr6_real +binary-arch_mipsr6:: + $(MAKE) -f debian/rules.real install-udeb_mipsr6 ABINAME='4.15.0-2' ARCH='mipsr6' KERNEL_ARCH='mips' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' PACKAGE_NAMES='kernel-image-4.15.0-2-mips32r6-di nic-shared-modules-4.15.0-2-mips32r6-di loop-modules-4.15.0-2-mips32r6-di btrfs-modules-4.15.0-2-mips32r6-di ext4-modules-4.15.0-2-mips32r6-di isofs-modules-4.15.0-2-mips32r6-di jfs-modules-4.15.0-2-mips32r6-di xfs-modules-4.15.0-2-mips32r6-di md-modules-4.15.0-2-mips32r6-di multipath-modules-4.15.0-2-mips32r6-di crc-modules-4.15.0-2-mips32r6-di crypto-modules-4.15.0-2-mips32r6-di crypto-dm-modules-4.15.0-2-mips32r6-di nbd-modules-4.15.0-2-mips32r6-di squashfs-modules-4.15.0-2-mips32r6-di zlib-modules-4.15.0-2-mips32r6-di udf-modules-4.15.0-2-mips32r6-di fuse-modules-4.15.0-2-mips32r6-di' UDEB_UNSIGNED_TEST_BUILD=False +binary-arch_mipsr6_none: binary-arch_mipsr6_none_mips32r6 binary-arch_mipsr6_none_mips64r6 binary-arch_mipsr6_none_real +binary-arch_mipsr6_none_mips32r6: binary-arch_mipsr6_none_mips32r6_real +binary-arch_mipsr6_none_mips32r6_real:: + $(MAKE) -f debian/rules.real binary-arch-flavour ABINAME='4.15.0-2' ARCH='mipsr6' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='mips32r6' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-mips32r6' KCONFIG='debian/config/config debian/config/kernelarch-mips/config debian/config/mipsr6/config debian/config/kernelarch-mips/config.malta debian/config/kernelarch-mips/config.mips32r6' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='mips' LOCALVERSION='-mips32r6' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-mips32r6' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-arch_mipsr6_none_mips64r6: binary-arch_mipsr6_none_mips64r6_real +binary-arch_mipsr6_none_mips64r6_real:: + $(MAKE) -f debian/rules.real binary-arch-flavour ABINAME='4.15.0-2' ARCH='mipsr6' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='mips64r6' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-mips64r6' KCONFIG='debian/config/config debian/config/kernelarch-mips/config debian/config/mipsr6/config debian/config/kernelarch-mips/config.malta debian/config/kernelarch-mips/config.mips64r6' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='mips' LOCALVERSION='-mips64r6' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-mips64r6' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-arch_mipsr6_none_real: +binary-arch_mipsr6_real:: + $(MAKE) -f debian/rules.real binary-arch-arch ABINAME='4.15.0-2' ARCH='mipsr6' KERNEL_ARCH='mips' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-arch_mipsr6el:: binary-arch_mipsr6el_none binary-arch_mipsr6el_real +binary-arch_mipsr6el:: + $(MAKE) -f debian/rules.real install-udeb_mipsr6el ABINAME='4.15.0-2' ARCH='mipsr6el' KERNEL_ARCH='mips' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' PACKAGE_NAMES='kernel-image-4.15.0-2-mips32r6-di nic-shared-modules-4.15.0-2-mips32r6-di loop-modules-4.15.0-2-mips32r6-di btrfs-modules-4.15.0-2-mips32r6-di ext4-modules-4.15.0-2-mips32r6-di isofs-modules-4.15.0-2-mips32r6-di jfs-modules-4.15.0-2-mips32r6-di xfs-modules-4.15.0-2-mips32r6-di md-modules-4.15.0-2-mips32r6-di multipath-modules-4.15.0-2-mips32r6-di crc-modules-4.15.0-2-mips32r6-di crypto-modules-4.15.0-2-mips32r6-di crypto-dm-modules-4.15.0-2-mips32r6-di nbd-modules-4.15.0-2-mips32r6-di squashfs-modules-4.15.0-2-mips32r6-di zlib-modules-4.15.0-2-mips32r6-di udf-modules-4.15.0-2-mips32r6-di fuse-modules-4.15.0-2-mips32r6-di' UDEB_UNSIGNED_TEST_BUILD=False +binary-arch_mipsr6el_none: binary-arch_mipsr6el_none_mips32r6el binary-arch_mipsr6el_none_mips64r6el binary-arch_mipsr6el_none_real +binary-arch_mipsr6el_none_mips32r6el: binary-arch_mipsr6el_none_mips32r6el_real +binary-arch_mipsr6el_none_mips32r6el_real:: + $(MAKE) -f debian/rules.real binary-arch-flavour ABINAME='4.15.0-2' ARCH='mipsr6el' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='mips32r6el' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-mips32r6el' KCONFIG='debian/config/config debian/config/kernelarch-mips/config debian/config/mipsr6el/config debian/config/kernelarch-mips/config.malta debian/config/kernelarch-mips/config.mips32r6' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='mips' LOCALVERSION='-mips32r6el' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-mips32r6el' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-arch_mipsr6el_none_mips64r6el: binary-arch_mipsr6el_none_mips64r6el_real +binary-arch_mipsr6el_none_mips64r6el_real:: + $(MAKE) -f debian/rules.real binary-arch-flavour ABINAME='4.15.0-2' ARCH='mipsr6el' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='mips64r6el' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-mips64r6el' KCONFIG='debian/config/config debian/config/kernelarch-mips/config debian/config/mipsr6el/config debian/config/kernelarch-mips/config.malta debian/config/kernelarch-mips/config.mips64r6' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='mips' LOCALVERSION='-mips64r6el' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-mips64r6el' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-arch_mipsr6el_none_real: +binary-arch_mipsr6el_real:: + $(MAKE) -f debian/rules.real binary-arch-arch ABINAME='4.15.0-2' ARCH='mipsr6el' KERNEL_ARCH='mips' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-arch_powerpc:: binary-arch_powerpc_none binary-arch_powerpc_real +binary-arch_powerpc:: + $(MAKE) -f debian/rules.real install-udeb_powerpc ABINAME='4.15.0-2' ARCH='powerpc' KERNEL_ARCH='powerpc' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' PACKAGE_NAMES='kernel-image-4.15.0-2-powerpc-di nic-modules-4.15.0-2-powerpc-di nic-shared-modules-4.15.0-2-powerpc-di serial-modules-4.15.0-2-powerpc-di usb-serial-modules-4.15.0-2-powerpc-di ppp-modules-4.15.0-2-powerpc-di pata-modules-4.15.0-2-powerpc-di cdrom-core-modules-4.15.0-2-powerpc-di firewire-core-modules-4.15.0-2-powerpc-di scsi-core-modules-4.15.0-2-powerpc-di scsi-modules-4.15.0-2-powerpc-di loop-modules-4.15.0-2-powerpc-di btrfs-modules-4.15.0-2-powerpc-di ext4-modules-4.15.0-2-powerpc-di isofs-modules-4.15.0-2-powerpc-di jfs-modules-4.15.0-2-powerpc-di xfs-modules-4.15.0-2-powerpc-di fat-modules-4.15.0-2-powerpc-di hfs-modules-4.15.0-2-powerpc-di affs-modules-4.15.0-2-powerpc-di md-modules-4.15.0-2-powerpc-di multipath-modules-4.15.0-2-powerpc-di usb-modules-4.15.0-2-powerpc-di usb-storage-modules-4.15.0-2-powerpc-di pcmcia-storage-modules-4.15.0-2-powerpc-di fb-modules-4.15.0-2-powerpc-di input-modules-4.15.0-2-powerpc-di event-modules-4.15.0-2-powerpc-di mouse-modules-4.15.0-2-powerpc-di nic-pcmcia-modules-4.15.0-2-powerpc-di pcmcia-modules-4.15.0-2-powerpc-di sata-modules-4.15.0-2-powerpc-di crc-modules-4.15.0-2-powerpc-di crypto-modules-4.15.0-2-powerpc-di crypto-dm-modules-4.15.0-2-powerpc-di ata-modules-4.15.0-2-powerpc-di nbd-modules-4.15.0-2-powerpc-di squashfs-modules-4.15.0-2-powerpc-di virtio-modules-4.15.0-2-powerpc-di uinput-modules-4.15.0-2-powerpc-di zlib-modules-4.15.0-2-powerpc-di udf-modules-4.15.0-2-powerpc-di fuse-modules-4.15.0-2-powerpc-di kernel-image-4.15.0-2-powerpc64-di nic-modules-4.15.0-2-powerpc64-di nic-shared-modules-4.15.0-2-powerpc64-di serial-modules-4.15.0-2-powerpc64-di usb-serial-modules-4.15.0-2-powerpc64-di ppp-modules-4.15.0-2-powerpc64-di pata-modules-4.15.0-2-powerpc64-di cdrom-core-modules-4.15.0-2-powerpc64-di firewire-core-modules-4.15.0-2-powerpc64-di scsi-core-modules-4.15.0-2-powerpc64-di scsi-modules-4.15.0-2-powerpc64-di loop-modules-4.15.0-2-powerpc64-di btrfs-modules-4.15.0-2-powerpc64-di ext4-modules-4.15.0-2-powerpc64-di isofs-modules-4.15.0-2-powerpc64-di jfs-modules-4.15.0-2-powerpc64-di xfs-modules-4.15.0-2-powerpc64-di fat-modules-4.15.0-2-powerpc64-di hfs-modules-4.15.0-2-powerpc64-di affs-modules-4.15.0-2-powerpc64-di md-modules-4.15.0-2-powerpc64-di multipath-modules-4.15.0-2-powerpc64-di usb-modules-4.15.0-2-powerpc64-di usb-storage-modules-4.15.0-2-powerpc64-di pcmcia-storage-modules-4.15.0-2-powerpc64-di input-modules-4.15.0-2-powerpc64-di event-modules-4.15.0-2-powerpc64-di mouse-modules-4.15.0-2-powerpc64-di nic-pcmcia-modules-4.15.0-2-powerpc64-di pcmcia-modules-4.15.0-2-powerpc64-di sata-modules-4.15.0-2-powerpc64-di crc-modules-4.15.0-2-powerpc64-di crypto-modules-4.15.0-2-powerpc64-di crypto-dm-modules-4.15.0-2-powerpc64-di ata-modules-4.15.0-2-powerpc64-di nbd-modules-4.15.0-2-powerpc64-di squashfs-modules-4.15.0-2-powerpc64-di virtio-modules-4.15.0-2-powerpc64-di uinput-modules-4.15.0-2-powerpc64-di udf-modules-4.15.0-2-powerpc64-di fuse-modules-4.15.0-2-powerpc64-di hypervisor-modules-4.15.0-2-powerpc64-di fancontrol-modules-4.15.0-2-powerpc64-di' UDEB_UNSIGNED_TEST_BUILD=False +binary-arch_powerpc_none: binary-arch_powerpc_none_powerpc binary-arch_powerpc_none_powerpc-smp binary-arch_powerpc_none_powerpc64 binary-arch_powerpc_none_real +binary-arch_powerpc_none_powerpc: binary-arch_powerpc_none_powerpc_real +binary-arch_powerpc_none_powerpc-smp: binary-arch_powerpc_none_powerpc-smp_real +binary-arch_powerpc_none_powerpc-smp_real:: + $(MAKE) -f debian/rules.real binary-arch-flavour ABINAME='4.15.0-2' ARCH='powerpc' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='powerpc-smp' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-powerpc-smp' KCONFIG='debian/config/config debian/config/kernelarch-powerpc/config debian/config/powerpc/config.powerpc debian/config/powerpc/config.powerpc-smp' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='powerpc' LOCALVERSION='-powerpc-smp' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-powerpc-smp' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VDSO='True' VERSION='4.15' +binary-arch_powerpc_none_powerpc64: binary-arch_powerpc_none_powerpc64_real +binary-arch_powerpc_none_powerpc64_real:: + $(MAKE) -f debian/rules.real binary-arch-flavour ABINAME='4.15.0-2' ARCH='powerpc' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='powerpc64' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-powerpc64' KCONFIG='debian/config/config debian/config/kernelarch-powerpc/config debian/config/kernelarch-powerpc/config-arch-64 debian/config/kernelarch-powerpc/config-arch-64-be' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='powerpc' LOCALVERSION='-powerpc64' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-powerpc64' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VDSO='True' VERSION='4.15' +binary-arch_powerpc_none_powerpc_real:: + $(MAKE) -f debian/rules.real binary-arch-flavour ABINAME='4.15.0-2' ARCH='powerpc' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='powerpc' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-powerpc' KCONFIG='debian/config/config debian/config/kernelarch-powerpc/config debian/config/powerpc/config.powerpc' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='powerpc' LOCALVERSION='-powerpc' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-powerpc' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VDSO='True' VERSION='4.15' +binary-arch_powerpc_none_real: +binary-arch_powerpc_real:: + $(MAKE) -f debian/rules.real binary-arch-arch ABINAME='4.15.0-2' ARCH='powerpc' KERNEL_ARCH='powerpc' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-arch_powerpcspe: binary-arch_powerpcspe_none binary-arch_powerpcspe_real +binary-arch_powerpcspe_none: binary-arch_powerpcspe_none_powerpcspe binary-arch_powerpcspe_none_real +binary-arch_powerpcspe_none_powerpcspe: binary-arch_powerpcspe_none_powerpcspe_real +binary-arch_powerpcspe_none_powerpcspe_real:: + $(MAKE) -f debian/rules.real binary-arch-flavour ABINAME='4.15.0-2' ARCH='powerpcspe' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='powerpcspe' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-powerpcspe' KCONFIG='debian/config/config debian/config/kernelarch-powerpc/config debian/config/powerpcspe/config' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='powerpc' LOCALVERSION='-powerpcspe' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-powerpcspe' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VDSO='True' VERSION='4.15' +binary-arch_powerpcspe_none_real: +binary-arch_powerpcspe_real:: + $(MAKE) -f debian/rules.real binary-arch-arch ABINAME='4.15.0-2' ARCH='powerpcspe' KERNEL_ARCH='powerpc' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-arch_ppc64:: binary-arch_ppc64_none binary-arch_ppc64_real +binary-arch_ppc64:: + $(MAKE) -f debian/rules.real install-udeb_ppc64 ABINAME='4.15.0-2' ARCH='ppc64' KERNEL_ARCH='powerpc' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' PACKAGE_NAMES='kernel-image-4.15.0-2-powerpc64-di nic-modules-4.15.0-2-powerpc64-di nic-shared-modules-4.15.0-2-powerpc64-di serial-modules-4.15.0-2-powerpc64-di usb-serial-modules-4.15.0-2-powerpc64-di ppp-modules-4.15.0-2-powerpc64-di pata-modules-4.15.0-2-powerpc64-di cdrom-core-modules-4.15.0-2-powerpc64-di firewire-core-modules-4.15.0-2-powerpc64-di scsi-core-modules-4.15.0-2-powerpc64-di scsi-modules-4.15.0-2-powerpc64-di loop-modules-4.15.0-2-powerpc64-di btrfs-modules-4.15.0-2-powerpc64-di ext4-modules-4.15.0-2-powerpc64-di isofs-modules-4.15.0-2-powerpc64-di jfs-modules-4.15.0-2-powerpc64-di xfs-modules-4.15.0-2-powerpc64-di fat-modules-4.15.0-2-powerpc64-di hfs-modules-4.15.0-2-powerpc64-di affs-modules-4.15.0-2-powerpc64-di md-modules-4.15.0-2-powerpc64-di multipath-modules-4.15.0-2-powerpc64-di usb-modules-4.15.0-2-powerpc64-di usb-storage-modules-4.15.0-2-powerpc64-di pcmcia-storage-modules-4.15.0-2-powerpc64-di input-modules-4.15.0-2-powerpc64-di event-modules-4.15.0-2-powerpc64-di mouse-modules-4.15.0-2-powerpc64-di nic-pcmcia-modules-4.15.0-2-powerpc64-di pcmcia-modules-4.15.0-2-powerpc64-di sata-modules-4.15.0-2-powerpc64-di crc-modules-4.15.0-2-powerpc64-di crypto-modules-4.15.0-2-powerpc64-di crypto-dm-modules-4.15.0-2-powerpc64-di ata-modules-4.15.0-2-powerpc64-di nbd-modules-4.15.0-2-powerpc64-di squashfs-modules-4.15.0-2-powerpc64-di virtio-modules-4.15.0-2-powerpc64-di uinput-modules-4.15.0-2-powerpc64-di udf-modules-4.15.0-2-powerpc64-di fuse-modules-4.15.0-2-powerpc64-di hypervisor-modules-4.15.0-2-powerpc64-di fancontrol-modules-4.15.0-2-powerpc64-di' UDEB_UNSIGNED_TEST_BUILD=False +binary-arch_ppc64_none: binary-arch_ppc64_none_powerpc64 binary-arch_ppc64_none_real +binary-arch_ppc64_none_powerpc64: binary-arch_ppc64_none_powerpc64_real +binary-arch_ppc64_none_powerpc64_real:: + $(MAKE) -f debian/rules.real binary-arch-flavour ABINAME='4.15.0-2' ARCH='ppc64' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='powerpc64' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-powerpc64' KCONFIG='debian/config/config debian/config/kernelarch-powerpc/config debian/config/kernelarch-powerpc/config-arch-64 debian/config/kernelarch-powerpc/config-arch-64-be' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='powerpc' LOCALVERSION='-powerpc64' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-powerpc64' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VDSO='True' VERSION='4.15' +binary-arch_ppc64_none_real: +binary-arch_ppc64_real:: + $(MAKE) -f debian/rules.real binary-arch-arch ABINAME='4.15.0-2' ARCH='ppc64' KERNEL_ARCH='powerpc' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-arch_ppc64el:: binary-arch_ppc64el_none binary-arch_ppc64el_real +binary-arch_ppc64el:: + $(MAKE) -f debian/rules.real install-udeb_ppc64el ABINAME='4.15.0-2' ARCH='ppc64el' KERNEL_ARCH='powerpc' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' PACKAGE_NAMES='kernel-image-4.15.0-2-powerpc64le-di nic-modules-4.15.0-2-powerpc64le-di nic-shared-modules-4.15.0-2-powerpc64le-di serial-modules-4.15.0-2-powerpc64le-di usb-serial-modules-4.15.0-2-powerpc64le-di ppp-modules-4.15.0-2-powerpc64le-di cdrom-core-modules-4.15.0-2-powerpc64le-di firewire-core-modules-4.15.0-2-powerpc64le-di scsi-core-modules-4.15.0-2-powerpc64le-di scsi-modules-4.15.0-2-powerpc64le-di loop-modules-4.15.0-2-powerpc64le-di btrfs-modules-4.15.0-2-powerpc64le-di ext4-modules-4.15.0-2-powerpc64le-di isofs-modules-4.15.0-2-powerpc64le-di jfs-modules-4.15.0-2-powerpc64le-di xfs-modules-4.15.0-2-powerpc64le-di fat-modules-4.15.0-2-powerpc64le-di md-modules-4.15.0-2-powerpc64le-di multipath-modules-4.15.0-2-powerpc64le-di usb-modules-4.15.0-2-powerpc64le-di usb-storage-modules-4.15.0-2-powerpc64le-di input-modules-4.15.0-2-powerpc64le-di event-modules-4.15.0-2-powerpc64le-di mouse-modules-4.15.0-2-powerpc64le-di sata-modules-4.15.0-2-powerpc64le-di crc-modules-4.15.0-2-powerpc64le-di crypto-modules-4.15.0-2-powerpc64le-di crypto-dm-modules-4.15.0-2-powerpc64le-di ata-modules-4.15.0-2-powerpc64le-di nbd-modules-4.15.0-2-powerpc64le-di squashfs-modules-4.15.0-2-powerpc64le-di virtio-modules-4.15.0-2-powerpc64le-di uinput-modules-4.15.0-2-powerpc64le-di udf-modules-4.15.0-2-powerpc64le-di fuse-modules-4.15.0-2-powerpc64le-di hypervisor-modules-4.15.0-2-powerpc64le-di fancontrol-modules-4.15.0-2-powerpc64le-di' UDEB_UNSIGNED_TEST_BUILD=False +binary-arch_ppc64el_none: binary-arch_ppc64el_none_powerpc64le binary-arch_ppc64el_none_real +binary-arch_ppc64el_none_powerpc64le: binary-arch_ppc64el_none_powerpc64le_real +binary-arch_ppc64el_none_powerpc64le_real:: + $(MAKE) -f debian/rules.real binary-arch-flavour ABINAME='4.15.0-2' ARCH='ppc64el' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='powerpc64le' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-powerpc64le' KCONFIG='debian/config/config debian/config/kernelarch-powerpc/config debian/config/kernelarch-powerpc/config-arch-64 debian/config/kernelarch-powerpc/config-arch-64-le' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='powerpc' LOCALVERSION='-powerpc64le' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-powerpc64le' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VDSO='True' VERSION='4.15' +binary-arch_ppc64el_none_real: +binary-arch_ppc64el_real:: + $(MAKE) -f debian/rules.real binary-arch-arch ABINAME='4.15.0-2' ARCH='ppc64el' KERNEL_ARCH='powerpc' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-arch_s390: binary-arch_s390_extra binary-arch_s390_real +binary-arch_s390_extra:: + $(MAKE) -f debian/rules.real install-dummy ARCH='s390' DH_OPTIONS='-plinux-compiler-gcc-7-s390' +binary-arch_s390_real:: + $(MAKE) -f debian/rules.real binary-arch-arch ABINAME='4.15.0-2' ARCH='s390' DO_HEADERS_ALL='False' KERNEL_ARCH='s390' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-arch_s390x:: binary-arch_s390x_extra binary-arch_s390x_none binary-arch_s390x_real +binary-arch_s390x:: + $(MAKE) -f debian/rules.real install-udeb_s390x ABINAME='4.15.0-2' ARCH='s390x' KERNEL_ARCH='s390' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' PACKAGE_NAMES='kernel-image-4.15.0-2-s390x-di nic-modules-4.15.0-2-s390x-di scsi-core-modules-4.15.0-2-s390x-di scsi-modules-4.15.0-2-s390x-di loop-modules-4.15.0-2-s390x-di btrfs-modules-4.15.0-2-s390x-di ext4-modules-4.15.0-2-s390x-di isofs-modules-4.15.0-2-s390x-di xfs-modules-4.15.0-2-s390x-di fat-modules-4.15.0-2-s390x-di md-modules-4.15.0-2-s390x-di multipath-modules-4.15.0-2-s390x-di crc-modules-4.15.0-2-s390x-di crypto-modules-4.15.0-2-s390x-di crypto-dm-modules-4.15.0-2-s390x-di nbd-modules-4.15.0-2-s390x-di virtio-modules-4.15.0-2-s390x-di zlib-modules-4.15.0-2-s390x-di udf-modules-4.15.0-2-s390x-di fuse-modules-4.15.0-2-s390x-di dasd-modules-4.15.0-2-s390x-di dasd-extra-modules-4.15.0-2-s390x-di' UDEB_UNSIGNED_TEST_BUILD=False +binary-arch_s390x_extra:: + $(MAKE) -f debian/rules.real install-dummy ARCH='s390x' DH_OPTIONS='-plinux-compiler-gcc-7-s390' +binary-arch_s390x_none: binary-arch_s390x_none_real binary-arch_s390x_none_s390x +binary-arch_s390x_none_real: +binary-arch_s390x_none_s390x: binary-arch_s390x_none_s390x_real +binary-arch_s390x_none_s390x_real:: + $(MAKE) -f debian/rules.real binary-arch-flavour ABINAME='4.15.0-2' ARCH='s390x' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='s390x' IMAGE_FILE='arch/s390/boot/image' IMAGE_INSTALL_STEM='vmlinuz' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-s390x' KCONFIG='debian/config/config debian/config/s390x/config' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='s390' LOCALVERSION='-s390x' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-s390x' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VDSO='True' VERSION='4.15' +binary-arch_s390x_real:: + $(MAKE) -f debian/rules.real binary-arch-arch ABINAME='4.15.0-2' ARCH='s390x' KERNEL_ARCH='s390' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-arch_sh3: binary-arch_sh3_real +binary-arch_sh3_real:: + $(MAKE) -f debian/rules.real binary-arch-arch ABINAME='4.15.0-2' ARCH='sh3' DO_HEADERS_ALL='False' KERNEL_ARCH='sh' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-arch_sh4:: binary-arch_sh4_none binary-arch_sh4_real +binary-arch_sh4:: + $(MAKE) -f debian/rules.real install-udeb_sh4 ABINAME='4.15.0-2' ARCH='sh4' KERNEL_ARCH='sh' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' PACKAGE_NAMES='kernel-image-4.15.0-2-sh7751r-di nic-modules-4.15.0-2-sh7751r-di usb-serial-modules-4.15.0-2-sh7751r-di ppp-modules-4.15.0-2-sh7751r-di pata-modules-4.15.0-2-sh7751r-di cdrom-core-modules-4.15.0-2-sh7751r-di firewire-core-modules-4.15.0-2-sh7751r-di loop-modules-4.15.0-2-sh7751r-di btrfs-modules-4.15.0-2-sh7751r-di ext4-modules-4.15.0-2-sh7751r-di isofs-modules-4.15.0-2-sh7751r-di jfs-modules-4.15.0-2-sh7751r-di xfs-modules-4.15.0-2-sh7751r-di fat-modules-4.15.0-2-sh7751r-di minix-modules-4.15.0-2-sh7751r-di md-modules-4.15.0-2-sh7751r-di multipath-modules-4.15.0-2-sh7751r-di usb-storage-modules-4.15.0-2-sh7751r-di nic-usb-modules-4.15.0-2-sh7751r-di sata-modules-4.15.0-2-sh7751r-di i2c-modules-4.15.0-2-sh7751r-di crc-modules-4.15.0-2-sh7751r-di crypto-modules-4.15.0-2-sh7751r-di crypto-dm-modules-4.15.0-2-sh7751r-di nbd-modules-4.15.0-2-sh7751r-di squashfs-modules-4.15.0-2-sh7751r-di speakup-modules-4.15.0-2-sh7751r-di virtio-modules-4.15.0-2-sh7751r-di sound-modules-4.15.0-2-sh7751r-di zlib-modules-4.15.0-2-sh7751r-di udf-modules-4.15.0-2-sh7751r-di fuse-modules-4.15.0-2-sh7751r-di kernel-image-4.15.0-2-sh7785lcr-di nic-modules-4.15.0-2-sh7785lcr-di usb-serial-modules-4.15.0-2-sh7785lcr-di ppp-modules-4.15.0-2-sh7785lcr-di pata-modules-4.15.0-2-sh7785lcr-di cdrom-core-modules-4.15.0-2-sh7785lcr-di firewire-core-modules-4.15.0-2-sh7785lcr-di loop-modules-4.15.0-2-sh7785lcr-di btrfs-modules-4.15.0-2-sh7785lcr-di ext4-modules-4.15.0-2-sh7785lcr-di isofs-modules-4.15.0-2-sh7785lcr-di jfs-modules-4.15.0-2-sh7785lcr-di xfs-modules-4.15.0-2-sh7785lcr-di fat-modules-4.15.0-2-sh7785lcr-di minix-modules-4.15.0-2-sh7785lcr-di md-modules-4.15.0-2-sh7785lcr-di multipath-modules-4.15.0-2-sh7785lcr-di nic-usb-modules-4.15.0-2-sh7785lcr-di sata-modules-4.15.0-2-sh7785lcr-di crc-modules-4.15.0-2-sh7785lcr-di crypto-modules-4.15.0-2-sh7785lcr-di crypto-dm-modules-4.15.0-2-sh7785lcr-di nbd-modules-4.15.0-2-sh7785lcr-di squashfs-modules-4.15.0-2-sh7785lcr-di speakup-modules-4.15.0-2-sh7785lcr-di sound-modules-4.15.0-2-sh7785lcr-di zlib-modules-4.15.0-2-sh7785lcr-di udf-modules-4.15.0-2-sh7785lcr-di fuse-modules-4.15.0-2-sh7785lcr-di' UDEB_UNSIGNED_TEST_BUILD=False +binary-arch_sh4_none: binary-arch_sh4_none_real binary-arch_sh4_none_sh7751r binary-arch_sh4_none_sh7785lcr +binary-arch_sh4_none_real: +binary-arch_sh4_none_sh7751r: binary-arch_sh4_none_sh7751r_real +binary-arch_sh4_none_sh7751r_real:: + $(MAKE) -f debian/rules.real binary-arch-flavour ABINAME='4.15.0-2' ARCH='sh4' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='sh7751r' IMAGE_FILE='arch/sh/boot/zImage' IMAGE_INSTALL_STEM='vmlinuz' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-sh7751r' KCONFIG='debian/config/config debian/config/sh4/config debian/config/sh4/config.sh7751r' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='sh' LOCALVERSION='-sh7751r' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-sh7751r' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-arch_sh4_none_sh7785lcr: binary-arch_sh4_none_sh7785lcr_real +binary-arch_sh4_none_sh7785lcr_real:: + $(MAKE) -f debian/rules.real binary-arch-flavour ABINAME='4.15.0-2' ARCH='sh4' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='sh7785lcr' IMAGE_FILE='arch/sh/boot/zImage' IMAGE_INSTALL_STEM='vmlinuz' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-sh7785lcr' KCONFIG='debian/config/config debian/config/sh4/config debian/config/sh4/config.sh7785lcr' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='sh' LOCALVERSION='-sh7785lcr' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-sh7785lcr' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-arch_sh4_real:: + $(MAKE) -f debian/rules.real binary-arch-arch ABINAME='4.15.0-2' ARCH='sh4' KERNEL_ARCH='sh' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-arch_sparc: binary-arch_sparc_real +binary-arch_sparc64:: binary-arch_sparc64_none binary-arch_sparc64_real +binary-arch_sparc64:: + $(MAKE) -f debian/rules.real install-udeb_sparc64 ABINAME='4.15.0-2' ARCH='sparc64' KERNEL_ARCH='sparc' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' PACKAGE_NAMES='kernel-image-4.15.0-2-sparc64-di nic-modules-4.15.0-2-sparc64-di ppp-modules-4.15.0-2-sparc64-di pata-modules-4.15.0-2-sparc64-di cdrom-core-modules-4.15.0-2-sparc64-di scsi-core-modules-4.15.0-2-sparc64-di scsi-modules-4.15.0-2-sparc64-di btrfs-modules-4.15.0-2-sparc64-di ext4-modules-4.15.0-2-sparc64-di isofs-modules-4.15.0-2-sparc64-di jfs-modules-4.15.0-2-sparc64-di ufs-modules-4.15.0-2-sparc64-di xfs-modules-4.15.0-2-sparc64-di fat-modules-4.15.0-2-sparc64-di md-modules-4.15.0-2-sparc64-di multipath-modules-4.15.0-2-sparc64-di usb-modules-4.15.0-2-sparc64-di usb-storage-modules-4.15.0-2-sparc64-di input-modules-4.15.0-2-sparc64-di sata-modules-4.15.0-2-sparc64-di crc-modules-4.15.0-2-sparc64-di crypto-modules-4.15.0-2-sparc64-di crypto-dm-modules-4.15.0-2-sparc64-di ata-modules-4.15.0-2-sparc64-di nbd-modules-4.15.0-2-sparc64-di squashfs-modules-4.15.0-2-sparc64-di virtio-modules-4.15.0-2-sparc64-di zlib-modules-4.15.0-2-sparc64-di udf-modules-4.15.0-2-sparc64-di fuse-modules-4.15.0-2-sparc64-di' UDEB_UNSIGNED_TEST_BUILD=False +binary-arch_sparc64_none: binary-arch_sparc64_none_real binary-arch_sparc64_none_sparc64 binary-arch_sparc64_none_sparc64-smp +binary-arch_sparc64_none_real: +binary-arch_sparc64_none_sparc64: binary-arch_sparc64_none_sparc64_real +binary-arch_sparc64_none_sparc64-smp: binary-arch_sparc64_none_sparc64-smp_real +binary-arch_sparc64_none_sparc64-smp_real:: + $(MAKE) -f debian/rules.real binary-arch-flavour ABINAME='4.15.0-2' ARCH='sparc64' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='sparc64-smp' IMAGE_FILE='arch/sparc/boot/zImage' IMAGE_INSTALL_STEM='vmlinuz' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-sparc64-smp' KCONFIG='debian/config/config debian/config/kernelarch-sparc/config debian/config/kernelarch-sparc/config-smp' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='sparc' LOCALVERSION='-sparc64-smp' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-sparc64-smp' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-arch_sparc64_none_sparc64_real:: + $(MAKE) -f debian/rules.real binary-arch-flavour ABINAME='4.15.0-2' ARCH='sparc64' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='sparc64' IMAGE_FILE='arch/sparc/boot/zImage' IMAGE_INSTALL_STEM='vmlinuz' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-sparc64' KCONFIG='debian/config/config debian/config/kernelarch-sparc/config debian/config/kernelarch-sparc/config-up' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='sparc' LOCALVERSION='-sparc64' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-sparc64' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-arch_sparc64_real:: + $(MAKE) -f debian/rules.real binary-arch-arch ABINAME='4.15.0-2' ARCH='sparc64' KERNEL_ARCH='sparc' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-arch_sparc_real:: + $(MAKE) -f debian/rules.real binary-arch-arch ABINAME='4.15.0-2' ARCH='sparc' DO_HEADERS_ALL='False' KERNEL_ARCH='sparc' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-arch_tilegx: binary-arch_tilegx_real +binary-arch_tilegx_real:: + $(MAKE) -f debian/rules.real binary-arch-arch ABINAME='4.15.0-2' ARCH='tilegx' DO_HEADERS_ALL='False' KERNEL_ARCH='tile' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-arch_x32: binary-arch_x32_extra binary-arch_x32_real +binary-arch_x32_extra:: + $(MAKE) -f debian/rules.real install-dummy ARCH='x32' DH_OPTIONS='-plinux-compiler-gcc-7-x86' +binary-arch_x32_real:: + $(MAKE) -f debian/rules.real binary-arch-arch ABINAME='4.15.0-2' ARCH='x32' DO_HEADERS_ALL='False' KERNEL_ARCH='x86' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-indep:: binary-indep_none setup +binary-indep:: + $(MAKE) -f debian/rules.real binary-indep ABINAME='4.15.0-2' ALL_FEATURESETS='none' ALL_TRIPLETS='alpha_none_alpha-generic alpha_none_alpha-smp amd64_none_amd64 amd64_none_cloud-amd64 arm64_none_arm64 armhf_none_armmp armhf_none_armmp-lpae hppa_none_parisc hppa_none_parisc64-smp i386_none_686 i386_none_686-pae m68k_none_m68k mips_none_4kc-malta mips_none_5kc-malta mips_none_octeon mips64_none_5kc-malta mips64_none_octeon mips64el_none_5kc-malta mips64el_none_loongson-3 mips64el_none_octeon mips64r6_none_mips64r6 mips64r6el_none_mips64r6el mipsel_none_4kc-malta mipsel_none_5kc-malta mipsel_none_loongson-3 mipsel_none_octeon mipsr6_none_mips32r6 mipsr6_none_mips64r6 mipsr6el_none_mips32r6el mipsr6el_none_mips64r6el powerpc_none_powerpc powerpc_none_powerpc-smp powerpc_none_powerpc64 powerpcspe_none_powerpcspe ppc64_none_powerpc64 ppc64el_none_powerpc64le s390x_none_s390x sh4_none_sh7751r sh4_none_sh7785lcr sparc64_none_sparc64 sparc64_none_sparc64-smp' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-indep_none: binary-indep_none_real +binary-indep_none_real:: + $(MAKE) -f debian/rules.real binary-indep-featureset ABINAME='4.15.0-2' ALL_KERNEL_ARCHES='alpha arm arm64 m68k mips parisc powerpc s390 sh sparc x86' FEATURESET='none' LOCALVERSION='' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-libc-dev_alpha:: source_none_real +binary-libc-dev_alpha:: + $(MAKE) -f debian/rules.real install-libc-dev_alpha ABINAME='4.15.0-2' ARCH='alpha' KERNEL_ARCH='alpha' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-libc-dev_amd64:: source_none_real +binary-libc-dev_amd64:: + $(MAKE) -f debian/rules.real install-libc-dev_amd64 ABINAME='4.15.0-2' ARCH='amd64' KERNEL_ARCH='x86' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-libc-dev_arm64:: source_none_real +binary-libc-dev_arm64:: + $(MAKE) -f debian/rules.real install-libc-dev_arm64 ABINAME='4.15.0-2' ARCH='arm64' KERNEL_ARCH='arm64' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-libc-dev_arm64ilp32:: source_none_real +binary-libc-dev_arm64ilp32:: + $(MAKE) -f debian/rules.real install-libc-dev_arm64ilp32 ABINAME='4.15.0-2' ARCH='arm64ilp32' DO_HEADERS_ALL='False' KERNEL_ARCH='arm64' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-libc-dev_armel:: source_none_real +binary-libc-dev_armel:: + $(MAKE) -f debian/rules.real install-libc-dev_armel ABINAME='4.15.0-2' ARCH='armel' DO_HEADERS_ALL='False' KERNEL_ARCH='arm' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-libc-dev_armhf:: source_none_real +binary-libc-dev_armhf:: + $(MAKE) -f debian/rules.real install-libc-dev_armhf ABINAME='4.15.0-2' ARCH='armhf' KERNEL_ARCH='arm' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-libc-dev_hppa:: source_none_real +binary-libc-dev_hppa:: + $(MAKE) -f debian/rules.real install-libc-dev_hppa ABINAME='4.15.0-2' ARCH='hppa' KERNEL_ARCH='parisc' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-libc-dev_i386:: source_none_real +binary-libc-dev_i386:: + $(MAKE) -f debian/rules.real install-libc-dev_i386 ABINAME='4.15.0-2' ARCH='i386' KERNEL_ARCH='x86' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-libc-dev_m68k:: source_none_real +binary-libc-dev_m68k:: + $(MAKE) -f debian/rules.real install-libc-dev_m68k ABINAME='4.15.0-2' ARCH='m68k' KERNEL_ARCH='m68k' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-libc-dev_mips:: source_none_real +binary-libc-dev_mips:: + $(MAKE) -f debian/rules.real install-libc-dev_mips ABINAME='4.15.0-2' ARCH='mips' KERNEL_ARCH='mips' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-libc-dev_mips64:: source_none_real +binary-libc-dev_mips64:: + $(MAKE) -f debian/rules.real install-libc-dev_mips64 ABINAME='4.15.0-2' ARCH='mips64' KERNEL_ARCH='mips' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-libc-dev_mips64el:: source_none_real +binary-libc-dev_mips64el:: + $(MAKE) -f debian/rules.real install-libc-dev_mips64el ABINAME='4.15.0-2' ARCH='mips64el' KERNEL_ARCH='mips' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-libc-dev_mips64r6:: source_none_real +binary-libc-dev_mips64r6:: + $(MAKE) -f debian/rules.real install-libc-dev_mips64r6 ABINAME='4.15.0-2' ARCH='mips64r6' KERNEL_ARCH='mips' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-libc-dev_mips64r6el:: source_none_real +binary-libc-dev_mips64r6el:: + $(MAKE) -f debian/rules.real install-libc-dev_mips64r6el ABINAME='4.15.0-2' ARCH='mips64r6el' KERNEL_ARCH='mips' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-libc-dev_mipsel:: source_none_real +binary-libc-dev_mipsel:: + $(MAKE) -f debian/rules.real install-libc-dev_mipsel ABINAME='4.15.0-2' ARCH='mipsel' KERNEL_ARCH='mips' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-libc-dev_mipsn32:: source_none_real +binary-libc-dev_mipsn32:: + $(MAKE) -f debian/rules.real install-libc-dev_mipsn32 ABINAME='4.15.0-2' ARCH='mipsn32' DO_HEADERS_ALL='False' KERNEL_ARCH='mips' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-libc-dev_mipsn32el:: source_none_real +binary-libc-dev_mipsn32el:: + $(MAKE) -f debian/rules.real install-libc-dev_mipsn32el ABINAME='4.15.0-2' ARCH='mipsn32el' DO_HEADERS_ALL='False' KERNEL_ARCH='mips' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-libc-dev_mipsn32r6:: source_none_real +binary-libc-dev_mipsn32r6:: + $(MAKE) -f debian/rules.real install-libc-dev_mipsn32r6 ABINAME='4.15.0-2' ARCH='mipsn32r6' DO_HEADERS_ALL='False' KERNEL_ARCH='mips' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-libc-dev_mipsn32r6el:: source_none_real +binary-libc-dev_mipsn32r6el:: + $(MAKE) -f debian/rules.real install-libc-dev_mipsn32r6el ABINAME='4.15.0-2' ARCH='mipsn32r6el' DO_HEADERS_ALL='False' KERNEL_ARCH='mips' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-libc-dev_mipsr6:: source_none_real +binary-libc-dev_mipsr6:: + $(MAKE) -f debian/rules.real install-libc-dev_mipsr6 ABINAME='4.15.0-2' ARCH='mipsr6' KERNEL_ARCH='mips' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-libc-dev_mipsr6el:: source_none_real +binary-libc-dev_mipsr6el:: + $(MAKE) -f debian/rules.real install-libc-dev_mipsr6el ABINAME='4.15.0-2' ARCH='mipsr6el' KERNEL_ARCH='mips' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-libc-dev_powerpc:: source_none_real +binary-libc-dev_powerpc:: + $(MAKE) -f debian/rules.real install-libc-dev_powerpc ABINAME='4.15.0-2' ARCH='powerpc' KERNEL_ARCH='powerpc' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-libc-dev_powerpcspe:: source_none_real +binary-libc-dev_powerpcspe:: + $(MAKE) -f debian/rules.real install-libc-dev_powerpcspe ABINAME='4.15.0-2' ARCH='powerpcspe' KERNEL_ARCH='powerpc' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-libc-dev_ppc64:: source_none_real +binary-libc-dev_ppc64:: + $(MAKE) -f debian/rules.real install-libc-dev_ppc64 ABINAME='4.15.0-2' ARCH='ppc64' KERNEL_ARCH='powerpc' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-libc-dev_ppc64el:: source_none_real +binary-libc-dev_ppc64el:: + $(MAKE) -f debian/rules.real install-libc-dev_ppc64el ABINAME='4.15.0-2' ARCH='ppc64el' KERNEL_ARCH='powerpc' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-libc-dev_s390:: source_none_real +binary-libc-dev_s390:: + $(MAKE) -f debian/rules.real install-libc-dev_s390 ABINAME='4.15.0-2' ARCH='s390' DO_HEADERS_ALL='False' KERNEL_ARCH='s390' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-libc-dev_s390x:: source_none_real +binary-libc-dev_s390x:: + $(MAKE) -f debian/rules.real install-libc-dev_s390x ABINAME='4.15.0-2' ARCH='s390x' KERNEL_ARCH='s390' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-libc-dev_sh3:: source_none_real +binary-libc-dev_sh3:: + $(MAKE) -f debian/rules.real install-libc-dev_sh3 ABINAME='4.15.0-2' ARCH='sh3' DO_HEADERS_ALL='False' KERNEL_ARCH='sh' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-libc-dev_sh4:: source_none_real +binary-libc-dev_sh4:: + $(MAKE) -f debian/rules.real install-libc-dev_sh4 ABINAME='4.15.0-2' ARCH='sh4' KERNEL_ARCH='sh' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-libc-dev_sparc:: source_none_real +binary-libc-dev_sparc:: + $(MAKE) -f debian/rules.real install-libc-dev_sparc ABINAME='4.15.0-2' ARCH='sparc' DO_HEADERS_ALL='False' KERNEL_ARCH='sparc' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-libc-dev_sparc64:: source_none_real +binary-libc-dev_sparc64:: + $(MAKE) -f debian/rules.real install-libc-dev_sparc64 ABINAME='4.15.0-2' ARCH='sparc64' KERNEL_ARCH='sparc' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-libc-dev_tilegx:: source_none_real +binary-libc-dev_tilegx:: + $(MAKE) -f debian/rules.real install-libc-dev_tilegx ABINAME='4.15.0-2' ARCH='tilegx' DO_HEADERS_ALL='False' KERNEL_ARCH='tile' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +binary-libc-dev_x32:: source_none_real +binary-libc-dev_x32:: + $(MAKE) -f debian/rules.real install-libc-dev_x32 ABINAME='4.15.0-2' ARCH='x32' DO_HEADERS_ALL='False' KERNEL_ARCH='x86' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +build-arch: build-arch_alpha build-arch_amd64 build-arch_arm64 build-arch_arm64ilp32 build-arch_armel build-arch_armhf build-arch_hppa build-arch_i386 build-arch_m68k build-arch_mips build-arch_mips64 build-arch_mips64el build-arch_mips64r6 build-arch_mips64r6el build-arch_mipsel build-arch_mipsn32 build-arch_mipsn32el build-arch_mipsn32r6 build-arch_mipsn32r6el build-arch_mipsr6 build-arch_mipsr6el build-arch_powerpc build-arch_powerpcspe build-arch_ppc64 build-arch_ppc64el build-arch_s390 build-arch_s390x build-arch_sh3 build-arch_sh4 build-arch_sparc build-arch_sparc64 build-arch_tilegx build-arch_x32 +build-arch_alpha: build-arch_alpha_none build-arch_alpha_real +build-arch_alpha_none: build-arch_alpha_none_alpha-generic build-arch_alpha_none_alpha-smp build-arch_alpha_none_real +build-arch_alpha_none_alpha-generic: build-arch_alpha_none_alpha-generic_real +build-arch_alpha_none_alpha-generic_real:: + $(MAKE) -f debian/rules.real build-arch-flavour ABINAME='4.15.0-2' ARCH='alpha' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='alpha-generic' IMAGE_FILE='arch/alpha/boot/vmlinux.gz' IMAGE_INSTALL_STEM='vmlinuz' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-alpha-generic' KCONFIG='debian/config/config debian/config/alpha/config debian/config/alpha/config.alpha-generic' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='alpha' LOCALVERSION='-alpha-generic' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-alpha-generic' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +build-arch_alpha_none_alpha-smp: build-arch_alpha_none_alpha-smp_real +build-arch_alpha_none_alpha-smp_real:: + $(MAKE) -f debian/rules.real build-arch-flavour ABINAME='4.15.0-2' ARCH='alpha' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='alpha-smp' IMAGE_FILE='arch/alpha/boot/vmlinux.gz' IMAGE_INSTALL_STEM='vmlinuz' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-alpha-smp' KCONFIG='debian/config/config debian/config/alpha/config debian/config/alpha/config.alpha-smp' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='alpha' LOCALVERSION='-alpha-smp' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-alpha-smp' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +build-arch_alpha_none_real: +build-arch_alpha_real:: + $(MAKE) -f debian/rules.real build-arch-arch ABINAME='4.15.0-2' ARCH='alpha' KERNEL_ARCH='alpha' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +build-arch_amd64: build-arch_amd64_none build-arch_amd64_real +build-arch_amd64_none: build-arch_amd64_none_amd64 build-arch_amd64_none_cloud-amd64 build-arch_amd64_none_real +build-arch_amd64_none_amd64: build-arch_amd64_none_amd64_real +build-arch_amd64_none_amd64_real:: + $(MAKE) -f debian/rules.real build-arch-flavour ABINAME='4.15.0-2' ARCH='amd64' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='amd64' IMAGE_FILE='arch/x86/boot/bzImage' IMAGE_INSTALL_STEM='vmlinuz' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-amd64' KCONFIG='debian/config/config debian/config/kernelarch-x86/config debian/config/amd64/config' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='x86' LOCALVERSION='-amd64' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-amd64' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VDSO='True' VERSION='4.15' +build-arch_amd64_none_cloud-amd64: build-arch_amd64_none_cloud-amd64_real +build-arch_amd64_none_cloud-amd64_real:: + $(MAKE) -f debian/rules.real build-arch-flavour ABINAME='4.15.0-2' ARCH='amd64' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='cloud-amd64' IMAGE_FILE='arch/x86/boot/bzImage' IMAGE_INSTALL_STEM='vmlinuz' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-cloud-amd64' KCONFIG='debian/config/config debian/config/kernelarch-x86/config debian/config/amd64/config debian/config/amd64/config.cloud-amd64' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='x86' LOCALVERSION='-cloud-amd64' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-cloud-amd64' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VDSO='True' VERSION='4.15' +build-arch_amd64_none_real: +build-arch_amd64_real:: + $(MAKE) -f debian/rules.real build-arch-arch ABINAME='4.15.0-2' ARCH='amd64' KERNEL_ARCH='x86' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +build-arch_arm64: build-arch_arm64_none build-arch_arm64_real +build-arch_arm64_none: build-arch_arm64_none_arm64 build-arch_arm64_none_real +build-arch_arm64_none_arm64: build-arch_arm64_none_arm64_real +build-arch_arm64_none_arm64_real:: + $(MAKE) -f debian/rules.real build-arch-flavour ABINAME='4.15.0-2' ARCH='arm64' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='arm64' IMAGE_FILE='arch/arm64/boot/Image' IMAGE_INSTALL_STEM='vmlinuz' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-arm64' KCONFIG='debian/config/config debian/config/arm64/config' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='arm64' LOCALVERSION='-arm64' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-arm64' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VDSO='True' VERSION='4.15' +build-arch_arm64_none_real: +build-arch_arm64_real:: + $(MAKE) -f debian/rules.real build-arch-arch ABINAME='4.15.0-2' ARCH='arm64' KERNEL_ARCH='arm64' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +build-arch_arm64ilp32: build-arch_arm64ilp32_real +build-arch_arm64ilp32_real:: + $(MAKE) -f debian/rules.real build-arch-arch ABINAME='4.15.0-2' ARCH='arm64ilp32' DO_HEADERS_ALL='False' KERNEL_ARCH='arm64' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +build-arch_armel: build-arch_armel_real +build-arch_armel_real:: + $(MAKE) -f debian/rules.real build-arch-arch ABINAME='4.15.0-2' ARCH='armel' DO_HEADERS_ALL='False' KERNEL_ARCH='arm' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +build-arch_armhf: build-arch_armhf_none build-arch_armhf_real +build-arch_armhf_none: build-arch_armhf_none_armmp build-arch_armhf_none_armmp-lpae build-arch_armhf_none_real +build-arch_armhf_none_armmp: build-arch_armhf_none_armmp_real +build-arch_armhf_none_armmp-lpae: build-arch_armhf_none_armmp-lpae_real +build-arch_armhf_none_armmp-lpae_real:: + $(MAKE) -f debian/rules.real build-arch-flavour ABINAME='4.15.0-2' ARCH='armhf' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='armmp-lpae' IMAGE_FILE='arch/arm/boot/zImage' IMAGE_INSTALL_STEM='vmlinuz' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-armmp-lpae' KCONFIG='debian/config/config debian/config/kernelarch-arm/config debian/config/armhf/config debian/config/armhf/config.armmp-lpae' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='arm' LOCALVERSION='-armmp-lpae' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-armmp-lpae' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VDSO='True' VERSION='4.15' +build-arch_armhf_none_armmp_real:: + $(MAKE) -f debian/rules.real build-arch-flavour ABINAME='4.15.0-2' ARCH='armhf' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='armmp' IMAGE_FILE='arch/arm/boot/zImage' IMAGE_INSTALL_STEM='vmlinuz' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-armmp' KCONFIG='debian/config/config debian/config/kernelarch-arm/config debian/config/armhf/config' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='arm' LOCALVERSION='-armmp' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-armmp' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VDSO='True' VERSION='4.15' +build-arch_armhf_none_real: +build-arch_armhf_real:: + $(MAKE) -f debian/rules.real build-arch-arch ABINAME='4.15.0-2' ARCH='armhf' KERNEL_ARCH='arm' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +build-arch_hppa: build-arch_hppa_none build-arch_hppa_real +build-arch_hppa_none: build-arch_hppa_none_parisc build-arch_hppa_none_parisc64-smp build-arch_hppa_none_real +build-arch_hppa_none_parisc: build-arch_hppa_none_parisc_real +build-arch_hppa_none_parisc64-smp: build-arch_hppa_none_parisc64-smp_real +build-arch_hppa_none_parisc64-smp_real:: + $(MAKE) -f debian/rules.real build-arch-flavour ABINAME='4.15.0-2' ARCH='hppa' CFLAGS_KERNEL='-fno-cse-follow-jumps' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='parisc64-smp' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-parisc64-smp' KCONFIG='debian/config/config debian/config/hppa/config debian/config/hppa/config.parisc64-smp' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='parisc' LOCALVERSION='-parisc64-smp' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-parisc64-smp' OVERRIDE_HOST_TYPE='hppa64-linux-gnu' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +build-arch_hppa_none_parisc_real:: + $(MAKE) -f debian/rules.real build-arch-flavour ABINAME='4.15.0-2' ARCH='hppa' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='parisc' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-parisc' KCONFIG='debian/config/config debian/config/hppa/config debian/config/hppa/config.parisc' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='parisc' LOCALVERSION='-parisc' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-parisc' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +build-arch_hppa_none_real: +build-arch_hppa_real:: + $(MAKE) -f debian/rules.real build-arch-arch ABINAME='4.15.0-2' ARCH='hppa' KERNEL_ARCH='parisc' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +build-arch_i386: build-arch_i386_none build-arch_i386_real +build-arch_i386_none: build-arch_i386_none_686 build-arch_i386_none_686-pae build-arch_i386_none_real +build-arch_i386_none_686: build-arch_i386_none_686_real +build-arch_i386_none_686-pae: build-arch_i386_none_686-pae_real +build-arch_i386_none_686-pae_real:: + $(MAKE) -f debian/rules.real build-arch-flavour ABINAME='4.15.0-2' ARCH='i386' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='686-pae' IMAGE_FILE='arch/x86/boot/bzImage' IMAGE_INSTALL_STEM='vmlinuz' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-686-pae' KCONFIG='debian/config/config debian/config/kernelarch-x86/config debian/config/i386/config debian/config/i386/config.686-pae' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='x86' LOCALVERSION='-686-pae' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-686-pae' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VDSO='True' VERSION='4.15' +build-arch_i386_none_686_real:: + $(MAKE) -f debian/rules.real build-arch-flavour ABINAME='4.15.0-2' ARCH='i386' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='686' IMAGE_FILE='arch/x86/boot/bzImage' IMAGE_INSTALL_STEM='vmlinuz' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-686' KCONFIG='debian/config/config debian/config/kernelarch-x86/config debian/config/i386/config debian/config/i386/config.686' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='x86' LOCALVERSION='-686' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-686' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VDSO='True' VERSION='4.15' +build-arch_i386_none_real: +build-arch_i386_real:: + $(MAKE) -f debian/rules.real build-arch-arch ABINAME='4.15.0-2' ARCH='i386' KERNEL_ARCH='x86' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +build-arch_m68k: build-arch_m68k_none build-arch_m68k_real +build-arch_m68k_none: build-arch_m68k_none_m68k build-arch_m68k_none_real +build-arch_m68k_none_m68k: build-arch_m68k_none_m68k_real +build-arch_m68k_none_m68k_real:: + $(MAKE) -f debian/rules.real build-arch-flavour ABINAME='4.15.0-2' ARCH='m68k' CFLAGS_KERNEL='-ffreestanding' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='m68k' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-m68k' KCONFIG='debian/config/config debian/config/m68k/config' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='m68k' LOCALVERSION='-m68k' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-m68k' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +build-arch_m68k_none_real: +build-arch_m68k_real:: + $(MAKE) -f debian/rules.real build-arch-arch ABINAME='4.15.0-2' ARCH='m68k' KERNEL_ARCH='m68k' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +build-arch_mips: build-arch_mips_none build-arch_mips_real +build-arch_mips64: build-arch_mips64_none build-arch_mips64_real +build-arch_mips64_none: build-arch_mips64_none_5kc-malta build-arch_mips64_none_octeon build-arch_mips64_none_real +build-arch_mips64_none_5kc-malta: build-arch_mips64_none_5kc-malta_real +build-arch_mips64_none_5kc-malta_real:: + $(MAKE) -f debian/rules.real build-arch-flavour ABINAME='4.15.0-2' ARCH='mips64' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='5kc-malta' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-5kc-malta' KCONFIG='debian/config/config debian/config/kernelarch-mips/config debian/config/mips64/config debian/config/kernelarch-mips/config.malta debian/config/kernelarch-mips/config.mips64r2' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='mips' LOCALVERSION='-5kc-malta' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-5kc-malta' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +build-arch_mips64_none_octeon: build-arch_mips64_none_octeon_real +build-arch_mips64_none_octeon_real:: + $(MAKE) -f debian/rules.real build-arch-flavour ABINAME='4.15.0-2' ARCH='mips64' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='octeon' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-octeon' KCONFIG='debian/config/config debian/config/kernelarch-mips/config debian/config/mips64/config debian/config/kernelarch-mips/config.octeon' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='mips' LOCALVERSION='-octeon' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-octeon' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +build-arch_mips64_none_real: +build-arch_mips64_real:: + $(MAKE) -f debian/rules.real build-arch-arch ABINAME='4.15.0-2' ARCH='mips64' KERNEL_ARCH='mips' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +build-arch_mips64el: build-arch_mips64el_none build-arch_mips64el_real +build-arch_mips64el_none: build-arch_mips64el_none_5kc-malta build-arch_mips64el_none_loongson-3 build-arch_mips64el_none_octeon build-arch_mips64el_none_real +build-arch_mips64el_none_5kc-malta: build-arch_mips64el_none_5kc-malta_real +build-arch_mips64el_none_5kc-malta_real:: + $(MAKE) -f debian/rules.real build-arch-flavour ABINAME='4.15.0-2' ARCH='mips64el' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='5kc-malta' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-5kc-malta' KCONFIG='debian/config/config debian/config/kernelarch-mips/config debian/config/mips64el/config debian/config/kernelarch-mips/config.malta debian/config/kernelarch-mips/config.mips64r2' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='mips' LOCALVERSION='-5kc-malta' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-5kc-malta' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +build-arch_mips64el_none_loongson-3: build-arch_mips64el_none_loongson-3_real +build-arch_mips64el_none_loongson-3_real:: + $(MAKE) -f debian/rules.real build-arch-flavour ABINAME='4.15.0-2' ARCH='mips64el' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='loongson-3' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-loongson-3' KCONFIG='debian/config/config debian/config/kernelarch-mips/config debian/config/mips64el/config debian/config/kernelarch-mips/config.loongson-3' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='mips' LOCALVERSION='-loongson-3' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-loongson-3' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +build-arch_mips64el_none_octeon: build-arch_mips64el_none_octeon_real +build-arch_mips64el_none_octeon_real:: + $(MAKE) -f debian/rules.real build-arch-flavour ABINAME='4.15.0-2' ARCH='mips64el' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='octeon' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-octeon' KCONFIG='debian/config/config debian/config/kernelarch-mips/config debian/config/mips64el/config debian/config/kernelarch-mips/config.octeon' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='mips' LOCALVERSION='-octeon' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-octeon' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +build-arch_mips64el_none_real: +build-arch_mips64el_real:: + $(MAKE) -f debian/rules.real build-arch-arch ABINAME='4.15.0-2' ARCH='mips64el' KERNEL_ARCH='mips' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +build-arch_mips64r6: build-arch_mips64r6_none build-arch_mips64r6_real +build-arch_mips64r6_none: build-arch_mips64r6_none_mips64r6 build-arch_mips64r6_none_real +build-arch_mips64r6_none_mips64r6: build-arch_mips64r6_none_mips64r6_real +build-arch_mips64r6_none_mips64r6_real:: + $(MAKE) -f debian/rules.real build-arch-flavour ABINAME='4.15.0-2' ARCH='mips64r6' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='mips64r6' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-mips64r6' KCONFIG='debian/config/config debian/config/kernelarch-mips/config debian/config/mips64r6/config debian/config/kernelarch-mips/config.malta debian/config/kernelarch-mips/config.mips64r6' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='mips' LOCALVERSION='-mips64r6' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-mips64r6' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +build-arch_mips64r6_none_real: +build-arch_mips64r6_real:: + $(MAKE) -f debian/rules.real build-arch-arch ABINAME='4.15.0-2' ARCH='mips64r6' KERNEL_ARCH='mips' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +build-arch_mips64r6el: build-arch_mips64r6el_none build-arch_mips64r6el_real +build-arch_mips64r6el_none: build-arch_mips64r6el_none_mips64r6el build-arch_mips64r6el_none_real +build-arch_mips64r6el_none_mips64r6el: build-arch_mips64r6el_none_mips64r6el_real +build-arch_mips64r6el_none_mips64r6el_real:: + $(MAKE) -f debian/rules.real build-arch-flavour ABINAME='4.15.0-2' ARCH='mips64r6el' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='mips64r6el' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-mips64r6el' KCONFIG='debian/config/config debian/config/kernelarch-mips/config debian/config/mips64r6el/config debian/config/kernelarch-mips/config.malta debian/config/kernelarch-mips/config.mips64r6' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='mips' LOCALVERSION='-mips64r6el' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-mips64r6el' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +build-arch_mips64r6el_none_real: +build-arch_mips64r6el_real:: + $(MAKE) -f debian/rules.real build-arch-arch ABINAME='4.15.0-2' ARCH='mips64r6el' KERNEL_ARCH='mips' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +build-arch_mips_none: build-arch_mips_none_4kc-malta build-arch_mips_none_5kc-malta build-arch_mips_none_octeon build-arch_mips_none_real +build-arch_mips_none_4kc-malta: build-arch_mips_none_4kc-malta_real +build-arch_mips_none_4kc-malta_real:: + $(MAKE) -f debian/rules.real build-arch-flavour ABINAME='4.15.0-2' ARCH='mips' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='4kc-malta' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-4kc-malta' KCONFIG='debian/config/config debian/config/kernelarch-mips/config debian/config/mips/config debian/config/kernelarch-mips/config.malta debian/config/kernelarch-mips/config.mips32r2' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='mips' LOCALVERSION='-4kc-malta' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-4kc-malta' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +build-arch_mips_none_5kc-malta: build-arch_mips_none_5kc-malta_real +build-arch_mips_none_5kc-malta_real:: + $(MAKE) -f debian/rules.real build-arch-flavour ABINAME='4.15.0-2' ARCH='mips' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='5kc-malta' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-5kc-malta' KCONFIG='debian/config/config debian/config/kernelarch-mips/config debian/config/mips/config debian/config/kernelarch-mips/config.malta debian/config/kernelarch-mips/config.mips64r2' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='mips' LOCALVERSION='-5kc-malta' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-5kc-malta' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +build-arch_mips_none_octeon: build-arch_mips_none_octeon_real +build-arch_mips_none_octeon_real:: + $(MAKE) -f debian/rules.real build-arch-flavour ABINAME='4.15.0-2' ARCH='mips' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='octeon' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-octeon' KCONFIG='debian/config/config debian/config/kernelarch-mips/config debian/config/mips/config debian/config/kernelarch-mips/config.octeon' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='mips' LOCALVERSION='-octeon' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-octeon' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +build-arch_mips_none_real: +build-arch_mips_real:: + $(MAKE) -f debian/rules.real build-arch-arch ABINAME='4.15.0-2' ARCH='mips' KERNEL_ARCH='mips' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +build-arch_mipsel: build-arch_mipsel_none build-arch_mipsel_real +build-arch_mipsel_none: build-arch_mipsel_none_4kc-malta build-arch_mipsel_none_5kc-malta build-arch_mipsel_none_loongson-3 build-arch_mipsel_none_octeon build-arch_mipsel_none_real +build-arch_mipsel_none_4kc-malta: build-arch_mipsel_none_4kc-malta_real +build-arch_mipsel_none_4kc-malta_real:: + $(MAKE) -f debian/rules.real build-arch-flavour ABINAME='4.15.0-2' ARCH='mipsel' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='4kc-malta' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-4kc-malta' KCONFIG='debian/config/config debian/config/kernelarch-mips/config debian/config/mipsel/config debian/config/kernelarch-mips/config.malta debian/config/kernelarch-mips/config.mips32r2' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='mips' LOCALVERSION='-4kc-malta' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-4kc-malta' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +build-arch_mipsel_none_5kc-malta: build-arch_mipsel_none_5kc-malta_real +build-arch_mipsel_none_5kc-malta_real:: + $(MAKE) -f debian/rules.real build-arch-flavour ABINAME='4.15.0-2' ARCH='mipsel' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='5kc-malta' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-5kc-malta' KCONFIG='debian/config/config debian/config/kernelarch-mips/config debian/config/mipsel/config debian/config/kernelarch-mips/config.malta debian/config/kernelarch-mips/config.mips64r2' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='mips' LOCALVERSION='-5kc-malta' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-5kc-malta' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +build-arch_mipsel_none_loongson-3: build-arch_mipsel_none_loongson-3_real +build-arch_mipsel_none_loongson-3_real:: + $(MAKE) -f debian/rules.real build-arch-flavour ABINAME='4.15.0-2' ARCH='mipsel' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='loongson-3' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-loongson-3' KCONFIG='debian/config/config debian/config/kernelarch-mips/config debian/config/mipsel/config debian/config/kernelarch-mips/config.loongson-3' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='mips' LOCALVERSION='-loongson-3' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-loongson-3' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +build-arch_mipsel_none_octeon: build-arch_mipsel_none_octeon_real +build-arch_mipsel_none_octeon_real:: + $(MAKE) -f debian/rules.real build-arch-flavour ABINAME='4.15.0-2' ARCH='mipsel' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='octeon' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-octeon' KCONFIG='debian/config/config debian/config/kernelarch-mips/config debian/config/mipsel/config debian/config/kernelarch-mips/config.octeon' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='mips' LOCALVERSION='-octeon' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-octeon' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +build-arch_mipsel_none_real: +build-arch_mipsel_real:: + $(MAKE) -f debian/rules.real build-arch-arch ABINAME='4.15.0-2' ARCH='mipsel' KERNEL_ARCH='mips' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +build-arch_mipsn32: build-arch_mipsn32_real +build-arch_mipsn32_real:: + $(MAKE) -f debian/rules.real build-arch-arch ABINAME='4.15.0-2' ARCH='mipsn32' DO_HEADERS_ALL='False' KERNEL_ARCH='mips' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +build-arch_mipsn32el: build-arch_mipsn32el_real +build-arch_mipsn32el_real:: + $(MAKE) -f debian/rules.real build-arch-arch ABINAME='4.15.0-2' ARCH='mipsn32el' DO_HEADERS_ALL='False' KERNEL_ARCH='mips' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +build-arch_mipsn32r6: build-arch_mipsn32r6_real +build-arch_mipsn32r6_real:: + $(MAKE) -f debian/rules.real build-arch-arch ABINAME='4.15.0-2' ARCH='mipsn32r6' DO_HEADERS_ALL='False' KERNEL_ARCH='mips' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +build-arch_mipsn32r6el: build-arch_mipsn32r6el_real +build-arch_mipsn32r6el_real:: + $(MAKE) -f debian/rules.real build-arch-arch ABINAME='4.15.0-2' ARCH='mipsn32r6el' DO_HEADERS_ALL='False' KERNEL_ARCH='mips' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +build-arch_mipsr6: build-arch_mipsr6_none build-arch_mipsr6_real +build-arch_mipsr6_none: build-arch_mipsr6_none_mips32r6 build-arch_mipsr6_none_mips64r6 build-arch_mipsr6_none_real +build-arch_mipsr6_none_mips32r6: build-arch_mipsr6_none_mips32r6_real +build-arch_mipsr6_none_mips32r6_real:: + $(MAKE) -f debian/rules.real build-arch-flavour ABINAME='4.15.0-2' ARCH='mipsr6' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='mips32r6' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-mips32r6' KCONFIG='debian/config/config debian/config/kernelarch-mips/config debian/config/mipsr6/config debian/config/kernelarch-mips/config.malta debian/config/kernelarch-mips/config.mips32r6' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='mips' LOCALVERSION='-mips32r6' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-mips32r6' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +build-arch_mipsr6_none_mips64r6: build-arch_mipsr6_none_mips64r6_real +build-arch_mipsr6_none_mips64r6_real:: + $(MAKE) -f debian/rules.real build-arch-flavour ABINAME='4.15.0-2' ARCH='mipsr6' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='mips64r6' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-mips64r6' KCONFIG='debian/config/config debian/config/kernelarch-mips/config debian/config/mipsr6/config debian/config/kernelarch-mips/config.malta debian/config/kernelarch-mips/config.mips64r6' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='mips' LOCALVERSION='-mips64r6' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-mips64r6' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +build-arch_mipsr6_none_real: +build-arch_mipsr6_real:: + $(MAKE) -f debian/rules.real build-arch-arch ABINAME='4.15.0-2' ARCH='mipsr6' KERNEL_ARCH='mips' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +build-arch_mipsr6el: build-arch_mipsr6el_none build-arch_mipsr6el_real +build-arch_mipsr6el_none: build-arch_mipsr6el_none_mips32r6el build-arch_mipsr6el_none_mips64r6el build-arch_mipsr6el_none_real +build-arch_mipsr6el_none_mips32r6el: build-arch_mipsr6el_none_mips32r6el_real +build-arch_mipsr6el_none_mips32r6el_real:: + $(MAKE) -f debian/rules.real build-arch-flavour ABINAME='4.15.0-2' ARCH='mipsr6el' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='mips32r6el' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-mips32r6el' KCONFIG='debian/config/config debian/config/kernelarch-mips/config debian/config/mipsr6el/config debian/config/kernelarch-mips/config.malta debian/config/kernelarch-mips/config.mips32r6' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='mips' LOCALVERSION='-mips32r6el' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-mips32r6el' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +build-arch_mipsr6el_none_mips64r6el: build-arch_mipsr6el_none_mips64r6el_real +build-arch_mipsr6el_none_mips64r6el_real:: + $(MAKE) -f debian/rules.real build-arch-flavour ABINAME='4.15.0-2' ARCH='mipsr6el' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='mips64r6el' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-mips64r6el' KCONFIG='debian/config/config debian/config/kernelarch-mips/config debian/config/mipsr6el/config debian/config/kernelarch-mips/config.malta debian/config/kernelarch-mips/config.mips64r6' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='mips' LOCALVERSION='-mips64r6el' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-mips64r6el' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +build-arch_mipsr6el_none_real: +build-arch_mipsr6el_real:: + $(MAKE) -f debian/rules.real build-arch-arch ABINAME='4.15.0-2' ARCH='mipsr6el' KERNEL_ARCH='mips' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +build-arch_powerpc: build-arch_powerpc_none build-arch_powerpc_real +build-arch_powerpc_none: build-arch_powerpc_none_powerpc build-arch_powerpc_none_powerpc-smp build-arch_powerpc_none_powerpc64 build-arch_powerpc_none_real +build-arch_powerpc_none_powerpc: build-arch_powerpc_none_powerpc_real +build-arch_powerpc_none_powerpc-smp: build-arch_powerpc_none_powerpc-smp_real +build-arch_powerpc_none_powerpc-smp_real:: + $(MAKE) -f debian/rules.real build-arch-flavour ABINAME='4.15.0-2' ARCH='powerpc' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='powerpc-smp' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-powerpc-smp' KCONFIG='debian/config/config debian/config/kernelarch-powerpc/config debian/config/powerpc/config.powerpc debian/config/powerpc/config.powerpc-smp' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='powerpc' LOCALVERSION='-powerpc-smp' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-powerpc-smp' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VDSO='True' VERSION='4.15' +build-arch_powerpc_none_powerpc64: build-arch_powerpc_none_powerpc64_real +build-arch_powerpc_none_powerpc64_real:: + $(MAKE) -f debian/rules.real build-arch-flavour ABINAME='4.15.0-2' ARCH='powerpc' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='powerpc64' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-powerpc64' KCONFIG='debian/config/config debian/config/kernelarch-powerpc/config debian/config/kernelarch-powerpc/config-arch-64 debian/config/kernelarch-powerpc/config-arch-64-be' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='powerpc' LOCALVERSION='-powerpc64' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-powerpc64' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VDSO='True' VERSION='4.15' +build-arch_powerpc_none_powerpc_real:: + $(MAKE) -f debian/rules.real build-arch-flavour ABINAME='4.15.0-2' ARCH='powerpc' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='powerpc' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-powerpc' KCONFIG='debian/config/config debian/config/kernelarch-powerpc/config debian/config/powerpc/config.powerpc' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='powerpc' LOCALVERSION='-powerpc' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-powerpc' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VDSO='True' VERSION='4.15' +build-arch_powerpc_none_real: +build-arch_powerpc_real:: + $(MAKE) -f debian/rules.real build-arch-arch ABINAME='4.15.0-2' ARCH='powerpc' KERNEL_ARCH='powerpc' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +build-arch_powerpcspe: build-arch_powerpcspe_none build-arch_powerpcspe_real +build-arch_powerpcspe_none: build-arch_powerpcspe_none_powerpcspe build-arch_powerpcspe_none_real +build-arch_powerpcspe_none_powerpcspe: build-arch_powerpcspe_none_powerpcspe_real +build-arch_powerpcspe_none_powerpcspe_real:: + $(MAKE) -f debian/rules.real build-arch-flavour ABINAME='4.15.0-2' ARCH='powerpcspe' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='powerpcspe' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-powerpcspe' KCONFIG='debian/config/config debian/config/kernelarch-powerpc/config debian/config/powerpcspe/config' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='powerpc' LOCALVERSION='-powerpcspe' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-powerpcspe' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VDSO='True' VERSION='4.15' +build-arch_powerpcspe_none_real: +build-arch_powerpcspe_real:: + $(MAKE) -f debian/rules.real build-arch-arch ABINAME='4.15.0-2' ARCH='powerpcspe' KERNEL_ARCH='powerpc' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +build-arch_ppc64: build-arch_ppc64_none build-arch_ppc64_real +build-arch_ppc64_none: build-arch_ppc64_none_powerpc64 build-arch_ppc64_none_real +build-arch_ppc64_none_powerpc64: build-arch_ppc64_none_powerpc64_real +build-arch_ppc64_none_powerpc64_real:: + $(MAKE) -f debian/rules.real build-arch-flavour ABINAME='4.15.0-2' ARCH='ppc64' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='powerpc64' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-powerpc64' KCONFIG='debian/config/config debian/config/kernelarch-powerpc/config debian/config/kernelarch-powerpc/config-arch-64 debian/config/kernelarch-powerpc/config-arch-64-be' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='powerpc' LOCALVERSION='-powerpc64' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-powerpc64' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VDSO='True' VERSION='4.15' +build-arch_ppc64_none_real: +build-arch_ppc64_real:: + $(MAKE) -f debian/rules.real build-arch-arch ABINAME='4.15.0-2' ARCH='ppc64' KERNEL_ARCH='powerpc' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +build-arch_ppc64el: build-arch_ppc64el_none build-arch_ppc64el_real +build-arch_ppc64el_none: build-arch_ppc64el_none_powerpc64le build-arch_ppc64el_none_real +build-arch_ppc64el_none_powerpc64le: build-arch_ppc64el_none_powerpc64le_real +build-arch_ppc64el_none_powerpc64le_real:: + $(MAKE) -f debian/rules.real build-arch-flavour ABINAME='4.15.0-2' ARCH='ppc64el' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='powerpc64le' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-powerpc64le' KCONFIG='debian/config/config debian/config/kernelarch-powerpc/config debian/config/kernelarch-powerpc/config-arch-64 debian/config/kernelarch-powerpc/config-arch-64-le' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='powerpc' LOCALVERSION='-powerpc64le' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-powerpc64le' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VDSO='True' VERSION='4.15' +build-arch_ppc64el_none_real: +build-arch_ppc64el_real:: + $(MAKE) -f debian/rules.real build-arch-arch ABINAME='4.15.0-2' ARCH='ppc64el' KERNEL_ARCH='powerpc' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +build-arch_s390: build-arch_s390_real +build-arch_s390_real:: + $(MAKE) -f debian/rules.real build-arch-arch ABINAME='4.15.0-2' ARCH='s390' DO_HEADERS_ALL='False' KERNEL_ARCH='s390' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +build-arch_s390x: build-arch_s390x_none build-arch_s390x_real +build-arch_s390x_none: build-arch_s390x_none_real build-arch_s390x_none_s390x +build-arch_s390x_none_real: +build-arch_s390x_none_s390x: build-arch_s390x_none_s390x_real +build-arch_s390x_none_s390x_real:: + $(MAKE) -f debian/rules.real build-arch-flavour ABINAME='4.15.0-2' ARCH='s390x' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='s390x' IMAGE_FILE='arch/s390/boot/image' IMAGE_INSTALL_STEM='vmlinuz' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-s390x' KCONFIG='debian/config/config debian/config/s390x/config' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='s390' LOCALVERSION='-s390x' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-s390x' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VDSO='True' VERSION='4.15' +build-arch_s390x_real:: + $(MAKE) -f debian/rules.real build-arch-arch ABINAME='4.15.0-2' ARCH='s390x' KERNEL_ARCH='s390' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +build-arch_sh3: build-arch_sh3_real +build-arch_sh3_real:: + $(MAKE) -f debian/rules.real build-arch-arch ABINAME='4.15.0-2' ARCH='sh3' DO_HEADERS_ALL='False' KERNEL_ARCH='sh' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +build-arch_sh4: build-arch_sh4_none build-arch_sh4_real +build-arch_sh4_none: build-arch_sh4_none_real build-arch_sh4_none_sh7751r build-arch_sh4_none_sh7785lcr +build-arch_sh4_none_real: +build-arch_sh4_none_sh7751r: build-arch_sh4_none_sh7751r_real +build-arch_sh4_none_sh7751r_real:: + $(MAKE) -f debian/rules.real build-arch-flavour ABINAME='4.15.0-2' ARCH='sh4' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='sh7751r' IMAGE_FILE='arch/sh/boot/zImage' IMAGE_INSTALL_STEM='vmlinuz' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-sh7751r' KCONFIG='debian/config/config debian/config/sh4/config debian/config/sh4/config.sh7751r' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='sh' LOCALVERSION='-sh7751r' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-sh7751r' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +build-arch_sh4_none_sh7785lcr: build-arch_sh4_none_sh7785lcr_real +build-arch_sh4_none_sh7785lcr_real:: + $(MAKE) -f debian/rules.real build-arch-flavour ABINAME='4.15.0-2' ARCH='sh4' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='sh7785lcr' IMAGE_FILE='arch/sh/boot/zImage' IMAGE_INSTALL_STEM='vmlinuz' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-sh7785lcr' KCONFIG='debian/config/config debian/config/sh4/config debian/config/sh4/config.sh7785lcr' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='sh' LOCALVERSION='-sh7785lcr' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-sh7785lcr' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +build-arch_sh4_real:: + $(MAKE) -f debian/rules.real build-arch-arch ABINAME='4.15.0-2' ARCH='sh4' KERNEL_ARCH='sh' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +build-arch_sparc: build-arch_sparc_real +build-arch_sparc64: build-arch_sparc64_none build-arch_sparc64_real +build-arch_sparc64_none: build-arch_sparc64_none_real build-arch_sparc64_none_sparc64 build-arch_sparc64_none_sparc64-smp +build-arch_sparc64_none_real: +build-arch_sparc64_none_sparc64: build-arch_sparc64_none_sparc64_real +build-arch_sparc64_none_sparc64-smp: build-arch_sparc64_none_sparc64-smp_real +build-arch_sparc64_none_sparc64-smp_real:: + $(MAKE) -f debian/rules.real build-arch-flavour ABINAME='4.15.0-2' ARCH='sparc64' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='sparc64-smp' IMAGE_FILE='arch/sparc/boot/zImage' IMAGE_INSTALL_STEM='vmlinuz' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-sparc64-smp' KCONFIG='debian/config/config debian/config/kernelarch-sparc/config debian/config/kernelarch-sparc/config-smp' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='sparc' LOCALVERSION='-sparc64-smp' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-sparc64-smp' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +build-arch_sparc64_none_sparc64_real:: + $(MAKE) -f debian/rules.real build-arch-flavour ABINAME='4.15.0-2' ARCH='sparc64' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='sparc64' IMAGE_FILE='arch/sparc/boot/zImage' IMAGE_INSTALL_STEM='vmlinuz' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-sparc64' KCONFIG='debian/config/config debian/config/kernelarch-sparc/config debian/config/kernelarch-sparc/config-up' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='sparc' LOCALVERSION='-sparc64' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-sparc64' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +build-arch_sparc64_real:: + $(MAKE) -f debian/rules.real build-arch-arch ABINAME='4.15.0-2' ARCH='sparc64' KERNEL_ARCH='sparc' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +build-arch_sparc_real:: + $(MAKE) -f debian/rules.real build-arch-arch ABINAME='4.15.0-2' ARCH='sparc' DO_HEADERS_ALL='False' KERNEL_ARCH='sparc' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +build-arch_tilegx: build-arch_tilegx_real +build-arch_tilegx_real:: + $(MAKE) -f debian/rules.real build-arch-arch ABINAME='4.15.0-2' ARCH='tilegx' DO_HEADERS_ALL='False' KERNEL_ARCH='tile' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +build-arch_x32: build-arch_x32_real +build-arch_x32_real:: + $(MAKE) -f debian/rules.real build-arch-arch ABINAME='4.15.0-2' ARCH='x32' DO_HEADERS_ALL='False' KERNEL_ARCH='x86' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +build-indep:: build-indep_none +build-indep:: + $(MAKE) -f debian/rules.real build-indep ABINAME='4.15.0-2' ALL_FEATURESETS='none' ALL_TRIPLETS='alpha_none_alpha-generic alpha_none_alpha-smp amd64_none_amd64 amd64_none_cloud-amd64 arm64_none_arm64 armhf_none_armmp armhf_none_armmp-lpae hppa_none_parisc hppa_none_parisc64-smp i386_none_686 i386_none_686-pae m68k_none_m68k mips_none_4kc-malta mips_none_5kc-malta mips_none_octeon mips64_none_5kc-malta mips64_none_octeon mips64el_none_5kc-malta mips64el_none_loongson-3 mips64el_none_octeon mips64r6_none_mips64r6 mips64r6el_none_mips64r6el mipsel_none_4kc-malta mipsel_none_5kc-malta mipsel_none_loongson-3 mipsel_none_octeon mipsr6_none_mips32r6 mipsr6_none_mips64r6 mipsr6el_none_mips32r6el mipsr6el_none_mips64r6el powerpc_none_powerpc powerpc_none_powerpc-smp powerpc_none_powerpc64 powerpcspe_none_powerpcspe ppc64_none_powerpc64 ppc64el_none_powerpc64le s390x_none_s390x sh4_none_sh7751r sh4_none_sh7785lcr sparc64_none_sparc64 sparc64_none_sparc64-smp' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +build-indep_none: build-indep_none_real +build-indep_none_real: +setup: setup_alpha setup_amd64 setup_arm64 setup_arm64ilp32 setup_armel setup_armhf setup_hppa setup_i386 setup_m68k setup_mips setup_mips64 setup_mips64el setup_mips64r6 setup_mips64r6el setup_mipsel setup_mipsn32 setup_mipsn32el setup_mipsn32r6 setup_mipsn32r6el setup_mipsr6 setup_mipsr6el setup_none setup_powerpc setup_powerpcspe setup_ppc64 setup_ppc64el setup_s390 setup_s390x setup_sh3 setup_sh4 setup_sparc setup_sparc64 setup_tilegx setup_x32 +setup_alpha: setup_alpha_none setup_alpha_real +setup_alpha_none: setup_alpha_none_alpha-generic setup_alpha_none_alpha-smp setup_alpha_none_real +setup_alpha_none_alpha-generic: setup_alpha_none_alpha-generic_real +setup_alpha_none_alpha-generic_real:: + $(MAKE) -f debian/rules.real setup-arch-flavour ABINAME='4.15.0-2' ARCH='alpha' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='alpha-generic' IMAGE_FILE='arch/alpha/boot/vmlinux.gz' IMAGE_INSTALL_STEM='vmlinuz' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-alpha-generic' KCONFIG='debian/config/config debian/config/alpha/config debian/config/alpha/config.alpha-generic' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='alpha' LOCALVERSION='-alpha-generic' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-alpha-generic' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +setup_alpha_none_alpha-smp: setup_alpha_none_alpha-smp_real +setup_alpha_none_alpha-smp_real:: + $(MAKE) -f debian/rules.real setup-arch-flavour ABINAME='4.15.0-2' ARCH='alpha' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='alpha-smp' IMAGE_FILE='arch/alpha/boot/vmlinux.gz' IMAGE_INSTALL_STEM='vmlinuz' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-alpha-smp' KCONFIG='debian/config/config debian/config/alpha/config debian/config/alpha/config.alpha-smp' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='alpha' LOCALVERSION='-alpha-smp' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-alpha-smp' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +setup_alpha_none_real: +setup_alpha_real: +setup_amd64: setup_amd64_none setup_amd64_real +setup_amd64_none: setup_amd64_none_amd64 setup_amd64_none_cloud-amd64 setup_amd64_none_real +setup_amd64_none_amd64: setup_amd64_none_amd64_real +setup_amd64_none_amd64_real:: + $(MAKE) -f debian/rules.real setup-arch-flavour ABINAME='4.15.0-2' ARCH='amd64' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='amd64' IMAGE_FILE='arch/x86/boot/bzImage' IMAGE_INSTALL_STEM='vmlinuz' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-amd64' KCONFIG='debian/config/config debian/config/kernelarch-x86/config debian/config/amd64/config' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='x86' LOCALVERSION='-amd64' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-amd64' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VDSO='True' VERSION='4.15' +setup_amd64_none_cloud-amd64: setup_amd64_none_cloud-amd64_real +setup_amd64_none_cloud-amd64_real:: + $(MAKE) -f debian/rules.real setup-arch-flavour ABINAME='4.15.0-2' ARCH='amd64' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='cloud-amd64' IMAGE_FILE='arch/x86/boot/bzImage' IMAGE_INSTALL_STEM='vmlinuz' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-cloud-amd64' KCONFIG='debian/config/config debian/config/kernelarch-x86/config debian/config/amd64/config debian/config/amd64/config.cloud-amd64' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='x86' LOCALVERSION='-cloud-amd64' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-cloud-amd64' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VDSO='True' VERSION='4.15' +setup_amd64_none_real: +setup_amd64_real: +setup_arm64: setup_arm64_none setup_arm64_real +setup_arm64_none: setup_arm64_none_arm64 setup_arm64_none_real +setup_arm64_none_arm64: setup_arm64_none_arm64_real +setup_arm64_none_arm64_real:: + $(MAKE) -f debian/rules.real setup-arch-flavour ABINAME='4.15.0-2' ARCH='arm64' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='arm64' IMAGE_FILE='arch/arm64/boot/Image' IMAGE_INSTALL_STEM='vmlinuz' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-arm64' KCONFIG='debian/config/config debian/config/arm64/config' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='arm64' LOCALVERSION='-arm64' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-arm64' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VDSO='True' VERSION='4.15' +setup_arm64_none_real: +setup_arm64_real: +setup_arm64ilp32: setup_arm64ilp32_real +setup_arm64ilp32_real: +setup_armel: setup_armel_real +setup_armel_real: +setup_armhf: setup_armhf_none setup_armhf_real +setup_armhf_none: setup_armhf_none_armmp setup_armhf_none_armmp-lpae setup_armhf_none_real +setup_armhf_none_armmp: setup_armhf_none_armmp_real +setup_armhf_none_armmp-lpae: setup_armhf_none_armmp-lpae_real +setup_armhf_none_armmp-lpae_real:: + $(MAKE) -f debian/rules.real setup-arch-flavour ABINAME='4.15.0-2' ARCH='armhf' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='armmp-lpae' IMAGE_FILE='arch/arm/boot/zImage' IMAGE_INSTALL_STEM='vmlinuz' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-armmp-lpae' KCONFIG='debian/config/config debian/config/kernelarch-arm/config debian/config/armhf/config debian/config/armhf/config.armmp-lpae' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='arm' LOCALVERSION='-armmp-lpae' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-armmp-lpae' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VDSO='True' VERSION='4.15' +setup_armhf_none_armmp_real:: + $(MAKE) -f debian/rules.real setup-arch-flavour ABINAME='4.15.0-2' ARCH='armhf' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='armmp' IMAGE_FILE='arch/arm/boot/zImage' IMAGE_INSTALL_STEM='vmlinuz' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-armmp' KCONFIG='debian/config/config debian/config/kernelarch-arm/config debian/config/armhf/config' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='arm' LOCALVERSION='-armmp' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-armmp' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VDSO='True' VERSION='4.15' +setup_armhf_none_real: +setup_armhf_real: +setup_hppa: setup_hppa_none setup_hppa_real +setup_hppa_none: setup_hppa_none_parisc setup_hppa_none_parisc64-smp setup_hppa_none_real +setup_hppa_none_parisc: setup_hppa_none_parisc_real +setup_hppa_none_parisc64-smp: setup_hppa_none_parisc64-smp_real +setup_hppa_none_parisc64-smp_real:: + $(MAKE) -f debian/rules.real setup-arch-flavour ABINAME='4.15.0-2' ARCH='hppa' CFLAGS_KERNEL='-fno-cse-follow-jumps' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='parisc64-smp' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-parisc64-smp' KCONFIG='debian/config/config debian/config/hppa/config debian/config/hppa/config.parisc64-smp' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='parisc' LOCALVERSION='-parisc64-smp' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-parisc64-smp' OVERRIDE_HOST_TYPE='hppa64-linux-gnu' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +setup_hppa_none_parisc_real:: + $(MAKE) -f debian/rules.real setup-arch-flavour ABINAME='4.15.0-2' ARCH='hppa' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='parisc' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-parisc' KCONFIG='debian/config/config debian/config/hppa/config debian/config/hppa/config.parisc' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='parisc' LOCALVERSION='-parisc' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-parisc' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +setup_hppa_none_real: +setup_hppa_real: +setup_i386: setup_i386_none setup_i386_real +setup_i386_none: setup_i386_none_686 setup_i386_none_686-pae setup_i386_none_real +setup_i386_none_686: setup_i386_none_686_real +setup_i386_none_686-pae: setup_i386_none_686-pae_real +setup_i386_none_686-pae_real:: + $(MAKE) -f debian/rules.real setup-arch-flavour ABINAME='4.15.0-2' ARCH='i386' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='686-pae' IMAGE_FILE='arch/x86/boot/bzImage' IMAGE_INSTALL_STEM='vmlinuz' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-686-pae' KCONFIG='debian/config/config debian/config/kernelarch-x86/config debian/config/i386/config debian/config/i386/config.686-pae' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='x86' LOCALVERSION='-686-pae' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-686-pae' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VDSO='True' VERSION='4.15' +setup_i386_none_686_real:: + $(MAKE) -f debian/rules.real setup-arch-flavour ABINAME='4.15.0-2' ARCH='i386' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='686' IMAGE_FILE='arch/x86/boot/bzImage' IMAGE_INSTALL_STEM='vmlinuz' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-686' KCONFIG='debian/config/config debian/config/kernelarch-x86/config debian/config/i386/config debian/config/i386/config.686' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='x86' LOCALVERSION='-686' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-686' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VDSO='True' VERSION='4.15' +setup_i386_none_real: +setup_i386_real: +setup_m68k: setup_m68k_none setup_m68k_real +setup_m68k_none: setup_m68k_none_m68k setup_m68k_none_real +setup_m68k_none_m68k: setup_m68k_none_m68k_real +setup_m68k_none_m68k_real:: + $(MAKE) -f debian/rules.real setup-arch-flavour ABINAME='4.15.0-2' ARCH='m68k' CFLAGS_KERNEL='-ffreestanding' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='m68k' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-m68k' KCONFIG='debian/config/config debian/config/m68k/config' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='m68k' LOCALVERSION='-m68k' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-m68k' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +setup_m68k_none_real: +setup_m68k_real: +setup_mips: setup_mips_none setup_mips_real +setup_mips64: setup_mips64_none setup_mips64_real +setup_mips64_none: setup_mips64_none_5kc-malta setup_mips64_none_octeon setup_mips64_none_real +setup_mips64_none_5kc-malta: setup_mips64_none_5kc-malta_real +setup_mips64_none_5kc-malta_real:: + $(MAKE) -f debian/rules.real setup-arch-flavour ABINAME='4.15.0-2' ARCH='mips64' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='5kc-malta' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-5kc-malta' KCONFIG='debian/config/config debian/config/kernelarch-mips/config debian/config/mips64/config debian/config/kernelarch-mips/config.malta debian/config/kernelarch-mips/config.mips64r2' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='mips' LOCALVERSION='-5kc-malta' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-5kc-malta' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +setup_mips64_none_octeon: setup_mips64_none_octeon_real +setup_mips64_none_octeon_real:: + $(MAKE) -f debian/rules.real setup-arch-flavour ABINAME='4.15.0-2' ARCH='mips64' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='octeon' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-octeon' KCONFIG='debian/config/config debian/config/kernelarch-mips/config debian/config/mips64/config debian/config/kernelarch-mips/config.octeon' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='mips' LOCALVERSION='-octeon' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-octeon' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +setup_mips64_none_real: +setup_mips64_real: +setup_mips64el: setup_mips64el_none setup_mips64el_real +setup_mips64el_none: setup_mips64el_none_5kc-malta setup_mips64el_none_loongson-3 setup_mips64el_none_octeon setup_mips64el_none_real +setup_mips64el_none_5kc-malta: setup_mips64el_none_5kc-malta_real +setup_mips64el_none_5kc-malta_real:: + $(MAKE) -f debian/rules.real setup-arch-flavour ABINAME='4.15.0-2' ARCH='mips64el' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='5kc-malta' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-5kc-malta' KCONFIG='debian/config/config debian/config/kernelarch-mips/config debian/config/mips64el/config debian/config/kernelarch-mips/config.malta debian/config/kernelarch-mips/config.mips64r2' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='mips' LOCALVERSION='-5kc-malta' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-5kc-malta' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +setup_mips64el_none_loongson-3: setup_mips64el_none_loongson-3_real +setup_mips64el_none_loongson-3_real:: + $(MAKE) -f debian/rules.real setup-arch-flavour ABINAME='4.15.0-2' ARCH='mips64el' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='loongson-3' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-loongson-3' KCONFIG='debian/config/config debian/config/kernelarch-mips/config debian/config/mips64el/config debian/config/kernelarch-mips/config.loongson-3' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='mips' LOCALVERSION='-loongson-3' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-loongson-3' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +setup_mips64el_none_octeon: setup_mips64el_none_octeon_real +setup_mips64el_none_octeon_real:: + $(MAKE) -f debian/rules.real setup-arch-flavour ABINAME='4.15.0-2' ARCH='mips64el' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='octeon' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-octeon' KCONFIG='debian/config/config debian/config/kernelarch-mips/config debian/config/mips64el/config debian/config/kernelarch-mips/config.octeon' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='mips' LOCALVERSION='-octeon' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-octeon' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +setup_mips64el_none_real: +setup_mips64el_real: +setup_mips64r6: setup_mips64r6_none setup_mips64r6_real +setup_mips64r6_none: setup_mips64r6_none_mips64r6 setup_mips64r6_none_real +setup_mips64r6_none_mips64r6: setup_mips64r6_none_mips64r6_real +setup_mips64r6_none_mips64r6_real:: + $(MAKE) -f debian/rules.real setup-arch-flavour ABINAME='4.15.0-2' ARCH='mips64r6' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='mips64r6' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-mips64r6' KCONFIG='debian/config/config debian/config/kernelarch-mips/config debian/config/mips64r6/config debian/config/kernelarch-mips/config.malta debian/config/kernelarch-mips/config.mips64r6' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='mips' LOCALVERSION='-mips64r6' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-mips64r6' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +setup_mips64r6_none_real: +setup_mips64r6_real: +setup_mips64r6el: setup_mips64r6el_none setup_mips64r6el_real +setup_mips64r6el_none: setup_mips64r6el_none_mips64r6el setup_mips64r6el_none_real +setup_mips64r6el_none_mips64r6el: setup_mips64r6el_none_mips64r6el_real +setup_mips64r6el_none_mips64r6el_real:: + $(MAKE) -f debian/rules.real setup-arch-flavour ABINAME='4.15.0-2' ARCH='mips64r6el' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='mips64r6el' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-mips64r6el' KCONFIG='debian/config/config debian/config/kernelarch-mips/config debian/config/mips64r6el/config debian/config/kernelarch-mips/config.malta debian/config/kernelarch-mips/config.mips64r6' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='mips' LOCALVERSION='-mips64r6el' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-mips64r6el' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +setup_mips64r6el_none_real: +setup_mips64r6el_real: +setup_mips_none: setup_mips_none_4kc-malta setup_mips_none_5kc-malta setup_mips_none_octeon setup_mips_none_real +setup_mips_none_4kc-malta: setup_mips_none_4kc-malta_real +setup_mips_none_4kc-malta_real:: + $(MAKE) -f debian/rules.real setup-arch-flavour ABINAME='4.15.0-2' ARCH='mips' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='4kc-malta' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-4kc-malta' KCONFIG='debian/config/config debian/config/kernelarch-mips/config debian/config/mips/config debian/config/kernelarch-mips/config.malta debian/config/kernelarch-mips/config.mips32r2' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='mips' LOCALVERSION='-4kc-malta' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-4kc-malta' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +setup_mips_none_5kc-malta: setup_mips_none_5kc-malta_real +setup_mips_none_5kc-malta_real:: + $(MAKE) -f debian/rules.real setup-arch-flavour ABINAME='4.15.0-2' ARCH='mips' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='5kc-malta' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-5kc-malta' KCONFIG='debian/config/config debian/config/kernelarch-mips/config debian/config/mips/config debian/config/kernelarch-mips/config.malta debian/config/kernelarch-mips/config.mips64r2' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='mips' LOCALVERSION='-5kc-malta' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-5kc-malta' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +setup_mips_none_octeon: setup_mips_none_octeon_real +setup_mips_none_octeon_real:: + $(MAKE) -f debian/rules.real setup-arch-flavour ABINAME='4.15.0-2' ARCH='mips' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='octeon' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-octeon' KCONFIG='debian/config/config debian/config/kernelarch-mips/config debian/config/mips/config debian/config/kernelarch-mips/config.octeon' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='mips' LOCALVERSION='-octeon' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-octeon' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +setup_mips_none_real: +setup_mips_real: +setup_mipsel: setup_mipsel_none setup_mipsel_real +setup_mipsel_none: setup_mipsel_none_4kc-malta setup_mipsel_none_5kc-malta setup_mipsel_none_loongson-3 setup_mipsel_none_octeon setup_mipsel_none_real +setup_mipsel_none_4kc-malta: setup_mipsel_none_4kc-malta_real +setup_mipsel_none_4kc-malta_real:: + $(MAKE) -f debian/rules.real setup-arch-flavour ABINAME='4.15.0-2' ARCH='mipsel' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='4kc-malta' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-4kc-malta' KCONFIG='debian/config/config debian/config/kernelarch-mips/config debian/config/mipsel/config debian/config/kernelarch-mips/config.malta debian/config/kernelarch-mips/config.mips32r2' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='mips' LOCALVERSION='-4kc-malta' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-4kc-malta' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +setup_mipsel_none_5kc-malta: setup_mipsel_none_5kc-malta_real +setup_mipsel_none_5kc-malta_real:: + $(MAKE) -f debian/rules.real setup-arch-flavour ABINAME='4.15.0-2' ARCH='mipsel' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='5kc-malta' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-5kc-malta' KCONFIG='debian/config/config debian/config/kernelarch-mips/config debian/config/mipsel/config debian/config/kernelarch-mips/config.malta debian/config/kernelarch-mips/config.mips64r2' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='mips' LOCALVERSION='-5kc-malta' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-5kc-malta' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +setup_mipsel_none_loongson-3: setup_mipsel_none_loongson-3_real +setup_mipsel_none_loongson-3_real:: + $(MAKE) -f debian/rules.real setup-arch-flavour ABINAME='4.15.0-2' ARCH='mipsel' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='loongson-3' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-loongson-3' KCONFIG='debian/config/config debian/config/kernelarch-mips/config debian/config/mipsel/config debian/config/kernelarch-mips/config.loongson-3' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='mips' LOCALVERSION='-loongson-3' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-loongson-3' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +setup_mipsel_none_octeon: setup_mipsel_none_octeon_real +setup_mipsel_none_octeon_real:: + $(MAKE) -f debian/rules.real setup-arch-flavour ABINAME='4.15.0-2' ARCH='mipsel' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='octeon' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-octeon' KCONFIG='debian/config/config debian/config/kernelarch-mips/config debian/config/mipsel/config debian/config/kernelarch-mips/config.octeon' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='mips' LOCALVERSION='-octeon' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-octeon' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +setup_mipsel_none_real: +setup_mipsel_real: +setup_mipsn32: setup_mipsn32_real +setup_mipsn32_real: +setup_mipsn32el: setup_mipsn32el_real +setup_mipsn32el_real: +setup_mipsn32r6: setup_mipsn32r6_real +setup_mipsn32r6_real: +setup_mipsn32r6el: setup_mipsn32r6el_real +setup_mipsn32r6el_real: +setup_mipsr6: setup_mipsr6_none setup_mipsr6_real +setup_mipsr6_none: setup_mipsr6_none_mips32r6 setup_mipsr6_none_mips64r6 setup_mipsr6_none_real +setup_mipsr6_none_mips32r6: setup_mipsr6_none_mips32r6_real +setup_mipsr6_none_mips32r6_real:: + $(MAKE) -f debian/rules.real setup-arch-flavour ABINAME='4.15.0-2' ARCH='mipsr6' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='mips32r6' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-mips32r6' KCONFIG='debian/config/config debian/config/kernelarch-mips/config debian/config/mipsr6/config debian/config/kernelarch-mips/config.malta debian/config/kernelarch-mips/config.mips32r6' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='mips' LOCALVERSION='-mips32r6' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-mips32r6' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +setup_mipsr6_none_mips64r6: setup_mipsr6_none_mips64r6_real +setup_mipsr6_none_mips64r6_real:: + $(MAKE) -f debian/rules.real setup-arch-flavour ABINAME='4.15.0-2' ARCH='mipsr6' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='mips64r6' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-mips64r6' KCONFIG='debian/config/config debian/config/kernelarch-mips/config debian/config/mipsr6/config debian/config/kernelarch-mips/config.malta debian/config/kernelarch-mips/config.mips64r6' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='mips' LOCALVERSION='-mips64r6' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-mips64r6' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +setup_mipsr6_none_real: +setup_mipsr6_real: +setup_mipsr6el: setup_mipsr6el_none setup_mipsr6el_real +setup_mipsr6el_none: setup_mipsr6el_none_mips32r6el setup_mipsr6el_none_mips64r6el setup_mipsr6el_none_real +setup_mipsr6el_none_mips32r6el: setup_mipsr6el_none_mips32r6el_real +setup_mipsr6el_none_mips32r6el_real:: + $(MAKE) -f debian/rules.real setup-arch-flavour ABINAME='4.15.0-2' ARCH='mipsr6el' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='mips32r6el' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-mips32r6el' KCONFIG='debian/config/config debian/config/kernelarch-mips/config debian/config/mipsr6el/config debian/config/kernelarch-mips/config.malta debian/config/kernelarch-mips/config.mips32r6' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='mips' LOCALVERSION='-mips32r6el' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-mips32r6el' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +setup_mipsr6el_none_mips64r6el: setup_mipsr6el_none_mips64r6el_real +setup_mipsr6el_none_mips64r6el_real:: + $(MAKE) -f debian/rules.real setup-arch-flavour ABINAME='4.15.0-2' ARCH='mipsr6el' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='mips64r6el' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-mips64r6el' KCONFIG='debian/config/config debian/config/kernelarch-mips/config debian/config/mipsr6el/config debian/config/kernelarch-mips/config.malta debian/config/kernelarch-mips/config.mips64r6' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='mips' LOCALVERSION='-mips64r6el' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-mips64r6el' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +setup_mipsr6el_none_real: +setup_mipsr6el_real: +setup_none: setup_none_real +setup_none_real: +setup_powerpc: setup_powerpc_none setup_powerpc_real +setup_powerpc_none: setup_powerpc_none_powerpc setup_powerpc_none_powerpc-smp setup_powerpc_none_powerpc64 setup_powerpc_none_real +setup_powerpc_none_powerpc: setup_powerpc_none_powerpc_real +setup_powerpc_none_powerpc-smp: setup_powerpc_none_powerpc-smp_real +setup_powerpc_none_powerpc-smp_real:: + $(MAKE) -f debian/rules.real setup-arch-flavour ABINAME='4.15.0-2' ARCH='powerpc' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='powerpc-smp' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-powerpc-smp' KCONFIG='debian/config/config debian/config/kernelarch-powerpc/config debian/config/powerpc/config.powerpc debian/config/powerpc/config.powerpc-smp' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='powerpc' LOCALVERSION='-powerpc-smp' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-powerpc-smp' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VDSO='True' VERSION='4.15' +setup_powerpc_none_powerpc64: setup_powerpc_none_powerpc64_real +setup_powerpc_none_powerpc64_real:: + $(MAKE) -f debian/rules.real setup-arch-flavour ABINAME='4.15.0-2' ARCH='powerpc' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='powerpc64' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-powerpc64' KCONFIG='debian/config/config debian/config/kernelarch-powerpc/config debian/config/kernelarch-powerpc/config-arch-64 debian/config/kernelarch-powerpc/config-arch-64-be' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='powerpc' LOCALVERSION='-powerpc64' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-powerpc64' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VDSO='True' VERSION='4.15' +setup_powerpc_none_powerpc_real:: + $(MAKE) -f debian/rules.real setup-arch-flavour ABINAME='4.15.0-2' ARCH='powerpc' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='powerpc' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-powerpc' KCONFIG='debian/config/config debian/config/kernelarch-powerpc/config debian/config/powerpc/config.powerpc' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='powerpc' LOCALVERSION='-powerpc' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-powerpc' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VDSO='True' VERSION='4.15' +setup_powerpc_none_real: +setup_powerpc_real: +setup_powerpcspe: setup_powerpcspe_none setup_powerpcspe_real +setup_powerpcspe_none: setup_powerpcspe_none_powerpcspe setup_powerpcspe_none_real +setup_powerpcspe_none_powerpcspe: setup_powerpcspe_none_powerpcspe_real +setup_powerpcspe_none_powerpcspe_real:: + $(MAKE) -f debian/rules.real setup-arch-flavour ABINAME='4.15.0-2' ARCH='powerpcspe' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='powerpcspe' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-powerpcspe' KCONFIG='debian/config/config debian/config/kernelarch-powerpc/config debian/config/powerpcspe/config' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='powerpc' LOCALVERSION='-powerpcspe' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-powerpcspe' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VDSO='True' VERSION='4.15' +setup_powerpcspe_none_real: +setup_powerpcspe_real: +setup_ppc64: setup_ppc64_none setup_ppc64_real +setup_ppc64_none: setup_ppc64_none_powerpc64 setup_ppc64_none_real +setup_ppc64_none_powerpc64: setup_ppc64_none_powerpc64_real +setup_ppc64_none_powerpc64_real:: + $(MAKE) -f debian/rules.real setup-arch-flavour ABINAME='4.15.0-2' ARCH='ppc64' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='powerpc64' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-powerpc64' KCONFIG='debian/config/config debian/config/kernelarch-powerpc/config debian/config/kernelarch-powerpc/config-arch-64 debian/config/kernelarch-powerpc/config-arch-64-be' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='powerpc' LOCALVERSION='-powerpc64' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-powerpc64' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VDSO='True' VERSION='4.15' +setup_ppc64_none_real: +setup_ppc64_real: +setup_ppc64el: setup_ppc64el_none setup_ppc64el_real +setup_ppc64el_none: setup_ppc64el_none_powerpc64le setup_ppc64el_none_real +setup_ppc64el_none_powerpc64le: setup_ppc64el_none_powerpc64le_real +setup_ppc64el_none_powerpc64le_real:: + $(MAKE) -f debian/rules.real setup-arch-flavour ABINAME='4.15.0-2' ARCH='ppc64el' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='powerpc64le' IMAGE_FILE='vmlinux' IMAGE_INSTALL_STEM='vmlinux' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-powerpc64le' KCONFIG='debian/config/config debian/config/kernelarch-powerpc/config debian/config/kernelarch-powerpc/config-arch-64 debian/config/kernelarch-powerpc/config-arch-64-le' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='powerpc' LOCALVERSION='-powerpc64le' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-powerpc64le' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VDSO='True' VERSION='4.15' +setup_ppc64el_none_real: +setup_ppc64el_real: +setup_s390: setup_s390_real +setup_s390_real: +setup_s390x: setup_s390x_none setup_s390x_real +setup_s390x_none: setup_s390x_none_real setup_s390x_none_s390x +setup_s390x_none_real: +setup_s390x_none_s390x: setup_s390x_none_s390x_real +setup_s390x_none_s390x_real:: + $(MAKE) -f debian/rules.real setup-arch-flavour ABINAME='4.15.0-2' ARCH='s390x' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='s390x' IMAGE_FILE='arch/s390/boot/image' IMAGE_INSTALL_STEM='vmlinuz' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-s390x' KCONFIG='debian/config/config debian/config/s390x/config' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='s390' LOCALVERSION='-s390x' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-s390x' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VDSO='True' VERSION='4.15' +setup_s390x_real: +setup_sh3: setup_sh3_real +setup_sh3_real: +setup_sh4: setup_sh4_none setup_sh4_real +setup_sh4_none: setup_sh4_none_real setup_sh4_none_sh7751r setup_sh4_none_sh7785lcr +setup_sh4_none_real: +setup_sh4_none_sh7751r: setup_sh4_none_sh7751r_real +setup_sh4_none_sh7751r_real:: + $(MAKE) -f debian/rules.real setup-arch-flavour ABINAME='4.15.0-2' ARCH='sh4' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='sh7751r' IMAGE_FILE='arch/sh/boot/zImage' IMAGE_INSTALL_STEM='vmlinuz' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-sh7751r' KCONFIG='debian/config/config debian/config/sh4/config debian/config/sh4/config.sh7751r' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='sh' LOCALVERSION='-sh7751r' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-sh7751r' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +setup_sh4_none_sh7785lcr: setup_sh4_none_sh7785lcr_real +setup_sh4_none_sh7785lcr_real:: + $(MAKE) -f debian/rules.real setup-arch-flavour ABINAME='4.15.0-2' ARCH='sh4' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='sh7785lcr' IMAGE_FILE='arch/sh/boot/zImage' IMAGE_INSTALL_STEM='vmlinuz' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-sh7785lcr' KCONFIG='debian/config/config debian/config/sh4/config debian/config/sh4/config.sh7785lcr' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='sh' LOCALVERSION='-sh7785lcr' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-sh7785lcr' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +setup_sh4_real: +setup_sparc: setup_sparc_real +setup_sparc64: setup_sparc64_none setup_sparc64_real +setup_sparc64_none: setup_sparc64_none_real setup_sparc64_none_sparc64 setup_sparc64_none_sparc64-smp +setup_sparc64_none_real: +setup_sparc64_none_sparc64: setup_sparc64_none_sparc64_real +setup_sparc64_none_sparc64-smp: setup_sparc64_none_sparc64-smp_real +setup_sparc64_none_sparc64-smp_real:: + $(MAKE) -f debian/rules.real setup-arch-flavour ABINAME='4.15.0-2' ARCH='sparc64' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='sparc64-smp' IMAGE_FILE='arch/sparc/boot/zImage' IMAGE_INSTALL_STEM='vmlinuz' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-sparc64-smp' KCONFIG='debian/config/config debian/config/kernelarch-sparc/config debian/config/kernelarch-sparc/config-smp' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='sparc' LOCALVERSION='-sparc64-smp' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-sparc64-smp' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +setup_sparc64_none_sparc64_real:: + $(MAKE) -f debian/rules.real setup-arch-flavour ABINAME='4.15.0-2' ARCH='sparc64' COMPILER='gcc-7' DEBUG='True' FEATURESET='none' FLAVOUR='sparc64' IMAGE_FILE='arch/sparc/boot/zImage' IMAGE_INSTALL_STEM='vmlinuz' IMAGE_PACKAGE_NAME='linux-image-4.15.0-2-sparc64' KCONFIG='debian/config/config debian/config/kernelarch-sparc/config debian/config/kernelarch-sparc/config-up' KCONFIG_OPTIONS=' -o DEBUG_INFO=y' KERNEL_ARCH='sparc' LOCALVERSION='-sparc64' LOCALVERSION_HEADERS='' LOCALVERSION_IMAGE='-sparc64' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' +setup_sparc64_real: +setup_sparc_real: +setup_tilegx: setup_tilegx_real +setup_tilegx_real: +setup_x32: setup_x32_real +setup_x32_real: +source: source_none +source_none: source_none_real +source_none_real:: + $(MAKE) -f debian/rules.real source-featureset ABINAME='4.15.0-2' FEATURESET='none' SOURCEVERSION='4.15.11-1' UPSTREAMVERSION='4.15' VERSION='4.15' diff --git a/rules.real b/rules.real new file mode 100644 index 00000000000..8a397b515a1 --- /dev/null +++ b/rules.real @@ -0,0 +1,724 @@ +# +# This Makefile executes the unpack/build/binary targets for a single +# subarch, which is passed in the subarch variable. Empty subarch +# variable means that we are building for an arch without the subarch. +# Additionally, variables version, abiname and ltver are +# expected to be available (need to be exported from the parent process). +# +SHELL := bash -e +MAINTAINER := $(shell sed -ne 's,^Maintainer: .[^<]*<\([^>]*\)>,\1,p' debian/control) +SOURCE_PACKAGE_NAME := $(shell dpkg-parsechangelog -SSource) +DISTRIBUTION := $(shell dpkg-parsechangelog -SDistribution) +SOURCE_DATE := $(shell dpkg-parsechangelog -SDate) +SOURCE_DATE_UTC_ISO := $(shell date -u -d '$(SOURCE_DATE)' +%Y-%m-%d) + +DISTRIBUTOR := $(shell lsb_release -is 2>/dev/null) +ifeq ($(DISTRIBUTOR),) +DISTRIBUTOR := Debian +endif + +include debian/rules.defs + +ifdef OVERRIDE_HOST_TYPE + CROSS_COMPILE := $(OVERRIDE_HOST_TYPE)- +else ifneq ($(DEB_BUILD_ARCH),$(DEB_HOST_ARCH)) + CROSS_COMPILE := $(DEB_HOST_GNU_TYPE)- +else + CROSS_COMPILE := +endif +export CROSS_COMPILE + +export PYTHONPATH = $(CURDIR)/debian/lib/python +export DH_OPTIONS +export DEB_HOST_ARCH DEB_HOST_GNU_TYPE DEB_BUILD_ARCH +export DEB_BUILD_PATH = $(CURDIR) # for dpkg-buildflags +export LC_ALL = C.UTF-8 +undefine LANGUAGE + +stamp = [ -d $(dir $@) ] || mkdir $(dir $@); touch $@ + +setup_env := env -u ABINAME -u ARCH -u FEATURESET -u FLAVOUR -u VERSION -u LOCALVERSION +setup_env += DISTRIBUTION_OFFICIAL_BUILD=1 DISTRIBUTOR="$(DISTRIBUTOR)" DISTRIBUTION_VERSION="$(SOURCEVERSION)" KBUILD_BUILD_TIMESTAMP="$(SOURCE_DATE)" KBUILD_BUILD_VERSION_TIMESTAMP="$(DISTRIBUTOR) $(SOURCEVERSION) ($(SOURCE_DATE_UTC_ISO))" KBUILD_BUILD_USER="$(word 1,$(subst @, ,$(MAINTAINER)))" KBUILD_BUILD_HOST="$(word 2,$(subst @, ,$(MAINTAINER)))" + +MAKE_CLEAN = $(setup_env) $(MAKE) CFLAGS_KERNEL=-fdebug-prefix-map=$(CURDIR)=. CFLAGS_MODULE=-fdebug-prefix-map=$(CURDIR)=. +MAKE_SELF := $(MAKE) -f debian/rules.real $(MAKEOVERRIDES) +MAKEOVERRIDES = + +# +# Targets +# + +build-arch-arch: +build-indep: +binary-arch-arch: +binary-indep: + +ifneq ($(DO_HEADERS_ALL),False) + binary-arch-arch: install-headers_$(ARCH) +endif +ifneq ($(DO_LIBC),False) + binary-arch-arch: install-libc-dev_$(ARCH) +endif +binary-arch-flavour: install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR) +ifeq ($(DEBUG),True) + binary-arch-flavour: install-image-dbg_$(ARCH)_$(FEATURESET)_$(FLAVOUR) +endif +binary-arch-flavour: install-headers_$(ARCH)_$(FEATURESET)_$(FLAVOUR) + +ifneq ($(DO_DOCS),False) + binary-indep: install-doc + ifeq (,$(filter nodoc,$(DEB_BUILD_PROFILES))) + build-indep: $(STAMPS_DIR)/build-doc + endif +endif +binary-indep: install-source +binary-indep: install-support + +ifneq ($(DO_TOOLS),False) + build-arch-arch: $(STAMPS_DIR)/build-tools + binary-arch-arch: install-kbuild install-usbip install-liblockdep install-cpupower + ifneq ($(filter alpha amd64 arm64 armel armhf hppa i386 mips mips64 mips64el mipsel powerpc powerpcspe ppc64 ppc64el s390 s390x sh4 sparc sparc64,$(DEB_HOST_ARCH)),) + ifeq ($(filter nopython,$(DEB_BUILD_PROFILES)),) + binary-arch-arch: install-perf + endif + endif + ifneq ($(filter i386 amd64 x32,$(DEB_HOST_ARCH)),) + binary-arch-arch: install-hyperv-daemons + endif + binary-indep: install-lockdep +endif + +binary-indep-featureset: install-common-headers_$(FEATURESET) + +build-arch-flavour: $(STAMPS_DIR)/build_$(ARCH)_$(FEATURESET)_$(FLAVOUR) + +setup-arch-flavour: $(STAMPS_DIR)/setup_$(ARCH)_$(FEATURESET)_$(FLAVOUR) + +source-featureset: $(STAMPS_DIR)/source_$(FEATURESET) + +$(BUILD_DIR)/config.$(ARCH)_$(FEATURESET)_$(FLAVOUR): $(KCONFIG) + mkdir -p '$(dir $@)' + debian/bin/kconfig.py '$@' $(KCONFIG) $(KCONFIG_OPTIONS) + +define copy_source +mkdir -p '$(1)' +cp -al $(filter-out debian .pc .svk .svn .git, $(wildcard * .[^.]*)) '$(1)' +endef + +$(BUILD_DIR)/$(SOURCE_PACKAGE_NAME)-source-$(UPSTREAMVERSION).tar.xz: DIR = $(BUILD_DIR)/$(SOURCE_PACKAGE_NAME)-source-$(UPSTREAMVERSION) +$(BUILD_DIR)/$(SOURCE_PACKAGE_NAME)-source-$(UPSTREAMVERSION).tar.xz: $(STAMPS_DIR)/source + rm -rf '$@' '$(DIR)' + $(call copy_source,$(DIR)) + chmod -R u+rw,go=rX '$(DIR)' + find '$(DIR)' -depth -newermt '$(SOURCE_DATE)' -print0 | \ + xargs -0r touch --no-dereference --date='$(SOURCE_DATE)' + cd '$(BUILD_DIR)'; \ + find '$(SOURCE_PACKAGE_NAME)-source-$(UPSTREAMVERSION)' \ + -name '*.pyc' -prune -o \ + -print0 | \ + sort -z | \ + tar --no-recursion --null -T - -caf '$(SOURCE_PACKAGE_NAME)-source-$(UPSTREAMVERSION).tar.xz' + rm -rf '$(DIR)' + +$(BUILD_DIR)/linux-patch-$(UPSTREAMVERSION)-%.patch.xz: $(STAMPS_DIR)/source_none $(STAMPS_DIR)/source_% + set -o pipefail; \ + (cd '$(BUILD_DIR)'; \ + set +e; \ + diff -urN -p -x debian -x .pc -x .svk -x .svn -x .git -x '*.pyc' source_none source_$*; \ + test $$? -eq 1) | \ + filterdiff --remove-timestamps --strip=1 --addoldprefix=a/ --addnewprefix=b/ | \ + xz -c >$@ || \ + (rm -f $@; exit 1) + +define patch_cmd +cd '$(DIR)' && QUILT_PATCHES='$(CURDIR)/debian/patches' QUILT_SERIES=series-$(1) QUILT_PC=.pc quilt push --quiltrc - -a -q --fuzz=0 +endef + +$(STAMPS_DIR)/source: + test -d .pc + set +e; QUILT_PC=.pc quilt unapplied --quiltrc - >/dev/null && echo 'Patch series not fully applied'; test $$? -eq 1 + @$(stamp) + +$(STAMPS_DIR)/source_%: SOURCE_DIR=$(BUILD_DIR)/source +$(STAMPS_DIR)/source_%: DIR=$(BUILD_DIR)/source_$* +$(STAMPS_DIR)/source_%: $(STAMPS_DIR)/source + mkdir -p '$(BUILD_DIR)' + rm -rf '$(DIR)' + $(call copy_source,$(DIR)) + $(call patch_cmd,$*) + @$(stamp) +.PRECIOUS: $(STAMPS_DIR)/source_% + +$(STAMPS_DIR)/source_none: DIR=$(BUILD_DIR)/source_none +$(STAMPS_DIR)/source_none: $(STAMPS_DIR)/source + mkdir -p '$(BUILD_DIR)' + rm -f '$(DIR)' + ln -s '$(CURDIR)' '$(DIR)' + @$(stamp) + +$(STAMPS_DIR)/setup_$(ARCH)_$(FEATURESET)_$(FLAVOUR): CONFIG=$(BUILD_DIR)/config.$(ARCH)_$(FEATURESET)_$(FLAVOUR) +$(STAMPS_DIR)/setup_$(ARCH)_$(FEATURESET)_$(FLAVOUR): SOURCE_DIR=$(BUILD_DIR)/source_$(FEATURESET) +$(STAMPS_DIR)/setup_$(ARCH)_$(FEATURESET)_$(FLAVOUR): DIR=$(BUILD_DIR)/build_$(ARCH)_$(FEATURESET)_$(FLAVOUR) +$(STAMPS_DIR)/setup_$(ARCH)_$(FEATURESET)_$(FLAVOUR): $(STAMPS_DIR)/source_$(FEATURESET) $(BUILD_DIR)/config.$(ARCH)_$(FEATURESET)_$(FLAVOUR) + rm -rf '$(DIR)' + mkdir '$(DIR)' + cp '$(CONFIG)' '$(DIR)/.config' + echo 'override ARCH = $(KERNEL_ARCH)' >> '$(DIR)/.kernelvariables' + echo 'override KERNELRELEASE = $(ABINAME)$(LOCALVERSION_IMAGE)' >> '$(DIR)/.kernelvariables' + echo 'CCACHE = ccache' >> '$(DIR)/.kernelvariables' + echo 'CC = $$(if $$(DEBIAN_KERNEL_USE_CCACHE),$$(CCACHE)) $$(CROSS_COMPILE)$(COMPILER)' >> '$(DIR)/.kernelvariables' +# TODO: Should we set CROSS_COMPILE always? +ifdef OVERRIDE_HOST_TYPE + echo 'override CROSS_COMPILE = $(OVERRIDE_HOST_TYPE)-' >> '$(DIR)/.kernelvariables' +else + echo 'ifneq ($$(DEB_BUILD_ARCH),$$(DEB_HOST_ARCH))' >> '$(DIR)/.kernelvariables' + echo 'override CROSS_COMPILE = $$(DEB_HOST_GNU_TYPE)-' >> '$(DIR)/.kernelvariables' + echo 'endif' >> '$(DIR)/.kernelvariables' +endif +ifdef CFLAGS_KERNEL + echo 'CFLAGS_KERNEL += $(CFLAGS_KERNEL)' >> '$(DIR)/.kernelvariables' + echo 'CFLAGS_MODULE += $(CFLAGS_KERNEL)' >> '$(DIR)/.kernelvariables' +endif + +$(MAKE_CLEAN) -C '$(SOURCE_DIR)' O='$(CURDIR)/$(DIR)' V=1 listnewconfig + +yes "" | $(MAKE_CLEAN) -C '$(SOURCE_DIR)' O='$(CURDIR)/$(DIR)' oldconfig >/dev/null + @$(stamp) + +$(STAMPS_DIR)/build_$(ARCH)_$(FEATURESET)_$(FLAVOUR): DIR=$(BUILD_DIR)/build_$(ARCH)_$(FEATURESET)_$(FLAVOUR) +$(STAMPS_DIR)/build_$(ARCH)_$(FEATURESET)_$(FLAVOUR): $(STAMPS_DIR)/setup_$(ARCH)_$(FEATURESET)_$(FLAVOUR) + +$(STAMPS_DIR)/build_$(ARCH)_$(FEATURESET)_$(FLAVOUR): + +$(MAKE_CLEAN) -C '$(DIR)' + debian/bin/buildcheck.py $(DIR) $(ARCH) $(FEATURESET) $(FLAVOUR) + @$(stamp) + +$(STAMPS_DIR)/build-doc: DIR=$(BUILD_DIR)/build-doc +$(STAMPS_DIR)/build-doc: $(STAMPS_DIR)/source +ifeq (,$(filter nodoc,$(DEB_BUILD_PROFILES))) + mkdir -p '$(BUILD_DIR)' + rm -rf '$(DIR)' + $(call copy_source,$(DIR)) + +$(MAKE_CLEAN) -C '$(DIR)' xmldocs + +$(MAKE_CLEAN) -C '$(DIR)' htmldocs +endif + @$(stamp) + +install-base: + dh_installdocs $(INSTALLDOCS_ARGS) + dh_installchangelogs + dh_compress + dh_fixperms + dh_installdeb + dh_gencontrol -- $(GENCONTROL_ARGS) + dh_md5sums + dh_builddeb -- -Zxz $(BUILDDEB_ARGS) + +install-dummy: + dh_testdir + dh_testroot + dh_prep + +$(MAKE_SELF) install-base + +install-doc: PACKAGE_NAME = $(SOURCE_PACKAGE_NAME)-doc-$(VERSION) +install-doc: DIR = $(BUILD_DIR)/build-doc +install-doc: PACKAGE_DIR = debian/$(PACKAGE_NAME) +install-doc: OUT_DIR = $(PACKAGE_DIR)/usr/share/doc/$(PACKAGE_NAME) +install-doc: DH_OPTIONS = -p$(PACKAGE_NAME) +install-doc: $(STAMPS_DIR)/build-doc + dh_prep +ifeq (,$(filter nodoc,$(DEB_BUILD_PROFILES))) + mkdir -p $(OUT_DIR) + set -o pipefail; \ + find CREDITS MAINTAINERS README Documentation \ + -name '.gitignore' -prune -o -name DocBook -prune -o \ + -path Documentation/media -prune -o \ + -path Documentation/sphinx -prune -o \ + -name 'Makefile*' -prune -o \ + -print | \ + cpio -pd --preserve-modification-time '$(CURDIR)/$(OUT_DIR)' + set -o pipefail; \ + cd $(DIR)/Documentation/output; \ + find * -name '*.rst' -prune -o -name objects.inv -prune \ + -o -name xml -prune -o -print | \ + cpio -pd --preserve-modification-time '$(CURDIR)/$(OUT_DIR)/html' + find $(OUT_DIR)/Documentation -type f | xargs gzip -9n +# Fix up symlinks to gzipped docs + cd $(OUT_DIR)/Documentation; \ + find -type l | while read link; do \ + dest="$$(readlink -f "$$link")"; \ + if [ -f "$$dest.gz" ]; then \ + rm -f "$$link"; \ + ln -sr "$$dest.gz" "$$link.gz"; \ + fi; \ + done +endif + +$(MAKE_SELF) install-base + +install-manual: PACKAGE_NAME = $(SOURCE_PACKAGE_NAME)-manual-$(VERSION) +install-manual: DIR=$(BUILD_DIR)/build-doc +install-manual: DH_OPTIONS = -p$(PACKAGE_NAME) +install-manual: $(STAMPS_DIR)/build-doc + dh_prep +# Some manual pages are generated multiple times with different +# metadata, and need to be de-duplicated. This matches what the +# upstream installmandocs target does, except that we use +# dh_installman. + set -o pipefail; \ + find $(DIR)/Documentation/DocBook/man/ -name '*.9.gz' -printf '%h %f\n' | \ + sort -k 2 -k 1 | uniq -f 1 | sed -e 's: :/:' | \ + xargs dh_installman + +$(MAKE_SELF) install-base + +install-headers_$(ARCH): PACKAGE_NAMES = linux-headers-$(ABINAME)-all linux-headers-$(ABINAME)-all-$(ARCH) +install-headers_$(ARCH): DH_OPTIONS = $(foreach p, $(PACKAGE_NAMES), -p$(p)) +install-headers_$(ARCH): + dh_testdir + dh_testroot + +$(MAKE_SELF) install-base GENCONTROL_ARGS='-Vkernel:Arch=$(ARCH)' + +install-common-headers_$(FEATURESET): PACKAGE_NAME = linux-headers-$(ABINAME)-common$(LOCALVERSION) +install-common-headers_$(FEATURESET): PACKAGE_NAME_KBUILD = linux-kbuild-$(VERSION) +install-common-headers_$(FEATURESET): DH_OPTIONS = -p$(PACKAGE_NAME) +install-common-headers_$(FEATURESET): BASE_DIR = /usr/src/$(PACKAGE_NAME) +install-common-headers_$(FEATURESET): SOURCE_DIR = $(BUILD_DIR)/source_$(FEATURESET) +install-common-headers_$(FEATURESET): DIR = debian/$(PACKAGE_NAME)/$(BASE_DIR) +install-common-headers_$(FEATURESET): $(STAMPS_DIR)/source_$(FEATURESET) + dh_testdir + dh_testroot + dh_prep + + set -o pipefail; \ + cd $(SOURCE_DIR); \ + ( \ + echo Makefile; \ + for arch in $(ALL_KERNEL_ARCHES); do \ + find arch/$$arch -maxdepth 1 -name 'Makefile*' -print; \ + find arch/$$arch \( -name 'module.lds' -o -name 'Kbuild.platforms' -o -name 'Platform' \) -print; \ + find $$(find arch/$$arch \( -name include -o -name scripts \) -type d -print) -print; \ + done; \ + find include -print; \ + ) \ + | \ + cpio -pd --preserve-modification-time '$(CURDIR)/$(DIR)' + + dh_link /usr/lib/$(PACKAGE_NAME_KBUILD)/scripts $(BASE_DIR)/scripts + dh_link /usr/lib/$(PACKAGE_NAME_KBUILD)/tools $(BASE_DIR)/tools + + +$(MAKE_SELF) install-base + +install-headers_$(ARCH)_$(FEATURESET)_$(FLAVOUR): REAL_VERSION = $(ABINAME)$(LOCALVERSION) +install-headers_$(ARCH)_$(FEATURESET)_$(FLAVOUR): PACKAGE_NAME = linux-headers-$(REAL_VERSION) +install-headers_$(ARCH)_$(FEATURESET)_$(FLAVOUR): PACKAGE_NAME_COMMON = linux-headers-$(ABINAME)-common$(LOCALVERSION_HEADERS) +install-headers_$(ARCH)_$(FEATURESET)_$(FLAVOUR): PACKAGE_NAME_KBUILD = linux-kbuild-$(VERSION) +install-headers_$(ARCH)_$(FEATURESET)_$(FLAVOUR): DH_OPTIONS = -p$(PACKAGE_NAME) +install-headers_$(ARCH)_$(FEATURESET)_$(FLAVOUR): BASE_DIR = /usr/src/$(PACKAGE_NAME) +install-headers_$(ARCH)_$(FEATURESET)_$(FLAVOUR): BASE_DIR_COMMON = /usr/src/$(PACKAGE_NAME_COMMON) +install-headers_$(ARCH)_$(FEATURESET)_$(FLAVOUR): SOURCE_DIR = $(BUILD_DIR)/build_$(ARCH)_$(FEATURESET)_$(FLAVOUR) +install-headers_$(ARCH)_$(FEATURESET)_$(FLAVOUR): REF_DIR = $(BUILD_DIR)/source_$(FEATURESET) +install-headers_$(ARCH)_$(FEATURESET)_$(FLAVOUR): PACKAGE_DIR = debian/$(PACKAGE_NAME) +install-headers_$(ARCH)_$(FEATURESET)_$(FLAVOUR): DIR = $(PACKAGE_DIR)/$(BASE_DIR) +install-headers_$(ARCH)_$(FEATURESET)_$(FLAVOUR): $(STAMPS_DIR)/build_$(ARCH)_$(FEATURESET)_$(FLAVOUR) + dh_testdir + dh_testroot + dh_prep + + mkdir -p $(DIR)/arch/$(KERNEL_ARCH)/kernel + cp -a $(SOURCE_DIR)/{.config,.kernel*,Module.symvers,include} $(DIR) + cp -a $(SOURCE_DIR)/arch/$(KERNEL_ARCH)/include $(DIR)/arch/$(KERNEL_ARCH) + find $(DIR) -name '*.cmd' -delete + + if [ -f $(SOURCE_DIR)/arch/$(KERNEL_ARCH)/lib/crtsavres.o ]; then \ + mkdir $(DIR)/arch/$(KERNEL_ARCH)/lib; \ + cp -a $(SOURCE_DIR)/arch/$(KERNEL_ARCH)/lib/crtsavres.o $(DIR)/arch/$(KERNEL_ARCH)/lib; \ + fi + + @echo 'VERSION = 2' > $(DIR)/Makefile + @echo 'PATCHLEVEL = 6' >> $(DIR)/Makefile + + @echo 'MAKEARGS := -C $(BASE_DIR_COMMON) O=$(BASE_DIR)' >> $(DIR)/Makefile + @echo 'MAKEFLAGS += --no-print-directory' >> $(DIR)/Makefile + + @echo '.PHONY: all $$(MAKECMDGOALS)' >> $(DIR)/Makefile + @echo 'cmd := $$(filter-out all Makefile,$$(MAKECMDGOALS))' >> $(DIR)/Makefile + @echo 'all:' >> $(DIR)/Makefile + @echo ' @$$(MAKE) $$(MAKEARGS) $$(cmd)' >> $(DIR)/Makefile + @echo 'Makefile:;' >> $(DIR)/Makefile + @echo '$$(cmd): all' >> $(DIR)/Makefile + @echo ' @:' >> $(DIR)/Makefile + @echo '%/: all' >> $(DIR)/Makefile + @echo ' @:' >> $(DIR)/Makefile + + dh_link /usr/lib/$(PACKAGE_NAME_KBUILD)/scripts $(BASE_DIR)/scripts + dh_link /usr/lib/$(PACKAGE_NAME_KBUILD)/tools $(BASE_DIR)/tools + + mkdir -p $(PACKAGE_DIR)/lib/modules/$(REAL_VERSION) + ln -s /usr/src/$(PACKAGE_NAME) $(PACKAGE_DIR)/lib/modules/$(REAL_VERSION)/build + ln -s /usr/src/$(PACKAGE_NAME_COMMON) $(PACKAGE_DIR)/lib/modules/$(REAL_VERSION)/source + + +$(MAKE_SELF) install-base INSTALLDOCS_ARGS="--link-doc=$(PACKAGE_NAME_COMMON)" + +install-libc-dev_$(ARCH): PACKAGE_NAME = linux-libc-dev +install-libc-dev_$(ARCH): DH_OPTIONS = -p$(PACKAGE_NAME) +install-libc-dev_$(ARCH): DIR = $(BUILD_DIR)/build-libc-dev +install-libc-dev_$(ARCH): OUT_DIR = debian/$(PACKAGE_NAME)/usr +install-libc-dev_$(ARCH): + dh_testdir + dh_testroot + dh_prep + rm -rf '$(DIR)' + mkdir -p $(DIR) + +$(MAKE_CLEAN) O='$(CURDIR)/$(DIR)' headers_check ARCH=$(KERNEL_ARCH) + +$(MAKE_CLEAN) O='$(CURDIR)/$(DIR)' headers_install ARCH=$(KERNEL_ARCH) INSTALL_HDR_PATH='$(CURDIR)'/$(OUT_DIR) + + rm -rf $(OUT_DIR)/include/drm $(OUT_DIR)/include/scsi + find $(OUT_DIR)/include \( -name .install -o -name ..install.cmd \) -execdir rm {} + + +# Move include/asm to arch-specific directory + mkdir -p $(OUT_DIR)/include/$(DEB_HOST_MULTIARCH) + mv $(OUT_DIR)/include/asm $(OUT_DIR)/include/$(DEB_HOST_MULTIARCH)/ + test ! -d $(OUT_DIR)/include/arch || \ + mv $(OUT_DIR)/include/arch $(OUT_DIR)/include/$(DEB_HOST_MULTIARCH)/ + + +$(MAKE_SELF) install-base + +install-support: PACKAGE_NAME = $(SOURCE_PACKAGE_NAME)-support-$(ABINAME) +install-support: DH_OPTIONS = -p$(PACKAGE_NAME) +install-support: PACKAGE_DIR = debian/$(PACKAGE_NAME) +install-support: PACKAGE_ROOT = /usr/share/$(PACKAGE_NAME) +install-support: + dh_testdir + dh_testroot + dh_prep + dh_installdirs $(PACKAGE_ROOT)/lib/python/debian_linux $(PACKAGE_ROOT)/modules + cp debian/config.defines.dump $(PACKAGE_DIR)$(PACKAGE_ROOT) + cp -R debian/installer $(PACKAGE_DIR)$(PACKAGE_ROOT)/installer + cp debian/lib/python/debian_linux/*.py $(PACKAGE_DIR)$(PACKAGE_ROOT)/lib/python/debian_linux + dh_python3 + dh_link $(PACKAGE_ROOT) /usr/src/$(PACKAGE_NAME) + +$(MAKE_SELF) install-base + +install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR): REAL_VERSION = $(ABINAME)$(LOCALVERSION) +install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR): PACKAGE_NAME = $(IMAGE_PACKAGE_NAME) +install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR): PACKAGE_DIR = debian/$(PACKAGE_NAME) +install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR): INSTALL_DIR = $(PACKAGE_DIR)/boot +install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR): DIR = $(BUILD_DIR)/build_$(ARCH)_$(FEATURESET)_$(FLAVOUR) +install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR): DH_OPTIONS = -p$(PACKAGE_NAME) +install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR): $(STAMPS_DIR)/build_$(ARCH)_$(FEATURESET)_$(FLAVOUR) + +install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR): + dh_testdir + dh_testroot + dh_prep + dh_installdirs 'boot' +ifeq ($(IMAGE_FILE),vmlinux) +# This is the unprocessed ELF image, so we need to strip debug symbols + $(CROSS_COMPILE)objcopy --strip-debug '$(DIR)/vmlinux' $(INSTALL_DIR)/$(IMAGE_INSTALL_STEM)-$(REAL_VERSION) +else + install -m644 '$(DIR)/$(IMAGE_FILE)' $(INSTALL_DIR)/$(IMAGE_INSTALL_STEM)-$(REAL_VERSION) +endif + +$(MAKE_SELF) \ + install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_dt \ + DIR='$(DIR)' PACKAGE_DIR='$(PACKAGE_DIR)' REAL_VERSION='$(REAL_VERSION)' + +$(MAKE_CLEAN) -C $(DIR) modules_install DEPMOD='$(CURDIR)/debian/bin/no-depmod' INSTALL_MOD_PATH='$(CURDIR)'/$(PACKAGE_DIR) INSTALL_MOD_STRIP=1 +ifeq ($(DEBUG),True) + set -o pipefail; \ + find $(PACKAGE_DIR) -name '*.ko' | sed 's|$(PACKAGE_DIR)/lib/modules/$(REAL_VERSION)/kernel/||' | while read module ; do \ + $(CROSS_COMPILE)objcopy --add-gnu-debuglink=$(DIR)/$$module $(PACKAGE_DIR)/lib/modules/$(REAL_VERSION)/kernel/$$module || exit; \ + done +endif + cp $(DIR)/.config $(PACKAGE_DIR)/boot/config-$(REAL_VERSION) + cp $(DIR)/System.map $(PACKAGE_DIR)/boot/System.map-$(REAL_VERSION) + rm -f $(PACKAGE_DIR)/lib/modules/$(REAL_VERSION)/build + rm -f $(PACKAGE_DIR)/lib/modules/$(REAL_VERSION)/source + rm $(PACKAGE_DIR)/lib/firmware -rf + +$(MAKE_SELF) \ + install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_bug \ + PACKAGE_DIR='$(PACKAGE_DIR)' PACKAGE_NAME='$(PACKAGE_NAME)' REAL_VERSION='$(REAL_VERSION)' + dh_strip --no-automatic-dbgsym -Xvmlinux + +$(MAKE_SELF) install-base GENCONTROL_ARGS='-Vkernel:Recommends='"$$( \ + if grep -q '^CONFIG_SMP=y' $(DIR)/.config; then \ + printf irqbalance,; \ + fi)" + +install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_dt: DT_INSTALL_DIR = $(PACKAGE_DIR)/usr/lib/linux-image-$(REAL_VERSION) +install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_dt: +ifneq ($(filter arm64 armel armhf,$(ARCH)),) + +$(MAKE_CLEAN) -C $(DIR) dtbs + +$(MAKE_CLEAN) -C $(DIR) dtbs_install INSTALL_DTBS_PATH=$(CURDIR)/$(DT_INSTALL_DIR) +endif +ifneq ($(filter powerpc powerpcspe ppc64,$(ARCH)),) + +$(MAKE_CLEAN) -C '$(DIR)' bootwrapper_install \ + WRAPPER_OBJDIR='$(CURDIR)/$(DT_INSTALL_DIR)' \ + WRAPPER_DTSDIR='$(CURDIR)/$(DT_INSTALL_DIR)'/dts \ + WRAPPER_BINDIR='$(CURDIR)/$(DT_INSTALL_DIR)' +endif + +install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_bug: + dh_installdirs usr/share/bug/$(PACKAGE_NAME) + dh_install debian/templates/image.bug/* usr/share/bug/$(PACKAGE_NAME) + chmod 755 $(PACKAGE_DIR)/usr/share/bug/$(PACKAGE_NAME)/script + printf "RELEASE='$(REAL_VERSION)'\nDISTRIBUTOR='$(DISTRIBUTOR)'\nSOURCEVERSION='$(SOURCEVERSION)'\nPACKAGE_NAME='$(PACKAGE_NAME)'\nPACKAGE_VERSION='$(SOURCEVERSION)'" > $(PACKAGE_DIR)/usr/share/bug/$(PACKAGE_NAME)/info + +install-image-dbg_$(ARCH)_$(FEATURESET)_$(FLAVOUR): REAL_VERSION = $(ABINAME)$(LOCALVERSION) +install-image-dbg_$(ARCH)_$(FEATURESET)_$(FLAVOUR): PACKAGE_NAME = linux-image-$(REAL_VERSION)-dbg +install-image-dbg_$(ARCH)_$(FEATURESET)_$(FLAVOUR): PACKAGE_DIR = debian/$(PACKAGE_NAME) +install-image-dbg_$(ARCH)_$(FEATURESET)_$(FLAVOUR): DEBUG_DIR = $(PACKAGE_DIR)/usr/lib/debug +install-image-dbg_$(ARCH)_$(FEATURESET)_$(FLAVOUR): DIR = $(BUILD_DIR)/build_$(ARCH)_$(FEATURESET)_$(FLAVOUR) +install-image-dbg_$(ARCH)_$(FEATURESET)_$(FLAVOUR): DH_OPTIONS = -p$(PACKAGE_NAME) +install-image-dbg_$(ARCH)_$(FEATURESET)_$(FLAVOUR): $(STAMPS_DIR)/build_$(ARCH)_$(FEATURESET)_$(FLAVOUR) + dh_testdir + dh_testroot + dh_prep + dh_installdirs usr/lib/debug usr/lib/debug/boot usr/share/lintian/overrides/ + dh_lintian + install -m644 $(DIR)/vmlinux $(DEBUG_DIR)/boot/vmlinux-$(REAL_VERSION) + +$(MAKE_CLEAN) -C $(DIR) modules_install DEPMOD='$(CURDIR)/debian/bin/no-depmod' INSTALL_MOD_PATH='$(CURDIR)'/$(DEBUG_DIR) + find $(DEBUG_DIR)/lib/modules/$(REAL_VERSION)/ -mindepth 1 -maxdepth 1 \! -name kernel -exec rm {} \+ + rm $(DEBUG_DIR)/lib/firmware -rf +ifeq ($(VDSO),True) + +$(MAKE_CLEAN) -C $(DIR) vdso_install INSTALL_MOD_PATH='$(CURDIR)'/$(DEBUG_DIR) +# Create .build-id links. Some architectures already do so, but in the +# wrong place, so delete those first. + rm -rf $(DEBUG_DIR)/lib/modules/$(REAL_VERSION)/vdso/.build-id + find $(DEBUG_DIR)/lib/modules/$(REAL_VERSION)/vdso/ -type f | while read vdso; do \ + if buildid="$$(readelf -n "$$vdso" | sed -rne 's/^\s+Build ID: (.*)$$/\1/p')" && [ "$$buildid" ]; then \ + mkdir -p "$(DEBUG_DIR)/.build-id/$${buildid:0:2}"; \ + ln -s -r "$$vdso" "$(DEBUG_DIR)/.build-id/$${buildid:0:2}/$${buildid:2}.debug"; \ + fi; \ + done +endif +# Add symlinks to vmlinux from the locations expected by kdump-tools, +# systemtap and others + ln -s boot/vmlinux-$(REAL_VERSION) $(DEBUG_DIR)/ + mkdir -p $(DEBUG_DIR)/lib/modules/$(REAL_VERSION) + ln -s ../../../boot/vmlinux-$(REAL_VERSION) $(DEBUG_DIR)/lib/modules/$(REAL_VERSION)/vmlinux + +$(MAKE_SELF) install-base + +install-udeb_$(ARCH): export KW_DEFCONFIG_DIR=debian/installer +install-udeb_$(ARCH): export KW_CONFIG_DIR=debian/installer/$(ARCH) +install-udeb_$(ARCH): DH_OPTIONS=$(PACKAGE_NAMES:%=-p%) +install-udeb_$(ARCH): + dh_testdir + dh_prep +ifeq ($(UDEB_UNSIGNED_TEST_BUILD),True) +# kernel-wedge doesn't expect a -unsigned suffix; work around that for now + while read flavour; do \ + rm -f debian/linux-image-$(ABINAME)-$$flavour; \ + ln -s linux-image-$(ABINAME)-$$flavour-unsigned \ + debian/linux-image-$(ABINAME)-$$flavour; \ + done < <(awk '!/^#/ { print $$3 }' $(KW_CONFIG_DIR)/kernel-versions) +endif + kernel-wedge install-files $(ABINAME) + kernel-wedge check $(PACKAGE_NAMES) + dh_fixperms +ifeq ($(UDEB_UNSIGNED_TEST_BUILD),False) + dh_gencontrol + dh_builddeb +endif + +install-source: PACKAGE_NAME = $(SOURCE_PACKAGE_NAME)-source-$(VERSION) +install-source: DH_OPTIONS = -p$(PACKAGE_NAME) +install-source: $(BUILD_DIR)/$(SOURCE_PACKAGE_NAME)-source-$(UPSTREAMVERSION).tar.xz $(foreach FEATURESET,$(filter-out none,$(ALL_FEATURESETS)),$(BUILD_DIR)/linux-patch-$(UPSTREAMVERSION)-$(FEATURESET).patch.xz) + dh_testdir + dh_testroot + dh_installdirs /usr/src/linux-config-$(UPSTREAMVERSION) + dh_install $^ /usr/src +# Include our kernel config files, but with the module signing +# configuration fixed to work for custom kernels. + for triplet in $(ALL_TRIPLETS); do \ + sed '/CONFIG_\(MODULE_SIG_\(ALL\|KEY\)\|SYSTEM_TRUSTED_KEYS\)[ =]/d' $(BUILD_DIR)/build_$$triplet/.config | xz -c >debian/$(PACKAGE_NAME)/usr/src/linux-config-$(UPSTREAMVERSION)/config.$$triplet.xz; \ + done +# We don't want to recompress, but -Znone is not compatible with older +# tools and is currently rejected by dak. -Zgzip -z0 (uncompressed +# data.tar.gz!) makes dpkg and dak happy, but is incomaptible with +# other things (#725492). So use the fastest real gzip mode. + +$(MAKE_SELF) install-base BUILDDEB_ARGS='-Zgzip -z1' + +define make-tools ++mkdir -p $(BUILD_DIR)/build-tools/$(1) && $(MAKE_CLEAN) -C $(BUILD_DIR)/build-tools/$(1) -f $(CURDIR)/debian/rules.d/$(1)/Makefile top_srcdir=$(CURDIR) top_rulesdir=$(CURDIR)/debian/rules.d OUTDIR=$(1) VERSION=$(VERSION) +endef + +$(STAMPS_DIR)/build-tools: + $(call make-tools,.) + @$(stamp) + +install-kbuild: PACKAGE_NAME = linux-kbuild-$(VERSION) +install-kbuild: DH_OPTIONS = -p$(PACKAGE_NAME) +install-kbuild: PREFIX_DIR = /usr/lib/$(PACKAGE_NAME) +install-kbuild: DIR = $(CURDIR)/debian/$(PACKAGE_NAME) +install-kbuild: $(STAMPS_DIR)/build-tools + dh_testdir + dh_testroot + dh_prep + $(call make-tools,scripts) install DESTDIR=$(DIR) prefix=$(PREFIX_DIR) + $(call make-tools,tools/objtool) install DESTDIR=$(DIR) prefix=$(PREFIX_DIR) + dh_link $(PREFIX_DIR) /usr/src/$(PACKAGE_NAME) + dh_installchangelogs + dh_installdocs + dh_strip + dh_compress + dh_fixperms + dh_installdeb + dh_shlibdeps + dh_gencontrol + dh_md5sums + dh_builddeb + +install-cpupower: DH_OPTIONS = -plinux-cpupower -plibcpupower1 -plibcpupower-dev +install-cpupower: DIR = $(CURDIR)/debian/cpupower-tmp +install-cpupower: $(STAMPS_DIR)/build-tools + dh_testdir + dh_testroot + dh_prep + $(call make-tools,tools/power/cpupower) install DESTDIR=$(DIR) +ifneq ($(filter i386 amd64 x32,$(DEB_HOST_ARCH)),) + $(call make-tools,tools/power/x86) install DESTDIR=$(DIR) + echo >> debian/linux-cpupower.substvars 'cpupower:Arch-Description='\ +'The turbostat command reports topology, frequency, idle power-state$${Newline}'\ +'statistics, temperature and power consumption information as provided$${Newline}'\ +'by the CPU.$${Newline}'\ +'$${Newline}'\ +'The x86_energy_perf_policy command sets a general policy on some Intel$${Newline}'\ +'CPU models for the relative importance of performance versus energy$${Newline}'\ +'savings.' +endif + dh_install --sourcedir=$(DIR) + dh_installchangelogs + dh_installdocs +ifeq (,$(filter nodoc,$(DEB_BUILD_PROFILES))) + dh_installman +endif + dh_strip + dh_compress + dh_fixperms + dh_makeshlibs + dh_installdeb + dh_shlibdeps + dh_gencontrol + dh_md5sums + dh_builddeb + +install-perf: PACKAGE_NAME = linux-perf-$(VERSION) +install-perf: DH_OPTIONS = -p$(PACKAGE_NAME) +install-perf: DIR = $(CURDIR)/debian/$(PACKAGE_NAME) +install-perf: $(STAMPS_DIR)/build-tools + dh_testdir + dh_testroot + dh_prep + $(call make-tools,tools/perf) install DESTDIR=$(DIR) + dh_perl /usr/share/perf_$(VERSION)-core/scripts/perl/Perf-Trace-Util/lib/ + dh_python2 /usr/share/perf_$(VERSION)-core/scripts/python/Perf-Trace-Util/lib/ + dh_installchangelogs + dh_installdocs + dh_lintian + dh_strip + dh_compress + dh_fixperms + dh_installdeb + dh_shlibdeps -Xperf-read-vdso + dh_gencontrol + dh_md5sums + dh_builddeb + +install-usbip: DH_OPTIONS = -pusbip +install-usbip: DIR = $(CURDIR)/debian/usbip-tmp +install-usbip: $(STAMPS_DIR)/build-tools + dh_testdir + dh_testroot + dh_prep + $(call make-tools,tools/usb/usbip) install DESTDIR=$(DIR) + dh_install --sourcedir=$(DIR) + dh_installchangelogs + dh_installdocs +ifeq (,$(filter nodoc,$(DEB_BUILD_PROFILES))) + dh_installman +endif + dh_lintian + dh_strip + dh_compress + dh_fixperms + dh_installdeb + dh_shlibdeps + VERSION=$$(sed -ne 's,^#define PACKAGE_VERSION "\(.*\)"$$,\1,p' $(BUILD_DIR)/build-tools/tools/usb/usbip/config.h) && \ + test -n "$$VERSION" -a -n "$(DEB_VERSION)" && \ + dh_gencontrol -- -v$$VERSION+$(DEB_VERSION) + dh_md5sums + dh_builddeb + +install-hyperv-daemons: PACKAGE_NAME = hyperv-daemons +install-hyperv-daemons: DH_OPTIONS = -p$(PACKAGE_NAME) +install-hyperv-daemons: DIR = $(CURDIR)/debian/$(PACKAGE_NAME) +install-hyperv-daemons: $(STAMPS_DIR)/build-tools + dh_testdir + dh_testroot + dh_prep + $(call make-tools,tools/hv) install DESTDIR=$(DIR) + dh_install + for service in fcopy kvp vss; do \ + install -D -m755 debian/hyperv-daemons.hv-$$service-daemon.init \ + $(DIR)/etc/init.d/hyperv-daemons.hv-$$service-daemon \ + || break; \ + done + dh_installchangelogs + dh_installdocs + dh_systemd_enable + for service in fcopy kvp vss; do \ + dh_installinit --name hyperv-daemons.hv-$$service-daemon \ + --onlyscripts \ + || break; \ + done + dh_systemd_start + dh_lintian + dh_strip + dh_compress + dh_fixperms + dh_installdeb + dh_shlibdeps + dh_gencontrol + dh_md5sums + dh_builddeb + +install-liblockdep: DH_OPTIONS = -pliblockdep$(VERSION) -pliblockdep-dev +install-liblockdep: DIR = $(CURDIR)/debian/liblockdep-tmp +install-liblockdep: $(STAMPS_DIR)/build-tools + dh_testdir + dh_testroot + dh_prep + $(call make-tools,tools/lib/lockdep) install DESTDIR=$(DIR) + env -u DH_OPTIONS dh_install -pliblockdep$(VERSION) --sourcedir=$(DIR) \ + 'usr/lib/*/liblockdep.so.*' + dh_install --sourcedir=$(DIR) + dh_installchangelogs + dh_installdocs + dh_strip + dh_compress + dh_fixperms + env -u DH_OPTIONS dh_makeshlibs -pliblockdep$(VERSION) \ + liblockdep$(VERSION) + dh_installdeb + dh_shlibdeps + dh_gencontrol + dh_md5sums + dh_builddeb + +install-lockdep: PACKAGE_NAME = lockdep +install-lockdep: DH_OPTIONS = -p$(PACKAGE_NAME) +install-lockdep: DIR = $(CURDIR)/debian/$(PACKAGE_NAME) +install-lockdep: + dh_testdir + dh_testroot + dh_prep + dh_installdirs +# Upstream lockdep preload script is not suitable for installation + sed 's/@VERSION@/$(VERSION)/' debian/rules.d/tools/lib/lockdep/lockdep.in \ + > $(DIR)/usr/bin/lockdep + chmod 755 $(DIR)/usr/bin/lockdep + dh_installchangelogs + dh_installdocs + dh_compress + dh_fixperms + dh_installdeb + dh_gencontrol + dh_md5sums + dh_builddeb + +# vim: filetype=make diff --git a/source/format b/source/format new file mode 100644 index 00000000000..c3d9f240741 --- /dev/null +++ b/source/format @@ -0,0 +1,2 @@ +3.0 (quilt) + diff --git a/source/include-binaries b/source/include-binaries new file mode 100644 index 00000000000..f9b96537437 --- /dev/null +++ b/source/include-binaries @@ -0,0 +1,2 @@ +debian/upstream/rt-signing-key.pgp +debian/upstream/signing-key.pgp diff --git a/source/lintian-overrides b/source/lintian-overrides new file mode 100644 index 00000000000..2c61b27b0cf --- /dev/null +++ b/source/lintian-overrides @@ -0,0 +1,4 @@ +# The copyright notice in the GFDL itself, mentioning invariant +# sections, is just an example. lintian seems to whitelist the +# plain-text version but that doesn't cover this ReST version. +linux source: license-problem-gfdl-invariants Documentation/media/uapi/fdl-appendix.rst invariant part is: with the :ref:`invariant sections ` being list their titles, with the :ref:`front-cover texts ` being list, and with the :ref:`back-cover texts ` being list diff --git a/source/options b/source/options new file mode 100644 index 00000000000..3badfe8963d --- /dev/null +++ b/source/options @@ -0,0 +1,2 @@ +compression = "xz" +tar-ignore = debian/*.local diff --git a/templates/control.docs.in b/templates/control.docs.in new file mode 100644 index 00000000000..30e55def9ce --- /dev/null +++ b/templates/control.docs.in @@ -0,0 +1,14 @@ +Package: @source_package@-doc-@version@ +Build-Profiles: +Architecture: all +Depends: ${misc:Depends} +Section: doc +Multi-Arch: foreign +Description: Linux kernel specific documentation for version @version@ + This package provides the various README files and HTML documentation for + the Linux kernel version @version@. Plenty of information, including the + descriptions of various kernel subsystems, filesystems, driver-specific + notes and the like. Consult the file + /usr/share/doc/linux-doc-@version@/Documentation/00-INDEX + for the detailed description of the contents. + diff --git a/templates/control.extra.in b/templates/control.extra.in new file mode 100644 index 00000000000..cf68233de9f --- /dev/null +++ b/templates/control.extra.in @@ -0,0 +1,26 @@ +Package: linux-compiler-gcc-7-arm +Build-Profiles: +Depends: gcc-7, ${misc:Depends} +Architecture: armel armhf +Multi-Arch: foreign +Description: Compiler for Linux on ARM (meta-package) + This package depends on GCC of the appropriate version and architecture + for Linux on armel and armhf. + +Package: linux-compiler-gcc-7-s390 +Build-Profiles: +Depends: gcc-7, ${misc:Depends} +Architecture: s390 s390x +Multi-Arch: foreign +Description: Compiler for Linux on IBM zSeries (meta-package) + This package depends on GCC of the appropriate version and architecture + for Linux on s390 and s390x. + +Package: linux-compiler-gcc-7-x86 +Build-Profiles: +Depends: gcc-7 (>= 7.2.0-20~), ${misc:Depends} +Architecture: amd64 i386 x32 +Multi-Arch: foreign +Description: Compiler for Linux on x86 (meta-package) + This package depends on GCC of the appropriate version and architecture + for Linux on amd64, i386 and x32. diff --git a/templates/control.headers.arch.in b/templates/control.headers.arch.in new file mode 100644 index 00000000000..75bfd50e541 --- /dev/null +++ b/templates/control.headers.arch.in @@ -0,0 +1,16 @@ +Package: linux-headers-@abiname@-all +Build-Profiles: +Depends: linux-headers-@abiname@-all-${kernel:Arch} (= ${binary:Version}), ${misc:Depends} +Description: All header files for Linux @version@ (meta-package) + This package depends against all architecture-specific kernel header files + for Linux kernel version @upstreamversion@, generally used for building out-of-tree + kernel modules. + +Package: linux-headers-@abiname@-all-@arch@ +Build-Profiles: +Depends: ${misc:Depends} +Description: All header files for Linux @version@ (meta-package) + This package depends against all architecture-specific kernel header files + for Linux kernel version @upstreamversion@, generally used for building out-of-tree + kernel modules. + diff --git a/templates/control.headers.featureset.in b/templates/control.headers.featureset.in new file mode 100644 index 00000000000..d9e52cb0d3e --- /dev/null +++ b/templates/control.headers.featureset.in @@ -0,0 +1,11 @@ +Package: linux-headers-@abiname@-common@localversion@ +Build-Profiles: +Architecture: all +Depends: ${misc:Depends} +Multi-Arch: foreign +Description: Common header files for Linux @abiname@@localversion@ + This package provides the common kernel header files for Linux kernel + version @abiname@@featureset_desc@, generally used for building + out-of-tree kernel modules. To obtain a complete set of headers you + also need to install the linux-headers-@abiname@-(flavour) package, + matching the flavour of the kernel you intend the build for. diff --git a/templates/control.headers.in b/templates/control.headers.in new file mode 100644 index 00000000000..38f70341123 --- /dev/null +++ b/templates/control.headers.in @@ -0,0 +1,10 @@ +Package: linux-headers-@abiname@@localversion@ +Build-Profiles: +Depends: linux-headers-@abiname@-common@localversion_headers@ (= ${source:Version}), linux-kbuild-@version@, ${misc:Depends} +Description: Header files for Linux @abiname@@localversion@ + This package provides the architecture-specific kernel header files + for Linux kernel @abiname@@localversion@, generally + used for building out-of-tree kernel modules. These files are going to be + installed into /usr/src/linux-headers-@abiname@@localversion@, and can + be used for building modules that load into the kernel provided by the + linux-image-@abiname@@localversion@ package. diff --git a/templates/control.image-dbg.in b/templates/control.image-dbg.in new file mode 100644 index 00000000000..53fcc086d6a --- /dev/null +++ b/templates/control.image-dbg.in @@ -0,0 +1,8 @@ +Package: linux-image-@abiname@@localversion@-dbg +Build-Profiles: +Depends: ${misc:Depends} +Section: debug +Priority: optional +Description: Debug symbols for linux-image-@abiname@@localversion@ + This package provides the detached debug symbols for the Linux kernel + and modules in linux-image-@abiname@@localversion@. diff --git a/templates/control.image-unsigned.in b/templates/control.image-unsigned.in new file mode 100644 index 00000000000..6a1fb1fa04d --- /dev/null +++ b/templates/control.image-unsigned.in @@ -0,0 +1,10 @@ +Package: linux-image-@abiname@@localversion@-unsigned +Build-Profiles: +Depends: kmod, linux-base (>= 4.3~), ${misc:Depends} +Recommends: firmware-linux-free, ${kernel:Recommends} +Suggests: linux-doc-@version@, debian-kernel-handbook +Conflicts: linux-image-@abiname@@localversion@ +Replaces: linux-image-@abiname@@localversion@ +Provides: linux-image-@abiname@@localversion@ +Description: Linux @upstreamversion@ for @class@ + The Linux kernel @upstreamversion@ and modules for use on @longclass@. diff --git a/templates/control.image.in b/templates/control.image.in new file mode 100644 index 00000000000..266757f5595 --- /dev/null +++ b/templates/control.image.in @@ -0,0 +1,7 @@ +Package: linux-image-@abiname@@localversion@ +Build-Profiles: +Depends: kmod, linux-base (>= 4.3~), ${misc:Depends} +Recommends: firmware-linux-free, ${kernel:Recommends} +Suggests: linux-doc-@version@, debian-kernel-handbook +Description: Linux @upstreamversion@ for @class@ + The Linux kernel @upstreamversion@ and modules for use on @longclass@. diff --git a/templates/control.libc-dev.in b/templates/control.libc-dev.in new file mode 100644 index 00000000000..6e975e4c35e --- /dev/null +++ b/templates/control.libc-dev.in @@ -0,0 +1,9 @@ +Package: linux-libc-dev +Section: devel +Depends: ${misc:Depends} +# Remove this Provides when #826519 is closed +Provides: linux-kernel-headers +Multi-Arch: same +Description: Linux support headers for userspace development + This package provides userspaces headers from the Linux kernel. These headers + are used by the installed headers for GNU libc and other system libraries. diff --git a/templates/control.main.in b/templates/control.main.in new file mode 100644 index 00000000000..80794db645c --- /dev/null +++ b/templates/control.main.in @@ -0,0 +1,26 @@ +Package: @source_package@-source-@version@ +Build-Profiles: +Architecture: all +Section: kernel +Depends: binutils, xz-utils, ${misc:Depends} +Recommends: libc6-dev | libc-dev, gcc, make, bc +Suggests: libncurses-dev | ncurses-dev, libqt4-dev, pkg-config +Multi-Arch: foreign +Description: Linux kernel source for version @version@ with Debian patches + This package provides source code for the Linux kernel version @version@. + This source closely tracks official Linux kernel releases. Debian's + modifications to that source consist of security fixes, bug fixes, and + features that have already been (or are believed to be) accepted by the + upstream maintainers. + +Package: @source_package@-support-@abiname@ +Build-Profiles: +Architecture: all +Section: devel +Depends: ${python3:Depends}, ${misc:Depends} +Multi-Arch: foreign +Description: Support files for Linux @upstreamversion@ + This package provides support files for the Linux kernel build, + e.g. scripts to handle ABI information and for generation of + build system meta data. + diff --git a/templates/control.source.in b/templates/control.source.in new file mode 100644 index 00000000000..b846ed8afbf --- /dev/null +++ b/templates/control.source.in @@ -0,0 +1,69 @@ +Section: kernel +Priority: optional +Maintainer: Debian Kernel Team +Uploaders: Bastian Blank , maximilian attems , Ben Hutchings , Salvatore Bonaccorso +Standards-Version: 4.1.1 +Build-Depends: + debhelper (>= 10.1~), dh-exec, +# used to run debian/bin/*.py + python3:any, +# used by debian/rules.real to prepare the source + quilt, +# used by debian/rules.real to build linux-doc and linux-headers + cpio , +# used by upstream to compress kernel and by debian/rules.real to build linux-source + xz-utils , +# used by debian/rules.real to build linux-perf and linux-support + dh-python , +Build-Depends-Arch: +# used by debian/rules.real to build udebs + kernel-wedge (>= 2.93~) , +# used by kernel-wedge (only on Linux, thus not declared as a dependency) + kmod , +# used by upstream to build include/generated/timeconst.h + bc , +# used by upstream to build signing tools and to process certificates + libssl-dev:native , libssl-dev , + openssl (>= 1.1.0-1~) , +# used by upstream to build perf documentation + asciidoc-base , + xmlto , +# used by upstream to build perf + bison , +# - flex needs to run on the host; we have the same problem as for openssl + flex (>= 2.6.1-1.1~) , + gcc-multilib [amd64 ppc64 s390x sparc64] , + libaudit-dev , + libbabeltrace-dev (>= 1.5.0) , +# - libbabeltrace-ctf-dev may or may not be needed as well + libbabeltrace-dev (>= 1.5.3-2~) | libbabeltrace-ctf-dev (>= 1.5.0) , + libdw-dev , + libelf-dev , + libiberty-dev , + libnewt-dev , + libnuma-dev [amd64 arm64 hppa i386 mips mips64 mips64el mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el mips64r6 mips64r6el powerpc powerpcspe ppc64 ppc64el sparc x32] , + libperl-dev , + libunwind8-dev [amd64 armel armhf arm64 i386] , + python-dev , +# used by upstream to build usbip + autoconf , + automake , + libtool , + libglib2.0-dev , + libudev-dev , + libwrap0-dev , +# used by debian/rules.d/tools/usb/usbip to build usbip + rsync , +# used by upstream to build cpupower + libpci-dev , +Build-Depends-Indep: +# used by debian/rules.real to build linux-source + patchutils , +# used by upstream to build documentation + graphviz , + python-sphinx , + python-sphinx-rtd-theme , +Rules-Requires-Root: no +Vcs-Git: https://salsa.debian.org/kernel-team/linux.git +Vcs-Browser: https://salsa.debian.org/kernel-team/linux +Homepage: https://www.kernel.org/ diff --git a/templates/control.tools.in b/templates/control.tools.in new file mode 100644 index 00000000000..c534607e640 --- /dev/null +++ b/templates/control.tools.in @@ -0,0 +1,128 @@ +Package: linux-kbuild-@version@ +Build-Profiles: +Architecture: linux-any +Depends: ${shlibs:Depends}, ${misc:Depends} +Multi-Arch: foreign +Description: Kbuild infrastructure for Linux @version@ + This package provides the kbuild infrastructure for the headers packages for Linux kernel version @version@. + +Package: linux-cpupower +Build-Profiles: +Section: admin +Architecture: linux-any +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: CPU power management tools for Linux + The cpupower command allows inspection and control of cpufreq and + cpuidle tunables for hardware that support these features. It + replaces "cpufreq-info" and "cpufreq-set" in cpufrequtils. + . + ${cpupower:Arch-Description} + +Package: libcpupower1 +Build-Profiles: +Section: libs +Architecture: linux-any +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: CPU frequency and voltage scaling tools for Linux (libraries) + This package contains the shared library. + +Package: libcpupower-dev +Build-Profiles: +Section: libdevel +Architecture: linux-any +Depends: ${shlibs:Depends}, ${misc:Depends}, libcpupower1 (= ${binary:Version}) +Provides: libcpufreq-dev +Conflicts: libcpufreq-dev +Replaces: libcpufreq-dev +Description: CPU frequency and voltage scaling tools for Linux (development files) + This package contains the 'power/cpupower' headers and library shared objects. + +Package: linux-perf-@version@ +Build-Profiles: +Section: devel +Architecture: alpha amd64 arm64 armel armhf hppa i386 mips mips64 mips64el mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el mips64r6 mips64r6el powerpc powerpcspe ppc64 ppc64el s390 s390x sh4 sparc sparc64 +Depends: ${shlibs:Depends}, ${misc:Depends}, ${perl:Depends}, ${python:Depends} +Recommends: linux-base +Provides: linux-tools-@version@ +Conflicts: linux-tools-@version@ +Replaces: linux-tools-@version@ +Suggests: linux-doc-@version@ +Description: Performance analysis tools for Linux @version@ + This package contains the 'perf' performance analysis tools for Linux + kernel version @version@. + . + The linux-base package contains a 'perf' command which will invoke the + appropriate version for the running kernel. + +Package: usbip +Build-Profiles: +Architecture: linux-any +Depends: usbutils, ${shlibs:Depends}, ${misc:Depends} +Section: admin +Description: USB device sharing system over IP network + USB/IP is a system for sharing USB devices over the network. + . + To share USB devices between computers with their full + functionality, USB/IP encapsulates "USB requests" into IP + packets and transmits them between computers. + . + Original USB device drivers and applications can be used + for remote USB devices without any modification of them. A + computer can use remote USB devices as if they were + directly attached. + . + Currently USB/IP provides no access control or encryption. + It should only be used in trusted environments. + . + This package provides the server component 'usbipd' and the + client tool 'usbip'. + +Package: hyperv-daemons +Build-Profiles: +Architecture: i386 amd64 x32 +Depends: lsb-base, ${shlibs:Depends}, ${misc:Depends} +Section: admin +Description: Support daemons for Linux running on Hyper-V + Suite of daemons for Linux guests running on Hyper-V, consisting of + hv_fcopy_daemon, hv_kvp_daemon and hv_vss_daemon. + . + hv_fcopy_daemon provides the file copy service, allowing the host to + copy files into the guest. + . + hv_kvp_daemon provides the key-value pair (KVP) service, allowing the + host to get and set the IP networking configuration of the guest. + (This requires helper scripts which are not currently included.) + . + hv_vss_daemon provides the volume shadow copy service (VSS), allowing + the host to freeze the guest filesystems while taking a snapshot. + +Package: lockdep +Build-Profiles: +Architecture: all +Depends: ${shlibs:Depends}, ${misc:Depends}, liblockdep@version@ +Recommends: liblockdep-dev +Section: devel +Multi-Arch: allowed +Description: Runtime locking correctness validator + lockdep is a wrapper for programs that use the pthreads API, which detects + actual and potential deadlocks and other locking bugs. + +Package: liblockdep@version@ +Build-Profiles: +Architecture: linux-any +Depends: ${shlibs:Depends}, ${misc:Depends} +Section: libs +Multi-Arch: same +Description: Runtime locking correctness validator (shared library) + liblockdep is a library for programs that use the pthreads API, which can + be used to detect actual and potential deadlocks and other locking bugs. + +Package: liblockdep-dev +Build-Profiles: +Architecture: linux-any +Depends: ${shlibs:Depends}, ${misc:Depends}, liblockdep@version@ (= ${binary:Version}) +Section: libdevel +Multi-Arch: same +Description: Runtime locking correctness validator (development files) + liblockdep is a library for programs that use the pthreads API, which can + be used to detect actual and potential deadlocks and other locking bugs. diff --git a/templates/headers.postinst.in b/templates/headers.postinst.in new file mode 100644 index 00000000000..c13e6dc54e4 --- /dev/null +++ b/templates/headers.postinst.in @@ -0,0 +1,18 @@ +#!/usr/bin/perl +# Author: Michael Gilbert +# Origin: Stripped down version of the linux-headers postinst from Ubuntu's +# 2.6.32-14-generic kernel, which was itself derived from a +# Debian linux-image postinst script. + +$|=1; +my $version = "@abiname@@localversion@"; + +if (-d "/etc/kernel/header_postinst.d") { + system ("run-parts --report --exit-on-error --arg=$version " . + "/etc/kernel/header_postinst.d") && + die "Failed to process /etc/kernel/header_postinst.d"; +} + +exit 0; + +__END__ diff --git a/templates/image-dbg.lintian-overrides.in b/templates/image-dbg.lintian-overrides.in new file mode 100644 index 00000000000..4290c15664a --- /dev/null +++ b/templates/image-dbg.lintian-overrides.in @@ -0,0 +1,15 @@ +#!/usr/bin/dh-exec + +# Kernel dbg packages contain a full image with debug data +linux-image-@abiname@@localversion@-dbg: dbg-package-missing-depends + +# glibc doesn't seem to check for a PT_GNU_STACK section in vDSOs, so +# it's OK that they don't have it +[arm64 armhf] linux-image-@abiname@@localversion@-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/@abiname@@localversion@/vdso/vdso.so +[amd64 i386 ppc64el s390x] linux-image-@abiname@@localversion@-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/@abiname@@localversion@/vdso/vdso32.so +[amd64 ppc64el s390x] linux-image-@abiname@@localversion@-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/@abiname@@localversion@/vdso/vdso64.so +[amd64] linux-image-@abiname@@localversion@-dbg: shlib-without-PT_GNU_STACK-section usr/lib/debug/lib/modules/@abiname@@localversion@/vdso/vdsox32.so + +# It is intended that 64-bit kernels provide vDSOs for 32-bit executables +[amd64 ppc64el s390x] linux-image-@abiname@@localversion@-dbg: binary-from-other-architecture usr/lib/debug/lib/modules/@abiname@@localversion@/vdso/vdso32.so +[amd64] linux-image-@abiname@@localversion@-dbg: binary-from-other-architecture usr/lib/debug/lib/modules/@abiname@@localversion@/vdso/vdsox32.so diff --git a/templates/image.bug/control b/templates/image.bug/control new file mode 100644 index 00000000000..b60912c4cd5 --- /dev/null +++ b/templates/image.bug/control @@ -0,0 +1,2 @@ +Submit-As: src:linux +Package-Status: firmware-amd-graphics firmware-atheros firmware-bnx2 firmware-bnx2x firmware-brcm80211 firmware-cavium firmware-intelwimax firmware-intel-sound firmware-ipw2x00 firmware-ivtv firmware-iwlwifi firmware-libertas firmware-linux-nonfree firmware-misc-nonfree firmware-myricom firmware-netxen firmware-qlogic firmware-realtek firmware-samsung firmware-siano firmware-ti-connectivity xen-hypervisor diff --git a/templates/image.bug/include-0version b/templates/image.bug/include-0version new file mode 100644 index 00000000000..b5b32bfbd12 --- /dev/null +++ b/templates/image.bug/include-0version @@ -0,0 +1,9 @@ +add_0version() { + echo '** Version:' >&3 + cat /proc/version >&3 + echo >&3 +} + +ask_0version() { + true +} diff --git a/templates/image.bug/include-1cmdline b/templates/image.bug/include-1cmdline new file mode 100644 index 00000000000..3fcc9409823 --- /dev/null +++ b/templates/image.bug/include-1cmdline @@ -0,0 +1,9 @@ +add_1cmdline() { + echo '** Command line:' >&3 + cat /proc/cmdline >&3 + echo >&3 +} + +ask_1cmdline() { + true +} diff --git a/templates/image.bug/include-1tainted b/templates/image.bug/include-1tainted new file mode 100644 index 00000000000..921922e3c05 --- /dev/null +++ b/templates/image.bug/include-1tainted @@ -0,0 +1,55 @@ +TAINT_PROPRIETARY_MODULE=0 +TAINT_FORCED_MODULE=1 +TAINT_UNSAFE_SMP=2 +TAINT_FORCED_RMMOD=3 +TAINT_MACHINE_CHECK=4 +TAINT_BAD_PAGE=5 +TAINT_USER=6 +TAINT_DIE=7 +TAINT_OVERRIDDEN_ACPI_TABLE=8 +TAINT_WARN=9 +TAINT_CRAP=10 +TAINT_FIRMWARE_WORKAROUND=11 +TAINT_OOT_MODULE=12 +TAINT_UNSIGNED_MODULE=13 +TAINT_SOFTLOCKUP=14 +TAINT_LIVEPATCH=15 + +_check() { + if [ $(($tainted & 1<<$1)) -ne 0 ]; then + result_short="$result_short$2" + result_long="$result_long * $3\n" + fi +} + +add_1tainted() { + tainted=$(cat /proc/sys/kernel/tainted) + if [ "$tainted" -gt 0 ]; then + local result_short result_long + _check $TAINT_PROPRIETARY_MODULE 'P' 'Proprietary module has been loaded.' + _check $TAINT_FORCED_MODULE 'F' 'Module has been forcibly loaded.' + _check $TAINT_UNSAFE_SMP 'S' 'SMP with CPUs not designed for SMP.' + _check $TAINT_FORCED_RMMOD 'R' 'User forced a module unload.' + _check $TAINT_MACHINE_CHECK 'M' 'System experienced a machine check exception.' + _check $TAINT_BAD_PAGE 'B' 'System has hit bad_page.' + _check $TAINT_USER 'U' 'Userspace-defined naughtiness.' + _check $TAINT_DIE 'D' 'Kernel has oopsed before.' + _check $TAINT_OVERRIDDEN_ACPI_TABLE 'A' 'ACPI table overridden.' + _check $TAINT_WARN 'W' 'Taint on warning.' + _check $TAINT_CRAP 'C' 'Module from drivers/staging has been loaded.' + _check $TAINT_FIRMWARE_WORKAROUND 'I' 'Working around severe firmware bug.' + _check $TAINT_OOT_MODULE 'O' 'Out-of-tree module has been loaded.' + _check $TAINT_UNSIGNED_MODULE 'E' 'Unsigned module has been loaded.' + _check $TAINT_SOFTLOCKUP 'L' 'Kernel has detected soft lockup before.' + _check $TAINT_LIVEPATCH 'K' 'Live patch has been loaded.' + echo "** Tainted: $result_short ($tainted)" >&3 + printf "$result_long" >&3 + else + echo '** Not tainted' >&3 + fi + echo >&3 +} + +ask_1tainted() { + true +} diff --git a/templates/image.bug/include-dmesg b/templates/image.bug/include-dmesg new file mode 100644 index 00000000000..634dc99acb1 --- /dev/null +++ b/templates/image.bug/include-dmesg @@ -0,0 +1,21 @@ +add_dmesg() { + local got_log= + echo '** Kernel log:' >&3 + if [ "$(cat /proc/sys/kernel/dmesg_restrict)" = 0 ]; then + dmesg > >(tail -n 100 >&3) && got_log=y + elif command -v sudo >/dev/null; then + yesno "Use sudo to read the kernel log? " yep + if [ "$REPLY" = yep ]; then + sudo dmesg > >(tail -n 100 >&3) && got_log=y + fi + fi + test "$got_log" || echo 'Unable to read kernel log; any relevant messages should be attached' >&3 + echo >&3 +} + +ask_dmesg() { + # Remind the user to attach the kernel log. This should also trigger + # a reminder in some MUAs if the user tries to send without it. + echo '** Kernel log: boot messages should be attached' >&3 + echo >&3 +} diff --git a/templates/image.bug/include-model b/templates/image.bug/include-model new file mode 100644 index 00000000000..9c6aedd6a51 --- /dev/null +++ b/templates/image.bug/include-model @@ -0,0 +1,60 @@ +grep_model() { + case "$(uname -m)" in + alpha) + egrep '^(system (type|variation|revision)|platform string)\b' /proc/cpuinfo + ;; + arm*) + egrep '^(Processor|Hardware|Revision)\b' /proc/cpuinfo + ;; + i386|x86_64) + local found= + for name in {sys,product,chassis,bios,board}_{vendor,name,version}; do + if [ -f /sys/class/dmi/id/$name ]; then + echo -n "$name: " + cat /sys/class/dmi/id/$name + found=y + fi + done + test -n "$found" + ;; + mips|mips64) + egrep '^(system type|cpu model)\b' /proc/cpuinfo + ;; + parisc|parisc64) + egrep '^(model|[hs]version)\b' /proc/cpuinfo + ;; + ppc|ppc64|ppc64le) + egrep -i '^(board|machine|model|motherboard|platform|revision|vendor)\b' /proc/cpuinfo + ;; + s390|s390x) + egrep '^processor\b' /proc/cpuinfo + ;; + sparc|sparc64) + egrep '^(cpu|fpu|pmu|prom|type)\b' /proc/cpuinfo + ;; + sh4|sh4a) + egrep '^(machine|cpu)\b' /proc/cpuinfo + ;; + *) + false + ;; + esac + + # Device Tree model + if [ -r /proc/device-tree/model ]; then + echo "Device Tree model:" $(cat /proc/device-tree/model) + fi +} + +add_model() { + local found= + echo '** Model information' >&3 + grep_model >&3 2>/dev/null || echo "not available" >&3 + echo >&3 +} + +ask_model() { + # This is still valid as long as the bug is being reported on the same + # system. + test $same_system = nop || add_model +} diff --git a/templates/image.bug/include-modules b/templates/image.bug/include-modules new file mode 100644 index 00000000000..22271c90588 --- /dev/null +++ b/templates/image.bug/include-modules @@ -0,0 +1,13 @@ +add_modules() { + echo '** Loaded modules:' >&3 + # List modules along with any taint flags. + # We should be able to tell cut to use an empty output delimiter, but + # currently (coreutils 8.13-3) this results in null bytes in the output. + cut -d' ' -f1,7 /proc/modules | sed 's/ //' >&3 + echo >&3 +} + +ask_modules() { + true +} + diff --git a/templates/image.bug/include-network b/templates/image.bug/include-network new file mode 100644 index 00000000000..bd12defe621 --- /dev/null +++ b/templates/image.bug/include-network @@ -0,0 +1,39 @@ +_add_etc_network_interfaces() { + echo '** Network interface configuration:' >&3 + # Hide passwords/keys + awk '$1 ~ /key|pass|^wpa-(anonymous|identity|phase|pin|private|psk)/ { gsub(".", "*", $2); } + $1 == "ethtool-wol" { gsub(".", "*", $3); } + !/^[[:space:]]*\#/ { print; } + ' &3 + echo >&3 +} + +add_network() { + yesno "Include network configuration and status from this computer? " nop + test $REPLY = yep || return 0 + + _add_etc_network_interfaces + echo '** Network status:' >&3 + if command -v ip >/dev/null; then + echo '*** IP interfaces and addresses:' >&3 + ip address show >&3 + echo >&3 + fi + echo '*** Device statistics:' >&3 + cat /proc/net/dev >&3 + echo >&3 + if command -v netstat >/dev/null; then + echo '*** Protocol statistics:' >&3 + netstat -s >&3 || true + echo >&3 + fi + echo >&3 +} + +ask_network() { + test $same_system = yep || return 0 + yesno "Include network configuration from this computer? " nop + test $REPLY = yep || return 0 + + _add_etc_network_interfaces +} diff --git a/templates/image.bug/include-pci b/templates/image.bug/include-pci new file mode 100644 index 00000000000..8e6528e5a7b --- /dev/null +++ b/templates/image.bug/include-pci @@ -0,0 +1,12 @@ +add_pci() { + echo '** PCI devices:' >&3 + lspci -nnvv >&3 2>/dev/null || echo 'not available' >&3 + echo >&3 +} + +ask_pci() { + # This information shouldn't vary much between kernel versions, so + # include it anyway. + test $same_system = nop || add_pci +} + diff --git a/templates/image.bug/include-pstore b/templates/image.bug/include-pstore new file mode 100644 index 00000000000..43285bd6a9b --- /dev/null +++ b/templates/image.bug/include-pstore @@ -0,0 +1,77 @@ +_add_pstore_log() { + if [ $# -le 3 ]; then + return + fi + + local backend="$1" + local event="$2" + local date="$3" + + yesno "Include log of $event at $(date -d @$date +%c) stored by $backend?" yep + if [ $REPLY != yep ]; then + return + fi + + echo >&3 + echo "*** Log of $event at $(date -d @$date -Iseconds) from $backend" >&3 + + shift 3 + for file in "$@"; do + tail -n +2 "$file" | sed 's/^<.>//' >&3 + done +} + +add_pstore() { + local backend + local i + local j + local file + local date + local head + local event + local log_files + + if ! mountpoint -q /sys/fs/pstore; then + return 0 + fi + + set -- /sys/fs/pstore/dmesg-*-1 + backend=${1#*/dmesg-} + backend=${backend%-1} + if [ "$backend" = '*' ]; then + return 0 + fi + + i=1 + while [ -f /sys/fs/pstore/dmesg-$backend-$i ]; do + file=/sys/fs/pstore/dmesg-$backend-$i + head="$(head -1 "$file")" + + # Is this the first part of a log? + if [ "x${head% Part1}" != "x$head" ]; then + # Flush previous log, if any + _add_pstore_log "$backend" "$event" "$date" $log_files + + event="${head% Part1}" + date=$(stat -c %Y $file) + log_files= + j=1 + fi + + if [ "x$head" = "x$event Part$j" ]; then + # Each part is prepended to the list, because they're numbered + # backward in log history + log_files="$file $log_files" + j=$((j + 1)) + fi + + i=$((i + 1)) + done + + # Flush last log, if any + _add_pstore_log "$backend" "$event" "$date" $log_files +} + +ask_pstore() { + add_pstore +} diff --git a/templates/image.bug/include-usb b/templates/image.bug/include-usb new file mode 100644 index 00000000000..e8eb67e42d1 --- /dev/null +++ b/templates/image.bug/include-usb @@ -0,0 +1,11 @@ +add_usb() { + echo '** USB devices:' >&3 + lsusb >&3 2>/dev/null || echo 'not available' >&3 + echo >&3 +} + +ask_usb() { + # This information shouldn't vary much between kernel versions, so + # include it anyway. + test $same_system = nop || add_usb +} diff --git a/templates/image.bug/presubj b/templates/image.bug/presubj new file mode 100644 index 00000000000..59b891acb96 --- /dev/null +++ b/templates/image.bug/presubj @@ -0,0 +1,8 @@ +Please ensure that you are currently running the kernel version that you +are reporting on. This will allow your bug report to include useful +diagnostic information about the running kernel. + +If you are reporting that the kernel fails to boot, please use a digital +camera, serial console or netconsole to record the boot messages and +attach these to your report. You can use the kernel parameter +'boot_delay=1000' to slow down the boot messages. diff --git a/templates/image.bug/script b/templates/image.bug/script new file mode 100644 index 00000000000..8e0b5d557d7 --- /dev/null +++ b/templates/image.bug/script @@ -0,0 +1,46 @@ +#!/bin/bash +set -e + +PATH=/sbin:/bin:/usr/sbin:/usr/bin + +dir="$(dirname $0)" + +. "$dir"/info + +for file in "$dir"/include-*; do + name="$(echo $file | sed -e 's,^.*/include-,,')" + hooks+=($name) + . "$file" +done + +if [ "$RELEASE" == "$(uname -r)" ]; then + running_ver="$(uname -v)" + running_ver="${running_ver#* $DISTRIBUTOR }" + running_ver="${running_ver%% *}" + if [ "$running_ver" != "$SOURCEVERSION" ]; then + cat </dev/null; then + linux-update-symlinks remove $version $image_path +fi + +if [ -d /etc/kernel/postrm.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/postrm.d +fi + +if [ "$1" = purge ]; then + for extra_file in modules.dep modules.isapnpmap modules.pcimap \ + modules.usbmap modules.parportmap \ + modules.generic_string modules.ieee1394map \ + modules.ieee1394map modules.pnpbiosmap \ + modules.alias modules.ccwmap modules.inputmap \ + modules.symbols modules.ofmap \ + modules.seriomap modules.\*.bin \ + modules.softdep modules.devname; do + eval rm -f /lib/modules/$version/$extra_file + done + rmdir /lib/modules/$version || true +fi + +exit 0 diff --git a/templates/image.preinst.in b/templates/image.preinst.in new file mode 100755 index 00000000000..8a5658ecd1b --- /dev/null +++ b/templates/image.preinst.in @@ -0,0 +1,21 @@ +#!/bin/sh -e + +version=@abiname@@localversion@ +image_path=/boot/@image-stem@-$version + +if [ "$1" = abort-upgrade ]; then + exit 0 +fi + +if [ "$1" = install ]; then + # Create a flag file for postinst + mkdir -p /lib/modules/$version + touch /lib/modules/$version/.fresh-install +fi + +if [ -d /etc/kernel/preinst.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/preinst.d +fi + +exit 0 diff --git a/templates/image.prerm.in b/templates/image.prerm.in new file mode 100755 index 00000000000..f1bde29b115 --- /dev/null +++ b/templates/image.prerm.in @@ -0,0 +1,17 @@ +#!/bin/sh -e + +version=@abiname@@localversion@ +image_path=/boot/@image-stem@-$version + +if [ "$1" != remove ]; then + exit 0 +fi + +linux-check-removal $version + +if [ -d /etc/kernel/prerm.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/prerm.d +fi + +exit 0 diff --git a/templates/perf.lintian-overrides.in b/templates/perf.lintian-overrides.in new file mode 100644 index 00000000000..858faa782ef --- /dev/null +++ b/templates/perf.lintian-overrides.in @@ -0,0 +1,3 @@ +# These executables are needed to handle processes running in compat mode +linux-perf-@version@: binary-from-other-architecture usr/lib/perf_@version@-core/perf-read-vdso32 +linux-perf-@version@: binary-from-other-architecture usr/lib/perf_@version@-core/perf-read-vdsox32 diff --git a/templates/tests-control.main.in b/templates/tests-control.main.in new file mode 100644 index 00000000000..62497c67ae0 --- /dev/null +++ b/templates/tests-control.main.in @@ -0,0 +1,4 @@ +Tests: selftests +Restrictions: breaks-testbed, needs-root, isolation-machine +Depends: kexec-tools, python3, gcc, make, libpopt-dev, gcc-multilib [amd64], bc, fuse, libfuse-dev, pkg-config +Classes: smp diff --git a/tests/control b/tests/control new file mode 100644 index 00000000000..71721c73997 --- /dev/null +++ b/tests/control @@ -0,0 +1,5 @@ +Tests: selftests +Restrictions: breaks-testbed, needs-root, isolation-machine +Depends: kexec-tools, python3, gcc, make, libpopt-dev, gcc-multilib [amd64], bc, fuse, libfuse-dev, pkg-config, linux-image-4.15.0-2-alpha-generic [alpha], linux-image-4.15.0-2-alpha-smp [alpha], linux-image-4.15.0-2-amd64 [amd64], linux-image-4.15.0-2-cloud-amd64 [amd64], linux-image-4.15.0-2-arm64 [arm64], linux-image-4.15.0-2-armmp [armhf], linux-image-4.15.0-2-armmp-lpae [armhf], linux-image-4.15.0-2-parisc [hppa], linux-image-4.15.0-2-parisc64-smp [hppa], linux-image-4.15.0-2-686 [i386], linux-image-4.15.0-2-686-pae [i386], linux-image-4.15.0-2-m68k [m68k], linux-image-4.15.0-2-4kc-malta [mips mipsel], linux-image-4.15.0-2-5kc-malta [mips mips64 mips64el mipsel], linux-image-4.15.0-2-octeon [mips mips64 mips64el mipsel], linux-image-4.15.0-2-loongson-3 [mips64el mipsel], linux-image-4.15.0-2-mips64r6 [mips64r6 mipsr6], linux-image-4.15.0-2-mips64r6el [mips64r6el mipsr6el], linux-image-4.15.0-2-mips32r6 [mipsr6], linux-image-4.15.0-2-mips32r6el [mipsr6el], linux-image-4.15.0-2-powerpc [powerpc], linux-image-4.15.0-2-powerpc-smp [powerpc], linux-image-4.15.0-2-powerpc64 [powerpc ppc64], linux-image-4.15.0-2-powerpcspe [powerpcspe], linux-image-4.15.0-2-powerpc64le [ppc64el], linux-image-4.15.0-2-s390x [s390x], linux-image-4.15.0-2-sh7751r [sh4], linux-image-4.15.0-2-sh7785lcr [sh4], linux-image-4.15.0-2-sparc64 [sparc64], linux-image-4.15.0-2-sparc64-smp [sparc64] +Classes: smp + diff --git a/tests/selftests b/tests/selftests new file mode 100644 index 00000000000..c19064ca61a --- /dev/null +++ b/tests/selftests @@ -0,0 +1,88 @@ +#!/bin/bash -eu + +PATH=/usr/sbin:/sbin:/usr/bin:/bin + +getconfig() { + debian/bin/getconfig.py "$@" +} + +# Look up current ABI name and 'localversion' (featureset/flavour) suffixes +abiname=$(getconfig version abiname) +arch=$(dpkg --print-architecture) +localversion=() +for featureset in $(getconfig base $arch featuresets); do + if [ "$(getconfig base '' $featureset enabled || echo True)" = True ]; then + for flavour in $(getconfig base $arch $featureset flavours); do + if [ "$featureset" = none ]; then + localversion+=(-$flavour) + else + localversion+=(-$featureset-$flavour) + fi + done + fi +done +steps=${#localversion[*]} + +case "${ADT_REBOOT_MARK:-}" in + "") + step=-1 + ;; + step*) + step=${ADT_REBOOT_MARK#step} + ;; +esac + +if [ "$step" -ge 0 ]; then + ver=$abiname${localversion[$step]} + + if [ "$(uname -r)" != "$ver" ]; then + echo >&2 "Should be running: $ver" + echo >&2 "Actually running: $(uname -r)" + else + cp -lR . $ADTTMP/build + cd $ADTTMP/build + make headers_install + + # Ignore compiler warnings + { + make -C tools/testing/selftests && + make -C tools/testing/selftests/memfd build_fuse + } 2>&1 || echo >&2 "Build failed" + + # Enable testing CLONE_USERNS by unprivileged users + sysctl kernel.unprivileged_userns_clone=1 + + # Some tests will write to stderr despite being successful, + # and the exit code from make will be 0 even if tests failed. + # So we have to do some post-analysis... + set -o pipefail + { + make -C tools/testing/selftests quicktest=1 run_tests && + make -C tools/testing/selftests/cpu-hotplug run_full_test && + make -C tools/testing/selftests/memory-hotplug run_full_test && + make -C tools/testing/selftests/memfd run_fuse && + make -C tools/testing/selftests/timers run_destructive_tests + } 2>&1 | tee $ADTTMP/log + set +o pipefail + if grep -E '\[(FAIL|UNSUPPORTED)\]|recipe for target .run_tests. failed' $ADTTMP/log | \ + grep -q -v \ + -e '^selftests: fw_userhelper.sh \[FAIL\]' \ + -e 'ftrace - function profiler with function tracing \[UNSUPPORTED\]' \ + -e '^selftests: ftracetest \[FAIL\]' \ + -e '|| echo .*\[FAIL\]' \ + ; then + echo >&2 "Unexpected failures found" + fi + fi +fi + +step=$((step + 1)) + +if [ "$step" -lt "$steps" ]; then + # Load the next kernel + ver=$abiname${localversion[$step]} + kexec -l /boot/vmlinuz-$ver --initrd /boot/initrd.img-$ver --reuse-cmdline + /tmp/autopkgtest-reboot step$step +fi + +exit 0 diff --git a/upstream/rt-signing-key.pgp b/upstream/rt-signing-key.pgp new file mode 100644 index 00000000000..84bb69bed47 Binary files /dev/null and b/upstream/rt-signing-key.pgp differ diff --git a/upstream/signing-key.pgp b/upstream/signing-key.pgp new file mode 100644 index 00000000000..f8324867b79 Binary files /dev/null and b/upstream/signing-key.pgp differ diff --git a/usbip.install b/usbip.install new file mode 100644 index 00000000000..04a6ce5b56d --- /dev/null +++ b/usbip.install @@ -0,0 +1,2 @@ +usr/sbin/usbip +usr/sbin/usbipd diff --git a/usbip.manpages b/usbip.manpages new file mode 100644 index 00000000000..ff94009a6df --- /dev/null +++ b/usbip.manpages @@ -0,0 +1,2 @@ +tools/usb/usbip/doc/usbip.8 +tools/usb/usbip/doc/usbipd.8 diff --git a/watch b/watch new file mode 100644 index 00000000000..09e8e35c372 --- /dev/null +++ b/watch @@ -0,0 +1,4 @@ +# Find first non-rc tarball linked from kernel.org. +# We need to DFSG-clean it, so use our own script instead of uupdate. +version=3 +https://www.kernel.org/ .*/linux-([0-9.]+).tar.xz debian debian/bin/uscan-hook