• Zhou Guanghui's avatar
    iommu/arm-smmu-v3: fix event handling soft lockup · 30de2b54
    Zhou Guanghui authored
    During event processing, events are read from the event queue one
    by one until the queue is empty.If the master device continuously
    requests address access at the same time and the SMMU generates
    events, the cyclic processing of the event takes a long time and
    softlockup warnings may be reported.
    
    arm-smmu-v3 arm-smmu-v3.34.auto: event 0x0a received:
    arm-smmu-v3 arm-smmu-v3.34.auto: 	0x00007f220000280a
    arm-smmu-v3 arm-smmu-v3.34.auto: 	0x000010000000007e
    arm-smmu-v3 arm-smmu-v3.34.auto: 	0x00000000034e8670
    watchdog: BUG: soft lockup - CPU#0 stuck for 22s! [irq/268-arm-smm:247]
    Call trace:
     _dev_info+0x7c/0xa0
     arm_smmu_evtq_thread+0x1c0/0x230
     irq_thread_fn+0x30/0x80
     irq_thread+0x128/0x210
     kthread+0x134/0x138
     ret_from_fork+0x10/0x1c
    Kernel panic - not syncing: softlockup: hung tasks
    
    Fix this by calling cond_resched() after the event information is
    printed.
    Signed-off-by: default avatarZhou Guanghui <zhouguanghui1@huawei.com>
    Link: https://lore.kernel.org/r/20220119070754.26528-1-zhouguanghui1@huawei.comSigned-off-by: default avatarWill Deacon <will@kernel.org>
    30de2b54
arm-smmu-v3.c 103 KB