aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/mlx
Commit message (Collapse)AuthorAgeFilesLines
...
* Updates resulting from new documentation from Mylex and some cleaning:Mike Smith1999-12-224-75/+95
| | | | | | | | | | | | | | | | | | | | | - Don't keep private copies of some of the data fields from the ENQUIRY and ENQUIRY2 commands. Instead, standardise on the ENQUIRY2 command for initial adapter information, and keep a copy of the entire structure. Refer to it where appropriate. - Move all of the controller description functionality into a new function. Print lots more controller data if bootverbose is set. Add knowledge of the DAC960 PR, PT, PTL0 and PRL controllers, rename the 960PTL -> PTL0 and 1100P -> 1100PVX. - Correctly terminate an error message. The controller interface procedures have been reviewed against the Mylex-supplied documentation; no changes appear necessary at this time. Notes: svn path=/head/; revision=54979
* time_t is an int on the Alpha, not long.Peter Wemm1999-12-121-1/+1
| | | | Notes: svn path=/head/; revision=54515
* Major update to the Mylex DAC960 driver adding new hardware supportMike Smith1999-12-115-174/+305
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | and fixing some major bugs. - Add support for the v5 firmware interface, used by the DAC1164P (tested) and AcceleRAID 352 (untested but should work). We now cover all of the Mylex family's protocols except for v2 (used by EISA and Alpha-compatible cards). - Fix an accounting bug which resulted in endless 'poll still busy' messages. In situations of high controller load the count of poll commands could be incremented without actually successfully launching a command. This totally removes the accounting for status poll commnads; it was its own worst enemy. - Add some simple reentry prevention locks to processing of the waiting and completed command queues to prevent races which could result in I/O being done or completed twice (both are fatal). This highlights a need for simple locking primitives in both the UP and SMP kernels. - Streamline the handling of command completion to reduce the amount of redundant work being done. Remove the code which tests for commands that have gone missing in action; nobody has ever seen one of these and it wouldn't have worked properly anyhow. - Handle disconnection of drives from the controller in the detach, not shutdown method. This avoids problems flushing the cache in a panic when a drive is mounted. - Don't call bus_generic_detach when disconnecting drives; it doesn't actually do anything useful. - Increment the log message index regardless of whether we actually retrieved one or not. If we run into a message that we can't fetch, we don't want to spin endlessly complaining about the fact. - Don't assume that interrupts will work when we're flushing the controller. We may think they are enabled, but in eg. a panic situation the controller may not be able to deliver an interrupt. Notes: svn path=/head/; revision=54419
* Revamp the devstat priority system. All disks now have the same priority.Kenneth D. Merry1999-12-081-2/+2
| | | | | | | | | | | | | | | | | | | | | The same goes for CD drivers and tape drivers. In systems with mixed IDE and SCSI, devices in the same priority class will be sorted in attach order. Also, the 'CCD' priority is now the 'ARRAY' priority, and a number of drivers have been modified to use that priority. This includes the necessary changes to all drivers, except the ATA drivers. Soren will modify those separately. This does not include and does not require any change in the devstat version number, since no known userland applications use the priority enumerations. Reviewed by: msmith, sos, phk, jlemon, mjacob, bde Notes: svn path=/head/; revision=54279
* Remove the 'ivars' arguement to device_add_child() andMatthew N. Dodd1999-12-031-1/+2
| | | | | | | | | | | | | | | | | | | device_add_child_ordered(). 'ivars' may now be set using the device_set_ivars() function. This makes it easier for us to change how arbitrary data structures are associated with a device_t. Eventually we won't be modifying device_t to add additional pointers for ivars, softc data etc. Despite my best efforts I've probably forgotten something so let me know if this breaks anything. I've been running with this change for months and its been quite involved actually isolating all the changes from the rest of the local changes in my tree. Reviewed by: peter, dfr Notes: svn path=/head/; revision=54073
* Correctly compute the block count. In reality, it seems that theMike Smith1999-11-022-2/+2
| | | | | | | | | | controller will never return the command if it's not exactly a multiple of a block in size. Cosmetic formatting for RAID level output. Notes: svn path=/head/; revision=52785
* Move some hardware-related items to the hardware-related header.Mike Smith1999-10-265-168/+185
| | | | | | | | | Shift to using the same queueing strategy that the amr driver uses. Some simple tests indicate that we use about 2% of the CPU at around 500tps with the controller completely saturated with I/O. Notes: svn path=/head/; revision=52544
* Use the physical block number, not the logical block number, for I/OMike Smith1999-10-221-5/+5
| | | | | | | | | | operations. The latter only works where the partion begins at the bottom of the disk. Whoops. Submitted by: Chris Csanady <cc@137.org> Notes: svn path=/head/; revision=52439
* Use a much larger buffer for message log retrieval until we are sure thatMike Smith1999-10-161-9/+10
| | | | | | | | | | | | | | 32 bytes is safe. Handle successful completion of message log retrieval commands. With these changes, the driver correctly handles the consequences of drive death and replacement in a reliable array. Note that the massive backlog of I/O during handling of such an event can kill the system if softupdates is enabled. Notes: svn path=/head/; revision=52276
* Fix mlx_diagnose_command so that it actually works. I can't believe thisMike Smith1999-10-161-1/+1
| | | | | | | has been broken since implemented. Notes: svn path=/head/; revision=52275
* Save the drive device_t correctly so we can print it later.Mike Smith1999-10-162-2/+2
| | | | | | | The drive number is 5 bits, not 4, in the read/write command. Notes: svn path=/head/; revision=52273
* Add support for the version 4 firmware interface and the DAC960 PG andMike Smith1999-10-145-58/+180
| | | | | | | | | | | | | | | | | | | | | PJ cards. This will probably also support the AcceleRAID and eXtremeRAID cards, but nobody has volunteered one for testing, so I haven't enabled their PCI device IDs. Slightly clean up communication between the disk devices and the controller device as per new practice, and move some more register- related items int mlxreg.h from mlxvar.h. Remove some unnecessary read-modify-write operations to the card control registers; they don't behave like that. Increase the status polling interval to 10 seconds. It's still possible to load the card up to the point where a status poll will find the previous poll still running, but this will reduce the incidence of complaints. Notes: svn path=/head/; revision=52225
* This is a driver for the Mylex DAC960 family of integrated RAIDMike Smith1999-10-076-0/+3437
controllers. It currently supports the P, PL, PD and PU variants, with more to be supported shortly. Notes: svn path=/head/; revision=51973