On 02/26/14 20:16, Jordan Justen wrote:
> Commonly a platform will have a PlatformDxe driver. It has kind of
> surprised me how long OVMF has lived without one. One of the main
> things that lived in the PlatformDxe driver is the setup form data.
> 
> So, rather than PlatformConfigDxe, could you add PlatformDxe?

As long as this idea covers only the renaming / relocating of the
driver, sure. But, in that case, would you mind if I squashed the
relevant patches? Their cumulative diffstat is now

 OvmfPkg/OvmfPkgIa32.dsc                       |   2 +
 OvmfPkg/OvmfPkgIa32.fdf                       |   1 +
 OvmfPkg/OvmfPkgIa32X64.dsc                    |   2 +
 OvmfPkg/OvmfPkgIa32X64.fdf                    |   1 +
 OvmfPkg/OvmfPkgX64.dsc                        |   2 +
 OvmfPkg/OvmfPkgX64.fdf                        |   1 +
 OvmfPkg/PlatformConfigDxe/PlatformConfig.c    | 730 ++++++++++++++++++
 OvmfPkg/PlatformConfigDxe/PlatformConfig.h    |  42 +
 OvmfPkg/PlatformConfigDxe/PlatformConfig.inf  |  59 ++
 OvmfPkg/PlatformConfigDxe/PlatformConfig.uni  | Bin 0 -> 3322 bytes
 .../PlatformConfigDxe/PlatformConfigForms.vfr |  74 ++
 11 files changed, 914 insertions(+)

Basically it stays completely in PlatformConfigDxe.

I'm asking because threading a rename through such a rebase is a big
pain. Too bad I'd lose the nice (I hope!) structure of these patches,
ie. the progress and the thought process. Perhaps if I re-enable rename
detection temporarily in my repo, it could work.

> PlatformDxe can also look at the setup variable and set the resolution
> PCDs. (Rather than PlatformBds.)
> 
> At that point, I think we could (at least for now) fold
> PlatformConfigLib into PlatformDxe.

I think this would not work. Consider the following relative dependencies:

(1) the resolution preference must be read from the NvVar, and the PCDs
must be set for GraphicsConsoleDxe, before the consoles are connected.
Patch v2 04/19 does this at the last minute, just before
PlatformBdsConnectConsole().

  PCDs --> PlatformBdsConnectConsole()

(2) The platfom config driver installs its HII stuff in its entry point
(it must, it is a device-independent driver). The contents of the
drop-down list is part of the HII stuff. In order to populate the
drop-down list with the selectable resolutions, it needs the GOP, so
there's a Depex on the GOP. The GOP interface is installed in the video
driver's binding start function.

  video binding start --> platform config entry point

(3) The platform driver can't do anything, including set any PCDs (your
proposal), before its entry point is invoked.

  platform config entry point --> PCDs

(4) The video driver can be loaded whenever, but its binding start
function will be called no sooner than BDS tries to connect the VGA card.

  PlatformBdsConnectConsole() --> video binding start

If you add these up, they build a circular total dependency:

    PCDs
--> PlatformBdsConnectConsole()
--> video binding start
--> platform config entry point
--> PCDs

In practice the cycle would be entered at PlatformBdsConnectConsole(),
and the PCDs would be loaded/set from the NvVar preference too late, at
each boot.

Thanks,
Laszlo

------------------------------------------------------------------------------
Flow-based real-time traffic analytics software. Cisco certified tool.
Monitor traffic, SLAs, QoS, Medianet, WAAS etc. with NetFlow Analyzer
Customize your own dashboards, set traffic alerts and generate reports.
Network behavioral analysis & security monitoring. All-in-one tool.
http://pubads.g.doubleclick.net/gampad/clk?id=126839071&iu=/4140/ostg.clktrk
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to