X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=OvmfPkg%2FVirtioPciDeviceDxe%2FVirtioPciFunctions.c;h=b52060d13d97024b4fa4cc19ca0997bb5161fef8;hp=243aa14c24212a6cfa3fd090ab2cdf24ca76af95;hb=53a4c6047f3ce2ece7bb8db5b9815a1c9227dddb;hpb=07af4eee931210bad04b98d37a35bd0f61ba6bd3 diff --git a/OvmfPkg/VirtioPciDeviceDxe/VirtioPciFunctions.c b/OvmfPkg/VirtioPciDeviceDxe/VirtioPciFunctions.c index 243aa14c24..b52060d13d 100644 --- a/OvmfPkg/VirtioPciDeviceDxe/VirtioPciFunctions.c +++ b/OvmfPkg/VirtioPciDeviceDxe/VirtioPciFunctions.c @@ -5,6 +5,7 @@ Copyright (C) 2012, Red Hat, Inc. Copyright (c) 2012, Intel Corporation. All rights reserved.
Copyright (C) 2013, ARM Ltd. + Copyright (C) 2017, AMD Inc, All rights reserved.
This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License which accompanies this @@ -182,11 +183,14 @@ EFI_STATUS EFIAPI VirtioPciSetQueueAddress ( IN VIRTIO_DEVICE_PROTOCOL *This, - IN VRING *Ring + IN VRING *Ring, + IN UINT64 RingBaseShift ) { VIRTIO_PCI_DEVICE *Dev; + ASSERT (RingBaseShift == 0); + Dev = VIRTIO_PCI_DEVICE_FROM_VIRTIO_DEVICE (This); return VirtioPciIoWrite (Dev, VIRTIO_PCI_OFFSET_QUEUE_ADDRESS, sizeof (UINT32), @@ -196,8 +200,8 @@ VirtioPciSetQueueAddress ( EFI_STATUS EFIAPI VirtioPciSetQueueSel ( - VIRTIO_DEVICE_PROTOCOL *This, - UINT16 Sel + IN VIRTIO_DEVICE_PROTOCOL *This, + IN UINT16 Sel ) { VIRTIO_PCI_DEVICE *Dev; @@ -211,8 +215,8 @@ VirtioPciSetQueueSel ( EFI_STATUS EFIAPI VirtioPciSetQueueAlignment ( - VIRTIO_DEVICE_PROTOCOL *This, - UINT32 Alignment + IN VIRTIO_DEVICE_PROTOCOL *This, + IN UINT32 Alignment ) { return EFI_SUCCESS; @@ -221,8 +225,8 @@ VirtioPciSetQueueAlignment ( EFI_STATUS EFIAPI VirtioPciSetPageSize ( - VIRTIO_DEVICE_PROTOCOL *This, - UINT32 PageSize + IN VIRTIO_DEVICE_PROTOCOL *This, + IN UINT32 PageSize ) { return (PageSize == EFI_PAGE_SIZE) ? EFI_SUCCESS : EFI_UNSUPPORTED; @@ -231,8 +235,8 @@ VirtioPciSetPageSize ( EFI_STATUS EFIAPI VirtioPciSetQueueNotify ( - VIRTIO_DEVICE_PROTOCOL *This, - UINT16 Index + IN VIRTIO_DEVICE_PROTOCOL *This, + IN UINT16 Index ) { VIRTIO_PCI_DEVICE *Dev; @@ -246,8 +250,8 @@ VirtioPciSetQueueNotify ( EFI_STATUS EFIAPI VirtioPciSetQueueSize ( - VIRTIO_DEVICE_PROTOCOL *This, - UINT16 Size + IN VIRTIO_DEVICE_PROTOCOL *This, + IN UINT16 Size ) { // @@ -260,8 +264,8 @@ VirtioPciSetQueueSize ( EFI_STATUS EFIAPI VirtioPciSetDeviceStatus ( - VIRTIO_DEVICE_PROTOCOL *This, - UINT8 DeviceStatus + IN VIRTIO_DEVICE_PROTOCOL *This, + IN UINT8 DeviceStatus ) { VIRTIO_PCI_DEVICE *Dev; @@ -271,3 +275,60 @@ VirtioPciSetDeviceStatus ( return VirtioPciIoWrite (Dev, VIRTIO_PCI_OFFSET_QUEUE_DEVICE_STATUS, sizeof (UINT8), DeviceStatus); } + +EFI_STATUS +EFIAPI +VirtioPciAllocateSharedPages ( + IN VIRTIO_DEVICE_PROTOCOL *This, + IN UINTN NumPages, + OUT VOID **HostAddress + ) +{ + VOID *Buffer; + + Buffer = AllocatePages (NumPages); + if (Buffer == NULL) { + return EFI_OUT_OF_RESOURCES; + } + + *HostAddress = Buffer; + return EFI_SUCCESS; +} + +VOID +EFIAPI +VirtioPciFreeSharedPages ( + IN VIRTIO_DEVICE_PROTOCOL *This, + IN UINTN NumPages, + IN VOID *HostAddress + ) +{ + FreePages (HostAddress, NumPages); +} + +EFI_STATUS +EFIAPI +VirtioPciMapSharedBuffer ( + IN VIRTIO_DEVICE_PROTOCOL *This, + IN VIRTIO_MAP_OPERATION Operation, + IN VOID *HostAddress, + IN OUT UINTN *NumberOfBytes, + OUT EFI_PHYSICAL_ADDRESS *DeviceAddress, + OUT VOID **Mapping + ) +{ + *DeviceAddress = (EFI_PHYSICAL_ADDRESS) (UINTN) HostAddress; + *Mapping = NULL; + + return EFI_SUCCESS; +} + +EFI_STATUS +EFIAPI +VirtioPciUnmapSharedBuffer ( + IN VIRTIO_DEVICE_PROTOCOL *This, + IN VOID *Mapping + ) +{ + return EFI_SUCCESS; +}