Skip to content

misc: rp1-pio: release DMA channel outside pio->lock - #7519

Merged
pelwell merged 2 commits into
raspberrypi:rpi-6.12.yfrom
pelwell:is7512
Jul 29, 2026
Merged

misc: rp1-pio: release DMA channel outside pio->lock#7519
pelwell merged 2 commits into
raspberrypi:rpi-6.12.yfrom
pelwell:is7512

Conversation

@pelwell

@pelwell pelwell commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

rp1_pio_sm_dma_free() ends in dma_release_channel(), which sleeps while
removing the sysfs links. Running it under pio->lock in SM_CONFIG_XFER
triggers "BUG: scheduling while atomic" and hangs the machine when a
client keeps reconfiguring a transfer.

The claim bit stays set for this client across the unlock, so the
channel remains reserved against other clients while it is released.

pelwell and others added 2 commits July 24, 2026 16:01
Fail transfers if they haven't first been configured.

Signed-off-by: Phil Elwell <phil@raspberrypi.com>
rp1_pio_sm_dma_free() ends in dma_release_channel(), which sleeps while
removing the sysfs links. Running it under pio->lock in SM_CONFIG_XFER
triggers "BUG: scheduling while atomic" and hangs the machine when a
client keeps reconfiguring a transfer.

The claim bit stays set for this client across the unlock, so the
channel remains reserved against other clients while it is released.

Fixes: 0b7a604 ("misc: Add RP1 PIO driver")
Link: raspberrypi#7512
Signed-off-by: Nicolai Buchwitz <nb@tipi-net.de>
@pelwell
pelwell merged commit 249a3dd into raspberrypi:rpi-6.12.y Jul 29, 2026
12 checks passed
popcornmix added a commit to raspberrypi/firmware that referenced this pull request Jul 30, 2026
kernel: overlays: Add ramoops-pi5
See: raspberrypi/linux#7518

kernel: input: goodix: Include I2C details in names for the devices
See: raspberrypi/linux#7506

kernel: misc: rp1-pio: release DMA channel outside pio->lock
See: raspberrypi/linux#7519

kernel: ASoC: hifiberry-studio: add AES CS Mode control (channel status format)
See: raspberrypi/linux#7527

kernel: pinctrl: rp1: Make IRQ usage set a pin to an input
See: raspberrypi/linux#7526

kernel: drm/vc4: Support frame packed stereo modes
See: raspberrypi/linux#7524
popcornmix added a commit to raspberrypi/rpi-firmware that referenced this pull request Jul 30, 2026
kernel: overlays: Add ramoops-pi5
See: raspberrypi/linux#7518

kernel: input: goodix: Include I2C details in names for the devices
See: raspberrypi/linux#7506

kernel: misc: rp1-pio: release DMA channel outside pio->lock
See: raspberrypi/linux#7519

kernel: ASoC: hifiberry-studio: add AES CS Mode control (channel status format)
See: raspberrypi/linux#7527

kernel: pinctrl: rp1: Make IRQ usage set a pin to an input
See: raspberrypi/linux#7526

kernel: drm/vc4: Support frame packed stereo modes
See: raspberrypi/linux#7524
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants