Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp713896ybz; Wed, 15 Apr 2020 17:19:16 -0700 (PDT) X-Google-Smtp-Source: APiQypIiKTiVk2Yi19dKe3cukO2WlxfvUp1CieLXZBd9GCIxC21AwIJlhrYwJ9pB5IVSmQnQLuKW X-Received: by 2002:a50:cf8a:: with SMTP id h10mr8847245edk.142.1586996356561; Wed, 15 Apr 2020 17:19:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1586996356; cv=none; d=google.com; s=arc-20160816; b=PhGh440l67Y9rePK7jrHeFDIXFlk6hRevyMDe3VYJtP/e6s6sxUEsAQTJHLTzph+eY vyoJ2B8Y4Jnyq059aXWX0e1zqQ3vsiYhZCd7qp9+12oNntS5Nh3Y5bh34RJ2rp0nLn/m xOxS7TAuytZj149nZ80OS1P5a81UIae24T6//xuKgk64pk9SID6dkFWLdPK/Fzx9fd/W QtTCdMXwhKThttvu/K17V5Ixvd4Z7j5H4orGnwuoA534laeWGw6yV30REFOuxDlE15Vo mK4fWU+UHSi3Zijkc82hHpQOXH1pK6Sh3EcU++m7jJu0WOM4pH4FuvhIUrCg9goUrgyv BrtA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=KcdK2hzEwGeNKKN3HOQAe705IW8ZrmR7SFs+7b2JDzU=; b=lBGz5phKmSHOeErrdLj5mc+BXo4/28VsXotRoFBmQerUR/WJI0bjWYsCPtBAxrnycm Qc3hKORj9S+1FmOvyECZXJAD9gajRiNBdetOHYXDWKzR7z7E/6z/ISqr2N0vLfY2V1Ld gSx50LM1/pW/FqHml2oBGMYpPHF4TvCl0m5JHVin3SNh23hogjHWtcVyb27CKqHRGUP8 QwK5e4DRBi8fzd7OZOdAOyOIGW8iMMxl0mmFbT3J2/Mcg9OwcHal85wzD42mtJ7o1G4p J3GRn5zkhOi/6FOXPDRjI5gs6OrKLIWux9ARZwWY/xofRpmz/c1v8sbPRlEFfno2opL2 31Jg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=xzJPJVkZ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id y5si13507819edm.492.2020.04.15.17.18.53; Wed, 15 Apr 2020 17:19:16 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=xzJPJVkZ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-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 S1415164AbgDOQBy (ORCPT + 99 others); Wed, 15 Apr 2020 12:01:54 -0400 Received: from mail.kernel.org ([198.145.29.99]:52504 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1415145AbgDOQB2 (ORCPT ); Wed, 15 Apr 2020 12:01:28 -0400 Received: from pali.im (pali.im [31.31.79.79]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 418C620936; Wed, 15 Apr 2020 16:01:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1586966488; bh=46RjzSt2lZ7zcuoUcDDNbTHTfazol2LogceQfxy51Hs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=xzJPJVkZxfwtu/a2eSdGtHTO119qdoyaejCCTJcaANPSKNcsyNk//UNMozna2NgCU f1vJxc7greQtfZUSTTd3tI+nORw6CeEItOAdA9t2MuBe3/roNbapKvpqqkpG7tZ4OF 1MQNU3Q83fYjfrQ283eHQokIIdm4FTZZ2rpOLc+k= Received: by pali.im (Postfix) id 673C058E; Wed, 15 Apr 2020 18:01:26 +0200 (CEST) From: =?UTF-8?q?Pali=20Roh=C3=A1r?= To: Jason Cooper , Andrew Lunn , Gregory Clement , Sebastian Hesselbarth , Rob Herring , Thomas Petazzoni , Lorenzo Pieralisi , Andrew Murray , Bjorn Helgaas , Remi Pommarel , =?UTF-8?q?Marek=20Beh=C3=BAn?= , Tomasz Maciej Nowak , Xogium Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org Subject: [PATCH 4/8] PCI: aardvark: Do not overwrite Link Status register and ASPM Control bits in Link Control register Date: Wed, 15 Apr 2020 18:00:50 +0200 Message-Id: <20200415160054.951-5-pali@kernel.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200415160054.951-1-pali@kernel.org> References: <20200415160054.951-1-pali@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Trying to overwrite or change Link Status register does not have any effect as this is read-only register. Trying to overwrite bits for Negotiated Link Width value in Link Status register does not make sense. So remove code which is doing it. In future proper change of link width can be done via Lane Count Select bits in PCIe Control 0 register. Trying to unconditionally enable ASPM L0s via ASPM Control bits in Link Control register is wrong. There should be at least some detection if endpoint supports L0s as support for it is not mandatory. Moreover ASPM Control bits in Link Control register are controlled by pcie/aspm.c code which sets it according to system ASPM settings, immediately after aardvark driver probe callback finish. So setting these bits by aardvark driver has no long running effect. So remove code which touches ASPM L0s bits from aardvark driver and let kernel's ASPM implementation to set ASPM state properly. Some users are reporting issues that this code which unconditionally set ASPM L0s bits in Link Control register is problematic for some Intel wifi cards. And disabling that code fixes support for those cards. See e.g.: https://bugzilla.kernel.org/show_bug.cgi?id=196339 If problem with Intel wifi cards occur also after this commit then driver independent pcie/aspm.c code could be modified / hooked to not enable ASPM L0s state for affected problematic cards. Signed-off-by: Pali Rohár --- drivers/pci/controller/pci-aardvark.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/drivers/pci/controller/pci-aardvark.c b/drivers/pci/controller/pci-aardvark.c index 756b31c4d20b..02c69fc9aadf 100644 --- a/drivers/pci/controller/pci-aardvark.c +++ b/drivers/pci/controller/pci-aardvark.c @@ -380,10 +380,6 @@ static void advk_pcie_setup_hw(struct advk_pcie *pcie) advk_pcie_wait_for_link(pcie); - reg = PCIE_CORE_LINK_L0S_ENTRY | - (1 << PCIE_CORE_LINK_WIDTH_SHIFT); - advk_writel(pcie, reg, PCIE_CORE_LINK_CTRL_STAT_REG); - reg = advk_readl(pcie, PCIE_CORE_CMD_STATUS_REG); reg |= PCIE_CORE_CMD_MEM_ACCESS_EN | PCIE_CORE_CMD_IO_ACCESS_EN | -- 2.20.1