diff options
| author | Michael S. Tsirkin <mst@redhat.com> | 2014-03-31 14:50:38 -0400 |
|---|---|---|
| committer | Marcelo Tosatti <mtosatti@redhat.com> | 2014-04-17 13:01:42 -0400 |
| commit | f848a5a8dcb655553423f77cc98909a04e64173d (patch) | |
| tree | 02e212c8eeeb52e74876408bb5e7e5d2febae379 /include | |
| parent | cd9ae5fe47dfb9820976c3c38c70f4b07a5a1c36 (diff) | |
KVM: support any-length wildcard ioeventfd
It is sometimes benefitial to ignore IO size, and only match on address.
In hindsight this would have been a better default than matching length
when KVM_IOEVENTFD_FLAG_DATAMATCH is not set, In particular, this kind
of access can be optimized on VMX: there no need to do page lookups.
This can currently be done with many ioeventfds but in a suboptimal way.
However we can't change kernel/userspace ABI without risk of breaking
some applications.
Use len = 0 to mean "ignore length for matching" in a more optimal way.
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
Diffstat (limited to 'include')
| -rw-r--r-- | include/uapi/linux/kvm.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/include/uapi/linux/kvm.h b/include/uapi/linux/kvm.h index a8f4ee5d2e82..39098a61f41c 100644 --- a/include/uapi/linux/kvm.h +++ b/include/uapi/linux/kvm.h | |||
| @@ -529,7 +529,7 @@ enum { | |||
| 529 | struct kvm_ioeventfd { | 529 | struct kvm_ioeventfd { |
| 530 | __u64 datamatch; | 530 | __u64 datamatch; |
| 531 | __u64 addr; /* legal pio/mmio address */ | 531 | __u64 addr; /* legal pio/mmio address */ |
| 532 | __u32 len; /* 1, 2, 4, or 8 bytes */ | 532 | __u32 len; /* 1, 2, 4, or 8 bytes; or 0 to ignore length */ |
| 533 | __s32 fd; | 533 | __s32 fd; |
| 534 | __u32 flags; | 534 | __u32 flags; |
| 535 | __u8 pad[36]; | 535 | __u8 pad[36]; |
| @@ -743,6 +743,7 @@ struct kvm_ppc_smmu_info { | |||
| 743 | #define KVM_CAP_IOAPIC_POLARITY_IGNORED 97 | 743 | #define KVM_CAP_IOAPIC_POLARITY_IGNORED 97 |
| 744 | #define KVM_CAP_ENABLE_CAP_VM 98 | 744 | #define KVM_CAP_ENABLE_CAP_VM 98 |
| 745 | #define KVM_CAP_S390_IRQCHIP 99 | 745 | #define KVM_CAP_S390_IRQCHIP 99 |
| 746 | #define KVM_CAP_IOEVENTFD_NO_LENGTH 100 | ||
| 746 | 747 | ||
| 747 | #ifdef KVM_CAP_IRQ_ROUTING | 748 | #ifdef KVM_CAP_IRQ_ROUTING |
| 748 | 749 | ||
