Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 24 Mar 2021 08:00:49 GMT
From:      Hans Petter Selasky <hselasky@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
Subject:   git: 7cf565b2c5f0 - stable/12 - Implement pci_get_relaxed_ordering_enabled() helper function.
Message-ID:  <202103240800.12O80nWR059797@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch stable/12 has been updated by hselasky:

URL: https://cgit.FreeBSD.org/src/commit/?id=7cf565b2c5f0ed90eecd52b0fde8b81b746d662e

commit 7cf565b2c5f0ed90eecd52b0fde8b81b746d662e
Author:     Hans Petter Selasky <hselasky@FreeBSD.org>
AuthorDate: 2021-03-16 15:06:42 +0000
Commit:     Hans Petter Selasky <hselasky@FreeBSD.org>
CommitDate: 2021-03-24 07:59:58 +0000

    Implement pci_get_relaxed_ordering_enabled() helper function.
    
    Discussed with: kib@
    MFC after:      1 week
    Sponsored by:   Mellanox Technologies // NVIDIA Networking
    
    (cherry picked from commit 1acf24a044aaa0391c61af4abe7e018c3bf8a37c)
---
 sys/dev/pci/pci.c    | 15 +++++++++++++++
 sys/dev/pci/pcivar.h |  1 +
 2 files changed, 16 insertions(+)

diff --git a/sys/dev/pci/pci.c b/sys/dev/pci/pci.c
index 644336562a3b..f3a0309c5202 100644
--- a/sys/dev/pci/pci.c
+++ b/sys/dev/pci/pci.c
@@ -2160,6 +2160,21 @@ pci_ht_map_msi(device_t dev, uint64_t addr)
 	}
 }
 
+int
+pci_get_relaxed_ordering_enabled(device_t dev)
+{
+	struct pci_devinfo *dinfo = device_get_ivars(dev);
+	int cap;
+	uint16_t val;
+
+	cap = dinfo->cfg.pcie.pcie_location;
+	if (cap == 0)
+		return (0);
+	val = pci_read_config(dev, cap + PCIER_DEVICE_CTL, 2);
+	val &= PCIEM_CTL_RELAXED_ORD_ENABLE;
+	return (val != 0);
+}
+
 int
 pci_get_max_payload(device_t dev)
 {
diff --git a/sys/dev/pci/pcivar.h b/sys/dev/pci/pcivar.h
index 65f37a85edd7..b3126ad8dc51 100644
--- a/sys/dev/pci/pcivar.h
+++ b/sys/dev/pci/pcivar.h
@@ -670,6 +670,7 @@ int	pci_msix_device_blacklisted(device_t dev);
 void	pci_ht_map_msi(device_t dev, uint64_t addr);
 
 device_t pci_find_pcie_root_port(device_t dev);
+int	pci_get_relaxed_ordering_enabled(device_t dev);
 int	pci_get_max_payload(device_t dev);
 int	pci_get_max_read_req(device_t dev);
 void	pci_restore_state(device_t dev);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202103240800.12O80nWR059797>