diff options
Diffstat (limited to 'include/xen')
-rw-r--r-- | include/xen/interface/platform.h | 17 | ||||
-rw-r--r-- | include/xen/interface/version.h | 15 |
2 files changed, 32 insertions, 0 deletions
diff --git a/include/xen/interface/platform.h b/include/xen/interface/platform.h index 4755b5fac9c7..5e36932ab407 100644 --- a/include/xen/interface/platform.h +++ b/include/xen/interface/platform.h | |||
@@ -324,6 +324,22 @@ struct xenpf_cpu_ol { | |||
324 | }; | 324 | }; |
325 | DEFINE_GUEST_HANDLE_STRUCT(xenpf_cpu_ol); | 325 | DEFINE_GUEST_HANDLE_STRUCT(xenpf_cpu_ol); |
326 | 326 | ||
327 | /* | ||
328 | * CMD 58 and 59 are reserved for cpu hotadd and memory hotadd, | ||
329 | * which are already occupied at Xen hypervisor side. | ||
330 | */ | ||
331 | #define XENPF_core_parking 60 | ||
332 | struct xenpf_core_parking { | ||
333 | /* IN variables */ | ||
334 | #define XEN_CORE_PARKING_SET 1 | ||
335 | #define XEN_CORE_PARKING_GET 2 | ||
336 | uint32_t type; | ||
337 | /* IN variables: set cpu nums expected to be idled */ | ||
338 | /* OUT variables: get cpu nums actually be idled */ | ||
339 | uint32_t idle_nums; | ||
340 | }; | ||
341 | DEFINE_GUEST_HANDLE_STRUCT(xenpf_core_parking); | ||
342 | |||
327 | struct xen_platform_op { | 343 | struct xen_platform_op { |
328 | uint32_t cmd; | 344 | uint32_t cmd; |
329 | uint32_t interface_version; /* XENPF_INTERFACE_VERSION */ | 345 | uint32_t interface_version; /* XENPF_INTERFACE_VERSION */ |
@@ -341,6 +357,7 @@ struct xen_platform_op { | |||
341 | struct xenpf_set_processor_pminfo set_pminfo; | 357 | struct xenpf_set_processor_pminfo set_pminfo; |
342 | struct xenpf_pcpuinfo pcpu_info; | 358 | struct xenpf_pcpuinfo pcpu_info; |
343 | struct xenpf_cpu_ol cpu_ol; | 359 | struct xenpf_cpu_ol cpu_ol; |
360 | struct xenpf_core_parking core_parking; | ||
344 | uint8_t pad[128]; | 361 | uint8_t pad[128]; |
345 | } u; | 362 | } u; |
346 | }; | 363 | }; |
diff --git a/include/xen/interface/version.h b/include/xen/interface/version.h index 7ff6498679a3..96d8d3deea6b 100644 --- a/include/xen/interface/version.h +++ b/include/xen/interface/version.h | |||
@@ -63,4 +63,19 @@ struct xen_feature_info { | |||
63 | /* arg == xen_domain_handle_t. */ | 63 | /* arg == xen_domain_handle_t. */ |
64 | #define XENVER_guest_handle 8 | 64 | #define XENVER_guest_handle 8 |
65 | 65 | ||
66 | /* Check if running on Xen version (major, minor) or later */ | ||
67 | static inline bool | ||
68 | xen_running_on_version_or_later(unsigned int major, unsigned int minor) | ||
69 | { | ||
70 | unsigned int version; | ||
71 | |||
72 | if (!xen_domain()) | ||
73 | return false; | ||
74 | |||
75 | version = HYPERVISOR_xen_version(XENVER_version, NULL); | ||
76 | if ((((version >> 16) == major) && ((version & 0xffff) >= minor)) || | ||
77 | ((version >> 16) > major)) | ||
78 | return true; | ||
79 | return false; | ||
80 | } | ||
66 | #endif /* __XEN_PUBLIC_VERSION_H__ */ | 81 | #endif /* __XEN_PUBLIC_VERSION_H__ */ |