mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-23 13:44:33 +02:00
OvmfPkg/VirtioPciDeviceDxe: implement IOMMU-like member functions
The patch implements the newly added IOMMU-like member functions by respectively delegating the job to: - VIRTIO_DEVICE_PROTOCOL.AllocateSharedPages () -> MemoryAllocationLib.AllocatePages() - VIRTIO_DEVICE_PROTOCOL.FreeSharedPages () -> MemoryAllocationLib.FreePages () - VIRTIO_DEVICE_PROTOCOL.MapSharedBuffer () -> no-op - VIRTIO_DEVICE_PROTOCOL.UnmapSharedBuffer () -> no-op Suggested-by: Laszlo Ersek <lersek@redhat.com> Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> Cc: Jordan Justen <jordan.l.justen@intel.com> Cc: Tom Lendacky <thomas.lendacky@amd.com> Cc: Laszlo Ersek <lersek@redhat.com> Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Brijesh Singh <brijesh.singh@amd.com> Reviewed-by: Laszlo Ersek <lersek@redhat.com> Regression-tested-by: Laszlo Ersek <lersek@redhat.com>
This commit is contained in:
parent
de1c57c5f5
commit
4157b8416a
@ -5,6 +5,7 @@
|
|||||||
Copyright (C) 2012, Red Hat, Inc.
|
Copyright (C) 2012, Red Hat, Inc.
|
||||||
Copyright (c) 2012 - 2016, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2012 - 2016, Intel Corporation. All rights reserved.<BR>
|
||||||
Copyright (C) 2013, ARM Ltd.
|
Copyright (C) 2013, ARM Ltd.
|
||||||
|
Copyright (C) 2017, AMD Inc, All rights reserved.<BR>
|
||||||
|
|
||||||
This program and the accompanying materials are licensed and made available
|
This program and the accompanying materials are licensed and made available
|
||||||
under the terms and conditions of the BSD License which accompanies this
|
under the terms and conditions of the BSD License which accompanies this
|
||||||
@ -40,7 +41,11 @@ STATIC VIRTIO_DEVICE_PROTOCOL mDeviceProtocolTemplate = {
|
|||||||
VirtioPciGetDeviceStatus, // GetDeviceStatus
|
VirtioPciGetDeviceStatus, // GetDeviceStatus
|
||||||
VirtioPciSetDeviceStatus, // SetDeviceStatus
|
VirtioPciSetDeviceStatus, // SetDeviceStatus
|
||||||
VirtioPciDeviceWrite, // WriteDevice
|
VirtioPciDeviceWrite, // WriteDevice
|
||||||
VirtioPciDeviceRead // ReadDevice
|
VirtioPciDeviceRead, // ReadDevice
|
||||||
|
VirtioPciAllocateSharedPages, // AllocateSharedPages
|
||||||
|
VirtioPciFreeSharedPages, // FreeSharedPages
|
||||||
|
VirtioPciMapSharedBuffer, // MapSharedBuffer
|
||||||
|
VirtioPciUnmapSharedBuffer, // UnmapSharedBuffer
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
Internal definitions for the VirtIo PCI Device driver
|
Internal definitions for the VirtIo PCI Device driver
|
||||||
|
|
||||||
Copyright (C) 2013, ARM Ltd
|
Copyright (C) 2013, ARM Ltd
|
||||||
|
Copyright (c) 2017, AMD Inc, All rights reserved.<BR>
|
||||||
|
|
||||||
This program and the accompanying materials are licensed and made available
|
This program and the accompanying materials are licensed and made available
|
||||||
under the terms and conditions of the BSD License which accompanies this
|
under the terms and conditions of the BSD License which accompanies this
|
||||||
@ -156,4 +157,37 @@ VirtioPciSetDeviceStatus (
|
|||||||
IN UINT8 DeviceStatus
|
IN UINT8 DeviceStatus
|
||||||
);
|
);
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
VirtioPciAllocateSharedPages (
|
||||||
|
IN VIRTIO_DEVICE_PROTOCOL *This,
|
||||||
|
IN UINTN NumPages,
|
||||||
|
OUT VOID **HostAddress
|
||||||
|
);
|
||||||
|
|
||||||
|
VOID
|
||||||
|
EFIAPI
|
||||||
|
VirtioPciFreeSharedPages (
|
||||||
|
IN VIRTIO_DEVICE_PROTOCOL *This,
|
||||||
|
IN UINTN NumPages,
|
||||||
|
IN VOID *HostAddress
|
||||||
|
);
|
||||||
|
|
||||||
|
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
|
||||||
|
);
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
VirtioPciUnmapSharedBuffer (
|
||||||
|
IN VIRTIO_DEVICE_PROTOCOL *This,
|
||||||
|
IN VOID *Mapping
|
||||||
|
);
|
||||||
#endif // _VIRTIO_PCI_DEVICE_DXE_H_
|
#endif // _VIRTIO_PCI_DEVICE_DXE_H_
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
Copyright (C) 2012, Red Hat, Inc.
|
Copyright (C) 2012, Red Hat, Inc.
|
||||||
Copyright (c) 2012, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2012, Intel Corporation. All rights reserved.<BR>
|
||||||
Copyright (C) 2013, ARM Ltd.
|
Copyright (C) 2013, ARM Ltd.
|
||||||
|
Copyright (C) 2017, AMD Inc, All rights reserved.<BR>
|
||||||
|
|
||||||
This program and the accompanying materials are licensed and made available
|
This program and the accompanying materials are licensed and made available
|
||||||
under the terms and conditions of the BSD License which accompanies this
|
under the terms and conditions of the BSD License which accompanies this
|
||||||
@ -271,3 +272,60 @@ VirtioPciSetDeviceStatus (
|
|||||||
return VirtioPciIoWrite (Dev, VIRTIO_PCI_OFFSET_QUEUE_DEVICE_STATUS,
|
return VirtioPciIoWrite (Dev, VIRTIO_PCI_OFFSET_QUEUE_DEVICE_STATUS,
|
||||||
sizeof (UINT8), DeviceStatus);
|
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;
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user