Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

iop-adma: remove the workaround for missed interrupts on iop3xx

This workaround was covering the dependency submission bug in async_tx.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>

-20
-5
drivers/dma/iop-adma.c
··· 255 255 256 256 BUG_ON(!seen_current); 257 257 258 - iop_chan_idle(busy, iop_chan); 259 - 260 258 if (cookie > 0) { 261 259 iop_chan->completed_cookie = cookie; 262 260 pr_debug("\tcompleted cookie %d\n", cookie); ··· 1224 1226 } 1225 1227 1226 1228 spin_lock_init(&iop_chan->lock); 1227 - init_timer(&iop_chan->cleanup_watchdog); 1228 - iop_chan->cleanup_watchdog.data = (unsigned long) iop_chan; 1229 - iop_chan->cleanup_watchdog.function = iop_adma_tasklet; 1230 1229 INIT_LIST_HEAD(&iop_chan->chain); 1231 1230 INIT_LIST_HEAD(&iop_chan->all_slots); 1232 1231 INIT_RCU_HEAD(&iop_chan->common.rcu);
-5
include/asm-arm/arch-iop13xx/adma.h
··· 454 454 __raw_writel(adma_accr, ADMA_ACCR(chan)); 455 455 } 456 456 457 - static inline void iop_chan_idle(int busy, struct iop_adma_chan *chan) 458 - { 459 - do { } while (0); 460 - } 461 - 462 457 static inline u32 iop_chan_get_status(struct iop_adma_chan *chan) 463 458 { 464 459 return __raw_readl(ADMA_ACSR(chan));
-8
include/asm-arm/hardware/iop3xx-adma.h
··· 767 767 static inline void iop_chan_append(struct iop_adma_chan *chan) 768 768 { 769 769 u32 dma_chan_ctrl; 770 - /* workaround dropped interrupts on 3xx */ 771 - mod_timer(&chan->cleanup_watchdog, jiffies + msecs_to_jiffies(3)); 772 770 773 771 dma_chan_ctrl = __raw_readl(DMA_CCR(chan)); 774 772 dma_chan_ctrl |= 0x2; 775 773 __raw_writel(dma_chan_ctrl, DMA_CCR(chan)); 776 - } 777 - 778 - static inline void iop_chan_idle(int busy, struct iop_adma_chan *chan) 779 - { 780 - if (!busy) 781 - del_timer(&chan->cleanup_watchdog); 782 774 } 783 775 784 776 static inline u32 iop_chan_get_status(struct iop_adma_chan *chan)
-2
include/asm-arm/hardware/iop_adma.h
··· 51 51 * @common: common dmaengine channel object members 52 52 * @last_used: place holder for allocation to continue from where it left off 53 53 * @all_slots: complete domain of slots usable by the channel 54 - * @cleanup_watchdog: workaround missed interrupts on iop3xx 55 54 * @slots_allocated: records the actual size of the descriptor slot pool 56 55 * @irq_tasklet: bottom half where iop_adma_slot_cleanup runs 57 56 */ ··· 64 65 struct dma_chan common; 65 66 struct iop_adma_desc_slot *last_used; 66 67 struct list_head all_slots; 67 - struct timer_list cleanup_watchdog; 68 68 int slots_allocated; 69 69 struct tasklet_struct irq_tasklet; 70 70 };