Hi Jiewen,

thank you for looking into this. I'm replying below quite at length;
please bear with me. At the end I'm going to propose a new alternative
to the PCD:

On 09/16/17 01:58, Yao, Jiewen wrote:
> Hi Laszlo/Ruiyu/Star
> I went through the whole conversation and have some thought:
> 
> For staging, I quote the description from 
> https://github.com/tianocore/edk2-staging
> 
> I think UDF matches all below criteria. "edk2 required quality criteria" is 
> the key.
> 
> We have lots of features there - such as StandaloneSmm, CustomizedSecureBoot, 
> RiscV, ResetSystem, StructurePcd.
> 
> All those features need more validation.
> We are following the rule and I think UDF feature can follow the same rule.
> 
> If there is quality concern and the quality concern cannot be resolved in a 
> short period of time, the staging tree is a better choice.
> (NOTE: "Fix it immediately" is not an alternative; we can't do that.)

Moving the UDF feature, including the PartitionDxe changes, to
edk2-staging would require the following:


(1) A maintainer that owns and maintains the UDF branch.

- I definitely cannot be this person, first because I have no UDF
knowledge, and second because I have no time for any more maintainer
responsibilities than I currently have. Again, my interest in UDF is
*only* as a user.

- I assume Ray will also have no time for maintaining a UDF feature
branch in edk2-staging.

- If Paulo is willing to become a maintainer for the UDF branch in
edk2-staging, that's good. Assuming he is *allowed* to become such a
maintainer.

(According to the edk2-staging description, periodic rebases to
edk2/master are required, hence Paulo would be required to dedicate time
to maintaining "edk2-staging/udf" on an on-going basis.)


(2) The UDF-related commits would have to be reverted from edk2, and
applied to edk2-staging/udf.

The first part (the reverts) would be bad. The commits that have gone
into UDF support thus far -- namely the build error fixes from everyone,
and there's also a pending style improvement series from Hao Wu -- have
already improved UDF a lot, and would have never happened in the staging
repository.

Furthermore, let me explain how most end-users (upstream users) consume
OVMF:
- edk2 maintainers push patches to edk2/master,
- various people (Ard and others from Linaro, my colleague Gerd Hoffmann
on his own time, probably others)  operate build bots / CI environments
that fetch edk2 master every day, and build RPM, DEB etc. packages for OVMF
- end-users set up YUM or APT repositories on their machines, pointing
to these packages, and periodically update their OVMF packages.

This means we have a significant user base. If we break something in
edk2/master, the build bots report build failures, and the users report
functional failures. This is good for edk2/master -- not just for
OvmfPkg, but for many other modules built into the OVMF binary.

If we move UDF to edk2-staging/udf, then UDF support will never reach
these end-users. The people that operate the CI environments will not
repeatedly merge edk2-staging/udf into edk2/master on their end, just so
they can build UDF support into OVMF. Such merges can even fail, if
rebasing the edk2-staging/udf branch to the current edk2/master branch
requires *manual* conflict resolution, and the edk2-staging/udf
maintainer is busy.

--*--

I understand that you guys absolutely don't want a new FeaturePCD. How
about the following alternative. When the edk2-staging repository was
initially discussed, I mentioned to Mike that Staging or Experimental
directories would also be a possibility, inside edk2/master. So the
below is a variant of that idea:

(a) In the "MdeModulePkg/Universal/Disk/PartitionDxe" directory, create
another directory called "Experimental".

(b) Move the "Udf.c" source file to:

  MdeModulePkg/Universal/Disk/PartitionDxe/Experimental/Udf.c

(c) Create a file called "Stubs.c":

  MdeModulePkg/Universal/Disk/PartitionDxe/Stubs.c

This file would contain an implementation of
PartitionInstallUdfChildHandles() that returned EFI_NOT_FOUND
*unconditionally*, and did nothing else.

(d) In the "PartitionDxe.inf" file, replace "Udf.c" with "Stubs.c",
under [Sources].

(e) Create "PartitionExperimentalDxe.inf" in the same directory where
"PartitionDxe.inf" is:

  MdeModulePkg/Universal/Disk/PartitionDxe/PartitionDxe.inf
  MdeModulePkg/Universal/Disk/PartitionDxe/PartitionExperimentalDxe.inf

The second INF file would be identical to "PartitionDxe.inf", except it
would include "Experimental/Udf.c", rather than "Stubs.c".


The end result is that the PartitionDxe driver is built with just a UDF
stub function that does nothing, and the PartitionExperimentalDxe driver
is built with UDF support. The current regression would be fixed for all
platforms immediately that use

  MdeModulePkg/Universal/Disk/PartitionDxe/PartitionDxe.inf

No new PCD for MdeModulePkg, just a new INF file, and a stub file.

In turn, OvmfPkg, ArmVirtPkg, and Nt32Pkg could accept -D UDF_ENABLE,
and select the proper INF file, based on UDF_ENABLE.

The -D UDF_ENABLE flag would also be very easy to add, for the people
that operate the CI environments / build bots.


If this were acceptable, I'd be glad to send patches for it.

If it's not acceptable, then I think we should simply revert the UDF
patches from edk2, and *not* bother about creating an edk2-staging/udf
branch. I don't believe that CI operators and end-users would care about
edk2-staging/udf, even if Paulo spent the time and rebased that branch
to edk2/master very frequently. (Above, you mentioned the staging
branches StandaloneSmm, CustomizedSecureBoot, RiscV, ResetSystem,
StructurePcd -- and those are branches that *I* don't know about.)

So, can we do "PartitionExperimentalDxe.inf"?

Thanks!
Laszlo



> ========================================================
> This repository is used by EDK II as a staging location for new
> features that are not yet ready for inclusion in EDK II.
> 
> Introduction
> =================
> Need place on tianocore.org where new features that are not ready for product
> integration can be checked in for evaluation by the EDK II community prior to
> adding to the edk2 trunk.  This serves several purposes:
> 
> * Encourage source code to be shared earlier in the development process
> * Allow source code to be shared that does not yet meet all edk2 required 
> quality criteria
> * Allow source code to be shared so the EDK II community can help finish and 
> validate new features
> * Provide a location to hold new features until they are deemed ready for 
> product integration
> * Provide a location to hold new features until there is a natural point in 
> edk2 release cycle to fully validate the new feature.
> 
> 
> 
> From: edk2-devel [mailto:[email protected]] On Behalf Of Yao, 
> Jiewen
> Sent: Saturday, September 16, 2017 7:39 AM
> To: Laszlo Ersek <[email protected]>; Ni, Ruiyu <[email protected]>; Paulo 
> Alcantara <[email protected]>
> Cc: Wu, Hao A <[email protected]>; [email protected]; Zeng, Star 
> <[email protected]>
> Subject: Re: [edk2] Functionality issues in UDF support
> 
> Hi Laszlo and Ruiyu
> I can think 1 possible alternative, for your consideration only.
> 
> 1)       Move the feature to OvmfPkg.
> 
> As such, it won't block us at this moment.
> 
> Once the UDF solution has good quality, we can move it back to MdeModulePkg.
> 
> Thank you
> Yao Jiewen
> 
> From: Laszlo Ersek [mailto:[email protected]]
> Sent: Saturday, September 16, 2017 12:51 AM
> To: Ni, Ruiyu <[email protected]<mailto:[email protected]>>; Paulo 
> Alcantara <[email protected]<mailto:[email protected]>>
> Cc: Yao, Jiewen <[email protected]<mailto:[email protected]>>; Wu, Hao 
> A <[email protected]<mailto:[email protected]>>; 
> [email protected]<mailto:[email protected]>; Zeng, Star 
> <[email protected]<mailto:[email protected]>>
> Subject: Re: [edk2] Functionality issues in UDF support
> 
> On 09/15/17 18:40, Ni, Ruiyu wrote:
>> Laszlo,
>> Please do not add a PCD for this. Too many PCDs are no good to the project.
> 
> I understand that new MdeModulePkg PCDs are not liked, but what do you
> propose instead? If we simply revert the PartitionDxe changes, then
> people that want to experiment with general UDF support under OVMF won't
> be able to do that at all.
> 
> I'm in the process of adding -D UDF_ENABLE to OvmfPkg, ArmVirtPkg, and
> Nt32Pkg, which would control both the FeaturePCD and the inclusion of
> UdfDxe in the build. If you disagree with the FeaturePCD, I can stop
> working on this, but I don't know what the alternative is. "Fix it
> immediately" is not an alternative; we can't do that. If you want to
> revert the change, it's your prerogative, but that will prevent
> everybody from testing gradual UDF improvements. (No 3rd parties build
> OVMF from any staging branches, so if the feature is only available on a
> staging branch, it might as well not exist, for the outside world.)
> 
> Thanks
> Laszlo
> _______________________________________________
> edk2-devel mailing list
> [email protected]<mailto:[email protected]>
> https://lists.01.org/mailman/listinfo/edk2-devel
> 

_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to