summaryrefslogtreecommitdiffstats
path: root/sys/dev/aac/aac_cam.c
Commit message (Collapse)AuthorAgeFilesLines
* Collapse sync fib locking into normal i/o locking. The former didn'tscottl2004-06-021-2/+2
| | | | | | | | 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.
* Add missing <sys/module.h> includesphk2004-05-301-0/+1
|
* Temporary workaround for aac_cam to deal with CAM requiring Giant. Thisscottl2003-12-031-1/+9
| | | | | | should fix the panics on boot with newer Adaptec RAID cards. Approved by: re (rwatson)
* Use __FBSDID().obrien2003-08-241-2/+3
| | | | Also some minor style cleanups.
* Make aac(4) compile cleanly on 64-bit machines. The code was already 64-bitscottl2003-08-191-1/+6
| | | | | safe, but some (unneeded and/or harmless) downcasts were generating warnings. The driver still is not endian-clean.
* Begin support for 64-bit address support and workarounds for newer cards:scottl2003-03-261-3/+3
| | | | | | | | | | | | | | | | | - 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
* Centralize the devstat handling for all GEOM disk device driversphk2003-03-081-1/+0
| | | | | | | | 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.
* The aac driver has evolved enough over the last few months that it noscottl2003-03-011-1/+0
| | | | | longer resembles the 4.x version very much. Garbage collect the legacy bits.
* Bring aac out from under Giant:scottl2003-02-261-0/+4
| | | | | | | | | | | | | | - 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.
* Teach the CAM module how to deregister itself so it can be unloaded.scottl2003-02-061-2/+9
|
* Various cleanups:scottl2003-02-051-5/+5
| | | | | | | | | | | - 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.
* Since reseting the SCSI busses via the passthrough interface usuallyscottl2003-01-131-7/+12
| | | | | | | | | 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
* Fix GET_TRAN_SETTINGS to be more correct.scottl2002-08-101-8/+7
| | | | | | | | Don't allow SCSI resets on the 5400S card, it seems to cause problems with certain backplanes. Submitted by: lnb@freebsdsystems.com MFC after: 3 days
* bzero out the sync command buffer when sending commands. This was causingscottl2002-05-031-0/+3
| | | | | | problems when enumerating multiple arrays. This is an MFC candidate.
* Fix a bug where the aacp device would only talk to bus 0 on thescottl2002-04-301-7/+5
| | | | controller.
* Add a CAM interface to the aac driver. This is useful in case you shouldscottl2002-04-271-0/+591
ever connect a SCSI Cdrom/Tape/Jukebox/Scanner/Printer/kitty-litter-scooper to your high-end RAID controller. The interface to the arrays is still via the block interface; this merely provides a way to circumvent the RAID functionality and access the SCSI buses directly. Note that for somewhat obvious reasons, hard drives are not exposed to the da driver through this interface, though you can still talk to them via the pass driver. Be the first on your block to low-level format unsuspecting drives that are part of an array! To enable this, add the 'aacp' device to your kernel config. MFC after: 3 days
OpenPOWER on IntegriCloud