Page MenuHomeFreeBSD

Command-Line Input

Authored By
jhb
Feb 9 2024, 1:37 AM
Size
902 B
Referenced Files
None
Subscribers
None

Command-Line Input

diff --git a/sys/dev/pci/pci_pci.c b/sys/dev/pci/pci_pci.c
index 6ef04251cd74..a6035b8cd8b6 100644
--- a/sys/dev/pci/pci_pci.c
+++ b/sys/dev/pci/pci_pci.c
@@ -436,6 +436,20 @@ pcib_alloc_window(struct pcib_softc *sc, struct pcib_window *w, int type,
if (!pcib_is_window_open(w))
return;
+ /*
+ * Assume that a window where both the base and limit read as
+ * zero is not really open, or at least not assigned a valid
+ * range by the firmware. If devices behind this bridge have
+ * firmware-assigned resources in this range then the window
+ * will be allocated on-demand.
+ */
+ if (w->base == 0 && w->limit == (pci_addr_t)1 << w->step) {
+ w->base = max_address;
+ w->limit = 0;
+ pcib_write_windows(sc, w->mask);
+ return;
+ }
+
if (w->base > max_address || w->limit > max_address) {
device_printf(sc->dev,
"initial %s window has too many bits, ignoring\n", w->name);

File Metadata

Mime Type
text/plain; charset=utf-8
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
7790485
Default Alt Text
Command-Line Input (902 B)

Event Timeline