Received: by 2002:ad5:4acb:0:0:0:0:0 with SMTP id n11csp3811654imw; Mon, 18 Jul 2022 15:08:07 -0700 (PDT) X-Google-Smtp-Source: AGRyM1sDXDQUxaLYA6C734Qe4ZnF7wxIGqqrVSIwCdzwrThx2g63wd9eV50Jr8v9/F5qVhz9ZybU X-Received: by 2002:a05:6a00:1d26:b0:528:31c2:5243 with SMTP id a38-20020a056a001d2600b0052831c25243mr29897519pfx.28.1658182086945; Mon, 18 Jul 2022 15:08:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1658182086; cv=none; d=google.com; s=arc-20160816; b=Jv5BsWx5yAxP14C9z0PScl+RJdOiv5Bl3GW6Dv90zVItJh3tIL+l8Bou65P42FllJP SnWcKubhFW7YDzL5zkV5w5NwdlLhYYaQ5cLAs4zLYcEgbQnGp7ddRx9Sa3N7jxcaZ427 IA3O3PEJuztkuIj9yNNBMz7iPAorO3gNysLinHly8dIJSpZITtxRS2V6u31Gy6FgzFnj zIcol6qyv7k4GxFoBf4dNJ0DteRnFwgZL2uYaL2aWVMAwKLC30LO2UChkjRb6yNGV79Z DDw89elHgwqM0/NIdNowfemEuFtl2hJ6qTlbgJBaTVwE46PW6lCPp352f8iBjZlafGwD wA/A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=b4lrAebbrsaV7SbYoAyQdPzI0ZTvSKq+0zcXGzBEpvY=; b=N6USciTDSrmfdgUxycMq4QOEyScN2+0vY9wiBE48dWNCjZPgq4KOk8ct8lateDZhsP 6X6tlwAYXkp0hhrPt40ST0BEN16MUUDXGaXWKve3WIHEW/UHuEfd08rAFQho4wfuVLLU NtSqMbPERQLaWvXbedtJTNePwsVbkDb+x4A/LE0HrPTY4ojZk3G36Kb0uRB2mZmE7LQX 06YDbU6FdTj8Jrt1xlNY/E/8ECjIG6O8UcujUY9M4eOIz1bKSmeJmPKRcC+AaMe8ZMKA fh1V6THn+C4rRZE5Aqp0P4dfEdZg0SZ+eX5Izn34mHaXBHOL85EjNGy4m0aGAoqUzDjR Rg8A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=KWJApb2B; spf=pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id bi5-20020a170902bf0500b0016bde614f40si15664243plb.253.2022.07.18.15.07.57; Mon, 18 Jul 2022 15:08:06 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=KWJApb2B; spf=pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236414AbiGRWCn (ORCPT + 65 others); Mon, 18 Jul 2022 18:02:43 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49098 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234500AbiGRWCn (ORCPT ); Mon, 18 Jul 2022 18:02:43 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 008FE30572 for ; Mon, 18 Jul 2022 15:02:41 -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 dfw.source.kernel.org (Postfix) with ESMTPS id 8BC4B614BD for ; Mon, 18 Jul 2022 22:02:41 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 409FDC341C0; Mon, 18 Jul 2022 22:02:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1658181760; bh=Nxs+neqrTmVc0kmk3RZapzGrMhYfWi3RPreVSuYvyh0=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=KWJApb2BkuqV4O09lSd0Q5KqsUCWMt2NmEZXwZkM+4H6pXQfzcEgnlV0Za/Ip9vQZ l1ri5tpwCPYdsThhGzrdPHugnj6nXqPe+y47+qqxaX3RY82PBR07+D+/7toLddXgvU EoA/aWF0j8ZV36gdn8hftXMYghnRiXDHqMky6SOG276i+8zM0LxHAl+J5cdX/3OQ96 Tp4MlJqjaIopmIWFPWCH509ObHcf34LkF10kNaekVNH8DaQpdc2ijy91XGsmSCDLEy twDkwTaF+TbdeXtDyeBcsPMrllFnV/GMyZbXsL+sfvB5PCLxZZGqzw1ceY2HNPfS2b 1AtneqJ3j6CIg== Date: Tue, 19 Jul 2022 00:02:37 +0200 From: Lorenzo Bianconi To: sean.wang@mediatek.com Cc: nbd@nbd.name, lorenzo.bianconi@redhat.com, Soul.Huang@mediatek.com, YN.Chen@mediatek.com, Leon.Yen@mediatek.com, Eric-SY.Chang@mediatek.com, Deren.Wu@mediatek.com, km.lin@mediatek.com, jenhao.yang@mediatek.com, robin.chiu@mediatek.com, Eddie.Chen@mediatek.com, ch.yeh@mediatek.com, posh.sun@mediatek.com, ted.huang@mediatek.com, Stella.Chang@mediatek.com, Tom.Chou@mediatek.com, steve.lee@mediatek.com, jsiuda@google.com, frankgor@google.com, kuabhs@google.com, druth@google.com, abhishekpandit@google.com, shawnku@google.com, linux-wireless@vger.kernel.org, linux-mediatek@lists.infradead.org Subject: Re: [PATCH 1/3] mt76: mt7921s: fix the deadlock caused by sdio->stat_work Message-ID: References: MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="/JO1kva0Pj3FmabW" Content-Disposition: inline In-Reply-To: X-Spam-Status: No, score=-7.8 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org --/JO1kva0Pj3FmabW Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable > From: Sean Wang >=20 > Because wake_work and sdio->stat_work share the same workqueue mt76->wq, > if sdio->stat_work cannot acquire the mutex lock such as that was possibly > held up by mt7921_mutex_acquire, we should exit immediately and schedule > another stat_work to avoid blocking the mt7921_mutex_acquire. >=20 > Also, if mt7921_mutex_acquire was called by sdio->stat_work self, the wake > would be blocked by itself, so we have to changing into an unblocking wake > (directly wakeup via mt7921_mcu_drv_pmctrl, not via the wake_work) in the > context. Hi Sean, it seems to me we are missing some logic here (e.g cancelling ps_work as we= do in mt76_connac_pm_wake()). Is it enough to move mt7921_usb_sdio_tx_status_d= ata on mac80211 workqueue? Can you see any performance issue? (same for mt7663). Regards, Lorenzo >=20 > Fixes: 48fab5bbef40 ("mt76: mt7921: introduce mt7921s support") > Co-developed-by: YN Chen > Signed-off-by: YN Chen > Signed-off-by: Sean Wang > --- > .../net/wireless/mediatek/mt76/mt7921/mac.c | 22 +++++++++++++++++-- > 1 file changed, 20 insertions(+), 2 deletions(-) >=20 > diff --git a/drivers/net/wireless/mediatek/mt76/mt7921/mac.c b/drivers/ne= t/wireless/mediatek/mt76/mt7921/mac.c > index 6bd9fc9228a2..75e719175e92 100644 > --- a/drivers/net/wireless/mediatek/mt76/mt7921/mac.c > +++ b/drivers/net/wireless/mediatek/mt76/mt7921/mac.c > @@ -1080,10 +1080,28 @@ bool mt7921_usb_sdio_tx_status_data(struct mt76_d= ev *mdev, u8 *update) > { > struct mt7921_dev *dev =3D container_of(mdev, struct mt7921_dev, mt76); > =20 > - mt7921_mutex_acquire(dev); > + if (!mutex_trylock(&mdev->mutex)) { > + /* Because wake_work and stat_work share the same workqueue > + * mt76->wq, if sdio->stat_work cannot acquire the mutex lock, > + * we should exit immediately and schedule another stat_work > + * to avoid blocking the wake_work. > + */ > + struct work_struct *stat_work; > + > + stat_work =3D mt76_is_sdio(mdev) ? &mdev->sdio.stat_work : > + &mdev->usb.stat_work; > + queue_work(dev->mt76.wq, stat_work); > + > + goto out; > + } > + > + mt7921_mcu_drv_pmctrl(dev); > mt7921_mac_sta_poll(dev); > - mt7921_mutex_release(dev); > + mt76_connac_power_save_sched(&mdev->phy, &dev->pm); > =20 > + mutex_unlock(&mdev->mutex); > + > +out: > return false; > } > EXPORT_SYMBOL_GPL(mt7921_usb_sdio_tx_status_data); > --=20 > 2.25.1 >=20 --/JO1kva0Pj3FmabW Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iHUEABYKAB0WIQTquNwa3Txd3rGGn7Y6cBh0uS2trAUCYtXYfQAKCRA6cBh0uS2t rG4SAP9aMU+iYWw71kmWoYSQa2FQYwVV8olQtNGNtkAAF7Ln2gEA2o0rIjEagdFd 3FxnmJXvn6wKSWhsfuHUut72LyinXQM= =f6c5 -----END PGP SIGNATURE----- --/JO1kva0Pj3FmabW--