On Thu, Aug 7, 2014 at 3:49 PM, Laszlo Ersek <[email protected]> wrote: > On 08/07/14 18:03, Andrew Fish wrote: >> OVFM maintainers, >> >> This is an example of using the BaseSerialPortLibIoPort. It enables the >> CpuExceptionHandlerLib serial prints. >> >> The BaseSerialPortLibIoPort can also be used to enable >> the MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf and >> obsolete the need >> for OvmfPkg/Library/PlatformDebugLibIoPort/PlatformDebugLibIoPort.inf >> >> Contributed-under: TianoCore Contribution Agreement 1.0 >> Signed-off-by: Andrew Fish <[email protected] <mailto:[email protected]>> >> >> Thanks, >> >> Andrew Fish > > As far as I can see, pre-patch we have: > > DEBUG_ON_SERIAL_PORT (non-default): > - DebugLib resolves to MdePkg/Library/BaseDebugLibSerialPort > > Otherwise (default): > - DebugLib resolves to OvmfPkg/Library/PlatformDebugLibIoPort > > Post patch, we always resolve DebugLib to > MdePkg/Library/BaseDebugLibSerialPort, and (apparently) we move the > choice to one level deeper, choosing > - between PcAtChipsetPkg/Library/SerialIoLib > - and OvmfPkg/Library/BaseSerialPortLibIoPort > for SerialPortLib. > > Presumably, this latter library instance implements SerialPortWrite() by > writing to the QEMU debug port. I assume the benefit is that now all > code that goes through SerialPortLib will reach the QEMU debug port, not > just the code that goes through DebugLib. > > Two points: > - Did you add the "OvmfPkg/Library/BaseSerialPortLibIoPort" directory to > the index with "git add" (ie. did you "stage it") before calling "git > commit"? Because it's not in the patch. It's present in your working > tree only I believe. > > - Will this redirection break the terminal driver, for example? OVMF > does make use of the serial port even when DEBUG() goes to the QEMU > debug port. For example, thanks to ConSplitterDxe, the setup screens > (Boot manager, Boot maintenance manager etc) are fully usable on the > virtual serial port. I don't immediately see how that stack is built, > but it should not be disturbed. (I don't know if this patch disturbs it, > I'm asking.)
It looks like it should work, because we use IntelFrameworkModulePkg/Bus/Isa/IsaSerialDxe/IsaSerialDxe.inf for to produce the SerialIo protocol, that I think TerminalDxe uses. If we made a driver that produces the SerialIo protocol based on SerialPortLib, then we might need to override the SerialPortLib to the real serial port for that driver. If we used DEBUG output in that driver, then the messages would appear on the serial port. Does this sound right Andrew? -Jordan > ... TerminalDxe seems to consume gEfiSerialIoProtocolGuid, which seems > to be provided by IntelFrameworkModulePkg/Bus/Isa/IsaSerialDxe. Hmm... I > think that one doesn't depend on SerialPortLib. Good. > > Also, I grepped for SerialPortRead(), to see what code in the tree tries > to read from the serial port (which won't work if the qemu debug port, > faking the serial port, is redirected to a file). The only caller OVMF > *maybe* cares about is > SourceLevelDebugPkg/Library/DebugCommunicationLibSerialPort. > > Hence I *guess* this patch might break DebugCommunicationLib for OVMF > (see SOURCE_DEBUG_ENABLE), but the debug agent / debug comms never ever > worked for me with OVMF, so I'm not sure if we should care. Probably > something for Jordan to decide. > > Thanks, > Laszlo > > ------------------------------------------------------------------------------ > Infragistics Professional > Build stunning WinForms apps today! > Reboot your WinForms applications with our WinForms controls. > Build a bridge from your legacy apps to the future. > http://pubads.g.doubleclick.net/gampad/clk?id=153845071&iu=/4140/ostg.clktrk > _______________________________________________ > edk2-devel mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/edk2-devel ------------------------------------------------------------------------------ _______________________________________________ edk2-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/edk2-devel
