Re: [PATCH] PNP: Do not disable devices on suspend when they cannot be re-enabled on resume

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Nov 24, 2022 at 11:53 AM Hans de Goede <hdegoede@xxxxxxxxxx> wrote:
>
> On an Advantech MICA-071 tablet, with a builtin barcode scanner connected
> to ttyS0, the following message is shown on suspend:
>
> serial 00:02: disabled
>
> And after suspend/resume trying to use the barcode scanner / ttyS0 shows:
>
> serial 00:02: LSR safety check engaged!
>
> Indicating that the UARTs io-ports are no longer reachable.
>
> This is caused by __pnp_bus_suspend() calling pnp_stop_dev() on the "00:02"
> pnp device on suspend (this outputs the disabled message).
>
> The problem is that pnp_can_write() returns false for the "00:02" pnp
> device, so after disabling it (disabling its decoding of IO addresses)
> during suspend, it cannot be re-enabled.
>
> Add a pnp_can_write() check to the suspend path and only disable devices
> which can actually be re-enabled on resume.
>
> This fixes the Advantech MICA-071's ttyS0 no longer working after
> a suspend/resume.
>
> Signed-off-by: Hans de Goede <hdegoede@xxxxxxxxxx>
> ---
>  drivers/pnp/driver.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/pnp/driver.c b/drivers/pnp/driver.c
> index c02e7bf643a6..46c534f6b1c9 100644
> --- a/drivers/pnp/driver.c
> +++ b/drivers/pnp/driver.c
> @@ -182,7 +182,8 @@ static int __pnp_bus_suspend(struct device *dev, pm_message_t state)
>                         return error;
>         }
>
> -       if (pnp_can_disable(pnp_dev)) {
> +       /* can_write is necessary to be able to re-start the device on resume */
> +       if (pnp_can_disable(pnp_dev) && pnp_can_write(pnp_dev)) {
>                 error = pnp_stop_dev(pnp_dev);
>                 if (error)
>                         return error;
> --

Applied as 6.2 material, thanks!



[Index of Archives]     [Linux IBM ACPI]     [Linux Power Management]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux