pvreg.h 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. /* $OpenBSD: pvreg.h,v 1.3 2015/07/29 17:08:46 mikeb Exp $ */
  2. /*
  3. * Copyright (c) 2015 Reyk Floeter <reyk@openbsd.org>
  4. * Copyright (c) 2015 Stefan Fritsch <sf@sfritsch.de>
  5. *
  6. * Permission to use, copy, modify, and distribute this software for any
  7. * purpose with or without fee is hereby granted, provided that the above
  8. * copyright notice and this permission notice appear in all copies.
  9. *
  10. * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
  11. * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
  12. * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
  13. * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  14. * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
  15. * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  16. * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  17. */
  18. #ifndef _DEV_PV_PVBUS_H_
  19. #define _DEV_PV_PVBUS_H_
  20. #define CPUID_HV_SIGNATURE_START 0x40000000
  21. #define CPUID_HV_SIGNATURE_END 0x40010000
  22. #define CPUID_HV_SIGNATURE_STEP 0x100
  23. #define CPUID_HV_SIGNATURE_STRLEN 12
  24. /*
  25. * KVM
  26. */
  27. #define CPUID_OFFSET_KVM_FEATURES 0x1
  28. #define KVM_FEATURE_CLOCKSOURCE 0 /* deprecated */
  29. #define KVM_FEATURE_NOP_IO_DELAY 1
  30. #define KVM_FEATURE_MMU_OP 2 /* deprecated */
  31. #define KVM_FEATURE_CLOCKSOURCE2 3
  32. #define KVM_FEATURE_ASYNC_PF 4
  33. #define KVM_FEATURE_STEAL_TIME 5
  34. #define KVM_FEATURE_PV_EOI 6
  35. #define KVM_FEATURE_PV_UNHALT 7
  36. #define KVM_FEATURE_CLOCKSOURCE_STABLE_BIT 24
  37. #define KVM_MSR_EOI_EN 0x4b564d04
  38. #define KVM_PV_EOI_BIT 0
  39. /*
  40. * Hyper-V
  41. */
  42. #define CPUID_OFFSET_HYPERV_INTERFACE 0x1
  43. #define CPUID_OFFSET_HYPERV_VERSION 0x2
  44. #define CPUID_OFFSET_HYPERV_FEATURES 0x3
  45. #define CPUID_OFFSET_HYPERV_ENLIGHTENMENT_INFO 0x4
  46. #define CPUID_OFFSET_HYPERV_IMPL_LIMITS 0x5
  47. #define HYPERV_VERSION_EAX_BUILD_NUMBER 0
  48. #define HYPERV_VERSION_EBX_MAJOR_M 0xffff0000
  49. #define HYPERV_VERSION_EBX_MAJOR_S 16
  50. #define HYPERV_VERSION_EBX_MINOR_M 0x0000ffff
  51. #define HYPERV_VERSION_EBX_MINOR_S 0
  52. #define HYPERV_VERSION_ECX_SERVICE_PACK 0
  53. #define HYPERV_VERSION_EDX_SERVICE_BRANCH_M 0xff000000
  54. #define HYPERV_VERSION_EDX_SERVICE_BRANCH_S 24
  55. #define HYPERV_VERSION_EDX_SERVICE_NUMBER_M 0x00ffffff
  56. #define HYPERV_VERSION_EDX_SERVICE_NUMBER_S 0
  57. #define HYPERV_VERSION_WS2008 0x00060000
  58. #define HYPERV_VERSION_WIN7 0x00060001
  59. #define HYPERV_VERSION_WIN8 0x00060002
  60. #define HYPERV_VERSION_WIN8_1 0x00060003
  61. #define HYPERV_VERSION_WIN10 0x00100000
  62. #define HYPERV_FEATURE_EAX_VP_RUNTIME 0
  63. #define HYPERV_FEATURE_EAX_TIME_REF_COUNT 1
  64. #define HYPERV_FEATURE_EAX_SYNIC 2
  65. #define HYPERV_FEATURE_EAX_STIMER 3
  66. #define HYPERV_FEATURE_EAX_APIC 4
  67. #define HYPERV_FEATURE_EAX_HYPERCALL 5
  68. #define HYPERV_FEATURE_EAX_VP_INDEX 6
  69. #define HYPERV_FEATURE_EAX_MSR_RESET 7
  70. #define HYPERV_FEATURE_EAX_STATS_PAGES 8
  71. #define HYPERV_FEATURE_EAX_REF_TSC 9
  72. #define HYPERV_FEATURE_EAX_GUEST_IDLE 10
  73. #define HYPERV_FEATURE_EAX_TIMER_FREQ 11
  74. #define HYPERV_FEATURE_EAX_DEBUG 12
  75. /*
  76. * Xen
  77. */
  78. #define CPUID_OFFSET_XEN_VERSION 0x1
  79. #define XEN_VERSION_MAJOR_S 16
  80. #define XEN_VERSION_MINOR_M 0xffff
  81. #endif /* _DEV_PV_PVBUS_H_ */