[PATCH 1/2] DMA: PL08x: fix infinite wait when terminating transfers
linus.walleij at stericsson.com
Thu Jan 27 09:28:15 EST 2011
2011/1/27 Russell King - ARM Linux <linux at arm.linux.org.uk>:
> If we try to pause a channel when terminating a transfer, we could end
> up spinning for it to become inactive indefinitely, and can result in
> an uninterruptible wait requiring a reset to recover from.
> Terminating a transfer is supposed to take effect immediately, but may
> result in data loss.
> To make this clear, rename the function to pl08x_terminate_phy_chan().
> Also, make sure it is always consistently called - with the spinlock
> held and IRQs disabled, and ensure that the TC and ERR interrupt status
> is always cleared.
> Signed-off-by: Russell King <rmk+kernel at arm.linux.org.uk>
Acked-by: Linus Walleij <linus.walleij at stericsson.com>
More information about the linux-arm-kernel