From: Laszlo Ersek <lersek@redhat.com>
To: "Yao, Jiewen" <jiewen.yao@intel.com>,
"Justen, Jordan L" <jordan.l.justen@intel.com>
Cc: "Fan, Jeff" <jeff.fan@intel.com>,
"Kinney, Michael D" <michael.d.kinney@intel.com>,
edk2-devel-01 <edk2-devel@lists.01.org>
Subject: Re: [PATCH 1/5] OvmfPkg: introduce Q35TsegSizeLib (class header and sole lib instance)
Date: Thu, 22 Jun 2017 18:22:31 +0200 [thread overview]
Message-ID: <da78f96d-41d8-1f40-bfdd-3bc0528e3f60@redhat.com> (raw)
In-Reply-To: <74D8A39837DF1E4DA445A8C0B3885C503A96B991@shsmsx102.ccr.corp.intel.com>
On 06/21/17 02:52, Yao, Jiewen wrote:
> As far as I know, the real platform SmmAccessPeim may depend on
> gEfiPeiMemoryDiscoveredPpiGuid, because the SmramHob is produced in
> MRC wrapper.
Thanks for the info, Jiewen!
- I don't know what "MRC wrapper" is.
I found "QuarkPlatformPkg/Platform/Pei/PlatformInit/MrcWrapper.c",
with the comment "Framework PEIM to initialize memory on a Quark
Memory Controller".
- I don't know what "SmramHob" is.
I see some hits in QuarkPlatformPkg and Vlv2TbltDevicePkg. The type
seems to be "EFI_SMRAM_HOB_DESCRIPTOR_BLOCK", in
"IntelFrameworkPkg/Include/Guid/SmramMemoryReserve.h", with the
comment "GUID specific data structure of HOB for reserving SMRAM
regions".
I think the comment is inaccurate. From the data structure itself, it
looks like the HOB is used to expose the possible SMRAM regions to
"other" modules, and not to reserve regions from SMRAM. Anyway, I
guess the HOB is consumed by modules such as:
- QuarkSocPkg/QuarkNorthCluster/Smm/Dxe/SmmAccessDxe
- QuarkSocPkg/QuarkNorthCluster/Smm/Pei/SmmAccessPei
So apparently, on Quark, the PEIM that initializes physical RAM produces
the SmramHob (which is an Intel Framework concept, apparently), and
SmmAccessPei consumes the SmramHob. In order to serialize these
operations, the two PEIMs reuse / repurpose
gEfiPeiMemoryDiscoveredPpiGuid, as a PEIM dispatch barrier. The
availability of SmramHob is parallel to the availability of
gEfiPeiMemoryDiscoveredPpiGuid.
This doesn't match OVMF for two reasons:
- In OVMF / on QEMU, we don't initialize RAM (we don't have to).
- In OVMF, we have a separate SmmAccessPei implementation, which does
not rely on such a HOB.
Rebasing the SMM platform code in OVMF to SmramHob is out of scope, in
my opinion. The current layout of drivers works fine; we just need a new
bit pattern (11 binary) in the ESMRAMC.TSEG_SZ bitfield, and OVMF should
be able to query QEMU as to what that bit pattern translates to,
size-wise. That's all.
> At same time, I also saw a solution to use library to produce
> SmmAccessPpi. In such case, there is no dependency expression, because
> one module does 2 things: 1) init memory, 2) produce SmmAccessPpi.
I agree that this is a technical possiblity, but for OVMF it is again
out of scope. One reason is separation of concepts. Another reason is
that OVMF can be built without SMM support (that's the default
actually), and for such a build the library approach would require a
Null instance of whatever new library class we would invent. Too much
churn.
Jordan, can we please go ahead with the posted approach? If you strongly
prefer dynamic PCDs (which I *slightly* dislike), I can do that --
hacking a spurious gEfiPeiMemoryDiscoveredPpiGuid dependency into
SmmAccessPei.inf, as a serialization barrier between PCD setting and PCD
consumption --, for the sake of making progress on this series.
Thanks,
Laszlo
next prev parent reply other threads:[~2017-06-22 16:21 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-06-08 17:13 [PATCH 0/5] OvmfPkg: recognize an extended TSEG when QEMU offers it Laszlo Ersek
2017-06-08 17:13 ` [PATCH 1/5] OvmfPkg: introduce Q35TsegSizeLib (class header and sole lib instance) Laszlo Ersek
2017-06-19 17:30 ` Jordan Justen
2017-06-19 19:39 ` Laszlo Ersek
2017-06-26 17:59 ` Jordan Justen
2017-06-26 19:12 ` Laszlo Ersek
2017-06-26 22:36 ` Jordan Justen
2017-06-26 23:04 ` Laszlo Ersek
2017-06-29 19:14 ` Jordan Justen
2017-07-01 20:42 ` Laszlo Ersek
2017-07-02 5:50 ` Jordan Justen
2017-06-21 0:52 ` Yao, Jiewen
2017-06-22 16:22 ` Laszlo Ersek [this message]
2017-06-08 17:13 ` [PATCH 2/5] OvmfPkg/PlatformPei: rebase to Q35TsegSizeLib Laszlo Ersek
2017-06-08 17:13 ` [PATCH 3/5] OvmfPkg/SmmAccess: rebase code unique to SmmAccessPei " Laszlo Ersek
2017-06-08 17:13 ` [PATCH 4/5] OvmfPkg/SmmAccess: rebase shared PEIM/DXE code " Laszlo Ersek
2017-06-08 17:13 ` [PATCH 5/5] OvmfPkg/Q35TsegSizeLib: recognize an extended TSEG when QEMU offers it Laszlo Ersek
2017-06-16 8:15 ` [PATCH 0/5] OvmfPkg: " Laszlo Ersek
2017-06-19 18:09 ` Jordan Justen
2017-06-19 22:39 ` Laszlo Ersek
2017-06-20 22:29 ` Laszlo Ersek
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=da78f96d-41d8-1f40-bfdd-3bc0528e3f60@redhat.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