public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* 4MB flash size as build default.
@ 2018-06-06  3:05 Prerna
  2018-06-06 10:32 ` Laszlo Ersek
  0 siblings, 1 reply; 3+ messages in thread
From: Prerna @ 2018-06-06  3:05 UTC (permalink / raw)
  To: edk2-devel; +Cc: Laszlo Ersek

Hi Laszlo,
I noticed that the following commit was used to make the 4MB flash layout
the default for edk2 builds briefly:

bba8dfbec3bb OvmfPkg: make the 4MB flash size the default

However, it was later reverted :

6e49d01cfb43 Revert "OvmfPkg: make the 4MB flash size the default"

presumably to fix this issue:

0c79471d6a98 OvmfPkg/PlatformPei: handle non-power-of-two spare
                  size for emu variables

Given that the above commit was also merged, why does edk2 still default to
the 2MB flash layout for builds? Do you see any other issues too with the
4MB flash layout ?

Regards,
Prerna


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: 4MB flash size as build default.
  2018-06-06  3:05 4MB flash size as build default Prerna
@ 2018-06-06 10:32 ` Laszlo Ersek
  2018-06-06 10:57   ` Prerna
  0 siblings, 1 reply; 3+ messages in thread
From: Laszlo Ersek @ 2018-06-06 10:32 UTC (permalink / raw)
  To: Prerna; +Cc: edk2-devel

On 06/06/18 05:05, Prerna wrote:
> Hi Laszlo,
> I noticed that the following commit was used to make the 4MB flash layout
> the default for edk2 builds briefly:
> 
> bba8dfbec3bb OvmfPkg: make the 4MB flash size the default
> 
> However, it was later reverted :
> 
> 6e49d01cfb43 Revert "OvmfPkg: make the 4MB flash size the default"
> 
> presumably to fix this issue:
> 
> 0c79471d6a98 OvmfPkg/PlatformPei: handle non-power-of-two spare
>                   size for emu variables

No, that's not exactly the reason. Please see the following sub-thread:

http://mid.mail-archive.com/bdf196e8-df87-84b9-1d6e-bbece5fa65b7@redhat.com

Briefly, the 4MB unified pflash size broke two things:
- the EmuVariableFvbRuntimeDxe driver, which would only affect QEMU
  command lines with -bios,
- the PlatformPei PEIM, which would affect QEMU command lines with
  -pflash too.

(In the linked message, I explained why I hadn't noticed even regression
#2.)

The temporary solution was to (a) restore the default to 2MB -- this
would allow people to continue using both -bios and -pflash, and (b)
kludge around the PlatformPei regression, so that the (manually
selected) 4MB build would be usable for -pflash, at the cost of wasting
a little bit of reserved memory.

In other words, the last two commits that you list have no
inter-dependency between them, instead they mitigated two aspects of the
regression.

In the longer term, I extended EmuVariableFvbRuntimeDxe (and the
interfacing code in PlatformPei) to handle the new 4MB unified size as
well. Please refer to
<https://bugzilla.tianocore.org/show_bug.cgi?id=527>. This completed the
4MB support for "-bios" from the OVMF side; however it turned out that
even Xen needed fixes.

Once Xen too received the necessary patches, we re-enabled the 4MB
default size (commit 1c47fcd465a4 -- basically a re-application of
commit bba8dfbe). Please refer to
<http://mid.mail-archive.com/d327e563-c89a-de28-ae75-db629722c70a@redhat.com>,
and the other message it references.

> Given that the above commit was also merged, why does edk2 still default to
> the 2MB flash layout for builds?

It doesn't; if you build upstream edk2, it defaults to 4MB.

We preserved the 2MB unified size in Gerd's and Fedora's OVMF builds
because the varstore structures are incompatible between the 2MB and the
4MB builds. (Please refer to section "OVMF Flash Layout" in the
"OvmfPkg/README" file.) If you have a preexistent varstore file,
originally created from the OVMF_VARS.fd template of the 2MB build, and
then you boot the same VM with the OVMF_CODE.fd binary of the 4MB build,
your VM will not boot. (It will just hang with a black screen. If you
capture the OVMF debug log, you will get some error messages, but
practically no user ever captures the debug log.)

In other words, we preserved the 2MB unified size in Fedora and in
Gerd's repo for staying compatible with the existent VMs of the users of
those distros / repos.

As one counter-example, we switched from 2MB to 4MB in RHEL-7.4. This
broke compatibility with VMs created against OVMF in RHEL-7.3, but that
was fine: in RHEL-7.3, OVMF was Tech Preview, and breaking compat with
Tech Preview packages is explicitly permitted.

Now obviously users of Fedora and Gerd's repo aren't *officially*
entitled to any kind of stability or support (which is why I don't run
Fedora for my day to day work, by the way), so we could have broken
compat there as well, right? Well, yes, if only we had wanted to field
tens or maybe hundreds of complaints on the vfio-users mailing list and
elsewhere. :) Those users most likely didn't *need* the 4MB build -- see
the motivation for the 4MB build in commit b24fca05751f --, hence
keeping compat for them was more important. Regarding direct consumers
of the upstream edk2 *source* tree, we figured they were technical
enough to deal with the change in the default size.

> Do you see any other issues too with the 4MB flash layout ?

Nope.

If you really want to use the 4MB build in Fedora (although I don't see
why you would), it's technically possible to provide the split 4MB build
in addition to the current files (under different filenames). In that
case, please file an RHBZ for the "edk2" component in Fedora (and CC
Gerd on it so he can adapt his package as well, if he intends to).

Thanks
Laszlo


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: 4MB flash size as build default.
  2018-06-06 10:32 ` Laszlo Ersek
@ 2018-06-06 10:57   ` Prerna
  0 siblings, 0 replies; 3+ messages in thread
From: Prerna @ 2018-06-06 10:57 UTC (permalink / raw)
  To: Laszlo Ersek; +Cc: edk2-devel

On Wed, Jun 6, 2018 at 4:02 PM, Laszlo Ersek <lersek@redhat.com> wrote:

> On 06/06/18 05:05, Prerna wrote:
> > Hi Laszlo,
> > I noticed that the following commit was used to make the 4MB flash layout
> > the default for edk2 builds briefly:
> >
> > bba8dfbec3bb OvmfPkg: make the 4MB flash size the default
> >
> > However, it was later reverted :
> >
> > 6e49d01cfb43 Revert "OvmfPkg: make the 4MB flash size the default"
> >
> > presumably to fix this issue:
> >
> > 0c79471d6a98 OvmfPkg/PlatformPei: handle non-power-of-two spare
> >                   size for emu variables
>
> No, that's not exactly the reason. Please see the following sub-thread:
>
> http://mid.mail-archive.com/bdf196e8-df87-84b9-1d6e-
> bbece5fa65b7@redhat.com
>
> Briefly, the 4MB unified pflash size broke two things:
> - the EmuVariableFvbRuntimeDxe driver, which would only affect QEMU
>   command lines with -bios,
> - the PlatformPei PEIM, which would affect QEMU command lines with
>   -pflash too.
>
> (In the linked message, I explained why I hadn't noticed even regression
> #2.)
>
> The temporary solution was to (a) restore the default to 2MB -- this
> would allow people to continue using both -bios and -pflash, and (b)
> kludge around the PlatformPei regression, so that the (manually
> selected) 4MB build would be usable for -pflash, at the cost of wasting
> a little bit of reserved memory.
>
> In other words, the last two commits that you list have no
> inter-dependency between them, instead they mitigated two aspects of the
> regression.
>
> In the longer term, I extended EmuVariableFvbRuntimeDxe (and the
> interfacing code in PlatformPei) to handle the new 4MB unified size as
> well. Please refer to
> <https://bugzilla.tianocore.org/show_bug.cgi?id=527>. This completed the
> 4MB support for "-bios" from the OVMF side; however it turned out that
> even Xen needed fixes.
>
> Once Xen too received the necessary patches, we re-enabled the 4MB
> default size (commit 1c47fcd465a4 -- basically a re-application of
> commit bba8dfbe). Please refer to
> <http://mid.mail-archive.com/d327e563-c89a-de28-ae75-
> db629722c70a@redhat.com>,
> and the other message it references.
>
> > Given that the above commit was also merged, why does edk2 still default
> to
> > the 2MB flash layout for builds?
>
> It doesn't; if you build upstream edk2, it defaults to 4MB.
>

Thank you. It appears I had missed the new commits that re-enabled the 4MB
size as default.



>
> We preserved the 2MB unified size in Gerd's and Fedora's OVMF builds
> because the varstore structures are incompatible between the 2MB and the
> 4MB builds. (Please refer to section "OVMF Flash Layout" in the
> "OvmfPkg/README" file.) If you have a preexistent varstore file,
> originally created from the OVMF_VARS.fd template of the 2MB build, and
> then you boot the same VM with the OVMF_CODE.fd binary of the 4MB build,
> your VM will not boot. (It will just hang with a black screen. If you
> capture the OVMF debug log, you will get some error messages, but
> practically no user ever captures the debug log.)
>
> In other words, we preserved the 2MB unified size in Fedora and in
> Gerd's repo for staying compatible with the existent VMs of the users of
> those distros / repos.
>

yes, I had played around with these two different layouts.
I found my VMs to hang and not boot in case I mismatched the OVMF_VARS.fd.



>
> As one counter-example, we switched from 2MB to 4MB in RHEL-7.4. This
> broke compatibility with VMs created against OVMF in RHEL-7.3, but that
> was fine: in RHEL-7.3, OVMF was Tech Preview, and breaking compat with
> Tech Preview packages is explicitly permitted.
>
> Now obviously users of Fedora and Gerd's repo aren't *officially*
> entitled to any kind of stability or support (which is why I don't run
> Fedora for my day to day work, by the way), so we could have broken
> compat there as well, right? Well, yes, if only we had wanted to field
> tens or maybe hundreds of complaints on the vfio-users mailing list and
> elsewhere. :) Those users most likely didn't *need* the 4MB build -- see
> the motivation for the 4MB build in commit b24fca05751f --, hence
> keeping compat for them was more important. Regarding direct consumers
> of the upstream edk2 *source* tree, we figured they were technical
> enough to deal with the change in the default size.
>
> > Do you see any other issues too with the 4MB flash layout ?
>
> Nope.
>
> If you really want to use the 4MB build in Fedora (although I don't see
> why you would), it's technically possible to provide the split 4MB build
> in addition to the current files (under different filenames). In that
> case, please file an RHBZ for the "edk2" component in Fedora (and CC
> Gerd on it so he can adapt his package as well, if he intends to).
>
>
I do not necessarily need Fedora. Will be happy to build from upstream.
Thank you for patiently explaining the implications of non-power-of-2 for

EmuVariableFvbRuntimeDxe.

My limited reading had just spotted the breakage for PlatformPei PEIM.
This clearly was a commit I had missed from looking at upstream git log.

Regards,
Prerna


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2018-06-06 10:57 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-06-06  3:05 4MB flash size as build default Prerna
2018-06-06 10:32 ` Laszlo Ersek
2018-06-06 10:57   ` Prerna

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox