Acidanthera UEFI Development Kit based on EDK II edk2-stable202311
Go to file
Laszlo Ersek a8c2de1d7d ArmVirtualizationPkg: PlatformIntelBdsLib: fix multiconsole setup
In the following call chain:

PlatformBdsPolicyBehavior()
  PlatformBdsConnectConsole()
    InitializeConsolePipe() x 3
      BdsConnectDevicePath() [ArmPkg/Library/BdsLib/BdsFilePath.c]

the three InitializeConsolePipe() function calls pass through
- (&gST->ConsoleOutHandle, &gST->ConOut),
- (&gST->ConsoleInHandle, &gST->ConIn),
- (&gST->StandardErrorHandle, &gST->StdErr)

to BdsConnectDevicePath(), in ArmPkg's BdsLib.

At least when more than one console device paths are specified in the
ConIn / ConOut / ErrOut variables, the above resuls in:
- unchanged protocol interfaces (ConOut, ConIn, StdErr) in the system
  table (because ConSplitterDxe installs its non-NULL interfaces first),
- but, changed handles in the system table.

This effectively separates the handle fields in the system table from the
protocol interfaces in the same that should always be associated with the
handles. The end result is that clients using the handles break (splitting
/ multiplexing doesn't work for them), while clients directly using the
protocol interfaces work.

Therefore, do not attempt to connect consoles separately. ConSplitterDxe
is dispatched before PlatformBdsPolicyBehavior() is called (the latter
happens in the BDS phase), and ConSplitterDxe installs virtual handles and
protocol interfaces for input / output / error.

BdsLibConnectAll() covers all devices, including consoles; as those
consoles are connected, ConPlatformDxe and ConSplitterDxe pick them up
nicely as "slaves". We just need to make sure that the variables are set
first, for the variables -> ConPlatformDxe -> ConSplitterDxe dependency
chain.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Olivier Martin <Olivier.martin@arm.com>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16912 6f19259b-4bc3-4df7-8a09-765794883524
2015-02-23 16:04:21 +00:00
AppPkg */Contributions.txt: Update example email address 2015-02-03 17:29:14 +00:00
ArmPkg ArmPkg/ArmGic: enable ARE bit before driving GICv3 in native mode 2015-02-16 10:27:02 +00:00
ArmPlatformPkg ArmVirtualizationPkg: PlatformIntelBdsLib: fix multiconsole setup 2015-02-23 16:04:21 +00:00
BaseTools BaseTools/GenFw: Set the PE/COFF attribute BaseOfData with the address of the first '.data' section 2015-02-11 08:20:17 +00:00
BeagleBoardPkg */Contributions.txt: Update example email address 2015-02-03 17:29:14 +00:00
Conf EDK II: Add .gitignore 2014-10-14 16:08:15 +00:00
CryptoPkg */Contributions.txt: Update example email address 2015-02-03 17:29:14 +00:00
DuetPkg */Contributions.txt: Update example email address 2015-02-03 17:29:14 +00:00
EdkCompatibilityPkg */Contributions.txt: Update example email address 2015-02-03 17:29:14 +00:00
EdkShellBinPkg */Contributions.txt: Update example email address 2015-02-03 17:29:14 +00:00
EdkShellPkg */Contributions.txt: Update example email address 2015-02-03 17:29:14 +00:00
EmbeddedPkg */Contributions.txt: Update example email address 2015-02-03 17:29:14 +00:00
EmulatorPkg EmulatorPkg: Update web page and wiki urls 2015-02-05 18:25:01 +00:00
FatBinPkg */Contributions.txt: Update example email address 2015-02-03 17:29:14 +00:00
IntelFrameworkModulePkg Remove invalid value sync action when changing value. Else later save change action will fail. 2015-02-12 08:40:16 +00:00
IntelFrameworkPkg */Contributions.txt: Update example email address 2015-02-03 17:29:14 +00:00
IntelFspPkg Fix build error. 2015-02-13 06:17:23 +00:00
IntelFspWrapperPkg Fix comments format error.Fsp1.1 update. 2015-02-12 15:13:37 +00:00
MdeModulePkg MdeModulePkg: Update SMBIOS revision to 3.0. 2015-02-15 05:01:59 +00:00
MdePkg MdePkg: Add new definitions for SMBIOS 3.0. 2015-02-15 05:01:27 +00:00
NetworkPkg NetworkPkg: Code refine to avoid NULL pointer dereferenced. 2015-02-13 01:00:47 +00:00
Nt32Pkg */Contributions.txt: Update example email address 2015-02-03 17:29:14 +00:00
Omap35xxPkg */Contributions.txt: Update example email address 2015-02-03 17:29:14 +00:00
OptionRomPkg OptionRomPkg: FrameBufferBltLib: drop set but not used variable 2015-02-23 16:02:21 +00:00
OvmfPkg OvmfPkg/QemuVideoDxe: enable ARM builds 2015-02-23 16:02:29 +00:00
PcAtChipsetPkg PcAtChipsetPkg/PciHostBridgeDxe: drop PciAddress, PciData 2015-02-23 16:02:39 +00:00
PerformancePkg */Contributions.txt: Update example email address 2015-02-03 17:29:14 +00:00
SecurityPkg Add the missed local variable initialization to remove the possible warning. 2015-02-05 05:37:10 +00:00
ShellBinPkg */Contributions.txt: Update example email address 2015-02-03 17:29:14 +00:00
ShellPkg ShellPkg/UefiShellLib: Fixed ARM compiler error 2015-02-23 11:13:58 +00:00
SourceLevelDebugPkg Use MaxPacketSize as the initial buffer size to read data. 2015-02-05 01:15:09 +00:00
StdLib */Contributions.txt: Update example email address 2015-02-03 17:29:14 +00:00
StdLibPrivateInternalFiles */Contributions.txt: Update example email address 2015-02-03 17:29:14 +00:00
UefiCpuPkg */Contributions.txt: Update example email address 2015-02-03 17:29:14 +00:00
UnixPkg UnixPkg: Remove UnixPkg files (It is replaced by EmulatorPkg) 2013-07-29 21:09:55 +00:00
Vlv2DeviceRefCodePkg Add patch-able PCD to support binary modification of MRC module. 2015-02-13 02:13:43 +00:00
Vlv2TbltDevicePkg Upgrade BIOS version to V0.78. 2015-02-13 02:14:12 +00:00
.gitignore EDK II: Add .gitignore 2014-10-14 16:08:15 +00:00
BuildNotes2.txt Update to new SVN URL in readme.txt 2013-06-08 05:26:39 +00:00
Edk2Setup.bat Updated version, missed the last two commits and to add the SVN Revision property (last part of the version value). 2014-08-22 16:08:47 +00:00
Maintainers.txt Maintainers.txt: http://tianocore.github.io => http://www.tianocore.org 2015-02-05 18:24:33 +00:00
edksetup.bat Update edksetup.bat to support Microsoft Visual Studio 2013 when building the Nt32Pkg emulation platform (enabled using the --nt32 flag). 2014-10-30 17:09:25 +00:00
edksetup.sh edksetup.sh: Ensure that WORKSPACE points to the top of an edk2 checkout 2014-07-28 17:37:40 +00:00