Re: [PATCH v12 1/1] serial: core: Start managing serial controllers to enable runtime PM

From: Tony Lindgren
Date: Thu Jun 01 2023 - 07:12:01 EST


Hi,

* Marek Szyprowski <m.szyprowski@xxxxxxxxxxx> [230601 11:00]:
> Hi Tony,
>
> On 25.05.2023 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.
> >
> > Suggested-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx>
> > Suggested-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
> > Suggested-by: Jiri Slaby <jirislaby@xxxxxxxxxx>
> > Suggested-by: Johan Hovold <johan@xxxxxxxxxx>
> > Signed-off-by: Tony Lindgren <tony@xxxxxxxxxxx>
>
> This patch landed in today's linux next-20230601 as commit 84a9582fd203
> ("serial: core: Start managing serial controllers to enable runtime
> PM"). Unfortunately it breaks booting some of my test boards. This can
> be easily reproduced with QEMU and ARM64 virt machine. The last message
> I see in the log is:
>
> [    3.084743] Run /sbin/init as init process

OK thanks for the report. I wonder if this issue is specific to ttyAM
serial port devices somehow?

> I've tried a hack posted here by Steven Price, but unfortunately it
> doesn't fix my issue. Reverting $subject on top of next-20230601 fixes
> the boot.

OK

> Here is my qemu test command (nothing really special...):
>
> qemu-system-aarch64 -kernel Image -append "console=ttyAMA0
> no_console_suspend root=/dev/vda rootwait ip=::::target::off" -M virt
> -cpu cortex-a57 -smp 2 -m 1024 -device
> virtio-blk-device,drive=virtio-blk0 -device
> virtio-blk-device,drive=virtio-blk1 -drive
> file=qemu-virt-rootfs.raw,id=virtio-blk1,if=none,format=raw -drive
> file=initrd,id=virtio-blk0,if=none,format=raw -netdev user,id=user
> -device virtio-net-device,netdev=user -display none

OK thanks I'll try to reproduce it.

Regards,

Tony