[PATCH v6 00/16] NVIDIA Tegra APB DMA driver fixes and improvements

Dmitry Osipenko
2020-01-30T04:41:14Z

Hello,

This series fixes some problems that I spotted recently, secondly the
driver's code gets a cleanup. Please review and apply, thanks in advance!

Changelog:

v6: - Added stable tag and changed order of the patch "Prevent race
conditions of tasklet vs free list", making it patch #2, as was
requested by Jon Hunter in the review comment to v5.

- Factored out the tdc->config_init cleanup into separate patch, as was
requested by Jon Hunter in the review comment to v5:

dmaengine: tegra-apb: Remove unneeded initialization of tdc->config_init

- Added new very minor patch to enable compile-testing for the driver:

dmaengine: tegra-apb: Support COMPILE_TEST

v5: - Fixed touching hardware registers after RPM-suspending in the patch
"Keep clock enabled only during of DMA transfer", now RPM is kept
resumed in the tegra_dma_terminate_all() while needed. Thanks to
Jon Hunter for pointing at this problem in a review comment to v4.

- The "Clean up runtime PM teardown" patch is replaced with the "Remove
assumptions about unavailable runtime PM" patch because I recalled that
now RPM is always available on all Tegra SoCs.

- The "Clean up suspend-resume" patch got a minor improvement, now
tasklet_kill() is invoked before checking of the busy state in
tegra_dma_dev_suspend(), this should allow us to catch problems if DMA
callback issues a new DMA transfer.

- Added Jon's acks to the reviewed patches.

v4: - Addressed Jon's request to *not* remove the runtime PM usage, instead
there is now new patch that makes RPM more practical:

dmaengine: tegra-apb: Keep clock enabled only during of DMA transfer

- Added new minor patch to clean up RPM's teardown:

dmaengine: tegra-apb: Clean up runtime PM teardown

v3: - In the review comment to v1 Michał Mirosław suggested that "Prevent
race conditions on channel's freeing" does changes that deserve to
be separated into two patches. I factored out and improved tasklet
releasing into this new patch:

dmaengine: tegra-apb: Clean up tasklet releasing

- The "Fix use-after-free" patch got an improved commit message.

v2: - I took another look at the driver and spotted few more things that
could be improved, which resulted in these new patches:

dmaengine: tegra-apb: Remove runtime PM usage
dmaengine: tegra-apb: Clean up suspend-resume
dmaengine: tegra-apb: Add missing of_dma_controller_free
dmaengine: tegra-apb: Allow to compile as a loadable kernel module
dmaengine: tegra-apb: Remove MODULE_ALIAS

Dmitry Osipenko (16):
dmaengine: tegra-apb: Fix use-after-free
dmaengine: tegra-apb: Prevent race conditions of tasklet vs free list
dmaengine: tegra-apb: Implement synchronization hook
dmaengine: tegra-apb: Prevent race conditions on channel's freeing
dmaengine: tegra-apb: Clean up tasklet releasing
dmaengine: tegra-apb: Use devm_platform_ioremap_resource
dmaengine: tegra-apb: Use devm_request_irq
dmaengine: tegra-apb: Fix coding style problems
dmaengine: tegra-apb: Remove unneeded initialization of
tdc->config_init
dmaengine: tegra-apb: Remove assumptions about unavailable runtime PM
dmaengine: tegra-apb: Keep clock enabled only during of DMA transfer
dmaengine: tegra-apb: Clean up suspend-resume
dmaengine: tegra-apb: Add missing of_dma_controller_free
dmaengine: tegra-apb: Allow to compile as a loadable kernel module
dmaengine: tegra-apb: Remove MODULE_ALIAS
dmaengine: tegra-apb: Support COMPILE_TEST

drivers/dma/Kconfig | 4 +-
drivers/dma/tegra20-apb-dma.c | 507 +++++++++++++++++-----------------
2 files changed, 261 insertions(+), 250 deletions(-)

--
2.24.0