mirror of
https://github.com/clearlinux/kvmtool.git
synced 2026-04-28 10:53:40 +00:00
kvm tools: ioeventfd: replace bool parameters to __add_event with flags
A recent fix to virtio MMIO (72a7541ce305 ["kvm tools: virtio-mmio: init_ioeventfd should use MMIO for ioeventfd__add_event()"]) highlighted the confusing parameters expected by ioeventfd__add_event. As per Pekka's suggestion, replace the bool parameters to this function with a single `flags' argument instead. Cc: Ying-Shiuan Pan <yingshiuan.pan@gmail.com> Signed-off-by: Will Deacon <will.deacon@arm.com> Signed-off-by: Pekka Enberg <penberg@kernel.org>
This commit is contained in:
@@ -20,9 +20,12 @@ struct ioevent {
|
||||
struct list_head list;
|
||||
};
|
||||
|
||||
#define IOEVENTFD_FLAG_PIO (1 << 0)
|
||||
#define IOEVENTFD_FLAG_USER_POLL (1 << 1)
|
||||
|
||||
int ioeventfd__init(struct kvm *kvm);
|
||||
int ioeventfd__exit(struct kvm *kvm);
|
||||
int ioeventfd__add_event(struct ioevent *ioevent, bool is_pio, bool poll_in_userspace);
|
||||
int ioeventfd__add_event(struct ioevent *ioevent, int flags);
|
||||
int ioeventfd__del_event(u64 addr, u64 datamatch);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -120,7 +120,7 @@ int ioeventfd__exit(struct kvm *kvm)
|
||||
}
|
||||
base_exit(ioeventfd__exit);
|
||||
|
||||
int ioeventfd__add_event(struct ioevent *ioevent, bool is_pio, bool poll_in_userspace)
|
||||
int ioeventfd__add_event(struct ioevent *ioevent, int flags)
|
||||
{
|
||||
struct kvm_ioeventfd kvm_ioevent;
|
||||
struct epoll_event epoll_event;
|
||||
@@ -145,7 +145,7 @@ int ioeventfd__add_event(struct ioevent *ioevent, bool is_pio, bool poll_in_user
|
||||
.flags = KVM_IOEVENTFD_FLAG_DATAMATCH,
|
||||
};
|
||||
|
||||
if (is_pio)
|
||||
if (flags & IOEVENTFD_FLAG_PIO)
|
||||
kvm_ioevent.flags |= KVM_IOEVENTFD_FLAG_PIO;
|
||||
|
||||
r = ioctl(ioevent->fn_kvm->vm_fd, KVM_IOEVENTFD, &kvm_ioevent);
|
||||
@@ -154,7 +154,7 @@ int ioeventfd__add_event(struct ioevent *ioevent, bool is_pio, bool poll_in_user
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (!poll_in_userspace)
|
||||
if (!(flags & IOEVENTFD_FLAG_USER_POLL))
|
||||
return 0;
|
||||
|
||||
epoll_event = (struct epoll_event) {
|
||||
|
||||
@@ -55,10 +55,10 @@ static int virtio_mmio_init_ioeventfd(struct kvm *kvm,
|
||||
* Vhost will poll the eventfd in host kernel side,
|
||||
* no need to poll in userspace.
|
||||
*/
|
||||
err = ioeventfd__add_event(&ioevent, false, false);
|
||||
err = ioeventfd__add_event(&ioevent, 0);
|
||||
else
|
||||
/* Need to poll in userspace. */
|
||||
err = ioeventfd__add_event(&ioevent, false, true);
|
||||
err = ioeventfd__add_event(&ioevent, IOEVENTFD_FLAG_USER_POLL);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
|
||||
@@ -46,10 +46,11 @@ static int virtio_pci__init_ioeventfd(struct kvm *kvm, struct virtio_device *vde
|
||||
* Vhost will poll the eventfd in host kernel side,
|
||||
* no need to poll in userspace.
|
||||
*/
|
||||
r = ioeventfd__add_event(&ioevent, true, false);
|
||||
r = ioeventfd__add_event(&ioevent, IOEVENTFD_FLAG_PIO);
|
||||
else
|
||||
/* Need to poll in userspace. */
|
||||
r = ioeventfd__add_event(&ioevent, true, true);
|
||||
r = ioeventfd__add_event(&ioevent, IOEVENTFD_FLAG_PIO |
|
||||
IOEVENTFD_FLAG_USER_POLL);
|
||||
if (r)
|
||||
return r;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user