aboutsummaryrefslogtreecommitdiffstats
path: root/include/uapi/linux
diff options
context:
space:
mode:
authorRadim Krčmář <rkrcmar@redhat.com>2016-07-12 16:09:27 -0400
committerPaolo Bonzini <pbonzini@redhat.com>2016-07-14 03:03:57 -0400
commit3713131345fbea291cbd859d248e06ed77815962 (patch)
treefb712d5c0b49b53984a3b01d0df29c7dfee62e4e /include/uapi/linux
parentc63cf538eb4bf6a5ffd3750366d8d56f023645a5 (diff)
KVM: x86: add KVM_CAP_X2APIC_API
KVM_CAP_X2APIC_API is a capability for features related to x2APIC enablement. KVM_X2APIC_API_32BIT_FORMAT feature can be enabled to extend APIC ID in get/set ioctl and MSI addresses to 32 bits. Both are needed to support x2APIC. The feature has to be enableable and disabled by default, because get/set ioctl shifted and truncated APIC ID to 8 bits by using a non-standard protocol inspired by xAPIC and the change is not backward-compatible. Changes to MSI addresses follow the format used by interrupt remapping unit. The upper address word, that used to be 0, contains upper 24 bits of the LAPIC address in its upper 24 bits. Lower 8 bits are reserved as 0. Using the upper address word is not backward-compatible either as we didn't check that userspace zeroed the word. Reserved bits are still not explicitly checked, but non-zero data will affect LAPIC addresses, which will cause a bug. Signed-off-by: Radim Krčmář <rkrcmar@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'include/uapi/linux')
-rw-r--r--include/uapi/linux/kvm.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/include/uapi/linux/kvm.h b/include/uapi/linux/kvm.h
index 05ebf475104c..f704403e19a0 100644
--- a/include/uapi/linux/kvm.h
+++ b/include/uapi/linux/kvm.h
@@ -866,6 +866,7 @@ struct kvm_ppc_smmu_info {
866#define KVM_CAP_ARM_PMU_V3 126 866#define KVM_CAP_ARM_PMU_V3 126
867#define KVM_CAP_VCPU_ATTRIBUTES 127 867#define KVM_CAP_VCPU_ATTRIBUTES 127
868#define KVM_CAP_MAX_VCPU_ID 128 868#define KVM_CAP_MAX_VCPU_ID 128
869#define KVM_CAP_X2APIC_API 129
869 870
870#ifdef KVM_CAP_IRQ_ROUTING 871#ifdef KVM_CAP_IRQ_ROUTING
871 872
@@ -1313,4 +1314,6 @@ struct kvm_assigned_msix_entry {
1313 __u16 padding[3]; 1314 __u16 padding[3];
1314}; 1315};
1315 1316
1317#define KVM_X2APIC_API_USE_32BIT_IDS (1ULL << 0)
1318
1316#endif /* __LINUX_KVM_H */ 1319#endif /* __LINUX_KVM_H */