Skip to content
Commit 30f04f19 authored by Xiaolei Wang's avatar Xiaolei Wang Committed by Bruce Ashfield
Browse files

irqchip: imx-irqsteer: Block the runtime PM



The irqsteer's runtime PM has to be enabled otherwise the probe of
some devices (such as dpu) will fail because of the failure of irq_chip_pm_get().
But we can't allow the irqsteer to really enter the suspend state
because it will break the kdump with a call trace like below.

  Internal error: synchronous external abort: 96000210 [#1] PREEMPT SMP
  Modules linked in: sch_fq_codel
  CPU: 3 PID: 3772 Comm: sh Kdump: loaded Not tainted 5.4.87-yocto-standard #1
  Hardware name: Freescale i.MX8QM MEK (DT)
  pstate: 40000085 (nZcv daIf -PAN -UAO)
  pc : imx_irqsteer_irq_mask+0x50/0x90
  lr : imx_irqsteer_irq_mask+0x40/0x90
  sp : ffff800014b7b9e0
  x29: ffff800014b7b9e0 x28: ffff0008e5800000
  x27: 0000000000000000 x26: 0000000000000000
  x25: 0000000000000007 x24: ffff800011513398
  x23: ffff800014b7ba88 x22: ffff0008ef1fadd8
  x21: ffff0008ef1fac80 x20: ffff0008eecd8858
  x19: 0000000000000001 x18: 0000000000000020
  x17: 0000000000000000 x16: 0000000000000000
  x15: ffff0008e5800470 x14: 0000000080000085
  x13: ffff800010192a48 x12: ffff800011ed8000
  x11: ffff800011ed8b50 x10: 00000000000c01d2
  x9 : 000000002769dc82 x8 : 00000000000084ab
  x7 : ffff800011ed8b68 x6 : 0000000000000001
  x5 : 0000000016f0f41b x4 : 8888888888888889
  x3 : ffff800013677000 x2 : ffff800013677004
  x1 : 0000000000000080 x0 : 0000000000000080
  Call trace:
   imx_irqsteer_irq_mask+0x50/0x90
   machine_crash_shutdown+0xb4/0x10c
   __crash_kexec+0x78/0x12c
   panic+0x180/0x370
   sysrq_handle_reboot+0x0/0x3c
   __handle_sysrq+0xf0/0x1d0
   write_sysrq_trigger+0xac/0xcc
   proc_reg_write+0x8c/0x110
   __vfs_write+0x4c/0x90
   vfs_write+0xe8/0x1d0
   ksys_write+0x7c/0x104
   __arm64_sys_write+0x28/0x3c
   el0_svc_common.constprop.0+0x7c/0x1b4
   el0_svc_handler+0x54/0xc0
   el0_svc+0x8/0x204
  Code: f94092a3 531e7662 aa0003e1 8b22c062 (b9400040)

So enable the runtime PM with pm_runtime_enable(), but block the suspend of irqsteer with pm_runtime_forbid().

Signed-off-by: default avatarXiaolei Wang <xiaolei.wang@windriver.com>
Signed-off-by: default avatarBruce Ashfield <bruce.ashfield@gmail.com>
parent 3c11f728
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment