diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f862ef4 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +SOURCES/kernel-rt-3.10.0-229.rt56.141.el7.tar.xz +SOURCES/rheldup3.x509 +SOURCES/rhelkpatch1.x509 diff --git a/.kernel-rt.metadata b/.kernel-rt.metadata new file mode 100644 index 0000000..f2dd626 --- /dev/null +++ b/.kernel-rt.metadata @@ -0,0 +1,3 @@ +4e3456c279ce6fa73c887250dc712064876a91a5 SOURCES/kernel-rt-3.10.0-229.rt56.141.el7.tar.xz +95b9b811c7b0a6c98b2eafc4e7d6d24f2cb63289 SOURCES/rheldup3.x509 +d90885108d225a234a5a9d054fc80893a5bd54d0 SOURCES/rhelkpatch1.x509 diff --git a/README.md b/README.md deleted file mode 100644 index 98f42b4..0000000 --- a/README.md +++ /dev/null @@ -1,4 +0,0 @@ -The master branch has no content - -Look at the c7 branch if you are working with CentOS-7, or the c4/c5/c6 branch for CentOS-4, 5 or 6 -If you find this file in a distro specific branch, it means that no content has been checked in yet diff --git a/SOURCES/extra_certificates b/SOURCES/extra_certificates new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/SOURCES/extra_certificates diff --git a/SOURCES/extrakeys.pub b/SOURCES/extrakeys.pub new file mode 100644 index 0000000..fa096bd Binary files /dev/null and b/SOURCES/extrakeys.pub differ diff --git a/SOURCES/find-provides b/SOURCES/find-provides new file mode 100755 index 0000000..b28d102 --- /dev/null +++ b/SOURCES/find-provides @@ -0,0 +1,44 @@ +#!/usr/bin/python +# +# find-provides: munge the provides dependencies from the kabideps file +# +# This software may be freely redistributed under the terms of the GNU +# General Public License (GPL). +# +# Takes a directory prefix, then outputs the kabideps file contents. + +__author__ = "Jon Masters " +__version__ = "1.0" +__date__ = "Tue 25 Jul 2006 04:00 GMT" +__copyright__ = "Copyright (C) 2006 Red Hat, Inc" +__license__ = "GPL" + +import os +import re +import string +import sys + +false = 0 +true = 1 + +kabideps="" + +p = re.compile('^(.*)/symvers-(.*).gz$') +while true: + foo = sys.stdin.readline() + if foo == "": + break + string.split(foo) + m = p.match(foo) + if m: + kabideps=sys.argv[1] + "/kernel-" + m.group(2) + "-kabideps" + +if kabideps == "": + sys.exit(0) + +if not (os.path.isfile(kabideps)): + sys.stderr.write(sys.argv[0] + ": cannot locate kabideps file: " + kabideps + "\n") + sys.exit(1) + +sys.stderr.write(sys.argv[0] + ": processing kABI: " + kabideps) +os.system("cat " + kabideps) diff --git a/SOURCES/genkey b/SOURCES/genkey new file mode 100644 index 0000000..49c6ce8 --- /dev/null +++ b/SOURCES/genkey @@ -0,0 +1,7 @@ +%pubring kernel.pub +%secring kernel.sec +Key-Type: DSA +Key-Length: 512 +Name-Real: Red Hat, Inc. +Name-Comment: Kernel Module GPG key +%commit diff --git a/SOURCES/linux-kernel-test.patch b/SOURCES/linux-kernel-test.patch new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/SOURCES/linux-kernel-test.patch diff --git a/SOURCES/merge.pl b/SOURCES/merge.pl new file mode 100755 index 0000000..8c31815 --- /dev/null +++ b/SOURCES/merge.pl @@ -0,0 +1,66 @@ +#! /usr/bin/perl + +my @args=@ARGV; +my %configvalues; +my @configoptions; +my $configcounter = 0; + +# optionally print out the architecture as the first line of our output +my $arch = $args[2]; +if (defined $arch) { + print "# $arch\n"; +} + +# first, read the override file + +open (FILE,"$args[0]") || die "Could not open $args[0]"; +while () { + my $str = $_; + my $configname; + + if (/\# ([\w]+) is not set/) { + $configname = $1; + } elsif (/([\w]+)=/) { + $configname = $1; + } + + if (defined($configname) && !exists($configvalues{$configname})) { + $configvalues{$configname} = $str; + $configoptions[$configcounter] = $configname; + $configcounter ++; + } +}; + +# now, read and output the entire configfile, except for the overridden +# parts... for those the new value is printed. + +open (FILE2,"$args[1]") || die "Could not open $args[1]"; +while () { + my $configname; + + if (/\# ([\w]+) is not set/) { + $configname = $1; + } elsif (/([\w]+)=/) { + $configname = $1; + } + + if (defined($configname) && exists($configvalues{$configname})) { + print "$configvalues{$configname}"; + delete($configvalues{$configname}); + } else { + print "$_"; + } +} + +# now print the new values from the overridden configfile +my $counter = 0; + +while ($counter < $configcounter) { + my $configname = $configoptions[$counter]; + if (exists($configvalues{$configname})) { + print "$configvalues{$configname}"; + } + $counter++; +} + +1; diff --git a/SOURCES/perf b/SOURCES/perf new file mode 100644 index 0000000..ea89806 --- /dev/null +++ b/SOURCES/perf @@ -0,0 +1,12 @@ +#!/bin/sh + +# In pathological situations, this will print some error about uname. +kverrel="`uname -r`" || exit + +exec "/usr/libexec/perf.$kverrel" ${1+"$@"} +rc=$? + +# We're still here, so the exec failed. +echo >&2 "Sorry, your kernel ($kverrel) doesn't support perf." + +exit $rc diff --git a/SOURCES/perf-archive b/SOURCES/perf-archive new file mode 100644 index 0000000..910468e --- /dev/null +++ b/SOURCES/perf-archive @@ -0,0 +1,33 @@ +#!/bin/bash +# perf archive +# Arnaldo Carvalho de Melo + +PERF_DATA=perf.data +if [ $# -ne 0 ] ; then + PERF_DATA=$1 +fi + +DEBUGDIR=~/.debug/ +BUILDIDS=$(mktemp /tmp/perf-archive-buildids.XXXXXX) +NOBUILDID=0000000000000000000000000000000000000000 + +perf buildid-list -i $PERF_DATA --with-hits | grep -v "^$NOBUILDID " > $BUILDIDS +if [ ! -s $BUILDIDS ] ; then + echo "perf archive: no build-ids found" + rm -f $BUILDIDS + exit 1 +fi + +MANIFEST=$(mktemp /tmp/perf-archive-manifest.XXXXXX) + +cut -d ' ' -f 1 $BUILDIDS | \ +while read build_id ; do + linkname=$DEBUGDIR.build-id/${build_id:0:2}/${build_id:2} + filename=$(readlink -f $linkname) + echo ${linkname#$DEBUGDIR} >> $MANIFEST + echo ${filename#$DEBUGDIR} >> $MANIFEST +done + +tar cfj $PERF_DATA.tar.bz2 -C $DEBUGDIR -T $MANIFEST +rm -f $MANIFEST $BUILDIDS +exit 0 diff --git a/SOURCES/sanity_check.py b/SOURCES/sanity_check.py new file mode 100644 index 0000000..f38e5b7 --- /dev/null +++ b/SOURCES/sanity_check.py @@ -0,0 +1,55 @@ +#!/usr/bin/python +# script to sanity check config file values + +import sys, os +import re + +set_regex = re.compile(r'^(?PCONFIG.+)=(?P.+)$') +unset_regex = re.compile(r'^# (?PCONFIG.+) is not set$') + +class Config(object): + + def __init__(self, file): + self.file = file + f = open(file) + self.lines = f.readlines() + f.close() + self.configs = {} + + def check_values(self): + i = 0 + conflicts = 0 + while i < len(self.lines): + l = self.lines[i].strip() + m = set_regex.match(l) + if m: + key = m.group('key').strip() + val = m.group('value').strip() + else: + m = unset_regex.match(l) + if m: + key = m.group('key').strip() + val = None + else: + i += 1 + continue + if self.configs.has_key(key): + print "conflicting definition for %s at line %d" % (key, i+1) + print " previous definition at line %d" % (self.configs[key][0]) + print " line %d: %s = %s" % (self.configs[key][0], key, self.configs[key][1]) + print " line %d: %s = %s" % (i+1, key, val) + conflicts += 1 + else: + self.configs[key] = (i, val) + i += 1 + return conflicts + +if __name__ == "__main__": + total = 0 + for f in sys.argv[1:]: + c = Config(f) + conflicts = c.check_values() + if conflicts: + print "%d conflicts found" % conflicts + total += conflicts + sys.exit(total) diff --git a/SOURCES/secureboot.cer b/SOURCES/secureboot.cer new file mode 100644 index 0000000..4ff8b79 Binary files /dev/null and b/SOURCES/secureboot.cer differ diff --git a/SOURCES/securebootca.cer b/SOURCES/securebootca.cer new file mode 100644 index 0000000..b235400 Binary files /dev/null and b/SOURCES/securebootca.cer differ diff --git a/SOURCES/sign-modules b/SOURCES/sign-modules new file mode 100755 index 0000000..bdb96a9 --- /dev/null +++ b/SOURCES/sign-modules @@ -0,0 +1,25 @@ +#! /bin/bash + +moddir=$1 + +modules=`find $moddir -name *.ko` + +MODSECKEY="./signing_key.priv" +MODPUBKEY="./signing_key.x509" + +for mod in $modules +do + dir=`dirname $mod` + file=`basename $mod` + + ./scripts/sign-file sha256 ${MODSECKEY} ${MODPUBKEY} ${dir}/${file} + rm -f ${dir}/${file}.{sig,dig} +done + +RANDOMMOD=$(find $moddir -type f -name '*.ko' | sort -R | tail -n 1) +if [ "~Module signature appended~" != "$(tail -c 28 $RANDOMMOD)" ]; then + echo "*** Modules are unsigned! ***" + exit 1 +fi + +exit 0 diff --git a/SOURCES/x509.genkey b/SOURCES/x509.genkey new file mode 100644 index 0000000..b1bbe38 --- /dev/null +++ b/SOURCES/x509.genkey @@ -0,0 +1,16 @@ +[ req ] +default_bits = 3072 +distinguished_name = req_distinguished_name +prompt = no +x509_extensions = myexts + +[ req_distinguished_name ] +O = Red Hat +CN = Red Hat Enterprise Linux kernel signing key +emailAddress = secalert@redhat.com + +[ myexts ] +basicConstraints=critical,CA:FALSE +keyUsage=digitalSignature +subjectKeyIdentifier=hash +authorityKeyIdentifier=keyid diff --git a/SPECS/kernel-rt.spec b/SPECS/kernel-rt.spec new file mode 100644 index 0000000..ae045ab --- /dev/null +++ b/SPECS/kernel-rt.spec @@ -0,0 +1,1935 @@ +Summary: The Linux Realtime kernel + +# catch building on Fedora +%if "%{?dist}" == "" || "0%{?fedora}" != "0" +%global dist .el7 +%endif + +%global __spec_install_pre %{___build_pre} + +# realtimeN +%global iteration 141 + +# major and minor kernel version +# e.g. 3.2.4 has a major_kver of 3 and a minor_kver of 2 +%global major_kver 3 +%global minor_kver 10.0 + +# RHEL7 build number +%global rhel_build %{!?_rhel_build:229} + +# The preempt RT patch level +%global rttag %{!?rt_patch_version:rt56} + +# conditional with/without variables +# Note that the logic here is inverted; a bcond_without implies +# that the variable is on by default (since you use --without to turn it off) +# Likewise a bcond_with implies the variable is off by default (turned on by --with) +%bcond_without rt +%bcond_without doc +%bcond_without debug +%bcond_with headers +%bcond_with vanilla +%bcond_without trace +%bcond_with perf +%bcond_with firmware +%bcond_without virt +%bcond_without debuginfo +%bcond_without dracut + +# What parts do we want to build? We must build at least one kernel. +# These are the kernels that are built IF the architecture allows it. +# Note that these are regular macros, not the bcond macros defined above, +# so they can be reassigned inside the spec file. + +%global buildrt %{with rt} +%global builddoc %{with doc} +%global builddebug %{with debug} +%global buildheaders %{with headers} +%global buildvanilla %{with vanilla} +%global buildtrace %{with trace} +%global buildperf %{with perf} +%global buildfirmware %{with firmware} +%global buildvirt %{with virt} +%global builddebuginfo %{with debuginfo} + + +# Verbose output? +#%global verbose V=1 + +# use dracut or mkinitrd? +%global use_dracut %{with dracut} + +# Versions of various parts + +# Polite request for people who spin their own kernel rpms: +# please modify the "buildid" define in a way that identifies +# that the kernel isn't the stock distribution kernel, for example, +# by setting the define to ".local" or ".bz123456" +# +# % define buildid .local + +%global rhel 1 +%if %{rhel} +%global distro_build 0 +### %global signmodules 1 +%global signmodules 1 +%else +# fedora_build defines which build revision of this kernel version we're +# building. Rather than incrementing forever, as with the prior versioning +# setup, we set fedora_cvs_origin to the current cvs revision s/1.// of the +# kernel spec when the kernel is rebased, so fedora_build automatically +# works out to the offset from the rebase, so it doesn't get too ginormous. +# +# If you're building on a branch, the RCS revision will be something like +# 1.1205.1.1. In this case we drop the initial 1, subtract fedora_cvs_origin +# from the second number, and then append the rest of the RCS string as is. +# Don't stare at the awk too long, you'll go blind. +%global fedora_cvs_origin 1462 +%global fedora_cvs_revision() %2 +%global distro_build %(echo %{fedora_cvs_origin}.%{fedora_cvs_revision $Revision: 1.694 $} | awk -F . '{ OFS = "."; ORS = ""; print $3 - $1 ; i = 4 ; OFS = ""; while (i <= NF) { print ".", $i ; i++} }') +%global distro_build %{fedora_build} +%global signmodules 0 +%endif + +# if patch fuzzy patch applying will be forbidden +%global with_fuzzy_patches 0 + +%global rpmversion %{major_kver}.%{minor_kver} + + +# What parts do we want to build? We must build at least one kernel. +# These are the kernels that are built IF the architecture allows it. +# All should default to 1 (enabled) and be flipped to 0 (disabled) +# by later arch-specific checks. + +# The following build options are enabled by default. +# Use either --without in your rpmbuild command or force values +# to 0 in here to disable them. +# +# perf noarch subpkg +%global with_vdso_install 1 + +# Build the kernel-doc package, but don't fail the build if it botches. +# Here "true" means "continue" and "false" means "fail the build". +%global doc_build_fail true + +# Additional options for user-friendly one-off kernel building: +# Only build the base kernel (--with baseonly): +%global with_baseonly 0 +# Only build the debug kernel (--with dbgonly): +%global with_dbgonly 0 + +# should we do C=1 builds with sparse +%global with_sparse %{?_with_sparse: 1} %{?!_with_sparse: 0} + +%global pkg_release_simple %{rhel_build}.%{rttag}.%{iteration} + +%global pkg_release %{pkg_release_simple}%{?buildid}%{?dist} +%global pkg_release_simple %{pkg_release_simple}%{?dist} +%global KVERREL %{rpmversion}-%{pkg_release}.%{_target_cpu} + +# The kernel tarball/base version +%global kversion %{major_kver}.%{minor_kver} + +%global make_target bzImage + +%global hdrarch %_target_cpu +%global asmarch %_target_cpu + +%if !%{builddebuginfo} +%global _enable_debug_packages 0 +%global fancy_debuginfo 0 +%else +%global _enable_debug_packages 1 +%global fancy_debuginfo 1 +%endif +%global debuginfodir /usr/lib/debug + +# if requested, only build base kernel +%if %{with_baseonly} +%global builddebug 0 +%global buildtrace 0 +%global buildvanilla 0 +%global buildvirt 0 +%global buildperf 0 +%global buildheaders 0 +%global builddebuginfo 0 +%endif + +# if requested, only build debug kernel +%if %{with_dbgonly} +%if %{debugbuildsenabled} +%global buildrt 0 +%endif +%global buildperf 0 +%endif + +%global all_x86 i386 i686 + +%if %{with_vdso_install} +# These arches install vdso/ directories. +%global vdso_arches %{all_x86} x86_64 +%endif + + +# don't do debug builds on anything but i686 and x86_64 +%ifnarch i686 x86_64 +%global builddebug 0 +%endif + +# only package docs if we're noarch +%ifnarch noarch +%global builddoc 0 +%global buildfirmware 0 +%endif + +# don't build noarch kernels or headers (duh) +%ifarch noarch +%global buildrt 0 +%global buildheaders 0 +%global buildperf 0 +%global buildvirt 0 +%global buildtrace 0 +%global buildvanilla 0 +%global all_arch_configs kernel-%{version}-*.config +%endif + +# Per-arch tweaks + +%global asmarch x86 +%global image_install_path boot +%global kernel_image arch/x86/boot/bzImage + +%ifarch %{all_x86} +%global hdrarch i386 +%global all_arch_configs kernel-%{rpmversion}-i?86-rt*.config +%endif + +%ifarch x86_64 +%global all_arch_configs kernel-%{rpmversion}-x86_64-rt*.config +%endif + +%global oldconfig_target oldconfig + +# To temporarily exclude an architecture from being built, add it to +# %nobuildarches. Do _NOT_ use the ExclusiveArch: line, because if we +# don't build kernel-headers then the new build system will no longer let +# us use the previous build of that package -- it'll just be completely AWOL. +# Which is a BadThing(tm). + +# We don't build a kernel on i386; we only do kernel-headers there, +# and we no longer build for 31bit S390. Same for 32bit sparc and arm. +%global nobuildarches i386 i586 i686 s390 sparc sparc64 ppc ia64 %{arm} noarch + +%ifarch %nobuildarches +%global buildrt 0 +%global builddebug 0 +%global buildvanilla 0 +%global buildtrace 0 +%global buildvirt 0 +%global builddebuginfo 0 +%global buildperf 0 +%global _enable_debug_packages 0 +%endif + +# +# Three sets of minimum package version requirements in the form of Conflicts: +# to versions below the minimum +# + +# +# First the general kernel 3.0 required versions as per +# Documentation/Changes +# +%global kernel_dot_org_conflicts ppp < 2.4.3-3, isdn4k-utils < 3.2-32, nfs-utils < 1.0.7-12, e2fsprogs < 1.37-4, util-linux < 2.12, jfsutils < 1.1.7-2, reiserfs-utils < 3.6.19-2, xfsprogs < 2.6.13-4, procps < 3.2.5-6.3, oprofile < 0.9.1-2, device-mapper-libs < 1.02.63-2, mdadm < 3.2.1-5 + +# +# Then a series of requirements that are distribution specific, either +# because we add patches for something, or the older versions have +# problems with the newer kernel or lack certain things that make +# integration in the distro harder than needed. +# +%global package_conflicts initscripts < 7.23, udev < 145-11, iptables < 1.3.2-1, ipw2200-firmware < 2.4, iwl4965-firmware < 228.57.2, selinux-policy-targeted < 1.25.3-14, squashfs-tools < 4.0, wireless-tools < 29-3 + +# We moved the drm include files into kernel-headers, make sure there's +# a recent enough libdrm-devel on the system that doesn't have those. +%global kernel_headers_conflicts libdrm-devel < 2.4.0-0.15 + +# +# Packages that need to be installed before the kernel is, because the %%post +# scripts use them. +# +%global kernel_prereq fileutils, module-init-tools >= 3.16-2, initscripts >= 8.11.1-1, grubby >= 8.28-2, rt-setup >= 1.55 + +%if %{use_dracut} +%global initrd_prereq dracut-kernel >= 001-7 +%else +%global initrd_prereq mkinitrd >= 6.0.61-1 +%endif + +# +# This macro does requires, provides, conflicts, obsoletes for a kernel package. +# %%kernel_reqprovconf +# It uses any kernel__conflicts and kernel__obsoletes +# macros defined above. +# +%define kernel_reqprovconf \ +Provides: kernel = %{rpmversion}-%{pkg_release}\ +Provides: kernel-%{_target_cpu} = %{rpmversion}-%{pkg_release}%{?1:.%{1}}\ +Provides: kernel-drm = 4.3.0\ +Provides: kernel-drm-nouveau = 16\ +Provides: kernel-modeset = 1\ +Provides: kernel-uname-r = %{KVERREL}%{?1:.%{1}}\ +Requires(pre): %{kernel_prereq}\ +Requires(pre): %{initrd_prereq}\ +Requires(pre): linux-firmware >= 20100806-2\ +#Requires(pre): linux-firmware >= 20140911\ +Requires(post): %{_sbindir}/new-kernel-pkg\ +Requires(preun): %{_sbindir}/new-kernel-pkg\ +Conflicts: %{kernel_dot_org_conflicts}\ +Conflicts: %{package_conflicts}\ +%{expand:%%{?kernel%{?1:_%{1}}_conflicts:Conflicts: %%{kernel%{?1:_%{1}}_conflicts}}}\ +%{expand:%%{?kernel%{?1:_%{1}}_obsoletes:Obsoletes: %%{kernel%{?1:_%{1}}_obsoletes}}}\ +%{expand:%%{?kernel%{?1:_%{1}}_provides:Provides: %%{kernel%{?1:_%{1}}_provides}}}\ +# We can't let RPM do the dependencies automatic because it'll then pick up\ +# a correct but undesirable perl dependency from the module headers which\ +# isn't required for the kernel proper to function\ +AutoReq: no\ +AutoProv: yes\ +%{nil} + +Name: kernel-rt +Group: System Environment/Kernel +License: GPLv2 +URL: http://www.kernel.org/ +Version: %{rpmversion} +Release: %{pkg_release} +# DO NOT CHANGE THE 'ExclusiveArch' LINE TO TEMPORARILY EXCLUDE AN ARCHITECTURE BUILD. +# SET %%nobuildarches (ABOVE) INSTEAD +ExclusiveArch: noarch x86_64 +ExclusiveOS: Linux +Provides: kernel-rt = %{rpmversion} +Provides: kernel-rt-drm = 4.3.0 +Provides: kernel-rt-%{_target_cpu} = %{rpmversion}-%{pkg_release} + +%kernel_reqprovconf +%ifarch x86_64 +Obsoletes: kernel-smp +%endif + +# +# List the packages used during the kernel build +# +BuildRequires: module-init-tools, patch >= 2.5.4, bash >= 2.03, sh-utils, tar +BuildRequires: bzip2, findutils, gzip, m4, perl, make >= 3.78, diffutils, gawk +BuildRequires: gcc >= 3.4.2, binutils >= 2.12, redhat-rpm-config +BuildRequires: hostname, net-tools, patchutils, rpm-build >= 4.8.0-7, bc +BuildRequires: openssl +BuildRequires: hmaccalc +%ifarch x86_64 +BuildRequires: pesign >= 0.109-4 +%endif +Buildrequires: xz +%if %{builddoc} +BuildRequires: xmlto +BuildRequires: asciidoc +%endif +%if %{with_sparse} +BuildRequires: sparse >= 0.4.1 +%endif +%if %{buildrt} +%if %{buildperf} +BuildRequires: elfutils-libelf-devel zlib-devel binutils-devel newt-devel python-devel perl(ExtUtils::Embed) +BuildRequires: elfutils-devel asciidoc xmlto +BuildRequires: audit-libs-devel +%endif +%endif +%if %{signmodules} +BuildRequires: gnupg +%endif +BuildRequires: python + +BuildConflicts: rhbuildsys(DiskFree) < 7Gb + +%if %{fancy_debuginfo} +# Fancy new debuginfo generation introduced in Fedora 8. +# Note this must be a define since it needs to be overridden in some macro +# expansions +%define debuginfo_args --strict-build-id +%endif + +Source0: %{name}-%{rpmversion}-%{pkg_release_simple}.tar.xz + +Source10: sign-modules +%define modsign_cmd %{SOURCE10} +Source11: genkey +Source12: perf +Source13: perf-archive +Source14: find-provides +Source15: merge.pl +Source17: sanity_check.py +Source19: extrakeys.pub + +Source31: x509.genkey +Source32: extra_certificates +Source33: securebootca.cer +Source34: secureboot.cer +Source35: rheldup3.x509 +Source36: rhelkpatch1.x509 + +### Started using a unified SRPM + + +# empty final patch file to facilitate testing of kernel patches +Patch999999: linux-kernel-test.patch + +BuildRoot: %{_tmppath}/kernel-%{KVERREL}-root + +# Override find_provides to use a script that provides "kernel(symbol) = hash". +# Pass path of the RPM temp dir containing kabideps to find-provides script. +# %global _use_internal_dependency_generator 0 +# %global __find_provides %_sourcedir/find-provides %{_tmppath} +# %global __find_requires /usr/lib/rpm/redhat/find-requires kernel + +%description +The kernel-rt package contains the Linux kernel (vmlinuz), the core of any +Linux operating system. The kernel handles the basic functions +of the operating system: memory allocation, process allocation, device +input and output, etc. + +This kernel has been compiled withe the RT patch applied and is intended +for use in deterministic response-time situations + + +%package doc +Summary: Various documentation bits found in the kernel source +Group: Documentation +%description doc +This package contains documentation files from the kernel +source. Various bits of information about the Linux kernel and the +device drivers shipped with it are documented in these files. + +You will want to install this package if you need a reference to the +options that can be passed to Linux kernel modules at load time. + + +%package headers +Summary: Header files for the Linux kernel for use by glibc +Group: Development/System +Obsoletes: glibc-kernheaders +Provides: glibc-kernheaders = 3.0-46 +%description headers +Kernel-headers includes the C header files that specify the interface +between the Linux kernel and userspace libraries and programs. The +header files define structures and constants that are needed for +building most standard programs and are also needed for rebuilding the +glibc package. + +%package firmware +Summary: Firmware files used by the Linux kernel +Group: Development/System +# This is... complicated. +# Look at the WHENCE file. +License: GPL+ and GPLv2+ and MIT and Redistributable, no modification permitted +Provides: kernel-firmware = %{rpmversion}-%{pkg_release} +Provides: kernel-rt-firmware = %{rpmversion}-%{pkg_release} +%description firmware +Kernel-firmware includes firmware files required for some devices to +operate. + +%if %{builddebuginfo} +%package debuginfo-common-%{_target_cpu} +Summary: Kernel source files used by %{name}-debuginfo packages +Group: Development/Debug +%description debuginfo-common-%{_target_cpu} +This package is required by %{name}-debuginfo subpackages. +It provides the kernel source files common to all builds. +%endif + +%if %{buildrt} +%if %{buildperf} +%package -n perf-rt +Summary: Performance monitoring for the Linux kernel +Group: Development/System +Provides: perl(Perf::Trace::Context), perl(Perf::Trace::Core), perl(Perf::Trace::Util) +License: GPLv2 +Obsoletes: perf +%description -n perf-rt +This package provides the supporting documentation for the perf tool +shipped in each kernel image subpackage. +%endif +%endif + +# +# This macro creates a kernel--debuginfo package. +# %%kernel_debuginfo_package +# +%define kernel_debuginfo_package() \ +%package %{?1:%{1}-}debuginfo\ +Summary: Debug information for package %{name}%{?1:-%{1}}\ +Group: Development/Debug\ +Requires: %{name}-debuginfo-common-%{_target_cpu} = %{version}-%{release}\ +Provides: %{name}%{?1:-%{1}}-debuginfo-%{_target_cpu} = %{version}-%{release}\ +AutoReqProv: no\ +%description -n %{name}%{?1:-%{1}}-debuginfo\ +This package provides debug information for package %{name}%{?1:-%{1}}.\ +This is required to use SystemTap with %{name}%{?1:%{1}}-%{KVERREL}.\ +%{expand:%%global debuginfo_args %{?debuginfo_args} -p '/.*/%%{KVERREL}%{?1:\.%{1}}/.*|/.*%%{KVERREL}%{?1:\.%{1}}(\.debug)?' -o debuginfo%{?1}.list}\ +%{nil} + +# +# This macro creates a kernel--devel package. +# %%kernel_devel_package +# +%define kernel_devel_package() \ +%package %{?1:%{1}-}devel\ +Summary: Development package for building kernel modules to match the %{?2:%{2} }kernel\ +Group: System Environment/Kernel\ +Provides: kernel-rt%{?1:-%{1}}-devel-%{_target_cpu} = %{version}-%{release}\ +Provides: kernel-rt-devel-%{_target_cpu} = %{version}-%{release}%{?1:.%{1}}\ +Provides: kernel-rt-devel = %{version}-%{release}%{?1:.%{1}}\ +Provides: kernel-rt-devel-uname-r = %{KVERREL}%{?1:.%{1}}\ +AutoReqProv: no\ +Requires(pre): /usr/bin/find\ +%description -n kernel-rt%{?variant}%{?1:-%{1}}-devel\ +This package provides kernel headers and makefiles sufficient to build modules\ +against the %{?2:%{2} }kernel package.\ +%{nil} + +# +# This macro creates a kernel- and its -devel and -debuginfo too. +# %%define variant_summary The Linux kernel compiled for +# %%kernel_variant_package [-n ] +# +%define kernel_variant_package(n:) \ +%package %1\ +Summary: %{variant_summary}\ +Group: System Environment/Kernel\ +%kernel_reqprovconf\ +%{expand:%%kernel_devel_package %1 %{!?-n:%1}%{?-n:%{-n*}}}\ +%{expand:%%kernel_debuginfo_package %1}\ +%{nil} + + +# First the auxiliary packages of the main kernel package. +%kernel_devel_package +%kernel_debuginfo_package + +%if %{signmodules} +cp %{SOURCE19} . +cat < extract.pub +gcc -o scripts/bin2c scripts/bin2c.c +mkdir crypto/signature +scripts/bin2c ksign_def_public_key __initdata crypto/signature/key.h +%endif + +# Now, each variant package. + +%if %{with debug} +# kernel-rt-debug +%define variant_summary The Linux kernel compiled with extra debugging enabled +%kernel_variant_package debug +%description debug +The kernel package contains the Linux kernel (vmlinuz), the core of any +Linux operating system. The kernel handles the basic functions +of the operating system: memory allocation, process allocation, device +input and output, etc. + +This variant of the kernel has numerous debugging options enabled. +It should only be installed when trying to gather additional information +on kernel bugs, as some of these options impact performance noticably. +%endif + +%if %{with trace} +# kernel-rt-trace +%define variant_summary The Linux kernel compiled with extra tracing options enabled +%kernel_variant_package trace +%description trace +The kernel package contains the Linux kernel (vmlinuz), the core of any +Linux operating system. The kernel handles the basic functions +of the operating system: memory allocation, process allocation, device +input and output, etc. + +This variant of the kernel has numerous tracing options enabled. +It should only be installed when trying to gather additional information +on kernel bugs, as some of these options impact performance noticably. +%endif + +%if %{with vanilla} +# kernel-rt-vanilla +%define variant_summary The Linux kernel compiled without RT capabilities for debugging +%kernel_variant_package vanilla +%description vanilla +The kernel package contains the Linux kernel (vmlinuz), the core of any +Linux operating system. The kernel handles the basic functions +of the operating system: memory allocation, process allocation, device +input and output, etc. + +This variant of the kernel has the realtime capabilities disabled, but +has a configuration close to the one used in the realtime kernel. +It should only be installed when trying to gather additional information +on kernel bugs. +%endif + +%if %{with virt} +# kernel-rt-virt +%define variant_summary The Linux kernel compiled with RT and virtualization +%kernel_variant_package virt +%description virt +The kernel package contains the Linux kernel (vmlinuz), the core of any +Linux operating system. The kernel handles the basic functions +of the operating system: memory allocation, process allocation, device +input and output, etc. + +This variant of the kernel has both RT and virtualization options turned on. +It is strictly for internal testing and should never be delivered to a +customer. +%endif + +%prep +## ApplyPatch routine +patch_command='patch -p1 -F1 -s' +ApplyPatch() +{ +local patch=$1 +shift +if [ ! -f $RPM_SOURCE_DIR/$patch ]; then +echo "Can't find $RPM_SOURCE_DIR/$patch" +exit 1; +fi +case "$patch" in +*.bz2) bunzip2 < "$RPM_SOURCE_DIR/$patch" | $patch_command ${1+"$@"} ;; +*.gz) gunzip < "$RPM_SOURCE_DIR/$patch" | $patch_command ${1+"$@"} ;; +*.xz) unxz < "$RPM_SOURCE_DIR/$patch" | $patch_command ${1+"$@"} ;; +*) $patch_command ${1+"$@"} < "$RPM_SOURCE_DIR/$patch" ;; +esac +} + +# we don't want a .config file when building firmware: it just confuses the build system +%define build_firmware \ + # mv .config .config.firmware_save \ + make INSTALL_FW_PATH=$RPM_BUILD_ROOT/lib/firmware/%{rpmversion}-%{pkg_release} firmware_install \ + # mv .config.firmware_save .config \ + ln -s /lib/firmware/%{rpmversion}-%{pkg_release} $RPM_BUILD_ROOT/lib/firmware/%{rpmversion}-%{pkg_release}.i686 \ + ln -s /lib/firmware/%{rpmversion}-%{pkg_release} $RPM_BUILD_ROOT/lib/firmware/%{rpmversion}-%{pkg_release}.x86_64 \ + for kvname in debug trace; do \ + ln -s /lib/firmware/%{rpmversion}-%{pkg_release} $RPM_BUILD_ROOT/lib/firmware/%{rpmversion}-%{pkg_release}.i686.$kvname \ + ln -s /lib/firmware/%{rpmversion}-%{pkg_release} $RPM_BUILD_ROOT/lib/firmware/%{rpmversion}-%{pkg_release}.x86_64.$kvname \ + done \ + # install firmware files for bfa 3.1.2.1 \ + pushd $RPM_BUILD_ROOT/lib/firmware/%{rpmversion}-%{pkg_release} \ + popd + + +if [ ! -d kernel-%{kversion}/vanilla-%{kversion}/ ]; then + rm -f pax_global_header; +%setup -q -n kernel-%{kversion} -c + mv %{name}-%{rpmversion}-%{pkg_release_simple} vanilla-%{kversion}; +else + cd kernel-%{kversion}/; +fi + +if [ -d linux-%{kversion}.%{_target_cpu} ]; then + # Just in case we ctrl-c'd a prep already + rm -rf deleteme.%{_target_cpu} + # Move away the stale away, and delete in background. + mv linux-%{kversion}.%{_target_cpu} deleteme.%{_target_cpu} + rm -rf deleteme.%{_target_cpu} & +fi + +cp -rl vanilla-%{kversion} linux-%{kversion}.%{_target_cpu} + +cd linux-%{kversion}.%{_target_cpu} + +## Apply Patches here +ApplyPatch linux-kernel-test.patch + +# move off upstream version mechanism +if [ -e localversion-rt ]; then + mv -f localversion-rt upstream-localversion-rt +fi + +# Any further pre-build tree manipulations happen here. + +chmod +x scripts/checkpatch.pl + +# only deal with configs if we are going to build for the arch +%ifnarch %nobuildarches + +# generate configs using RHEL directory +pushd redhat/configs +for i in x86_64 x86_64-rt x86_64-rt-debug x86_64-rt-trace x86_64-rt-virt +do + sh build_configs.sh $i +done +# use the RHEL config as our "vanilla" configuration +mv kernel-%{kversion}-x86_64.config kernel-%{kversion}-x86_64-rt-vanilla.config +mv *.config ../.. +popd + + +%if !%{builddebug} +rm -f kernel-%{kversion}-*debug.config +%endif + +%if !%{buildtrace} +rm -f kernel-%{kversion}-*trace.config +%endif + +%if !%{buildvirt} +rm -f kernel-%{kversion}-*virt.config +%endif + +# now run oldconfig over all the config files +for i in *.config +do + echo running oldconfig on $i + mv $i .config + Arch=`head -1 .config | cut -b 3-` + ls -ls .config + make ARCH=$Arch %{oldconfig_target} >/dev/null + echo "# $Arch" > configs/$i + cat .config >> configs/$i + rm -f include/generated/kernel.arch + rm -f include/generated/kernel.cross +done +# end of kernel config +%endif + +# get rid of unwanted files resulting from patch fuzz +find . \( -name "*.orig" -o -name "*~" \) -exec rm -f {} \; >/dev/null + +# remove unnecessary SCM files +find . -name .gitignore -exec rm -f {} \; >/dev/null + +cd .. + +### +### build +### +%build + +%if %{with_sparse} +%global sparse_mflags C=1 +%endif + +%if %{fancy_debuginfo} +# This override tweaks the kernel makefiles so that we run debugedit on an +# object before embedding it. When we later run find-debuginfo.sh, it will +# run debugedit again. The edits it does change the build ID bits embedded +# in the stripped object, but repeating debugedit is a no-op. We do it +# beforehand to get the proper final build ID bits into the embedded image. +# This affects the vDSO images in vmlinux, and the vmlinux image in bzImage. +export AFTER_LINK=\ +'sh -xc "/usr/lib/rpm/debugedit -b $$RPM_BUILD_DIR -d /usr/src/debug \ + -i $@ > $@.id"' +%endif + +cp_vmlinux() +{ + eu-strip --remove-comment -o "$2" "$1" +} + +BuildKernel() { + MakeTarget=$1 + KernelImage=$2 + Flavour=$3 + InstallName=${4:-vmlinuz} + + # Pick the right config file for the kernel we're building + suffix= + if [ "$Flavour" != "" ] + then + suffix="-${Flavour}" + fi + Config=kernel-%{kversion}-%{_target_cpu}-rt${suffix}.config + DevelDir=/usr/src/kernels/%{KVERREL}${Flavour:+.${Flavour}} + + # When the bootable image is just the ELF kernel, strip it. + # We already copy the unstripped file into the debuginfo package. + if [ "$KernelImage" = vmlinux ]; then + CopyKernel=cp_vmlinux + else + CopyKernel=cp + fi + + KernelVer=%{version}-%{release}.%{_target_cpu}${Flavour:+.${Flavour}} + echo BUILDING A KERNEL FOR ${Flavour} %{_target_cpu}... + + # make sure EXTRAVERSION says what we want it to say + perl -p -i -e "s/^EXTRAVERSION.*/EXTRAVERSION = -%{release}.%{_target_cpu}${Flavour:+.${Flavour}}/" Makefile + + # if pre-rc1 devel kernel, must fix up SUBLEVEL for our versioning scheme + %if !0%{?rcrev} + %if 0%{?gitrev} + perl -p -i -e 's/^SUBLEVEL.*/SUBLEVEL = %{upstream_sublevel}/' Makefile + %endif + %endif + + # and now to start the build process + + make -s mrproper + + cp configs/$Config .config + echo USING CONFIG configs/$Config + + Arch=`head -1 .config | cut -b 3-` + echo USING ARCH=$Arch + + make -s ARCH=$Arch %{oldconfig_target} > /dev/null + make -s ARCH=$Arch %{?verbose} %{?_smp_mflags} $MakeTarget %{?sparse_mflags} + make -s ARCH=$Arch %{?verbose} %{?_smp_mflags} modules %{?sparse_mflags} || exit 1 + +%if %{buildrt} +%if %{buildperf} + if [ -z "$Flavour" ]; then + pushd tools/perf + chmod +x util/generate-cmdlist.sh util/PERF-VERSION-GEN + ### make -s %{?_smp_mflags} %{?verbose} DESTDIR=$RPM_BUILD_ROOT prefix=/usr install + make -s %{?verbose} %{?_smp_mflags} NO_DEMANGLE=1 perf + mkdir -p $RPM_BUILD_ROOT/usr/libexec/ + install -m 755 perf $RPM_BUILD_ROOT/usr/libexec/perf.%{KVERREL}%{?Flavour:+.%{Flavour}} + popd + fi +%endif +%endif + + # Start installing the results +%if %{builddebuginfo} + mkdir -p $RPM_BUILD_ROOT%{debuginfodir}/boot + mkdir -p $RPM_BUILD_ROOT%{debuginfodir}/%{image_install_path} + install -m 644 System.map $RPM_BUILD_ROOT/%{debuginfodir}/boot/System.map-$KernelVer +%endif + mkdir -p $RPM_BUILD_ROOT/%{image_install_path} + install -m 644 .config $RPM_BUILD_ROOT/boot/config-$KernelVer + install -m 644 System.map $RPM_BUILD_ROOT/boot/System.map-$KernelVer +%if %{use_dracut} + # We estimate the size of the initramfs because rpm needs to take this size + # into consideration when performing disk space calculations. (See bz #530778) + dd if=/dev/zero of=$RPM_BUILD_ROOT/boot/initramfs-$KernelVer.img bs=1M count=20 +%else + dd if=/dev/zero of=$RPM_BUILD_ROOT/boot/initrd-$KernelVer.img bs=1M count=5 +%endif + if [ -f arch/$Arch/boot/zImage.stub ]; then + cp arch/$Arch/boot/zImage.stub $RPM_BUILD_ROOT/%{image_install_path}/zImage.stub-$KernelVer || : + fi +# EFI SecureBoot signing, x86_64-only +%ifarch x86_64 + %pesign -s -i $KernelImage -o $KernelImage.signed -a %{SOURCE33} -c %{SOURCE34} -n redhatsecureboot301 + mv $KernelImage.signed $KernelImage +%endif + $CopyKernel $KernelImage $RPM_BUILD_ROOT/%{image_install_path}/$InstallName-$KernelVer + chmod 755 $RPM_BUILD_ROOT/%{image_install_path}/$InstallName-$KernelVer + + # hmac sign the kernel for FIPS + echo "Creating hmac file: $RPM_BUILD_ROOT/%{image_install_path}/.vmlinuz-$KernelVer.hmac" + ls -l $RPM_BUILD_ROOT/%{image_install_path}/$InstallName-$KernelVer + sha512hmac $RPM_BUILD_ROOT/%{image_install_path}/$InstallName-$KernelVer | sed -e "s,$RPM_BUILD_ROOT,," > $RPM_BUILD_ROOT/%{image_install_path}/.vmlinuz-$KernelVer.hmac; + + mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer + mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer/kernel + if [ "$Flavour" != "kdump" ]; then + # Override $(mod-fw) because we don't want it to install any firmware + # we'll get it from the linux-firmware package and we don't want conflicts + make -s %{?cross_opts} ARCH=$Arch INSTALL_MOD_PATH=$RPM_BUILD_ROOT modules_install KERNELRELEASE=$KernelVer mod-fw= + fi +%ifarch %{vdso_arches} + make -s %{?cross_opts} ARCH=$Arch INSTALL_MOD_PATH=$RPM_BUILD_ROOT vdso_install KERNELRELEASE=$KernelVer + if [ ! -s ldconfig-kernel.conf ]; then + echo > ldconfig-kernel.conf "\ +# Placeholder file, no vDSO hwcap entries used in this kernel." + fi + %{__install} -D -m 444 ldconfig-kernel.conf \ + $RPM_BUILD_ROOT/etc/ld.so.conf.d/kernel-rt-$KernelVer.conf +%endif + + # And save the headers/makefiles etc for building modules against + # + # This all looks scary, but the end result is supposed to be: + # * all arch relevant include/ files + # * all Makefile/Kconfig files + # * all script/ files + + rm -f $RPM_BUILD_ROOT/lib/modules/$KernelVer/build + rm -f $RPM_BUILD_ROOT/lib/modules/$KernelVer/source + mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer/build + (cd $RPM_BUILD_ROOT/lib/modules/$KernelVer ; ln -s build source) + # dirs for additional modules per module-init-tools, kbuild/modules.txt + mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer/extra + mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer/updates + mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer/weak-updates + # first copy everything + cp --parents `find -type f -name "Makefile*" -o -name "Kconfig*"` $RPM_BUILD_ROOT/lib/modules/$KernelVer/build + # now nuke the MRG directory + # TODO: figure out of we need this or not + rm -rf $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/MRG + + cp System.map $RPM_BUILD_ROOT/lib/modules/$KernelVer/build + if [ -s Module.markers ]; then + cp Module.markers $RPM_BUILD_ROOT/lib/modules/$KernelVer/build + fi + + # then drop all but the needed Makefiles/Kconfig files + rm -rf $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/Documentation + rm -rf $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/scripts + rm -rf $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include + cp .config $RPM_BUILD_ROOT/lib/modules/$KernelVer/build + cp -a scripts $RPM_BUILD_ROOT/lib/modules/$KernelVer/build + if [ -d arch/$Arch/scripts ]; then + cp -a arch/$Arch/scripts $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/arch/%{_arch} || : + fi + if [ -f arch/$Arch/*lds ]; then + cp -a arch/$Arch/*lds $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/arch/%{_arch}/ || : + fi + rm -f $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/scripts/*.o + rm -f $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/scripts/*/*.o + + # hack to remove .build-id conflict with RHEL kernel debuginfo + rm -f $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/scripts/conmakehash + rm -f $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/scripts/pnmtologo + + if [ -d arch/%{asmarch}/include ]; then + cp -a --parents arch/%{asmarch}/include $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/ + fi + mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include + cd include + cp -a $(echo * | sed -e 's/^asm$//') $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include + #cp -a acpi config crypto keys linux math-emu media mtd net pcmcia rdma rxrpc scsi sound trace video drm asm-generic generated xen $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include + if [ -L asm ]; then + asmdir=$(readlink asm) + cp -a $asmdir $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include/ + pushd $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include + ln -s $asmdir asm + popd + fi + # Make sure the Makefile and vermagic.h have a matching timestamp so that + # external modules can be built + touch -r $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/Makefile $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include/linux/vermagic.h + touch -r $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/.config $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include/linux/autoconf.h + # Copy .config to include/config/auto.conf so "make prepare" is unnecessary. + cp $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/.config $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include/config/auto.conf + cd .. + + # + # save the vmlinux file for kernel debugging into the kernel-debuginfo rpm + # +%if %{builddebuginfo} + mkdir -p $RPM_BUILD_ROOT%{debuginfodir}/lib/modules/$KernelVer + cp vmlinux $RPM_BUILD_ROOT%{debuginfodir}/lib/modules/$KernelVer +%endif + + find $RPM_BUILD_ROOT/lib/modules/$KernelVer -name "*.ko" -type f >modnames + + # mark modules executable so that strip-to-file can strip them + xargs --no-run-if-empty chmod u+x < modnames + + # Generate a list of modules for block and networking. + + grep -F /drivers/ modnames | xargs --no-run-if-empty nm -upA | + sed -n 's,^.*/\([^/]*\.ko\): *U \(.*\)$,\1 \2,p' > drivers.undef + + collect_modules_list() + { + sed -r -n -e "s/^([^ ]+) \\.?($2)\$/\\1/p" drivers.undef | + LC_ALL=C sort -u > $RPM_BUILD_ROOT/lib/modules/$KernelVer/modules.$1 + if [ ! -z "$3" ]; then + sed -r -e "/^($3)\$/d" -i $RPM_BUILD_ROOT/lib/modules/$KernelVer/modules.$1 + fi + } + + collect_modules_list networking 'register_netdev|ieee80211_register_hw|usbnet_probe|phy_driver_register|rt2x00(pci|usb)_probe|register_netdevice' + collect_modules_list block 'ata_scsi_ioctl|scsi_add_host|scsi_add_host_with_dma|blk_alloc_queue|blk_init_queue|register_mtd_blktrans|scsi_esp_register|scsi_register_device_handler|blk_queue_physical_block_size' 'pktcdvd.ko|dm-mod.ko' + collect_modules_list drm 'drm_open|drm_init' + collect_modules_list modesetting 'drm_crtc_init' + + # detect missing or incorrect license tags + rm -f modinfo + while read i + do + echo -n "${i#$RPM_BUILD_ROOT/lib/modules/$KernelVer/} " >> modinfo + /sbin/modinfo -l $i >> modinfo + done < modnames + + egrep -v \ + 'GPL( v2)?$|Dual BSD/GPL$|Dual MPL/GPL$|GPL and additional rights$' \ + modinfo && exit 1 + + rm -f modinfo modnames + + # Save off the .tmp_versions/ directory. We'll use it in the + # __debug_install_post macro below to sign the right things + # Also save the signing keys so we actually sign the modules with the + # right key. + cp -r .tmp_versions .tmp_versions.sign${Flavour:+.${Flavour}} + cp signing_key.priv signing_key.priv.sign${Flavour:+.${Flavour}} + cp signing_key.x509 signing_key.x509.sign${Flavour:+.${Flavour}} + + # remove files that will be auto generated by depmod at rpm -i time + for i in alias alias.bin ccwmap dep dep.bin ieee1394map inputmap isapnpmap ofmap pcimap seriomap symbols symbols.bin usbmap + do + rm -f $RPM_BUILD_ROOT/lib/modules/$KernelVer/modules.$i + done + + # Move the devel headers out of the root file system + mkdir -p $RPM_BUILD_ROOT/usr/src/kernels + mv $RPM_BUILD_ROOT/lib/modules/$KernelVer/build $RPM_BUILD_ROOT/$DevelDir + ln -sf ../../../..$DevelDir $RPM_BUILD_ROOT/lib/modules/$KernelVer/build + # copy Module.symvers + cp Module.symvers $RPM_BUILD_ROOT/$DevelDir +} + +### +# DO it... +### + +# prepare directories +rm -rf $RPM_BUILD_ROOT +mkdir -p $RPM_BUILD_ROOT/boot + +cd linux-%{kversion}.%{_target_cpu} + +%if %{builddebug} +BuildKernel %make_target %kernel_image debug +%endif + +%if %{buildtrace} +BuildKernel %make_target %kernel_image trace +%endif + +%if %{buildvanilla} +BuildKernel %make_target %kernel_image vanilla +%endif + +%if %{buildvirt} +BuildKernel %make_target %kernel_image virt +%endif + +# maybe %if %{buildrt} +%if %{buildrt} +BuildKernel %make_target %kernel_image +%endif + +%if %{builddoc} +# Make the HTML and man pages. +make -j1 htmldocs mandocs || %{doc_build_fail} + +# sometimes non-world-readable files sneak into the kernel source tree +chmod -R a=rX Documentation +find Documentation -type d | xargs chmod u+w +%endif + +%if %{buildrt} +%if %{buildperf} +pushd tools/perf +make %{?_smp_mflags} man || %{doc_build_fail} +popd +%endif +%endif +# In the modsign case, we do 3 things. 1) We check the "flavour" and hard +# code the value in the following invocations. This is somewhat sub-optimal +# but we're doing this inside of an RPM macro and it isn't as easy as it +# could be because of that. 2) We restore the .tmp_versions/ directory from +# the one we saved off in BuildKernel above. This is to make sure we're +# signing the modules we actually built/installed in that flavour. 3) We +# grab the arch and invoke 'make modules_sign' and the mod-extra-sign.sh +# commands to actually sign the modules. +# +# We have to do all of those things _after_ find-debuginfo runs, otherwise +# that will strip the signature off of the modules. +# +# Finally, pick a module at random and check that it's signed and fail the build +# if it isn't. + +%ifnarch noarch +%define __modsign_install_post \ + if [ "%{with_rt}" -ne "0" ]; then \ + Arch=`head -1 configs/kernel-%{version}-%{_target_cpu}-rt.config | cut -b 3-` \ + rm -rf .tmp_versions \ + mv .tmp_versions.sign .tmp_versions \ + mv signing_key.priv.sign signing_key.priv \ + mv signing_key.x509.sign signing_key.x509 \ + %{modsign_cmd} $RPM_BUILD_ROOT/lib/modules/%{KVERREL} || exit 1 \ + fi\ + for AAA in %{?with_trace:trace} %{?with_debug:debug} %{?with_vanilla:vanilla} %{?with_virt:virt}; do \ + Arch=`head -1 configs/kernel-rt-%{version}-%{_target_cpu}-rt-${AAA}.config | cut -b 3-` \ + rm -rf .tmp_versions \ + mv .tmp_versions.sign.${AAA} .tmp_versions \ + mv signing_key.priv.sign.${AAA} signing_key.priv \ + mv signing_key.x509.sign.${AAA} signing_key.x509 \ + %{modsign_cmd} $RPM_BUILD_ROOT/lib/modules/%{KVERREL}.${AAA} || exit 1 \ + done \ +%{nil} +%endif + +### +### Special hacks for debuginfo subpackages. +### + +# This macro is used by %%install, so we must redefine it before that. +%global debug_package %{nil} + +%if %{fancy_debuginfo} +%define __debug_install_post \ + /usr/lib/rpm/find-debuginfo.sh %{debuginfo_args} %{_builddir}/%{?buildsubdir}\ +%{nil} +%endif + +%if %{builddebuginfo} +%ifnarch noarch +%global __debug_package 1 +%files -f debugfiles.list debuginfo-common-%{_target_cpu} +%defattr(-,root,root) +%endif +%endif + +# +# Disgusting hack alert! We need to ensure we sign modules *after* all +# invocations of strip occur, which is in __debug_install_post if +# find-debuginfo.sh runs, and __os_install_post if not. +# +%ifnarch noarch +%define __spec_install_post \ + %{?__debug_package:%{__debug_install_post}}\ + %{__arch_install_post}\ + %{__os_install_post}\ + %{__modsign_install_post}\ +%{nil} +%endif + +### +### install +### + +%install +# for some reason, on RHEL-5 RPM_BUILD_ROOT doesn't get set +if [ -z "$RPM_BUILD_ROOT" ]; then + export RPM_BUILD_ROOT="%{buildroot}"; +fi + +cd linux-%{kversion}.%{_target_cpu} + +%if %{builddoc} +docdir=$RPM_BUILD_ROOT%{_datadir}/doc/kernel-rt-doc-%{rpmversion} +man9dir=$RPM_BUILD_ROOT%{_datadir}/man/man9rt + +# copy the source over +mkdir -p $docdir +tar -f - --exclude=man --exclude='.*' --exclude=*.xml --exclude=*.tmpl -c Documentation | tar xf - -C $docdir + +# Install man pages for the kernel API. +mkdir -p $man9dir +find Documentation/DocBook/man -name '*.9.gz' -print0 | +xargs -0 --no-run-if-empty %{__install} -m 444 -t $man9dir $m +ls $man9dir | grep -q '' || > $man9dir/BROKEN +%endif # builddoc + +# perf docs +%if %{buildrt} +%if %{buildperf} +mandir=$RPM_BUILD_ROOT%{_datadir}/man +man1dir=$mandir/man1 +pushd tools/perf/Documentation +make install-man mandir=$mandir +popd + +pushd $man1dir +for d in *.1; do + gzip $d; +done +popd + +# perf shell wrapper +mkdir -p $RPM_BUILD_ROOT/usr/sbin/ +cp $RPM_SOURCE_DIR/perf $RPM_BUILD_ROOT/usr/sbin/perf +chmod 0755 $RPM_BUILD_ROOT/usr/sbin/perf +cp $RPM_SOURCE_DIR/perf-archive $RPM_BUILD_ROOT/usr/sbin/perf-archive +chmod 0755 $RPM_BUILD_ROOT/usr/sbin/perf-archive +mkdir -p $RPM_BUILD_ROOT%{_datadir}/doc/perf +%endif # buildperf +%endif + +%if %{buildheaders} +# Install kernel headers +make ARCH=%{hdrarch} INSTALL_HDR_PATH=$RPM_BUILD_ROOT/usr headers_install + +# Do headers_check but don't die if it fails. +make ARCH=%{hdrarch} INSTALL_HDR_PATH=$RPM_BUILD_ROOT/usr headers_check \ + > hdrwarnings.txt || : +if grep -q exist hdrwarnings.txt; then + sed s:^$RPM_BUILD_ROOT/usr/include/:: hdrwarnings.txt + # Temporarily cause a build failure if header inconsistencies. + # exit 1 +fi + +find $RPM_BUILD_ROOT/usr/include \ + \( -name .install -o -name .check -o \ + -name ..install.cmd -o -name ..check.cmd \) | xargs rm -f + +# glibc provides scsi headers for itself, for now +rm -rf $RPM_BUILD_ROOT/usr/include/scsi +rm -f $RPM_BUILD_ROOT/usr/include/asm*/atomic.h +rm -f $RPM_BUILD_ROOT/usr/include/asm*/io.h +rm -f $RPM_BUILD_ROOT/usr/include/asm*/irq.h +%endif + +%if %{buildfirmware} +%{build_firmware} +mkdir -p $RPM_BUILD_ROOT%{_datadir}/doc/kernel-rt-%{rpmversion}-%{pkg_release}/firmware +cp firmware/WHENCE $RPM_BUILD_ROOT%{_datadir}/doc/kernel-rt-%{rpmversion}-%{pkg_release}/firmware +%endif + +### +### clean +### + +%clean +rm -rf $RPM_BUILD_ROOT + +### +### scripts +### + +# +# This macro defines a %%post script for a kernel*-devel package. +# %%kernel_devel_post [] +# +%define kernel_devel_post() \ +%{expand:%%post %{?1:%{1}-}devel}\ +if [ -f /etc/sysconfig/kernel ]\ +then\ + . /etc/sysconfig/kernel || exit $?\ +fi\ +if [ "$HARDLINK" != "no" -a -x /usr/sbin/hardlink ]\ +then\ + (cd /usr/src/kernels/%{KVERREL}%{?1:.%{1}} &&\ + /usr/bin/find . -type f | while read f; do\ + hardlink -c /usr/src/kernels/*.fc*.*/$f $f\ + done)\ +fi\ +%{nil} + +# This macro defines a %%posttrans script for a kernel package. +# %%kernel_variant_posttrans [] +# More text can follow to go at the end of this variant's %%post. +# +# grubby might be called during installation when a boot loader configuration +# file is not present, so just drop any error messages. See BZ#610813 for +# more details. +%define kernel_variant_posttrans() \ +%{expand:%%posttrans %{?1}}\ +%{expand:\ +NEWKERNARGS=""\ +(/sbin/grubby --info=`/sbin/grubby --default-kernel`) 2>/dev/null | grep -q crashkernel\ +if [ $? -ne 0 ]\ +then\ + NEWKERNARGS="--kernel-args=\"crashkernel=auto\""\ +fi\ +NKPARGS="--mkinitrd --depmod --update"\ +%if %{use_dracut}\ +NKPARGS="$NKPARGS --dracut"\ +%endif\ +/sbin/new-kernel-pkg --package kernel-rt $NKPARGS %{KVERREL}%{?1:.%{1}} $NEWKERNARGS || exit $?\ +}\ +/sbin/new-kernel-pkg --package kernel-rt --rpmposttrans %{KVERREL}%{?1:.%{1}} || exit $?\ +%{nil} + +# +# This macro defines a %%post script for a kernel package and its devel package. +# %%kernel_variant_post [-v ] [-r ] +# More text can follow to go at the end of this variant's %%post. +# +%define kernel_variant_post(v:r:) \ +%{expand:%%kernel_devel_post %{?-v*}}\ +%{expand:%%kernel_variant_posttrans %{?-v*}}\ +%{expand:%%post %{?-v*}}\ +%{expand:\ +/sbin/new-kernel-pkg --package kernel-rt %{!?-v:--make-default} --install %{KVERREL}%{?-v:.%{-v*}} || exit $?\ +}\ +[ -d /lib/firmware/updates ] || mkdir -p /lib/firmware/updates\ +ln -sf /lib/firmware/mrg-rt-firmware /lib/firmware/updates/%{KVERREL}%{?1:.%{1}}\ +%{nil} + + +# This macro defines a %%preun script for a kernel package. +# %%kernel_variant_preun +# +%define kernel_variant_preun() \ +%{expand:%%preun %{?1}}\ +/sbin/new-kernel-pkg --rminitrd --rmmoddep --remove %{KVERREL}%{?1:.%{1}} || exit $?\ +%{nil} + +# kernel-rt %post script +%kernel_variant_preun +%kernel_variant_post + +%if %{with debug} +# kernel-rt-debug %post script +%kernel_variant_preun debug +%kernel_variant_post -v debug +%endif + +%if %{with trace} +# kernel-rt-trace %post script +%kernel_variant_preun trace +%kernel_variant_post -v trace +%endif + +%if %{with vanilla} +# kernel-rt-vanilla %post script +%kernel_variant_preun vanilla +%kernel_variant_post -v vanilla +%endif + +%if %{with virt} +# kernel-rt-virt %post script +%kernel_variant_preun virt +%kernel_variant_post -v virt +%endif + +if [ -x /sbin/ldconfig ] +then + /sbin/ldconfig -X || exit $? +fi + +### +### file lists +### + +%if %{buildheaders} +%files headers +%defattr(-,root,root) +/usr/include/* +%endif + +%if %{buildfirmware} +%files firmware +%defattr(-,root,root) +/lib/firmware/* +%doc %{_datadir}/doc/kernel-rt-%{rpmversion}-%{pkg_release}/firmware/WHENCE +%endif + +# only some architecture builds need kernel-doc +%if %{builddoc} +%files doc +%defattr(-,root,root) +%{_datadir}/doc/kernel-rt-doc-%{rpmversion}/Documentation/* +%dir %{_datadir}/doc/kernel-rt-doc-%{rpmversion}/Documentation +%dir %{_datadir}/doc/kernel-rt-doc-%{rpmversion} +%{_datadir}/man/man9rt/* +%endif + +%if %{buildrt} +%if %{buildperf} +%files -n perf-rt +%defattr(-,root,root) +/usr/sbin/perf +/usr/sbin/perf-archive +/usr/libexec/* +%{_datadir}/man/man1/* +%{_datadir}/doc/perf +%endif +%endif + +# This is %{image_install_path} on an arch where that includes ELF files, +# or empty otherwise. +%global elf_image_install_path %{?kernel_image_elf:%{image_install_path}} + +# +# This macro defines the %%files sections for a kernel package +# and its devel and debuginfo packages. +# %%kernel_variant_files [-k vmlinux] +# +%define kernel_variant_files(k:) \ +%if %{1}\ +%{expand:%%files %{?2}}\ +%defattr(-,root,root)\ +/%{image_install_path}/%{?-k:%{-k*}}%{!?-k:vmlinuz}-%{KVERREL}%{?2:.%{2}}\ +/%{image_install_path}/.vmlinuz-%{KVERREL}%{?2:.%{2}}.hmac\ +/boot/System.map-%{KVERREL}%{?2:.%{2}}\ +/boot/config-%{KVERREL}%{?2:.%{2}}\ +%dir /lib/modules/%{KVERREL}%{?2:.%{2}}\ +/lib/modules/%{KVERREL}%{?2:.%{2}}/kernel\ +/lib/modules/%{KVERREL}%{?2:.%{2}}/extra\ +/lib/modules/%{KVERREL}%{?2:.%{2}}/build\ +/lib/modules/%{KVERREL}%{?2:.%{2}}/source\ +/lib/modules/%{KVERREL}%{?2:.%{2}}/updates\ +/lib/modules/%{KVERREL}%{?2:.%{2}}/weak-updates\ +%ifarch %{vdso_arches}\ +/lib/modules/%{KVERREL}%{?2:.%{2}}/vdso\ +/etc/ld.so.conf.d/kernel-rt-%{KVERREL}%{?2:.%{2}}.conf\ +%endif\ +/lib/modules/%{KVERREL}%{?2:.%{2}}/modules.*\ +%if %{use_dracut}\ +%ghost /boot/initramfs-%{KVERREL}%{?2:.%{2}}.img\ +%else\ +%ghost /boot/initrd-%{KVERREL}%{?2:.%{2}}.img\ +%endif\ +%{expand:%%files %{?2:%{2}-}devel}\ +%defattr(-,root,root)\ +%dir /usr/src/kernels\ +/usr/src/kernels/%{KVERREL}%{?2:.%{2}}\ +%if %{builddebuginfo}\ +%ifnarch noarch\ +%if %{builddebuginfo}\ +%if %{fancy_debuginfo}\ +%{expand:%%files -f debuginfo%{?2}.list %{?2:%{2}-}debuginfo}\ +%{debuginfodir}/boot/System.map-%{KVERREL}%{?2:.%{2}}\ +%else\ +%{expand:%%files %{?2:%{2}-}debuginfo}\ +%endif\ +%endif\ +%defattr(-,root,root)\ +%if %{builddebuginfo}\ +%if !%{fancy_debuginfo}\ +%if "%{elf_image_install_path}" != ""\ +%{debuginfodir}/%{elf_image_install_path}/*-%{KVERREL}%{?2:.%{2}}.debug\ +%endif\ +%endif\ +%{debuginfodir}/lib/modules/%{KVERREL}%{?2:.%{2}}\ +%{debuginfodir}/usr/src/kernels/%{KVERREL}%{?2:.%{2}}\ +%{debuginfodir}/boot/System.map-%{KVERREL}%{?2:.%{2}}\ +%endif\ +%endif\ +%endif\ +%endif\ +%{nil} + +%kernel_variant_files %{buildrt} + +%if %{builddebug} +%kernel_variant_files %{builddebug} debug +%endif + +%if %{buildtrace} +%kernel_variant_files %{buildtrace} trace +%endif + +%if %{buildvanilla} +%kernel_variant_files %{buildvanilla} vanilla +%endif + +%if %{with virt} +%kernel_variant_files %{buildvirt} virt +%endif + +%changelog +* Wed Feb 11 2015 Clark Williams [3.10.0-229.rt56.141] +- [rt] mce: fixed RHEL-RT mis-merge with mce cleanup commit [1191668] + +* Thu Jan 29 2015 Clark Williams [3.10.0-229.rt56.140] +- rebased to rhel build 229 [1160430] + +* Tue Jan 27 2015 Clark Williams [3.10.0-227.rt56.139] +- rebased to rhel build 227 [1160430] + +* Mon Jan 26 2015 Clark Williams [3.10.0-226.rt56.138] +- rebased to rhel build 226 [1160430] + +* Fri Jan 23 2015 Clark Williams [3.10.0-225.rt56.137] +- rebased to rhel build 225 [1160430] + +* Mon Jan 19 2015 Clark Williams [3.10.0-224.rt56.136] +- rebased to rhel build 224 [1160430] + +* Tue Jan 13 2015 Clark Williams [3.10.0-223.rt56.135] +- rebased to rhel build 223 [1160430] + +* Mon Jan 12 2015 Clark Williams [3.10.0-222.rt56.134] +- rebased to rhel build 222 [1160430] +- net: iwlwifi: driver fails to initialize on RHEL-RT 3.10.0-220.rt56.el7 [1178919] + +* Thu Jan 8 2015 Clark Williams [3.10.0-221.rt56.133] +- Setting up the function tracer hardlocks the machine [1172823] + +* Wed Jan 7 2015 Clark Williams [3.10.0-221.rt56.132] +- rebased to rhel build 221 [1160430] +- Performance problems with 3.10 LAZY_PREEMPT on Realtime kernel [1179371] + +* Mon Jan 5 2015 Clark Williams [3.10.0-220.rt56.131] +- net: iwlwifi: request only a threaded handler for interrupts [1178919] + +* Tue Dec 23 2014 Clark Williams [3.10.0-220.rt56.130] +- rebased to rhel build 220 [1160430] + +* Thu Dec 18 2014 Clark Williams [3.10.0-219.rt56.129] +- rebased to rhel build 219 [1160430] + +* Thu Dec 18 2014 Clark Williams [3.10.0-218.rt56.128] +- rebased to rhel build 218 [1160430] + +* Mon Dec 15 2014 Clark Williams [3.10.0-217.rt56.127] +- rebased to rhel build 217 [1160430] + +* Tue Dec 9 2014 Clark Williams [3.10.0-216.rt56.126] +- rebased to rhel build 216 [1160430] +- mm: Remove open coded local_irq_{enable,disable}() [1167452] + +* Fri Dec 5 2014 Clark Williams [3.10.0-213.rt56.125] +- rebased to rhel build 213 [1160430] + +* Wed Dec 3 2014 Clark Williams [3.10.0-212.rt56.124] +- rebased to rhel build 212 [1160430] + +* Tue Dec 2 2014 Clark Williams [3.10.0-211.rt56.123] +- rebased to rhel build 211 [1160430] + +* Mon Nov 24 2014 Clark Williams [3.10.0-210.rt56.122] +- rebased to rhel build 210 [1160430] + +* Mon Nov 24 2014 Clark Williams [3.10.0-209.rt56.121] +- rebased to rhel build 209 [1160430] + +* Mon Nov 24 2014 Clark Williams [3.10.0-206.rt56.120] +- rebased to rhel build 206 [1160430] + +* Thu Nov 20 2014 Clark Williams [3.10.0-205.rt56.119] +- rebased to rhel build 205 [1160430] + +* Wed Nov 19 2014 Clark Williams [3.10.0-204.rt56.118] +- ftrace/x86: Add frames pointers to trampoline as necessary [1161760] + +* Tue Nov 18 2014 Clark Williams [3.10.0-204.rt56.117] +- Fix scheduling while atomic in ring buffer for PREEMPT_RT [1161760] + +* Mon Nov 17 2014 Clark Williams [3.10.0-204.rt56.116] +- rebased to rhel build 204 [1160430] + +* Fri Nov 14 2014 Clark Williams [3.10.0-203.rt56.115] +- rebased to rhel build 203 [1160430] + +* Tue Nov 11 2014 Clark Williams [3.10.0-201.rt56.114] +- rebased to rhel build 201 [1160430] + +* Mon Nov 10 2014 Clark Williams - 3.10.0-200.rt56.113 +- rebased to rhel build 200 [1160430] +- apply blk_mq patches to avoid "scheduling while atomic" [1162253] + +* Wed Nov 5 2014 Clark Williams - 3.10.0-198.rt56.112 +- rebased to rhel build 198 [1160430] +- kernel: zero the cpumask before running sched_getaffinity [1158225] + +* Tue Nov 4 2014 Clark Williams - 3.10.0-196.rt56.111 +- corrected build and commit syntax for dist-git [1151560] + +* Tue Oct 28 2014 Clark Williams - 3.10.0-196.rt56.110 +- initial rhel-7.1 build [1151560] +- rebased to rhel build 196 [1159388] + +* Tue Oct 28 2014 Clark Williams - 3.10.0-193.rt56.109 +- virt: reverted blk-mq commits in virtio-blk due to 'scheduling while atomic' errors + +* Fri Oct 24 2014 Clark Williams - 3.10.0-193.rt56.108 +- configs: turned on CONFIG_VIRT_DRIVERS for virt config on RHEL7 +- configs: turned on CONFIG_VIRTIO_MMIO for virt config on RHEL7 +- configs: turned on CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES for virt configs on RHEL7 +- configs: turned on CONFIG_PARAVIRT_DEBUG for virt config on RHEL7 +- configs: turned on CONFIG_PARAVIRT_TIME_ACCOUNTING for virt config on RHEL7 +- configs: turned on CONFIG_DEBUG_VIRTUAL for virt config on RHEL7 + +* Fri Oct 24 2014 Clark Williams - 3.10.0-193.rt56.107 +- rebased to rhel build 193 + +* Wed Oct 22 2014 Clark Williams - 3.10.0-191.rt56.106 +- rebased to rhel build 191 + +* Wed Oct 22 2014 Clark Williams - 3.10.0-190.rt56.105 +- cpumask: set nr_cpumask_bits to nr_cpu_ids on PREEMPT_RT + +* Tue Oct 21 2014 Clark Williams - 3.10.0-190.rt56.104 +- rebased to rhel build 190 + +* Thu Oct 16 2014 Clark Williams - 3.10.0-188.rt56.103 +- configs: turned off CONFIG_MIGRATION and CONFIG_CMA due to latency spikes + +* Tue Oct 14 2014 Clark Williams - 3.10.0-188.rt56.102 +- turned on -virt sub-package build for el7rt + +* Mon Oct 13 2014 Clark Williams - 3.10.0-188.rt56.101 +- rebased to rhel build 188 + +* Fri Oct 10 2014 Clark Williams - 3.10.0-186.rt56.100 +- turned off default build of -virt and -vanilla kernel packages +- rebased to rhel build 186 + +* Thu Oct 9 2014 Clark Williams - 3.10.0-185.rt56.99 +- configs: modified virt configs to match RHEL7 configs +- configs: turned on CONFIG_FAIR_GROUP_SCHED and CFS_BANDWIDTH +- rebased to rhel build 185 + +* Wed Oct 8 2014 Clark Williams - 3.10.0-183.rt56.98 +- rebased to rhel build 183 + +* Tue Oct 7 2014 Clark Williams - 3.10.0-182.rt56.97 +- configs: Turned on CONFIG_MIGRATION and CONFIG_CMA (left COMPACTION off) +- x86: updated arch/x86/boot/tools/build.c to use unified types.h +- rebased to rhel build 182 + +* Mon Oct 6 2014 Clark Williams - 3.10.0-179.rt56.96 +- configs: turn off CONFIG_PARAVIRT_SPINLOCKS for virt config +- configs: turn off CONFIG_PARAVIRT_TIME_ACCOUNTING for virt config + +* Sun Oct 5 2014 Clark Williams - 3.10.0-179.rt56.95 +- specfile: fixed bogus path for new-kernel-pkg +- specfile: removed incorrect linux-firmware version + +* Sun Oct 5 2014 Clark Williams - 3.10.0-179.rt56.94 +- mm: move clear_hwpoisoned_pages under CONFIG_MEMORY_HOTREMOVE +- configs: handle unknown configs for el6rt + +* Sun Oct 5 2014 Clark Williams - 3.10.0-179.rt56.93 +- specfile: require new linux-firmware version (match RHEL) +- configs: Turned off CONFIG_MIGRATION and related configs +- rebased to rhel build 179 + +* Fri Oct 3 2014 Clark Williams - 3.10.0-178.rt56.92 +- tracing: Disable tracing on warning +- rebased to rhel build 178 + +* Fri Oct 3 2014 Clark Williams - 3.10.0-177.rt56.91 +- rebased to rhel build 177 + +* Tue Sep 30 2014 Clark Williams - 3.10.0-176.rt56.90 +- rebased to rhel build 176 + +* Tue Sep 30 2014 Clark Williams - 3.10.0-174.rt56.89 +- rebased to rhel build 174 + +* Mon Sep 29 2014 Clark Williams - 3.10.0-171.rt56.88 +- rebased to rhel build 171 + +* Wed Sep 24 2014 Clark Williams - 3.10.0-170.rt56.87 +- rebased to rhel build 170 + +* Tue Sep 23 2014 Clark Williams - 3.10.0-168.rt56.86 +- rebased to rhel build 168 + +* Tue Sep 23 2014 Clark Williams - 3.10.0-167.rt56.85 +- rebased to rhel build 167 + +* Fri Sep 19 2014 Clark Williams - 3.10.0-163.rt56.84 +- rebased to rhel build 163 + +* Tue Sep 16 2014 Clark Williams - 3.10.0-161.rt56.83 +- rebased to rhel build 161 + +* Tue Sep 16 2014 Clark Williams - 3.10.0-160.rt56.82 +- rebased to rhel build 160 + +* Mon Sep 15 2014 Clark Williams - 3.10.0-158.rt56.81 +- rebased to rhel build 158 + +* Mon Sep 15 2014 Clark Williams - 3.10.0-155.rt56.80 +- rcu: unify boost and kthread priorities then make it boot time settable +- configs: added RCU_KTHREAD_PRIO and removed RCU_BOOST_PRIO + +* Fri Sep 12 2014 Clark Williams - 3.10.0-155.rt56.79 +- rebased to rhel build 155 +- removed CONFIG_RCU_NOCB_CPU_* overrides in rt tree to use RHEL values +- changed CONFIG_RCU_BOOST_PRIO to 2 for realtime + +* Thu Sep 11 2014 Clark Williams - 3.10.0-154.rt56.78 +- rebased to rhel build 154 + +* Thu Sep 4 2014 Clark Williams - 3.10.0-152.rt56.77 +- rebased to rhel build 152 + +* Tue Sep 2 2014 Clark Williams - 3.10.0-150.rt56.76 +- rebased to rhel build 150 + +* Tue Sep 2 2014 Clark Williams - 3.10.0-147.rt56.75 +- rebased to rhel build 147 + +* Wed Aug 27 2014 Clark Williams - 3.10.0-144.rt56.74 +- brought RT patch up to current 3.10 level (-rt56) + - Fix latency histogram after "hrtimer: Set expiry time before switch_hrtimer_base()" + - timer: do not spin_trylock() on UP + - rcu: make RCU_BOOST default on RT + - net: gianfar: do not disable interrupts + - net: gianfar: do not try to cleanup TX packets if they are not done + +* Wed Aug 13 2014 Clark Williams - 3.10.0-144.rt34.73 +- rebased to rhel build 144 + +* Thu Aug 7 2014 Clark Williams - 3.10.0-143.rt34.72 +- rebased to rhel build 143 + +* Tue Aug 5 2014 Clark Williams - 3.10.0-142.rt34.71 +- add the .virt variant modules to the signing pass loop +- turn off lockdep in main rt kernel +- x86: MCE: Add raw_lock conversion again + +* Mon Aug 4 2014 Clark Williams - 3.10.0-142.rt34.70 +- rebased to rhel build 142 + +* Thu Jul 31 2014 Clark Williams - 3.10.0-140.rt34.69 +- fix cpu hotplug commit error + +* Tue Jul 29 2014 Clark Williams - 3.10.0-140.rt34.68 +- rebased to rhel build 140 + +* Fri Jul 25 2014 Clark Williams - 3.10.0-138.rt34.67 +- debugging: turn on lockdep in main rt kernel for beaker tests +- from Luis Claudio R. Goncalves : + - redhat: remove leftover from old specfile + - redhat: fixed version and changelog on the specfile + - redhat: fix the logi fir defining TOPDIR, RTDIR and RHDIR + - redhat: fix a typo in the MRG Makefiles + - redhat: use bz2 for the tarball instead of xz + - redhat: prepared specfile for rhel7-rt-on-rhel6 (with old style module signing) + - redhat: remove unused config file + - redhat: add the config files for rhel7-rt-on-rhel6 + - redhat-rt: patch required for rhel7-rt-on-rhel6 + +* Mon Jul 21 2014 Clark Williams - 3.10.0-138.rt34.66 +- rebased to rhel build 138 + +* Sun Jul 20 2014 Clark Williams - 3.10.0-137.rt34.65 +- rebased to rhel build 137 + +* Thu Jul 17 2014 Clark Williams - 3.10.0-136.rt34.64 +- rebased to rhel build 136 + +* Wed Jul 16 2014 Clark Williams - 3.10.0-135.rt34.63 +- rebased to rhel build 135 + +* Thu Jul 10 2014 Clark Williams - 3.10.0-133.rt34.62 +- rebased to rhel build 133 + +* Thu Jul 10 2014 Clark Williams - 3.10.0-132.rt34.61 +- rebased to rhel build 132 +- workqueue: Prevent deadlock/stall on RT + +* Wed Jul 2 2014 Clark Williams - 3.10.0-130.rt34.60 +- hcd: change local_irq_* functions in URB completion to be nort variants + +* Tue Jul 1 2014 Clark Williams - 3.10.0-130.rt34.59 +- rebased to rhel build 130 + +* Mon Jun 30 2014 Clark Williams - 3.10.0-128.rt34.58 +- nfnetlink_log: unset nf_loggers for net namespace when unload nfnetlink_log + +* Wed Jun 25 2014 Clark Williams - 3.10.0-128.rt34.57 +- netconsole: enable netconsole on PREEMPT_RT + +* Tue Jun 24 2014 Clark Williams - 3.10.0-128.rt34.56 +- sched: Do not clear PF_NO_SETAFFINITY flag in select_fallback_rq() + +* Thu Jun 19 2014 Clark Williams - 3.10.0-128.rt34.55 +- rebased to rhel build 128 +- added tglx patch to rtmutex to fix slow path race + +* Wed Jun 18 2014 Clark Williams - 3.10.0-127.rt34.54 +- add code to drivers/cpufreq/powernow-k8.c to prevent panic on boot + +* Tue Jun 17 2014 Clark Williams - 3.10.0-127.rt34.53 +- turned on CONFIG_NO_HZ_FULL +- turned off CONFIG_NO_HZ_IDLE +- turned on CONFIG_FAIR_GROUP_SCHED +- turned off CONFIG_IRQ_TIME_ACCOUNTING +- turned off CONFIG_ + +* Mon Jun 16 2014 Clark Williams - 3.10.0-127.rt34.52 +- turned on specfile logic to build virt subpackage + +* Thu Jun 12 2014 Clark Williams - 3.10.0-127.rt34.51 +- rebased to rhel build 127 + +* Fri Jun 6 2014 Clark Williams - 3.10.0-126.rt34.50 +- rebased to rhel build 126 +- moved RHEL7 RT infrastructure to redhat/realtime +- added RHEL6 RT infrastructure to redhat/MRG + +* Tue Jun 3 2014 Clark Williams - 3.10.0-124.rt34.49 +- rebased to rhel build 124 +- futex: Prevent attaching to kernel threads +- futex: Add another early deadlock detection check +- more spefile changes for module signing +- removed sighand debugging patch +- reverted RT commit 'slub: delay ctor until the object is requested' + +* Fri May 30 2014 Clark Williams - 3.10.0-123.rt34.48 +- enable module signing + +* Thu May 29 2014 Clark Williams - 3.10.0-123.rt34.47 +- debugging patch for sighand from rostedt + +* Fri May 9 2014 Clark Williams - 3.10.0-123.rt34.46 +- rt,blk,mq: Make blk_mq_cpu_notify_lock a raw spinlock + +* Fri May 9 2014 Clark Williams - 3.10.0-123.rt34.45 +- rt: Move migrate_disable() up in trylocks + +* Tue May 6 2014 Clark Williams - 3.10.0-123.rt34.44 +- rebased to rhel build 123 + +* Mon May 5 2014 Clark Williams - 3.10.0-122.rt34.43 +- rebased to rhel build 122 + +* Wed Apr 9 2014 Clark Williams - 3.10.0-121.rt34.42 +- rebased to rhel build 121 + +* Tue Apr 8 2014 Clark Williams - 3.10.0-120.rt34.41 +- rebased to rhel build 120 +- synced with upstream 3.10.34-rt34 quilt queue + +* Wed Apr 2 2014 Clark Williams - 3.10.0-118.rt33.40 +- rebased to rhel build 118 +- modified specfile to use xz compression +- modified config system to turn off CGROUP group schedulers + +* Tue Apr 1 2014 Clark Williams - 3.10.0-117.rt33.39 +- rebased to rhel build 117 +- from Luis Claudio R. Goncalves : + - spec: do not create an empty include/linux/version.h + - spec: added ApplyPatch and the support for linux-kernel-test.patch + - spec: fix the buildid usage on the specfile + +* Mon Mar 31 2014 Clark Williams - 3.10.0-116.rt33.38 +- rebased to rhel build 116 + +* Wed Mar 26 2014 Clark Williams - 3.10.0-114.rt33.37 +- rebased to rhel build 114 + +* Fri Mar 21 2014 Clark Williams - 3.10.0-113.rt33.36 +- rebased to rhel build 113 + +* Wed Mar 19 2014 Clark Williams - 3.10.0-112.rt33.35 +- rebased to rhel build 112 +- picked up 3.10-rt33 commit: + - crypto: Reduce preempt disabled regions, more algos +- updated realtime version to -rt33 + +* Mon Mar 17 2014 Clark Williams - 3.10.0-111.rt32.34 +- rebased to rhel build 111 + +* Wed Mar 12 2014 Clark Williams - 3.10.0-109.rt32.33 +- rebased to rhel build 109 + +* Mon Mar 10 2014 Clark Williams - 3.10.0-107.rt32.32 +- pulled new rt-specific patches from latest RT series, updated to -rt32 + - fs: jbd2: pull your plug when waiting for space + - net: sched: dev_deactivate_many(): use msleep(1) instead of yield() + +* Mon Mar 10 2014 Clark Williams - 3.10.0-107.rt31.31 +- rebased to rhel build 107 + +* Fri Mar 7 2014 Clark Williams - 3.10.0-106.rt31.30 +- rebased to rhel build 106 +- reverted removal of stop_cpus_lock in kernel/stop_machine.c + +* Wed Mar 5 2014 Clark Williams - 3.10.0-105.rt31.29 +- rebased to rhel build 105 + +* Tue Mar 4 2014 Clark Williams - 3.10.0-102.rt31.28 +- rebased to rhel build 102 + +* Tue Mar 4 2014 Clark Williams - 3.10.0-99.rt31.27 +- added rostedt cpu_chill() patch to prevent live-lock + +* Mon Mar 3 2014 Clark Williams - 3.10.0-99.rt31.26 +- cherry-picked new RT patches from 3.10.12-rt31 series + +* Fri Feb 28 2014 Clark Williams - 3.10.0-99.rt30.25 +- rebased to rhel build 99 + +* Fri Feb 28 2014 Clark Williams - 3.10.0-98.rt30.24 +- rebased to rhel build 98 + +* Thu Feb 27 2014 Clark Williams - 3.10.0-97.rt30.23 +- synced with latest 3.10 rt patchset (3.10.32-rt30) + +* Wed Feb 26 2014 Clark Williams - 3.10.0-97.rt25.22 +- rebased to rhel build 97 + +* Wed Feb 26 2014 Clark Williams - 3.10.0-93.rt25.21 +- reworked rebase to use hotplug function from RT patchset + +* Mon Feb 24 2014 Clark Williams - 3.10.0-93.rt25.20 +- rebased to rhel build 93 +- switched to rhel7 hotplug mechanism in _cpu_down() (kernel/cpu.c) + +* Fri Feb 21 2014 Clark Williams - 3.10.0-90.rt25.19 +- rebased to rhel build 90 + +* Wed Feb 19 2014 Clark Williams - 3.10.0-89.rt25.18 +- added cpu_chill() patch from Sebastian Andrzej Siewior + +* Tue Feb 18 2014 Clark Williams - 3.10.0-89.rt25.17 +- rebased to rhel build 89 +- added 3.12-rt17 series patch to disable cmpxchg for lockref + +* Thu Feb 13 2014 Clark Williams - 3.10.0-87.rt25.16 +- rebased to rhel build 87 + +* Tue Feb 11 2014 Clark Williams - 3.10.0-86.rt25.15 +- rebased to rhel build 86 + +* Tue Feb 11 2014 Clark Williams - 3.10.0-85.rt25.14 +- rebased to rhel build 85 + +* Mon Feb 10 2014 Clark Williams - 3.10.0-84.rt25.13 +- rebased to rhel build 84 + +* Tue Feb 4 2014 Clark Williams - 3.10.0-82.rt25.12 +- fixup mismerge of mm/swap.c + +* Tue Feb 4 2014 Clark Williams - 3.10.0-82.rt25.11 +- rebased to rhel build 82 + +* Wed Jan 22 2014 Clark Williams - 3.10.0-76.rt25.10 +- updated Makefile and kernel-rt.spec to use new versioning scheme + +* Wed Jan 15 2014 Clark Williams - 3.10.0-rt23.9 +- change specfile to not build firmware package kernel-rt-firmware + +* Tue Jan 14 2014 Clark Williams - 3.10.0-rt23.8 +- rebased to rhel build 68 + +* Mon Jan 13 2014 Clark Williams - 3.10.0-rt23.7 +- fixed stop_machine issue that prevented system boot + +* Wed Jan 8 2014 Clark Williams - 3.10.0-rt23.6 +- remove dependency on rt-firmware package + +* Tue Jan 7 2014 Clark Williams - 3.10.0-rt23.5 +- rebased to rhel build 65 +- applied sit fix from Willem de Bruijn + +* Tue Dec 17 2013 Clark Williams - 3.10.0-rt19.4 +- applied ip6_tunnel fix from Nicolas Dichtel + +* Tue Dec 17 2013 Clark Williams - 3.10.0-rt19.3 +- rebased to rhel build 62 +- added Johannes Berg patch for iwlwifi on RT + +* Mon Dec 16 2013 Clark Williams - 3.10.0-rt19.2 +- rebased to 3.10.22-rt19 patchset + +* Wed Oct 30 2013 Clark Williams - 3.10.0-rt18.1 +- initial build