On Thu, 6 Jul 2023 at 17:31, Gerd Hoffmann <kra...@redhat.com> wrote:
>
> 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>

Acked-by: Ard Biesheuvel <a...@kernel.org>

I'll queue this up

> ---
>  .../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 (#108390): https://edk2.groups.io/g/devel/message/108390
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]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to