freebsd-nq/sys/dev
John Baldwin 83c41143ca Reimplement how PCI-PCI bridges manage their I/O windows. Previously the
driver would verify that requests for child devices were confined to any
existing I/O windows, but the driver relied on the firmware to initialize
the windows and would never grow the windows for new requests.  Now the
driver actively manages the I/O windows.

This is implemented by allocating a bus resource for each I/O window from
the parent PCI bus and suballocating that resource to child devices.  The
suballocations are managed by creating an rman for each I/O window.  The
suballocated resources are mapped by passing the bus_activate_resource()
call up to the parent PCI bus.  Windows are grown when needed by using
bus_adjust_resource() to adjust the resource allocated from the parent PCI
bus.  If the adjust request succeeds, the window is adjusted and the
suballocation request for the child device is retried.

When growing a window, the rman_first_free_region() and
rman_last_free_region() routines are used to determine if the front or
end of the existing I/O window is free.  From using that, the smallest
ranges that need to be added to either the front or back of the window
are computed.  The driver will first try to grow the window in whichever
direction requires the smallest growth first followed by the other
direction if that fails.

Subtractive bridges will first attempt to satisfy requests for child
resources from I/O windows (including attempts to grow the windows).  If
that fails, the request is passed up to the parent PCI bus directly
however.

The PCI-PCI bridge driver will try to use firmware-assigned ranges for
child BARs first and only allocate a "fresh" range if that specific range
cannot be accommodated in the I/O window.  This allows systems where the
firmware assigns resources during boot but later wipes the I/O windows
(some ACPI BIOSen are known to do this) to "rediscover" the original I/O
window ranges.

The ACPI Host-PCI bridge driver has been adjusted to correctly honor
hw.acpi.host_mem_start and the I/O port equivalent when a PCI-PCI bridge
makes a wildcard request for an I/O window range.

The new PCI-PCI bridge driver is only enabled if the NEW_PCIB kernel option
is enabled.  This is a transition aide to allow platforms that do not
yet support bus_activate_resource() and bus_adjust_resource() in their
Host-PCI bridge drivers (and possibly other drivers as needed) to use the
old driver for now.  Once all platforms support the new driver, the
kernel option and old driver will be removed.

PR:		kern/143874 kern/149306
Tested by:	mav
2011-05-03 17:37:24 +00:00
..
aac We can pass a format string and args to panic(), so instead of using 2011-02-04 15:45:48 +00:00
acpi_support Fix a few more SYSCTL_PROC() that were missing a CTLFLAG type specifier. 2011-01-19 00:57:58 +00:00
acpica Reimplement how PCI-PCI bridges manage their I/O windows. Previously the 2011-05-03 17:37:24 +00:00
adb
adlink Remove an unnecessary INTR_MPSAFE and a comment suggesting it was 2011-01-06 21:02:14 +00:00
advansys Fix typos - remove duplicate "the". 2011-02-21 09:01:34 +00:00
ae Do a sweep of the tree replacing calls to pci_find_extcap() with calls to 2011-03-23 13:10:15 +00:00
age Partially revert r184106. RX buffer ring also needs bus_dmamap_sync(). 2011-04-01 18:53:41 +00:00
agp Do a sweep of the tree replacing calls to pci_find_extcap() with calls to 2011-03-23 13:10:15 +00:00
aha
ahb
ahci Fix some English grammar. 2011-04-19 10:57:40 +00:00
aic
aic7xxx Remove support for the Intel C Compiler from the build infrastructure. 2011-04-19 18:09:21 +00:00
alc Do a sweep of the tree replacing calls to pci_find_extcap() with calls to 2011-03-23 13:10:15 +00:00
ale Do a sweep of the tree replacing calls to pci_find_extcap() with calls to 2011-03-23 13:10:15 +00:00
amd
amdsbwd amdsbwd: fix nonsensical timeout calculations 2010-05-31 09:07:23 +00:00
amdtemp
amr Fix clang warning on empty statement. 2010-07-28 16:24:11 +00:00
an Add new tunable 'net.link.ifqmaxlen' to set default send interface 2010-05-03 07:32:50 +00:00
arcmsr Update arcmsr(4) to vendor version 1.20.00.21. This release primarily 2011-04-06 20:54:26 +00:00
asmc
asr Fix typos - remove duplicate "the". 2011-02-21 09:01:34 +00:00
ata According to ATA specifications, when ATAPI master is the only device, it 2011-04-21 20:56:34 +00:00
ath Cosmetic changes to fit 80 character screen width. 2011-04-29 16:43:30 +00:00
atkbdc Only use the BIOS-supplied IRQ for the atkbdc device for a child atkbd 2010-12-21 12:49:37 +00:00
auxio
bce Do a sweep of the tree replacing calls to pci_find_extcap() with calls to 2011-03-23 13:10:15 +00:00
bfe Convert the PHY drivers to honor the mii_flags passed down and convert 2010-10-15 14:52:11 +00:00
bge Correct spelling in comments. 2011-05-02 21:04:23 +00:00
bktr Fix typos - remove duplicate "the". 2011-02-21 09:01:34 +00:00
bm Convert the PHY drivers to honor the mii_flags passed down and convert 2010-10-15 14:52:11 +00:00
buslogic Remove some always-true comparisons. 2011-01-18 15:23:16 +00:00
bwi Pull ieee80211_ratectl_node_init() calls from drivers into net80211. 2011-01-17 20:15:15 +00:00
bwn Do a sweep of the tree replacing calls to pci_find_extcap() with calls to 2011-03-23 13:10:15 +00:00
bxe - Fixed a typo in an if() statement when setting flow control for MTU 2011-05-02 23:34:33 +00:00
cardbus Don't explicitly list pci_write_ivar() for bus_write_ivar, the method is 2011-05-02 15:01:28 +00:00
cas Correct spelling in a comment. 2011-04-22 09:44:01 +00:00
ce Revert r213793. 2010-10-13 17:38:23 +00:00
cfe Start using the 'init_static_kenv()' API provided by r198561 to initialize 2010-08-11 02:13:50 +00:00
cfi Convert Freescale PowerPC platforms to FDT convention. 2010-07-11 21:08:29 +00:00
ciss Cosmetic: make it less confusing when displaying RAID 1 level, that might 2010-10-02 08:18:19 +00:00
cm Add new tunable 'net.link.ifqmaxlen' to set default send interface 2010-05-03 07:32:50 +00:00
cmx
coretemp Correct a typo. According to Intel document 318914, the Tj(max) for Core 2 2011-05-02 18:41:54 +00:00
cp Revert r213793. 2010-10-13 17:38:23 +00:00
cpuctl
cpufreq
cs Use bus space functions rather than inw/outw 2011-01-29 00:53:58 +00:00
ct Spell "Hz" correctly wherever it is user-visible. 2010-01-12 17:59:58 +00:00
ctau Fix typos - remove duplicate "the". 2011-02-21 09:01:34 +00:00
cx Add new tunable 'net.link.ifqmaxlen' to set default send interface 2010-05-03 07:32:50 +00:00
cxgb Update T3 firmware to 7.11.0 2011-03-25 20:53:02 +00:00
cxgbe Ring the freelist doorbell from within refill_fl. While here, fix a bug 2011-04-20 23:20:00 +00:00
cy
dc Revise r220046 by introducing dc_netcfg_wait() which waits the end 2011-03-28 19:08:53 +00:00
dcons
de
digi
dpms
dpt
drm Fix display of the drm sysctls. 2011-04-23 23:11:44 +00:00
e1000 Small change to make backporting to stable/7, 2011-04-28 22:21:53 +00:00
ed sysctl(9) cleanup checkpoint: amd64 GENERIC builds cleanly. 2011-01-12 19:53:56 +00:00
eisa
en Specify a CTLTYPE_FOO so that a future sysctl(8) change does not need 2011-01-18 21:14:23 +00:00
ep Fix typos - remove duplicate "the". 2011-02-21 09:01:34 +00:00
esp Correct spelling in comments. 2011-04-22 13:56:21 +00:00
et Do a sweep of the tree replacing calls to pci_find_extcap() with calls to 2011-03-23 13:10:15 +00:00
ex Add new tunable 'net.link.ifqmaxlen' to set default send interface 2010-05-03 07:32:50 +00:00
exca
fatm Specify a CTLTYPE_FOO so that a future sysctl(8) change does not need 2011-01-18 21:14:23 +00:00
fb Use the preload_fetch_addr() and preload_fetch_size() convenience 2011-02-13 19:25:48 +00:00
fdc Fix typos - remove duplicate "the". 2011-02-21 09:01:34 +00:00
fdt Change rman_manage_region() to actually honor the rm_start and rm_end 2011-04-29 18:41:21 +00:00
fe Add new tunable 'net.link.ifqmaxlen' to set default send interface 2010-05-03 07:32:50 +00:00
firewire Allocate the DMA memory shared between the host and the controller as 2011-03-11 22:19:49 +00:00
flash Modify the spi flash driver to allow smaller read IO sizes, but enforce 2011-02-16 20:07:44 +00:00
fxp Normally fxp(4) does not receive bad frames but promiscuous mode 2011-03-28 16:58:48 +00:00
gem Correct spelling in comments. 2011-04-22 09:41:51 +00:00
glxsb
gpio Add a GPIO driver for the Gateworks Cambria platform. 2010-11-11 20:18:33 +00:00
hatm
hifn No need to zero the softc. It's allocated with M_ZERO. 2010-12-18 14:24:24 +00:00
hme Correct spelling in comments. 2011-04-22 09:39:05 +00:00
hptiop Report transport type in XPT_PATH_INQ. 2010-06-19 13:41:17 +00:00
hptmv - Merge changes to the base system to support OFED. These include 2011-03-21 09:40:01 +00:00
hptrr Pass a format string to make_dev(). 2010-10-13 14:41:52 +00:00
hwpmc Fix two aliases that had the same name but were pointing to different 2010-10-04 17:22:18 +00:00
ic Merge from projects/mips to head by hand: 2010-01-11 04:13:06 +00:00
ichsmb Support for the new Patsburg PCH chipset: 2011-02-01 01:05:11 +00:00
ichwd Add missing bit in r221015. 2011-04-25 14:12:58 +00:00
ida
ie Add new tunable 'net.link.ifqmaxlen' to set default send interface 2010-05-03 07:32:50 +00:00
ieee488 Implement more of __ibsta: END and SRQI status bits (taken out of the 2010-12-10 22:20:11 +00:00
if_ndis Revert the ndis part of r212122, windrv_stub.c already adds a MODULE_VERSION 2011-01-22 21:33:18 +00:00
iicbus There are PowerMacs which do not have a hwsensor-location property 2011-01-18 21:47:30 +00:00
iir
io - Extract the IODEV_PIO interface from ia64 and make it MI. 2010-04-28 15:38:01 +00:00
ipmi Fixed firmware revision decoding: 2011-04-14 07:14:22 +00:00
ips
ipw Enable 5.5 and 11Mbit TX rates. 2010-05-11 17:14:17 +00:00
iscsi/initiator Specify a CTLTYPE_FOO so that a future sysctl(8) change does not need 2011-01-18 21:14:23 +00:00
isp Add support QLE220 card- an 2500 lookalike. 2011-03-10 23:53:01 +00:00
ispfw Update firmware to more recent versions. 2011-01-05 23:15:22 +00:00
iwi sysctl(9) cleanup checkpoint: amd64 GENERIC builds cleanly. 2011-01-12 19:53:56 +00:00
iwn Now that all bits are in for 1030/6230 adapters enable those. 2011-04-20 17:49:05 +00:00
ixgb Fix typos - remove duplicate "the". 2011-02-21 09:01:34 +00:00
ixgbe Add a #define for driver portability to older OS 2011-04-28 23:21:40 +00:00
jme Do a sweep of the tree replacing calls to pci_find_extcap() with calls to 2011-03-23 13:10:15 +00:00
joy
kbd Explicitly tell the compiler that we don't care about the return value 2010-10-13 11:37:12 +00:00
kbdmux Explicitly tell the compiler that we don't care about the return value 2010-10-13 11:37:12 +00:00
ksyms Promote ksyms_map() and ksyms_unmap() to general facility 2011-03-28 12:48:33 +00:00
le Use convenience functions where possible instead of accessing the PCI 2010-12-18 14:21:28 +00:00
led MFgraid/head r218174: 2011-03-24 08:56:12 +00:00
lge Converted the remainder of the NIC drivers to use the mii_attach() 2010-10-15 15:00:30 +00:00
lindev
lmc Merge amd64 and i386 bus.h and move the resulting header to x86. Replace 2010-12-20 16:39:43 +00:00
malo Do a sweep of the tree replacing calls to pci_find_extcap() with calls to 2011-03-23 13:10:15 +00:00
mc146818
mca
mcd
md Implement BIO_DELETE for vnode devices by simply overwriting the deleted 2011-04-29 21:18:41 +00:00
mem Add reader/writer lock around mem_range_attr_get() and mem_range_attr_set(). 2011-01-17 22:58:28 +00:00
mfi When masking direct and processor devices during an inquiry, properly 2010-12-06 17:02:56 +00:00
mge Convert the PHY drivers to honor the mii_flags passed down and convert 2010-10-15 14:52:11 +00:00
mii Probe the PHY accompanying BCM57765. 2011-05-02 20:37:30 +00:00
mk48txx
mlx
mly MFp4: Large set of CAM inprovements. 2010-01-28 08:41:30 +00:00
mmc Fix 32bit bit fields handling. This fixes card serial number fetching. 2011-01-17 19:31:34 +00:00
mn
mps Silence 'out of chain frames' warnings and bump the number of frames. 2011-02-25 17:30:25 +00:00
mpt Correct spelling. 2011-04-22 09:59:16 +00:00
mse
msk When msk_detach() is called from msk_attach(), ifp may be 2011-04-25 04:55:50 +00:00
mvs Fix some English grammar. 2011-04-19 10:57:40 +00:00
mwl Revert r220907 and r220915. 2011-04-22 00:44:27 +00:00
mxge Fix a bug in mxge's LRO which can cause dup acks to 2011-04-07 13:49:44 +00:00
my Add new tunable 'net.link.ifqmaxlen' to set default send interface 2010-05-03 07:32:50 +00:00
ncv
nfe Do a sweep of the tree replacing calls to pci_find_extcap() with calls to 2011-03-23 13:10:15 +00:00
nge Do a sweep of the tree replacing calls to pci_find_extcap() with calls to 2011-03-23 13:10:15 +00:00
nmdm
nsp
null Mark /dev/zero and /dev/null as eternal. 2010-08-06 09:47:48 +00:00
nve Converted the remainder of the NIC drivers to use the mii_attach() 2010-10-15 15:00:30 +00:00
nvram
nvram2env Import nvram2env, a device driver which imports various NVRAM-style 2011-04-03 11:55:48 +00:00
nxge Fix typos - remove duplicate "the". 2011-02-21 09:01:34 +00:00
ofw Return IEEE 1275 compliant error codes. 2010-11-11 13:42:46 +00:00
patm Fix a few more SYSCTL_PROC() that were missing a CTLFLAG type specifier. 2011-01-19 00:57:58 +00:00
pbio
pccard Fix typos. 2010-11-09 10:59:09 +00:00
pccbb sysctl(9) cleanup checkpoint: amd64 GENERIC builds cleanly. 2011-01-12 19:53:56 +00:00
pcf
pci Reimplement how PCI-PCI bridges manage their I/O windows. Previously the 2011-05-03 17:37:24 +00:00
pcn Convert the PHY drivers to honor the mii_flags passed down and convert 2010-10-15 14:52:11 +00:00
pdq Add new tunable 'net.link.ifqmaxlen' to set default send interface 2010-05-03 07:32:50 +00:00
powermac_nvram Add support for the Sharp/Micron flash chips to powermac_mvram(4). 2010-09-05 20:04:02 +00:00
ppbus bus_add_child: change type of order parameter to u_int 2010-09-10 11:19:03 +00:00
ppc - Add support for MosChip 9865 Single 1284 Printer port 2011-02-19 17:38:51 +00:00
pst
pty Finish r210923, 210926. Mark some devices as eternal. 2011-01-04 10:59:38 +00:00
puc Add an entry for the Kuroutoshikou SERIAL4P-LPPCI2 which uses an Oxford 2011-05-02 14:34:03 +00:00
quicc Convert Freescale PowerPC platforms to FDT convention. 2010-07-11 21:08:29 +00:00
ral Don't hardcode assumptions about basic rates, similar to what the rt2661 2011-04-09 14:45:50 +00:00
random Fix typos - remove duplicate "the". 2011-02-21 09:01:34 +00:00
rc
re Do a sweep of the tree replacing calls to pci_find_extcap() with calls to 2011-03-23 13:10:15 +00:00
rndtest
rp
safe
sbni Add new tunable 'net.link.ifqmaxlen' to set default send interface 2010-05-03 07:32:50 +00:00
scc
scd
sdhci Force DMA for controller found in Lenovo T510 (probably in others too). 2011-02-27 13:58:20 +00:00
sec Convert Freescale PowerPC platforms to FDT convention. 2010-07-11 21:08:29 +00:00
sf Converted the remainder of the NIC drivers to use the mii_attach() 2010-10-15 15:00:30 +00:00
sge Converted the remainder of the NIC drivers to use the mii_attach() 2010-10-15 15:00:30 +00:00
si
siba Do a sweep of the tree replacing calls to pci_find_extcap() with calls to 2011-03-23 13:10:15 +00:00
siis Fix some English grammar. 2011-04-19 10:57:40 +00:00
sio Based on discussions on the svn-src mailing list, rework r218195: 2011-02-08 00:16:36 +00:00
sis Do a sweep of the tree replacing calls to pci_find_extcap() with calls to 2011-03-23 13:10:15 +00:00
sk Allocate the DMA memory shared between the host and the controller as 2011-03-11 22:21:12 +00:00
smbus
smc Converted the remainder of the NIC drivers to use the mii_attach() 2010-10-15 15:00:30 +00:00
sn Add new tunable 'net.link.ifqmaxlen' to set default send interface 2010-05-03 07:32:50 +00:00
snc Add new tunable 'net.link.ifqmaxlen' to set default send interface 2010-05-03 07:32:50 +00:00
snp
sound SNDCTL_DSP_GETIPTR: set pointer to sndbuf_getfreeptr() 2011-05-03 15:50:22 +00:00
speaker
spibus bus_add_child: change type of order parameter to u_int 2010-09-10 11:19:03 +00:00
ste Do a sweep of the tree replacing calls to pci_find_extcap() with calls to 2011-03-23 13:10:15 +00:00
stg
stge Allocate the DMA memory shared between the host and the controller as 2011-03-11 22:23:46 +00:00
streams After the r219999 is merged to stable/8, rename fallocf(9) to falloc(9) 2011-04-01 13:28:34 +00:00
sym More spelling fixes. 2011-04-22 12:46:39 +00:00
syscons Rename a variable to match scvidctl.c. 2010-11-30 17:34:15 +00:00
tdfx Remove references to MAKEDEV(8) 2010-11-15 05:25:51 +00:00
ti - Allocate the DMA memory shared between the host and the controller as 2011-03-11 22:32:17 +00:00
tl - Add IFM_10_2 and IFM_10_5 media via tlphy(4) only in case the respective 2010-10-24 12:51:02 +00:00
tpm Add tpm(4) driver for Trusted Platform Module. 2010-08-12 00:16:18 +00:00
trm MFp4: Large set of CAM inprovements. 2010-01-28 08:41:30 +00:00
tsec Don't use the MAC address in the device tree if it's all zeroes 2011-01-28 23:40:13 +00:00
twa Fix a compile problem introduced with r212008 on 32bit: 2010-09-04 16:27:14 +00:00
twe
tx Converted the remainder of the NIC drivers to use the mii_attach() 2010-10-15 15:00:30 +00:00
txp Do a sweep of the tree replacing calls to pci_find_extcap() with calls to 2011-03-23 13:10:15 +00:00
uart Fix typos - remove duplicate "the". 2011-02-21 09:01:34 +00:00
ubsec Cast the bus_size_t to a intmax_t rather than assuming type-punning to 2010-03-29 17:26:24 +00:00
usb Guard against default ni_chan 2011-04-29 06:28:29 +00:00
utopia
vge Do a sweep of the tree replacing calls to pci_find_extcap() with calls to 2011-03-23 13:10:15 +00:00
vkbd
vr Do a sweep of the tree replacing calls to pci_find_extcap() with calls to 2011-03-23 13:10:15 +00:00
vte Remove unused DMA map/tag in softc. 2011-03-23 22:06:09 +00:00
vx Fix typos - remove duplicate "the". 2011-02-21 09:01:34 +00:00
vxge Add in support for multicast. 2011-05-03 15:58:24 +00:00
watchdog - Add the possibility to reuse the already last used timeout when patting 2011-04-27 16:43:03 +00:00
wb Fix indentation in r213894. 2010-11-07 12:29:26 +00:00
wds
wi sysctl(8) should use the CTLTYPE to determine the type of data when 2011-01-19 17:04:07 +00:00
wl Add new tunable 'net.link.ifqmaxlen' to set default send interface 2010-05-03 07:32:50 +00:00
wpi No need for htole32(), which is an uint8_t. 2011-05-01 18:41:57 +00:00
xe Add new tunable 'net.link.ifqmaxlen' to set default send interface 2010-05-03 07:32:50 +00:00
xen Make various (pseudo) interfaces compile without INET in the kernel 2011-04-27 19:30:44 +00:00
xl Do a sweep of the tree replacing calls to pci_find_extcap() with calls to 2011-03-23 13:10:15 +00:00