From: "Chris Feng (冯保林)" <Chris.Feng@mediatek.com>
To: "rafael@kernel.org" <rafael@kernel.org>
Cc: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"linux-pm@vger.kernel.org" <linux-pm@vger.kernel.org>,
"stable@kernel.org" <stable@kernel.org>,
"pavel@ucw.cz" <pavel@ucw.cz>,
"Hua Yang (杨华)" <Hua.Yang@mediatek.com>,
"Liang Lu (吕亮)" <liang.lu@mediatek.com>,
"Ting Wang (王挺)" <ting.wang@mediatek.com>,
"len.brown@intel.com" <len.brown@intel.com>
Subject: Re: [PATCH] PM: hibernate: Fix the bug where wake events cannot wake system during hibernation
Date: Fri, 27 Oct 2023 05:22:23 +0000 [thread overview]
Message-ID: <2b470a20496a0e181078b0e18774e9348c7ffae8.camel@mediatek.com> (raw)
In-Reply-To: <CAJZ5v0iLCsiPncA1t7ogtpch9gjGjzjtDU6G5E+PHB8ZCHgY0A@mail.gmail.com>
On Wed, 2023-10-25 at 20:28 +0200, Rafael J. Wysocki wrote:
>
> External email : Please do not click links or open attachments until
> you have verified the sender or the content.
>
> On Tue, Oct 24, 2023 at 11:15 AM <chris.feng@mediatek.com> wrote:
> >
> > From: Chris Feng <chris.feng@mediatek.com>
> >
> > Wake-up events that occur in the hibernation process's
> > hibernation_platform_enter() cannot wake up the system. Although
> the
> > current hibernation framework will execute part of the recovery
> process
> > after a wake-up event occurs, it ultimately performs a shutdown
> operation
> > because the system does not check the return value of
> > hibernation_platform_enter(). Moreover, when restoring the device
> before
> > system shutdown, the device's I/O and DMA capabilities will be
> turned on,
> > which can lead to data loss.
> >
> > To solve this problem, check the return value of
> > hibernation_platform_enter(). When it returns a non-zero value,
> execute
> > the hibernation recovery process, discard the previously saved
> image, and
> > ultimately return to the working state.
>
> While I agree with the problem statement, I don't completely agree
> with the patch.
>
> > Signed-off-by: Chris Feng <chris.feng@mediatek.com>
> > ---
> > kernel/power/hibernate.c | 10 ++++++++--
> > 1 file changed, 8 insertions(+), 2 deletions(-)
> >
> > diff --git a/kernel/power/hibernate.c b/kernel/power/hibernate.c
> > index 8d35b9f9aaa3..16d8027a195d 100644
> > --- a/kernel/power/hibernate.c
> > +++ b/kernel/power/hibernate.c
> > @@ -642,9 +642,9 @@ int hibernation_platform_enter(void)
> > */
> > static void power_down(void)
> > {
> > -#ifdef CONFIG_SUSPEND
> > int error;
> >
> > +#ifdef CONFIG_SUSPEND
> > if (hibernation_mode == HIBERNATION_SUSPEND) {
> > error =
> suspend_devices_and_enter(mem_sleep_current);
> > if (error) {
> > @@ -667,7 +667,13 @@ static void power_down(void)
> > kernel_restart(NULL);
> > break;
> > case HIBERNATION_PLATFORM:
> > - hibernation_platform_enter();
> > + error = hibernation_platform_enter();
> > + if (error) {
>
> This error need not be -EAGAIN which means pending wakeup. There are
> other errors that can be returned for which the fallback to shutdown
> is still desirable.
>
Thank you for your comments. I have some questions:
In function hibernation_platform_enter(), if function
dpm_suspend_start/end returns error, it goes to resume devices flow.
After the system restores the devices, the system shuts down. Is this
expected design behivour? If it is, would you help to give the design
reasons in short ? From my point of view, since the deivces are
resumed, why dose the system go to shut down state ? And also, after
the system shuts down , and when the system is waked up by power key,
the devices will be resumed again when restoring the saved system's
image.
> > + swsusp_unmark();
> > + events_check_enabled = false;
> > + pr_err("Hibernation Abort.\n");
> > + return;
> > + }
> > fallthrough;
> > case HIBERNATION_SHUTDOWN:
> > if (kernel_can_power_off())
> > --
> > 2.17.0
> >
next parent reply other threads:[~2023-10-27 5:22 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20231024091447.108072-1-chris.feng@mediatek.com>
[not found] ` <CAJZ5v0iLCsiPncA1t7ogtpch9gjGjzjtDU6G5E+PHB8ZCHgY0A@mail.gmail.com>
2023-10-27 5:22 ` Chris Feng (冯保林) [this message]
2023-11-06 6:06 ` Chris Feng (冯保林)
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=2b470a20496a0e181078b0e18774e9348c7ffae8.camel@mediatek.com \
--to=chris.feng@mediatek.com \
--cc=Hua.Yang@mediatek.com \
--cc=len.brown@intel.com \
--cc=liang.lu@mediatek.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=pavel@ucw.cz \
--cc=rafael@kernel.org \
--cc=stable@kernel.org \
--cc=ting.wang@mediatek.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
all inboxes | Powered by JetHome®