History log of /freebsd-current/sys/dev/ciss/cissreg.h
Revision Date Author Comments
# ced92d00 20-Jan-2024 Gordon Bergling <gbe@FreeBSD.org>

ciss(4): Fix a typo in a source code comment

- s/strucutre/structure/

MFC after: 3 days


# 4654e8a3 27-Dec-2023 Jose Luis Duran <jlduran@gmail.com>

ciss: Fix typo (triple T)

Reviewed by: imp
Pull Request: https://github.com/freebsd/freebsd-src/pull/954


# 95ee2897 16-Aug-2023 Warner Losh <imp@FreeBSD.org>

sys: Remove $FreeBSD$: two-line .h pattern

Remove /^\s*\*\n \*\s+\$FreeBSD\$$\n/


# 4d846d26 10-May-2023 Warner Losh <imp@FreeBSD.org>

spdx: The BSD-2-Clause-FreeBSD identifier is obsolete, drop -FreeBSD

The SPDX folks have obsoleted the BSD-2-Clause-FreeBSD identifier. Catch
up to that fact and revert to their recommended match of BSD-2-Clause.

Discussed with: pfg
MFC After: 3 days
Sponsored by: Netflix


# 405b8d43 01-Sep-2020 Mateusz Guzik <mjg@FreeBSD.org>

ciss: clean up empty lines in .c and .h files


# 718cf2cc 27-Nov-2017 Pedro F. Giffuni <pfg@FreeBSD.org>

sys/dev: further adoption of SPDX licensing ID tags.

Mainly focus on files that use BSD 2-Clause license, however the tool I
was using misidentified many licenses so this was mostly a manual - error
prone - task.

The Software Package Data Exchange (SPDX) group provides a specification
to make it easier for automated tools to detect and summarize well known
opensource licenses. We are gradually adopting the specification, noting
that the tags are considered only advisory and do not, in any way,
superceed or replace the license texts.


# 0fb31ed0 29-Jun-2014 Sean Bruno <sbruno@FreeBSD.org>

Add detection for ciss(4) controllers that are set to non-raid JBOD mode.
If a controller is set to JBOD, it has no RAID functions turned on.

Populate even more of the firmware specification headers, copied from
cciss_vol_status.

Reviewed by: Benesh, Scott <scott.benesh@hp.com>
MFC after: 2 weeks


# e3edca22 15-Jan-2013 Sean Bruno <sbruno@FreeBSD.org>

Satisfy the intent of kern/151564: [ciss] ciss(4) should increase
CISS_MAX_LOGICAL to 107

Submitter wanted to increase the number of logical disks supported by ciss(4)
by simply raising the CISS_MAX_LOGICAL value even higher. Instead, consult
the documentation for the raid controller (OPENCISS) and poke the controller
bits to ask it for how many logical/physical disks it can handle.

Revert svn R242089 that raised CISS_MAX_LOGICAL to 64 for all controllers.

For older controllers that don't support this mechanism, fallback to the old
value of 16 logical disks. Tested on P420, P410, P400 and 6i model ciss(4)
controllers.

This should will be MFC'd back to stable/9 stable/8 and stable/7 after the MFC
period.

PR: kern/151564
Reviewed by: scottl@freebsd.org
MFC after: 2 weeks


# a7d5f7eb 19-Oct-2010 Jamie Gritton <jamie@FreeBSD.org>

A new jail(8) with a configuration file, to replace the work currently done
by /etc/rc.d/jail.


# 24048b0c 16-Sep-2009 Scott Long <scottl@FreeBSD.org>

Merge rev 197263:

- Enable MSI support (MSIX support was already present)
- Performance improvements

Approved by: re
Obtained from: Yahoo!


# 053351ce 16-Sep-2009 Scott Long <scottl@FreeBSD.org>

Merge r197260, r197261, r197262

- Prevent a panic on modern controllers by increasing CISS_MAX_PHYSTGT to 256
- Fix MSI and PERFORMANT interrupt programming. Fixes hang on boot.
- Fix locking bugs in ioctl handler

Most of this has been soaking at Yahoo for several months, if not longer. The
quick MFC is due to the impending 8.0-RC1 build.

Approved by: re
Obtained from: Yahoo!


# 2fdaa90d 16-Sep-2009 Scott Long <scottl@FreeBSD.org>

Sync driver with Yahoo:

- Implement MSI support (MSIX support was already there)
- Use a table to drive MSI/MSIX exceptions
- Pre-calculate the command address instead of wasting cycles doing the
calculation on every i/o.


# b23be3e0 16-Sep-2009 Scott Long <scottl@FreeBSD.org>

Make MSI and PERFORMANT interrupts work correctly. Only require the minimum
number of MSIX interrupts that are needed, and don't strictly check for 4.
Enable enough interrupt mask bits so that the controller will generate
interrupts in PERFORMANT mode. This fixes the hang-on-boot issues that
people were seeing with newer controllers.


# d7f03759 19-Oct-2008 Ulf Lilleengen <lulf@FreeBSD.org>

- Import the HEAD csup code which is the basis for the cvsmode work.


# d69c9c78 28-Aug-2008 Scott Long <scottl@FreeBSD.org>

Work again to fix the interrupt masking problems. We now recognize
that there are 3 different interrupt enable bits, 2 for different
families of cards, and 1 for when MSI is used. Also apply a big
hammer backstop for cards that aren't recognized. This should fix
all of the interrupt issues at boot.


# 8792c6ab 02-Aug-2008 Scott Long <scottl@FreeBSD.org>

Correctly set the interrupt enable and disable bits. The previous
code interfered with Performant mode and legacy interrupts. Also
remove a register read operation on the Simplq code that was
effectively a time-wasting no-op.


# 22657ce1 11-Jul-2008 Scott Long <scottl@FreeBSD.org>

A number of significant enhancements to the ciss driver:

1. The FreeBSD driver was setting an interrupt coalesce delay of 1000us
for reasons that I can only speculate on. This was hurting everything
from lame sequential I/O "benchmarks" to legitimate filesystem metadata
operations that relied on serialized barrier writes. One of my
filesystem tests went from 35s to complete down to 6s.

2. Implemented the Performant transport method. Without the fix in
(1), I saw almost no difference. With it, my filesystem tests showed
another 5-10% improvement in speed. It was hard to measure CPU
utilization in any meaningful way, so it's not clear if there was a
benefit there, though there should have been since the interrupt handler
was reduced from 2 or more PCI reads down to 1.

3. Implemented MSI-X. Without any docs on this, I was just taking a
guess, and it appears to only work with the Performant method. This
could be a programming or understanding mistake on my part. While this
by itself made almost no difference to performance since the Performant
method already eliminated most of the synchronous reads over the PCI
bus, it did allow the CISS hardware to stop sharing its interrupt with
the USB hardware, which in turn allowed the driver to become decoupled
from the Giant-locked USB driver stack. This increased performance by
almost 20%. The MSI-X setup was done with 4 vectors allocated, but only
1 vector used since the performant method was told to only use 1 of 4
queues. Fiddling with this might make it work with the simpleq method,
not sure. I did not implement MSI since I have no MSI-specific hardware
in my test lab.

4. Improved the locking in the driver, trimmed some data structures.
This didn't improve test times in any measurable way, but it does look
like it gave a minor improvement to CPU usage when many
processes/threads were doing I/O in parallel. Again, this was hard to
accurately test.


# 7a0c10de 09-Aug-2005 Paul Saab <ps@FreeBSD.org>

There's no reason to check the valence. This allows ciss to work
on the P600.


# 17c0792d 19-Apr-2005 Paul Saab <ps@FreeBSD.org>

Provide a way to soft reset a proxy controller such as an MSA20 or
MSA500. This is useful if you need to reset one of the storage
arrays on reboot.


# 4788ab33 29-Jul-2004 Paul Saab <ps@FreeBSD.org>

Clean up structure packing.


# 1fe6c4ee 21-Jun-2004 Scott Long <scottl@FreeBSD.org>

Add SCSI passthrough support to CISS. This allows devices like tape drives
that are on a CISS bus to be exported up to CAM and made available as normal
devices. This will typically add one or two buses to CAM, which will be
numbered starting at 32 to allow room for CISS proxy buses. Also, the CISS
firmware usually hides disk devices, but these can also be exposed as 'pass'
devices if you set the hw.ciss.expose_hidden_physical tunable.

Sponsored by: Tape Laboratories, Inc.
MFC After: 3 days


# a54e98d3 05-Jun-2004 Paul Saab <ps@FreeBSD.org>

Document the 64bit version of blocks_to_recover for logical drive status.
Pad the struct to 1024 bytes as defined in the firmware spec.


# bbfb4528 04-Jun-2004 Paul Saab <ps@FreeBSD.org>

Update logical drive structure


# 10672bdf 27-May-2004 Paul Saab <ps@FreeBSD.org>

Define another HOTPLUG event.


# a891a3bf 17-May-2004 Paul Saab <ps@FreeBSD.org>

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>


# 256588d2 22-Apr-2004 Paul Saab <ps@FreeBSD.org>

define some new fields in the physical drive structure and pad the
structure to 512 bytes.


# c6131460 16-Apr-2004 Paul Saab <ps@FreeBSD.org>

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.


# a32168b7 16-Apr-2004 Paul Saab <ps@FreeBSD.org>

Whitespace cleanup.


# 307e0460 08-Dec-2003 Paul Saab <ps@FreeBSD.org>

Correct the READ/WRITE CDB direction definition.

Submitted by: John Cagle <john.cagle@hp.com>


# aaf8327b 08-Dec-2003 Paul Saab <ps@FreeBSD.org>

Define RAID 5+1 and RAID ADG fault tolerances


# 440baa08 05-Feb-2003 Paul Saab <ps@FreeBSD.org>

Properly get the drive geometry from the controller. This should
fix booting off of volumes > 255GB.


# 4f492bfa 23-Sep-2002 Alfred Perlstein <alfred@FreeBSD.org>

use __packed.


# 3a31b7eb 27-Nov-2001 Mike Smith <msmith@FreeBSD.org>

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