ASPEED graphics card: ast_pci_probe causes RCU stalls

From: poza
Date: Wed Nov 21 2018 - 04:33:50 EST


Hi,


we have on-board ASPEED Graphics card on PCIe.

kernel version: 4.16

I select following drive to enable ast graphics support.
Symbol: DRM_AST [=y] \u2502
AST server chips \u2502
Location: \u2502
-> Device Drivers \u2502
-> Graphics support \u2502
Defined at drivers/gpu/drm/ast/Kconfig:1 \u2502
Depends on: HAS_IOMEM [=y] && DRM [=y] && PCI [=y] && MMU [=y] \u2502
Selects: DRM_TTM [=y] && DRM_KMS_HELPER [=y] && DRM_TTM [=y]

lspci -vvv output.
-----------------------------

0007:02:00.0 VGA compatible controller: ASPEED Technology, Inc. ASPEED Graphics Family (rev 41) (prog-if 00 [VGA controller])
Subsystem: ASPEED Technology, Inc. ASPEED Graphics Family
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0
Interrupt: pin A routed to IRQ 255
Region 0: Memory at e70101000000 (32-bit, non-prefetchable) [size=16M]
Region 1: Memory at e70100800000 (32-bit, non-prefetchable) [size=128K]
Region 2: I/O ports at 60000 [size=128]
Capabilities: [40] Power Management version 3
Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=375mA PME(D0+,D1+,D2+,D3hot+,D3cold+)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [50] MSI: Enable- Count=1/2 Maskable- 64bit+
Address: 0000000000000000 Data: 0000


it seems to me that; ast_pci_probe seems to stuck in set_clock

[ 38.293239] INFO: rcu_sched self-detected stall on CPU
[ 38.300808] 0-....: (35 ticks this GP) idle=256/1/4611686018427387906 softirq=183/183 fqs=187
[ 38.313653] (t=421 jiffies g=-232 c=-233 q=322)
[ 38.320592] Task dump for CPU 0:
[ 38.325566] kworker/0:0 R running task 0 3 2 0x00000002
[ 38.335989] Workqueue: events work_for_cpu_fn
[ 38.342409] Call trace:
[ 38.346025] dump_backtrace+0x0/0x170
[ 38.351413] show_stack+0x14/0x20
[ 38.356297] sched_show_task+0x104/0x128
[ 38.362173] dump_cpu_task+0x40/0x50
[ 38.367441] rcu_dump_cpu_stacks+0x94/0xd4
[ 38.373480] rcu_check_callbacks+0x574/0x7b0
[ 38.379785] update_process_times+0x2c/0x58
[ 38.385946] tick_sched_handle.isra.5+0x30/0x50
[ 38.393830] tick_sched_timer+0x40/0x90
[ 38.399480] __hrtimer_run_queues+0x120/0x1b8
[ 38.405895] hrtimer_interrupt+0xd4/0x250
[ 38.411815] arch_timer_handler_phys+0x28/0x40
[ 38.418361] handle_percpu_devid_irq+0x80/0x138
[ 38.425152] generic_handle_irq+0x24/0x38
[ 38.431057] __handle_domain_irq+0x5c/0xb0
[ 38.437104] gic_handle_irq+0x7c/0x184
[ 38.442639] el1_irq+0xb0/0x140
[ 38.447265] ast_get_index_reg_mask+0x4/0x38
[ 38.453553] __i2c_bit_add_bus+0x54/0x3e0
[ 38.459532] i2c_bit_add_bus+0x14/0x20
[ 38.465057] ast_mode_init+0x230/0x358
[ 38.470584] ast_driver_load+0x5a4/0x968
[ 38.476368] drm_dev_register+0x154/0x1d8
[ 38.482283] drm_get_pci_dev+0x94/0x160
[ 38.488047] ast_pci_probe+0x18/0x20
[ 38.493318] local_pci_probe+0x28/0x80
[ 38.498830] work_for_cpu_fn+0x18/0x28
[ 38.504367] process_one_work+0x1d4/0x310
[ 38.510271] worker_thread+0x230/0x470
[ 38.515804] kthread+0x128/0x130
[ 38.520777] ret_from_fork+0x10/0x18

Regards,
Oza.