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] -=-=-=-=-=-=-=-=-=-=-=-