dma.c (0ea8a56de21be24cb79abb03dee79aabcd60a316) | dma.c (3b8040de1282c58ca6915b3311f6cbe54fb5c629) |
---|---|
1// SPDX-License-Identifier: GPL-2.0-only 2/* 3 * Intel I/OAT DMA Linux driver 4 * Copyright(c) 2004 - 2015 Intel Corporation. 5 */ 6 7/* 8 * This driver supports an Intel I/OAT DMA engine, which does asynchronous --- 151 unchanged lines hidden (view full) --- 160 161 /* flush inflight timers */ 162 del_timer_sync(&ioat_chan->timer); 163 164 /* flush inflight tasklet runs */ 165 tasklet_kill(&ioat_chan->cleanup_task); 166 167 /* final cleanup now that everything is quiesced and can't re-arm */ | 1// SPDX-License-Identifier: GPL-2.0-only 2/* 3 * Intel I/OAT DMA Linux driver 4 * Copyright(c) 2004 - 2015 Intel Corporation. 5 */ 6 7/* 8 * This driver supports an Intel I/OAT DMA engine, which does asynchronous --- 151 unchanged lines hidden (view full) --- 160 161 /* flush inflight timers */ 162 del_timer_sync(&ioat_chan->timer); 163 164 /* flush inflight tasklet runs */ 165 tasklet_kill(&ioat_chan->cleanup_task); 166 167 /* final cleanup now that everything is quiesced and can't re-arm */ |
168 ioat_cleanup_event((unsigned long)&ioat_chan->dma_chan); | 168 ioat_cleanup_event(&ioat_chan->cleanup_task); |
169} 170 171static void __ioat_issue_pending(struct ioatdma_chan *ioat_chan) 172{ 173 ioat_chan->dmacount += ioat_ring_pending(ioat_chan); 174 ioat_chan->issued = ioat_chan->head; 175 writew(ioat_chan->dmacount, 176 ioat_chan->reg_base + IOAT_CHAN_DMACOUNT_OFFSET); --- 508 unchanged lines hidden (view full) --- 685 mod_timer(&ioat_chan->timer, jiffies + IDLE_TIMEOUT); 686 ioat_eh(ioat_chan); 687 } 688 } 689 690 spin_unlock_bh(&ioat_chan->cleanup_lock); 691} 692 | 169} 170 171static void __ioat_issue_pending(struct ioatdma_chan *ioat_chan) 172{ 173 ioat_chan->dmacount += ioat_ring_pending(ioat_chan); 174 ioat_chan->issued = ioat_chan->head; 175 writew(ioat_chan->dmacount, 176 ioat_chan->reg_base + IOAT_CHAN_DMACOUNT_OFFSET); --- 508 unchanged lines hidden (view full) --- 685 mod_timer(&ioat_chan->timer, jiffies + IDLE_TIMEOUT); 686 ioat_eh(ioat_chan); 687 } 688 } 689 690 spin_unlock_bh(&ioat_chan->cleanup_lock); 691} 692 |
693void ioat_cleanup_event(unsigned long data) | 693void ioat_cleanup_event(struct tasklet_struct *t) |
694{ | 694{ |
695 struct ioatdma_chan *ioat_chan = to_ioat_chan((void *)data); | 695 struct ioatdma_chan *ioat_chan = from_tasklet(ioat_chan, t, cleanup_task); |
696 697 ioat_cleanup(ioat_chan); 698 if (!test_bit(IOAT_RUN, &ioat_chan->state)) 699 return; 700 writew(IOAT_CHANCTRL_RUN, ioat_chan->reg_base + IOAT_CHANCTRL_OFFSET); 701} 702 703static void ioat_restart_channel(struct ioatdma_chan *ioat_chan) --- 358 unchanged lines hidden --- | 696 697 ioat_cleanup(ioat_chan); 698 if (!test_bit(IOAT_RUN, &ioat_chan->state)) 699 return; 700 writew(IOAT_CHANCTRL_RUN, ioat_chan->reg_base + IOAT_CHANCTRL_OFFSET); 701} 702 703static void ioat_restart_channel(struct ioatdma_chan *ioat_chan) --- 358 unchanged lines hidden --- |