Add DetectAndPreparePlatformVirtioDevicePath() helper function to setup virtio-mmio devices. Start with virtio-serial support.
This makes virtio console usable with microvm. Signed-off-by: Gerd Hoffmann <kra...@redhat.com> --- .../PlatformBootManagerLib.inf | 1 + .../PlatformBootManagerLib/BdsPlatform.c | 31 +++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/OvmfPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf b/OvmfPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf index 6b396eac7daf..c6ffc1ed9ed5 100644 --- a/OvmfPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf +++ b/OvmfPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf @@ -75,6 +75,7 @@ [Pcd.IA32, Pcd.X64] [Protocols] gEfiDecompressProtocolGuid gEfiPciRootBridgeIoProtocolGuid + gVirtioDeviceProtocolGuid gEfiS3SaveStateProtocolGuid # PROTOCOL SOMETIMES_CONSUMED gEfiDxeSmmReadyToLockProtocolGuid # PROTOCOL SOMETIMES_PRODUCED gEfiLoadedImageProtocolGuid # PROTOCOL SOMETIMES_PRODUCED diff --git a/OvmfPkg/Library/PlatformBootManagerLib/BdsPlatform.c b/OvmfPkg/Library/PlatformBootManagerLib/BdsPlatform.c index 8dc2bbf97371..88c39df4aea9 100644 --- a/OvmfPkg/Library/PlatformBootManagerLib/BdsPlatform.c +++ b/OvmfPkg/Library/PlatformBootManagerLib/BdsPlatform.c @@ -10,6 +10,7 @@ #include <Guid/RootBridgesConnectedEventGroup.h> #include <Guid/SerialPortLibVendor.h> #include <Protocol/FirmwareVolume2.h> +#include <Protocol/VirtioDevice.h> #include <Library/PlatformBmPrintScLib.h> #include <Library/Tcg2PhysicalPresenceLib.h> #include <Library/XenPlatformLib.h> @@ -1236,6 +1237,30 @@ DetectAndPreparePlatformPciDevicePath ( return Status; } +EFI_STATUS +EFIAPI +DetectAndPreparePlatformVirtioDevicePath ( + IN EFI_HANDLE Handle, + IN VOID *Instance, + IN VOID *Context + ) +{ + VIRTIO_DEVICE_PROTOCOL *VirtIo = (VIRTIO_DEVICE_PROTOCOL *)Instance; + + DEBUG ((DEBUG_INFO, "%a:%d: id %d\n", __func__, __LINE__, VirtIo->SubSystemDeviceId)); + + switch (VirtIo->SubSystemDeviceId) { + case 3: + PrepareVirtioSerialDevicePath (Handle); + break; + default: + /* nothing */ + break; + } + + return EFI_SUCCESS; +} + /** Connect the predefined platform default console device. @@ -1256,6 +1281,12 @@ PlatformInitializeConsole ( // VisitAllPciInstances (DetectAndPreparePlatformPciDevicePath); + VisitAllInstancesOfProtocol ( + &gVirtioDeviceProtocolGuid, + DetectAndPreparePlatformVirtioDevicePath, + NULL + ); + PrepareMicrovmDevicePath (); // -- 2.41.0 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#106707): https://edk2.groups.io/g/devel/message/106707 Mute This Topic: https://groups.io/mt/99987954/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-