1
0
mirror of https://git.FreeBSD.org/src.git synced 2025-01-21 15:45:02 +00:00
freebsd/sys/dev/pci
John Baldwin 5569a8b8df Revision 233677 broke certain machines. Specifically, if the firmware/BIOS
assigned conflicting ranges to BARs then leaving the BARs alone could
result in one device stealing mmio accesses intended to go to a second
device.  Prior to 233677 the PCI bus driver attempted to handle this case
by clearing the BAR to 0 depending on BARs based at 0 not decoding (which
is not guaranteed to be true).  Now when a conflicting BAR is detected the
following steps are taken:

 1) If hw.pci.realloc_bars (a new tunable) is enabled (default is enabled),
    then ignore the current BAR setting from the firmware and attempt to
    allocate a fresh resource range for the BAR.

 2) If 1) failed (or was disabled), disable decoding for the relevant
    BAR type (e.g. disable mem decoding for a memory BAR) and emit a
    warning if booting verbose.

Tested by:	Alex Keda <admin@lissyara.su>
MFC after:	1 week
2013-05-09 19:24:50 +00:00
..
eisa_pci.c
fixup_pci.c
hostb_pci.c
ignore_pci.c
isa_pci.c
pci_if.m
pci_pci.c
pci_private.h
pci_subr.c
pci_user.c Always initialize pattern_buf pointers to NULL, otherwise AMD64 machine 2012-12-26 13:07:17 +00:00
pci.c Revision 233677 broke certain machines. Specifically, if the firmware/BIOS 2013-05-09 19:24:50 +00:00
pcib_if.m
pcib_private.h
pcireg.h Add missing Extended Capability ID Numbers from PCIe 3.0. 2012-10-19 23:10:55 +00:00
pcivar.h
vga_pci.c Usnure that PCI bus BIS_GET_DMA_TAG() method sees the actual PCI 2013-04-14 14:02:34 +00:00