summaryrefslogtreecommitdiffstats
path: root/sys/dev/ips/ips_commands.c
Commit message (Collapse)AuthorAgeFilesLines
* Separate the hardware definitions into ipsreg.h so they can be used byscottl2005-11-291-0/+1
| | | | future userland tools.
* Fix build.glebius2005-09-271-1/+1
|
* Report status in hex, not decimal.scottl2005-09-271-1/+1
|
* Overhaul error handling in the IPS driver. Don't use a magic value forscottl2005-09-251-61/+61
| | | | | | | | | driver-induced errors, instead be better about propagating error status upwards. Add more error definitions, courtesy of the linux driver. Fix a command leak in the ioctl handler. Re-arrange some of the command handlers to localize error handling. MFC After: 3 days
* Lock the IPS driver and bring it out from under Giant. Also do somescottl2005-01-281-119/+65
| | | | | | | | | | | | | | | | significant clean up and optimizations: - don't call bioq_disksort() on every command, the hardware will do that for us. - remove all of the complicated bio deferral code. bio's that can't be serviced immediately can just wait on the bioq. - Only reserve one command object for doing control commands to the card. This simplifies a lot of code and significantly reduces the size of the command struct. - Allocate commands out of a slab instead of embedding them into the softc. - Call the command action method directly instead of having ips_get_free_cmd() call it indirectly. MFC After: 1 week
* Change the return value of sema_timedwait() so it returns 0 onjdp2004-06-141-3/+3
| | | | | | | | | | | success and a proper errno value on failure. This makes it consistent with cv_timedwait(), and paves the way for the introduction of functions such as sema_timedwait_sig() which can fail in multiple ways. Bump __FreeBSD_version and add a note to UPDATING. Approved by: scottl (ips driver), arch
* Use a unique malloc type rather than M_DEVBUF.scottl2004-05-301-21/+21
|
* Switch from using mutexes to using semaphores to protect against earlyscottl2004-02-281-30/+23
| | | | | | | completion of synchronous commands. Also switch to a per-array bioq as it appears to improve performance. Submitted by: mbr, imp.ch (bioq change)
* The reset_type should not be 0x80, it should be set to zero.mbr2004-01-011-1/+1
| | | | | | | | 0x80 can cause the command to be rejected as invalid. This bug exists also in the Linux IPS ffdc code. Submitted by: David Jeffery MFC after: 1 week
* ServeRaid (at least 5i) didn't initialize correctly. To getmbr2003-11-271-0/+90
| | | | | | | | | | | | | | | | | | | | | them working (cache, automatic rebuild and hotswap) the FFDC info (First Failure Data Capture) on the adapter must be initialised. Logical drives in critical/degraded states weren't added to the drive list. FreeBSD was not able to see a degraded array after a reboot. Degraded drives are now also added to the drivelist and the state of the logical drive is given at boottime. The adapter type is detected from informations in nvram page 5 and displayed at boottime. Change IPS_OS_FREEBSD definition from 10 to 8 according to IBM specs. Submitted by: <Patrick Guelat> pgfb@imp.ch Reviewed by: mbr, scottl Approved by: re
* Eliminate reporting of bio_blkno.phk2003-10-181-2/+2
|
* Use __FBSDID().obrien2003-08-241-4/+3
| | | | Also some minor style cleanups.
* Mega busdma API commit.scottl2003-07-011-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | 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
* Fix pointer/int warnings so this compiles on amd64. The driver wantspeter2003-06-271-1/+1
| | | | | | | to store an int in the bio->bio_driver1 (a void *). It is big enough, but you have to match the int sizes first before doing the cast. Glanced at by: scottl
* - Zero the buffers used to hold configuration data from the card. Not doingscottl2003-06-261-6/+6
| | | | | | | | | | so can leave stale data in the buffer and confuse the driver. - enable the ability to set the 'disable' hint for the driver to keep it from attaching. i.e. 'hw.ips.0.disable=1' will prevent the driver from attaching. - Only detach if attach suceeded. Submitted by: mjacob
* Add the 'ips' driver for the IBM (now Adaptec) ServeRAID controllerscottl2003-05-111-0/+636
series. This driver was generously developed and released by David Jeffreys and Adaptec. I've updated it to work with 5.x and fixed a few bugs. MFC After: 1 week
OpenPOWER on IntegriCloud