37 XENBUS_ROOT_DEVICE_GUID,
42 END_ENTIRE_DEVICE_PATH_SUBTYPE,
78 ASSERT (Handle !=
NULL);
84 return EFI_OUT_OF_RESOURCES;
87 XenIo->GrantTableAddress = GrantTableAddress;
90 sizeof *XenBusDevicePath,
91 &mXenBusRootDevicePathTemplate
93 if (!XenBusDevicePath) {
94 DEBUG ((DEBUG_ERROR,
"%a: Out of memory\n", __func__));
95 Status = EFI_OUT_OF_RESOURCES;
99 XenBusDevicePath->GrantTableAddress = GrantTableAddress;
101 Status =
gBS->InstallMultipleProtocolInterfaces (
103 &gEfiDevicePathProtocolGuid,
109 if (!EFI_ERROR (Status)) {
116 "%a: Failed to install the EFI_DEVICE_PATH and "
117 "XENIO_PROTOCOL protocols on handle %p (Status == %r)\n",
150 VOID *XenBusDevicePath;
152 XenBusDevicePath =
NULL;
155 &gEfiDevicePathProtocolGuid,
159 EFI_OPEN_PROTOCOL_GET_PROTOCOL
169 EFI_OPEN_PROTOCOL_GET_PROTOCOL
172 Status =
gBS->UninstallMultipleProtocolInterfaces (
174 &gEfiDevicePathProtocolGuid,
181 if (EFI_ERROR (Status)) {
#define HARDWARE_DEVICE_PATH
VOID *EFIAPI AllocateZeroPool(IN UINTN AllocationSize)
VOID EFIAPI FreePool(IN VOID *Buffer)
VOID *EFIAPI AllocateCopyPool(IN UINTN AllocationSize, IN CONST VOID *Buffer)
#define DEBUG(Expression)
UINT64 EFI_PHYSICAL_ADDRESS
EFI_STATUS XenIoMmioUninstall(IN EFI_HANDLE Handle)
EFI_STATUS XenIoMmioInstall(IN OUT EFI_HANDLE *Handle, IN EFI_PHYSICAL_ADDRESS GrantTableAddress)