diff --git a/sys/dev/pci/pci_pci.c b/sys/dev/pci/pci_pci.c index 6ef04251cd74..b3f82acfe350 100644 --- a/sys/dev/pci/pci_pci.c +++ b/sys/dev/pci/pci_pci.c @@ -436,6 +436,15 @@ pcib_alloc_window(struct pcib_softc *sc, struct pcib_window *w, int type, if (!pcib_is_window_open(w)) return; +#ifndef __PCI_BAR_ZERO_VALID + if (w->base == 0) { + w->base = max_address; + w->limit = 0; + pcib_write_windows(sc, w->mask); + return; + } +#endif + if (w->base > max_address || w->limit > max_address) { device_printf(sc->dev, "initial %s window has too many bits, ignoring\n", w->name);