]> git.proxmox.com Git - mirror_edk2.git/blame - OvmfPkg/Library/XenHypercallLib/XenHypercall.c
OvmfPkg: replace old EFI_D_ debug levels with new DEBUG_ ones
[mirror_edk2.git] / OvmfPkg / Library / XenHypercallLib / XenHypercall.c
CommitLineData
abcbbb14
AP
1/** @file\r
2 Functions to make Xen hypercalls.\r
3\r
4 Copyright (C) 2014, Citrix Ltd.\r
5\r
b26f0cf9 6 SPDX-License-Identifier: BSD-2-Clause-Patent\r
abcbbb14
AP
7\r
8**/\r
9\r
10#include <PiDxe.h>\r
abcbbb14
AP
11\r
12#include <IndustryStandard/Xen/hvm/params.h>\r
13#include <IndustryStandard/Xen/memory.h>\r
14\r
cd8ff8fd
AB
15#include <Library/DebugLib.h>\r
16#include <Library/XenHypercallLib.h>\r
abcbbb14 17\r
68f4599d
AP
18RETURN_STATUS\r
19EFIAPI\r
20XenHypercallLibConstruct (\r
21 VOID\r
22 )\r
23{\r
24 XenHypercallLibInit ();\r
25 //\r
26 // We don't fail library construction, since that has catastrophic\r
27 // consequences for client modules (whereas those modules may easily be\r
28 // running on a non-Xen platform). Instead, XenHypercallIsAvailable()\r
29 // will return FALSE.\r
30 //\r
31 return RETURN_SUCCESS;\r
32}\r
33\r
abcbbb14 34UINT64\r
6ad157c3 35EFIAPI\r
abcbbb14 36XenHypercallHvmGetParam (\r
cec6ad0a 37 IN UINT32 Index\r
abcbbb14
AP
38 )\r
39{\r
40 xen_hvm_param_t Parameter;\r
41 INTN Error;\r
42\r
abcbbb14
AP
43 Parameter.domid = DOMID_SELF;\r
44 Parameter.index = Index;\r
bbc3758a 45 Error = XenHypercall2 (__HYPERVISOR_hvm_op,\r
abcbbb14
AP
46 HVMOP_get_param, (INTN) &Parameter);\r
47 if (Error != 0) {\r
70d5086c 48 DEBUG ((DEBUG_ERROR,\r
6394c35a
LE
49 "XenHypercall: Error %Ld trying to get HVM parameter %d\n",\r
50 (INT64)Error, Index));\r
abcbbb14
AP
51 return 0;\r
52 }\r
53 return Parameter.value;\r
54}\r
55\r
56INTN\r
6ad157c3 57EFIAPI\r
abcbbb14 58XenHypercallMemoryOp (\r
abcbbb14
AP
59 IN UINTN Operation,\r
60 IN OUT VOID *Arguments\r
61 )\r
62{\r
bbc3758a 63 return XenHypercall2 (__HYPERVISOR_memory_op,\r
abcbbb14
AP
64 Operation, (INTN) Arguments);\r
65}\r
66\r
67INTN\r
6ad157c3 68EFIAPI\r
abcbbb14 69XenHypercallEventChannelOp (\r
abcbbb14
AP
70 IN INTN Operation,\r
71 IN OUT VOID *Arguments\r
72 )\r
73{\r
bbc3758a 74 return XenHypercall2 (__HYPERVISOR_event_channel_op,\r
abcbbb14
AP
75 Operation, (INTN) Arguments);\r
76}\r