فهرست منبع

pkg/debian: Temporarily add serial suspend

Ubuntu mainline repos are currently stuck at v6.5.7. However, our
patches are for v6.5.8+ and have thus dropped the serial suspend fix,
which was added upstream in v6.5.8. So add it to the Debian/Ubuntu
package specific patches for now so that we can still build
Debian/Ubuntu kernel packages.
Maximilian Luz 1 سال پیش
والد
کامیت
498802c0e8
1فایلهای تغییر یافته به همراه59 افزوده شده و 0 حذف شده
  1. 59 0
      pkg/debian/kernel/0001-serial-core-Fix-checks-for-tx-runtime-PM-state.patch

+ 59 - 0
pkg/debian/kernel/0001-serial-core-Fix-checks-for-tx-runtime-PM-state.patch

@@ -0,0 +1,59 @@
+From 8459746f889d72794c164d18423344686267a451 Mon Sep 17 00:00:00 2001
+From: Tony Lindgren <tony@atomide.com>
+Date: Thu, 5 Oct 2023 10:56:42 +0300
+Subject: [PATCH] serial: core: Fix checks for tx runtime PM state
+
+commit 81a61051e0ce5fd7e09225c0d5985da08c7954a7 upstream.
+
+Maximilian reported that surface_serial_hub serdev tx does not work during
+system suspend. During system suspend, runtime PM gets disabled in
+__device_suspend_late(), and tx is unable to wake-up the serial core port
+device that we use to check if tx is safe to start. Johan summarized the
+regression noting that serdev tx no longer always works as earlier when the
+serdev device is runtime PM active.
+
+The serdev device and the serial core controller devices are siblings of
+the serial port hardware device. The runtime PM usage count from serdev
+device does not propagate to the serial core device siblings, it only
+propagates to the parent.
+
+In addition to the tx issue for suspend, testing for the serial core port
+device can cause an unnecessary delay in enabling tx while waiting for the
+serial core port device to wake-up. The serial core port device wake-up is
+only needed to flush pending tx when the serial port hardware device was
+in runtime PM suspended state.
+
+To fix the regression, we need to check the runtime PM state of the parent
+serial port hardware device for tx instead of the serial core port device.
+
+As the serial port device drivers may or may not implement runtime PM, we
+need to also add a check for pm_runtime_enabled().
+
+Reported-by: Maximilian Luz <luzmaximilian@gmail.com>
+Cc: stable <stable@kernel.org>
+Fixes: 84a9582fd203 ("serial: core: Start managing serial controllers to enable runtime PM")
+Signed-off-by: Tony Lindgren <tony@atomide.com>
+Tested-by: Maximilian Luz <luzmaximilian@gmail.com>
+Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
+Link: https://lore.kernel.org/r/20231005075644.25936-1-tony@atomide.com
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/tty/serial/serial_core.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/tty/serial/serial_core.c b/drivers/tty/serial/serial_core.c
+index bf63a045fdc8..83c419ac78bc 100644
+--- a/drivers/tty/serial/serial_core.c
++++ b/drivers/tty/serial/serial_core.c
+@@ -157,7 +157,7 @@ static void __uart_start(struct tty_struct *tty)
+ 	 * enabled, serial_port_runtime_resume() calls start_tx() again
+ 	 * after enabling the device.
+ 	 */
+-	if (pm_runtime_active(&port_dev->dev))
++	if (!pm_runtime_enabled(port->dev) || pm_runtime_active(port->dev))
+ 		port->ops->start_tx(port);
+ 	pm_runtime_mark_last_busy(&port_dev->dev);
+ 	pm_runtime_put_autosuspend(&port_dev->dev);
+-- 
+2.42.0
+