linux/drivers/media/platform
Stanimir Varbanov 9215f6bb47 media: venus: pm_helpers: Fix kernel module reload
After initial kernel module load during kernel boot and removing
the module and try to load it again an Unable to handle kernel
paging request is observed:

Unable to handle kernel paging request at virtual address ffffa44f7416eae0
 Mem abort info:
   ESR = 0x96000047
   EC = 0x25: DABT (current EL), IL = 32 bits
   SET = 0, FnV = 0
   EA = 0, S1PTW = 0
 Data abort info:
   ISV = 0, ISS = 0x00000047
   CM = 0, WnR = 1
 swapper pgtable: 4k pages, 48-bit VAs, pgdp=000000008147c000
 [ffffa44f7416eae0] pgd=000000017df9f003, p4d=000000017df9f003,
 pud=000000017df9e003, pmd=000000017df9b003, pte=0000000000000000
 Internal error: Oops: 96000047 [#1] PREEMPT SMP
 Modules linked in: venus_core(+) snd_soc_wsa881x regmap_sdw af_alg
  snd_soc_wcd934x soundwire_qcom gpio_wcd934x q6asm_dai q6routing
  q6adm q6afe_dai snd_soc_hdmi_codec q6afe q6asm q6dsp_common q6cor
  display_connector rmtfs_mem drm ip_tables x_tables ipv6
  [last unloaded: venus_core]
 CPU: 6 PID: 889 Comm: modprobe Tainted: G        W      5.10.0-rc1+ #8
 Hardware name: Thundercomm Dragonboard 845c (DT)
 pstate: 80400085 (Nzcv daIf +PAN -UAO -TCO BTYPE=--)
 pc : queued_spin_lock_slowpath+0x1dc/0x3c8
 lr : do_raw_spin_lock+0xc0/0x118
 sp : ffff8000142cb7b0
 x29: ffff8000142cb7b0 x28: 0000000000000013
 x27: ffffa44f72de5690 x26: 0000000000000003
 x25: ffff17c2d00f8080 x24: ffff17c2c0d78010
 x23: ffff17c2c0d4f700 x22: ffff17c2d00f8080
 x21: 0000000000000000 x20: ffffa44f74148000
 x19: ffff17c2c0d4f8f8 x18: 0000000000000000
 x17: 0000000000000000 x16: ffffa44f7342f158
 x15: 0000000000000040 x14: ffffa44f746e8320
 x13: 0000000000000228 x12: 0000000000000020
 x11: 0000000000000000 x10: 00000000001c0000
 x9 : 0000000000000000 x8 : ffff17c33d746ac0
 x7 : ffff17c2c109b000 x6 : ffffa44f7416eac0
 x5 : ffff17c33d746ac0 x4 : 0000000000000000
 x3 : ffff17c2c0d4f8f8 x2 : ffffa44f7416eae0
 x1 : ffffa44f7416eae0 x0 : ffff17c33d746ac8
 Call trace:
  queued_spin_lock_slowpath+0x1dc/0x3c8
  do_raw_spin_lock+0xc0/0x118
  _raw_spin_lock_irqsave+0x80/0x14c
  __pm_runtime_resume+0x38/0xb8
  device_link_add+0x3b8/0x5d0
  core_get_v4+0x268/0x2d8 [venus_core]
  venus_probe+0x108/0x458 [venus_core]
  platform_drv_probe+0x54/0xa8
  really_probe+0xe4/0x3b0
  driver_probe_device+0x58/0xb8
  device_driver_attach+0x74/0x80
  __driver_attach+0x58/0xe8
  bus_for_each_dev+0x70/0xc0
  driver_attach+0x24/0x30
  bus_add_driver+0x150/0x1f8
  driver_register+0x64/0x120
  __platform_driver_register+0x48/0x58
  qcom_venus_driver_init+0x20/0x1000 [venus_core]
  do_one_initcall+0x84/0x458
  do_init_module+0x58/0x208
  load_module+0x1ec0/0x26a8
  __do_sys_finit_module+0xb8/0xf8
  __arm64_sys_finit_module+0x20/0x30
  el0_svc_common.constprop.0+0x7c/0x1c0
  do_el0_svc+0x24/0x90
  el0_sync_handler+0x180/0x188
  el0_sync+0x174/0x180
 Code: 91002100 8b0200c2 f861d884 aa0203e1 (f8246828)
 ---[ end trace f1f687c15fd6b2ca ]---
 note: modprobe[889] exited with preempt_count 1

After revisit the OPP part of the code I found that OPP pmdomain
is detached with direct call to dev_pm_domain_detach instead of
OPP wraper for detaching pmdomains with OPP table. Correct this
by calling the OPP dev_pm_opp_detach_genpd.

Fixes: 9a538b8361 ('media: venus: core: Add support for opp tables/perf voting')
Signed-off-by: Stanimir Varbanov <stanimir.varbanov@linaro.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
2020-11-16 19:06:10 +01:00
..
am437x media: use v4l2_rect_enclosed helper 2020-07-04 12:30:13 +02:00
atmel media: atmel: atmel-isc: rework component offsets 2020-07-19 07:55:39 +02:00
cadence media: Kconfig files: use select for V4L2 subdevs and MC 2020-04-14 10:29:05 +02:00
coda media: coda: Fix runtime PM imbalance in coda_probe 2020-09-27 10:51:14 +02:00
davinci media: davinci: vpif_capture: fix potential double free 2020-08-06 11:32:02 +02:00
exynos-gsc media: Add V4L2_TYPE_IS_CAPTURE helper 2020-07-19 08:13:24 +02:00
exynos4-is dma-mapping updates for 5.10 2020-10-15 14:43:29 -07:00
marvell-ccic media: media/platform/marvell-ccic: fix warnings when CONFIG_PM is not enabled 2020-11-05 14:32:35 +01:00
mtk-jpeg media: platform: Add jpeg enc feature 2020-08-28 15:38:39 +02:00
mtk-mdp media: mtk-mdp: Fix Null pointer dereference when calling list_add 2020-09-26 10:23:48 +02:00
mtk-vcodec media: mtk-vcodec: fix build breakage when one of VPU or SCP is enabled 2020-11-05 14:32:11 +01:00
mtk-vpu media: mtk-vpu: no need to check return value of debugfs_create functions 2020-09-01 14:13:26 +02:00
omap media: media/platform: rename VFL_TYPE_GRABBER to _VIDEO 2020-02-24 16:54:14 +01:00
omap3isp media: omap3isp: Fix memleak in isp_probe 2020-09-10 14:09:25 +02:00
qcom media: venus: pm_helpers: Fix kernel module reload 2020-11-16 19:06:10 +01:00
rcar-vin media: rcar-vin: rcar-dma: Fix setting VNIS_REG for RAW8 formats 2020-10-08 09:09:37 +02:00
rockchip/rga media: rockchip/rga: Fix a reference count leak. 2020-09-27 10:52:34 +02:00
s3c-camif media: platform: s3c-camif: Fix runtime PM imbalance on error 2020-09-27 10:50:56 +02:00
s5p-g2d media: s5p-g2d: Fix a memory leak in an error handling path in 'g2d_probe()' 2020-07-19 08:14:00 +02:00
s5p-jpeg media: use v4l2_rect_enclosed helper 2020-07-04 12:30:13 +02:00
s5p-mfc media: platform: s5p-mfc: Fix adding a standard frame skip mode control 2020-10-01 09:27:47 +02:00
sti media: st-delta: Fix reference count leak in delta_run_work 2020-09-27 10:56:07 +02:00
stm32 media: stm32-dcmi: Fix a reference count leak 2020-09-27 10:53:52 +02:00
sunxi dma-mapping updates for 5.10 2020-10-15 14:43:29 -07:00
ti-vpe media: ti-vpe: Fix a missing check and reference count leak 2020-09-27 10:54:11 +02:00
vsp1 drm next for 5.10-rc1 2020-10-15 10:46:16 -07:00
xilinx media: v4l: xilinx: Add Xilinx MIPI CSI-2 Rx Subsystem driver 2020-06-23 13:11:46 +02:00
Kconfig media: mtk-vcodec: fix build breakage when one of VPU or SCP is enabled 2020-11-05 14:32:11 +01:00
Makefile media: media: sh_veu: Remove driver 2020-05-14 14:34:38 +02:00
aspeed-video.c media: media/platform: drop vb2_queue_release() 2020-08-28 15:02:26 +02:00
fsl-viu.c media: fsl-viu: Do not redefine out_be32()/in_be32() for CONFIG_M68K 2020-08-29 08:07:48 +02:00
imx-pxp.c media: media/platform: rename VFL_TYPE_GRABBER to _VIDEO 2020-02-24 16:54:14 +01:00
imx-pxp.h media: imx-pxp: add i.MX Pixel Pipeline driver 2018-09-11 13:32:17 -04:00
m2m-deinterlace.c media: media/platform: rename VFL_TYPE_GRABBER to _VIDEO 2020-02-24 16:54:14 +01:00
mx2_emmaprp.c media: mx2_emmaprp: Fix memleak in emmaprp_probe 2020-09-26 10:15:39 +02:00
pxa_camera.c media: pxa_camera: convert tasklets to use new tasklet_setup() API 2020-08-29 08:13:36 +02:00
rcar-fcp.c media: platform: fcp: Fix a reference count leak. 2020-09-27 10:52:52 +02:00
rcar_drif.c media: rcar_drif: Allocate v4l2_async_subdev dynamically 2020-09-10 14:27:04 +02:00
rcar_fdp1.c media: media/platform: rename VFL_TYPE_GRABBER to _VIDEO 2020-02-24 16:54:14 +01:00
rcar_jpu.c media: Add V4L2_TYPE_IS_CAPTURE helper 2020-07-19 08:13:24 +02:00
renesas-ceu.c media: Use fallthrough pseudo-keyword 2020-08-29 08:35:27 +02:00
sh_vou.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
via-camera.c Power management updates for 5.7-rc1 2020-03-30 15:05:01 -07:00
via-camera.h media: fix usage of whitespaces and on indentation 2018-01-04 13:12:01 -05:00
video-mux.c media: video-mux: Create media links in bound notifier 2020-05-18 14:20:56 +02:00