Received: by 2002:a05:6a10:1287:0:0:0:0 with SMTP id d7csp4255791pxv; Tue, 27 Jul 2021 02:48:12 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwuGee/FXH/e4HBnhjhEjkdCqvw1e/XtrAIAwkNIkuhUOim3H/lRaiqHLPjU9kS2qEWMFvU X-Received: by 2002:a17:906:22db:: with SMTP id q27mr6834830eja.185.1627379291980; Tue, 27 Jul 2021 02:48:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1627379291; cv=none; d=google.com; s=arc-20160816; b=hcg8rW2dnmM9yhqzw+su2eRf1Nx1H7/WLNkpzm8yYNQiigTugOy5+tErwzRMEeiKqR tQgboyWW3mW7S7g55Mp4BvZ8P450ZOBb6ThKO0ayAqGAiEeAVAfSqawwExX1YY7uYT1g XdSCKwKAOZnsynnaykzOvcg09SiBSQ635eBuHy2XX7Bbs8ftachTFW24sWA4ckBXP3Fm mqQllUIoq7t9E6ZTUxuocA4GWCoyKyY+sLRt9zOhFXXxpbNas8/oIOO9D/nmCBsaZXcb A3JvhxmdnEbTlkitQJE/W3wEmBynKzYgiWv6agHvF0ac7XXGUYEgQNXEDd5fPLtj6CsV AnGQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:message-id:date:subject:cc:to:from; bh=yuEV/xgIRMXzM+Xs5R5HCIMpCOw/yjmDq2QwRRe0qxE=; b=ksrwv9wixnS/vOp1ovyr7WGcJK9V7h+VfeJitw60rbLhyHMqe3HC0rJWUwxG34oTay eHC5PLUq+XXZigWBtUmAMzTv2oQEGgiLKvvUILVaN8MpiMTBL+3x3c08j73uSF0hQrKs H7u+5j1VVJTxVDNEQ8PNExSZVU9FI1rrasUs64an6FQzLo34QD1I3r+yx24Ca2ybFrZb dq68RVzcfJqwQr6A2evQALJBYc0yjNB/cx7Wsy8AwapEsHZ5zBjVNjlYQghSvrhgiA6p puxVM+YwATCK7fH42NhWbj5tMPO8bRqCdN5PnFr8zXl8mZ2zheRc/krRy/MxzwZmd+k+ sQEA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id zo6si2399708ejb.295.2021.07.27.02.47.44; Tue, 27 Jul 2021 02:48:11 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235963AbhG0JrU (ORCPT + 99 others); Tue, 27 Jul 2021 05:47:20 -0400 Received: from mailgw01.mediatek.com ([60.244.123.138]:51532 "EHLO mailgw01.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S235897AbhG0JrS (ORCPT ); Tue, 27 Jul 2021 05:47:18 -0400 X-UUID: 7fe3245be51148abb7acb9cff82d7985-20210727 X-UUID: 7fe3245be51148abb7acb9cff82d7985-20210727 Received: from mtkmbs10n1.mediatek.inc [(172.21.101.34)] by mailgw01.mediatek.com (envelope-from ) (Generic MTA with TLSv1.2 ECDHE-RSA-AES256-GCM-SHA384 256/256) with ESMTP id 396707370; Tue, 27 Jul 2021 17:47:17 +0800 Received: from MTKCAS06.mediatek.inc (172.21.101.30) by mtkmbs02n1.mediatek.inc (172.21.101.77) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Tue, 27 Jul 2021 17:47:15 +0800 Received: from mtksdccf07.mediatek.inc (172.21.84.99) by MTKCAS06.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Tue, 27 Jul 2021 17:47:15 +0800 From: Deren Wu To: Felix Fietkau , Lorenzo Bianconi CC: Sean Wang , Soul Huang , YN Chen , Leon Yen , Eric-SY Chang , Deren Wu , KM Lin , Robin Chiu , CH Yeh , Posh Sun , Eric Liang , Stella Chang , Jimmy Hu , , , linux-wireless , linux-mediatek , Deren Wu Subject: [PATCH] mt76: mt7921: fix dma hang in rmmod Date: Tue, 27 Jul 2021 17:47:09 +0800 Message-ID: <0e68058a8c7c4948b9ad6b80d23a03726aecf4c2.1627378293.git.deren.wu@mediatek.com> X-Mailer: git-send-email 2.18.0 MIME-Version: 1.0 Content-Type: text/plain X-MTK: N Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org From: Deren Wu The dma would be broken after rmmod flow. There are two different cases causing this issue. 1. dma access without privilege. 2. hw access sequence borken by another context. This patch handle both cases to avoid hw crash. Fixes: 2b9ea5a8cf1bd ("mt76: mt7921: add mt7921_dma_cleanup in mt7921_unregister_device") Signed-off-by: Deren Wu --- drivers/net/wireless/mediatek/mt76/mt7921/init.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/drivers/net/wireless/mediatek/mt76/mt7921/init.c b/drivers/net/wireless/mediatek/mt76/mt7921/init.c index 49725caca7ed..1f37e64b6038 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7921/init.c +++ b/drivers/net/wireless/mediatek/mt76/mt7921/init.c @@ -266,10 +266,20 @@ int mt7921_register_device(struct mt7921_dev *dev) void mt7921_unregister_device(struct mt7921_dev *dev) { + int i; + struct mt76_connac_pm *pm = &dev->pm; + mt76_unregister_device(&dev->mt76); + mt76_for_each_q_rx(&dev->mt76, i) + napi_disable(&dev->mt76.napi[i]); + cancel_delayed_work_sync(&pm->ps_work); + cancel_work_sync(&pm->wake_work); + mt7921_tx_token_put(dev); + mt7921_mcu_drv_pmctrl(dev); mt7921_dma_cleanup(dev); mt7921_mcu_exit(dev); + mt7921_mcu_fw_pmctrl(dev); tasklet_disable(&dev->irq_tasklet); mt76_free_device(&dev->mt76); -- 2.25.1