#
eb5cbaa0 |
| 01-Nov-2007 |
Ed Maste <emaste@FreeBSD.org> |
Rework aac locking for MPSAFE CAM. This fixes a Giant mutex assertion reported on freebsd-current [1].
Also dequeue all events in aac_release_command (instead of just one) so that there's no risk o
Rework aac locking for MPSAFE CAM. This fixes a Giant mutex assertion reported on freebsd-current [1].
Also dequeue all events in aac_release_command (instead of just one) so that there's no risk of them getting stranded.
Reported by: Steven Brown [1] Submitted by: scottl@
[1] http://lists.freebsd.org/pipermail/freebsd-current/2007-October/077928.html
show more ...
|
#
b50569b7 |
| 17-Jun-2007 |
Scott Long <scottl@FreeBSD.org> |
Prepare for future integration between CAM and newbus. xpt_bus_register now takes a device_t to be the parent of the bus that is being created. Most SIMs have been updated with a reasonable argument
Prepare for future integration between CAM and newbus. xpt_bus_register now takes a device_t to be the parent of the bus that is being created. Most SIMs have been updated with a reasonable argument, but a few exceptions just pass NULL for now. This argument isn't used yet and the newbus integration likely won't be ready until after 7.0-RELEASE.
show more ...
|
#
2b83592f |
| 15-Apr-2007 |
Scott Long <scottl@FreeBSD.org> |
Remove Giant from CAM. Drivers (SIMs) now register a mutex that CAM will use to synchornize and protect all data objects that are used for that SIM. Drivers that are not yet MPSAFE register Giant a
Remove Giant from CAM. Drivers (SIMs) now register a mutex that CAM will use to synchornize and protect all data objects that are used for that SIM. Drivers that are not yet MPSAFE register Giant and operate as usual. RIght now, no drivers are MPSAFE, though a few will be changed in the coming week as this work settles down.
The driver API has changed, so all CAM drivers will need to be recompiled. The userland API has not changed, so tools like camcontrol do not need to be recompiled.
show more ...
|
#
df8ed58d |
| 15-Jan-2007 |
Scott Long <scottl@FreeBSD.org> |
Add a missing mutex unlock to an error path.
Submitted by: Yuxiang Luo PR: 107943
|
Revision tags: release/6.2.0_cvs, release/6.2.0 |
|
#
bd3fd815 |
| 02-Nov-2006 |
Matt Jacob <mjacob@FreeBSD.org> |
2nd and final commit that moves us to CAM_NEW_TRAN_CODE as the default.
Reviewed by multitudes.
|
#
fa9ed865 |
| 31-Oct-2006 |
Matt Jacob <mjacob@FreeBSD.org> |
The first of 3 major steps to move the CAM layer forward to using the CAM_NEW_TRAN_CODE that has been in the tree for some years now.
This first step consists solely of adding to or correcting CAM_N
The first of 3 major steps to move the CAM layer forward to using the CAM_NEW_TRAN_CODE that has been in the tree for some years now.
This first step consists solely of adding to or correcting CAM_NEW_TRAN_CODE pieces in the kernel source tree such that a both a GENERIC (at least on i386) and a LINT build with CAM_NEW_TRAN_CODE as an option will compile correctly and run (at least with some the h/w I have).
After a short settle time, the other pieces (making CAM_NEW_TRAN_CODE the default and updating libcam and camcontrol) will be brought in.
This will be an incompatible change in that the size of structures related to XPT_PATH_INQ and XPT_{GET,SET}_TRAN_SETTINGS change in both size and content. However, basic system operation and basic system utilities work well enough with this change.
Reviewed by: freebsd-scsi and specific stakeholders
show more ...
|
#
cf82f200 |
| 14-Jul-2006 |
Xin LI <delphij@FreeBSD.org> |
Unlock aac_io_lock before returning, thus eliminates a mutex leak.
Submitted by: Beyond Luo <fedora ercist iscas ac cn> PR: kern/100046 Reviewed by: scottl
|
Revision tags: release/5.5.0_cvs, release/5.5.0, release/6.1.0_cvs, release/6.1.0, release/6.0.0_cvs, release/6.0.0 |
|
#
7cb209f5 |
| 08-Oct-2005 |
Scott Long <scottl@FreeBSD.org> |
Mega Update to the aac driver to support a whole new family of cards and the modified interface that they use. Changes include:
- Register a different interrupt handler for the new interface. This
Mega Update to the aac driver to support a whole new family of cards and the modified interface that they use. Changes include:
- Register a different interrupt handler for the new interface. This one is INTR_MPSAFE, not INTR_FAST, and directly processes completions and AIFs. - Add an event registration and callback mechanism for the ioctl and CAM modules can know when a resource shortage clears. This condition was previously fatal in CAM due to programming oversights. - Fix locking to play better with newbus. - Provide access methods for talking to cards with the NEWCOMM interface. - Fix up the CAM module to be better suited for dealing with newer firmware on the PERC Si/Di series that requires talking to plain SCSI via aac. - Add a whole slew of new PCI Id's.
Thanks to Adaptec for providing an initial version of this work and for answering countless questions about it. There are still some rough edges in this, but it works well enough to commit and test for now.
Obtained from: Adaptec, Inc.
show more ...
|
#
552d3432 |
| 14-Sep-2005 |
Scott Long <scottl@FreeBSD.org> |
Bring aac_cam into line with using time_uptime instead of time_second.
|
Revision tags: release/5.4.0_cvs, release/5.4.0 |
|
#
29c711f0 |
| 09-Feb-2005 |
Scott Long <scottl@FreeBSD.org> |
Remove the messy locking dance around xpt_done()
|
Revision tags: release/4.11.0_cvs, release/4.11.0 |
|
#
098ca2bd |
| 06-Jan-2005 |
Warner Losh <imp@FreeBSD.org> |
Start each of the license/copyright comments with /*-, minor shuffle of lines
|
#
0b0594cd |
| 09-Dec-2004 |
Scott Long <scottl@FreeBSD.org> |
Complete the repo-copy of aac_ioctl.h from sys/dev/aac/to sys/sys.
|
Revision tags: release/5.3.0_cvs, release/5.3.0 |
|
#
bb6fe253 |
| 12-Aug-2004 |
Scott Long <scottl@FreeBSD.org> |
Remove the AAC_LOCK macros. They no longer abstract anything and only obfuscate the code. No functional differences.
|
#
03b5fe51 |
| 02-Jun-2004 |
Scott Long <scottl@FreeBSD.org> |
Collapse sync fib locking into normal i/o locking. The former didn't protect the registers so it was trivially possible for a sync command and i/o command to fight each other and confuse the control
Collapse sync fib locking into normal i/o locking. The former didn't protect the registers so it was trivially possible for a sync command and i/o command to fight each other and confuse the controller. Make the sync fib alloc/release functions inline and remove the somewhat worthless AAC_SYNC_LOCK_FORCE flag. Thanks to Adil Katchi for helping me to track this down in RELENG_4.
show more ...
|
#
fe12f24b |
| 30-May-2004 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Add missing <sys/module.h> includes
|
Revision tags: release/4.10.0_cvs, release/4.10.0, release/5.2.1_cvs, release/5.2.1, release/5.2.0_cvs, release/5.2.0 |
|
#
c5a8036c |
| 03-Dec-2003 |
Scott Long <scottl@FreeBSD.org> |
Temporary workaround for aac_cam to deal with CAM requiring Giant. This should fix the panics on boot with newer Adaptec RAID cards.
Approved by: re (rwatson)
|
Revision tags: release/4.9.0_cvs, release/4.9.0 |
|
#
aad970f1 |
| 24-Aug-2003 |
David E. O'Brien <obrien@FreeBSD.org> |
Use __FBSDID(). Also some minor style cleanups.
|
#
b88ffdc8 |
| 19-Aug-2003 |
Scott Long <scottl@FreeBSD.org> |
Make aac(4) compile cleanly on 64-bit machines. The code was already 64-bit safe, but some (unneeded and/or harmless) downcasts were generating warnings. The driver still is not endian-clean.
|
Revision tags: release/5.1.0_cvs, release/5.1.0, release/4.8.0_cvs, release/4.8.0 |
|
#
a6d35632 |
| 26-Mar-2003 |
Scott Long <scottl@FreeBSD.org> |
Begin support for 64-bit address support and workarounds for newer cards: - Add data structuress for doing 64-bit scatter/gather - Move busdma tag creations around so that only the parent is cre
Begin support for 64-bit address support and workarounds for newer cards: - Add data structuress for doing 64-bit scatter/gather - Move busdma tag creations around so that only the parent is created in aac_pci.c. - Retrieve the capabilities word from the firmware before setting up command structures and tags. This allows the driver to decide whether to do 64-bit commands, and if work-arounds are needed for systems with >2GB of RAM. - Only enable the SCSI passthrough if it's enabled in the capabilities word in the firmware.
This should fix problems with the 2120S and 2200S cards in systems with more than 2GB of RAM. Full 64-bit support is forthcoming.
MFC-After: 1 week
show more ...
|
#
60794e04 |
| 08-Mar-2003 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Centralize the devstat handling for all GEOM disk device drivers in geom_disk.c.
As a side effect this makes a lot of #include <sys/devicestat.h> lines not needed and some biofinish() calls can be r
Centralize the devstat handling for all GEOM disk device drivers in geom_disk.c.
As a side effect this makes a lot of #include <sys/devicestat.h> lines not needed and some biofinish() calls can be reduced to biodone() again.
show more ...
|
#
9e2e96d8 |
| 01-Mar-2003 |
Scott Long <scottl@FreeBSD.org> |
The aac driver has evolved enough over the last few months that it no longer resembles the 4.x version very much. Garbage collect the legacy bits.
|
#
ae543596 |
| 26-Feb-2003 |
Scott Long <scottl@FreeBSD.org> |
Bring aac out from under Giant: - the mutex aac_io_lock protects the main codepaths which handle queues and hardware registers. Only one acquire/release is done in the top-half and the taskqueue
Bring aac out from under Giant: - the mutex aac_io_lock protects the main codepaths which handle queues and hardware registers. Only one acquire/release is done in the top-half and the taskqueue. This mutex also applies to the userland command path and CAM data path. - Move the taskqueue to the new Giant-free version. - Register the disk device with DISKFLAG_NOGIANT so the top-half processing runs without Giant. - Move the dynamic command allocator to the worker thread to avoid locking issues with bus_dmamem_alloc().
This gives about 20% improvement in most of my benchmarks.
show more ...
|
#
ddb8683e |
| 06-Feb-2003 |
Scott Long <scottl@FreeBSD.org> |
Teach the CAM module how to deregister itself so it can be unloaded.
|
#
70545d1a |
| 06-Feb-2003 |
Scott Long <scottl@FreeBSD.org> |
Various cleanups: - Move the command timeout check from a separate repeating timeout to the kthread since the kthread is already running periodically. - Move printing the hardware print buffer t
Various cleanups: - Move the command timeout check from a separate repeating timeout to the kthread since the kthread is already running periodically. - Move printing the hardware print buffer to the kthread. - Properly shut down the kernel thread on detach. - Detach the child array devices on detach. - Don't issue a controller halt command on detach. Doing so requires a PCI reset to wake the controller back up. The driver can now be unloaded as long as CAM support is not enabled.
show more ...
|
Revision tags: release/5.0.0_cvs, release/5.0.0 |
|
#
2ffaffaa |
| 14-Jan-2003 |
Scott Long <scottl@FreeBSD.org> |
Since reseting the SCSI busses via the passthrough interface usually confuses the controller, tell CAM not to do it. Also report the correct error condition to CAM when it tries to probe a target th
Since reseting the SCSI busses via the passthrough interface usually confuses the controller, tell CAM not to do it. Also report the correct error condition to CAM when it tries to probe a target that doesn't exists. This should make the CAM interface less risky to use.
MFC After: 3 days
show more ...
|