public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Gary Lin" <glin@suse.com>
To: Anthony PERARD <anthony.perard@citrix.com>
Cc: devel@edk2.groups.io, Laszlo Ersek <lersek@redhat.com>,
	Ard Biesheuvel <ardb+tianocore@kernel.org>,
	Jordan Justen <jordan.l.justen@intel.com>,
	Julien Grall <julien@xen.org>, Jim Fehlig <jfehlig@suse.com>
Subject: Re: [RFC PATCH] OvmfPkg/OvmfXen: set PcdAcpiS3Enable at initialization
Date: Tue, 20 Jul 2021 14:52:12 +0800	[thread overview]
Message-ID: <YPZynF/KVuGIQSvn@GaryWorkstation> (raw)
In-Reply-To: <YPWjOar9uG0spHS/@perard>

On Mon, Jul 19, 2021 at 05:07:21PM +0100, Anthony PERARD wrote:
> It would have been nice to have this patch in a patch series with
> "OvmfPkg/OvmfXen: add QemuKernelLoaderFsDxe", mostly to make it simpler
> to understand the problem needed to be fixed.
> 
To be honest, I don't have Xen environment and didn't realize that it's
about direct kernel boot until looking into another bug report. I just
compared InitializeXenPlatform() with InitializePlatform() and my
colleague told me OvmfXen works again after setting PcdAcpiS3Enable.

> On Thu, Jul 08, 2021 at 12:05:49PM +0800, Gary Lin wrote:
> > There are several functions in OvmfPkg/Library using
> > QemuFwCfgS3Enabled() to detect the S3 support status. However, in
> > MdeModulePkg, PcdAcpiS3Enable is used to check S3 support. Since
> > InitializeXenPlatform() didn't set PcdAcpiS3Enable as
> > InitializePlatform() did, this made the inconsistency between
> > drivers/functions.
> > 
> > For example, S3SaveStateDxe checked PcdAcpiS3Enable and skipped
> > S3BootScript because the default value is FALSE. On the other hand,
> > PlatformBootManagerBeforeConsole() from OvmfPkg/Library called
> > QemuFwCfgS3Enabled() and found it returned TRUE, so it invoked
> > SaveS3BootScript(). However, S3SaveStateDxe skipped S3BootScript, so
> > SaveS3BootScript() asserted due to EFI_NOT_FOUND.
> 
> This sounds like OvmfPkg would need to be fixed to use PcdAcpiS3Enable
> instead of QemuFwCfgS3Enabled() in most placed and have a single place
> where QemuFwCfgS3Enabled() is used to set PcdAcpiS3Enable. If you feel
> like trying to fix that, that would be nice, and then we could probably
> set PcdAcpiS3Enable unconditionally on OvmfXen (and maybe hope that S3
> support actually works with Xen).
> 
That's why I marked this patch as RFC since the inconsistency could
exist in OVMF for KVM, not just Xen, so I would like to have feedbacks
from OvmfPkg maintainers. I'll amend the patch set to cover other
drivers/libraries in OvmfPkg.

> In the mean time, this patch is fine but wants better comments. First
> two paragraphs are good, but the rest needs explanation on what we are
> trying to fix/workaround, that is "Direct Kernel Boot" as it is called
> in "man xl.cfg".
> 
Thanks for the suggestion. Will amend the comment in v2.

> > Setting PcdAcpiS3Enable at InitializeXenPlatform() "fixes" the crash
> > reported by my colleague. The other possible direction is to replace
> > QemuFwCfgS3Enabled() with PcdAcpiS3Enable. I'm not sure which one is
> > the right fix.
> > 
> > Signed-off-by: Gary Lin <glin@suse.com>
> > ---
> > diff --git a/OvmfPkg/XenPlatformPei/Platform.c b/OvmfPkg/XenPlatformPei/Platform.c
> > index a811e72ee301..f7edc979486e 100644
> > --- a/OvmfPkg/XenPlatformPei/Platform.c
> > +++ b/OvmfPkg/XenPlatformPei/Platform.c
> > @@ -26,6 +26,8 @@
> >  #include <Library/PciLib.h>
> >  #include <Library/PeimEntryPoint.h>
> >  #include <Library/PeiServicesLib.h>
> > +#include <Library/QemuFwCfgLib.h>
> 
> I don't think QemuFwCfgLib.h is needed, can you remove it?
> 
Sure, will remove it from v2.

> > +#include <Library/QemuFwCfgS3Lib.h>
> >  #include <Library/ResourcePublicationLib.h>
> >  #include <Guid/MemoryTypeInformation.h>
> >  #include <Ppi/MasterBootMode.h>
> > @@ -433,6 +437,12 @@ InitializeXenPlatform (
> >      CpuDeadLoop ();
> >    }
> >  
> > +  if (QemuFwCfgS3Enabled ()) {
> 
> This test needs a comment. QEMU's fwcfg isn't supposed to be available,
> unless one try to use the Direct Kernel Boot functionality.
> 
> > +    DEBUG ((DEBUG_INFO, "S3 support was detected on QEMU\n"));
> > +    Status = PcdSetBoolS (PcdAcpiS3Enable, TRUE);
> > +    ASSERT_EFI_ERROR (Status);
> > +  }
> > +
> >    XenConnect ();
> >  
> >    BootModeInitialization ();
> > diff --git a/OvmfPkg/XenPlatformPei/XenPlatformPei.inf b/OvmfPkg/XenPlatformPei/XenPlatformPei.inf
> > index 597cb6fcd7ff..1e22c0b2e2aa 100644
> > --- a/OvmfPkg/XenPlatformPei/XenPlatformPei.inf
> > +++ b/OvmfPkg/XenPlatformPei/XenPlatformPei.inf
> > @@ -57,6 +57,8 @@ [LibraryClasses]
> >    ResourcePublicationLib
> >    PeiServicesLib
> >    PeimEntryPoint
> > +  QemuFwCfgLib
> 
> Same here, QemuFwCfgLib doesn't seems to be needed or used.
> 
Will remove it from v2.

Thanks,

Gary Lin


  parent reply	other threads:[~2021-07-20  6:52 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-07-08  4:05 [RFC PATCH] OvmfPkg/OvmfXen: set PcdAcpiS3Enable at initialization Gary Lin
2021-07-19  7:34 ` Ard Biesheuvel
2021-07-19 10:11 ` Anthony PERARD
2021-07-19 16:07 ` Anthony PERARD
2021-07-19 16:48   ` Ard Biesheuvel
2021-07-20  6:52   ` Gary Lin [this message]
     [not found]   ` <16936D3065173CA9.5055@groups.io>
2021-07-21  6:56     ` [edk2-devel] " Gary Lin
2021-07-27 10:57       ` Anthony PERARD

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-list 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=YPZynF/KVuGIQSvn@GaryWorkstation \
    --to=devel@edk2.groups.io \
    /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