From patchwork Wed May 17 10:52:34 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Ilpo_J=C3=A4rvinen?= X-Patchwork-Id: 95170 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp1044676vqo; Wed, 17 May 2023 04:06:44 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ6TXTrpVYiD/MtZ61NIiebXTlaV5XuVOZkMCiWJXoxINCEc5ryTLboxcaB73yzp4nq+uTgP X-Received: by 2002:a05:6a20:748e:b0:106:3b67:b5db with SMTP id p14-20020a056a20748e00b001063b67b5dbmr11746273pzd.18.1684321603678; Wed, 17 May 2023 04:06:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1684321603; cv=none; d=google.com; s=arc-20160816; b=vlbP8CBiPswFddsa9iqPIi0vokqnlpnbrFS+DBewHPs6RYilgBkz4KXL+kYw4Qh+l3 r3tl9dzdMKmtqd0sm8aoXRYlC84MvkKr7mp7EUW/0zCQYNDP1IOkPtQtBAunVwi/Py6G XvejJiApV+zw8SGAfSq3KfPdzwakD+JQTzsHWo0QAev9JnVDC9sQlOq8R13QA5uYBaeQ i4YN1envdApfS3iDhuzjauxfZtL93n250CAcBs3+eAH6KeTM823L66mVAZaRZFi040RV 63p/JTCelTdFkCwjHMOw2jlK6q9YMWi3gdKZHHRB/GZswz/2MtRXNAyyXrkH+UlFlZUc 66PA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=SMY8gPWxBgFz/sqZ2w9Xw1tVZJt3H9ws08JkpSu+xI4=; b=RrMgh++gy/vkGbfKqc9rYLePFQ4rYQ7rg36ll32+Qr7jO9I67FCAJGkJljDru4sQej ig6Le27Bn7/SENI1q9NjtUI9m4GA5jrP4v4T+ITBYZMCAp/Qj1oiBhMQjjc3mqZPuyzl yTw/ufmqB1Drekeq+01LK7ov0dWQ/+TFjkmE3wZpmz8PcD1COlJadf72fV2uhkUyBM8u s8U59jPiiBFLrTkrI/D6HqG9+JqVjYRT/ELgw6Rtz0X0c2jtTHc+fWvxVsK0G+C3l+Px zD3VBBEupGCGfUcERiDDDvNAjKpEv5ZuoaHF1m/FuLyze8xaoUiHxNPLtopP0nvM6mO8 SegA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=K8JrRz6z; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id q20-20020a637514000000b0052e76460273si21884484pgc.243.2023.05.17.04.06.28; Wed, 17 May 2023 04:06:43 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-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=@intel.com header.s=Intel header.b=K8JrRz6z; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231140AbjEQK6q (ORCPT + 99 others); Wed, 17 May 2023 06:58:46 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42468 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230187AbjEQK6l (ORCPT ); Wed, 17 May 2023 06:58:41 -0400 Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id F2EDF61AF; Wed, 17 May 2023 03:58:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1684321089; x=1715857089; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=GmDJbthkhSJpq5HQ5xMtwPdMc3rhKpWsiGNjPf0ymVE=; b=K8JrRz6zVtzaLHmsCMdeaKz3rsPn0kILdNntaegryHVdd9I45EAoUOH6 SGxHlGD3kj864kvgGfGYrUxlV5gYsBD1TGxWkQhWmgWUpqo14HR/i6uZl FAztCj0j3hZRunNeYvhUiYQlyqXFhwQj1zzwFAy39kdGLZImTOPFxYfyC /p6gC7PCFJErU4cp+EvYk9VsxUAX6bVCOsgqwb+bXQi10DnX04uUzsicP crLI6/zMbiOmf16zlMeUPq3UGALVrE/aamMZ8RCXSaG/0fosjzUIqU8tY HrBLsXR7solmnw4uEWUOPLQW5QGm5CD8qJY3211cT6uCoX8B/5Qoe1udx w==; X-IronPort-AV: E=McAfee;i="6600,9927,10712"; a="438071857" X-IronPort-AV: E=Sophos;i="5.99,281,1677571200"; d="scan'208";a="438071857" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 May 2023 03:53:56 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10712"; a="734651303" X-IronPort-AV: E=Sophos;i="5.99,281,1677571200"; d="scan'208";a="734651303" Received: from lnstern-mobl1.amr.corp.intel.com (HELO ijarvine-MOBL2.ger.corp.intel.com) ([10.251.221.185]) by orsmga001-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 May 2023 03:53:47 -0700 From: =?utf-8?q?Ilpo_J=C3=A4rvinen?= To: linux-pci@vger.kernel.org, Bjorn Helgaas , Lorenzo Pieralisi , Rob Herring , =?utf-8?q?Krzysztof_Wilczy=C5=84ski?= , Emmanuel Grumbach , "Rafael J . Wysocki" , Heiner Kallweit , Lukas Wunner , Kalle Valo , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Sriram R , P Praneesh , Ramya Gnanasekar , Karthikeyan Periyasamy , Vasanthakumar Thiagarajan , ath12k@lists.infradead.org, linux-wireless@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Dean Luick , Andy Shevchenko , =?utf-8?q?Ilpo_J=C3=A4?= =?utf-8?q?rvinen?= , stable@vger.kernel.org Subject: [PATCH v2 8/9] wifi: ath12k: Use RMW accessors for changing LNKCTL Date: Wed, 17 May 2023 13:52:34 +0300 Message-Id: <20230517105235.29176-9-ilpo.jarvinen@linux.intel.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230517105235.29176-1-ilpo.jarvinen@linux.intel.com> References: <20230517105235.29176-1-ilpo.jarvinen@linux.intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-4.3 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,SPF_HELO_NONE, SPF_NONE,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED 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-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1766139209834461593?= X-GMAIL-MSGID: =?utf-8?q?1766139209834461593?= Don't assume that only the driver would be accessing LNKCTL. ASPM policy changes can trigger write to LNKCTL outside of driver's control. Use RMW capability accessors which do proper locking to avoid losing concurrent updates to the register value. On restore, clear the ASPMC field properly. Fixes: d889913205cf ("wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices") Suggested-by: Lukas Wunner Signed-off-by: Ilpo Järvinen Cc: stable@vger.kernel.org Acked-by: Kalle Valo --- drivers/net/wireless/ath/ath12k/pci.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/drivers/net/wireless/ath/ath12k/pci.c b/drivers/net/wireless/ath/ath12k/pci.c index 9f174daf324c..e1e45eb50f3e 100644 --- a/drivers/net/wireless/ath/ath12k/pci.c +++ b/drivers/net/wireless/ath/ath12k/pci.c @@ -794,8 +794,8 @@ static void ath12k_pci_aspm_disable(struct ath12k_pci *ab_pci) u16_get_bits(ab_pci->link_ctl, PCI_EXP_LNKCTL_ASPM_L1)); /* disable L0s and L1 */ - pcie_capability_write_word(ab_pci->pdev, PCI_EXP_LNKCTL, - ab_pci->link_ctl & ~PCI_EXP_LNKCTL_ASPMC); + pcie_capability_clear_word(ab_pci->pdev, PCI_EXP_LNKCTL, + PCI_EXP_LNKCTL_ASPMC); set_bit(ATH12K_PCI_ASPM_RESTORE, &ab_pci->flags); } @@ -803,8 +803,10 @@ static void ath12k_pci_aspm_disable(struct ath12k_pci *ab_pci) static void ath12k_pci_aspm_restore(struct ath12k_pci *ab_pci) { if (test_and_clear_bit(ATH12K_PCI_ASPM_RESTORE, &ab_pci->flags)) - pcie_capability_write_word(ab_pci->pdev, PCI_EXP_LNKCTL, - ab_pci->link_ctl); + pcie_capability_clear_and_set_word(ab_pci->pdev, PCI_EXP_LNKCTL, + PCI_EXP_LNKCTL_ASPMC, + ab_pci->link_ctl & + PCI_EXP_LNKCTL_ASPMC); } static void ath12k_pci_kill_tasklets(struct ath12k_base *ab)