dmaengine: ioat: removing duplicate code from timeout handler
authorLeonid Ravich <Leonid.Ravich@emc.com>
Wed, 22 Apr 2020 21:09:16 +0000 (00:09 +0300)
committerVinod Koul <vkoul@kernel.org>
Thu, 23 Apr 2020 07:21:45 +0000 (12:51 +0530)
moving duplicate code from timeout error handling to common
function.

Acked-by: Dave Jiang <dave.jiang@intel.com>
Signed-off-by: Leonid Ravich <Leonid.Ravich@emc.com>
Link: https://lore.kernel.org/r/1587589761-32690-1-git-send-email-leonid.ravich@dell.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
drivers/dma/ioat/dma.c

index 1e0e6c1..da59b28 100644 (file)
@@ -869,6 +869,23 @@ static void check_active(struct ioatdma_chan *ioat_chan)
                mod_timer(&ioat_chan->timer, jiffies + IDLE_TIMEOUT);
 }
 
+static void ioat_reboot_chan(struct ioatdma_chan *ioat_chan)
+{
+       spin_lock_bh(&ioat_chan->prep_lock);
+       set_bit(IOAT_CHAN_DOWN, &ioat_chan->state);
+       spin_unlock_bh(&ioat_chan->prep_lock);
+
+       ioat_abort_descs(ioat_chan);
+       dev_warn(to_dev(ioat_chan), "Reset channel...\n");
+       ioat_reset_hw(ioat_chan);
+       dev_warn(to_dev(ioat_chan), "Restart channel...\n");
+       ioat_restart_channel(ioat_chan);
+
+       spin_lock_bh(&ioat_chan->prep_lock);
+       clear_bit(IOAT_CHAN_DOWN, &ioat_chan->state);
+       spin_unlock_bh(&ioat_chan->prep_lock);
+}
+
 void ioat_timer_event(struct timer_list *t)
 {
        struct ioatdma_chan *ioat_chan = from_timer(ioat_chan, t, timer);
@@ -891,19 +908,7 @@ void ioat_timer_event(struct timer_list *t)
 
                if (test_bit(IOAT_RUN, &ioat_chan->state)) {
                        spin_lock_bh(&ioat_chan->cleanup_lock);
-                       spin_lock_bh(&ioat_chan->prep_lock);
-                       set_bit(IOAT_CHAN_DOWN, &ioat_chan->state);
-                       spin_unlock_bh(&ioat_chan->prep_lock);
-
-                       ioat_abort_descs(ioat_chan);
-                       dev_warn(to_dev(ioat_chan), "Reset channel...\n");
-                       ioat_reset_hw(ioat_chan);
-                       dev_warn(to_dev(ioat_chan), "Restart channel...\n");
-                       ioat_restart_channel(ioat_chan);
-
-                       spin_lock_bh(&ioat_chan->prep_lock);
-                       clear_bit(IOAT_CHAN_DOWN, &ioat_chan->state);
-                       spin_unlock_bh(&ioat_chan->prep_lock);
+                       ioat_reboot_chan(ioat_chan);
                        spin_unlock_bh(&ioat_chan->cleanup_lock);
                }
 
@@ -939,19 +944,7 @@ void ioat_timer_event(struct timer_list *t)
                dev_dbg(to_dev(ioat_chan), "Active descriptors: %d\n",
                        ioat_ring_active(ioat_chan));
 
-               spin_lock_bh(&ioat_chan->prep_lock);
-               set_bit(IOAT_CHAN_DOWN, &ioat_chan->state);
-               spin_unlock_bh(&ioat_chan->prep_lock);
-
-               ioat_abort_descs(ioat_chan);
-               dev_warn(to_dev(ioat_chan), "Resetting channel...\n");
-               ioat_reset_hw(ioat_chan);
-               dev_warn(to_dev(ioat_chan), "Restarting channel...\n");
-               ioat_restart_channel(ioat_chan);
-
-               spin_lock_bh(&ioat_chan->prep_lock);
-               clear_bit(IOAT_CHAN_DOWN, &ioat_chan->state);
-               spin_unlock_bh(&ioat_chan->prep_lock);
+               ioat_reboot_chan(ioat_chan);
                spin_unlock_bh(&ioat_chan->cleanup_lock);
                return;
        } else