/
usr
/
src
/
kernels
/
4.18.0-553.157.1.el8_10.x86_64
/
arch
/
x86
/
include
/
asm
/
/usr/src/kernels/4.18.0-553.157.1.el8_10.x86_64/arch/x86/include/asm
mkdir
upload
Name
Size
Mode
Actions
crypto/
-
0755
rm
e820/
-
0755
rm
fpu/
-
0755
rm
numachip/
-
0755
rm
shared/
-
0755
rm
trace/
-
0755
rm
uv/
-
0755
rm
vdso/
-
0755
rm
xen/
-
0755
rm
a.out-core.h
1931
0644
edit
dl
rm
acenv.h
1596
0644
edit
dl
rm
acpi.h
5300
0644
edit
dl
rm
agp.h
1070
0644
edit
dl
rm
alternative.h
11407
0644
edit
dl
rm
amd-ibs.h
5020
0644
edit
dl
rm
amd_hsmp.h
364
0644
edit
dl
rm
amd_nb.h
3086
0644
edit
dl
rm
apb_timer.h
1466
0644
edit
dl
rm
apic.h
14661
0644
edit
dl
rm
apicdef.h
11565
0644
edit
dl
rm
apic_flat_64.h
151
0644
edit
dl
rm
apm.h
1768
0644
edit
dl
rm
archrandom.h
3221
0644
edit
dl
rm
arch_hweight.h
1311
0644
edit
dl
rm
asm-offsets.h
35
0644
edit
dl
rm
asm-prototypes.h
946
0644
edit
dl
rm
asm.h
5186
0644
edit
dl
rm
atomic.h
6279
0644
edit
dl
rm
atomic64_32.h
8150
0644
edit
dl
rm
atomic64_64.h
5933
0644
edit
dl
rm
audit.h
170
0644
edit
dl
rm
barrier.h
2471
0644
edit
dl
rm
bios_ebda.h
914
0644
edit
dl
rm
bitops.h
10727
0644
edit
dl
rm
boot.h
1825
0644
edit
dl
rm
bootparam_utils.h
2907
0644
edit
dl
rm
bug.h
2117
0644
edit
dl
rm
bugs.h
533
0644
edit
dl
rm
cache.h
641
0644
edit
dl
rm
cacheflush.h
306
0644
edit
dl
rm
cacheinfo.h
209
0644
edit
dl
rm
calgary.h
2370
0644
edit
dl
rm
ce4100.h
121
0644
edit
dl
rm
checksum.h
133
0644
edit
dl
rm
checksum_32.h
4964
0644
edit
dl
rm
checksum_64.h
5541
0644
edit
dl
rm
clocksource.h
480
0644
edit
dl
rm
cmdline.h
302
0644
edit
dl
rm
cmpxchg.h
7891
0644
edit
dl
rm
cmpxchg_32.h
3247
0644
edit
dl
rm
cmpxchg_64.h
552
0644
edit
dl
rm
coco.h
482
0644
edit
dl
rm
compat.h
4861
0644
edit
dl
rm
cpu.h
2607
0644
edit
dl
rm
cpufeature.h
9470
0644
edit
dl
rm
cpufeatures.h
32845
0644
edit
dl
rm
cpuid.h
498
0644
edit
dl
rm
cpuidle_haltpoll.h
189
0644
edit
dl
rm
cpumask.h
408
0644
edit
dl
rm
cpu_device_id.h
8109
0644
edit
dl
rm
cpu_entry_area.h
4162
0644
edit
dl
rm
crash.h
300
0644
edit
dl
rm
current.h
443
0644
edit
dl
rm
debugreg.h
3411
0644
edit
dl
rm
delay.h
275
0644
edit
dl
rm
desc.h
12274
0644
edit
dl
rm
desc_defs.h
3396
0644
edit
dl
rm
device.h
328
0644
edit
dl
rm
disabled-features.h
3559
0644
edit
dl
rm
div64.h
2189
0644
edit
dl
rm
dma-mapping.h
288
0644
edit
dl
rm
dma.h
9827
0644
edit
dl
rm
dmi.h
556
0644
edit
dl
rm
dwarf2.h
2487
0644
edit
dl
rm
edac.h
474
0644
edit
dl
rm
efi.h
7416
0644
edit
dl
rm
elf.h
12640
0644
edit
dl
rm
emergency-restart.h
202
0644
edit
dl
rm
emulate_prefix.h
484
0644
edit
dl
rm
enclu.h
181
0644
edit
dl
rm
entry_arch.h
1922
0644
edit
dl
rm
espfix.h
426
0644
edit
dl
rm
exec.h
37
0644
edit
dl
rm
export.h
120
0644
edit
dl
rm
extable.h
1300
0644
edit
dl
rm
fb.h
540
0644
edit
dl
rm
fixmap.h
6381
0644
edit
dl
rm
floppy.h
6748
0644
edit
dl
rm
frame.h
2237
0644
edit
dl
rm
fsgsbase.h
2072
0644
edit
dl
rm
ftrace.h
2777
0644
edit
dl
rm
futex.h
2269
0644
edit
dl
rm
gart.h
2682
0644
edit
dl
rm
genapic.h
22
0644
edit
dl
rm
geode.h
842
0644
edit
dl
rm
hardirq.h
2207
0644
edit
dl
rm
highmem.h
2466
0644
edit
dl
rm
hpet.h
3461
0644
edit
dl
rm
hugetlb.h
1867
0644
edit
dl
rm
hw_breakpoint.h
2112
0644
edit
dl
rm
hw_irq.h
4126
0644
edit
dl
rm
hyperv-tlfs.h
22337
0644
edit
dl
rm
hypervisor.h
1975
0644
edit
dl
rm
i8259.h
1975
0644
edit
dl
rm
ia32.h
1789
0644
edit
dl
rm
ia32_unistd.h
313
0644
edit
dl
rm
imr.h
1849
0644
edit
dl
rm
inat.h
6736
0644
edit
dl
rm
inat_types.h
1013
0644
edit
dl
rm
init.h
632
0644
edit
dl
rm
insn-eval.h
1546
0644
edit
dl
rm
insn.h
8098
0644
edit
dl
rm
inst.h
5453
0644
edit
dl
rm
intel-family.h
5168
0644
edit
dl
rm
intel-mid.h
5025
0644
edit
dl
rm
intel_ds.h
849
0644
edit
dl
rm
intel_mid_vrtc.h
330
0644
edit
dl
rm
intel_pconfig.h
1545
0644
edit
dl
rm
intel_pmc_ipc.h
2267
0644
edit
dl
rm
intel_pt.h
1276
0644
edit
dl
rm
intel_punit_ipc.h
4666
0644
edit
dl
rm
intel_scu_ipc.h
2351
0644
edit
dl
rm
intel_telemetry.h
4060
0644
edit
dl
rm
invpcid.h
1604
0644
edit
dl
rm
io.h
11872
0644
edit
dl
rm
iomap.h
1228
0644
edit
dl
rm
iommu.h
935
0644
edit
dl
rm
iosf_mbi.h
7354
0644
edit
dl
rm
io_apic.h
5890
0644
edit
dl
rm
ipi.h
2873
0644
edit
dl
rm
irq.h
1415
0644
edit
dl
rm
irqdomain.h
1796
0644
edit
dl
rm
irqflags.h
4161
0644
edit
dl
rm
irq_regs.h
683
0644
edit
dl
rm
irq_remapping.h
2865
0644
edit
dl
rm
irq_vectors.h
4105
0644
edit
dl
rm
irq_work.h
465
0644
edit
dl
rm
ist.h
735
0644
edit
dl
rm
jailhouse_para.h
449
0644
edit
dl
rm
jump_label.h
2529
0644
edit
dl
rm
kasan.h
1291
0644
edit
dl
rm
kaslr.h
314
0644
edit
dl
rm
kbdleds.h
454
0644
edit
dl
rm
Kbuild
319
0644
edit
dl
rm
kdebug.h
1042
0644
edit
dl
rm
kexec-bzimage64.h
195
0644
edit
dl
rm
kexec.h
5843
0644
edit
dl
rm
kgdb.h
2143
0644
edit
dl
rm
kprobes.h
3701
0644
edit
dl
rm
kvm-x86-ops.h
3989
0644
edit
dl
rm
kvmclock.h
506
0644
edit
dl
rm
kvm_host.h
63925
0644
edit
dl
rm
kvm_page_track.h
2700
0644
edit
dl
rm
kvm_para.h
4422
0644
edit
dl
rm
kvm_types.h
178
0644
edit
dl
rm
kvm_vcpu_regs.h
606
0644
edit
dl
rm
linkage.h
1268
0644
edit
dl
rm
livepatch.h
1039
0644
edit
dl
rm
local.h
3925
0644
edit
dl
rm
local64.h
33
0644
edit
dl
rm
mach_timer.h
1590
0644
edit
dl
rm
mach_traps.h
1013
0644
edit
dl
rm
math_emu.h
395
0644
edit
dl
rm
mc146818rtc.h
2835
0644
edit
dl
rm
mce.h
11909
0644
edit
dl
rm
mcsafe_test.h
1418
0644
edit
dl
rm
memtype.h
815
0644
edit
dl
rm
mem_encrypt.h
3543
0644
edit
dl
rm
microcode.h
3557
0644
edit
dl
rm
microcode_amd.h
1373
0644
edit
dl
rm
microcode_intel.h
2619
0644
edit
dl
rm
misc.h
143
0644
edit
dl
rm
mmconfig.h
374
0644
edit
dl
rm
mmu.h
1689
0644
edit
dl
rm
mmu_context.h
10118
0644
edit
dl
rm
mmx.h
337
0644
edit
dl
rm
mmzone.h
129
0644
edit
dl
rm
mmzone_32.h
1188
0644
edit
dl
rm
mmzone_64.h
430
0644
edit
dl
rm
module.h
2096
0644
edit
dl
rm
mpspec.h
4023
0644
edit
dl
rm
mpspec_def.h
4256
0644
edit
dl
rm
mpx.h
3125
0644
edit
dl
rm
mshyperv.h
10142
0644
edit
dl
rm
msi.h
1508
0644
edit
dl
rm
msidef.h
1814
0644
edit
dl
rm
msr-index.h
42495
0644
edit
dl
rm
msr-trace.h
1387
0644
edit
dl
rm
msr.h
11290
0644
edit
dl
rm
mtrr.h
4753
0644
edit
dl
rm
mwait.h
4968
0644
edit
dl
rm
nmi.h
1496
0644
edit
dl
rm
nops.h
4412
0644
edit
dl
rm
nospec-branch.h
14205
0644
edit
dl
rm
numa.h
2228
0644
edit
dl
rm
numa_32.h
256
0644
edit
dl
rm
olpc.h
3240
0644
edit
dl
rm
olpc_ofw.h
1128
0644
edit
dl
rm
orc_lookup.h
1665
0644
edit
dl
rm
orc_types.h
3577
0644
edit
dl
rm
page.h
2517
0644
edit
dl
rm
page_32.h
1039
0644
edit
dl
rm
page_32_types.h
1691
0644
edit
dl
rm
page_64.h
1573
0644
edit
dl
rm
page_64_types.h
2208
0644
edit
dl
rm
page_types.h
2369
0644
edit
dl
rm
paravirt.h
24608
0644
edit
dl
rm
paravirt_types.h
22709
0644
edit
dl
rm
parport.h
314
0644
edit
dl
rm
pci-direct.h
740
0644
edit
dl
rm
pci-functions.h
654
0644
edit
dl
rm
pci.h
3288
0644
edit
dl
rm
pci_64.h
684
0644
edit
dl
rm
pci_x86.h
6283
0644
edit
dl
rm
percpu.h
20267
0644
edit
dl
rm
perf_event.h
17896
0644
edit
dl
rm
perf_event_p4.h
26731
0644
edit
dl
rm
pgalloc.h
6591
0644
edit
dl
rm
pgtable-2level.h
2815
0644
edit
dl
rm
pgtable-2level_types.h
867
0644
edit
dl
rm
pgtable-3level.h
8832
0644
edit
dl
rm
pgtable-3level_types.h
1007
0644
edit
dl
rm
pgtable-invert.h
1091
0644
edit
dl
rm
pgtable.h
35801
0644
edit
dl
rm
pgtable_32.h
3159
0644
edit
dl
rm
pgtable_32_types.h
2121
0644
edit
dl
rm
pgtable_64.h
7474
0644
edit
dl
rm
pgtable_64_types.h
4365
0644
edit
dl
rm
pgtable_types.h
17149
0644
edit
dl
rm
pkeys.h
3542
0644
edit
dl
rm
pkru.h
1346
0644
edit
dl
rm
platform_sst_audio.h
3290
0644
edit
dl
rm
pm-trace.h
611
0644
edit
dl
rm
posix_types.h
144
0644
edit
dl
rm
preempt.h
3217
0644
edit
dl
rm
probe_roms.h
273
0644
edit
dl
rm
processor-cyrix.h
879
0644
edit
dl
rm
processor-flags.h
1750
0644
edit
dl
rm
processor.h
24480
0644
edit
dl
rm
prom.h
1028
0644
edit
dl
rm
proto.h
1313
0644
edit
dl
rm
pti.h
429
0644
edit
dl
rm
ptrace.h
8996
0644
edit
dl
rm
purgatory.h
235
0644
edit
dl
rm
pvclock-abi.h
1530
0644
edit
dl
rm
pvclock.h
2702
0644
edit
dl
rm
qrwlock.h
199
0644
edit
dl
rm
qspinlock.h
2598
0644
edit
dl
rm
qspinlock_paravirt.h
1908
0644
edit
dl
rm
realmode.h
2064
0644
edit
dl
rm
reboot.h
898
0644
edit
dl
rm
reboot_fixups.h
183
0644
edit
dl
rm
refcount.h
2911
0644
edit
dl
rm
required-features.h
3043
0644
edit
dl
rm
resctrl.h
3064
0644
edit
dl
rm
rio.h
2630
0644
edit
dl
rm
rmwcc.h
2259
0644
edit
dl
rm
seccomp.h
510
0644
edit
dl
rm
sections.h
916
0644
edit
dl
rm
segment.h
11184
0644
edit
dl
rm
serial.h
1137
0644
edit
dl
rm
setup.h
3751
0644
edit
dl
rm
setup_arch.h
77
0644
edit
dl
rm
set_memory.h
5381
0644
edit
dl
rm
sev-common.h
4867
0644
edit
dl
rm
sev.h
6965
0644
edit
dl
rm
sgx.h
13157
0644
edit
dl
rm
shmparam.h
193
0644
edit
dl
rm
sigcontext.h
261
0644
edit
dl
rm
sigframe.h
2339
0644
edit
dl
rm
sighandling.h
730
0644
edit
dl
rm
signal.h
2424
0644
edit
dl
rm
simd.h
287
0644
edit
dl
rm
smap.h
2247
0644
edit
dl
rm
smp.h
5500
0644
edit
dl
rm
sparsemem.h
994
0644
edit
dl
rm
spec-ctrl.h
3143
0644
edit
dl
rm
special_insns.h
7536
0644
edit
dl
rm
spinlock.h
1214
0644
edit
dl
rm
spinlock_types.h
719
0644
edit
dl
rm
sta2x11.h
352
0644
edit
dl
rm
stackprotector.h
3966
0644
edit
dl
rm
stacktrace.h
2619
0644
edit
dl
rm
string.h
129
0644
edit
dl
rm
string_32.h
7929
0644
edit
dl
rm
string_64.h
4237
0644
edit
dl
rm
suspend.h
503
0644
edit
dl
rm
suspend_32.h
938
0644
edit
dl
rm
suspend_64.h
1838
0644
edit
dl
rm
svm.h
14672
0644
edit
dl
rm
switch_to.h
3258
0644
edit
dl
rm
sync_bitops.h
3503
0644
edit
dl
rm
sync_core.h
3138
0644
edit
dl
rm
syscall.h
5489
0644
edit
dl
rm
syscalls.h
1332
0644
edit
dl
rm
syscall_wrapper.h
7780
0644
edit
dl
rm
sysfb.h
2600
0644
edit
dl
rm
tce.h
1724
0644
edit
dl
rm
tdx.h
2360
0644
edit
dl
rm
text-patching.h
4812
0644
edit
dl
rm
thermal.h
428
0644
edit
dl
rm
thread_info.h
8805
0644
edit
dl
rm
time.h
331
0644
edit
dl
rm
timer.h
1027
0644
edit
dl
rm
timex.h
305
0644
edit
dl
rm
tlb.h
1103
0644
edit
dl
rm
tlbbatch.h
332
0644
edit
dl
rm
tlbflush.h
17813
0644
edit
dl
rm
topology.h
6654
0644
edit
dl
rm
trace_clock.h
406
0644
edit
dl
rm
trapnr.h
1316
0644
edit
dl
rm
traps.h
5374
0644
edit
dl
rm
trap_pf.h
709
0644
edit
dl
rm
tsc.h
1950
0644
edit
dl
rm
uaccess.h
21233
0644
edit
dl
rm
uaccess_32.h
1006
0644
edit
dl
rm
uaccess_64.h
3129
0644
edit
dl
rm
umip.h
329
0644
edit
dl
rm
unaligned.h
345
0644
edit
dl
rm
unistd.h
1482
0644
edit
dl
rm
unwind.h
3220
0644
edit
dl
rm
unwind_hints.h
3342
0644
edit
dl
rm
uprobes.h
1686
0644
edit
dl
rm
user.h
2257
0644
edit
dl
rm
user32.h
2156
0644
edit
dl
rm
user_32.h
5042
0644
edit
dl
rm
user_64.h
5339
0644
edit
dl
rm
vdso.h
1400
0644
edit
dl
rm
vga.h
740
0644
edit
dl
rm
vgtod.h
518
0644
edit
dl
rm
virtext.h
3102
0644
edit
dl
rm
vm86.h
2212
0644
edit
dl
rm
vmware.h
1942
0644
edit
dl
rm
vmx.h
26763
0644
edit
dl
rm
vmxfeatures.h
6049
0644
edit
dl
rm
vsyscall.h
920
0644
edit
dl
rm
vvar.h
1603
0644
edit
dl
rm
word-at-a-time.h
2596
0644
edit
dl
rm
x86_init.h
11520
0644
edit
dl
rm
xor.h
10508
0644
edit
dl
rm
xor_32.h
14748
0644
edit
dl
rm
xor_64.h
716
0644
edit
dl
rm
xor_avx.h
4610
0644
edit
dl
rm
Edit:
/usr/src/kernels/4.18.0-553.157.1.el8_10.x86_64/arch/x86/include/asm/hyperv-tlfs.h
(22337B)
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ /* * This file contains definitions from Hyper-V Hypervisor Top-Level Functional * Specification (TLFS): * https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/reference/tlfs */ #ifndef _ASM_X86_HYPERV_TLFS_H #define _ASM_X86_HYPERV_TLFS_H #include <linux/types.h> #include <asm/page.h> /* * The below CPUID leaves are present if VersionAndFeatures.HypervisorPresent * is set by CPUID(HvCpuIdFunctionVersionAndFeatures). */ #define HYPERV_CPUID_VENDOR_AND_MAX_FUNCTIONS 0x40000000 #define HYPERV_CPUID_INTERFACE 0x40000001 #define HYPERV_CPUID_VERSION 0x40000002 #define HYPERV_CPUID_FEATURES 0x40000003 #define HYPERV_CPUID_ENLIGHTMENT_INFO 0x40000004 #define HYPERV_CPUID_IMPLEMENT_LIMITS 0x40000005 #define HYPERV_CPUID_CPU_MANAGEMENT_FEATURES 0x40000007 #define HYPERV_CPUID_NESTED_FEATURES 0x4000000A #define HYPERV_CPUID_ISOLATION_CONFIG 0x4000000C #define HYPERV_CPUID_VIRT_STACK_INTERFACE 0x40000081 #define HYPERV_VS_INTERFACE_EAX_SIGNATURE 0x31235356 /* "VS#1" */ #define HYPERV_CPUID_VIRT_STACK_PROPERTIES 0x40000082 /* Support for the extended IOAPIC RTE format */ #define HYPERV_VS_PROPERTIES_EAX_EXTENDED_IOAPIC_RTE BIT(2) #define HYPERV_HYPERVISOR_PRESENT_BIT 0x80000000 #define HYPERV_CPUID_MIN 0x40000005 #define HYPERV_CPUID_MAX 0x4000ffff /* * Group D Features. The bit assignments are custom to each architecture. * On x86/x64 these are HYPERV_CPUID_FEATURES.EDX bits. */ /* The MWAIT instruction is available (per section MONITOR / MWAIT) */ #define HV_X64_MWAIT_AVAILABLE BIT(0) /* Guest debugging support is available */ #define HV_X64_GUEST_DEBUGGING_AVAILABLE BIT(1) /* Performance Monitor support is available*/ #define HV_X64_PERF_MONITOR_AVAILABLE BIT(2) /* Support for physical CPU dynamic partitioning events is available*/ #define HV_X64_CPU_DYNAMIC_PARTITIONING_AVAILABLE BIT(3) /* * Support for passing hypercall input parameter block via XMM * registers is available */ #define HV_X64_HYPERCALL_XMM_INPUT_AVAILABLE BIT(4) /* Support for a virtual guest idle state is available */ #define HV_X64_GUEST_IDLE_STATE_AVAILABLE BIT(5) /* Frequency MSRs available */ #define HV_FEATURE_FREQUENCY_MSRS_AVAILABLE BIT(8) /* Crash MSR available */ #define HV_FEATURE_GUEST_CRASH_MSR_AVAILABLE BIT(10) /* Support for debug MSRs available */ #define HV_FEATURE_DEBUG_MSRS_AVAILABLE BIT(11) /* Support for extended gva ranges for flush hypercalls available */ #define HV_FEATURE_EXT_GVA_RANGES_FLUSH BIT(14) /* * Support for returning hypercall output block via XMM * registers is available */ #define HV_X64_HYPERCALL_XMM_OUTPUT_AVAILABLE BIT(15) /* stimer Direct Mode is available */ #define HV_STIMER_DIRECT_MODE_AVAILABLE BIT(19) /* * Implementation recommendations. Indicates which behaviors the hypervisor * recommends the OS implement for optimal performance. * These are HYPERV_CPUID_ENLIGHTMENT_INFO.EAX bits. */ /* * Recommend using hypercall for address space switches rather * than MOV to CR3 instruction */ #define HV_X64_AS_SWITCH_RECOMMENDED BIT(0) /* Recommend using hypercall for local TLB flushes rather * than INVLPG or MOV to CR3 instructions */ #define HV_X64_LOCAL_TLB_FLUSH_RECOMMENDED BIT(1) /* * Recommend using hypercall for remote TLB flushes rather * than inter-processor interrupts */ #define HV_X64_REMOTE_TLB_FLUSH_RECOMMENDED BIT(2) /* * Recommend using MSRs for accessing APIC registers * EOI, ICR and TPR rather than their memory-mapped counterparts */ #define HV_X64_APIC_ACCESS_RECOMMENDED BIT(3) /* Recommend using the hypervisor-provided MSR to initiate a system RESET */ #define HV_X64_SYSTEM_RESET_RECOMMENDED BIT(4) /* * Recommend using relaxed timing for this partition. If used, * the VM should disable any watchdog timeouts that rely on the * timely delivery of external interrupts */ #define HV_X64_RELAXED_TIMING_RECOMMENDED BIT(5) /* * Recommend not using Auto End-Of-Interrupt feature */ #define HV_DEPRECATING_AEOI_RECOMMENDED BIT(9) /* * Recommend using cluster IPI hypercalls. */ #define HV_X64_CLUSTER_IPI_RECOMMENDED BIT(10) /* Recommend using the newer ExProcessorMasks interface */ #define HV_X64_EX_PROCESSOR_MASKS_RECOMMENDED BIT(11) /* Indicates that the hypervisor is nested within a Hyper-V partition. */ #define HV_X64_HYPERV_NESTED BIT(12) /* Recommend using enlightened VMCS */ #define HV_X64_ENLIGHTENED_VMCS_RECOMMENDED BIT(14) /* Use hypercalls for MMIO config space access */ #define HV_X64_USE_MMIO_HYPERCALLS BIT(21) /* * CPU management features identification. * These are HYPERV_CPUID_CPU_MANAGEMENT_FEATURES.EAX bits. */ #define HV_X64_START_LOGICAL_PROCESSOR BIT(0) #define HV_X64_CREATE_ROOT_VIRTUAL_PROCESSOR BIT(1) #define HV_X64_PERFORMANCE_COUNTER_SYNC BIT(2) #define HV_X64_RESERVED_IDENTITY_BIT BIT(31) /* * Virtual processor will never share a physical core with another virtual * processor, except for virtual processors that are reported as sibling SMT * threads. */ #define HV_X64_NO_NONARCH_CORESHARING BIT(18) /* Nested features. These are HYPERV_CPUID_NESTED_FEATURES.EAX bits. */ #define HV_X64_NESTED_DIRECT_FLUSH BIT(17) #define HV_X64_NESTED_GUEST_MAPPING_FLUSH BIT(18) #define HV_X64_NESTED_MSR_BITMAP BIT(19) /* Nested features #2. These are HYPERV_CPUID_NESTED_FEATURES.EBX bits. */ #define HV_X64_NESTED_EVMCS1_PERF_GLOBAL_CTRL BIT(0) /* * This is specific to AMD and specifies that enlightened TLB flush is * supported. If guest opts in to this feature, ASID invalidations only * flushes gva -> hpa mapping entries. To flush the TLB entries derived * from NPT, hypercalls should be used (HvFlushGuestPhysicalAddressSpace * or HvFlushGuestPhysicalAddressList). */ #define HV_X64_NESTED_ENLIGHTENED_TLB BIT(22) /* HYPERV_CPUID_ISOLATION_CONFIG.EAX bits. */ #define HV_PARAVISOR_PRESENT BIT(0) /* HYPERV_CPUID_ISOLATION_CONFIG.EBX bits. */ #define HV_ISOLATION_TYPE GENMASK(3, 0) #define HV_SHARED_GPA_BOUNDARY_ACTIVE BIT(5) #define HV_SHARED_GPA_BOUNDARY_BITS GENMASK(11, 6) enum hv_isolation_type { HV_ISOLATION_TYPE_NONE = 0, HV_ISOLATION_TYPE_VBS = 1, HV_ISOLATION_TYPE_SNP = 2, HV_ISOLATION_TYPE_TDX = 3 }; /* Hyper-V specific model specific registers (MSRs) */ /* MSR used to identify the guest OS. */ #define HV_X64_MSR_GUEST_OS_ID 0x40000000 /* MSR used to setup pages used to communicate with the hypervisor. */ #define HV_X64_MSR_HYPERCALL 0x40000001 /* MSR used to provide vcpu index */ #define HV_REGISTER_VP_INDEX 0x40000002 /* MSR used to reset the guest OS. */ #define HV_X64_MSR_RESET 0x40000003 /* MSR used to provide vcpu runtime in 100ns units */ #define HV_X64_MSR_VP_RUNTIME 0x40000010 /* MSR used to read the per-partition time reference counter */ #define HV_REGISTER_TIME_REF_COUNT 0x40000020 /* A partition's reference time stamp counter (TSC) page */ #define HV_REGISTER_REFERENCE_TSC 0x40000021 /* MSR used to retrieve the TSC frequency */ #define HV_X64_MSR_TSC_FREQUENCY 0x40000022 /* MSR used to retrieve the local APIC timer frequency */ #define HV_X64_MSR_APIC_FREQUENCY 0x40000023 /* Define the virtual APIC registers */ #define HV_X64_MSR_EOI 0x40000070 #define HV_X64_MSR_ICR 0x40000071 #define HV_X64_MSR_TPR 0x40000072 #define HV_X64_MSR_VP_ASSIST_PAGE 0x40000073 /* Define synthetic interrupt controller model specific registers. */ #define HV_REGISTER_SCONTROL 0x40000080 #define HV_REGISTER_SVERSION 0x40000081 #define HV_REGISTER_SIEFP 0x40000082 #define HV_REGISTER_SIMP 0x40000083 #define HV_REGISTER_EOM 0x40000084 #define HV_REGISTER_SINT0 0x40000090 #define HV_REGISTER_SINT1 0x40000091 #define HV_REGISTER_SINT2 0x40000092 #define HV_REGISTER_SINT3 0x40000093 #define HV_REGISTER_SINT4 0x40000094 #define HV_REGISTER_SINT5 0x40000095 #define HV_REGISTER_SINT6 0x40000096 #define HV_REGISTER_SINT7 0x40000097 #define HV_REGISTER_SINT8 0x40000098 #define HV_REGISTER_SINT9 0x40000099 #define HV_REGISTER_SINT10 0x4000009A #define HV_REGISTER_SINT11 0x4000009B #define HV_REGISTER_SINT12 0x4000009C #define HV_REGISTER_SINT13 0x4000009D #define HV_REGISTER_SINT14 0x4000009E #define HV_REGISTER_SINT15 0x4000009F /* * Define synthetic interrupt controller model specific registers for * nested hypervisor. */ #define HV_REGISTER_NESTED_SCONTROL 0x40001080 #define HV_REGISTER_NESTED_SVERSION 0x40001081 #define HV_REGISTER_NESTED_SIEFP 0x40001082 #define HV_REGISTER_NESTED_SIMP 0x40001083 #define HV_REGISTER_NESTED_EOM 0x40001084 #define HV_REGISTER_NESTED_SINT0 0x40001090 /* * Synthetic Timer MSRs. Four timers per vcpu. */ #define HV_REGISTER_STIMER0_CONFIG 0x400000B0 #define HV_REGISTER_STIMER0_COUNT 0x400000B1 #define HV_REGISTER_STIMER1_CONFIG 0x400000B2 #define HV_REGISTER_STIMER1_COUNT 0x400000B3 #define HV_REGISTER_STIMER2_CONFIG 0x400000B4 #define HV_REGISTER_STIMER2_COUNT 0x400000B5 #define HV_REGISTER_STIMER3_CONFIG 0x400000B6 #define HV_REGISTER_STIMER3_COUNT 0x400000B7 /* Hyper-V guest idle MSR */ #define HV_X64_MSR_GUEST_IDLE 0x400000F0 /* Hyper-V guest crash notification MSR's */ #define HV_REGISTER_CRASH_P0 0x40000100 #define HV_REGISTER_CRASH_P1 0x40000101 #define HV_REGISTER_CRASH_P2 0x40000102 #define HV_REGISTER_CRASH_P3 0x40000103 #define HV_REGISTER_CRASH_P4 0x40000104 #define HV_REGISTER_CRASH_CTL 0x40000105 /* TSC emulation after migration */ #define HV_X64_MSR_REENLIGHTENMENT_CONTROL 0x40000106 #define HV_X64_MSR_TSC_EMULATION_CONTROL 0x40000107 #define HV_X64_MSR_TSC_EMULATION_STATUS 0x40000108 /* TSC invariant control */ #define HV_X64_MSR_TSC_INVARIANT_CONTROL 0x40000118 /* HV_X64_MSR_TSC_INVARIANT_CONTROL bits */ #define HV_EXPOSE_INVARIANT_TSC BIT_ULL(0) /* Register name aliases for temporary compatibility */ #define HV_X64_MSR_STIMER0_COUNT HV_REGISTER_STIMER0_COUNT #define HV_X64_MSR_STIMER0_CONFIG HV_REGISTER_STIMER0_CONFIG #define HV_X64_MSR_STIMER1_COUNT HV_REGISTER_STIMER1_COUNT #define HV_X64_MSR_STIMER1_CONFIG HV_REGISTER_STIMER1_CONFIG #define HV_X64_MSR_STIMER2_COUNT HV_REGISTER_STIMER2_COUNT #define HV_X64_MSR_STIMER2_CONFIG HV_REGISTER_STIMER2_CONFIG #define HV_X64_MSR_STIMER3_COUNT HV_REGISTER_STIMER3_COUNT #define HV_X64_MSR_STIMER3_CONFIG HV_REGISTER_STIMER3_CONFIG #define HV_X64_MSR_SCONTROL HV_REGISTER_SCONTROL #define HV_X64_MSR_SVERSION HV_REGISTER_SVERSION #define HV_X64_MSR_SIMP HV_REGISTER_SIMP #define HV_X64_MSR_SIEFP HV_REGISTER_SIEFP #define HV_X64_MSR_VP_INDEX HV_REGISTER_VP_INDEX #define HV_X64_MSR_EOM HV_REGISTER_EOM #define HV_X64_MSR_SINT0 HV_REGISTER_SINT0 #define HV_X64_MSR_SINT15 HV_REGISTER_SINT15 #define HV_X64_MSR_CRASH_P0 HV_REGISTER_CRASH_P0 #define HV_X64_MSR_CRASH_P1 HV_REGISTER_CRASH_P1 #define HV_X64_MSR_CRASH_P2 HV_REGISTER_CRASH_P2 #define HV_X64_MSR_CRASH_P3 HV_REGISTER_CRASH_P3 #define HV_X64_MSR_CRASH_P4 HV_REGISTER_CRASH_P4 #define HV_X64_MSR_CRASH_CTL HV_REGISTER_CRASH_CTL #define HV_X64_MSR_TIME_REF_COUNT HV_REGISTER_TIME_REF_COUNT #define HV_X64_MSR_REFERENCE_TSC HV_REGISTER_REFERENCE_TSC /* * Registers are only accessible via HVCALL_GET_VP_REGISTERS hvcall and * there is not associated MSR address. */ #define HV_X64_REGISTER_VSM_VP_STATUS 0x000D0003 #define HV_X64_VTL_MASK GENMASK(3, 0) /* Hyper-V memory host visibility */ enum hv_mem_host_visibility { VMBUS_PAGE_NOT_VISIBLE = 0, VMBUS_PAGE_VISIBLE_READ_ONLY = 1, VMBUS_PAGE_VISIBLE_READ_WRITE = 3 }; /* HvCallModifySparseGpaPageHostVisibility hypercall */ #define HV_MAX_MODIFY_GPA_REP_COUNT ((PAGE_SIZE / sizeof(u64)) - 2) struct hv_gpa_range_for_visibility { u64 partition_id; u32 host_visibility:2; u32 reserved0:30; u32 reserved1; u64 gpa_page_list[HV_MAX_MODIFY_GPA_REP_COUNT]; } __packed; /* * Declare the MSR used to setup pages used to communicate with the hypervisor. */ union hv_x64_msr_hypercall_contents { u64 as_uint64; struct { u64 enable:1; u64 reserved:11; u64 guest_physical_address:52; } __packed; }; union hv_vp_assist_msr_contents { u64 as_uint64; struct { u64 enable:1; u64 reserved:11; u64 pfn:52; } __packed; }; struct hv_reenlightenment_control { __u64 vector:8; __u64 reserved1:8; __u64 enabled:1; __u64 reserved2:15; __u64 target_vp:32; } __packed; struct hv_tsc_emulation_control { __u64 enabled:1; __u64 reserved:63; } __packed; struct hv_tsc_emulation_status { __u64 inprogress:1; __u64 reserved:63; } __packed; #define HV_X64_MSR_HYPERCALL_ENABLE 0x00000001 #define HV_X64_MSR_HYPERCALL_PAGE_ADDRESS_SHIFT 12 #define HV_X64_MSR_HYPERCALL_PAGE_ADDRESS_MASK \ (~((1ull << HV_X64_MSR_HYPERCALL_PAGE_ADDRESS_SHIFT) - 1)) #define HV_X64_MSR_CRASH_PARAMS \ (1 + (HV_X64_MSR_CRASH_P4 - HV_X64_MSR_CRASH_P0)) #define HV_IPI_LOW_VECTOR 0x10 #define HV_IPI_HIGH_VECTOR 0xff #define HV_X64_MSR_VP_ASSIST_PAGE_ENABLE 0x00000001 #define HV_X64_MSR_VP_ASSIST_PAGE_ADDRESS_SHIFT 12 #define HV_X64_MSR_VP_ASSIST_PAGE_ADDRESS_MASK \ (~((1ull << HV_X64_MSR_VP_ASSIST_PAGE_ADDRESS_SHIFT) - 1)) /* Hyper-V Enlightened VMCS version mask in nested features CPUID */ #define HV_X64_ENLIGHTENED_VMCS_VERSION 0xff #define HV_X64_MSR_TSC_REFERENCE_ENABLE 0x00000001 #define HV_X64_MSR_TSC_REFERENCE_ADDRESS_SHIFT 12 /* Number of XMM registers used in hypercall input/output */ #define HV_HYPERCALL_MAX_XMM_REGISTERS 6 struct hv_nested_enlightenments_control { struct { __u32 directhypercall:1; __u32 reserved:31; } features; struct { __u32 inter_partition_comm:1; __u32 reserved:31; } hypercallControls; } __packed; /* Define virtual processor assist page structure. */ struct hv_vp_assist_page { __u32 apic_assist; __u32 reserved1; __u32 vtl_entry_reason; __u32 vtl_reserved; __u64 vtl_ret_x64rax; __u64 vtl_ret_x64rcx; struct hv_nested_enlightenments_control nested_control; __u8 enlighten_vmentry; __u8 reserved2[7]; __u64 current_nested_vmcs; __u8 synthetic_time_unhalted_timer_expired; __u8 reserved3[7]; __u8 virtualization_fault_information[40]; __u8 reserved4[8]; __u8 intercept_message[256]; __u8 vtl_ret_actions[256]; } __packed; struct hv_enlightened_vmcs { u32 revision_id; u32 abort; u16 host_es_selector; u16 host_cs_selector; u16 host_ss_selector; u16 host_ds_selector; u16 host_fs_selector; u16 host_gs_selector; u16 host_tr_selector; u16 padding16_1; u64 host_ia32_pat; u64 host_ia32_efer; u64 host_cr0; u64 host_cr3; u64 host_cr4; u64 host_ia32_sysenter_esp; u64 host_ia32_sysenter_eip; u64 host_rip; u32 host_ia32_sysenter_cs; u32 pin_based_vm_exec_control; u32 vm_exit_controls; u32 secondary_vm_exec_control; u64 io_bitmap_a; u64 io_bitmap_b; u64 msr_bitmap; u16 guest_es_selector; u16 guest_cs_selector; u16 guest_ss_selector; u16 guest_ds_selector; u16 guest_fs_selector; u16 guest_gs_selector; u16 guest_ldtr_selector; u16 guest_tr_selector; u32 guest_es_limit; u32 guest_cs_limit; u32 guest_ss_limit; u32 guest_ds_limit; u32 guest_fs_limit; u32 guest_gs_limit; u32 guest_ldtr_limit; u32 guest_tr_limit; u32 guest_gdtr_limit; u32 guest_idtr_limit; u32 guest_es_ar_bytes; u32 guest_cs_ar_bytes; u32 guest_ss_ar_bytes; u32 guest_ds_ar_bytes; u32 guest_fs_ar_bytes; u32 guest_gs_ar_bytes; u32 guest_ldtr_ar_bytes; u32 guest_tr_ar_bytes; u64 guest_es_base; u64 guest_cs_base; u64 guest_ss_base; u64 guest_ds_base; u64 guest_fs_base; u64 guest_gs_base; u64 guest_ldtr_base; u64 guest_tr_base; u64 guest_gdtr_base; u64 guest_idtr_base; u64 padding64_1[3]; u64 vm_exit_msr_store_addr; u64 vm_exit_msr_load_addr; u64 vm_entry_msr_load_addr; u64 cr3_target_value0; u64 cr3_target_value1; u64 cr3_target_value2; u64 cr3_target_value3; u32 page_fault_error_code_mask; u32 page_fault_error_code_match; u32 cr3_target_count; u32 vm_exit_msr_store_count; u32 vm_exit_msr_load_count; u32 vm_entry_msr_load_count; u64 tsc_offset; u64 virtual_apic_page_addr; u64 vmcs_link_pointer; u64 guest_ia32_debugctl; u64 guest_ia32_pat; u64 guest_ia32_efer; u64 guest_pdptr0; u64 guest_pdptr1; u64 guest_pdptr2; u64 guest_pdptr3; u64 guest_pending_dbg_exceptions; u64 guest_sysenter_esp; u64 guest_sysenter_eip; u32 guest_activity_state; u32 guest_sysenter_cs; u64 cr0_guest_host_mask; u64 cr4_guest_host_mask; u64 cr0_read_shadow; u64 cr4_read_shadow; u64 guest_cr0; u64 guest_cr3; u64 guest_cr4; u64 guest_dr7; u64 host_fs_base; u64 host_gs_base; u64 host_tr_base; u64 host_gdtr_base; u64 host_idtr_base; u64 host_rsp; u64 ept_pointer; u16 virtual_processor_id; u16 padding16_2[3]; u64 padding64_2[5]; u64 guest_physical_address; u32 vm_instruction_error; u32 vm_exit_reason; u32 vm_exit_intr_info; u32 vm_exit_intr_error_code; u32 idt_vectoring_info_field; u32 idt_vectoring_error_code; u32 vm_exit_instruction_len; u32 vmx_instruction_info; u64 exit_qualification; u64 exit_io_instruction_ecx; u64 exit_io_instruction_esi; u64 exit_io_instruction_edi; u64 exit_io_instruction_eip; u64 guest_linear_address; u64 guest_rsp; u64 guest_rflags; u32 guest_interruptibility_info; u32 cpu_based_vm_exec_control; u32 exception_bitmap; u32 vm_entry_controls; u32 vm_entry_intr_info_field; u32 vm_entry_exception_error_code; u32 vm_entry_instruction_len; u32 tpr_threshold; u64 guest_rip; u32 hv_clean_fields; u32 padding32_1; u32 hv_synthetic_controls; struct { u32 nested_flush_hypercall:1; u32 msr_bitmap:1; u32 reserved:30; } __packed hv_enlightenments_control; u32 hv_vp_id; u32 padding32_2; u64 hv_vm_id; u64 partition_assist_page; u64 padding64_4[4]; u64 guest_bndcfgs; u64 guest_ia32_perf_global_ctrl; u64 guest_ia32_s_cet; u64 guest_ssp; u64 guest_ia32_int_ssp_table_addr; u64 guest_ia32_lbr_ctl; u64 padding64_5[2]; u64 xss_exit_bitmap; u64 encls_exiting_bitmap; u64 host_ia32_perf_global_ctrl; u64 tsc_multiplier; u64 host_ia32_s_cet; u64 host_ssp; u64 host_ia32_int_ssp_table_addr; u64 padding64_6; } __packed; #define HV_VMX_ENLIGHTENED_CLEAN_FIELD_NONE 0 #define HV_VMX_ENLIGHTENED_CLEAN_FIELD_IO_BITMAP BIT(0) #define HV_VMX_ENLIGHTENED_CLEAN_FIELD_MSR_BITMAP BIT(1) #define HV_VMX_ENLIGHTENED_CLEAN_FIELD_CONTROL_GRP2 BIT(2) #define HV_VMX_ENLIGHTENED_CLEAN_FIELD_CONTROL_GRP1 BIT(3) #define HV_VMX_ENLIGHTENED_CLEAN_FIELD_CONTROL_PROC BIT(4) #define HV_VMX_ENLIGHTENED_CLEAN_FIELD_CONTROL_EVENT BIT(5) #define HV_VMX_ENLIGHTENED_CLEAN_FIELD_CONTROL_ENTRY BIT(6) #define HV_VMX_ENLIGHTENED_CLEAN_FIELD_CONTROL_EXCPN BIT(7) #define HV_VMX_ENLIGHTENED_CLEAN_FIELD_CRDR BIT(8) #define HV_VMX_ENLIGHTENED_CLEAN_FIELD_CONTROL_XLAT BIT(9) #define HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_BASIC BIT(10) #define HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP1 BIT(11) #define HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2 BIT(12) #define HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_POINTER BIT(13) #define HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_GRP1 BIT(14) #define HV_VMX_ENLIGHTENED_CLEAN_FIELD_ENLIGHTENMENTSCONTROL BIT(15) #define HV_VMX_ENLIGHTENED_CLEAN_FIELD_ALL 0xFFFF /* * Hyper-V uses the software reserved 32 bytes in VMCB control area to expose * SVM enlightenments to guests. */ struct hv_enlightenments { struct __packed hv_enlightenments_control { u32 nested_flush_hypercall:1; u32 msr_bitmap:1; u32 enlightened_npt_tlb: 1; u32 reserved:29; } __packed hv_enlightenments_control; u32 hv_vp_id; u64 hv_vm_id; u64 partition_assist_page; u64 reserved; } __packed; /* * Hyper-V uses the software reserved clean bit in VMCB. */ #define HV_VMCB_NESTED_ENLIGHTENMENTS 31 struct hv_partition_assist_pg { u32 tlb_lock_count; }; enum hv_interrupt_type { HV_X64_INTERRUPT_TYPE_FIXED = 0x0000, HV_X64_INTERRUPT_TYPE_LOWESTPRIORITY = 0x0001, HV_X64_INTERRUPT_TYPE_SMI = 0x0002, HV_X64_INTERRUPT_TYPE_REMOTEREAD = 0x0003, HV_X64_INTERRUPT_TYPE_NMI = 0x0004, HV_X64_INTERRUPT_TYPE_INIT = 0x0005, HV_X64_INTERRUPT_TYPE_SIPI = 0x0006, HV_X64_INTERRUPT_TYPE_EXTINT = 0x0007, HV_X64_INTERRUPT_TYPE_LOCALINT0 = 0x0008, HV_X64_INTERRUPT_TYPE_LOCALINT1 = 0x0009, HV_X64_INTERRUPT_TYPE_MAXIMUM = 0x000A, }; union hv_msi_address_register { u32 as_uint32; struct { u32 reserved1:2; u32 destination_mode:1; u32 redirection_hint:1; u32 reserved2:8; u32 destination_id:8; u32 msi_base:12; }; } __packed; union hv_msi_data_register { u32 as_uint32; struct { u32 vector:8; u32 delivery_mode:3; u32 reserved1:3; u32 level_assert:1; u32 trigger_mode:1; u32 reserved2:16; }; } __packed; /* HvRetargetDeviceInterrupt hypercall */ union hv_msi_entry { u64 as_uint64; struct { union hv_msi_address_register address; union hv_msi_data_register data; } __packed; }; struct hv_x64_segment_register { u64 base; u32 limit; u16 selector; union { struct { u16 segment_type : 4; u16 non_system_segment : 1; u16 descriptor_privilege_level : 2; u16 present : 1; u16 reserved : 4; u16 available : 1; u16 _long : 1; u16 _default : 1; u16 granularity : 1; } __packed; u16 attributes; }; } __packed; struct hv_x64_table_register { u16 pad[3]; u16 limit; u64 base; } __packed; struct hv_init_vp_context { u64 rip; u64 rsp; u64 rflags; struct hv_x64_segment_register cs; struct hv_x64_segment_register ds; struct hv_x64_segment_register es; struct hv_x64_segment_register fs; struct hv_x64_segment_register gs; struct hv_x64_segment_register ss; struct hv_x64_segment_register tr; struct hv_x64_segment_register ldtr; struct hv_x64_table_register idtr; struct hv_x64_table_register gdtr; u64 efer; u64 cr0; u64 cr3; u64 cr4; u64 msr_cr_pat; } __packed; union hv_input_vtl { u8 as_uint8; struct { u8 target_vtl: 4; u8 use_target_vtl: 1; u8 reserved_z: 3; }; } __packed; struct hv_enable_vp_vtl { u64 partition_id; u32 vp_index; union hv_input_vtl target_vtl; u8 mbz0; u16 mbz1; struct hv_init_vp_context vp_context; } __packed; struct hv_get_vp_from_apic_id_in { u64 partition_id; union hv_input_vtl target_vtl; u8 res[7]; u32 apic_ids[]; } __packed; #include <asm-generic/hyperv-tlfs.h> #endif
Save
cmd:
run