| 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 | |