^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) /******************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) * features.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) * Feature flags, reported by XENVER_get_features.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) * Copyright (c) 2006, Keir Fraser <keir@xensource.com>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) #ifndef __XEN_PUBLIC_FEATURES_H__
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) #define __XEN_PUBLIC_FEATURES_H__
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) * If set, the guest does not need to write-protect its pagetables, and can
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) * update them via direct writes.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) #define XENFEAT_writable_page_tables 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) * If set, the guest does not need to write-protect its segment descriptor
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) * tables, and can update them via direct writes.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) #define XENFEAT_writable_descriptor_tables 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) * If set, translation between the guest's 'pseudo-physical' address space
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) * and the host's machine address space are handled by the hypervisor. In this
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) * mode the guest does not need to perform phys-to/from-machine translations
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) * when performing page table operations.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) #define XENFEAT_auto_translated_physmap 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) /* If set, the guest is running in supervisor mode (e.g., x86 ring 0). */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) #define XENFEAT_supervisor_mode_kernel 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) * If set, the guest does not need to allocate x86 PAE page directories
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) * below 4GB. This flag is usually implied by auto_translated_physmap.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) #define XENFEAT_pae_pgdir_above_4gb 4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) /* x86: Does this Xen host support the MMU_PT_UPDATE_PRESERVE_AD hypercall? */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) #define XENFEAT_mmu_pt_update_preserve_ad 5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) /* x86: Does this Xen host support the MMU_{CLEAR,COPY}_PAGE hypercall? */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) #define XENFEAT_highmem_assist 6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) * If set, GNTTABOP_map_grant_ref honors flags to be placed into guest kernel
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) * available pte bits.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) #define XENFEAT_gnttab_map_avail_bits 7
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) /* x86: Does this Xen host support the HVM callback vector type? */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) #define XENFEAT_hvm_callback_vector 8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) /* x86: pvclock algorithm is safe to use on HVM */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) #define XENFEAT_hvm_safe_pvclock 9
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) /* x86: pirq can be used by HVM guests */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) #define XENFEAT_hvm_pirqs 10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) /* operation as Dom0 is supported */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) #define XENFEAT_dom0 11
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) /* Xen also maps grant references at pfn = mfn.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) * This feature flag is deprecated and should not be used.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) #define XENFEAT_grant_map_identity 12
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) /* Guest can use XENMEMF_vnode to specify virtual node for memory op. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) #define XENFEAT_memory_op_vnode_supported 13
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) /* arm: Hypervisor supports ARM SMC calling convention. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) #define XENFEAT_ARM_SMCCC_supported 14
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) * x86/PVH: If set, ACPI RSDP can be placed at any address. Otherwise RSDP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) * must be located in lower 1MB, as required by ACPI Specification for IA-PC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) * systems.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) * This feature flag is only consulted if XEN_ELFNOTE_GUEST_OS contains
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) * the "linux" string.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) #define XENFEAT_linux_rsdp_unrestricted 15
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) #define XENFEAT_NR_SUBMAPS 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) #endif /* __XEN_PUBLIC_FEATURES_H__ */