Linux v4.8.2
This commit is contained in:
parent
492cd8a435
commit
379946bd15
10 changed files with 574 additions and 2 deletions
|
|
@ -76,3 +76,4 @@ firmware-Drop-WARN-from-usermodehelper_read_trylock-.patch
|
|||
|
||||
drm-i915-turn-off-wc-mmaps.patch
|
||||
|
||||
i8042-skip-selftest-asus-laptops.patch
|
||||
|
|
|
|||
373
i8042-skip-selftest-asus-laptops.patch
Normal file
373
i8042-skip-selftest-asus-laptops.patch
Normal file
|
|
@ -0,0 +1,373 @@
|
|||
From 930e19248e9b61da36c967687ca79c4d5f977919 Mon Sep 17 00:00:00 2001
|
||||
From: Marcos Paulo de Souza <marcos.souza.org@gmail.com>
|
||||
Date: Sat, 1 Oct 2016 12:07:35 -0700
|
||||
Subject: Input: i8042 - skip selftest on ASUS laptops
|
||||
|
||||
On suspend/resume cycle, selftest is executed to reset i8042 controller.
|
||||
But when this is done in Asus devices, subsequent calls to detect/init
|
||||
functions to elantech driver fails. Skipping selftest fixes this problem.
|
||||
|
||||
An easier step to reproduce this problem is adding i8042.reset=1 as a
|
||||
kernel parameter. On Asus laptops, it'll make the system to start with the
|
||||
touchpad already stuck, since psmouse_probe forcibly calls the selftest
|
||||
function.
|
||||
|
||||
This patch was inspired by John Hiesey's change[1], but, since this problem
|
||||
affects a lot of models of Asus, let's avoid running selftests on them.
|
||||
|
||||
All models affected by this problem:
|
||||
A455LD
|
||||
K401LB
|
||||
K501LB
|
||||
K501LX
|
||||
R409L
|
||||
V502LX
|
||||
X302LA
|
||||
X450LCP
|
||||
X450LD
|
||||
X455LAB
|
||||
X455LDB
|
||||
X455LF
|
||||
Z450LA
|
||||
|
||||
[1]: https://marc.info/?l=linux-input&m=144312209020616&w=2
|
||||
|
||||
Fixes: "ETPS/2 Elantech Touchpad dies after resume from suspend"
|
||||
(https://bugzilla.kernel.org/show_bug.cgi?id=107971)
|
||||
|
||||
Signed-off-by: Marcos Paulo de Souza <marcos.souza.org@gmail.com>
|
||||
Cc: stable@vger.kernel.org
|
||||
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
|
||||
---
|
||||
Documentation/kernel-parameters.txt | 9 +++-
|
||||
drivers/input/serio/i8042-io.h | 2 +-
|
||||
drivers/input/serio/i8042-ip22io.h | 2 +-
|
||||
drivers/input/serio/i8042-ppcio.h | 2 +-
|
||||
drivers/input/serio/i8042-sparcio.h | 2 +-
|
||||
drivers/input/serio/i8042-unicore32io.h | 2 +-
|
||||
drivers/input/serio/i8042-x86ia64io.h | 96 +++++++++++++++++++++++++++++++--
|
||||
drivers/input/serio/i8042.c | 55 +++++++++++++++----
|
||||
8 files changed, 150 insertions(+), 20 deletions(-)
|
||||
|
||||
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
|
||||
index 0b3de80..3475b32 100644
|
||||
--- a/Documentation/kernel-parameters.txt
|
||||
+++ b/Documentation/kernel-parameters.txt
|
||||
@@ -1409,7 +1409,14 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
|
||||
i8042.nopnp [HW] Don't use ACPIPnP / PnPBIOS to discover KBD/AUX
|
||||
controllers
|
||||
i8042.notimeout [HW] Ignore timeout condition signalled by controller
|
||||
- i8042.reset [HW] Reset the controller during init and cleanup
|
||||
+ i8042.reset [HW] Reset the controller during init, cleanup and
|
||||
+ suspend-to-ram transitions, only during s2r
|
||||
+ transitions, or never reset
|
||||
+ Format: { 1 | Y | y | 0 | N | n }
|
||||
+ 1, Y, y: always reset controller
|
||||
+ 0, N, n: don't ever reset controller
|
||||
+ Default: only on s2r transitions on x86; most other
|
||||
+ architectures force reset to be always executed
|
||||
i8042.unlock [HW] Unlock (ignore) the keylock
|
||||
i8042.kbdreset [HW] Reset device connected to KBD port
|
||||
|
||||
diff --git a/drivers/input/serio/i8042-io.h b/drivers/input/serio/i8042-io.h
|
||||
index a5eed2a..34da81c 100644
|
||||
--- a/drivers/input/serio/i8042-io.h
|
||||
+++ b/drivers/input/serio/i8042-io.h
|
||||
@@ -81,7 +81,7 @@ static inline int i8042_platform_init(void)
|
||||
return -EBUSY;
|
||||
#endif
|
||||
|
||||
- i8042_reset = 1;
|
||||
+ i8042_reset = I8042_RESET_ALWAYS;
|
||||
return 0;
|
||||
}
|
||||
|
||||
diff --git a/drivers/input/serio/i8042-ip22io.h b/drivers/input/serio/i8042-ip22io.h
|
||||
index ee1ad27..08a1c10 100644
|
||||
--- a/drivers/input/serio/i8042-ip22io.h
|
||||
+++ b/drivers/input/serio/i8042-ip22io.h
|
||||
@@ -61,7 +61,7 @@ static inline int i8042_platform_init(void)
|
||||
return -EBUSY;
|
||||
#endif
|
||||
|
||||
- i8042_reset = 1;
|
||||
+ i8042_reset = I8042_RESET_ALWAYS;
|
||||
|
||||
return 0;
|
||||
}
|
||||
diff --git a/drivers/input/serio/i8042-ppcio.h b/drivers/input/serio/i8042-ppcio.h
|
||||
index f708c75..1aabea4 100644
|
||||
--- a/drivers/input/serio/i8042-ppcio.h
|
||||
+++ b/drivers/input/serio/i8042-ppcio.h
|
||||
@@ -44,7 +44,7 @@ static inline void i8042_write_command(int val)
|
||||
|
||||
static inline int i8042_platform_init(void)
|
||||
{
|
||||
- i8042_reset = 1;
|
||||
+ i8042_reset = I8042_RESET_ALWAYS;
|
||||
return 0;
|
||||
}
|
||||
|
||||
diff --git a/drivers/input/serio/i8042-sparcio.h b/drivers/input/serio/i8042-sparcio.h
|
||||
index afcd1c1..6231d63 100644
|
||||
--- a/drivers/input/serio/i8042-sparcio.h
|
||||
+++ b/drivers/input/serio/i8042-sparcio.h
|
||||
@@ -130,7 +130,7 @@ static int __init i8042_platform_init(void)
|
||||
}
|
||||
}
|
||||
|
||||
- i8042_reset = 1;
|
||||
+ i8042_reset = I8042_RESET_ALWAYS;
|
||||
|
||||
return 0;
|
||||
}
|
||||
diff --git a/drivers/input/serio/i8042-unicore32io.h b/drivers/input/serio/i8042-unicore32io.h
|
||||
index 73f5cc1..4557475 100644
|
||||
--- a/drivers/input/serio/i8042-unicore32io.h
|
||||
+++ b/drivers/input/serio/i8042-unicore32io.h
|
||||
@@ -61,7 +61,7 @@ static inline int i8042_platform_init(void)
|
||||
if (!request_mem_region(I8042_REGION_START, I8042_REGION_SIZE, "i8042"))
|
||||
return -EBUSY;
|
||||
|
||||
- i8042_reset = 1;
|
||||
+ i8042_reset = I8042_RESET_ALWAYS;
|
||||
return 0;
|
||||
}
|
||||
|
||||
diff --git a/drivers/input/serio/i8042-x86ia64io.h b/drivers/input/serio/i8042-x86ia64io.h
|
||||
index 68f5f4a..f4bfb4b 100644
|
||||
--- a/drivers/input/serio/i8042-x86ia64io.h
|
||||
+++ b/drivers/input/serio/i8042-x86ia64io.h
|
||||
@@ -510,6 +510,90 @@ static const struct dmi_system_id __initconst i8042_dmi_nomux_table[] = {
|
||||
{ }
|
||||
};
|
||||
|
||||
+/*
|
||||
+ * On some Asus laptops, just running self tests cause problems.
|
||||
+ */
|
||||
+static const struct dmi_system_id i8042_dmi_noselftest_table[] = {
|
||||
+ {
|
||||
+ .matches = {
|
||||
+ DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
|
||||
+ DMI_MATCH(DMI_PRODUCT_NAME, "A455LD"),
|
||||
+ },
|
||||
+ },
|
||||
+ {
|
||||
+ .matches = {
|
||||
+ DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
|
||||
+ DMI_MATCH(DMI_PRODUCT_NAME, "K401LB"),
|
||||
+ },
|
||||
+ },
|
||||
+ {
|
||||
+ .matches = {
|
||||
+ DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
|
||||
+ DMI_MATCH(DMI_PRODUCT_NAME, "K501LB"),
|
||||
+ },
|
||||
+ },
|
||||
+ {
|
||||
+ .matches = {
|
||||
+ DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
|
||||
+ DMI_MATCH(DMI_PRODUCT_NAME, "K501LX"),
|
||||
+ },
|
||||
+ },
|
||||
+ {
|
||||
+ .matches = {
|
||||
+ DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
|
||||
+ DMI_MATCH(DMI_PRODUCT_NAME, "R409L"),
|
||||
+ },
|
||||
+ },
|
||||
+ {
|
||||
+ .matches = {
|
||||
+ DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
|
||||
+ DMI_MATCH(DMI_PRODUCT_NAME, "V502LX"),
|
||||
+ },
|
||||
+ },
|
||||
+ {
|
||||
+ .matches = {
|
||||
+ DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
|
||||
+ DMI_MATCH(DMI_PRODUCT_NAME, "X302LA"),
|
||||
+ },
|
||||
+ },
|
||||
+ {
|
||||
+ .matches = {
|
||||
+ DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
|
||||
+ DMI_MATCH(DMI_PRODUCT_NAME, "X450LCP"),
|
||||
+ },
|
||||
+ },
|
||||
+ {
|
||||
+ .matches = {
|
||||
+ DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
|
||||
+ DMI_MATCH(DMI_PRODUCT_NAME, "X450LD"),
|
||||
+ },
|
||||
+ },
|
||||
+ {
|
||||
+ .matches = {
|
||||
+ DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
|
||||
+ DMI_MATCH(DMI_PRODUCT_NAME, "X455LAB"),
|
||||
+ },
|
||||
+ },
|
||||
+ {
|
||||
+ .matches = {
|
||||
+ DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
|
||||
+ DMI_MATCH(DMI_PRODUCT_NAME, "X455LDB"),
|
||||
+ },
|
||||
+ },
|
||||
+ {
|
||||
+ .matches = {
|
||||
+ DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
|
||||
+ DMI_MATCH(DMI_PRODUCT_NAME, "X455LF"),
|
||||
+ },
|
||||
+ },
|
||||
+ {
|
||||
+ .matches = {
|
||||
+ DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
|
||||
+ DMI_MATCH(DMI_PRODUCT_NAME, "Z450LA"),
|
||||
+ },
|
||||
+ },
|
||||
+ { }
|
||||
+};
|
||||
static const struct dmi_system_id __initconst i8042_dmi_reset_table[] = {
|
||||
{
|
||||
/* MSI Wind U-100 */
|
||||
@@ -1072,12 +1156,18 @@ static int __init i8042_platform_init(void)
|
||||
return retval;
|
||||
|
||||
#if defined(__ia64__)
|
||||
- i8042_reset = true;
|
||||
+ i8042_reset = I8042_RESET_ALWAYS;
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_X86
|
||||
- if (dmi_check_system(i8042_dmi_reset_table))
|
||||
- i8042_reset = true;
|
||||
+ /* Honor module parameter when value is not default */
|
||||
+ if (i8042_reset == I8042_RESET_DEFAULT) {
|
||||
+ if (dmi_check_system(i8042_dmi_reset_table))
|
||||
+ i8042_reset = I8042_RESET_ALWAYS;
|
||||
+
|
||||
+ if (dmi_check_system(i8042_dmi_noselftest_table))
|
||||
+ i8042_reset = I8042_RESET_NEVER;
|
||||
+ }
|
||||
|
||||
if (dmi_check_system(i8042_dmi_noloop_table))
|
||||
i8042_noloop = true;
|
||||
diff --git a/drivers/input/serio/i8042.c b/drivers/input/serio/i8042.c
|
||||
index b4d3408..674a760 100644
|
||||
--- a/drivers/input/serio/i8042.c
|
||||
+++ b/drivers/input/serio/i8042.c
|
||||
@@ -48,9 +48,39 @@ static bool i8042_unlock;
|
||||
module_param_named(unlock, i8042_unlock, bool, 0);
|
||||
MODULE_PARM_DESC(unlock, "Ignore keyboard lock.");
|
||||
|
||||
-static bool i8042_reset;
|
||||
-module_param_named(reset, i8042_reset, bool, 0);
|
||||
-MODULE_PARM_DESC(reset, "Reset controller during init and cleanup.");
|
||||
+enum i8042_controller_reset_mode {
|
||||
+ I8042_RESET_NEVER,
|
||||
+ I8042_RESET_ALWAYS,
|
||||
+ I8042_RESET_ON_S2RAM,
|
||||
+#define I8042_RESET_DEFAULT I8042_RESET_ON_S2RAM
|
||||
+};
|
||||
+static enum i8042_controller_reset_mode i8042_reset = I8042_RESET_DEFAULT;
|
||||
+static int i8042_set_reset(const char *val, const struct kernel_param *kp)
|
||||
+{
|
||||
+ enum i8042_controller_reset_mode *arg = kp->arg;
|
||||
+ int error;
|
||||
+ bool reset;
|
||||
+
|
||||
+ if (val) {
|
||||
+ error = kstrtobool(val, &reset);
|
||||
+ if (error)
|
||||
+ return error;
|
||||
+ } else {
|
||||
+ reset = true;
|
||||
+ }
|
||||
+
|
||||
+ *arg = reset ? I8042_RESET_ALWAYS : I8042_RESET_NEVER;
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static const struct kernel_param_ops param_ops_reset_param = {
|
||||
+ .flags = KERNEL_PARAM_OPS_FL_NOARG,
|
||||
+ .set = i8042_set_reset,
|
||||
+};
|
||||
+#define param_check_reset_param(name, p) \
|
||||
+ __param_check(name, p, enum i8042_controller_reset_mode)
|
||||
+module_param_named(reset, i8042_reset, reset_param, 0);
|
||||
+MODULE_PARM_DESC(reset, "Reset controller on resume, cleanup or both");
|
||||
|
||||
static bool i8042_direct;
|
||||
module_param_named(direct, i8042_direct, bool, 0);
|
||||
@@ -1019,7 +1049,7 @@ static int i8042_controller_init(void)
|
||||
* Reset the controller and reset CRT to the original value set by BIOS.
|
||||
*/
|
||||
|
||||
-static void i8042_controller_reset(bool force_reset)
|
||||
+static void i8042_controller_reset(bool s2r_wants_reset)
|
||||
{
|
||||
i8042_flush();
|
||||
|
||||
@@ -1044,8 +1074,10 @@ static void i8042_controller_reset(bool force_reset)
|
||||
* Reset the controller if requested.
|
||||
*/
|
||||
|
||||
- if (i8042_reset || force_reset)
|
||||
+ if (i8042_reset == I8042_RESET_ALWAYS ||
|
||||
+ (i8042_reset == I8042_RESET_ON_S2RAM && s2r_wants_reset)) {
|
||||
i8042_controller_selftest();
|
||||
+ }
|
||||
|
||||
/*
|
||||
* Restore the original control register setting.
|
||||
@@ -1110,7 +1142,7 @@ static void i8042_dritek_enable(void)
|
||||
* before suspending.
|
||||
*/
|
||||
|
||||
-static int i8042_controller_resume(bool force_reset)
|
||||
+static int i8042_controller_resume(bool s2r_wants_reset)
|
||||
{
|
||||
int error;
|
||||
|
||||
@@ -1118,7 +1150,8 @@ static int i8042_controller_resume(bool force_reset)
|
||||
if (error)
|
||||
return error;
|
||||
|
||||
- if (i8042_reset || force_reset) {
|
||||
+ if (i8042_reset == I8042_RESET_ALWAYS ||
|
||||
+ (i8042_reset == I8042_RESET_ON_S2RAM && s2r_wants_reset)) {
|
||||
error = i8042_controller_selftest();
|
||||
if (error)
|
||||
return error;
|
||||
@@ -1195,7 +1228,7 @@ static int i8042_pm_resume_noirq(struct device *dev)
|
||||
|
||||
static int i8042_pm_resume(struct device *dev)
|
||||
{
|
||||
- bool force_reset;
|
||||
+ bool want_reset;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < I8042_NUM_PORTS; i++) {
|
||||
@@ -1218,9 +1251,9 @@ static int i8042_pm_resume(struct device *dev)
|
||||
* off control to the platform firmware, otherwise we can simply restore
|
||||
* the mode.
|
||||
*/
|
||||
- force_reset = pm_resume_via_firmware();
|
||||
+ want_reset = pm_resume_via_firmware();
|
||||
|
||||
- return i8042_controller_resume(force_reset);
|
||||
+ return i8042_controller_resume(want_reset);
|
||||
}
|
||||
|
||||
static int i8042_pm_thaw(struct device *dev)
|
||||
@@ -1481,7 +1514,7 @@ static int __init i8042_probe(struct platform_device *dev)
|
||||
|
||||
i8042_platform_device = dev;
|
||||
|
||||
- if (i8042_reset) {
|
||||
+ if (i8042_reset == I8042_RESET_ALWAYS) {
|
||||
error = i8042_controller_selftest();
|
||||
if (error)
|
||||
return error;
|
||||
--
|
||||
cgit v0.12
|
||||
|
||||
|
|
@ -54,7 +54,7 @@ Summary: The Linux kernel
|
|||
%if 0%{?released_kernel}
|
||||
|
||||
# Do we have a -stable update to apply?
|
||||
%define stable_update 1
|
||||
%define stable_update 2
|
||||
# Set rpm version accordingly
|
||||
%if 0%{?stable_update}
|
||||
%define stablerev %{stable_update}
|
||||
|
|
@ -598,6 +598,8 @@ Patch502: firmware-Drop-WARN-from-usermodehelper_read_trylock-.patch
|
|||
|
||||
# Patch503: drm-i915-turn-off-wc-mmaps.patch
|
||||
|
||||
Patch504: i8042-skip-selftest-asus-laptops.patch
|
||||
|
||||
Patch508: kexec-uefi-copy-secure_boot-flag-in-boot-params.patch
|
||||
|
||||
#CVE-2016-3134 rhbz 1317383 1317384
|
||||
|
|
@ -2163,6 +2165,10 @@ fi
|
|||
#
|
||||
#
|
||||
%changelog
|
||||
* Mon Oct 17 2016 Justin M. Forbes <jforbes@fedoraproject.org> - 4.8.2-300
|
||||
- Linux v4.8.2
|
||||
- i8042 - skip selftest on ASUS laptops
|
||||
|
||||
* Sat Oct 15 2016 Peter Robinson <pbrobinson@fedoraproject.org>
|
||||
- Build in AXP20X_I2C (should fix rhbz 1352140)
|
||||
|
||||
|
|
|
|||
12
scripts/add-changelog.sh
Executable file
12
scripts/add-changelog.sh
Executable file
|
|
@ -0,0 +1,12 @@
|
|||
#!/bin/sh
|
||||
# Emulate the changelog part of rpmdev-bumpspec without the bumping of the
|
||||
# rev. Because Laura keeps typoing her name and the date.
|
||||
|
||||
CURDATE=`date +"%a %b %d %Y"`
|
||||
PACKAGER=`rpmdev-packager`
|
||||
CHANGELOG="%changelog\n* $CURDATE $PACKAGER\n- $1\n"
|
||||
|
||||
awk -v CHANGE="$CHANGELOG" '/%changelog/ {print CHANGE} \
|
||||
!/%changelog/ { print $0 }' \
|
||||
< kernel.spec > kernel.spec.tmp
|
||||
mv kernel.spec.tmp kernel.spec
|
||||
10
scripts/fixup-bumpspec.sh
Executable file
10
scripts/fixup-bumpspec.sh
Executable file
|
|
@ -0,0 +1,10 @@
|
|||
#!/bin/sh
|
||||
# rpmdev-bumpspec 'helpfully' bumps the release which we don't always want.
|
||||
# This script fixes it up.
|
||||
|
||||
RELEASE=`grep "%global baserelease" kernel.spec | cut -d ' ' -f 3`
|
||||
export RELEASE=$(($RELEASE-1))
|
||||
perl -p -i -e 's|%global baserelease.*|%global baserelease $ENV{'RELEASE'}|' kernel.spec
|
||||
TODAY=`date +"%a %b %d %Y"`
|
||||
awk -v DATE="$TODAY" 'START { marked = 0; } $0 ~ DATE { if (marked == 1) { print $0 } else {out=$1; for(i = 2; i <= NF - 2; i++) { out=out" "$i } print out; marked = 1; } } $0 !~ DATE { print $0; }' < kernel.spec > kernel.spec.tmp
|
||||
mv kernel.spec.tmp kernel.spec
|
||||
8
scripts/kernel-version.sh
Normal file
8
scripts/kernel-version.sh
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
VER=$(grep patch sources | head -n1 | awk '{ print $2 }' | sed s/patch-// | sed s/-git.*// | sed s/.xz//)
|
||||
|
||||
if [ -z "$VER" ] ;
|
||||
then
|
||||
VER=$(grep linux sources | head -1 | awk '{ print $2 }' | sed s/linux-// | sed s/.tar.xz//)
|
||||
fi
|
||||
|
||||
|
||||
36
scripts/rawhide-rc.sh
Executable file
36
scripts/rawhide-rc.sh
Executable file
|
|
@ -0,0 +1,36 @@
|
|||
#!/bin/sh
|
||||
# Generate a commit for a rawhide RC release
|
||||
|
||||
source scripts/kernel-version.sh
|
||||
|
||||
make release
|
||||
# fixup the release because rpmdev-bumpspec *sigh*
|
||||
scripts/fixup-bumpspec.sh
|
||||
fedpkg commit -c
|
||||
|
||||
# Figure out what is our RC
|
||||
RC=`grep "%define rcrev" kernel.spec| cut -d ' ' -f 3`
|
||||
RC=$(($RC+1))
|
||||
BASE=`grep "%define base_sublevel" kernel.spec| cut -d ' ' -f 3`
|
||||
|
||||
# Kill all patches
|
||||
awk '!/patch/ { print $0 }' < sources > sources.tmp
|
||||
mv sources.tmp sources
|
||||
|
||||
# Grab the tarball
|
||||
if [ ! -f patch-4.$BASE-rc$RC.xz ]; then
|
||||
wget https://cdn.kernel.org/pub/linux/kernel/v4.x/testing/patch-4.$BASE-rc$RC.xz
|
||||
if [ ! $? -eq 0 ]; then
|
||||
exit 1
|
||||
fi
|
||||
fedpkg upload patch-4.$BASE-rc$RC.xz
|
||||
fi
|
||||
|
||||
# bump rcrev in the spec and set git snapshot to 0
|
||||
RC=$RC perl -p -i -e 's|%define rcrev.*|%global rcrev $ENV{'RC'}|' kernel.spec
|
||||
|
||||
perl -p -i -e 's|%define gitrev.*|%define gitrev 0|' kernel.spec
|
||||
|
||||
perl -p -i -e 's|%global baserelease.*|%global baserelease 0|' kernel.spec
|
||||
|
||||
rpmdev-bumpspec -c "Linux v4.$BASE-rc$RC" kernel.spec
|
||||
59
scripts/rawhide-snapshot.sh
Executable file
59
scripts/rawhide-snapshot.sh
Executable file
|
|
@ -0,0 +1,59 @@
|
|||
#!/bin/sh
|
||||
# A coffeeproof rawhide script. You should be able to run this before the
|
||||
# coffee has kicked in and generate a good rawhide commit.
|
||||
#
|
||||
# - Updates the local Fedora tree to master and verifies that you are working
|
||||
# off of the correct master
|
||||
# - Updates the upstream tree to the latest master.
|
||||
# - Generates a git snapshot via generate-git-snapshot.sh
|
||||
# - Clears out old git snapshots from the sources
|
||||
# - Uploads the new snapshot
|
||||
|
||||
source scripts/kernel-version.sh
|
||||
|
||||
git fetch origin
|
||||
if [ "$(git rev-parse origin/master)" != "$(git rev-parse HEAD)" ]; then
|
||||
echo "I just did a git fetch and this branch does not match master"
|
||||
echo "Re-check out this branch to work off of the latest master"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -d "$LINUX_GIT" ]; then
|
||||
echo "error: set \$LINUX_GIT to point at an upstream git tree"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
git -C $LINUX_GIT pull
|
||||
if [ ! $? -eq 0 ]; then
|
||||
echo "Git pull failed. Is your tree clean/correct?"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
git -C $LINUX_GIT describe --tags HEAD | grep -q "\-g"
|
||||
if [ ! $? -eq 0 ]; then
|
||||
echo "Trying to snapshot off of a tagged git."
|
||||
echo "I don't think this is what you want"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$(git -C $LINUX_GIT rev-parse origin/master)" == `cat gitrev` ]; then
|
||||
echo "Last snapshot commit matches current master. Nothing to do"
|
||||
echo "\o/"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
GIT=`grep "%define gitrev" kernel.spec | cut -d ' ' -f 3`
|
||||
if [ "$GIT" -eq 0 ]; then
|
||||
make debug
|
||||
./scripts/fixup-bumpspec.sh
|
||||
fedpkg commit -c
|
||||
fi
|
||||
|
||||
./scripts/generate-git-snapshot.sh
|
||||
|
||||
#Nuke the old patch from the source
|
||||
awk '!/git/ { print $0 }' < sources > sources.tmp
|
||||
mv sources.tmp sources
|
||||
|
||||
GIT=`grep "%define gitrev" kernel.spec | cut -d ' ' -f 3`
|
||||
fedpkg upload patch-$VER-git$GIT.xz
|
||||
67
scripts/stable-update.sh
Executable file
67
scripts/stable-update.sh
Executable file
|
|
@ -0,0 +1,67 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# Author: Laura Abbott <labbott@fedoraproject.org>
|
||||
#
|
||||
# Apply a stable patch update to the Fedora tree. This takes care of
|
||||
# - Downloading the patch from kernel.org
|
||||
# - Uploading the source file
|
||||
# - Removing old patch files
|
||||
# - Updating the spec file stable version
|
||||
# - Adding a proper changelog entry
|
||||
#
|
||||
# Based on steps from https://fedoraproject.org/wiki/Kernel/DayToDay#Stable_kernel_update
|
||||
#
|
||||
# Args: Stable version to update (e.g. 4.7.7, 4.8.1)
|
||||
|
||||
if [ $# -lt 1 ]; then
|
||||
echo "Need a version"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
VERSION=`echo $1 | cut -d . -f 1`
|
||||
if [ -z $VERSION ]; then
|
||||
echo "Malformed version $1"
|
||||
exit 1
|
||||
fi
|
||||
PATCHLEVEL=`echo $1 | cut -d . -f 2`
|
||||
if [ -z $VERSION ]; then
|
||||
echo "Malformed version $1"
|
||||
exit 1
|
||||
fi
|
||||
SUBLEVEL=`echo $1 | cut -d . -f 3`
|
||||
if [ -z $VERSION ]; then
|
||||
echo "Malformed version $1"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -f patch-$1.xz ]; then
|
||||
wget https://cdn.kernel.org/pub/linux/kernel/v4.x/patch-$1.xz
|
||||
if [ ! $? -eq 0 ]; then
|
||||
echo "Download fail"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
grep $1 sources &> /dev/null
|
||||
if [ ! $? -eq 0 ]; then
|
||||
fedpkg upload patch-$1.xz
|
||||
|
||||
# Cryptic awk: search for the previous patch level (if one exists) and
|
||||
# remove it from the source file
|
||||
awk -v VER=$VERSION.$PATCHLEVEL.$((SUBLEVEL-1)) '$0 !~ VER { print $0; }' < sources > sources.tmp
|
||||
mv sources.tmp sources
|
||||
fi
|
||||
|
||||
# Update the stable level
|
||||
awk -v STABLE=$SUBLEVEL '/%define stable_update/ \
|
||||
{ print "%define stable_update " STABLE } \
|
||||
!/%define stable_update/ { print $0 }' \
|
||||
< kernel.spec > kernel.spec.tmp
|
||||
mv kernel.spec.tmp kernel.spec
|
||||
|
||||
# Reset the base release for use with rpmdev-bumpspec
|
||||
BASERELEASE=`cat kernel.spec | grep "%global baserelease" | cut -d ' ' -f 3 | head -c 1`00
|
||||
BASERELEASE=$(($BASERELEASE-1))
|
||||
BASERELEASE=$BASERELEASE perl -p -i -e 's|%global baserelease.*|%global baserelease $ENV{'BASERELEASE'}|' kernel.spec
|
||||
|
||||
rpmdev-bumpspec -c "Linux v$1" kernel.spec
|
||||
2
sources
2
sources
|
|
@ -1,3 +1,3 @@
|
|||
c1af0afbd3df35c1ccdc7a5118cd2d07 linux-4.8.tar.xz
|
||||
0dad03f586e835d538d3e0d2cbdb9a28 perf-man-4.8.tar.gz
|
||||
349734be5387f1605074515ad7207627 patch-4.8.1.xz
|
||||
7bbd3c729fa79169f7234ae3ed06b46c patch-4.8.2.xz
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue