[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH RFC 12/14] OvmfPkg/PlatformBootManagerLib: Use a Xen console for ConOut/ConIn
and add OvmfPkg/XenConsoleIo/XenConsoleIo to XenOvmf platform. It actually look for gEfiSerialIoProtocolGuid. --- .../Library/PlatformBootManagerLib/BdsPlatform.c | 33 ++++++++++++++++++++++ .../PlatformBootManagerLib.inf | 2 ++ OvmfPkg/XenOvmf.dsc | 4 +++ OvmfPkg/XenOvmf.fdf | 1 + 4 files changed, 40 insertions(+) diff --git a/OvmfPkg/Library/PlatformBootManagerLib/BdsPlatform.c b/OvmfPkg/Library/PlatformBootManagerLib/BdsPlatform.c index bd64cc3..b8972f7 100644 --- a/OvmfPkg/Library/PlatformBootManagerLib/BdsPlatform.c +++ b/OvmfPkg/Library/PlatformBootManagerLib/BdsPlatform.c @@ -904,6 +904,31 @@ DetectAndPreparePlatformPciDevicePaths ( return VisitAllPciInstances (DetectAndPreparePlatformPciDevicePath); } +#include <Protocol/SerialIo.h> +EFI_STATUS +EFIAPI +add_serial ( + IN EFI_HANDLE DeviceHandle, + IN VOID *Instance, + IN VOID *Context + ) +{ + EFI_DEVICE_PATH_PROTOCOL *DevicePath = NULL; + + DevicePath = DevicePathFromHandle(DeviceHandle); + if (DevicePath == NULL) { + return EFI_NOT_FOUND; + } + + DevicePath = AppendDevicePathNode (DevicePath, (EFI_DEVICE_PATH_PROTOCOL *)&gTerminalTypeDeviceNode); + DEBUG((EFI_D_ERROR, "%a %d: full path: %s\n", __FUNCTION__, __LINE__, + ConvertDevicePathToText(DevicePath, TRUE, FALSE) + )); + EfiBootManagerUpdateConsoleVariable (ConOut, DevicePath, NULL); + EfiBootManagerUpdateConsoleVariable (ConIn, DevicePath, NULL); + EfiBootManagerUpdateConsoleVariable (ErrOut, DevicePath, NULL); + return EFI_SUCCESS; +} VOID PlatformInitializeConsole ( @@ -931,6 +956,14 @@ Arguments: GetEfiGlobalVariable2 (EFI_CON_OUT_VARIABLE_NAME, (VOID **) &VarConout, NULL); GetEfiGlobalVariable2 (EFI_CON_IN_VARIABLE_NAME, (VOID **) &VarConin, NULL); + // do xen console + //VISIT_PCI_INSTANCE_CALLBACK CallBackFunction + VisitAllInstancesOfProtocol ( + &gEfiSerialIoProtocolGuid, + add_serial, + (VOID*)NULL + ); + if (VarConout == NULL || VarConin == NULL) { // // Do platform specific PCI Device check and add them to ConOut, ConIn, ErrOut diff --git a/OvmfPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf b/OvmfPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf index 4a6bece..74ab6b1 100644 --- a/OvmfPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf +++ b/OvmfPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf @@ -73,6 +73,8 @@ gEfiLoadedImageProtocolGuid # PROTOCOL SOMETIMES_PRODUCED gEfiFirmwareVolume2ProtocolGuid # PROTOCOL SOMETIMES_CONSUMED + gEfiSerialIoProtocolGuid + [Guids] gEfiXenInfoGuid gEfiEndOfDxeEventGroupGuid diff --git a/OvmfPkg/XenOvmf.dsc b/OvmfPkg/XenOvmf.dsc index 31a2185..8bce996 100644 --- a/OvmfPkg/XenOvmf.dsc +++ b/OvmfPkg/XenOvmf.dsc @@ -590,6 +590,10 @@ OvmfPkg/XenIoPciDxe/XenIoPciDxe.inf OvmfPkg/XenBusDxe/XenBusDxe.inf OvmfPkg/XenPvBlkDxe/XenPvBlkDxe.inf + OvmfPkg/XenConsoleIo/XenConsoleIo.inf { + <LibraryClasses> + SerialPortLib|OvmfPkg/Library/XenConsoleSerialPortLib/XenConsoleSerialPortLib.inf + } MdeModulePkg/Universal/WatchdogTimerDxe/WatchdogTimer.inf MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe.inf MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf diff --git a/OvmfPkg/XenOvmf.fdf b/OvmfPkg/XenOvmf.fdf index f6876d7..a40d186 100644 --- a/OvmfPkg/XenOvmf.fdf +++ b/OvmfPkg/XenOvmf.fdf @@ -223,6 +223,7 @@ INF OvmfPkg/BlockMmioToBlockIoDxe/BlockIo.inf INF OvmfPkg/XenIoPciDxe/XenIoPciDxe.inf INF OvmfPkg/XenBusDxe/XenBusDxe.inf INF OvmfPkg/XenPvBlkDxe/XenPvBlkDxe.inf +INF OvmfPkg/XenConsoleIo/XenConsoleIo.inf !if $(SECURE_BOOT_ENABLE) == TRUE INF SecurityPkg/VariableAuthenticated/SecureBootConfigDxe/SecureBootConfigDxe.inf -- Anthony PERARD _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |