Lines Matching +full:1 +full:x64 +full:- +full:bit

1 /* SPDX-License-Identifier: GPL-2.0 */
4 * This file contains definitions from Hyper-V Hypervisor Top-Level Functional
6 * https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/reference/tlfs
17 * While not explicitly listed in the TLFS, Hyper-V always runs with a page size
18 * of 4096. These definitions are used when communicating with Hyper-V using
23 #define HV_HYP_PAGE_SIZE BIT(HV_HYP_PAGE_SHIFT)
24 #define HV_HYP_PAGE_MASK (~(HV_HYP_PAGE_SIZE - 1))
27 * Hyper-V provides two categories of flags relevant to guest VMs. The
29 * to guests on this particular instance of Hyper-V. The "Features"
35 * architecture specific portion of hyperv-tlfs.h. Some of these flags exist
36 * on multiple architectures, but the bit positions are different so they
37 * cannot appear in the generic portion of hyperv-tlfs.h.
42 * the architecture specific portion of hyperv-tlfs.h.
50 #define HV_MSR_VP_RUNTIME_AVAILABLE BIT(0)
52 #define HV_MSR_TIME_REF_COUNT_AVAILABLE BIT(1)
54 #define HV_MSR_SYNIC_AVAILABLE BIT(2)
56 #define HV_MSR_SYNTIMER_AVAILABLE BIT(3)
58 #define HV_MSR_APIC_ACCESS_AVAILABLE BIT(4)
60 #define HV_MSR_HYPERCALL_AVAILABLE BIT(5)
62 #define HV_MSR_VP_INDEX_AVAILABLE BIT(6)
64 #define HV_MSR_RESET_AVAILABLE BIT(7)
66 #define HV_MSR_STAT_PAGES_AVAILABLE BIT(8)
68 #define HV_MSR_REFERENCE_TSC_AVAILABLE BIT(9)
70 #define HV_MSR_GUEST_IDLE_AVAILABLE BIT(10)
72 #define HV_ACCESS_FREQUENCY_MSRS BIT(11)
74 #define HV_ACCESS_REENLIGHTENMENT BIT(13)
76 #define HV_ACCESS_TSC_INVARIANT BIT(15)
81 #define HV_CREATE_PARTITIONS BIT(0)
82 #define HV_ACCESS_PARTITION_ID BIT(1)
83 #define HV_ACCESS_MEMORY_POOL BIT(2)
84 #define HV_ADJUST_MESSAGE_BUFFERS BIT(3)
85 #define HV_POST_MESSAGES BIT(4)
86 #define HV_SIGNAL_EVENTS BIT(5)
87 #define HV_CREATE_PORT BIT(6)
88 #define HV_CONNECT_PORT BIT(7)
89 #define HV_ACCESS_STATS BIT(8)
90 #define HV_DEBUGGING BIT(11)
91 #define HV_CPU_MANAGEMENT BIT(12)
92 #define HV_ENABLE_EXTENDED_HYPERCALLS BIT(20)
93 #define HV_ISOLATION BIT(22)
108 u64 enable:1;
116 * The guest ID is a 64 bit entity and the structure of this ID is
117 * specified in the Hyper-V specification:
119 * msdn.microsoft.com/en-us/library/windows/hardware/ff542653%28v=vs.85%29.aspx
124 * on Hyper-V. The implementation here conforms to this yet
128 * Bit(s)
129 * 63 - Indicates if the OS is Open Source or not; 1 is Open Source
130 * 62:56 - Os Type; Linux is 0x100
131 * 55:48 - Distro specific identification
132 * 47:16 - Linux kernel version number
133 * 15:0 - Distro specific identification
181 #define HV_FLUSH_ALL_PROCESSORS BIT(0)
182 #define HV_FLUSH_ALL_VIRTUAL_ADDRESS_SPACES BIT(1)
183 #define HV_FLUSH_NON_GLOBAL_MAPPINGS_ONLY BIT(2)
184 #define HV_FLUSH_USE_EXTENDED_RANGE_FORMAT BIT(3)
187 #define HV_EXT_CAPABILITY_MEMORY_COLD_DISCARD_HINT BIT(8)
194 #define HV_PARTITION_ID_SELF ((u64)-1)
195 #define HV_VP_INDEX_SELF ((u32)-2)
198 #define HV_HYPERCALL_FAST_BIT BIT(16)
230 * The Hyper-V TimeRefCount register and the TSC
239 /* Valid SynIC vectors are 16-255. */
242 #define HV_SYNIC_CONTROL_ENABLE (1ULL << 0)
243 #define HV_SYNIC_SIMP_ENABLE (1ULL << 0)
244 #define HV_SYNIC_SIEFP_ENABLE (1ULL << 0)
245 #define HV_SYNIC_SINT_MASKED (1ULL << 16)
246 #define HV_SYNIC_SINT_AUTO_EOI (1ULL << 17)
258 * are x86/x64 specific, but there's no good way to separate
259 * them out into the arch-specific version of hyperv-tlfs.h
261 * Keeping them all in the arch neutral hyperv-tlfs.h seems
282 /* Platform-specific processor intercept messages. */
295 __u8 msg_pending:1;
353 u64 enable:1;
354 u64 periodic:1;
355 u64 lazy:1;
356 u64 auto_enable:1;
358 u64 direct_mode:1;
375 u64 enable:1;
386 u64 masked:1;
387 u64 auto_eoi:1;
388 u64 polling:1;
397 u64 simp_enabled:1;
407 u64 siefp_enabled:1;
445 * HV_MAX_FLUSH_PAGES = "additional_pages" + 1. It's limited
450 #define HV_GPA_PAGE_RANGE_PAGE_SIZE_1GB 1
457 u64 largepage:1;
462 u64 page_size:1;
473 #define HV_MAX_FLUSH_REP_COUNT ((HV_HYP_PAGE_SIZE - 2 * sizeof(u64)) / \
510 u32 proximity_preferred : 1;
512 u32 proximity_info_valid : 1;
544 HvSubnodeSocket = 1,
548 HvSubnodeInvalid = -1
563 HV_INTERRUPT_SOURCE_MSI = 1, /* MSI and MSI-X */
573 u32 destination_mode:1;
574 u32 delivery_status:1;
575 u32 interrupt_polarity:1;
576 u32 remote_irr:1;
577 u32 trigger_mode:1;
578 u32 interrupt_mask:1;
603 #define HV_DEVICE_INTERRUPT_TARGET_MULTICAST 1
624 * These Hyper-V registers provide information equivalent to the CPUID
625 * instruction on x86/x64.
632 * Synthetic register definitions equivalent to MSRs on x86/x64
704 HV_DEVICE_TYPE_PCI = 1,
756 u16 source_shadow:1;
783 HV_INTERRUPT_TRIGGER_MODE_LEVEL = 1,
843 ((HV_HYP_PAGE_SIZE - sizeof(struct hv_memory_hint)) / \