dmaengine: idxd: change MSIX allocation based on per wq activation
authorDave Jiang <dave.jiang@intel.com>
Mon, 13 Dec 2021 18:51:34 +0000 (11:51 -0700)
committerVinod Koul <vkoul@kernel.org>
Wed, 5 Jan 2022 07:41:22 +0000 (13:11 +0530)
commit403a2e236538c6b479ea5bfc8b75a75540cfba6b
treed31ed9dad21d873345ad76a1e78f3114c7ca9610
parent23a50c8035655c5a1d9b52c878b3ebf7b6b83eea
dmaengine: idxd: change MSIX allocation based on per wq activation

Change the driver where WQ interrupt is requested only when wq is being
enabled. This new scheme set things up so that request_threaded_irq() is
only called when a kernel wq type is being enabled. This also sets up for
future interrupt request where different interrupt handler such as wq
occupancy interrupt can be setup instead of the wq completion interrupt.

Not calling request_irq() until the WQ actually needs an irq also prevents
wasting of CPU irq vectors on x86 systems, which is a limited resource.

idxd_flush_pending_descs() is moved to device.c since descriptor flushing
is now part of wq disable rather than shutdown().

Signed-off-by: Dave Jiang <dave.jiang@intel.com>
Link: https://lore.kernel.org/r/163942149487.2412839.6691222855803875848.stgit@djiang5-desk3.ch.intel.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
drivers/dma/idxd/device.c
drivers/dma/idxd/dma.c
drivers/dma/idxd/idxd.h
drivers/dma/idxd/init.c
drivers/dma/idxd/irq.c
include/uapi/linux/idxd.h