aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/pci
diff options
context:
space:
mode:
authorWojciech Macek <wma@FreeBSD.org>2021-04-09 07:28:44 +0000
committerMarcin Wojtas <mw@FreeBSD.org>2021-10-14 16:09:44 +0000
commit8f2e39b9d3ecbd9653f859d9261745059f2b9071 (patch)
treecc959141ae01e3cc23992edd2b128d12691afda6 /sys/dev/pci
parentcdc3dfd02544117b3fc13c629cf7a8a70769687b (diff)
Diffstat (limited to 'sys/dev/pci')
-rw-r--r--sys/dev/pci/pci_dw.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/sys/dev/pci/pci_dw.c b/sys/dev/pci/pci_dw.c
index 904e36caff20..973a56239473 100644
--- a/sys/dev/pci/pci_dw.c
+++ b/sys/dev/pci/pci_dw.c
@@ -350,6 +350,18 @@ pci_dw_decode_ranges(struct pci_dw_softc *sc, struct ofw_pci_range *ranges,
" Not all required ranges are found in DT\n");
return (ENXIO);
}
+ if (sc->io_range.size > UINT32_MAX) {
+ device_printf(sc->dev,
+ "ATU IO window size is too large. Up to 4GB windows "
+ "are supported, trimming window size to 4GB\n");
+ sc->io_range.size = UINT32_MAX;
+ }
+ if (sc->mem_range.size > UINT32_MAX) {
+ device_printf(sc->dev,
+ "ATU MEM window size is too large. Up to 4GB windows "
+ "are supported, trimming window size to 4GB\n");
+ sc->mem_range.size = UINT32_MAX;
+ }
return (0);
}