From patchwork Tue Jun 20 13:46:22 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: 110522 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp3684786vqr; Tue, 20 Jun 2023 07:00:50 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ7YhEmdkpc5ILv1kbsF4PHcxfE5r2pEVFyiqu1CJIPJMHQmjYfcm68xeh4zg4rM+J4ggyUx X-Received: by 2002:a17:90a:f30f:b0:25e:b5fa:9eea with SMTP id ca15-20020a17090af30f00b0025eb5fa9eeamr16909760pjb.17.1687269650543; Tue, 20 Jun 2023 07:00:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1687269650; cv=none; d=google.com; s=arc-20160816; b=m4e9Gqro+h9wc0uenWudP/DkV3pSlnpD4N7uUkwUQ4dDCh8gz1HMi/GAIP+xS8wita 0jWL6dvFgZvyfTmo3PyhOUDRAvJbZ6sgheMGUJ0YYLgmF6oaEgPjJ94tXLA5C5CoFgPF ED8cFwtZAf2Leo+pH3RqQqc+yd4eATV2NmJ8bQDHh5voINmfYWFQVRzFpf0yzhyy7urQ iNfPHEHaE9C5R0GGVpE6tnECdm6J4ITroDZ79RxZ8W1EDEL47KT4/PQbZmx+9kc6CBsC owZIUBGHTt6UUU1q/VCeGUnd6UVxm6M9mi0N0xn1MulWlqzyiddSb+n7hVaKfrU/wVeL BVqA== 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=6M1qCY1FZgg4o+XguoM/vUKD4Q2mB7Kda5aQpIoKr8c=; b=QWhTUD5sgc/aoB/baKVhD97+PSFLtIiIudioagQbrk4I6pB61yOAR4pFSN+NLBKaF2 Kcs3YPDgdhqXlUnhtvezgVV6wis/lEDj5QMg2uMrRzdKZyYiVk2fotSs7vLdJLtMcfL5 jikago+643xWxiZxWElf0I+oPrJ830S3Q0nlZMmhSTvMTvMxiI0n69HOQcSv5XKiOiWI LFja4BDQv/cjHHSi4XZY2/U8c59s76zLJNfpX4Fht5q6p2dmrczJkS0ccQnmq+ZMFGUa aBc5xh2gl4YOqrfP6ePNaeHyMMUyZwYJj6x6KMwZAXY/H5mb36FhOAicvwYB5zs1QZ7y yCAA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b="PG/HDQvx"; 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 cu18-20020a17090afa9200b0025bf39495d5si9461126pjb.35.2023.06.20.07.00.35; Tue, 20 Jun 2023 07:00:50 -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="PG/HDQvx"; 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 S233168AbjFTNuA (ORCPT + 99 others); Tue, 20 Jun 2023 09:50:00 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47978 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233195AbjFTNtd (ORCPT ); Tue, 20 Jun 2023 09:49:33 -0400 Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7B7A210CE; Tue, 20 Jun 2023 06:49:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1687268966; x=1718804966; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=l2FIHwo3Np9c91fb920QrJylVVkhLopg5AeL+jtiI/E=; b=PG/HDQvxNcrPnsS9GGw/0K7vKH8kgVaG8Kda0ZS59aoAXhJb3+5IkHT1 9uVCRmbfw+RpAJc6CCkYLizvTCtDQhHDX5coTsYoIa/Myhw8cuspNkryx C5qWtMLGJJ45CfC7jIzZpko2u4RdrHPFphg26XMELztuJlIuCd+Ww9vQH vGAJueyrE/jLg+py96EclPGiRCogZZblXwsmUso7yjER4SJ5AqtDu0ojt lTmHM9uraV5Cyru4TL8VTWdkyo67BSodnhOYhlxNJjFxuEHxi5kuaUC+n /oPni5G0g6+kLb3xye8NuBg9UyX6Y8Yif4biVgn9uGDvPtV4frGZ9aMxU Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10747"; a="362401570" X-IronPort-AV: E=Sophos;i="6.00,257,1681196400"; d="scan'208";a="362401570" Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jun 2023 06:47:40 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10747"; a="827006948" X-IronPort-AV: E=Sophos;i="6.00,257,1681196400"; d="scan'208";a="827006948" Received: from eshaanan-mobl.ger.corp.intel.com (HELO ijarvine-mobl2.ger.corp.intel.com) ([10.252.61.137]) by fmsmga002-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jun 2023 06:47:34 -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 , Carl Huang , ath11k@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 v3 08/10] wifi: ath11k: Use RMW accessors for changing LNKCTL Date: Tue, 20 Jun 2023 16:46:22 +0300 Message-Id: <20230620134624.99688-9-ilpo.jarvinen@linux.intel.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230620134624.99688-1-ilpo.jarvinen@linux.intel.com> References: <20230620134624.99688-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, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,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?1769230461320074675?= X-GMAIL-MSGID: =?utf-8?q?1769230461320074675?= 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: e9603f4bdcc0 ("ath11k: pci: disable ASPM L0sLs before downloading firmware") Suggested-by: Lukas Wunner Signed-off-by: Ilpo Järvinen Acked-by: Kalle Valo Cc: stable@vger.kernel.org Reviewed-by: Simon Horman --- drivers/net/wireless/ath/ath11k/pci.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/drivers/net/wireless/ath/ath11k/pci.c b/drivers/net/wireless/ath/ath11k/pci.c index 7b33731a50ee..6ba4cef6b1c7 100644 --- a/drivers/net/wireless/ath/ath11k/pci.c +++ b/drivers/net/wireless/ath/ath11k/pci.c @@ -581,8 +581,8 @@ static void ath11k_pci_aspm_disable(struct ath11k_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(ATH11K_PCI_ASPM_RESTORE, &ab_pci->flags); } @@ -590,8 +590,10 @@ static void ath11k_pci_aspm_disable(struct ath11k_pci *ab_pci) static void ath11k_pci_aspm_restore(struct ath11k_pci *ab_pci) { if (test_and_clear_bit(ATH11K_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 int ath11k_pci_power_up(struct ath11k_base *ab)