From: W <linuxcdeveloper@gmail.com>
To: Niklas Cassel <cassel@kernel.org>
Cc: Damien Le Moal <dlemoal@kernel.org>,
Linux regressions mailing list <regressions@lists.linux.dev>,
linux-ide@vger.kernel.org
Subject: Re: libahci driver and power switching HDD on newer kernels
Date: Thu, 3 Oct 2024 09:01:19 +0200 [thread overview]
Message-ID: <389d8a20-835e-4541-892a-ea9ffa59d320@gmail.com> (raw)
In-Reply-To: <Zv25MQWh-1yYAcVC@ryzen.lan>
W dniu 2.10.2024 o 11:20 PM, Niklas Cassel pisze:
> On Tue, Sep 24, 2024 at 12:42:10PM +0200, W wrote:
>>>
>>> Given that you had 6.4.12 working OK, it is likely some commit that introduced a
>>> regression. If you can git bisect it, we will have a better idea how to remove
>>> the regression.
>>
>> Please take a look at bugzilla report:
>> https://bugzilla.kernel.org/show_bug.cgi?id=219296 - there are the details.
>>
>> I'm wondering what is the better way for communication - here on mailing
>> list or put the comments in bugzilla ticket?
>> Probably here will be better idea...
>>
>> W
>>
>
> Hello W,
>
> Could you please try the following patch,
> and see if it helps:
>
>
> From dba01b7d68fffc26f3abf3252296082311a767a0 Mon Sep 17 00:00:00 2001
> From: Niklas Cassel <cassel@kernel.org>
> Date: Wed, 2 Oct 2024 21:40:41 +0200
> Subject: [PATCH] ata: libata: do not spin down disk on PM event freeze
>
> Currently, ata_eh_handle_port_suspend() will return early if
> ATA_PFLAG_PM_PENDING is not set, or if the PM event has flag
> PM_EVENT_RESUME set.
>
> This means that the following PM callbacks:
> .suspend = ata_port_pm_suspend,
> .freeze = ata_port_pm_freeze,
> .poweroff = ata_port_pm_poweroff,
> .runtime_suspend = ata_port_runtime_suspend,
> will actually make ata_eh_handle_port_suspend() perform some work.
>
> ata_eh_handle_port_suspend() will spin down the disks (by calling
> ata_dev_power_set_standby()), regardless of the PM event.
>
> Documentation/driver-api/pm/devices.rst, section "Entering Hibernation",
> explicitly mentions that .freeze() does not have to be put the device in
> a low-power state, and actually recommends not doing so. Thus, let's not
> spin down the disk for the .freeze() callback. (The disk will instead be
> spun down during the succeeding .poweroff() callback.)
>
> Fixes: aa3998dbeb3a ("ata: libata-scsi: Disable scsi device manage_system_start_stop")
> Signed-off-by: Niklas Cassel <cassel@kernel.org>
> ---
> drivers/ata/libata-eh.c | 18 ++++++++++++++----
> 1 file changed, 14 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c
> index 3f0144e7dc80..45a0d9af2d54 100644
> --- a/drivers/ata/libata-eh.c
> +++ b/drivers/ata/libata-eh.c
> @@ -4099,10 +4099,20 @@ static void ata_eh_handle_port_suspend(struct ata_port *ap)
>
> WARN_ON(ap->pflags & ATA_PFLAG_SUSPENDED);
>
> - /* Set all devices attached to the port in standby mode */
> - ata_for_each_link(link, ap, HOST_FIRST) {
> - ata_for_each_dev(dev, link, ENABLED)
> - ata_dev_power_set_standby(dev);
> + /*
> + * We will reach this point for all of the PM events:
> + * PM_EVENT_SUSPEND (if runtime pm, PM_EVENT_AUTO will also be set)
> + * PM_EVENT_FREEZE, and PM_EVENT_HIBERNATE.
> + *
> + * We do not want to perform disk spin down for PM_EVENT_FREEZE.
> + * (Spin down will be performed by the succeeding PM_EVENT_HIBERNATE.)
> + */
> + if (!(ap->pm_mesg.event & PM_EVENT_FREEZE)) {
> + /* Set all devices attached to the port in standby mode */
> + ata_for_each_link(link, ap, HOST_FIRST) {
> + ata_for_each_dev(dev, link, ENABLED)
> + ata_dev_power_set_standby(dev);
> + }
> }
>
> /*
Hi Niklas, Damien and others,
Niklas I applied your patch on:
commit 9852d85ec9d492ebef56dc5f229416c925758edc (tag: v6.12-rc1)
and gave it a try.
I have done 2 cycles of hibernate/wake_up and in both cases it worked
fine so the HDD is not powered off and then powered on.
W
prev parent reply other threads:[~2024-10-03 7:01 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-09-15 12:44 libahci driver and power switching HDD on newer kernels W
2024-09-24 5:20 ` Linux regression tracking (Thorsten Leemhuis)
2024-09-24 7:31 ` Damien Le Moal
2024-09-24 10:42 ` W
2024-10-02 21:20 ` Niklas Cassel
2024-10-02 22:47 ` Damien Le Moal
2024-10-07 16:29 ` Niklas Cassel
2024-10-03 7:01 ` W [this message]
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=389d8a20-835e-4541-892a-ea9ffa59d320@gmail.com \
--to=linuxcdeveloper@gmail.com \
--cc=cassel@kernel.org \
--cc=dlemoal@kernel.org \
--cc=linux-ide@vger.kernel.org \
--cc=regressions@lists.linux.dev \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.