git: ff2e2bca31a5 - stable/13 - MFC 1acf24a044aa: Implement pci_get_relaxed_ordering_enabled() helper function.
Hans Petter Selasky
hselasky at FreeBSD.org
Wed Mar 24 07:57:06 UTC 2021
The branch stable/13 has been updated by hselasky:
URL: https://cgit.FreeBSD.org/src/commit/?id=ff2e2bca31a53357e70781ab46dc63356c17ef95
commit ff2e2bca31a53357e70781ab46dc63356c17ef95
Author: Hans Petter Selasky <hselasky at FreeBSD.org>
AuthorDate: 2021-03-16 15:06:42 +0000
Commit: Hans Petter Selasky <hselasky at FreeBSD.org>
CommitDate: 2021-03-24 07:54:52 +0000
MFC 1acf24a044aa:
Implement pci_get_relaxed_ordering_enabled() helper function.
Discussed with: kib@
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 1ca128a48ad0..d85ce5baa7bc 100644
--- a/sys/dev/pci/pci.c
+++ b/sys/dev/pci/pci.c
@@ -2182,6 +2182,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 0f04ca8f623c..74aa704635f7 100644
--- a/sys/dev/pci/pcivar.h
+++ b/sys/dev/pci/pcivar.h
@@ -677,6 +677,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);
More information about the dev-commits-src-all
mailing list