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