drivers/dma/imx-sdma.c | 21 +++++---------------- include/linux/dmaengine.h | 4 ++-- 2 files changed, 7 insertions(+), 18 deletions(-)
dma_cap_set()/dma_cap_clear() and imx-sdma event_mask setup use atomic
set_bit()/clear_bit() in contexts where no concurrent access is
possible:
- dma_cap_set()/dma_cap_clear() are called exclusively during driver
probe, before dma_async_device_register() makes the device visible.
- imx-sdma event_mask[] is zeroed and configured during channel setup
while the channel is disabled.
Switch both to non-atomic __set_bit()/__clear_bit() equivalents.
Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
Peng Fan (3):
dmaengine: Use non-atomic bit ops for cap_mask manipulation
dmaengine: imx-sdma: Use non-atomic __set_bit() for event_mask setup
dmaengine: imx-sdma: Use __assign_bit() for ownership configuration
drivers/dma/imx-sdma.c | 21 +++++----------------
include/linux/dmaengine.h | 4 ++--
2 files changed, 7 insertions(+), 18 deletions(-)
---
base-commit: 89c07d98716a13454ec3fd9f97689e812cc71bd4
change-id: 20260903-dma-mask-ddf64d770f7d
Best regards,
--
Peng Fan <peng.fan@nxp.com>
On Thu, Sep 03, 2026 at 10:16:11PM +0800, Peng Fan (OSS) wrote: > dma_cap_set()/dma_cap_clear() and imx-sdma event_mask setup use atomic > set_bit()/clear_bit() in contexts where no concurrent access is > possible: > > - dma_cap_set()/dma_cap_clear() are called exclusively during driver > probe, before dma_async_device_register() makes the device visible. > - imx-sdma event_mask[] is zeroed and configured during channel setup > while the channel is disabled. > > Switch both to non-atomic __set_bit()/__clear_bit() equivalents. Any benefit to switch? Frank > > Signed-off-by: Peng Fan <peng.fan@nxp.com> > --- > Peng Fan (3): > dmaengine: Use non-atomic bit ops for cap_mask manipulation > dmaengine: imx-sdma: Use non-atomic __set_bit() for event_mask setup > dmaengine: imx-sdma: Use __assign_bit() for ownership configuration > > drivers/dma/imx-sdma.c | 21 +++++---------------- > include/linux/dmaengine.h | 4 ++-- > 2 files changed, 7 insertions(+), 18 deletions(-) > --- > base-commit: 89c07d98716a13454ec3fd9f97689e812cc71bd4 > change-id: 20260903-dma-mask-ddf64d770f7d > > Best regards, > -- > Peng Fan <peng.fan@nxp.com> >
On Thu, Sep 03, 2026 at 02:29:45PM -0500, Frank Li wrote: >On Thu, Sep 03, 2026 at 10:16:11PM +0800, Peng Fan (OSS) wrote: >> dma_cap_set()/dma_cap_clear() and imx-sdma event_mask setup use atomic >> set_bit()/clear_bit() in contexts where no concurrent access is >> possible: >> >> - dma_cap_set()/dma_cap_clear() are called exclusively during driver >> probe, before dma_async_device_register() makes the device visible. >> - imx-sdma event_mask[] is zeroed and configured during channel setup >> while the channel is disabled. >> >> Switch both to non-atomic __set_bit()/__clear_bit() equivalents. > >Any benefit to switch? Drop patch 1, I thought there were no cocurrent access. For patch 2: The driver already uses the non-atomic __set_bit/__clear_bit APIs, I think no sense to use atomic APIs in sdma_set_watermarklevel_for_p2p, or I may miss something. For patch 3: Use __assign_bit to save code lines. Thanks Peng > >Frank > >> >> Signed-off-by: Peng Fan <peng.fan@nxp.com> >> --- >> Peng Fan (3): >> dmaengine: Use non-atomic bit ops for cap_mask manipulation >> dmaengine: imx-sdma: Use non-atomic __set_bit() for event_mask setup >> dmaengine: imx-sdma: Use __assign_bit() for ownership configuration >> >> drivers/dma/imx-sdma.c | 21 +++++---------------- >> include/linux/dmaengine.h | 4 ++-- >> 2 files changed, 7 insertions(+), 18 deletions(-) >> --- >> base-commit: 89c07d98716a13454ec3fd9f97689e812cc71bd4 >> change-id: 20260903-dma-mask-ddf64d770f7d >> >> Best regards, >> -- >> Peng Fan <peng.fan@nxp.com> >> > >
© 2016 - 2026 Red Hat, Inc.