dma.c (3372de5813e4da8305002ff6ffbfc0c7012cb319) dma.c (ef97bd0f59741ca1a555b69b8708f6601e35c3ed)
1/*
2 * Intel I/OAT DMA Linux driver
3 * Copyright(c) 2004 - 2015 Intel Corporation.
4 *
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms and conditions of the GNU General Public License,
7 * version 2, as published by the Free Software Foundation.
8 *

--- 107 unchanged lines hidden (view full) ---

116
117 /* flush inflight timers */
118 del_timer_sync(&ioat_chan->timer);
119
120 /* flush inflight tasklet runs */
121 tasklet_kill(&ioat_chan->cleanup_task);
122
123 /* final cleanup now that everything is quiesced and can't re-arm */
1/*
2 * Intel I/OAT DMA Linux driver
3 * Copyright(c) 2004 - 2015 Intel Corporation.
4 *
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms and conditions of the GNU General Public License,
7 * version 2, as published by the Free Software Foundation.
8 *

--- 107 unchanged lines hidden (view full) ---

116
117 /* flush inflight timers */
118 del_timer_sync(&ioat_chan->timer);
119
120 /* flush inflight tasklet runs */
121 tasklet_kill(&ioat_chan->cleanup_task);
122
123 /* final cleanup now that everything is quiesced and can't re-arm */
124 ioat_dma->cleanup_fn((unsigned long)&ioat_chan->dma_chan);
124 ioat_cleanup_event((unsigned long)&ioat_chan->dma_chan);
125}
126
127static void __ioat_issue_pending(struct ioatdma_chan *ioat_chan)
128{
129 ioat_chan->dmacount += ioat_ring_pending(ioat_chan);
130 ioat_chan->issued = ioat_chan->head;
131 writew(ioat_chan->dmacount,
132 ioat_chan->reg_base + IOAT_CHAN_DMACOUNT_OFFSET);

--- 382 unchanged lines hidden (view full) ---

515 ioat_chan->tail, ioat_chan->issued);
516
517 /* progress reclaim in the allocation failure case we may be
518 * called under bh_disabled so we need to trigger the timer
519 * event directly
520 */
521 if (time_is_before_jiffies(ioat_chan->timer.expires)
522 && timer_pending(&ioat_chan->timer)) {
125}
126
127static void __ioat_issue_pending(struct ioatdma_chan *ioat_chan)
128{
129 ioat_chan->dmacount += ioat_ring_pending(ioat_chan);
130 ioat_chan->issued = ioat_chan->head;
131 writew(ioat_chan->dmacount,
132 ioat_chan->reg_base + IOAT_CHAN_DMACOUNT_OFFSET);

--- 382 unchanged lines hidden (view full) ---

515 ioat_chan->tail, ioat_chan->issued);
516
517 /* progress reclaim in the allocation failure case we may be
518 * called under bh_disabled so we need to trigger the timer
519 * event directly
520 */
521 if (time_is_before_jiffies(ioat_chan->timer.expires)
522 && timer_pending(&ioat_chan->timer)) {
523 struct ioatdma_device *ioat_dma = ioat_chan->ioat_dma;
524
525 mod_timer(&ioat_chan->timer, jiffies + COMPLETION_TIMEOUT);
523 mod_timer(&ioat_chan->timer, jiffies + COMPLETION_TIMEOUT);
526 ioat_dma->timer_fn((unsigned long)ioat_chan);
524 ioat_timer_event((unsigned long)ioat_chan);
527 }
528
529 return -ENOMEM;
530}
531
532static bool desc_has_ext(struct ioat_ring_ent *desc)
533{
534 struct ioat_dma_descriptor *hw = desc->hw;

--- 457 unchanged lines hidden ---
525 }
526
527 return -ENOMEM;
528}
529
530static bool desc_has_ext(struct ioat_ring_ent *desc)
531{
532 struct ioat_dma_descriptor *hw = desc->hw;

--- 457 unchanged lines hidden ---