On 26 January 2016 at 14:19, Laszlo Ersek <[email protected]> wrote: > On 01/26/16 10:40, Leif Lindholm wrote: >> On Tue, Jan 26, 2016 at 09:12:39AM +0000, Ryan Harkin wrote: >>>> However there seems to be >>>> some interference from "ArmPlatformPkg/Library/PlatformIntelBdsLib" that >>>> is supposed to connect PcdDefaultConInPaths and PcdDefaultConOutPaths. >>>> In order to experiment with F9, Roy massaged the last node of the >>>> terminal device path (for controlling the parsing of the escape >>>> sequences). But, some of those cases proved untestable. >>>> >>>> Unfortunately, I can't really help with >>>> "ArmPlatformPkg/Library/PlatformIntelBdsLib". ArmVirtPkg used that >>>> library instance as well originally, but I practically rewrote it >>>> separately for ArmVirtPkg, in SVN r16923 and r16924. Since then, the two >>>> instances have lived separate lives. >>> >>> Is this wise? It looks like BDS history repeating itself :-/ >> >> Well, medium-term, I'd (optimally) like to see ArmVirtPkg split and go >> into OvmfPkg one end and ArmPkg the other. >> >> But when Laszlo started out with ArmVirtPkg (before it indeed _was_ >> ArmVirtPkg), he felt the need to make substantial changes to >> PlatformIntelBdsLib, and opted to do it separately. >> We should probably take some time to look into what different needs we >> may actually have on physical rather than virtual platforms, and how >> we can go back to sharing the majority of the code. > > ** The main goals with the divergence visible in console setup were: > > - cut any ties with the ARM BDS > > (because, ArmPlatformPkg/Library/PlatformIntelBdsLib, despite being > an instance of PlatformBdsLib, to be plugged into the Intel BDS > driver, still uses ARM BDS related PCDs) > > - make console detection dynamic > > (think USB keyboards, and VGA cards at non-fixed PCI addresses) > > IIRC, I had also experienced issues with > "ArmPlatformPkg/Library/PlatformIntelBdsLib" whenever a virtual machine > would start up with a brand new (= empty) variable store. For a physical > host this practically never happens, for a virtual machine, it can > frequently happen (you lose the varstore file or decide to delete & > recreate it from scratch). I vaguely recall that in such cases the > serial console wouldn't work at the first startup. (By now I'm fuzzy on > this, sorry.) > > Another example for the obscure console problems can be seen in SVN > r16912 (that patch predates the rewrite). > > The mailing list thread can be found at > > http://thread.gmane.org/gmane.comp.bios.tianocore.devel/12954 > > I do believe my "going separate ways" was justified. At that time > ArmPlatformPkg had no PCI support at all, but ArmVirtualizationPkg did. > Both the VGA and USB controllers (all types of them), emulated by QEMU, > were PCI-based. So dynamic console detection made no sense for FVP, > Foundation, let alone the physical ARM machines, that ArmPlatformPkg > targeted at the time. > > ... The device path of the serial console would not become dynamic; it > remained build-time static. I modified how it was represented though. > First, the ARM-related textual PCDs with the device path(s) in them were > an ARM BDS vestige. (See the first goal above.) Second, they are brittle > to configure for the end user; do we really want to construct > VenMsg(guid)-like strings manually? Typos are the norm, not the > exception. Third, parsing them into binary form in the code is a chore. > Because, do you do if there is indeed a typo and parsing fails? > > I stand by my idea (of patch #3 in the above-linked series) to encode > the device path of the serial console with a fixed binary structure in > the code. > > Later we would customize this for TTYTERM with SVN r17898. That would > still not require the user to edit device paths, just to pass a build > option. > > Finally, the rewrite gave the virt PlatformBdsLib a much-needed > structural cleanup (in my opinion anyway). It is now as minimal as > possible, and every line in there comes with its own justification. > Which is not something I thought of the pre-rewrite code. > > > ** Further features that only make sense for virtual machines (not an > exhaustive list, just what I can think of now immediately): > > - direct kernel boot from QEMU's fw_cfg interface > (see TryRunningQemuKernel() / "QemuKernel.c" / SVN r16578) > > - controlling UEFI boot order from the QEMU command line > (see SVN r16576, and the patches leading up to it) > > ... In fact, these last two features were implemented in one series, > chronologically *first*, and ultimately they are *the* reason for > splitting away from ArmPlatformPkg: > > http://thread.gmane.org/gmane.comp.bios.tianocore.devel/11743/focus=11746 > > > ** Note that Ard and myself have not neglected keeping ArmPlatformPkg's > and ArmVirtPkg's PlatformBdsLibs in sync, whenever it made sense. (For > one, the Xen build of ArmVirtPkg still uses ArmPlatformPkg's > PlatformBdsLib!) For example, compare: > > - SVN r17713 > ArmVirtPkg: signal EndOxDxe event in PlatformBsdInit > > - SVN r18394 > ArmPlatformPkg: signal EndOfDxe event in PlatformBsdInit > > see also the discussion: > http://thread.gmane.org/gmane.comp.bios.edk2.devel/1849/focus=1916 > >
I wasn't criticising the features you've implemented, I hope it didn't seem that way! Mostly, I'm worried that you've made loads of improvements that sounds like things I would love to have, but don't get because we're not using common code. But moving Juno and FVP to Intel BDS leaves me with more questions than answers. I still haven't worked out how I'm going to boot my system with this jumble of stuff. So far, getting EDK2 to boot itself has been a small victory. > ** As for splitting up ArmVirtPkg and distributing it between > ArmPlatformPkg and OvmfPkg -- I think ArmVirtPkg is already as minimal > as possible. It pulls in a large number of libraries and drivers from > both ArmPlatformPkg and OvmfPkg. Speaking of the QEMU build, it only has > three drivers of its own (HighMemDxe, PciHostBridgeDxe, VirtFdtDxe). It > does customize a larger number of library instances, but library > instances are meant just for that. > > I'm not opposing this on principle, mind you, but I've been pretty > pleased with the current structure, so I'll have to see concrete ideas > to set my mind to a different track. :) > > Thanks! > Laszlo > >> >> / >> Leif >> > _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

