mirror of https://github.com/acidanthera/audk.git
OvmfPkg/Microvm: wire up serial console, drop super-io
Microvm has no LPC bridge, so drop the PciSioSerialDxe driver. Use SerialDxe instead, with ioport hardcoded to 0x3f8 aka com1 aka ttyS0. With this tianocore boots to uefi shell prompt on the serial console. Direct kernel boot can be used too. Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3599 Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Acked-by: Jiewen Yao <Jiewen.yao@intel.com>
This commit is contained in:
parent
8456785986
commit
55f47d2299
|
@ -8,6 +8,7 @@
|
|||
|
||||
#include "BdsPlatform.h"
|
||||
#include <Guid/RootBridgesConnectedEventGroup.h>
|
||||
#include <Guid/SerialPortLibVendor.h>
|
||||
#include <Protocol/FirmwareVolume2.h>
|
||||
#include <Library/PlatformBmPrintScLib.h>
|
||||
#include <Library/Tcg2PhysicalPresenceLib.h>
|
||||
|
@ -669,6 +670,43 @@ PrepareLpcBridgeDevicePath (
|
|||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
typedef struct {
|
||||
VENDOR_DEVICE_PATH Guid;
|
||||
EFI_DEVICE_PATH_PROTOCOL End;
|
||||
} SERIAL_DEVICE_PATH;
|
||||
|
||||
SERIAL_DEVICE_PATH serialDevicePath = {
|
||||
{
|
||||
{ HARDWARE_DEVICE_PATH, HW_VENDOR_DP, { sizeof (VENDOR_DEVICE_PATH), 0} },
|
||||
EDKII_SERIAL_PORT_LIB_VENDOR_GUID
|
||||
},
|
||||
{ END_DEVICE_PATH_TYPE, END_ENTIRE_DEVICE_PATH_SUBTYPE, { sizeof (EFI_DEVICE_PATH_PROTOCOL), 0 } }
|
||||
};
|
||||
|
||||
VOID
|
||||
PrepareMicrovmDevicePath (
|
||||
VOID
|
||||
)
|
||||
{
|
||||
EFI_DEVICE_PATH_PROTOCOL *DevicePath;
|
||||
UINT16 HostBridgeDevId;
|
||||
|
||||
HostBridgeDevId = PcdGet16 (PcdOvmfHostBridgePciDevId);
|
||||
if (HostBridgeDevId != MICROVM_PSEUDO_DEVICE_ID) {
|
||||
return;
|
||||
}
|
||||
|
||||
DevicePath = (EFI_DEVICE_PATH_PROTOCOL*)&serialDevicePath;
|
||||
DevicePath = AppendDevicePathNode (DevicePath,
|
||||
(EFI_DEVICE_PATH_PROTOCOL *)&gUartDeviceNode);
|
||||
DevicePath = AppendDevicePathNode (DevicePath,
|
||||
(EFI_DEVICE_PATH_PROTOCOL *)&gTerminalTypeDeviceNode);
|
||||
|
||||
EfiBootManagerUpdateConsoleVariable (ConOut, DevicePath, NULL);
|
||||
EfiBootManagerUpdateConsoleVariable (ConIn, DevicePath, NULL);
|
||||
EfiBootManagerUpdateConsoleVariable (ErrOut, DevicePath, NULL);
|
||||
}
|
||||
|
||||
EFI_STATUS
|
||||
GetGopDevicePath (
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *PciDevicePath,
|
||||
|
@ -1029,6 +1067,8 @@ PlatformInitializeConsole (
|
|||
//
|
||||
VisitAllPciInstances (DetectAndPreparePlatformPciDevicePath);
|
||||
|
||||
PrepareMicrovmDevicePath ();
|
||||
|
||||
//
|
||||
// Have chance to connect the platform default console,
|
||||
// the platform default console is the minimum device group
|
||||
|
|
|
@ -230,6 +230,8 @@
|
|||
[LibraryClasses.common]
|
||||
BaseCryptLib|CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf
|
||||
VmgExitLib|OvmfPkg/Library/VmgExitLib/VmgExitLib.inf
|
||||
SerialPortLib|MdeModulePkg/Library/BaseSerialPortLib16550/BaseSerialPortLib16550.inf
|
||||
PlatformHookLib|MdeModulePkg/Library/BasePlatformHookLibNull/BasePlatformHookLibNull.inf
|
||||
|
||||
[LibraryClasses.common.SEC]
|
||||
QemuFwCfgLib|OvmfPkg/Library/QemuFwCfgLib/QemuFwCfgSecLib.inf
|
||||
|
@ -534,6 +536,11 @@
|
|||
# Point to the MdeModulePkg/Application/UiApp/UiApp.inf
|
||||
gEfiMdeModulePkgTokenSpaceGuid.PcdBootManagerMenuFile|{ 0x21, 0xaa, 0x2c, 0x46, 0x14, 0x76, 0x03, 0x45, 0x83, 0x6e, 0x8a, 0xb6, 0xf4, 0x66, 0x23, 0x31 }
|
||||
|
||||
# microvm serial port^M
|
||||
gEfiMdeModulePkgTokenSpaceGuid.PcdSerialUseMmio|FALSE
|
||||
gEfiMdeModulePkgTokenSpaceGuid.PcdSerialPciDeviceInfo|{0xFF}
|
||||
gEfiMdeModulePkgTokenSpaceGuid.PcdSerialRegisterBase|0x3f8
|
||||
|
||||
################################################################################
|
||||
#
|
||||
# Pcd Dynamic Section - list of all EDK II PCD Entries defined by this Platform
|
||||
|
@ -729,9 +736,7 @@
|
|||
#
|
||||
# ISA Support
|
||||
#
|
||||
OvmfPkg/SioBusDxe/SioBusDxe.inf
|
||||
MdeModulePkg/Bus/Pci/PciSioSerialDxe/PciSioSerialDxe.inf
|
||||
MdeModulePkg/Bus/Isa/Ps2KeyboardDxe/Ps2KeyboardDxe.inf
|
||||
MdeModulePkg/Universal/SerialDxe/SerialDxe.inf
|
||||
|
||||
#
|
||||
# SMBIOS Support
|
||||
|
|
|
@ -260,11 +260,9 @@ INF MdeModulePkg/Universal/SetupBrowserDxe/SetupBrowserDxe.inf
|
|||
INF MdeModulePkg/Universal/DisplayEngineDxe/DisplayEngineDxe.inf
|
||||
INF MdeModulePkg/Universal/MemoryTest/NullMemoryTestDxe/NullMemoryTestDxe.inf
|
||||
|
||||
INF OvmfPkg/SioBusDxe/SioBusDxe.inf
|
||||
!if $(SOURCE_DEBUG_ENABLE) == FALSE
|
||||
INF MdeModulePkg/Bus/Pci/PciSioSerialDxe/PciSioSerialDxe.inf
|
||||
INF MdeModulePkg/Universal/SerialDxe/SerialDxe.inf
|
||||
!endif
|
||||
INF MdeModulePkg/Bus/Isa/Ps2KeyboardDxe/Ps2KeyboardDxe.inf
|
||||
|
||||
INF MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.inf
|
||||
INF OvmfPkg/SmbiosPlatformDxe/SmbiosPlatformDxe.inf
|
||||
|
|
Loading…
Reference in New Issue