From: Maximilian Luz <luzmaximilian@gmail.com>
To: Tony Lindgren <tony@atomide.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Jiri Slaby <jirislaby@kernel.org>
Cc: "Andy Shevchenko" <andriy.shevchenko@intel.com>,
"Dhruva Gole" <d-gole@ti.com>,
"Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>,
"John Ogness" <john.ogness@linutronix.de>,
"Johan Hovold" <johan@kernel.org>,
"Sebastian Andrzej Siewior" <bigeasy@linutronix.de>,
"Vignesh Raghavendra" <vigneshr@ti.com>,
linux-omap@vger.kernel.org,
"Andy Shevchenko" <andriy.shevchenko@linux.intel.com>,
linux-kernel@vger.kernel.org, linux-serial@vger.kernel.org
Subject: Re: [PATCH v12 1/1] serial: core: Start managing serial controllers to enable runtime PM
Date: Tue, 3 Oct 2023 13:57:33 +0200 [thread overview]
Message-ID: <62d3678a-a23d-4619-95de-145026629ba8@gmail.com> (raw)
In-Reply-To: <20230525113034.46880-1-tony@atomide.com>
On 5/25/23 13:30, Tony Lindgren wrote:
> We want to enable runtime PM for serial port device drivers in a generic
> way. To do this, we want to have the serial core layer manage the
> registered physical serial controller devices.
>
> To manage serial controllers, let's set up a struct bus and struct device
> for the serial core controller as suggested by Greg and Jiri. The serial
> core controller devices are children of the physical serial port device.
> The serial core controller device is needed to support multiple different
> kind of ports connected to single physical serial port device.
>
> Let's also set up a struct device for the serial core port. The serial
> core port instances are children of the serial core controller device.
>
> With the serial core port device we can now flush pending TX on the
> runtime PM resume as suggested by Johan.
Hi,
Unfortunately, this patch (now commit 84a9582fd203 with v6.5) breaks suspend on
a bunch of Microsoft Surface devices (confirmed via git bisect).
The root cause is that when we enter system suspend with the serial port in
runtime suspend, all transfers will be paused until the serial port is
runtime-resumed, which will only happen after complete() is called, so
basically after we are done resuming the system. In short: This patch
essentially blocks all serial communication in system suspend transitions.
The affected devices have an EC (the Surface Aggregator Module) which needs
some communication when entering system suspend. In particular, we need to tell
it to stop sending us events, turn off the keyboard backlight, and transition
it to a lower power mode. With this patch, all of these operations now time
out, preventing us from entering suspend.
A bad workaround is to disable runtime PM, e.g. via
echo on > /sys/bus/serial-base/devices/dw-apb-uart.4:0/dw-apb-uart.4:0.0/power/control
or the diff attached below, but obviously that's not a great solution and can
be broken quite easily from userspace in the same way (and without users really
actively doing so through tools like TLP).
Any ideas on how this can be fixed without reverting?
See also https://github.com/linux-surface/linux-surface/issues/1258.
Regards,
Max
---
drivers/tty/serial/serial_port.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/tty/serial/serial_port.c b/drivers/tty/serial/serial_port.c
index 862423237007..6ceacea5e790 100644
--- a/drivers/tty/serial/serial_port.c
+++ b/drivers/tty/serial/serial_port.c
@@ -55,6 +55,8 @@ static int serial_port_probe(struct device *dev)
pm_runtime_set_autosuspend_delay(dev, SERIAL_PORT_AUTOSUSPEND_DELAY_MS);
pm_runtime_use_autosuspend(dev);
+ pm_runtime_forbid(dev);
+
return 0;
}
--
2.42.0
next prev parent reply other threads:[~2023-10-03 11:57 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CGME20230601110030eucas1p2eed547c326a51a6110100fb50799d136@eucas1p2.samsung.com>
2023-05-25 11:30 ` [PATCH v12 1/1] serial: core: Start managing serial controllers to enable runtime PM Tony Lindgren
2023-05-27 8:25 ` Andy Shevchenko
2023-05-30 14:43 ` Greg Kroah-Hartman
2023-06-01 10:04 ` Steven Price
2023-06-01 10:44 ` Tony Lindgren
2023-06-01 10:53 ` Steven Price
2023-06-01 10:57 ` Tony Lindgren
2023-06-01 11:00 ` Marek Szyprowski
2023-06-01 11:11 ` Tony Lindgren
2023-06-01 13:20 ` Tony Lindgren
2023-06-01 14:16 ` Marek Szyprowski
2023-06-01 14:20 ` Tony Lindgren
2023-06-02 8:33 ` Chen-Yu Tsai
2023-06-02 9:27 ` Tony Lindgren
2023-06-02 10:13 ` John Ogness
2023-06-03 5:41 ` Tony Lindgren
2023-06-03 6:35 ` Tony Lindgren
2023-06-05 6:15 ` Tony Lindgren
2023-06-05 11:28 ` Andy Shevchenko
2023-06-05 12:25 ` Tony Lindgren
2023-06-05 11:34 ` Chen-Yu Tsai
2023-06-05 12:24 ` Tony Lindgren
2023-06-05 13:01 ` Chen-Yu Tsai
2023-06-05 13:18 ` Tony Lindgren
2023-06-06 9:16 ` Chen-Yu Tsai
2023-06-06 12:20 ` Tony Lindgren
2023-06-07 4:46 ` Chen-Yu Tsai
2023-06-07 7:17 ` AngeloGioacchino Del Regno
2023-06-07 20:20 ` Andy Shevchenko
2023-06-03 21:57 ` Sebastian Reichel
2023-06-04 6:04 ` Tony Lindgren
2023-06-05 3:04 ` Chen-Yu Tsai
2023-10-03 11:57 ` Maximilian Luz [this message]
2023-10-03 12:14 ` Tony Lindgren
2023-10-03 12:21 ` Tony Lindgren
2023-10-03 22:09 ` Maximilian Luz
2023-10-04 6:17 ` Tony Lindgren
2023-10-04 7:14 ` Johan Hovold
2023-10-04 9:03 ` Tony Lindgren
2023-10-04 9:14 ` Johan Hovold
2023-10-04 10:01 ` Tony Lindgren
2023-10-04 18:44 ` Maximilian Luz
2023-10-04 7:39 ` Maximilian Luz
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=62d3678a-a23d-4619-95de-145026629ba8@gmail.com \
--to=luzmaximilian@gmail.com \
--cc=andriy.shevchenko@intel.com \
--cc=andriy.shevchenko@linux.intel.com \
--cc=bigeasy@linutronix.de \
--cc=d-gole@ti.com \
--cc=gregkh@linuxfoundation.org \
--cc=ilpo.jarvinen@linux.intel.com \
--cc=jirislaby@kernel.org \
--cc=johan@kernel.org \
--cc=john.ogness@linutronix.de \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-omap@vger.kernel.org \
--cc=linux-serial@vger.kernel.org \
--cc=tony@atomide.com \
--cc=vigneshr@ti.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox