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
..
2013-04-14 09:55:48 +00:00
2013-04-30 18:29:05 +00:00
2013-04-14 09:55:48 +00:00
2013-04-02 00:57:54 +00:00
2013-04-30 18:48:11 +00:00
2013-02-19 18:22:25 +00:00
2013-04-23 18:30:33 +00:00
2013-04-14 09:55:48 +00:00
2012-11-23 19:20:38 +00:00
2013-04-14 09:55:48 +00:00
2013-04-28 20:55:45 +00:00
2013-03-01 01:42:31 +00:00
2013-04-14 09:55:48 +00:00
2013-05-02 01:36:52 +00:00
2013-02-19 19:25:50 +00:00
2013-04-14 09:55:48 +00:00
2013-04-14 09:55:48 +00:00
2013-05-03 10:37:59 +00:00
2013-05-02 16:01:04 +00:00
2013-02-21 12:40:52 +00:00
2013-04-14 09:55:48 +00:00
2013-04-14 09:55:48 +00:00
2013-05-03 13:33:36 +00:00
2013-04-14 09:55:48 +00:00
2013-04-17 11:56:11 +00:00