From f66b4abbe66fe9e750c663dfed17c06066019964 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Fri, 6 Aug 2021 08:33:54 +0200 Subject: [PATCH] 5.4-stable patches added patches: firmware-arm_scmi-add-delayed-response-status-check.patch firmware-arm_scmi-ensure-drivers-provide-a-probe-function.patch revert-watchdog-itco_wdt-account-for-rebooting-on-second-timeout.patch --- ...mi-add-delayed-response-status-check.patch | 40 +++++++++++++ ...ure-drivers-provide-a-probe-function.patch | 40 +++++++++++++ ...ount-for-rebooting-on-second-timeout.patch | 60 +++++++++++++++++++ queue-5.4/series | 3 + 4 files changed, 143 insertions(+) create mode 100644 queue-5.4/firmware-arm_scmi-add-delayed-response-status-check.patch create mode 100644 queue-5.4/firmware-arm_scmi-ensure-drivers-provide-a-probe-function.patch create mode 100644 queue-5.4/revert-watchdog-itco_wdt-account-for-rebooting-on-second-timeout.patch diff --git a/queue-5.4/firmware-arm_scmi-add-delayed-response-status-check.patch b/queue-5.4/firmware-arm_scmi-add-delayed-response-status-check.patch new file mode 100644 index 00000000000..b60dce4f040 --- /dev/null +++ b/queue-5.4/firmware-arm_scmi-add-delayed-response-status-check.patch @@ -0,0 +1,40 @@ +From f1748b1ee1fa0fd1a074504045b530b62f949188 Mon Sep 17 00:00:00 2001 +From: Cristian Marussi +Date: Tue, 8 Jun 2021 11:30:56 +0100 +Subject: firmware: arm_scmi: Add delayed response status check + +From: Cristian Marussi + +commit f1748b1ee1fa0fd1a074504045b530b62f949188 upstream. + +A successfully received delayed response could anyway report a failure at +the protocol layer in the message status field. + +Add a check also for this error condition. + +Link: https://lore.kernel.org/r/20210608103056.3388-1-cristian.marussi@arm.com +Fixes: 58ecdf03dbb9 ("firmware: arm_scmi: Add support for asynchronous commands and delayed response") +Signed-off-by: Cristian Marussi +Signed-off-by: Sudeep Holla +Signed-off-by: Greg Kroah-Hartman +--- + drivers/firmware/arm_scmi/driver.c | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +--- a/drivers/firmware/arm_scmi/driver.c ++++ b/drivers/firmware/arm_scmi/driver.c +@@ -515,8 +515,12 @@ int scmi_do_xfer_with_response(const str + xfer->async_done = &async_response; + + ret = scmi_do_xfer(handle, xfer); +- if (!ret && !wait_for_completion_timeout(xfer->async_done, timeout)) +- ret = -ETIMEDOUT; ++ if (!ret) { ++ if (!wait_for_completion_timeout(xfer->async_done, timeout)) ++ ret = -ETIMEDOUT; ++ else if (xfer->hdr.status) ++ ret = scmi_to_linux_errno(xfer->hdr.status); ++ } + + xfer->async_done = NULL; + return ret; diff --git a/queue-5.4/firmware-arm_scmi-ensure-drivers-provide-a-probe-function.patch b/queue-5.4/firmware-arm_scmi-ensure-drivers-provide-a-probe-function.patch new file mode 100644 index 00000000000..19c3cdfd13d --- /dev/null +++ b/queue-5.4/firmware-arm_scmi-ensure-drivers-provide-a-probe-function.patch @@ -0,0 +1,40 @@ +From 5e469dac326555d2038d199a6329458cc82a34e5 Mon Sep 17 00:00:00 2001 +From: Sudeep Holla +Date: Thu, 24 Jun 2021 10:50:59 +0100 +Subject: firmware: arm_scmi: Ensure drivers provide a probe function +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Sudeep Holla + +commit 5e469dac326555d2038d199a6329458cc82a34e5 upstream. + +The bus probe callback calls the driver callback without further +checking. Better be safe than sorry and refuse registration of a driver +without a probe function to prevent a NULL pointer exception. + +Link: https://lore.kernel.org/r/20210624095059.4010157-2-sudeep.holla@arm.com +Fixes: 933c504424a2 ("firmware: arm_scmi: add scmi protocol bus to enumerate protocol devices") +Reported-by: Uwe Kleine-König +Tested-by: Cristian Marussi +Reviewed-by: Cristian Marussi +Acked-by: Uwe Kleine-König +Signed-off-by: Sudeep Holla +Signed-off-by: Greg Kroah-Hartman +--- + drivers/firmware/arm_scmi/bus.c | 3 +++ + 1 file changed, 3 insertions(+) + +--- a/drivers/firmware/arm_scmi/bus.c ++++ b/drivers/firmware/arm_scmi/bus.c +@@ -100,6 +100,9 @@ int scmi_driver_register(struct scmi_dri + { + int retval; + ++ if (!driver->probe) ++ return -EINVAL; ++ + driver->driver.bus = &scmi_bus_type; + driver->driver.name = driver->name; + driver->driver.owner = owner; diff --git a/queue-5.4/revert-watchdog-itco_wdt-account-for-rebooting-on-second-timeout.patch b/queue-5.4/revert-watchdog-itco_wdt-account-for-rebooting-on-second-timeout.patch new file mode 100644 index 00000000000..26ff7dc6901 --- /dev/null +++ b/queue-5.4/revert-watchdog-itco_wdt-account-for-rebooting-on-second-timeout.patch @@ -0,0 +1,60 @@ +From b173962fd25a6a3ddf10771bdd6d9697bff2d21f Mon Sep 17 00:00:00 2001 +From: Greg Kroah-Hartman +Date: Fri, 6 Aug 2021 08:28:48 +0200 +Subject: Revert "watchdog: iTCO_wdt: Account for rebooting on second timeout" + +From: Greg Kroah-Hartman + +This reverts commit f58ab0b02ee7b095e0cae4ba706caa86fff5557b which is +commit cb011044e34c293e139570ce5c01aed66a34345c upstream. + +It is reported to cause problems with systems and probably should not +have been backported in the first place :( + +Link: https://lore.kernel.org/r/20210803165108.4154cd52@endymion +Reported-by: Jean Delvare +Cc: Jan Kiszka +Cc: Guenter Roeck +Cc: Guenter Roeck +Cc: Wim Van Sebroeck +Cc: Sasha Levin +Signed-off-by: Greg Kroah-Hartman +--- + drivers/watchdog/iTCO_wdt.c | 12 +++--------- + 1 file changed, 3 insertions(+), 9 deletions(-) + +--- a/drivers/watchdog/iTCO_wdt.c ++++ b/drivers/watchdog/iTCO_wdt.c +@@ -72,8 +72,6 @@ + #define TCOBASE(p) ((p)->tco_res->start) + /* SMI Control and Enable Register */ + #define SMI_EN(p) ((p)->smi_res->start) +-#define TCO_EN (1 << 13) +-#define GBL_SMI_EN (1 << 0) + + #define TCO_RLD(p) (TCOBASE(p) + 0x00) /* TCO Timer Reload/Curr. Value */ + #define TCOv1_TMR(p) (TCOBASE(p) + 0x01) /* TCOv1 Timer Initial Value*/ +@@ -346,12 +344,8 @@ static int iTCO_wdt_set_timeout(struct w + + tmrval = seconds_to_ticks(p, t); + +- /* +- * If TCO SMIs are off, the timer counts down twice before rebooting. +- * Otherwise, the BIOS generally reboots when the SMI triggers. +- */ +- if (p->smi_res && +- (SMI_EN(p) & (TCO_EN | GBL_SMI_EN)) != (TCO_EN | GBL_SMI_EN)) ++ /* For TCO v1 the timer counts down twice before rebooting */ ++ if (p->iTCO_version == 1) + tmrval /= 2; + + /* from the specs: */ +@@ -516,7 +510,7 @@ static int iTCO_wdt_probe(struct platfor + * Disables TCO logic generating an SMI# + */ + val32 = inl(SMI_EN(p)); +- val32 &= ~TCO_EN; /* Turn off SMI clearing watchdog */ ++ val32 &= 0xffffdfff; /* Turn off SMI clearing watchdog */ + outl(val32, SMI_EN(p)); + } + diff --git a/queue-5.4/series b/queue-5.4/series index a70d020be2c..3ed5252d672 100644 --- a/queue-5.4/series +++ b/queue-5.4/series @@ -12,3 +12,6 @@ nvme-fix-nvme_setup_command-metadata-trace-event.patch acpi-fix-null-pointer-dereference.patch revert-spi-mediatek-fix-fifo-rx-mode.patch revert-bluetooth-shutdown-controller-after-workqueues-are-flushed-or-cancelled.patch +firmware-arm_scmi-ensure-drivers-provide-a-probe-function.patch +firmware-arm_scmi-add-delayed-response-status-check.patch +revert-watchdog-itco_wdt-account-for-rebooting-on-second-timeout.patch -- 2.47.3