Lines Matching refs:ioeventfd

1221 struct privcmd_kernel_ioreq *alloc_ioreq(struct privcmd_ioeventfd *ioeventfd)  in alloc_ioreq()  argument
1232 size = struct_size(kioreq, ports, ioeventfd->vcpus); in alloc_ioreq()
1237 kioreq->dom = ioeventfd->dom; in alloc_ioreq()
1238 kioreq->vcpus = ioeventfd->vcpus; in alloc_ioreq()
1239 kioreq->uioreq = ioeventfd->ioreq; in alloc_ioreq()
1245 vma = find_vma(mm, (unsigned long)ioeventfd->ioreq); in alloc_ioreq()
1257 ports = memdup_array_user(u64_to_user_ptr(ioeventfd->ports), in alloc_ioreq()
1293 get_ioreq(struct privcmd_ioeventfd *ioeventfd, struct eventfd_ctx *eventfd) in get_ioreq() argument
1305 if (kioreq->uioreq != ioeventfd->ioreq) { in get_ioreq()
1307 } else if (kioreq->dom != ioeventfd->dom || in get_ioreq()
1308 kioreq->vcpus != ioeventfd->vcpus) { in get_ioreq()
1310 kioreq->dom, ioeventfd->dom, kioreq->vcpus, in get_ioreq()
1311 ioeventfd->vcpus); in get_ioreq()
1329 return alloc_ioreq(ioeventfd); in get_ioreq()
1339 static int privcmd_ioeventfd_assign(struct privcmd_ioeventfd *ioeventfd) in privcmd_ioeventfd_assign() argument
1347 if (ioeventfd->addr + ioeventfd->addr_len < ioeventfd->addr) in privcmd_ioeventfd_assign()
1351 if (!(ioeventfd->addr_len == 1 || ioeventfd->addr_len == 2 || in privcmd_ioeventfd_assign()
1352 ioeventfd->addr_len == 4 || ioeventfd->addr_len == 8)) in privcmd_ioeventfd_assign()
1356 if (!ioeventfd->vcpus || ioeventfd->vcpus > 4096) in privcmd_ioeventfd_assign()
1363 kioeventfd->eventfd = eventfd_ctx_fdget(ioeventfd->event_fd); in privcmd_ioeventfd_assign()
1369 kioeventfd->addr = ioeventfd->addr; in privcmd_ioeventfd_assign()
1370 kioeventfd->addr_len = ioeventfd->addr_len; in privcmd_ioeventfd_assign()
1371 kioeventfd->vq = ioeventfd->vq; in privcmd_ioeventfd_assign()
1374 kioreq = get_ioreq(ioeventfd, kioeventfd->eventfd); in privcmd_ioeventfd_assign()
1397 static int privcmd_ioeventfd_deassign(struct privcmd_ioeventfd *ioeventfd) in privcmd_ioeventfd_deassign() argument
1404 eventfd = eventfd_ctx_fdget(ioeventfd->event_fd); in privcmd_ioeventfd_deassign()
1415 if (kioreq->dom != ioeventfd->dom || in privcmd_ioeventfd_deassign()
1416 kioreq->uioreq != ioeventfd->ioreq || in privcmd_ioeventfd_deassign()
1417 kioreq->vcpus != ioeventfd->vcpus) in privcmd_ioeventfd_deassign()
1436 ioeventfd->dom, ioeventfd->addr); in privcmd_ioeventfd_deassign()
1449 struct privcmd_ioeventfd ioeventfd; in privcmd_ioctl_ioeventfd() local
1451 if (copy_from_user(&ioeventfd, udata, sizeof(ioeventfd))) in privcmd_ioctl_ioeventfd()
1455 if (ioeventfd.flags & ~PRIVCMD_IOEVENTFD_FLAG_DEASSIGN) in privcmd_ioctl_ioeventfd()
1459 if (data->domid != DOMID_INVALID && data->domid != ioeventfd.dom) in privcmd_ioctl_ioeventfd()
1462 if (ioeventfd.flags & PRIVCMD_IOEVENTFD_FLAG_DEASSIGN) in privcmd_ioctl_ioeventfd()
1463 return privcmd_ioeventfd_deassign(&ioeventfd); in privcmd_ioctl_ioeventfd()
1465 return privcmd_ioeventfd_assign(&ioeventfd); in privcmd_ioctl_ioeventfd()