/linux/drivers/net/ethernet/mellanox/mlx5/core/ |
A D | wq.h | 107 return wq->cur_sz == wq->sz; in mlx5_wq_cyc_is_full() 112 return wq->sz - wq->cur_sz; in mlx5_wq_cyc_missing() 139 *wq->db = cpu_to_be32(wq->wqe_ctr); in mlx5_wq_cyc_update_db_record() 149 return mlx5_wq_cyc_ctr2ix(wq, wq->wqe_ctr); in mlx5_wq_cyc_get_head() 154 return mlx5_wq_cyc_ctr2ix(wq, wq->wqe_ctr - wq->cur_sz); in mlx5_wq_cyc_get_tail() 197 return mlx5_cqwq_ctr2ix(wq, wq->cc); in mlx5_cqwq_get_ci() 217 return mlx5_cqwq_get_ctr_wrap_cnt(wq, wq->cc); in mlx5_cqwq_get_wrap_cnt() 227 *wq->db = cpu_to_be32(wq->cc & 0xffffff); in mlx5_cqwq_update_db_record() 253 return wq->cur_sz == wq->fbc.sz_m1; in mlx5_wq_ll_is_full() 263 return wq->fbc.sz_m1 - wq->cur_sz; in mlx5_wq_ll_missing() [all …]
|
A D | wq.c | 52 wq->db = wq_ctrl->db.db; in mlx5_wq_cyc_create() 62 wq->sz = mlx5_wq_cyc_get_size(wq); in mlx5_wq_cyc_create() 88 mlx5_wq_cyc_get_size(wq), wq->cur_sz, ix, len); in mlx5_wq_cyc_wqe_dump() 94 wq->wqe_ctr = 0; in mlx5_wq_cyc_reset() 95 wq->cur_sz = 0; in mlx5_wq_cyc_reset() 138 &wq->sq.fbc); in mlx5_wq_qp_create() 174 wq->db = wq_ctrl->db.db; in mlx5_cqwq_create() 225 wq->db = wq_ctrl->db.db; in mlx5_wq_ll_create() 249 wq->head = 0; in mlx5_wq_ll_reset() 250 wq->wqe_ctr = 0; in mlx5_wq_ll_reset() [all …]
|
/linux/drivers/scsi/fnic/ |
A D | vnic_wq.c | 33 if (!wq->ctrl) in vnic_wq_get_ctrl() 79 wq->to_use = wq->to_clean = wq->bufs[0]; in vnic_wq_alloc_bufs() 89 vdev = wq->vdev; in vnic_wq_free() 98 wq->ctrl = NULL; in vnic_wq_free() 108 wq->vdev = vdev; in vnic_wq_alloc() 111 if (!wq->ctrl) { in vnic_wq_alloc() 137 wq->index = 0; in vnic_wq_devcmd2_alloc() 138 wq->vdev = vdev; in vnic_wq_devcmd2_alloc() 171 wq->to_use = wq->to_clean = in vnic_wq_init_start() 185 iowrite32(wq->ring.desc_count, &wq->ctrl->ring_size); in vnic_wq_init() [all …]
|
A D | vnic_wq_copy.h | 43 return wq->ring.desc_count - 1 - wq->ring.desc_avail; in vnic_wq_copy_desc_in_use() 55 ((wq->to_use_index + 1) == wq->ring.desc_count) ? in vnic_wq_copy_post() 56 (wq->to_use_index = 0) : (wq->to_use_index++); in vnic_wq_copy_post() 57 wq->ring.desc_avail--; in vnic_wq_copy_post() 66 iowrite32(wq->to_use_index, &wq->ctrl->posted_index); in vnic_wq_copy_post() 76 cnt = wq->ring.desc_count - wq->to_clean_index + index + 1; in vnic_wq_copy_desc_process() 78 wq->to_clean_index = ((index + 1) % wq->ring.desc_count); in vnic_wq_copy_desc_process() 94 (*q_service)(wq, &wq_desc[wq->to_clean_index]); in vnic_wq_copy_service() 103 ((wq->to_clean_index + 1) == wq->ring.desc_count) ? in vnic_wq_copy_service() 104 (wq->to_clean_index = 0) : (wq->to_clean_index++); in vnic_wq_copy_service() [all …]
|
A D | vnic_wq_copy.c | 27 iowrite32(1, &wq->ctrl->enable); in vnic_wq_copy_enable() 45 wq->index, ioread32(&wq->ctrl->fetch_index), in vnic_wq_copy_disable() 60 wq->to_use_index = wq->to_clean_index = 0; in vnic_wq_copy_clean() 73 vdev = wq->vdev; in vnic_wq_copy_free() 75 wq->ctrl = NULL; in vnic_wq_copy_free() 82 wq->index = index; in vnic_wq_copy_alloc() 83 wq->vdev = vdev; in vnic_wq_copy_alloc() 84 wq->to_use_index = wq->to_clean_index = 0; in vnic_wq_copy_alloc() 86 if (!wq->ctrl) { in vnic_wq_copy_alloc() 91 vnic_wq_copy_disable(wq); in vnic_wq_copy_alloc() [all …]
|
A D | vnic_wq.h | 101 return wq->ring.desc_avail; in vnic_wq_desc_avail() 107 return wq->ring.desc_count - wq->ring.desc_avail - 1; in vnic_wq_desc_used() 112 return wq->to_use->desc; in vnic_wq_next_desc() 119 struct vnic_wq_buf *buf = wq->to_use; in vnic_wq_post() 136 wq->to_use = buf; in vnic_wq_post() 138 wq->ring.desc_avail--; in vnic_wq_post() 149 buf = wq->to_clean; in vnic_wq_service() 154 wq->ring.desc_avail++; in vnic_wq_service() 156 wq->to_clean = buf->next; in vnic_wq_service() 161 buf = wq->to_clean; in vnic_wq_service() [all …]
|
/linux/drivers/net/ethernet/cisco/enic/ |
A D | vnic_wq.c | 39 if (!wq->bufs[i]) in vnic_wq_alloc_bufs() 64 wq->to_use = wq->to_clean = wq->bufs[0]; in vnic_wq_alloc_bufs() 74 vdev = wq->vdev; in vnic_wq_free() 85 wq->ctrl = NULL; in vnic_wq_free() 94 wq->vdev = vdev; in vnic_wq_alloc() 97 if (!wq->ctrl) { in vnic_wq_alloc() 122 wq->index = 0; in enic_wq_devcmd2_alloc() 123 wq->vdev = vdev; in enic_wq_devcmd2_alloc() 126 if (!wq->ctrl) in enic_wq_devcmd2_alloc() 152 wq->to_use = wq->to_clean = in enic_wq_init_start() [all …]
|
A D | vnic_wq.h | 99 struct vnic_wq wq; member 106 return wq->ring.desc_avail; in vnic_wq_desc_avail() 112 return wq->ring.desc_count - wq->ring.desc_avail - 1; in vnic_wq_desc_used() 117 return wq->to_use->desc; in vnic_wq_next_desc() 128 iowrite32(wq->to_use->index, &wq->ctrl->posted_index); in vnic_wq_doorbell() 137 struct vnic_wq_buf *buf = wq->to_use; in vnic_wq_post() 149 wq->to_use = buf; in vnic_wq_post() 162 buf = wq->to_clean; in vnic_wq_service() 167 wq->ring.desc_avail++; in vnic_wq_service() 169 wq->to_clean = buf->next; in vnic_wq_service() [all …]
|
/linux/drivers/scsi/snic/ |
A D | vnic_wq.c | 30 if (!wq->ctrl) in vnic_wq_get_ctrl() 59 buf = wq->bufs[i]; in vnic_wq_alloc_bufs() 76 wq->to_use = wq->to_clean = wq->bufs[0]; in vnic_wq_alloc_bufs() 86 vdev = wq->vdev; in svnic_wq_free() 95 wq->ctrl = NULL; in svnic_wq_free() 104 wq->index = 0; in vnic_wq_devcmd2_alloc() 105 wq->vdev = vdev; in vnic_wq_devcmd2_alloc() 128 wq->index = index; in svnic_wq_alloc() 129 wq->vdev = vdev; in svnic_wq_alloc() 172 wq->to_use = wq->to_clean = in vnic_wq_init_start() [all …]
|
A D | vnic_wq.h | 88 return wq->ring.desc_avail; in svnic_wq_desc_avail() 94 return wq->ring.desc_count - wq->ring.desc_avail - 1; in svnic_wq_desc_used() 99 return wq->to_use->desc; in svnic_wq_next_desc() 106 struct vnic_wq_buf *buf = wq->to_use; in svnic_wq_post() 123 wq->to_use = buf; in svnic_wq_post() 125 wq->ring.desc_avail--; in svnic_wq_post() 136 buf = wq->to_clean; in svnic_wq_service() 141 wq->ring.desc_avail++; in svnic_wq_service() 143 wq->to_clean = buf->next; in svnic_wq_service() 148 buf = wq->to_clean; in svnic_wq_service() [all …]
|
/linux/drivers/net/ethernet/huawei/hinic/ |
A D | hinic_hw_wq.c | 34 #define WQ_SIZE(wq) ((wq)->q_depth * (wq)->wqebb_size) argument 69 ((wq)->shadow_block_vaddr[WQE_PAGE_NUM(wq, idx)]) 384 size = wq->num_q_pages * wq->max_wqe_size; in alloc_wqes_shadow() 389 size = wq->num_q_pages * sizeof(wq->prod_idx); in alloc_wqes_shadow() 453 num_q_pages = ALIGN(WQ_SIZE(wq), wq->wq_page_size) / wq->wq_page_size; in alloc_wq_pages() 555 wq->block_vaddr = WQ_BASE_VADDR(wqs, wq); in hinic_wq_allocate() 556 wq->shadow_block_vaddr = WQ_BASE_ADDR(wqs, wq); in hinic_wq_allocate() 557 wq->block_paddr = WQ_BASE_PADDR(wqs, wq); in hinic_wq_allocate() 573 wqs_return_block(wqs, wq->page_idx, wq->block_idx); in hinic_wq_allocate() 584 free_wq_pages(wq, wqs->hwif, wq->num_q_pages); in hinic_wq_free() [all …]
|
/linux/drivers/dma/idxd/ |
A D | device.c | 142 num_descs = wq_dedicated(wq) ? wq->size : wq->threshold; in idxd_wq_alloc_resources() 175 desc->wq = wq; in idxd_wq_alloc_resources() 184 dma_free_coherent(dev, wq->compls_size, wq->compls, wq->compls_addr); in idxd_wq_alloc_resources() 199 dma_free_coherent(dev, wq->compls_size, wq->compls, wq->compls_addr); in idxd_wq_free_resources() 831 wq->wqcfg->wq_size = wq->size; in idxd_wq_config_write() 840 wq->wqcfg->wq_thresh = wq->threshold; in idxd_wq_config_write() 871 wq->wqcfg->priority = wq->priority; in idxd_wq_config_write() 1041 wq->size = wq->wqcfg->wq_size; in idxd_wq_load_config() 1042 wq->threshold = wq->wqcfg->wq_thresh; in idxd_wq_load_config() 1050 wq->priority = wq->wqcfg->priority; in idxd_wq_load_config() [all …]
|
A D | cdev.c | 35 struct idxd_wq *wq; member 46 struct idxd_wq *wq = idxd_cdev->wq; in idxd_cdev_dev_release() local 83 idxd = wq->idxd; in idxd_cdev_open() 94 if (idxd_wq_refcount(wq) > 0 && wq_dedicated(wq)) { in idxd_cdev_open() 99 ctx->wq = wq; in idxd_cdev_open() 130 idxd_wq_get(wq); in idxd_cdev_open() 143 struct idxd_wq *wq = ctx->wq; in idxd_cdev_release() local 169 idxd_wq_put(wq); in idxd_cdev_release() 193 struct idxd_wq *wq = ctx->wq; in idxd_cdev_mmap() local 219 struct idxd_wq *wq = ctx->wq; in idxd_cdev_poll() local [all …]
|
A D | dma.c | 20 return idxd_chan->wq; in to_idxd_wq() 114 idxd_wq_get(wq); in idxd_dma_alloc_chan_resources() 116 idxd_wq_refcount(wq)); in idxd_dma_alloc_chan_resources() 125 idxd_wq_put(wq); in idxd_dma_free_chan_resources() 249 idxd_chan->wq = wq; in idxd_register_dma_channel() 263 kfree(wq->idxd_chan); in idxd_unregister_dma_channel() 264 wq->idxd_chan = NULL; in idxd_unregister_dma_channel() 313 idxd_wq_quiesce(wq); in idxd_dmaengine_drv_probe() 318 __drv_disable_wq(wq); in idxd_dmaengine_drv_probe() 330 idxd_wq_quiesce(wq); in idxd_dmaengine_drv_remove() [all …]
|
A D | submit.c | 14 struct idxd_device *idxd = wq->idxd; in __get_desc() 16 desc = wq->descs[idx]; in __get_desc() 29 desc->hw->int_handle = wq->id + 1; in __get_desc() 47 sbq = &wq->sbq; in idxd_alloc_desc() 53 return __get_desc(wq, idx, cpu); in idxd_alloc_desc() 71 return __get_desc(wq, idx, cpu); in idxd_alloc_desc() 159 idxd_free_desc(wq, desc); in idxd_submit_desc() 164 idxd_free_desc(wq, desc); in idxd_submit_desc() 186 if (wq_dedicated(wq)) { in idxd_submit_desc() 202 idxd_free_desc(wq, desc); in idxd_submit_desc() [all …]
|
A D | idxd.h | 138 struct idxd_wq *wq; member 161 struct idxd_wq *wq; member 292 struct workqueue_struct *wq; member 317 struct idxd_wq *wq; member 329 #define wq_confdev(wq) &wq->idxd_dev.conf_dev argument 415 if (wq->type == IDXD_WQT_KERNEL && strcmp(wq->name, "dmaengine") == 0) in is_idxd_wq_dmaengine() 483 int ofs = wq->portal_offset; in idxd_wq_portal_addr() 486 return wq->portal + ofs; in idxd_wq_portal_addr() 491 wq->client_count++; in idxd_wq_get() 496 wq->client_count--; in idxd_wq_put() [all …]
|
/linux/fs/autofs/ |
A D | waitq.c | 30 while (wq) { in autofs_catatonic_mode() 33 kfree(wq->name.name - wq->offset); in autofs_catatonic_mode() 37 wq = nwq; in autofs_catatonic_mode() 93 wq->name.len, wq->name.name, type); in autofs_notify_daemon() 110 memcpy(mp->name, wq->name.name, wq->name.len); in autofs_notify_daemon() 123 memcpy(ep->name, wq->name.name, wq->name.len); in autofs_notify_daemon() 143 memcpy(packet->name, wq->name.name, wq->name.len); in autofs_notify_daemon() 183 for (wq = sbi->queues; wq; wq = wq->next) { in autofs_find_wait() 190 return wq; in autofs_find_wait() 215 if (wq) { in validate_request() [all …]
|
/linux/fs/btrfs/ |
A D | async-thread.c | 192 wq->count++; in thresh_exec_hook() 193 wq->count %= (wq->thresh / 4); in thresh_exec_hook() 321 wq = work->wq; in btrfs_work_helper() 358 work->wq = wq; in __btrfs_queue_work() 386 kfree(wq); in __btrfs_destroy_workqueue() 391 if (!wq) in btrfs_destroy_workqueue() 393 if (wq->high) in btrfs_destroy_workqueue() 396 kfree(wq); in btrfs_destroy_workqueue() 401 if (!wq) in btrfs_workqueue_set_max() 404 if (wq->high) in btrfs_workqueue_set_max() [all …]
|
/linux/Documentation/translations/zh_CN/core-api/ |
A D | workqueue.rst | 39 在最初的wq实现中,多线程(MT)wq在每个CPU上有一个工作者线程,而单线程 40 (ST)wq在全系统有一个工作者线程。一个MT wq需要保持与CPU数量相同的工 45 制在ST和MT wq中都有,只是在MT中没有那么严重。每个wq都保持着自己独立的 46 工作者池。一个MT wq只能为每个CPU提供一个执行环境,而一个ST wq则为整个 121 的工作项都需要在wq上排队,wq上保留了一个救援工作者,以便在内存有压 155 一个可冻结的wq参与了系统暂停操作的冻结阶段。wq上的工作项被 191 时执行16个wq的工作项。 198 一个wq的活动工作项的数量通常由wq的用户来调节,更具体地说,是由用 262 现在,我们假设w1和w2被排到了不同的wq q1上,这个wq q1 284 它们应该被排在不同的wq中,每个wq都有 ``WQ_MEM_RECLAIM`` 。 [all …]
|
/linux/kernel/ |
A D | workqueue.c | 1671 dwork->wq = wq; in __queue_delayed_work() 1775 rwork->wq = wq; in queue_rcu_work() 2042 struct workqueue_struct *wq = pwq->wq; in send_mayday() local 3504 if (wq->lock_name != wq->name) in wq_free_lockdep() 3708 struct workqueue_struct *wq = pwq->wq; in pwq_unbound_release_workfn() local 3752 struct workqueue_struct *wq = pwq->wq; in pwq_adjust_max_active() local 3806 pwq->wq = wq; in init_pwq() 3818 struct workqueue_struct *wq = pwq->wq; in link_pwq() local 4014 ctx->wq = wq; in apply_wqattrs_prepare() 4694 copy_from_kernel_nofault(&wq, &pwq->wq, sizeof(wq)); in print_worker_info() [all …]
|
/linux/include/linux/ |
A D | swait.h | 123 return !list_empty(&wq->task_list); in swait_active() 144 return swait_active(wq); in swq_has_sleeper() 178 finish_swait(&wq, &__wait); \ 182 #define __swait_event(wq, condition) \ argument 186 #define swait_event_exclusive(wq, condition) \ argument 190 __swait_event(wq, condition); \ 227 __ret = __swait_event_interruptible_timeout(wq, \ 232 #define __swait_event_idle(wq, condition) \ argument 247 #define swait_event_idle_exclusive(wq, condition) \ argument 251 __swait_event_idle(wq, condition); \ [all …]
|
/linux/fs/ |
A D | io-wq.c | 184 struct io_wq *wq = wqe->wq; in io_worker_cancel_cb() local 208 struct io_wq *wq = wqe->wq; in io_worker_exit() local 321 wq = wqe->wq; in create_worker_cb() 344 struct io_wq *wq = wqe->wq; in io_queue_worker_create() local 441 struct io_wq *wq = wqe->wq; in io_wait_on_hash() local 544 struct io_wq *wq = wqe->wq; in io_worker_handle_work() local 614 struct io_wq *wq = wqe->wq; in io_wqe_worker() local 872 struct io_wq *wq = wqe->wq; in io_run_cancel() local 1137 if (!wq) in io_wq_create() 1175 wqe->wq = wq; in io_wq_create() [all …]
|
/linux/drivers/infiniband/hw/cxgb4/ |
A D | t4.h | 492 return wq->rq.size - 1 - wq->rq.in_use; in t4_rq_avail() 498 if (++wq->rq.pidx == wq->rq.size) in t4_rq_produce() 508 if (++wq->rq.cidx == wq->rq.size) in t4_rq_consume() 534 return wq->sq.size - 1 - wq->sq.in_use; in t4_sq_avail() 540 if (++wq->sq.pidx == wq->sq.size) in t4_sq_produce() 549 if (wq->sq.cidx == wq->sq.flush_cidx) in t4_sq_consume() 552 if (++wq->sq.cidx == wq->sq.size) in t4_sq_consume() 622 writel(QID_V(wq->sq.qid) | PIDX_V(inc), wq->db); in t4_ring_sq_db() 647 writel(QID_V(wq->rq.qid) | PIDX_V(inc), wq->db); in t4_ring_rq_db() 664 wq->rq.queue[wq->rq.size].status.db_off = 1; in t4_disable_wq_db() [all …]
|
A D | qp.c | 163 wq->rq.memsize, wq->rq.queue, in destroy_qp() 226 wq->sq.sw_sq = kcalloc(wq->sq.size, sizeof(*wq->sq.sw_sq), in create_qp() 387 wq->sq.qid, wq->rq.qid, wq->db, in create_qp() 388 wq->sq.bar2_va, wq->rq.bar2_va); in create_qp() 2330 qhp->wq.sq.qid, qhp->wq.sq.size, qhp->wq.sq.memsize, in c4iw_create_qp() 2477 struct t4_srq *wq = &srq->wq; in free_srq_queue() local 2502 wq->memsize, wq->queue, in free_srq_queue() 2514 struct t4_srq *wq = &srq->wq; in alloc_srq_queue() local 2527 wq->sw_rq = kcalloc(wq->size, sizeof(*wq->sw_rq), in alloc_srq_queue() 2538 wq->rqt_size = wq->size; in alloc_srq_queue() [all …]
|
A D | cq.c | 209 wq, cq, wq->rq.in_use, count); in c4iw_flush_rq() 241 struct t4_wq *wq = &qhp->wq; in c4iw_flush_sq() local 248 wq->sq.flush_cidx = wq->sq.cidx; in c4iw_flush_sq() 262 if (wq->sq.flush_cidx >= wq->sq.size) in c4iw_flush_sq() 263 wq->sq.flush_cidx -= wq->sq.size; in c4iw_flush_sq() 273 wq->sq.flush_cidx = wq->sq.cidx; in flush_completed_wrs() 320 wq->sq.oldest_read = &wq->sq.sw_sq[rptr]; in advance_oldest_read() 711 wq->sq.in_use -= wq->sq.size + idx - wq->sq.cidx; in poll_cq() 713 wq->sq.in_use -= idx - wq->sq.cidx; in poll_cq() 717 *cookie = wq->sq.sw_sq[wq->sq.cidx].wr_id; in poll_cq() [all …]
|