Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp2231406pxb; Fri, 5 Mar 2021 10:15:14 -0800 (PST) X-Google-Smtp-Source: ABdhPJxKc8hdAP77nCfLoc6OVBInHdILGipEl31Ja1L/T+m8gnGN9w4CBm2F+TZ7cv8nr8IdBPcA X-Received: by 2002:a17:906:6b1b:: with SMTP id q27mr3344250ejr.508.1614968114615; Fri, 05 Mar 2021 10:15:14 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614968114; cv=none; d=google.com; s=arc-20160816; b=mFS5Oty8zNWRpqdqg0yTH0iPu2+9QY/umuap9hKiBmJUnlmwegEzJsb7tiULFq8J4P Nq2aa6/20eDIrtKdTdBNV2v28QOh2J8SZocs5H9KzTiuPGgE0KBiKHJVQFXPi7r+2fgP +UEy0UlvQAkMYHcZLaLEe1y/QT71rKGnRGygdHDW6zf7nr8mR+5sW6Z/qaspaWo4JsrL NArmxMAJAnCNk+vRVmRDGf8uj17PMFE+bXfgGA3ukmifPQGzNrju2X5Pz84ROJvuSNgG 6las29T/sizDTj7WIlpFgTgjMWzOhFpmCEQz8PTXGrPHNzdLmae+nOzw0XPWwgDrgX6L JshA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:dkim-signature:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject; bh=iXH6BGuoOPrc5Y2F4o7qmuZpbDhOYFMuk95svGbaDhA=; b=vZRgIPFAXymqub5+1CjSH9/UBOQinv4NVMTK4gGY62mV+V1NJiGjFVQp24aDRXRBP4 n7VJAY9/w5zqSbQCu93ciSOvT0c6Thre45Grk8GOGRIGCI7f9KrQlZjQn1cYiNmrO9gp qfZHNmlSeQ218CKrDM+qR31KeAtIGTeSoJgKjuElLiIq4HAH6iegWlqMUzDhisYqj0Jn 53nO46nFFRW84qufJnmj+XbEleXtjybPV5KIJUygNLZNDTMOWmpvTErp1Cm4Ly8sC5NO T3G8kzvH0RskUJXZ6rsM1gcWpF9kw2id0SIjqr0vrl0hUO+XWJlc0mu4/h9Dr3Q9tF0A 10JA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@nvidia.com header.s=n1 header.b=j6b14bYx; 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=nvidia.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id y10si1599534ejw.185.2021.03.05.10.14.51; Fri, 05 Mar 2021 10:15:14 -0800 (PST) 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=@nvidia.com header.s=n1 header.b=j6b14bYx; 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=nvidia.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229589AbhCESNv (ORCPT + 99 others); Fri, 5 Mar 2021 13:13:51 -0500 Received: from hqnvemgate24.nvidia.com ([216.228.121.143]:6122 "EHLO hqnvemgate24.nvidia.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229446AbhCESNT (ORCPT ); Fri, 5 Mar 2021 13:13:19 -0500 Received: from hqmail.nvidia.com (Not Verified[216.228.121.13]) by hqnvemgate24.nvidia.com (using TLS: TLSv1.2, AES256-SHA) id ; Fri, 05 Mar 2021 10:13:19 -0800 Received: from [10.25.102.43] (172.20.145.6) by HQMAIL107.nvidia.com (172.20.187.13) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Fri, 5 Mar 2021 18:13:08 +0000 Subject: Re: [PATCH] PCI: tegra: Disable PTM capabilities for EP mode To: Bjorn Helgaas , Om Prakash Singh CC: , , , , , , , , , , , , , References: <20210305121934.GA1067436@bjorn-Precision-5520> From: Vidya Sagar Message-ID: <81c84df2-e52b-7713-5026-c3e0a27376bd@nvidia.com> Date: Fri, 5 Mar 2021 23:43:05 +0530 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.7.1 MIME-Version: 1.0 In-Reply-To: <20210305121934.GA1067436@bjorn-Precision-5520> Content-Type: text/plain; charset="utf-8"; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-Originating-IP: [172.20.145.6] X-ClientProxiedBy: HQMAIL107.nvidia.com (172.20.187.13) To HQMAIL107.nvidia.com (172.20.187.13) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nvidia.com; s=n1; t=1614967999; bh=iXH6BGuoOPrc5Y2F4o7qmuZpbDhOYFMuk95svGbaDhA=; h=Subject:To:CC:References:From:Message-ID:Date:User-Agent: MIME-Version:In-Reply-To:Content-Type:Content-Language: Content-Transfer-Encoding:X-Originating-IP:X-ClientProxiedBy; b=j6b14bYx8SWcuYKB4nYMCnrbfhD7TM8A7PARdKS7aVhJVDlRn1T1WeSYbjTFQGNEV nG9W45W2/T+LPXqHKcem76+9r/upO/BeP+p4H+TDJUR8NHzqNsZIo5XRttlPq/7h0I zO5rhourvYT0X1ymHx55NMTYQX9dXdRzoi16a2P18sJzEbS9B2eS7TmwQbIbTtFWFn RhJD2O7X9U4LriG0PCYnFDv9oef7DKvNVbeURSISGIJyRZBMyFjJ+Kw5SCu4Z6qurW cVpcXWvJD45DJYH02h6QRYBEYOVrE16rVNAVQvxt57ttNrELYzGwm4xB00zfp+6GMX 5k0sUveJtzZiQ== Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 3/5/2021 5:49 PM, Bjorn Helgaas wrote: > External email: Use caution opening links or attachments > > > On Fri, Mar 05, 2021 at 01:42:34PM +0530, Om Prakash Singh wrote: >> PCIe EP compliance expect PTM capabilities (ROOT_CAPABLE, RES_CAPABLE, >> CLK_GRAN) to be disabled. > > I guess this is just enforcing the PCIe spec requirements that only > Root Ports, RCRBs, and Switches are allowed to set the PTM Responder > Capable bit, and that the Local Clock Granularity is RsvdP if PTM Root > Capable is zero? (PCIe r5.0, sec 7.9.16.2) > > Should this be done more generally somewhere in the dwc code as > opposed to in the tegra code? Agree. > >> Signed-off-by: Om Prakash Singh >> --- >> drivers/pci/controller/dwc/pcie-tegra194.c | 17 ++++++++++++++++- >> include/uapi/linux/pci_regs.h | 1 + >> 2 files changed, 17 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/pci/controller/dwc/pcie-tegra194.c b/drivers/pci/controller/dwc/pcie-tegra194.c >> index 6fa216e..a588312 100644 >> --- a/drivers/pci/controller/dwc/pcie-tegra194.c >> +++ b/drivers/pci/controller/dwc/pcie-tegra194.c >> @@ -1639,7 +1639,7 @@ static void pex_ep_event_pex_rst_deassert(struct tegra_pcie_dw *pcie) >> struct dw_pcie *pci = &pcie->pci; >> struct dw_pcie_ep *ep = &pci->ep; >> struct device *dev = pcie->dev; >> - u32 val; >> + u32 val, ptm_cap_base = 0; > > Unnecessary init. > >> int ret; >> >> if (pcie->ep_state == EP_STATE_ENABLED) >> @@ -1760,6 +1760,21 @@ static void pex_ep_event_pex_rst_deassert(struct tegra_pcie_dw *pcie) >> PCI_CAP_ID_EXP); >> clk_set_rate(pcie->core_clk, GEN4_CORE_CLK_FREQ); >> >> + /* Disable PTM root and responder capability */ >> + ptm_cap_base = dw_pcie_find_ext_capability(&pcie->pci, >> + PCI_EXT_CAP_ID_PTM); >> + if (ptm_cap_base) { >> + dw_pcie_dbi_ro_wr_en(pci); >> + val = dw_pcie_readl_dbi(pci, ptm_cap_base + PCI_PTM_CAP); >> + val &= ~PCI_PTM_CAP_ROOT; >> + dw_pcie_writel_dbi(pci, ptm_cap_base + PCI_PTM_CAP, val); >> + >> + val = dw_pcie_readl_dbi(pci, ptm_cap_base + PCI_PTM_CAP); >> + val &= ~(PCI_PTM_CAP_RES | PCI_PTM_GRANULARITY_MASK); Why can't this be clubbed with "val &= ~PCI_PTM_CAP_ROOT;" ? >> + dw_pcie_writel_dbi(pci, ptm_cap_base + PCI_PTM_CAP, val); >> + dw_pcie_dbi_ro_wr_dis(pci); >> + } >> + >> val = (ep->msi_mem_phys & MSIX_ADDR_MATCH_LOW_OFF_MASK); >> val |= MSIX_ADDR_MATCH_LOW_OFF_EN; >> dw_pcie_writel_dbi(pci, MSIX_ADDR_MATCH_LOW_OFF, val); >> diff --git a/include/uapi/linux/pci_regs.h b/include/uapi/linux/pci_regs.h >> index e709ae8..9dd6f8d 100644 >> --- a/include/uapi/linux/pci_regs.h >> +++ b/include/uapi/linux/pci_regs.h >> @@ -1050,6 +1050,7 @@ >> /* Precision Time Measurement */ >> #define PCI_PTM_CAP 0x04 /* PTM Capability */ >> #define PCI_PTM_CAP_REQ 0x00000001 /* Requester capable */ >> +#define PCI_PTM_CAP_RES 0x00000002 /* Responder capable */ >> #define PCI_PTM_CAP_ROOT 0x00000004 /* Root capable */ >> #define PCI_PTM_GRANULARITY_MASK 0x0000FF00 /* Clock granularity */ >> #define PCI_PTM_CTRL 0x08 /* PTM Control */ >> -- >> 2.7.4 >>