summaryrefslogtreecommitdiffstats
path: root/sys/dev/aac/aac_pci.c
Commit message (Collapse)AuthorAgeFilesLines
* Fall back to INTR_MPSAFE if INTR_FAST registration fails.scottl2004-02-091-2/+8
| | | | PR: kern/62276
* Take the plunge and make this driver be INTR_FAST. This re-arranges thescottl2004-01-301-1/+1
| | | | | | | | | interrupt handler so that no locks are needed, and schedules the command completion routine with a taskqueue_fast. This also corrects the locking in the command thread and removes the need for operation flags. Simple load tests show that this is now considerably faster than FreeBSD 4.x in the SMP case when multiple i/o tasks are running.
* Remove a bogus PCI ID entry.scottl2003-11-011-2/+0
|
* Use PCIR_BAR() instead of a magic offset.scottl2003-09-091-1/+1
|
* Use __FBSDID().obrien2003-08-241-2/+3
| | | | Also some minor style cleanups.
* Prefer the new location of dev/pci/pci*.h.imp2003-08-221-2/+2
|
* Add a new quirk for cards that incorrectly interpret the amount of memoryscottl2003-07-091-2/+2
| | | | in the system. This might also have a small performance gain.
* Mega busdma API commit.scottl2003-07-011-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | Add two new arguments to bus_dma_tag_create(): lockfunc and lockfuncarg. Lockfunc allows a driver to provide a function for managing its locking semantics while using busdma. At the moment, this is used for the asynchronous busdma_swi and callback mechanism. Two lockfunc implementations are provided: busdma_lock_mutex() performs standard mutex operations on the mutex that is specified from lockfuncarg. dftl_lock() is a panic implementation and is defaulted to when NULL, NULL are passed to bus_dma_tag_create(). The only time that NULL, NULL should ever be used is when the driver ensures that bus_dmamap_load() will not be deferred. Drivers that do not provide their own locking can pass busdma_lock_mutex,&Giant args in order to preserve the former behaviour. sparc64 and powerpc do not provide real busdma_swi functions, so this is largely a noop on those platforms. The busdma_swi on is64 is not properly locked yet, so warnings will be emitted on this platform when busdma callback deferrals happen. If anyone gets panics or warnings from dflt_lock() being called, please let me know right away. Reviewed by: tmm, gibbs
* Add support for the upcoming 2410SA card.scottl2003-05-301-0/+2
| | | | Approved by: re (telecon)
* Begin support for 64-bit address support and workarounds for newer cards:scottl2003-03-261-58/+25
| | | | | | | | | | | | | | | | | - 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/+1
| | | | | longer resembles the 4.x version very much. Garbage collect the legacy bits.
* Use BUS_SPACE_MAXADDR_32BIT in the DMA tag where needed. Before the recentscottl2003-02-261-2/+2
| | | | fix to BUS_SPACE_MAXADDR, we were probably bouncing quite a bit =-(
* Make the aac driver be INTR_MPSAFE. Once the interrupt handler determinesscottl2003-02-191-2/+3
| | | | | | | that a command completion happened, all further processing is deferred to a taskqueue. The taskqueue itself runs implicetely under Giant, but we already used a taskqueue for the biodone() processing, so this at least saves the contesting of Giant in the interrupt handler.
* Implement a new dynamic command allocator. FIBs are allocated in 1 pagescottl2003-02-101-1/+1
| | | | | | | | blocks now, which should eliminate problems with the driver failing to attach due to insufficient contiguous RAM. Allow the FIB pool to grow from the default of 128 to the max of 512 as demand grows. Also pad the adapter init struct to work around the 2120/2200 DMA bug now that there is no longer a FIB slab.
* Hack around a bug in the 2200 and 2120 controllers that connot DMAscottl2003-01-231-1/+1
| | | | | | | | commands from below the first 8K of physical memory. A better fix is to modify the busdma api to allow either inclusion ranges or multiple exclusion ranges, but that debate is for another day. MFC After: 2 days
* sable the CAM interface on some more cards. It seemed to be confusing andscottl2002-12-121-5/+5
| | | | | | | | upsetting the firmware there. Thanks to imp@freebsd.org for suffering through testing with this. Approved by: re
* Fix GET_TRAN_SETTINGS to be more correct.scottl2002-08-101-2/+2
| | | | | | | | 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
* Update the PCI table as per Dell's fickleness.scottl2002-05-121-2/+2
| | | | MFC after: 3 days
* Add a CAM interface to the aac driver. This is useful in case you shouldscottl2002-04-271-28/+41
| | | | | | | | | | | | | | | 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
* Prepare for a major update to the aac driver:scottl2002-04-241-1/+1
| | | | | | | | Update the aac driver with the new crashdump api. Protect sync fibs with a mutex. Align all DMA buffers on a PAGE_SIZE boundary. MFC after: 3 days
* Add the PCI ID for an upcoming variant of a soon-to-be released series ofscottl2002-04-181-0/+2
| | | | cards.
* Add support for the Dell 2650scottl2002-04-051-0/+1
| | | | Submitted by: andrew_bachler@dell.com
* Add support for the PERC3/Di found in the Dell 1650scottl2002-04-021-0/+1
| | | | Submitted by: mp
* Add ID's for a couple of upcoming cards.scottl2002-02-131-0/+4
| | | | MFC after: 1 day
* Don't attach to Dell PERC2/QC cards that have a firmware rev of 1.x. Thisscottl2002-02-061-0/+8
| | | | | | | | check is complicated by the fact that the Adaptec 5400S cards claim to use 1.x firmware also. PERC2/QC 1.x firmware is not compatible with this driver and will cause a system hang. MFC after: 3 days
* Staticise the aac devclass.msmith2002-01-091-0/+2
|
* Add functionality and fix bugs so the driver will work with soon-to-bescottl2001-12-021-0/+4
| | | | | | | | | | | | | released management apps. 1. Implement poll(). This will check for queued aif's so that a subsequent ioctl call to retrieve the next aif will not block. 2. Don't catch signals when sleeping on a fib sent from userland. This causes a race and panic due to the pthread context switcher waking up the tsleep at inopportune times. 3. Fix some whitespace nits. MFC after: 3 days
* Don't use a silly test to define INTR_ENTROPY.scottl2001-09-061-1/+1
| | | | Submitted by: peter
* Bring the aac driver *much* closer to style(9).scottl2001-09-051-166/+173
| | | | Reviewed by: ken
* Mega update to the aac driver.scottl2001-08-291-4/+4
| | | | | | | | | | | | | | 1. Correctly handle commands initiated by the adapter. These commands are defered to a kthread responsible for their processing, then are properly returned to the controller. 2. Add/remove disk devices when notified by the card that a container was created/deleted/offline. 3. Implement crashdump functionality. 4. Support all ioctls needed for the management CLI to work. The linux version of this app can be found at the Dell or HP website. A native version will be forthcoming. MFC-after: 4.4-RELEASE
* Clarify the description string for one of the StrongARM based cards.scottl2001-08-171-1/+2
|
* Bugfixes. Close a race and logic bug in the timeout handling, don't call thescottl2001-08-051-0/+2
| | | | | | | | | interrupt handler from the upper half, etc. This fixes some serious stability problems that we were seeing on our production server. These patches have been tested for almost 6 months and are a highly recommended MFC candidate. Reviewed by: gibbs, merry, msmith MFC after: 4 days
* Fix a couple of copyright issues and an 80 column nit that I missed beforescottl2001-08-051-1/+1
|
* Reformat for 80 columns. Sorry, but I had to do it.scottl2001-08-031-18/+25
|
* Add another Dell 3/Di PCI ID. You'd think they had enough of thesemsmith2001-07-221-0/+1
| | | | already...
* More new Dell PCI IDs.msmith2001-04-261-1/+4
| | | | Submitted by: "Marty Moll" <martym@arbor.edu>
* The PERC 3/Di in the Dell PowerEdge 2250 has a new subdevice ID.msmith2001-04-261-0/+1
| | | | Submitted by: Chris Csanady <cc@ameslab.gov>
* Turn on interrupt-entropy harvesting for all/any mass storage devicesmarkm2001-03-011-1/+1
| | | | | | | I could find. I have no doubt missed a couple. Interrupt entropy harvesting is still conditional on the kern.random.sys.harvest_interrupt sysctl.
* Major bugfix and minor update. This should resolve the current issuesmsmith2000-12-271-1/+8
| | | | | | | | | | | | | | | | | | | | | | | | | with the driver locking up under load. - Restructure so that we use a static pool of commands/FIBs, rather than allocating them in clusters. The cluster allocation just made things more complicated, and allowed us to waste more memory in peak load situations. - Make queueing macros more like my other drivers. This adds queue stats for free. Add some debugging to take advantage of this. - Reimplement the periodic timeout scan. Kick the interrupt handler and the start routine every scan as well, just to be safe. Track busy commands properly. - Bring resource cleanup into line with resource allocation. We should now clean up correctly after a failed probe/unload/etc. - Try to start new commands when old ones are completed. We weren't doing this before, which could lead to deadlock when the controller was full. - Don't try to build a new command if we have found a deferred command. This could cause us to lose the deferred command. - Use diskerr() to report I/O errors. - Don't bail if the AdapterInfo structure is the wrong size. Some variation seems to be normal. We need to improve our handing of 2.x firmware sets. - Improve some comments in an attempt to try to make things clearer. - Restructure to avoid some warnings.
* Return -10 from the PCI probe to allow room for an updated driver tomsmith2000-10-281-1/+1
| | | | override one built into the kernel.
* A new driver for PCI:SCSI RAID controllers based on the Adaptec FSAmsmith2000-09-131-0/+272
design. This includes integrated Dell RAID controllers, the Dell PERC 2/QC and the HP NetRAID-4M.
OpenPOWER on IntegriCloud