Undo the changes from r8916

git-svn-id: http://svn.code.sf.net/p/scst/svn/branches/3.4.x@8917 d57e44dd-8a1f-0410-8b47-8ef2f437770f
This commit is contained in:
Bart Van Assche
2020-05-15 15:46:47 +00:00
parent 94731537d6
commit eb8d5f0825
5 changed files with 62 additions and 390 deletions

View File

@@ -5,7 +5,7 @@
# Script for converting the SCST source tree as it exists in the Subversion
# repository to a Linux kernel patch.
#
# Copyright (C) 2008-2020 Bart Van Assche <bvanassche@acm.org>
# Copyright (C) 2008-2009 Bart Van Assche <bvanassche@acm.org>
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -105,21 +105,6 @@ EOF
# Run the script specialize_patch with appropriate options on the patch
# passed via stdin and send the specialized patch to stdout.
function specialize_patch {
local arr ao
readarray -d ^ -t arr <<<"$1^^^^"
local kver=${arr[0]}
local distro=${arr[1]}
local release=${arr[2]}
readarray -d . -t arr <<<"$release..."
local releasevermajor="${arr[0]}"
local releaseverminor="${arr[1]}"
if [ -n "$releasevermajor" ]; then
ao=(
-v RHEL_MAJOR=$releasevermajor
-v RHEL_MINOR=$releaseverminor
-v RHEL_RELEASE_CODE=$((releasevermajor * 256 + releaseverminor))
)
fi
if [ "${enable_specialize}" = "true" ]; then
if [ "${generating_upstream_patch}" = "true" ]; then
scripts/filter-trace-entry-exit
@@ -128,14 +113,14 @@ function specialize_patch {
fi |
"$(dirname "$0")/specialize-patch" \
"${specialize_patch_options[@]}" \
-v kernel_version="${kver/-*}" \
-v SCST_IO_CONTEXT="${scst_io_context}" "${ao[@]}"
-v kernel_version="${kver3}" \
-v SCST_IO_CONTEXT="${scst_io_context}"
else
cat
fi
}
# Read a patch from stdin, specialize it for kernel version ${full_kver}
# Read a patch from stdin, specialize it for kernel version ${kver}
# and write the output either to stdout or to the file $1 (if not empty),
# depending on the value of the variable ${multiple_patches}.
function process_patch {
@@ -147,7 +132,7 @@ function process_patch {
fi
tmppatch="$(/bin/mktemp)"
(
specialize_patch "${full_kver}"
specialize_patch
) >"${tmppatch}"
touch "${tmppatch}"
{
@@ -166,7 +151,7 @@ function process_patch {
true
fi
else
specialize_patch "${full_kver}"
specialize_patch
fi
}
@@ -223,7 +208,6 @@ if [ $# != 1 ]; then
fi
# Strip patch level from the kernel version number.
full_kver="$1"
kver="$(kernel_version "$1")"
# kver3: first three components of the version number.
if [ "${1#2.}" != "$1" ]; then
@@ -341,8 +325,7 @@ else
"drivers/Kconfig"
fi
if [ "${full_kver#2.6.32-}" = "${full_kver}" ] &&
[ -e "scst/kernel/in-tree/Makefile.drivers.Linux-${kver}.patch" ]; then
if [ -e "scst/kernel/in-tree/Makefile.drivers.Linux-${kver}.patch" ]; then
add_patch "scst/kernel/in-tree/Makefile.drivers.Linux-${kver}.patch"\
"drivers/Makefile"
else
@@ -523,7 +506,7 @@ add_file "iscsi-scst/README_in-tree" "Documentation/scst/README.iscsi" \
if [ "${qla2x00t}" = "true" ]; then
( cd qla2x00t && "$PWD/generate-in-tree-patches" "$1" ) || exit $?
( cd qla2x00t && ./generate-in-tree-patches "$1" )
for f in qla2x00t/in-tree-patches/"$1"/*.patch; do
[ -e "$f" ] || continue
@@ -549,17 +532,13 @@ if [ "${qla2x00t}" = "true" ]; then
elif [ "${qla2x00t_32gbit}" = "true" ]; then
( cd qla2x00t-32gbit && "$PWD/generate-in-tree-patches" "$1" ) || exit $?
( cd qla2x00t-32gbit && ./generate-in-tree-patches "$1" )
for f in qla2x00t-32gbit/in-tree-patches/"$1"/*.patch; do
[ -e "$f" ] || continue
g="${f#qla2x00t-32gbit/in-tree-patches/$1/}"
g="${g%.patch}"
if [ "$g" = "qla.h" ]; then
add_patch "${f}" "include/trace/events/${g}"
else
add_patch "${f}" "drivers/scsi/qla2xxx/${g}"
fi
add_patch "${f}" "drivers/scsi/qla2xxx/${g}"
done
for f in qla2x00t-32gbit/qla2x00-target/*.[ch]; do

View File

@@ -2,9 +2,6 @@
# Shell functions for parsing the Linux kernel version and for downloading
# from kernel.org.
# shellcheck source=./rhel-rpm-functions
source "$(dirname "$0")/../scripts/rhel-rpm-functions" || return $?
kernel_mirror="http://cdn.kernel.org/pub/linux/kernel"
kernel_downloads="$HOME/software/downloads"
kernel_tree="$HOME/software/linux-kernel"
@@ -127,8 +124,8 @@ function extract_kernel_tree {
# Patch a kernel tree where $1 is the kernel version.
function patch_kernel {
if [ "$1" = "2.6.29" ] || [ "$1" = "2.6.29.1" ] || [ "$1" = "2.6.29.2" ] ||
[ "$1" = "2.6.29.3" ]; then
if [ "$1" = "2.6.29" ] || [ "$1" = "2.6.29.1" ] || [ "$1" = "2.6.29.2" ] || [ "$1" = "2.6.29.3" ]
then
patch -f -s -p1 <<'EOF'
Make sure that branch profiling does not trigger sparse warnings.
See also http://bugzilla.kernel.org/show_bug.cgi?id=12925
@@ -148,8 +145,8 @@ See also http://lkml.org/lkml/2009/4/5/120
#define likely_notrace(x) __builtin_expect(!!(x), 1)
EOF
fi
if [ "${1#2.6.31}" != "$1" ]; then
if [ "${1#2.6.31}" != "$1" ]
then
patch -f -s -p1 <<'EOF'
Checking a 2.6.31.1 kernel configured with allyesconfig/allmodconfig
with sparse (make C=2) triggers a sparse warning on code that uses the
@@ -203,7 +200,6 @@ Get rid of sparse errors on sk_buff.protocol.
#if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE)
EOF
fi
if [ "${1#3.13}" != "$1" ]; then
if [ "$1" = "3.13" ] || [ "${1#3.13.}" -lt 6 ]; then
patch -f -s -p1 <<'EOF'
@@ -245,7 +241,6 @@ index 3f2793d..96e45ea 100644
EOF
fi
fi
if [ "${1#4.15}" != "$1" ]; then
patch -f -s -p1 <<'EOF'
From ad343a98e74e85aa91d844310e797f96fee6983b Mon Sep 17 00:00:00 2001
@@ -336,7 +331,6 @@ index d6d65537b0d9..6aad8308a0ac 100644
}
EOF
fi
case "$1" in
2.6.3[6-9]*|3.[0-9]|3.[0-9].*|3.1[01345]|3.1[01345].*|3.1[789]|3.1[789].*|4.[023567]|4.[023567].*)
patch -p1 <<'EOF'
@@ -402,9 +396,6 @@ index 0ed6ce300543..c324b43712f0 100644
KBUILD_LDFLAGS_MODULE := -T $(srctree)/scripts/module-common.lds
EOF
;;
# The patch below does not apply on the CentOS 6 kernel.
2.6.32-*)
;;
2.6.3[1-5]*)
patch -p1 <<'EOF'
diff --git a/Makefile b/Makefile
@@ -431,113 +422,6 @@ EOF
;;
esac
case "$1" in
4.18.0-*) # CentOS 8.x
patch -p1 <<'EOF'
From a6e60d84989fa0e91db7f236eda40453b0e44afa Mon Sep 17 00:00:00 2001
From: Miguel Ojeda <miguel.ojeda.sandonis@gmail.com>
Date: Sat, 19 Jan 2019 20:59:34 +0100
Subject: [PATCH] include/linux/module.h: copy __init/__exit attrs to
init/cleanup_module
The upcoming GCC 9 release extends the -Wmissing-attributes warnings
(enabled by -Wall) to C and aliases: it warns when particular function
attributes are missing in the aliases but not in their target.
In particular, it triggers for all the init/cleanup_module
aliases in the kernel (defined by the module_init/exit macros),
ending up being very noisy.
These aliases point to the __init/__exit functions of a module,
which are defined as __cold (among other attributes). However,
the aliases themselves do not have the __cold attribute.
Since the compiler behaves differently when compiling a __cold
function as well as when compiling paths leading to calls
to __cold functions, the warning is trying to point out
the possibly-forgotten attribute in the alias.
In order to keep the warning enabled, we decided to silence
this case. Ideally, we would mark the aliases directly
as __init/__exit. However, there are currently around 132 modules
in the kernel which are missing __init/__exit in their init/cleanup
functions (either because they are missing, or for other reasons,
e.g. the functions being called from somewhere else); and
a section mismatch is a hard error.
A conservative alternative was to mark the aliases as __cold only.
However, since we would like to eventually enforce __init/__exit
to be always marked, we chose to use the new __copy function
attribute (introduced by GCC 9 as well to deal with this).
With it, we copy the attributes used by the target functions
into the aliases. This way, functions that were not marked
as __init/__exit won't have their aliases marked either,
and therefore there won't be a section mismatch.
Note that the warning would go away marking either the extern
declaration, the definition, or both. However, we only mark
the definition of the alias, since we do not want callers
(which only see the declaration) to be compiled as if the function
was __cold (and therefore the paths leading to those calls
would be assumed to be unlikely).
Link: https://lore.kernel.org/lkml/20190123173707.GA16603@gmail.com/
Link: https://lore.kernel.org/lkml/20190206175627.GA20399@gmail.com/
Suggested-by: Martin Sebor <msebor@gcc.gnu.org>
Acked-by: Jessica Yu <jeyu@kernel.org>
Signed-off-by: Miguel Ojeda <miguel.ojeda.sandonis@gmail.com>
---
include/linux/module.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/include/linux/module.h b/include/linux/module.h
index 8fa38d3e7538..f5bc4c046461 100644
--- a/include/linux/module.h
+++ b/include/linux/module.h
@@ -129,13 +129,13 @@ extern void cleanup_module(void);
#define module_init(initfn) \
static inline initcall_t __maybe_unused __inittest(void) \
{ return initfn; } \
- int init_module(void) __attribute__((alias(#initfn)));
+ int init_module(void) __attribute__((__copy__(initfn))) __attribute__((alias(#initfn)));
/* This is only required if you want to be unloadable. */
#define module_exit(exitfn) \
static inline exitcall_t __maybe_unused __exittest(void) \
{ return exitfn; } \
- void cleanup_module(void) __attribute__((alias(#exitfn)));
+ void cleanup_module(void) __attribute__((__copy__(exitfn))) __attribute__((alias(#exitfn)));
#endif
EOF
;;
*) # CentOS 6.x and 7.x
patch -p1 <<'EOF'
--- linux-3.10.0-1127.el7/include/linux/init.h.orig 2020-05-09 20:55:48.638956513 -0700
+++ linux-3.10.0-1127.el7/include/linux/init.h 2020-05-09 20:56:46.947612445 -0700
@@ -309,13 +309,15 @@
#define module_init(initfn) \
static inline initcall_t __inittest(void) \
{ return initfn; } \
- int init_module(void) __attribute__((alias(#initfn)));
+ int init_module(void) __attribute__((__copy__(initfn))) \
+ __attribute__((alias(#initfn)));
/* This is only required if you want to be unloadable. */
#define module_exit(exitfn) \
static inline exitcall_t __exittest(void) \
{ return exitfn; } \
- void cleanup_module(void) __attribute__((alias(#exitfn)));
+ void cleanup_module(void) __attribute__((__copy__(exitfn)))\
+ __attribute__((alias(#exitfn)));
#define __setup_param(str, unique_id, fn) /* nothing */
#define __setup(str, func) /* nothing */
EOF
;;
esac
# Use sed to patch the ____ilog2_NaN() prototype.
sed -i 's/__attribute__((const, noreturn))/__attribute__((noreturn))/' \
include/linux/log2.h tools/include/linux/log2.h 2>/dev/null
@@ -551,37 +435,10 @@ EOF
done
}
function download_and_extract_distro_rpm {
[ -n "$1" ] || return $?
local arr
readarray -d ^ -t arr <<<"$1^^^^"
local kver=${arr[0]}
local distro=${arr[1]}
local release=${arr[2]}
(
cd "${kernel_downloads}" || exit $?
urls=($(get_srpm_urls "$distro" "$release" x86_64))
for url in "${urls[@]}"; do
wget -q -nc "${url}/kernel-${kver}.src.rpm" && break
done
)
local tmpdir=kernel-tree-tmp-$$
rm -rf "linux-$1" "${tmpdir}"
mkdir "${tmpdir}" || return $?
(
cd "${tmpdir}" &&
rpm2cpio "${kernel_downloads}/kernel-${kver}.src.rpm" |
cpio -i --make-directories --quiet &&
tar xaf linux-${kver}.tar.* &&
mv "linux-${kver}" ".." &&
cd "../linux-${kver}"
) || return $?
rm -rf "${tmpdir}"
}
function download_and_extract_kernel_tree {
if [ -e "${kernel_tree}" ]; then
{ [ "${1/^}" = "$1" ] &&
rm -rf "linux-$1"
mkdir "linux-$1"
(
cd "${kernel_tree}" &&
{
@@ -593,17 +450,12 @@ function download_and_extract_kernel_tree {
git fetch stable
}
} &&
{ git tag -l "v$1" | grep -q '^v'; } &&
git archive "v$1"
) | {
rm -rf "linux-$1" &&
mkdir "linux-$1" &&
tar -C "linux-$1" -xf- 2>/dev/null
}; } || download_and_extract_distro_rpm "$1"
) | tar -C "linux-$1" -xf-
else
download_kernel "$1" && extract_kernel_tree "$1"
fi &&
(cd "linux-${1/^*}" && patch_kernel "${1/^*}")
(cd "linux-$1" && patch_kernel "$1")
}
# For shellcheck

View File

@@ -1,112 +0,0 @@
# -*- mode: shell-script -*-
# Shell functions for downloading and extracting a RHEL or RHEL clone RPM
# Arguments:
# $1: Linux distribution name
# $2: Linux distribution version (major.minor)
# $3: architecture
function get_srpm_urls() {
local arch distro releasever releasevermajor releaseverminor
distro="$1"
releasever="$2"
arch="$3"
IFS=.
set -- "$2"
unset IFS
releasevermajor="$1"
releaseverminor="$2"
case "$distro" in
"CentOS"*)
case $releasever in
5.*|6.[01])
echo "http://vault.centos.org/${releasever}/os/SRPMS"
echo "http://vault.centos.org/${releasever}/updates/SRPMS";;
[67]*)
echo "http://vault.centos.org/${releasever}/os/Source/SPackages"
echo "http://vault.centos.org/${releasever}/updates/Source/SPackages";;
8*)
echo "http://vault.centos.org/${releasever}/BaseOS/Source/SPackages/";;
esac
;;
"Red Hat Enterprise Linux"*)
case $releasever in
[56].*)
echo "http://ftp.redhat.com/pub/redhat/linux/enterprise/${releasevermajor}Server/en/os/SRPMS"
echo "http://ftp.redhat.com/redhat/rhel/rc/7/Server/source/tree/Packages";;
esac
;;
"Oracle Linux Server")
echo "http://public-yum.oracle.com/repo/OracleLinux/OL${releasevermajor}/${releaseverminor}/base/${arch}/getPackageSource"
echo "http://public-yum.oracle.com/repo/OracleLinux/OL${releasevermajor}/latest/${arch}/getPackageSource"
echo "http://public-yum.oracle.com/repo/OracleLinux/OL${releasevermajor}/UEK/latest/${arch}/getPackageSource"
;;
"Scientific Linux")
case $releasever in
5.*)
echo "http://ftp.scientificlinux.org/linux/scientific/$releasevermajor$releaseverminor/SRPMS/vendor";;
6.*)
echo "http://ftp.scientificlinux.org/linux/scientific/$releasever/SRPMS/vendor";;
esac
;;
*)
echo "Unknown type of distribution: $distro" >&2
return 1
;;
esac
}
# Arguments:
# $1: Linux distribution name
# $2: Linux distribution version (major.minor)
# $3: architecture
function get_rpm_urls() {
local arch distro releasever releasevermajor releaseverminor
distro="$1"
releasever="$2"
arch="$3"
IFS=.
set -- "$2"
unset IFS
releasevermajor="$1"
releaseverminor="$2"
case "$distro" in
"CentOS"*)
case $releasever in
5.*)
echo "http://vault.centos.org/${releasever}/os/${arch}/CentOS http://vault.centos.org/${releasever}/updates/${arch}/RPMS";;
6.[01])
echo "http://vault.centos.org/${releasever}/os/${arch}/Packages"
echo "http://vault.centos.org/${releasever}/updates/${arch}/Packages";;
[67]*)
echo "https://mirrors.edge.kernel.org/centos/${releasever}/updates/${arch}/Packages"
echo "http://vault.centos.org/${releasever}/updates/${arch}/Packages"
echo "http://vault.centos.org/${releasever}/os/${arch}/Packages http://vault.centos.org/${releasever}/updates/${arch}/Packages";;
8*)
echo "https://mirrors.edge.kernel.org/centos/8-stream/BaseOS/${arch}/os/Packages";;
esac
;;
"Red Hat Enterprise Linux"*)
echo "";;
"Oracle Linux Server")
echo "http://public-yum.oracle.com/repo/OracleLinux/OL${releasevermajor}/${releaseverminor}/base/${arch}/getPackageSource"
echo "http://public-yum.oracle.com/repo/OracleLinux/OL${releasevermajor}/latest/${arch}/getPackageSource"
echo "http://public-yum.oracle.com/repo/OracleLinux/OL${releasevermajor}/UEK/latest/${arch}/getPackageSource"
;;
"Scientific Linux")
case $releasever in
5.*)
echo "http://ftp.scientificlinux.org/linux/scientific/$releasevermajor$releaseverminor/SRPMS/vendor";;
6.*)
echo "http://ftp.scientificlinux.org/linux/scientific/$releasever/SRPMS/vendor";;
esac
;;
*)
echo "Unknown distribution type: $distro" >&2
return 1
;;
esac
}

View File

@@ -4,7 +4,7 @@
#
# Script for running those SCST regression tests that can be run automatically.
#
# Copyright (C) 2008-2020 Bart Van Assche <bvanassche@acm.org>
# Copyright (C) 2008-2009 Bart Van Assche <bvanassche@acm.org>
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -199,23 +199,22 @@ function compile_scst_patched {
}
# Generate a kernel patch from the SCST source tree for kernel version $1
# and with generate-kernel-patch options $2. $1 may be a
# ${kver}^${distro}^${release} triplet.
# and with generate-kernel-patch options $2.
function generate_kernel_patch {
local kver
local patchfile="${outputdir}/scst-${1/^*}-kernel.patch"
local patchfile_m="${outputdir}/scst-${1/^*}-kernel-matching-line-numbers.patch"
local patchfile="${outputdir}/scst-$1-kernel.patch"
local patchfile_m="${outputdir}/scst-$1-kernel-matching-line-numbers.patch"
local driver_options=""
kver="$(kernel_version "${1/^*}")"
kver="$(kernel_version "$1")"
driver_options=(-l)
[ "${mpt_scst}" = "true" ] && driver_options+=("-m")
"${scriptsdir}"/generate-kernel-patch "${driver_options[@]}" $2 "$1" > "${patchfile}"
"${scriptsdir}"/generate-kernel-patch "${driver_options[@]}" "$2" "$1" > "${patchfile}"
"${scriptsdir}"/generate-kernel-patch "${driver_options[@]}" -n $2 "$1" > "${patchfile_m}"
"${scriptsdir}"/generate-kernel-patch "${driver_options[@]}" -n "$2" "$1" > "${patchfile_m}"
"${scriptsdir}"/generate-kernel-patch "${driver_options[@]}" -p "${outputdir}/${patchdir}" $2 "$1"
"${scriptsdir}"/generate-kernel-patch "${driver_options[@]}" -p "${outputdir}/${patchdir}" "$2" "$1"
}
# Run checkpatch on the generated kernel patch. Assumes that there is a
@@ -263,16 +262,15 @@ function patch_and_configure_kernel {
kver="$(kernel_version "$1")"
local patchfile="${outputdir}/scst-$1-kernel-matching-line-numbers.patch"
local patchoutput="${outputdir}/patch-command-output-$1.txt"
local configureoutput="${outputdir}/configure-output.txt"
local disable=" \
CONFIG_BINARY_PRINTF \
CONFIG_BLK_DEV_IO_TRACE \
CONFIG_BRANCH_PROFILE_NONE \
CONFIG_CONTEXT_SWITCH_TRACER \
CONFIG_DEBUG_SECTION_MISMATCH \
CONFIG_DEBUG_STRICT_USER_COPY_CHECKS \
CONFIG_DYNAMIC_FTRACE \
CONFIG_EVENT_TRACE_TEST_SYSCALLS \
CONFIG_EVENT_TRACING \
CONFIG_FTRACE \
CONFIG_FTRACE_MCOUNT_RECORD \
CONFIG_FTRACE_NMI_ENTER \
@@ -294,7 +292,6 @@ CONFIG_MMIOTRACE \
CONFIG_NET_DROP_MONITOR \
CONFIG_NOP_TRACER \
CONFIG_RETPOLINE \
CONFIG_RH_KABI_SIZE_ALIGN_CHECKS \
CONFIG_SCHED_TRACER \
CONFIG_SECURITY_SELINUX \
CONFIG_STACK_TRACER \
@@ -308,18 +305,6 @@ CONFIG_X86_X32 \
"
local enable="CONFIG_UNWINDER_FRAME_POINTER"
case "$1" in
2.6.32-*)
echo "Enabling CONFIG_EVENT_TRACING for CentOS 6.x"
enable="$enable \
CONFIG_DEBUG_KERNEL \
CONFIG_FTRACE \
CONFIG_EVENT_TRACING \
CONFIG_DYNAMIC_DEBUG";;
*)
disable="$disable CONFIG_EVENT_TRACING";;
esac
echo "Patching and configuring kernel ..."
if [ "$ipv6" = "false" ]; then
disable="$disable CONFIG_IPV6"
@@ -327,10 +312,7 @@ CONFIG_X86_X32 \
(
cd "${outputdir}/linux-$1" &&
if [ "${multiple_patches}" = "false" ]; then
if ! patch -p1 -f -s <"${patchfile}" >"${patchoutput}"; then
echo "Error: applying ${patchfile} failed."
exit 1
fi
patch -p1 -f -s <"${patchfile}" >"${patchoutput}"
else
rm -f "${patchoutput}"
for p in "${outputdir}/${patchdir}"/*; do
@@ -341,11 +323,7 @@ CONFIG_X86_X32 \
make -s allmodconfig &>"${outputdir}/make-config-output.txt" &&
for c in $disable; do sed -i.tmp "s/^$c=[ym]\$/$c=n/" .config; done &&
for c in $enable; do sed -i.tmp "s/^\(# \)*$c\(=.*\| is not set\)\$/$c=y/" .config; done &&
make -s oldconfig </dev/null &>"${configureoutput}" &&
for c in $enable; do
grep -q "^$c=[ym]" .config ||
echo "Enabling $c failed."
done
make -s oldconfig </dev/null &>/dev/null
)
}
@@ -443,7 +421,7 @@ function run_smatch {
kver="$(kernel_version "$1")"
plevel="$(patchlevel "$1")"
local outputfile="${outputdir}/smatch-$1-output.txt"
local disable="" # "CONFIG_DYNAMIC_DEBUG"
local disable="CONFIG_DYNAMIC_DEBUG"
shift
echo "Running smatch on the patched kernel in $* ..."
@@ -652,7 +630,7 @@ do
run_smatch="true"
ipv6="true"
global_multiple_patches="${multiple_patches}"
while true; do
while [ "${kv%-?}" != "${kv}" ] || [ "${kv%-??}" != "${kv}" ]; do
kv_without_opt="${kv%-?}"
if [ "${kv_without_opt}" = "${kv}" ]; then
kv_without_opt="${kv%-??}"
@@ -667,7 +645,7 @@ do
'-nm') run_smatch="false";;
'-u') generate_kernel_patch_options="-u";;
'-p') multiple_patches="true";;
*) break;;
*) echo "Error: unknown option ${kopt}."; exit 1;;
esac
kv="${kv_without_opt}"
done
@@ -678,7 +656,6 @@ do
(
cd "${outputdir}" &&
download_and_extract_kernel_tree "$k" &&
k="${k/^*}" &&
cd "linux-$k/include/linux" &&
if [ ! -e compiler-gcc6.h ]; then
for f in compiler-gcc5.h compiler-gcc4.h; do
@@ -690,25 +667,15 @@ do
fi
) ||
continue
k="${k/^*}"
if [ "${run_checkpatch}" = "true" ]; then
run_checkpatch "$k"
fi
patch_and_configure_kernel "$k" || continue
patch_and_configure_kernel "$k"
case "$k" in
*^*)
# CentOS.
;;
2.*|3.*)
# Tell the kernel that we are using gcc 4.6 since older kernel
# versions do not suppor recent gcc versions.
# Tell the kernel that we are using gcc 4.6.
KCFLAGS="-U__GNUC__ -U__GNUC_MINOR__ -D__GNUC__=4 -D__GNUC_MINOR__=6"
esac
case "$k" in
3.10.0-*)
# Make the CentOS 7.x build less noisy.
KCFLAGS+=" -Wno-deprecated-declarations";
esac
# See also commit bd664f6b3e37 ("disable new gcc-7.1.1 warnings for now";
# v4.13) and commit 6f303d60534c ("gcc-9: silence 'address-of-packed-member'
# warning"; v5.1).

View File

@@ -72,82 +72,78 @@ function evaluate(stmnt, pattern, arg, op, result) {
"(LINUX_VERSION_CODE < KERNEL_VERSION(4, 7, 0))", stmnt)
gsub("defined\\(USE_PRE_440_WR_STRUCTURE\\)",
"(LINUX_VERSION_CODE < KERNEL_VERSION(4, 4, 0) \\&\\& " \
"RHEL_RELEASE_CODE -0 < 7 * 256 + 5)", stmnt)
"(LINUX_VERSION_CODE < KERNEL_VERSION(4, 4, 0))", stmnt)
gsub("defined\\(IB_CREATE_CQ_HAS_INIT_ATTR\\)",
"(LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0) || " \
"RHEL_RELEASE_CODE -0 >= 7 * 256 + 5)", stmnt)
gsub("defined\\(CREATE_SEND_MAD_HAS_AH_ARG\\)",
"(LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 16))", stmnt)
"RHEL_RELEASE_CODE -0 >= 7 * 256 + 6)", stmnt)
gsub("defined\\(CREATE_SEND_MAD_HAS_BASE_ARG\\)",
"(LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0) || " \
"RHEL_RELEASE_CODE -0 >= 7 * 256 + 5)", stmnt)
"RHEL_RELEASE_CODE -0 >= 7 * 256 + 6)", stmnt)
gsub("defined\\(IB_CM_LISTEN_TAKES_FOURTH_ARG\\)",
"(LINUX_VERSION_CODE < KERNEL_VERSION(4, 3, 0) \\&\\& " \
"RHEL_RELEASE_CODE -0 < 7 * 256 + 5)", stmnt)
"(LINUX_VERSION_CODE < KERNEL_VERSION(4, 3, 0))", stmnt)
gsub("defined\\(IB_CLIENT_REMOVE_TAKES_TWO_ARGS\\)",
"(LINUX_VERSION_CODE >= KERNEL_VERSION(4, 3, 0) || " \
"RHEL_RELEASE_CODE -0 >= 7 * 256 + 5)", stmnt)
"RHEL_RELEASE_CODE -0 >= 7 * 256 + 6)", stmnt)
gsub("defined\\(IB_QUERY_GID_HAS_ATTR_ARG\\)",
"(LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 0) || " \
"RHEL_RELEASE_CODE -0 >= 7 * 256 + 5)", stmnt)
"RHEL_RELEASE_CODE -0 >= 7 * 256 + 6)", stmnt)
gsub("RDMA_CREATE_ID_TAKES_NET_ARG",
"(LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 0) || " \
"RHEL_RELEASE_CODE -0 >= 7 * 256 + 5)", stmnt)
"RHEL_RELEASE_CODE -0 >= 7 * 256 + 6)", stmnt)
gsub("defined\\(HAVE_DEV_ATTR_MAX_RECV_SGE\\)",
"(LINUX_VERSION_CODE >= KERNEL_VERSION(4, 19, 0) || " \
"RHEL_RELEASE_CODE -0 >= 7 * 256 + 7)", stmnt)
"(LINUX_VERSION_CODE >= KERNEL_VERSION(4, 19, 0))", stmnt)
gsub("HAVE_DEV_ATTR_MAX_SEND_SGE",
"(LINUX_VERSION_CODE >= KERNEL_VERSION(4, 19, 0) || " \
"RHEL_RELEASE_CODE -0 >= 7 * 256 + 7)", stmnt)
"RHEL_RELEASE_CODE -0 >= 8 * 256 + 0)", stmnt)
gsub("defined\\(HAVE_DEV_ATTR_MAX_RECV_SGE\\)",
"(LINUX_VERSION_CODE >= KERNEL_VERSION(4, 19, 0) || " \
"RHEL_RELEASE_CODE -0 >= 8 * 256 + 0)", stmnt)
gsub("HAVE_RDMA_DESTROY_AH_WITH_FLAGS",
"(LINUX_VERSION_CODE >= KERNEL_VERSION(4, 21, 0) || " \
"RHEL_RELEASE_CODE -0 >= 8 * 256 + 1)", stmnt)
"(LINUX_VERSION_CODE >= KERNEL_VERSION(4, 21, 0))", stmnt)
gsub("HAVE_RDMA_DESTROY_AH",
"(LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0) || " \
"RHEL_RELEASE_CODE -0 >= 7 * 256 + 5)", stmnt)
"(LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0))", stmnt)
gsub("HAVE_RDMA_QUERY_GID",
"(LINUX_VERSION_CODE >= KERNEL_VERSION(4, 19, 0) || " \
"RHEL_RELEASE_CODE -0 >= 8 * 256 + 1)", stmnt)
"(LINUX_VERSION_CODE >= KERNEL_VERSION(4, 19, 0))", stmnt)
gsub("HAVE_SRP_DATA_DESC_IMM",
"(LINUX_VERSION_CODE >= KERNEL_VERSION(4, 21, 0) || " \
"RHEL_RELEASE_CODE -0 >= 8 * 256 + 1)", stmnt)
"(LINUX_VERSION_CODE >= KERNEL_VERSION(4, 21, 0))", stmnt)
gsub("HAVE_STRUCT_SRP_LOGIN_REQ_RDMA",
"(LINUX_VERSION_CODE >= KERNEL_VERSION(4, 16, 0))", stmnt)
gsub("defined\\(USE_PRE_440_WR_STRUCTURE\\)",
"(LINUX_VERSION_CODE < KERNEL_VERSION(4, 4, 0))", stmnt)
gsub("defined\\(HAVE_IB_EVENT_GID_CHANGE\\)",
"(LINUX_VERSION_CODE >= KERNEL_VERSION(3, 1, 0) || " \
"RHEL_RELEASE_CODE -0 >= 6 * 256 + 10)", stmnt)
gsub("defined\\(HAVE_IB_QUERY_DEVICE\\)",
"(LINUX_VERSION_CODE < KERNEL_VERSION(4, 5, 0) \\&\\& " \
"RHEL_RELEASE_CODE -0 < 7 * 256 + 5)", stmnt)
"(LINUX_VERSION_CODE < KERNEL_VERSION(4, 5, 0))", stmnt)
gsub("defined\\(MAD_HANDLER_TAKES_SEND_BUF\\)",
"(LINUX_VERSION_CODE >= KERNEL_VERSION(4, 5, 0) || " \
"RHEL_RELEASE_CODE -0 >= 7 * 256 + 5)", stmnt)
"RHEL_RELEASE_CODE -0 >= 7 * 256 + 6)", stmnt)
gsub("defined\\(HAVE_IB_SET_CPI_RESP_TIME\\)",
"(LINUX_VERSION_CODE >= KERNEL_VERSION(4, 7, 0) || " \
"RHEL_RELEASE_CODE -0 >= 7 * 256 + 5)", stmnt)
"RHEL_RELEASE_CODE -0 >= 7 * 256 + 6)", stmnt)
gsub("defined\\(IB_PD_HAS_LOCAL_DMA_LKEY\\)",
"(LINUX_VERSION_CODE >= KERNEL_VERSION(4, 9, 0) || " \
"RHEL_RELEASE_CODE -0 >= 7 * 256 + 5)", stmnt)
"RHEL_RELEASE_CODE -0 >= 7 * 256 + 6)", stmnt)
gsub("defined\\(HAVE_IB_DMA_MAP_OPS\\)",
"(LINUX_VERSION_CODE >= KERNEL_VERSION(0, 0, 0))", stmnt)
@@ -279,12 +275,6 @@ function evaluate(stmnt, pattern, arg, op, result) {
sub(pattern, op[1] == 0, stmnt)
}
pattern = "\\([[:blank:]]*(-*[0-9]+)[[:blank:]]*\\)"
while (match(stmnt, pattern, op) != 0)
{
sub(pattern, op[1], stmnt)
}
pattern="(-*[0-9]+)[[:blank:]]*(\\*|/)[[:blank:]]*(-*[0-9]+)"
while (match(stmnt, pattern, op) != 0)
{
@@ -403,7 +393,6 @@ function handle_if(evaluated)
if ($0 ~ "LINUX_VERSION_CODE" \
|| $0 ~ "CONFIG_SCST_PROC" \
|| $0 ~ "CONFIG_SCST_STRICT_SERIALIZING" \
|| $0 ~ "CREATE_SEND_MAD_HAS_AH_ARG" \
|| $0 ~ "CREATE_SEND_MAD_HAS_BASE_ARG" \
|| $0 ~ "ENABLE_NPIV" \
|| $0 ~ "FC_VPORT_CREATE_DEFINED" \
@@ -625,13 +614,10 @@ function dump_lines() {
if (h[0] != "")
printf "@@ -%d,%d +%d,%d @@%s\n",h[1],h[2]-lines_less_deleted,h[3],h[4]-lines_less_added,h[5]
for (i = 0; i < lines; i++) {
modifier = (LINUX_VERSION_CODE < version_code("4.19.0") &&
(RHEL_MAJOR == "" ||
RHEL_MAJOR * 256 + RHEL_MINOR < 7 * 256 + 7 ||
RHEL_MAJOR * 256 + RHEL_MINOR == 8 * 256 + 0) ?
"" : "const");
gsub("BAD_WR_MODIFIER", modifier, line[i])
gsub("CM_HANDLER_EVENT_MODIFIER", modifier, line[i])
gsub("BAD_WR_MODIFIER",
LINUX_VERSION_CODE < version_code("4.19.0") ? "" : "const", line[i])
gsub("CM_HANDLER_EVENT_MODIFIER",
LINUX_VERSION_CODE < version_code("4.19.0") ? "" : "const", line[i])
print line[i]
}
}