From: Ingo Molnar <mingo@kernel.org>
To: "Rafael J. Wysocki" <rafael@kernel.org>
Cc: "Xin Li (Intel)" <xin@zytor.com>,
linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org,
stable@vger.kernel.org, pavel@kernel.org, tglx@linutronix.de,
mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com,
x86@kernel.org, hpa@zytor.com, xi.pardee@intel.com,
todd.e.brandt@intel.com
Subject: Re: [PATCH v1 1/1] x86/fred: Fix system hang during S4 resume with FRED enabled
Date: Mon, 31 Mar 2025 18:19:10 +0200 [thread overview]
Message-ID: <Z-rAfosRsjRfm7Ts@gmail.com> (raw)
In-Reply-To: <CAJZ5v0jfak9K_7b=adf5ew-xDiGHUEPSp5ZpAGt66Okj-ovsGQ@mail.gmail.com>
* Rafael J. Wysocki <rafael@kernel.org> wrote:
> On Wed, Mar 26, 2025 at 7:26 AM Xin Li (Intel) <xin@zytor.com> wrote:
> >
> > During an S4 resume, the system first performs a cold power-on. The
> > kernel image is initially loaded to a random linear address, and the
> > FRED MSRs are initialized. Subsequently, the S4 image is loaded,
> > and the kernel image is relocated to its original address from before
> > the S4 suspend. Due to changes in the kernel text and data mappings,
> > the FRED MSRs must be reinitialized.
>
> To be precise, the above description of the hibernation control flow
> doesn't exactly match the code.
>
> Yes, a new kernel is booted upon a wakeup from S4, but this is not "a
> cold power-on", strictly speaking. This kernel is often referred to
> as the restore kernel and yes, it initializes the FRED MSRs as
> appropriate from its perspective.
>
> Yes, it loads a hibernation image, including the kernel that was
> running before hibernation, often referred to as the image kernel, but
> it does its best to load image pages directly into the page frames
> occupied by them before hibernation unless those page frames are
> currently in use. In that case, the given image pages are loaded into
> currently free page frames, but they may or may not be part of the
> image kernel (they may as well belong to user space processes that
> were running before hibernation). Yes, all of these pages need to be
> moved to their original locations before the last step of restore,
> which is a jump into a "trampoline" page in the image kernel, but this
> is sort of irrelevant to the issue at hand.
>
> At this point, the image kernel has control, but the FRED MSRs still
> contain values written to them by the restore kernel and there is no
> guarantee that those values are the same as the ones written into them
> by the image kernel before hibernation. Thus the image kernel must
> ensure that the values of the FRED MSRs will be the same as they were
> before hibernation, and because they only depend on the location of
> the kernel text and data, they may as well be recomputed from scratch.
That's a rather critical difference... I zapped the commit from
tip:x86/urgent, awaiting -v2 with a better changelog and better
in-code comments.
Thanks,
Ingo
next prev parent reply other threads:[~2025-03-31 16:19 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-26 6:25 [PATCH v1 1/1] x86/fred: Fix system hang during S4 resume with FRED enabled Xin Li (Intel)
2025-03-26 6:30 ` kernel test robot
2025-03-31 12:36 ` [tip: x86/urgent] " tip-bot2 for Xin Li (Intel)
2025-03-31 15:30 ` [PATCH v1 1/1] " Rafael J. Wysocki
2025-03-31 16:19 ` Ingo Molnar [this message]
2025-03-31 20:03 ` H. Peter Anvin
2025-03-31 20:25 ` Rafael J. Wysocki
2025-04-01 8:22 ` Ingo Molnar
2025-04-01 6:34 ` Xin Li
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=Z-rAfosRsjRfm7Ts@gmail.com \
--to=mingo@kernel.org \
--cc=bp@alien8.de \
--cc=dave.hansen@linux.intel.com \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=pavel@kernel.org \
--cc=rafael@kernel.org \
--cc=stable@vger.kernel.org \
--cc=tglx@linutronix.de \
--cc=todd.e.brandt@intel.com \
--cc=x86@kernel.org \
--cc=xi.pardee@intel.com \
--cc=xin@zytor.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 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.