From nobody Tue Feb 10 04:16:04 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+80801+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+80801+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1631794870; cv=none; d=zohomail.com; s=zohoarc; b=GP13EwIopvA/h779bzUR1CfYI7YV9dWmEwC0vB8ZgUuVLYPdi3Apygii+n5cJHEzMlm2e6jxCTKf2Afk9l1RbPhapayUodLdjEDTo1fYt0v1EtTo+EMIqboWMPEvRq4q3gEbGazum53PBQOH+L/lWgn8UZNummw4m9ufwwT2hCk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1631794870; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=Zw+1hspY3/RBa8G1YBmJ1H7Ea3dguMMXBh6iVAvL69Y=; b=BHGi1IzDJGADUN7OEZclYBZd6cYMlfidm52+JKuulLEFFIwK4uSYI8MTVnBUVlQmIST6nYvaZqaCJESSr67CrA0VmHDvrxgysZ0+7EzqpGXNkwuSNWOyfHf8srTagwsLoRdNk1jLdGjjerV+m+xAnGSSjX/MnkJFPPHPaX+2OCA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+80801+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1631794870492561.1014757350401; Thu, 16 Sep 2021 05:21:10 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id 6OQWYY1788612xhdKqJcyzIn; Thu, 16 Sep 2021 05:21:10 -0700 X-Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.groups.io with SMTP id smtpd.web11.181.1631794869430527665 for ; Thu, 16 Sep 2021 05:21:09 -0700 X-Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-134-3i5fEJ1nO7S0OfoToioSJw-1; Thu, 16 Sep 2021 08:21:07 -0400 X-MC-Unique: 3i5fEJ1nO7S0OfoToioSJw-1 X-Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id B916819057A0; Thu, 16 Sep 2021 12:21:05 +0000 (UTC) X-Received: from sirius.home.kraxel.org (unknown [10.39.192.91]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 4C18C4180; Thu, 16 Sep 2021 12:21:05 +0000 (UTC) X-Received: by sirius.home.kraxel.org (Postfix, from userid 1000) id CD3A118009E9; Thu, 16 Sep 2021 14:20:27 +0200 (CEST) From: "Gerd Hoffmann" To: devel@edk2.groups.io Cc: Jordan Justen , Gerd Hoffmann , Jiewen Yao , Julien Grall , Stefan Berger , Leif Lindholm , Ard Biesheuvel , Andrew Fish , Michael D Kinney , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Anthony Perard , Jiewen Yao Subject: [edk2-devel] [PATCH v4 18/20] OvmfPkg/Microvm: wire up serial console, drop super-io Date: Thu, 16 Sep 2021 14:20:25 +0200 Message-Id: <20210916122027.2352393-19-kraxel@redhat.com> In-Reply-To: <20210916122027.2352393-1-kraxel@redhat.com> References: <20210916122027.2352393-1-kraxel@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,kraxel@redhat.com X-Gm-Message-State: pELnZDsqsg4qUwOr4aJHIFCDx1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1631794870; bh=99K8E0eTdWUywhOv2M5Iw6ClRfQ4E+ZnQvITD/t0mIQ=; h=Cc:Content-Type:Date:From:Reply-To:Subject:To; b=bJku+z/LMmO53WU7xJzNNcsDwKenFjOjJrQ7xvr2ANhFJSPBb5DgKdTbs9AbXgRTLPI drCb5GDkiiW4Va1ZwOya+L7x9F81zO2hJnbTcvBUSVv1x1loSxQJQO4rHwoqffQkcrPbd jtbK//ctIdfIm6Tkhels2ifPTCxQwaGmy0U= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1631794872666100025 Content-Type: text/plain; charset="utf-8" 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=3D3599 Signed-off-by: Gerd Hoffmann Acked-by: Jiewen Yao --- OvmfPkg/Microvm/MicrovmX64.dsc | 11 +++-- OvmfPkg/Microvm/MicrovmX64.fdf | 4 +- .../PlatformBootManagerLib/BdsPlatform.c | 40 +++++++++++++++++++ 3 files changed, 49 insertions(+), 6 deletions(-) diff --git a/OvmfPkg/Microvm/MicrovmX64.dsc b/OvmfPkg/Microvm/MicrovmX64.dsc index 399506874975..c11fc9fc3be0 100644 --- a/OvmfPkg/Microvm/MicrovmX64.dsc +++ b/OvmfPkg/Microvm/MicrovmX64.dsc @@ -233,6 +233,8 @@ [LibraryClasses] [LibraryClasses.common] BaseCryptLib|CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf VmgExitLib|OvmfPkg/Library/VmgExitLib/VmgExitLib.inf + SerialPortLib|MdeModulePkg/Library/BaseSerialPortLib16550/BaseSerialPort= Lib16550.inf + PlatformHookLib|MdeModulePkg/Library/BasePlatformHookLibNull/BasePlatfor= mHookLibNull.inf =20 [LibraryClasses.common.SEC] QemuFwCfgLib|OvmfPkg/Library/QemuFwCfgLib/QemuFwCfgSecLib.inf @@ -537,6 +539,11 @@ [PcdsFixedAtBuild] # 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, 0= x31 } =20 + # 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 Pla= tform @@ -732,9 +739,7 @@ [Components] # # ISA Support # - OvmfPkg/SioBusDxe/SioBusDxe.inf - MdeModulePkg/Bus/Pci/PciSioSerialDxe/PciSioSerialDxe.inf - MdeModulePkg/Bus/Isa/Ps2KeyboardDxe/Ps2KeyboardDxe.inf + MdeModulePkg/Universal/SerialDxe/SerialDxe.inf =20 # # SMBIOS Support diff --git a/OvmfPkg/Microvm/MicrovmX64.fdf b/OvmfPkg/Microvm/MicrovmX64.fdf index b4d56bd2d0e7..6314014f3de7 100644 --- a/OvmfPkg/Microvm/MicrovmX64.fdf +++ b/OvmfPkg/Microvm/MicrovmX64.fdf @@ -260,11 +260,9 @@ [FV.DXEFV] INF MdeModulePkg/Universal/DisplayEngineDxe/DisplayEngineDxe.inf INF MdeModulePkg/Universal/MemoryTest/NullMemoryTestDxe/NullMemoryTestDxe= .inf =20 -INF OvmfPkg/SioBusDxe/SioBusDxe.inf !if $(SOURCE_DEBUG_ENABLE) =3D=3D FALSE -INF MdeModulePkg/Bus/Pci/PciSioSerialDxe/PciSioSerialDxe.inf +INF MdeModulePkg/Universal/SerialDxe/SerialDxe.inf !endif -INF MdeModulePkg/Bus/Isa/Ps2KeyboardDxe/Ps2KeyboardDxe.inf =20 INF MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.inf INF OvmfPkg/SmbiosPlatformDxe/SmbiosPlatformDxe.inf diff --git a/OvmfPkg/Library/PlatformBootManagerLib/BdsPlatform.c b/OvmfPkg= /Library/PlatformBootManagerLib/BdsPlatform.c index 5536fcb8894d..b581a20cc6b7 100644 --- a/OvmfPkg/Library/PlatformBootManagerLib/BdsPlatform.c +++ b/OvmfPkg/Library/PlatformBootManagerLib/BdsPlatform.c @@ -8,6 +8,7 @@ =20 #include "BdsPlatform.h" #include +#include #include #include #include @@ -661,6 +662,43 @@ PrepareLpcBridgeDevicePath ( return EFI_SUCCESS; } =20 +typedef struct { + VENDOR_DEVICE_PATH Guid; + EFI_DEVICE_PATH_PROTOCOL End; +} SERIAL_DEVICE_PATH; + +SERIAL_DEVICE_PATH serialDevicePath =3D { + { + { 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_DE= VICE_PATH_PROTOCOL), 0 } } +}; + +VOID +PrepareMicrovmDevicePath ( + VOID + ) +{ + EFI_DEVICE_PATH_PROTOCOL *DevicePath; + UINT16 HostBridgeDevId; + + HostBridgeDevId =3D PcdGet16 (PcdOvmfHostBridgePciDevId); + if (HostBridgeDevId !=3D MICROVM_PSEUDO_DEVICE_ID) { + return; + } + + DevicePath =3D (EFI_DEVICE_PATH_PROTOCOL*)&serialDevicePath; + DevicePath =3D AppendDevicePathNode (DevicePath, + (EFI_DEVICE_PATH_PROTOCOL *)&gUartDeviceNode); + DevicePath =3D 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, @@ -1021,6 +1059,8 @@ PlatformInitializeConsole ( // VisitAllPciInstances (DetectAndPreparePlatformPciDevicePath); =20 + PrepareMicrovmDevicePath (); + // // Have chance to connect the platform default console, // the platform default console is the minimum device group --=20 2.31.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#80801): https://edk2.groups.io/g/devel/message/80801 Mute This Topic: https://groups.io/mt/85649951/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-