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;
+}