744c0f19d7093f7ad2230d75f15fb8c31615c980

When PCIE linkdown happen, IRQ handler will disable IRQ line then trigger SSR. disable_irq() is used but it introduce sleep in IRQ context(unexpected). Crash will happen if CONFIG_SCHED_WALT is set: android_rvh_schedule_bug+0x4/0x8 __might_sleep+0x50/0x84 synchronize_irq+0x48/0xc4 disable_irq+0x70/0x9c cnss_pci_handle_linkdown+0x1a8/0x1c0 [cnss2] cnss_pci_event_cb+0x148/0x348 [cnss2] msm_pcie_notify_client+0x110/0x180 msm_pcie_handle_linkdown+0x2d8/0x2f8 handle_global_irq+0x464/0x5dc To avoid this issue, should use disable_irq_nosync(), which doesn't wait IRQ handler to finish. It should introduce no side effect, as the whole device will be restated later by SSR. Change-Id: I5ec96d41337a14280333ab9fea0c1f6132a532af CRs-Fixed: 3548604
Опис
Немає опису
Мови
C
98.7%
C++
0.9%
Makefile
0.3%
Starlark
0.1%