Message ID | 20230911040217.253905-16-dlemoal@kernel.org (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | Fix libata suspend/resume handling and code cleanup | expand |
On 9/11/23 06:02, Damien Le Moal wrote: > The scsi disk driver does not resume disks that have been runtime > suspended by the user. To be consistent with this behavior, do the same > for ata ports and skip the PM request in ata_port_pm_resume() if the > port was already runtime suspended. With this change, it is no longer > necessary to for the PM state of the port to ACTIVE as the PM core code > will take care of that when handling runtime resume. > > Signed-off-by: Damien Le Moal <dlemoal@kernel.org> > --- > drivers/ata/libata-core.c | 6 ++---- > 1 file changed, 2 insertions(+), 4 deletions(-) > Reviewed-by: Hannes Reinecke <hare@suse.de> Cheers, Hannes
On Mon, Sep 11, 2023 at 01:02:13PM +0900, Damien Le Moal wrote: > The scsi disk driver does not resume disks that have been runtime > suspended by the user. To be consistent with this behavior, do the same > for ata ports and skip the PM request in ata_port_pm_resume() if the > port was already runtime suspended. With this change, it is no longer > necessary to for the PM state of the port to ACTIVE as the PM core code > will take care of that when handling runtime resume. > > Signed-off-by: Damien Le Moal <dlemoal@kernel.org> Tested-by: Chia-Lin Kao (AceLan) <acelan.kao@canonical.com>
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c index c4a32abc2e29..26e94edf5103 100644 --- a/drivers/ata/libata-core.c +++ b/drivers/ata/libata-core.c @@ -5234,10 +5234,8 @@ static void ata_port_resume(struct ata_port *ap, pm_message_t mesg, static int ata_port_pm_resume(struct device *dev) { - ata_port_resume(to_ata_port(dev), PMSG_RESUME, true); - pm_runtime_disable(dev); - pm_runtime_set_active(dev); - pm_runtime_enable(dev); + if (!pm_runtime_suspended(dev)) + ata_port_resume(to_ata_port(dev), PMSG_RESUME, true); return 0; }
The scsi disk driver does not resume disks that have been runtime suspended by the user. To be consistent with this behavior, do the same for ata ports and skip the PM request in ata_port_pm_resume() if the port was already runtime suspended. With this change, it is no longer necessary to for the PM state of the port to ACTIVE as the PM core code will take care of that when handling runtime resume. Signed-off-by: Damien Le Moal <dlemoal@kernel.org> --- drivers/ata/libata-core.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-)