@@ -216,6 +216,20 @@ struct kvm_hyperv_exit {
216
216
} u ;
217
217
};
218
218
219
+ struct kvm_xen_exit {
220
+ #define KVM_EXIT_XEN_HCALL 1
221
+ __u32 type ;
222
+ union {
223
+ struct {
224
+ __u32 longmode ;
225
+ __u32 cpl ;
226
+ __u64 input ;
227
+ __u64 result ;
228
+ __u64 params [6 ];
229
+ } hcall ;
230
+ } u ;
231
+ };
232
+
219
233
#define KVM_S390_GET_SKEYS_NONE 1
220
234
#define KVM_S390_SKEYS_MAX 1048576
221
235
@@ -252,6 +266,8 @@ struct kvm_hyperv_exit {
252
266
#define KVM_EXIT_X86_WRMSR 30
253
267
#define KVM_EXIT_DIRTY_RING_FULL 31
254
268
#define KVM_EXIT_AP_RESET_HOLD 32
269
+ #define KVM_EXIT_X86_BUS_LOCK 33
270
+ #define KVM_EXIT_XEN 34
255
271
256
272
/* For KVM_EXIT_INTERNAL_ERROR */
257
273
/* Emulate instruction failed. */
@@ -428,6 +444,8 @@ struct kvm_run {
428
444
__u32 index ; /* kernel -> user */
429
445
__u64 data ; /* kernel <-> user */
430
446
} msr ;
447
+ /* KVM_EXIT_XEN */
448
+ struct kvm_xen_exit xen ;
431
449
/* Fix the size of the union. */
432
450
char padding [256 ];
433
451
};
@@ -1058,6 +1076,7 @@ struct kvm_ppc_resize_hpt {
1058
1076
#define KVM_CAP_ENFORCE_PV_FEATURE_CPUID 190
1059
1077
#define KVM_CAP_SYS_HYPERV_CPUID 191
1060
1078
#define KVM_CAP_DIRTY_LOG_RING 192
1079
+ #define KVM_CAP_X86_BUS_LOCK_EXIT 193
1061
1080
#define KVM_CAP_PPC_DAWR1 194
1062
1081
1063
1082
#ifdef KVM_CAP_IRQ_ROUTING
@@ -1132,6 +1151,10 @@ struct kvm_x86_mce {
1132
1151
#endif
1133
1152
1134
1153
#ifdef KVM_CAP_XEN_HVM
1154
+ #define KVM_XEN_HVM_CONFIG_HYPERCALL_MSR (1 << 0)
1155
+ #define KVM_XEN_HVM_CONFIG_INTERCEPT_HCALL (1 << 1)
1156
+ #define KVM_XEN_HVM_CONFIG_SHARED_INFO (1 << 2)
1157
+
1135
1158
struct kvm_xen_hvm_config {
1136
1159
__u32 flags ;
1137
1160
__u32 msr ;
@@ -1566,6 +1589,45 @@ struct kvm_pv_cmd {
1566
1589
/* Available with KVM_CAP_DIRTY_LOG_RING */
1567
1590
#define KVM_RESET_DIRTY_RINGS _IO(KVMIO, 0xc7)
1568
1591
1592
+ /* Per-VM Xen attributes */
1593
+ #define KVM_XEN_HVM_GET_ATTR _IOWR(KVMIO, 0xc8, struct kvm_xen_hvm_attr)
1594
+ #define KVM_XEN_HVM_SET_ATTR _IOW(KVMIO, 0xc9, struct kvm_xen_hvm_attr)
1595
+
1596
+ struct kvm_xen_hvm_attr {
1597
+ __u16 type ;
1598
+ __u16 pad [3 ];
1599
+ union {
1600
+ __u8 long_mode ;
1601
+ __u8 vector ;
1602
+ struct {
1603
+ __u64 gfn ;
1604
+ } shared_info ;
1605
+ __u64 pad [8 ];
1606
+ } u ;
1607
+ };
1608
+
1609
+ /* Available with KVM_CAP_XEN_HVM / KVM_XEN_HVM_CONFIG_SHARED_INFO */
1610
+ #define KVM_XEN_ATTR_TYPE_LONG_MODE 0x0
1611
+ #define KVM_XEN_ATTR_TYPE_SHARED_INFO 0x1
1612
+ #define KVM_XEN_ATTR_TYPE_UPCALL_VECTOR 0x2
1613
+
1614
+ /* Per-vCPU Xen attributes */
1615
+ #define KVM_XEN_VCPU_GET_ATTR _IOWR(KVMIO, 0xca, struct kvm_xen_vcpu_attr)
1616
+ #define KVM_XEN_VCPU_SET_ATTR _IOW(KVMIO, 0xcb, struct kvm_xen_vcpu_attr)
1617
+
1618
+ struct kvm_xen_vcpu_attr {
1619
+ __u16 type ;
1620
+ __u16 pad [3 ];
1621
+ union {
1622
+ __u64 gpa ;
1623
+ __u64 pad [8 ];
1624
+ } u ;
1625
+ };
1626
+
1627
+ /* Available with KVM_CAP_XEN_HVM / KVM_XEN_HVM_CONFIG_SHARED_INFO */
1628
+ #define KVM_XEN_VCPU_ATTR_TYPE_VCPU_INFO 0x0
1629
+ #define KVM_XEN_VCPU_ATTR_TYPE_VCPU_TIME_INFO 0x1
1630
+
1569
1631
/* Secure Encrypted Virtualization command */
1570
1632
enum sev_cmd_id {
1571
1633
/* Guest initialization commands */
@@ -1594,6 +1656,8 @@ enum sev_cmd_id {
1594
1656
KVM_SEV_DBG_ENCRYPT ,
1595
1657
/* Guest certificates commands */
1596
1658
KVM_SEV_CERT_EXPORT ,
1659
+ /* Attestation report */
1660
+ KVM_SEV_GET_ATTESTATION_REPORT ,
1597
1661
1598
1662
KVM_SEV_NR_MAX ,
1599
1663
};
@@ -1646,6 +1710,12 @@ struct kvm_sev_dbg {
1646
1710
__u32 len ;
1647
1711
};
1648
1712
1713
+ struct kvm_sev_attestation_report {
1714
+ __u8 mnonce [16 ];
1715
+ __u64 uaddr ;
1716
+ __u32 len ;
1717
+ };
1718
+
1649
1719
#define KVM_DEV_ASSIGN_ENABLE_IOMMU (1 << 0)
1650
1720
#define KVM_DEV_ASSIGN_PCI_2_3 (1 << 1)
1651
1721
#define KVM_DEV_ASSIGN_MASK_INTX (1 << 2)
@@ -1767,4 +1837,7 @@ struct kvm_dirty_gfn {
1767
1837
__u64 offset ;
1768
1838
};
1769
1839
1840
+ #define KVM_BUS_LOCK_DETECTION_OFF (1 << 0)
1841
+ #define KVM_BUS_LOCK_DETECTION_EXIT (1 << 1)
1842
+
1770
1843
#endif /* __LINUX_KVM_H */
0 commit comments