Nikolas Wipper <nikwip@xxxxxxxxx> writes: > Introduce a new ioctl to control whether remote flushing via Hyper-V > hyper-calls should be allowed on a vCPU. When the tlb_flush_inhibit bit is > set, vCPUs attempting to flush the TLB of the inhibitied vCPU will be > suspended until the bit is clearded. > > Signed-off-by: Nikolas Wipper <nikwip@xxxxxxxxx> > --- > include/uapi/linux/kvm.h | 15 +++++++++++++++ I guess we can merge this patch with documentation (PATCH1) or even implementation (PATCH5) as I don't see why separation helps here. > 1 file changed, 15 insertions(+) > > diff --git a/include/uapi/linux/kvm.h b/include/uapi/linux/kvm.h > index 637efc055145..3bc43fdcab88 100644 > --- a/include/uapi/linux/kvm.h > +++ b/include/uapi/linux/kvm.h > @@ -933,6 +933,7 @@ struct kvm_enable_cap { > #define KVM_CAP_PRE_FAULT_MEMORY 236 > #define KVM_CAP_X86_APIC_BUS_CYCLES_NS 237 > #define KVM_CAP_X86_GUEST_MODE 238 > +#define KVM_CAP_HYPERV_TLB_FLUSH_INHIBIT 239 > > struct kvm_irq_routing_irqchip { > __u32 irqchip; > @@ -1573,4 +1574,18 @@ struct kvm_pre_fault_memory { > __u64 padding[5]; > }; > > +/* Available with KVM_CAP_HYPERV_TLBFLUSH */ > +#define KVM_HYPERV_SET_TLB_FLUSH_INHIBIT \ > + _IOW(KVMIO, 0xd6, struct kvm_hyperv_tlb_flush_inhibit) > + > +/* for KVM_HYPERV_SET_TLB_FLUSH_INHIBIT */ > +struct kvm_hyperv_tlb_flush_inhibit { > + /* in */ > + __u16 flags; > +#define KVM_HYPERV_UNINHIBIT_TLB_FLUSH 0 > +#define KVM_HYPERV_INHIBIT_TLB_FLUSH 1 > + __u8 inhibit; > + __u8 reserved[5]; > +}; > + > #endif /* __LINUX_KVM_H */ -- Vitaly