.. | .. |
---|
29 | 29 | #define KVM_FEATURE_PV_TLB_FLUSH 9 |
---|
30 | 30 | #define KVM_FEATURE_ASYNC_PF_VMEXIT 10 |
---|
31 | 31 | #define KVM_FEATURE_PV_SEND_IPI 11 |
---|
| 32 | +#define KVM_FEATURE_POLL_CONTROL 12 |
---|
| 33 | +#define KVM_FEATURE_PV_SCHED_YIELD 13 |
---|
| 34 | +#define KVM_FEATURE_ASYNC_PF_INT 14 |
---|
| 35 | +#define KVM_FEATURE_MSI_EXT_DEST_ID 15 |
---|
32 | 36 | |
---|
33 | 37 | #define KVM_HINTS_REALTIME 0 |
---|
34 | 38 | |
---|
.. | .. |
---|
47 | 51 | #define MSR_KVM_ASYNC_PF_EN 0x4b564d02 |
---|
48 | 52 | #define MSR_KVM_STEAL_TIME 0x4b564d03 |
---|
49 | 53 | #define MSR_KVM_PV_EOI_EN 0x4b564d04 |
---|
| 54 | +#define MSR_KVM_POLL_CONTROL 0x4b564d05 |
---|
| 55 | +#define MSR_KVM_ASYNC_PF_INT 0x4b564d06 |
---|
| 56 | +#define MSR_KVM_ASYNC_PF_ACK 0x4b564d07 |
---|
50 | 57 | |
---|
51 | 58 | struct kvm_steal_time { |
---|
52 | 59 | __u64 steal; |
---|
.. | .. |
---|
78 | 85 | #define KVM_ASYNC_PF_ENABLED (1 << 0) |
---|
79 | 86 | #define KVM_ASYNC_PF_SEND_ALWAYS (1 << 1) |
---|
80 | 87 | #define KVM_ASYNC_PF_DELIVERY_AS_PF_VMEXIT (1 << 2) |
---|
| 88 | +#define KVM_ASYNC_PF_DELIVERY_AS_INT (1 << 3) |
---|
| 89 | + |
---|
| 90 | +/* MSR_KVM_ASYNC_PF_INT */ |
---|
| 91 | +#define KVM_ASYNC_PF_VEC_MASK GENMASK(7, 0) |
---|
| 92 | + |
---|
81 | 93 | |
---|
82 | 94 | /* Operations for KVM_HC_MMU_OP */ |
---|
83 | 95 | #define KVM_MMU_OP_WRITE_PTE 1 |
---|
.. | .. |
---|
109 | 121 | #define KVM_PV_REASON_PAGE_READY 2 |
---|
110 | 122 | |
---|
111 | 123 | struct kvm_vcpu_pv_apf_data { |
---|
112 | | - __u32 reason; |
---|
113 | | - __u8 pad[60]; |
---|
| 124 | + /* Used for 'page not present' events delivered via #PF */ |
---|
| 125 | + __u32 flags; |
---|
| 126 | + |
---|
| 127 | + /* Used for 'page ready' events delivered via interrupt notification */ |
---|
| 128 | + __u32 token; |
---|
| 129 | + |
---|
| 130 | + __u8 pad[56]; |
---|
114 | 131 | __u32 enabled; |
---|
115 | 132 | }; |
---|
116 | 133 | |
---|