1/* @title: KVM Paravirtual ABI */
2#pragma once
3
4#define KVM_CPUID_SIGNATURE "KVMKVMKVM\0\0\0"
5
6/* CPUID offsets */
7#define KVM_CPUID_FEATURES_OFF 1
8#define KVM_FEATURE_PV_SEND_IPI 11
9
10/* Hypercall numbers, passed in RAX to vmcall/vmmcall */
11#define KVM_HC_SEND_IPI 10
12
13/* Various error codes... TODO: Consider enum? I only
14 * need a few now just to do the simple stuff */
15#define KVM_EPERM 1
16#define KVM_E2BIG 7
17#define KVM_EFAULT 14
18#define KVM_EINVAL 22
19#define KVM_EOPNOTSUPP 95
20#define KVM_ENOSYS 1000
21
22/* KVM_HC_SEND_IPI needs a 128 bit APIC ID */
23#define KVM_PV_IPI_WINDOW 128
24