features.h 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. /* SPDX-License-Identifier: MIT */
  2. /******************************************************************************
  3. * features.h
  4. *
  5. * Feature flags, reported by XENVER_get_features.
  6. *
  7. * Copyright (c) 2006, Keir Fraser <keir@xensource.com>
  8. */
  9. #ifndef __XEN_PUBLIC_FEATURES_H__
  10. #define __XEN_PUBLIC_FEATURES_H__
  11. /*
  12. * `incontents 200 elfnotes_features XEN_ELFNOTE_FEATURES
  13. *
  14. * The list of all the features the guest supports. They are set by
  15. * parsing the XEN_ELFNOTE_FEATURES and XEN_ELFNOTE_SUPPORTED_FEATURES
  16. * string. The format is the feature names (as given here without the
  17. * "XENFEAT_" prefix) separated by '|' characters.
  18. * If a feature is required for the kernel to function then the feature name
  19. * must be preceded by a '!' character.
  20. *
  21. * Note that if XEN_ELFNOTE_SUPPORTED_FEATURES is used, then in the
  22. * XENFEAT_dom0 MUST be set if the guest is to be booted as dom0,
  23. */
  24. /*
  25. * If set, the guest does not need to write-protect its pagetables, and can
  26. * update them via direct writes.
  27. */
  28. #define XENFEAT_writable_page_tables 0
  29. /*
  30. * If set, the guest does not need to write-protect its segment descriptor
  31. * tables, and can update them via direct writes.
  32. */
  33. #define XENFEAT_writable_descriptor_tables 1
  34. /*
  35. * If set, translation between the guest's 'pseudo-physical' address space
  36. * and the host's machine address space are handled by the hypervisor. In this
  37. * mode the guest does not need to perform phys-to/from-machine translations
  38. * when performing page table operations.
  39. */
  40. #define XENFEAT_auto_translated_physmap 2
  41. /* If set, the guest is running in supervisor mode (e.g., x86 ring 0). */
  42. #define XENFEAT_supervisor_mode_kernel 3
  43. /*
  44. * If set, the guest does not need to allocate x86 PAE page directories
  45. * below 4GB. This flag is usually implied by auto_translated_physmap.
  46. */
  47. #define XENFEAT_pae_pgdir_above_4gb 4
  48. /* x86: Does this Xen host support the MMU_PT_UPDATE_PRESERVE_AD hypercall? */
  49. #define XENFEAT_mmu_pt_update_preserve_ad 5
  50. /* x86: Does this Xen host support the MMU_{CLEAR,COPY}_PAGE hypercall? */
  51. #define XENFEAT_highmem_assist 6
  52. /*
  53. * If set, GNTTABOP_map_grant_ref honors flags to be placed into guest kernel
  54. * available pte bits.
  55. */
  56. #define XENFEAT_gnttab_map_avail_bits 7
  57. /* x86: Does this Xen host support the HVM callback vector type? */
  58. #define XENFEAT_hvm_callback_vector 8
  59. /* x86: pvclock algorithm is safe to use on HVM */
  60. #define XENFEAT_hvm_safe_pvclock 9
  61. /* x86: pirq can be used by HVM guests */
  62. #define XENFEAT_hvm_pirqs 10
  63. /* operation as Dom0 is supported */
  64. #define XENFEAT_dom0 11
  65. /* Xen also maps grant references at pfn = mfn.
  66. * This feature flag is deprecated and should not be used.
  67. #define XENFEAT_grant_map_identity 12
  68. */
  69. /* Guest can use XENMEMF_vnode to specify virtual node for memory op. */
  70. #define XENFEAT_memory_op_vnode_supported 13
  71. /* arm: Hypervisor supports ARM SMC calling convention. */
  72. #define XENFEAT_ARM_SMCCC_supported 14
  73. /*
  74. * x86/PVH: If set, ACPI RSDP can be placed at any address. Otherwise RSDP
  75. * must be located in lower 1MB, as required by ACPI Specification for IA-PC
  76. * systems.
  77. * This feature flag is only consulted if XEN_ELFNOTE_GUEST_OS contains
  78. * the "linux" string.
  79. */
  80. #define XENFEAT_linux_rsdp_unrestricted 15
  81. /*
  82. * A direct-mapped (or 1:1 mapped) domain is a domain for which its
  83. * local pages have gfn == mfn. If a domain is direct-mapped,
  84. * XENFEAT_direct_mapped is set; otherwise XENFEAT_not_direct_mapped
  85. * is set.
  86. *
  87. * If neither flag is set (e.g. older Xen releases) the assumptions are:
  88. * - not auto_translated domains (x86 only) are always direct-mapped
  89. * - on x86, auto_translated domains are not direct-mapped
  90. * - on ARM, Dom0 is direct-mapped, DomUs are not
  91. */
  92. #define XENFEAT_not_direct_mapped 16
  93. #define XENFEAT_direct_mapped 17
  94. #define XENFEAT_NR_SUBMAPS 1
  95. #endif /* __XEN_PUBLIC_FEATURES_H__ */
  96. /*
  97. * Local variables:
  98. * mode: C
  99. * c-file-style: "BSD"
  100. * c-basic-offset: 4
  101. * tab-width: 4
  102. * indent-tabs-mode: nil
  103. * End:
  104. */