Commit Graph

47 Commits

Author SHA1 Message Date
ps
4e0becfbfc Add pci id's for the SmartArray 6422 and V100 controllers. Also
add a whole bunch of pci id's for future controllers.

Submitted by:	John Cagle <first.last@hp.com>
2004-06-05 18:12:56 +00:00
ps
f0f9792ad4 Turn SCSI pre-fetch ON. This is mainly for 64XX and 64X based
controllers and allows the controller to prefetch 1-2k on certain
PCI memory reads to the host.  The spec says this should only be
used for IA32 based systems.

Informed of feature by:	John Cagle <first.last@hp.com>
2004-05-17 17:27:38 +00:00
ps
5e3cccb717 make this compile/work with CISS_DEBUG defined. 2004-04-26 19:28:08 +00:00
ps
59dc6aea9d There's no need to call ciss_report_request in the passthru ioctl
routine since the error will be reported back to the user buffer.
This will quiet down the bootverbose case when using an ACU which
does brute force discovery of the physical and logical devices.
2004-04-19 17:16:06 +00:00
ps
c52a120a7c Report only new new events when initially attaching to the controller. 2004-04-19 00:57:29 +00:00
ps
a5053e5684 move the cleanup of the control device into ciss_free and add some
ifdefs for the diffrent kthread_create API between -current and
-stable
2004-04-18 02:39:01 +00:00
ps
a7a31583b7 Add support for the HP Modular Smart Array 20 & 500 storage arrays.
Logical volumes on these devices show up as LUNs behind another
controller (also known as proxy controller).  In order to issue
firmware commands for a volume on a proxy controller, they must be
targeted at the address of the proxy controller it is attached to,
not the Host/PCI controller.

A proxy controller is defined as a device listed in the INQUIRY
PHYSICAL LUNS command who's L2 and L3 SCSI addresses are zero.  The
corresponding address returned defines which "bus" the controller
lives on and we use this to create a virtual CAM bus.

A logical volume's addresses first byte defines the logical drive
number.  The second byte defines the bus that it is attached to
which corresponds to the BUS of the proxy controller's found or the
Host/PCI controller.

Change event notification to be handled in its own kernel thread.
This is needed since some events may require the driver to sleep
on some operations and this cannot be done during interrupt context.
With this change, it is now possible to create and destroy logical
volumes from FreeBSD, but it requires a native application to
construct the proper firmware commands which is not publicly
available.

Special thanks to John Cagle @ HP for providing remote access to
all the hardware and beating on the storage engineers at HP to
answer my questions.
2004-04-16 23:00:01 +00:00
ps
b1cb657e60 Whitespace cleanup. 2004-04-16 21:03:38 +00:00
ps
290ea04ebf Don't allow the driver to be unloaded if the device node is open. 2004-04-14 19:45:07 +00:00
ps
ed6a88be84 Do not catch signals when waiting for a request. This fixes a nasty
race when issuing commands from userland.
2004-04-14 18:55:28 +00:00
njl
05a1f56fc9 Convert callers to the new bus_alloc_resource_any(9) API.
Submitted by:	Mark Santcroos <marks@ripe.net>
Reviewed by:	imp, dfr, bde
2004-03-17 17:50:55 +00:00
phk
ad925439e0 Device megapatch 4/6:
Introduce d_version field in struct cdevsw, this must always be
initialized to D_VERSION.

Flip sense of D_NOGIANT flag to D_NEEDGIANT, this involves removing
four D_NOGIANT flags and adding 145 D_NEEDGIANT flags.
2004-02-21 21:10:55 +00:00
phk
df397dedea Device megapatch 1/6:
Free approx 86 major numbers with a mostly automatically generated patch.

A number of strategic drivers have been left behind by caution, and a few
because they still (ab)use their major number.
2004-02-21 19:42:58 +00:00
ru
a69314d272 Fixed a memory leak.
Reported by:	Stanford Metacompilation research group
2004-01-18 16:55:01 +00:00
ps
a23cee861d White space cleanup 2003-12-13 07:54:07 +00:00
ps
3f862834e5 Define RAID 5+1 and RAID ADG fault tolerances 2003-12-08 16:07:35 +00:00
ps
1fb226c0ca Add PCID for 6i controller
Submitted by:	John Cagle <john.cagle@hp.com>
2003-11-07 03:01:48 +00:00
ps
58d350029a Print the correct logical drive lun number returned by the controller. 2003-10-15 18:52:44 +00:00
ps
34b64980a4 Quiet down boot verbose and allow commands to be submitted to a target
which does not have a volume attached.  This will stop cam from retrying
a bunch of time at boot for devices which do not exsist.
2003-09-08 16:45:33 +00:00
imp
c23aaeeba4 Prefer new location of pci include files (which have only been in the
tree for two or more years now), except in a few places where there's
code to be compatible with older versions of FreeBSD.
2003-08-22 05:54:52 +00:00
ps
4e0802ee66 Support EINPROGRESS and properly deal with 64bit physical addressing. 2003-08-12 17:55:53 +00:00
ps
d62f9caa29 Check the status of the user command and return the proper error
to the user.
2003-07-12 22:37:03 +00:00
ps
3da6cb86b1 Quiet down ciss unless bootverbose is set. 2003-07-12 22:32:27 +00:00
scottl
4d495abb9d Mega busdma API commit.
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
2003-07-01 15:52:06 +00:00
ps
92ae9f5522 Give the correct size for the command map to busdma. 2003-06-26 04:01:34 +00:00
phk
9cf498d30d Fix off-by-one error in drive number check.
Don't return(foo(...)) in function returning void.

Found by:       FlexeLint
2003-05-31 18:41:09 +00:00
ps
ab966f1217 Make ciss usable under PAE
Approved by:	re (scottl)
2003-05-21 07:17:06 +00:00
ps
986a7d95d4 Add support for the HP Smart Array 6400 EM
Change the interrupt mask for the Smart Array 6xxx controllers after
discussions w/ HP.
2003-04-03 20:09:27 +00:00
phk
e059b79437 Including <sys/stdint.h> is (almost?) universally only to be able to use
%j in printfs, so put a newsted include in <sys/systm.h> where the printf
prototype lives and save everybody else the trouble.
2003-03-18 08:45:25 +00:00
phk
e01fc931cf 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.
2003-03-08 08:01:31 +00:00
phk
0ae911eb0e Gigacommit to improve device-driver source compatibility between
branches:

Initialize struct cdevsw using C99 sparse initializtion and remove
all initializations to default values.

This patch is automatically generated and has been tested by compiling
LINT with all the fields in struct cdevsw in reverse order on alpha,
sparc64 and i386.

Approved by:    re(scottl)
2003-03-03 12:15:54 +00:00
phk
3780674329 Put cdevsw initialization on canonical format. 2003-03-02 16:50:09 +00:00
imp
cf874b345d Back out M_* changes, per decision of the TRB.
Approved by: trb
2003-02-19 05:47:46 +00:00
ps
42812e4da9 Add some PCI device ID's from HP 2003-02-18 21:53:44 +00:00
ps
0eca408203 Properly get the drive geometry from the controller. This should
fix booting off of volumes > 255GB.
2003-02-05 08:43:46 +00:00
ps
79b6a6c38c Close a memory leak when rescanning the bus. 2003-02-05 07:46:08 +00:00
alfred
bf8e8a6e8f Remove M_TRYWAIT/M_WAITOK/M_WAIT. Callers should use 0.
Merge M_NOWAIT/M_DONTWAIT into a single flag M_NOWAIT.
2003-01-21 08:56:16 +00:00
mux
0ef4b48b32 Fix a bunch of warnings on 64 bit platforms in the
CISS_DEBUG case by appropriately using %z and %j.
2002-10-27 12:27:04 +00:00
mux
a6b93b4e90 Fix a warning when CISS_DEBUG is defined. 2002-10-27 12:05:11 +00:00
mux
d2ac0d86f6 Add a missing destroy_dev(). 2002-10-26 18:09:30 +00:00
phk
1dfc2c167f Be consistent about "static" functions: if the function is marked
static in its prototype, mark it static at the definition too.

Inspired by:    FlexeLint warning #512
2002-09-28 17:15:38 +00:00
archie
7a233d4c9f Replace (ab)uses of "NULL" where "0" is really meant. 2002-08-22 21:24:01 +00:00
ps
1b161ee220 - Set the maximum number of device transactions to what the driver
is limiting it to, not what the device says it can handle.
- cl_status is an integer. cl_lstatus is a pointer.
- Add some debugging code to dump some things the driver knows about
  the adapter.
- Tell CAM that the adapter can handle more commands when a command
  completes.  This fixes the problem were the SIM would freeze once
  the driver hit the maximum number of transactions for the device.
- Change the vendor string to COMPAQ.
- Turn of Synchronize Cache for now.  It locks the controller up.

Approved by:	msmith
Obtained from:	Yahoo!
2002-04-29 21:46:09 +00:00
ps
48283ba193 Fix the I/O performance issues with the ciss driver where CAM was limiting
the number of transactions the device could handle to 1.

Obtained from:	msmith
2002-04-11 09:28:09 +00:00
peter
05cd34fa8f Fix warning; line 1640: ciss_abort_request defined but not used. 2001-12-18 08:01:48 +00:00
msmith
73a800ff5f Catch up with the proc -> d_thread_t change. 2001-12-02 06:17:16 +00:00
msmith
df947dedc9 Add the 'ciss' driver, which supports the Compaq SmartRAID 5* family of
RAID controllers (5300, 532, 5i, etc.)

Thanks to Compaq and Yahoo! for support during the development of this
driver.

MFC after:	1 week
2001-11-27 23:08:37 +00:00