Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

KVM: Pass kvm_irqfd to functions

Prune this down to just the struct kvm_irqfd so we can avoid
changing function definition for every flag or field we use.

Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
Acked-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>

authored by

Alex Williamson and committed by
Marcelo Tosatti
d4db2935 ca24a145

+13 -13
+2 -2
include/linux/kvm_host.h
··· 815 815 #ifdef CONFIG_HAVE_KVM_EVENTFD 816 816 817 817 void kvm_eventfd_init(struct kvm *kvm); 818 - int kvm_irqfd(struct kvm *kvm, int fd, int gsi, int flags); 818 + int kvm_irqfd(struct kvm *kvm, struct kvm_irqfd *args); 819 819 void kvm_irqfd_release(struct kvm *kvm); 820 820 void kvm_irq_routing_update(struct kvm *, struct kvm_irq_routing_table *); 821 821 int kvm_ioeventfd(struct kvm *kvm, struct kvm_ioeventfd *args); ··· 824 824 825 825 static inline void kvm_eventfd_init(struct kvm *kvm) {} 826 826 827 - static inline int kvm_irqfd(struct kvm *kvm, int fd, int gsi, int flags) 827 + static inline int kvm_irqfd(struct kvm *kvm, struct kvm_irqfd *args) 828 828 { 829 829 return -EINVAL; 830 830 }
+10 -10
virt/kvm/eventfd.c
··· 198 198 } 199 199 200 200 static int 201 - kvm_irqfd_assign(struct kvm *kvm, int fd, int gsi) 201 + kvm_irqfd_assign(struct kvm *kvm, struct kvm_irqfd *args) 202 202 { 203 203 struct kvm_irq_routing_table *irq_rt; 204 204 struct _irqfd *irqfd, *tmp; ··· 212 212 return -ENOMEM; 213 213 214 214 irqfd->kvm = kvm; 215 - irqfd->gsi = gsi; 215 + irqfd->gsi = args->gsi; 216 216 INIT_LIST_HEAD(&irqfd->list); 217 217 INIT_WORK(&irqfd->inject, irqfd_inject); 218 218 INIT_WORK(&irqfd->shutdown, irqfd_shutdown); 219 219 220 - file = eventfd_fget(fd); 220 + file = eventfd_fget(args->fd); 221 221 if (IS_ERR(file)) { 222 222 ret = PTR_ERR(file); 223 223 goto fail; ··· 298 298 * shutdown any irqfd's that match fd+gsi 299 299 */ 300 300 static int 301 - kvm_irqfd_deassign(struct kvm *kvm, int fd, int gsi) 301 + kvm_irqfd_deassign(struct kvm *kvm, struct kvm_irqfd *args) 302 302 { 303 303 struct _irqfd *irqfd, *tmp; 304 304 struct eventfd_ctx *eventfd; 305 305 306 - eventfd = eventfd_ctx_fdget(fd); 306 + eventfd = eventfd_ctx_fdget(args->fd); 307 307 if (IS_ERR(eventfd)) 308 308 return PTR_ERR(eventfd); 309 309 310 310 spin_lock_irq(&kvm->irqfds.lock); 311 311 312 312 list_for_each_entry_safe(irqfd, tmp, &kvm->irqfds.items, list) { 313 - if (irqfd->eventfd == eventfd && irqfd->gsi == gsi) { 313 + if (irqfd->eventfd == eventfd && irqfd->gsi == args->gsi) { 314 314 /* 315 315 * This rcu_assign_pointer is needed for when 316 316 * another thread calls kvm_irq_routing_update before ··· 338 338 } 339 339 340 340 int 341 - kvm_irqfd(struct kvm *kvm, int fd, int gsi, int flags) 341 + kvm_irqfd(struct kvm *kvm, struct kvm_irqfd *args) 342 342 { 343 - if (flags & KVM_IRQFD_FLAG_DEASSIGN) 344 - return kvm_irqfd_deassign(kvm, fd, gsi); 343 + if (args->flags & KVM_IRQFD_FLAG_DEASSIGN) 344 + return kvm_irqfd_deassign(kvm, args); 345 345 346 - return kvm_irqfd_assign(kvm, fd, gsi); 346 + return kvm_irqfd_assign(kvm, args); 347 347 } 348 348 349 349 /*
+1 -1
virt/kvm/kvm_main.c
··· 2047 2047 r = -EFAULT; 2048 2048 if (copy_from_user(&data, argp, sizeof data)) 2049 2049 goto out; 2050 - r = kvm_irqfd(kvm, data.fd, data.gsi, data.flags); 2050 + r = kvm_irqfd(kvm, &data); 2051 2051 break; 2052 2052 } 2053 2053 case KVM_IOEVENTFD: {