#
cfdfd32d |
| 26-Jun-2011 |
Attilio Rao <attilio@FreeBSD.org> |
MFC
|
#
0dbe859d |
| 24-Jun-2011 |
John Baldwin <jhb@FreeBSD.org> |
Split out host_pcib_get_busno() from the generic PCI-PCI bridge driver to start a new file that will hold utility APIs used by various Host-PCI bridge drivers and drivers that provide PCI domains.
|
#
b8764e51 |
| 13-Jun-2011 |
Attilio Rao <attilio@FreeBSD.org> |
MFC
|
#
a49dcb46 |
| 10-Jun-2011 |
John Baldwin <jhb@FreeBSD.org> |
Fix some off-by-one errors with the ending address of candidate regions when attempting to grow a window.
|
#
94ebcddd |
| 03-May-2011 |
Attilio Rao <attilio@FreeBSD.org> |
MFC
|
#
83c41143 |
| 03-May-2011 |
John Baldwin <jhb@FreeBSD.org> |
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 f
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
show more ...
|
#
7be8a2de |
| 02-May-2011 |
Attilio Rao <attilio@FreeBSD.org> |
MFC @ r221324
|
#
d2c9344f |
| 02-May-2011 |
John Baldwin <jhb@FreeBSD.org> |
Add implementations of BUS_ADJUST_RESOURCE() to the PCI bus driver, generic PCI-PCI bridge driver, x86 nexus driver, and x86 Host to PCI bridge drivers.
|
Revision tags: release/7.4.0_cvs, release/8.2.0_cvs, release/7.4.0, release/8.2.0 |
|
#
0c21a60c |
| 05-Dec-2010 |
Marcel Moolenaar <marcel@FreeBSD.org> |
svn+ssh://svn.freebsd.org/base/head@216199
|
#
1e7a698a |
| 25-Nov-2010 |
Dimitry Andric <dim@FreeBSD.org> |
Sync: merge r215709 through r215824 from ^/head.
|
#
9d763248 |
| 25-Nov-2010 |
John Baldwin <jhb@FreeBSD.org> |
Add device IDs for two more ServerWorks Host-PCI bridges so that we can read their starting PCI bus number for older systems that do not support ACPI (or have a broken _BBN method).
PR: kern/148108
Add device IDs for two more ServerWorks Host-PCI bridges so that we can read their starting PCI bus number for older systems that do not support ACPI (or have a broken _BBN method).
PR: kern/148108 MFC after: 1 week
show more ...
|
#
6f3544cd |
| 26-Oct-2010 |
Marcel Moolenaar <marcel@FreeBSD.org> |
Merge svn+ssh://svn.freebsd.org/base/head@214309
|
#
19fe8e84 |
| 22-Oct-2010 |
Dimitry Andric <dim@FreeBSD.org> |
Sync: merge r214077 through r214219 from ^/head.
|
#
f3e0b109 |
| 20-Oct-2010 |
Jung-uk Kim <jkim@FreeBSD.org> |
Introduce a new tunable 'hw.pci.do_power_suspend'. This tunable lets you avoid PCI power state transition from D0 to D3 for suspending case. Default is 1 or enabled.
|
#
347263c9 |
| 20-Oct-2010 |
Jung-uk Kim <jkim@FreeBSD.org> |
Do not apply do_power_resume for suspending P2P bridge as we did in r214064.
|
#
62508c53 |
| 17-Aug-2010 |
John Baldwin <jhb@FreeBSD.org> |
Add a new method to the PCI bridge interface, PCIB_POWER_FOR_SLEEP(). This method is used by the PCI bus driver to query the power management system to determine the proper device state to be used f
Add a new method to the PCI bridge interface, PCIB_POWER_FOR_SLEEP(). This method is used by the PCI bus driver to query the power management system to determine the proper device state to be used for a device during suspend and resume. For the ACPI PCI bridge drivers this calls acpi_device_pwr_for_sleep(). This removes ACPI-specific knowledge from the PCI and PCI-PCI bridge drivers.
Reviewed by: jkim
show more ...
|
Revision tags: release/8.1.0_cvs, release/8.1.0, release/7.3.0_cvs, release/7.3.0 |
|
#
1a0fda2b |
| 04-Mar-2010 |
Dag-Erling Smørgrav <des@FreeBSD.org> |
IFH@204581
|
#
9199c09a |
| 06-Jan-2010 |
Warner Losh <imp@FreeBSD.org> |
Merge from head at r201628.
# This hasn't been tested, and there are at least three bad commits # that need to be backed out before the branch will be stable again.
|
#
e36af292 |
| 10-Dec-2009 |
Jung-uk Kim <jkim@FreeBSD.org> |
Implement a rudimentary suspend/resume methods for PCI P2P bridge.
Reviewed by: jhb, imp
|
Revision tags: release/8.0.0_cvs, release/8.0.0 |
|
#
10b3b545 |
| 17-Sep-2009 |
Dag-Erling Smørgrav <des@FreeBSD.org> |
Merge from head
|
#
89c81b88 |
| 21-May-2009 |
Warner Losh <imp@FreeBSD.org> |
Revert junk from last commit. These are WIP and not ready (and don't match the description of the last commit).
|
#
00b4e54a |
| 20-May-2009 |
Warner Losh <imp@FreeBSD.org> |
We no longer need to use d_thread_t, migrate to struct thread *.
|
Revision tags: release/7.2.0_cvs, release/7.2.0 |
|
#
9c797940 |
| 13-Apr-2009 |
Oleksandr Tymoshenko <gonzo@FreeBSD.org> |
- Merge from HEAD
|
#
9dffe835 |
| 15-Mar-2009 |
Warner Losh <imp@FreeBSD.org> |
Don't adjust ranges at all for subtractive bridges. The simple-minded stuff we're doing is too simple-minded, so back it out for now.
|
#
795dceff |
| 14-Mar-2009 |
Warner Losh <imp@FreeBSD.org> |
Two fixes: (1) Fix pcib_read/write_config prototypes. (2) When contrainting a resource request for a 'subtractive' bridge, it is important to select a range outside the base/limit registers,
Two fixes: (1) Fix pcib_read/write_config prototypes. (2) When contrainting a resource request for a 'subtractive' bridge, it is important to select a range outside the base/limit registers, since those are the only values known to not possibly work. On my HP laptop, the base bridge excludes I/O ports 0xa000-0xafff, however that was the range we were passing up the tree. Instead, when a range spans the "hole" we now arbitrarily pick the range just above the hole to allocate from.
All of my rl and xl cards, at a minimum, started working again on this laptop with those fixes.
show more ...
|