Update to 4.8.5
Drop patches applied upstream and move changelog text for the bugs under the stable update.
This commit is contained in:
parent
a5f9f74d46
commit
64e2286fbd
|
@ -1,4 +1,12 @@
|
|||
linux (4.8.4-1) UNRELEASED; urgency=medium
|
||||
linux (4.8.5-1) UNRELEASED; urgency=medium
|
||||
|
||||
* New upstream stable update:
|
||||
https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.8.5
|
||||
- [x86] boot/smp: Don't try to poke disabled/non-existent APIC
|
||||
(Closes: #841850)
|
||||
- [x86] Input: i8042 - skip selftest on ASUS laptops
|
||||
- [x86] Input: elantech - add Fujitsu Lifebook E556 to force crc_enabled
|
||||
(Closes: #835160)
|
||||
|
||||
[ Ben Hutchings ]
|
||||
* cpufreq: Re-enable CPU_FREQ_STAT, which can no longer be modular
|
||||
|
@ -6,15 +14,8 @@ linux (4.8.4-1) UNRELEASED; urgency=medium
|
|||
* kconfig: Renumber SYMBOL_NEW, fixing regression of allnoconfig
|
||||
(Closes: #841357)
|
||||
* netfilter: xt_NFLOG: fix unexpected truncated packet (Closes: #841261)
|
||||
* [x86] Input: i8042 - skip selftest on ASUS laptops
|
||||
* [x86] Input: elantech - add Fujitsu Lifebook E556 to force crc_enabled
|
||||
(Closes: #835160)
|
||||
* Set ABI to 1
|
||||
|
||||
[ Salvatore Bonaccorso ]
|
||||
* [x86] boot/smp: Don't try to poke disabled/non-existent APIC
|
||||
(Closes: #841850)
|
||||
|
||||
-- Ben Hutchings <ben@decadent.org.uk> Mon, 24 Oct 2016 02:25:26 +0100
|
||||
|
||||
linux (4.8.4-1~exp1) experimental; urgency=medium
|
||||
|
|
|
@ -1,41 +0,0 @@
|
|||
From: Michael Ellerman <mpe@ellerman.id.au>
|
||||
Date: Fri Sep 9 15:54:37 AEST 2016
|
||||
Subject: powerpc/xmon: Don't use ld on 32-bit
|
||||
Origin: https://lists.ozlabs.org/pipermail/linuxppc-dev/2016-September/148424.html
|
||||
Bug-Debian: https://bugs.debian.org/836741
|
||||
|
||||
In commit 31cdd0c39c75 ("powerpc/xmon: Fix SPR read/write commands and
|
||||
add command to dump SPRs") I added two uses of the "ld" instruction in
|
||||
spr_access.S. "ld" is a 64-bit instruction, so shouldn't be used on
|
||||
32-bit CPUs.
|
||||
|
||||
Replace it with PPC_LL which is a macro that gives us either "ld" or
|
||||
"lwz" depending on whether we're 64 or 32-bit.
|
||||
|
||||
Fixes: 31cdd0c39c75 ("powerpc/xmon: Fix SPR read/write commands and add command to dump SPRs")
|
||||
Cc: stable@vger.kernel.org # v4.7+
|
||||
Reported-by: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
|
||||
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
|
||||
---
|
||||
arch/powerpc/xmon/spr_access.S | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/arch/powerpc/xmon/spr_access.S b/arch/powerpc/xmon/spr_access.S
|
||||
index 84ad74213c83..7d8b0e8ed6d9 100644
|
||||
--- a/arch/powerpc/xmon/spr_access.S
|
||||
+++ b/arch/powerpc/xmon/spr_access.S
|
||||
@@ -2,12 +2,12 @@
|
||||
|
||||
/* unsigned long xmon_mfspr(sprn, default_value) */
|
||||
_GLOBAL(xmon_mfspr)
|
||||
- ld r5, .Lmfspr_table@got(r2)
|
||||
+ PPC_LL r5, .Lmfspr_table@got(r2)
|
||||
b xmon_mxspr
|
||||
|
||||
/* void xmon_mtspr(sprn, new_value) */
|
||||
_GLOBAL(xmon_mtspr)
|
||||
- ld r5, .Lmtspr_table@got(r2)
|
||||
+ PPC_LL r5, .Lmtspr_table@got(r2)
|
||||
b xmon_mxspr
|
||||
|
||||
/*
|
|
@ -1,50 +0,0 @@
|
|||
From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
|
||||
Date: Wed, 5 Oct 2016 22:49:30 -0700
|
||||
Subject: Input: elantech - add Fujitsu Lifebook E556 to force crc_enabled
|
||||
Origin: https://git.kernel.org/linus/62837b3c1a95535d1a287c9c8c6563bbd8d37033
|
||||
Bug-Debian: https://bugs.debian.org/835160
|
||||
|
||||
Another Lifebook machine that needs the same quirk as other similar
|
||||
models to make the driver working.
|
||||
|
||||
Also let's reorder elantech_dmi_force_crc_enabled list so LIfebook enries
|
||||
are in alphabetical order.
|
||||
|
||||
Reported-by: William Linna <william.linna@gmail.com>
|
||||
Tested-by: William Linna <william.linna@gmail.com>
|
||||
Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
|
||||
Cc: stable@vger.kernel.org
|
||||
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
|
||||
---
|
||||
drivers/input/mouse/elantech.c | 11 +++++++++--
|
||||
1 file changed, 9 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/drivers/input/mouse/elantech.c
|
||||
+++ b/drivers/input/mouse/elantech.c
|
||||
@@ -1503,6 +1503,13 @@ static const struct dmi_system_id elante
|
||||
},
|
||||
},
|
||||
{
|
||||
+ /* Fujitsu LIFEBOOK E544 does not work with crc_enabled == 0 */
|
||||
+ .matches = {
|
||||
+ DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"),
|
||||
+ DMI_MATCH(DMI_PRODUCT_NAME, "LIFEBOOK E544"),
|
||||
+ },
|
||||
+ },
|
||||
+ {
|
||||
/* Fujitsu LIFEBOOK E554 does not work with crc_enabled == 0 */
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"),
|
||||
@@ -1510,10 +1517,10 @@ static const struct dmi_system_id elante
|
||||
},
|
||||
},
|
||||
{
|
||||
- /* Fujitsu LIFEBOOK E544 does not work with crc_enabled == 0 */
|
||||
+ /* Fujitsu LIFEBOOK E556 does not work with crc_enabled == 0 */
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"),
|
||||
- DMI_MATCH(DMI_PRODUCT_NAME, "LIFEBOOK E544"),
|
||||
+ DMI_MATCH(DMI_PRODUCT_NAME, "LIFEBOOK E556"),
|
||||
},
|
||||
},
|
||||
{
|
|
@ -1,354 +0,0 @@
|
|||
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
|
||||
Origin: https://git.kernel.org/linus/930e19248e9b61da36c967687ca79c4d5f977919
|
||||
|
||||
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(-)
|
||||
|
||||
--- a/Documentation/kernel-parameters.txt
|
||||
+++ b/Documentation/kernel-parameters.txt
|
||||
@@ -1457,7 +1457,14 @@ bytes respectively. Such letter suffixes
|
||||
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
|
||||
|
||||
--- a/drivers/input/serio/i8042-io.h
|
||||
+++ b/drivers/input/serio/i8042-io.h
|
||||
@@ -81,7 +81,7 @@ static inline int i8042_platform_init(vo
|
||||
return -EBUSY;
|
||||
#endif
|
||||
|
||||
- i8042_reset = 1;
|
||||
+ i8042_reset = I8042_RESET_ALWAYS;
|
||||
return 0;
|
||||
}
|
||||
|
||||
--- a/drivers/input/serio/i8042-ip22io.h
|
||||
+++ b/drivers/input/serio/i8042-ip22io.h
|
||||
@@ -61,7 +61,7 @@ static inline int i8042_platform_init(vo
|
||||
return -EBUSY;
|
||||
#endif
|
||||
|
||||
- i8042_reset = 1;
|
||||
+ i8042_reset = I8042_RESET_ALWAYS;
|
||||
|
||||
return 0;
|
||||
}
|
||||
--- a/drivers/input/serio/i8042-ppcio.h
|
||||
+++ b/drivers/input/serio/i8042-ppcio.h
|
||||
@@ -44,7 +44,7 @@ static inline void i8042_write_command(i
|
||||
|
||||
static inline int i8042_platform_init(void)
|
||||
{
|
||||
- i8042_reset = 1;
|
||||
+ i8042_reset = I8042_RESET_ALWAYS;
|
||||
return 0;
|
||||
}
|
||||
|
||||
--- a/drivers/input/serio/i8042-sparcio.h
|
||||
+++ b/drivers/input/serio/i8042-sparcio.h
|
||||
@@ -130,7 +130,7 @@ static int __init i8042_platform_init(vo
|
||||
}
|
||||
}
|
||||
|
||||
- i8042_reset = 1;
|
||||
+ i8042_reset = I8042_RESET_ALWAYS;
|
||||
|
||||
return 0;
|
||||
}
|
||||
--- a/drivers/input/serio/i8042-unicore32io.h
|
||||
+++ b/drivers/input/serio/i8042-unicore32io.h
|
||||
@@ -61,7 +61,7 @@ static inline int i8042_platform_init(vo
|
||||
if (!request_mem_region(I8042_REGION_START, I8042_REGION_SIZE, "i8042"))
|
||||
return -EBUSY;
|
||||
|
||||
- i8042_reset = 1;
|
||||
+ i8042_reset = I8042_RESET_ALWAYS;
|
||||
return 0;
|
||||
}
|
||||
|
||||
--- a/drivers/input/serio/i8042-x86ia64io.h
|
||||
+++ b/drivers/input/serio/i8042-x86ia64io.h
|
||||
@@ -510,6 +510,90 @@ static const struct dmi_system_id __init
|
||||
{ }
|
||||
};
|
||||
|
||||
+/*
|
||||
+ * 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(vo
|
||||
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;
|
||||
--- 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
|
||||
* 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
|
||||
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
|
||||
|
||||
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
|
||||
* 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)
|
||||
@@ -1482,7 +1515,7 @@ static int __init i8042_probe(struct pla
|
||||
|
||||
i8042_platform_device = dev;
|
||||
|
||||
- if (i8042_reset) {
|
||||
+ if (i8042_reset == I8042_RESET_ALWAYS) {
|
||||
error = i8042_controller_selftest();
|
||||
if (error)
|
||||
return error;
|
|
@ -1,74 +0,0 @@
|
|||
From: =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= <ville.syrjala@linux.intel.com>
|
||||
Date: Sat, 22 Oct 2016 05:18:04 +0300
|
||||
Subject: x86/boot/smp: Don't try to poke disabled/non-existent APIC
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
Origin: https://git.kernel.org/linus/ff8560512b8d4b7ca3ef4fd69166634ac30b2525
|
||||
Bug-Debian: https://bugs.debian.org/841850
|
||||
|
||||
Apparently trying to poke a disabled or non-existent APIC
|
||||
leads to a box that doesn't even boot. Let's not do that.
|
||||
|
||||
No real clue if this is the right fix, but at least my
|
||||
P3 machine boots again.
|
||||
|
||||
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
|
||||
Cc: Andy Lutomirski <luto@kernel.org>
|
||||
Cc: Borislav Petkov <bp@alien8.de>
|
||||
Cc: Borislav Petkov <bp@suse.de>
|
||||
Cc: Brian Gerst <brgerst@gmail.com>
|
||||
Cc: Denys Vlasenko <dvlasenk@redhat.com>
|
||||
Cc: Eric Biederman <ebiederm@xmission.com>
|
||||
Cc: H. Peter Anvin <hpa@zytor.com>
|
||||
Cc: Jiri Olsa <jolsa@redhat.com>
|
||||
Cc: Josh Poimboeuf <jpoimboe@redhat.com>
|
||||
Cc: Juergen Gross <jgross@suse.com>
|
||||
Cc: Len Brown <len.brown@intel.com>
|
||||
Cc: Linus Torvalds <torvalds@linux-foundation.org>
|
||||
Cc: Peter Zijlstra <peterz@infradead.org>
|
||||
Cc: Prarit Bhargava <prarit@redhat.com>
|
||||
Cc: Thomas Gleixner <tglx@linutronix.de>
|
||||
Cc: Yinghai Lu <yinghai@kernel.org>
|
||||
Cc: dyoung@redhat.com
|
||||
Cc: kexec@lists.infradead.org
|
||||
Cc: stable@vger.kernel.org
|
||||
Fixes: 2a51fe083eba ("arch/x86: Handle non enumerated CPU after physical hotplug")
|
||||
Link: http://lkml.kernel.org/r/1477102684-5092-1-git-send-email-ville.syrjala@linux.intel.com
|
||||
Signed-off-by: Ingo Molnar <mingo@kernel.org>
|
||||
---
|
||||
arch/x86/kernel/smpboot.c | 16 +++++++++-------
|
||||
1 file changed, 9 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c
|
||||
index 951f093..42f5eb7 100644
|
||||
--- a/arch/x86/kernel/smpboot.c
|
||||
+++ b/arch/x86/kernel/smpboot.c
|
||||
@@ -1409,15 +1409,17 @@ __init void prefill_possible_map(void)
|
||||
|
||||
/* No boot processor was found in mptable or ACPI MADT */
|
||||
if (!num_processors) {
|
||||
- int apicid = boot_cpu_physical_apicid;
|
||||
- int cpu = hard_smp_processor_id();
|
||||
+ if (boot_cpu_has(X86_FEATURE_APIC)) {
|
||||
+ int apicid = boot_cpu_physical_apicid;
|
||||
+ int cpu = hard_smp_processor_id();
|
||||
|
||||
- pr_warn("Boot CPU (id %d) not listed by BIOS\n", cpu);
|
||||
+ pr_warn("Boot CPU (id %d) not listed by BIOS\n", cpu);
|
||||
|
||||
- /* Make sure boot cpu is enumerated */
|
||||
- if (apic->cpu_present_to_apicid(0) == BAD_APICID &&
|
||||
- apic->apic_id_valid(apicid))
|
||||
- generic_processor_info(apicid, boot_cpu_apic_version);
|
||||
+ /* Make sure boot cpu is enumerated */
|
||||
+ if (apic->cpu_present_to_apicid(0) == BAD_APICID &&
|
||||
+ apic->apic_id_valid(apicid))
|
||||
+ generic_processor_info(apicid, boot_cpu_apic_version);
|
||||
+ }
|
||||
|
||||
if (!num_processors)
|
||||
num_processors = 1;
|
||||
--
|
||||
2.10.1
|
||||
|
|
@ -46,11 +46,7 @@ bugfix/x86/viafb-autoload-on-olpc-xo1.5-only.patch
|
|||
debian/fanotify-taint-on-use-of-fanotify_access_permissions.patch
|
||||
|
||||
# Arch bug fixes
|
||||
bugfix/powerpc/powerpc-xmon-don-t-use-ld-on-32-bit.patch
|
||||
bugfix/arm64/arm64-mm-limit-task_size_64-for-compatibility.patch
|
||||
bugfix/x86/x86-boot-smp-Don-t-try-to-poke-disabled-non-existent.patch
|
||||
bugfix/x86/input-i8042-skip-selftest-on-asus-laptops.patch
|
||||
bugfix/x86/input-elantech-add-fujitsu-lifebook-e556-to-force-cr.patch
|
||||
|
||||
# Arch features
|
||||
features/mips/MIPS-increase-MAX-PHYSMEM-BITS-on-Loongson-3-only.patch
|
||||
|
|
Loading…
Reference in New Issue