From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4DDD2C43217 for ; Fri, 1 Apr 2022 14:51:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1348334AbiDAOwr (ORCPT ); Fri, 1 Apr 2022 10:52:47 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34474 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1349061AbiDAOpZ (ORCPT ); Fri, 1 Apr 2022 10:45:25 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 68F5A298CBD; Fri, 1 Apr 2022 07:35:21 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 4FD5CB82519; Fri, 1 Apr 2022 14:34:51 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id A4DCDC2BBE4; Fri, 1 Apr 2022 14:34:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1648823690; bh=zK5QlzRveagMrLBp4zM8+xkJ5DkleMB7FcbBsba9IcM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=nyXQDpxucSzgcPNUPQXF4M0u6S57vHRZj2BSMHZnpJNrR9EM8tHiRRr/BUhMlR3rR z7nwqro89wnuSkZtJB2r2y4Xkw8Cszar8GpNyVcz8pXMbkqEBgkFERGmEnSnmjgkhg IyqovoHqXmWrvicuqN13BkhBdvp52OMcC6JXU4MO8dN+wlAsF5no7pYHr3YWxxIYDJ NrEp5TyXe0NTYQVZPxcb2qq7kgQTxnA4NYP4KQNcS2JgJ64lxCcT2Nq2WFqC+nbg/Y q/1nGPT43fn8Rh3mr+qxfcB33mDKRMwqYdqNC4kCUEkmoAZ2OX2jEnTqrkGW7x0UuC lQ5xdtUZvd0Ow== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Zhou Guanghui , Will Deacon , Sasha Levin , joro@8bytes.org, robin.murphy@arm.com, thunder.leizhen@huawei.com, jean-philippe@linaro.org, tglx@linutronix.de, john.garry@huawei.com, christophe.jaillet@wanadoo.fr, linux-arm-kernel@lists.infradead.org, iommu@lists.linux-foundation.org Subject: [PATCH AUTOSEL 5.16 040/109] iommu/arm-smmu-v3: fix event handling soft lockup Date: Fri, 1 Apr 2022 10:31:47 -0400 Message-Id: <20220401143256.1950537-40-sashal@kernel.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220401143256.1950537-1-sashal@kernel.org> References: <20220401143256.1950537-1-sashal@kernel.org> MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: stable@vger.kernel.org From: Zhou Guanghui [ Upstream commit 30de2b541af98179780054836b48825fcfba4408 ] 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: Zhou Guanghui Link: https://lore.kernel.org/r/20220119070754.26528-1-zhouguanghui1@huawei.com Signed-off-by: Will Deacon Signed-off-by: Sasha Levin --- drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c index f5848b351b19..af00714c8056 100644 --- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c +++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c @@ -1558,6 +1558,7 @@ static irqreturn_t arm_smmu_evtq_thread(int irq, void *dev) dev_info(smmu->dev, "\t0x%016llx\n", (unsigned long long)evt[i]); + cond_resched(); } /* -- 2.34.1