Lines Matching refs:ioeventfd

1235 struct privcmd_kernel_ioreq *alloc_ioreq(struct privcmd_ioeventfd *ioeventfd)  in alloc_ioreq()  argument
1246 size = struct_size(kioreq, ports, ioeventfd->vcpus); in alloc_ioreq()
1251 kioreq->dom = ioeventfd->dom; in alloc_ioreq()
1252 kioreq->vcpus = ioeventfd->vcpus; in alloc_ioreq()
1253 kioreq->uioreq = ioeventfd->ioreq; in alloc_ioreq()
1259 vma = find_vma(mm, (unsigned long)ioeventfd->ioreq); in alloc_ioreq()
1271 ports = memdup_array_user(u64_to_user_ptr(ioeventfd->ports), in alloc_ioreq()
1307 get_ioreq(struct privcmd_ioeventfd *ioeventfd, struct eventfd_ctx *eventfd) in get_ioreq() argument
1319 if (kioreq->uioreq != ioeventfd->ioreq) { in get_ioreq()
1321 } else if (kioreq->dom != ioeventfd->dom || in get_ioreq()
1322 kioreq->vcpus != ioeventfd->vcpus) { in get_ioreq()
1324 kioreq->dom, ioeventfd->dom, kioreq->vcpus, in get_ioreq()
1325 ioeventfd->vcpus); in get_ioreq()
1343 return alloc_ioreq(ioeventfd); in get_ioreq()
1353 static int privcmd_ioeventfd_assign(struct privcmd_ioeventfd *ioeventfd) in privcmd_ioeventfd_assign() argument
1361 if (ioeventfd->addr + ioeventfd->addr_len < ioeventfd->addr) in privcmd_ioeventfd_assign()
1365 if (!(ioeventfd->addr_len == 1 || ioeventfd->addr_len == 2 || in privcmd_ioeventfd_assign()
1366 ioeventfd->addr_len == 4 || ioeventfd->addr_len == 8)) in privcmd_ioeventfd_assign()
1370 if (!ioeventfd->vcpus || ioeventfd->vcpus > 4096) in privcmd_ioeventfd_assign()
1377 kioeventfd->eventfd = eventfd_ctx_fdget(ioeventfd->event_fd); in privcmd_ioeventfd_assign()
1383 kioeventfd->addr = ioeventfd->addr; in privcmd_ioeventfd_assign()
1384 kioeventfd->addr_len = ioeventfd->addr_len; in privcmd_ioeventfd_assign()
1385 kioeventfd->vq = ioeventfd->vq; in privcmd_ioeventfd_assign()
1388 kioreq = get_ioreq(ioeventfd, kioeventfd->eventfd); in privcmd_ioeventfd_assign()
1411 static int privcmd_ioeventfd_deassign(struct privcmd_ioeventfd *ioeventfd) in privcmd_ioeventfd_deassign() argument
1418 eventfd = eventfd_ctx_fdget(ioeventfd->event_fd); in privcmd_ioeventfd_deassign()
1429 if (kioreq->dom != ioeventfd->dom || in privcmd_ioeventfd_deassign()
1430 kioreq->uioreq != ioeventfd->ioreq || in privcmd_ioeventfd_deassign()
1431 kioreq->vcpus != ioeventfd->vcpus) in privcmd_ioeventfd_deassign()
1450 ioeventfd->dom, ioeventfd->addr); in privcmd_ioeventfd_deassign()
1463 struct privcmd_ioeventfd ioeventfd; in privcmd_ioctl_ioeventfd() local
1465 if (copy_from_user(&ioeventfd, udata, sizeof(ioeventfd))) in privcmd_ioctl_ioeventfd()
1469 if (ioeventfd.flags & ~PRIVCMD_IOEVENTFD_FLAG_DEASSIGN) in privcmd_ioctl_ioeventfd()
1473 if (data->domid != DOMID_INVALID && data->domid != ioeventfd.dom) in privcmd_ioctl_ioeventfd()
1476 if (ioeventfd.flags & PRIVCMD_IOEVENTFD_FLAG_DEASSIGN) in privcmd_ioctl_ioeventfd()
1477 return privcmd_ioeventfd_deassign(&ioeventfd); in privcmd_ioctl_ioeventfd()
1479 return privcmd_ioeventfd_assign(&ioeventfd); in privcmd_ioctl_ioeventfd()