]> git.proxmox.com Git - mirror_edk2.git/blame - OvmfPkg/Library/XenHypercallLib/XenHypercall.c
OvmfPkg: Apply uncrustify changes
[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
ac0a286f 37 IN UINT32 Index\r
abcbbb14
AP
38 )\r
39{\r
ac0a286f
MK
40 xen_hvm_param_t Parameter;\r
41 INTN Error;\r
abcbbb14 42\r
abcbbb14
AP
43 Parameter.domid = DOMID_SELF;\r
44 Parameter.index = Index;\r
ac0a286f
MK
45 Error = XenHypercall2 (\r
46 __HYPERVISOR_hvm_op,\r
47 HVMOP_get_param,\r
48 (INTN)&Parameter\r
49 );\r
abcbbb14 50 if (Error != 0) {\r
ac0a286f
MK
51 DEBUG ((\r
52 DEBUG_ERROR,\r
53 "XenHypercall: Error %Ld trying to get HVM parameter %d\n",\r
54 (INT64)Error,\r
55 Index\r
56 ));\r
abcbbb14
AP
57 return 0;\r
58 }\r
ac0a286f 59\r
abcbbb14
AP
60 return Parameter.value;\r
61}\r
62\r
63INTN\r
6ad157c3 64EFIAPI\r
abcbbb14 65XenHypercallMemoryOp (\r
ac0a286f
MK
66 IN UINTN Operation,\r
67 IN OUT VOID *Arguments\r
abcbbb14
AP
68 )\r
69{\r
ac0a286f
MK
70 return XenHypercall2 (\r
71 __HYPERVISOR_memory_op,\r
72 Operation,\r
73 (INTN)Arguments\r
74 );\r
abcbbb14
AP
75}\r
76\r
77INTN\r
6ad157c3 78EFIAPI\r
abcbbb14 79XenHypercallEventChannelOp (\r
ac0a286f
MK
80 IN INTN Operation,\r
81 IN OUT VOID *Arguments\r
abcbbb14
AP
82 )\r
83{\r
ac0a286f
MK
84 return XenHypercall2 (\r
85 __HYPERVISOR_event_channel_op,\r
86 Operation,\r
87 (INTN)Arguments\r
88 );\r
abcbbb14 89}\r