]> rtime.felk.cvut.cz Git - sojka/nv-tegra/linux-3.10.git/commitdiff
video: tegra: host: disable IRQ in ISR
authorShridhar Rasal <srasal@nvidia.com>
Thu, 20 Aug 2015 04:01:29 +0000 (09:31 +0530)
committermobile promotions <svcmobile_promotions@nvidia.com>
Sat, 22 Aug 2015 07:46:34 +0000 (00:46 -0700)
- To avoid interrupt storm, disable IRQ in ISR and
   re-enable through worker handler.

Bug 1659953

Change-Id: I4eafc5ff4811fd8f25057571b88a4be97db75baf
Reviewed-on: http://git-master/r/784646
(cherry picked from commit bf70ffbd040d8ec5cfc9612ff377099832ef061f)
Signed-off-by: Shridhar Rasal <srasal@nvidia.com>
Reviewed-on: http://git-master/r/786308
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Songhee Baek <sbaek@nvidia.com>
Tested-by: Songhee Baek <sbaek@nvidia.com>
GVS: Gerrit_Virtual_Submit

drivers/video/tegra/host/vi/vi_irq.c

index e2c8dba497b648f40289fb0cdd3ea0e310a86335..cf4bb181398480aedf6a69525136a14a5cd5a111 100644 (file)
@@ -178,6 +178,9 @@ static irqreturn_t vi_isr(int irq, void *dev_id)
                                val);
        }
 
+       /* Disable IRQ */
+       vi_disable_irq(tegra_vi);
+
        schedule_work(&tegra_vi->stats_work);
 
 handled:
@@ -193,6 +196,9 @@ void vi_stats_worker(struct work_struct *work)
                "%s: vi[%d]_out dropped data %u times", __func__,
                tegra_vi->ndev->id,
                atomic_read(&(tegra_vi->vi_out.overflow)));
+
+       /* Enable IRQ */
+       vi_enable_irq(tegra_vi);
 }
 EXPORT_SYMBOL(vi_stats_worker);