From patchwork Mon Jul 17 12:05:01 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: 121269 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:c923:0:b0:3e4:2afc:c1 with SMTP id j3csp1080356vqt; Mon, 17 Jul 2023 05:32:41 -0700 (PDT) X-Google-Smtp-Source: APBJJlFGiUAKBfoYJvFvdlIV/xuVtKz8j5t5gfyEcZoxCoBxPBDFjZBJm7RzypQHy3RCItzVaBXW X-Received: by 2002:a05:6402:3587:b0:51e:443a:25df with SMTP id y7-20020a056402358700b0051e443a25dfmr11750440edc.19.1689597160856; Mon, 17 Jul 2023 05:32:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689597160; cv=none; d=google.com; s=arc-20160816; b=T/b4h+IBgECQkc7/OHN8veBkaP4L5W/mL1aFVRFhzTuMfzN//fH8A1OFyrZMOUvDzR YXDr/xHm+Dl7buTXdJ6y+BFL1QfCVLEJkUrg/OtdUZsNFp68m4BK+eCZFEQ5/bbm8FBB DdReXIzVx681fnmObeZbE8fXlTYVkIzALrlsEw9UuTGKbnZiMSJL/bXEo9pe0El4F4Jt ZKkfj8c7qdmxuHLsLEmSainWgJ9+lPVRh+WDpwMUXfYfbCOHVXZKDqNFbfajyhcL8dSK BXhHNLh0f2n/PLzJKa9Okszt2WDEmzAX04wM3JwE5CnyzQjs4TDk8xHysLJ3QEpODqql YtBg== 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=lW7PIA/1ERcE7yWeiMQFz1BBfMmcjTwzAg+4/Lc4ZmI=; fh=hKK606cVJj4fG3Jok1MlUTmdscQl89Wp7bdrnbiV6j4=; b=Y/zm2lTdKOurIKplcFcMCl17WDHGOMDkgAp8zrwUAuVYvsRJONWUdWyCYG0nlUEnAB mHMYgnC0aWYoYKp3jzmUPg4mTWrI4ZYXCeCHmmKBKcM8f9NzEuzhVyaT+PkFOhzHgVIl ic1oVA+kRYkDFhR7DkN0nAHgeRZuwPLNfk6683EYP42C2uwEEG41S7fMESyYK/1xlKMl FrzIciTep1+SS6ovdto77owVn3VF0+O1MnwwIv9C/OqmCMcUSOeEhz0hwqXnGczNPh8K S9b4vYDhasdtk3L7jMzKqER+T0tHy3Mugh6U0MUoAj8/fvr5uDXraZpewXLA+T4TL9Zp ACLg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=BKTPunHF; 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 l14-20020a056402124e00b0051e0fa08e8csi13669627edw.284.2023.07.17.05.32.17; Mon, 17 Jul 2023 05:32:40 -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=BKTPunHF; 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 S231215AbjGQMHg (ORCPT + 99 others); Mon, 17 Jul 2023 08:07:36 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40398 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231153AbjGQMHb (ORCPT ); Mon, 17 Jul 2023 08:07:31 -0400 Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 75824132; Mon, 17 Jul 2023 05:07:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1689595627; x=1721131627; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=cyGe5BDTrg3RfJfvClt7NBXd+coMOb9txcFpO3hBJoM=; b=BKTPunHF11o4X0poq/mKE6+ra6rAP0KN1TpvePYV92qNhLIUN2VGeUDI OlK2cqXnapZ66LlbXtAFqmiqoHBF1KGHSMVXeLbIgrH5pxdUZeuvTuKih KMQqCT3ooBervm6SU+q/s55Ujs/D2XPPCAWVs1DSsPIUoSogOg+xOwKMA qB8Tfne6aGhWzqxO6mFsKUW1rpASYemBNiYIctXSBKJemawcNk6s2i20x LeGBianO5vedwjERxkEplQKYqLWjM4/uToDzDtor/xV4o0sYZ0w4I2GFh VDm+MVltRSWgkuITXt+F9nr2De3IvD/AYogYCS4LpDof3ATgczinCBtuB g==; X-IronPort-AV: E=McAfee;i="6600,9927,10773"; a="432081890" X-IronPort-AV: E=Sophos;i="6.01,211,1684825200"; d="scan'208";a="432081890" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Jul 2023 05:06:54 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10773"; a="752876370" X-IronPort-AV: E=Sophos;i="6.01,211,1684825200"; d="scan'208";a="752876370" Received: from dkravtso-mobl1.ccr.corp.intel.com (HELO ijarvine-mobl2.ger.corp.intel.com) ([10.252.45.233]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Jul 2023 05:06:48 -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 , Andy Shevchenko , Kalle Valo , Carl Huang , Balamurugan Selvarajan , Ramya Gnanasekar , Pradeep Kumar Chitrapu , Vasanthakumar Thiagarajan , ath12k@lists.infradead.org, linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Dean Luick , =?utf-8?q?Jonas_Dre=C3=9Fl?= =?utf-8?q?er?= , =?utf-8?q?Ilpo_J=C3=A4rvinen?= , Simon Horman , stable@vger.kernel.org Subject: [PATCH v5 09/11] wifi: ath12k: Use RMW accessors for changing LNKCTL Date: Mon, 17 Jul 2023 15:05:01 +0300 Message-Id: <20230717120503.15276-10-ilpo.jarvinen@linux.intel.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230717120503.15276-1-ilpo.jarvinen@linux.intel.com> References: <20230717120503.15276-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 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: INBOX X-GMAIL-THRID: 1771671032297292189 X-GMAIL-MSGID: 1771671032297292189 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 Reviewed-by: Simon Horman Acked-by: Kalle Valo Cc: stable@vger.kernel.org --- 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 5990a55801f0..e4f08a066ca1 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)