public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: Marvin H?user <Marvin.Haeuser@outlook.com>
To: "edk2-devel@lists.01.org" <edk2-devel@lists.01.org>
Cc: "star.zeng@intel.com" <star.zeng@intel.com>,
	"eric.dong@intel.com" <eric.dong@intel.com>
Subject: Inquiry regarding early DxeIplPeim loading.
Date: Thu, 12 Jul 2018 23:19:23 +0000	[thread overview]
Message-ID: <VI1PR0801MB1790CBB5596007710220DB2380590@VI1PR0801MB1790.eurprd08.prod.outlook.com> (raw)

Good day developers,

While checking out which edk2 modules request being shadowed, I came across DxeIplPeim being one of them, however I am not sure why it was designed this way.

If the Boot Mode is != S3, the module will register for shadowing and immediately return during the pre-memory phase
https://github.com/tianocore/edk2/blob/master/MdeModulePkg/Core/DxeIplPeim/DxeLoad.c#L92
https://github.com/tianocore/edk2/blob/master/MdeModulePkg/Core/DxeIplPeim/DxeLoad.c#L111

If the Boot Mode is S3, the module will register a Memory Discovered event to install crucial PPIs...
https://github.com/tianocore/edk2/blob/master/MdeModulePkg/Core/DxeIplPeim/DxeLoad.c#L125
... and install the DxeIpl PPI before returning
https://github.com/tianocore/edk2/blob/master/MdeModulePkg/Core/DxeIplPeim/DxeLoad.c#L132

However, by design, the DxeIpl PPI is not located until the very end of PeiCore, meaning the dispatcher ran out of modules to dispatch
https://github.com/tianocore/edk2/blob/master/MdeModulePkg/Core/Pei/PeiMain/PeiMain.c#L467
Hence installing the DxeIpl PPI early in the S3 boot path does not seem to have any effect to me, as both paths are left awaiting memory availability (Shadow / event). The only functional change would be PeiCore failing to locate the DxeIpl PPI in case memory initialization silently fails and code execution continues, which is an insane state in the first place.

Am I missing any scenario where this design is helpful? Is there any disadvantage for adding a Depex on MemoryDiscovered PPI? Running only after memory initialization would shrink the initialization function by removing the shadowing request in non-S3 path and the event registration in the S3 path, as well as merging the PPI installation code as both registrations end up executing the exact same code
https://github.com/tianocore/edk2/blob/master/MdeModulePkg/Core/DxeIplPeim/DxeLoad.c#L118
https://github.com/tianocore/edk2/blob/master/MdeModulePkg/Core/DxeIplPeim/DxeLoad.c#L57

The initialization function would collapse to PPI installations, a shadow or event registration call would be saved and platforms could safely embed DxeIplPeim into a Post Memory FV, such as MinPlatformPkg is using, to have the PEIM loaded directly into memory to gain yet more performance. The only restriction would be to prohibit compression.

Thanks for your time.

Best regards,
Marvin.


             reply	other threads:[~2018-07-12 23:19 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-07-12 23:19 Marvin H?user [this message]
2018-07-13  9:24 ` Inquiry regarding early DxeIplPeim loading Zeng, Star
2018-07-13 13:25   ` Marvin H?user
2018-07-18  9:11     ` Zeng, Star
2018-07-18 21:36     ` Cohen, Eugene
2018-07-19  0:10       ` Marvin H?user
2018-07-19 15:40         ` Cohen, Eugene

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=VI1PR0801MB1790CBB5596007710220DB2380590@VI1PR0801MB1790.eurprd08.prod.outlook.com \
    --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