From: Jihong Sui Date: Wed, 28 Nov 2018 08:23:05 +0000 (+0800) Subject: deinterlace: there's a change to hang in shutdown [1/1] X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=bc7982c91e29d9e6f51af0e1d87b220391dded64;p=GitHub%2FLineageOS%2FG12%2Fandroid_kernel_amlogic_linux-4.9.git deinterlace: there's a change to hang in shutdown [1/1] PD#OTT-778 Problem: 1.kernel received reboot command, but hang in shutdown Solution: move tasklet_disable behind tasklet_kill Verify: P321 Change-Id: I994c21c5aeb42dbbb4e3b50ccac8376db4d4039d Signed-off-by: Jihong Sui --- diff --git a/drivers/amlogic/media/deinterlace/deinterlace.c b/drivers/amlogic/media/deinterlace/deinterlace.c index 4cf4c55a8ab7..fc75fffb3474 100644 --- a/drivers/amlogic/media/deinterlace/deinterlace.c +++ b/drivers/amlogic/media/deinterlace/deinterlace.c @@ -129,7 +129,7 @@ static di_dev_t *de_devp; static dev_t di_devno; static struct class *di_clsp; -static const char version_s[] = "2018-11-12a"; +static const char version_s[] = "2018-11-28b"; static int bypass_state = 1; static int bypass_all; @@ -7654,8 +7654,9 @@ static int di_remove(struct platform_device *pdev) di_devp->di_event = 0xff; kthread_stop(di_devp->task); hrtimer_cancel(&di_pre_hrtimer); + tasklet_kill(&di_pre_tasklet); //ary.sui tasklet_disable(&di_pre_tasklet); - tasklet_kill(&di_pre_tasklet); + #ifdef CONFIG_AMLOGIC_MEDIA_RDMA /* rdma handle */ if (di_devp->rdma_handle > 0) @@ -7711,8 +7712,9 @@ static void di_shutdown(struct platform_device *pdev) di_devp = platform_get_drvdata(pdev); ret = hrtimer_cancel(&di_pre_hrtimer); pr_info("di pre hrtimer canel %d.\n", ret); - tasklet_disable(&di_pre_tasklet); tasklet_kill(&di_pre_tasklet); + tasklet_disable(&di_pre_tasklet); + init_flag = 0; if (is_meson_txlx_cpu()) di_top_gate_control(true, true);