Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp2717748yba; Mon, 6 May 2019 10:25:35 -0700 (PDT) X-Google-Smtp-Source: APXvYqwZteRpH7/XzhZ2hmYES9Fx9Qx7H6/TWpvT0Y2s+a5pS55mVGeZgLAw9tKg1sS6iDwkjkUo X-Received: by 2002:a62:a503:: with SMTP id v3mr35102838pfm.32.1557163535565; Mon, 06 May 2019 10:25:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1557163535; cv=none; d=google.com; s=arc-20160816; b=dfGQy+tfcZTeNxlHULArFBCl0k/gaDcuT/FSHnFdu9A/Mpt/4U0GMckZ9xVU54HNo8 undu4Bg9ce6UfLkvysB/niIYb8bn5wB9F3qQ1ywI11N9ChnKbyCbvSBjrpLkegsd2nRH I+iVIZ0A5yTbx4dBPnGzsvR94PndXW83vGDy/dG2v8B2TNp8K3St+VCofZGPYmUCBUzj ezr6vafdxveuumD5B+OQoAOCU2VyV1YPGhi0MMqBMqyzdf/VjBu068bmf7lAbDml20Kk CDOaLeWKiKYD0Ig78eX0vHRkv9X3c8HYSsWqba3f/ej0ErTRE+EwL+6NTHmOCiPahQyp yiAQ== 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; bh=8b8WOjVgGjJzAZJOHRVzXsY/pYTHeZgi3g5NkJMn+fo=; b=bT8etEyye+X2SiawO50lit9X1NkmsnmggWh/q72JdUpWLknzTx1txlPrcz3E+I0adv 9KrXRX8XnsLCbGxROI64ejux6FurVDPrWucLLnFtURd0TvlYZkhaHtz0gxJYSnvsY0LU QVXYXHFrlYytZ01Ey0aJp2KBgj/+futAjicGps7ppu9bd3E/7xGrSQ5i3y9KY+OAjHY5 LfiOSSHP5kG7uC2Q6vY1eDB+xyra0sa09xXrLkoyYpc5+Fa5FnSVcKstDJGtbpxov3n6 3tyz9HGRFlBmwy5KOwk7+SlqNWesJbFH8zk3DOY1X8i/ybGjPGFd3rtNnRiarxhfaHGK DSuA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id t1si2064539pgh.406.2019.05.06.10.25.18; Mon, 06 May 2019 10:25:35 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727117AbfEFRWl (ORCPT + 99 others); Mon, 6 May 2019 13:22:41 -0400 Received: from mga07.intel.com ([134.134.136.100]:31139 "EHLO mga07.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726407AbfEFRWR (ORCPT ); Mon, 6 May 2019 13:22:17 -0400 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga105.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 06 May 2019 10:22:16 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.60,438,1549958400"; d="scan'208";a="230014475" Received: from skuppusw-desk.jf.intel.com ([10.54.74.33]) by orsmga001.jf.intel.com with ESMTP; 06 May 2019 10:22:15 -0700 From: sathyanarayanan.kuppuswamy@linux.intel.com To: bhelgaas@google.com Cc: linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, ashok.raj@intel.com, keith.busch@intel.com, sathyanarayanan.kuppuswamy@linux.intel.com Subject: [PATCH v2 4/5] PCI/ATS: Disable PF/VF ATS service independently Date: Mon, 6 May 2019 10:20:06 -0700 Message-Id: X-Mailer: git-send-email 2.20.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Kuppuswamy Sathyanarayanan Currently all VF's needs to be disable their ATS service before disabling the ATS service in corresponding PF device. But this logic is incorrect and does not align with the spec. Also it might lead to some power and performance impact in the system. As per PCIe spec r4.0, sec 9.3.7.8, ATS Capabilities in VFs and their associated PFs may be enabled/disabled independently. So remove this dependency logic in enable/disable code. Cc: Ashok Raj Cc: Keith Busch Suggested-by: Ashok Raj Signed-off-by: Kuppuswamy Sathyanarayanan --- drivers/pci/ats.c | 11 ----------- include/linux/pci.h | 1 - 2 files changed, 12 deletions(-) diff --git a/drivers/pci/ats.c b/drivers/pci/ats.c index 718e6f414680..977f5a1ace40 100644 --- a/drivers/pci/ats.c +++ b/drivers/pci/ats.c @@ -72,8 +72,6 @@ int pci_enable_ats(struct pci_dev *dev, int ps) pdev = pci_physfn(dev); if (pdev->ats_stu != ps) return -EINVAL; - - atomic_inc(&pdev->ats_ref_cnt); /* count enabled VFs */ } else { dev->ats_stu = ps; ctrl |= PCI_ATS_CTRL_STU(dev->ats_stu - PCI_ATS_MIN_STU); @@ -91,20 +89,11 @@ EXPORT_SYMBOL_GPL(pci_enable_ats); */ void pci_disable_ats(struct pci_dev *dev) { - struct pci_dev *pdev; u16 ctrl; if (WARN_ON(!dev->ats_enabled)) return; - if (atomic_read(&dev->ats_ref_cnt)) - return; /* VFs still enabled */ - - if (dev->is_virtfn) { - pdev = pci_physfn(dev); - atomic_dec(&pdev->ats_ref_cnt); - } - pci_read_config_word(dev, dev->ats_cap + PCI_ATS_CTRL, &ctrl); ctrl &= ~PCI_ATS_CTRL_ENABLE; pci_write_config_word(dev, dev->ats_cap + PCI_ATS_CTRL, ctrl); diff --git a/include/linux/pci.h b/include/linux/pci.h index 2a761ea63f8d..c38cbf8fa03b 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h @@ -446,7 +446,6 @@ struct pci_dev { }; u16 ats_cap; /* ATS Capability offset */ u8 ats_stu; /* ATS Smallest Translation Unit */ - atomic_t ats_ref_cnt; /* Number of VFs with ATS enabled */ #endif #ifdef CONFIG_PCI_PRI u32 pri_reqs_alloc; /* Number of PRI requests allocated */ -- 2.20.1