diff options
author | Dave Jiang <dave.jiang@intel.com> | 2020-01-22 00:44:29 +0100 |
---|---|---|
committer | Vinod Koul <vkoul@kernel.org> | 2020-01-24 06:48:45 +0100 |
commit | 42d279f9137ab7d5503836baec2739284b278d8f (patch) | |
tree | d2876eeee15f34802ffe1d20f5ff0a331ba08d48 /drivers/dma/idxd/submit.c | |
parent | dmaengine: idxd: connect idxd to dmaengine subsystem (diff) | |
download | linux-42d279f9137ab7d5503836baec2739284b278d8f.tar.xz linux-42d279f9137ab7d5503836baec2739284b278d8f.zip |
dmaengine: idxd: add char driver to expose submission portal to userland
Create a char device region that will allow acquisition of user portals in
order to allow applications to submit DMA operations. A char device will be
created per work queue that gets exposed. The workqueue type "user"
is used to mark a work queue for user char device. For example if the
workqueue 0 of DSA device 0 is marked for char device, then a device node
of /dev/dsa/wq0.0 will be created.
Signed-off-by: Dave Jiang <dave.jiang@intel.com>
Link: https://lore.kernel.org/r/157965026985.73301.976523230037106742.stgit@djiang5-desk3.ch.intel.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Diffstat (limited to 'drivers/dma/idxd/submit.c')
-rw-r--r-- | drivers/dma/idxd/submit.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/dma/idxd/submit.c b/drivers/dma/idxd/submit.c index e16cab37dda8..45a0c5869a0a 100644 --- a/drivers/dma/idxd/submit.c +++ b/drivers/dma/idxd/submit.c @@ -69,17 +69,19 @@ int idxd_submit_desc(struct idxd_wq *wq, struct idxd_desc *desc) { struct idxd_device *idxd = wq->idxd; int vec = desc->hw->int_handle; + void __iomem *portal; if (idxd->state != IDXD_DEV_ENABLED) return -EIO; + portal = wq->dportal + idxd_get_wq_portal_offset(IDXD_PORTAL_UNLIMITED); /* * The wmb() flushes writes to coherent DMA data before possibly * triggering a DMA read. The wmb() is necessary even on UP because * the recipient is a device. */ wmb(); - iosubmit_cmds512(wq->dportal, desc->hw, 1); + iosubmit_cmds512(portal, desc->hw, 1); /* * Pending the descriptor to the lockless list for the irq_entry |