Lines Matching defs:vu_group
745 poll_group_kick(struct nvmf_vfio_user_poll_group *vu_group)
747 vu_group->stats.pg_kicks++;
748 assert(vu_group->need_kick);
749 vu_group->need_kick = false;
750 eventfd_write(vu_group->intr_fd, 1);
1568 struct nvmf_vfio_user_poll_group *vu_group)
1580 vu_group->stats.won++;
1594 vu_group->need_kick = true;
1600 vu_group->stats.lost++;
1601 vu_group->stats.lost_count += count;
1615 vfio_user_poll_group_rearm(struct nvmf_vfio_user_poll_group *vu_group)
1620 vu_group->stats.rearms++;
1622 TAILQ_FOREACH(sq, &vu_group->sqs, link) {
1628 count += vfio_user_sq_rearm(sq->ctrlr, sq, vu_group);
1632 if (vu_group->need_kick) {
1633 poll_group_kick(vu_group);
2610 struct nvmf_vfio_user_poll_group *vu_group;
2618 vu_group = sq_to_poll_group(sq);
2620 vu_group->stats.cq_full++;
2629 vu_group->need_kick = true;
3322 struct nvmf_vfio_user_poll_group *vu_group = quiesce_ctx->group;
3326 SPDK_DEBUGLOG(nvmf_vfio, "quiesced pg:%p\n", vu_group);
3333 quiesce_ctx->group = TAILQ_NEXT(vu_group, link);
4750 vfio_user_poll_group_add_intr(struct nvmf_vfio_user_poll_group *vu_group,
4753 vu_group->intr_fd = eventfd(0, EFD_NONBLOCK);
4754 assert(vu_group->intr_fd != -1);
4756 vu_group->intr = SPDK_INTERRUPT_REGISTER(vu_group->intr_fd,
4757 vfio_user_poll_group_intr, vu_group);
4758 assert(vu_group->intr != NULL);
4766 struct nvmf_vfio_user_poll_group *vu_group;
4773 vu_group = calloc(1, sizeof(*vu_group));
4774 if (vu_group == NULL) {
4780 vfio_user_poll_group_add_intr(vu_group, group);
4783 TAILQ_INIT(&vu_group->sqs);
4786 TAILQ_INSERT_TAIL(&vu_transport->poll_groups, vu_group, link);
4788 vu_transport->next_pg = vu_group;
4792 return &vu_group->group;
4799 struct nvmf_vfio_user_poll_group **vu_group;
4840 vu_group = &vu_transport->next_pg;
4841 assert(*vu_group != NULL);
4843 result = &(*vu_group)->group;
4844 *vu_group = TAILQ_NEXT(*vu_group, link);
4845 if (*vu_group == NULL) {
4846 *vu_group = TAILQ_FIRST(&vu_transport->poll_groups);
4859 vfio_user_poll_group_del_intr(struct nvmf_vfio_user_poll_group *vu_group)
4861 assert(vu_group->intr_fd != -1);
4863 spdk_interrupt_unregister(&vu_group->intr);
4865 close(vu_group->intr_fd);
4866 vu_group->intr_fd = -1;
4873 struct nvmf_vfio_user_poll_group *vu_group, *next_tgroup;
4878 vu_group = SPDK_CONTAINEROF(group, struct nvmf_vfio_user_poll_group, group);
4879 vu_transport = SPDK_CONTAINEROF(vu_group->group.transport, struct nvmf_vfio_user_transport,
4883 vfio_user_poll_group_del_intr(vu_group);
4887 next_tgroup = TAILQ_NEXT(vu_group, link);
4888 TAILQ_REMOVE(&vu_transport->poll_groups, vu_group, link);
4892 if (vu_transport->next_pg == vu_group) {
4897 free(vu_group);
5002 struct nvmf_vfio_user_poll_group *vu_group = ctx;
5005 SPDK_DEBUGLOG(vfio_user_db, "pg:%p got intr\n", vu_group);
5007 ret |= nvmf_vfio_user_poll_group_poll(&vu_group->group);
5013 ret |= vfio_user_poll_group_rearm(vu_group);
5015 vu_group->stats.pg_process_count++;
5022 struct nvmf_vfio_user_poll_group *vu_group = ctx;
5025 eventfd_read(vu_group->intr_fd, &val);
5027 vu_group->stats.intr++;
5042 struct nvmf_vfio_user_poll_group *vu_group;
5071 TAILQ_FOREACH(vu_group, &vu_ctrlr->transport->poll_groups, link) {
5072 if (vu_group != vu_ctrlr_group) {
5073 SPDK_DEBUGLOG(vfio_user_db, "prodding pg:%p\n", vu_group);
5074 eventfd_write(vu_group->intr_fd, 1);
5144 struct nvmf_vfio_user_poll_group *vu_group;
5165 vu_group = SPDK_CONTAINEROF(sq->group, struct nvmf_vfio_user_poll_group, group);
5166 TAILQ_INSERT_TAIL(&vu_group->sqs, sq, link);
5318 struct nvmf_vfio_user_poll_group *vu_group;
5327 vu_group = SPDK_CONTAINEROF(group, struct nvmf_vfio_user_poll_group, group);
5328 TAILQ_REMOVE(&vu_group->sqs, sq, link);
5782 struct nvmf_vfio_user_poll_group *vu_group;
5788 vu_group = SPDK_CONTAINEROF(group, struct nvmf_vfio_user_poll_group, group);
5792 TAILQ_FOREACH_SAFE(sq, &vu_group->sqs, link, tmp) {
5808 vu_group->stats.polls++;
5809 vu_group->stats.poll_reqs += count;
5810 vu_group->stats.poll_reqs_squared += count * count;
5812 vu_group->stats.polls_spurious++;
5815 if (vu_group->need_kick) {
5816 poll_group_kick(vu_group);
5891 struct nvmf_vfio_user_poll_group *vu_group = SPDK_CONTAINEROF(group,
5895 spdk_json_write_named_uint64(w, "ctrlr_intr", vu_group->stats.ctrlr_intr);
5896 spdk_json_write_named_uint64(w, "ctrlr_kicks", vu_group->stats.ctrlr_kicks);
5897 spdk_json_write_named_uint64(w, "pg_kicks", vu_group->stats.pg_kicks);
5898 spdk_json_write_named_uint64(w, "won", vu_group->stats.won);
5899 spdk_json_write_named_uint64(w, "lost", vu_group->stats.lost);
5900 spdk_json_write_named_uint64(w, "lost_count", vu_group->stats.lost_count);
5901 spdk_json_write_named_uint64(w, "rearms", vu_group->stats.rearms);
5902 spdk_json_write_named_uint64(w, "cq_full", vu_group->stats.cq_full);
5903 spdk_json_write_named_uint64(w, "pg_process_count", vu_group->stats.pg_process_count);
5904 spdk_json_write_named_uint64(w, "intr", vu_group->stats.intr);
5905 spdk_json_write_named_uint64(w, "polls", vu_group->stats.polls);
5906 spdk_json_write_named_uint64(w, "polls_spurious", vu_group->stats.polls_spurious);
5907 spdk_json_write_named_uint64(w, "poll_reqs", vu_group->stats.poll_reqs);
5908 polls_denom = vu_group->stats.polls * (vu_group->stats.polls - 1);
5910 uint64_t n = vu_group->stats.polls * vu_group->stats.poll_reqs_squared - vu_group->stats.poll_reqs *
5911 vu_group->stats.poll_reqs;
5915 spdk_json_write_named_uint64(w, "cqh_admin_writes", vu_group->stats.cqh_admin_writes);
5916 spdk_json_write_named_uint64(w, "cqh_io_writes", vu_group->stats.cqh_io_writes);