Skip to content

Commit

Permalink
drm/rockchip: tve: Fix shutdown panic when no bind
Browse files Browse the repository at this point in the history
Unable to handle kernel access to user memory outside uaccess routines at virtual address 0000000000000830
Mem abort info:
  ESR = 0x96000005
  Exception class = DABT (current EL), IL = 32 bits
  SET = 0, FnV = 0
  EA = 0, S1PTW = 0
Data abort info:
  ISV = 0, ISS = 0x00000005
  CM = 0, WnR = 0
user pgtable: 4k pages, 39-bit VAs, pgdp = 00000000aaff8145
[0000000000000830] pgd=000000007a5c9003, pud=000000007a5c9003, pmd=0000000000000000
Internal error: Oops: 96000005 [#1] PREEMPT SMP
Modules linked in:
Process init (pid: 1, stack limit = 0x00000000722656e6)
CPU: 3 PID: 1 Comm: init Not tainted 4.19.232 radxa#72
Hardware name: Rockchip RK3528 EVB1 DDR4 V10 Board (DT)
pstate: 60400005 (nZCv daif +PAN -UAO)
pc : __ll_sc___cmpxchg_case_acq_8+0x4/0x20
lr : mutex_lock+0x18/0x40
sp : ffffff800802bc60
x29: ffffff800802bc60 x28: ffffffc07c8e0000
x27: 0000000000000000 x26: 0000000000000000
x25: ffffff8009510d78 x24: ffffff8009cde040
x23: ffffffc07c9e3890 x22: ffffff8009d89000
x21: ffffff8009b73b30 x20: 0000000000000000
x19: 0000000000000830 x18: ffffffffffffffff
x17: 0000000000000000 x16: 0000000000000002
x15: ffffff80095ed278 x14: ffffff8089ce4196
x13: ffffff8009ce41b0 x12: ffffff8009ce45d0
x11: ffffff8009adf3b8 x10: 0000000005f5e0ff
x9 : 00000000ffffffd0 x8 : 6873203a73756c70
x7 : 0000000000000058 x6 : 0000000000000001
x5 : 0000000000000005 x4 : 0000000000000004
x3 : 0000000000000830 x2 : ffffffc07c8e0000
x1 : 0000000000000000 x0 : 0000000000000830
Call trace:
 __ll_sc___cmpxchg_case_acq_8+0x4/0x20
 rockchip_tve_shutdown+0x1c/0x38
 platform_drv_shutdown+0x20/0x30
 device_shutdown+0x118/0x200
 kernel_restart_prepare+0x34/0x40
 kernel_restart+0x14/0x78
 __se_sys_reboot+0x1cc/0x208
 __arm64_sys_reboot+0x18/0x20
 el0_svc_common.constprop.0+0x64/0x178
 el0_svc_handler+0x28/0x78
 el0_svc+0x8/0xc

Signed-off-by: Tao Huang <huangtao@rock-chips.com>
Change-Id: Ic1e85b963548e5e66ef78fae5af8dcc12e928fa2
  • Loading branch information
rkhuangtao committed Dec 1, 2022
1 parent 9368d30 commit ea5fb26
Showing 1 changed file with 5 additions and 1 deletion.
6 changes: 5 additions & 1 deletion drivers/gpu/drm/rockchip/rockchip_drm_tve.c
Expand Up @@ -483,7 +483,6 @@ static int rockchip_tve_bind(struct device *dev, struct device *master,
}

tve->enable = 0;
platform_set_drvdata(pdev, tve);
tve->drm_dev = drm_dev;
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
tve->reg_phy_base = res->start;
Expand Down Expand Up @@ -544,6 +543,7 @@ static int rockchip_tve_bind(struct device *dev, struct device *master,
rockchip_drm_register_sub_dev(&tve->sub_dev);

pm_runtime_enable(dev);
dev_set_drvdata(dev, tve);
dev_dbg(tve->dev, "%s tv encoder probe ok\n", match->compatible);

return 0;
Expand All @@ -567,6 +567,7 @@ static void rockchip_tve_unbind(struct device *dev, struct device *master,
drm_encoder_cleanup(&tve->encoder);

pm_runtime_disable(dev);
dev_set_drvdata(dev, NULL);
}

static const struct component_ops rockchip_tve_component_ops = {
Expand All @@ -585,6 +586,9 @@ static void rockchip_tve_shutdown(struct platform_device *pdev)
{
struct rockchip_tve *tve = dev_get_drvdata(&pdev->dev);

if (!tve)
return;

mutex_lock(&tve->suspend_lock);

dev_dbg(tve->dev, "tve shutdown\n");
Expand Down

0 comments on commit ea5fb26

Please sign in to comment.