On 09/11/2015 03:39 PM, Cornelia Huck wrote: > On Fri, 11 Sep 2015 11:17:34 +0800 > Jason Wang <jasowang@xxxxxxxxxx> wrote: > >> This patch factors out core eventfd assign/deassign logic and leave >> the argument checking and bus index selection to callers. >> >> Cc: Gleb Natapov <gleb@xxxxxxxxxx> >> Cc: Paolo Bonzini <pbonzini@xxxxxxxxxx> >> Signed-off-by: Jason Wang <jasowang@xxxxxxxxxx> >> --- >> virt/kvm/eventfd.c | 83 ++++++++++++++++++++++++++++++++---------------------- >> 1 file changed, 49 insertions(+), 34 deletions(-) >> >> diff --git a/virt/kvm/eventfd.c b/virt/kvm/eventfd.c >> index 9ff4193..163258d 100644 >> --- a/virt/kvm/eventfd.c >> +++ b/virt/kvm/eventfd.c >> @@ -771,40 +771,14 @@ static enum kvm_bus ioeventfd_bus_from_flags(__u32 flags) >> return KVM_MMIO_BUS; >> } >> >> -static int >> -kvm_assign_ioeventfd(struct kvm *kvm, struct kvm_ioeventfd *args) >> +static int kvm_assign_ioeventfd_idx(struct kvm *kvm, >> + enum kvm_bus bus_idx, >> + struct kvm_ioeventfd *args) >> { >> - enum kvm_bus bus_idx; >> - struct _ioeventfd *p; >> - struct eventfd_ctx *eventfd; >> - int ret; >> - >> - bus_idx = ioeventfd_bus_from_flags(args->flags); >> - /* must be natural-word sized, or 0 to ignore length */ >> - switch (args->len) { >> - case 0: >> - case 1: >> - case 2: >> - case 4: >> - case 8: >> - break; >> - default: >> - return -EINVAL; >> - } >> >> - /* check for range overflow */ >> - if (args->addr + args->len < args->addr) >> - return -EINVAL; >> - >> - /* check for extra flags that we don't understand */ >> - if (args->flags & ~KVM_IOEVENTFD_VALID_FLAG_MASK) >> - return -EINVAL; >> - >> - /* ioeventfd with no length can't be combined with DATAMATCH */ >> - if (!args->len && >> - args->flags & (KVM_IOEVENTFD_FLAG_PIO | >> - KVM_IOEVENTFD_FLAG_DATAMATCH)) >> - return -EINVAL; >> + struct eventfd_ctx *eventfd; >> + struct _ioeventfd *p; >> + int ret; >> >> eventfd = eventfd_ctx_fdget(args->fd); >> if (IS_ERR(eventfd)) >> @@ -873,14 +847,48 @@ fail: >> } >> >> static int >> -kvm_deassign_ioeventfd(struct kvm *kvm, struct kvm_ioeventfd *args) >> +kvm_assign_ioeventfd(struct kvm *kvm, struct kvm_ioeventfd *args) > You'll move this function to below the deassign function in patch 2. > Maybe do it already here? > Yes, this can reduce the changes for patch2. -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html