Lines Matching +full:iommu +full:- +full:ctx

1 /* SPDX-License-Identifier: GPL-2.0 */
8 #include <linux/percpu-rwsem.h>
15 #include <linux/iommu.h>
28 IDXD_DEV_NONE = -1,
48 IDXD_TYPE_UNKNOWN = -1,
76 void *ctx, u32 *status);
85 #define INVALID_INT_HANDLE -1
258 IDXD_DEV_HALTED = -1,
354 int nr_rdbufs; /* non-reserved read buffers */
390 return idxd->hw.gen_cap.evl_support ? in evl_ent_size()
391 (32 * (1 << idxd->hw.gen_cap.evl_support)) : 0; in evl_ent_size()
396 return idxd->evl->size * evl_ent_size(idxd); in evl_size()
438 #define idxd_confdev(idxd) &idxd->idxd_dev.conf_dev
439 #define wq_confdev(wq) &wq->idxd_dev.conf_dev
440 #define engine_confdev(engine) &engine->idxd_dev.conf_dev
441 #define group_confdev(group) &group->idxd_dev.conf_dev
442 #define cdev_dev(cdev) &cdev->idxd_dev.conf_dev
443 #define user_ctx_dev(ctx) (&(ctx)->idxd_dev.conf_dev) argument
453 container_of(dev->driver, struct idxd_device_driver, drv); in wq_to_idxd_drv()
496 idev->type = IDXD_DEV_NONE; in idxd_dev_set_type()
500 idev->type = type; in idxd_dev_set_type()
505 return (idx == 0) ? &idxd->ie : &idxd->wqs[idx - 1]->ie; in idxd_get_ie()
522 reg.bits = ioread32(idxd->reg_base + IDXD_GENCFG_OFFSET); in idxd_set_user_intr()
524 iowrite32(reg.bits, idxd->reg_base + IDXD_GENCFG_OFFSET); in idxd_set_user_intr()
539 return idxd_dev->type == IDXD_DEV_DSA; in is_dsa_dev()
544 return idxd_dev->type == IDXD_DEV_IAX; in is_iax_dev()
554 return idxd_dev->type == IDXD_DEV_WQ; in is_idxd_wq_dev()
559 if (wq->type == IDXD_WQT_KERNEL && strcmp(wq->name, "dmaengine") == 0) in is_idxd_wq_dmaengine()
566 return wq->type == IDXD_WQT_USER; in is_idxd_wq_user()
571 return wq->type == IDXD_WQT_KERNEL; in is_idxd_wq_kernel()
576 return test_bit(WQ_FLAG_DEDICATED, &wq->flags); in wq_dedicated()
581 return !test_bit(WQ_FLAG_DEDICATED, &wq->flags); in wq_shared()
586 return test_bit(IDXD_FLAG_PASID_ENABLED, &idxd->flags); in device_pasid_enabled()
591 return test_bit(IDXD_FLAG_USER_PASID_ENABLED, &idxd->flags); in device_user_pasid_enabled()
596 return (is_idxd_wq_kernel(wq) && device_pasid_enabled(wq->idxd)) || in wq_pasid_enabled()
597 (is_idxd_wq_user(wq) && device_user_pasid_enabled(wq->idxd)); in wq_pasid_enabled()
626 #define IDXD_PORTAL_MASK (PAGE_SIZE - 1)
638 int ofs = wq->portal_offset; in idxd_wq_portal_addr()
640 wq->portal_offset = (ofs + sizeof(struct dsa_raw_desc)) & IDXD_PORTAL_MASK; in idxd_wq_portal_addr()
641 return wq->portal + ofs; in idxd_wq_portal_addr()
646 wq->client_count++; in idxd_wq_get()
651 wq->client_count--; in idxd_wq_put()
656 return wq->client_count; in idxd_wq_refcount()
678 idxd->max_batch_size = 0; in idxd_set_max_batch_size()
680 idxd->max_batch_size = max_batch_size; in idxd_set_max_batch_size()
687 wq->max_batch_size = 0; in idxd_wq_set_max_batch_size()
689 wq->max_batch_size = max_batch_size; in idxd_wq_set_max_batch_size()
696 wqcfg->max_batch_shift = 0; in idxd_wqcfg_set_max_batch_shift()
698 wqcfg->max_batch_shift = max_batch_shift; in idxd_wqcfg_set_max_batch_shift()
703 return (strncmp(wq->driver_name, dev->driver->name, strlen(dev->driver->name)) == 0); in idxd_wq_driver_name_match()
722 bool free_desc, void *ctx, u32 *status);
731 drv = wq_to_idxd_drv(desc->wq); in idxd_desc_complete()
732 if (drv->desc_complete) in idxd_desc_complete()
733 drv->desc_complete(desc, comp_type, free_desc, in idxd_desc_complete()
734 &desc->txd, &status); in idxd_desc_complete()