12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- /** @file
- Driver for the XenIo protocol
- This driver simply allocate space for the grant tables.
- Copyright (c) 2019, Citrix Systems, Inc.
- SPDX-License-Identifier: BSD-2-Clause-Patent
- **/
- #include <Library/MemoryAllocationLib.h>
- #include <Library/PcdLib.h>
- #include <Library/XenIoMmioLib.h>
- #include <Library/XenPlatformLib.h>
- EFI_STATUS
- EFIAPI
- InitializeXenIoPvhDxe (
- IN EFI_HANDLE ImageHandle,
- IN EFI_SYSTEM_TABLE *SystemTable
- )
- {
- VOID *Allocation;
- EFI_STATUS Status;
- EFI_HANDLE XenIoHandle;
- Allocation = NULL;
- XenIoHandle = NULL;
- if (!XenPvhDetected ()) {
- return EFI_UNSUPPORTED;
- }
- Allocation = AllocateReservedPages (FixedPcdGet32 (PcdXenGrantFrames));
- if (Allocation == NULL) {
- Status = EFI_OUT_OF_RESOURCES;
- goto Error;
- }
- Status = XenIoMmioInstall (&XenIoHandle, (UINTN)Allocation);
- if (EFI_ERROR (Status)) {
- goto Error;
- }
- return EFI_SUCCESS;
- Error:
- if (Allocation != NULL) {
- FreePages (Allocation, FixedPcdGet32 (PcdXenGrantFrames));
- }
- return Status;
- }
|